From 1a8a73a143969472e00667bf8cd4bbc169fd261d Mon Sep 17 00:00:00 2001 From: maxluli Date: Fri, 9 Jun 2023 09:33:05 +0200 Subject: [PATCH] Fixed images --- .../DiagrammeGénéral.png:Zone.Identifier | 0 .../Figma/DiagrammeOCR.png:Zone.Identifier | 0 .../DiagrammeRecupImages.png:Zone.Identifier | 0 .../DiagrammeTraitement.png:Zone.Identifier | 0 .../Figma/TimeRepartition.png:Zone.Identifier | 0 .../Photos/BicubicExample.png:Zone.Identifier | 0 .../BicubicExample1.webp:Zone.Identifier | 0 .../BicubicExample2.webp:Zone.Identifier | 0 .../Photos/Csharp_Logo.png:Zone.Identifier | 0 docs/Images/Photos/Firefox_logo_dev.png | Bin 326185 -> 74348 bytes .../Firefox_logo_dev.png:Zone.Identifier | 0 .../Photos/HardTyre.png:Zone.Identifier | 0 .../Photos/HardTyreColor.png:Zone.Identifier | 0 .../IntermediateTyre.png:Zone.Identifier | 0 .../IntermediateTyreColor.png:Zone.Identifier | 0 .../InterpolationExemple.png:Zone.Identifier | 0 .../Photos/MediumTyre.png:Zone.Identifier | 0 .../MediumTyreColor.png:Zone.Identifier | 0 .../Photos/Pupetteer_Logo.png:Zone.Identifier | 0 docs/Images/Photos/Python_Logo.png | Bin 36805 -> 29982 bytes .../Photos/Python_Logo.png:Zone.Identifier | 0 docs/Images/Photos/SQLite_Logo.png | Bin 44173 -> 27385 bytes .../Photos/SQLite_Logo.png:Zone.Identifier | 0 docs/Images/Photos/Selenium_Logo.png | Bin 156812 -> 12961 bytes .../Photos/Selenium_Logo.png:Zone.Identifier | 0 .../Photos/SoftTyre.png:Zone.Identifier | 0 .../Photos/SoftTyreColor.png:Zone.Identifier | 0 .../TresholdExemple1.webp:Zone.Identifier | 0 .../TresholdExemple2.webp:Zone.Identifier | 0 docs/Images/Photos/Tyres.png:Zone.Identifier | 0 .../Images/Photos/WetTyre.png:Zone.Identifier | 0 .../Photos/WetTyreColor.png:Zone.Identifier | 0 docs/Images/Photos/photosCroquisPoster1jpg | Bin 915885 -> 0 bytes docs/Images/Photos/photosCroquisPoster2jpg | Bin 1376360 -> 0 bytes docs/Images/Screens/ChromiumLogo.png | Bin 5161 -> 35821 bytes ...eLapTimeBeforeUpscaled.png:Zone.Identifier | 0 docs/Images/Screens/F1TVHIGHERRES.png | Bin 14583 -> 24692 bytes docs/Images/Screens/F1TVHIGHRES.png | Bin 8306 -> 11462 bytes docs/Images/Screens/F1TVLOWRES.png | Bin 7304 -> 6888 bytes docs/Images/Screens/FigmaLogo.png | Bin 13872 -> 10050 bytes .../Screens/FigmaLogo.png:Zone.Identifier | 0 docs/Images/Screens/FirefoxLogo.png | Bin 13691 -> 82856 bytes .../Screens/FirefoxLogo.png:Zone.Identifier | 0 .../MainZoneExample.png:Zone.Identifier | 3 - .../Screens/Perfect11But5.jpg:Zone.Identifier | 0 .../Screens/TyreColors.png:Zone.Identifier | 0 .../headless-firefox.jpg:Zone.Identifier | 4 - docs/Images/Screens/logo.png:Zone.Identifier | 4 - docs/Images/Screens/vsCodelogo.png | Bin 38531 -> 17437 bytes site/404.html | 28 - site/CahierDesCharges.html | 10 - site/Code/ConfigurationTool.html | 10 - site/Code/DataWrapper.html | 14 +- site/Code/DriverData.html | 14 +- site/Code/DriverDrsWindow.html | 14 +- site/Code/DriverGapToLeaderWindow.html | 10 - site/Code/DriverLapTimeWindow.html | 14 +- site/Code/DriverNameWindow.html | 14 +- site/Code/DriverPositionWindow.html | 14 +- site/Code/DriverSectorWindow.html | 14 +- site/Code/DriverTyresWindow.html | 14 +- site/Code/F1TVEmulator.html | 306 +- site/Code/Form1.html | 928 +- site/Code/OcrImage.html | 1298 +- site/Code/Program.html | 341 - site/Code/Reader.html | 14 +- site/Code/Settings.Designer.html | 813 - site/Code/Settings.html | 1062 +- site/Code/SqliteStorage.html | 18 +- site/Code/Window.html | 14 +- site/Code/Zone.html | 14 +- site/Code/recoverCookiesCSV.html | 10 - site/Images/Figma/ZonesStuctureDiagram.png | Bin 0 -> 80871 bytes .../ZonesStuctureDiagram.png:Zone.Identifier | 0 site/Images/Photos/PCThermals.jpg | Bin 0 -> 110696 bytes site/Images/Screens/CPUUsage.png | Bin 0 -> 164322 bytes site/Images/Screens/GPTLogo.png | Bin 0 -> 11417 bytes .../Screens/GPTLogo.png:Zone.Identifier | 0 site/Images/Screens/MemoryUtilisation.png | Bin 0 -> 18353 bytes site/ManuelUtilisateur.html | 10 - site/index.html | 1560 +- site/jdb.html | 99 +- site/pdf/document.pdf | 38111 +++++++++------- site/search/search_index.json | 2 +- site/sitemap.xml.gz | Bin 127 -> 127 bytes temp_annexes/Code/ConfigurationTool.md | 266 - temp_annexes/Code/DataWrapper.md | 384 - temp_annexes/Code/DriverData.md | 110 - temp_annexes/Code/DriverDrsWindow.md | 119 - temp_annexes/Code/DriverGapToLeaderWindow.md | 37 - temp_annexes/Code/DriverLapTimeWindow.md | 37 - temp_annexes/Code/DriverNameWindow.md | 62 - temp_annexes/Code/DriverPositionWindow.md | 47 - temp_annexes/Code/DriverSectorWindow.md | 37 - temp_annexes/Code/DriverTyresWindow.md | 151 - temp_annexes/Code/F1TVEmulator.md | 334 - temp_annexes/Code/Form1.md | 427 - temp_annexes/Code/OcrImage.md | 678 - temp_annexes/Code/Program.md | 27 - temp_annexes/Code/Reader.md | 343 - temp_annexes/Code/Settings.Designer.md | 498 - temp_annexes/Code/Settings.md | 482 - temp_annexes/Code/SqliteStorage.md | 267 - temp_annexes/Code/Window.md | 681 - temp_annexes/Code/Zone.md | 190 - temp_annexes/Code/recoverCookiesCSV.md | 88 - 106 files changed, 23563 insertions(+), 26483 deletions(-) delete mode 100644 docs/Images/Figma/DiagrammeGénéral.png:Zone.Identifier delete mode 100644 docs/Images/Figma/DiagrammeOCR.png:Zone.Identifier delete mode 100644 docs/Images/Figma/DiagrammeRecupImages.png:Zone.Identifier delete mode 100644 docs/Images/Figma/DiagrammeTraitement.png:Zone.Identifier delete mode 100644 docs/Images/Figma/TimeRepartition.png:Zone.Identifier delete mode 100644 docs/Images/Photos/BicubicExample.png:Zone.Identifier delete mode 100644 docs/Images/Photos/BicubicExample1.webp:Zone.Identifier delete mode 100644 docs/Images/Photos/BicubicExample2.webp:Zone.Identifier delete mode 100644 docs/Images/Photos/Csharp_Logo.png:Zone.Identifier delete mode 100644 docs/Images/Photos/Firefox_logo_dev.png:Zone.Identifier delete mode 100644 docs/Images/Photos/HardTyre.png:Zone.Identifier delete mode 100644 docs/Images/Photos/HardTyreColor.png:Zone.Identifier delete mode 100644 docs/Images/Photos/IntermediateTyre.png:Zone.Identifier delete mode 100644 docs/Images/Photos/IntermediateTyreColor.png:Zone.Identifier delete mode 100644 docs/Images/Photos/InterpolationExemple.png:Zone.Identifier delete mode 100644 docs/Images/Photos/MediumTyre.png:Zone.Identifier delete mode 100644 docs/Images/Photos/MediumTyreColor.png:Zone.Identifier delete mode 100644 docs/Images/Photos/Pupetteer_Logo.png:Zone.Identifier delete mode 100644 docs/Images/Photos/Python_Logo.png:Zone.Identifier delete mode 100644 docs/Images/Photos/SQLite_Logo.png:Zone.Identifier delete mode 100644 docs/Images/Photos/Selenium_Logo.png:Zone.Identifier delete mode 100644 docs/Images/Photos/SoftTyre.png:Zone.Identifier delete mode 100644 docs/Images/Photos/SoftTyreColor.png:Zone.Identifier delete mode 100644 docs/Images/Photos/TresholdExemple1.webp:Zone.Identifier delete mode 100644 docs/Images/Photos/TresholdExemple2.webp:Zone.Identifier delete mode 100644 docs/Images/Photos/Tyres.png:Zone.Identifier delete mode 100644 docs/Images/Photos/WetTyre.png:Zone.Identifier delete mode 100644 docs/Images/Photos/WetTyreColor.png:Zone.Identifier delete mode 100644 docs/Images/Photos/photosCroquisPoster1jpg delete mode 100644 docs/Images/Photos/photosCroquisPoster2jpg delete mode 100644 docs/Images/Screens/ExempleLapTimeBeforeUpscaled.png:Zone.Identifier delete mode 100644 docs/Images/Screens/FigmaLogo.png:Zone.Identifier delete mode 100644 docs/Images/Screens/FirefoxLogo.png:Zone.Identifier delete mode 100644 docs/Images/Screens/MainZoneExample.png:Zone.Identifier delete mode 100644 docs/Images/Screens/Perfect11But5.jpg:Zone.Identifier delete mode 100644 docs/Images/Screens/TyreColors.png:Zone.Identifier delete mode 100644 docs/Images/Screens/headless-firefox.jpg:Zone.Identifier delete mode 100644 docs/Images/Screens/logo.png:Zone.Identifier delete mode 100644 site/Code/Program.html delete mode 100644 site/Code/Settings.Designer.html create mode 100644 site/Images/Figma/ZonesStuctureDiagram.png rename {docs => site}/Images/Figma/ZonesStuctureDiagram.png:Zone.Identifier (100%) create mode 100644 site/Images/Photos/PCThermals.jpg create mode 100644 site/Images/Screens/CPUUsage.png create mode 100644 site/Images/Screens/GPTLogo.png rename {docs => site}/Images/Screens/GPTLogo.png:Zone.Identifier (100%) create mode 100644 site/Images/Screens/MemoryUtilisation.png delete mode 100644 temp_annexes/Code/ConfigurationTool.md delete mode 100644 temp_annexes/Code/DataWrapper.md delete mode 100644 temp_annexes/Code/DriverData.md delete mode 100644 temp_annexes/Code/DriverDrsWindow.md delete mode 100644 temp_annexes/Code/DriverGapToLeaderWindow.md delete mode 100644 temp_annexes/Code/DriverLapTimeWindow.md delete mode 100644 temp_annexes/Code/DriverNameWindow.md delete mode 100644 temp_annexes/Code/DriverPositionWindow.md delete mode 100644 temp_annexes/Code/DriverSectorWindow.md delete mode 100644 temp_annexes/Code/DriverTyresWindow.md delete mode 100644 temp_annexes/Code/F1TVEmulator.md delete mode 100644 temp_annexes/Code/Form1.md delete mode 100644 temp_annexes/Code/OcrImage.md delete mode 100644 temp_annexes/Code/Program.md delete mode 100644 temp_annexes/Code/Reader.md delete mode 100644 temp_annexes/Code/Settings.Designer.md delete mode 100644 temp_annexes/Code/Settings.md delete mode 100644 temp_annexes/Code/SqliteStorage.md delete mode 100644 temp_annexes/Code/Window.md delete mode 100644 temp_annexes/Code/Zone.md delete mode 100644 temp_annexes/Code/recoverCookiesCSV.md diff --git a/docs/Images/Figma/DiagrammeGénéral.png:Zone.Identifier b/docs/Images/Figma/DiagrammeGénéral.png:Zone.Identifier deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Images/Figma/DiagrammeOCR.png:Zone.Identifier b/docs/Images/Figma/DiagrammeOCR.png:Zone.Identifier deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Images/Figma/DiagrammeRecupImages.png:Zone.Identifier b/docs/Images/Figma/DiagrammeRecupImages.png:Zone.Identifier deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Images/Figma/DiagrammeTraitement.png:Zone.Identifier b/docs/Images/Figma/DiagrammeTraitement.png:Zone.Identifier deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Images/Figma/TimeRepartition.png:Zone.Identifier b/docs/Images/Figma/TimeRepartition.png:Zone.Identifier deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Images/Photos/BicubicExample.png:Zone.Identifier b/docs/Images/Photos/BicubicExample.png:Zone.Identifier deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Images/Photos/BicubicExample1.webp:Zone.Identifier b/docs/Images/Photos/BicubicExample1.webp:Zone.Identifier deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Images/Photos/BicubicExample2.webp:Zone.Identifier b/docs/Images/Photos/BicubicExample2.webp:Zone.Identifier deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Images/Photos/Csharp_Logo.png:Zone.Identifier b/docs/Images/Photos/Csharp_Logo.png:Zone.Identifier deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Images/Photos/Firefox_logo_dev.png b/docs/Images/Photos/Firefox_logo_dev.png index 3c7938526606020ead1c4ae2605203deec8d254e..24f44b6a3d933df2ded01cbd141592b7c93b39c2 100644 GIT binary patch literal 74348 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

~4#20O#aFE)euKP(Pp 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 diff --git a/docs/Images/Photos/Firefox_logo_dev.png:Zone.Identifier b/docs/Images/Photos/Firefox_logo_dev.png:Zone.Identifier deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Images/Photos/HardTyre.png:Zone.Identifier b/docs/Images/Photos/HardTyre.png:Zone.Identifier deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Images/Photos/HardTyreColor.png:Zone.Identifier b/docs/Images/Photos/HardTyreColor.png:Zone.Identifier deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Images/Photos/IntermediateTyre.png:Zone.Identifier b/docs/Images/Photos/IntermediateTyre.png:Zone.Identifier deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Images/Photos/IntermediateTyreColor.png:Zone.Identifier b/docs/Images/Photos/IntermediateTyreColor.png:Zone.Identifier deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Images/Photos/InterpolationExemple.png:Zone.Identifier b/docs/Images/Photos/InterpolationExemple.png:Zone.Identifier deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Images/Photos/MediumTyre.png:Zone.Identifier b/docs/Images/Photos/MediumTyre.png:Zone.Identifier deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Images/Photos/MediumTyreColor.png:Zone.Identifier b/docs/Images/Photos/MediumTyreColor.png:Zone.Identifier deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Images/Photos/Pupetteer_Logo.png:Zone.Identifier b/docs/Images/Photos/Pupetteer_Logo.png:Zone.Identifier deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Images/Photos/Python_Logo.png b/docs/Images/Photos/Python_Logo.png index 629fbadb29384a0ade5074c43ae62a93c3a7d08b..d410914cc7379988a004eb6ff0058db95050ff87 100644 GIT binary patch literal 29982 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%0Ar9CG4%qNlB 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 Ii64Rg2Xl4K1poj5 literal 36805 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⩔z_ft;2$!>wQ=4zT@lz*7 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

&fxKS4dI5}P}+ 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
i4kz5|PtlJK0`fe<}%NYdN+?m>%i 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
XYq>g^im+lZ3ynlvaIxp_xE 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Ƶ& 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νe5mvI<^f3!-wL$pD;@!d;?JIY{!3k}8Dm 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�wBmtNpJ&{N#!>3 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

^jw>?W$69 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

N--P*CI#7v+0bm!N0}O(hA* zalrhg(M)M6Q~12b1f$;dqJIj4YufPC4Ezl^C0e=!11}eY5qQqP6*XSPuwm)a<>m@h zoTt$oCV8T9$-vRXM5}aLfE%g)ssGrybkbs2zB*rX$#3B9)E#u$}{?pKS?gwW-XhX zMU0sD)mV61mX>QV$lfMLVLydz403@^cz~s3Q~aOhto#-%uL6^zACN0P zC)Z-WmHT%wIteixfm1AcTfVjuK=a6zUnjYt(aJ;0;br1n!8fQZ!Qi38em@AlP2p0m zvlokFI8ap$1$+nxxRarRh`x{SZ?!G!;9wU) zbQX^m$R6M24*Hd-JP#KDkpjUmf$mw56}^uuFb<;#B3Ss8fgM^W^5;y@-@#2>MY-}8+ zc@Y-^{7AXDcs5X3ftgBwK?A~mK%kyeQl(mH?Z^=4UQGSeW*RvHMe`&Sj z;41j|<96*IE-u%`UT@`{YhG)=I06+oRYo4X-uOxd?*CWqTR$kTS^N}`JaA?=JhY0} z(WuCn`uK_21epGvH7+Qs)D*#Thq%8HivyB;cWZ9h#CG0SO!hLr53! zQyL^NAMSLA*>W1_y!26DN_KF;>20Thomh`J9>VpAv66z5zb-IkSVunaf4KcT%=m*J zrJ&{tOE3-rZ0{8b1h^HG_fVlZ4Z9#o37x*mhN` zU#iC~*3xA^QlnW`@YN-Ni4g<+gYAfhqvM15x(6LD=JLN6&%d02^wl^I9tPp{I zSyF%d$!%T*k)4b?(__n3OOpp8UP)fb%g;>jU@+cC3(RY2Mu}>x3Vm)1Q+$~2S_a5LI!= zcU0wdkINL$>i`twTbcE%N8m) z`Q130BFf|>+$zh?#&*yX{#sbV#p&=GsEDeG3%(Ytj<8O{f!DGv@NNu*oQ+XBOc_n5 zZ-$x`zuqv?+e)1}S&2ZS%SJWn5F$RjP|i{S+cJlEpwptPbkmusCF-CMQI_ApRaoJJ za#E-8`@P~xb0~S_TJEfHbWn0mIz7=HZ|NznZLaNF{H8;>?}VsOnhTr|Df%A(&lgaj zk0a~%5-8D|>F}wJj&>r7sr{F@kv%8RhD5C|S>P4L8R&CVHzjO>Rac;@#$JBBsv~eA z=l;Q)T?Z_+re}Q7h?kb_+cY4|DPAc{1?EWmDxu@`^e4iYtnsvlg zavUIQz9H*hTRv8G;poy_o%pa&x#MRTN`}P~D-5~!Dsfl77PY| z9`y7jStJ)9t$ucYQ+*sRn~c^ztLDkAt%BIW)@ugmU!4!f)bwe*@#8Lw>T5&gHXRmkB=J{YpWAOoGbfc(qS3|n z8U`GHSqQ29w~y)i>J1$iL4MEL%A9K6;r`oM`2Wc*a*cv^QQ3hNi?!Zky%DhT^5}wLmec|@M*n4ZO ze8;}lF2cqAXLr>UJ`&TGjAqUX@xGmu{CajvGw+L3ZPl?|>6!)K#`l5Q->+2o5P2OF z%)4B89M4~>f9b&nmWTOY9uGHz5O@Uq_Fggoa$&Y7t4Hj832*CfGy*`ClV|JH%{*>x zMUQ?xQX6)^O(maD{QPu;|J{l!2jh}%KV13ymZ*G!u1|Gn;i_Mbho5;cYBSoCCV$~w zLK&+m{^s=Qq*qn{9BGfC15l{^AA4q|G(3ZySAD^Dd~@U{MxJFyYjo|oJC%R6Enc?Gk{;+#wVA5@C+YeM(ypw#jrBgHN z(HBtVV{JLKd~D#f(y^_l9+a)DyTOwF1qB%WqhRY!PyY`75|b~=@!4K{vhQutU$X(Y zr@8i~-J23d*(Gn!c00R8#4@MhI<(h8_1c%qwRybt3)`gotVEEIcyho?r8Za|fQ78#@VcbR(rhIs~)U$b; z5wCHFC3MaF%enm$qF>|H!K3ObABGBp(WXlv9?~fl6Ki9T2s>Hv49Jv5hr@6{sX`c! z$mwWRq5}G&e4p~^-fYVc?g}ul1aTv`NQQ>ajVRxW;UEkblkw?To%Y%XWC{;Bew*Nl zgQfH8+Z5wqkce1mEt+X!`DQjm$c=1|V&n9!{#dD_x%m@W7+spI(MuNxk&!!PsPb;j z%wIMl^t1_TBAVjPYn?*j9`+GrI{)uW8YvGWi*a5q!2SdtQ$1?TQzOrq*pvCzI&kzo z*^_CJXzsiL2P>1+HuDC;EQ?{XQiag;Y5`B}9o4lb9|E6*=;>EQ`#IFq67?~ z&<#UdiWnT*e705)`+Sqdes>8=1;M8{V6|v z8=LC?0LymeOLzC3elALC1aS;ycTWQS;QmhA#)ccBmR1L%aa{Ip(t5&;n0oC9kO?>{s-tkpZs%Ft>RVyMH!Lf$ax7Lkx>*jpE7$t zfLf=axlg`%Q#gSrrg-v;S%F*8A~jc5VHYbcylRk!-Cfe?lU{0rAeUeqS)lxU${Zr= zRuWlWRW|5Hgu?tBB!a>y)Qom3MUJ}WqPfLRkyU(hG7OUR6}vMw}Tw z#X6t&fz`x|D|?o@B?eY(nfVRVS)^LkMV`z16!4rkudVxXRGj7QywksRX4C&wOT%*+ zz!@EfM+Q2MbfQB6Ijk9LgwdpCYt1%d;S`i#O1$|76)xI7VPqsmybUycE#0}5ibi{` z3d}Nu5yCD~vQlWMR*4iF?EZF^nE(i95_*-by6Q_&hx!>lRZW-IdyVc#eePbCjG1)& zB1o5PdeCe!^jILy_P)U3^-lMz->!UBYn;t|aj;ufkYZ`xZ#;3)-?8LJ`1a0oTT@mZ zg5%e^$dxK??m22VzF9e*{5{0u&*cfS_6;lXZqfq61yVFcfqGe?6qd4#PME4{a7BK8 zCE_qylJgU{nx`+c&8QTBsdB7QHaqPUJc#MQu!uw?T~LISN^MyBPsD=d4JsXgYcy+A zae9Jbh-M-Q0(dS0#wLGOOI2>kcuA#JRk{OTf=`GAbV?v8K$aGu-U-=)7Lak^NNFq=GV= zx~T2plc%;_u4~P#m0w`o&W#n0s)*N~!j1sM5dIkp6VHc&i#>OEs(I0W+B@&WnSf?L zdjk($N+-EQG2{+P1h$%SC=~wnT(goaqHyKGO@N&jGVKc{_^_bWR`^P3l%MB@?vH&N|%Ix06^1e+@OkQhPdUG?QVFF~Hy<08p zI?g00%D@d`H3pxGD4@@^rukV>BflC)9FQHuf_#A`dJR043NK5#Mu{CpXqs@>6p);f zy)Yv4keXO*E-f0}Z9_iSpuC+Vij^HNgQhZs)lawah;*G$(>J?X5$rpGMQvbP>|a@+ zWG9$JlnY9_FZ(Y;0OgnT5093Ix8`fI?3UW$pq+oy2+QS6Yn{DHf${69|Ilg2IYNbO zgaKdIZ$Mz}5Bq)S{lz-K_!_S5w|XGydmh5smWO!=!~8q@-FOthet0F|rC#3k^83S{CYQc!jGphi z2}g~cx*D^J+;hyOk3-?%wHJNPZG4ACSvEM-p0 zrl1wbUG-|3gc+ft;HmUuNfDN_)HFdwoxfHVKp?&13mSl?&IJ|;BD{Fi*4P$&Qbq!!iLy~8yar{cHLSk`)@d( zct^>2PE>zb&x}EQ2ltg zn&t0{%kPqk@B?}V0fxo|mOI~R_2L%7j!jV>Gg9nHNc>%1M?`yXr2I!B?Y`po`h>|# z(O+JNhRziwe-f3Bu2%STpGUoBthFF*(8tGb_<_Jn&|e2UcN+GINx2qG;MR`xr;Bw4mEN|Eq1J2>rur}rNWHVNli9J@5wlT zI5WKAaOuwXwbc5Zhw=knqZvg@nNWeQHjm`iOQUsf79N~!d!2iqwUNx)^Je@K@BM*- z%fG0(<{)6Gb`SbYOIhT?|l|?&)%B+@Of)nf}_3b&1E3N+sr71Hul!& zqH7*0J>ibJd~#=C*|gHo}`MskNW5XJbY(Els$o^D8FgtG^sAgaxRCw9j?phA@&5xJu!?c)dPu>hULlKL) z6%RLC|2d6pI^7%XFI}CUH8}D^?O3hx$CBrsA;fc17O@_;1FtTGZrE+az zpnP8Ei^g2RP;i9C(&MQ~1m9zAWXcsaPITs3$Cb+7hDNG)tJeZh?Puw^-g=iO;pI9@ z?irF!Bl&!N{vzy>GQ_gH8zG7_lgOYf8I%x;6S$4>f}lU6*fr0;=B6k=>M1^jS$3u@ zmr?*l;5O`LB=#;BwNS5REWa{}o!hsdk>6 z#aZ!lQgXsKge?>y4nICF^SSh&Vq1Dhu#H|IOp!2n2exTPiA7mGs=^77<4bad2SsnC z=+LEwf9Z(|TRy{>xa%eDVBHibI>GF zST|n|0LJ!GqH+n4Q!pM03Rf<7iW4A9FL+v5hxpI`>Wl7;e0_bx+o?q`!HP z22qN4C+iq@s5HHS5)JmJjhSQ2-^Tn(l3gb7*=A6$NNjt zpT+uBtZ$X_z}_>ycJ67EvneXy;pPF8NJGfi-d&6}YJ??n2n;Btz%+;souxmFL=(80 z^-+XY3T#~QcnS2mAkuJ9tpw5$T)I6S7Ev}{lZ;a~BgyTgxN)$kLCpNlVu%j7hz`B61SZN0%=je&{8sjGjpRNp0XeaLth zq|29{FZyM_37*P*qRk}J02dzc5Bb`l%y7JXmolI63$3CqR%Qsc#R6T{1T~FditLgI zpa^q>xZ@&Hw9eNeGy9g4Wm_o!r@`Nsrm7lRyngWXa1Gucxb>h5SU(>Ei_=(lM&k=G zOQz3i`NUaoF?IjYgN05n&s~}PnXo9L*B;{_k}DA6Kj%I8@pUueebTVF6aWF>ZuS;y z&sL<5Cj2TMbulJlnw3OymFuSpY>=>|R5{mT3j`S6p}s2LUdby-&Gkz*C71@&LbvG& zhBVz|o10_}MiM~TV8>eV9>pYXbm9WRGe1RM9}OP8VZ@Mm8!b|& zsbEgm2BFtkXlL{juOp(L$Wx4qi2+Hy$X!-En*(YnB;t-_Ew}>3x)7+FEWZk(i4anHToON9~&w zkKZO23!xX=n_`-1WQ)jtpTt&}xWY!UHi^syrLbVqu^7st3qVdzGj$Fug2A5Wy9y6_ zYA>%v(=GL9KP3uiXoE8ZzT2a=W#}jL?~?PG?T9ksv87ygQ@;vx+8@PqVG*BHT9+Q$8)bWfR*>nW$Z7=@9e;5ysV^ z4_R=Ckgc+*9tZCN{*4`g3nDkM=7QFM^zX@JX(&^Is3?zmh2bJ*a98~j)NH?QW*yv^x;rU?TS zwDP<&p4z$Hr4P0bSg^v^i^eRSdKz*zuZwSkU0R{s9 z0Y0ZSaru?8ZzKCdZGs@WI&^FnpqvKe0?sD%(Wz{l=nJF26BYg~B$lyJFlZV)lG?YQ{1 zcCO8`d?=@!mfB*m!m9eOz-TKNVGx>&OP0T_ zG(G{?DHzd@H-&v-=(G0*EKaRNo1$DaDTfJ3?!Z50wLN_r8AtYe1w}j|1eO&K);a#7 zgHZ>}gbZ0*MkLI@{@oyfi@`7g5tKQF$nL_12l36+NzS%n zqejaVFIRaV^vJYR(f!Kri(X$(xL&o>MdMyueyqI;_8uQB?~9HI3CVL z>10^NRsFovQ2JG>K@07dVTf3kCc3ILuA>n>n@&|L!M*4Dyw!6)S+v;y#pr!j^}f66 zXruLJ%`EbXZe`O`d(vZXjX=w`5xFZbzT0{D@7wA&U%66EDms#xEf*?I4ogJ)2x8z3p>b4g=r^0?YVj~xePnTL1Q4@};^%NSK= zjz^WNUFiPSr+zlq`%H&g#xeV+EvnI0#dsOpW}gzWugrHnF>ufG`Qkm*<6|d8`oITd z7pK!^Wk$b5!OpuWM*CMH4Xt0?ty<)B6X7Z5DLqi?TZ!6&o}Gpn?l`X2?%9W{yB|Au zyv1m?+~(EYfaSzWxYj9ZZKe0IF-dW7!uC|Sj8aTj(<7liS+85ex83=i_fu|6G~dj< zj@C;+Xgm0xy|8_*_Ty56PMP-XNfK(}tt5qrY(pVtc^=NQgG^a;cFrqoK zX{%auH@HnNh@dubhW4uoF3mA+lLiUNhgsUb8?$}$RJsoe47%XB=esljRuLz}lu?j&Y;r2X zHon>HbeXG>6DcWM{_b*SAy?r^6}{v2sB?CN32S2 zj++J7?q(hS9J(FiRy3~NX+%3vv+@OChPVPYT+F_Hs27-2b#>+m5Ot{5w*e6pjZ(_@ z|6`OMSkyF~ampszHdkBbuT=$WJO$8DmhX1Ia#TS(qL_SRpjUOFyGanbgTHU9>>2cp zm(wG2a=$t-dNc{kKJsbtS@xb8dudORO5KLmAM91F2~Q58%>$#^Md#i;x~=+X$26bEhTt)}0ku3xm>%~o522I@U*CV12p15oB@@om^C$D)Y? zri~aEug%q$+BHS~hjmbR$+7VZBOk;Ajnamy0Dv(4 z8nGcsj!P*p7&;sC__2O%3H4Zd!52Hdnqy~{txN6J{_NK51w{L$ddcC=&FkALU(X5o z4{$RWZz;A=gwL*H-x zuK%*5cU?=UnQc+Bz$woQ9v}A=lDn!KJ5H%_{%KUjH?S<(GV<$Ah5aC2i!eI4tE3AJ z+eN#d6Q5J$Hg|r|JhE{LSPl|&o#v4t&J~scac+wBm@qKu}MB0#=YEL=1=9zj!5 z;?gGND1H{2@xtlyy~_O{uwO32z;a?ru8-p^m%^>tszh1|AyN^M=`v@~P95>E7|fDr zvpHTt8>`2>C;A%09k8VRsPGkptXaupAWCUG!r8bB7{nYmQ$mhb98J51WsACT0u%vH zyf}P7ICl=zOMlmkASb1cf@_=2>1h8=bLTk|zocF>DIPI#lGPg=uR>8R6&+9l6PvR?%AO^ zxX(Fc>#UHMFNnb1F9+ay{u+8rI67X8Ym6-MUeucGX4@Lp1JQCf$*#GZ- z`6j%dv0Mh!INr8DeZ;EY)Ow*&xFfopvj$^Z@!6-7GOV3S!rKOJFBBMWx)k;K%9>Lh z@WPKGr8#~7+gz*e=X3G7$?H3J{O-p-`l>yXo0i$X9S+F8jYoUrD()z)*$}%} zrS_nkWbGLGZN);cAs)FScOSB#ibKyRLX?48iT6_bursjuE^(r80a5H#%Jv*09?;GL zO5N+Di=Bv0&~y%v z)UUUZMI+{-Bju49$WBIZblOC(V5Eq{XY+1Q4uEPxrlU{yXF^pqr9PKkGb=%?e$qz>2DjtQD1w0P> zH9-(*Q;L!jDR6+>7od{$*&v6Tqzy&V23k&Sw8XX>V7?ppe zIs_-|Tc>>eoG3Kp>^=I(+rhe?WtMjuz!fc2dY25F3_U(B2~;b2kg57r?CgT)N8E|c zfIE5qfoa&xgJWZP0zf8jqLAAWtPFtGDD@?H0bfI%)+f(@Ca!`61%-3skJ~|6o+uVc z7styRDe7%g`js{VPM{c!Tz#+9=v$rl)}<$GAA%m%gdy%Xr3E=~GB=mc!2)rFUuZ7# z1Sbn%IYJeQ<(bTTkdF+r&impN?9LoMey1$Uv;*GL3E*6uo-%&}ZQ{`;B1|q&5O`@D zJAn2SSR6~!C47d_qBqk5OoVfp{t|NvhvnEa&n(4Wca?a5+k5q^i>KD_<=e{^93{VH zLGS`bH`IwYAxUo-Hz;RvIV85_PF#8YznHw{1w~KGvPy9A%m7_U8~aMD7*4Y4=QZC< z1<0P^mtIPhSdy3*-dX|)bkY4eX-U6zN$?xWC2=(|_Lo9EsScBi^%c>Yx>xOH#)sd; z7{$Sp@1cMBC^AmB9j&04mE0U{p7B+G3G}l0hd(6h*nZ)A{fS*v2HxU}DmJB5{&PV% z*D#!|fDJ(KC^ik*e_lMn6r5NnL01**;|QtvXFy`i??fdZh=!g5*m1p1Ez4I(zF9&lO zH6J{EtsZ=M5t-s+U4>iDsxX@R_=nHoBx2iJTB3Q(MyyxkV>{%eX=x~}-3l=poh%-Q z9)M3Fzn#`EUi1_uBUs;fMN;JW67NxHp-H{EX8KB6(a~)x$Fj&%W?`ezLP4(=qZQT* z`an2;dK1>-2Eq*qvXZ;O=P9~Nhk~?hO7SK(&LA8t;nqfpHqk}9?f=7Z^AoK*T0?y` zquCvwNRY*BIB0~!AEm-b#z;e93-llcVrL0#LDn(-UM?Y%bDevG{|%Gfx9;b97vq82 zZA|2-z9#j2Btmaq#F^V@fu+Gst4A&T$i((em3<_12#KZ(`bD?PDy^s9J|zp@or1eT z_PWV(uCq`6QW8>T;{a#}Wi1HKv2_Z7gDRcwu#5xYt}BY9=m5}#k=~90%X{F_`BoY1 zGp{;8t&bhMSBS5B=Jn7K;4`}5RR^;ij}gJs;#PWPJ$>NZUctBizO zm0!=E|AlJZx2=I16F!#;&c_>cC|QKkp#)(NQAavnBrm%gsiYts*{=oFO80ng#XH?E zM2h%hP^p(Mrsdp{%arDyMEk{^Pa1UE2C6Ug`TZgCy5acm`1x=tdXj|goA=LN&huyx zo{T?V;+=<`_vbmPtPPAE@KlG0s4;GPKehY_E#~dl?@!lW<@VOKqJO94FYPLRl{EkX z5*1Eu7%BPXfM*knSgF5i0m`%1++K~2bX@JoCkyg`#wJF>_tviiQu* zyMvAL(@}2nwE)|*_V=|qQn$akMXXoL^RO*n2?p2k*x%H1{)Aghzshl2L1Gr$_NHYgjL7=vl6ujpfLdF&mpGj(*IF(F8)maUmV|NY;&Da?#z9NB+1<-ml?6SmP?UK zE|L2+av33alS?jhzZ8|+B9#$Y$X#ybepl`!`Tq9%2h8KK%jf+*=k-hhzl76c8mfa6yglXY;Rc6f?h!PhSarLEX2l zV|E4w%eec(R-<`S;}+a&f6I{jcMw(d%jhez8CFgJ4x8-Itf}Uf zKoircY6Jvr@2TG_hJ$8cx`;iDdQfW8secqTRr*F!MPj7sfuTDi2%q7Yk_PVb&XG^o ztU5*~;S_QWKtZoypbE51t{XkL9E++Dok6;bg-RIX72skxCewI~+%Qrs54ug#ceim= zVALVA4`YS$K(y#Ezj#9mTrLwEPeY=JHk{(bknkuXk{R`_xY_md{o|-;4hU=57K+V#PB)LOh9qC^(1epTu7wObrXP_4sHU$G9 z-tUTZN0aL8YW1Wzh}%79pRQ1JakR>1DUSt58{BTI{a2jhO9H2UD(Jtj?Tq8Y`}W^+ zGf%UgoAT+Y$>=eDLOeP2aKZ{{g-q?yID98NL3agWBU-rdJNy&>yXuk3mg zuHx|f zIkpew&cC8n#Rul(vfLG7u4_a{@~DqM^SBv zj?e_7h5(Alm0c-j;!X&beMpyXg=o)=c}P{+0OQH-*jrgpmuCzRF*!kdK|G6Uu{=$c!!_ z%TiQ+W4N3`8TJYhl?mm6v+v=|l5l`R9GGZYAEZ1G^D<;4879jlCaGv%SRlZ}+tGG4e5m&p@4)Nd_3ZAQy8>-# zH_XO_f;WYXs(+A8IJj=vmpTnanvo z(v$M$?TpZ&N?bCMYDTwbx-CbAYo;rZP;KlDSd63(5!m8KFZQR8tURyqOFlAv9-L9L zGE%mYGGBsYkETojFc`hB=AM6NsEYBEz1Bh$aZIu^QdbGsmSaYNb{UB?m}i`&p{|fv zIlj$hFvNEp8cLB>wpDNuV#q66h_Ab{?_QNA#^f2FmB|t^v-GX$r!1^pbkckJkT2%1 zdkx)TyYv!sN}Wguym+11)O_>3Y|eH5qKv6r6mtxuLClzALk;a;L@!2r2Y@&~fl{eR z2?rn*^20QmeAJd69k~q#-5=A0vg%{mT4zT_UtX4M!pCpL_F2UO>U4bNLK1X#jFp7#$KO3Swr&AL|!i#;wq$M*KspMY(C?(->RZBN~BkVEweaxNPj=@s`iSKW%sF zruL@J3s2>W@Y-^KIwKdB&(;-vi(;R%jXI{J{jCCa<9+c&sG`1 z(!)(kZVXnzx;Z#_DELTYCn9s(e5y`VJ`q?5G@zrugd};x3$(>tk~c(lCm3Cr6Ak{uAl%GWec>uvV7{+8=jS#aytLA?-f^zWfWt4vkk9 z!lws{j3ezl>v;_ zDam=3IfYqjg(4*+H=fr6x4|v!pKuEC;;-@YDkMg;O_-1qo9$T|pNkn#NG_eq@XQ5n zghYg=DGP~nXx4Mq$HOB<=}7lC5~!+wkYH^!nlR(?7$Dl06|SPI*M$TB%3$e|T6BMk z$rM8Z4wo4;I5L>wdC-Ox#`LpM+o2Xj9_T8`KV?~&wwmREeKN9N5r#kSI=#$P$2H?Y zLMwESKA`{Qp-d=S?StMCC_c8{ynVA@;onbm)sa!vlzB&$137}J-#zd7q1vnZ+pquJ zfXv?By*WPRzb%EZ-E#`1LC>tiW%%TOxob)8;{#tec*f?q03T$HT7>(3$N{jD9?sk> z{i33ks7Tdq+B2Yi^J|zOVIj-f%f;gZ+!@1d2@(R7<=ZhHPxXP2xYx3!FRzU8-^dAE zeSbL^nLMi|)8T%DIwqZ_f3@M2kIT-cwVsPLBWubh(sdCt+BuNT9I}#6xlIIx>8cRo zr3qIzNJ8ecHE|qfz`TbWEohGO$w5WpWk0ccCqRfti<1&>N1$Q?fE3f*b%9cEIuwFK zjGdS!fLw;6)52-?HEm>)1TFNKhRt^n6OBw%C1kLgVGxlx`5b^YBRzCZ3dMOVlv1LR&J`%%98NFzgo|E-`@11%=HgayqB-qx3J}6{0>l4XJ+A*MC=|8~p z)5|yT9Z^|P?!fmCn~!8dCdGBCdbJ%H;QEfS_VSER+e3^M;xU4Qx%`0$^dJKQ^^hJ2 z00$OHi;-P#1Y<}*eb-GW2O>%$1FkS*RQ80ONEaEY4PvI*c@rIH#h`u^pCn3J&Q2x*K7q$wDY z!{a*Kgz;KUeLjG7@zb`6JYdBt|NWTI>ZqqY>kL=XT^;zu=GjfJ1^16E9wF;)uBvAK z8w_n-Gv+*!C)$g}>k`TOcYmB&6dcoiB+5Q%^WTSzf#fnLH9u4%$zYf~@h>`4+m4(q zE9PGUpK!cNOR+f9OZAk%&?3G`+Hf9;aJ=M8F%BKA8sj-(NSXOR#2>0EJY_G6U3p!p z+4WC_IL)&uIV2h*m@vR;PbZdxUTkEkqx)Xnw?{Z6vNMDdDfjmXy-+bb4qAiu6txYo zr)J{Siv_q3@R>cj5bfDc*tIfWXQeMt5^xy>?joLiAzW23L5X(|6R1Fwv?ybFvlv=j zHRO*Joh%d)PWv_R&x{6OE{XH#8yrN=iBG}B9O$}dO4(7%G$0II9v;E?N;Q-MZNZe830*qF(MXmNdIl8bA)w06-F z(zlob4`s}{ZTMT6KA~!pwD!x9_4t(aBQ0%b`uq0iXEjgCb3k?gWokrS&3Jfztmgfw zj{uqKSy%cJE`5{FFBb{3IlYs4zhdOy*X!zg$AJyd^zW{7Vzzn^sJOy@9ZJeyH)LjUCw_{RYyO6B4ed-+s9xr{?Gvr%( zJFh2B@Q25+3wlMn)LRF_)~ZvsvSJzZyKE^#`ELhJ65Yy&9w zg*DlyV9z?XQ8BZ-DGC+u{&>%Y*r}p9BNASFt;TlEPAe@<^Op950?C_GZ1vD++Ls8H zYRs{%2la({_9%)LGAJs44c zF^28)`Q97#TMPY4K4677YBDUVHS=G7V`)*Pwp2K@bqId9&dGo+ zgQL>mY4da$k;^#E1fY6g>F(>!`eTr$FaETQ(5lamwC}}qsF$~@>5v0D zBd80z3c~j5+m6z#H)0%$y{v-HUgYtJ#irYLS{`^U*GleTyt?9MHC^m_RtjcSAAUH= zgSqxJAJG0!2|d! zN>z+PrG@a>uF5y`I9ZW>s6zZ5z!AEp2SH~<&HyE7=95*K$=(>1BAo!L^N)9gpELwe z-c|>8tBOe)=7u9ov0iEp;JT^$fM+s{|il|$rFW^S+Yy`bx|8jJvV#54wo6~Sze<#`eq2g1S`3u!B zjid{!*VvdR-d2A!uCj&wtxP|}Y+d(^UPPWszFl~hwea|XJFf;td!cYgF9;Z0?XX}N z+Bl7S5p&(!1ggPA4Sy4M){IYbJM4h!2QlP{vSsPmSldC8rxT%3#wd5qY9lOd5VI!L7)g+31VG zEJ^WM5#FqWK^%PDQG_EyQHt@d6T)V&!vcKoo4F0S6V z?iD6wUgg&rJ|tv9->yb2-A8>ugVG=5vS) z`B{~(D%!KJutY7%&gxkIV-%&I>I6hl+O{2(u24~-p_I6P3?dWCVl0i>Amw_Z9}f<5||pubi?& zuB@(lVN4yF^snw?o9rZ+iZ@A6D2NT#!-K>74MS9pO~lbcc@DJ3=6w-3t0PoTa+WSe zT8_bp{3>(LMvz-ROvN2L#2hEsB~YiexCTBJxY{0+qx{DY9<2Xxg)1X~6_Q3<;6Bk#Lo&^J&49Ewc+A z?RQclu19E_rJGLmjwj6A=*nf(p@QHUuIwt>!TN%0T*9K%Y}d$W)D@^6TrttUl*F#Q zjB~E`jgRUhvkz#PYSYEQ%7=yN45V%X?1nMyyEw;qH2AGlIS&bfJ;KpI0a2tjJqIZ3 z2q}Q1hZh@0(O66h>@Z}8ov;|~f0P`?0*YF1ko=>HVMt-sAt0>a{vGhsxBs<$IMLF)cQ!s!LW^ zscQ@Gj+(ivNNY604!D5g?_=vxhRnHeEiFQ0B_5Am3T@N$6B;WeZum! z8<|pqzU2xfdQN1sHR1`Dtd9i11oP$wP;(JD+UF1aLD~$S5Jn`t5r|*htLUfQB z(Kr8gzJJLzBGhd7vp4?i;y!fd`-&yYC%-ey&2|9WQvA&0pUT^EqcZ@p&LI>-*uveikj9%tJjL2}{9m|)a&WfEP`(N2nrkrbCcoYqULI@5QR z`T3J6%+L6ldmH#*EVumo)6H(0c=>*DhRJT0^}_46mWv0P(y0pJ+2v*5>Zg@rAQTnM zaA|_imxQ!ZDsAx1qr=@J#pNBjMeBhIXXHDbBE_L|WU}MzRYnbPU=+;~1SQZ$5#XXc z_A?Ze>aNxfa*gu2_H{GF^Wj)vQdLw#1{jf;>Ed7*l?7iUaikLwtn9x`XGvt=eCz=c zypz%w13g;4GD>8RQUK*FmVFds3#LGTa7mOpY8%CmQ$8}O+SctNGVc&U;tZ-7i3B7! zF&~+Of_1A=p^A&r`l%Ugl<>4*3`eXm1s%>vawIWvz;>Sf7$QNG^TmQSr2I?vL{WUf z^Vmo}1;k=`|LUAyeqhujMyl|g>2$+Bb-z*FK(C;;*dVT2ASK&_B{ZvlI_H={aaWjO z@&M~}`e^ideX$z<@RNon4ZH|A#fO$F(hmElZBq{XG>_0Q{TfdvEL~Ub&a|lsDS;X3 z&1950kRO6g>IYiKa*gATppb_FU&`$Q}(eOcBj0nSe%`EW{);g$8czt)uD6$NI1KqF8{# z;_74@AIUO9sn?@5+vL#7Nc>7usUiO)Jw2bDX~AL8NV%F#_l5B$UUOG`bF+gpqpZDp zk9%0;!+JV31*gkb13ODLx7sR2##^S24wx?+2`TeSPZhkl{Gdpid_s#HCDlq%I&W9s z*J^pMw%$heZ3jLu7g46{TCub=H*~BR8O+G_e3?F`0Cb7`%IX#2ycm%GOAs)+Q|ypO}4@>mqhNUDx8+!0<9eS?&OML`(p zdj^h#!5!LnKeNl1MQ+aOdrN>alp1(k(Z-@fEMZgL!PxR>RT(W|-yk@O$xShX(ur>5#7AeocHl{3COel7p-hT5QhNbd&Y4xV*b+;IEZ>d1 z#v4YDz(PY_RzA*LdYF#et&TTdSbYavqOf*-94J3&;Wz8z}T@rBqQd$uWjEK7E zIEn;*iOd&t%o0??T#7(Js?bsgk=rN^jS4~x6;KYF=Rv0!g;w^I+=M*JjYWaUI?M7g zJ2}fzhfqO3>SI`f3VvH*rjII`{JEfg0mrHm*32Up%ydq>CG2 zx5&F$>Kav({{f;1S+^b&=kJer7q6JUZ>%;t?G_JbuP{JBTA!|sRP{Fkyw&FkbGq*4 z=X_S!U~aic#@`Q1Y=1`VW_?Hgo4iw3ms&aIn0Jb4YkPP%kE+Sn(hw4!wYx}{x)Gyr z{*%zidHcvci%CE&PeQx-ukXf>qCAwjW0*$|Z2eGOXX#-U9myBCJpT3 z&cRIm{H(aS%~}Gfwm$g%a$`iIz%pmUw;px1Gw7R88>g*bwDt;ZynZ`m`KUE!`a1x} zGR5WZp?EQe-^B`7D_3DC`u&wmK&kt9OnBqnhBq_KuS;ngkAv|)0kX{b$(@npL-Xcs zmIzx8WKYW-pAVO+nD{JXuCt4!jDN1E^$ebLy@Yxp8=S6Dou=WeFx~>P1`>ZipSs@Fu+PfW1dxKlvRqmm> zVJv#X1sxu-p^=U&T!XUy(;k*@YRhJr9SDoH>KZja#~gocFuX1FZ3dmX6}J-E~V>iZ*;pnE6Y zm(m>noz~t3-!^l}o32#!s=B}SVgvAnw&*zdiu8`rV z>b2~x(FSS|9r)2@!4$^xjvb-&W)R(tn&n#(Wr_HFP3ZV;#b8(r*D zsY3efCdq618&rKYxsazaQtisA%sD@wzl=*;@xO~!DH7$-PioJkeZq!X> z>dGMRb|(k5=o=9zUOErE_Ic23RTuy}Mt@t#P=M1|@=jj-JCRq!kIj?8p=>KS)|3NAL-$jH3%4 z)p;+>0H;PtKx=zHTkI*x#P;prZ!`qJa{DA$B@@toR9ejj1(*89gL9l!r@f@4i0YlN zu2veubJn)(;hV~uEe($Hy$;8dpUShKYY^Ce_L+v zL&@}u3c%2Sc3X*=r?tb9;r)5p)7l>35K4sBQKciYr^9-GOJ76E8!TVQ@>)$cZ|r|| z5b^X@^Fk)|^V`e+YA|9M$OtCSPgF37d6&uxy4%H^4o#J*wf<08VHhkbx>g%(S!Vv~ zMw-@`VOMhXQH_OELJsSnOaB4bvTZi6NqrQw@0qg@d_T8J4BE<-w=ZLxUn8qgOrvR7 z%fzCczg6WeF$kP1SeqRsB=u-00Y_j(sGw$uU@;qM0~|Ceg(F_7L_QIOxCzpRN0q`P zqAt*1<76cy9P5aaI9NYna~Y+MB5@qr^uzG+O911h#Z(p2yJEk z$4HoG8!kc^hKnRnB6cf;v9d&szCInM> z@iF#ZC7Ax!`O{(b4agyW9(%5f-f85nddK;3gF7W%|Gd1WS_q>MoOs@iBZJst~wp<{C0GbAm>%Qoioa!o8I z$8u}BX*$SDYZmwB&hB?%+mW|U%yUJ*s%O0|`cWJ%3N(i@HL+PaSN}G4FON)6kt&N% zpd^@TnU(|}W4L3fmE;7O;-U_}P{v07*=e2ZP?Smljmj+l&O(Hf%^2|W`c=?lktRbT z&$6Ri+(VdV(d>h^2fJco3@SHu$we6#5bS$8RlDj)a(XN+&jGwjfgTn0)9dh4XfZ7* z6XM4bVH|reK{iMMplgi4;p}PL39RH8k3NbuL*I29m})LY6RUvMfr=@{aIs@JLf;j( z+R$~%DeCWtVjV*D)aWdO*K_>!J-$Vs{t&sw%KP)l-ks=tqti=#_v~J9b@iUdU*``} z<0c>};o1H;MrgOQmQG*}IuVTsH_zCnn__#1yP9CyB_bIe$s*Qge`)qXe{rSC>VdWA zr)aB!F&WK;ma-uh2G~{(=6>g?cjK(xC$9H5OvuzJIfRJ{-sPuktv#J9krfVELzuFw zV3(-Sqm-d+4yRtRsPDebATV;Uy7dF3M_?3CT91m>$@Wt$2peB-Xi9< zVzdA`iwbSLtUM2YYW&@cgP+r+6Z&w8ofg%Uh{_xW0IBH!n0)$*d>R!}RAM$^uyW4~ z88i%hqh8HIX8+lmG9L-@+oXWQH8}4}-@ROu0yh`{%C9r1;a4|`_&GU_yXqd1R-A=n zP&8or73vi#L4brvetiz7Vn;lM4u4yg7o& z7D}E4)Yz&vj&1W9n#9NPq$D2lYG#_;Y+`=ETi36DL>sm=*xXc_wg;8p4_|Goe{ zX}Y~xX)AK|5hipMz`)65V;*O2KZOtR@%M~7;(lB#Z2fkZqtj)_q)hLzc*9@5(A1Oa zW|)A|VEW%TDIX_wEnFIUOe>B@kng)fBMc3)sz0Fpf>^T%&idYo=!>~Lv?r8ad+n^@ zM4l`_?LBg=wY~XmW&3aX9`gISYM&Rg?PrZ2{bjZWAFV!_vG5k9g{iV?A9~`3+EA~7 zlZTl6e}Y-oN&7VgFNOSr{?ytfdGO($103~0M3$w((Wg@sx;_pHcyK)4H8PSTDTByF zH>7-w0SX|IVnrb|nHSZGgOmaXKuxE+IDklJnp}#p>A>CGal?$hf8K>Kd?SEO5izB{ zeJEq?M}?)sveX#xgJE>2ieO@9%t<*EmNIme_|+#NEzV&Q zo!*FzR93+nh=Ua1VCJIF3QX-E65dq~fsHsQx6LYs4VJO5zx1Gx3}&(^$_B#}3Git( z*F9rM4eR58&LM+I6cWyg+{yh8IElkSQIn(gcW(gMQ4a@MZN6lD(ILfb>Ez0qw7~UVtPs<8C1+1 zH74?~gtHZ<6OC}a4H2^!sSK*yirP6c7sZ)njnrn>YW-jP?S8DJN<@}U&S zH&V1ds%Ifmq3E{ZdnBDv{=9Bkwp7fnGoO79I^(LkgNc+;Mzq>}g))d~X=kD%5v>nh zSEL=bo$|Sj9%)b^^?Hu;y4ZYvTs)-A1ullnw6(TUeRec9rEASOtNvx#D6Ev$#^!0} zWyrn7@p||%pdm*nukZd7ueJA@Q*+AAF;V}lN~#$&NK@VlG2cdC)qS6E?YH*nR zcvL1t?nD5=roV@&Tj|hoR)XvQ0E?cq!`X>P58WQ}MW?QmjiiOM3trV9)LmY7pNa`m zshe)HdeP8W?q>3})Wp&JtU}>!%}7TeZu4p{X6ccKQN-BLw_3t!?8Xd}{VDy*d+*!E zb(wZ&3N4x2vFrKH6a`VJ;5r8rZSc2o;kqj2N7elMe^#|Z8Qr@D>}H+U@_)~Tv8}{> zd@|L2645`}Er7l7WMR)OI930h7qYR826B1!F;-|L*kxq0{9}}Kc8b*2>$mR`6g`N7 zX{qr&9+cpX(wdD2&0f~sbb`xaiPvI1LM@&jyUSl#IJ=`>#9{sM#66B~k0eOxZ@X00 zz{<^KZaa`gA%Kdx4n3BXFO+il+Q zr}`Gnm*ZRPPi$4pA4yhO_-(o!duav;N^Zo+bk**^*Y(tmb18e}HOTv&j;?$`-F#v) zIPu4cVxE0t*ZGU7C%;_76ed_Yf8Yfu(CAzRQUsQNbx1@h;~vK3Wh`=7kNwWWZq8d9 zN{uj4x7fIA_nUD_Z4npeJx|6TJ2#|QJ3F0N8UA&a9Iur(l1>tkOJ;iBJ#86sKgV8~ znR+UbTUkGzRxy+Q(>eGq!YySa;9?$PTqxnm;H!u8{kpA%dDLNgz2sMdMC51~RJ}OG z^lUV+-W|fKTnh9+A zgVPzu#ULx-&3I7t(9TFE;7^0(3~ZlK8slh5?AUu@)Bd6iOG8Z5Q<;TJyx1}u7>g#kYSid#tGW*iD z*5Xr-6@Bq?X+^FbIw4a@KWZi|1H9#fSIgB}N5xZg0yz9~&i?`d`5FA?pU1=~-hmm$i=^!cQ18jbr(HVEs)9(xyy~(d6)V z1aJ~E7tBwjLx!P#T_v4jXrR`zRRbJ85|u$JeF>u(=-SW=!K7~}1nhtYqNFuE<>6P? z;&HzwAA`*rE_VE|?-@cI#c(Y0nbgi_5>{ z{?K)9aoq~vsH2=k)bUNAGGSX?8{L5pQkQJSscgb1u&a_RS<5f7N80@gHQ`PXOrtS7 zkt%mQx(5ErtZ#p1ELg<64CzR8mS~mG76+%15HRR8osT#`8+22_ ze8(6>FX?{}UHDza0DONz+P4&{rO0eDS0Z5^)pbyQoO)M>ozceU8!WV9r0Bq0-z{=Z zzPzW{e3LKR?oDzhFmul;-XqnN{1l7v=TE@S_r`l4>+q-eCWuaggElgxy8dx4&NCGT zX+Hz-pb;*dtprJhXL!Q~jD`baAMNaaJOX#PS~a2X>3$8>GtM|_f$(f&`XyTP}u<>4%ZxWwYY7t=F!#=3XtqOaB3&I)TFtt)ZTp$@kfkf4tE5uaoP) zXDcQ*>qminSqDk7qc+0v)>sNkr4J0!=aGW(S8{AcseG2RKe*2Gk;5zwn?`ul{~yNYkga_piOUxicOQ(*9_y;akR!iL5g6qIy0o!Ibe= zdtGG(GB~53lEJ6PSSJZ!AtN24*s@lddDaY2_uOD!ue?qAx~E>e0ExfzYuuc0Wvu4g zDKEwKPCG)86h8bjL-Rt_cOgX%<`eH|=sKag_LiA=q0{O9zbto6;d0CUt%E#6eV_CA zYmrwwqzRHAJMPV#WF)H&l%pXR_hYS_9^zTtwx~9BO>|2lP_x#tmY?UqBCFJdE zd3h}h8n~?d5>DwErVnkTJ^5-R&i{XbKGIdOT1Zm@v+sAXL zcj?Qz{lpp4cL5bz;d(HH){J!OE@5_O8m?hL!%CZvDIRMyvMBZPz@6ldd6R2pB+M&u zxqkJ0^dLcT;i7{SzxIziNC10 zbpMDKQSPAyBSB2spEMl*$^}SoX6@dLWOKE6{%U4yWV+!&piay{1g>iQ@~q3mNHsV! z4ODVyDB!un)Kqkvsa;mmGC)Dv?pfRUa(=+`r+NMuzgT_#-7MV3>E^ZtpYckWf-*{j zejxMl5ka>(IYd${tM~LyiJe}ioZfiS_U(&P`?K0rK0YshFe+}F9zNp=V)eP~HU7HD z6z_hwwVeYuXfdl$ZT@0uraseSTRmsp?8Q+{Xgk-qcpnS>z@L}XPt4g`g2mo_i$fkg z7`}VwO^sa4)3;z}wWpw!_qMiiak24V4JT~hoB4I-40Xi*G#T;wMSJ>M2r|VDO87>9 zRt5cNzo@$88F5d=_PJ%2r(QXS?Uh>PV|+3B4qu*E)kSBho(t2ock{nm#+?(jzd zCFyoCxRt#EJL3Y?hvE&jty|Qm*KCR;GB-v~?(7Z9*Wq_I-F}2bEkzE0FZ_66sv-tg z&R`axJ=nv==66CSU(@clYoZj3s4d3+D2kVUGxqcL7U((odc79?y~0>ey*IU2@vJ82 zR$<8(hnKE3g7ut`U(0J|Hn>=`^ZY+CfFC+M8ulAn?fri#MYPV(iFS%P@_wV}+<}wfwx2_Jdo?Li7-2(hp!?c6|+2H1J zYnn=Zxpq9}_Z!To@ZOwGhmnO&lJ ze~ZESMx{h>JS-*&krV+<)dBqdGmmv~)_*S{&aQ9yqW(K@U+WUeb?0m7OGm6jG?$%e zYA&wyYRj)0>1K$O2Wa_-&uJakGU? zPh1s0vGdm%1@H6sQ8%DzFScb{d_?IXe$koMwm!m0XDok7{%Ls&L|Z5AcYFy@1uA}M zfYcNh14Iq8L(xwZii9;j=B3uaaIhn6SmhK@rzIXvt8amV1KFShYNkGvTj(#~Z|*AT zYvr2p()3##`4q7TDR`CN+OuC7+ltVFcd?SnI*oFf>mV91wS;3Glt5zB>AJ6C05B4k zPg6m69ZEHnv3e8o1>w@kUx<4OaK8aF1`z9IEkOfB>$L$7@;n$6L3^$xf9AC^7tm{Y z);3WdYtyON+&=mxIc-o?^ZhHd&ATerOX__k>MUwsx0R|Z{{3C|`NdWDW*jv;Qn~`7 zW?5r}#P98!6hER&jdm}nF!ldfpWwA~zi`9Obc&R~BNC1e-9pPoGujwYb}dz7w%nD- zRqkefUznF@6Wx(9zT3%RZWmXPbLa7wyM5!oP;;{}(+J5}#P=&dOPJaCrxJe%?te^- zMgK0Qw9QYy4Jx%6ldv7%3hI*y&3gS|Sg!VCVQy-XA+7Ci^20dG@8;@)r`uUtsAIIn z%{$ZEtr}y^YLlr&xCvIK(h5+nHQW!I1w0aJn@t{Zi2QI27{N(>QD5 zDPI7l&H8A&$h1HU@z`O1`R zIg`g)VTk=DAO7r+P1%&886`0RaM-Kpd4y+0bnqbFr3EcQU;Yd2otW}lZ!nzBIW&JH zY;}BHDFuG&q|El&Ygo)OaPDo*?WY>y*@`wSbrgXu2X>Y_pWH3$${hWChu^1U`Tt|O zWiKaEVC7l$bK^tQ&GJ`j_2Le}F`XqFZC;*VSo32JjxlT1qt5R4N|_sWOnuVc8|S|G z>3029Q)`7CE<)lzfYc$=gw0Pv3yWeOLedQ?xY!b(*7jyP2T~$jmjM=GV8d4SNQH)? zEM94kr{>x|Yq-!|SY2tW<|&gJe@brRg^1>tx!506@U@tTj-mg-ujKRBnRpE|`?g|< z`Swb|C}^rFV~C^eoCG-SUHfm3$U{3`+gtN7L_N>CcIN<_UP;GZ*_e%sX*pmF)2eDL zWZJ|2E&Z74dT8zSTh6={KaOl9fCreiFFM@wZ1g2An0cj^E@V71OOz@5*^NGX-wM88 z1Y_7-Qu&tIJU0py0X-l%Vuh{=!*i6;87>&plyGxvepp(x9u^CoSJ8%EjLF9V{pY%* zgl>@>%UA?N_YJ-2fx~Q2QVWW8aZHOa1*E`!;l+BiE)tIGU$}E6*Ea_^78J9~JkL|A zm3T8P)3sq0_v>(UUA_GYK>W_$>aCV%y+YJ>z1-5l(wmL^-{O}FX`^Btn!$LaxtV^8 z{(RGe4xkINi3O~uhq6ID%KiZ+;s;;t*EXqE8ejQ;LmqGNa$J#Us%glB3K9X^;L zeN_%`tCj{1S9K@R34g_X$(}NunTy~*cU2V{qFXR!;R`X0mXGh<6}|D&CP8>{?VVM{ z=?4L4z2y#a`Zi^A!GPB-EQA$uV5!(rTQ=lmXlLSP&MRv)?mr{%*8L`hnXpY-Pt2Su5K#o=Yy+;}(% zqwhvGkm8Iy@r@Eh%;+Pl^}-RS$Vagk#F8jTv|-tx*dHEkY_XhnHtohiWcH7lf=Dgk zb&`rB)0Fv4bjK-pq}NR?${a z#{9!;6r-RdX_gio$F?Sk9pz?H=0KM(MogIUjijYsX#hYTC`q&dWSak}(7|^-2AlZD;jQLRp`EtMP&l#g=*d6dK80 zQw9bE+JAl>hpS9 zJ7po7y(z=O7}`!n0f!_0QYLgsrBk0UvOetiCX;T*FDdR9^vVGO@oh2ZPf7e`qPdxD z48#01DAMT3e;iOdD05wJ;F$eSD^cG{phso$poGrMo*F>T zyne&Cr6g^j2r(U`52cgJA(}_v?3O`*V*_xj0kA9HP(?m+UH#GUHk1cTa=}L-|KAG% z&WlmtKm_p}6qb=BR`xxg%&mDP|5CW5T=eK$s#1R}-GUpzdC zM?V@~s)*WI5$6M}ca%J1c>w;=PY*W0n zayQk~DsE72Q|)%yu#orpW9O-9MbE3-o>y-H{s%BY&%RHwRUXlUbUCL5 zbG^D{odZ$k16F^AZ%y8q*SN_GBgU6bb11ooTrl>sl*mnnx1NwsYjHhgd3}EQm9B#+ z%ZM9V7QV4?>NG_*k~d`hmM4ekeYaGrapi$ZkdMfqwV>#~XR2>5vr*r5zKhTpB@Q$9 zMgoi#K=?cb01vJ`RNFa9I`vQz1m!k7Mi5vXga(G-Di4w%2$BK@GbpIgNIj?@aWa(U zJ~1gqWC;i#(h(v62~J?3oXE@|g~fVyz#4>r?`0}g8&!eLAhlD~tsQx28rO!r858tf z^vh#yYRYD&@(x`Pg3J7|_nsO()D2oR^6KmWd#u~bS6$q@%&oSYcvYRG>F)SyUP(UT z2C39+8~3i5KOgL~@BBe;K(?K`#YZ0h0N7M&X*yjuv9}G2iz}dPU541K2ZuUxD8=_Ktni^gUH+1+&0(Dt8PK`BxOp}SEo{|>Cl$} zwlKDDZjEY;Ww9>>!d8uyskAk>woOBiZcuqEeJ4$Ih;0zy--+BP zGHLi(`(A2Y5?zx6{Zy)GjBUB4PPyDn$^QV#v1aW;yIx%41Y?XSeU9k3Y!G61Age=4 zw6uSjdsWpMF_DkeRbZml5MZ^$t%{me#cCp(-yXRi-CMQNZRnYM1Dpg2Kk9?Xn+k2L z%CH46b0?MB_TTLnV9=sGup$EXPN74~Z8J%wqxq29bldkCw0zKcDq4NfAPaIDuG?sj zsQN+d4FY#({a2)GxsQ@JaWkIKdBdXAb6rlH27+OA)BHNyYAh9=UPegje-*rO0kiFu zC&MXkb^}C|7+2Kn?O#MSpgo|#jyPUdQe_$rcb5Imd6KrZ+v-oK(L_y0n3&)|RW9_3 zR6Lf{msNAKDu{SzPZjT6_cB?s46j-HI^0`2lWB-?ACiudY%Q(a3t|=K$#1lv!|@X+ zTiBMs6&^qzlEcyT<9(>p2Q=uA^X{%{bsws09zYmlVh6}CN2XX()2;lriF2|_is~)t zva6~F!;T7VrAfGK%II85Fh>X(b_8%bQ7$`p@2-=K{L_fzgc5E<_IX4oiRm;35ucDi z=P5iM5JV}EtB_o1?&#G}BH4(~a8%Z(BrEv37@vUY=!S+{L2{;QZR5tgn z4T4_u8bA%furQ)2i82>c@Vv^72tcC+F0!0L5HRhns(1l}{sDMeWskXQ$(K~72jsoY zNc%l`fgTVMQy@nP4v|tY z2S`Zer5zxbAf!_HAh?E;2pB1j5^JTPm`^AJ%3;J2+DMr7LCW}$)|TbKOnYHf(8zU- zM{qpP?z!q!3pI;VKLMn7eha>m(@xH#0RI5wk?s*3Z$29BAHyP3Efg+kxtR|zP~zKz zRn8IRmCU?8-M0}996}9pGl9a3zclx5XmIQ(4DzUS#DYl3P6Wt6K zC~gV`wC*KLkTMc8?39?!5KEAV{7~Jo1uxL101KgDE6KZITDc| zCV5IbKqe2!sKE}NlRTh!i9i$bNicyD1ZEO2N|Xn42-*O`2yKCml-gyy!3ho#(g!F) z2Pgx=i80cbNgzPVa+KvAAdq<`4+v)tYqHbP?MHcc*GkqpArN8_5_v{^TxhYB={A#FwV+@wjU~9`d!$Bjlw=VI0OC53o7gJT zb51u1Q6%o*r|}MnLFM!f9_L2Z>oL&k6@egy>I?ue!U=#0>(y|peQ8Cd)ho0|B2aZ3 zGtLx=oba;Gi1gSkV~fc22m3B9@kW|m4&EUK%;7TQ9jcbPjg{#Fg+N?-D%)^lq!Bp; zfKzjr2gdLRx}~e?4Aba2$1Xet;;ZU)bqND`e9R7!9_8AVl{%hTtuH(eU&(N8wPgB% zhkIQy1atW;OKm2t-kQzBW7^{$y{|z>PNXQ&-Ao#-Y!e**XghA);P&u%QK;ZupZqC? zkOT~L7ZT@ru;#!)-k&+hQfZtX6kq@&wDakZgN4nFwZT4f0X$0b+MV#wuh~pAJ%r0o zV0OKTmpBMtI`O$K)r&y;jDmycR9@QDTTpP}Au;K~rJ_H~(k-43EDJynR8}X7YTN$J zG#^klt{l-EtP7nT^)$O%suan4oADO@t53$%L8os}4~VtFZfO4i7Kdxszz*L;HE6z6ag3DX6#T5ywK!kB=0M0xKMX{XJns8P#W z;A%J1-DA_MO7Bs1wZVqf0Ml^j!uLiT9NK^uk;3vC_Lkc^=Di__4sWr-qtn=j)3RkM zgt^ql*&~pw0fk#mxEB^QszDAT;~j#m#&DpQ%#?EXY<$8ffj-DE(JsJTuJ0}FnYq;m$$1OiZTGj$qf2`zlM*o~jh$;;ZJV0P zF;j4kI9_t0y}r0pIR-;_mLPx)UITryxikUj9d2H13P z7Cx_T8LL~|vmXbj+FmQpQFj7H3k^meDO-CT2WMu=w5-9JK z2Y4z`Bb5;li5(y!3KHB&g3^xAIl?pf|)+arP?5rP7ruR1PGE&Q;>wCD56Bl0QE#5 zVo(6#6YmKeebmPY0}-GlBeV~sj~POIp27s2<`P4B zK*tGonIcj^Pb-k4E}vD`xlEK14TQ=PKp`C=2au@!r-ETY7rb%y#Yx?U}@86`zqJd~3tJRn6R`u9;H5d?(;+HfTf z;RiFpTpmcqS9fr@yok?8I6IZbq2+gf>bN}Z1r>8hz<+=2tL||Qz%r=m4F#@oCnx)@ z2Mpl^TgWO-aFNnciON8kmv?M3hE|5Nydrb%u zT&8$OeZRlT3?uIiNu)9bWzv`69< ze-6`a8%mAk&VGHlghqpo;++0SJfB1clnCG{FoGr&OK}A;#3Gs_^FYE~pa|^+2!su> zBh=w}-w?g-BF@|m)eO{kwilutw0o~Rsz=+Ma-{4uAU1gA9^9acR}BuJ z@OUguLhzAkQNs|zgT(k78nwV5bT|5y?(@1=hwv!>0Nk#~$PFKGNUpa`{J=d@C?a>aQYwCBE=c-sbjg=d!pn+F~Vm&{JZcB8EHnhl^z)#3R^WGU@ zcDq5N_++K1UOws6iN@CLX!lpVA4WCFcP(L*A3=;PFBobD%S#NTNU2oB`(bak06oZF z7sl>&O-79}W*A_5m{3{pevCY(>Nf&h<17Vi_@SO=g>X+yC-hhJ`c0*$(P+dpVP<&3 z<&<=W&~f;yoxemBJRb7aR;TLUEy>-d+I&HW+^uo8hW$ zy73JM9EQ^`cg__a_T7QBgI&lFnTfzn^SjwbQ~(I!FmkxxTvN2Pb$X@)Mm}gfM~yE9 zd&badkxnPscknfTDy3>J#^WJkP@!8`)Wb*Ks_oA{foWW{==!xSv$vwC`Uc_}B_80e z7WGBN2GkkcC3cK}6jYB2J*T!i7)zuQVDwDm3LulhU}jJ}v=2alWY0+v(s&3OiRTHJ zARzu|5Kb~wV?N3*sMZo)kPu;bmaF{gO{VX@Gx89&bjxqC>2#?94{(=$C1Y7reeS5r zl}EtLf%IOEsU*%}1X|M>?KuMp0!w~KfJz2XBPm7`=>fsXO+@=3I0Kj{B?FwGr8D(J zh>6Mt->Q_sAQZEbltIb@elLGi+W@3+a)2feC^CFebo(tC)#?4>@X_wMXjc_=Ee2{o zZ9wQQh111>uF$HN2`wOxn$PepVOL77$;f#sjVf9zAiA}8IG)G;S9*Fioii>DasL2* z>hmzs>QkH$py10ZDsGn1A2~9n%W4d045k1X?<#OUY0e5EIkcd~Fah*KNCFxN3GK+j z=XqI{v}OMQc;EyQt6h{CH77V8>lD^~{;F-G_e~vjg-?X%) zZ1=gjdyZZBsyW+PQnPV^Bz9GXxx|+o&q+9$_>{2#ciM_`mBy~}Vw_Lty5eCRaDtmG z3!Gh6r#_0`lS!eYU^{q75*-AoA6^hi&h(Ig@*^cj)hRQX!U>lWNjXtGnEI&6+zH`5 z(C9$mK*XX99DAiQN9*W-0p_4645<+9ppF9Naapt*CE4o>9`{_$XNF?+qVoZqe)h!o7EIM^Y3WP<#~MynCWB^t~O=y=BF6 zOIg4@pT%9(8RqNu;0XsmlH4W;+Ry^eZM)s98qOjZG58?Rds^4H55XrpYaHPQ0z^sO zIVrb{@`D>iv@O55x~L?a55a64l2FKKFx-^+`KqAvBNC1fX9)CA2nQ%UVKfM2r?)vX z2?YMA51MHvfkFymJz*)zp+E&!)HNzL27sv7IMy&BS^`K|J|u6Qd2LCfG=quxkRd^{ zZFDYJUdEP!vn^ZpokFXdpDL^srKeLC`h6|jfhADVDY~8A(}r76@A~BiyP?Dqp^5D< zM`=m}mi&>|x_C%52S_I<6-Jj?+^}-$P6O~>GfgaRyJ*4p4L^(KLiWYNn<|sQVf`0| z(tvHfT8;K(q5iW_w4;FbXID^U_hD zl4e3o;Lj)+O#ED^69WoE?&Sl7lli7lMGPl@#lkz7;Yd5;;|MbK#-D~0(zAB-!yTYSAL(T?S;&%R0w`VMc}uIU3Z*cNH7Ph6O^l{H;X>1I*?<6pB~8aZ$RvsUQqQ6}9iV)O zth5zi^K7c`0CFEW@h<~C5;)bsnsPt5?_2$>;0!1lSms{{83GCpbf z)Oqt5KBzhe05i$~0LUsIXrM%Sj4Cq6eb)TOg6h+K7}E3L_D+1XmIGD>+_JInfa(b_SuFi zS70aIF?DQmDlq(zbch|Lj#m+XW?$v~p^bO>yIsSmxIn7YK8OK;Q5XdyQH?RZvXQFU zL}f(%;p&2TJ@AofY(WJM7?F=u z084&I56J=D9?&E>6pkP23I~bh1;SFo2ou3UAVI{We-wiOlsBFb1PPRMhZx~Lq~Sn% zqtyj2)e_wRdL!ISgxT>PlHt&UhNEF^s#}V8BjRpY{@PcT^KZO9=Tff8rsFKA-Vghg z>@hRi=Xpkz&6P?O*dD?sJt8?V_WG5pDpDhH5(wljw9D`+kBE2byj7K9r0R`jO0R9H zBuN=+_1b;&Zs|B~YxcN+;ATcpTH<{QCkk6O!8lPP;v{y8Jush1bbx*@nh9+wwqjbV zUS8YTmWzT$?h2)Mt=iG2G@M+0BPfgam$WSzzO%ps)0IZ1ziMc_(Qz&UK=u5Wm#F%> zt-+&AJ9CVQ;4KYfO{-^ODpPE^q6k5qcdy@GZfz~VdNk!w(*Dz_z0}LYgywl$UJJ8j z$DMTWH!=G_^i*z7?5`J)#%yb<3=Rk=FMq=Kbm}y=yF(AK{_215rEf5oRt{nHE7r6U z(q{>PP7Y9f&r`RrqUyAEJb+7F)Ae6TW4AG{IRr}Zo;0aW;{EipD$;<@$$N_dw#txy zJ0S;@@t}Q2orKF89UjV$f_A>~=A&dD58}5xPe?NQfp^@gOtn0JOP;@Pb5v3LE?gw$Bc&@HDXnjraM9*CK^=am zJ5jx>P=gTHWxkaps)sp;}{;nO|9B9m_ZwxigvV3TEBF9Ds~#xmG!~5qgpD& z?RF(E5wO2Qu3662^TyG*rs{Vz<%OnN@OUUbs3*(-%&!6CN4B25QbdQ*UW-Wa18Pud zzAX-&rNh;EzZVAFYL9zJAXE5Hs-xFQp@kKmzwt6W|YQk#isFj^36cslB}R@b+w1kwP9c1BmE zaqrb)_;$_K<@LaV@dxu;oS$R^OoZSW-9JSDJusyRrb}fa3`j~dl=wc9fXWbrK$0XU zBj|ujf}DfGVY29+QBiQh24~qwupm&QwqbuPEyXaK;3n1GY~n9Ayb^AjZ;!4IQ8q z&j=BOjC-KSF$nDhD$zBm78xCavoxB{b$7A+v_!31yWK(i3^)l3Cev*yXRTcBk)F$=eocIutj4qKV+C~ouA-Y00 zh=n52(qbcsMMOI>l=o-ZF8*nZ^OO&y4@A24NAy6_LOMWq!V-)o5FI3%Ug#HS`XKUz z2VW#i@{iR%kR;vRE=5(4~%?d4R=hp=vk`5qxAT34^dC1DISioK17z(w-hMtO|<&%GK zO!9xa?B{$Wb`)&D`#8#z{_YeMZgD52V@CwhchCE(w-N#NRIm>gYjVC?u8U(MN>Ke=b z*H!e}A>sn{{v@jET0?*^Tz|6py=fvr;Z$tf_>%J0n<+Jo_g5jpTr|0o6a6b6< zLG!N_INo@h$p%EWpUPLK)-;c_=@jkh4~dNcLda&1aZ|;g0^IrA~fQC2GR?u7aeSWES8soHnE8LLSCz7%1Xv6lc8>&QX4&34Hpw|sM_WG|G z;|5N#ZbNY2yzjw#N4W3dWosI9Z|OsD`I$spx4XCd6KlGl3~NI1z9P7Ouc=$Mob5Ph zAFAr@BT=Z~WF%4tE<7(mrf7__xD~39^3e<)h!(4C%|F7Gt?7@tz&{ce7lT6^sl#LZ zA)i(2ujqZE%C#zjcMb~hx>aMP-?Y^QpnN4!^dbo!+@#i$a;uB`b4XM*0BIRscU191 zs$90-$P(F!9jHA(E!^SEFBjt-N!4zs+ER3}rd&NvA$nm~?0RFaZj3rRUL#Mpey^?W z4I#U?ndwo&g?o)H?{y*@QP|I-t9^NKdsI}oc=$vPA$=OAiDy;&>eB?JS46UVLt9O; z@qYvDBzuF|T8?dQ`7GHE8-9Dbo!lM@7(TSltS>91B3e{8XcP z#!nbT9H#OKk;+m>8ATz;QYUUXN_h4`{LmvL%9mNnij?<+1P&7e*Xol~=pbRO+$B-e zDb(2dq>Zf#=$_!J+N1otN%c5E4K9z9Og+L2hvCY&_=A(mea5V|?IK!c1& zNG|I#hW?6VHV`I}^-u9ooUVg}3kn;4Ih5VXS%eIc9*A#PLF)(~q6rRB(f}OFeV~bm zK;%Ll$^pz}2buAO{>n#AV+*QQ5m?asxCk*3+zA5Sy66hx1qKTf;xwxfcZ0m}>a6L)|cT>u@^Bs+%SCMVa z*0FWJCUDR?U3Cpg?@%nIw71O=8-?g}tvR}Fn`!?586Ocq^xFzn6axerr|&sioS$TE z1Gy)(k1&8aKoE?|Q-jx{3AgT{MWn)Kgb4A3JMKtCD7?dA1lU8{JVHBBXWbB(1dK^Q z<+2o<<~8B7@gA2N_cX15^9&Qh%B^2^py&EB8~7l%eW_EWLF|cl0zQidmBo5iuBg&Y zTAXo((!Dp*9)Q57_&)N4R+?0pwaIotHBQqv?h58_vCMeO~T zS*|g-Kw176FR7&NaKL}V^2!ZCgW5r(G0E*n@=_7X0x*P2Najj?AVZZdlzR6}51Iq! zo+FgHM@SU>I8CzQFidl*g(8G_ZmXC>MU{!U)1hI?^rP-lVT3 zbyBrU%gXhR8&LfOuTlY)$3=P15r50jd0-P>um|NCLFh|&S%-u0xqz(wCExQk7ziy5 zRt;_XFmrhg4EzXOw8n-LOpl0wPv(fwc$Xm)C*+Y5)Ke}={D>(jKqDw2TQ>DGlGWtv z0^0X)ryC6|(eh|s!*1$TLF3CmqVW1{cg36V4%&r@db^mo#qltOhhcJzZP4X5Ax~3BL-Hje-BvP zU3v8zE;;u7QCm&3X=@p8L>cF9PxGrC@HKSAFVI%(VzK8RfK@fiOgU4IwTH9DlE=4zV36&S<9w4nEwZjWfCvjf7 z=Hi{LxUEo~vjtNc-JjVVaOV+Ct_?o2g9@L9b!&Ka8=6G>n1#T2ds}rvYSm%g%Y(AL z6@7Belm%9Aa3VllsB6~OG{s5;dgP$Oso}jR_#5sa_!Tgc`02NXjJnM4O;UXQ%qZ;c*)!JI`v$gK^+yZ~Iwc3@KTSe>yMk)we zukmFcCG}fu@>pUC`VWc`{7kBuQjXJcv%5F63w2{#Y40<)Si)u!r=~gWspeJqOYpOLJ z=1_TQJQ2s_wCH$%*ELxBLYQt_CS)w;c)s2o9d0l_hw?#k-^A5wQG3k}9T9~)e-tpX zE-4T}{J#at!&|kur04yafw8;i`68aFpCe)WtG=RkmwZZjruYv=?@a5jjp(dRmpGaSW(1y0WD@ zfSPU&j!{zll6y-?Aj?w?-q-{w0Apzr2qK76G>k|EM{BzW@IbRE@P>&eqJz)612C8{ z4`D~=!sS`drr=wa_JUUycK1}vE7N1zc?EfGM@PHS+-`K&z4Q+)9I<-V{6G+SRqE#S)MhYVbOYtk}5X+z(2%b3nm#1T!Qjl{9A$hGsNTGL5rN)-#ZwKN6VOP<0 zI<~r?v%7)38TrBwSk~^Gs9jg3YeCg2oHRsm54vo0ICc+6JgN_JsccCP^dAW-8)jQrJt zc7jNN1g|IHyULY3%W9bcfP?6Ay;=R`Co{6r5PatCpR{~X;0_$={1?$_HYv5ff)~%U zfGTUO>Fj&ueF_NrAja`!BI`SP{{a1_q#u!mlj2Kn-P-CFpGUT zOb76N3c{qvRMM*HHw_`|9sJ}V(a`P<=8sCPNHrQuUmnD+_Z2BoX?04iXy_H>w4F%U zQ>j75Hy9xQ05a_AHLfcGUS?<62Bl3)_ht0j3tP$m0AXlZR;gN>ol&D{`?%?HWrYfK z0H)AqpMT9+r7foo;R3s)YFOM-i4I|ayqAQin)PldRvW2^mY$ARwP6NFsD+oM>7QY| zxpa-MG7wY0@aYsCQqTtw?c04vqRY6@>Rj74r5P@1g45FWyNgHwkRd~9W2A6Uaki!@ zT2o_002f&LA;g)4y%AC(8138;yeseSG<)igpwY6S%&&GG(a2S9>}~FvMM^-TJY{W9 zSh#lfJnTFMoGW^MpLcjm>oZ|IlM+{{qiJtJp{-yLJyn1MN5cUHD=ROt&=lLxui~t3 zbn*0Ei;mt2QOld}@5_NXRuN<&+$l<*-Y%qoA{vfTCatlb$PzdC}6kJs}6Kz16L(s%@zD5_k(P^Th-(iVO{R^8r86W>L^@E-8wa1Uz;lA!eOXI_Pw8baTxka_SAHndM>8$Hq>Vh z1kdWaGRdsGsa2=pc+C2s^42;7@cV}e3r?Pn4MVl0{{X+5-)$B(yh&2yj7kjKZ9D)) zNFW>$($ZrEHti68ibcTS%&2sNd!WI{DL4tjQ#_-jQb+=%6F|U(w+V!$F69J@k7`pR zCzQDAVFK^n0G>HQmJkL)gMlPL;Yg)05FFERamfo2lE();j4i-gNDC)WZ7X_%c_EcJ z_9!%{xKyGX(;-Wbbze?!Z2%f)*Yj3glY~So0xfG1#@JXs8K?Wo&fFm4KNaXpO-pL5 zJdnKKg!dCzVE+K&QRu^C8CdOWsOvJ`Di7$khE^t`Dp0K2?HLCO4Tm_)B{)sxrX1c1 zU!o}NCPYR-Kmt;5!Uj3z5szg8-+ZPf5I9VJ2?Wq51sqQbXCn$c9uOiVWJ&{LfdM)6 zK|aU>!ZJn?GMF$>APQsYDxKclm{xSD`yr3!KTcI!pSpVmTGCw>wHRj)C-qQT_@|Uf z3F1_HL^(|^!6Fb)DN!e`l$1V&5fd3)UCgeI&&!3%r`|06Bd0OfZhDG-OM6X_i)7AFa3b^>jU%3R6xK?3N)eu_JO zDJh~G%s19oIDna$=@aXOQNoLk-qGUKPDP#Mn}i(fvve*Hq&P#I9?XxPpd|_pc-FL^uCi;KyKI)SC)N8((w&i zfxEY0dtp(_Pw@5D=9fG)9!H|})^>EP==p5>-JZ(o8d}k~^^l_HZZe=`=h71TN=`qD zVB_Y1Nj^#;0{LYk_sk#UrsEC}$ zKQ&V0Qnt2pyvl>&Lmyqnu^r@DO{tI^C7Si(628 zpU}909lpy7OZYx{5o1o7DX6PDM*nHZL5a*xnws&T5NZ~4u z+;~84#KMfp#t=BpRDh1MiZ<>Xl2pTp5&cvF>!i!FfFnONbdfS5Q|S<=C^F&7J3<4b z=P2nUREMvkP5LquQ6W$|1~{ zl=uk|j7Cr$0R&0UqDE&ayCy;i;R9^Sl;J_9IOM4ZPgy{m>EneaALdaa4;e)LVHM;& zZU>u9oxPy`3a^A7@m9SmMhGCE&06u!E+{{+!yl5Z;5P2m?uq2IDvxyNz~%y6lsY#O zp5`)>t5iE$(I!+57#Itr1>^idc~<*UZM`uR*kBJ{6}ydkrPXsv)t?D4%yO(~dQ;h5 z_xgrjPr%}5mghn&TP<>|6`@~^Vrs|j14%;oJ-q9B- zT+*Y7ljs(G&ZS&pg)k?x{{V&Fr5aY2^=i}vxs9Bx`-hj@+5jLvp7b299a8@O-jRmv z%aq8d`-5)S4s+stmuq`c>-Rl`k~vRQEwgpCKq0~AedPwV8VsXJtmVz^W$Kmw(RoVL z8G$8f+&{{s;&4jM(M16#MD2nmCp6DyucT_iw37~3WxNgX6c zApR_HehYEK_meyz%hBHUUft4ra_2*SOFqq}tD4v?sMCkR?aL1+)Y_@!`3X6#z>99X+luki82qH5uN>_EMTTpB36Sc$%T_6`g5DLce zV_bBG?Iae|1qPM1YIh8CsJ?dKqUMNucen4gdA|nT0dZc7%=w=aev>QJ0x}0kBSe=| z9$?5_Hjh;XPST{-&IF)U9@;d^>X>6hlCb{QcdOTRJ3rmqj29^Qn(Wl8LrrOo=3afU zwCt)-rEc0(WHo>Z=@p%KYo=*z1?>)~MEp`oUOBaHYihn`oWdUG;5P&6w>1aU)^%D` zX#W5RA;-`_UYAePZR{xqQ()cMRUS>gBh{?$+iiJGvU*;-Ow=iA6bsr2b4)p>kXAQ| z^wwQo+Lpk3*x(Pih*>@gyn8jOwv|jd%!u_OR375u-Ir86rwm9dJN5;m=+viG#I@&e z0PsT8oP3m9#$^Uw&W}J_I8&HqCq{jjkMNbVFX&&}98|$+^qF5r4F%vH2!gy1g`4&- z8(vzI4I-mJ`p7}8;X6xf-6pMS!*x>cDgME1J4Mr9O{{&eBAy5Pl}p2bQoYt~;sb8W zhses@cRQs9T}=l}drKQgvv)Z;{M1f^r@p8@QIK)ywOj+52<>sYxMiKIs=V=(9xuji zr)y5uoxj2YY5d@>-Oy`MMjbCuW9<7rlDdk=sp?zP3@=9s4*GgMp3NV zzi0%GL0nzo8cw+zemEn_TD)B1jwr%SOq>An@<-rl8h>Yqj8UKlxn$ z0AXqrOtqoIunPBpjl3otID{S!+eN-(Y8QtzyNHFx(VCu|>ZA&UcYzDvlbA-vNd=&S zittwYrQeyo)hYl_eJ<7RwFJ*1Qk}Um27r~0>aZEqA=L) zVx4W);-yxzE|T1-)Yo;3XS;Q?OF0|5TPp{U!_)wKpzv#J|ZXJ{Gedsh(V7CoWOcP%^>`{2sYps@|14_a^O|9M^o-HO8NBuUIovv>PiJ6H4Ded!F#a|XmB94!a)nq__o@Zx3|36HCph^-pDt> z%#4DCUr(v_jW&%@$!L-2RgXjwy0@i$Y-rbPw2#4g8;0L_ZuXnlO3#F zgvt*Osp&UXI`O!+os}i+Bcls$%Tm-IMUNDN+HmdIAmwenyP`mZ_AoST!91V~%b3Ug z)7V_AHI*J5K;6df)XQ=uLDRTG3RN_kHCpY=l1L!Wr`1_46u@JI!tF8+2#(h$2_W(b zMGXbKaJn_pK1nzhhyw=+v4RVrm_#wuVKURZoT%@l2>sw`_fWaGZ7NdI*B_q><36 z5OH^j>)c7BM~-GcvW>pCsXU+gXBK+3T(;1~jaPYNdnz^yUH<@;Vw*2*tzAyqmTB~3 zgcz;VH9G8bYEZ6V;IvFGl&I?g?R`1~hju_()OD)#*jrxNyZuHMgS7(dYIRuC@p1v- z2c5XE)f-T~)Ss~M8ba+$M%7ty4Y&c06C}^kZdALts?Xf9-r%kct#eS2@wED&&#R#7 z6&bu$V=52g2cOMx8ZAdyx~1jJRUCFXTK-m{w8Q1UM2?+OwJo(>Aoc#r4>>`$?4tT! zdx&;ORjM(KA+(F0)5ce>XNRns1Dm)zxF`Fr<4m_^&?$i(j{g8O9vXu#ywEAJ;CGP< z%j`85yqXjrwDSZnaLZa$-b+{rE2A35IKTo>c&k4S++4qN!Kd?s{Z@^?gy;uN$#aL! zKdSVnGar&*kr|Z+JueN|QgL-Qf%7x{Rm*!SHqaO#A7yiK6BtPG!YIT*C`D2;l-KK@*UY0}7_AOjpxf*!bE(2kI5Lm0MHa_A(pE!2FRF^cM=Yj}!aG zxPlgj?DZ=nN^zxGz~RmSk@&4=GzXZ>pqmUo;=m&-&iGy7x|QV-z{vd9qHG5Z-38`! zf#i6e?we1-;NsGX^pIE}s=B2gKTmvp=Hx4mGtVg&@1*9A&{eUk=3BI$Kme}iwNFZD z-BywID)dJ^AV8;r6no(@#2_$?LLl;k$_Iil5Tn7ul%O)AQ#>SiL+z=#_DIgGp`aqC@1sxzh>Fk6K zQX?n=J3!HdvnW91BzZ|B0Ga9(qbVkUE$JcFaj?jSZ2_XYYGKA0xLTMmT1u?=q zLI9+nNSvTLN;^Vm5)(_b0y|8^6*s|9 zI15pliQzg1D~x4C@|`dGhN_DfT%W~zZx6b3sz=#)tE2nPy&NxV;r9Ok$Wt8vWAj;B z*f21lcs|H+C$wd1Fyix>Txf#o?e<+N93sM*bz)m55&Eh|i?{>xQFa7&q-0?9xzvB+ zR1|KchYv+(O3k~^zxP$^=1;1zqtDr@9=CsVRnOx2D8VnD6tGFc0z{$`JSh(S6iHMp zN{Jav;VzJKIP?&>zmC^;kr4{JqDenQ99_b#Tke%*>b1rxnB*um?47pIVpX0*`mQ#j zC^9`W`L5jiBvLJt$_R!gM0YAGpaUuQ>W%_@ln99lbfk0iQ6~t9kBV^+k!Xymv$#-p zP7zC}NTy{Ojv)kd1xlMi9LthJ99m@p0w#G<1q95fi9qu+Dsm5?QAkP&B%euifF=<+ zL}4N7fzDG2c9#YwP)Re&jLA%7AUj7%6O_UPMo^i+2?%#8iaOIz*f^GlPw1>z39_Pk zg-67fJ1iMZoW0P0C8uoA%Q`F^2B;H;0IW`-{6?w(6j#Z&0`s@UJgtMecLn*$$|A^azhy=yn^z zgd&J*DL{e;Y3>9dP=Jq;J4HB*B7F`M`Y6P3f%1Yegm4ik5W;6L2Ph}eC^_~(Im`k^ zK58s;Tz(g1FFE6D$J*J_r%It~>K?hm=isZlw-hRh&o3=>Nkn>}B*$tMUdl}`sNewg z;SYGE()WGV<$U+Vy47p@mr$nS+AT0Z?G@{5Yx;F52D^TXy|$ribsk+nOSoS*)3oaP zg=aQ{C9D$XdMlb8Lr-3}q|=S%raQq@eJ^ZbV|b%gsis;n)JXGc5CpBc>3AO++?tx3 zDVf_zraj4p5gU55J2phK~nnW=fpawx3>gRm>$E`d)qsDc2>0LG8)QF%a(74G=^!mjeEc~ z-X+J;RPj!z{{S!S7P1S!#CNg|_54po)#{2ZCXFWj@8&Abovl#6fJke|;bdr@AM+?S z;_#N!cidnkProZ8UbLyCUb3wxk+|YIRDA@*OrmhJv>V^r8f$73CAcMMcA|waNH{7W zVKoG|Pd}22x%$KjF}=tLD->jFln`qLAe<5ZIHDoWbT0IY=~@B5^;00r?;{x4BOMVGYQI2R2=jf^k03 zj<^HWAS8T~GDo05iOiw7aUQ4*z(X+P9!th!%(-Cy0PReV#uYyZJ+yU~QlE+K1zhof zFS>m({H-Nr_+CHa3U6t^X=zrtf>NDu|{&8e{Rw^hbd)5`nUvAj)6{G(ZXN*qm$G6Ia_B)5>W1^^oF)d>d{`c+7;mXnZm#^cflrx*&G$7b zRCOw2JWs0WZ$Y#~)`vJ59>|V#>As+ItA7xPT^(~m&e_aqI2azKbGWEmP`SqkfV133 zmgJVdN&0zj1jUs2&!Xu~#Z1zX&kBakx*Vt^4T)E9Eb^;R&0OU-Yb@EEbiyc9`%pf9q&R61kT_ zVAs(I%D=$P630Nd&?{JsoEkz5`k*J%9~F&^!hDuS;<%;5Lc~4tTpYGo*1SStXb3^E zV)%*-aTk-=4M?FKQiklO;b1G+O9U`M22Hb@Bh=v2@uTgZ)(r8_jn>1zpLU7PM#YZ< zne*onpW5=_@H1%X6Z|qtm zDE#>=`gy|g{Aor=><%@VfB2bsfU+kfE~j^VW4 zt)x&M92A@T#L23y9n-b#c^Gb$+cAu~0#1{~iLn{RejxoFa!E7hd%!3(_>4=?At>qO zLG~@v=g|{YFOTgV@nBf=Nt=6MLXnexX>Z~>`9G0>b<=T|8tt;Cxf`F~0zsOqKj*HE z(FCbS1*+XwSdM2x$pMEf0!9KAH^Q+$!iL|g)iOqOq`HdJC)5c zL>T$~4TiS-4a&ML`%t)kt$wSKzV$G$PHN$oN4k)bB>lu$KfdY3S1QLa^&6AY!98@0 zYXvdzUL&KfX+_JzoQtJS1=n}~$9m57cSVM$A31IZ_7Lq zo8f-dx`Q%SJaJjjimEw$fkKUgY`mfRiU~lrQ%mHCzwG zw=XZcD3+9VSXVM1d@MRK5`^75c!;_!t9HC!+ZmdkFhJa$(%eu_8EZc6>uEF}tg-^D zH^eYmQM8wDCrVBc;4kBPQr+L|zRE{g`r3TI;YEqZXhXtn>hWsP zoBeRxV6}$ELca?%4a$SXzO^yLn^%JTD*d@s{?>N|d3i&3xKm)}xB04NlaHmM>I8Ls z0*z+m*GR%y6!21BDTtS*5+Q#VUON4)=uu6wfu{~HscnFUPtRhm!}M!OYJTIEsa@In zeC<`^r&}e3W0p=UTarc+YZ8HaoB{mJ+ocLqDpFZc8Au*>9G|hvOg%+N>h2h9Xu0x%X0N$ z%yHC8=H0ut@Z57+$fIn-vEs!No*ttpKaZ2kG{Po=LCtY5;(bCeb{ig+E zRPEWEuN4)544Uq&Utu9(>5h_zh_-aq5i8iW;9l#YpN}+Z``+PmT)s(JXP3ZSWk!2h z*#`%sN3pt1Ka=*7Md5!l5{hhHtIXJ#VQM3sOB&r%^_Insvyvkv*Pnq-ZR>ho6OVkS zD!s1zGZZ>p@UE5<6`m?*!nO&2bN`$_d$U@IF(?;v=J?fU!16zU^qFSwzfQUOE0Jv5 zUQ`HfnBt9XttQGKyQ;M=((4q3XMYNGfTDURM^8h9$Ur+}mD|z-5bO}{f%ucSLL+4c zf@D23#sK7&8YS338&;%0RzBpu5xQ6INJ?ZmHRio9CLA)i@r$rA1UoV0%}@VaTYmt* zWu%bHAuJiU>1Z_D^HJZ&{Q=EOk*eh_zHO0g&b%^8f0dn|?Ro7t;?_Qsx({rA5qqRj zR_B}>X-dphIQc?$y~YuG$T?_PyXSxZmrIZ3t~6?DeQ&$Q+@SOwG3b$J5SG)_DYl7r z^1%L?gK1{E{9+x$Pk(UX?CXbULK-Wv&wQSH7Fl@UC~5QaFgM!4ug+hbbxfSHsXi!6xDG4iG%5dv2E6{-H#Pj}iaW zTtEH;zppKu^9T|I^C^p_0;=nX5zqMwm>;BO%SG4aM?ME`gy`+CA+nS1V*62ryXL%Yh@v)RGctBS2e( z2z6*Ok$XDbkqh+5Dv8FPMS?*Le>Hb#PiNFJXy~+7EiP&yv`1BHX7`%*%sgR@CGwrO zL9Vx~x4B$zxLQKSe*Zk>Mj0_cnq>R+c;>p}*97WY=JIkBuLAmy)FJl?aroEcWhFkY z_tb&!^Cf)Wz%Dr}-zmdJuzz%}4oJzA-p}}e((^0zsA{(xC)VoCXZ|3FmBhn5)4D^F z?RnACYgo^;5=8b;nY{tQEqrs}-WcqoyOBp#N5 zwgvXtk`rWgWN(#>>BHiG@ePwK@{(JV0Ok22+L4orRX*86D2^ZW37ZuVJkiDqc)NhX z4nZ}DmjKW5q0W^BS(LGAC^P~M4Z-tfsu?!!iQGL@3;MhLDpKQ*dyD@9uirljYquigV&q4 ztM6HI#}zsdV1b|0LWQn}9oqAPo1Nd@{SWX@D(hl6)+|9lJlS2VvAxXGvo*b(!|_C- z9bf!dho*Vfw6>?U;;}QY-&L7P>hR_<_-$S4FwQu4?H{5#Q#!=0)&Uud`NL&>S6$m1 zNcbd1C?W}vqrTg%d6(Ch_I66(MX_g3B|k>I(0;!Z>c-EnWLa)Xh;LR6T5z>X$56zh z!~ZV=U{ys@`m*jwg7Hl`2=UmNbdicPS)>%|VT)e*)@mn1?mE~*vIvzKW(2Bn4}l}P zprJ(zghF;6A{G`T;YN}^8Nv#IscNXGMU;z&kx|p*IbiC|V4ep_8Oy1QqzNe`l0*)m zHD!-buVgLC9>_T|6i?1mtjont`9p|;{|GNToV z>f|u0K?(0+s~07hzcFH0ZjBD(N#jVKSNrk*17sJ^wL4V)6fsbdB7GbhLAxa$I(eo| z6oViF>KO0?5|XDtI(o#A19%U6N_hU?;Dy3w>AMlGo)U_@0VB`}pf+}hseU(^{_i~z z*Duo_wi{^mOT^BN+2{T`kiPP>gbNpBUCJbi(fQtS)O<-NBA9q%dW4^Z73((9{?HIy z08Y`KqXEbHc8#@qk|E8k{9D$g?+R?KG4V&I-H?x+7UTnI1; zSLEd;Uaqg@qV(Z;yINcSvvJYe>300#+X5W8s<{M%JjSm8mwe?fcJ6cHa$IZc&HFWV z{+yX~XxAtaLM>XpH=W|rcY-28Bwsv_99LszXv{#A2&r`wq?;_2U%Z)DUkt)I~Ai@S*mD6Ui)q(lfm9Hvs44SN#Pa z>m%8fq7g)mWp^^$jGK`&KaJo@V5d{ucblBBdNNRF?_7i7pT4?p*|juvVx{P{yhOGZ zjKsFDdFUh?e@&0R2|L^Rv|KN`25;A`lVzmYWv&VD(T5g3=WFUt@hF4477GzYAQOy; zo9V-N!0H1CRyBbT^pmvH&@!?z?l8a~$N>b&L-;rTI3-<`ykSHwPY?nce*h6O&&e2n z*NjuB*$_=ar5DyN2Nvqy@81~MZ2Q?(CdVdFA;$jAhzWy;=$r}vD4Rx8k4#p}s{;QA z1=z(2(x$*CMZ07rig)P3Eck!OAxHV#{E+<&-BF_mZ}|$j2ugIx@ZXQ`y{QP6r-sL8 zR=&u9+CxjzFgEjZvpd<^{{fU7)VSNo;JZvr1;gowOAcz?)vp3+*>j8=16^)M0|+UV zD%OCO)ZNZnsp)2dmDP+GjB=a$Erg#FEmHZ2%;Yxsz|>7nt=z$h_59t|jO*5M4<+I0 z^9fz+fiK((D?>n0y%pKYI}tBlVj*&ZAyxA&ff%WD`GOfSk=eG&JxOY5zBeL14ML04 zp_yD7h!Uhhx#ria174Q7cQYv)UFVh`kDl@ybbcWDE+9qIqdN}~-lO)foP+{yr1hGM zohBI8aDRja;+@{t@$~gGeQzgWck9nP)vczEE1zQ~4Ix9G@uicdwpkbrtQwIDeVSFj zE;db{&bwZU*J+QCxqcG-2!H>Ogu*lh$mhP_Gj@F2D%$cv8Ju-%q?(^f!p`P(%_*6EUm@!Vg((Bh5=sG!pm`kPjY z$P=JspzpKAY({uRL&XE94mh_!S0qn9=j!lKWojcb}jKdq7;Q)=>&DBQO4Oo_7NnC zP)`1kAcu=&msk3_rGLrZ_#_kfjDN*&VrY^KPJUbh`giRyPjW!tKxL_e>m1QBroX!EywPXKzJF_)T}Jd0Y%(1Xtv zD&PL3S91|Vo;($@Z~VFJY+b4NKDOR= z`~JnG`9y%G5Wn|ze)Kd@D|qW^W5t%!CC^P~ zmXZpmoy~Lf*EL~%Qko_v%U{v2M{=M0Gv+8z2lH`dZ9YNukp1=G_rt9_<%WM=jnzzi zS#8{??Kut`bS*(56kdJuThbIHM-u`i09l;d@nME&Xj|~#baU{+3x~GerMJQM?^tO0 zJMKFwz6T!&-!*#tgdT^Y_{~PDz zA4%Cq->!{)#s{$nYdAJ4;cw%2HNk+vr;3z5M-=AN9=N}Bjj!)JA60cs!djy^6reis zbFN`rk#`wdG@RuO;0S zpd3E$`Uq-dYrPYuk>R;ZQDSQt*DJ;7+ROYITyG@2k6PpVm-*~xcTD;D zt_=;$;!T12oa@LwMyhzH7#LB2mBiiQ-9X5)YfeD`(; zj=rH`*$cJ7AU~nAP|qLw!WNYUP&Gyl2IZJDG!dw}E&XxZ_a7DS#BENQMucW9!c*qUDLPFKF@}pKW$Emi44#ZaP$Qn9(c)Rz- z(&01sc&W5fpLio?H7SeQX=o+92R`WVSalV5&=QdKbRl}Jmdc~|z~sz3P(IWw&m{q; z1jREtfh`w8cO>6x-@Rz{Q!;Wkb7}Yh%jEphz1c$*D5CeO!fBi7pn6$aB$;^Ozvp^E zu^z6X=8_gcQfEwKY%_Q`KYT>KpLhlJqZ+bB9v5>)1f-o;Ot>4*`PM>}X- zcYndgG00iB zJOqn4My5A1^*#mFH7eemmPv?1r5@E@e`$OysTEdC55Y=7VCBDA&-LUZ$l}syI;;ih z5y>%|m2A0|t9n{;WOwQiUJS&TrXfb{I45M!NHh9^tR>T@)g_e^n-^1%DkdlX@~pL+ zbFHcwQZ>bw!ab;UyG+PnrTP|w23~{}I`Vu403*Ahu7-Tbtyo;t!v}k_Oqzm&#~*G0+K?(HB5%Ij^z$5j1~-yc>hoqnuuOrFI=fP@jIMq?A1W{?64^L5Pw6yWTR{;Ki)`o|@ zlz&|93g)oRU6WG<+YP8g$w1V4(3CgSLIN^dxKjjMonW z63A|$@ga2Sj{w7Hi@i;f|DW_~c?aq~D+UJtBMqAdB;k+u4KGy1^c zSrY=Fu2>^cBzI+YhHF@)1=&S1=YKO+%#;l$6hYNd!yA8Ta-SZZixtkgx2#=@wW;%` zEAY|GqWs!9K&=pk@+UrjQo=wCUwVxqoI_rgPJ&}l4Db0eQERYj*xiHS4?6^y7ztD; zZuyp|VuD@XPBeB{7Cz#px0yxlvhl`(j(J!k2LG}vJsO$~^|LYCP$=eS)vD;htmxrX z>GQ0G5RkA!`;-XM<&z$okIF^BsZd9}xLdKFKpzJvCL5YXSF%VP;erQB5PUuR~e#~5@vxY zFltlF__swgT3R-2i6xU4=%vQN7(Vin>gmr5%QR_Gc`?fetE8f15!0T7V!^vj=j_3< z%L;wpAGV)8J*=CU0;arCw%<+orBfvs4*p}Bw{964i9x+KH&z<`AKT2`wDWKyZ9Qn-BiLc zpvWF&J!|p=J;iOB=-GcYPKG?P@$VwbBFvj)qSm3d!vlpC-SK&dNy-SRYlJqopqn? zr2oF>Dzq}eD3qMk@hzq?RAOG~Wfn)Oc@=BDO zqOd ze}nCkqK*e&W6e!wT1UpyfCs-$#hKEgnrQ0Jh0TtX1VNdgm7l)DHjxR6vrJFFTCN6XKN zC3>L?;iyQ1P?j`|lWD7KG1h!x2Z5zNZ+YhDqH5fXYY2-q`y|+Nx?ztZW)dZ_?1U)w6!+- zQlj#5YeCG_@nOrLb~y+Q0gT=VLy{AwUAd|b@%O!eEad7w5@jrx2x6+g`5|9i>mEO7 z*rn6Fw)AF?ZuVr+*%ArR*U5h@tr<@Efni4id_H{(_}e+}M=g(NX-TGtAN#M1Z3?)> zIJ~#-aGJB+cNeSpBj0SkE)aDb)r-cz;`G+vA*IZ#l{M;RqY2I-%IDE8a{g#rty2ubav@uHr7P+tgVQ0o$An#G>Ky^v{ca6+DZQ1`c6HLZrpT8-eZ(DPgmJ^JS$KQPeAH6K9Qmed~sMLhAd;8Yz@Bo9u6&?0)%DS z11>`Fg14)bSe&@>zk~^8HGmK?X@HI@IuSxEaY#?_HE?&7qTF}jvw&Ryzl3-x``{45 z$%3q(oQDV9`JLTo%gQve22T3%311DjmDP<=knXoXWYKR@7`hY#$0ym zA2cSrxoIGk2L|$Q_zWa42)>9mtx*6JaPHO_KOy-4oas4(^*6D@2xoL+jNf^4a1C4smaS$z~tPD-PQo8Th+SY5eg` zxW$)F@@6n&k5j`Nsv|!t`4^6nZcl8d?pCj^O8ki0v0Wjtf1#_NzTTl(X;fP+u{ypX z2e;qF)>Q2g;?PXl{6DGA&DbzeDoBy%O&Ftp9cpt~cc4wuy zzfq&Ps+B$^j5!!bQq8!#@~FN@Po{1-nVXg?wm&!E7Y)HeL+ZTj*+=rbYOcZ^Gg|(V zTPI141xz@H90hiI=OxV)c^}gh&m1)lZ)aw){df`z-V6tK8RxuJ($35A&ZC)Enl(P| zy1xJZer+|~JW~rGV0Z^d9@VSYIaM7kS}S^^^pSk$eeK@DFY|q-vBAHNXc~hqZPf3t zt}oY**k@L{t1+8jBP%Qozc!V*tFOJI98mF7AS-m5-#51Zo9)ICq^2--xBb-Q^mMyP zIpBT{zHiy-hw~7Bef1jtxjr|2Q#;Sk=Q4qn73=2vrvC{m^e(eRaIMb$7@mXMSh6e| zxA|tw3bScdPHq3Yr>&%2Z;<=kTknupLCwr8s8DCM2$r(L!Vk_niBw(MyEr%F?@w#r zHKDFE+cUYmI2&O%Fxy>|7FD91d7Sh84e%SIfHQ^aj&6l+_t>jR{+X3?e*KJ*F^mpY zEYux)6hzZ@ZYK5#V}#X&Fq$a}TnoS9mwlYk>|-3_8N|Wuz4f}<==dn6qpf0%o49jP zFOdB&UEFCd#FIETqeV^CCV>Gchjw=3c}V+5gPnsndq`Ogsk#fHyquClX<|bQ^cQ6` zv~H4tJ>bvJl=vuVQb==w?(i9CD6|yTS?q_X7eyU$@if#Mg2re*r0+wxyxtV{03>>Q23S5IK;7Vh2`K^__+EqLOvUsB%lY8z{vBGN$WghP1EDpj(bzjxvnYO zW;wp}JG&`6ILqd*#s$2w=Wrp@rx9T?A{>3i%TxBtVAiY6J8!{R^`LTke{t+1V?(XO zV!$$0=c~*w(_tOwbyeO3Z=LWc$%i0Jr9%C4f0dl{e6|^_WSY{W-LU;jVgTGXW93J* zNPO9b$l|+}-Y9Mb#?*Qzh687gVONsxB(d@6blFWJfXsv4j{d4@poe_nDiO~ssj}Mx zlPfB*2c*nJ6F0JEN3zG7o#d3a4^>-c3Z6fe%~de1nU)N2mMLs^?f3Wi+TWDRHYW*S zXyve$1gsnMwhn_5QwZgFm?cu3Cp60r7QaepWdp@g#rBjDOg5k0%D z2}N4&gq&kqA_9z{?Kh$!^f|WRJoD1%?4zop(}8`(dRjtpbvEg|>l2h5SZfY$qf46z zYXFaAOjt}7QiGPvnpl6CUU82gohwfwY?VO7GKQhT>{x+$FpV-5neQ-E(kCGq2753? z2bZAVNuz|i%aFmMJp^X~VIfC4bb<)(Hf6FN8BGPOCxjGjQA%nHsvrXj70@cc++)u5 z_%u{?=;&7ck)x4R{dS0eeDRWY2bMIIK#k07YvVDn8^@bUd)Ggb<;3AyNx^h&dpdq4 zU$get$rInz_&3dtC=;C|>gYKg{zQcjpMLMDk7hIfv97z;spl3#ZCdcLf3zJuZNKuXI1F&cr`#ENyipA zgzB*%V2T76FOrT(a1x&8j8sqCB5cjYlaK-t?I^J{U7>Mx2EZU;t-b>ZC83YwDFa5U z!nfmi#ouEfN1GY8w2P!+2`PjL+-2j?v2-i@Gn2|M+#{8Q-B%G6yjoB@2Ws4H#p z>F4&k00VbMv;kjAvERd~${kjVy|?pLcQx@^B6KY?isg)s5nk=Hi9>E4XK|*Fh=;Sc zkf$a;l}mq}sh;4|51t$U38aI}EdMXOR+MZ%0Q2du<>@u*Dl zHm9P}>#ioU4>R<1>iKo%b@HvASze`FVGcf9e{Ca8$QzQnS4!xwqRp$Ek?uG2i0!*3 z!8}d@S8x87a?{A&^gXr6v)c^M9^`i;cpL!#>gv1tnWb(_DOtAAk6S|o0K?8v$3*Zo zvbU$97s>QJ^eLfe47ZAC*UNOGSGIZ+nNPI=p*`*q?L9;iX+mJk5XM&;>E09f$}k1} z1VJ1Uos{?10;d)c#x8DfL~dSe1R3}YX}O@UF!bRO`?84Y{u-v|%>fH#)d$@P`@w8M zMmF>0FW-on$5f-q4kQ?kTYn%8Az{#%2;%W-p|!ZUqGb6}z10a@$I_tr1}aupP0N9V z_dPR~Tl+>X9JcZHw@iP!QgGcU4(B}siLCJ7$+ zv>5FUY`jlSgRmhzU$E^~<$6t3Gt8sY^DB;i>a-_z!K$WLiylbZTG7G&-=Z6_TkxZo zsl-0EM$-;CUfR-s6Z=sAYLcaq)O2up9Ox|SdRX}RBt#zT5t0RgqO^JCP;^=1G8&%U zTDCy_0&l?wy+`*}*wuY<-7Pl`XGY(Ms;+4yyL;->MyrqI=q!y_|MyBJ5{6`DL2XKo zu^yaoXKiasac+HobJ-h12TEt^Z2bvHXF+Ax;zc{l*?K0fvTvA-l^~kxHBSQo;7hBj zj&Y%bRe#h@?ah5V^|43nU*$wR(%Fmv&H|*NePV_E;3u;Z%7lh}Y3h>3p7nUPLVxT| z3bP&HSC47b?2Wo*rfUTzswMFl#K0RR%lOu;Pw)4=m|N0P4nZC{!p zo-TFd>94pDjc~^Yf6Ld9-6+Xktv8iYg6rZF@f+?`66DmOlL>V4|4MuFiiqhUaXdgE zso}6EnHJXOT(coqMIZ*LTvD1St(->1FE)h-tn#b33YL*YYe!ik9@Me0*ReHHvQU8+ znc{2yD|(CMvD;U5d^9#>e>bAKob0MwY+e|o&-qa+Vkzc-0FNXV9euUUV$d+*oYQc& zmp)MDh$9girq(A>)8(u>pF;Bkp)y-Gj!Ylw>!y|$>}@P`3D;S7_bL^0g{2GE-D1v^ z{f=k>i)Xur*Yzzl+z4_m_QfNH+0)axFSiWmj`6o84Vx3};8u~uDDZ;!yrJ)E0Q_II z!s^77e;UK;1I02JHjWEQ={=kivp>n;$+D%oUa~vs86ni58H(3$4b;pjk5$~2K~b=Y zwNyLKUWflNdqg?PuaQ-u{lOLZkkVy`OAhs;^SMB175;anfwN{*rklmX-$lWe=amga z9>&)JrUp)$<9(`uNuJZrku}fv4hj62?dpOuvy^niA|<96l3+8bCgC}VvX2y^a#^>o z9iIdXHxuP9axCB5f7NfPg%S<+X zk`ebY(di4Ii163iw(=1ZSKl_c>L0y||GJ*1Yyj?6=X4(Uv=5aM2mWVRQZd(Fx7b_< zRf-Ue(l0`1GvK=jKktUznh8fsqeZff&n2}_A8Ix_&vs&{N+pLj>ovudUy$r{IOsL& z6k)FR#&M8G4d%Up<%TUj7O#RCJwJbz7pGE?{t`kyH@+QuoRESRe$p7a4%^wA8+C{u zwZECiaxf--Fa#TabpJiDP0LzKS?27IF1MJ6GM9Yu%`IQ**vtTQRAgEDzokZ1BCRUa zK@KLr-3CEHwqR74fVI|1n(k*x=N&{Pm+C9pUt7fS;KG8N1{rvIgwDOMw6<9~qo>A%Ar@ZD;Mw2rn{ z6~>-~cz(8?bCT7N9Ua9l$pB1h%Nm?4Deul-ica!9xDg!x3N)K8t(4$|jm6w4lM}@_!$4)j{Er7vC>J+l431jLR z&O_D13BFAP;tpc$EJ`vyBq|V07iJ|e7c}4^S}Awg7%0Ob#>F(%%i=2X+3{P<=Dii_ zNNv~WHI*iWDK$5mN(oM})RZsl49rSMVs%oBRxguIXO_ef%U9{HXIhlN-1K!D3MW~3 z#04Y@0KW-d+D^F`IFx!;HbTsrnZjheOZeh3cLpLB2hQe=PG77P1U=*0w=khQ{mm#S}^Tc|R4#YMWYr+nYCyPq*o zbus@uUh_>B-&?UW#67w$7F=%>yrH9iirOX94B_9t#TxocBZwicgtk$8r`_AU==$3%-Y5Fho^@EkiuXq$N3^}#COKwr)?cQ zkAKdEl-DD2Ezf-YqTWPhuGrqWgd+9X!pmx)lKL}6nW=bdUH#&PMX6b?)f(r;vGk5f z|FFpizgtY_YdN*MYsH-2aWb&nanIN2VMiQ)bx`%%WLdSX))!*N7ExzbJ{e^d2Cuf4 zqNIH(O5PgV&qJrcql9n<#v?7nG)qyuneKrSZ*Z~hNg!;&iB0$VLgh`iy||uo7SONx z@6ZuQDi+gGPWa|%)tu?>2#*US@f90>gY3!$4)l9daPMoquCuH$TOhJFc^pPV zE|&$8`3(xF=ebaVc8)DWxW%z!a%SF3H~krn{itP_0F5K3c5SNur*l+2Dtz>hIq{Tf z)~k2b3ZM6@U%X+QzaZHy$6e$+XI6u+laKlb;FGkiY&MzZ(%l9eE`D)SajR@Jii$O+ zYrI$n>!=aef44WozljwxDnr+3KkjxawI*$PJr;uZ;Pc%{G1z9P#ZrdX1e+QOkpQ?v^OL5tLAvG1T!$x=E3~Fj6md z87EO0SZ7h)-BdI1RDU=HANQ+KyY~LJSk+alX16R{Kru_DX}U1y<6v9JzqdN^&+Vr1 zr^nS@iQ_HUqo1Td!S;srI(ua= zR4`3uO*h1e-oAoe*EQyFh#S08v?dDvTaj&GU%;R>bgtbZ zuR*2`lo=P|BA1OIJxp$g8eE)f1N<(LDG$?l>UdTMne9R41_z)xbjX>3JYv9}R*qr z#q`uMuis8Ev@72$ePx)(r>Dj>g>V=Zcn@BWL-QznT`Pu9u^lQ4_+25w;48#&Wm7g0 zyqV8b6%0m;X(oZJYK6A&o`e7t_y!YK2345XLU6s&Q#ts<+Hh=bV{bIpxbj_eiUZFb zY90?8lunOP4$L*?S?2y-EtT_FkzIs5RI&p_1J&Bu?IeD75-qNtb&0k6idF*3?n!O|!3z!3%o1<%Oi|PAR!o5=Pjpq( zHm1pi4w3NUjNdR0ti23I9mWqqlhWrQ4s|_9sSSJ)chLfRobU#I28@xhG^&}#I(#qIMY^DPYhNTxU7!?Q; zD&j;?ryOt=5oQcEj6+{o zvHzd3*8lugV|cDTUyvfwFszMsY8}t_PgK?LBfa}RF?Y^1pVqwt>9;z*7NW!uX2<(< zgd(rl1X|WhScqw$uzYp4JRurSu)V`J#r`2(7aY0Q!PmtfQq$lKKGCvj$JwZVu$aL! zVQ{3xn>d7Y*A;dh&r7~}J+lElfLk>CmZv$-5P9159s;`DKl?W!>C#^t_01L{Lzm zA;+5@%9Kzqe~Vs-j7TNsK?Es}})136P`sBT0W}q|qU;?$5rG>oFv$2!WTQ<{ev*97Kd4bb_$UsIn8h$h2=yd|!H=N6DLh}|VOSt+6m-IYc6Q*k z1vQ1p;ygL3k|Sx)kg9%L09y?OI&Nj45T&is7=U;X2b3u^dho5&t~4x9V0FMP`q(S<0W?I={CKeqqtB%M8D`ZiE%W zqa+L=zVu`s;#iv%={){bLvH3tMrLWl@*R0xv9a@`(xtYlt!-2G`LF9=oDqL+Z0(&- zf3l1MBS`ILU+p#9FgRSMQs|Uqs}wk+iP6KKiY}^WU4-3qpkC9W;rOdYzdPEgNq4@T zM(7J?djM!h21zNTYGg;&^h!oqq1-0snOWHg0k`?AH{|=^7y0)C+=vivC7nuQ+$sM1 zllyS4LAhs(O>@b1C$#A+pPCz#+`T}13TgJ4avuh&NlY4L87`$`;J}wAe~#FMfK>OX z)f@J#R_Ly%Vt`J1<%>px4mXqfHYyK~L&&o;$q-Jy^g^2~YcTBt%|Cf*;%=FsEv5|o8V0Jg0`4XmZ=OlfeOeESky-aAUz=5 zBlUA~OeDB{T+Y`sR(U{ybaZ!j*Ho-5ye8X6}QigMab^7ORJv zC5A?G!kv9lnVE819I*2@3J);a)^RObBB<^G7F~NAv;Js%C><}gG?GWMtzTced~^*|w{Tlf|zG3EUJk7GBY1c3zA3Tb9SVj|74lf8%9po68!IqUq~Z z1~vs3;i6gT2M)~yoP*RF3qwI7CJ<+2=f8{bc+5HwENafC5adVuH!{3r>9Db*niF_H zd25QD0ajIz`s{@MyT>W8f@?O4ZE+h|ulzZE*s)vjnV1c{SN~`^x@T+(pD|xKy{l9` z6)o?9)z7QU3uJhY;mX!GP=by-xD%IB2RZ6+lNV{Nb*XcLq}6)JsAVv`3~VqVb;!Gh zkmURXL1-3Vn)Hp>6|CshLhJpPq!)EYf;OGf#tkb=1XH_sokDw63s5kERn}ZeVSwFC zf>~SRV~Ihmnd0^58oZU=lGrmNrq*pmV?ZA;# zE^+wzeN4tMUhB{^5T$7^xF8k6F(r#g6seSc*!ReVnnZMF{C|M|m|ek&@!C`kd219S z6(_ zZxw@%o|zI}uJjG0l5I3EBe*u3apw_vWYUS%Cvcq;(I;Z9M8TsC_kJ40@H?tPjJ)jC33eHcjFfyJ>Gv) z7Af_0nfXC?R|8N)wCVgl;gOtYSQ`xOS!$g2_H=4&UV5h{dEm{yq`|a)x&(6e=M-Tp zFJELcUNLtJAH}LFFlj4rKW+UUFkvh)%h?G>SrruSypl5h)7{wC_v6O&Ix z#(h$?V2xi~d{Z|~(#zevgdU@#cW2~mk(D*ZL3& z=7#D;Voprbq${ufe+7@NmLGbkS(LOUmPTb$-){91{)K20u*o)3Jw&CKON24m$c;O&h;>I!2LDU9m(Y@Q%wO6*qMv9aE z&(=#EX548fhW}~H$x;PPs)x|nu4Mcs1-#})hHuxE1p9iLwAVU@>z4*Di}?I=soji< zwFU*#vRF+mo~~RnGY!}WvPG7oo2Ip=<}y-$V~-o&-mjeVJ*qY&(Ab}K_iDd%y9hWg zbLW~kk#RZ>yUdyX@-QKjLEZv-rMM zYe(ADvg}7cO#b@#E^9!o(O!vvB}Y5e#Ygjl74D!%3^C&r+U{^NhKtNW_hQw!z`SPkKoG^_LG(kS*Hy z^%@hS&lN`22RtRKrq8M7AG0}qM=>J4jVS)Lyg{kWOh08Gag^<1S}_!!5DMveol9Mtey{T zjpMH~dzhZTE}U3WVjQUGM$7$hx-vF4RQuOR1j*ppNOlhC*0muFA>(Z}|HM^N6JVVf3|p?%D z@eIQ4;FCDSodZ6@jM4Ji37v(>Gwcv5N+1!`h8$SHFzq5)4?u7VwbVw~TeE{8 zA(-7bj1X%CO&XzWE6j+kqJd)=(h~>uC&wftDM$0MAdBsIp12sbXo`nsG(7b5=lH;> zGFs&+>X#xODBeuD&Lq|{63kzQCC3i(khTktn70WiRd?HVn(UWK53Rti(esV2h2;if z;yaRddtdIcnb-QecqKuu*03v;9)3gmPwuYhlk{Vd-Qj8A|9F(EC_!`tGxbX~4#v@c zTYzh5Xm{EM0uA!~ohIZJzXH?GLcklgKxtq#`BI5OHBjmSA2~gT04)Rr8)owe!P60_ zw`+`EVlh-~nhah_Nf=1^{=o=Eu@8Elrol^zR7ez)_~{gd(iKy90Q7j}(+JAV(uCBo zkXr)+e-KvAY!12$Y(#IZsYZq+2 z+uQi;*0Mmr(++86EF*?tXFZX+ImvqR!{ny&Oc!nTzr`w^CV+yCDGG2tQQz}PMehx&g2E$#B7GL$P_5T3M9l=je6ME74{R$1&!6kC-P23Wp8OlIC&8JMc(*Z(_c2)$mskx!z z93{Sr6xb<7~+rAXt?qm?0=kXS7CExZrOsskBRn#P4B+tGjrRAQh9VG_tX- z?n`!q^b1yz{{WU?{{SihBanpqMMQJ#q(WzG4^(ncE|O2AkS^gqr2#VlV4#DWj7XK4 ztWf>cFfe%i7N9bFgtV+{ z$^?>pr^rP`G@%{DpplM{*pi4tdG>OVE+DKXEeX|!{IsP@_(i%ROsjon!S zpbjk^uS0OwQM9S$h-+G5bJD5#HWX<$A*_rpTII;K(`q}C;Rrr`c*>RQIsF$9y$*+a zM@!Njx=lbyZ_ZXdg|&TF^^#AQSiGlceoAohbJ%>mWBbw@y2)WN4nFh&BzYlE*?8y|WH;I|*}xP$}9 z`N~ako)O9;2q!W}s!{5M`3Mwi@P;>%f;x3Qt*c!9=apx04VPk6X~QUn z0fh?H80v1OWK};*G0zxMEy7S5 zq|A=xK@it&6TnT8vj@M)PWIqiTeNn#`yg&ZPBNv4QE#UR0?{L~q#6LiLyuWcGJrEY zrjaNF$v`HK&`=PgoyoRkNCHgyAR5x>KZ>V$b{g%J=6EZO_M~XM(V{n0kDyOXwR>1= zR?SCbPe_STqW4y7s}e^rv;?`^S}<22ek}B*x*&rG)d!x}^+&er?35e3Xy@Mw?t!Md z#(}9*6)J-x)0AoUq56eeimV1WC*-wv%=(}S;2@|Mda1;OQHW6zQz-2MsMGd$mh%w2 z>sjVn-npmar^n>IMZ7u09t!c+ZgpF_#iWK+sRVl>D%m(w(<^R2ymeL)^(l|_ToWS{@Ne68(M1*sc4t-Eo)Z8iAijx74-TEx; z8Jp?XyK(;j6yxbC=DNb|A>q948Ty4=MtmfCiVnJ6XH>YXNQnYJHJ}`KLZPLW zx$_wf{8pYh=>jOkqJ0u^fTEmYW3>87uYs8f%As(Wld%vJiK$0NVp1L5N+m7*zDV z!n?uY!eL&-lu!vEPbsB|!ef4_nf!eQ{T4#6kR0*Z%-> z;s)1=i+DePQ}CG~RAp!&w>X@0y!Y~+S1T5?Q zQkAQD1`u}CuN!Q@OiBL$MddE_hSfj3kVixR01B19{{S&T zoncVkqunmn%M&8@j1+_yM`cd=B z52Sw%=935Aa=4-{tm|9U%WAecUT?zs{Y#0oy33n}yVZJ;$pfVZZi{032GpkF3tS`Q zv`ESf&neC&22Y9wR_JvuXc8)0Ikg0OF4`UW)bx5cghQV#aQ6$gt3cf8*AyH70Le^+ zh2RRs+9g|eV9~Be;w1)`iRsjSg<7o%^R1rRts|g0R$loHUxlT{r7v;+0E8Z#le|w$=JYi`u=vWg!=8MTSLXs>J^>0?E<5L_vr`KDY><&wd^3Z!a{AC$4kn1XHl)ES9X!A z7;{WhdEkZXo0oyip!u(g?yFh&lIiyEE#5IU-EQ@EDgQp3bTg8XNcW_XkjhM}Gmqdv$0WkipvVW1gI_nab;1RO*p6D}pZWF8A3taDMg6$L zT~0zH(;8x}8q}ST_7J@1gv`~s#?l%ZefeIFrB5b>YQM_DSC{bH{?DyewyDK-Z)x=H z2dK;m9VnKVFqxLRK8bEHihwU`q1gpYGz3V9agb97KFA19FoH3Hqdg#HDuI=08g-Z) z)5>xAqxvAK-9CdTww(}I0D%QrU@c=>?pujcZUPL-0QQkM_e^k+ZzvJv5QKJt8BnTr z(~>20P^*?gqAek?Ab_GE)c_nGlb#7&$uz462!f#OaXyJP*;C%f2_iy)19Y_moTnxd z9B_!`0U=h}wq;jj-hc%^yaEP+(6imV&#E$;}B#WUzCgI32xiI-?5F{lT zgMzA`2#83=*%OXbvf+e8ds2yngL=*r+YR=INSyRpLB&MWN?aHgp+kL&}5Vb;zu!%h=C6Iu7ix_NHCF;3N2|T z2R`b8ag@E3%_sMSd1sXs&N7U`oCx@^kZB{3f)GzofincD8Ezbr^@KnG0M99R=!bAm zqCm_P49OGdl%!#&Y7tGOOgkZFYqY7GS3S%a7;yS6FUb3<+J!M%%BvlbABI8>IyG@q zO}8_F@cjWQxwi84Z#Q?uOo8i!X!Q2jnjrnx;Du7st$NzKe8VQ0gYtwPgpJaDN?j?( z##_<|gYW2p2<pebTggY-sFE)YG_LIdQ4A`l%Tq|!jA**2j# z$^hi08A3ZiAf|XJN(a&iGLm^g0^f>MfkEPOmJmw>B?H|)l9UP&+H!;uLJANxbdm}J zFq9{R9uP!hvd>PzfNUfud6FGy(?*LI=`aa*09$2T+6|0n$Z2 z(Fhl5eG}~n4$zK}fI>kCJdhbYu2l{`9FV&aB>FB<3z|C7gDMW?OgauAt~?T`IS18n zeqGY+;R06&{7#Y5v6_s1O65>(d>+?ld?HHb8edm&>xH<*axIc)3QVF4jKBaZ4*&ri zl?~fL91^t6RS~%RE*t*`tx;Ha1#tV%0Cu#?T9)mNCj{`N(i_kmgvgKRh#*HxnFUPo?78%L z!lhHV=cp^Llt-0V`-ohwGSl*1bez+wJ;(Jya#9?i^Xi`n4|N!YK9ouXpj66%FopK!@I3FT>3M!SnqUfZ!Yz9b({H z+cuyQa}o4JQPIZTS@iuGpPUuFiTM?Spf$qn^{PO9Mv@2Ow|9Iof_p^{$FfbrMD(1X zZsjJs;)Ih#P3{Md6kEzkjy=$MpBCwFuF-Kw66WN`Ydc5R8>d^Eb%`cE7Wx(K+yzFE z{uX6z4#uc;N|c&hGyd|Z^BUH&+n2HL98*6J;JWyCO}n_YHC*>nVLu9^tWcu;MUAA< z_k&lzw5R3JWj(w#1Z=I@ZBJ!001V0G(qG_=G;DgO*8aI~a)wpRTqX7El zdG8Y48;w@DY4}(JKwkR#u(YzNT#y3-`K>m(<4~i!F0D`!sQM3vD4IGQ5m0Bp?j>aDR<&-cJktd260i8UmurT4XVO7=GP zhb5nnBoeY@Ts`dghd^;rHAr22KP2?uFtgZQsRNtFgih-}48 zA=JQt932DMVt84>y2I$O$nv*-Ytm~JYF${ml{f4p^0Is{q*So4R^qg7E!f{-pLIu} ztyocOTGp2mn8*<-Ph(tKeG`Z(1TdWA(J!h)lu?-;$e8CT@RYzPf=tRy=jMV!8Z#$^ zRLoDRU8AJCK>kU}NJL0w6(O|V@ykS|$xym+Z3jU6!X*Y4l-JkPY1VcFWzqC2(L9GZ zp4LW(P7P9jgh%SN4?d_Gko&3-VMsVM6j8uT6%yd%DWVxUKyW;z(Mk|Wu_+{sln>C( z3Rfhu(&ukJQH3`&klb*&UOR1#!@CWS%pmaWX{Kt^c11ct%GZM4D{6NSJeqJ9I_(D6 zP^{h?LIF_lLEET3-8qmy1xLEu3`^+#RjK!n=1>wAeqG^r=}l&3^pDKUGGJI&GrRI3Oo8l9P!hPYJW)B|t{# z#I84&Ew^A}M7;IryE*Kl9QPl(1{P(V3YRW@&0ZXS5$F(0?A0$A-!zcWWR;@UwUE)* z9?Dp2VYo;D*A2%71Zq^LOc%d^v#&3l>OTu%r$05$@~iHy{Hk%~u+QYJ(X?p&u7Joc^mp$B4!d!qC_afS%muAR-kpJ~12AIZSR=mD#3T2J^ z#VtlU9`I)vDX#Ez1%GZ{4*V=hJZLhA-F(FVCRlh zT4p*@=@6LG)|iNt2Im}<+rb1N&LIOJ5SIhwjuH}q_a8)B*%<;= zoqT`n^-FnZkg4dCPe!c=0weG!ENSlDs???g0Z15HnGK9AZ8oco`)Wttrw8y_`?nvO z2#>sTl`x*tsA!n9A=!5B{T6{hf;;y_<`8|k zLFfEL;5F)W++nYwA6zJSA%(hiz;O7Q?Wg9a;;JFn6f2Vs4Tayqr+$-Kukk*)RBe|0 zAe9rqcS=ViB6?Zc#q(^eU;N;4_$V_q&1KX{rA!US3&~ZjUhcD4*)DM5T&OBmsOpY_ z=Lrj6!}?C@qV3}Vd_O#@E_ioCr)^8ktl6mV$$AD+rqEa^i02-vo}qLsn%{){VCSH` zt-bZ-#mnjaq2c~poX`vd3J+~fju-@(RW()@&|x2Xok0Hp!FZNy7ydvVc`xjkm15UZ zyLG$kRXf@~_fh#E_or)z0!~8n-Xfz<_LiFW0r9oXcfLZ}v#Q&RYBgz@YuFqL$MHLS z%grT&1=S0G64V%8A+mmxTvxWh6*o`xUZ+IVKWORH>&Oou3&8bU{8MTxX>VW>?ZQ4w z1HktNnXg8s8^3SW2eUGUag^L62c#g70Fgc5uMcd?tv6cK>@6j(tNYq(+weYWh2@1h z*YqybCgXbE?yHijD&!F0M8X!Bh?K~l>RMa%4I=*UCJ4y9d zE-WqGK4k_t9>`S2sis&s(QBI0-atW*tXf=Y8uRr!RQ$_o$KwO3OGCV+OIo;z_8A32;*AQ7F09tT9Jyz+Te71_vCf^CfDmfaaNW!Uh2pB!ui@M4osE{&cHtwC zy%n~(VRs>fw1siZrEtJp(C~x6UHGQ{v!RX+ALUWfuXQil%&$y5gZJ@*z0tC@CPfBM z$#reLI%I5M&!P^lJDS%H3T4JUiU=_g0Rjj>3<)xkCVher$w&ii5pxn3H4rOjn!+Li(floZd*Kjka|aKV24y-KQ+YGp-2+?>;U>KI({9!*}ARO zGVXi+>SM!ic3pA!5A{TBi>pVBTrfwj5`EpK(YCW69))JR!*+$Eb$9NJ!2bYLf5UdI zV2g(jr~06>?PAuH`OMk}YmfX%rZ~eLCBC?y$v}8&$Cp;9?`h}rUFhgqT|fQ}=iHy} zf?u{Y_fQqxP}6M2M`|Cp^s0ILO#GTp^h)PM(rMeh?xagWnA~ysuR1L4ZXQLQiEtgC z{GiE+{uiXs;c$1z zQlTkKP-WuaKtYim*sce!y|M@!P~DYfF&j%gSzpYDSW zzltif4=$S^atnrkB@g(-h?{n__nDu`dLP+VG@1i#00DD;ji=Ny`#MH`WBQ=Wsp28_ zu={r~(*jFRYOU{!KY2E^{vP)by#);>#@?>#cFi8yKh;gzZHE2dW2Yz3AoG9mHAM>U6>MgdQ^5`%&6l>z4q`!2>^%>us-B zW#ei+;Km#$1TSIsTW2@?CYGN`P^qTbJ|^9R>VwSOYPG9YE;Yp}MB)mCT}AG!-}!>} z##|#S)IUzs+`!7Vl-v{slcoU;vuODf{m^;0YHw+iRmanGe`VRag-1S^6+=xLWGM$!x;q5lAs812-q?W#X7 z=SQ=y;_~;icQASU*9tx#v!vGnQSk0h`zS5jYIfIvwXoL#jrjhG+XRUPqd(NM7HvrJ*EkcP-=)GNXp@J zOuEvmFac`p$1l$=xwb|P7^yNm$t^KuG^vuYgk%hxgr&iZe zxM70F5_w&8Y7hORbm`+iOsY45B<}2$DUm*^4F#c1Ky;u+RM7|{w6wu83VT%DfD}o> z2=<(y@`MLSLOMVsnqjCTIZrB3AtEw?a1fYEAfRLs%2Sknh(Kn2(ZNSaAb3Z7qiBgo zc|iI{X(0en9_UAC6rnVb33jF0Q6&OLNu+>6Izj{KDj>?7^p_|S5dt$PPzXW_1==MD zga>Fs5FH^jAYCK0(m;qmL$+4aQ{~a|*<&wHnvA z+$Tbjj&Q7b1bx%F`!T2d&L5dxTHxRlmFj#hLDHN50DHeuq*~Ug z8Hs?n(vw(vO6yR7RBck(?(EZ$Yq5K3YDclen z3VJi4m08Rm?xAsk$0_Ll0D7;}`l(3KJSa{uq;O?MWg$*@l#r1Jo)rfrb9QsumSdcx zVF={r<0`F8@T|ScyZw7omByjlGs5qsH}~c7f(V7er^FSF9lNX4{{Sfd=rte6#3k_; zb+t+S^^^ev2oGS900d5RggAl%1c(SI-4X79`6F~3rMh@TNkGp4gm!~~fyxA*(Ky0N zi1(C=Wh6pO7@0yuVHClXyGC;uQ4)el^prwj5Fqf5l4;IR2*Q0O2%#7Vj3?3rG82gj zBcuzY2$V;%2Pi7)jNPX^3}k+xJtPNO0K#n#6aK4Zu5Rq`gEPbxe62i*B48DR;VV&A`n7$s8#(k{d|>+ZFKJO}B9Lf4 z#I2tXTm6qs41u}il76KIkt7Hya%Ol;nV)3_^O=NJ4~%OD>9pvR9&4sOVPSY)&+U4^ zsPDOM-_I*o#qHf%gU(vcKC7>UtsP0VYLNl_erlu9wnxaLm>%i34$f3b+GJ%xQ(1$c!vod{U+GxLMW+0m8h0HV4uNxJx@-3z2BQe z63{pwMeDa2QF~b74rn0-Z7eai%?%q}-{!76oUT^vYZ_xGmDX?&EO2;85C`4KPo#1_ zNFOO;5(ghNAc+M?B$z;QloF(o5a)74YeZhVSu zU=m%Gatnxshpp9hO-6+V4jcIJgG)-I6yjQwifu9wG@}SX7(j_p1pJhfpJV`W4TZ|~nRS&`cJKiFLhI6n-tV%# z!?Z<2|oB)*Db30S5Bv$?=C-z-SD$~=Q88? zSxB^e)gGPh1=unaPt744cuXiCM?9_oO<@baN+y^rE@>gis@ju4V;*wl-qEF&{Cr0% zGP~-&^fIHRf&lhfH7kYy*8S<>QPu9*NS6p)UvSz?Yp3rj*EOnDc%;Geg<-a=JAA_% zR2*or_X44*Bsiho&W_RJ3$gXP#c4t!~_q#lw~%EIqT5`hbk^~eGo_vN<{of9XKsb&6qxl4XDQx z1O?IzA`m&-7(@OFZ#@8z8AVTup3mmNLFX-5Q&ZGIc|KDNpX|LO$Pf5L1-+KF@yIZS6ik_K{kNDLq* zfaynqRJrXPqKaeV9?J_;qHABiFlr6c@>{JiWOB0g0!FiIO#RnV_`ec}@^2H1PI6XehQUhWt2x_De^sha;(_i@l?dI>3PXemI1`={?+~8=f^v#Qpp*ay z9i|kxC4|!hRzZyUnLkonH)-u+l4Dc^+i_F z+rIL(P;goT>8mlPPJSi`{X$x6MK=-%mk3?2sh8V1qA)>3M@-oJX1Tog`KxE|1xHM4 z*-XqqJbo(dl6}eupM}O#ABv4e7YlHh3(xC$xw~L8*D^l1P*c;bYF*W*Q+LDV2?OfAy`2_Ow`~^i z1g|^c8X&f$}1Q5|EC=CwHv>Mh^X>h?MVAwL9GpuPYA0Ed&r|7+LaHsdV zbC-*}tsW}9t#8vD555p=_)ep?*0ymwY15|W`%KD>)6S#f3u?pUUj$kx9qJ^#JQ|*@Wccjheq)QJJ&viR{-X_A0@jy5sc>f~XkuAdoyXWMT6G&$f$TEJjlp@ZA2xJLcaB+B zKM=L_O3bgK+Eiv5X#w>JGrV7^zfQKM#{U5F<{ ze#sW@<>U~j;D-~W2EIrR0h8&J6#PxBKAY;>QwQKNKKN8LeJ#3^8B`J{?`2r0Z0nku zu(@dS7{cg3BmIJpg!LMBd#Tn0G0nmBDvjG8587H)bJz(d-~CpjVWJ=a7Hz(!YdnTi zC7|t*{{V%e;v7VBQ~~D@LQ+6d+wjC0lsTu7gistuIY^w!agUOW;yn;baRo@^O6E_( zAw0q%{ZfL{oFYK`xkl~K4oU=>;YTt-!9gZINUpS`)M58tHpqROTJujL(WX$LlS1rnOO#4Rf1S5$xIj08}&D^A^k$uda)J^&02!UY49a^xh5}yn~%t+O^k` zK$_nWJ%vZEaEE--z>u5Z#B>x#3ILfX=_oS_LxfaL3O5P)rg=gE2to%qQ7QJ403TH- z!h|Og>Vcl}6Ojrc6ov^w7|bB1LSPQia_`bnP!>0Hb2ur#kflEiAmZLZ9j=dTv~5u> z^ipVn?1CGJenOHQ5z+)kP(cMWbb$n7ctQM6H5SL0+<+6CnBh6as z)oF+QqN9uH*V^EH7p2-9(B|YEgX+Adt8D5z?M46`E7S8oC9mQ8vvFrprzVlX_L74| z?TpGn*o5k2k?WKO{4!7?eh_$tISybFWpl4_O5T?0#u`pmb=JLQZ$vtqi^<2rC;A}N z*e5a+g)|!Isf)QsvDB&oBw} z%JnUAk|e?m-FH@gmih#MTK-3>?Qw7`=`XKD#5c@rdlir4hMJTtgnH#^=@i>_;mULd zJjxDa`XDrIP-<3z##>#y`Zz5Rahw(6JU?EhpR2ak&33Jp zzUnT`5rRIPuUAf>twpbC!-U~{<6LQ}tiANk?ad#IFJ+)y8k&7D;qlXkl}9~OR;y`I z^qSV4qaW@UnRVW&e^J#a0z-cG*us~IDvOO|Z7>=(yX)HYI&CIc=oOplg@dl+UUyozWu4`n%Q2jfd@o4QDgf!3XflE& zjd+JRf_)bk+0m_vqCodu%OjD5h(Q)pZ2%h3cBbaJ#5fQNb0!H*xcMOSE~wgiv)t?x zhkgsTkGYzq*qLoch(6F(cBe_~)f{RFWB%#&;b`bBYp!cJ5<^6Os5gikV<|xC4(N=6 zoOFS9pJ{QF{oxdJlzmg}I1$naaE9cjPe^aF0F3;SAwE*fk8})RaGFA8OA(Y1F3unz zOl3*}5Jd$(&_VzVpn#fPpip?>5STKA2q*MMBdJIrGYQ5Jj*ufh=}DheC`u3{lRqS* zC>kdy!U#YfR8I-SVJ^@J=?Fm5OavfELP#W|+I=K|LSUn{0!L^<0TP5D5QLC4bcA$( zM@T{f5R|7V1QfeX0!ZOXFqA3~CJ>nUAqSPG4*4#1fW&4ON^LO>PMsqC&L&}U$5OW0 zA0&%qxK>Lxkuj8Q1p6w8vWWmsLR3XRj(t^=QV1NVyJJ{gIS4scd1W%$!pE(6{iUrW z%C&uV9NnxLJfFd3`}ViYX4f-3lA!KaNAS71dPki^s87b&=2VK0@wQfxa^(CXITF2B zh6HJ?1BoZ|E6QB)9;?)NS;g9S925Ok6|Ysq3Fa4VHUV>_6Y}}0^$riRx2Cl0FT{iW z)|pxWlP8rhK;$G(#7RV=2b@eORKpa^$($}#9XLJosH=7NWj!PBR7&9CPfCDm7Y+#i zsu6YF#|Z<7g)B~GBnYK4pGk12ML?YV)W`rRoDK{j9A7ark40VmF7M|ng+d5Wt`3+b zT+xdf>ZQjn>ON|vM_{YkC4^a5kSg)Bsk## z+A<1pKFTBSXN5!QAA5A4wF(5OeOR zT&B~spkYRSC_ye=!bgThzmDL++S7kl7G4j#!>kuc|d87FoDV? z0XXjnBa}`Qx=4fyP=JI2meWu;PhBXfw7~!#a7qs^XxFz_0i^js+4sWq&Lp^&j>_{F z?l!mJj5L`M&kNI2czq_8h>(Dk{#+%tB19+GvIL*aAbupt!T}v1;&5lt4FC`d5kFKEHBB|QmFX8a2Dg=Nl_t`r)&n3XnaU1I22Y|x(oqE@6|eO6 z-p~}_5+fydwW2L(icJO@Ia87j5xAVn2OXf~r@%|33O@wff>9&Y1Duo+1JI^K_K9!R zDL?=LKIz61h{L5%NJKbb#iV9iU0{f_*qn58{Ct^e9ae@SsWhBs~*| zC=5bjE)arSNKrUWOOP8pa)MOe05i(Ow`jQ5%iWm%%X18A-O!bdrPOZs)i`lVd ze~4V-45*x@=Ew)}QIrf|rcP2N11K6nuyA=oW0Vhr-c*3$C22= zn1GP=K+Y26Cy9i=G*LKCM0TSIk6a)R7(fOxp4bR7fSeA}hTL1!C*orq@6i$EJfL+aSvWx;{xK`o{kEM) zQlU(TJOB@}@>Z7=->%ZRs7`7YyXw-t4vk`H-CW(jB-A^8SwXD?7$q={O!}k0ngH;S z5M=PAmwg~l0;LM{{{WhkhvFBO(%({;dwPIB1?p-N%5@7ycH{D1cF24eAdH9Y{E%PL zNBqrdlb3)$Ri@xU3nNOV=3N#$1}F7e#N>{`2~HyzK;F6Z)c)$HpUq zhVqlM2hlKyeWlEMCK7?jK`2YK!@5x?C?&{+!uxQuafuk8#dSC`p?L6YD|HM-SF)hj zKYtJ;1wBE;Q)?zS6&)<^re8n82kMPL5;xDn#*{}}8ex>(58XeK?IU-pqoT{`Rdcu` zN9L}VhM$>1K9JLp4+%_(O^{AcVF#AhX^J-n+!++9m;F`G2+!Frw;6Ms*ALB7@dJx> zO4Qs8*7#U`f848n6LDiIwCCUr{3TJNWl#Qb_YN{ig@u1>{{Xo)yb9IJPv94&wx{K> z;F&wh%JB4m}5!Wz}$L;lcznjY+qf& z_lF;$?t?E;xT#g{^D+ca&2M;e)KJrzRETw1KbcuNewT4}eAl0W zz!;uarnPUAL6-am2p^gbqa&0OLB|M*Jfmq1LB{6B+USE>f!{U8rH#FCs>NNf(cJR$_v}y29#kh$1Dlq(U zX}ayVJ!}nI-Ws`e#*ood?@@Nbe?@lo#+~K6sMl#A_Bl|px1*=geK7FWxbFCr9&g7b z&b`yy{5<^fR`!K%+kGb8wDS}Cl?`Ir()-C3Dgsz#q)NxMyRT(%ZAC&D$2do!LA`Tk z-S@Q^A=RiB{La#_d@pB0t-VojKyyfm>kD44wP{-3qgzyO4gCKA1>(!<3)-I>n<9P_ z1B4#hz14+)Bo=NR0;|{8+S+ugQltxC%=P&%9M=nj@q$1-_P2EER!+03#{ykTA+z&A zsco!Rx&$?WpgIWtye(Q!dw|_1=)CPMX4cLCqDen`2MWc15YqA~RiM%(`&0R-`X@PpkthhBQk|*t5gnjTCU{Ym zF%gtw@j)0wCU9V>W+XxgLV5Zia-}2%SxOPvz&);fbvkR7$a z{{R8?9?Q0;Hhwj2T4n>PgZQ^AYsH#vJKZ(+bldyt4U-+U2FP%AFj{4<$SE`cBY?3y z8+INRED!U!QY>>QF4Gy*Cu&-+3D$+59 zMvsd0`mMaDbx2{~#6N|?7M)E%UHE)l$nzZCuO5z=ST5CdIus4H-5ukJcS|wX_Y`ev zTY%Eaq#SfmaI`lrsQQgF9FjO%+FqplE9aNI22}t%=(M~eXxCZPsaBrgOyOTeSNxWmk1;TCJwwcQEZx zd0iMbrnL7l-y1g)->UVqjrj&Y1>!WjiaLI#ZYwy4Z7q0?*46HNK$_?9E zl`2520C!|?Rt-81Z-`x-hm-#R-mQ9dg-V0VCVE+#%_rIFlrKEk4?IUO1gJNvv^k_Y za-sw@4oFjJ6<8h)93@BT!VLX-gKFt+aS~g{w+pVDzT-@y>CVvAJNJ2ZZ!T=Kj@B=S zwFmh%=sE)gIlkV=I_cN92U)9QQQ`EUmYCuK-FtKLURy>5y0G&y@(zB5dZ+sPpyXMZ zQf@)aCX+t@05A#K8uVl3j>VTZ49hA951Oeql`{79lA~;P5?E!=# z2nqEPj2;ovGJq%Qxw5ld=pqW~%7dCWOl1V*CDH+rl;a2&N-BLQMoV!%Ji9%hVIzoLV$^i&X0zwKw1f?Qj zG$2Sq5P60Tv`f1^snG?j^(Auzh5^!H(8-m|>7`H-;6O+51h<&ZRH)0{l}9%cUhMFw zJF3abopHSqVRbgBzZ2?vzD#P-tyM^f(s6XzmeJQ(@%&oAAQ6uAT%}DyF zlMZQB7VZv5)p~ylk^46utIXWN0EOv1EsZ(fGO)F+S=d@u4cS8k=kr;PGX6PQ*6oTT zjux4zxd9QB;Sh<(Y6J-!O6i5htj{QlwbDGjdAf0D_!Z<~EWl_`Qt&)~XhcR{qkVI&*_>%#Bh z`d@nG{Woh*;;J?(5xA%Te-z8UB4a4(Q~>22CfH6yVHFo722_MdQFLzjaDmK1mr5k? zqzr-RfFgcreo~)bH5kvNpaf2ORrM-jrI}#8Eercft?N5#e9|05?{v zs&K=PlJuS(cKS{Y7-=*4uQpD~0qp)Gw0oFdqr>5}?fklUd$UvXRBXQhdZ>faPF3Nt%0T|^J!3p!qj0E!t3{De3Y?O@df%8Cd%6r(; z@t9oe)nyh3yz;45bFMC1O@rYri9oLJeBf!@pN3$S4?5n?*pg-NxM~ikX%_TYOOGeD zD{VQir{~-VXcGkXh^KdRbyH5=z&4~m8WgcfqvBg801a$_ zFoU1iZ7MXdumSD=0F{L5&eQd?LWw&75)a9GJT!+!Jy)B(in_TB66ZV#_JkgmO-OL> zDV(JnA)|mHBn|}1SV1{L1|OefZl9S-2eN3Qa|e)+=Oq9^Prq~zydeH5Onj84TZo_0 z1V#y!DN)SlDadaiq91Zr2Z-*2YqgY2xKbnWg`=up3wkXKGUu2dlF6xNYFo6KHFmkj z@ImKX&?K~G8t6SX5Zo-w5hWCh=@6|@_-}4P=Y)B*^=cUy<9KbN#E3h17jH+5hhE$wqKbp`d zKF9&eU}qkxCj*q&V1yoD#i9QIw5*E+J9CKl!&grYRwDYVNPrk;=al?T;x(-_xPI(D z3HgSpX@#`4o5r{9z>m#Qz8exp@nv$s}NK|dE4J&sx;o#G&@W)|r zdmh_D##UqIF+DC<7RI$oe-Vrk8H7iyw!E^pX=j`vm?C&w>v)4s8@87?k5BwBH*sR> zdXs6olin(Q(gq6cd8L*bn`wr$M1nGdd-m;^rpk_GK*t!L_7p03f{R*3yB_y?5&nxA zx@&GMok_I-E%<;Z1$NWy#ZczC;je38fH+ZBsQ8)ns65o6watt~N_6~FW?1o55avP0 z{uOFEWg2a!>Xr8wec{FwYiasrz0bxc%@LAeQBzvfteslg{@9UOkDfUS!+cG0ZfI<5 zwc{-#KceMxPRu%+XwhT5ybpCPKU220yqlVB4FHCaauFRh4N9%onMu^hqT|oX6+JSI z{WrMUk{UrE$jMfnaBo>!qiH+K4uiDvp=Wn>P3;V8ytV@q9iWx1O-AyY?P^qeYB|1T zH{&8x`vv`08da`_;qD5J#nsJWN6Mp6R-_<2dL(S`E7NxBFEt(fM4+^E>xy*fzNL1b zFD@V~c2%b9%Jt1a;OA~0^0aKUT}`iwj)oBg6F=2T+rrfvYBH^1w2=}20F)V(s8RBp zaZWJq3YEPO>h8I4{n)`PZnuUgI+I!EkO7#Ue>I^)MYpADX#z-b&QN&AZTm~=Q~v-6 z5h%B+`gLnoWjDF5IEY^2-$=B#2V(&a=4UF!IuvQMXk%c6SA(HrR_V@jX}zR^M5{LT z7dI9Hn`k&V9L^WDYZ~9W#)$S!k2@R&BiTXYzu}vgc}^7rL_r>(n!8WKl^apNyl%%f z2#kaHuSNHc=#|iIBZ&H-!lU7;ZKmPpk-4R+)s~BCZE5y*0N{ICBs3I!B+se}^tAh0 zEG=yzwDJ_2XKd5(&}YsUe~{%71CW9OohHOmX!#`evCTgNeo@+y%55Nf$_O>B07eK^ zwRkqq?1o4`P_LI@zzT-3Mb$LtY$QASAm!n_>5m}D6-+Fz7*Y87jm-}H7KesQsoGb! zciwBa53H)*F=>6Z8jaGA90P>3K zYjS?nT0kI!(hJOX;(eDvpQ4CpX(V^j3BrnR18!3O7)0YJ;ZYFdyn?5}NVZI-1`s{L zr!XZw!E-E=lAZuS&nO5e$^jjw1`)LaJR)#`^+F(=D3S36DFEdUi3CPDK^FuzOpa6J zC>EKP;H47b$>4e@hZu;GmO-Ag?Ts6r*vlnv7$xFNDR;Hk(W2~jPP69|Qc zAv_eekbP5VC@AZrc8PGpJqP9&pYX+C+s1~($CmHFuSu*oc9C!+hVJ|qkkLS=uTy<9 z`?|!D_!J)8H=kmn(eWOobcv|w3ynu@1_nV;V0hWPwAwW@`?uv?@Xbnfv}Z06!Iz;w?$H09w%`gO^8qAm`w)%5*ARlbP5@(R!A>t^mw}vb;N|i(ND^;BIq^ zmbaDzU_e32^J{HtNW+^8=XdS6r9;YfQtEji9+%LyA^!ljRuj_syI|ph0t5~`~Ai)Z?i#A!&56KNyWEaFJAy$RG%VM<#Jad%_R<`!8np9fQdD^<~ zq$+uH4paUZBM3PbhqcU~h0BGNuh|^^ulQVM0<>{B!eOKELC&oz6+!bUhXqFKMzXqQ z!9}e17+MkVoD)8Xr%nEbJ;DlhHjS{R>TP_2RmSXemje){=IuEOG3W&0-mfWJNUTOBXZfmNvhqtz#RfSrwkZSi{{UqNJv+@7 zO=E!%9=}y%aV0&*co2~!89`rH1=?f7dgWm06dUAJs~`=)6}_v~^0enT2@d#5$I)50 zPpa4d029FoDd-P!aEDUaKA199+2`YfLZ)Q8+tnP`Fs;h?`+5sN^sOc%n1GMoecAUZh zsLoR-DRzOVr_x9tNCpx?;!rY7;Vx3|DeXYy2Jw`zQ68xvBhd&mILbOeXS5@vMi2<; zDE2~uq=X<4j?uNR(7dP~%sb7a9NgutadjKb2KDb7eK6OkIASp(J zkHzYv>ZD;r^U?(znL;HlkO1X#mcgErXds>5sud7&d6|wEBf(u9xjgaeg1u66?zMEE z`dRfe`mCCn4qF;vi(xLyf5 z0Vf@?+H)ZvGzgp_xtziX5R`2LsX$1S6oB}Yh#>?*eI!m(K$A#vh(Hm90q&XUFOmW< zfDltaa1!lE@emX@XM%!VsFeCi0N7395^Mt{Cm)OCfwiQBNeB)xg&;jpLS+X$a)KbH z4q%`mp__9hW`cidwY)co`YkBTtn$!rTKR$u6h-%a>>g6Y@}ycf#K0*=B@}jvNf7}M z+EC*G0Z5+x5OXgkq(S%gQaCwJboB)z$_W4>aHP-%PXR!3ryH6x+#<4dinOh$ny(-e zhWeG^wOUVj^W7UK`z;+>>Drfw9ZkfFG=3J3e%4;CSl6uDG|%qXV0_g^=YnXx)oN7X zgYsU?%#wLoULLe%u9(6(aFVpbfsPaWl0o4VPGL%6N4ZS_+G%>Dqz-yX9U%ZB5MpqN zKp5!&l8_1nA2*By4t)?#Qz;-}N)!rnlo8n^nJLE637~`sAHhhRB?y!ZaFI?^_CSZa zK1q@BB1A`MBifKlwD<@a$a{Tta9f{KO}mOq5_1E>TgO`XipxNe~pB@^*;35e+e z3cjlSx?}490QRve$7;5!-TE!XF_%;T0rdzxQ((HznZO5e_b|O@hpB$*tz*e|_g-TD zmy=eFG56Te56r^#x+J#FsKf&ws-o#6^Mt$gP27}-g#>^fRHFzSe33XZB^04oCQ1nc4m}hqWT`eXh?0nq!$3#`%VH$~1B|3v zf=s3z>WYkKg!@UtK_e+Jow*1l)cPpyEpR6d9IlLR==3Uu*KZO z%3@b_jjc+8j%olQ7nMzxo<#!{98~OVh-+%sGV+2NexFg*O~uoGLrtdZ-Bq>fWr5OuP`x9_rs5j` zq@bLb%3ULLv=T6nWDY%H2MLY`su2 z!;i3q;&obvp`yxv;hV;R?!C24z0>Nb;t8KsG{_Txj?@Uq7)Z|PQtcgl(M%H8G>ni} zoz@%W+20tA*DY}RmFQc@9_t6hqHN{30?5=sgadL5xkX0qX(VtZHV6tetG0{>Nd*NxCFf;8bMYx&)@Ppurdm1t6zx2=wfh=C zbEQL3rM{bX@*-!`2p*X6R+G#@2m7l-ne|lkh>FexM8tk7i)}Z11IOgA+v)VJcGK9?4eTonr%kLOtZQTWLW3hwyt%8U zQkn!hr}QedJ3F`5B9#V;XD4xt!tLVQy0&%{YEm#mv+u$@KdpVfv7s>V!tcQZS*Bi> zQ~~tc=vP{PA2l1ky>^EYklz0QHL_f1;*y>*oOFX3+6^fHRd555>OU2Ex@DX+J%!+U zll|4g&BYP5jwkp;loefLXv(3@w*W4p+JJC0>3~PN^ERF=H8npbwIlXt7!Uqje3z>& zEqNU(GOy~_ef>65rvZcSN3xIEtJE%aXHNFSD_2^bm7}7)Q@9QQmv-vYj>to-U!yB>7DwIAT7CHJw(N zbQd%@a-~kIDm3hPE5_-6ZLLo3wLtiNGqui+Rc{aKbq1qOl}AqKY#{f3(qSr&r$vsb zP=EkTj7Or)@gCu#+&P?vgdCsZD;7Ajcf=FY^~x8wRcLM4@s`i=1><}*Wk&kt)b1S) zfJeID)--RhKHB=sL8d@_c7xOrw4Z#SG{~MkR~u@kt+;!;QoNvUEGp8bVeS|xIz6Bf z2qF*3XXrw+ES*N+5mJ+g6X>)@C==@jQZ9G^1%q3}w5{)5Nz4vsL@vH8xvOiY2U8ex zp#Dq8*xH+;R-?%dV3338HaGUy^nA;AgBT;ws~|{^MdAD(bjo_2W;wtIv>&SXG|OD# zHw++wJ8*D{za1Aa@d?x?cnW3+;RXkV-d$4jd6Ec^&2;foLv1OaQd{~c>7ZKc^=J$- zwLEL7-QBq9UwrMi98vGY)UI5NV5 zV+48>@Zdng;Mz%mFQ^rXt{;Am0+HByZu#5?+x49)nTMaE|3X7>Vt0ERm8i*kV3>1CqoHnn zPqO84aZc5HiL3?m$TM|P=f;-_~(P`>5 z-aO|t+mVrp2P=k;qzAc|j~iU!8%NjOdLlyx*8S83f(Qmtx0y%)bHP#}#{mL@6U-&H zpy?uB-cdoB!9<>BQ%GR}CKC4v_Kd;xL{!zcKTizoyhq{|O{;Dxnv8rF41gBZ{EJQ` zgZ)Cqr*O#=!CmK%cRU9Bpwk$XMmyvDIx_E%6%dbET)8XiV`s?rS5?3 z2tozgbCd*jfgJS+={QUJAP*Tww4m^mpd|slwoSJ+9A?K5L1cxcUw zhZ!ph-ms56J|-vnt#@Rs{V|O#d!5R?&udIjQ;AVWXe55=;1$noH=GWX$@pW0fyqQt zuklFf8c)Mj!g~Jdb>L(!dTuK}(4w?bAQTs5h=ddgBg%Z{5|Yk;1PSTN-dbWNDfI0A*v>;yp^*)4&$32OR#T2YJdjD2T_p2!e?j*@8*vQ)x%ER#^zjVw% z9KvcZXwMaF0S9PqKUH@CnJdHDc$t=9Q50O}%*yo^8l4O3Qo#q&280lU!a_h2jLIqW zgu6uM5HE^wRL37Ay9!0$2p)(4Qb=)>`#_@@PlApS(f~Uto@FS6p#-{7j3+ojK)sNp z0PBPvP#}av9HxM7QQxW~(FhKZ3VkT$1d<>kFoVJaq#UN+0uU&HDm(AOZZ- zNQ@)Dk_MLuM`#cmr83e1C>SZu5Jx*qKt8L5L;Io*Wm!4nwL<#tof>AC67FZvVFe3% zPpPg^X+H~OpTMp1;A%QOR$hTc?`>PkoH+a+EXuy`h11a~QP+}kkuVaG$TE@2Db7b~ zT!h%swo=St5fLtVk^oo@PQ6pnM|%bEi$V z?Q1EFG(q=W8rfJX->SN@Bz1_pF zD#NfR4fk8t^ch0hi(+=H-5SOyi;9^f{3}`JW0gV8OoIwHS0;;DvYzKWk@b$u+ryo!piXt zF?ROQYzGDt^}?e4kHKS4VFVfdO0g%kLqjfhjYL!*6J@9ID)-GnE>L(%Q|ST+3Ct6O znltl5{_+R9PZExOk|QYT1cpK(bCS?|g)r#=!UlwNj*&ny^IR{ODmAa@a=UTTh1)}| z`GN>R3t0G@(OmE8`ER;`98`5c+jf5oOONEd?}qOkX|CJ9bO*~F@+(KgSB3S(M(25RN4S-ltm)M>i~2pa z+g{Rx>OXjV)+dVf2Wk3sBEj*!@D_%ba4vM(HNoYARu7Je+oz5}F2~@5XF$BGd#1L% zSdy*Y+zWe3l^#HBWoP(Zp}H$0gD3D*{Bv>TX!Pl{!>Ye;>pC2poYNrE6I2s+MDaTsRw-{9>q__*FI}0Thnyyc_uwTL0d;{O;b{S=Rk8v zGQCEZqYXZ}sK?1TKK}rkj)SE(&X<}#^TOB32pgt-k_{6Fg!)9~0RV7@RBb|9!z3Uy zIz-`N+-aBWyA`df;GDrhxPBKwJ9`pm&D(7<+VF8M%LP-5cgoJJ%@r0?+;6ixK(nut!kH=byhl^FzO^{ z;UB8a@ErcmuSoS!kiAt(Ev-S+>NGeWii3@f>o4qCa>i{31bP+Lqgh$8QGvtVLekcq zt+$axLndK#+aeHQ_@1}ewALCw2I59KSRNm?AgG8A0LYXc67x%|qUvJdfSN6S z=DVTnSE|zWYfV~#pyCBi3r}lGtvYp@>U9_##|R*=2dvqmrW(TBlfGynVl{SfiDj;DtwC<6F7$6_pRNV$z==_zPeWCWW z{Li>5WpSz>Z?2N>xbq|MSG+?9M6O35f)HkSd4y?~)S7cOa)N`W|Dia|GzeL1B1eixjJB%WvA|)fwDkC8<5duDl zg!+^M5EO(;1dq`t1NK(aEj5uE)r3?^NAd;y=LwSZRZte38#5 z3X08r%i2B=CzU&Ee=4io>G-_U;BG%R;)KpW7mWj+TN#g4BqlXgpeS5dn>v|gF^0@uXG5JfH1Q3`W1C+_PV1c zi(EGjqtScDQxq5)(G46RR<`u5>56pP00RrF=lDvGCVNgm>QF_~pH<4OF;cS}MgpBU$ju5bGzdASsozL8%D%k(~{;8 z9r+-I&0|+XtZ9#hrcbs)hlTB)FP&AHXlx(NPR4;g9=~BHd0}_aq%*F&xz4O)yW_8D7LtSv3T zcEEmf2sqKYzqw$0gILqV0IyRIH2(m2>2l}x%SP^Gksjz5Ko-Z{cL$<_zTiOV5~9k5 z?=0Dol{Zs(jluya7BHC+!f$D5Q7>z8+68eBpa$VHG3vadqP6XRfzsZ81?nrmV_M+C z;13JUR=BvOb8u<24Z|4cgch_16RA8m4J`ia&^Y9JuQ%a+?z*kJBmwhz)oUe--ESu-baa+H&Tc zN2o#T94CZ_5Tt(gAS5t>7=+^qAEE&Ro)8(IWF~p%2*;`iGLcC+KopU?*%E+Dq{>JX zl_Zc5G`muiiUkM*DD5#Fph=|R=!60gQR;v}DCDCE5;{T<2F3b$BkH;Ab z0k94iGpaduQT3= zN71CNPq6LQ;T^ z(%bH&35EKsY&oo=#AK5gv*4gb_zdMX~6TD4e6+049M>erW@k z&QpZ(jG$ehr`kjy0Fw*O_`>L0*=>n?un(g2a78lqk&c&%@lD{r9!)xDa~+cj5r<05 zH%>QCcOn2<-VJSPx6VJn(Lbugajac7)NM? z;6ecd2iXyWm`YGf1gF$+6jPK7DFc{Kq`lBS(LVS{w2_2;Wd}w~gN1>vIC-z8(edqr z3w@k}5e0echHca?9Z<<}f%OQD%Su9(jRu1oSf!4{f{G1rw__Yn!XY@uVFw7>{1deD zy8_Y>=8dqGAPk8Jse^+mLD>V*A^p=phl}?BngW*9R_jaPOk^`czbH!JPS- z{1=e4rUk>Q?gEXoF+G*)ygN*{PpwtwHJ!M744}}6B?Bc%qyv-|ph%NAObLV$9HNlQ zd4#)9*#eZyrKcH4!RZa*0~{g}LIE*9RJ%`vKrp56(vRqoB?BM>AsLVdNQ9dFzyzRf z!(3by8f-UDbDUwIfC5!6Dpw|*J__pUw5@0wZ6v-W2OG-O9bLB6a07D+<)s$T-MjBN zWUe-J51MWthrB|S{o5_tXD&Ph95tHH6lvR0GU|u>F7}pew__Uvdq>_pu2weW2HaK? zP>2)Kw|rl+Mk9%#HroOty~O@ z$d8yoTTOBMG}J#6Oe>6gDh|TMv)@M2w3F~YR-SDLQf^dG2@Z~sV)&7Q zr8-2B@YQG^P_wI60>fjE#1@B$+V8T5vn8)-kEmJAvp05k7g=jaA*0n%>8xpnSlhuT z;E;Z$an^5JW2IE8d2}=nnO$_pZ_=$EJEj5r*PiixabC4629gXl#Qq8li+f{vUf$jd z+#rRq<9icY(v8J2K1+yq$#T%eJwEBxE*=Cn0Y6o>ad%^XX9QK1B!57SR zyR003Aun&rSAQ4N-*=}MeZjl>FEOOoI$pCwe+++?GGi{{Yk{X2fyv6|dnct$m%_XW})cK8qvAO!KZNGx(Y}1QvV--PUz# zMoYrRuGZaNl1!SF+&)sbdq&+gzzf0nX6ek=9?G-1=0766z11JIT0V@y zF`rDJl}8FxyvH~OM9PD1?VU&wU7t0U%`W1ul~&H;p@W8ycni)uLewnWSxi2oN%aUl zvACg3v>L1-_~!+Aj}Ti~Q)BB}y`r!&w0pv#aii*vbv81P*wZ3o3e{f>+*h~{-o~}r za-i_uxo|6sJA=AJxAR_-j;m)?&S`jSfr1LDVW82qaH%r!+5Z5_%+x$PaaOzPTGwks zjFymtOH=U$wUr~~!{0Exjn)0ev3S_0C9?unpZqCu=F96eIA$Sw9Y05*X%E@)5d@SS zbVk0Oni*I_rC(?P#CoRIfCwEW9`K;^_ZIi`FFe5G<&)|mdJ1j@f(V$(RU76~Ad?Cd zn%2`Bo-^7Gf;~dT@kNbG%Qilqc60Jt?<@^4;7Xq0SR_a&Jnw|48WgMiByRlqUV?f_ zu+mFF9?DoF-2w+3sW;L}j@UTJLtG5{1QazWbymm|7*f>firNK1KX?z+F4xq&${@4} z3a#BovqPvH(nxcE4Z#L?hKUp}E!=)8dt5!nR+YP6>&EO716F>9-I|ri{(ErXJ(b}t zyQNZ@5aSLAG@mk1-V~hy&TqO+$;U_pe9_tpDB55V!hecga+oL)f{-{;n$m{N>#m#$GjC@Fd;i1$DOeu&9HM@WQ}CQ3lg5J0kBBM0?T*hg?e zaAt7|M~`Gw44@`{FJufD^h7?>Z@y88^hBWZ{vxE>H#DpCOp*8n=Z42>4cG{zYDqqr zUbnh|s60zvAo?kqZg3zNDirCO zY%Hl$pHxP3X@*$UcGzfSA8@lgJmYOe?`OmxQV-z0J89DtT~BjMNQLF}x|FT2D_a+U z4M}XAaH#c;bO8%DT(J9XtM>ik*gulc&cVS%mgPa<^!-Nv07R(keVgc|-bNUaI1a3#w(6=}0~0RJGCVtq%Gj=6{&V4E+|?wSBi0TJX>~AZL}Q ztWu;bOZFL<$3xv)+$o52wlz|?)wJ-}(0#*6I3R=>)*AgfY&OM>8ykmueoKS3d)tQ= z(W$;alqy#Dx?R1~g+>=J@Zt&KTxPYTTL&662yyHPlpU;T>Nk~-ocFP@ozV+M+e;K& zW~q14U|e{xwZZghHKVZZ*BYKJx~WhKEMsTWC_P=p<+YOr=MwG!3p(psw<1F%o{IAI zuC8lTFLf%l3G{CZm)WoD&zEI#N%d?3gVTQ0q~O~0Da%d>;Dh)o)pfw&^G=L8h77uY zqRO|@HCC|sc8_G4Ado+*>sv$BpHt2IJ4A>e5Q29a?bS-4F~yX~>;C`>HFX;GC^$B; zcy43;h1!pXbse7&U5ZdIjYm_6>kIa!!9#8PpwjRe{uLmvl*mrTh9;!j(rC zG17M9;VZ2@6H#x#E-AEkANf`)Xt$LZ((8tT-$Bpjf~})|;QQF(q8BPgbK; z2N2=v2wm!FRe%TW81x-}YSq05Q)E7&arfy53O}@JvML4uJt9|XZK@0yk9B0cw20v+ z9maiC1u{!WJ+C!;TIH9{Wy{9WJ{S?`y(kWkg?UdARh!C91MY$kzX}Up7cTpC$Dsp1 ziu8`jGBB`wI_AsE8v}#$%G``hphO;m27OTHLuOFZoT91fV1|m02Ww(u=)A=mrP}2R z^x3p-f+yK}jZxq7uIG+=>3Mp!KFwC0O|sHZdpD3z!z2-f9QqVf6HTOK5z3Q(NERc6 zVnTUK=>-ER5}Jww2up&R1b(RWM+h7sbA*CvOdpy78BGKrB?%z`^Fn;3+5&Qv9_CgaQ+T3O)Rk0&|3Wp-_`a z2pSE~>Bb6$EI|Wfq*(0zQ zCoa{1Yls;Og0UQ`2xO}6;aPrL?yJ3eMk|zIK&hxXZZS|is6T}>%7es^sx8zX1ASKa zhED1QqxqH%Q}7REzu`f-q;v5sE7{YZEuq37CmHrq1p8qNOj1HSO#n!Ybf8HLGNr`Jq;I3L<`1Mb!>s`gofHJvhzx7XO>}3X-=|`m^XXv7MNCgt5A`~1>;3Eo! zxXR>A61tyN&C#Dk939zQkA91*u(-SD5TLDGP5{APirhuBJ;L*~GT=Ft=qO31!Nw3w z;m5S6JRtIgKu$POP24Dq9H3$olwhEshpGoY>GYKRkP(#7l&BJE6)Z=(p+X@v4p0dp z9;gf?gdh@x9#ArY_2`b#gpf3Zly;cH2y#@R5Iv;`2Jo2>GEz!nMBz{XLUZBc0_Eg$IC8lHOsM6E?P~ZhS*2zD_)$1(l zQ@WxbOvqm{v(u|yS0bB90}{T8qFOq}#8aqc#X+D%N{I$j{x4L_gPbCk074Jqn1l!e zDV`Jj5hx=tqR?Dq{t9^cpz?r#5K=rKal!;tfe@C_@=g#CNJ%`zAaa11DasOr68Ral{S({l>WIyd{TkC1``~hqG14JCGLss zBf<%81bin5;DrV>431QS1_=+(1z_9&bsbc75i{3R4_liGOgMWbw{fwbiXMj=RWfa{(VNlb*YfC>Kq z2}`tp36g>|&%{qba@81XX_aX=??3y6I!EC%>Z5q#%Sx~QK|i7+!ZUSh?Xzrx9S7gl zdwngtX+D#9WMlDOPs7aJs$AT^Eu_MJrFuUPRD0WbRp0%#Bia=jyMaE6O))c-&CL>+ zP)wd71;G5&WI;$w{{U11X&*%(U?P$x6X{2^52PUx>Vd)!DNZtukqsC?$~y=d+6QZe zYl?K*=Cu4!tUzl?eici0wxvgykWea3`#pnS86ryMZEot*QTYWsnx?aby&-{uyVQ8M zpxSNBVFa(Pn`=x4iFx39DzX(x%o^ZpI7**-4D1)-Z6T(gb7b zghB|6pa-gC%SuLM0wEY2pd0l~(q#aShbf*uXd%~VE+R5Qm_ZyOqSLs?WesQ*Ao3K$ zAdhuQ_f)r|G{b>+uSkwMwx{GZv?+b(kSFk2_I7nHFCEZtYBVX0Li&-JEy?^BqNc$> zmas&bKIj!H4YzLA!JbNyGbxiLATyK#95_8DMifp6l8T#10Z2Fuj+ZgQABq)784Z+2 zgw*PNs=4?;cbFzS3*LurqQ?*9UIEl!Z+_aY6HchyKLzeI_m}C^oa_>VvHQN|K2vjA zVMhoYM+ofzgnpR^$OrObm2e)%X;DwK@Q}YX8d|-k4AirWmSlVne z0MF*F&O4b^t*M5P*2poH+(-u`pa6u@?KDt@5bSWAq915HBcw(p024q$0WQc*Dar*X zs7A=jeu_1qG?IbafN6|Euc?>$blXhCnLm>6N(C{nk{2yPo1a5_OctQZre5a0lb|$_ zBrV27V}ZiOq<3lTeEdY^YumuJrgBVW2U4Ry7F4+slmc>suBgVlOsxH|=EQy>VCgpo zu7uV)Ww#G&zELaC-!#6=un)Z9`i15!fuL?EjvZ0YAA+ONSf8@!l*!0zN&MH3y7O?yN5Z!h z18Uh+mkvjNs`lm5Nk;7CAo)GRE@)gu%_p?_xOTl~hp*kKSk}|7M&MXr`trRU-HpB5 zcGPTws#xfhH2cpsi69=O1}#f#%?A3NN=+}LRibv~Q`hd>eOz1sT3E;d+>*WC96)f8 z48qU9(XB4(OPX5lWDF3x16@(4;A|?uF9_ zo(c~s;oG}frS{j29$(s?E?VGS*K?~D4wIT@;6o5OoNsyeL2_*za8NpAa_K5dOvJf1gVWdQaZ70<*+Knbb zf`cvkEx+wHT~qiR9k|D9RnQzs1u3RJ^S~i+tAA-o68fSLSO$G(=8$P8wV3T|PA>Rr zf=AE$D)$~BpenYV4bOD+KhXx^q~|ounNX)nr6OisKD{qFUtX+Bg)-pa=>GtCRIBQm zy<3kekuU%!Xc7>6I3>{y1g=#BD7YGgGf7wwT`UzKb*%ZH7&1;X068HOmu_Q zSG=^O!v6p{t{jllDw}oNCkbQR>F9&~mUfw?(++=|R1>s~zN*HXqT7l`%x>r~BmV#> zI-d|y&dO$c{{V2gw_2@It6JJ^+U$G&iuFA<){Bf=2T$`#w##~K%V{yck_=~F*QxyB zvPT1y?b&rvf}5G}1BVz|;J`5vGLx=oFn;!+2h%7hvrc;)OWr-BrFNSGDU8YYD~QxA zDi;A(TsqJ8Txx2z)Psyj9>_1_8Oj5B&*Z%AUlv+!*v5QA*>b$`IAtK}L<#i>JyUsr zGs2BZWv-YxUUB-r+KX9ErqfY`$ix-Nz9X$gzh|hx=eHYy8A0i;8eKun9|=4vBBe88 z>J>;XIQq)Sv%9{$s_!tkFpP19YSzx=HlpEV;hLHEg@8kGSRJ&@CtCy+-WL<}Hggs})mNTfd->#xB?vC?7V@pZO)}kHNKorqo4}a@Rt~FW_B~#m z-MujCHAs8f4p{Npj6m9M*)~spPyQz*0uU~7WSq_AOZ3KBix|!w0BevrrX+qkT+vHmG}=@i00+RqI8arYZ^z z4j7d>)M?eAY1I3rLE@=+iuTr+*)MEjKq)iD`i)1CfZ*)-Y?ui?{E6AL#lnF>~9oX@ezaQynPFeXH5d9#Ohsw z1b!+Fn|}z~HKbO#bG;)U)g$3s8c*K()f~~tal+Hl^^1K@*u8)Xjl`GowbiTqOsz4LaM zHJUx8ISvPHKu^tl?%vkw;;-*nSZA4q(#DNeYi+ml+|!(#^q4+_N|_>NW1OeAk&*RT zdToW}t!GrJavZ}y2n$v1KR}8A4GKH6*!rSJ0T@9nyONelQ|_GOF_Z=f_^?7!f|3rD z&;A#c*Qq|O(SMdeVfc@5y+a~-h2*u?T)ySrP&-=S9DSf7G<-hh7Q9n}2Y-s$5<$#> zvV1#k$~0fK`;Q0nTLuHL5FrQeaGZ(93JyC@#9$&s`y#pOMa{J&0S6zV^4gU^>vjms zO7(ZeuCa9HKhb#m#)i{yAd%5Q>}{G`YfKZvS6S(Cv#Gw)kv+9_$54U5iAa?9Vme5m zSV&4}K)Ux%5%rX&0sw>~kcdE$8A&t^9V4_LNrNbiWg!6rE$uGRC>)>=h!KQ#fJbPQ zAQ2csIzS|!X>;>I5Sn=j9#9=5gdk}qk_C~R`UY#WEoXDRw0xQ_AE>dnqOs!d*tnS$*!#qZS8B<=7v9*=h3*3^sxUr>Mfs zI$n@b!g^pGSzEY`E8g;-U8t1+2{VZtqoKDy_O*6TJ}pspeDYJnDVx+RBW2n?A#h3u zsBv+T^m++-nB0)(IKF(e#3%OwfS} z=%sM%o$L!OZR8{o&JB$$6HMJ6q@lu8W~EmV!JP^R8BczaoRd7lOy(tB1~M@m7-*F; zYy!hio{83pOqcU#RMOSMKE0Fpz$V#lq4`t^q@yX+0MZyywe%h`SIbJ9q&$sVkGrcZ z1n4_~krtBbM<5!q%PxM12?FoN%U?!Y1_Xp7f%(}iqudEgcXpgYIJsmS)zy7 zwGmtgg{0}%UO0vT07Pa)nvvD_`n)qRUumJe_*?EQ;|CqZ+ zo0e~QKRA4PZ)HXxw$5Em zI+S4P`~XMTI|EudcGG^VC~5-PAQD2Jfk8xW@KI;KVTS=sIS?z#F_^SrlEsE}X`xz# z`cYC}v8i_{Pdb`_4+WPR4pqOH!@EPIy6I}opf6((h}Ih60ct!U?iUF#LE zQ&6Xx8D_7jg=>LHe*s#0!oW0Fj@Y;%A#IB2s=b}^Qc}O|JgV4+D%3y`yoZ{u2a+ST@>$S%DLv~Uu80(Whv8fZXN~tJ4*~(%k z#^KIDF-DH!T3;9cY#?A2rY*vzp_Jw@<#_&r<3an`c=^Tj-iTr05((R#`VOa_>Q&XD z;dPHmh5fK7VB52YwFK?T$xxekaT!p8mQ2 z`t%#JW`P@esdW}yR!z+JS(2m-m1gt;-Yk87=dW}~_4DhocCI)han=1Vfl6kipR)^2 zaFOL)W0(vdiOrDx4!f!S^KXl(Y8^wLN7@JVo098;qn0hNV!8p4C%vp+^i2E>O!H8F z?6Gkg-B?7;X9M-@Xm)KSynQv(9sq)j#j4&*iqyIxj!}ZI$Yc|!zyfNGK_6BuE=0Qx zs0Q~OfsTo09id+Qk=f@IIGPXTKNcRrg#9j{{aA4I>K{5a%B|a_UBmJH{JI-fVxAso zZ`|Xof2OYxqqsnOAc_yrwq@sZ4j*;wD0Z{P^ZmgC3&h0%eFM5kgxExPa(Gh z9i3n|sE^I4tdaWOaEc{_m%B7+467p-DIq4TleXM>^Sarvx0`-6?@lhMP`-X)0{QT& zXk9+NHl6^%+qO+iHVV-sp%P~Td{$l+wpwEr5sai~EV%Oz5^fhImiwxk`G}Sz8(? z({)Dez9mzjcR`~!W8?wX$ps(Yaeejp`@0~(rq!%xS4!=Gb#Pmeg_GwO!KG9ScXHC2 ztRnQz{N8guzh?<87ohjNO@6Stzp1hRf?l5N6IExsGIV=Y z`F@Ib3%3~BtUxPvZK!@Mc}sho?A}_)ZxgXq9Yv0qdSKC?nA3*%4 z_es(i%hk|}xIX;$rJi^_tIjW@f5 zMru)BOEWSm%=1=pR<&reF;;-GBmS4kltrx_A_5eVQ#WFLQT#J>ksG7xob{kDB^KLqD&023A*}Evr#z z4r@B=jI~S(uPz*n>F(f4VS3}$Ej%(}Bh4o04Jh`1^IKBW0|6-}q+{DQ@%g=s$z%|s;IGtI{VJnj6h2s9}Z;)SO(+txLm zZ$5IxTil=67gOj7x2#l!^jOkJmVa{@8nvE%xQ@2mQLan}GT32wXc1EyGr@$Q7z)YF z?glSsd{dRThmBHq+KPI86i>UnWPvY{qR7VR!ZrLw2p9BF<7PMZqSU#&`j%w}TK!M_ zuQ^vQc8S-ag$$&&7*M#ueS4y!0piHQEQjsE~fuDVQi-!bELbiz~4ru~3$N*c*| z3AsadbLeM2?YH(w6GJ_)TH1^M06}&8N-oWgF5LWilJ*XHa$Z*?t}7|#@2`-uG@-(J1O-@1>9vN_N7nDq}==*+Hs)7vYw7Q z2hiY9r8RUgd-%O;^nJa zD>?e1YUMH`z?&2Wb+f8d|iOUZczIDc~+I&5Ltr)zM{JqCTJlIe|V4Es; zSX$NP^W+w3qhGW)TigE1@bnNbp(j5iS>q>8hHO!zG-Ka>Fo4QiyKTfd18s&NU$9l4 ztF#rh3Rww}D%D_hX_R}?^h*(HG&3{)%Vc1LY4ha!+fuk^36eHvx7%E%RT0obPLn0g zf%uq#JD2&oU6Y5*4hwEdH{L8>q}*1?`7rYuH2K9cy=S=s-p=WTM0Chn@;toPt$@0k zkE3V)J^$4$(TmH`cBZtvVdbtttHJaRzz~`?8m?eFQMvj+D?e)syXG07b)6Vm?KhRQ zLkP54L^@K;1)bZf+5j*3Rp6#(_3IDR`>3=E|Z>&WA9be8dVls5~}; zMq~wqnRg@EqLHSaZ1)??V*=P^4#=)@w~DDb93mc~gZ9LI1m(YP#YVCD`8KIhq>XyR zOPpLngJP3C@1~n-CViE8xSLQDbw<_tvQNm?k*d*Tr74QjDa3mmP1_wY9$@HDK+#olH|GHC8pB!VxMB?Opgc?$tSQJC zILIc#i;0ze&s(^94e<{K4g31q7e`vNm6&lw|GQKSZ#Yx+MRVPz5xI7aD?VyJ;=F@T zx>f2z+&2@)6eQs7vc-AU+G(IAc>1k9Fvv-)PqwJz*bD##2A44Lk&!{njlnFJT5fav zLP{9g*nF|T(#{otf5j_;ZLB?($rub2D$t4+6PDG`X929}Ys*Aq{4l2FswizD*qq}I zc%93wIlB1uC@L#VSM8Z=rL5KCvO|YEqboSMLccwd3{f6=MMUzG+#+JWmQ2)@q&!|3 zSJfia3;IX)h2F1!kd0Gi#H(ggQ9yAbwGQJv-{+scrOQ+i+hS?uWMH*tiN}-PlQwhB z)I$9S_G+5-UY=f_YTVxgFZ_EfJ>=?}-(m|K6zwJ-I$MvnGb8>3oYkd0X23JkO5f{I zR8ZwTD@vO|e*r5a?+%rxp^p->kzwZ+?ga#0ik~ql>9M+0ij1*LH8^nL%n%oR4%=v1+gv-#_n zd}D3gy&v>nLcsDqLBb323-+a^eNK_M_of}gth|h+K`J(pqf1CVk?H*FUmoA}+pC0| z2G%ClPT-qfa`o@)B+-J3)A-qmmeaXqC2CdO|m>N+=h#6^}B%{!>tC*wsD}IsJ zUtL5zZ;n+KT(0o9arCdllG-a(I7oCSgBZ! zyhkB*^_NIi=`uvaAh{A2M@R;X{48}Rr->Grx!Lp+ zQXz_Nckrv1)pvuZ(%Hn@V~e!7n&D<-Oh_(PsQKnbuG>az zBwoo~1QQ)21tt4(+$=A7-|oA`yS9)%*|SK9>4RCWP1*<ON*o^PILz>J2v6v?(?p^V~o`PnIB zOwd6_iv*d3E3+#;Fh&`kO719HK;N5959GDHlVtiIpc%&#P5aI?U2Lg$eFumXv+Z5M3ZyHra>ixcK;voWTCg)2dU77Ex*p6JW{OG_|<&6mJUe{^+W%KUn`d0|^F-@AjjoMdT7aXab)u1%A zG>8Hpt1hNUa)rAKG6~40PLPcL1C`2fQTj~M)8uEEFQcYBn;$iOX5ydy0&*rFjp6cg zEpK;R?^i~OO4azW_m7K*!6^wxdlCy2f||4*%areRvGHl<1!YeaT}XKr$+|Enfw*iM z(_!Uo7r{uR;>+1q+c|Hx)W{I?piu>CCa!0cdtyg!lc6IaKCf48C7VzRkwED2g=Sx+ z&Hm43=D&3|AL`9tPP{1x)NQblMel?0M&eK0jYba3W5nBC&CHDxZTZO2XsQU_(4jYF_|FQtQYg0|wA4o!WL_0cv`2 z6GFxMk~2QH%&JQI&S=E9xiq_~wYsTiZXQwFw?5SKe3}UynO(ZcU4>WwiwfTebs*#* z4{ctj1^JgGKc13udP-^p_E>*8Dlzi->ti_ck;(el&DQRULozd>+npRy3!&#a zd^Z09^2&SJcO=mRtgD*tmfc-9FF)fp_r~kKbxiEECEMF<0PZq=UyU>0PxfixHkofw z=w{cX#vesNTRYpjTPqzDQI!F`>vSJG-gPbMuF*k$Yqzc@8{`$bHmu)~7qj>h&cb^8 zN--EsVblD=jrXs$$9Z^z&YRdD&l5ra2*gProc#mhtJ!lVTe#a{&JIE7LP8TZ1gl`}0O=nFYZ@lElfmJ-`Fw zmg_A5JzM@%D{XQe>$X~M?x{K(c3P}w_CG+E4BWx9FV-iB(`VS(Mia%|EfM7BaJ`?r zQ<%M-VrtifBuW0V-DxpzLU7E(aTiTCyO(&fwFo=zVF%9jri1Y$O27XA`XOgnX+Qdm zILgPrE+XWOWviI@D>Q_8wPH_5*f)esze~o6!@d6iX6QHrB32m~AJKQwYB&;}+s?Z> z(RcQs^aA6cF~Z^b?gS-CVPE5lm9cy}?F6Ma6~1XNZ0A|Ht{RKK)xi`FkmRQ5zunQ| z6_NCu_YlC={I0nSZRmAVPS-cC|9od@I!MAl;6vV4+iqaeNdvBJqxLpkJ}Ad_2&L^d zH{%(z&{?w(KRe_gC+bxv*bGbk4tFQZz zVzjTl2GN|5r%H0k^~`qKtmaP4g2Jb*o6l^;<-fS7Dd81&~nPR}eCZ{1kfvAh+@GV`vI>z*B#8&}$= zhwYPIqIO}^{q0Kd(ubemoBQmu=YGbc$d*;2r{z>_%vs{rC(ZZM1?IV2gNbSB zwq(=$9Ef7Jv~f`dQ@kL8`B=v--K;GVqR>UJWcX2=q3hftEsz||{1?i#2?m=|o2V0i zl$W9t*0l|@sTeheg9|B3h(=|APy^o-9%WrU`UxRwaJIH&(BP{gJArg+2ZvdVN*Q34 z_L=;S{Mvtj_6*?Jg|vic=$R$Gry~{otPj3#`&{-}u4TliR(y4@o?rEJ07muB7*e`b{JG`-fY=yR{4c$<91rcv& z5GdQ}VQr|F6z%xZK`kXjN$bOqB(-EyUmW@Is0Fv(HjV4b%eEWh+RxdPkBs{H&b4-K zXKU@quH_@6RRw)_qqv1I1MVu_TrL+utXF>K`Fj$S`A@`TeEQOP5lajE>VD)A$|b3wZ^lJWiLEr#X^Q zO$*)1UUvTuftM^-0)by`KI9!zh^N7u^PZ*yd3;}R9i^hU_V;QXkaBg26o<4U58c~? z%f{X|pcLC)NZ%*ggz22IZAQoS&21}&bvFm3+UzTowJM7+J}T%{ZWxJ{Mi^~?|#A=k_Fu|a?foV`lpaS`jT_7 z$Nwwa4LN$Y3doQ9Km4K9=f&hPcS%*&g_6y!)BE|eh||cM+Xbo9bP6=r?hw5=8pr)% zlvKK1Sau45j1b#aW4Ol|34`vvptQb+6(!1ZLV2FaSHjSI1M)RFCLe0iPYeY~11D|k z4aOtbDoWIT!QO($Qm52=3XsRR6?5eOvLkn$yA}j+6UBK6hV$QWRph$BaK1c-B`_=9 z^Hrae^u@!lMY;pZw4j0gr8lFp8y#*3whhc0zs5Z-?GC;$MgAco9vplNZHZWv)xWNP z_~P~`<7LAlKdnA*9kCe0D*Z~;#Ii1k)@F`5-s)H>eIuPO#CfE)WfiGE79CD2e3Wp+ zwc~PmS%223`3Sf1Z)4r>-GUX~PQVxbuwP#B8_JQFSsW7ewvBV|1x|vtzd>%_dwZy# z?0enfLLwJ5yWF>&#vSsvqGen*dmT_*8AA~36$1SPxWdB(=5kqqwRg?7p8_71)FpLW4se8cm6Dszg$e zeYzvDsgUwV!d51Qq=?r{FlxU%cBhpvH;l$SVs)t$b4<}napJ=;AvH5I2xj8t4ZYEw z=r^amrbmq@gLjE*PQ0Fe+?3)i_GgLIA{+z;>OOiJ@WP*I zn}dX-eZO}h={v7wvzus}tN6OJ-FXq_SHj%$&UKI3q(+_Bge?y@pUbw}?paByMUE2L zC>Up_sd~94RTcem^gn>*6CU02Xppk8Zp(y5gqB0?7mj>54^7lI&%a3wDpO0x4J`Dv zi^O6ee}ojaHjWh$<$q*eI;vhqR#U7+3H~9BA-7`{CDlJMZ6UPB1eO$3oPlDwdqbk@ z%jvP85({_Uq}EixTI!;@u9CXvRruk%RHA@2khFlejttarYidi#NWi{@U$X_u}T==cSgN zUKO@P$w=o7rErpOgo>L^fW7#v#nH!}`)SB|Yjw2h0Vy(sGZX3AnFqkrooo8#8m12*2 zkc#x4uw0rCh?1(Gv;ZwZm@Mduj$w+Drt)DPbj2N5T6Yg zWI)N{d7q)kn1{d%+2ob7GD&vq1P_rMs2LrA9kIa-gO_NTm6-3{{R3l9`LV{MUe{Bdw`C9FdGD~}XTWW@=60f-~c$ozg( zuE8f{ycyvl^+cG2i;s@cNLVCWR|aA=bVauzxsM^TPIW9hhMxs!9wM;1V8L}Zm0PK1 zGLf0SOFW;cUiRu?*5>qUrxV~1*-8feN90*H%Ax{kuAD<>3@2np@}27<(QD1mZbDow z@-)Y4`yezEZ~bszJJcXIv^Kp4y5MR1m6$~ezv5BC%-fqHR2F&S`te?foh4L>zz#A={VSHCOQZV`LJHW zO|qUn&-YoietYm&^9}CHzcYsG^CpH>m}!a!$Zuon3KB^(Q=ns~~_pm{GLw`7Nf@5z)8e zbWW__KY278*YoFI>IUD^MUJ*K^^W)B@?YYaw@^$VShRH`?om+! zw=~H7V!kw4ZQzc;!K3#fLr(g#(fE1Ng5q-LOl-?HU*i z$W;H!=2_mVfI&VGr8;mZ;bwZUN2L@t2F%L?lWs`5+QeU0Qni+q7RuvKo9x)XPO;c& zkn{Pm$$8ZkMb@lv#Sm8l>KDwM9~yzk9W&!-E!sOKcWAQPa$m%PkK?ynE;l@GmN&>M zrgeYU>TXYzpSUnC)5hkxWD#GyXezl~heE%|+e1aTkAK3P?r|hK1b?;e2$FcNUbgRf z+LEqx#Y(lbY^T2OS;95d%g+bj_1%SJKTk_0w@#{k7G|{Z?q8QR$1^KxU{^SNyUx0N zs&xi5(5;d2%w%YwU3;G_=U$;{M}iG&Oi#P-s~k{N@)$a|?4sUlAM7_QGGo@X647PV zRW-tMKxuYRnjtaMZvIw&$#7KYhdyKP729~=4*kETz(L5<*n6ha4X@tRgwMtjdgfjeAlgOGRLq0)(x9Rkff>~omZA>V(zWlPu0@f{i;t@0!Yi)jTRS1 z@ZIjs<@vT`Ot-7ALI^guE&cpCDYf3FQeo%8Nnb^8jx?hr@-e=@ z1k47+)s3j$Nq@##6IqUWJ>slW0WTlLWPHA|W}uQ=H0$#G60M`*-(xJH@HQPCk-$Ze z5MJn?uA8FosIz+{sCQkr&P_u|c4RXBLijM7^o&je62gwOtg4!uVpSl%`VSCpDn24Q z>3q-DxP!JvQqOrO`gt_iQ%gsL&iz6-W+x^OKFCs#b%ON$Y+QL9M>sD@zJ*iYzta;7 znvlx(Cjsx z3X4Lz&a-c**H`cWqYlQN-qir!%!ZX;su6?}_vtWKGkTv6TknHb1r79~ik;iPbll9`LRF#dz?Kqz1?l-*Xx?gp6FDuiGpvUdMYfa|L3+89>gziXP zl%udd`>9P=T)UYUHM7}UO;!>H<7~PXwVwa%EuAq{a_v;T*!dSV znxhvp@LBth-9L>EZ_`{Sv-PJc^C6rKI+pJIMb94Ccf-qU+Qu42AvVCzc52Yzoin~Q zq0%LvU-6}Hf880_^Nj};9jv=8Zq4kCBr5Fpok~2N4Upqbx3gP}k{AiK-^ls2q@?=L zh~kfJp5h1lR!%ymAF>dOj({C^$#&kz0mfsAw0Q3J2Xg0BS&2L=7MGS*Ge`dc;-ACR zCB2wtT75puPqrkYk44q(C^TwsVmAea;{Y;wiY2z95zU*n05KV>_@AWy*E8^RvMuH0J02*vcD0F z8$>{-8oNgQtpRzS*)Y`i)&bM4*y<)6ZE~6R*zNLVJzk+KU8A1P`nGRz298Sj&9YfG zl`8R|vcA!~=h9&&30{mQ34CQ#+87;DIGbQVk>bi$)~>U4je^y)W4yxih6=gplMy2Dq$|-%6p(AiYzl+U~Aq?40|e zum9U7QI%v5Ylt0DCMrPyYZYW;S;}~*qfw74zI>g=puYbn`GrW@rzh&oZZnjgLrH<~ z1tC>yHX<;=q`s*61@(18`O12U7Qf}Ku6gXf4DLbqzl8P|Ch9r=26W3Tiw7+_b4xKl zF)S@KMNQssAm9ETwX4Q&9@jkEx4ee{>645Q{I^;l$a}4Pz=0tTkx9CNQ$~9*<4#4p zTGffJd-M@zZ3a<{jfCcl>1PMVY#?Ls&jihN`IvW0DQ3vE?5jgzg1S)&8!TO8kb704 zkd!iVT`@dFklsve5F((?M~#7;nzraIV#sx~Ny98gpoN?<5a|si!Ai4t$^k5VMOG>1+7bOy-@f&O+ag&tX+hf9zGZGsFQ@p z@DHYmu?P{T^uA*zPS37HlNcb^Hu+X@)#bi;vmwu`^SfCKYwN~QWZ~_ z+^QmH+NLP5%)%#SFfmc=#02I=C02%_d^-T`ne}r@$sdtA*5OCC6g%~E-0cWAewIpf ziMfbaN32XagiYv@WVm@sS=g=%%S|mF`;I6fG{0lZ)KB7Q+q-{Zq98n&b34mr(xnYuo zz7JTeBhw*HBu^(JwXhbMDB+>J6bXGuM&+NLKng$cjh9nld|kOksnrBir(o~37?@&; z@nm3qGNK)DOr6P+{)SNdq~<6Sk|U*xnxNrM-$C>0`*%m6t35i^%6R)v)BMC@41rE_ zg@oTMa*>l?#4BkFUSOOvePgx2si^D-qX8^~s9L!b)Hhb|cMj7tmi{+ja{t7u=?J}U z3J5ZYkwzwe2V#PRRwbD2@jMX8=2m0~b8xn6lbo@=f3VLmA+6^kZu99Qsi;JbX@loO zQUxjFC3(_j;o1DdC6eaEl8iwkv)lOnJ^A+`ccwZv7bqiiRqR2j*}xhif{#T+HWdlP z>R}YK#0HVv0vIh2h$-5{QS@5>L<7hExfnQ%PeUjAQ>AFxMN~8e()gS8#g@*}WF?@P z1ffQ8Y6hEr_PNue*0Hc{H&Wb2;$B-m{Zn7I(k7gp!&BjV`k(RqGqVjr4}MGXHK;q2 zS+!M*+r61F?H|q_3EuTYcdjqOZ56uo8)v6G&uy>xywto` z1_Lee-q~#YXj!k{(y;Xx1$XCJH}w^0rJy4#Yw7jW)$iiJL3qCQKcg`<9l+iBD*shF9PoT%GLc5^5YP)W3didOY)f1aOizJK6|S zc^p&GlEtA75>3Io=!ykKC(6|Cc+XYYjUNqdu%Dioec(GWZ#7-RE&M&x}8K;da!5f`=~55W4A{kvv*JSTe=|gKTA$}D1_6M zBA)pyJ0_muCr<6XlDUtlD6UzlU2w(V5i=F=1{5lQA?9m*&JtyAM#{((d^Sr7$L3K0 z+_KZT^MBSV!A_8Z{Hj_wBSG@gyTtn!)u!#D?e*%r>7>*YV z%z!~E=>-z>6j0GJP!@XKPVrZ#WxB@gK{i8oo}ZfGcI4zP9o;V{ zD&M)bLvfj{qUPfo^T>@T+Rs~4R#^{a(9>54=n3ljN7jBU7|;6x_9M|$hNLVHS`4aZ zV*|?pl%8bHrj@N! zf*Zb#i65&^=2>QVyB%#U(Ka2xiH`iCb>kvuo}?RBBR;m4xl;`dnc#;z!Wx21vM_4J z4IcNLB%e5e?!^l~33w!kBY&j?9KdEhXr0{e{?N5%I}94eBFC)B4|TWNIOH%Os7l=5;r(u^b|z2{Sx>|)MdyfIT@eTWH*B`XfE zRfI(h|B?6)@bMFn`@!qVGt|@0rIN43(`ZfxmMw4Sd*6j)hXHr1=W!f14flBd1MIxN zYuw^U=Pr0`Pl8J5j!W2B*CIKy7a3~#e9+g%5>`Y{oxM-rEq5N&EVTTN5IiK5&fyr| zYrorx8=Wrm(`$ECV%3m}u&6LON@S?fvfF<3Mq(<343Kc9b4E3QQ(Lk%HrR=){qP+W z3me+#x~u=*>&|l!Ny428XZph~LL(iJ_L!BuRB#f%<7qQLKNWPJ!hPKl88v=u zvU;EMtT~EO`qq+Vm7l?EfiD9(|93nU_sNux#?-njJDFf356k0!{)<5cS2Rm+Caylx zq3Ym&9vWrdG{s;&vtL~PsME+Yf2q=TBC7UOx(_9{$DJ#*=SPp01zk#1zp1@z)XG{s z`e_hg-|}m4M=l;loIsFR_XE$J@@WttvO_M>z4=#ef8}_Qi7}$GSK6ovqIge!$VL20 z;5@50$r#2(p~zty68=whRH3J5#L!_i_&-30<(0JLY$2EMD+ACDu77Hj%|mYctFJ4+ zo}a+C`VWE?kEb3>24~O%)7%}B{sZ6xB}g-!VCzuRsdd3@U{@P`wKzk3Wgl3f`<7LF zE9XK98E*I5^P7clfIgLO-H`*`+bV0*Nb7dLKlZ#rzqY67Zao4SfQWWAAZ|j2bJ|jA zA5h7()~LlRQ(#6r{>2Mw*t}!eq^Kku4LpbiRYCQ9PxX#SgU7p|izoFSXOIxDbLW{y zTW{rdT2o<(yh+C@RkD{f7?&2)t?t>9uSDmSe&?b?hEPkM>f!6CQUmOmX05&67#rQ~ zxN3_O3ev;5C<{b3?M|Vg92zsd~_5UDMnGS@3lo4m3cc3jdUY5$X; zn(4h)A&(vyU)uRe;O#<9k$wS%vys*l13`TR;qWWS)4IV|w4R4Pb$6!!057D2bm3Da z6Q|AHJe#zQ@38Y8*=hMptsr{ZFG=(5@jG&sR6W=`8Zlv{xIlFIf|%PFJVzhw zXpQby8Razxaa|s?ZvDDBgWku{$*QNF!q*@8{}UOIum4aWw-}tUN24s4=C8#t>*Ki!kGKbJIo@s*C8=8{=DNiHH4> z%C?p+(E{-lxHaPPW~$QvXo`T?JIF_srK!!5p>3(%f-`) zu<)93mkha}7sw?Y*0*#iat9vB7ti{OcecfY+oAZ-r*4|Z2RBXi3wpO;OP%4Dh!RuGj z12>$%1?TmhQ8NB|(y-uF{nrUg)n;&b5n8DR*Qw%noQ5(ONr#zLjNp1@R(J~!iXJ#M znFS==V5QdhhKgugf0>iqWWI!J?zobw=0ltJwBa`8P_e+XYzMQNz}d%k-@8yes(Ni+ z+~J9`RIA@VH;j5L|DBmT^*`$Wj3%?1_TtsL&M}C59F=V6X_e~q&CU*(yQev4mgDSN zt5DxPr2JBVnZx$hW+hF#FKQDCOJ`2NyV+W?}=530KxY~KnZT~&Zd*zcY&nbk7 z<)yMN&yvcBMoLXFs>kz8ckYovS^lycfMF1%T-G)?h8Gctp;jh{fO%uZ$^@YR40H{H z%_hGqs;d|CzjhZU3q39Os(E3?c?j9mgkg&lm@)eRQ%0dr#tmiK*4MoYX2^hvf~im- zcU`^z7x2jB_{fO*B`ioeuk=Kc!i6XU6q!;sTs@WbKmaa{6=ae`PkIjT9I!&w5nEVKyF%xsHkGn0>A$)szwgK(kdEAT=xqbh7&4v*w_xN%{w*s zv-!i_i?T$T_S=Gg;s>X0DI&rd_S-5twaN=tz;KrA80Ji<=;sp{QQ#|3s8a*UpFpa> zrC6d)#|bbi>GEuI@Iyj}M9FC&xds%Kh?+m^+*nAcmb(Cv+1Id&jJmQAXf_`yRO+e~ zZ2q@AKiII#yia)#(g_yZBT20g9of_@eSrFG0i=-MAR6%))mDkq zKN&>k{s(Y}ivj|&-y3o9k%{5xO>yP~KtPV#lK`$e%sE^}9Ckr8_?Jbm`VtUf#*Y$e z?3N~?ZPtHzeUMNw4UzIVT(-1LD$Pwxa?42jI(vGXDSFGB9ojDE5IR%>(gX(6xyXc&bw%Y&Ts|=2=_fl(& zUgSmY3q5R|^ssF6nWw_5)05h}ys!^LcXH_WzVXJAh+`!iu|L@91I9@$qqoru&ky#x zO|LEU)H)KlBCu;dS~<z zv-tGLKubC-MKSx)GUZiD`aoxKI3*Z-X6lo_R1=%0-~7}#6%uOy=2>8G)Xna-x$qul z6=McU!t?lNi??y9c zY0XC0oXy+iB6ey&m!Fq}-{$0HsNj7eUGxI!f_jI~z;6rta}GF8U1AM`r$;48L1N`L z!$jimG7Gd)Tl|c`FrY64jnYfjhN#1_5jB;;q_j;NAMgbSViOaiE09gcEv#hNLe6cO zd;IFb6dl61&ST(u6n86A55r@JszofmX;5`ITK~8b!sd=Gc{;@K<#mnxAYr2=?rpB_ zk5)CQ-~SS^M;^@Qb@Jg_Zl!_rve<_+V1g6KO4ZZh2r7@cHvF_LPp9OmV;6dYKWW$X zE(+mFqW{O1OFW(aPzgej3d?)N)h%pjZJrSz%d$mAQ@~&*B~5t>U7pWc zF+kyreAtCyOH5j(GFWhmfVpxQK48(&7h=^cFl~t@Sd_XT+J=>l-aGLW3xb4=q~tdV zo*%QZqaBqxA2$MFY1f}TT3+ri6g)`r>zd*E8)JGYNkieeZ0aroEb(XQ;FpQ{QtJeL z5(o*4?H=8`i+E-ts@rMegKNXK&lGN6`D(_gG~eM8pYzg-CNAwD0p4WtO5An5fg(iQBzE7F zr}k#a+w20k*tI!aV=GJ0?a;tXV~g%PixQ)_;}jPYipKV_nf(n&#=PT(Rvet>0bEMU zJTv9WgMUS6m7C zG=I1(^J3YY?wX0qv;*ewX1d!?r^ZC}HPo_?J~P#6QLr+`t{N5%Us)O~^WEHAB#_rL_||>=^tcK( zuMo}q1baO0+^j>MJhve~8k(ElJ>ny;(z3i^GwT(&JOu9U3YUoWTuo|c^Bxlu7W89~5W zmbzO|kUCwO*f3>CW*|ZR6iIM+^hGm{LO4%9ijGkbym+NyS??H)zl!npv|UQ;%6a?k zCBHT8E@+F3Dzu$|=Kc%B+}3!hXHfn6Sw7(hsM22M>E@e+xsN0BD(Qm-RMMTgg=(C& z&ycPdK@?(sATW`g*ceZ2oS<8PjNqv_MqxdS5h6-*2Pmi(wxu^yr~zw)74v;=&c27N zHs;<#TJ6j}-izsEgNTB%_5CzzI(yq6yl9afq9>*5RJ98RT+wjI_<`uFbgn7Xf57&i zkzX#fxx3QYTAN7?emq}xQ)O0} zCP5u=yxofh#m&pVj+q30YteXz;L}@BM2CPEnA4k8x3y{kAb?}kWe2vR@cUL0GZ|5> zMU{(7n>%oovz+^O?_p_!>wO@yJOpccG zt}W>aecccTKN6vLs%XWbwXOrpOv6F`$T2G1QMRD=+mL6zfn5BWwP;bQej@1v2$HVd z-{?;R%cD`yX8?pZU$wW7v+30;5y0IM`6?Brg4 z_=?W0ONLy;(+%75;ZB=1mw$rPUE}XzE>)A!q1xE83dY)qwlkn0I>rF&MLP++votLC$RnW;LxHn;pnkE$YVmJf)`^X{qY z8eOH^g-i#G%IxdwX0zj}z_}e(!z0dQlojadH0jiJT8}Q>&{wI`Z6<)hiB*oPX43-U zgX*IFR?H8Evq}qf>9Vs%`e4E3WZY=r)Gwn@2D_G@{Ha&hn@befAMZctsyD?9X>ffu z12`ey=z`TB4%-I@)pMMGlmnm5Yl~Y(Q}V^L2=`cx@f&=-;7tDjzeUZyC>zKv0zcoP z4?xe|{4Hn=Qq1sY)p_CKsxNleg4yg2S2~_5Y?ii>aUP~WqASvoi8u--o+KHS=c#y- zq)l5uS?VADir4Mie<#fHUANf(0HO^-)4SDiy?fh5%xT!*Fkxpq#Fp(~KWBNKB>w=S zqo`|!xo_^n7>akK5CAqa4B7fyusr=j4m2>u};;cm4S0yWxt=Y zo}e43ycW{h8fB=6cy^oVYF9L!_Z%dCYtR;r!_(%l^lHq0qUL`PY<&4!j+qE6T<>EX zS|kO^(xBYa5g}Tt(&}y)%B5*E>XthsWFWj^ejua+Tz(KiBqU-)=2LF~aG>*d6z29@ zji-0jdREOrx-eIszHiy?+FlGit?Dm6TTXDOg~i1?a}K6V1=8N7I;{?B=W|W9fhDp^ zr)Jue?xH>)$rY$@?h+^1CTAxJcA^PP1d2VC4Detm0B0&$gpN<51LRX2B$|LJCo+^E z6YT?pDg={6AV}#6!U*tGf>4)esdSM?NI@9NV}wq969e4>=@Jl9Kz4wRkPryLLJ%ZE zX-WYHgd?>AlwmTG0TP#KgbfKH0Fr3w0!$$Y4iHh&5CeoDAe^8f8R-DZVFA)gNp`47 z^oU1j7f2JyO$9)Zgdp-K111SvU*8bARetJ#mCeurT+XBi3OFRnb2!S2xKwj_T%5W( zO6Kkf9IZxbv(A2M1x^0|c&IsgMk}91MM&_XwHc_D&HOHfMXlWSfs$MTGWu7CDfxOW zusoVz{!37Bs@Sv3wWPs-)&cn|KtcftrP?9H#wJpTB@Wy^?oxF^7%)jd;#3YKDY50v zh>x0!rah4yD}C98R?Wm;f*?=!R<0d1@sDLz&JF8N)AB`WKkpKwn3Xfii?iAYgOoVI z=@AFk5_dBJ1YPX8JWf|r9*djIca#<0aJe~le=57siyBw`OUGb;b*fAim85^vzvcbb ztAsfUCS#-#v?QD0fPw}-Xff!JXa;>$y7xe#0W=^;=^dlRaAmcMZzEWuaI)Mv{LEx`ligGt<_ z-cvmClw;i#eu+Xw(cCHZln~mOIEhSxkOQ;^At}!aScI^FkHHB_eR6@qj7yU^>8&7E2n`@HJFk;XVz^vYjqx^>H>(-;%qDwdaN_Q?*W?W6dYq+@B(q$tx61`s6n z!)8EHI2clI89;)4CDKC(sdk@VH5pHK5Jobl5-~W!QwSwEf})uCuoRve$Rz^WBPKmm zcLtJYh2(rm;zG)%+RXf8??2IGQ`WT_4IXt`g{~4e0GN+es_Sm1*HX7=02nSmPi327 zXLEN@x}YVlGc(Cnbe%Kp^qX;6tpjoZl^`S~g9W@M2?(IH?#ehuQfJ=-*YZK) zuPGW@z2!aIM)Q^GG>T%LoWW0mWaqVotcEjItm=af6Z$R99n)aVqb5lFN}}gzj`>au zOhS(Oa~ps@>I6RbvXr1fZz2b1Yn!+4H2NSirIOXkrNssV<~#xfm0h~Eo2l+&!5+w~ zg{FQ=G3}73e%-M(Jh^dj_f6Wpxdc%Lp&d^MG$A7HJ6RvM=rQhPN@cDYgFo3s_>RrA z!FYn?8%;7Yo___4PhFu}e4&6R{oz8Ni0N)2?Ak~B^h9p$WWnV^2O?H0b@uIbK@i@T z3jQRd7}qp_0@zr?j$Y}Y&n)psB66zTYl z?2j)O$}5nYZxp38=v zXG+GkM>L;{f_|&dR@Uk^ka>HiCknM4dacE^Z;ji|MDjl*9^YtXTyg58T+;FGyj|X{ zddpg2vK(6^uB_HBDQUK{=zIG)C_QWtWJyf9kp#hBHm19D3>uDc9>_Y4?ZZKAfiZ+0 z#B3zPfrQ}WnD<^dUfkPMbcYxmmCl~4c>f-X(O{GK~!Q|vd5PE&U91)Jwhn&IMcwS1CORCnUj1lfYS1H`y zwXCEb2pEzA4@5y|1=tF}%`0m?{> zrh*qHH0!cQ6kNR4pGZ@yPNQ+U-WRGY^C(oLczX+f73D+rPyiU%e7RJ5ibHJ{f7+bL zNv$7er3PWBjA1}_f`}v-93!L%mwMVK$HKsvTs%DG=Wpb; zDFW9PoRyPMMMl+*9JUzXUgA6H1cwS6z9OfYQH;zWmf1O39wE7>LG7FvkI`(iE)u-Q zh??7tKwHKS`XKU}zO7pA&9=9lgAhN7dM^ujckJY8uaj0Xd_A4T5E z*|v6cs5gc-5Lhmdqdw>(o{$@!Vo)B*$EsU#0UUCH#y&}eb?kr%gbEDuj+BFQ?hxvf z*@rv=fD%Wt3rt9bPQI;WZX&Hg?*H0QUlAPz*m;=cBE=mHf|)5P0j?LLcL?KM{J)6+A8}J?cM5jbG%jg}P`G2k$P%G_XG2l8 zG%J8-k7B&1{5`1H)O+Z-ZExKz@AE&ZA~pYE|Qwmh!zmk*NOB zwiPxOp8o(e7up2E^LmE4RGQSSng+wRV5d#((oGn8;c!H*L2Uo_e>z}>#O$E z4XNh2-GK^vW~Hgn)B`RVRMBydiM%gIrfL?qt!z1hp&1Lk-Mo-`2ZRFnB2eiBWfO!)MhR(qQ z^MU+|-}m)EjB^P3AqWE{v6xAu#5+FfLxY^Cju1VnK<&iJiU{kZ9%sdxI~`?K;@zJS z_>6rQl+dYBySO%0z86&g01e*j>J`{3+P<5H3rJrgx)m*N9O`7Ur6>F(bg0p~wZG7= zoI}f6avV4-)_7~gBT=Sp?m%tB27MeoLa||9-(Jz#R-;3=wkkLIUE1<`#)o;MTsG>^ zxYBM~_VUypL^;G2Cd_4d%?re|uV}KJ!40p$^d)*QL)r^?Dhy43!}i*>FEOKKc8n0b zwwtQncy{;fm%+x5A1`pehcM_=HEkZ(RH9p1fVwd5!V4Bxv@YlhlwQ}g`Yz>s;el+DsH;eT@rN+-(t`LVeNnK4 z<@F%&3iV9;jd!TZ4>T`4KGsXAy~E_L+iKnzqyeY!yZqFgf1S5PU z1*1X_B<~pBIrya5_Hh2lZ;SN}&}p}6{{S!gFKXR7%NuRjx(iESKft69$x-0n;;l%Z zf%|?<{{Te;u4^?;;Z~!EwK@Ka=qliQmy*D8#(oGses48Px-F(@To;4OT0-XQJzkR~)NX<6GyPZ5 zJh0R7#Hoob%aDBA$kwVe{{X^v`|U*=9a5~dwCa}+=6gc=Py#pwE)U!j?4bFf()C@$ zRJE+({{VPD)fDvG^DP!tC+NPHk}wJy$NvB%$`6|U#njyJe#1~7TrSVh^-6#bvXBS3 z{_E(F>4MS{4T54!An+~F^+8KxC;$&KMECiRc?odEn7v*s`oj^xgtL` z=nJPY`Jj#29H7QN9=Gy^F;K)u`^s$a<*${o?|#wm{;OD*0SSjV4se2vEf-H?16tQO z4|Dz1eMd~QWj)QM5!|2dwIt3JT~Xv&f$D#<3c6jr62}))2X70mt4!0P%Czx}{!5;R zx@!l0-bd!GYU~2cNx}aBL>_-a0P4iZ%`#W0ah2rsHodx=U;HE-{THpMIgCOGmWNYt zB2@}b4ZIC_!5I7%>BI${RQ~|XF|NU!Pss+6iIAh(mhH_P1c4FK42^h+w-GS!!-cC% z5E>3}vbAf5(x}G1n0rX<#BjA*OR2H(5+*$mPB|TVB-X@{6Dn9DW>V{f5(JTyB%f#m zLJ%^6&LpIzh~YOSBOs8k>~Jgr7*v$>Vbg)_>D<$6Xc1wg42lAw56jM6+V+EqU@RkvhF zFOs+|PYcsEHI|seT8R2BAU2F*A#@xC3N0d-4qZA#2%l7Rj?f$V!figPB?yM%H;GVr z{1mpNMhwEDwLtbO2gKFSeiM-x(`y}!ECoWjo1 zKJ`c(K>b#ZH-3mvN<^Tz0}0BZ4l;v0^q*KpLIfo=BxY3xWg{T_DSZ1!Ap!_IpkXf1 z2tq*R15GRyENwu)M2{(yqy!O!=P3ClC?_Id2~jN@rMN`EL!j|6hzo;eN=$Hc`h^EG zae>mC0SF|Z=Qt0B6uX3NKs3mRGEyVdDR7ZKp#(&rx^SdD5_3>TwE0W)Oh?rMb7vlz zS@sm>^0i4?FL4ZUkpL`xIki62_k-{re*{*!DThb8Ngy21^bQd@_d)>^Jf$co8epV2 z=?DUFqT||RN%cp!D1bUbn{rejHyr$v?F63_@=GNtoF$3n1e!Mz0m@bCi&|v6k;l4Z zZEo;l79O#AQOyiw5`QEdFKa&G!Gf5YhJIWnrdhtdciXf}8_E1sEJa7u0mfWJM`3y$ zKG0cPxP$ROC-Xtpi$xkjl|BdNrQgjBJ)9DxAe``mDC^ZX038E_1Oi>51LlBsLI(-- zf&c*mI3CC!5{}?bL64FuSGTulHEIDp6&2I&iI^j`m3yjCG^&O?7Y~MgRCSF~of{`Q zjJ?hf0O@%x9ki-fKWeBzC$q|^dQOE}_WZuEA(ObDRd2==sZf2ryFTy|eoN5R)NFK{ zNv7t!^crN9<|)#+@dl=9yb=8Zqt$p}uKkNh5x`n!pOTHe5pQbREWl{#OQ4{TBj|^6 zkR#nVnS=}3I1vRY+Cq?mI7LLX1NtNcka&e6fH_15l)F-dc7Z7l5MlxbMi6s&1wK%z=;l4zuuMiP-Y;SnH~1CSJ63!*UyB`MQC5{zLs;PQja_`aBEruLuSI1qkV zTCKOQQp%Uv>I!>UGlf&cw8x!n_kG-h`7YM_tvgrIwW<&Aa1d9$)NX9)vfi`9-&BTz z0LrM^ZhcoZbleLww~ATaC@WG$NQl3SJkMBgub9IKI*7_15%iC!EErotxpeW z@2Cl)CBEeU09D**_AMa!4VH-q(FcO3a41|>+a;%uWm=o6)g(V0(ah5!)Z56>vC7Hn_L zg&THSIPIytNU$ln@ko6 z8CF^0yULiWQGz``^1WkP)-buo0Ldh&HNdxfWP|8~%Kreu_d5>S;3fY63)iO`?j(D! zUI-!}{MS3p!p^g)fL_{Ux7?ue)qFWz(r1-fj*dYe>Z!X!uWvPc#t7&A%HdN~*6LF< zoJeo^SONT1OZr-aH2(lP?7UNRwzL<5gKCzScYR5Ds z4+d{KFmv2b#9~*ZXofY$K1e*RPYu*>?*rYQ$^QUU*`r?5W1Po=24Zr5HR!JEvewo0 z>pmLab?2&hy3#5J(|IAX4^o1?#+QFl##-kC%n|+6YH3=4b4wUR;FG{q{{Z5f;O5nE zXOib|2l_8#qv{OQEQM-hz;qNCRrKvj;qH6D1Yj3;`J$$ec-sl9w7Yi=^!!(>C+`o* zJ-dPD6*bnmIUjT><05;?|I>z3+v&Wm=JlF^a^m6p3orl9*O%`I>wH$1K9oJ^c? zlpaQ%ZE}&^*!YZO1uKu*REL{UyWH$RYPI6J*OvD5YFdLK^5Z`xjL#I^`C+xFG?D)O z6&G%8^;^59-Tj!zX510|)ST@k_3hL9ll)SLwLC8Ume9tbBs>92o7NshTsQ&^n!H$@IH&p>c9+{JH*!HGngMfYN8td5ZoorzBd@pLZ&!#5%>t z!)tB~_9@TwLF@1b#gCfhQoX$}cT{FG&R3JF&k|lonM|-A{uZXs4By;VCbhr-@_*Su z>VDO1K|Xsx0aCcvwE8~}n8%UK6`B7429x)-13xT&s_j1u>9j!Kz3v>DFn=@^t~^;u zqyAj5pF{rug<0Mt)NUi}_JFt5t&{pMK}Sl{=;D>FKd4tJv6PH8jcb3(gUWf@wxBjO zkEiZLLYq7{eNo%1USr$;04vpqi3LVX^#uo>9u%Wc&3me@`h{xS!+K@81U1hiw-f!= zxg?ac?wTP=&f1G&oeFLGWp&GEXc!4~%0H?p$vu#hoE?V&DVzyQcc?%#Vh0O1TBKi1 zxcF)?u>MO-@hu14Q`KC4%Stmf0YrH{KH!ZO{{T#_1=OiHxAk6&!tV1tHEBGw5&4zp z-)P!5?*>7wPNdJ#ZFoQb0HU2loYQgrN)4)x45H_s;a@Y??<(9nTrlnzy4UXM+u2lS zm;=b+c;RerG}joNoE1d;4~=Zk{{U(sd-}k-iEBt}qXhIoScO zRH%Lys57+oYLu>9_L|Lo6F9{1wKk2#LfYbu%L$`UJ8vVfx_Tm%L>^TQTKrm;(rcm5 zAK7UziQ-q5@h!8Rs?w-kwV|{6A~CJ)YwCBqGUGWXpuNVMWlqk3rqjncSzZ(r-ECRy zAib~rvbRYNGZ};fWrToaD!PWBOHj5n>Iiort3#AHZ3WK29iZ|znjOWYRkmx%9kh%s z4I5c?LM?8x{DCXJsjtwrr?QXl9!JykSiT#!ebxJ}ANN@^^Fi!!v~mhYB4Ia9-;!LE z5ECho>G`gKu$Kf9f(lI-MNAnSCebeTK-wX|gTnJ(Cb#mgDLIf0LqApNVmXzE;#+E! z11_5`Ya#@39H8al85Hi=dE5``x1nKpdZP{PK+zlN&OWPpKpd12PqgG<&Qm~=0I2~f zI|q~j_(oJ3;NyiXBN4(04066_;yY5!ee^)X%#U^Sr@S_cj1pQG&-`6nol?@^Ft##& zgdnZq`|6r5t>jjg(W>pP2Z88U(l%46NU^{CJT5>&T;k#zD~{$r56=iv*?c!R?f?u)K$ z+8JAtJyjlxg<4lMg<3A$52BHPJ<9p+ldW9nmuA}Wt`v#yrSENSsa{cSN=^<3I8ZyQ zIyaW?p;h5dO_}y^o7pewL69f z(s*-S!svU<6b}-E6Y^0~=%53HW0er%9nuU=0tQbIgBQg$4(nP@`;{`h{exd;tTpe; z2f}^A-0_1;=~)4XHU9vTrA*Sft}zY)QRLILRNE7kkX z@kkKtp^h#D#K7Ts&k$=jT1~||l<7+kAos!#Mp`7ul>+0y1P)gXHvO8Fg*&QZ8u2md z%9Zs~ZD#tzC8AJu4m@T#Qrqpy!O(m~PgJPtFJNUrFejB~ThxBXXhRIXG5I32{MI$W zj(Y+AQgT$B*j^(})9$q@;^M2`F(J~uPKN7`vp$v9T*tsCn92*SI6WdgJ4ITw=(JR* zLs&T}hq3M7P2i7UfZw=Bq8;~rR71CVC&(cXqzs;ynYi&IEOkFBpxsE|`z>8#QEipE zf;Sio=Q@RBTD?~|$#M^=)2zzWTT+%<;URVhbb5uIpfh%pZM*qYC~CxNwJa-BAhi50 z^~cEupgH8i&eq+iQ=lqXpS#EdJuNIr4!}OBZ2tfW!9nCH_={E94x~XHmMiwYBzUUE z-ckTRhqUqY!q~fUZM)t>4bf? zzZ@2r+Z^DpS-8nOg1mLLxH_|HQ*kY6$@N~qXC8beU4z zHN@^G2(Hv1(-9^Fv@Lal!)-gc6jX674y{C)glJ zPpqZVfg`lcCE5VWN%n*hgm6@m2oe*7x}Qj93V0pdbHLT8V341^2>{{U3F zLIE`y_eM}S%6%xN4pj{W9VI9iY4y@slpaEX!eK-LnUoSFafJkCP=NeUj*x@NkUbX) zk^lyBRfWO*u4hs-;k5&f3gdF(>XXhFNei7^kgOb@cng#A7f17z&D<5J%~yXaJ>^N< z`zRbQNX2t^B_$%FwHZY4y&r<@%daa{>7o~!sJ*9w>7TIFsr=6(e*{OW=mXMogkms{ zWI~e&3SA)(lkF(NXaxswq(r3g0|^CMosNe}rMM2g0yEF#uGDDSPYR`>+j%GD`6@=4 zXan9FahRL3Jri%bP#kbF zoDs?cq@@{8zeEdhjG+a+<0v0>K&Rq_hbV}|kb6uzNeLJ2!a#%*ADU8Ha*;VmL7!9;JmC={ zR0k>jaDXXh6v2s5E|gG&b)L{22h{{CI+JL)R53q_&eMoDFKse*Lc3OzT;o=u!0A%c z-L~<@nfOoopwcif*^hLSB+65SM8pvaDNlZgYk?lf9AZ>cFD;n-(h^CP0~j!xQH;V6 zH5VN5!g$J$YKZ_N-8>!&iX{Ui4$#q(VH}mh^5L{C+)RTWh^qHjA=|0%Ab_!L>lQrJ zstM>1RVuADE!$trhd9J79WvIPXEf9VmUAAtL|M}<4Ki*X-@TYWRiNi?PBxvbCKO5m zFj7F}1dx$#25^J{FmfWCXWacF@Aax~1NIBs)jmQ8e)jkmKgu**Os(fDGB-2kwA7bp9LTcl>0zR21)?RBPaqgr2-UsOmYw%rk@DhIzd*8>YA}p zzXuz9urNl>;G5IY&7C>#FdH7_{q za%TwJw9ZIbI_9lT!rb>z@X(;QQ&G0JaBWI}6VXtoduaFKvopY7I=HyFxVd#|&oj{U zQM0IBP=Z8^%A@KmAmzFD3QjrrNrmF{eSNmI9ZKQkx1$_>OLzVtv*prb^Zb+=;1?9D z{1hrZ-36CRT(^6qQ+#~?0MQjSL0XMa+D{EF6b)gMx!e0)xLZ{)s!8RgPrM**wn z&8S~qk&FtUkiET4LZfRIc@hDML0}2?TrTe@TCl#YMu_!LySzVVbE#7;cniR`(@@o} z+-o?WizJK$8d|4{s@yox)7yiM%342$D_qnUT9b@BJ5PT#t)u7`wq!ZY-&54B>=PXT zg0*WJPO*Kv7yv9F0KAWao@i>G4`A_;UaXFFlUq7=hxADf-;2OoJXg z73na+EGy4=F7mOjUdFSDYa1XF##gIo4Ul`n^ZHJeQq#m2cQZ81f$u0i6L4Y6rrZ{g zGP%2ueV0kVP;nOQW4_}uu>4_cU!qjn+_B-%y%96?QMjc};(@17OI#qJ^PUK-$LOMz zjm&$bdvv`Xc1J;YN{z4KonghGx`Xrc3)ahGtr_iUQ)~`;RL)u%AJxE)v zWMXhks``yDKEk~il3Ri9gTwesOJ)6f*A=tmkkCGh-_!lw5Z1=gh+aFw6@|6k-L*lt zbUQ295CtxI2t0?1yhG&&*;}99a8ICFJ_~J1n%R8ITEbkibvHfQjaSr?=Q@5%Yr)r4 zZEh>NseP7KRjaz6way4_}Z z)G9Q6?n<-ac9z>!s7$rhKf3eU<=Cre;XwZYg7)X=y*`ac$kS+sncUsy>ne-xKM_9a zP2=RE44G2v3I>9d@Q#p5Ne=%2wR!qrI{ur0m>Xx&dIIgVUhhWA^O`I6)gj~Kd&wTi zJsb!8jhSMrw;V1_PBl1AXi8#s$M4$%%sTWI9 z83>M$Ks(|S+L;)Rkpt?UKNJb4XyrME$xDUKqoJk8fP*Md48Oz9Oyv73_QZXrqe0<9 zwJ`G9^vvxUgj+|LY616FKkBUJ-oiO{SbDx@U6RBy5i!i$>pN~XwvZZk4>^IcQ|(9PxV?(cG5r!EG5!| zjXOI^A}QO`1LV7~HKXBf(d?B+Hk&s%uRE=Hjh6JyJAaA81o|M|xV)!Gd~b2~SikW- zvun1SfdR%P#d&%c8kVVe!$drie(*R0=DGNnPG+8H4>Y;%l6|33^on&ERe|h+*AA5N z!3)gzDy>?Ubz4!zzyMo4FHCnxo|Fb8r!t~OWgAPNOdxqpEv14EQ=dcu;YLKGB#?Mc zB?M{+6O|#52tg7d07g1NAaj(78;U5W(x8euCsAJD6ukWw^L@2&WABcLUdKk&S$|AB1>M5(4bz=*Qkx$%K?D~ZlliYhrCn*d zZ4WQZ+qaVi2caK)dJ??8rF(sIeOkq*V;W#YEpOZQ4yNjq9O}DHVW;~n8;xO~Z+*== za9jlLFo3hrZfcSCovv$N1RhBISE#bFqi7u4YGI(9jIT7!e(biRyta8x;Na~)f`z^9 z?O^vdox|Gk6Nm^sXPZysK5Kp+KIRsbJdo)#*}_T6y-t zLF|9xOJ}laQgJc-U-(>~u2p>k>P%}$BhcgUSFLo5YBU-uH*866!{)M>ym1P`$dTd8byXOcoj~-ybMjl>Py+kl0oACI{))K)@!E6Zjy+@XHU{ z_aFY&O7tXW*sm$!%ZGl}wPx>zr83e!i`KaOM0y}lBM9jj=?Ef2gZ^o3o@Gu-GE)Kq z5!Mu-B{<3ft~rSMuRY?O7OteqZ=k`soaK5Rv4W+$83-u0+}6^WZ&|+)q#9R))6Go} z#T2MIKzS7YV4N?c&nFx#4Sz%XW$m@)5I52-pKuJI-E25+2MR+aLYsEeXeXs48CuSX zX{u5!cnzr^3%wVN{{Y>ym8T9g|!=1xHIxoF5AFC^KCCxyU?!%z1VQ1FyMOk3*Xt@QM{%q(Wo2>sjcX? z+O+~411f>=yZf&hyHN1e;~7*vt?P}h2tJPJ{89@)OVsW4DgpG|3%hF2k3R4+`&niwWlIZ{pmCDt}?3DKzG0)Xv_@eptwoyps#t-C!D_*^A_NPwTkHiUsA4QX_ zY3|Z*={}J;8=LGx+VHlXY9F^%0GY?;ulTyl&eI!nOnh`5C*-Kq(r*RcpGM(_CAn2R zTW;H}7NeRa^vEszR)2x+H`&*=ag#{M`5do7dq>W&tw;zirbzk1gU@&#?9{ibX6$)J zTkQwyd_W~Zrd?cXuHdL8yY}##+wRVxb zmb7JgOOF-Tqg?Hv$5QHCC-hr-Ua@bfQwEvaQ??#L3p%B*+qBx02`w(jg_)sgcXl;_ zeR63KWrTmK+mZ~*k*Vnu+5ng&K!pm9Ygp;zDGa+SmF*Wkf%3rIPtSVU6EvPZbE7NIORa#ojO0}sv7$vSe8Cjkqxcf!ZsXf1S&=1fc_WDsQ)2T-R zfUcG8X;!Y=ouE`0pH&S#rM5IddrJRiY9 z+LZ<}OG%T`@Vf14pR{7Lh}!%E*k1U=$SV_H(VMAIFQ)>lMm^AEc#7WJ_ct_%8<`S2 zJuST^?B3}#obn6W-KX5I1$g_A#@bvt-?=acqS4UnUC{xQcf*ec2q--(92=-o>*9~e zYHBSkw5d`jZ~815c&^%xGUmEhp}eXaZsPB{_WuB69!k!m+(YRJ6D!x#JD45WUTaQy zYwA6KZ3Bp2m4-lZ>?#B5s%mXMLmn}-T~( zX@mDL2m8vlKJmeTgCoQb45Yy6%<=SBbj_zvq(Q(C0qt?s>4#eH43{wA{t9|cz`3z# zfY-MLqw0vc9E_$o_eKelm{1%xQU-fX@+LDlNrD0?$GSR4>XgEvo)C$`a)LdfGBZ3R zf&TzhLP??*Y4Vq!aO~j#nC;Eyin$ln*6M$|Y_wT+a$8l|Ix@ z3bN%;!%w>UAB5y3j_|&rqfzp->I^)F3H%jB@E{ZpP)-sbBxNqL zmuX56H4`C8M4?9F4inueBz=%_xab9+NB*!L`C1SAhE{zMy7WZkp&G+8l#EAePXId! zAI$_JLWgBeN?4y{9G!*9?t$*RIdMFo<5Pi^UHKT5VgCT4uKxhKeUumU#|n1t-GMXu ztF3TzH#dT+X>^-X%)P`xG5V{GYZ~3HCM60JZe5fnFsumR;XZjtwL32zew`t0VW3#aH(pBp=jVW=L^xsq+ zTw6w$nC_Mh-l6u2j;2JnrON*L>g4%!_O*kN8Bw;ds`dcLmt%LL4we?*X{g}Pb}-}T zmFOuolv*0zdp@Odwzp-KyJ=I*a(!1v5PtV)5hf;7_W}p1hR_L#0H^XnAWY>Pl!J#E zQvDDBnNOY(*Ub(aDVIB>5)3ZL1#&kunjAdF%X1y9i@jpCCcDXCF@gT!akQgW=9y#M z8&&x+&_S2tYVW*bT-k=6mVKSA)$naL(}o4^t@PRy=!R4cd}AS4rEPCWd=$e!?Nne` zcxHtrgI)`dD|(f^8&(FRiP=R2~r@=yF zIVgeIMByh4;Uo@noFp3|925-ar4TZu6YPkN&>bKI;7_6e$_68pVIoYROmKiG;HHEN zw1+BEIP^*a1{`KGpMK#a;S`hU1C$~T(Do2l+NCagPgapb4drPDYAY>W! zK*ma8`G`ko2|lO*$%J&9UkBX=KZ)tnsb@v+$!ny3OUv9%LdTKtH-+pq`b~bC=R1~( zACmHKVXDeho6E>lbhvP-d2SB{tJWHo%_a&g07oRRFF~}O;!0NaW&;M_n)Ypt<)a&L zgE`di05vPz005Y5FBI#0jb~S=H@pUF(#}u z4`C=Vsn}Gxy8As4OQs21)qFih(!{;3-BqGoWUXx*P8O|m+~3~3V-%Rj44o zpez9W5O_N4s4cNj@VpP%wOjh0L(O*qh;hJFSn(FDb(^|$En6*aC)W$wXqIN%Or*yc zbV*ry2Zq^V1#04Iev8sbEdjU)BNNK=9yhzGZ(&N_o1oS?`7ct>h2Fg{HRDY>rR6GB zX*NwC(FK16(4|XFby|=eQO7=zy+u0IssPG$Lx|;gD;+;meYm2^WsN?o*J*k?Y*|lx z_f!MoC^Y`}%qcMZUg#|nW4xr(25^Hml}p!Z?_dDY1HY2gF3L?XPSFIQkIe*uZd~#j z0Fp_-Shv0-w4&OMq)W>TPTo)8wW?DUX&O%w*K;cz_-4=td~Pi#aBT7Upz^jAu5Wb; zwb@DAs$fS;=v3N#mIKUXakR3dZA3Dg0FKqXZyv}#UE+FdI_+w7#BGL;a#sGC;aY5^ zP4!%N5hO~{)I2uJok_P%BQFkj)9SYx$iV3bD{2(&=(d$HfV(}OX67CXQ3H2Nqi4)- zq7M&qrnYUpMvu>uBz9(V|MK{B>h*T&`$j*)N%Np^ZKeZ zXVoz=jFl6_Cd>k$bBywYMtMi|2c#^$XkUh{PA@f3ApbScb$Ztfclt3sG zawmlQL}fnEM+fML_mn-RBqSsZpd6kynH-?<7aO;lR0(eK;h8YmGOEJ4EGY>3$lia>iG@kk@Bte^u=qW+X~FCoqFL z>+Jensd#Hz0K)n0Z?tRLqqdUm&VlR}zmByBI`~<&$74Vw4)7MQgY8V!ixcDA(NCD zb0i>QH?!0^u#lKx6kvUMAbb8jLZZ2W=k|36&2s zRlKfWNwv#+>JWQ}IlMXX9EHNA^`$(%s3VL_uPDtwQgin@l~R3N;G4WZcTtUiz-Kb# z9)X(8jY^JVNyl)1vafNi`ELE)Ho)MX)kb($o3i@#SbxfJuG{!_!if%Z>eO)lXCTGA z)-E*)MwB!i*lS~j2U=dX=9P9@JeIa5Mt?Qy*+Pvsd^DKce+uooK^ejiFx@Lty#l2| zDQ(~wpVe8V;ksslWm=@TnUJ@{n8`A{mxwR5M(QGsq=B+=2sQ1zJ4S;X!BV4xgdc~M zVvdt(Ztw6U@g{$|@wFYTx|f{#wc6iMMitFFR@CY0G%c$*y{;b=!lT%-l`2%or$LPe zq{KD513+(};WPJ6c~KIekRTY$eAX|BH4m`Zx$ML70czb;6lfQ^01M_?_Muk#{mc(9 z0npZkM>iqGL4GAq2MIx!@iS3J(*bv^MdDf?rA_^Ipx_sBsI# z(GIuPDpM0Q>JWZQ+!On@<0VydbcUZ)G=iTf#KeUFQsqiNB#{fgQ!SB`gt#f5C!`2t z=$crZryqg?-5aDr5}&~VBn*^_JLM;|`-BqwlYkUj>~NfqR1vL8opu^^7#_!9h2u4^ z3RR-_Txs$^&d$fldqPi1&f&=rgXelqxpilBDb<$_+E=-<)F@ujYw0*oZ9OVF$A@k8 z5NcD3RsR5+)p6OTp@X9=p<tnQti~{e+8Rma9SHyjWFQD z4$sX|>J4@_&(Hg;4UsFvU0zhxoazjwUgCESmd}YRR~F5sNPg|#5jgc2T|6OTZLMDV zl>RD)MD#MCeje4WT+gvo9!+{=jfC>Iu4%I3)~yE*hNBBto!5LZ_Nu>Yuz6*0WQpgF zGP5c8gHzHU2LsW3(^J&je|+1^c6m<&E8Xaq zpKjBsRB<81K|$m-%V%l2&z{+9n^ZlXg&r=xZPO_h@a%xSCyO-4Us*Nu{{Y0LpPvio zm+pJr4w+y92f5KL>QwNvX*UmbGapq)N4KGOS@yLFYvOQuj#s15+p|u#4d5}qqRQ7S zYU$UbRMXq=6Y;mx*YQEH-6qMDgFJ?~k6zb_*VyeRR~0Qzz&;@#qV_a({XVq@)$=wy zjIgx)C-7cRSbKF_;3)h?VNvZY?geWaHQWy8Fca*jZFz59#k8u2ICU8a)9LvZw3uVy z04#f-4^(ELZtU)MG@08U>Y(%_b`o^$>@IY-wwT`R_k|)~oZ$ne;_MTTb>X~6Mx7m8 zz1d`fek2mePqf!C;&H5|4e($kT z4#5n96^+=8Adf9?NmO+@G`H1wU>&AiC33vCW#t1#rUA^L!o2Z7ZC6mWrU)Ozd;FFq z2Hxs-US%WZImQVm5ew1UcxuvxLh7!4LRPg4YBufJZot-`#Rmas=4swVGY$>G_m$*d zr)sq;Ifj)-A5ugwbRD$(B{Nu`R32AP@Wb5?yLfN;M?b3cHnukQploJ%pY~OP{lkD1 zdWhq+44L^Vclu2m(@vprYnpTJt^~8W17$HAXN4Asb~;igw1!*^p!wH`{{VTcy^U-T z=sxnjzL#rFwp4$11B*neTAqN*%h6q@Yl)NdTQ=-8={A|kXn;^*>P=&BUdDnzABGj{ zkSpk{-r^hpgY{MQ2zBj7_eK)YTr)6#%~b_tJMpvAS{Z085T4rrM9FHLCX)V5&< zBriK}U5;T6rcUO^JT1*H{*klv{Loq35)!HbqW zSIdZT;H2_~0H1bGRBlL!RTm?1O?2>GOepT!B{6hZ=Wgvdxr0t}#? zyzr&ci^P#A7$D>!CX7N5GsL7*8AKpZf$o`0v<(PC4;@wwMF))gDb$_IoaJ)5ks)(- z2nBR{F_5o6JSsG2?ae&|8gAqycqzQ@I8n(c77|RT5`r%|_FNvj;P;inq7F{s zSE+zihpP3s^g*enV$hDISpo+#xM}15P#@3gRiC01kbSvN(orZATt_gRMn?!yK;Uk| ze5K#AI`lxL5SDpC{6au=H2!xH@Btazsr32|A6o&~SmIn#W5eX5V zR1QJ)2>@HlV1dla3H3m`O(V`B1C#+M?H=eDR1#2^U8Am02h~M6lk!Wn5|p5mgeC-! znhKhmqSTPtGBG_aT5B5Ge+PO-;GjnZ1CEeHrN>I4yM%*GaB`){O|Hy0C?Hz~dI{yi6yNCw-Eyf6WXwtq zpLK>$9Q!XfcW`cR-saT!S|U2>bJX<;&8YfJc@1_6{1ei2*VWu!_Uv~)y`br9LDvIP>F$rBgy*%=cQj!HUPD1AFpzZQ zWimZeVBByJDP5Wd&CcK`%PBR^d;l^@SvMM(sZGL|ff4$9Ah%agpf^Y*t?&JXi(cZj z+t1m>Mzf*nxYMM{fvnsCoWk3&uoOVumi3erwEZ%*R?W-dpvd)GqK!IYX^1_bx?SiJ z$tWZwv`=1$=`F$ uJ22+_Zj80HJ+2S!DG;&cgJAi-@Nj~z9kcd#90|-Y*5#ywL zpyVeQKyaAIl!q8Z! zrQf1R0Ru!K9H0}J^ifMPf?c5rWG4bLbm>g{RL>Y0E9{)@-?vss0p0LAUD>9(bnQ17}KG59YI8phBL z4FI{=RCKl`r--OrIEWMaFK*Bs@q^0n*6k-$pg17M!8+sy(r<+ zA2?d|YI!uxUAutjEXp+BadO+Lh8j9hb=L(tR$fLL-I!iCOQ%)ZjV+mAc%PEh*6+p6 zqG^n=f)C`b_afCCwd?`h~5ym&9bOj}p}K^u5D?@jr-A zVd>yD`%S0L*M}d?dpe(a#yKT;-5d9p)N8u{V0`kug-3351OPb4AwANg4w6L3Km_EN z2pH!H!fnHZ{s?)>0JJy&IfdnPy$-ECYPI#_el6w9`7cvH5Ii8moi6L$QI)D`Uu~&M zyG&H3B0WT{P~vH{5fC9L;wA?Qd$$PvR1rKT$3&!B96-oM(mFvWypa$HQEfH{Oab&# z5x3nOm_X;AAt4(_svJN&T;`9NQD~8Z2tgoW(vzJyfPQF92n4%;fq?*Rh)vBTNm+Gu zi%KQI)eHmZxzh0tn_2r?a6ulS2CoK#@`+qO;@U*ZD7=qSAqS;6^~wbCm6K`WJ1dd{rHACKYgbORwH0YN z2Y$RDzHmS%l)a{XmzmN0M*GUGrEu1V7j5VL7p6P|=z+;b2`AA+9P(7Q$e2ML!_i5H z;vb6R=2C1i^#fc^2P$p&YK;6L2btFE3VN+ZF@ONcC2Dwg8fL?S4)4U3iLcE&_mh!S zNIufHbT;jv{n-Wx{M8y9xbT`p3FSyMs14r1BHj6RRHO1lAe(YPmF2FfzLvaP42GHf zm!>!p2MZdm+Lr?1%{z_=`YJX?8S_o0CLPq8eUpr+8O~5bIz;D`3Sk?95h73%gd#GZ zND-8Dm_&LYB+3#TCm29aQle+&{ZmBaIfs%bG36DbU@^wzG85fP@F`l#(hvR!3To8kBun*0Lt2JF)twg3)Yf)Fud=L zDLiSm^?41c1t8JU+To(v2K7hF{kn&4I>4edWj3+Oa2t!dcPbE*K)z`XvwO4m?n zxpggYgTnIT!3GyPTDFAmqYx2Z<4W5efz z5&59iI=z@{UdqgKUfsZ)N3y3=#MZ%%*-vo>G2i5?QSg;91@*`tgZ}_3{VxvKQ+LGD z@0|YtbQGQ9wo_<#*R^>d9j}LJ(;@Y)i=XJxfU|r7dSIxK-DwE;hfP%RRjD%x#2!k7*ug0$(h2g6_mmEp;4ldaq`)3|($ty2sH zoO-GXwFNd8JctXxYMv^+qkQ(-k>xiE$BA{SwXTh=2a!#@k@Q|-r9a)cWg=Ct&EHme$L zF2M76W5dOOc?>DLh^Qd{O>m0xwR>Y+&WZ! zdYeNS0K-#&(y;t9uD4UPH0ppW(!lLar$f^UsCF?DmU1dN!E-YSK#PsJ;s3!uLkHLCd8iKWj zy+PY^^Hf+e3Wx${g)Wpq=hZTUvmMfB4yG6*4Hc!$H3H7W+R7KU6mfbk_gWfGp4~c=sWrvGnG@G5Lv$21(J{$Dp3wSkW4Jgg%jzBx7Z*aMDxs|> z;vTEi3}!N!%WxqF8%uF(Zptk)v_k7rUc$#l*9bo8K{)L*pOOrEo*c7#iKkWUKF5#E zSg_IU?H{^#Kh%%)SDk|)0GUA|AfHt7k>*ZiB4F}@S)NfRqKp&4Of>-~q;8gNa0NJ% z$R$9;BOSRa22l}oA={`FSEqolZ>bb$3# zs%sW3%c}t%fpHr4n&(4nnfV~p5eOh0%FC&*Sy4ZHIF(MfiYd9yVg z#QHQ3?4awNMb!fVwpMw%9;5TPGY9HlN~Jk^^_9`E;9BA!s2{wTINFNGr0=ro&bK)( zg46U{0o$GN0fm)z)_&4uLS@jk9O1fJI7CQ;<&Yx_7ejbA7Y+U+1g(aNBRrMow3mu{ z#ad=Y;6e{VejEf&;G79CW)Lxy3It^zL=?&aILB%;gyj^SgugV&OSA+?NCFg+Jg5Z5 zQb$M`lpv6j2A60EL=cj4lA#vnK~JxAB;g~345!kAWDeB2MF}R7A@q^q38)e$5QLFU z2tos-iH_kuk}89x9@K~Eji?t$L?J-Z=`fN6nn&|Y3}pc`^GzrpByfSEFp@h!`b-E> z38DnLO+@^VG>P>r(!h~ad07dnyN7UMO<^0~W}H*%nPTZ~ds zcM~c~E)p`VWwYSwJM~vqB6flYvibvgKI_JK9+4vAuUnV0#1B+vpDClHrBpw8N>U{w z$_|1%Q9Pq?j?`rXNSt$$jFOTFR69l>NK~n~3zm`0tF;HiC#6M=A8Tq2H($q9pQ>LIpWT=#J7r(TF_CB>a&Q z5J$h76DU9gier??%ApQX+7N*u1fG(d*^-5z1JUQz1m3ML)bJ(L=I`<9|(+EZw|FTr^=8WKRVD09Dge zF8eUpV>w*(c9z%>d7Pic1;d^tBQT{0l!q~dP~3nM08Ai=m_i^tDK)A4;<%+q z7r1d9{z|3Q-8K?vnRBpVYWQk-{wr>k8dT}+ zWC-a^^$z0=#Hf>y;Rqr=_R=t=9?Bbue6FORj5q|^U%|?dE^!!;x!qh-wqbQi1LT9D zEn{Ww1Lmu~{?(AtTuA=_ev20SRQpo{Lk82q{5_RMuz7ux=>wD+x3`a~2>^LR)3wIZ z+1C`N2mth~S?QHLrqr%>&j5erYSU{dwV}KO5VfS{bpfL$40Wgu}6eEvBc9B5(Oe8r$D1@ii3LK(w2q(x&1SK$3 zqX?*{))F`YImS^8nF$_5pm8Y>3J6|}wl&-jEsxAE54X*8SkitTm$lTPx_wQ?8h^N6 zO4){!n^D8zbNM}mV1*lchWW%~wWP0QMf>fkxDG<{w$%%3+|~XUNCWX+s@SoX)WnGm zP-Xaz#NS#`Ey<_IS+-iO9W9?{tsoD|S8aF16sEi1B}2C&m0Km;zg8U>@MIjyF~pH`LRHH#YBTiQ30(q)e9Ao?pKpH3DJ ziivftDr4@viTUAm@ZIz8wALENYBE7p{8Z_6y%ES8kK~}sw$ zN{pjT#-RbDwS#-&iWEl6P%1yvjDCyG>iWgruX-&l1A|HXqqV)E_-38BZCk&M{{YH^ zm8PTO3+kZLrpB|}2wtMw&GJW|0;h4p=K9nvnei6WX!KRvtXe*xr%lc-aezp{{E%oI zLVd`}RU4Jgy;DYuoJ4JGpz!`I)h=mkHJM7L*3*FBc>!;DKK7;Nl4?~l=Df9dOUku1 z8}~ed=aY~I3A!<{1SPGuEK-9IS z;3ds5^uiAds#{gJvZ8Cq6$Jfoujw8dZO)ZO>&zRfw{#G@_`$#OHlU0&nfwC3PUva= z6R>b2bE&bQe9EKCeWChw>!^8zK?Cw!uPW52DpYgaK{?MU)TS%lR=ap5pvn2EY9+6; zZWM1Ke*kHKzL)GX*zmpl?P13%Gt-9qL1mag9^q?))5?0^ta zrqM;z>(U<+UL1d_`X!}dUdD~Xe(gre^4=k`Ws5C{bZ*?!^M%_<)r}oFme5O?fs8^8 z`|U=BjWYU#82%a0=&=9OH^|ReE7fXjrppTNYe3mfLiyH)^ZQ=gX@cs3 zs697{sZrQb~d4%(+fLMwY|EzaAVHd zm@(|M?4BK`TGRl?mICj-WQmf47M_c}gU&4u88CTWpP}2m;JCOSXL0$hJ;%ONnJ6gK z(&#>jr02hA^hFIW&Vcx7NgvHBkBKg|OEXTUo0H9&w(3L>{!z zp#%3!`pT6GRO!^-+HGrq!Cp1~C%X@*Dlve8AP@X4Zw%|lQ*-U>f#)z6W6=kp+;{bq z+~Q72Q6dUcC?w|{u_XM`-SFkIj86#{2tW+`BS^-`2!UlMpC^e

(j$cC&QfGR4)MQke~?&A$@* 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%0D!UNH14l&1g9jB50i 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 R8N7v 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 z zYJl;>WLcfsgoAM)QG7w~=9G{c`?dw}HQ_T5)@=x9c7KCCd(HAst$$zg=F5W|(goNH zNvsgdY{pv+cl5ZBPGwZta27^kbWdacYp6Q4f<&$Dy@~7t&_Kqu2LFev z3PnF0M5@zv9H&C$0_0&FroslBs0>Ki>1o52r&yK`?R`P2o1b4<#JbY z4v1>c{wCCX&aq1whZfA2$O@v2*~U? zIitj&2PgyDje~?Ig@OWD1I{gg=^o-u$nE|*y`{e>nk;;zlNDdfK5PLv>U znc~Cl{5*2MDB&=D8QbOcYjJUPaPTbiqJ{JuGv;bAFx-ScI)q)Bx}d1IZhu69trkh4 z%WXMtHT^vfgq>I8@XN*`o+bS})*8GvEZmCt*x$C0$$|e712#(B)JHcg)@jA(H`mK% zwDG3xS9U`-(cR#P)E=Mzjnk7e*f5kWgc!T@|1RcT`ln8nv@ zQ2AUA0n#F?DR?n}&@g;R;e~SG{Vd4i(RyfuI6g3Hw*GK#>S8~-_Bq-t7PRD9R=e*G#TDUc`!lBA1dad%kj zIon}H_abH=zlHRj1UfYOcSVMT@?962+j^mOcVAe~M)dPOXUvPt^zV~(=CTEO=mig- z#=?nDsAkF5k?uxU+m8QMcD=ryHQf{R{_5x&+001teK>%Yc9vi%yO*D4lOpXzxu6}d z>HCm*$f&UYea>nNH1`TCv2yfkAR|9H+CmV;6?51YtD*Uac zc`IXi_B$NHmFj8M4^7^>Z$}!dfenRA6*zvF{c?Y|FKfM?RFgnOXEy#EBW=pPnLBNA zs@o_)SJ~=FZ%;JMrE-a02w^A7AtCrbt65nj@9jpgqi5Qx06m*o8}}esDhnKLa}Ebo*ylC>?anpD~vkfB_s-|qbME!sM!eQ=q~4C?(6wt;890Nj@i z)%qf?U2!RUV@&+@Th`?Ft@4GX;5SN_+cvTXFQsRy&3&8RT(Ga{4vlU%#ds8^MBzk2 zihv$vsdEkxlX=}d?J>_lY{9d`?tUBM`H{}r#fAt{YpZ<8%4np&>!tKeL_xS&d8Y>U zmYxhmSk(TmNHo-(`Ee$$XLMEc@e`|AvAS<*uVd8vEn8dPl*ZlWK}2r_rbT`v?U< z#aE1L-tPEZ_U&EYk1#&(C-z%&VjpArPDeM>E&Yt)Fh9c zEi#QyF}WY6-bHwu2!V`JRbD8JYo3YEGh1K(1k-h)=lp-xGO#OfP;C(Vm2r9UX@&g~$ zd=9Xpyx|1(*D*;YvZpyFZ`$Mv9JPCZX zV|o%_d9+&hNsSpSjUr*%uk<$zclHoc_?^k zCK@FxQY}IDH>= zOmFnkl-);I8C44;ylonLNCt%i?aL`AHm3@|??+xL#EEIz(uNWTIIEHVffwRA;9 zf{@;n#(%jketSfFd0U;1aNg6ZblnC9LCm`DNwO<|SZUiN8NBOaH(VbQETY%|5c99M z9#$)fX}#@o)V7-G9ARPg_wBU$LoB1{+t1|X%9FuAO>ZYQ9m~9}`+So)tKObO$~WFa z7l+k|*?6dyP2sA^TQ>IV+YTQSG#{&hsJ6>_#p>vk@B<}fNTH%$fqm@dWUIySZPst8 zB*s#pOi5H0#VAph_qg`Y!`?IWpmN-zgnRE?`1TRdwUcT1rB>J@~QlN4r@?0`tU|4DylZlShIvrC_(SP(Svg<|dNYJVWCR*x-GG5ffeb zt7FYgsecHqRMa-A2Rg4Grm^lmi1-ejmazNr`(ixj4oj+6o?1Z8o=51MM9J0M>BA;o zXOA32`i@NM#|el+36luvP48T@=7(DRKit7W=;z2jZ7CwJGkX0_Dqb#(_PfdK)s8UL z{ZY%?+6NUx&fok_grk}z9xF{It5q37x**Z;Jy7Ab=AnNy_&Nk07m-UBehaIXFRD{B zmm%;rOk_E&V=obek&bAxI{y!>KnM;^62o%rmgB(X(+=3lDM681F_$QroJ2s?+k;>O zptk(Flk~S;nBS#Se9H!j8wOhC|OyV;|S)ZMq zzRO^R#S^Huqmt|mK!}FSatpzP)L+G$JVn8T4 zW7NS+jZ-v$-xAK=Fpxxr0(oLwAjwEB1*ngy%L-zO#b?Tvc<5YqET&WV8=8>xbP~uy zgUe3^Tm<8kImyS_fmq~HkkYZXMLQ(1+llhxwxCqq)glxCK$EL1BH#HToaZRbMMs`E zk0*k6Ne@_jO{tf-4s(|4HifAcfrHs}Cqy)95srz?b7(1i{Y2qAHre!$rl!;v`4Yx2 z$j8IV(w}q2o1U2&ISX?YiDZt`=B?u+7|x}xHcebXKi%%WF)Es>T|3lr{!#$7b!q7e zAfl*lc{_Z!k9=0|0b<2XX!`uezj_u^zUt2xZdC0#*;Nvsu;t;gO~!oe>gf6)xYds1 zr@j|zu&EDB(~@%-OmKoYfuxvhk$36-mV64*rqMb{fh=$(SE*>XfaT1!7hAEK^d+;U zj>Q7+N10u;B$uE%F7s7CXUUJ;q2Zg~JKrf^*+OQt_*U2LHIsS1iKs<;{1f?WvGTUm zqEM|}DdbY>P;lT=tZr+~(f&ngiD9ocP^&Sqw;HQ)p*Mp2J6pu}y0G!p2pq2EAIHl_ zTtIkd$FhrISRArk{SCs6IDq(m9|7H*t=mz17zG}Or3`C(Jj_mV(e94#(pFh~65sOX zD;{g$C#9CZw?oWwiw1p;uX}fQdHXpxXOKcZI+D&EZPN;dWSUQlFQod+D{rc(d&{^z z6kpJ7`bJtDct7J~+6nR>FfdMi?2%$MQT5FC$LTlD>Tlfx_dWl?$-U6~_gH%VRV8t7 zT|OHs<}_3S>b~z=@o5>^Dx;ncOw2bI@K6Rt(>A5MK z@0k^Ig9@RhD;^=A#3GfF??*F$9VZS}*kd-V^F3^$a^vDY{f?Vf$rs8+`?Gh4W>YBe z$6y!iU+sV+8xu-z&)Rv-?m){04cG7AIF_zWW*=-VaS2K0%A|hvv46pMQ<8jjGohVz z#x2jPF|u+&Kl7}L);D+grG=T=NL3V&M2ye(;A2AP)J`u=?+ZrY_nfVotr_)UhjwIW zPZm29V^EK%>TxZK&Ck@0J>jKKn0sHOw_ki((GGfRen7RQ@Woy0+@^g$rZX zA!SyPI!79JP-B*4;F%_AdmbD97xS8XItQnes!tb~UJ`5HHqCbju|ras+S5cRoJfca zq1Bjj8|UI5tp!Lcv-s>3@?7``M~%9#6We5)G+rs_sj}!xj&_xdI#a1Otggc(lcI@mEzMIwV2l9CpnFNJhlJAw(1HvrT;_s zU9+Tjw`Y4|l4clv_rpP`I!2Nx$9Bb~lPu9bu)&@sjMv}pNx@<_ICxk#@6s9RH})C{ zXt}#030$dY!v=}XmfUA4MoA@6=^7*NgD1 zSr##71&2X#`l$y0TO4NUg-A6c$(eO_8+~CC38MSyPh`z9@!cSvbr&30qx9VNcdj=W_&$X++qbVNsk^H}yz>wU~<3 z6<&X|`Bi$>{FC|!73>e4&XIU@SewKU{lt+wLnaRs68lE`%BC|L^-u6<#JJv_5WF22?F(B}~3tduJ;6 z@2r4KiP#I#teMZdnnKnJVfb=p2~!0#D0>rE1T+fk-T4Tgj~2&(Q(Z+yCta{yFG5Oz zo0U&x(ONd*7h<$udd0EeT>#-}=?PKnuJrDu#h%{2)n;c&44hqm%GlbQs#;c*J7W*qlWY*b&bgELMG6zA!huuB$ zbo1XsrgA!D@l5$xXg_w_IEvf8n27%x$&kA)3{!up!6eWL!rVZSuJ~mshe56fJnF}3zJlB3nsnt?Ml8hWfmBx zx1b`Xu!s#{`+VYN+tseVU*PT&`*U*8{d1|&2`)z~|L{#m{b0BAK)In=9Q1zC{THM) z+xBZcR~P$4zf^BA{U1f=9?xX||M6{R&S%QGg^*L&oN{Q(Ij1?FCB%%$A%w^%u~1TC zIm~$okvXp@hm_?shvs-oVl|ReH#gtket++=KlZq`U7zdye!ZSg@@=~MRfc*72hCU= zx#`FtRFXEZ`#e%y(7Iyx+DQFXq9HE;Mi407&wUgn(c2TmK4LONkr5ftgQte>@A9PX zFJRyY`)4x!f%1g!mmivQOL#3;6$>HBA$1-!_MpyJ0xiw)s~u_=MYgYBwl8_rlJJgy z>q$!3RPAi6;aLw@LSFh(dbf8&z(=)};pi})y8Xe{YhDF0b8fDm=}c##xNmZ$kOlV! z)A4P_oX&f7~kBnE( zrS;{7SJ_DJ>Nc{%tZ9t1DNLFyu?F^W{n>7t1iUP>9XSHqwO;25e`8XgKAxxPAo^-@ zDGzVQ2sR)+T<9Zq8C3HbIa?J=I$b4H2wG?L)gK5ukUf(h^w|6l5O)y=8XrOn@A0W- zUWn@#8~xgj{hKlU+PWPAJa)IAYn@{1dDtDSuInl=3L$eiw!Psf8gM)3BXFzX zYY*BCsMxXdnjgS&oxRrK3p$Tl5$17`rARe+IyEX}4^wa%%L`r)MJg%gUSrK@s<3`*lV6NIDxS`A z8Uf)_99XuulX9Bod?pd|c}ptT3#kO%+0*(tFan0Gi{Z9$*PH2{{bwsjqwrSm+?9iw zS=U~AL`mY&TE$ba4vY&D` z^&eyVh<)1H?Jn7P{(B#iuWohv*i=qqVBWbkK{1}jFuRc2pSLPHUuGcwHsbQ&AQ&q9 zWMfs4ID$je$`k(VCtcmPc^7_Y>Q|#69p%apU6}M~kG>}45+%!~RX1J!>wV9QoHshV z%RD~VOPR5faYO(84P3) zcO<$%j&ZZ&6`iVU1DrS<^8MebYEjy$#`uGn!shD_yFX!MZl{)fWXUpoEm0Hn*^Q;o zsYvmrv({6wl721iOYD{TJ4@+g+G&WxyZ-^AC0E;krs}OXN?KKGrhdL~4snd==f|e8 zX!oiS%Xq9Qz_#yrJekLiClv8ZIN)R2q;;($^V-L_K!Pgt zZYjD3#7nTakTfxxf9*_AdqC<|YLcC*ZMvJ$>vQm8aR}~(7zbDuBarVD9gr3^miUB& zUa40D7P-cCMGN6&P?`A!b5Fc}`X%^~7&B_ltE^vVKuRDQTwi)ww)B+n6)e%m+8`Il zt(Jp0{+8z^IXX#E*dloYYC*O%fVC)>6iGgWkUo!Fsx&(xjn(3T(#MV*;zVASjKrFQ z08%uWmY)$XofZ(|G<-+~C|VBMEk0DtlrUb;^ch7Vbo)f-L;>l$&J>_@ltt%f)h)5E zihpoEEYA+-lp3v^rpzjpshI&0rV;rT#6G+zdo}W1J&-K+necm(~eZ*KO^T<+KP7o*IA;>-oq13*iov!LR|8&pKM1weIG* z6_yA|AgE$N?{ivEF54)V+ud=|KEf#uqEc2`-xnTlyX7gZI7@`{q7p1Jq}Qu&hvU&dINg##*#AJU_TW(Oo0e5Ov+n6aqS6c^7YGD zvdimX>NKu-azvW59I^p}HJ!eBoH7;ZrQI_TzQHyTLH|v9C%^JqCV0fM(-`m+JM$E#B?;36@V4lB)%PUouU*(FAKT(GU6IlYzuA} zA_!l4CT@9|EB}nFJ90m_^k6CfRTm>HZMkoxLRZA|mcPb7N=xN4n}x&0RmW^T2bI;! zoaHVHH%8mTKL0hoSqJ$tmiJWo@=mhV8qhXZk9Ss_o>Crl@O5`=+f8cG5()gWYMDZF z4^h=;h2e=YS3q4hzA;X@eDjv*ew|;ka+58<^t2RZy%{gXTqUvG#H~l6i;c% z{sI|%fp9ismMl=nG79@cj-@PdLh~2vea*TbJcVFOI&M}%3$-?e0X!}e(*s^8&w)09uwHJ^u^@Q!TA(QRfLrYqLDyW@vQPreclKKPW%5f(@VSvr8Y zfIu12g%&+MX@F|cj`C&lO$i&n%3WWxQJmQ5er`i`+hMq0`(&#!tUJV}r>@P@M@4Vb z>*wAPYNgU2Z1mjK<3LR7^9z5cXf*Pfx4qP6|4EBQ-@eXUD;|C(w^x!q>T=kT*A( zTZtrDPAV>dg*eEnj92KkUwkX03OPfaImU|-IqU<|K8um2suIl+>D3IKj>Ds-`QidC z%4oeQ}Z^z4)uf#JbLe$IXL7ejI^Q$si?AsS89TwOp{oDMuZdMYf zH!mWO>66bW*lIDFx?RK_)OSvvX=*bipGN1qRo~nA$U*NFjrh-Jh+-vAa zUj-}9E-EB?(LWl^6#w@xQR=Ohd4l``>O>(D%@qV#!Lzsd-lL6(g(w*j(&g+-yMY7o zL^s0#1F_&0TW%*M0@Nb8o;RYi3e$G~x0k@K2PN!FN?Z8(XExE5TQIMsiyG}}4Deuw zh(`h0)N!U{jDf01uV|TKG7^2s?P=otb_wUImdCx~+E!lK)91&V^DElY!RlU|X;RSf zm^1qg5uc^PO?5f{2M9I(IX%TH$F-?5#MP%YlkCv%tfycvkW#IPSL(OS{%n(n6ly!y z@tf+c`s}u2R4>u2gC^OT4o6}yb|LJ6%kGZ%qI_db9eui=oPj(PwHWua#9ZXQI&{&s z0|MPeUF0Yto>eq+43^@Ofb;$_q_w}zhqIdz69f08*9$IK6}#~CmF@u~8flRHxar|JUIu0_R_-E6lq#rKEXrfiG)kkgwH5`OM1uJhP~5m#%$Md0`!L z1+N7iAu4ioR(zN=8&U=UcIfGm(BO)uY1R~q_ZSaZ?6O)JKYEf!MUII&wr^dJLU3rA zkART)SJs*M_IOS>0M6SFNmC&juiuw|x}0;Ac>wmw7!*4i+Dx}Ic>*z<)Z&Yb!Emhy&hBO!nT-P_j0dg%9W>uQrN2z> zBymTZO+LS_>mc{Y!aj%_6_mcET;ZX0m`l61j{I1S;-x9HumqvLpHx&KMjz!0C4^W& zmME|q_xUw!=4!)L?)HC{3fHm^Yv@EF>4~eH9jwd1KlK=M)9~3CCNmyn4(3cKB$ig( z85C7e>a6PE_NJpHt@GxBaZed$NQqiBNBlduo_`>oQ!YRSZl?PNB5P;K(^DbQq<2o=wi%Vb5Dv~FD&uNG%@L7-ECq3MXClX|vOG>0@nd0Zk> zo83Y#EaXb6t3p*wYvPnAmwfr4(@#hEINQbI-^fvk=u6-Y`t|B5qo3#aN?*?=T5zLx$>4lX5Q#LQv?1&ucP7niAUedRM)Cmy1?D zy_awz(`cUI0q9&yntj#8nFT*QJCRM`_pZT(Img>1(t3hZrZ*;ix>$4a`84$*q8@E{@KIqems?6S01vOC5>)X+NrNt=PKED|hhoDVDBu)wKSaqx1QhJW&D> zAFJTqxQy$yhGqbGzK_PMxdNyEAZ<3ompzn4XUmS=*ddX40o##LpQTg*V+%4hoUqPhXi2!z}bcN&)`z+36Jikcg^iz z=`ftH+l%+@v;vyR){X}yzPi#o$or-zN3FE0_~y*z+?o}h+n4BVZ7*1l>Q3$MC>!Zw zGq*GNeF}e7$_0tkh++KJ5o|+;pU@ELd1p*iqT&!W6(*tKC!1$d?!NrfeP*Ul@gHG{ z7y`p@h}FvXvM|~A-lK?U-BOPDOUm`UJk!G75@l>A9Aqi>YjS@+WBv2YirESk^Uic? zaWr2#g6X>Od;ig>?A6!(@)YnyY!HnhJo(+v?1$K^pW+71{Ew<~gn#jKKU^|VU9k8` z#?kY>0&9gF zs>z;=TF4R@=;v1PGLYk?SnggGlje--)P%HWNSNn`l z>R<}PaK63tZ6VXOT_>KVe^U7%!t(gk?4r_8!N-H%kE^5$YgYhSRX)G2`20jUg?25IHBeDUOrf{@BE+nT zEAW(e(j71QI>R)N)6x1g-`UOHcFZaMlg_U09_k-zE98kMzV3M?adh(-2aA`!gL zHZFDXUZ)`U99!v{Ry%AX5LvKkLo;nyySlG=V+94Z(4Fc4!%SB79?3(pSKScu$@rrk( zX(AnS1Qtz@IS->=b9j&tSONebl*Ux5b+Az9X+1FCHiKJSj8TwJk zl`~(w^2nM5=H`Stbd|T+qYujEa0LcyPCjifI7dYPs#t(0H09D-umEVVmR0zHAThq7 z08unj2QDI734!bYFTHF}>c?w~MEM2ea9)8B6%~o~D(kUbhi)hk>FK_pa7q*NV9Rq8 zFD_C{l{h4NU;7;|bnF}uP~*?fZht}o&3mS4qFbL@`2g*D@PIN5n5Rux+iGpX#vedE z+3au-?NYNQo^{<4_^ip!6L+_I-yk}fF@a+u{zILAI@N|Riy0Q3_vq*owM9XtEW1bw z$Qz=I3|W05Qf)YLP}Q(OhBSb4tCLT6OUQttTqHgn^?M%Hd}mQ*9&Q#;%@xK0O)f`S zb$cKyC5nE@gq9e`A7!I|{C)}>bL(s6o2wUvTOBsklJ%jy{K`fhj#Ns)f_%QH+g#hj z^K9#>mweQ_5Qc&ms45n<$TQ2@x$~v_iNU2 z*5zG<^Zo)Ud(!0H;n>s8KGj__kDdEpTDWTIS`?0T1}>EEjGUWXXME4b`nn8Z1zz@+eVW& z*}tc?7`Hcmy_Tj}F>@U4a;OuYtK}&J+Q14|eFv7Ulb?}bU;<=;9bgtzJULQ4!2v~? z2n6DHWBIHnH>clUYe`FP80X|-<#~^)-z3%eIzEMLucmHpC47>w=erJ#4t|qp6EUfh zQP|(eHOOW=e5xE7ov>PdA<5iro`685tmD2`<>{y&As74)nsuqRGUXif2Hp8PXS38` zqOyx0jaB+OmMVR?5o(HW?(xMr6l8O)7X9*pNXQhgvqLgY-b2iHH$(pYYcY>+` zXD>iO0jUa?+GvXE2-*6~s;U+MVP4U7A&!u-O`1m;vog^(yQbkjm->xKiodHe#i+41 zSE)?N|4-+7e~6!xGD0lHNqG9t^Pp4_Fclx7P5pjmuz2WznQ``u-Uv)LfRv z`{?_;3rft~>q`Sq8(A&F5cfVCUr@Nv=7sp8lKOJ}Jc4wfj%g&- zMjP>rCnmpndH&s@M00Y3ZaB$CSrnKlCK=2JQJhNqTBOQ%% z4-44!)xNel;gR+msMGHq7Vh=^WxPR@>UCFT+YiHMlDG~K01Q&zx)99g=Bgmb zJDu%nF>!_L2ytJTBrV?d9~LoH3$l%`>AZ2ZE)9nG4KQGT;QTXWQH~w3zADl&V{#E^ z=0GT;d)tc$wSFz=4k}r|V(9z*;3wC1+{8Yx zX=8G8sWG)*!yeMy3Hz7S;ez@uL{|+3%_j+>wR!YHGfv{4rA>n2pV8DdWK)v+)R(kh z;TNnQ+&G=0cRv^A6)D~0dk2?_7Zm%KxPH5vY4_k}OXR}*kvCy^lfE_`IXy6MTG?|(1; zjJHdishR7#+0R-Fz0P?@VQ0}CQl1!248$PBt*OpyPbS4<+*xrGRL>Qb6qX9*v?Z%F~= zb+R!LD_N^AS?E&}Wtno+GbR=Kjo?3zl>J-x27~*h3@vF>nzF5ZOekDL$WOuL?9TjM zEkG+S{O3FddI*-3)3XB)ZIgKuGB`yXYm#ANa{lA+csOwXu4Cs_l4w>GGJTM(rN1hi zbXXTPw9?B)$l-=qm;;@3vm~l{O+_462BIX&msfGDCfgt!p>@sV3D{EZQQ^r3;7Csr zaZei(W&i2!+XQ%f8xtzsP$z8C=#Iby`e}BOJ5P%p{k%P)F7$C?FxtF(; z1xVS`2amhFs(u`;(m$kvZI2PO)5?V*G-PTl$y{nc83u6d4ykik^o#;FAi3fND?sGp z#FF^F;1%kCAy|B7^&w!&P$B>6H225|OV)yA-MqCgrqTmjNG<1Jh+4uEHts;_q)8EA zaGD5#TTj2#Qq&TLy4p5j581}MLnTTtHs%!#y8Vt&!9jD;GDDO6+815YpTlg2BM;d` z3uZARIa7#Fod#uzM%gaK?GSU*oduL0ml9byvQZ0XUKtUMc{3M-ur_?l=itt?ebiY{ zh`T19pB9{&8ZUmTVy4MaicT}ls0s}$&tgT$c}H$26q}zFcOIq)vR03wfTYrW0Jgs` zTZk&MDc{8gH~Y6mAyw}AkTncKdObq5P@4L}Zw~B;P_`=42c?(&OtfiEit$0+??ZoV zmM!}|tv zMnjXY4%s>*oZJ3UgJh1O%zW;*E25H!#7;sEtNdXBJ(nn*eMoeQgxc;nfU{UrP(cOD z#NB-vuTXX2(K8%yS^F+pEOGTj$-+1A?|(jiq^$ z@Xgv?s|(^KM11Ar$$h=aedABwBaTYjzS|Ddif`9}^EUNFfBziH(%ksI zBfC%ZUg7(}IF2N5Z2B58G)@gY=HJbcTgTFXf@UZiU8YC7@F#Y!z)k^*@{MlZV^-fO z@pBw=J0y)?g=fo${*^^COrPz}EuDM-g_Q!$Fx?^J-#Gvp=GyU%?c5dUY6@xEJcyN#)d0#Nj#0N&`LIzX zZG_K?rx{GL!A0w;TQD2!A)9Kx+ru2yj>xLkt~lbF~4*Iabim5+NPJwvl!|zJ02$5v;-Ocz36Y~#&26; zg*%LbjlNvb5n@AMT-xpQXjoKMQ;oIQ=wGo~;{1V|&J>7~gUl{t-K6n=J~qQ19p7s} zqIDFm+XUOiWxH!DMwto9v2%=V|Bd+mQaw_wbqD`_*2=w3Cq3=M@$A1NJ&Zy3j%yB0$AYz~kvG*l z9*t}6oyjC_{&$hs6EN@BYpr2;JZoVvlJBzF*Kre+%I*gZCUN8yyT801|9O0=>y)Om ziB8wr6)T&azhyeDz4Lnf#vL(MtN7CC@$(hN>%>KxYue3wiF3cNVmG-LzmA;lKcDsR z{CNrF89_x(-B!>&awTW?D~2JgK65tfS>1zKi`q`kg3=8hz@%;Ur_uxg3^OjzG zF~8?*ZA?-R))FNS+d{`?CRt_XHMp-SO`XaHLOcgF>3wc(Mh4leOBNqfs!O z_uad#!h}6hBec;6?2ED{uHE(x*z5|PO7DEimoR~8CTJxF;YO()FkcL~4^UPpRgO|5 zN*_Lwf>iApd&D8AeYT@^lY2Zcr!`KJH{mOWM@2#@mGxFWPz5~A83eAOh5~9a#rLRSX>+06ibrz{rT1^!oOGlx0@x__aD7G6kh6cGBwUS5=~%}$6-U-3oWjzyZS0~K77 z&or+*EI&f?($dE$ocqD$`uRv8c!H3M#N!<9qU;?K73J6OXB}3sO2&@d$@MPzeXF%> zM&n2-C}z-}#?rpPtqw`X^6RzR2u)-j{)urt>%)DNrh-rXQNgY_{QcGYpee*8G>!;Z zuNk+uCQS^2IrR1GMC6E4?sF~@qbN;OI%`h(FtIE~2T)AlT1pqJUSsLIo=ZZ`2 z9}Kq=4i7YoM29dDyNASkuZan)I@0j#I{kq`;QQaoY&t4zV-%nfjVbMNGI)&(=)!Mz zaVWHwWBpk+{|^cqMCea){Y9YlM=Y8Hol^>T@Tw%a>{6q5XXR9+ z!?ssdmiRjEzHL5=q_pj%oO_3;0^)VtTYJJ)m1&@jJ|Oy!*P^Ka{>|c2bg=TO2^!kh zPk5&L1A;-_xx=*j#5Fo`&c~S@<$u`NYW|A@V^H*CHSMxtD>1EiDoA=A=UEhR7Sh|z zWQF)5Pt;u2DHZXN^7*a|ycA#Ob8rl@f5Yv2X+zCi|MLj;1rBQbt?;)K3h_-&gFkf> zA2jN2YuS9#8=ZBJSK+bEmBX#@BqbQv^NnBq=W(Kn>CGx3t5@bzMsdXR<{eU5YG}d1 ztm3$e4^bmj2&xdg3+Dow#aAA2p3-(S^z76JEd}|_+2d;`1t10M6;$$d>;9~4XLU-e z=bz*+Dh(T3J+9Bv=kO4$YkQ{)M9=_lr%}%LPTfmfa(8LUkS^8qD>vYc-B0egdyc3O zG06V_rKkSwoC-0D7pqqaf`tC4iiN*CZJ#Zd*C!s3`Rbi=n zbJhgHXN~LH-~}%2_3JZ67t3oURmUU3BmsSaOQf$Iv{we$4glSs>UJ5=!#tfkYWP5U zQ!zPrDVp9R4dqbxlhL6{`MPxDWZqUS^%XD zMdjK#sw?)kO(aLB?W@nM0GeB3&Z9nXC+}>XCt^J;k6bmuura}(P*;wkaISs~$wvOS zbCkOey7!h}|D^A`FFGDpU@(U0Cl|tg? z<;V7RH;>&5vpVPol`%D&w>-HL=j6JQd~cGirLNUEc z6`cYFp4Q)JVIv{^b)o4}PdOB(b7pngZ-+&_U*KELY)0$=FDFH(o)t+)zNwvTDzoEO z!1?H9&U|NL=MQqfo06aWX<6!K>ba3glW!uVUOeHQRgKOqY7&0ps6XGAqh7u#f?yjJ}oqd7-unkVf&3zgkp@MIjB(=!-seXNeK zWpjjLrkv&L^*3cC2(Kfj{{*CBKSzb6)@LyEQJc?^*%`qz0NoQJwAH{y-LCJybZffb z$ysXa_--crD<$0i`whc~qLNk?llpK!PeiV2AH~~ZmSdgEWdG-X<~4ntt#?GIY58^zZ!G}0bf0g7KH^(1&2aZbbk<0rCeS(azB7XTs*?c9NRrx12(Gv{IA~M@D)ix*Rj;;=R z%SA>jKc|bi=JK**x`AWVCH%SguK}+0aTe$^BBL zce3$v^0Er!(~~=LZI|tSA9){ZfIdyacC2*!!65ndhOT|V4As%@1~;1edtlTRN+Py( zp#$~=li?&5b4+tqQWCnxWB|?7T-e+5&Jloq;=uaVmizV&YBxnE5S`g57gs}x+IcKLu!S74_@G89vTwEG(_?~2 zn`DKE5Kc_+OgifIyzD+utAhf*@tAz|4$g6|SV+hkf?IM^RJjDX=$QqwFo%8oxQe@9 zY7Ux%j)RL)O0zN~ff@b!-cF;S;KmqoysR>mw`TxJQiw1aaJji<8=STGT164P0DJ%l z+ItE!Wd~Mt*$1JFI9H|x+5z~-d&A^&2fNq$UTbM93wd@}=uQEEfy?9zEzqZiQ%NqY z5`E!0E6`Kq$;S4)D7TaX5G<+jpw)lkBP@Hob5w+e5J3iz46T2uG@9?VbH&W#e`6BM zrM+C)|EY2^1m>kDq~WRi72$fvp2}>{H0~Rhw6qpnXtNKkTJrkGUGt&xiP)S0?5OO45n=@r5mo}-F_U+8` z8SP&lZW;!PP4eg}#TS%6j#TZho9OJ7?N?xXPTbu%qU4xUM*Agf1?|uc7e%l*$ZIkM zO8Fl^cd&CIIc(tWY{pXkY1;AEg{wt?D-`oM-LD0sLX3Qy=L&0I!cwu zm2!oq-qgtSNv$^^PJ-N5@Oes0nEN!Yiv~=0rqO7+i*#xV8rWuu0a+=)$Hcfx?ZDtS z%v$cad@F>L)Kc!<3Il1H;K_MPeKhBaG|i+L0l{|rdb37M>2a773wlf?7blbi%dY=yNP26b{FOE{U2CVBX&{U$^}oR@Sq<5ugNi$1&@DX2@q`mhcF*cy+Zmrf zzeIe*Cnu*IiLtdNrnLM*OKPQ|<4WDICd@Q?^BTQ*+yf-caMG z7LkuM(wi{qBfOk*{-`r|cAo5l@M<36!eYJpd|Zcg*STaiSeoDRZr|adHDSJ}643rM zW5%&COFJd3@+V>W6Qxoj1S~+gc_+|pR)=wjTtufT8@@?3VhhJYL=ck@-BCTXs<| z_Pd)ZRt)6OX&MYTAFboS70D3L|Y8^I_+`k4VA4j7dhudPK?(%W!YxQGvp& zd-WuJO8L*UsfAU8p%`m@A_g%Y1YGecf*#hb1J<}6C$de(43iP9HV7*FWr|EAwxE5* zMgX&ZxjCbe-l29N2)vdC*G+WWO&fQ?$IVM=LyaN=b;l-!L+7nDVtrzWNpLXL=@7r(oaBlpcv( zO@F?lbK>{1{#H`9I$QSwH>2CHa_6#YJn#vF@5bM64nJ<^C8RW1mQk*xk^SzOw<>ya zIU^_IbN5>Kj5jm)10IGBqN;N@8Ia( zt+>yk0o<$q@zl9YEKIck^S+qu&lrEV0A@e+2QCqNXD|o=Y z+T+a*{-3?(X${QNg*U=?KrApjp4UoL@Cm2%ObFiCN{EZ)B%`mYz_9Z+rfcu>sZJi1AWO);7RH&RLJ?Z)Hd?`)?lRJL5w&Dn&8?g0nFZU^p1i`iYX1WGxfP&_GeBFP92PAgYgYKjf3$6M#ui34!dD0fHvxT@(gVJedKa{aMC@YJV)^c&oYX$|>K>eiit;+#(649i^V!WG_sykR*m2mb*Poby z(CRt98N}_P>|rg`qU&|5!o#Mdo$mXcX%;gd z4|T2x)$97PX)TKnaP#NLq^#%1{RtWnZ@L>B_PueQ3leR|r-$mgv!M1XldB+4ROZZg znIV;qxA*|WtD6ir_4&vSQz62d&MA~8;~5q)5Gfjk+>3pCe`UIXA$_{Po1>RWKI6gj zBg%kYiDz8C=h=}U62ld-xN(^c1}blsnBAOs&XY4#LUw!G*q679+&obtnDn_9EY;IQ z)9yH zr+bQU5M?!IXr9^o%xnVa>Z&18AKy~=BxMfnp(h%%@9&~=<9`nSPj zGBCB~ekNYdCW$uB@=XW|n{f+=c4}=SEnx(%ZkUK^+_wQ|2l|UsG^A#Z7V5PepqjH8 ze)*n959Xiq)`M|%qj60RgI>2j{8Y!FqC-Sw%-i`emShhUjxe?yriNYNp&IA(b%ExxaE_i7Zrq>Grt@-mt1n49emTBD*0iQY34Ol{pD^C+I4+P{VK z|M<*C!6G9b-)YhtJm@WL2tjqiV91$y>_^V^Vr!H4y^AI*$=Xj6MEr2a<67qw@j_4U zz*#h5eA+vOFgSLPP6%7oQ)OPEB(-gK_XQTCe5{@-;qfd& zeb?f9bD4h2Di+5Kc2L7StX{Jolz57UCH`ssIo)&k@AH~V#`i?XzqYEf@~+&)eP zswkvPTiSFVwynJ70HrUPap?dw?Jg-uC@L4F7ZQ2Y9Bw$s(oEPT=xtzuQWY_nm_GID z9091QkAL*mshb&hJmrk$;X$+)WW-)2fG0H*`AH57Z5Mi4DT0@JPW4@kP(u}op3TY<9gdk?$+umLa}fO|!LqI?u9 zINtl`YnBavyr^^rvEllvufw;3nX((s%iDfE$!;_6U+g#KF87`MJXibg*~?!eH^lzs zze0{!-e_+=1A33^fM_A}8h>6&LUr53XPI*Q-g8Zi^*!Gx$GDxVfgN!&Xo|O~{5msh zd&te~l4@Y+wzdCP%^|0(|5*k>T%zB2m+BzaS>i-rTy7Ig<1Swhn~$%o8ti$1_+^GS z+r0cpGA3ehUdp;il^}3_@+AS8WS{fyE;D7dw|kxsGyT2*%DbZ-Hs6p^Uitcqc~539 z)1a<;nl-S}H+jJ!ht}Gg*_XLG5fknmbR_*$>!5~GR^?Q=a<5w$AsN(#lHO zqwK>bZ=WJX)ro5C%|)1TiJ8uO4`uB@dfMkj;h_@iR++M#UOd*)f&8jf?DqQN^!H4B zgWZYa()W(HPOGo#3k~agl1=MajM}#O-o8mLYgTw60v%!U^7p~*@3UFze(LVlGmTZ` zi1!tBMMce+Si7j!2TgRT*FlkClb3U=&a~W7S;{g!vV+*=W+hzM_PLmSzk#{;e-xbs zLz8VAh6jVuJ(PCBBn6345^mB`qZ=uS(IF@Z5{fXIDZ;4Hqd^%x1SLg!gd;>mqz0md zg8F{@egb3nv-`QO^E{5t4!l!du%b(fEKfI4z^o^hAnR%2#?8vvi~iYR`6k@<^iP$2 z{)(hhQ-qe?iONF*{V_3~3nVGR>D(%k(i7*wwZoI+6dfB|-|^_>tI-k6Eo!uIC|c0Y z)1>C;a?X9ryA2&xe=O5R z=`##wLSqEJqhO$u9&+ThX1|mq%|=j)=fg$EbSLwW0lL^*%C;{=hRcpSKDy35t{$!@ zRKG5F58A3472Da@v++JC|0yWtp?l8aAt_WS8H{5-1AnF(HB_6N=K`Ic-f+?`PVf*YIKh!fg_69bqa>?h3bLm6E3i%@1G0MQ)&r-yLVSB!o?M^J6*cgL>w=O`tHn@3XXWouiKM3;cP@}h z(HOdS%*@PqD{*P*x1LZd^XjCb#vN>I$Td>XS%dh_)EuGk`l?H%*QKUPxU+jg-Qmvu zZp8ubE5KR>YY0CmYdx(GiBn< zl~4LHtST+1xP91pn%%RnuZpZHjo7A!!Xi)5g~~T?@3jrst}p6UEQmLaJ}&D?LhM1D z5@#5C=cB-U3V@lO;Ar~Q94k3MzG%D$^I2^$DUPJ!L*Pg^L>lM|C^f&BH5^iyz!zd86@%D&{~ z7ZO+vv$2gQfY5=8z|2XFApk96Ii>n5M{9*&Tob*u(WuBVL!#uV*cC9HJTy!yeub(a z`r1hOhjMCfr#y84l2bAUW2`q4gL2x^k&5~;7U#*5MY`z%@rD^){kVUH;)<)axY<%0 zVC`|bhonsOXhlA4-qlTSRJ^=-7hcPpwv0bvLbhFFIZ`yC{k(IdB4dy#eY9Ep|31yI zw+6}uF%5;oA7@+ESf6VOBw5+iIYkyf;V!NhGhJXn5~9pQz>m;B(t;mb)ENh}#u|4H zMZ?Z-U46Qj5#a1jc;=0(QkL=_xEv^0;vj8Ev2!L}nj!qvtOZIx1Y;v!$I4wB*KXIY zrYJ{ZDt0eFE(o(&43OH2cUHYGAn*9y5?-{J?by*bn|9HE!lWs((Y9O#>f{cRrcce` zJ)Di0(0W2fUg^ZLekAQyMI4|FJp7j{384{Rl_TdKLQTS5NyfINGl2$6deqsRcp~mU zz#RkO-2qWPH-T#*e2ijX+2YZGEC#T3JOX3j3-E9visdY$BMOqpiHtv?2@0+*!KQO4 z%8SmH)qHlDnYNdy)#p#VNJ7JJ%2!`mS=9Kj_vSbRhFf;0HAbYwQD+(lKP(y7w|X5X z3##XrAsG!}e37`(*%LPH%I80C=PHp2uyca7gT~_Dl?AQ;0Box^poQu6zdFQ+H&%AB zx8O^oNurV(z^E|VN-NFh-*%f6Zst`OhbWKU{{Ajsd3q3;zFW{R$^Ui>b z3Gr_~3k;9rFo=NM4}M-#y;fmyW|CLx#F@a%jI>5uMM6aYsXMd?F?2YDhW|j4a}1Kh zr91Ww4NTdRhV4I1)!G&;<=X;Hjf_Y8P=khi^3 zxGdew3Glb@RG61EY|E7P;CPC7Gn+=-&61G{LH2!tE;DJxzM9Ss)3UEj((r36(H-CvBBpQgLSpPLvwnj8oLzM~~-`)G8 zJm*20$`>~eb#X0U>VAS3oW8RtOEUlbj@ZBR@Y4h6V-$P6+1KN`Emaj$;VuShm{zX- zNZ?wOOO?D{%#Xp=F9f>o_5<-@K58$!FaFF(rNW(O=sq1>mSWO8<|dl7WlVi|-MwE0 zNubl0v8ve#6x4NY|2iOO?X9&(_|fn%JyI@C(y_yxMXSe`@es@xeS`fmiB0bpUHdjw zg0kl1vEtNLW<$-E8(Oct%W?HuJw?O!R| zZ@t-kw<98thl(w1#y;4U(Fxt2GjiuaxDeMI*hV!c6iegT7(A>g@_I%aTKFq{yHk61 zw<9jHX8_nUF}CU$+q-vL&H{4Nx^8poPKOBtZ{II=6Re<{T9erhlf@%N?I94yhW z4v@z&GJ+n|h~%0|QS;uk_u{j#9GC4|f0bZ&-x?+|OoWr+?M?Qb?HTRu-`(6U7Tu#i zVJkriN3Le2a|`2I<2VKH74RwU)R`+J#(K3Q+xOcfbnC@Zy9P6(lM+xFUm+Rk?S5ZTDDcjj3u* zoFuL_$<^!yb&FLak*~l1?_+(lSnGo0M?)}ExcC5te%666weZUfalGNdz-foU=-p+y(@~DT?saUizkt6o>_E+Y03Ih zh2ohDesjiO3Ijv#sQ(8L?a_<;V_N95<8Ni(Co`SfesbEsN|iQN$4JKE_Dokb6WhwE~U2^{Y$XM1izR_a!ZNL5}R^^(RgOlS#4Q_^%Rv>b3s? zR?e3tOuOwpA1(ISe0GwvCqsY-{#KR8Cp+Y8uUeI$=n68N0rrYUlx}8B^T>)H#w@Ds zr+kU}TfwKtB3(x0>|ealNo!m9~TWsc3g!MjfGvrNPozKAvNzk-c_~ za$i`+v9qsS-v8+g>c)e|bt)ylM8{#Vc z9BltE)xE7Pv>Ma~U0;sJWTq#{L^h(_%p|oeY@&Ym(k_VE3y2s$o=nf{cIc`D&`O9A zB%XB#_MG=Dn!fl!>i2D`v2mxejar|sKrBDL_SdVv6zIlrh*Yjuxn9tY<3hKv8$q!a zTt9p-Ej=lDfOG1&T~MN7$G_3k$$wX;Mq_n&Q7plHBdG7RXuHijsAJ*X@w|x8_pcK= z8D=fQPbOog{eFq*g`3au7jY3&!F|`-n@NGe@?~C&mU+4JRk}3RZZys#XuE&yOGP(- zTKhhD=sh%^eOoCy&fh*CIUP6u^7F-7lvxKYEn77KDHMrLe08U#NWjDJipV^F7ZhVy zX@b#HZ|m3x_d?|l?QasrYY-vSp=?Zmf7rK16{%$g!tMG{6&Np!?^1N}aYzRVq6U%) zH;EGeIu_(FQMWAzR`tG9#DRWYEqMA>m{jkD42T?(+n4~h;`r#e5f>J$@Z$|%78*6I z6ia7*-N*KZ!D;;!Q-;ENKhwY37my$aO*`eyf9$_hvlVHeXV`tEui5P8(ckyl47Y`v zzLIrlbcI#AZaCSxih2xPuHWA>&q5o6qmBBO-hahG7ZU`99V_S zhm{7|KyL-@6TpDbjBU^{mxAyvV|r;muGeBXcANip0+|8zB(D?&aU)UDKkGLs%zRF^Bef=ftPX$=jvG=x0d6 zm6$s3BKv<(jBkr}hSi&ZbM#Hl4xC9w`+X zF^knx*2d%)g!@e5Vld&WyQ)nYr=+?}itE!|y}jZlZhM^o?Wg6Oj-uH#ygcjuNx z{K(qsxTFS!TY0%Sulc+4${gL`&3@k2%ALH3_qTD-bc`K&dZ%&aM!Q4$A7psSjh@SE z>t|418*G}#*Qa`Y4%H8vQkGkvGeUl%b*g7Uf)P8~RI-m>k>mBgcK5`=BlunNSFRLc za<}T7-$%H=5s;ueyMx(jN!nzV0R%qa9#LZTcse0G5;obe-pnXd_D36gui@%%(IPra z6+GV{GW^mp`8RW3B7~}hKgP=HkB@~Ntj;A&M9@i%r@|te+`|#^=ZG5SG+(6-KCEiQ zjbO7yIfVPLTI0Iz(cjK0el9?wcM{zTrx^O`>q}GORm-mTmILu^0^bCE0Fh14P=*Q$ zSmwOEJLLyj+X}g}s6!)*R%(BFJg-Au*M{yi-L4I8Zw&}fK;|UUaUt^lDt=L|TP;^B zsEW%R{^(4fVr`ZBTe(48pNco;r}Iv_e9l(y7^OkesjuX$YB!^e{cZ!d&ke<%<4=N0 zOv8xg)j5qZ6p4JW0WjRWmT~{x_+8TA=EBr7%@?zqN~?5+;OM@bAbOiH^9zPQ3yXy>i5cXe( z)bK`Ps*~HN=qp;9DyALoA^z3@(t1#tz74`!#Wt;S&4HKWJF9x;4;=65b#T*wx|w7X zX?P3jcSP=ejt$ab?`Mt0XXz0Ul69V;v_zG^R!7cz9heBpbv~ijQH`c@jX_Rh3WFEZ zFXe0<%q9JISQ*1myV+OkEku07V7B|mo&{eUlDS()y!MTqR^hdSdVzs7@ z?tn1~aBDa7)3PftwYYGsIG|<|n0jR3u^p%E$f^J;_-#$>1 zr>EmtCNhm)H)^0fwx8Xpdi3^#h9q`){y`e@Ev(x+D-tYhkl%yFh4x5XEM6k&G=5S* zedPH!U$1%4<7@2bc?LFc-{J_hiYQtXD!yCiq)k*%*sm@-VkdCan;3i$V4vo!S@YLu z{wUB?v_Xf@vA6wW3Y_=;e2XCaiQBo4nN6KJl)6H`Me1$+Gs-s{|a3bBisl~dZ`nSVP569_?!@mPWd&`e{RNLdPS3;oEG{B+ocKWh!=hMyb( zDo^gp`Jd-CkXuZ9+*RwoeP%De>L{yL|trFm<^;&-y*L04_(;R^QW%qfAOjloAF*&vL{*82=>~xz=FiT#?oc+-if*B$-+x6DY$)`k#LjAB;Mg=(*1E! zfsePY6L@OxXUuF;GoL>c5Fe9447{u_M7uzHR9RdhHUjWS;Mh-7r}N5SVkxs^CYEsw zb0-MVuVjDPi>UNZ;4R`gP;gy#(J_xm|LZ4P*de5lo@6QqjL5Cs!<(Ih?Bo6IM zuG5|wb^QnM#d6$zc9=%go*72kHf?iiV88bA$9&isWjePJH2je znS5YEk!QD$&z-IYI$DBg(y_<)Tn(oPDu-rn<|xE%LGRCuPo4T?BnH_~lg|m`DEOpa zKzp6wIHSSe`H5e+Psk41BtM!P$_BS)4#;mv{{c9=Bay`z1@{UF;wl^BXR%FV@jVkmABLzd?73y_k7>qunQyB1S;-+;^b_lWU&NG; zT{H_Br?TK!22A?%3j?E z%iT}T&vOyH-#UC;Lh5Ta{{v9eZV~Ut%8fhC*7n*grN~lwniKaI7kBOl*379nxzWa- zfrW$3Jt9(s62C*UqI*kSKW%hPF{4iG+5*T81IHWPJi8jyVm)h(L+m|zQc#TOs`K!AU_x(^X_%|{o@1KIf#1H9d&qhYIq5+Jk^Zfb$rVr2@G8F> zYTf(qe8~Xi!Q)ci-H5zLjh0FQXPf99n21KWX28wq;TvgdXJbFU|XV;Y-HQjPWGik^8PCSl4DB^PtaNL0~W3 z9AprT-D_CB(I}Xw*DBhyxD&9~pq#ewPKIM6iKVJ93Gavqk#Qk&s5e&5`aQq%(RA(T zuI9YoeJ!5);wS$cUi{`=j&Q9BuJwDzH+y;_W)yk^iFG}fUYb`YhJ?G~ z$~SbFc)#qa6nA^3X*Pu-c3*AmCMF}wV%xhLxXq*Ae_zA3m%fk8gJ#RPPk!SY#XaKX zui~!OC^>c;z_Z3{py{k+*Gf?%W3_F%6XF|;Xi&ib122o*=am_jM6XA)lqnv#4*v&F ztVF>+3Y4p>i`4qkfudEf6nu_JGA;cl**18J%Z!1G_G0UU77E|DH$%?NiP7!-2NQUOYDx!8yImw~SF1XQb?u>Wm)$Z4n0xRq$OxR@m#PnXE_FJ#oegC@YPp=Atdahrb98X zDqW^Tsr>#eNij~L8{AS}l2Zib*{kN!4Yip^@ST3`6Ugr*QF=p}0OsnypMy507>Gbu zH@RFxE(gc8#(T=NXCgI!z3 zezflFb{irodvJ>bb+)n-g~U0fUoXmLwj9l~!*DBq}Zg~w36SYRb>%#ocJ-{BErbI!MMheH33>p*(Ts#h_my}^bq+w5T# zKc}Ra+qpiQ{al;PgB4)7!EO#k4@9+R=nrzT@ulH92;9cB)?;ACMiw?pa<);$Nuck* zR$As9IU&ex%2W6Jc6NwgijC(*W`MuxUeOMCA2RM9L6L`_Se+GLUP79ZZ;N2*i_gqf&87+>-}kfa+VEhLx;U>!8N$X-q5yUZxFc@mBY(@M zf~ndkGvZ}JVQlmrqNY+>x&uSy#D$%X=+r1>+sGli-Hn5G=B=r zm~^NN*FR3WpaNkAJYkPbX%nI0u5uk!KaWH3{54m2_rw{2SXDrmA0-zdDxQShIbYRl z^sp!0u7$+dnOKBUgCo?dT|}Bg*$W`Oa$j6*<6`G{Xp-tZXnTq}Ni4o9_cQqMK&_n@9w~}PLe`H) zCD1^~2Y{aJxHzR531~^duNB_w1j2ULvgfq6<)g*3ccO>!Tr4d#P7UJPQjdB(j=Ia` zxUer-^>?PgbVZCfAQwe<6QEVwuUVuo$@`mS8Cx>c#S36KP_o$MqW+Vvl_~(y^k&~_ zYRI~eNFIn3DoMGY0?03@bVyIqwD8Vm(nRurVz>Du>LZFgP#w=$wh5s)E|r37h??_Me)Qz`y-PC%9&4|8KG>Ew<1<&LJ$@yQEB8dr03|ui z3DMmyn?yIK+jl+!j1H|&8cipZ_Z<+Oa%{qNkfi7UZJ3k)9ZS& zcuKLVPzRSpBV6D_8>^zCuU3EQ;LhlJ+21;fURrd$x%c`DcV1-Yqh-lnMIPn2b$0d# zb?Mq!UdMl3D8j=d+l@pV`~0^BKhyP&!2a%MQENn=9p_DS*<%}S6Rxq^F$um(yOI$w z)$NM>QWSS=B$zrWiGTqU;8})fu_DqfBEUAGgbH(&*&b_}Q@-$!!(q4k=ndJr>>^01e@^o^MJGvRHT_RKEzQ1GDMzQ_Q zfjzKNMs(%~r(%%1oK0cUX&uyMEm-BiC^-7(3Nc9EfT)AFO-~W7b2@!=385Z4JYF_1w%EOa&{2TpG>BAyAN$H6P(Z{m?aK(#Lo9Ao!Hp_03-g;%E`wT zP1}-s%<%va0G!u&tLmAfZ;} zL!PYIFWkcSpIQCS0T~U{o8C}BI>1c))wzt!PVPnnH%^t}XeFlrK{5co5O|$Qis5VJ zJZ&YCwITFw>e$;$$LTidv758;R61%jU^$4aQrP*y7W8WVFEa+U_s|nWA3-w=*PK^v zkgG5|J>W#};ijhjZBJS{_>yyO5m7;OaEkMA)4iB`|aK!pz#EE6o>(+-B_Gc_RH* z#CW9lkH9#EjIfMq_&O+Npqi_oO40lQPWxBwr;QZ(UcKudXp-RHLG(b8-(bPi3Bx=L zd=@GqUctu$Q`Fa(j?!fa-H2}`Kh2a8bXtfY$5c7)9thXZ&nu?|>qOL^1S&YQ5w%ur z_7;OyEP$WHliFtQ8{0j9wUYgSYRB&0^54x%m$&qO?RZdA)1s0>lc_2Y?qfv~x&-<< zHzvd^c15px{;ubJ{;!WMly`#4@Gi9vKh*0s`f5LOsxr;!l-e)v9iMALHO04&0#dQ; zFA+7w==ZIxvvfe$@ipN$b<&HB_QFqtBKE}0YY+fVoLz(S;IOZnmJgidmy@?#TvO1n zRxsQ2AHebzb2gCHe`hl9;B)^iWmDp%lDR``hqLlzDy8{76VfEie}TgdM?<0VALywY zBOvA{oSkXw<#GoZn;2t_);?w&WcP*eWr}0zn1NZ;Y0Vj!fkzzWZ&6iWP*x*YWOh;%OkZ$iM$u?>2tYwbZRo)+n7L>Zty6`p@#0}rVJ6{v{)M$- zIP3wK%gbvEW8rq!aQ$K~naanV;LBCV4R(D#ju||+G1oq+t(+@hl<1rQAK~6rKl&ThX%Lm5@|YM#&884F8Ei25im>G z`@4n^=E2=d_b-hymwCgLoO&|l;nntTP+CtOL=rBl4ey+nqpoQ?(bJR7PhX*6kEO_7 z2vmga$TbeETRAPh+O?qt2m)b(@kK>*{JnVWY5jH;WiYL;<2Mo+H)5aY5#a>uY zGD)1_$o|tDBx`gATg9WFa9yrLT@gUJhrG1eClvGPc|od@=`xU4iN9jdBmN31iK1VP zz?CwbRm*0fuBcZ5CDsz}Jqfis&U~An7`tvc00l@wzHy`U4R|3*v}KsJ_`tulO_DLP z0l7fNAv0<%84ecF+qo$iSN*#8Kfo%s*Dqq1<_D6)x1P1#%+CaK1c&R1ykPlGZz9yD zcbkbi?AOK%p=sMG+(yX9D4nV~80Oxs5UCBd@}zkT0=Yxxm-xQzQ^0%KxI%}irk&$0 zx;xAbUY5Bz?Q?&Xt%nSfOf(?){ED$OeeE01oWIqrsnu@C&pS%KlDOBwRVft^cP#At zKJzCseLk`uU80Kiy127d1rBB^k&)7@8A^TF8d z6x93jSj#=Gkor9*MzBuwPYuam2YDpr%Pz`Z)i#1e$=E!$+f_-wJI5VIXJ`AtFoD`8 zkE;R;z5kVf`5P$K7%h83;kmwY``L0}uvQOi%L3`&yiUXf{W}I@|5HcS(%rvupOeW9 z@8=#81^$VSoHm<&VvpF%xZd#Q!oZA@OCi3^$t68Gkt+!Nn1~p4|cX6%d+&W}EV<;6v zHOM__W4?Fj8r;TwT4S(t?xf0=rmJ8NEx>I);;+3_WAbgmzRfO@FMwgK^D&2``5v~0 znZ}B?Cxjypij;>Ooz{>aic1sHBWY7l!c3T@)(IVELxxnxdQ1>u-wQBI9Y3#Q$J%Rs z8t$$@TIrCeFXB`iR3i05VI5M5G6!>#{wgaOxMzwc$}vJ0?%KN)-yZrMKYnG%FN^q~ z`y4p?XNr_5c7{7y=JBJ_spY?MVShw?`&8Lc@Pc>u`ehdAA0(G<`?MM0(87B3x_|MJ zkJXRs8Cvx{Ea5^})=#|mO9xj4WW|C$@E!Pn{Cvp4E7PzGQOYX+bg%A@%=A3R7lN_s zUCEkb^j;W<4ogeJa@=2wEUsTcKj;4d;r5o2P3_vHyOLw;vz7Wq`=s5(#(a*P<2(rP z&I{+?D$FZDb6l|pY%^;-r~BzFxQ*zYe5&$H&|W#RPwe`t^hN`%Cx&<2kFwvw{WU{_ zt3Z`enZXZtyn_kNBTKEa7@L?rh}K$udE6Q{TV8#6UdepnMqgpgN>@O}``3t|3J28t zz^;%RW6JAYi`{X>kCm)Dw-o)qm8LG<&&21+xn3*4#W3$5ud&P$2&xA?Fs}*vPv@_z zUS_FheGqtcmfGz-@eau-jGLhO?E1nhet~7`?{MzflWtFb@~Bn^GUlew-PseC!s{T} zA2J%lQSCd85c%Z}))?CklO3#CK|sdMjFA&v?D&y>^;*gMm3#EVVCodK;4{%*yH8ns z7VjJg@a~?_o5n_Y0%!fRzvtn0Zx#;|gO&pO@>pErUcKLiHD$!>A|DM?h6DXwSLtuK z*^vSiVwh6tSQp1nE>SX~z809@WK=#8W{tb_sh!Ni`|2{e5n2!bF#FtG#qjU0##5yZ zP3Cflji4uB6g_feih^$(a#iQOdHpZ&3l@1z$(nmmE>|`m8&joMFXSE` zFJ^wSC%HfzUO~PO&I@42GlK7|IX|QArQxxu(Rk86)~s}2gVMJ;?xwiDRsVgfG3eS* z_%$zdlB)SH|Frue)BdS4tX}`-Yd^CD`|heH(xiY|Zf0~X-1t1EA5)lGLLX5gNFt8E zj5t%YN+U84S*qU9wx=nEfG zY+Iq{zDk;iIV-!0pAO=b-Yo1^uTsO0o3H&ohJ@9uF9tkq0vY70HHqPO%ysw19{c%U z_Yolp&*tz=5v07@t3I}_y^1!lCe-$wf+s&D9k5AQt13H|dCZUMiAoWxFB1Zy zD@8d`E^UgCgtE*@)h}zSIz2w0{!DPmKB1NvexCijB^YB}A^J7)+`nr7qbChI7565Q zq{wiF?{VCrOHt-8w>3f9hpes7=I2lFy&cOzq<;B^E$2x&!y#m^^v|MOOCn1 zX0XZN7h8VDlwJccJOPe@45^B;>j8IirEiG+t;Shv#>-3n2BKYB8g=!xw%PDbU0c#U z_?I({D_>G-tk?}VXASTrY@i#+?Mw`QriLl?=v;sX<8XYH?MP_XGZ@8W@9#9C1mL@V%(nl8^f zYZyi7G#?$Sh0yE|w;}=Y%T%xn?bQy25tQ!*X*o5Afhgr+xO|9}e342~h8mWr;rAJ$ z*+6RL!03>eBdaAV)mplBbVE)$^_A#S0=Hq61Q*(XBzn#gABU#54t1wnSs* zczO8c{l)A^FD!EJ@IbUZP=p1P==?~h${5=fa+3EBf<7M*OT|y!tdF$bvW~I!BSzh= zk<7H**nBkKEvsEI=^kai?cO$q>*_9kN!SkflV3-$>-~C(l+*`dzP}v_RK-?EaGL+~ z|5!8QcO0ZixR$cHCCOtnH)r;K*GMAUG+LHSxR>9g%AYy!^^KhU4ycu(r?1H1uBT8U#^UQrDbLw0?SMa4l28Bxyk)!RoI#z}SKunV??o#;q?o>c$A; zihP=aF=}U>!vm&J><~`vW7>N@1Q@;e3-^RUJuN`?+j>ZW(2!cZiNz-0A-v2`!NQtp zb3%8ee@e8dAv#Mu!H^3^%{W$ucf*Buhu1}p;5DR?5W3j*h=Sju`vO3F5Ay`_h6@PxFrBOX|~0CtK&|#o~j$7Mq2~M6VOq=j11>8J!XU zbQ0Af?DM+T-|;DwA^sh?yZBP~WUb&h^=OF5WRQHZlV$w-^sF1^>e+3ivn3HtM*u}63p-H}%&cP5N$}JRa|I`Fv ztvOm;70Gom&vO16V|uh=aR?37IWYxToKTb5$n-xmcy-*foos1RUcsBj69a zBv0~)kcH;7(Fu>p2?vbZ$T?is%j?MMP|w`}6|b05{3e^cGjT9VA)l(OS@Jv+ha8Kc&&Rp6I7JPN!&wskJs&~7Nl6F5g0C>TFkK5 zyBFI%$Qx~>>z1RJ))m;So?pv}+>4hZA6Juave$-@t0;rGC!IAN6AT{Uc*ig)qXP)G z*%zxZ@^NhPKO@yg-~Fo+`*EM)S? z0(x%n5cjbk=XMn2!NzpmU_x5TZO-zO*7kK4g2}Xc7TQ}8%uX*YHHM-!={)6SF|U(` zy?DA+|7x)8x;6&P?$x46qw8*XfYKIVptD||25Z1GrC4~0yV|*a33d0GCpn!G5fk*K zcuay?c};k(7Jj7C6V26ehI4~#L2R$sIklf8edtT``U}CX=n1tgYAr&va2hEtvyjkXDFJ7nBy=mB9J|fV(PnXZt+zW? zt41sVu&CK5)4pmNAf5Y!BC)ja&El?-F3+kV@4H`i-~R)gKeO?-#=V?qiDN^FZMQeE zr0|=dJ(IL{t~)U^VNUdo^)m=InK)rMJjE63m8&W;NndQ3<@0T?fYZ?{)VepWV zuh^|O7p2R8imghFhZsE1D+r25Ffo7Y>kk};03%dD0b1U>?ED#lj*}x=$mpz0y_Rn) zX>7hts(D(uI`Li7-CIu4Ygu(&L8DNGbC16K&Tq=!sF$LFjJvSLzJ0UmW`1r@ZmquXRdOxBvEXVwC%j2v$dF?%O~ z7~6b71NDX}4k_WAAHz#Nq2}GObky+z^a=2H1+7}Gs0w~eXvQi?Tk__)n@9CJxM+gb z2r_-urJe<28W7@?tyWGw`pMRa&FKfxPt$Czdz@H11dL9VGw^dO?WPxzy)EK0wKh4s z#e|o5o4E{wlB&kMW3*@^2eN(8>6643fh&oZ8Or5cO>A5yIl0`V>-Rf!DpqxV$;GfM z1`{v~Lq3LyGEu!>AM=Yl9SLB$HKTG|zSRKreBW(bI7qcZ`^fMO`+2x(U|G{vwf0?X zZDj-8?9f~JGR}{+sKxv_#Wb`<7H?_&^nsVL5q-wE~a~~j{c5A)2C;_ z*#2HYqre8Idr$?J6+P`|7Lo52oioKHZ*mT#0F~AX{$Ymwr>gssXUDiv{Y&mb7IrEC z{wg`dRsGm)VCn}8x}cI71ZVEGF4&Sy-lkN59-`RA{!M&*t_D$getPALwt zN>!goYu5&1GXCOIW2_n%@g0$XfP@@}v-7|``lj0O9~{x=Y?*2IWXYFp>~WJ)-OtPk zQHG;={R#cJ-{QEtf%;pWl$JB)PY?9R0!3Hu;oa2>vpkoZAnH|#&>$$ zb*GiK_jkd`{0uqPOFK86E(24cLbU#HC@qJ0^^zhzm=VxFR&A3x57_eE3J25D8Bvhj z=4$1kM>>C)fuF!3OdEM$xM&dSwZhv18dywcjD;(^WQiJ1n26sHf4S0%ewwVZmC&`7 zK-W@kCTZr&x+S?@N{|{rYxNxiejfNHWgfFW9g;r<0~kO2)KN0EjL$R}0%3;kP=7Lj zRtezOvVc%i9`OW;(+ZwZth|CcFNXvl4h`Vdpmw)$MZiNHF7cY+=%gJU9=HJyJRDv8 zdWdbcQ#^iZNJk0rV8VQ!I(JfnpW+Q^%hWb}IfiI&$1~t`=wV#8$@c#x~ls+_G@MOX*+(6RS=v5Ll}RTtM?Vwck}oDT^S7J z?eX~G>;QUw^O^ajGqrr5)g6jaCCOo~%h20Rm1hFp3Hfr%(wBhMraVjta!2nmW|Hh zKLD9pHfNuM3t@DV)No7uVlZYS&wR8mI*~B}{j8J#xFB5!#CwPNmbfu9KG^bpc4!LV zh!*(-0~{d`O31|dja{O-`CP=;gZ3Eqtt9e3*lXfpkbj^P-Rn9I4DZP9&9yhRy?z4( zlqZO(J|H46s8(m~I<@rDIfh$%v)E=ka=uQ@nM_z}8kMIzH*-I5;froc`MuR_&bniL zr>*7SZOVz?`9jG)#q)~to@s3Ixr<53aLauWk!~EJhVHaT&u3+NFGBaOkDRT$^>k!l z-8D*@@0}7;k6+27RA5$pmwJQnW!D9{*1%5yNxJ+-tzdfseuhhBbs(E>I>M19@#~9Y zDjk~W^@Xp29Ybnd`54$-zmf^w=;#3+>Zw_AQ|ZL(SBQw8bl4(~2RPxs8D{g4gYr2F zn3hQmk0=MEZl!#oO|S{aLJ;B}Qn*1A%N8{j47{eqJKa;6IX)Dln~tP8G|~8mrmjB{ zhG^(wtnb^l8+77u1+rOGu+C#N`{nY4;6ZHVI*$u(l)vegZja{O*f@?qb{^XC0Gyfx z53)eRj;bc)tRYKs@SQbKJm~gR?*84w&H$AhRy}_l?lfH_O2WEC)oN3RWO0tu`;0Zx zlA_}RAL1$n@$E05F9sK0O`*OJ^4>5l+8F2b9!MM_NDYApsJ^P;$(@(hUwHmlk#FTe zCY-^}uSUZ=5x9w+>u;XIlMOlj4IUufm>NW~hl1AH21gZm+uQKNy^=et3E#cQAP#lZsmy#^j@b?==bAwK|Hoo|Lw0jvI( z4g$Oa>-{jY7t{Cu3C;)U1bxj3d=8`~y4>rCpddEsl`)?WHTU8J(Uii1#>rZ*)#)`t zkSebz?)QIy#DKcZw&_ z%^z0QIYs@jOCBt+M=`Verpu%wH2$(Ip19>Cv1zCNMO2pDwkgALT5>X5Hzv+{+F%am z`X&0PFjy#WGZwGjgo*yVdr4N3v8s|@6MfJuxBS@7uel_`_UFy7&)VV8FJzhR?)ck6 z+$toy58Z@jF^BuIPm=>biT0(=R-Kz-G@bbW)^Gjw_^##ntYb-;XmMlLQ$Pf|0U6Nc{l;i1fY28LpvE_AEftce!JP8>=I+Ye zeHXYOoJeQt=i8m!gD)3<4kiOUV)w?r_;xhUtZMRrh;ah*ha{J_H%9MA-bBm5BUT+~ znpW&O1x!R%haNWgHE*9#YV1{ljA&l-PUq5a@fhJ>2klseypyv|$}v=w+s=ITPB5Lv zDp(NH*%UooLdl3Bw?;g(m_qG}P||J=FGp}6t#wT{S9BNO{<`Ou`__`$Nv%+|@%}}+ zcH9}nITAG#@lU|b=I|mVm>7D_(`ZY28=VxLWM}@_9HzW%mpm6f-;SH!6@kp!+qQRT zIm1C+7kx4-FR!n3FzbS>TojLGWw`GfcG#B~qAP4Z9~6eO+_R&gIf_>n9lI*Je4qUs zJI|uCt10{S(qZ=fa+hk`m*X?XouCIQ?-cIk%BVW5FW2wRnNV5C!b(HYY@WkEG6vYt z+msbspDyjp z&%XX8?g5+ZT_l{k+w(X%hhpp=&&*t|Syt({aTk@;9C>$cxw~&aMPe$8dFQCe1h>AJ z2-s{hF$c3vG%%dvzBWa;M47wS&aB=LO0Y&LOJ@q+tx-8!$L>FRtBq)uu-eIs&U-;w z0Vs&%31={*Rh$S4)a%dZO}rK~ABkRA-g1;#lS$g4MlUt$UahgJh#;B{R;LvEyNL@) z$&mtbO=FRc-TRp(gU@@mj&0Wyqm+^qhu+)8>c^vs6td)w8cjjR8DWgu z7zU9y!VI)Y@7F42Ary$Ej5J=4vtIwpRhj`# zUyj`&F@A|JV7@dDFT|m>uuWlr=5Wps0}ggXE)7`506r`}-wk+1?g0O>jr~^@>dKY} zOrkc+K_3v`E^HWQ!q%@d3fU!@*Yz~DosuY>6%4J-H(lQZ{W2aMnPX+RMF4f98e1Sa zKcoWp8U&N))Tmq`RYTIX;VzFI<}jMty6Lq`X8{u2%s;A=jIA1sRmN33mu$pp$$<=| zAVdnf!rXhS{Jr3lR1HIP>$#HRtHS99FFb;}Ugps5z`Hv6g)OaACdNs>oF{HR?3NEf zpl1oQIh;u$Ei&zlLoUI(c{7%~PHt)%zVd&jhRND)GNJBK?8onFh~x3f3y@Ua>4z#l z{!Ui>8-?_45FnbhQ7+9K-?G5ZL{m9NO`pb=ysT%`(q11R%;Gb55^(wPa997pAUd_H~9~B031P5N4KJF>wuCQA$}FW4P35x*+wk> z(t5VGWD28`ym~pGioW0N00Wlu3_UK^a&?^9^kt$xgdQ+Z8OeC>2oVwOEiX-l3r^~BWqxlVu>_HmUj*a|;Gjba#ySz0{8Ld|t_by90MT3TyHqpl3Op|_@hy>8{ z_b(JmPH5iuj!mdpHs&fy#f*4buCs;EEQ7(jFx$hA_Z~n$@NIM*)Xx4X9C-UMrNy4x zyBnhsIm{7V{oUft1CTB21v32Q;m&EAjN3kNwm;PM)9|fziv4Z2ACO0jxt}cT7PK+O zRn)sGZ_V6IM?b--KBI0Eym;hvbadnsKScK||ANXz%wm;pszc)cC^`>!s^9;Q9}dUf zBbyMiGDFrmGUIUUEqfe$ujp_}95Tx|*0GPBvN?quqnt91k(G}mqeHUF==(drzrb~I zx!?Ewd_7-}2RuYkus-9dOAN;0bR6!~5LgdI=}HMVI6(Suz2T(`oO%efCWSD{)MLXRUXK z@c^!|`jj-0&`$UCI!VQ^U6gxre=qn8i}LFNf5bktt)Ew|H>otARlZuBna=BqE0B0~ zWq^@OijE0JcJgMQ8ZuXW+dYXL8~}aC4W*KqZ_fRh=uER4=D~+bQy>W(I?4KErHYO3 zd*-au7Z;=+=~`^1&qF>wFxne*tqj>Ary+LSKQnL0Q&vqdxuO&TACSEwx?I1n?^gOY z|2n?|X!_b9vN)%*-(%v>NDYCw4@oKoI6U=NXEJ{UsgQDkIeK-&Dc`(efm=#HQ7kw# zYY4X-osORT{0L8B)&^x-$1qEj$urMz7^4`tB}EaHhk7Cr(u%7qmnodZ%WAP?$u^~O zNjzQnW6ySC?q5Fp;!x?{)E_9VHI!YWFlky6wIOcz#l_3J8|5bj;9Jq zQsvLnAKTHgc|NAUnF{QCpdWuS-veNlOWh{N2f%?gWjNP<3Ud(CSu&zQ5^W1B`5 z?&wtIXGxrhN?JG)O|4|+3GD73dryGF+xYE1N}CDE5ay_#tVPTf9rKK)x3a$)stlTr zyVq1Om%lG{i|6i~W4Xk}+^J0WislB8tFPVbTIbtKaoUv21;dJ2N15nhnwT9i4a{1y zgy@UAe!ZBjL(3`h@EQRj11(KFw5HFi>DDAuz`v7rM32a6BT!OICDDk}oRJ;@1Po)o zLJIKrQ#H}WD{^?6n%T()=dwT_7Wx&;u>o1 zSj`?<{!N!Lo}PK=eBm9X)Ph0b4n%}SdvjQ#P0Q8GnLA$^=%i`c_cTXuENHa?L;L@% zYQh3enXBsWk)?}8oTU4GMxw9D@mKq`eEkovNUoB=_sf^vrLfWRjkF4AbTZE_Y3{=9 zV=8ZPCtr;fT>%VC70DUTBQRUSBe+AxxlWhi?EKI)b*dn;uKVBnC50m`8v@AIYHULD}gAWER^snFzRbu zwSd#H9X;?)1x(bZTHr0ZELlzIziUCl58zD2nlHb*$Fy}Q4B0C$-eI^Aq6ky#&|4c) z1-&zQ-K}C0%s5oi?#@*@&FgHyph+g3pVkhg^qyf9jeq!mqncwp$1@-l9LxBmyj#c! z_VLMPMn>2aBaHL%$oT!@C@M0AQ>UKYAL!xtbvvc!hm-W`)Eqkl7prl#V#Rj)kLZNQ z@Ar&}rnki#wVU4uykly2F6~gbvEILCUZP5GD&-5rMP8JP-P-l0KT`jLS$q?xMG`gg zaLf1NPi}=`wh}QhQ{(>L^Vn(00Vgl9kkUKz2>CslYef zr1RixYJMPQEWTQcj{xZ3j|KzoZgUk8gS##*;S=)W2WzgJB$y^UytzNBx0p&e`$Pa= zKLDQ`Bv3ne_Q>wHDhGWPPj9*Q$<#b_7O!Gs4|i;h*~b<5(%s)v<`lH;K4$Gur@=Yo z0w$0S{jN3xt^4U8m?_b-bL*xbT55v@USN7t@T zMQT(l_JGY@1ufg(~1t)78-0!So^QVXN44>>6{OKQ^blxE|c7G!|_ zFkpw}{2M5-B<@mc^ITKyhoUe@FW6WS_viG~+ea`x?tQWk@YV zl(xVFOb9Augl!kCD1zNvpT4wa6@4>u-9P0LMyn`Mr{}kw2B;W8oT0cRFc<|-&)YF= zyJd5QxdCeQKx^`X-#X?HB30%+Sv7%;qfCvJMDYk4t5PWI`)wnnGDs>j50cv?ipzwE z9H*XD2>%1^Mt5)l*!Tu#^R*;bO505L^NP*f4;vI`t^WyPU)RmkPqcuN^pKMGo8>V8 zN_n7wefRu-VF_j_>#tAO?q0a5G5s+I^R#?hRJm|&4=%>iaI7PnO=OnQ?)KW%`wP*s z20g;Z&UT?<^4~abm}}0gdU0xK4Aor01fHIxNMx^JxW&TH>dMfe#}LMfU(z-t*rVzD zWUBy|6im%SFR8cDDwTT}J7__fs|Hi3)Nz9d!Fu_7br>XKptXbVnFnL19 zrj*)~Sie{QPKLmo90(fDI35iQ*>6SZJuPrOS%ntoq6~w_{6N#v(L2$l;KSBp2y1>Y z>o|oj$t?82A6|lG1pb+LSEu+TirHzbdm(#vWoBoIBy8>Z>~t+w=K;lUnL0sbb7zt9 zOJ8cTsf2!ROH3FoR{XDSJ{myMhv`VI%tvPy_o$OP>G!Tmr7&`}97pDq*r&F_T{JR( zl5yCaDJd3`UC*=AMFih-*M$nh!+(L;wG>`mcxjG`Kvz4h6IDTY3fWVu9s1O6ic1{3 z4ULH~K?S06f@%N|JdGsTmZ&5rhx} z2qXF(n@A7ObY3lr2LQk$Yp;J&SZZiZfoX|Ymmb{~J^!;UXx8 z+G$MZC8|eWh@_C*j`-i;VM8e-RcUTOuA)`-o2B-?dJ!c=n6y%f0Bud5F%TD=n>8_N zqw`G_=#@c+E`1?Eo^Nt>%5n$qhtb(NZFcTPI<~|n{)k|jTG0mEdu_fjMMqm>xgU^s zw2^cDjvanS{{v(gQ3?Ld=SF^+IYli_2b?qp+k?I(+0Ly=b-!0eW}&w_`xBiAkBjOC z?Ir--qEOdO5_CmdTh7tXiu{p4Aqg{Ar9x7~r@eJWcYSp&Z=-23;O^kR0OUah}Mg+Ix%2o<+oCOtG?2zc2Nuuk}82!e158|=8c-m7>SdK0;p)I7e4cSbY4_3t(rCq%xb zo@d~@?6=ZaUu6o78@?Y!^eO*96j;=Mt+Hmo>$19nNTk2eZT>Z|^1QFTV)whOGx31m z6k)$Ua2XQnPeg!a6d}iL{oT%%3E$s{pQ*0IxmoCUq(5zwX>&4iAl*RH9@r}VYgB2$xrxUErC}tV5 z5DRdH(`-Biq27$tFO*oy^9;m_aee_NY|Cz^f4Wo z=lh@kgml#Rc`hZ^R$BC)HEECp2~KaTOgq>v`mXoef33d?q+d;sVht?0vR>Qof5{hP z83nmNk>V`GX4lg`-~#~$r~>0MN0$lAJs&y(XEo42qAO$JS z{2HY>iJ-v164KU$NI6f$9Amv0MxjDIz>xWwK zseJCxke?%PXEGr6uX$8xC&*!@$ z!J{@-BFE4ydTNjz9f1c~%vr-Y7H-BLrZuex0L)g<{tQ?G@nVu3zAdMUtb9($zSRG% zIURF?pi!wwd#30Pt4+>wqEP_$rnIM@J21^%8@eV5lG!WI5p$J+^(NyIim;_t~ETOCiTB^nb zyN3(FK(`QCP=U+Y!n{tKd;lj^BT|y4i?M*5D-}7}&!N+2R?q-Ufn=B3JGh;K3FqV< z?2b3zNYfu{-@ zQ^$rEZ$2F|3m%zUy#Re(N8CJ!Q<1;Orr{hDiRA=^`O^@M@P_Z1>CuQhWy^T+tm*qS z+0wGdhY)vwCX`F;3|rgX8r&ex7rauLWzE5JURyq7q{3DdMSJKbKTwCm&g3+dPUS$DYHry$rsnFvtWj&$(Q(dSzzi zM%zWZevXH}+WlQGy~R5&A_K*hsM%ppvpjuB7t<6J67)iHMTOp*gS3pA;wA8udfv7) zp97Bu1Cr5Zp_7yK#DgpKl>*~tfQ1To@$;!%TBrD;O{No)YlYzZx-7Zd;#j>K=yQVnG05*)-w<~Lo9Zya2 zLYhPB-2xTbJSu`guE=)4FGjXXIQ@BO+*!RRSZp0>(5Gk>#uy3Cl-O9IGK3EgE8?X; z{R{KY_oPXn07m`x*T_1n8BjD0Q~BvNi4_XZX1X=vcsC~@V!(!?c=LJP1Wk{sUYgLu z9ypSX@+ITJS-$kAqa`|wbX}&2Dj2YOe%qee57i2ZSRu26fVWQ{RY>29FMObwRzd83 zJnue2nU%Ery9G+4+_Jk!?rWGb-|PrGYa#eOI5z1$XWs=Xq7IPUxnF2HnpE!vx|zn? z<(ZJFiI&4BnfDSCez(zfd+l+cFDQAzGyn>hx8%{-ymLR|eJcNfj9<+j-$8NR81?8m z=@3$@R6}+fCY;xOsLsgKr^{A^8HQSsCJzm=>9nT15pMy&^%P{bKXtwmu9t#eG_YU*P&qeo3&b@QI?Ho{Rs84T70?G~6*Nvt13#>CM4<}~48@la7;sc*$~ zakj-J4S-;tQz2?9cE%JA^u)qL+r1WfWw}?%K=eXMc$vPP>K7bQm0mc6sF3W>4-E)9 z)mG>>wqx4W?rY75NUDBb4t$p}QzRKKVbYqpoEbw4Qq!F~h6Mi&7Hgt&7f;#;*8N@1 zZjXcOgP=1y^El6qKL1?EIcj)rt*4Iouz$6*j`Io@TA&0@$Fm{t2a&Qhs{JWWWy=yR zc`M?udy=sphIbpqQ&i}m9EkkBo%P9I`UhpkQw;@wz%bf5AJ*cIF6jF(&WrX{dZ!}v z7CpK<6!f}}YhS@zfGmO7;pUN=&}aw$IByjb#{Nkjd;MSUE1oOssDCMSvv)UBio-Qp zla)yirrh}e#=szVE8bLQ8n`HhWCs>ZPRl9qCKXcdJdI>DHpYn3fMc=>%n)-{Z7!PI zws2=X!)+Up9bkeyS25vin7f=-`&-MdPEaiGQv^roqEdqk%1{y-HAfG4AQfxao0BAc zO6NQ-4RyTU5Ise{@lPodA`)u`)msq{BQCv$t8g%K?<+VP#Y@O$z7=A`` z4$#t3B{}zU?GX26zjTHSfVnZ zu`~UV@E%JX{)`DJ$rXCCUWM(?hBZ}<6gZjAMc;d_hx@OK%J>}fE9z6(d9>NN4K-C6 z?`mMAj?LJAjAo!5+DXl*=X@;W7$kZ{jmhH<#j3+BO@z;#%wC0 z@*WIxkm>eJ_52(1!>(YZ5U)P(!|=o_$?L@K7esRwfg@!l^2hjq;PQoS*y~ z53Pefcf~~~>^s@4g^yqlpftU&EG4{WKwey*SB^jxr0LAaa0x0qTr14ulQHI$+28A% z3TpPX(Q^HU1LGuSARKrIN%nmvTDz$^ttg%gk`D7vJg@soMbGg64oGq=c{M|x*eLm5 zAA^(jJX2#Tq$tD*!tdb1IEqoCB4?r%MTpi>9I*O4b z813aW8~UdAw!d%Hp$fh80-zpXAU&jB|3`&&Xo}sxaDv1s!hz@E&>;fFiDD{|%k_Y* zX)qOxsd7D?!}<^ASM+}UqD8E*J>^@ssPpLMF`q}VzN)7oHSX}JpeN8rhgg5D(nYyk z7-M?1a;RHKNfP_Vn~|=MpY}Jy-^Wy^-2-&!sPEOQsB##0(Lo zzPsvM_=Vr7gLBrIWWbg}{%PTqIUy%hNllS3S{IhB8BDHcBJAHhW5ssOBbW*B3?q4t zsnH;4=!`H?6>y4N6WH)v7&c*?F^?qr3DbB1R3w>5nIr-7S9vMAX+<^%(S+z`;XN09;5u^lix|Lw-9|`%Q4M=!h?)^yQ614;mKpsgZ+x} z`1Wt)Kn%bDRGE3FDXRLlnqrEZ1x?x&_km9asBg{oQ`KS@{h~JaW*SYbcY+|Dalj>KeX%E>uVtY6*?AG zol)JzkIpc=U=D(!J9XsQ6{MajGv!Gleg9XtnK!~ybmziXu%NO3)=Pr`fg;g3w((6H z>+JSwaTaZs11XiiS=MxAc)#q%I&p)`hr9$Q)$ZcW&GB_4dhhH10L4yc0DH@jZ}D($ znT!Rvu=S>CPMzpCd5SXnx#T+ROw+S>-j~_O`q5OyfRZZpGp=v5dxMt`hLEa1k%tB* z>M0V9dl4$~U)Vr6z*x8~Jau)(l^M)$f@#)Y4=H~zWnbGC_!CN($HBZ1*MLM-*M{KKJ?$^WbMhmb2Pj;eQ|rI!Q&yAtX1j=t!Z<{S5rX^z) zofn=sJF?k0hyz6HpmSW(ENnM%qn70jS+l_}^HeAm1A^$61#Y-|1IQ_%P7N%d2OyF0 zXBe~n$PVAO3|f-X@J0VB=lxd-CuQD{E4t|JNR_$Y{Z zZjj%M*1RqSLd5jqZK2i+t2*xjf*1VIsjF4@86+}{H_Nww zz>fM;abuVZ4-Jnl`JGVx$5oZP$1S3+IpXsZ74B!-pvYq!O*u zmsat^Xn)2#ud7EkG0{E{tJbw9;G(Z*Txkyq(Q4D_%K>c6f&h_1uWcukly)OZk34iOx-Zbpp2)Z@9z%P;~&Uc|}8obQF z*e>%b95NhNW3Joi+7q(7`uRj4(zWLqsWgdwMBsIcJ;&y?QTYNYh~fKhBZ>b10q7q( zuid<>=wr?9fA{>QgU8-CF88PI%+jxT1V3p@pkBpHa_aZfc}URsx9eIj)Mx6QXS;_V z+N+*)({})udqcTTivph+SKFo~ODXhs?Ux(w!;4wBh6Jm-wS>c?`tt%|^l!qT%sF-c zYP-4D^2OxGQ(RdbcN+iP3ci;N*EisrW|*+EpFcEq4u6@#+opVfUKP#heb;e00_xnn zw>)NQ-`b})dST;a|kt4__dij~1w9r_cY27& z1%;L{`s04We^oQu>oKU{Q2V(6Qtl$`^*H$>xHhz&pLuigHe{{)$`6FxIo9S zA>Y-&raj7qN{9Y-*_Yxf?ct91Dp~#qFrTgaAK+g@SmL75Ece*ETDi>kkKubAEKy4Iely}@>-Y83N<4is+WPny8kKt!uN2GGC{1Q~Gn z!R>nQn3|pl_i%{316CgjQ6}517hyX~2hwMh`jJ){15uv! zUnWWSd$WlyeW@~I^oq8*;i9NYd6a4Ob^@%>Ohvb{L}BrA#Zhg`&2o4_A42t*8AL zBPN2DrUI_lFd-@vr0z>jVyp=qxn@(dqmwih#HKNe_0)-#amtLTD;r*A>sZX?G#CyP zKPTz)aPZbG+tzzRsoYMyk=j^y(BJB}FAK;eve7rfUgi+%bqp)SlCtz2j@sMT9j^}H z#V*}1X#ivlRqq0~u zgZ*kYJXgO5r{1^ot;;spIo|&SO|!8TX|0@P)9Z6|X_ZD@Q>?#CST;2|mCG5vLCkaVRc_AM%vMNsFWyt{uCF@I& z2_CY)8ZL&SEgRm>kevkpIVrMcKx~O*_=SnUhNT*1Bintsu#yyW%b0BPq||xUD)$S$ zfuaJP7ClmT8zr*A2ul@?eJhpAEv3n5KqbaYU>h~i)9s=|VRUQr)={}8SmrbF9F%i# zZx;9*D+ltnmAa{4l6`Wx3wj}otRS);5ft(}9&m$|0%nkO0*sbGWubZJlwLB#C0uy` zjog!5M~JKhKe6FuvyS;8vy91K8l8bD=5vNyhqEt9pro9=O(b&7=xP7-$bH6xeIDag zj782d@5~ZyKvdJ|H=iqP2AEq&AXW^H?+cx}E~?1`ZUE*{c<<3GtKh650x;V*u2!z^ zvxjM6NL(``b@3q>H4v_7P9g3`-rXw@pm(1sR-pkHnEhPsWGo(6G5aa4sBbqjm@6t( zlseGoMOkzE_h4Vi8P?mG^Nhie%`GaIf*e}S@jfw< z1Pa&bxz5AI#TXeL*&9yu#H4ZX3Mc&NVv5=;fBMw)dv|}O*E%x!J;MTL+7Ho;oB9=} zMKf)#J<*+u2u3BH`I^QjOTPDcFdh10LQ()m_W}#{w!yIgSg|0ML0w<7Lksq4_|PPZ zMKNC7b});TnzCoU42)gR)$vcVr!7WFi_%SU(%keECl0x5)SMlH%d2T55X#=!P*%f9 zfmzo3>4)ZKWVZ-lsA8np$ADVsde58u0Hd40{%RE~Kyk<_SHkb?^#Xn>g8@@#^($Jj zSnV3hs`tpzY5qq~1shF5wNey09iBQdOo-ut!+=8GI(7DOw1)3C80!_tp}vV=rGI2| z?Y2%V{EpbNfCpo4D_2O-pN|C!5vn4w%5R3Ph8HwiUmz$d6ax7_MjruJd8}8?FccxK zi;hVZ3b-jhvIR*hMcK4Bj10mpgQ{Z&h8dJ@i+WUMnE;IHI{Hf7`EO zCDK@?h=Ba00s1nE41y)?S9W)1vW+J5r?UP_0EbxDZOH%$J#yqtIpxPwyF_P~t&4M* z;tvt^7pP?>Qgwe5756L@KQ=4gIwmk*O(!M|!5T9baBv5y557r&C*+wKp^Uthc8x* z@sa`(a4sQr^~tzh*{$12AXU35S%gC(34tj(Tz<3HducS;-1=TB`TisO8}rdDZAYrl zDLmzn#cfky*Fk_ZEkx2EC6NfVBLn9ZB#M=u{*XvX^Q{7m;|)Y^PuYwfqbWUU2(-D{ z&nTV+A*qJs_(wTgG;BKqq^OUq|Yy5Jrell(z) zZN>u5ohv1?`a9t5Dm_Hw4>nE}FpL6W(?rdsfvRGFih0V>iaD67HFllt(Q8BaI#K)p zrmT(;7fgLpTz}rUYH1p?)EC0H6rn`XA{U|1%Qh{I9Lbi!Frkl5HQjt(^kT}>jL)mJ z?zzv??#b=L+Ad$;h!s0`PIl-PiAHC(Rrg1iz;Wh zf$$tjKf*KRqa`Qn5!ghzxOzN1o7(&YJP@*WnHa(-U>Cf0>!TW-iC7T*4Eeh`QenPS z0Qoj2*IYQZ|6nu%nozhl5U+1}hUK!PtR5R5 z_sB!3VJ-RsNlv}zmpM8oRuL-x+`x;`Zi+3zs-JAW zDClK`scGXaNZ?2#0F+7?Z#+e0H%!`tfdS%|M0#&_zs+m__O)3T)pk;&x%Q;W*fW1h zDcZyPl04Nl%Ij&q5(r^EZcp_(yIgVoc|lVfw5G_ac75N;K4CjY=?lXOj%^0s&cNrK zGi0fH>{iwCZeA6`Eh|Z{-qwzdroir8~7Y-0|Ln7)%_t?RUVUYj50lt*Za8SFEyg68~`Nu;4L4)DQ{E7Oo>U7k> zfENtUz9Ak7nME>9RY*;?%a!ZBEXjxenw3b|Gr|FMBH+&rPG0+dd&;(+dKSe{B3_HJW#DsVv|zn8jvBySgC`Biit%YCQ)|XZ5(ti~#nh3B?K6XeAQ0a!>$c zjw!y$Jy+qQ8%#uY3;5z$&EOcwU;X&MSoiZg!91!vP^Px>>h7FKubAvpBCyiV_szX} zMBj~8`E%U^bxuA1Q@xX51(0}ptEwm!2YQR7{AK<&E~62Jn^PGAZ$r7%EJUTUBbO2B=ZzW|W!MafhZhrn31eoK%HFQmw8`?~WSu#zI1$k& zYK-|ao>!~$Vn6{H<3n%*Wya7X;X!F68sNmT-Y}`6YpYN}1mc*JHmk(*wVQxt0`#D7 zo3+MMc(da}{V@L&Kg=)%>$ zom{?qH#G6&?wo~(oC6p|4HBvxsges`&d|#DUTpgM^rWexzH(W{=K%05(sMB3Q)B&X z?P`CM4wUV`$Bh2s?tU9qx=%YL=`*iv)wCR|^z^vB4!CjmlHb)2in}0>A={y}yGs{( zXzszA0S_1Uj5_VUm-`GLXEz85cD#MngZ)A;Yp1u@ItDT*ai8>ucp9Gy*3Py?_|uk< zP|gd3qf6tU;=7*y`aR8E)HD!xrGxw%H~qNcXmwulR269XrvIq$Xa1&9+&DmGV6I-> zp*)GPYGj9bku$btG_2N5>c-&a>p_b}3yU}3mxPO#XqNlRZy4{bxo0kB{tP|m!R#F9 z>aE7Qys7l93N)RGmI!{Ilx6=?i*GA61PkmWShxH-cw?-#`!!7Pg#p{Ed(5djFR7S^ ztR>SrFYC%%+HOItO-02AOb8Bd>O)d z`BO!yL9r%cA4MS|c}{+Ne_K9P?)09G0R z6uEi{tC#jNRgxwPAr2n&WBr{si!z$%%WN8j$vE|=AuRGBlSAkpLUW$Gel4$;L+3B* z1e|KZ!&S?X89^pna*L3&Wm)Mi+*ZExdW{yCQWS~a|M`yiSOX~Sl*@nU=4t`$Rk;@v zIMBu>%@1IKpTy;uUp)82DoDT0R}UbWHu&M@(u!=9|IO`+*a%5p-5QWRJLOA@W*;Ua z4_!H67i|?q@*&zOAxAE_*03IOp+fsj#D|iHVN6l~gx9ZC?rwS)knJLYLDV394hcjr zFHXb=M>!l!+NvZukdqx&|4ub%z3hPoz4Y@}g?Pfx#(|8i>HgtjI@H#kKSO3;W;H1e zW-Mxs(h5lv^G&9E0s`XXEcaeIF<;B(pXjg!@zyEw}9aob^Um!pU;0P96LA zd_iZV?WqybY4*)7B3Frt=JSEWt1Nu>n(;6Yk$k%HC;2~Z(a*K%WOABI*B_`)t6k0U z$-(7;>{wvO?vwS`i$7N-J|ofd@5(nwZ9w_jXj!6d_Vh^YgGK{|XNIxkU;DtzMn1~0eW z=l3Tomyu&%V6iNR;4_j_Po{tK8Q15yE@0bBb5bk$O=4`Ow-r(2{u1sdWRmGP*I*{7B8`?7GIdwkm21WB;AZy@uk-(Bvy#TH)u*L;ARgw; zMnR@>gXT<}fYPgBQ2R@p{E@fTb^CmuDzSl1_OhttqW0*|Jkbnc@&QAVS<^|Z>Rw8; z^=yOgeE;=Z*zK*ETJ|re1VwZ$?@r#0Rmuf#Ogj${?}y23{}b(0O&0CPkd^@wZ?k^< z7EiP%s2YA>?`o1VD&|SonU^~G6S1@FwBOhm#`PqP}|CM=as=%Sfp9or4} z?w%IrvoIaI-Z9;a>5A!2OLO5;o$P}ORYs5!KMr}2m!0g(|5RR-bHv*h-ICHtyGRK( zRirR*k7n-jT(2ONTJ--ng!&b5F}dL177#6zIpo)Q-Tb*K=@#LE_6b7|`;;%|qP{2+3U|mA2wwG07&0C6sSDU?Znn7I+kEi7)|M}|_ zN_vu0C9059Soe$v?PQAKhAe26JQgw$L#0$3;Y6G>ctG(D*Kl)DEJe*a{62p^WA>@i zXDv2EW$_<}FfoHpO^Zi!UjAz+*=l{5zckgf0sC0k?F`px( zpo;AmK7JXP)YyrQIgRlN%$x7oQZG+3R3ZIUtsl0g4X-+`Y#479EG14~7~uhZ6z?OF zb~7m<0_QcU+W$^ymy8G$`K)>Cc@Rz4zUnVPjYG4^T{aYT>R9?v_DSM2$mJXp+LQ-j zI5sn}ub`;uhG@Yk|K)_Q7n-mdO0_TqDKp*QwFG!^QB38)qx~yUmcxxYYdgS?kAUcc z9sXAa#!D={1dD&gieU3u!vh0QIhiwaJ1D}p>Oo z%E!G*II9>hCE{N>?kP>a22#bOYAIhC!p|s*{^72yQnHelD{Y3RRA4;1ALXgh5b^5O zZ3;$OF;T=S6$WsQWoZ%>MOJ^Q9zAClB3(I%QR# zCjR0n#}sf?rKy$^TS_l(yoq4;@ybI{Oi#E~cB=b(>f7ZDq{g=eV&Krydi>-vsmtWN zE$^2O5yP=cP|_p6-T(-*tf4B8RSg5z+u?N46BF`(}#2V||7bTRJ9;4stacQ#?`a8SuBnb5Bx&z_Xs`E0vN0(if#2ugXiieS*-QhT<3S3yDINhEvA{z~ z2CzWx5Y)15PQGoT|Hg6awYU)cJG8}NJ79*)^47@YYaiZ+eoR03M&*YK-940VnsssG z7Y$Tv*)jV&8P*;S#93D@3QF{KE{2eYkYkB6f^0)K^(P4S`Jyd7Od1FS8y=8tMdFO% z2vuCKcf~0eQj->OJEZ{id{_Mt0+_4;MqSRnH?H<0KXF#^;A*t#&{8J@AqO{4jl#;Q)X4V!t^Gln= zK9{2kHwwxZQ^DdL8YHB6h809p6bzKoLuTV^J$gyx-8A(qliKV=f~m1jNnaMMQnj0o z4I)?K3!{_PsL_6xfMAI1!Lhy~r;wrrD>zT4hDO52x)3=6R@Apg?o~vDyPfvdE1c7( zS^VIn2#RW-J7v)^&^t3*KM^3^&Yr*Q%MUT2WIS)Tck4DP3TISTkWp))8K~_}dE(4Y z2GsFY@Qa*ujk1$T1usJOPH^BaF`3R85;C!MD>gGLUrtC|c?)guB1>xO(Fk`6G;``` zZmY7G$`pNi)4kx&%Js{A!=lpL{{xr_(P5MolCb$a;~o!C)VSKINFz2e9JO&sLQkZE z^wh@%CVnZ27tU zE2P_k(tIsFbhRSj8Rxqr8*at(I+d+(?OidUEtvUVtk>nCLM;+`rH z+LYhI(u{=6?DyA~8a6~voeAy>{XoefjC&$z;@W+i-zU2t%Y7~UA7Bvby?3Ez#YUUm zONseV_Yr=1 z=A$npgHZ-9Eh^5^Y;^rI*iYmwkcih>G&2+Lz*Jy1HY{_p=rgGZ%oY+Fn99!SFMYL- z(UO%3NmcrVycjCv@a7BeN>sk4fTf#1NR0)hEFO%B<9x6Ei`r5X{S1v5KZHO^w5B;u z{>^hC0HY{HNgUv292Y3&o&FtV{wICXF_mXmb|Kl{oEMy45q1rfeEVba3f5TB=~4<(?kEU3eE85lb+$J$DtePj)Pi|LN8sYhiXmLPJ-H8jf;UAEqT_^aitkZ zWJ^ukqJWG?%iVK%8{(vciFAGVl+?T1{obURV}xMBepBVEA4UYxVx zYnKC+cNbm{2)p#U9<~A%@0{xwDIYahlejVhqWKcneKOcc>u)p2D>|J=sdSh0Eq|Q8 z?)8!{#gP`9a<-k$!9iPNyKTpixUQFe2Qs{mWa{(!Hkm?K-h|B8ff*U;Q@;m97y&#x zRB`;4?Qa+5SEZk9Sde9Q>f_6$L@)=NLFD6$2Xjdl!U-K(k~MB7l84Uc0@aUKlm0Xr z%zRX+R;V0_DZw$@Cd0dbrB2Ds8bnq9%oDI?C{YlBjjL!0!XMAK`xcEX^D_!x4EGB^^6SEBvsi};5w+0KD$wR?c8 z;GUjY=_v$2Z4Mk@ZlvpeI|oo^X~{`<8mkD_MCVJXae9K$v}P$;FcBA~;EWuU1XO|i z0%wkGIyrsgmmm*h`heT}l!vA2HHC12e{A;**7ZJ71ND)jOZ%0hNfWETq@Uv@Zsq*E z-6sqhyvIM#+UO@c&A2$IZ)U^lnZE5GMpyj?305H8>9Le_A#16qPh%CcZNzcuKITyW9Sch zaA}2Irb+OO1fQ{iBY7LwF{&CW^!Js$x(vyifaS(z3&Qq&&908ox-V(~d@P}`K+v?B z=M6E{f|estr6II!cO-eyqPaB<}h>~w_h9c@M?xHp`xpOPwtJ` z^B|V(w95Av*MW!g+{h9ys8^%&+|b;~uXpFl(1f->`KO&6?nihaxh-M!0q90K8TZ5cBBF1JJ6uKe-ZizYIDmh!~YQ5b}QvorgP{ZySbV2DSI5C~CEe+9S1V#hyV? zA{wK1RBQYwp=N7@5<5ohO;nYlMy(i$RaLb@TdSq@efbZPBgvEZx$o;bPg7G81XaA{ zRl5j%0wZyDmsrKb}b$5CXq@Oi2g$xLo zp^jQ&+$I>PS=ReNNl1ED9se2MEGj|*Wm#&NYIXF_@Pp?;=Fm*bfTDpmP(~i+nh1cEo$eC=o#fIS3qj`lbfrZgJCQt<9w*s zpB&V#?9k)QOZ=b2iVksvVy#ircHJT3P}t2YiemaP5VAQPw!%T z*>+_{jwxqq=4ejA{1hyVr|zaIosno`6gIFtPnSCRD(fovr(}S*(`DvCzWdZW)rl>G zBrJ0e;@2+wzrKgt!%fOYTvK9uuQxhE6q2`t1FCjG*wYD#GK$KP;LD6Qc*X>ZwPn1Z zapD6ZEwVQpm)lOCAYHp<0htnc7?Af3f@b)xrCtVskH#9d_dO|8h(-~9CQVG0TSJE? z@5_o0T{JS+hj6`+!>px)!+>RB#Foy%si@wUNv9X~MkO;g%qCnj`8@J}^hVolU1`@^ zRXKiGfJ)2uE}x^g;9vT7YTP5P^J9Efy>ONTq2kT2s?8ls8(dWz1WeCFz+A>Gjm>)V zX-fbBUs{tZBuT^D6~gb-`u+`ApIP?RPrV)}p}Ujeoxt~N*`T4zdewGeNDc^;17p0y zwsv2|FyVGDJxx3bB9*AxWy-uFH}BSD+ZK3K4(IrD;hFr+drR9_8d`7->u%14G@SqOC<2R{57> z{1_$d0(?YeLf0|PZ!4&fH#j7=%HN)-)l&7ak^P%76wc43?Qm!VKZ2^~VlJdpGjpdE zvGmW%D!}CHq-~Fh_C90G;$f2|k31y2JFVS3ZUb=|^}@pU>&n7PFUUq;+?UBu$>Z-0 zA(J$Wr`3K_(0^$!z`YIP>~H(aqx)i92D4#_RMt zZD&=rqal!GPSO|iJtzwC9o$MdPuv;@DfgF{Yl2C^GChT=QSy!9>==m0*BO!MIZi2nh;i}L$MTVKzEmZKt# z>ZTf;DL%?Zb^5h5Da5&URoHb=h;s#ZXA8uM&N%D*WdIvZ3Nsl$>Xq=VyxF=eb1W&1TwjVJBU3SG+s}fXxKwo1Sl236i#%`K8K4i4wNYDzGu>s z5BErIqj^In-vl)9V#tY17H?g?UlB`AV(jHx_OjgFM(eyj`L{JR7rOevW9 zu-Oy$HC+EAg?W(?spGrXA^{qe?}9Te4a1Ho$*^wkCWp2lJNU7Ei4-p81s^;=;tMEq zLHO%_$NklZao!h=j*l$pslPtMhG|{yovi&U7-y z=ARg+$+1Dm4;aNgsr8p34<^`aiUq9$sTpX49Drh#e7S>YUwsP8*oUzHd{2FBi1(fk zWzrWT=@=%wq~*TiZE5_tB%b81=L7@L_c!|tjebvpyBV1(j?I;5;|-=m_4l7g)!ZPw zR&x-|qQ@|TG7OcDJT;BEz6j|r?t?eCD5`J^d21~_misIr1?n6ROxS6BJoX)V%jU~8 zdr)^87j8(Xv|>4w`48t_-t&+5)032JX$Ww0*$DIAQ*=+`uaV|+(qLJhfhuwjM^^f3 zO3F%Irma1Al`Kh7|KyBP{=e?Q=J!*y<(tV_k||&>X35s0fJUw&s1E&Bz7?h~nm}BY zjyPfi)kb$_8544df%@4~KI^z=RIro#Izwjrw2Y^zI3m3@^O6+u7EBV#2(&g;Wj%3E#)DrSMik<1zEWe;NYGD940 zq_z6+H98uHy9JtIJMzSL8ah#>a)#$j>ZSHTO9j^>BblHa?fN21w0xU0err=WE%EHd ziP5N2cjr`JUZbL$m9miJrs%Y^gwV=XPub$ptvF%)(1%<$)1W4y?bb_Xmj0Qr%}-ap zWjFOW3LD^eY*&0bw&VNOy^`Co&doROG?+h}fv>_pu*!6ve)QF@r(H^EP^0-!_fye* zV$B8r+BM7B$wXWXITO3?s<9ofXfM#<2^SqE^PC)8!4N4}wmR32&doW#v*Bl8|5w`Q z5Nx<(BsH^4=H&rJ4tZzN7%;qkbG}Vsb1?JD0ut2d)JvqiD<@&Hlkg$bIXv&ygA9|@ zDvQ{!u{K+5lVf!+&S+n&o8`0|b->QFX?_jfOSbgmq<`Uo>AZgZM#~S?`rWSE)49_* zVVui!aaZA^UFz`F9IQ95=;4+7#LZM{W~lc4-p(uEueYgr#Uy1m4!CKWCy7qyDygCN z^JnQRJ@5i6HWiCJ147xG*R{alDWF9Sd4^7%7I`bK00}n+cLdEX0pt|jh(soTCm7|L z$FYO|4ymT=DTQHS28=0bpAZ@?56ru(=&&yA-e-Q2Ea9mATOjR)#q$|Izr@iH*UM_A zx_Q}0uan7EnvHhZe4#(}Hxim@j6B?8<}hnyK_6{F0oQi4*S}RkYw+_smGObv_RF6!6Zt;LfHC!*-p0~c6@E~- z5A#<1N@2yk05tK>z3AW7Q9Hq~9tM*_PL?OnonZ+N-@jK*O8&rMSyGd2_+W*|X|0l0_F-YBdN+vnM8Lmsyb9788B3!uG3TJKs z(0Nn*3@qnlZl}dD#VPndfTCWC{c;wF;JF|kI?OKZVkNgGo~LAPxiBh;mQAIig!WLS zqqrRzS=#6F{wqM0GZz2kJn2p(;-ocS3SrV~g)kJS@7`C4DRPqaySV*8z^J00`RG$= zb}qCj>TSICwSV#~0c`~C0+rl;o5mi6GNLJ9_L=XQWLb~5uRH=$A?0aznMTRzH(s*F zalJl{yp&|RmA+{x_+M&SSW;a7AWBNpjGvBqj@37yOmdFr!`nRf+`u|nwqtJH$&s1Li2mT#Mg-JX4x0TD!6b06^CJku>E zU^2zK4w_QO5wjvTpB(QFigk59+W7Ge5;6vs1``*mD?eOf76q%q94=$4(Kb#ToH0l$ zvb6F-%RWx1(hJu1J{L&^6V2bW)9)EiNk_(+q!ggv_s^~v(iF&MKwTl9|%$j1Xe@`-ud!`=xH8U zN`e3#Y=4LKHex<`Dn&HBGHHvpTQ!R8r8lOfl~%b7zE2haiR`C{`nGhuim`84xY=!k zFBDnF#d6p_?w}p%*)lTaSg$>p?mVkvACrPcDxHC0VF!6fP@b_NG~xN#E?{j~#EQ$| z6}%C-@ft0T@#ccQX=BinjGy%xtcu9_;>UTOM@^-x;!F^%>)au?#C2}RGZ0M*(9u*J zX21p0&zx*UAv6YtOov>Rd|K8i51CjgKFY}A=U6d)-PT-Y>ewHJV1r^-$c6LPoeth0sh(RE?->)qmWG)WVQ$J zb*^$T$a?Pdd#mt=+vn;02MSRE27we=6+5q^0v_;(W=Lo7)P!q0nl8w3#{jbec5zBh zs5KdgO++{9M}U@Ym4+&T>Ry7u;+_A(*WDY>UyVa$*xOi#Wb#m?iwUc^L*D0B}pSHbf;$wSdTU}%U zPa5f@VpeqHG5={l0snRoY#h$D0PUSFwZp*Is5vO1_X{rR&l_zq;ZueaB)=M>ykJXX z#XmFihTuWuPw45QMr@~{-n4m}@Tp*H_)%F^4}ZPB_Q6APv1uP$#Ju5@K!J09^eW?7r|i`NZwW_{cBJ(q38H`IGI>w_?(a>Ce-0)dIFGqYh5Q=D-kfOz zhPO|L*165-8L)Pbp(@;Gs#t;16M3O`SDCQAF(!XsigT5*(<(!SO&Ysi#w+9j_)~2T z2*W~^9%7!r0?P^QBtO*5f**fomErY-QAjB>zLd>9 z9W+al}N(jA&WV9sintrFC+*>c_*>MEh`g*|m18FO}#Z$@zZxlKlFw zAU6W}BtJ**eh0{d_*A~O)OGH0FY}+dl6Q_3pGgKG_ry}1wCvCp#LQ}x6rpUG!ngx) z39}-U4Nd9!P!SU7#qm?ZA-v`0bew9+tXC13VCjq82cZV~BW!>vt3POO9GF7RQq=mN zQF>{dG}v;1iDPsMpooeqiAJkc=;J7)*z~@}kB~ns#UXM)T9-?6o`PyUZV=5zwS&G2 zvF-Ht$<6GbD3pweK-N1(llG=Ygx}CQNkocZgGuL|c||nz5Q+ zEr~4ko0Fm&phQvfV}B1`<1NvZe-9j!0oBPu4M)Tc1uVXd+SZ$TR$mhy&?~UL?)$hn zCuV5|VFl)Y%~)wj+bwmvm2#N`@G&JLJU1DAW;}ntw8a{)RGC<>_Z%N+8;uv`B~p+e zC-Qy&1p!8)&U!7BR`T>H%GE7&k;%XNtLXk<&4fkg2WIZvmfGnFVs+j-Urq}Y+PP`r zN$5;B6Xzsugaa4l!*2wApk$ds z&tg**AK&ilw54$VH5=l6lSZ5$?CKY^8gRW+5EBDFzbFURAM3@u$C!{nXkm~tT97@O zlTp25d>U$9{IviLujr4c+}?bF5TiR|w@^5|0^c>ah5~4&Zqp>2QkLa}j8F^C3Kj!o z;7P1{<#b5;)krc8xa~LgHigsS7&yAgS*I><{41y6$0DcmpytPPl>qc#hs7eW!pg}F zgYza;hqiBAG2D@TrlseLfr-w+tM@;d+8!H(B@#j{Ws21AEtlY-5+%~rfyjGoRNJ1WP-FHxQzBq!SR&4gC&bXyj*3U@4(8P%I^7 zD_(tsI(>mG3zSTv791f*8RHN>B~VMK=#C`}YyYP2(Lb%sC-}-uYoPj8;+w7t1N^;J z2$C^S4Mk|Hm}~vy$~QbBWj_xXfR!HsJ_zH#&hD>nxH5&cW!9;o7rV;mYyJnYFxB}} zr-G9i**+zLpW{h}fQKiO^T9sbC}x)0Q&v=x?gLA6#~RSAvMSYmx6)9EZ<7(K-iLS9 zz_%x|J&b=2Ib8b%llkzs!vrFpK|3iryo8epoGW4b8{=RiWFvWY-Vh3T>Z0V%!sE{cua9RBaS;}tMiPB;$(i*w1a3;N+$Ws@pwF*X zJZsBtx>bIeIYLz&>TsI^s)QJIXqks!ruu0~H`-cnb@ev9wA528MD2&i@-Md81@7~{ zIj1ZL(eGLe!4{9h z)?Zfcs|x-{sG9+B3OHz4RP_B1ut*vE)BXKo`{T&y^Zx-NxKQiN^YBx38(3P&jVR5a zDYl+~2LHhO_<{7%<)xPJJmQ|{NXW*enWG;bo+i?7|6&fYUYz};r_{>=7zhbeSY&5W z*}{jt5-yJ*fLBA@zSZNNPae6kTo@vh|2_Ry^9UQlpx6nmzZ2zWFa9Y825eEXbNlfb z+;0!bhaOE^#PAFgZstAJVJK|!Eo$_?!)F$EeJVU%I1dk-y4(6P^y$=5z>;WTN)!Lt z4MsiJG^rgN)a*`8qTX-`jmcd_BONu&b7>_+0_T!zH}x3uqEd#juudcQ4`+REASwBH)i%+)e*0 z{u^(-@ zaP00;_7zymFW2A^6Ohc=at*Eb_$!{&$*8rM@757~dd6KkAtvz|_5(^E*b^?O75(3! z+IJj0T-LvK&aErtu`7Uq8EF03zJG#McgEd# zgCWx3@qlEn!Yjl)4MeAa*sdgD2&!n9ZLD~>c=Umm%|m1VRm1LE5I6n@-6xXPzk`7T zh#oYIC7gDP7C04x16G%`H1#wt-IZ}oT#uLkJ?{+HgUhrrpSX|w>^Sj@fxdg$m~;HH z7cv6a%ROgv5B;K3Y$D29)2z&O%G?)PuWt3>we|Qp_IXuRtWl2K0I~LsiZVjLMZjwj zMJUJjV$U0t63M-|ilm>aU*|?D10HSMs@E(JzY(iz7HNe!;h6kqHrAL{w{PoFDY-#}337LcN%xO{T2-9Ar^^@94FR-=cbB*TY`83-$@Bi!qvH^)6Dh$m|!7lVlK)$?Bc`y zh8!LBCdBWjALk6O;;yWeDKy@hcYjMVff|>#ZtPja2Al4)^Sia{wa~rF!x;LiPEYn1aM|v&{Y0bJ437LT6PL+ z*jCwVPi@=*WI+c+p7P{dN5x?ih8I64AGx&avWbTZy;Mn?EwcJ{z+s1uyA`sI!|{*z z#~&6vj(#k~DKt^XenVP(bsnCMsmgqq@zZ*FQb8tuZ>_g#!7R^ZZG^^+)$oo8PI05f zhn|y{5SSJ?jn=p;DlF?a_Z&nbl(X2yQ7_Q9UrhnExB95VVu~acky}r8kFReU6)mQt zTdy2rw$i3i@|_Dp*SQ(88FR3su%o)F6^2%l_^Mq++3YT&Y)(vm*LwK8_P2YN*H7C} zLj`+J7}oZeZ`)DF@mT0t)8|0TE|j#GE9krcR>#Z2PyiJ>)qlHA8k{ zj?1xf?@g36%dvak6FMTvL^Oj&ugDZ7)9lxU;7~e*(y@{M-#{r6cA@R&J4v0ZHU4aR zjS&fHxwXvPVrX36)viYAR^d;wDh-hK?|AY zx4021xj&CBxCE(CtiEcrsi&zzf6z7){nGW+l)kn0Npec4wy^Ji>L|Nc4cN(FQu{X% zqV$6JgJgB`2*}@buZz#uE)j&-%c3u!#=o@ica5Q!TCdyddcigiR~)BgLOjTOz_^9R z>^RWM_$7F@*-}$jP!Q%aGG_SJt%B)B}6lp?x0Tt z!q=?f*yi|PiFnBvyo*i^)Ypli!r#&(7I<@hb92uO=7R&#k z@xg2BKe1n5O9Db`0VqR$Cb7KWVqzK-SyOt7t$>yZR5iJ=>?kP}=UOuPP(WT(3>n-1}T!iSs#j zn#Ihz6`eLOzUt`f-Bo$qzTn!9iiNzpzs!2e2OF-cjMBDVhc{#{bgO(_aGKv8Q+3|B zOOMvRQ?s`|v>HR74&owdD;azOH7Am6Mi$m<;qfJaCgacx^hu4`Y%R5G0eO!aWKrXA zN@VvRofk*mO#WfqL76GD&ZS4`&6S7`63`AZG5ugbz8&;?c6#;ba^xWL3T~5G?NdNV z@Q37olG!MRQG}R9hwz|Hmdi%vdqF$KwjGgzijJ}YwYq=s4P=K8FRJ48{$z^n3|!|h zCEc;F9LB#kI4KHns8I%OQz-Sn=-VCv}qvKHd zJ`V{X81$B#@%OIWi}Yfmf-`tVDldLvL?uWq+`CQ1^vy~V>1FWgvy%04(nkw(IAGY$ zOM+RNPB?*Fs~)X09fids`%K?+0z_UQZa(`APUL!&LRRM9Z}Jq2{~y5QFF(a;iUb8` zZE1(jY>3hEdiAn|m9kyo*yKzOuG&8iAcA}l>lTXpOf@_8Bm3}LVJN(UGfxJLuu>^1}12A z+KgqC&S4+^%MW z?B~=ZewrI(-PRB69tq~*uv49D*JQs<5xZWsjqIkRq5#=e#;uL0t+a)iYJtHIj&)&f zG>>V?c4CPYFGq1?^=gvRhznPLwwAr40u7Dcc%mNpz2_2@KUF1@yWi|g<)I`L!>|Mu z8<=B|Q^7Ms22QA2zFsKn5}MM5(WYMUdxo&Bztr-|l}#QNoN*d{i>BZ})TOjH|g%KvOblin&_%p z{Lf+{gyL3V^T)&rsMDk=lCdn0EDg)G3WmuML*s@ll;YWk2hTA=tsoL_-STBzDbf=_ zFtmbbq5q!&k8ta}x+p=2r}6@dp?FYlW)aKoTG164Xn<{=Tdr=m*UwTx>K-*>Jk04vh{-t zre>%_pK%L_PD}W}MOo!?TRRw$6F|e9Yg^;gg zYUNo@8PB1#rcQ;*_d8Ffr5m`l05a;Q39Y7gp)5~k*beD+327ioBN~7iofs3arpoK= z@H=nQi%{pc%5N6kq!MrkOHY4QkS#805cJ%UM|6|WRCwIn66f=?t%YzBSC;Q@i3n>@ zOZVsXvT$}<)5hSa3O&CQ!54p2+>1uI6*iXT$qNfq1qL`TB`G6P!zn+#@`OWQT%MEl zEAQ2Uu8DGGAsMH8=eOT&frK2LQ@*!m_5NXw;@07IC2I$g-;t*eXM|FIyG&cAy{O$s z9hD#E-SgRL=NWRKWg2{exbft7(St3f<^KWJRHmWM9K#+d&F`}yntDepD)0UWsC*)8 z;;BbEcE2v2k=t!h=j;7i3S;~iWXwO(6LNf~m~?yp(zqj9;Dawd@msS(OmfxYX=815 ze-NR2b<)CX|C#&{nC{mIZw30d0GcK43w_*yA*G+3{xG(t*Z1FkJXQuJ-?u$?>Q&=h5&+ebeAD zo%&d3)2`ru?h8D+phf?~4k9A88#vdIjB|v{pN*+7KeVa~XteC8P|`^AiV1A+U>9O; zdvMXvs)8RQKsB&j-xmDwvz2$V46X4NUmwdmdv*yM?UK!bzZDC6?DZxq*6nK;AyKHgaYn4oRbVWORNC*TkN#Vj}=U`9b0-e$HQ2KK}dttL%cU zgwsvEaf~S~fLx03^t8^3nxYUs(Ni&v|7qXb1Li0!Z}>6*WrlVEkoNDDnJv9h*;jMp zVnrQ*Oz@uyou*vyFX<4n;4<};oZ9xN2DPJqP=C&DS8`y*`h=+v_jNd1+R9p48ZU^$hRYG=?l(M>9c4^ zRSi-_l{;gBcW`hkZf1BviAdHGjY=kPoak|g?;smMwQ6L_M|7Fuv~-4yfzK?vfdwd6 zSy6c?&Jt>!V5w+W=5-Is8Dl+MvV-1<6H%s3_Klg<3PIiYCC$5OQ!Ika_(;vj;MS!D zW`7=C`<{#E7%8<8Z%7%d!n2-Vq8X{IH_k~NDvpG&Ox^TkBm*}rfy%Vs>dAy&u*n$8 z!tlNCYF`pnPKZM?$COVLav4``=PSxsP%evG41>;eWo3^d&i29`&H(ocvpqC?R-JkF zb93E~((o^6>VDmUyb;wyU-D;*nosd)+NXI^sFYSO-auAasT?!)Mf$r?G>IAJ{>)@4MB z6G4nD{Puy!fvAOLD$@4&U)_3ZHc+<`>H9$#(Ad)ZJk!}n7C~&$6rkE_>rL)F$31E|6z@^NZpJcAINpIg zk!9neI|7e!PR8mZ8M=jD;_hMA-L`)kaycuJoYtjP1@yU>Q+8w@HzzF*#j8w*TXsC+ zEGGu!UNJCp`WH=6?%;u%h2@fou&i%^yVunj80^ZP_-IspE&A*(#eP zqF(OAt8haR8FS*7t8umSMPBxOQ$&DwpX-sD;tORsX$e{IrI5uUCK1XbA zR)BsatEc0wns>25@_h~o^qHuAY-_xfE+@ALjt!6irQc3Lm3m576k?)wQf+80Ei9#h zh`=)-e#BI$Z^nFd%A%$R9ZiR-5LGR8%Jy}-JC5^p0qLz@AmvmVEIM%3PYr(AA@pxn;~S4botJ9UM9wZI0XuyJk$ zKv|VkzU_0{kg`Q{)X=e-Sfb}kR418u5EaJA`Q}mf1}-LxUZPo-llp#Cwo`0?ku&OV zZu>*bro;Cm8EgO%BJ}>LL<*8c#7Hiz&ICEjrt)oX|Eu|prz=e+@7bfu@AlhieeoTl z7nkhN@GagujUWxu*fG?e2EC{iIOKGtj`Y~rl@-8PR*=Vo&cVsMcy=MkMKY&hmR5OA#Ts_H0p2&mlC zcp+{UxctQc95VqY8Hb1`KGZhmn9^i^P{7F%l8sCsj@1J|A7aR~R=)#8XTGJ^xA8|S zPodgf^2_081P2kZ{`}q`i{MCq?Ee7B?`Q533#&a{W;LUej#g+UW7Orp|)u#Ao~RT&)P=3eSy4U7Y-~>-brub zqm9KtU5G9O!K{jcCfCb`ZuR$MiG;W}FGudbU1c>V4wOWk+SF~Yk7YnYT&?z2bH7pY z+7%*u*}!2p(_gG#DAMYC*!k0^g=lSc)KLksC)MS7bvl8Tm@|-ki-S(_R){rVrHB_Z=j_ISHL}oLaOHVE*En_L{ze0dldYpQqekqFK zERX&AZT4o4q74@LTJUTl?#%UJGS8VqszB-dU_&R-_ppw(J9G+0^bPPFq+VQ6wCxNr zk9#t0T1jxChjIq4+Ogd=rcIPG=}lX+UO$xYGuTpZGPYfCZL5sQK-Z;G*6$J)@q@L?Bbp4=HMh(9~1>x#+)(|ntk8Td2wfEUe{ zx@1o&>+jH?MIHQ3C&seZ`z#(N2izTmaL-45Nc=4Y(d5jIXXL|IqsG!cT$Pn-s6^(D z^Fil=*s5mixo_fL12x4?;T7J6=zEU(*6h=|)$RV~MdLw-{s{^g!7AHFjv{_}qu?g& zyV@+YpCRsy?Oxol3UOEl7L18?Xi5Fngf0pHI9dHTpAKF;5T4H4a+_P}?j-O{hPn&C zS;(lz5auEC&L*Dv(iqLP_eQ4EG!GyK1!CD<4`1bI?=_mGs3FVxJJqs_6G0#wiEBJZ z$dMPX2idOcZi&)+j=KsYDS&(bKXhcnCnt5}>rNyx8$onn!xuCa8Pr6Ri zO2Bz+07uz5Y+u+vTOBG!M|jf%!i_pcp=zdJ$gShP^%e>cevlSoaA_ujs?Ye12Id)63EF zSDO6Wr+i*+D84O{KH@|x`g4R5pa_zhlc7~F(^+M{-Sv!tM(6dgg`MAl7?X~ffhRr* ze7istPw}{Cb57F_wsSkX%xE?~1zkt;k&NXMV{0F!Ef+E2L*E+=QH}(VfqTHe;Dx5b zir$LeYzI>^FT?Ie@3{3UFM8|;X$LO5?5Te{`y6X?rEqwceyip3hCB{(#rUou-QceS zeqqTiGBDlq{{%ry#>M4{83IKS2dkc{XcBh^ZrktXB};!z%ViDDuswOl^3QM;(J z^|k~Rgqp-gmR~j|#vX_FmH3b&o3E-(bl2k}21xS^w1(cl6Rr#VmpuSOW7sZFj5j$E z{nNcK(&m0N-97EyyY6Qli$x`l-*Vpwj=%|h^E?)C(*FIJTG;5~jY#fgCq|{7SX}+5 zSN^4+a8H1ncaNUma4@&-yjcSs|W1s+9}>xQ_<#HJU>V6 z_EmRVzq~+SJ$%w#kjfbu2o61Q%S`(FK;=blZ0A~fA_VrK@l-3KT;VZ=6pErVt^$cQ zPt>yFbc%m#hiM+M|}y0rzDxyQZ=jWzj`M?UZE8~_!}ycrt^5+gNa$S1`4t(9>F zzZVut5tgBSO(vmQUJ+(hpVcpt64}li?P1&Hd1RG}o3ZU2Oj)Deu|ZL$V6}fSBeT9Q zU@lPP4peIXECw$G&Vd<=rk42IYzDaID>>--j)02r8t}gJzngU7*Jqz#fsolVYH|)l z)H*dQpdU!hkq|J7<>pH28*Bc{t_a%MgV;>BPEXcnd~BbkB%bj}t#_w&&Fj|(sWr=7 zCjbNSi(xox{BGU>-J=9)ZJ2rbFaK>*R`tsCzt&(HE(MqNA!p9);W+0GbqIXgd!lqb(b(9R_(xSJnQT^< z%kJZFiKfl~XqIv1jM$(!iXx)@L=0IgNgFdF-`2xONr!&?Y8ce0KjP!M80e)Bhm=kS zG}&p!7cYr?wJ{`y3Z;-cG0gQftEyr51H0tnO4l2ys5X}p(GZP{>_?dk75-$8jAX=5 zR60xrm5Z+Z2Lpqa)AyO%ggoz^~ zYR_T^9{1hO<0+EHHLUQl2nHO3xb=?^-tKJX)3{EDiJy?6*8gZ!{Nzi7<+ zUK?*cjtk9N=!_eeOB~Mpnn|oKMaY9koX|Jj{`~H8@-hu0_+#QJ?4&QQHnN(STN#}*XtP#g!c%QFgs z*#(^2(=T8T2AW_Y6tOLKv`)fx?1n8r4Zp2KveMiZ?sSfmrpuO-QjssyH4)_x*VI#! z0C&<;D;a=gA9inMpExSfbQ(Vom2xTg_Ea*uows3@rc7^5|?H0Kz zb-o$|Kzf{}sA#=|9_?f`u&<5W-`(=D8>$t|HK56(x=W*O57x}`fAIBcoV9ibu~K)=24xv1}MxeT3CJ!QEu!nKO9qW1CmnJ4d#WM(C+XaO1vF49*NYgn#< zQorCVidYph<#ZlO_)h5+m!b+#Cw>f&Z6Is1!$x_4;-tXnx_ zHB{88FyS2+WuujD)^3F|&)n?0vioN{3?4H*Hvi8c8%fvCHzJ!T`qw&lQjcV`HCBkW zyOmj4ic=z2zNI+pBFc{Z%kA1i_2^mYMX4+RLggluuUV9!$AqHO&j^ZZ={C9TpP+6J z7-PiyEE)1yN zSuBtAa?EGl;#cjU)W$Fto${~5mXIt;J9AXMp%;Tk_h4Jba=d%m`FD$G$2@&xMfGKS z+Bk7_#z)4-QMpf?MBh zC!I-ap>Aktd^w7);(JH{aEu@>&+>8A271??@K27b4puM2|D%~Fb`Cd51k0{1g{y{L zkjVYE)Zyo+{6gx_UNJ8zg=Bo!*tDdz#eHr1?L!3L(=eSdDUQ={YN|4iRLDNnOrGCTpYb*R8`k8!GDbH$fVLntEKBM zv|jm$O@+tHg}_ep6!GQ&;&R~T+yx6R>s%rub)tXhg7_NmpSNMLA7h@pHytF%w7E}7 zB{k_REqIIuGcM-*_A}z;^U^tS)_9J?%S#dow!v3%hHeA57A?ahb#_vgdS-fE#E$eN z21gNHW?$BXOMbaqpB6S?rBd>)3`vSSTva@Ujnzbz35H3AHhOVFUE!wmaH1Y*gn~NG zi$;I104?-+J&|cq2$V`qS33=hAc2O?m_%&%dh_1F4%kPPFFm+u^m167>@icD={F-n21LLTnes+Ly5C79WzccAEt7^jdv=}50BC|Lu7( z+p;qLb5GM9NRPj~OAlhHps#ay#PTKf@ALmWWb6{D?cWB@trbv;jJjmT%zbyN|?Flvh=<}O?j{xzUa{!FJ#q#A6>FG#kS|Ey=$di{vRS9bAw(TZ4g4pa86cST_F8{mKPV2Q=)PspkaoW zNHL@5(2`RY4i$=QWni}LRuYG}B(ijJCeZt8!8|9LWIdiMyo^rVXS{u9<*#ABQKIOG zQ_7XWVA(CV!ohMKZ+vfz>q2i`Ht-1^qFKHg)zkcO)9<3GVq*^hH#}BZS_sf|esrk1 zP0X`pTaE$4_B@^K&bbg>VrmWUnYG=49rc;r#R=wH0YPkJsjw6fDW2IupKe`H{_@d@ zkumJ07FgozPKx*jA@h%lXhtX}GcA;5uWIwz?4%VZE$E)&6z9Ubb!qlVYJ?&8`;QhB zBqONawSPC;2y3nGJ4NtSv8^1HmW`fd?5-vXCi>w9(WHcj5)}`l<#dFPqa?K*d8&8u2e9=<&nL`Azhi%eP-p>O& zN0dL1VOC|h*!!#RyLGt0P5l?_Rh^^4av(=Ew^VNuZXDVTya~YuZ>o~P4-Q)bny1^o z0CAOJmKoCylq|5xUM$`-WX&+~6RVKUB%|s}zITJvnd2My> zHF7}w9Pt{jwjLu(G#O5JoAwcpxR+VuwsS!nIbE-5!JxW3r#Sgp8UX5N*fl!;u-2jQ zPZMOy(@-LdWeWJFUmFd`=^)MQK7r22qb;I{buL*PhoxetQ_(eQ@}z*VCv`U z8PQ0j8II@SVFY=0*krO$o*+R%vJR&oBHL_4nEmO`INV9JFRdyp@{D9Q?kb8}Do#0} zY0fF*t(FXit>a0Q>2YdkzD$^QckMv7S+vB_v3-%cIo}3plTS*H{ zLxYRsx+~6C+YcA-0Oe(qTm6jV)tiRQ8|&3lD0<*}c>{0l*xKj8K0^6%SHTqQ@1%#WRkG zeW&(7h)kX4qGbKB#x2cfL%@EAQv10z{N5tIAyB;`);Jm78n@l{3>@{+b#L*wEqX;~ z-X%|CCpABKAg<(>EceBK3W}#<@fRxkzjYmSa>WvBI`F4U{OtQJSNKuaz&)y`#eW@z z2l)26K`ZxS-<^PZ{cKx;W|HWR)s>B(sF>x7GUIt1;h)6@A|p1OA5VAyV(h70@nHx1 zy?R1LD3%)eAE4xH%U7bpXM?91O-;C1c@^ATH1as?P_Xfc1lbnQ(U{ zip?#2R{na}FL3v7tqp8?E?#HqquWN%hniUyv;ie$O{YyIbx{-#kZ1mXRpEjv#H!5p z#j$QAEuL!GmU5n?%t@Hp3){c%LVbnm7kQk5juiA3KK1;r%-WtMv2fW2rZC7f$jwiVwwWC$?Zd_}8tChGt+6h(8 zFSR7Ug=mbZG+VAsLPXtJ#NU5hL~ns4=MAy+KnGyAvf!~{$de+Uaq^ubK2~omp6l~2 zJtQV5Oz_gqw+kPCgDl$>S27q{BesldG2@TzwLZqyE5c>MHOGks*pN78=~}_D+70AA zlUhY(js?SqWQ_i6!R7WBb-j!UZ7%m0-t)0JJEn&lG@>p9%y?ME z|4-3bxHb81LZn8G9xcdd5R_7w)Cfn2hzO%p zN}`dLjJ0^^Fz=jbhyIcX9(;5>EgiId1BWGt>v-L=bCi7Q2yU4Ie>aFSXo1n?cUFGovjR+tQ50AfT(?3VA(xx7Iw^%B0k z5wa-F4>{ax@}l>O_zWUF6fM~=czW~)AB2LL27HJADR)HYM;p|9{HC!38zQ!V2)@rZ z;w*zCTXD4j&flLBK;~0*UPb%-HbgIogsMZdcVK*%j$vLff>}r=NnzT>mn%EXD-g3} zP}>mqWX%>=Y?PPS;(&71ZME&gvwkR%1zoic$8%dW)dxarPmAXhRhuDfFwdW*I$+Kjd%qk>BR8OB7rWBt(&;bV4G0|#N!1$+9m0MVY)hgli8qyy&uW7Gd zxUuC;emZdG61{-05~H+)R?2mKJdCxZoxQWVVeglD?pGgJ*yfVubE11}8*RFJT~ze$ zlW$&w=X^+<%#0(g$n|SyK0lk5UKD$45&H(^qjByJKZ4h{JWcE5e=ziJ4T}2krru!r zH4A=syj2L)M24R^U1vcnlEIWI%?!)90b0d=3UU;!{TCje$98lmYhbmgk$K(CDyF-* z-D&u-i^u~_uaT1ZmG^9CYTtnWyd4A!{e*AkV-v{_@zCV5Fp&4?v9k!XcUs`smwgSP zj~|uBZdM1E2hk*C5}hy`(v%H-V8UW&K9HvG*%f)EJl%a26oy<(QCE_ELvXsf1P;1W z7h7X$oINkcV{PEyfzpdSHSRkSs)%V$^A}2?xicGE|9slsE1>*Iz+O^7!Zgwc%$Si; z*Y`zl7V%2kX5dcq^EV}qIVvcw8j=5 zdgcx6Cr!~?w@k&p(UUYY`};1h!_g~`UyI_$NYB{X+xA@SRs3%+3?-YETnDii?6mAQ z{UBNIoq=F!-Eypwb+&b)Wm9;D7JMb8zRBQ7UMsx?}X?` zHyjD5f8c#trD>JIrY$m?4mDs-1f>&lZ%AG1<`0xMc+)MA%b!HF?_*ZDLu)*0{3K4J zzkRN_Qv69@eef%;j-u!+%j6EXE#b&u77u$bvmCEJ4~_%-Rj^JP&DEcpAq`!m+v}wQ zt3cYJw#b2Am#0h3?@&)~R_7liwSWqWn_?Ut%K$MZC+DsDMx_%Rhjv(<(JnZ0IM5WbHAJ(T zmZu;5JLzAyLzgSSvQd5K^|ga3pTY5AvFj!kDf=nLril)6vlh#)!wAkNhxL-mjxz?B zWu;KUKknmpu>ne<^aq%POy3JyuhhZ(HS8BpTY1}Yfy@Rv zNPbmQ!Y%hk<_kL5K3i76NtXS5UW3ycQZbmmnTM+L`_(^ysd)%Y1Syy=^X`g z=)tQ?+4iqCY>JJjL~dijn}n-gHMy_Gtn&(a=V77-#`mIl*(oYfP24_REf>1@kCb51 zC@O(;-wzSHp!|&-f737wJuM%lfg@AsLaYA+G&p1miS}zKZsPJotyh%*I-PQt?NtqU z7Mp-&P`V%pd9KF76Aw=jSk4XyX*rQ=i;DjO?J{XAP5*Ad4T6{qyY&IpAYw9NW;>&+ z9i$@*p;a_z8AeyYVkeUI;Vm!DTW}&?tC`Q2PHeGlA%;kc z$*dtAk3n*%yobA{)r19P(k{{-PY9P&rm~R`zqLdQo60wBQ?<}@2qQZ3ubMgEBE>}J z`>73^jag4>Atl>8g?3!o$jDyEp9K@;siYG87z1Uog&HFgE@4td8RbOgLHS|qr=aJ_4P+y`pUE7l zNFxGeuH4<&E_-Y{-A!5@>=I0UFSkJ(pT*GOZq^fnxOefNAGI}xEEJqbJg3o=SmJq9 zlINF!3HXHX;j@-OZRUxUc2txV%Rsg;yT9ILFbk2ze?Y$w`pV%XSg;08Oyx;z;@e;U zkPM&saoco}s5H}gal{;GWh-i6j1uN$;{Z*C)eB4OyG`=aIQbBW3gNTqxs-WmI7^I)tyuYMv<#p zz?^?=5dAs7n=WhjoUCC(LG5eJf`nHolZdYdZEf!dWd;Oizox=V*X*1b&ZXa!_ zTBQwMejW<>G+^gsbSJ?Q`dNbilWxTaf``H*=0AYtV8n9XL>bFRarFx7FP$BF3;;Pg zffkjvITjbdfhnvLWUcRezEsZ$)#&#-i-6epPfsrF*L{#D^qu{HkX zx>==@Bgy+Uy}Q6Q_D>FCTiw_Yu*;iafPG&Ry z{%*5xVIDfJT@<)|vG|<4IHK#5YdHK3(^WNT8mT1&^^?D#;jcAB8fj>w9_hZ4a>sHj zl{A@6IA=lobqO!`GepIiwW!aI_?=@NQ3&tZghi4#31hR_?&?SN#L!v11UMX4C#K(t45>K-K=na48DG10jAIvU{_7 zul}dvre@{VKh?X>1Sf*dHD5Z6}yH|@HYL^ZLJ+wXN(3-;?E=y_$ zFBO-0x!*2cGzMYZn|s5>b+*;kETL($*jva4u>Tg+BF|mfCHkI zzTHcqNJboATV(G)h#sVSQ48enFTT@K_0t#eA*yUu2cVtm2C(+bcS;iJ4n6PHC!LSf zWbOAhUNS@=i@oC7vIZ*i!=P`CPua2-uH7508rX5tI6{oD?a7bZ!k}PfM?%Xg$_wTP z@|vtN;V|h89@gC(`Ul;*Er=xTVhsG$D75*qD}^zu2U6MUUB4M2OFef6nvE*dUoP&> zwrw>FCx~KA?MzpLGuPz-Syn7qpG~1=eF?Y1=LVz5K=VrwzOXU zDLyycaQWD9Txw;EUcTK6ji&zh2#O3=M$I)@OGvGY*T2KaM{il4BHpC3YX5yL>f@X7 zjeF<3!i(kzAUJM+S!Q2cWS2_bH^-z92z?unSHL*|g;L|s2cDUJoUnapj6C-2v))9N z=Xb9nK31D_u(+p(hKSdg0mzMaN-gvj!z&}r*A~bVZG~ejAtkbra0v!cz$KFO1yTUl zNUhCm&RE|iRLi-+Q5CLDDQF57(wn7*Q(b2-Xc_1DHyxk&7v!9)D9mEH2#PF5O$oD9 z-QP84)Kqh56Bb0KoVFKbHu%{5^AI)vISu${js!{N?n3G%;npPqECTTK%{dBBwc%9+ zq}XRn5CIG!RT!dZ)4o0;w(k$j74F$}lm4|^kg`Pcj+TLp?c92gJ^`f1`XuH6@1u;@zJ+YqNIT3}RZ}R#jQ6O@8 z*#doLj&9Z2O^HViR^$0kiZC;6MNVy=>n$&rqG_OpF0nM)$Bbk_``3jPx^GpqAapdC zZ;pOJ0Lk=~=wRPox7~doah3J0K}}>^vcYsgs%U>w#tN{wMB|lAWZ%5QKdt8Aja7Hc zPN4c$Q!O*z$uOq5^l9*g5 z14uXco$Qt$+$^WnqK&`kYoZQGssi2c^5xwU^r_8?_&UYBfHo<2DF(~>QC2gaV%Z@F&A^NcC)osYSZpc9{DfNM(RCn3oqNO2j_zy^bCL zHy^o@$&qKA?N@FVDP5ri4J5%pR2lKoKcR|mj4$S zRgosv`!}*5DRRlX;J!ykFMgY!4r+(FNesuA7z((^gMxED0;G>imT% zX_3UUXII#BTfHBBLFbO!V~XwFJ^?vm znnAi6c3AR0VlFWf;r`r8H6-k{6Ca+nwF-(}lyn}&R$+shcgmC>l z1^-3Cj#`r2jk2Mb*d=`N;Dj!HGGRVmk^S<*e9wZQ`Ir(Kax*gMdADn%?$Gt={9bky z^xn-pM)#M#Ibk%(gII0*)>BAgj}$IQCB6WNjn(bnrZlr9gat~X>SqRqbEASJQ^>>J z|7m=Q7@c%r>k;Gcvp3%@Wz#>@jBYEN7GQg5{eBFtE1e_W+}(rtSmgQI45a8=mn;2} z>TVqCCYD`R&H9D1fIo6a(fr$nT03(s4=0H2&6mNLV#97{_LGPic}vX0=%+3fE?ygH z&n|vQ2ELOFHa~oxJR7&J0EY#B@bnc*;P!z9_cHZyTSX@RD{cJsmhSZgnEmU9qbv0t zK2snLTd&+*#@Q-$#7UJZlr)qky34NjJ51d#J$pb z?SFU}qi^T+x3;93vA;CI52vr%Ts)7{BCU6>9~#lE&4<|!-R)SG>u(wGITHM?E5*kR7%J{|!NLwr&^Yt7a;A}KR*18vch7kHrb zrW2*y7IotmSo4WvHjfnT8#u%i(3ZTUu6*W_#OYR{k#E)%WIvG6C-OpEGwktQ?D+>5 z%eXW(61I@s)(iLCFlRh_7LKz7lgOHD#dO)BS!>+5+^~MRoQmA*9+5ccJp~Y0uYGO* zWZsy!M7ucHg`O)(}$|7E!r493f=H<+VNL9;d?^#zFm1Lg->aJ zZaBt8SDjEQjL>}0Gx=6N+lQO<2aN$@n;fLze##zAgD~gVEs%;SaI7Tn3r5fAm542w z@087Mf*l8pdTRVND)|m#&^RF0op~}D6ZCl>YG^*lK2*u!)7hv*LtAS0OEUgz)Cm{z zPp|9#=>j?vx|AP~O-ygQ>itDJ5`X>hjCO!iG4<>BfF&`n@s->(yEn8UB=4WH^8X)P z$ziw95dwB{h$z_^iEbE7{z3O`LwH7&WH?b^eBco3UJ*Mh%Vh%pv-Qj}ZXb8uilYz# z2gW@(Yd{wn(=Rz!isBJ%qQgPexH@9)&cDjB)2pfgHnE7R-|da#6)G3}B{J*1%B&Wu zaGJ+j%k-~JRzmaci~R=}*EsZsrXTr^#4fcGxcTjkrfq*Es=X2i9Tc%AL5HnlMh;KqE?cfOYL}q}?g>78>#4xuq@9C-^@gQ8+Ew15 zwcpVT*Zv7!tld*+|DvbATmJ(vq;pd_KE2=@xj5}p%Six}KYmRj2sWf`fQYN}pO4u} z$LRgS}0KlKft_2$>x*G5D{GQa75H$DGKoSUk{qU74SFdXyJ_Dt-Nu|GVP5 z=&aRXbRia*Mj}c7)2-oo)OhlzZ@7~=8cU{j_%S47RC&T^syLb9- zo7y;}91~`wgFg&Zp7U=N?l~b=D^sLX0+`Ro7H4lC8=4sURk5#F+uByVF?GH|#4+LK=9kzb$Y`O1Az-S&wiwZTr(ub+=!S{+XL!?A&rfF$&c+w>EmJdGHU9k7{(shT+>tVJqaFcEjN@YF9L%-SFAit+J(ZrGsyC3@8poGhM^KwNX1F8}*(mrmK zCpq=y*lEc%ki#u?v)fVtLf=2t1Y#mD$(|BMn<=Bh;!vLtwh3Zq&8Ab+aIbaQlqq+YdEMkchm}9cdflsQ`;d9u$r;EdzIB)H zZ8hBUoy+X6+oZ zd(X$>wV>6b+sTT#J3br_>=xumxmUeQ;B$vX%hw@DUHC*5F*cIEcv&JujRM7J*9$3LxxAW=3l(*7lI$cPMwn*ZFgPK!D!@vV<@ybNDP}3R|vN>!ne4K^F+dDo%3UvUH)hC&SQb2m-q+gM@bHYTD^UrJAHRw z<_N(WNNbr@G@4e7b|julDy}D#XCCu%pJ#)FcT(-$jL12?>Vh-H6qU)O3>a8rp`PBn z^U{|*fRcJkvJ$~P5`03;Q#UJ1G|DroQQWR9V{2~3bsD4=n{S_|SyjLHx$pYNk0PR+y_ zk}jqT>G_nR{sU;MGg+07ULlE;m;nSz6u!a#t<+6=7}b; zH$c`8dr#y!RW9rL@0t|=3Eged6_RI+U*=#7pnS-o=+0LKuP=~FX$@65g88S;fn|M7M; zus(}OX0|oRSH=?MeQeRvN1z?`AWsE%BgFYQiA74=b;sQV*Oy&>g#exuxlIZUU-8Q^eSQnR`%lOX=X8sHof12ZG;reMLJ7h<=m;v>(Ub}eZKxg+C8J2Pgyg3v1}p`o35Nx1i6APXK8hCqK#_p z^T~K*_DGk3XgM*fF~T}#AXNmdMod-0w3Qk;(BPS>iuxhEF`qATg=7MxH+ByiqUJ7} z@K$}<);nMLR(!=3E_BX@XCf)`&)g4#2Tg-BcBy|}a4Nr)jnF7wTkiGv@lP%Kl@1DE z3FNOQ9m_Rpb#tjwu=-Z>C#$gXr?WF12HL17CjP4OxThe?Fz9_d47H}*%|0h7-Yl-E&2`A-O1kYg`DhhS>sjTuqgp@(a+E}w;f7m+{~l(5o+>SCXc-V~T|GA8-o$yp#SF3|IY zrfOnEji%JW77W8?ydcu~$`77Db)y)d^upu+Bn}~n1KM#P#fSUtj!Upmw@2HR4jCP& z4ZWek5JAD46$a}c%g;g5kJ1WoFa`b4T715a8~>Pb#=n;8gO#Xjut5c2^SWQOpU*NK zZU5+~Kv+oPV{r$b+s!Kgt=-j0qR~u$U_rxA7daw!fV{K(sqhgwfbXydgl1KKsQ4Yv zK3Ow4b}9%C=Vy;v3@p8%CDGz+{~|*UxF-^+SeT3?sVh@6|61h$`Gvy2RaT9>*S~;m}@ggWVAD_HVh+YrE z7p!>=we8SXR}XR+hii;G#9}X;-HU5+H?{;~$>S?jG!yoe$GCw;jFujfQ(PTasE8|E zI(`(xiP*nJRu+UC^P|4^1Qz_5(;h*rJGa2R8j>znFMyvH(bQ_vpy`cHKg%eWuCcXl z4w8NH-fR0>qfqp)=H3ALq9t^+@69uUUHj8L7`1|yV%y@W<1K0~=v~)KN{(Cq2T~Gg zN!VA$DFBZ%Fl9iEa5NE3x6U@0dC`(}iqsEbFPo%+s{Oo8;AC2;*~$uDp~ej{fb3m@ ztey}ca?Il{0}$z1R+?LESM5A0zp?s*q!8n*mm9JqE*n}@Q4khQ`?&X9{Cz`BcI;Js z?bQUpC+VE}j1ZJBjdk%&E|EuPY z`v^Vio*-!gO#Nn=8p;!LTFd- z?wBhfjMx>#^RFAxUI5Z}}TFlZ`z} z@|P1$WPu*AWp4C9Jr5+y@JF})Ua}>C_cwPVf z%`SwI*8Y0STqjX56F!08lwM8zrw&Wah0s7N(>4z|WbVo9t*R}Y(lLOAj^|1Es^b-$ zp&H?xb$y5i&4L-*#D*yrftWoPm>^p#e+RN3@*Pn$2H1XV{|(ml zi8PV1sQ0oj!%~&2 zb>^SY3OlBE=y)p})Ra69B_lIEm0RQfKGBHZwElz+da|j&*5v(eaNLc(&FHwmjl%q3 zAdxvOy`r{g2ew@EO3Im7!6ADVT*~SIs9e(LB`MJEPE=KtLkO2}A{k?zj}y9?>B;x> z^Q9auaczP{4coq{Y$lVJcT=)$ZYL!O@NjiTa_EFvj_ zRtnnp74*)s=K*pC!nnp$FrkI=6<`aGjP7jF(~_;&x00x>_jkhTnl4=>7(~v_iRd`+cjXzcHQd5SgPM zS}H+@N2o4EajQ%~MyrP9(__~UPrWtI4I7P{7oC=xaeete-K(bVh`gXcN8s91ThBNN z%k~_~y&=Pz3$SJTQEm*7@6A`%Sw_vbC6LuL{V;RC=7afKjrk<12CHSMw8v9gF$nr| z2cUi;F8$eu0{5yz#5e7ZM#0MOtPcLIYAN@6b0+)cc0j>O=mzPZ z&WVz!TP0KR-kbSgv!4@Ow zHLTpdxa$GGXc95^c00HND${)n|CSry5t3_9m^ezlv+{qMQwRS+)>TfDDRar`YikXg zQPrx7oE@83#35n%Cy)v!nrO#dcprlUZm7Z<)U!@Q2;1YWh0#nORalGG!<@i!h%TKM zLMcCW1)$}n$c?{X-`_b~$ACwGLiNR{!1{BP>vvH=N32cv{ivCiBhlATHKGur{{Tng z8i}^AdP7b-;pfi5(+YB?9Yp7@#T*F+s^u~>oS6iO+@^u9Tx>UL7j_2H}0vY@}B<#bHda162B+q z1G_>FS}zp9%2!_ys=WdA{CKGZ1RdELQRO|pv~J#<<*bD9O{Eo!YMx^R$%Gq0=JBtN z&@J8Usq3CzH+oBB{>bI0n7In~AOVtibVyKN$t`V|799D@J~oUv{mQ=F;{MR*;;Ys9(utF`wMf=WpwRBlqt0h=@QEC8X%|cg8`homtfbKZNTrSnt%|tYu!8r=Pd|l z5!)mr+OPK9`}{=!Nz9IT4_pG67oO^_`6tN{G;V%+5NXcKh3CE?7)`8K_F#U-pW zXv6}C;b-h#P&W872B4-58E(2ow{9U z-`Jr{mAKxM_#?kPj+uDz_FkSdC-o11sm;zWhXp|yyNY)QS0B8|C@c{W2Lb|H4<9`0 zT{ua1JRgJ83)g?*k6a(pX`5{!nTUybuu^6mvYd5AHMzNj z(Zs+#W4!AGqy6IffoJ<61SwY@i}-O7lGTU@FgNpTNh-f{{`R`@myCx4wXB$=`*E`C zlB3SFF4Hv#L($k6b@PCR$X=QLVkYk8Ck=>3B&M1k2?`aE0|Ue>XI*=yZN}P@rwZcu!lx8!g9MV9JFc&#x-S z3Yc}WQC}0dnqsLyruZCv2UJuyl`jddwMTDn2zM+AA+qxli3C+GD?$@JECz#IiS;Zo zk+(c}=LF@gS++qr1qGL^#Z!qV{UIhF!$}>4+j_(ipZ=ld!s?bJaTn)VPCMe(YGzqSU?zw0#eCH{i{qN7Q4 z^BvTPu;-a`AFNN;gd9t=*gkSwyuc{vyk@%^Yk>yew&K!q@j0>7`-%=cGX~m@FH~Bx z$N&aLmq=6i6)>k*d&8lZ4Ym-IBv(V!Gj(w4vV*Uh2{Dp$t>3&34*uFm5uqZ>ph(d& zK^KHBtEJ_ZOfZZOIgnQDlc=E!zh2L6T6#9n+A5GH*>rHDxZ-DA4p^p=y{)+^nsfb%-o&xwGzK-bU% zgUT<&JG4yisNb|Zaa?<6Oi#DROroP6Jl9xeY&v*2rNzqENY=O0_nF->(80!^czJ2A zv%OQ1{ltZXC{GU)=`KDr(8jagi;q%!5JO z-S78|Z|qNNg%%j=-_C)KON~7=33dSYH)+f07)nt9`KENATW77q2n0&#*IQH7Jf%6@ zNa&ZX?qLnw<{mDWR5_rXK$<;l#UBy;y6r=p$Zyb^H@0WN19j`ye1R29hcZ#a5k+ow z0*)Qkf!9eT!iss)YCE9qRlb$$1i}G3S|T{b%BOhjUhLk4hOslZHgpfzcis(B95uGu z>a(Ol4?@unnM3@ecbe@`}NuH$s6&QxbsAV%|jDVT6|^TqDMGm zJks+O=1lLNWRE{d{veB$GfBviKaYgT_Jl*z;@ZkuphKQ)!&7-qjGjLyjFq>jvBqT{ zU%E_#QwOD?Pxh~C{ak)WCP#Orq=z_+(90ahh-qmnJ$N ztg2QOVU+7FN6@Kz25^_UJV>&5yT`x&LhM#SYk z+IJy-Hx96If!nse*QB)E^s%-w0Z?@DfD!0`VrO8+fo#TQIn{C3K_l4t)WEcOI_5fZ zUC#XkPV5mFvvHj3%rCY94op9XVK^`D{jTlx%*-Fh=23JaQ#w^oC*mKp_4Y5JDM^cZ z3@21uB^m|VzhSyhrE30!ZlQye`f}jJ(Lk1oBc=^^L@n+m#VZ! z!KzcbCsgRuloMAwO*)HZ-*7T6Md(wv5*>qb8~wub^$Bji-r%;I`@vInKV3g|m>oBn zdY%Sqr%~+%qRRDFLapbsrh8|yVhw0WFl2o6KYQp)ugC@JF570FLE1(8-K5_&;MF=9 z4c2JYRxOIjX0(4%B5lS(uWYJ}Sb%jTp+gJSP87J*nA_4l__eJc+{<7q!as#uVS>#h zB%uJ;mSH9QyRM?whms%rR`28##I2N&3ewPK0?#tx;6~Q6qAB9rvoN!565(D&)?mjY z3Em8ieUY8S14H#lb2%MP!$|GcQ4$uy_Lkz9$;$K1bfX-PSBk4}90}av$TL;HHdvB* zlRegaV!6_@X znfHeE`E9w(7_(34aX0Rap$FpEpFC=k4r!D9q{Hv&+e3wiPo9A>s8tL7O& zTZLw_-&l9^o>qVMeJgO0Mo?W9P^DSM3b#E^dmo%?q#eNi9~}aw!knKRck4@I&GR2BZO% zi(aLTob^on3O2vs1)X*^ny`=vR_h`;PzSTiH-?q&z+O=Uh%F@UG17uA8*o%=gWx;i zf357!87&||@4W$5SE4CQeN7@enVGXCO*xdv-;Y>{UT!dsr$8pt!bedL?Tv4&or)>) z66U$ipJN0|>H)Q~HWQk(9ROatxX*o;$TN@OF#H1eZMFiFdrQWB=U*Q|d)1U*y%~%y zl390l>E*-3B^LvpRxSy77AO`hpKScKEC|^;J{0Y-tF82XeO+Aq9VI9|gM7X;L80tB zXX~;u7T#GN&e`7Br15QGoqd_J^BHYm`F=6eMR0AOF0#*Lgs|*?=q6zIz`m>KLduQ? zYIKGCxHxseqw`ir@bC1FQQM>wP0mGe-J{;5k5#63Ntnm4+6=|GCP-W#u}?FbTMI;_ zcEgT=m%m)X(#Y?*KW>0kL5YtKw-d1PQ-8UOxuwPJUO>Vc(ujrV$mO+(^&+hzg>l)& zK&yr0zs~tDIDLCKeO9D1xm&_-e~R|BCtBIxwcjk>DlCK%(+dlgRDNgD4Wq&fF+fq@ z1{yQTtK3(lU1XXrdjGUlP*|Z`y7-q`a$!zln=1x~1a4&3IT+2q6B zuRE}VvN|%>q{7{h->ov4tH4c@>A(g+Un zBq?CGaz2n4x9Hl(_EFL=c2AqJrcaCG9NV*s4vv#7+NkaSjXY|@w*_6NiWdApB${If zRz`h-7bW-JI_#R4w07#cek9`QpMII7%6E@A&Ax6x;h|-? zh$i2Kh#7@r*O6LObYL+8r~QaICKZJH)6Zm_wA^N#wNm&p0r9mpF6X4u#^zCJ$}acn zzJ}R_zP({=d6;wr?>d9k4` zzSqIVFWz5xXHc^#w8b6k${kIlW!y?LOoD>kFDr)eJWs>&S(@POqkCTB!jd#vK6iKy zKR9C)6q$&uYx&p8TI4&L|IC{7E4&KGXkjcQ;WMF|3N~jno4yTj zsWh{RxvUR!vV>5jd83t1lKjPq4C9)P;(_FXRO49Q8(U#`ekt;q2>;va9RMnUTAc_k zVTLe5NUf))=G&yb0qQdLvUra(xvtv&IIW6qZ{&TBUYrxzE0n1iCjiqjG`WW(hhoQZ(+WM$MMah5+AuhA(jY~h_zl$~B2atoJ2%mjTE}Sa8W%3aK}eLj;=CRatAJdvB*7~V zQ>R{BIv*TUj%Ui&kK#*iz%5F5qh)r_cnO_2)1}7k<5O*8E0OsyIBrvkv59 zp}QyN%Uj^$Fc9+M2Q0{(kHY+QExj}$*m2+X&2KjnxA7m6>GPikSD@*W@?&Np>JE{s z($ZT9f@aS_@yldyL-)QB?MGwea_<+6<^oe+_FfD2+y&qHXw+(r$ocXAA~gVHR1Dh*Ja} z!c!8ka0*^9|ArMnpGdAUU=S<-C6K>VHJ6ok#OZWDDrook&nE8QIp3qIuJkXhCgIzs zB>jn@|A%^?Q4R)@o2AtFkG=3G;cC(>y+T^YWCB4_N#aa$>NeZd08#x&clq7{T#6_6 z0SV)V?+~AN<49kVohL3F$qRo0I0Y(| z&iE`zjK7FOvS^@6vwe#RA^tU{pM=^5#vor0Rx z7L9A-x>@X+MrNrQdOMiec?RcTjYaf{q*UfkP3471tpxV!Q2weKC`MfOr$C4~iMQp{ zi>e7#PYY7p>_`Ol^D>3ok|{`AH+Mp5powKai$kGU?x{Iro$)`Ex^At1>9GA?f~on>?F3S^tViQ# zP-`aRl&A2mO=5GamY%C4#%5*OOr#qh<`S0Utp$BUfG*S;hkP5f3Y+0yKFFh(Vfs=^c-pdu__a~7PRRB}+Ul7`wXyqT`s>m@2apt(FQRKZx z%sCs}0s2aUP(_v!Q|&bn!C{}dP{!rd#B_vMyTwn8&X~Q?Udp88#ERHVFQ7y|v1NrD z^rz##{Z_E^8WBtR1Q{+u{S^S9@4|;~Q@%EFox`=~pMfX@AbkJ!=O!pMemB!id~S%^ z(T{YKj5y@~BtrC2wY~DQNW!W(-_eDEC7AYtLcgh?X0SI;&OMl+VP!H}hTLly^cbTi z$xnE@7ml@E$a3Q_zkUTEfVas$ghv}K0HXr>^7%LsVSqO zfA1v9{8?p2UyJ|w2;4{eX#sDD47F(_C;5j(5GR~ z0?50cJ$c|w@+U~^Z}aCKX=jmpJedV%iysr?ej|6I-KmyjD>S}StgRI5?<-w9v!787 z=!ZOigUYsxU7CHhv!u)DIq!Kf14qzwHD9qlqPk9x9AUyLVxa4H)6$Hbc6y^L6z{K{ zg}5cF6LXRvF#9e*+>Mflg)YlMgb?b)NX=kJa3Mu6Tz~xdvfh_^hDrNNB2Rq1slKxx z30k+W=g4YSrxfWnb`l(-_IOEKVVp3f^o28-c5@-KCjloCBHINDc6{!I?ePXXp*v!V z&~dL6`S^H^gI=alF4IKJurFQ$&I)-7eYi*W-MJPo=*x>;eK1g9V)R9Y(q67ZP}zq*;S2jK?XIFI zG0%H@P&of2jQun%3jSm-!MA^;xIXcICWl2A_xgB_*GQd_r-9@X@pqHoUV4^jO;~N< zu1Vidc*i}@2S&yjRW5fo3HnmDhBAHXPtd~;`uJc#69?Ch!z%&?y))7aeag_5mMFeZ z^8v2dE||pEyg-+CsA6;v`d;|sbJ@ca$$@^z=2+J@EyFOy+(0b+!ai7f*o5QJIDDn| ze-xc}G~4g{hhy(ejao%ft5(b+sa-4f-bzq=Q@fPdv}hEuW5wR0v_gH*8Zjzpi&7y* zt(NNdm*4+6IXNfiyx-4#KdR&zR*}HoR4jbwxHm!2# zKTWNiTr@c6AjrO2K;T=PIOi&CtH*_(=*x4uQ(iS=pd!4RYBXM~sH_G;`*Ud)REz(rEGghMWUKS^0u}wWq1m__g29 zP@NUAZ)GhXKaMk#o5ddRi0bGH28PHflJ3D@?r(s<0d#hgYv%NOjAOzG<}+Yk7F~A5 z+;fiPfpow3O8u^z#h@UloW<@w6#$0Ff|*V{TY0$6Cm+yzE64o4sK&+3wf zzCpx>(vJq#NG$(Ddc5KOcNrE5xyx4nwPvGUCsIi&vxOd>z{2#2?{VP;+_3sR9XwC^ z=1QQO<{cx<;?p_%jtaa7IMx&b`QdWXrKQsQJz;0%x$p_>F5eHiA#M z881T?%o@i{oQ{84d^dVY5e=M)5G+=ky-B0X8R}jBAK*z>b5D(9>;%ONlH;3YGrNbL zEx3LdB5YDsX|5WQ{A?QKn|bu1iN`q4Y6p>KwzyMyTy;^hSs zEUSV%_XFS(B`TtL=nEhu+pnr1L)mm_M;~fLTYhJ zZ8yY|e>xE{R$PuqHnaYyXEyxaGw zmaWhLd)M*(q=CAjB7xeKvJV?J$Hq%+&q_MY8hyKauTvbnl9n^Jnf-<1vOXHWScKv1UbK}|K(g4z17P{>*cLuBrXPd+*qJ?exSX5FaVi0%K zCfZIPFD*X^p*MK+mj|z=Wf#{sFXL*a!t3R;)j!f!gWZ3ab>;0;X%*F^cvX4Y7{a)s zwVO(CeBBwQ%5KQ)#@%w1)~MD>TlNww>%U30>j|Usk$>k05&|jmxqa5W;PxL+62%`LK-%RG zjgG~ z->tb>$N_(gWhVnwa-M~ipNDwST@oSsOv-_Bz2<8(b1NMg+9U;bz5-!i&nW`f0d&Y< ziNMMzo;FUwuPtNe87K3$aIAdbN zy3K-9M>zXajZ-0iqdG_JCjZ`5=4oHAIcm9z?zav7& zFBWX5jg{3KqA-h`Q)W&)}nFpxc`ptN$=gQtcp zz#}o%F*vJ0l^_u;>i1v@ zDQN##1J6{iZchGid@dsmQPjs~UMe=Fiqwxy16@>LX-Nc&k8LE<aHL^x{(g3uzLQranoyH4@bVP)Y}rNFdL(m zP_YNO7z9qk7QR9YySgL5ZtATgq zFV;wI;C2d55EtRArefy`bcHWElt>5t42bwTj!((YloP;BiZ2#!SI1MdvttGBj zMU&hu{AE!Nv2foWTN}-eH}J3VLkNi8w_OGaz>W`@qBga#Z(WLUu=u?T)m$nL%^geb zw*c_~*0%@mdT`_yq)q9e!$a>Zpfl9e znax}b(8-l-+1F6|YO?UkY3ONAY)fnR3kZj258uM?Q7)u#-B3*c_DvgbRw;L_Z>NbY z#g+qaSC}{(wkZ|hj8^M?^BmZi#It}59p>q{A|4-umPT5d?rK3N#QMi zm7{pTu&L!}Thq(T#SXn}8!A2Q`hL9EzD$RgH<4kYOmDCaGd1jas>Kn;ihhYEx(M6* z{^C|p==pMt@q?8uD8LP!onc~Neil}xH~ujA2F zo69Q1c&tT|=aoM(w;U%4O;0i?I&<91n3)h4$=H1m>?p?WVU;hgC(adeiUEPgVaZQT zB&g-4c3~dT)ro}LpWM>96ku`=MI9FnjNaH)BP;2N_+F$s1fMKlvpLOD`L*(?dX@kL*k;^;0T!)*_X|5VJEqvwpkX~ORiTZ{d$062dykr2y3LaX&tN|` zXVC&y(xIzH?(KHFsmQ{)I7?o#fBv5vu=jt+;tejFzo3Ql6R-@L1>iUsK>zC+oSuh- zyXJ|e_)IAxJ^mZ5joUa4a(ck+1eykL(^Ygz6(RbYCOw(Gfyf@X+ln5k8;y9ky#Wqjz><`T9H$;Z6bEl z-ORtu$#IJ!WN9*zpBM`7HezGaKS+>@@Xm#~+{4#@SM!&$*0PKOrdIDyBj3H7Au*ih z*QQXFCSXVA=tsbta>szD8{0B*&l+XjUD8SaaD> zWAi+Ne^9}#svGlfA)r$hu*g^@A2P3=!hnNP7cg^KO$4xBCu=l8_^ND@*hH*U<=`+m zc2;U`pcY#DiVc)-PSvL<5!HB$q~>4}@JlU4jx)v5jBdl;B&jOO+isPTDiFX*1S#W0 zAiLr3-73{bY@pLo03^DnDJRk2L7Btm@nr1hp2#0VKPZv|^a+kIk>Z_YnRkY9mPi%P z?5X5a9jIvaCg~uo>r`oaG}t(pA?#%XVTh@p!ZezEr6BNY2T?ng&0#|m6wCN-b`m4& zW|KG@TA7XK&PoEf<#!R==szQuUlhf~Xe1SZv1O^@nIaw~pLF%&vH?!;9}#G67r0w9 z6i5Cvmw_0IHqm?Y%*AJFssgI!tb}xdn0v8$pyRtphv7!OAR6f7WR86Xc`t8R!u(ni zgb{$GBwpo{l_H>gFXja2sctNG;50YbY%5+XRYg)A?~J4PCLK5w@}ie224P<$vH-+b zuIh)`JA7)}`BPzCmD=sy&VSivAH4o9f>=-qn2VUS_BAdB+~VI&u5Hl%G#g$~3@?#E zP2UOB`t+sAOlO7IvIrhOeWS={xU#CP9E1?-#WP_KN%jZdTmh#W(j#7^+$3vMr+sEP zu>UO>k5ucxn!gHoDpYn_d}2u1Pw>%Q+HXxleVcGwzWWboWV9jcDVlNZ;NRLqC>yU> zbeY2>CFc^Eh)H8ClJkNdQzq-*LJP_iCH4^1T>F^=-d12q4Y}BTwEP54b@&=cQ&(;q_`-s3kWuuZaZO)am`qN}w%q*S- zyTwpUQ2Lqrz|9PWS1rj(*~#h6tK|I@bV>dRy~+XTJJ$=>ve2(NH%8OeRB?!-`WlmtPv_?I6C&>FB1@uNH5 z-G!3x%T|yZFUU!Ws@QojZOE+s6H#LQFI?Os%mQI2Y8Ly7mv2M*(q<^Y21n{f^6~b- zzk0)LEJl!T`Q&TtOq}hbiEf#V^#M^WOza>%4jmRP=ydI~)jRDI^rm#QmJToRop4T-?dCme~^YFuX+UJ~xV+US5k6ynlr0_j6_1 zUpVUMDS0UAB8Elit-ZrINW$|Z|0C+IMJ3+RC;LOD;y7>i=!r<=uupZozA=R<^ARxf zn}%+4RFB9yt>Jq(K`q5`*)ER!_OWDM-?xM1i~E=h$AoP-!$wf1B0Me|R)3IpN!%QD zp?<$aZkS!0(6!C5Iozt(>?`^TEvzSADfv6Bnw07SoZUDjy6Aj6bxM5Pt%x?YOR4(CjktEdwqcZ@pdUYlAXnSDbY5gYj)WcOXR(eTl9PZ_p)<+Q}TA-faHdHD5+op zb)U)xGAQK5(4M}-t$NwzB3X^A@Xb?jFB&*JE`yjMGf%p@ZoI2`UK3XH zMLOo;dapUrGr7DmLC>W~49-=a{PN?u{L$|)R!A4>kK1xKf?hix^v=k)z!t+=DE>}|;| zV9^(2S6-hO`}tt*R_QGDwPk_TxikYoG(YBwZYV?)9j|SA7mVyviO||g-P_=!ENS&c zQHeM~+v>7lR=mcx)8=1iy4l$x1m;PNVPBRa5_+4I_Iu;_y7`vBe|$E->7h*fXX|2f z&^G8*!(IT{(lAIgfM^!SfzLI@f(>A_5LTnv=ht5y4@Lw0!6Q$WdU4}wz3VR!TJB)n zNas>7$y=I9KNCIFfAw2i>fZfDDBFXlNlB;kwgqWrz=rtXwt=zbDSxcJ>7X6#4MqJ}M~k@M{CS z`>jtSJ3UWcUIC*IZcPZseYNK|XW$jwqFv{YdCr)fWv$Hr{_)ItkamrUguo^>{F}Q; z+(@Ix+GLuW@I8YOeaLPW<;)Nj#KK8=avk2*HdsQBdTVg=bajPe&V6vqYEVY%(|6|% z792b4J!*^;CmFA$F;7{Nthn%FB>x4OnJ;RJ82h}ZwW_>LFU`r zar`2}+^Hx2@FBn5O2{%wsehFR`-kf*)#EYGZ-1(}GM?|w+g->{ zdrMaJ;_*zus@Y34-k;%R5JOfTS67D$KbHH}wLxZZ`8?-9Fh%zLKwz#7W-=?yiIo-@6_@^lMZt;a zWQv?XZgvHW{tsZYNc_FRjEz;3eK4jU8DKyD_Tp6#fKX{{bj8M-K-*wsF%zd7@v!2PMM!vUs!#x6dWbr(RO9a zfrY5nyf^TlOCYUNC(Cs;BBYeYC7G-;1H-Gi44qb5$d}H*nB1KYH?e_2z2ybQT)Q># z=Hn3IInN#{u_)~*v%r5R45QkVWbnC@qtOaCEquI19I-uBv#QkyBc0}TM!VblNb#R{ zPTI6PZG{kGxqtMLspM?LaLKx6#YLDAZ(fgD8%Y-^X(p1g63S{8o1AFC!amckbBWmc z>;LS}wSU&3ZiL2Njl0HXUX&fr-JdB{OlK#Z_Q9oe{ClyUFv3U_J#t!)? zmdwGqnBv6>rOhAZ7f%WH(ZmWTsjx>*T_TdRi&TL2mb+4Bz^7yT=f8XnQ{+HE^_-V$ zByMsV2ib9-18+yaw;bJ172G~{?o92y3;Xd1j0nP%!G30($j>YCQ9T*F3Ril*Ou26_ z;*EasjU|bSWA@xJt8N*$Hd^-s2bkgcS$Zvaxdo%f<^B&4g1O^SOWX%bcX~Y-w^WEJ z(e1#&N#g~H5W>e9FN^hn8SQw%MLiqiSqifru#88DNidzefji~vc^8~8OOXweg}5+` zEFjCyete?VANm32*m2?yru%ysSFgOi^qGc$lz! z@->iZaU?hI8z|N@Krq(6o&m%2?*9YT`%ccv0rD!uB`pG(DFM5+6!|<*3f$1vTk$VM zZ>oyC2zD6Rq>sluHsU|$5{U6dSc)(%>KABY?Lh)pBytw_-Q3`$1;cl?M005-6CQ-$ zaM&qsrEdwojf3dY@$SrvP^6F5b=H-dg+Wl%9<_1)1O zNa=1yo=V;#y9~R33ibIM_#%!r*)&d9=6J32N3}RWm8u7bOA<^{X8UVV@aR_2-DF;o z++c?ZE~^ZP-myw>^QcPdgx>ka7;iMT4L6idbc3*4C(&~i8ShlqYSU5#{`Gz(M^19V ze-2?aK4W`~GiDZ{rC9k%@GJ2r=?A-_L*f(b{MhCEp-!=xE=sT?89D!aate%X>*7B# z-O%?xV56d`X^V*vtbK>~he3jR7K?!2!Jti!qMGA`wu}2f&1NV3uWyT;BUt83@W6z> zqw%c2<#VUB-r#|qC4L;>73W>Ny9I}#G-YZR@b#ThD&D`A6eNH#ktrYvg94D6r>m>@!TohC4KfjFDn7@>3m}lzGuqZV*Wh_HZb`n?#Y~ zKXD-;@}SN+Fh)+Jg(GJ?1G4w*SqEzaa1|fWb5#8Eg=9eXsneByAJW8f{g)x*WLPng@2~EN zo0&sTo+k^Xa#kS+me!8n4CBWCEzQe!^mn?)EmOVho|wJq`@9&o&w&m>gRYHaVdx_I9mSb_#Yt5#151SB3WBEpPJDX7tAb$dj}vWD00ZsXw!pz!6|fMCi|i^ zqU7+$3nGls2n$1WfIdD3*ca;MO>QH*+8QwP(eF#Y2AiA>ds@|Q9E9F*imT<;%zVN3 zh$IxBE-G=rQ)WBk7!lOblxHSNTv+gf;4%iX)G!y$-K3qCtyj#gXXbj0yO_s|qZo=P z5pLso${6CwTzwBFmMi`UZE5{mgUtovK(CJu^W9RfaHD&gr*MgC`tb_=%n^NG-_2vV zBvvM^l|Va{4OZliHDk6P^#0~$;l?WK?`jtR&{;MipW&(BBlSOe8x60u>V-68nqxUl zmWY@Bf6W8xBHNmvO1S_n1#6eylGay)%4D`m05&!&r>C8rX6sl1wbPz*rAmvehUAd; zucSm`9Au7h@~vNXrbsa*f1?_XIR7w@C*pWk_(MC`I;s%BNn zmDRwLlJGU$-XMV9zY5>T5Zi!qEVI}?%uMlt8NcFa}J@b_MxIu5?> zYiwU`dukSD7hBF>KkXPEB)?JrnmkurIgk$@ka|H%Z%Y$q6nbpe0cBm0-rTvdHS}pZ z9I=EX(|LglTpWq{*o))lcfm|n^}1jpkP|>mLq%LVigZ2Wma`?R>5H5_x0q@EG4_Zl z_9VRziC;l|k->STLxlWr8`@^^kI*G7D(f~Lsg7n1YL3T9tl%ahCfK{z_?SM98n$~r z*evYq=CJHE*sx$d#xb9G;iJF;n#|ZKf{bblAt;P@wh)ZQaO$VEVA84==49|kpE0I# ze<8ecq@swT_4y#f&zIFN^2uof_t4@Ov>HE!GE+$tpl{j4fQ+E3l!PUSZGor|Qcv*J z08vmfr*Za}fWCQBX>kJO@+#dz2=XK`d_f*kQ6?1uDYu9f1BmVRW1Z1sMOqzrx}1gn zDQL&6u5+q+fkc?6{e-2F!T@cz8XlG`ey&S zsOH_Snt;sq$BOrZamvG(4O0JNeB=?i5@Fpx{fj_7dP4wtw<-K8Bt-5Csa#tmhBg%S z;zFiaMb^{Px-HR(%8F0@53rT=G^Zwc7UX3HMJVWn!T5i}l6I2}7|5p-r$13r0Mu!< zq$^?6T^fH738>HquL3{jGte7ibV2bAR*EQR-9Bhwb-|#V zs}|n&?h_1gd@;On(PQS z@rIq!wg$Yr%!jJ-2@b=1oXy_!CEQVMtMP4^PP1ciF^bjTER~^?aPi+ndCF3?SC{(? zo0HE<R8=DS0LR4D+t5S>89QmVr?6s)jDU%R#`UzNQg3zmxu9yl-Y#1Gy(Rg;(X}ERw^qw#Qrlo z{pInKp_+_(QYr-yqgJf@u?4_>2Toyl3^FGEcPgJ40IFN!H&=)vEr69+dt*i>hUOAc z>Gz@>VKwv3e5cYKG(@ZqpNPXA31#!2GlxJPS0MyO}2j;Ly#c2q$YT4kKuI>i+=M#IGM_JcF~X($Y#p z!okopaZr) ztdCR*PlY~CJZ@u3?;f`wKn{ZACUJZ}m7g_~_}vlfvBz;Zsx{IT@il!4D*&lq&Z>O- z%-$W3q?j%~6y24j8fb}kb+9h*<=Ok)DtT?*7_!S{Zmbxq?m=0Bs|@V|&yF-V9%TMv zuFi9}{zuh1Oo&4y9-#&)y0apeK!@azO&?XnkCN((bm53Awka8?%g@-0Uft;mw?~=4 zrI{Pp#{+cWq)EHZaep)fn#+mu-H>U0p=jWdor`kBRhhl~&2FJ_i0VFPHle)kf>47PGI+Z4k@14PN#x!|o zArLF2iIUkS0w_L1taX)Z8Hxyy#C3apZ(wl=O#Ypxw7nUm^Oir+ZypOQyEHCTXOXjy z7vJb>CQXzGr6FqW10Su2BF3~79p-FpJawy3bjhJARS`zr23&|J*UN6}C@qO;Zu%H_ zK!tO)ef@CX-^IGnY8{W%Z2U`0Y{ZORm!JrsvL1b_Ikix|5$f>cU1Rba{-y7|eO_6C z%j@gKN#5N-xRrN>fsW)gdDg>}u9fgtF+}%etJBh*Iftj<2@?1$UL$Cn#|VUfjI+$d zITMSmbIYrh4{@7-LW<|d<9va~RuN`WxL$N#ELF$Wr^cr{>x}ORLXu|sTc4U+hI?D~ zmmRr^oKTgPI|lv_LJTV*ts4(B2tVJK@lX@r2=R9t)sJOI^6=@=g#+Aaw%N};Bz_&83+4I%wr8NUXsVNV?Q1^dBOrP z+W>*sDwJ-!!6%7fAQ5gUE!-6r8el}PT*R7a@1I|03Xac3B$q%x#qYv#5}$r4oVm&+ z^sNM@Sm?w_Tg85M@ub{NyarM&k%}93Pi1Sz|j*B+BQQv>zb@=6;>CItBzD61or>}tZJnD~N zF*h+V%zzt|(ZI?D8YoSn3b!d(=c#(ArUp$~17A9nbpQ0CzFGdVf9u%jN@YGQ9La0@ zH1JdIm)BN+H_gKbevAuRevFpp->?C9`3Sotf;U7@6Xs$eLhHlk^-iPZwb^6nV>bYeD^_|yKgq08p#$wHYutMgpzqSUKg6X*{WjS-oZNd`95J6@w~8Y8@KHt zMt)^{OP(_>y+8ldh4er6yD3&SZWK!ecgzQhme}QKU=>a*%AAr zsC!SrT6H->vo3V043%UI7HWF;eb%F}gv9N`0qoVYMB{xe&f(!nWp8*Ak&;vpiUwyn-S$ zL16!TY_kI=A8BTihkyIB41oblQhSf+wa%*={AV$-NG?gq&0ZYjY+4ht{GOnnHKgZu z)ud)IQsqq40BfU^^bGj$78@pbDqp4o@3VLRfkd43~5!rqJUoSR2a6F`w{`#j20b;XL5ZI zU{3(uhNz(O43Q?*?Ux@V;$U16DI@=mTY_&^(O_#@s+gzbt-DtJ5LO-;IWH$qu3 zlVgvM%IKLK?oy~Hn?(-P@r9ffsu{HvAUE&Na{gVL*=INJMad^Tr;H>uxxu65zN~J^ zX#01eRu58dRvykBm-7#rS=j_sH2OevoAZ8b$P4uZ6ojr-Shc!E zd@5#_KJZ0r8-ZrQ`qujnt#*uMGF7)ZF^VI+!^`$}O-bHzwL=sfd)E^lXk_O;CB{*-qIf6h=lbgl z67Y|oE8SPDU%wxvnWvyLYw-?Y&nAk3*FOlJI(cU`j=(TCk(n}W53CMi_pJKE!V#C2 zx>2|4jZS@0Cxh>>_gp(#f6&_UFZ}|Z5;a1V8RYAIuOr594~9?PIhi)PHIt$`Qa4j0 zwMFDatjtql{?rSSdXxdcyBUv}hD}7f%zUh$wrto_rKnn-+Wf1K13Osp8zBC?Gj|GQO|MW7t^PJKJO8g(E^ZyUp34*8So;wUltN6Jt3SyaV&D2{=CfAEAt6=v z;=Vt0{eZ8}Ej|1)`>%)%P!DG5_l_+{pqYOVyMG-+rR=R$r9vDwSbw?f_dd=yG}r3! zy1;P;+6~ThE^k^A%)ZmrotH5GN=N*ZVNL=-DMbn>b*0$uCpGlel@3e@C4b}HtrE=` z<=epqbDPq@C_D!`#&s#|Zo728edLANiAmnfIr^{kD{gf>2MxNrX;yKiD5Yo_w)UL2 z|7p|gG7GZy_)!l?dAFIGvp?9Xw$VKq?P#p5{|EI6_os+C%<2BbKwaPOP?*Wk*C8gq zpMzSKMr*}A87UuB1=#QEnjVRYBUkD8?dBi^F}OFgs0lltAs5X5MTf2v|8C7wFKU<| ze~2PUYjryy3~qg0YUw0fHw5{foCl}8whFx6H#NSo>Yqc5?&h&mt7Oc|<`j_TEy7V7 z;~tSab9Un(zDB;3#z2F5Uhb>9=(I~krZQq~=0!kY%+?#j6u||;)mw-un?_^6^^1&D zjJ&{%@3lt*mpPnzLSe#JCZ_oKKN=fBu4V)B@sKBbbgNSchIFz*XrAHQe-~8s-&OPF zK+W7Tp>YsWZp3B16S2j}Fo|B5RZkdBqq_G9%bh~cV*zIM@2tzUQ=me3AiA||2Pub0>vehg?u~YN3f_m*qaR1 zKlRoW1~aDOBx9sd!r!S!Ea1x)Zb9>p4B3~Jew55l_Ta8Y3S=TMFUV)MQ3T-Z%NYyE zSiv8oHp&pAK}UCU59Ez^dZ#7GV<1gSb`w#uT$lHYaSM0~8$kb?S^rml+-Ob)>DKZKalB?c*<%Xj4CSeZbcht5KDnk03gE{@8 zBJ)qWy20bvU;; zejfegTk4^2+P86TE(}Gh2p1q8SpX{XXA;$elnjvaQsf`3rvsocE8Rih?r^ z!rAifsz<`afPXxlYr{f&r#7YCQ{Dt@TmAAm4t7}%b9+rCia1PV-SQV6FOGFWquB`nl&qmg`^Vq0rjc z43q^1?Na zoPnwWa60_{;MIqJp((ho0;=6XW zKeG@M;l)w`#c*p$$y)ADVjf|MBA+DrFfc9ZOZJ?T9MPrxS|h1i9;$Gilhh<5{EE|b zIZ5Q-#SD%!9IdyD5Okw@$MNN>?z^W1B@vw)TOev~jZ=3h*Wr}8Ugc&ka357xoZn3f zg0>k51xaZV;jEBsZF+)Q!8KHH6!Zfcu@gm_1e;F1-D zoQcqi2@8oga@9MvPd$NGgqodUw z*Iq>+))*FIe2$jr)BI%Obum&K9u#0>n2qs&F!TA?B_PPGtCcD^T}U*w1bcyN4h&e8 zjcy6htNu4~O}R*+@W^|J{N!RNMmefr^ibUIk!H5&#zelLw@{M`V^!dmfXt6&53>c8 zrtYXpeI%!JAZ}vq@ay|e0-=0_b@=SN?;8$7F;8rFXz8B)ej#q&ojxir*)m@#zu=UJ z740wAdKuy0)cuJscVAR=Xy^__v%%f_I#zdz&)?_zk#)0Ty#W9aqEP2eb@rU>NzfsdsFJ;IQY$RpUx_TF2f>D9eK=gYcqBK+pql2$ z#T}m9qZ%PQh2u& z^*59E&>Y;!Ag&~k2Hp$y@<59{3RLMw0|+xWsF1VlI5HLI4FkoWJwZ&$DSGl+t$A)G zC5Zt=8;(I9$;c;H!k0+TfhyAEAH^R7oR!1CyU{;6)K3XEb(qdLbxowlDanHyd?egZ1X-?RPe@j zS*?`H*xT566eVn5#d)MV6!1n!mj!>~d^uE?RrsV-!5LOa>}HCpVHKsBXr8vU#?*=Dk-Sr6AI6Y49NJ98X_R><&>g8n)7AC_BF zaDi^nzr<05{<%$}HdcDbV`+jUUEyX$8`T-KZ_hryBH6lFpJ%=&^Q&R|-DU=UK2@BI zva*lYM$32whZT3(>UllJMGEtjOE$eHUFG% zV|x)`oN;M!UrMy%y`wpao+R6cYf02>3pU38fyL?!Fh~@5DJ+ZN7FE7+?wvJjjOpUKlEBe(P zHQlTW6#W0r*|clAY8GGgs^nO$G6gbu*Df7NVm%*x;q9`EmB5F=KhdC^PrW`>7y z4e-gtbe#6>u26%Y1b1Gn>Q=D$E{L6a(vRlrX4;@iD z^3K4Y!sCV>_LQn;em-;Hnf%ghLrG)qA}OJ`p*!Zb!uQLdmCuv!CuyVDFeG+Pw@$3^ zK_3MhJNtjh>`(yPRinw7MJjwnw9L#ea3jyRDOSB_VJ}$e1uF=4j+eqM3pWFv&F1x%lCAxKHr+C}Lk z+1PWM;%x@EWJ*cp-m=&@Eb#G7yxYSpzLuO^#qybseCewWntn)^MDctP%>zOSlw^FCizQZ3`(fS+)VpwYxez zD<_+%iIfe39)gnGJ#O&;*f&^|C#;h}lQb_{{qo#d2)cIEZ2m)4zB7iS2-#D;`lvZ~ zM)iEFFMQ+=BeSfhu>E}NANE5M~8uZ^+mWFR)W ztY)@b=)*?M9gBZj#t3BpND&p#&#$HZuAM*+q`7K=B+F3C zk4n2vNVm3mX(<^uRdrqfN;Pa)r7G^wJ{k1V+JCs&qADgTo+@E=3TpHiubj4HcYf_| z!d1I==pm%OR1>bV4YTZL7*2hIXmgsc8W`6N*3`X<%a9h9 z$U}0&js^$3_Df(%29{2`&FRY(ge=o27kk_qV&eq;S+>2u&W<{B7hNHa?X7I6l+jiq z;V7RwbZ#$3(I|t{?PqwF4vJlV44M3R35xfNLHr2c_&xTe01G1q)9mIsH+t# z05EnG#ntzb&lXl=T6^Ur_>TWxiC^&gRGd=)jb&5^!&Ou>&+A1RIFc8A&a4%DGAD@i z_Bke0TO#pmp&-*(lsM;-Vf83Ki|XU6c42M%21qmfg3m(sn`lR=m&n?oxPg7Q@tgYd zdA&~>tW>26AlJNQ8^`t9QmOe=={>=A)SF7X{{b9m*Lqw4A2v`^}Q^eav?2 z<_N9Z%*ndpPPKb8Ie(jtI=D>uJoBbOK7O6{jUz|$!AMyPEiG+8(Q@?qsDqC7KZPt{ zYT=R}Hp{fmW{vk#dm|SN7ELf- z3}tZmb=W0hp8@zEU@Z8=a1g%u;o9Bue;bQaq1;rv^O6ru{vGHJ(bMkP0;OwxQBkB~ zn+F!UJK*!aKFViN?6kqTfWBnZP;{Y^$7lZa8dP;<@zq6(*;h)>{Y_}=j9ZrS-pGr< zB|CMfMd}f;EwN|#;8rii4?+xITOhnB<4gbC{`9(sK;@O(urP-QA#V)cFjAL#T|Uh1 z_f8`!imukGsU8EqwRJ?i)H+F7hX*?!SnW8CWv%L{H{a8&T;fZmok7Np#~F@XrS5=h zPP&N^u6w96iar0I>g#`1X=yXzg3hRMaSi`B&+^OQWPhGvXm>t&J zDCkG`p^~S%oWp1I*zLC0=8$%y#uN30lc|8MHLn{V2PF^(`M)#kEwx8*EI(9`P7hB4 zROD@fz_`PhV12P*)%ijtmXreOgm`n{a?=FfChDb1ocPq@7iW7wk!Y@ zlH74;=RtTeKRfY2Y85&xh+U5pDg6157OA_Ztt;`F$HvVb#TWCcNRO;_G^_ZFg-yv_N747?E3#UqzTOU9sGH(Gh%-WB{*uCL=1W_%6;^`j^Npc1)!4VMH-4lv~9t381rPA|pJ#PnH<_?lsSXmvI()DX}IRR-WpkZ(_4N)3yiSz45W{G_9ylx|`~Zvu_drH${n?2e({eWKihWd*YscVTkNd z=sPXGqosQyo=9YA3SI2Q`=N_Q{_f&4Reb`(tGc~#rL*S|?=;!xqmmbArQxNg?IPBV z{oh`mIW)bwR<$)yRnn&WL=W!M>qx`QA?L&r3tJ+8X;|5kdJzXa_K9lPbo{I?w(r!u zhaDf7_l7K0K*#Pt35z9fjhlv^Dl^iXn?YCl485-d1)IYUoe2K}5HxyZXWG^Zct^i| z;)BM}jT}Uql`66g&E}-()HtJL8F6p-%$(dpSi@rym}ma`IuhCBx3Ky;ZO3RVYjBYTmn{Mu}$tBsH@)Z>lj<50Dc=^^ynlDJn^0G%cq1Z&=B6a~Z3; zun|vpo2?KO&B{)yyKPtUwYEtR6rHsv!%n9iu5yYqm3+>u-N0G@eA-d&nRCG&US+#i zj==Zsyu~EM+qcKq+ptDYkeccKq10u(7vAZ$2?D^w+V_=XbNL`+>d^P*y@Hy#Y-zVDfLb_iGLj}YtpREJT4>Z)MWUU(d&Wpjpcs1uhw+H` z97H9+RMde*s($E@jR(?oJF_a*BG|BftEFeP@HUFRwc6$fm~&!`5mR6~0!gf+9i~85 zu&L(b>yz}43h&VH3R|P9EzxwwLeNv*Eg;rK#HIi+ce#`DO9w5`SsSULPH)C9p2BVh zkfeBA;1dcHYnXxoTeVPct5t|*C3Pz)Rg&nUUfL)Vu{j+J;eyIO9Y2^8uli}rt)`8m zsSbtzzJz_w)aIkbP)zA$imMg{iy)lN3X&Cbw9Q=O3JQaFiv35oTF>RcT_9@D^E-sv z6{YAi`&*6%JmsM+K&L^AH(^{e?C$sr;vUGFW*F?Aa{iA53t8jxpW*XKV^Y^f(~1pG zo2fO$PcRU<7^}{~f$r~v(2k}lHW4~#rCj=8esUL3)=J&tr09&|6fMCurjVwtkEM^A zhR6h@inm9p1Xt)mF;1vd$Ux=zM@<}O625Nu4E&Bg2!u-q+1c{~bH6gme9-Xlo0my- zeS58pJKzz*VkjVW@jqM+^N)Rs$c0{Zq4Rs%<+^}RZ}H3eeUS^$_dc&;9nS*%ZhHx8SuNrl2l^P=YD;G}KOH!H**&~d8koZ>8RJjk18Fg%vlhqM4hN^?mV zz@M!&#?4sA&GPFn3^B$Z^Mkl-D4I1J_6T-8X#9lz;LfL>8RP>Qq?_e3`N%S?IbB#= zKWEv{^T=tScxeyUDHqJerZKw~_^-+*g-r-BLl4gh5%Gcl^8FO`86ujrAH7y>Iiit1 z-+ff8nix@dbS1Tr4&M1;BZVuU4jiPR#l)pbrG1=Y>1E^%zM;i>Ex=j;f0~=`6RtC1 zS%C3YAUab^h=nwku6&Xy->ND4)`R{O&lbNB$6vooBH|SSDq-96~;3^ zR~%Wo*Hk;_-8T(n4(LD7!tEV95C zt2GO@gLO$t8w21pnPK{uAzN$$$5k&H!|pT}GD%lsFO;h`lXR=2*j#)7)Qy-^DN3k8 z!FI@0*vxjQ3>P)bQ`W9EMilC8Z+JVbjy?c=D{YEjZ&~tOpX;|{#Qi$n@@o8;I0>=! zieGGbtt^!v(%S6a$wjM>Qj>M@k|gfsqh%fB+^k!`ivA+#W0#kocNmf)KI#Ut1S%`6J!4GHl0KQ~W1~7p(+I9A{YV+=f6a z3m&=##G1%-2ny58GH>PF-H@02&ec{w#RkIwK0!57(D;2xzl=6F;T>sD{(9~=!QUGzE| zJXB*T(&y^7(DnO#AMG1OfzC{8Kn98__q-|^&}|7qTZ%V>W*OP!wsNJ6hwJm4&%l?@ z+;4-K<>F3jVuG1c!AO|#eKfu0NbLxpbib5+C}4rJJN}eG4$Sep>2g*jRh67!Wzfvc z$d&3eWCo;|lm~S$=s2-(fhD07FffpQB^AmflZ7#l1!Zy_f7wal2Hw&+g5>i;stKI^ zIt`OBJ($8~)uKS54ED-hOX{og&a8YsBaH+?UL?B00pvw)q$+vU8Uid^-*+@9A(k4* zh0Y_OZe#-QFsNKOHaA%NuWun`aA}5!3b}nf8vF740CCB2fsb7UqV8*8S3EXY60v7x zD!^oS;xhO!b&vmbK7OMn2#adCrF6AH&k4_Sxfp+Q%_HB;!aba4~Bj;2CSueF>(2HwxiT6Fa|`emfNY59~<$h470z+smq2&6w1tfb&fW+ z5Fby?u@~f3u^6+nQq?d_!e5b2{Xle$8Le7r;kMh+ZVs>IHsOSVol1{j-_G!#JWeUF zOzONBc%bJ@uSOr7+(8gq$kJ|>7f{wXwNxRV^M(KWckGFr#mjz?UL`jia0%jq&va&h za$-$3FCIALMQ$`C2m_+Ew@PiC^^=d)q15gLHbW{)g`UpscgA-SQwt+7yH3++btvkR zM1jy)P5gq5Z|cph@x?b!;#KbF5oo1_W~d^}F~S0z|Fpw~+a6?lf8cA+U@cRGH6VtL z;R7PRNcXYNm8V58tB#uBI8AWR)2p3~tuImY=0%>DG6rw{w%pGJZo(k*(XtAFfTS54 ziy85itrSR=JlBUAp5rP7_D{UD+stBkObX!HFeuH=mIuQ6_j^^aB*rn6b^cW52V`!B zOMC^V78(s%$(nqYvau+)^{h~ymC7CHug#jam4K4~>~~0OfGu00zcbgea7LZDZ42_V z?SRajw>ZIClj0_A+~XXQoT`l}kem*vg(dAJ;4}n`ZW%X*f-Kc}&@`XOjghHN6v#l< zPtkU(b_>Td%KmGbi1>udWxpiPoyr11Me&ojCv1wVOKVy;(&|%X?#zi9W=D5d-73~! zJczli@oipW(x9DJAQ>!Bsr;fDe?}qCM+!e_~{12 zU?D%cnz*(TW??&fJb--tMQl4>-?d9kY8b$rwi>Fm3NY7mHr&Zy6W;{dvHpOV#$$v3 zk*HefFDqD}&{pmp4#cBWiqp`naRYJ&qCTmi&TZq&%{oKxmZ?#q!;6);xedT2yIMWF2;IP4> zzaT6T+RaCvzbGpH4N0R5<3Z{cr~`Q&HkyAo~MVaZ3Ouq`o zf(-+5Zx+Z{;y%n9UVgZ6VV|W#Vub=sng1h$#@>W;n@(RYcWuN@^3u^8G?aETqF`0> zK@=!0k~w`(JY@w(Rk z4{)tJ6p|lh@ZA6rPd|&n_7wpZb)&L_BT`)%Wxo8zRXd!YHknoo@6^*PO<5(_ES1nb z&AMFHiL`oX-Nrw^8E7m6qGyY{d?5+oknP`xZ0rZ_On{I%TwZr)$;|N>l+cWNThm1+ za>fl#y+?+tj_Jw&>^Wn=0>3*#z${!5b-%_~9y0?}kZ5c+HNtbvzs4UHO`Z}sIAQ5^ zT;=>G!>({xMv7bR74u1hlRd-Eu; zxMKZ+y8f8a<~0%A@_T}hoJ;dwiB8hY3G4DaBFrPXI=Fs#GgDUK^u=A)>`=o1RQ~P; zy9<>7^F($4UOgX&**^NoCD89?=T3j6-V@{1d5LMq1lGV$V{ysX7gh(uefwi0i`fnKZ@gIo-w`>z z2dwxN(a*;awotQyCMz4`X&0Zdjop#S5^H{0Ir!h5A&`|3!MA}?y}&u9(&=?abmhUu zgH!Cc8^`Z^7jpL_kfGEASB@LWDuZj|@iWq6nuB2NBer|gnbwe!U$>Ck9(-$%UL?~X z-672S7M!r^y6C=HbmaO1E)pzO4tG_z>idmLML$nrL1Ekd&u~G?tfv$!|8l%_W+b9# zXA6g~@0)?Ef?4~$x2~Chpi=0IalQF1P|g@bbrUzZ#63^|{d*ri@Riy;))KYssPlDB z(pU_CH^Mg}i~bTSOqTEK|GCDMheo-*Im=q43GcH?YkODy$IYUnKjOOPuRN4{rNa8Y z?jj+Pm!3y*QC#g+{L&NS_e(lp6mFMHF>D|=R2@=k7>|6*A1~^g)5RFF2>86>T#Z*D zORu^4#YmR%L3+MsZAsOi^i67J(gt!MKNQQp0M?>a|#mv0@Yok?W@ zoy#ONRKITFe%s~#3cmQeMZ4zJDE_+xzpKnbcIhkROHuVx*>|0(=G|b)ihBLBtR{W; zbXcMhEYNg2PGZ4Vxxa?kHm|nptDO7kkngA`NpPgT=jLGIV_E!m+&_-BL4u!~cDq(b z+?NGJS=Wo+BJ3rPemC%PS!)Z9`fE(7H0v(x3qHl`Z%FJ4i^Zqk(7=hZZVf~z7cUjQ zpMuEO?UJw5%v~*b%lAFR2tm6DSYqGUdYL$1>hYs~R`t4B65Ia(v+%HQ@n8N2@EW`k zSWUU9H*;^w&~CqgMmDVK)$-A&p@_Ik^KCcOxbS{c{QEM|^alk;J{*q`No~sMg7V61 zSXPO@F3t0yW4X_6hg6I!+Bby)Ng?-`p}lbsBgFWRol3e@0XH^1Tcq#!VHS>cw8>u< zHMSh7(cXA#rc=l~Ijrfw_qfnFK_HbM=Z^T%NWw>s()E>IS*{M9{jXNUH$MR`d-Df$ zZcT~01FUKFZ?|mm{^u{7{?d+N3>eHJbuG5r;o?=OvFGZwuW}kD302>)jd+pl`iN3l zBCVi|jU#cmIidF;lvR%iT55YRV{KAFRl_H|iPz8Q_Rz_ntKJ|IEm{n*Tb|v6L#nM%pb?Dq6EZoLr&K9kygK(-#?c zU=Jpmj{iQiUP|0tb5|2|Gn>=5n|9pj0&24x?GOm-CdSLJ=vqJC7+vBYe0>Qd)?aN? zDHX%(Stk^4WzcfQFoLJw#BqjwLl_d;zc>DO@ieR$dVJXy_g8LI*!NjDC8Ax&bq5vq zIgh}1%V^ET_2}v>KoZ;8V0EC~tTOOl@3$6jhu$au7K_?!2lV2fOtM6&aUDx;2GMQ5!qWn*Gy@?iqgE^3>L!7)WcJ%kV5BNm4h+;;yJjm&=_;&+r zQ0-IQQJ@dGEZvJP+2*PB`8qYv<~r*|l0$mcA!6)O^@d5*OL(qU=5VZq-9h ze_0@OT;OL(+FfwD+lHadY`=j&{u^WyFC4?%S*4B3BgMIO7kBuwNwYpz2@85d^qtv8 z`rc9ySHHN7frK;>4t0!Q;6!Dq`1rJ z^Ef38-(pA+$Yw8zI5HQaf6;wrL_26Zd;0S}deJ&7=52p?A$zb6%V|ekrSV2L z%Sw3C#Pbf{S1#vOc}d*|)(VFsZ`;~j%Oc75pETy1E-Tjc##-YCLn_23!m@C$caxBg zx|J=6G-k!o3W<%uHgl9cNhurCUGTP};vSK0=7wt&F8!fnfsav5@i6D}#np|}26hZqTu!K^%VCedvFPq*OA5VFL=q<%f z{a~A!@}H#sk|nl@y2YsxI!=kmKbMQ^4z8aX`LwtDw=c>#Edi=m4x#Y+A?If zdUDhYz3$n)bY*~$JmC#*Cwo3$xZ9|-Q>!)?7C&F&WN0?}ldBQSC*{{70A`7_@l|FF zzR)#lw{AD-F?eEceT75|ud;R3ya+)23Eq!{wB;UZ%;7Ozg*Q$YQTaelrt_MX-`BO(jrWQj1zsUQXu8&_nBcX~7Qwiebu^tL zctC*v56C+p{>2e%i_=s|UPzteO{8$TNt3H=8W)=+1|5H)4nSMq0jFMs8eJ&giH7is zq$Yp^LZ)agT@ci7rru;ybk_1$Wo-8dFMq+4#+Si7N^(8&7`i+}yEPYz2P&%-kM0yQ zGu#QG9%iEgT3OX-A$Ub(YEV2-MS+1$N;Wi4$Rbj6;>!QIPx@KRGjniY@Et#6Dv z#saApiX7xZpB{`pMW@C<-h5+)7qiO)8TIFgy}9YH&a_iz_tD_eQSds`C`@B2{>V!c zE`LWF zPbYTFBplZraYZ>}>W9&sz)du8Ff?;g<2JWaA+4G0TV^c_qWeL;rKm8wgsDU1#-c{y zWo2eYW_#60;O_Jpq^D65sT3>wwe1E~NV%}8#U+R6OOX?7$C&OvY$&{Qg@GYoUX5zb zSzq@Vz5dU!^KRrr^e$Y>U$JsGJIvwX^vdS%^hcViUI%yb6LBr#9RFRW?T0~E8HPYPX zEx>0P?lj#`W@8ZfV#`J`TOE;uzD~mA^rvF z&v;nI7a;{=oy)*qHShjA-j&6q5uF(Zow}aWd%`iJV(R*Mu`G&D*Z7FHZ}Gd0j}dUS z=JnOSZT|E2MTj%B5Q1jxGnlb|;Bes>W6L`3k7X)^YS$3)%KTnfLlWoz0KfM@9HW0= zk~{^lTdC601X`u*pwpdF^Vl(k_C?9(GGz@i0C{=_Ijpu!?wkoN6Rwoie-g~vA}>t< zS&-{gJi@D9*Vknze+-aH`4S~#3(_Nqmhy2(1=G^afPm7xKPqOop|~{0s?ew|TC9{D zIJt&eCt!#PvC#Q~4yFy#0AK;Yb@H<}97i@dAsJgqkR{IGdvX&t7(+23GL$s$zT&AX zr7Mx@iu9e^iyJ#^U$)^{b2FFBIcpDU4K^b>MO3!S$a5JH=^tB?LT2)>uPFmlwc9kV zKIT-+pV!@uWXb#*kwf|2UeXx)Q0R_#CWVio<9LR%F6#`hIwKU4^^FLV*1?&+v;aLb zd`3f`NBedX=R2!vE*V<@bw4e3Z z@PKfMBl`0>z%{INW~PHl(IrgvNxx2Az9g%ySl@37td$9F#w#98gB3}TAgHL(M%h}8 zQd5ktcha^r=dy&h>Os%1jtO&ZG}tH0GtL0mkI;0v-vNKWPgcORMrXzHbn1&Mm~S6{ zBhc#5Uc$y__2xjaWCa^8hyp7!W~6C`R&!fOO*~&Aq#d^|40Ux%zFJtkRMQmfO->YeVF+F z0H6$mF)J>Z1p%Nc>A(XSKMIvBRfYJgM`LKSQn zu~go&YSlNiDwYOKi*X{_|AGYIhDVdWe*^cIf!S8(w@g{*{bEBW`l7RDmPuyzp+8}E{`~JX@ocUfa2%^(&UvoT2^t|*5%N>YH)PIf}yx8fw zeC{UC0l2D(pXfKa7HXG}SXZNrR){X1qh<3HA4*fO|>Es%f z%iKHYy3*g5A|>BqlpKQu))CueWLuIc5^6!#K`>(D(+qUQpdm z>dpV?#A!+Eg-DV*IgPRDlvkZM`5aeGPDQO?)j+2*q%T;&$DY?R<8(nG;Euq{%4Rf@ zb*bb7f_6kkJXkUX7kvZ{fQ&(y8m3KW<)XpSe4w3x(13t6`&;BP+OvA?n$|!D1Zzvk zEByNHVHHJN2n`MP18ALi%T=k5I}Ca|PzQJA&Wsq2M(GP-S+;)*An6Qn8PG*@x{O=a|1UA<*%A+G1X{* zBSXJ78Cyzl`MwN$v*6Pn!n?^sIqSH8T(LdNMr?NYM!2ac5GUv^xvbYpTKo4Rcy*m1 ztSM1-GSA)W&x#)36KMUo%yJ3|%e<0$pcqa#&}MwAVrO@aJQtRt?tjVr^Nt&tH$q&`HD}AwKka$risOXmm9O@wo`h>K*e(Bv2_BZ$?e^=6|*t_u5~RRt#;2VfvNhfN~6ZL z=Zi|&a29wb6{m{xv3`Vk`Gyt0?aKFv^vKqc`J7HJiaczkp>N-DNl|oP_iEeK^;K5!m^Op9HgnI3(wH2h zce<-ocbAm`%QrFqHpA+l<9nNXIwBUIZgWB63x`Hs+z765yT6wK60+@S?_uJLQ|Bc$ zz9e!&Z{mnh)|kTrnWXfU{v)kK=nWaR-{{}3Py@uj0?r0TPEqA>f2#|3x4G>XNEGBh z$SD;N4-gOL_L`r`sxh%30*Jd^$gMud;mw}eBbq%DC1Vt?QGGA&q?Kq|6sE{< zaV6px*Mm`j+BQ;{1AG3k$!Ax0y!V08QzTM&x8uClu1P*G_CV40kHNG47!QH67N^=^ zrA&URQ&4pBN2(G5eDr7D`v>M@Fp{ohP5Ah{92(Zx9C~~@&O~<``lwn)?*+Zv+mM1qxOLe+Wvsj(o2_lQ4QS%O~xZV%^` z6Dtkhi0||L%597D{vo0T01IEpSvV4v=L@O-)iW+``fJM93XWWPdXG$c)PezTCxse? z9QDj(-*DF&jF~VGZU2Js9s)20#tF~4Qpcd&S2{yJ8Uv8gkX$20;)5yAj-c_F(yJpK zjq7R#{83nF+PJ~MCLR96 z_tyOr$q#p=blX?a=3W%HbKmtr-R!#zBulxKJOn#&S^~>s8bsyWp*!!!dHlK#ID;r1077e!*d4zJ>L1l_V779E?OmqnG@lRrF)McF{bd*L3O}gH+o8w{HGLO2%8_jho^64X-eF_--o! zf1vIMnLj3qSGwGUN2^R=Pp=Lt#3%YsybR6Ns`J`YYO_~|!7w8-d0T^SnA8sl_nrnb z0@oTd?AwD;ENlBe6{;=)PK zYBYbfo)wOAkwoaN_q!h9CXzP6tvEZ?moCXCt>MxoVIT2yIMo%tg(}`ZrGM<+`#yhw z@$TJm1KiCwMqc~bI-@2%nD=y5VJp<&M);}RKx3$UQ3VN0BQBTaqW#lFmK z1Zy8QEtr=yX*`Q%modAVt<|>YI64vlTBDaD#379KdRBZe_w}u&nI$rGl|295h+l6BJWDi9Agk zR3BrJiI3$5z1$9}$80q=9tsXxG+g{P7mD#{wC?#Iz>VlftBU22aGr1IFyD{g_z(E{ zm$!L`eO*uU>5;Ct1LuODnG>^xM$zJhZDmA*W2b#I8O371q{PBl(y-N)CH?$&JE|eH zaQ0_bx|A!@O{{r0{x}<9qS}*8!aiPBE?l2t-2ps9!*BuM#~&5yQ5LOJiDmrb7km9zv1;`ZyTl~XnvgMy1@q{`v}Uw_9~nzu;o9Y z#5RT8v#$SHdf}JAcG~90{pcq}&sQ_`YC;fSSpy5QK_q*-3f z9)-nCuNEYtTYm6QYW^7(LfZ3QKAEzMfGTMJZnyWT+tVUEiH`8@)nKqky4{79^j!^I zb(^OY`9s-8+C}gop6|HNBG*%knlBQ(NV|*I4`O<%Y%Yb_Pbp)90f0Qjb~lvbJAfYb z{#3;B%Qq<~^PY8dn}|qIn$3)Iwj=k+6T3#+ME96CDCqi&n^M!v+73drOcENl#9aJt z{u^51UPDKw(w!95HN9=8EKSW$HRSyGml-`qzfda4bnX*Y!{Y z+)3ZB?_F4XQq(=~x=LEMYt^6Vt@HTCUF5$Wp>{5l!|E6A0Xv44j+Z_~f33~K{Sq!1YB=~X_cQ}&)G$c@29k#W z>djMgUBd;t--vd~;=?3bdR5tAj#*s1Z2CArOZBw2H!7nVVMyYuqi|&jwQw0{{yXm2 z?E`9S7}kYj8MhT9N>gu&(WI7LI*bhK@G{bkQd>=5^Jaujw`$FSqomQzX&BouIEu~s z_AQ-!n^|&vajtf4WGpvCjR64^ajCGWA`MlNW~5eyj>Z5D&Vg(+mTX+V9J=b5y&lnL zY?bHI0WSR6Nk~?ggx+?yPvCby6L@5p>0Llb9$0f?I0rpS^P{Y-^55YJ8JIHv(&9xx z8`;!?a7DcOye5$2Iqp_>4>iYACTeCX0;f-v<7Fhz49J|~v-CQt2g556hdmvQ!1Z2E zR{7ESi5))7f5A;kg9{=7HLE`lrodxd(qat-q!;*GXcpQCom6P1w7Nl4@s*O&`rE7= z1fYZ^{wul}1wba?Vk}Q*%=~?IP=Dr}K(wb#RJukW>g|94!8-Q3yD=&+7Gj~0gx8kc zou0dHW2fh=(+3a~#a>}rX-&T7f&R#jt5|%wonu1-ldxFe432!AaE=vV)pOkTnGzk6EJ5{TFVVDUEU+gTKZ4CP zO^30$g^^m3i`a)Z3s=POssyt7UFCFzV(Sc6d-}HLBrN6g-KQCMivlDiu=D*98vLG% zUyqF|eCQ>r$XcG^%-*F% z3pL27z00~aigq-BA)`&#iu6C+$H_{UreYZ%dYfL(DrnM}CyJ$mHdXcKTA1lbxW9BIFn zBMfrR4m7NZrq0J8pq3by+b66JGITDYzz;LP>z3Pe^-4wJ=e$UgiaYyO3Zq*_^l3wX zRFQv;<@rupdJw(dFB=0#z_7u0#s1@#eo6E)!6?K2erwC-Q(B-jnzZm?GvWh@&fO_K zck%W8soLTJ4UZGSiO|E+)SqTS8t3p@Sf;U9ay3`+P|YN>x~v?R2(Nu!~et z8i>qu@S7C*8x3X>zm6bn>1zHCG%;^+Ut;(g|EfZ21c&i<3xF(q3k3}TtnCD%6k9!9 zN$S}$`TbG1(XU`FNc({O_w(hM3|siUp2L4v4wYWZqyQyB(s@KAoa2UZJbx$OIgtq-t#bw0w^AOv2w24MTCncm(jikS#yw3x&(fbBS1 zc+6!jLVMy+80@a0LNm`XCyz_Q0_aRJBbqB0?``p+^>i3`7%2(e3zJ z5nF)hFUL9|ZC*%WFnzQm(_efK#|$gm!X-149GnfR5`;~=*_3%+E54J0oZuZ6fBh`2 zape@p%5DR*bL&L6xHJ%2%-Av*7|5;KqGP(9oSHKX(qI4afBh2kxxcfBh7cb2=uX)4 zbeY>bL+dx!E5&jD>`48E^P&GR$?G$(NoDFfxMhE<94s5~ktj*X{V?>FDKi>H6|MwD zZzj|P$OdLgfE1nyrTC%M^q5(Jp!>D|R&b?q>S%*ze=ZF@X1dWoa{z98f<1(4t7|e` zfXq-RN7iruHV0_K2hNz^^RI&M%n=t0bXzJY*^jgv{o9KGiz670S40K#u;(QsB`e>EF?)yk5uu1RF+DCA=zk<2v16;}17l*@(q z(OC)wD&Y2?AyA zTE_!rLt{^y`n3>P01nJ∈mz5nCgu9FaajZS9IW7Z~hnu}9nLh?8i4h%$2muryV+ zpy3{EUV1AE4CF3cZFv0B|5K;vB`onCYw<~Rw*cHGkQi)5N%ggE_VQ(Vzlc3~Rz;$n z{M!sWQOyCG%gY^x6suWH*5}xA6;f~Q)(6|_?+|3TNDKd$;>z}Y%ArhT3PhvF3!xgb*liviU1POBYz~VKz4*Xa~Kq74FgTX*>H3QyJz7A0L<7m+SaC280VFhOkU9rpP@+K z{)V40?}MI zCIBs1rJ$E?*OxSeBd2>jSCJ^blV7!Sl#kmoNiCDD-^Gj^^G{O@siq#X1kZ^rr%R9* z-r#o!E>0Xzw6@=gke|yBlR8Q}PX8)6(Yp}*V|j$3*TLXr266- zZ(*?Qk`>~>!mt7S9_s`AL zrmg$@iK5hD<%rB(B>IecPv1G8$oF&I7ll86=&tz*$m`e0j~v7;%j+1i@|XBAsP_dgO?k{l-%wf z8br}wjb+~-zO%MdGAaJ)YRM;4R7%j9vyW}PWO?}l1(sxOZnfaaaS}0O3t`NaV^tsu zX&r0ACtXukYC9qZ_+#JlK!15%M8`JoDfM17Mdc^$?^f#EHoIer2;0#O8pQ8~HR+d^ zNxiHM5U{ISHKWV$nAFB;PU^@wOE{l)Ft{$sW{gcWrpTtXw=A{Btqn411Kf04ez?}c zn0LX4LBzoCt$X?wi^BVbN=?J3?Nlk%G1lv5+I%s!Qt`wnOSitIUYQET`q|R9OT48a zrlGuN>9~e+3mq^-ISa0J(r}RbA~_$E#VGd*@Fpx;UwBp|6!bLwUS< zs5}+n3kl<%tOfd6NEExx^7|q4w#beRwk%0BNAq`y>ABUYD2vek5|UKs(2W)?U4L`6 zh~<|%UGIGL+5t&fxU)N(nNmXon^W}vs@4LxS*?p+_zJ2cCiZIE_c+aFLb8D+w5hZZCYr^no>h7T z3}%}avjo@hY)w~Qei|9(Fkjc#N(z|=3PNS4xTcTU(Ol+CC-Qo)W;~+jEM?VQ+DOM~ zcAK|(f&a(Qc{sB5wqZCDd+)u9qBUyPCaGO3cFo#C>@BKI=paUsTA{>VHEWZWR$7W$ zF&d+)sz$?4t)lvU`5W@)ocBD>eO;F`tIK6RwE3##*j)=+j}7s~@o<*Fy9?*2YA(9vvzGFjgsiZ8AcrSLBbg}30!Yco z7t3`0^EZjS)uGeb4R+gs?2{mBwT}e4j7Avgv?O%EB7%cD{#7!gTl_%X8!%}57-<|c zwj-^%)uwA$mvnpC+0TkFVMTX+5fMsOUJef(a)o&Mygv4D>0G23aRHL?iDEo`b6s#^ zn1|qtjK=Gh{{z5YJ>MZeBrnXVkOTD#*dg^TJ(YhjRz!t!#mjK2{1B^K(2k2_M||vy z6(pjnD)QTqMLoq0w!)TU=sytomc+2V}2~jWN?p^d&8X z?hKlT%@;iWY7qQOksT^9g-FR#e;0BddJV(l{VCrU>$Y&#{R5RbQ<^m+(?!)A*N7Qb z`}Bs=mF^PHA+=Fd1k>Br+HbG!RPXK*wcfcXaxSc(6pXagbS96}!H>jv-V$S4lT0?o zU&L_Mk=>t?9j7LUn#T5`Uc7zd}5&SH`s;@JzF_%IYS& zyJ_97G6}{X7owKhD@I1uh z%k(7c@Gqa<__WH$lb>4!9vfQ-N_B;8$2_tt`e&T<#oGE82C})^&C?lr8`M735?^zi z;hLpROwtk7nAcr&e*62hJLti3gncmi6t~&mYBdi#_TzQK(cg1Nf1KIv>ghZP_(50> zqg?>{yg{{g7se1uzp0|X#qx&f_g?GdUG~s%r_UurR%5CtG7&E>)sRT%*E|W*bg))7 z<9j;`mK<$4aKq^j0m+R_97>iORfZ`HXsU|4oUFT45LoFnU(QpdV6}H;=A!e8%C;!A z_YvK082(1tUMD6@w(QDaQ@9irHz%nrHm!8{m15`O%Z~+{E|PHmf5CE-^Rd`0|E>0l z=?A_jvApnM)7Q!k%~)=I(kwN8g?Yg(C$elBT6GHsMAz6@?P!XHBK#=SOOaui7G_ zXpFraQe-F}=_RN`U|F*26v93{>enbOZk^Q^3uFM4BUAweKXWZYlNBNS6Sns!7-vlr zaC{0S*?psvG&<>)53n7}v_8r0jsVU5_Dnk}85v+P4g|1Up$qJc!v*LNxqvUe zxdJejY0Z9q8_11El%}ghdul2P%!EHNSE<@QBDpq&>{hX1j`Qg-KczrdOdlmmF@4#< zvU&SfX6i1Q?AMVlkLgS8cu5S|3EayW^gfohz1Jy?qpd+PC!$72RsqwF>8h4(0MQMK z-_mPynzIV@mB;xazS~#gm5fwzsE@FD{Bi%YKiOb)$>W8?N8{ zgqoN+xrteE0Ng%RULp3xZ>q4P>zy-siB=ypQErKi@4pelQ!R%%SL#WCg#c zDAB$8=3V#f#sGqq3jN=nw&MWG^J`6^GQaw_ZPK54&)JpS2;HsJs9)6dRMC?{*>R14 z_=w=oBSQd3XIg^Pn2!_{IP~QJYRuRAA8Hii5ERZtitC3s@uxcZhJ7y$K$V10(k0XY zKQChB&K(np3Z0Qd2!q6esYnCriIg9P$At zshg!QgSp$C<|bgIQ;T-x*&Kh!66Efw>j^im=-2F~|JmgQkLhm?^gLoh zD11w{^-$^w?R@A+c)>&qYY8_Ew@Pw}96a}lOg->0R9>l;N4eL1lYi6M+|=l3b^?;R zdJ@|b??x3s%_zZc@%lf#dZlBIrD;}y(m34z06TnIdQYf08Hz{%v{p_KQplWALQM^D z%QL376_84rV~{%4YtVQHqApP8{vH7m*g)O7=w=?yMbFGUx_C1aR7#m_eD1r>#-FR~ zihvqW=jKxA4H-2ifwFfM_15$gg7tQPFJ~0GOy44$3?eOtp^00l3}hv%H2^34unL^F z$SllQBoO{kRx+1zF&sx^EGmd-A(5D(a`Z7rapsX}_R6%kjM?A?ZjpHIci;uyY8PCD zirl@Lls)2{djZsO4v*}X)G?yECn|)G+G=%r%q|mu0Ldq+i&!3azm6NWvoYY-)mqGv zS?{WDYT@po9T4hPI~zV?rLOgCV4?a1Ne|~+`A9T5p&dCOB z*Hx~2>od-@nJ?hN(=$d}@0KGJFP=F^qvD0K;MdZu&DO+mlo3r&Yd~bR)jzmWE+{}8 zgMDn6ylYne8wP@;m`k8j+-A+L>UncaA}!zEb5F;8+%Jf0y@t%<{r` zD2)>Q(=E4ujXzqHuXjI@z`ryMn#+v>0;#UHwccdF?c+AS9tp_1AXy37#(o2w)fE1SM^lDdPaz>TFk5z%> zL=&jB%6yO;$f3-+houC-IzJle$IrvYVW%&R1YOP~4i8DElsofFJRif+@>6NmD$_pO zy&v2@4pR5P|nBzbWtQWv4HBIwf6P=o3Wp=eId`1A>!dp}NQ2aK0Dx@D$1oS;HZp-#k zwk~R`n#_rrsgY^N=8pa>O&ace%@xg-N7XBWdZCwm=15CtYdr~Ze5KWzoWD zx-MFBFU9pUv`Pp#9+>(Q8Fm`hFd0O(g9S;@Pf%79xLfMCf7vDP%IYNkTthBP}P|PSrwn6Ft zZYlDr8gR8KuG;NhSr7_U3MC(y4ni%tglC2XP|#>YYDRiiHUgyRyec!v;Q%5I0#@hQ z1Os)f#1IU2&(v(Vx#q-+YgX=EKx!+#l2Rfefl|ctszYE(T)nmU=U|7-Ljo0t7C-mk ze>(O7%EeXhP-qZl=?JsdeKUhBmC|KPOfhsBx)*vjb2lXy*ecWSN^G`-_^f^&cG4>w&G7 znvxAElg2X|LU+o;MqpUCN2QLT%Julq!%ThURK zD0VI`SCU-i4;*;wwR+mSbEbe9ri&6vMe@y~6}Kmq>_~}J%OZiTLhO@jlt5K4RrVJ0 z&`_$(0P(o!qna6MaN2OmilwjY7@}fjE`zy*vR775oT9m8x(p$#K7;ssph{IT32!?! z$yqtZNXS~fAq#4kLCg^bl$v65k6G5mr=I!@?xke z`-8)n9v^{+HPtL_NJtK}NIQ>s)Vzi-n%*eNykcxp6!t`3?+IXxUu=@@D~Gsk0Q6xc z;EZCvb8HHBc?lNTLbWix`yy+o;bjc9cM$I$()p?W9lxkHWQv{n@9kgb;z0=PQ5~#j zE!8}>;8*I;6=)J`@ciPAFjDdPMu(}}toFmW{E|~1t4U|;x7S03jQ$chrvFKdcgm%T z&U^LKUwb$|L2^4qB`b_aJX$sR>bUS_fG@`#bk$@W%Q$2r4YS0c?kymudoNwb8}$FQ zCgc5k-?ObuBi4sy{yN-SeUg6Q$Ta+ve)66WQC1iG?0xOFwXAR^yK5iu>l$(5SWZF!5Y(v7w&nxyfeS2!?{Jh?!GdAP3 z(@x}LF(0{*mhFXcc$bDEh{6t`iPtTQkFo#7kR5Am-rsYQXBK(asVJ>G2%4mc=a)zL z3ETE{A&nt2*n)31P5Q@8u`b2jBAvnq>5d9dEG%bj>Mc{`1P~s0t8Q&ms%djOxM4Fa zmVqd^=azIT$sQ#)KBsqg><@ebL_rpDU$>pZmUhsw{I=9*bcQ1#T7bNfYHE@~id$Oop}nozk~Qk}^B$-s_ypFb#F)V~C+x6wUUyEDxZwgl>J z6|KVswT2}*O)K*lBMdlWuKb4z_SwHmbcd*Pm(w1_gG|XGq z_A4I%0KrY}XbWLkj4#D8e(8p;^kAuI8E)FJx85WajcbGv)VX=~-h%7x@MULaokh8p z|EvmqNO9sxg1@Lf|1 zoWD+>7$S6Sj{CF2%lBwzBY-jl@Of>1G@;?niJamWI^Y0sh!Eu|$Mnc8Yz2W){`c(= za{uZ4hyL%{Idk1|4MK|UpPEd2H~JniC%#P^98z_aVSfL%3x0x%o47yMscSB_U$1wj z{V;DY?Do?G^wHPtex{7wE(3g2e>q=pOq(w59)GL^o@BtkB&FEEQkhhWX3;4VnpPGo z;B7y7$s->tbo+Rr>RSG@vz82F;xXyc?U%bLU^tbaG$*!eXuk!_lwh&_)loT*drGU> zh(L!;yWdZBa(9%OADy%(3aV+)e_(+eJuI@yx@ST~em%^UuYPVMkt5+|TGB4Ua^f%}~v-l)b)x5QvNsQ|lnxwst ze5aWAW5@`@vnV`Fhd$S7wci#jy0cwx+c?7l%ywN|qdug+Int1J0B!Z?tLipP-X?-7AsznEdiXi*I_q zYl9(c;%zP~%IXVV%wXKNkc7LJ%7R(j?Vooh{q`=z?526)@rpEbyY~03LTc%ydnw|P zScS011wDbWug4^e>6B|8R@Q`7w((br*||WID+6Xz~1<_WbK?)wwNU#6fnZ*75$&7!)?7oNB83 zpYe?+9<`~-2HY$=0nFB>la37xam&{UE7gadI{oj%zB!usXtuIU#zQsS#$T&`$^|1n z*Blpw?vO1tW)68o|1~2*>jF=*E#i3!i7j8>!o&JM%v_ia(+*yENcYskT$lR)L6tND zQe|Gj)t%H&TUG&TQ`H*-VHxw};Fxa0c++6!R^P+dGhK3X1>Y^YFemZPv7$oL%k#n4 zGDA6y>1LRjghtqdpY^8Iq*Dqvi(Hp$-NZjN2gZuruH47|zDAYpOu5#xxdu0jUv~|} z9{msCJ~L(?L4T&~?vxdaO}5zzr?foiI(s1$%N=lQ0JHb3Fx`u?9`BjF$$5*^tQ99Z z+e3wuz8_yadbm^jtl97}b;;*$FI^HuQ3A68?n7~qJ!H2 zQ$m#9zxg*tY4_K9S{E`xccw%M*z?pK5y#2qszkA;A4@*1CVP+HcSbiJ@^z00U)LDVDG5>ED(Y z!-K+_rz>(cQIjEj$MPR`&~!o%hLYPY#4*3D*cqgKU{t#*FyRaE#AHH$p;Z^Llc31_ zyau0zm{3Y32t^xE);$+w(bno!i{==SXN=a5f_DZDh}lhMoQE0jbKqa*DXGqi>KK2a z_2F!mNNt^qNmhK;`@v-;hxO@XwwSmU=Mh9?ZNEAR3Igqc@Il#4zW zXHULnc6DsLfYIswBMO3MA;qQ6&tA0_&+TU(E@MyG{aStGWJVBGwL6)PDasW3<@^jv z!IwpwegjAO69jnfp2!TAjJSA3IpMGW53nn|+Wmy_<#(~s)?1rF$2NVsV;d~ScKeqL z+r2HH0+M$^gBgQePp47mw)S`HhXx^ZNM%QO+3NUiNRt#m)D*#16XRJC?pVuP1iYJV z!s2&K_-l~XqUC|s;6LR_uU*(ZZt&Y@q@rjzw`0P4n%syUCv^Ax0hDhqm%4e!F|infjFFVFa5%#TmXF9&?&!fooUjH?G*=q2iZ3_|LXJS-;QMzoR4I@u@F zF-gtwH8*;fzxdm{xq(=HF~9A?gNN_ZkzF1NEu6=Cg&0kiLtKP1JRVOTo zQ+S`cl%WL=cB_76O3@M+nl0x3ZA1U+^@T>gl&qJ|eYLa7q{2B|_>+>{4eckDN4oo8 z@qGQ@)>GdXJil(eAlBF)RFhS`!znJHf8yt}o%xlKX#GKx; z_M@xM*MID$2^_l+%hVkUuhEWOa^{gqa$8Lw7<};gVHZ>8`({mzGuSD!bMZqSwAM+dIkLh zSIo;KwK#J64=l6uvxZ}`Ym;KGt++WUvHsS7KkY)}%6?>-FDKJIJo$M@n@d(e`KA2& zeeb*a_|AzSrCLRIqVGq6xD z!S|2Po+n>R$kGs!qIrl%EK_s!jpmY&`6moWNG(cgiW`X-=aM?K?3i#Sp-K;Wb~uc^ zO;E!&%g&SFUXLGsDBD?vBPLR0#}w%|iB7CN7OitTpBi(x zy_VPKFGL#)v&Zo+XC!KjjIzV^m!VCq=V8sXTCJ{Rnryk! zT|JJ@tskp5dXX$csamIXJ04aAr0$NZUda@1RJ{hVq+p2|MBsL^6(J;qz>m+G2~Cxz zqphI>Wj=Q?Wyfs2vZFGjrk=htIWMa_fsC4Gbwbf}*$-I&4)j9v23;Z_Cuo&f>gjRY6>^zx$(qDOIVB`-nDkOL=cFb9;)(p(t}VEHy+OzqvvuDn)>`Y~~6 zyL3&+#9B7ZNrHhE6}X^dPuB6}MgjV?a!rY!=9Z=vA50EKX3j7||D>N2%5T_UT8bMPYQ z!+bQ5fyXsd3*a?(R3eR^iVwq)?%>ThweIpv6KoD&v zZ;+T77dMyCmb5I=LNuVNdudqe(pK1)o3+t0HPbjUZh!Yz>_EX}S5k+mKsLNRwa@es zKAPkoxzSX+J;8sDTbXNv-#lX&r3-a+o7)lKfAyxJ9$(>cN+gRjWHL^7uEl1=7e4hM z^5)Sq32;c~uKYW z0ARs)#3&aC8z?TxMzm(@x<-4ggG~!J2;k_6N@$#$53!su7WpLE2Lk4i@?Kdsgi)F} z`QmNrAGS?J?KVk*T__>#zaBfk8ZXW6$t*3ZZY3g0sy%Ns7%B{0+vpi$m~QE%E)-hU zKjvT6HfVT~FnaSYG$ZYQeFYonxQRc^fMMs>^F#icfD^u21tkp`}x295oQO zGP;jb6)Xeqdi1a;Jp7@xW=r=l_ zX`6qTXz^&ze`V&=EeHRWUY+_o!ta=Sd;Y`5!}!{$(QQpO`p5L_V731N>c4X{jvP7C zLr6i6ap}b}YsLSHaFP_GAbZCwU_ZEB-Vd{XbBpmkoPqmx$}C+l!_a054B+?Ky#5t4 zf9b|^U*Ty-#MhVJlP>m*12x=H6TJwglvN)`K~OS`G^z5(_j#axpLH^JGlI8u=46~wFZydQ4^*@Q)5hP-pIv6vgMifo z90Bee7C~pS65?|j)qhWM0Fgdw%vyzhhYZS+fvfbvEOX!bcPzsN*xioh}vEFbe9!l|uehCjP;hc=@DFEkUI}@M+blFf{NF0f@d# z7%ap4Oxrk`&1kTB!gDk3RZ8tSMh!QnJj7oo({{DX&$W~Ug|N%0QC&51g2kjCZ^8J1 z=Hf<2b~Za>Aa!~S^;Lb_lOe7HaOD>!T|sF*Rf^&8vK&vpLJ@Hkfz+ytL2Y&7wAnCr zsx1}(^@KeaCBQFQVFk1y0CR`Y$~)(kiMRwW7gg{`sc1zk9uf28$ca9N)eyS&^r}WbCdq^&%_g@X= z&**@l;!&_*&ZRBN;SP|M8~o>PuJYl=dKP|QKBVGP>V@Te(W(lJH4y9hQx%%^m5Y?U zTD3WC_))6@h;#ofds~qDFVP+-$xTaDFYXJ3`Ot$@A~p7MYXCK-c0PpHTT zP>PArCivyHOgP@=ya8MGm79xHowIf{!dOna$v*-WJx{BTx@ptaumm+5iMEq{zEy_@ z{AsZNiUuv`$+ECBC}}mU*aj-^;7Wm-Y87CWC>RY@AT?Hr?g5(iih}G>hW4`rta=BP6qqn7TBu*23fU4Go- zbYS$I02mo+o-UonfmuU}-sCz&r+(#OwNaxDsNn+G{g(NI6aSrjXjfwhQC4#&drD1T zGDG#Nz_ZqHMXSn~qc08TG%tUf%waVC(fL&Lpd@1gS_sgtVp-Ay; zIpt<1*AY!dgB7Bn?CtCT>m$+UW!>HwND5`YDBfSD(tviwM9#uQLQKsnkL zY(r@xIyBu6Ho}6IOJ~Uc1=9;OsGj1ehbpW{0R_=OB&v9XG4l(`#0biv#%VLjF>(aX z@#Xe23P6fg8-sD*b4?x>qX-~+7L=XQ#xs%EP=ra86;;(GbW#uyeU}>}Qco_}3}{#g zwzmia+=}eAg~WlPKdNud?2Swk$j|4T=tOzkFjw%Ufq3 zu=jFNvEw-jKKVa@Y2JdO)~VE@Q$fu4EcINmQ^szE)Qq4@*-9D(Uy~Oz>XYW;=TRHL=TyIoS4Xq$h@W z91mcwwCTl-bS<=gi4dKTJ#W@|C^=^&GI9xcbZCWG%l^&buP`;~kIyKWaHofS_r@K+ zb?$0hxIPeP7Pr~E?riM;URE4H6G6%t_qoWBl}ZlPY7RBCrXt` zbR565Qg=?dsdd%viiUjb;s&G2C_k~*!5x&k)8MiY5As}nJXY=^OMk#8Q5u|Ls=lCo zUhpMAc`{nWET~f(^9ZrhAHlsPo7M7SB4&Nn%jT*QKkzuNmCm9!Ea*iCuC(ZK@$K;t z<#?o@HJG-M?a*8OF9$5@EHar>Nw34Z2As%mD!<(Rk}UO`jS%AA-6P+If8k!b=@btg zfIC*$`ycv$NNx(ji?Get_AkegHR&*Ct;yZ+3`MWS=hf{=d^GQ#to*}_HdBSs%TrJr zh9Emqo_WA|b-~I<7+_8XIY~z+fn=sY7jJEk7VBSx8a7$hbvl|lM{2CjdeA$dB24s8 z!ZQ>y3Ki6TrFNF%?dQs!>vkr6=1amJ7t5cy&B6gs?hFmI@3~SET4kOWhwa3i z3F+r~LH~ zoczLq8z&;SoNIbRmG~T!GmBdG8iF6RvI#ZDafEY_`ff3+uiDu6#J((&Rh5o}3*G_(qYjDH!W()!A!XM;zu{>EcU1`h`sUKhM_3P=q58HdnioSpA5b@DPDhj?EA^;KHcmv-^GDzD!=we-`eHhFZm>Mh8-|-Zn+_Q`i`}3^% ze-w=gH;_Ek;`Yv|WqEhu%d^=y?DFB8v=v^(`V(3di`kHVSS=EJ@(;Y^JrldcsVnx#;zcK@r2@xTO*-9QBAS@gg!=q{U^I7tN``&d@UD z(l8%%%f+pw*?Y=+d8?fqBXkjJ+B(Yu4q<4#obDS=i-=qnO7VEptxt!j zLUfGj{t{J`U?y9`XvtZfO`dQe9+4cCNr4>Vf@nPBf2^Bxj^8LpiLX zKXO#fYl6tRSS^4lqsTNxpQ={}tBqX$@pG%YPne*><4tS%7y96>eb~m@U-fmvWfkl1 z)Xwl}L}-?FOUwKi>mXxOON^e*c_EQ~({kay$*zW4oE>R-@KC2+?kk%0lTn}nPge8H zONIG?;0I45Mq1_e*$6=~S9gMch1=44rH-~5$}WYjq%=c5pXleqZM_e6B7_k{hH~u3 z?F+JXp`BWDlyUb+wlitq`fP@j5Oq$Hs#WxAQZ0F*rCEAOf=PCLItH86RByNaNBFOE z>Ifo$7*o=ijz{Lusl5?fNsn-kn)n$~YU%V={3)lbzE7;aH*?H7kB+O(f?n3$hZ5wH zf{kTn&?oGL*u5QRwc&l(tBmxBv3nOb_$bm8TX48%s6D;BAHmpr=Wg>B%_lj~M_SFM z0sy#r_cu*OzB9kBbM$|i_&n^p-jg?1bbe{lJa(7+2fuF~cWnKx;+d!K9N_BiK;XyrL8o7++<6R{jPoQtA$#E&UHW7pV2jHlM!y}sF z)IJIS_+ZN8^N!Ntc_?G^k~4Trf?S^``^W8Gf7Y!$_mT{$R5wzS#MQITb0>Cq?v5Mc zzS}_9H%1(Xnu!1EyE*17O`cEZp%2&RhF8oL#i)~;+H%0r)a)$LqSun|c3-LEc%s6n zuq-Xbq4GgbYNP`3h|rb7XVk1qt$cUi{>f6&l2VnG;_&?FF&vl!Q?$kGen&T>yXk4u zw4^pBG3s+%?HhVl z1h67isNrUw5BdU_yF!dPy34EFqfRecVPHkQ!kt4sg-BQ4-HNmgpgyY;M#6Zv-VN9w zOuF}i9iQs$&Qck0KTZMYLS?;nHOyqT(7=(;(y#7OdkLB<50s;2-6Nc|CX9Vg!V3MT zzq%#aNVPobg5v<=@{=lUp`*LEr=!c~)Z*vwe2wkrrqnrFxK5f{(yrlDYqw2!dRKKU z9v!LZn8|bn!Y`~2Lmo??bQr|qPIfL*y4FPmt_QdQ@##@t%Aud(O!gH?B!3OXHVyWh zuhs>}dj2%)b!>d!?>M&~fyR}jBBdFzkrIIz?9Z^+58b#DW`}<@r_EL}w(Sq6{Sy?1 zLZFCY1=TUNpL%ubc55E!wG|>9{i?!d9{ls@I^?MUj{f#&uG-xv2Kp!bR4~zFAj$Z( zZsw7#5ou+_#!L1;Hcf6NCuacET*nt^$w-~=QQlbLh2z&!ww&PRq#ngN!%)IR=J@*c zPPzl* zCAW#q*%fH$2P3HLD;0BUsL^OK&M9ncozdUXj+b88E(Mfh#7g9Kqe?g6F7YyvD9vip zMN^rxE2{x5=~I$-Z_tCsc_NX5}Fcc0B8sWj9t@ zW_sj<;wCHS*nK5X;SO#b5HJ0wALtur;_6Yr8_my87%;$Kzom&lJPk#7c+BVjr{HMZ%zyiXPVR3}GLMvaF5y!Ze; z+`DFqwmubdXFEi%+4dQxQIwiNJlY?!zk`dUuCi$UNx_?DhfEonkY9rbDprpAJyN0^ zcnrE6H=ZcWl5{lH!;Jtjp-P=90p@2|HlNTVbIDvZ@(4f>N_ucLr-^1Y_tkX4W$C=g zq_Q64gGd=OmEU=6pr&YXO?Uqz2_<&KbZU#T8gkqZhOiYOm1Gs~6Dgpl6a!fXm^J43 z(c7Y2S6rOFyh}Au{8KLE!)k}KZA7rbYtMLAVCj>~#XH!xE5Vb+wmY|~yboLuCBF4a zeZF&XOQcYYid@(#!LtzW=s>1n>Zk9biD9CRxoyl$vr|cp-1d9EG;_*3#u9VgWyaHvDKmkoSjRX-i_v znE0?aH%ln8)92d2?2^83pZ789k|-YHAhS^dV6O!T!Pu3rjj?lY;ID35Xa9snyZo>p zU;0AkshKPJt@u~>QE;0FKW8FtQUO2^^&;wedBrz=dVQR2Wi5q~LHo++0&bWCIHSqN zAWZ^op7a>!6l_InJ2a}X{36e7QC*iB+I=+N9{!|K3 zb=9uz?YI9?5wF)&J|D9hRy*HR$OV@}oaV~wZL5dwsul8AmYA+b-+LKenbG5HUv~oV ze^Jz`u&S^p|8Ak+5FEhI@z<`bD{gXQu|)|Q86J3!+rD6#OS;2EPr94^*ZD2y-Awev zw)VL89&^l28*KpxPyKsNWytL@E~`E#*95{H991dSjMK<+`u6&JK-r0EC;w0M%_>zS zj58j*4!zmHqPKAazkSiYNdT+r)zkHn?Yy|8pgCrzX_b8vUW@>Mlbs)B9qw@_Z0>%Z zxu3+%cSFUZ$NUEQQQ}29#QQ*P-{JwBo`J`Dn>C0tAPyJxh zGMWsYmXSb7&=;xG2AjTB1}meqYJvJEJP99IzPg+Ce67!b-PMgEql)KIG?z}Ton1LnXfnFN zd85(`@^LaTrYE;K&5JvNip;a^qBZ16WVViwJgenD;IUBi0ARf%<57R7?}4~fz}y4z z?s?|*6Fz|98k0hC2gfQ7K$4x0b&v&5XkC|5wzRCwSF|RQ+vn+OC5;UQ<)Q}ZAKL3Z z#wue|=QGh%0;6b|qSJ-}Eu0ypN{)e3D;JVhCd+1DdPvFy1Y*GYe?{k2$@cRk{p0sJ z037H~eL!NB+S_`1T`2#@HI!(>=A1BvAYVh8K+0qZmLT!K72*_vK58h*R+k8XOd1jZ z($w)4qso70Ks=I^z@$w@VtuKl5z$Kst0F@|vELjI4zkK_=E%MRn&YUEBMikjFX0(s zU#v78CH2{$RU>Wlbqja3E!Lw3eB!x<+pr17D3c*Nho*Q-fX_1uL~~v-QI06DzJ%r( zu^zKfaxYA#2hgFB>7X=j8h;!YS}J*$HOW@zbw4UvNj6^sS#ZEjF>3%AFtl0M!l6KO z%Ju`nkasimOeGi~{&%M6e}E&XeIv6m1o!Q~Qw99fz zjg#7MD_cT`5p?O`NjaN{Qlgl;jxhi&L8rIN1;`YrDAR%RdjGPzGbGD_vapnliN^sf zK%#06+BnPYjT<9Uo1yk1f-DasW}=RN?^QX`ZuNCCYb|#C;e7i*Df= zzm-T)k-_KK@Hw2^G-3PihLp{u0BRH`vu@VFvBXG~Aq@3J z(<*aX8Z$>9*czP@?nIxS;*_abkIjMkCVn%STPW&08}9FvsdgzNh6}=&l6+NvrB3w` zA;wJ`P@zTHhwxCD;z1bQX^xMu|Iq;RENQR_ z&(|;s_Gwp>oJ)C9(;7!=bZ;XqdO1oRE*U{v`4~wao|pJ1(qFeqf+W*%aTcM^9Kw4W zS)biq|7SD6bIhl3f$}yynP2?MluBix-!B_@iWeNB@r36@ps$n=eAeeZ+a9JzhdL`n5TIiwjsf%N}DfuZ5gApLxE)KF{o%g83B>W2r@jXp_^{<+lN=dzQ5U${w(Qfv~v| zW%qf3@3`#;?yg0IbB|Esm-zVOzUUPpSk!u8?82~^aYpnF^ zX0dXMR>d#tI6Uuj-zNs?8uf%6MM|b)PhphpuXA0%o4cA%g$d20X@$AQ@^#!!-_u%j@W z%YXjMZY{8>qADF5^@*><-Ow-EI{QEPgzg_Neks`nD!aF4=<2~e{JVIe3MV3O9q%d+ zQZ;mAYhNpUloCAHU$$5vtrD1DiKobY@22gk-n08nYf_IuNSLrAQ_tdB5~YrY+^EnOcSi=^>gyr-`M-d^ z1AY>p+U-k`jhoD0nY$}af*%YSS!7cPBJ*PH8uEZ2PrC5v#-P6F0tIw68XQn$GmAt% zJo$A9y1wd~0gF!y6pzC_;!59kb3m8@jHC6%h@LZ&iE-&cD36nu3i!agUBSQioq*+5 zb1_)=Wn-}}TH2D@y^|i@Rmin4@5N4MtBP5-nVo|9cBED{F?i7;Jb9R28ExTVVUg&6 zOSUv1b(Y~)5y3y<8MHrHDG8Y`K!Ed_Kpj%=J-mSr_?(8{xxoQUebyc7Nx|b?spZsi zlAMWZezyzO=uvBL%q#u$jPDlQG#4P>ci#DRziwHa9Xv6Oh-dejw2zy7X;%_Yek!u* zxQ995$y!jKtW7RxsqbB(Rdz@^#x~+Ns7WZKEkVvNU^b+lg7cBt0-n9_At6flOzS?hqPW`xk*{F>lh+3`_ zUrbu)yiZiKM4SB3DR>kAE&uk#Zyn)0rK_n6!BUxX`E<-k{>Q{RrC+~M{~HryJ# z@@;n6iMPE41TphBs;yn$Su}UTx4+%zaCs<)uin+Z@fz`^FI;XHXF*zA2v*Dp4f&EF zzK>qm4YscdVp10JfcP8mypN#>^t8VWJ`sv1cCE$g_&+ds9RVXb973w*IKR!PtVs=v zE9;_9hL%P4bSl3F&biSDxIjUY*xAnqP#&;xarT$`YtOk4yWSi(Y9XxvN|c)kDUDyI zOWf+my=23-8sh5jX4P(h0Iu+azET4qCw+FWy@sfs$6T7C!n`0tHmPcg2BUsExQinE?8I&tf{;vS8!Tc}*^! zl0cVvgw-jZa_$8c2n``&|}*B?+$<(>CGO07s3taG7uWzWpXF^ zPwV}{!48&TW10%QOc!l0r5hc*1=n!#bqpAHZ;#E4dvz(}_Q+0NZ+)TVc|EHErHQE| zO=f8xj+n~>0U@8^*AVyZcwMJ9RG5)A2KeirF~r*~6=75{QJT2LzNYpdqAD^u3)0vz z)#o8c6(flEjwMR)@>7_z%s-Eu^>em|E~n%8Ze8E=hY0YbCsp%wZ%uAA=K(h0A8U35 ze+WHo&N&GcWN(Px0l@+&3ZSgk=bk*9jDU;20dU)6lW-<V&=SXL(sanScJeZH;^I%=PiMKVd8kYit7xW0#a)1hNae?WzZ`lN2^|Y3 z1!#9$X;sK<0abRu4R5w>`+c9j@inQo5H6oD@Mp&(ju(n}A2KfdY3JS4TnL`&_yuK_ zHr}{HN(P^}(VBAcIG-q}3?CKHe}K=2+XoHFMf$E!(#Dk=R?n?H0n>k&bCtC5wdo_f zWqmLMHWAzWX-Sew`|zpg`sKFx;Fd-ZlA*FwksAsEOP6p-l3nynodtECQzWLj=F?rK z&RZT)-%^kcR|Z{>x<@tvzjGXD&l-M|X};kw#n+ zDRO~d)hAEzT624ZdCnfwCgFuE!v85c4@W5c|Bs)&_sC92cGlVJY*}aTy^pi!iHyje zAJSQ8@4ZP;F2ohiKBPl;5dtF1xu)fB2G z%W`$X?&=%PFR^4>hu!Ktf5keIJ2Tz{1C2B3q9yZ<>hN@U{W-+embJ}^yyMpj<|SZw zv}Cm74xyF``hgQG9UWh@Btwq2KN{{Fy&(w*CXyf*FaAx8F{^Kg;U03Ib{B84SFnzu z79;X6;^|KHFOUn~H~Fz^C6@LejkR?_J-LmG)l0Qm_7jy5 zSlI9r1%#X>=eCvoL2cM10x`31O3c3?nC%DoY4r*l5E1}o71$Jcq~=-XL@g%^`8uh_ zkVWefqkA@!Aa@1bra-&iJ5>29HVE>RA$9*}r#s@sLb8P(yY{99hv#iOJ;4Oi6e)50 zK7(C29MKXB*S@b2R^*}H828=&6~o*!Ndf#iwj{ALIN9YabSbm|lf-pwh2V)aVFR6= zNI(u>Am?k-{3$+cr?; zCAs>O_y255I-;wN$B)8f&Okq{hM!XqH+)dd@s{-Yg4;AzP2MNb_z<`lVh6#$%MPW( z#_gxBKPRR!(On4GG#6-9>~OLndrnT16%h*TC67Q7AID=rvET@EZs!6MFa>mg0EC)F z%0dNuE)YFQJbQ&%`d6O^419CfZ^v7ii3kr`gpHOwfMO?A;fI^Ma+fObMz8jLi6DTg z!Nq=avY^Hyla+6S%)27q+BaLwj(KZEytSXvIGN|}e09Ttl9o$Wg!3gJ^QzHa;XVCc zmT~x8nOvR-=6wCZJSm}`cU~&&nMGh8j>aLSE&4NwAq}IoTU|@EgfUQbp(eTLGA*+^ zkEztIb!IXzZe0DdjCNU?G799`{V-{w!g^>(A~r**6@~G=Lx+0Fm<&-cQJb5eYqhx>8+Mg9vM-Ym@3@&dD4>aOJa^Qi%fqBfn{BS-<9lmK=rUZ*`YG->9*|s$6*$NaBA4ah~%LJCeY*G*G!F- zmZpA*gP)Fr3Z2`F8u>Efq^ka$U{FL^XD$5z)p_P&n&_PP#_*Qo@+##ues4>&$5@D_XY~J%x#*H<#!w(@6`58>I8kvmY zPmU68J)-Hd`5w{;Glba=za?fp%QMlx@xbpDKRCQJowh zQra=X89ToEn{F}u8)eb+i`%y5VenWszIB&?lkDz{-}82eyK7I5|Gqh?;B7=6rDKDs`NQ=#bre7gOTsC*8c#V=4cj^ zu^5V39^dCrW;rX9wauyw#_bvm3f@Z2%w<3$uFon2cA&9}wLw^0ysZsckrXeITBue4@VtLD7 z$dC`8+VPt#TbCE<_0SL%gl9t!rgcFiU$C!gb?SfrRA6`}A?y6(a7zx?>5Dh3S;BMKEE{^-Ba|=NZxVn&c20SC!3=uj$%lB)zI>x)3^X^O6IwvL2aeWY z?cQ|ZMNKjOSh5@LOd+LRyZ6;4x*@9cI$_Swzij(sKIGW`e*h0H{*WZyGjKShZHRq) zQC8720k`5zHIYT4R)tL`{OF14P&ps(CkMoR_4Mb8FJu-WBtTfHg#K~a*?CZZppd8U z>5Z=7@ol=4M*{%DBCx>%cQA3-#8vapxu$66VQv5Dc`Ft2!PR^z>KVjzPw>VHW<tsuWp3CF1F@Xikxn-;7*ES^Y4jf zq3#)g^($F(q!v1vbb)9qS!SzB@9LVu8S?1JIfSfo#i;PyzOsNq07$z<&C=bXt zHYy5eWOcX9cpoiHEfjcRq2OFHJO;P$s;`pjnGKu9e%QtL@%NkC2B|H)4chC^*8# ztuoa=fbLNUY`nai1JNtwu1D9O=%QYeCg+oR2auV zz!=E>R41nO-T=AqOT$gJ2a%nh$epVgkj7kXrACB!(EPP$U~Er5tb9m&f`7pydv)6( zMum|iSnamu>8;kF)TSkq7B}2CFbLC4#HTkRs8I;-wXv1}^h_Y8!n#IVZ4YT?l~^^o zW;i9UUUH|z-r;+~QEf^0IN-IX=1bC*?G5>2CJS-xGGjh-O81Cvg}pA@DhnN4IvH7G zPOTNv@!4&AA`0ozMc%hZv+c_$yuM2oliE!{`MKgCQ%>DEC);VZD!z?p_g>?QH{kw2=I?|2 z56B^<%QbJTi4Bo7yoz&{QV`xI4C|2mkYoz<4Pa8hl2DUEa+d4Xz8CN3KR3YK=sb&Q9 z{PefJ`7ubLv_j7ePx=jBc|b@1H`yY`@{R>o5Ew$&b4ei@rcqqR1=1b=PSWXf-6uMrg&!8y$n(snri21uY8!OwFc& zl;6flIo;q&Rbk+~4J2if|D)JiQb|f8b9se~nPe>kzTX7I21fw}ggJtsE8>Ln=2+*S z>W8rcBp4tX`()HYh6JkvhSHep?1*c-L(nZuJSdp$V3KFmFO%!X`4_46>k-8Fs6?S< z$K?bfXzDtF1bM$hxKB25QCLs`cJ)kis|R8fNw8f+thh#x36@B9aP=Z}8{zcuJvvaAMgo zxXdX>t>(Ds=Xru6KI^|)2)ibe)|cN_Zy{i#DO$8HpPZJ)o<-q_Sj@3D0P9bCL10v@ z2*g_)BZ*6jer_x6vb^agKW!GL8dOA>?N0r6FWU~y>Ygm(iL&TT@FyK@ zZ-jlU{kI|YI)f1HHFdK*GHw}uE(-mSaV=c+ zqYQD3ZI`Qz9fFAk=O?=xjOHR}rAFBlz7(U)`H&v)C4 zB7WJK`??b4%KHRoi`y7vmDv?r8~mIebq`AOl2U3T8MLs2TXlPK6Z~i?7Kl4kR70si zbJpYn-@(s9nQN?0T@+HyHg(x&h(+XQk_3yj|1(mC3*Ic6aj|NlNHD-hK(-_vurz>C zd~&6~@%F`o6(29)PYLnQUHz9Go$mmg{Fk*dqk5l3vhO!jdAU&g_)@m>y=oi@{^pX9 z(eC>QIHJTD3VAWLhkSB>2q-4bsaq6=^g3FzYP213&$lxA+wnrW7xCM{Zdn8V^-Q-o zDKO}T$#@u^0HaBzdU@I5iE-L+>TVCt1HAsF{c#%D?|}sY7G$p##XZc75W!*w56#0Y zGJI4U$s|W|d-xYT|K_2x$M}wW1+%kf+HYX>-8ixp%!I0PS4hU{pKb-ttm$U@F9Q*q zwhBP;=)?H7O^Sckyj@Qo_6H6d$r@c=bUiC`2gG5U7hR1<#qFT&qOM}RzEvA|X-m!R zEE@Z5X(C2?-ww-AU8-XTyX*Zls`B@2wlAj=G>%sXhtw^$^ehH{4?kux9u~!%I=pWW z2v))Pz0Ws}21afBWb<>s1h~Z^_WyYW*x59^CD+mYXX|G6C+fPxv^M!M$%uVSM;CLT zm5oPGz~CFK&=fKvLFH5Lw9P#mP!7|H7z5&5C-Pv>jRMB;8HS&3F1GeB8~86)K;K{h zCMY-4%J?$hL{B$bQA>b|%^yr5Ut{?NP5efnm2lwHGRW(dRb2XBbD+bD<5x+ z0XmSe1LLlA?I`D_c~nW^h7K9SXkQo=ydOwV?~Nf5vfL(2j&{k+ffOGJ-e*kO9t|ttd=8ipP)_Jnu-;R^qSr|f`8q&UC zx*?>v?)|w=$h|ADB?P?ed~7np#Ahn9tb4EX^8MXaCGxh9r2Ypm9BT=S{_P#Rxsce( zK;MRR1gu5*EKqsCSdM4^2!azbhuV8xb9ca zFKtN%V<#Ol5Mxbv7ne54A4~)G287lW(g9oP=(^;jt@!Zk=K;^HMb{$XW0(ZnFuiznGFPW6+P~gqW1)yo`;m1!6_U@@}8m3w+&YpwF z*C*5i=TdnMk*m9u-V~vypc4}o_;xHQk1{wV?rz^)_-Bho*RHvK|MUJw6De)I* zJ~#z1&Fp1igEemxwzXU)iYWhfu3kuL$gs@@{O7#zC6TTdLLb;zw|>-G&vcJ~$UR(x zHXIR2Nwm?6e^21LQum5rHv4H7zqSI+mtB(HBLbzh{YuX|3mJ6W&;;&q2E78l(v%)pM`b?4p!*m%f*)z~@Fh~|U$?lSz<*#1sT#8=E9 zXWkwo4If%-hi~O-@by>`kDvNopwE0ya@L1~Xovm_-W47GNs57>VA86;t-@GcF3P=7 zPXxJ=yh7=#$-HGU>+~vo36^F};-Hh;T~1nnF0gZZM47Dw%PnYu4lcy=ZwcrfpfK}4?_!{j1`ofRShBBO4t)^Rm_dZi>u!m0gW&X|ATK}DI_iPlKFqPwhZjH#Fb z(BI$EdT+ry>aKEsBYw4_j_h-2AnL2ryPa2&mqfM_hF2Yzl&c?|9c(AN=ys|yJ)jQn zMYr-njU5N4D4Pg#-|NEY&Hng25&sQT@_zEZE>{moKx-c{JM@(xhq9}L))-aRKSM$8 zx2jUB!sYmuk(o+Z^=5G**9}=ycl`67=23}lEr;ob7jiDdowH?^oq=sm_wdB{^n{PS z)D__P*YcMvx)y)fvhuSwg2eg6x!?Qz%g&BuL>=Kh13iVk-a;5OE$Aa3fA6u&B=3H$ z**XrpUGW}zRJyx*SI^#k#B|u{*3j``h1`;JDEA{NTPljezz_T-7pjhQ2Ti_$U#O7= z2$9UzPOxuL0G(21CN3+$K8Nx#n!M5Y4p5+ORiNjF7(mFdGq7PxA&QT1<{j&AH`G|^ zT8_%DTN+rCt}6x|?Qm}H&=B!+F$73$iX0sZ(0Rm$bUd~ki;Kr-6rYGkWq4};KW-d_ zSvnjIu^roYCJLP!{vQB>8Qe6r84UFAd@XOMxKcPU?lvP%+b9&%_4vt(+rh2v?)cb@ zdTeJE~GbHFEx?mjrs1it5|)-a(2+$N>YYUAj7WYa5keuNcz zE(8wag8J5eDmVm2SCB9+9y`GkM?z+X2agrLJ7i?m|2nBGa|-MQ_i&;jV^pFGwgYnm zjG0KQA@tAw2e1y91Rr4CS9@@yrYS$*WA+iiwAE{18>~%HQpPwQ(Ymkku50LP+dUhu zod(2(2RI0`e0bXIGu-ag)7pRQWgO!uU%K`3Zl$>M*Ubi>Z_(+0v)9=X4qTG#eZRAU zhE+=NPU2+tF^H2B)vFp1w;}wG+wzqnC}r+9%4chQ<)rt2fJLV8FSz!qre@s3Li#ey zFqIe@wB&f?2z?KIN72J}@Xu#ZCoDLn?(IN0oEx5oZeBUees9Jc=ID!mp>GV+XO<;C z(+d_JTsca7N&6PoyN#^ignyM(-CP~$eQ7$DEz-w!ba*+MR$edmB|apHdw{|xEZLb} zJPSuazcREdcBGYiv%AumLR6!+tF>!yde}_I$s4zuMw$m8XUame6?)`09X_jzZ<-9k zjD_F+)hDzA>`bSmMlP{(?vy*I&1n0+FpjA=_3V6*MUW`+? zV4<_^=pCzf*im)CJ3)}gk7a1)oj66C^H@Z!{fdYHHh2B1D(jjlI2rT|q|eUn8nuRV)^C=vIAvETY1f7)KaiGtl9ODi`` zK)}=)mvUy_T%?<9`2mO_(&+*F@DU#0X3?wSvf9pLr0`OX5=z!1tC*?KDwH=*bwNhe zKB5o>zU04|g!g|kk}s|MB$Qeu!i^)`LVF?@$z&wLq#=EWl1H-2e-V@NY`@7I^1aQ>zHF;D8h%!3J7gZ9Upu+2X~8Jkfp?02N7AIQCTnnifGir- z_f)u>aY+4P(_2(r6xq2-Tj}{wrmcIQreOyI@}O#a=wIK+jM&P7siOHR`!n%)+9D!W z0{^tn=DT8Cn?&0G;I!E?1`g8`b4BU!l06sT;09);+&hYtV8_@K(gTGKPRG< z6W}<_W)XCGd+wpCeYkDz5A@dHD%v)KErx~dXoQfB#tYntZfn#ig^XLm^wQ6WhHqSk zm`MID#5p^Tct{QQLfLjB^6=O#RMb;Iqu`B`g&r4rj4zU!oaycbpj zP~W*Z1Vt!YVYH=g~;juZKYK94gf3m-WYSn6gTTl7&! zR09q62Tlrw3HaBAs-G1a$0ZA8q-K?^_f501jc9na5>~IyKZ2N8jzKkDDWL*lv~x_E zX^2w6h`3i3IhLgip*i1f(3txbk5qLRCdIztScwLEr(ur(MzhUYMeodEc9uxOd`$8^ z!2>>JB;lph&_iw=E$iP-Q;wn0dOAxDP?k;^_uIF{oq=5L!Fp|AKyyNfKk{#TXVO!{)hBc-+u1sauAYMqlx*Tc)Kyv=3!^z zaQ-!0R-(XY{;-`9jl%k&TT_SNp0HQ@dQqb(EbcikiBlRvWN$P~JS*rr<1N>dE{W$D zU~$FL{*NAIiM^@$tp$5k7^-hd6U0fiN2^CFBv2qo_vo@=w=9cWyIb<%%t^q+d9gqe z=*urX+1dYgxwxNymO;r5?oUi0zTHpA8$R?5?olR<`P&KKc)j@`9QS;f6a*|u=!Ydl zq0He>)sIumpvw+%$L9k}rk4>|ob?G)`_SyMqtB5v z(R?9_-d5jlJT~}neWZ8jajZ^GFXU2Z=ng|pLc=N zt>gPH<=3VC6F%PpO1qqIcjV09G#Iv^(2h8-4l5L?W9+JCRqOZ4k`aa6R{sTItpPL?;3Gnqy3Xvow zHkw3wZ{aQ$5JQj0ICyNJtJ*5rvtg{iyx?>b{|aYNG$G^OdH5=ohT?{i7A?n3uVIu% zx&2EC$!Y!&7FNDrI-m)`efS1X#U{E56x`M#vnb$|WkIWt_1=H=*Rpa3#V^I+cLhZ)I8fr9rjkO-(f z3_*r1anGZKySv3>L zVIf^me#%4bNo$CZ#8WkpmXeJ{*HSQttJ;`{+UxsrDv|6YZ+;We_%Xn?(ak0i zytJ5gcDdMJs(=#C5dCwarO4g)^|V7kS4Vevyd8p#(zx5<3K0S)d+wKNwC^}IZWCeW z;dI3E$1`7oQasNG z@FX_%bv~5Jaov1Cx@#Kv!OS!7+Z2jII5?5#&Hlspup~xJ$ObyFL%qT8oFm^>d?UsH zay-b*NIrYMro0?^ldI$e60x3gyCT7@V zygZ8UN*(|J8%}TLDY5cDVYCqzjy@Q5zbKX|L{NDiJr#D@ZF;2O7T|!9m{vj%&t>Z)G;P}njA|7tD z;v`E7pG6-;UaO|?3V4y5C;I0?rKyu*h`W@S*c@di02ysUrfgKc1n?31Wr{!5W!A%t zDZ<5@VIp-cqbp_LbiE9Iz@|kg>7BVvi(9{ zW*z_q>;C}Y^qJP5%+UPmtk}%U+CJDz6Md^F_rmqe_Pfdi=$Pc3oh<8FlT>fYeoiy8;GN11Z54OD7w2UA+X9%)v=vbS7VO=%ZcMF8`264xBuPOQ3TCr zTr}Eg>qoc|{#}-NZA`8(F9ts@p#Qd6_w!fC-8v@@Y ze2*a3&H8nSAB^HPjZzt+H9BwMiMNZYTds2g_kiYbZ&@0Ld0&y}lg|nas_>2OH@{CM zVGe_1;%&RSI_{}s)2sEo%-)vPDq~X?sLbN+QWgcR`u_-3;p;djlU+gmuAafco?gd# zFvg@uJ9+V7hhRB_w-73FK{f#|0Wq(2czQxJJwrhKO3J3M#js(%x%?c4vn8rhLYb7D zgj@-+mx^(LZL&+ru@F0sW7n2V*2jCIfb-^trh}B}t!V(E}yF#N!5+zSl=@HT1F7 zcF5DGHKkbUEVX>&2IJ=P$+5(Q9<&?Xwwx%30t&S_qq`a-bbNnLz=gD> zE;w58+*OP072@F{j~&WBi7-yg?>7wk^!AZ`ld(hDvBP)*iT^GM{|wmuZka;?Z|m@H+@^nr zH11=#20q4Mh^x!E0r_YdL!d}?si&a_zxsiVnf@C|1%{ZQJI3BTHEoRb^*Y~A?Pjd8 zlqTaW<=PM zu??+_+T$Fx%g<=Xr zUjae`W9rYHR8*ZRK_UCyubl!qMz;gY$gR0jr$%!H4pur2zov8g<->4K6(gd{jzceA z9$t2;qLzw-@ngN7E<$^2USGcj@0V@$XG3$$&;qG$(I)1n;E_#tZwvKX98tx>qtcw1 za<9FX6G}RvTSVitd@qNj~ycb!Je?MP#wWJx5QzZbUeQ&_*tqrB!BKgLYsfp)YYvCJT;~shjmM1Xgw7>6eZJvsAn2p!*W9ELCma zzECqPCoi_#OXGVH@++_bSE;ZDMgs?vzNL4HTYOdbWGCMF`87FNz4j8wzLwMhUACTV87nw!y4#wbbOqrEjv!D-iqQ;W@!oMQ zyWK>MpPT1y+Ne-CS@=*ermr(_5Dzg5A~su6Z^eu{IhN2z`RBxA5jgT%jEu|NC47LP z2N|XaQ%kx|2=(RR{b!qRaKzwc^;e_zcWmf%IxDZf(-7M%{%EKJ!ne}q_i@6#R{5fH zAXr?)hd{7+t>>eMiCF_fNr<}r)irotJ3WDp4vT*HTGkO_&A~ztuUwL$7*$KIh>`@x zQzMDCz%)(J!N7F#&51=!ze=AAxuJEMu2^(qO(GM@8S!p&!gw#d7hNaya0 zxjYJvt{A(;JJrT*wBbv8(pA^0Lv&Pjc~@m}MxfvNjcw!GW_xr1ihwNwKP9ZnaQP-j zfxg)CAo}Sl4g7hVIl{ZJKuED<}--hWS%Y=1rETdky5I`smBsD3v?x{{(J8ew^0}c&k+R32m z-IK=6YzD+KXS}A#A3e9#<0dTnvsWKCzi%JxzS*+F5rq@QoP^&c{1R`+Rn_FdI%~kJ zan4sYRA(Av@PL+x%#X)T@vEfy?sZ*2@O`~6jR{Ai!*;Xly9Qy-3{Flutz($&fQ8(i zoz&)|(R`_om`Fc^64k^S=V$gVN@($ou~%f)RVyoj|4`3NmfZTahTSJmyaYzfTE4Rm zcyw^bboBiH_N(s~eleoKG2SObK;5R=zq6@b;himRq;iXq@Ey=bcjOiNSVzETBCGn3 z>X((=_x=<7Ap=^*h|8!Cx1KzH6|f{2+L?IKd6(buaISB!huR!+z?;9^ZJh%SyH&M< zeW+iDVxX=p1Qt8_s3Ms#$J+fs3vYaF`IER#n}YuVyj=6z;_bIR7kYi5jM1qex9li7 zKl|pq)mfHd2ABrj8sr4W_o*eja|t{o|I{Gl_s0huE;QnKUITuAy$B1jWoUL%P{4gJ z5ax&_x-vN@)%i5t+G)ilnpEo?egGVLu^T*^$xRo|6`uo-h;qHM5OeneQg~i&BtPg? zZ=-0#Ia~)i3-i1|YAmbJrH#k&MoHN-I8L&-<})8M!MxO4h&VV9iN)arO4+^TVQ9Lq z_cRJ}h_}Tn*nV%awPmYDN3IU2b6_H=rM}mUU`Hx7njDs{8;;n`ZbYuMIIw+7|?)>w;@?9@|(Yo=kJV4Dn+A(|Ec-OQ>(oXC*o|Q$4i?9kP>j;Y_guM zs}RXL(fD#hMDH)UfYb=KcXtv2Dr1{}Bzs+Aw`5#g>sr>GYD|j$+VjA_U6Fb)M`xdG6Y;71p7cF1C1686y=So|R&4d2~C%}EhEJ^`3%9Z?4prlFth%WQrB7t6SLJK4)$18q3LsU8sKLO)OnuLAIVoKoCyC2_u|_$+O;T4wV-XF~HH9Om@)!$4iK)`ho4IY;OI1{th^lO% ztvP0Ye(#4#7iIFh$D4*(rK_8{$ABtP&W(~^VOcaJyvHmQ<8(h;W3=kQrrmu7vi=}x z?n024?9Uf7>bVbB`oaL-gez?r&Qoh5%c*UcxRDA;MuU!ICSEU_hmR`=hz!;+Rsk9f zL*}L~*<9YKr2u9ovM7e@0sKt!3-`h4gjR1$Shka^5o;57!e7LQEfGtKZ(FtOmK6Vo zfS1c0v=b-^Uo(NE!UG!hNqOS*pfZZGx(L8;AjP%5E&=gj^(pO>7$=CV(X-CJ<(FlXS~?+*Uho+JR*ml84tJ)XxcSdX1)H*1pkonrvnhP^^s_TbmON8`17bCpXms>;MBYE|Di3D~@{C^1a5!Nv9Kr><>vZ&S&8UOm| z?V^;+a9ZuY?gx>3hBZ+Nj~#?Wk*I0@MEpQprgk00PPhE$#*r0?Iv1}nyFwVLoNVvqXmhB^`|G#VPEO?+R_By>&`z>0 zKj2`}D$+e9tM3>+r^nzaZ2!k#S)=?c?hK`tFIl{O^NWU1 zdkGr*L8B9EE}bSc?H%9NKgzcCiL3fOYU*;M27gHp^DX#2d6>Q192hZcG1-<>IE&Qw zP5pGuD>->I#FTH8^|)amjBKpo714Q0Y+Jqnf|YHf4}wY!U_4g#3^x^b?AH>byyQu> z%@j&zrTrC$_`P+gV!ZZrMWRbikN^eHtXua8vv#r(Afm$EACG5kmNogoMkPk+N=F_T zsY}MS+Az!5lzi9{Uq3S3h;d>s*D$(UX-xGQ=4jr@$w86p*Xb>jl?VD*i+!83EijmA z^RkvC4KDU0!S*la8L>`Q%)TN|t^UV`GTj}`fdZ#g5w0J+RyC8j&GKgw zd13$uwk(5Db$M5JnM1uXMT_F}$+Netd*4otG*LupoH@(0k9Zcg`?;twlk-G5VDTP6 z2^qmT>@;w6CY9-~F1T6A2KIud4VJx<1Ica#i@7tgfMHhJ?>U^S6l#G;L_` zaBI30h~O>PL`$kdFo%AIF+$`9h;stMmctY&E4>9 zJt?XjJGm7VSA@ndDxa&X4^^ zcicLyL0hT|K@mtDq+|`1oPOA*NS&n|isbb$HTlkd#@ziZsu>v+2R;HxRs`a=$d4dY zH2|#fESO}SV^h9D;iTvmjT+u&cJBQ9!FXZy0|JctQS|`h2m!~>v?=mHxn&1YT%l(^ zKw4l(Q+R6eNm(|wB|o5<+;1}pN`Wo+r?CRi?SF>0pap>|C7jHG({-ce06HM9@`JA)3Cl$@t>p>L3<^kM zg!v-h{pfX;7a&{?%ov*kHm$!~QJObuMxE%atorv7i3p;Tj z-%aJwgGG?YfS|RZ&&CxtG$F(_iTLj$?43{>?y{LK&t%}&RcWW)Q$RA3qQ;5MGl|qD zdS2+0slD{WUVo~j05bx`h1F5vl9d#ui>6Hlg59^gsiQpJW+Hy5jNc^2OI9u^KSU(7 z`5BBy&Tw8b5@z%(<7)-I_F9el-&kC4c_+iyMGm|Z;ezYFo?_M-XFw4dJ1>n@wG~t7 zF-~jHE?|#qj9Hz3t+-`pz{7fLa4%vc-gfcZ>I)a0_r*bpRbPO|hx-SE*k43(mf}*F zfX6`8+R1V3CZ)ijJp1cP;qC9~+Mhi@2Ox3P#&XrVp4QnE;<7epsNNO9OS+o!qC0o0 zC@>Q@X!z!0Qu6VLhVPgrGsdF9sVdfzLIybRAKdW6$q~6}!a6+OO5gXsK*h8tgejfx z!@vVO3Bu`Z@%WH>Yt!D>I$W%(t9hgmEs61C!A(OL^iaW7AFE|?U9-UbvDHZ1<9mSz zT2rX7Yn1=W(dv6Lu_?gBB#Yykn(QU)Sy2~`BC?8(e7vfscI|A6Z0l24$tjk&NzVI6_KlA0tdll<}rJc0$p^%$sm3+%# z=I@xigp4fu)Xv!dUJcYlMQgU0tnz*uTb1{AT5*2h^q`jTnLVWvBZ{z?`7D3;5N)4W zu^I2-FvY}^m1^}~UF)ddDcI#6_m^?#F}FfhVCgSAa}`rX_}0*P6s@B-4_NQKki6!+ zVruEe+lt+GmQ622{K)3!W;G<^UnAOSD6(53K|+;l?eXC>FdxelbnqFDbTAY#7^hIK z83?dFMu8rdT%2^7mfOl-cJPl!wQtXxwBH{1|M)c|6|g|lbn9e#eYdP)DS2}oyou`d zZkco|1g*LSW;W;#)=ym9_I2U|2mh1qiA$=|CkAe~_uHD+okt}eS#;cY!aYqZ z7@hJMY4b=;fu5%htz7l}P{yNIrx)_oO9L5~K*u9@fY4_cvJbX9Eaj+F<|BA`+e$}w ze^--KzjI?K>_x+huXyvX+;bJ*?(Qd5T6=cDc;keRz~l7A?=O>G?xjo85Evg%-W7!9 z{01$-jCFsz()Y9_2$xiC8FE~85G!n{t>w2y-ndvj3EGs46R-?OiXDmGXT%;%0usn zXU86-Om@MeoCHm=F9wInChw2O-1}4?8&+NZu~;BAj&nQNfJx2j)|8g$CJX!e{t8|( zO0sF$S)!hqhG)%vG;Mq44w7@%(r_l#&MyX{U^_E~*3};o-T{8%uwQ{k`2%~O0>AGF zTQ&Y>d-t{jgaVE4#$&AO?i(v;;4!k-eQp}Ra`!BCOG3{`1m2{~N4M1PcNF+J&vDjV3SjcxAaBY=#c+M(Rqfm`Tl)4BK9VT zoub67U86|UtQC6%RWtUcs8%Q?)U1`Fv16+}TWx76Q6olUv_;hl)uO*@_5b8~pEtRW z4)xAPHXjry-ZN{I?veF{Knnk4969Cu2|3JzA5CIc&WV^2vJ;1KUbgrFFNpnFv>Vi=J9GeOhY^U zxs%6xvgP5k*2o9g9qMwcd$alD+?rQ$>P;sn5_Pk1Hk9y@{axs(*5yIgiPW?2>vzH$ ziw3JOzwsB+xAqc3c#DEO#c*@-sOVfvKdN+nKf&^8b1}12kcHltZdNS2Q{&3t+pZc{ zUw1IyI{&kr+K8r#yq7l4&pPs6_;?DE_RmAf`;+&HTj(`T%WJMZO(WI4p>B?FeYN)A zShl0es_5iL{IpE0I!k)>yK`rYFBD2p#XlItpS?~v2=m*?Hw%+5HZYNMILk^)NH3px z&7oVJy1Eo2ec|oiX?m53Ue)d0qrs$qbum3T+nwEhgH|1_L3IkRZ&CzAx?JuT?>oIv*Dw(BX4lNkcl+fwwu)AYQOjnVtz(2^90lcyvj{rIN|MF*P=9QoTt?OS-j*x{<`3sYO|a|VDtm0PK?_> zbgG?G))XJB(9ccPOZ~6)2Pl%J{kq#rKPvtX z4GeV^@}!6yEZ}F4=i7@SKkZC~Oy_P4>k0J)TvYsVU0i#UIpde?j#@g+KslG(5?Oks z;@W7b`=`P(bT?$A`V9%n+X%gr0=oI;+ zQie+-19T*?)8csgJ||uc18f{v!@>G>d~1nxLM018*o2fGECl_K3PQ0-2M7zc+C1SI zG^@VO^h?cAzRDa=Bp%!zoE2*HuOaj)q^agXr zdz(DpG=_2(Oy70DV!z7YbY(=wO3Ogy>3*$i3Jg#NNtOYGyo=_P`G{@07S;o2q->~xe(MHHbZ&BX{%fO1oUpqFfeMPU8ORn$^7{i%A{ae@#SU_AidMP8Jc2pZI>!ox* zaQI6iE<&fOh91T@-*oKRVLf7$?;ilLXX(i*-s&-b%nB8rWu=sU>rv)3i7+(-(T*+L z?_?x``mR3hs7{RlOki+ANj~g!kkih_6eEDNGB0x%P}0!e1r_OKgy62W5Jl5(+Jm6% zr^pZk=NTQ_E3&hO$)rQ3VYrGep_vwD6q~6=@I$_xhpEv)%Q5109rYZ0nPvEQq|jcwL6 z6;PA%I2p%VGWYsFjC0#MBb3LmPTtS4KKa;K&rB{w!@o9MALikYYk7_WZ-lY+sZ#%2 zY;lwgMhOO)lrou-0jDc-N|n(7Q8*QlR}`XzH081AYLtrRbaP7oO4Ms_lBx(U46s^c zN%qItCHy+Ggm*QpG09qt2S-yRT)OMO_V5%*sROnqJesel*jyPV-vd;!8rlT8XC&d@5~JS*w* zK2i!!RiM?ZD%RXgCQMKh4U?+4KwC4t{L5XYyt@=T6&?H3 zLFZ>3c+ZaQaZoboUyTjD1&NbJ35{SW;W zv|zyK?lCC6a$|gK!X&TGv}k231nG)9ErTY6Nh{uX*>}Ifnka z;xW3AelT&Vb)Tzs4LSN}`Fi7XY7(18_5yP0U}6%w-6HJJsqCU1;ylt|TrrdrMAf2Y zaO>`~ATa6-ybM~r><|9KQw15;-N?<1J9%EokUz{y66(&y-T;i_y+kAc_>-t{m$CPu(h?n03kg$g*a z8<&L9^6fe0pKzTMxNl=qEMAw8$oh;b)P_;tXqz#6qN>?jm^B%bz80m%l$$$Z5P=nW zfd*eRsNu2M)U5 zpl8zWXk43Bx)K4zV@6fb^~px2fDlNdUQ>Y-S{khL)7F0k@e41dsm40S$V;zk3|HlW z1GfqSYBuq~_ej^MUS?sAV>lzI^3>Q6S6-=TRWrKMd@ydVcp&BqsCEYek=MhV59 zX85I|>5hqNelli^vQtv{PR*dKzzar|Zqv-bJj;QBuM?@)KN1;WZdOj^o6i!kdOP{Y ztBx}Lj9Nsx6ab_lm5aU!)r5c+g1?M;qe5IT0Q`YbFT|ZZj>Ft}>xM zv${Q33^+I|B3``c>Wlon2s4di%fj;%s zGQV}g-1C@}>vA^)w@W^_TM`LF%N%Idcl~Wctzs8mUqS{kS5YGoed>MJ-1`zO!+Z~n zufs0&)kGdVIunh}dJpPq_%qV{seOTE_eSp{8_r0^rUcbGBBZ}XAXiF4{m=lRlY`bv z+_cL7&(GZ`-I+m_gEuzy?R}%?{w^Uob2N_<_O#!b&wYA2!+58V0k^6CuKNBJ%DOq> zZzwNAd(+t;cXuO<@8kOIwX23X{l=$Hkz1x2>_9`K`f3uMndud~QFU$fQY3ScQDN?apM7S$hD(lOx9v&`;) z+i|shux=e>-q4}TsGM2TpKX|GWsPS)1zs1c*KO82HtLG~J-p)Ozo7rS{a#*@18+9Z z8tMP9kH@)J^bH=Tz!*NT#aL>^zI7^M%|&Cujh5QUo~;_jV_DK}|yaqqu>LndAQx}c@B1J`YSfGm03 z(7XJ~ks&BwDd^E~SeMp7_;12CBNsC6(i_>l&~{z4(iHc(?dmDpJ!rQTyLeFSC;Ps( zUCYovZ`!LSTSDaZs&{gB2-+QM*%rAyfPwfUbm^O`U+=ssx^v!E^7>!W)Y4HX@FS<) zD$e{IWj;GT3T?*y$$!R#BK3^0NYQsFTQw+)Na1OEDnlP#BU7UjLTPbE*XYA z4h*5N>+Z9DxU{?fwOM>+HT=?U-1}~!ExFY)YdXy>g|V&6=!+`ass<42ahA3vC*ys) z&IkarLxiQZ1soO)#AB6}E9G`GZlXk9LE1~BRTP!Go0tovZwOu_CG(pHM=%5M&?2pB zgf{~YGjCWvFToqBMg4&_fmyD<^qgQ%wKmGX>t<%e`&^G0kMfZCemP>>TVuW#scU}h zE@5sme)sHRDwgwUHdyQ!d9Qn4edL;L$m-z4?%i_1wVq9p(3gId>#aHQ)VR`R7~;~z zHFVd$I5>|%y=389g|v-m?6$9#=-bqNU4HAxw|PRpSh^C=+Y<;2BC! z5-K)auk9ac*%X>#ZVf&^V$)ktRRqMm|VHYAkm?WecePEaZG0ojbIq2_=~`97j0|1R*{*}ZA3P~q4v zbdlS;2aX7ZY0b3zT@r(Yyr=E;t)I8wT|g~Ik3w`Cq$%A?{u!bBY6)Kl>O2K^gs|uT zWG|v`5`LVom#+Rq%$%++Uxc|c&Kmv>9`j<0PV#?$EqDV!z9aMwmh^A&QO(}qMpcXd z@K=F5BRAd)qcTsNt_w zY?1-H9DX?<^!hFPUcFJ`}Q8)eHoA>ry4^?&_)yn@PNWXU;6STB! zPmU#Dg}YJOO>9W09@08)oz$OumP$SFvMDc|E+zdOo=_zZKg%-S@9U-(n}+5!dH+Fr z2a4IWEL&A>sdOX*{s+)o9Pu}aGyifhn0O>vl}b@R+|yQH=&FBh!&<||8|L8qm-lis zZvw4l^(@TBH&h7rS=&>k@L8(I#^X74w#bd@zg0J(zw~);r&0;XhfOUR-~6y*RZu8@lWh8w;wBF7T+xcqCL0jT~W0q zpcFH_uKj~wFHVHB{JJiHLO4{|PN+&;<`%gpMqZyK+OwhoH~D=&KlG=ej29!d!DA&6 zU3}ix5{s*8Ode6Sg(AA|^6tv*bBz)mT8bA`Ja3f|RBp({9PL@wKPIp*{AxIn%0CV$ zoSKxU;ZpT@z%0~DJa7W1eN`6Q807B@{A}Nk8C4VZcj_g3JRH^Th`U{D6umCGJ1`&p z3p_>;8}a+E&mwD1F+PYTB$avg`%j5zOC2xfMMq4EzI+}PzcX%p{8+-xw^$@C!8W!) z$NudE)tUR_nD_S2V>y?^I!xgTv!2+#*+N(=5vi!iI=t=VvS~QK+HvndD7E56KJL}R zsYL6%>fY<(o88v?V3FdiroA3hQQ~5Z=;9$qXdEr^-p)6Z6 z)|f_jvaS(gfq0o+&T2o*#p9P7rPkzPP_ga_!ehS0bSB`H?|?LP4h}zirE1h!-}Eqr zm~md`_juJmPVIqp2fp@q2ecJ#Oa%s`ZH&@|GOAB1`t?q8fz}c5@b+n1n_|uVCOOl zE-MYEB58eZ_UfD8fnfhst4Dzp8!@$}I8{E;%0YPs@Sh<=-WYhQ~^b=liupr$=@TePJ$< z6q3|BX?0I`|1t0RLRw!0#}k^1j`(WznMKijU>b4ypp^E{BK2IbY8OOe+G&40b!Z7! zlx>D_6mKK*flSpJ^mNqlVKHSPB8BX1t3qN01F6T+$4BDSSZKVVP&UpdsrECUc=DAZ zv>gTUWWeb&Gi>^47T35!pM>R*3KQ)PCdY2&C$jtzJ)8pfO+Px_*EKe#hk;?QyzVb< z?UTRGIonp7LwG~0_xC93Q|a(__O{ia;i2MIh0(k>%Ut?kQIDc(!B(SnzbZ3>)hEPg zC;kM331$S>Kbeqf0xEVkMBLN1OQm2Kn22;r5|*tS1~Te{;UB$!vgQNJp2SD`;50a2 zmF+|!ShGT2<;d8qmzicqS)O)D>+U(Rg5&V=W5dkyfMFojsjRtE{H+<;KZ+0c^fwlZP=J)^*Xzv=}XK_?zojdhFrMujymxQgmh!_g|&Tn(32 z6J0~D37;aXGF#5bY{S%dtOu@&ZWapya z9^O9{z5hg^Ge2}H&(u5qrM=+FK(Y6;JI-W%y3D0`diisp@;AIt3QFc#k@I~pXT zQKuN_!U1J7m?fS(UhpSL_%Y;GHgT>DC)XPThZq)ux(c~mV z&Bwpnt0*PM${N@`X>Y)7h34kCiwmZKY-!cXfs{3Qc{L@v|I7(&sSTy3QiWyBHv$pTJ= z-I|2~-Jo(J9j93i+Um3J?&Z6maG@yeG^Lty`!F*tK)4>dT>b>ygfA4?6}(O}O+$p6 zU7i>g(xS`iXakdVcR7GE{P)kVo#v=ouaU|lh(Lfss!-11&Qm=XiY8IasT+Bzvc{3X z2!gs)qhJhB(xi$h*7=MR2FY{&Yjc`wb5R|S7q{?|aW1$MX-QLVwmoY^b}lSdwIu7w zGP-paz@*VTXyZdxWT8&(eUcr}Vv+)%=-e?0WRavw+hcVz$K_bD^gz*e zobMv}Qe8<9G^;odu+i~K>F_c(jIC$OzhPTUe@J)rF>M(ww(IcBtw&4>=6Jc{IDN*A z1$4|l^Zn&` z%180oGUrB7p+qDvgEu_XZ=3E2Ene~BTRC%hhh{F8k#OCVNL!FNr^~dpvz|__b z4Hs|l)WV~IvJb`?&wLiR5GvN>h6Lft6T=f)EYm1nmk8k@@_B+_Wq6nW2tpAO+_Kzs zGG4utZaDgKAi7dU8Y=2l?%x3hVcsdt_ zshWwN@+1R}9S-ElBboro=gh8z=C5YV(P#2_Zc2{!f!0n(6Y0TRx;?p38lX1iE2`ERRNj&pY)^cZbG2 zM$qfcZsz7j$7AgG^@ZQYC=vrFEZ2ZWZ+j8%pGOz3_Dl3jX_^@C-ozyl98pNd5;h~? z>>H#{FTuxoh!FB1M2QGVd*tRHjomt7mS-w>=oL6@U2{jbV-s(lu zAXO}=JKVOTvb!{Tg--3wc*o$NqCiJ4q6hzfTi(c5%gZ&thc%g=GIvCDhvJC z7S@ao{U}B0yZQmD9vyd-#drO%AkpbslvCTjb~*|Mr2W*x@XT!K%<(9A#D^lfIJbAU zdrtad_N&GGlEWr)_AzE?dnxg>vML}e`IQq@jY?z)Ey0LB3;Y?w^4v3o^#fV%NniWE zw#|NDG+}$hC92)6AFNvdfKun%s9MWj`v~D>e9`(eZh9}Frm^c~uq8TK+!Fpi+zNfZ zT}qJXsFI@2ICOG}GMYrrEB8+Y79-Sn_vw0{U-x4WICjRFS09ZO%v=)gSFbId0KaxJ z(g(4aDg>NW+G<`k+wjU*FH9B>wCNL~N^XpN6&DMk$}Md*kw-Yn(D`zBm>KOzfYqjt zkJHm8MGDmOm5Vc%dasAB<ksJob0~ijEXC5lg+-;B>uK)4O4(oqk5ykt^F9 zR|pEtQfv+Q*L_dT3ANaBU2V{FDky=gfP;5zKlnhzs^_qv?kjctmil~m^L2pK_~>e; zvd35GaK~s%E{9o1-$&22Zi&Pu`Ie|(+t>m$Lnn%qKb$P-m14SHz#1OvJ4 z`^8#MbIdw5%zkuQ3A>(|UvBUC@HgSTc@!BlO3ht8%p@{Y^ed|a))0-6_CKMEpd@82 zb#swt;w@x&-XgDgt`mK-(wgBM+2ln48B7CF2guWV!T5O7=UGM36vkR;?j56K+o(#C zAC2DHES(p-kwM*nQUKeeUcRbHqEfLbK8HEeTdH~4y#uF#+Rh3U_o`@f4TDeaG%i0i zK}4=r4;EcmC$NgJP%luD^y|0H#N_@5pdY?eXmLXg>dTbGuQj3e+x^W(s(M>m(O1XH zd^Pn)9IATz)X{2(eFY2Yju7A5-f*>q&`R>trLe9HrA{ce&wU|mFQjLRuAQ7)`;+&9 z<6QN=opW(km1?0yHViT+{AJQ(Eh3 zY{j6qT@WcpT;xZRr9xozo0+s5spFe$VMPm~nT_6E!9VBMQ_1YczTxzU!oI`E@AJvSuw-eeUkHMjHR`zZj=H z?E+&Q2fvvN1Xq+WpG*sWy-3*a9-LC-8c`^ZLYx(knNZBRtyg(>`r?lR6xLk0@vnHj z)~=X^lEgGmh;KumhcN899u7;0%_(@XMf}s~wQF&Gq0%Bg6voz+Qy7F604xeRDL#|{ zWm2qPl9YMu*9SuGSJSC%^p1sy!{i6@-kpx$TX=gY)*L{JwGG-6%pw$unbi$o*Cx{FlMtZbA1j1e(9&=tFLZ7UZKT;$V0UmQcs2dAoXu+ z)(9uZH!)p2C#R;o1AhykXHfUpY?DsiNd3@0vh93Y#QI=;-1D(wpL;W{1G=Xpkqb+8 zdK~Wa_%5et!j! z60V}gOI&dpEJvS1BES8cUgZ00 zR~=Lp*YT&ZNjuI6b0MgQ#2<#-?jdw5qOKG@Op%jo z#|OpIswE6yXTDcl-n^}G6sqAlw)F0{Z(nWKJ=y0brJ-!}j?WtRAAqN*?8|JLtUgsW zD)M10z~Q0%58cOJL80iwe_}R%3$AgGgh1Zp9&O_)bz0#$2%5BR+wvWoaFXKhx$@Z3FS$X8MOqKn!Xg2ySg zcK&CZOYbe-7aZ^Px+jmVE1v<(=SKHLl&0aw@??48uc|>V$FyEqm!w^-7ahIrF z8tIHT5V*y?LEB4_5Hl`uli($3l;qizkUJdCK^TuFBeT4{`f7KK=n@okFLk)??+<3n zM>*e@=u13t4O*Hlx>@dY3p=!Fh8sJfuXvmv6E-r^5P)TS%C-|wY-ozZrc6j^65}s! z4n=SOWbMq5#+}QiOUL@9@{biC^-|T-h8L^_TD;cQd%wORf)c;;vsYYKf`A1? z*>&8%0@m>99%qaF!c_Um>uV8%S@N%w&1^>7I=3j{jQI%6W^-DwtHd3ePKe_Nt2MO= z;l{C)p0v#$-;6Vwbi;BJ7QXK#R*28uQ%QM5t+I{bv!8dDf|Gr)lix?Cf^l`-GYHQl zgPxwOoq*6)8&-Ra-dX;a2k_xiI#);>e%;si3TA@h5J*~^b5ps=87ce2P;@Sv6rtgq zh?T>A?|JoN({lQA;{j{Ty8xI zhKR}`qkEl49|_cd$Nvv-93c-nhKePKUK!X?rpiU+g!-6kYRDwi-g$*0SFrp06D<4V zmaDJnc?WRc5Sc~`6j#Ye9M%b^bCrRjLyfce$TvYc@#3#_-<2Z4egEnh$AK{%yjuUTC&ohoZJ z!ax~`ey8+yRj54BG$uL7s4em!4=wC@UaK(qt;bofz*@Jd$DLr9XNF@D7jK46v-<_S z;Z{|Vm6t0>oV{AG>bAx?j<@3t7(-AS<|=jOjMv!x)sUWys^c(88iDF58vJJ@XiZWM zju&UQ_O|#}uVbu3vTS06vbnJv3wQ)_z-3DB%dC7Vz6}w?^U_9h2~aa19);mlG&`FCpMTLr3Kd& z%ze~HcBD5`c#k*ov4l01yA8dsH?aWO-q-NAFbPKJ=W7WLD%*s2^tJT8PBXf~ zR^M{SXCzxk;qfKmUx&$^n*n#ErMxoe;3=*?bDGM^!1_bZYx_A~=^r)6`8|^>NwrgnIg22G8Q__<+Umsa;l!F3unb{e_Mo{H|~L80g}QFlF#1osF)?ggjdb+5{+^yavvVl?;UR_glsSA;n>=~&)c_i=oz;Z0Dm4B z)7w2${pE~@;_+xOeX{=tpOmFflk4JsTcEiPB^X7!;;M|>ue+> zD>kHy!^yX-RadGMeW;_~wDk^+S#d~nvT77?#$YUCoz*AujOhTzaslQ^mK5{uh=S>) z-RF9)LP06e$<4=I`EPY_!0BEJM(7#2xieI^S9+dl=js0d&633!PMJ7mdU8gN5um>+ z^u1pz*YGpnaYuGIEmpGVa}*XNS zlK8L+0Xh@;ydG`O!c?X|)v?1`j@cu}kcP1AY($}EgEH+maINX|NpvqXW z<4U6zoB{Zd{PIN7Dpc4n<$ev9DLk^aym4G>OKgPwCqkfMRgG~qIQy>+hSSHAiB)I| z%>6(KriGRCDez$iDw*h=eqaHVSCW`|-Ac#oCY+$GG`AReXuFnE^c5N1FQM02M$vR>&v&1Xm`#k&<0tL>p3osw5ek zedA?VpvI3F*35_?l@ngZ)k!g;5hp$o=eSB8Z2MJo;BgLsL_tY&T1lD}xLH85IIj}bgP@LEn2f$Df^VWevLiGdkDSe|G94njIk z;KrOV&np5$WIUdEG{ru36&y~bzrYzZ@M?r)s1h9@2IO;p5ul0~NcOBeH6;&7ci^S> zv1RL+41yOU1Xupq6Uo{w3MH+9A(M?lj=H;aDv@5vOy^}pi_o&tYSU4Xy?#%fS(((r zO9G>x3hAftJWMAiN$->upIB(Fc}&!%q(W--3ISMb($uju)uB6WJj*CNCr&Muo0$h- zgcl7uq;yRvR*`@kNM?ZUuE_QlT5N4rd9@EL39n&TVZLJgWq)h4nu^#&hRbR(TNx+X zfB><1sDV0~c(n8yRpp%beB64chO1OdU2@id!IO@a?zedMynu8EnA-rK?1z)Y(evZt z$HtI=6ofSPYF7?P#Tr<(1xyx@&L{FHDY41>Oa3%0Q(^#f{w&20Q)~Fdt?w-`+9jhU z3~vG4SkrIhyW&K&1z+G9%n-`Y6nB+FGTt_VBxjNABf!cNDIN_sm}>Utli^0 z!WKlDg0Vk;7s8pO)o4~Ge(I=N>@ammfobxi~prsD& zX-CYsZtm;u3cXOa!-(v%GKw_aFVn)(3+&WdB50|AuI3~j#0iBoLcZ}J3z7(k$~kzr z)I+ao%<(gvB+|Nvb%suWvQY<^o}46@M+S6_=9~9PNR9&lqoSnId$Z(Gvsd+y-#9vQ zA`cFuF{r#18U7LW1~48B(}4plaEw0Pg(j)0WZd1~2U{$ga@HtOGK(WR=MW}YC6fqVBH#`SX ziv#bUoekUcg2YD*FOnhc8a?JJg9Jq?8_A%%5JuT&FH9LbaaSmm8IK&y8`SHJeU-ne zMNRCPt?1*pVwf_oyz0D3|E4x0+PeL7rZogCP8$++?OGuKPSCt@m_DSAQA z^k7|Dec|_C5C6JYwj{~%vkdCn&W7z>R6Mpb8lu)w@?s$E<-6KxLn4TBr5~#+aNdun zmoX!@z!KU-Bl?O}gR|CJkvADFLYLR<0w$hEOHOgJh1Sd%MmWhS*^RzMYw-<`TEAS& zzW+bKPUGB}uJ=K~_@Ae#;hxOv`y&1(o}H>PVQIJ>9y@QFWre{Tgq(LciRYH0xF41W zf$z2*1ZRqBe+W&&vsXX>@sU`Due2t%0^R?L%1?~!77pv5St(S##-3Y&gqI7AEsR(G zYj?@~4=g^s~=I z^eLDm)cWlevqa>WARF>s`c73|Ev)FgQFi(*LLC1B_|~7gSnU5&T%A>Q=~aw{p0}CC z=r#B{5{Dee8#7kN!~QF@xle4r)$b@~OV!lhk6A&*g>Zk9J(%QWFq;#zOE^&fjs+*t z{#~l?-4c;dAEtmdhXo}X`a(ZCNo~msY~K@H0KjM>*%+oSiipO|4m*>P9J5AJg)M7) z!3XumNxx-ZYv3-}8>;tW_^-I*5qw5DwU~mfp*z_-S44KYofQyg|^C^T8d(s^I0jnH0;Q`N}F$5_1dk zL~g})-3w0HXj_*8)b^WFS^7gAdcQI=kujX1Qq-%>4EK49O#Ic-Z=xi=n_{?71ooz~ zxZy0nV~Q69X{=-(S8c9z#wDI|(eYY;Cq*`GjYg}gSU}j}SyRMMhi4A+(l`*xC{qIC zalgL)lXYS`6Vk7nRrd8ykE9S%PrcOsku5YgA+>CN@3=xJusfN1Iu0s;J&g{EmH*^u zDC+$~GDUiG#5FM>U}9k?{yGCgn)*&s=rgkxn${k=V8q?q7*r+l#tVA%E`lR#7p&wfv-y5Y9XJTwKj^SaZP2RpJjJI+GEX7KcR_ z7Vezzg9}UVy$ib4geA84BF3W72Y&?D=U4tJR)myXW7t>Y&Eh*H`x#x$octePv!5N$ zb+H9wuPO~=_$T*rF#r|h*7*&jTK#*Q zJsf+o5wtVqVyWc|sU-E5xr5zIHeURlby!Te|CF$IJ5WOZ?=nB>uUz8->Uwu&&)2;B zxFbb!(Dk$f=##KBaP04zPRfB7$xt}neRwm*ierA+M4DFz||C-^mlvAES()~_6;ihtlukUef@+OwV~Xx;a8DMGUFZc zHjg|uK>8#oGpI9YZ7TK<7WYw>wUV-5N~2r`75hjDR&};Nhfp_K-_Px?D}LR;w@sM( zs{~b_NT(ON^QnkGr2eX$q|GWJPbM``zQ7ns(&F2Bog7e#3I9OhYC1y# zy<`}}^XkbSjE7YHM>CI8=L;i-tfqiya*@+8(?^OEy1V!EBB}RoFwqsP;}2fN8{e9h zLFdt|>5oLckncTSaM(_Bq#JF^c+R1lX4g9R*stPHlXD9!Y;C@*+dJgx9>))0HrpK3 zD_Ib({wMpM*8}2-d-2I=!Fed~vypiQl=7t+N!x482jhKT*LnYm1-vb;=^fIyum87Q zZ&GgHZuUFKjrse0uNVTM45h-ecQ1@nb}+8%Z%wRj($Kf;;|yPVkySbIJ0ng0)c!_P zoV$3@K*ytTL~iv+NV^{LwfcVq0?u}nxMm3g_w zy>s$LrXh{iDn*TNAOA7Nk6h;;*Asc(a(f|0=Z>OK&VM_DNoEYDe=rh0YSe8|%~D}| zUocrG?{ybs+=jfS6ADmPW1dhh6t<(R_Zpkx`;#`_s0n|vT?kku@Z955VD8`Si*{W4 zVBMYV#m9ChX26Qj7dwG${h&S&crsFj8UlE~|98sAsK9MWAJSrcYn<0kj$E;6H8(-A z&9QEBTab3M9y0~8Dvd|SDpaq047ya2^z#}xdZG49yQp>ml#HM%cXty)y4@ix{ft1N z=lD}5jEhLp5v-S&Z7M{E^dN8<6e2vK)v_^CA7YdiWM#W4021UdF}ZT#UZZsD-HFGO zA^Q5s4?OVWY< zn1}?(5I-$errdj~g9<7gZ8(+7ih&e8@XgoQ-qq#X4b0?C# z*6ZsW$~(0mN*-ElLk*YkZtNlvW5^h~+$Y)L&deVUQvU}S`9(o&*Ej2fvbY7}3! zTB^S%&wp^v$$6dJ_ve1UuS;iY0=qM4=Zqgx97|+t=TYpMUG6b4$|l=RTntS6S$rWS zjHMXOSGVn`a<3B;q%J2WeW`cd9$)~7vL(-El@l_z(>)CQV%>UN?V&fKlzr2s_e@)T zR@RaEEq$J{Iq-Q$&r|3oY7hc-(Q(V%UTY_wJH3073%RIlyVCspQ6p zF_VjHuY)|-UTJCUs)=1K#?_K^B!_db`7g3!U zz_?PSTo2of=Q+FR#_{OE4iV(WB`~a{Xyo8#y4!e8*%@7Q0ct1dC=rhR{zNz6u&g8C ze}Gqgj>AH4R9Y%W%U&}3XVbR>G+sL{p%uBGEq+0oKEQ!(`b{wgdp=hAva0e3uiwsx ztEr39F1KWnKPmsoNbpn;>01eFeSSh>iC$erEj$A+ACPcUH#)&(3jnvVff%cZ2s=uV z!Us537?Z4<$B&*aqvzf?oAGYV^u(I6HM&Q<=K3yPdFoa$Nc3Zz-GoME=Ij11(-Z)H zY;cmnn|whTGoNrxT$#7w3WJE)?RUaV(2^N2{jpS^-9%mY*dLf+L*V%)8Hw!}oG1g7 zpTMPfz9jXXA%_|t@its^FwLBmM5d?<+**1W!4;;G>+O6$c9%0v+aLgN%Q(RX>0g&N zX4!!f5lkTPB!3x|pbeTC0E}_1S&`O=i8`C{k{`fiI`DqRsGXO0o7##5v500#{Ua3f z%S=lexn=Su$%gMGGrc0e=m!F);15Z z&J`}Z10L!Y%CQj?kd%i3yyB6X^?n95)JO}1?AH)Fn!g?LCG*apmE`P?#00LavQYyA zXzZ?vmqm%OCF?=zADoA_z>^sc@Ji?&(0iu6i`_Jd2OZ5t+b|eawLfKASO2y!+bBl;7jQ_L-i9x3xf$IMUL?(!fv#E)P<(H^dfb`pt2*UWUe6@ z^hm)v`?lfXN`2tDKUp3K(-HUaoaO?;=4krU47h@QMA583d?Q`1D?|;NF`@i8&L|=f|ZpEXBAObMw0A&yJ`CzwB|A~|b zEZ(ZlAIIuhm|tAV`4GtL$YW(OHKqrWcG-ILMhO2qfNWXPRKao18?&1fr7bYG+$6xU zw`4RI&@P|<*t{1XmP64Kt3LMlYC1FeMM8GVu06n-S6OFid2SDB81Z@M-VvD8MIvv;jC zk$&1fJNbuZb0~A5V?Qt|p1#^v^;;{W<9fhFrOjOFNGv}5(xsj}NX^^;W1{)$@=K?7 zXrj;i-Y+gn^{QjyqrftGQH<}@K=qwXP=AFB|5&MF!S^Ntm@PG3*Pi-tC`Uc=&Kd$0r5@`U z$Ou8OfVK{_&>gt6g7-3ch#Zm74Wx69*J%;O`043Pkdz>d!`7C%p$<}(U-qdp{X{Xu z+AT%D@Ny{1{1_ll>t^ES*cD#3(A9QHQ9CJQrdYQmO*ZG3oP4hel!xxbIN(whidb|gb)VVB=yD0 z)b0Z3RFG&GfO@t9W0J>+C6jsfu?3VI?kl;3TGI$Vu6@0?_~lp%qSptUQsJF@UEBMn zCku?Kqdu)eCEQrm_1FDIl*D$BmA6$HKY*wbnW#D?&3McFUB=ZkbH{HAEu^} zCDsa)vdvzG`~-6CNCo7-U4UC15KYl8L`-B>`5+#o1CCUrBE;fpSPMlG;-{nP$ql#W zijt^A|5_>m%23p-%&;`sQ}b0H5(2o%P=1VzGr)^kAAMX^Wg*PHOv2@uqG`dxsVubRO6)F_H5X(>Cnf)p4g5D2HvuG1WEOys@fZLV zs&@=9g_6yO=9YT~P{S?6%39}-w%Qv@yb`5df;GA7F}ylwgc+9YMkbQgGl919TZSo9DUd@i%1{&J)g1~OWGe|9v^2yhbo^y1o9OD0@f2JE(Ah?^ zQwa<`ct$^GM*6#>##3k2Qg8uf3>5&flB(Fuyu1euRKUwx75=kProPPtHY5J1sxBil z;b8qXoIxJBA-3dmsLnT?xN|K$0|Sa36jL5*452B(o6e6Ja$&_Oi85lc{3nQUz-Nv6 z5HkQRxqu9|Jo^38^3#2zVD;CMYF?ybD0>(_xRzttMqaAa*3#x~P&@sYJ9&~lyNiia zGV_=qEM8QVq#bjM=PLSL*+4a9x`xPARiKj3vmCre2-rRyVtEV*g;BhU~v;;OAtZn2f%Rn z>_HRe&kC$007xO`b`>w4+)yBzWOL6e~6-=jmr|BMT{9gDeofR2gJ(P z12TsWlnsOZ-)YXkKnbS~#fExzMSKTz{zLNXZ^H`(PZfCJv+z7qO$o-j@R;bv%Ru|<^D2`mb0ZK}~QLfbyP*|-jSM>Pfnp^GzIcrWUU^6;SX zfOi!mxv+{NOvx!+GgSXAp5}Lz$fICvCc*_w3o`h@#@HqpPe_ch0$dkX@z=`>Ci(*= zc51)#zhVQQLaj)I&#cBgL!8#DLCLnwGI>d_JOs_W%EJcPOYHY^)1~Oc?%+L3W+&&O zA)w;ac{q2hNiFLhiy1ylL&@ROKuGMaex13iqEccni1rtMW+i|U_GsC5FxylOArK87 z($}6X_VZsMdp_I}u%tWhyx8v)LM_{A8%CQ18gF8#di39ofyOK0-os;f!9u^@bE7K3 z_2Rr^2WS3yWLGuZkCP7{9bKAU5C&IoAN|gMzQ4C(SvQB&Co>>VTC9o}UBT_Iw7x^V zSfc(2$Wh#7VpQDP@3(B|U{OjqBqo*3qmIsvo`-KKecTrhb-2=E+zXo$nDPotAaB=d zc=3{AAU)@BEGBFydi^@)+j8h$6fUYy-tIGcQ9IN*P{ z7AiRmUTUrIL3p!I1M@x(8RZ|>U@y9(&`R-U1c~?a=Nudk<5xNijP4*r*llaO9CB|j zYO-K`-;r#=!g>#8R`|xjy%Dbwe#cy47Fox`XJKZeZRv~K3k;B~p|ByR0O^-&wsz*P zT;&}<r)Wj>=PdW8>>#u@R2`MkEz9(&!at2*gW zS?)nkob~@ZMyzokz7Drt9>IQH48Ilq>r2}|r?Ybk*AxLrsYHXLa_i6z`NA99{zblj zMJ?+A=T%{U?5Mw5EYlqH9^bm0;yy>d^*L{6TZsRm zcp9r$c33=h*DjpIaro+U85UEazN*u{=1O*{ll6BdvT`#X$ee>0s5TSq)rd47s{3^| zJRrWs6sqyo=WX5NBnzO!0+qN5Y8-nA2N;`BM69{Mu9xlvj_OL&dGBbR0vt&{{k4Ws zL-WPc_xOrWoo1)-dGcWvJrnUs@P%T5doyw<;9GnFQ>+yF#3y?FMumf-D_s51yWyT7 z%}^P=ik)azNcW(tYsQ*Bt&DN7L;X@`Wb^Z`ScB^s?-T}nqUO0O>VpLNWm;#%lthPs ze`oq;scNr(*FeI6%cJX=FlEulf|}=dS2-l*WGHn*F9t2E2A+NrZoL_W2}GYe9&~5- z!x@so_^E$mE2N3DHN%S&_g!LWKOS(fZ@&VM+^YM2(Ok?I2ygOljr>)T`PHgfz|Q1_^s2^|4Jo_)vOnv6rqP`^APs2^ z9&;n1{nTvxA5`mAikqC)Q=gcAsbW(_Q&+dXp@L?8=8)AX%dv$n^I!ys#Idn zv3K~ zd$^ZV^v!p+hHxOt{~hkr3EKhx{pG>j7I)q(%*kUXskl3@;Ke?%+KG3rG7mLdZF=}` z+R?J0amA|H{{d*(icMY0=jOBii7906uB4~o_U#k?dDD*uMX*USgpS!wRg)V4k755_ zX~*kF!?ukj;T3%};=E?T3dQfpKPI5*vW8iY_2U5UhJDV9ZZQ@|oVg+i^8w%EwR}`a zi_JbJn(D8eT%6d=LFD%Oz7m49H;5v<^xoo8vCpc@s}`-%e&pAM=6xwHXojtOg?ps7 z*T#E)JbBo^!hW?Ekw-RipkU{vUP?}Y8uyEuPp?N(6=|s;s2F zRy3&2{s&-bDb;CYkl6ic?4e_OEBxudV3YSe!G95t@42!+A<^oYl(T(@dX4G3Mt2YY z2l)Hri9l4#^2J98lj-a+EG@tt65u9S;Fm)g-zL1ZS*9f!EZ8VUE%=CtxqY8u4I%aZ zmH}5?5Eqvl4WwSp@tDQv%6(p;S*IVl!BM?pRq;YU>*m*t$kaNAT z|M3&)uAW2D2u27 z$+{lSL6HvLa@BR=Qz3*iY8g|E$~eVI1UhJ=0+?LlAGa7)`$!}A^^FV2ka*z{<|8pR zeRpUO)XF-Sbn$(XpQ_ODOx$Xb*zNG8F81@K&P#6pyA-D+MRWcB#hFbr61DappjESF zx33{NaqOZEY8=@TI<|9Bj&$1u(vmqaR;2iL=WdLUo7i&-gURg5IQAzO!k|61`>u<= zzCqT4#xud|j+N)uvHQ{-z=eyJmI*q4jON;`78~$5_P!4( z{#zz)54-)e9b734$@|{a)ZFteb8GwMm`OZv3QQfjr+AAldl@hm+;d)*<91#Pd%qw7 zUwIsgkPgG9M^62^x!tH`v*dTK=x?a)*<$dqEBf!#gJ?p(GCAe?Nf8lEYA zm^A4#a)~?RiEgQ=n|H7n&EC-Ei@r@P2$Rq|@JN(k9DA7NODna^!_M>M^&J7^Y) zX83dAs+0JWRi(nOzJD>5MQe!iVJiEogHZvQ(hfI;yLXqUNr>MbykpQvr6s9>_*bq` zoyTw0j#=K$v_EWVtq0f9X1X1$_B5KIa{MoLB6}yQ&i4`J{b}I^2f55j{reR$e&dbo z<3T2i!u%AVzU~P<7PoBHD4N0xyxlb?v%0Q3>g(jv5%|5ZqkYZ^ykPT&|5()8zaslk z^>C$Mx?Ets86s|nE7|lF9V_r(onPfpxIP@vNuuyw{kGNC?;e2v5Kcv4+*73BPG6D? z_cd}w2o?4MejFpK=J!6#j=8jy+;tcTLXLRbh-R(y6f#N~DdR#RfCot;9<#E&K!YY8 z*)dglsv$OM@!pFUccl6xZFT_}S(qnd)=w9LU8ZO$X?E0jG6B3~Fgc_f1DV1>H{ivc z2SS{#8oS(3zU7N*dp8mkt%?O>sQE4Fe42I6`J>wa_Ir^ zUCPSsnqGBteb&(!gt_q1A#R$}jIxpDvH7LovjG`SR;eKfB>QO=_atGQ~ zW0NMR3l#e`ktT25|5_+CT6j#wZCp=y)>F!lJP70#ue6@t1F}NKugHn`2*y)>OSrF8 z?z)VSTBPf&%r#6(!2k>k_4u^*J#FT z{Kp|N^R5QBJn%pxwH!_^NVct{%EoNJeISM1D$@eDlEDO4nVTtRye1HrGXm_A(zFVCk4W9k5_>&CRENEpak~rWyU>!wsTbq&CWZtPs!-}TQD2uA_pWKRNMw1J# z!8_(hs{H=NRP$O04&N@xGcLEM72@)d_#9fdJAE2z{H*W%5ysbn?{@duvTm8I?GagI zNy3B4o={m4L6L+>HXa0^3T@|RP^7@z^Th^nza$Y=eFeM98e)2I6rOu47*#A!@-GWn8 z3Mn=w3-{#}UB@8A0IytB6qU6Pr%|i18*NNv2@mp@ogdvzl+nQPY5V)PtFgk}7}mz* z^m9MJL7R<|Z1(;cFHnu>`fw4$gyH(Uoe-A=*Y60BKrL3%`dRXtDwftDzAph26Qr1* zD$j7ozhx0&>i(zJ{;zYndM`#O;0IxSYR-SE^TftclQfGE-^S*Rd1uQ4A|bL`5M`jS z`QZz33K;bTh`?il?>O7Za)k`sD*8_FX^1=k>$*}-65}k3%5MUvjDkHDk z?FXfyLT6IMd{>|ts!X^_xWFNq#QtW?NU!A|d6x@np)Fi;rU+$30?>Q($FZ44ALjY> zTyyrqwseEo!9;mDBAD0(8&3) z16btr#5o-kPAvN}X6WtZ5VtH~lz@@9p3S91$U2M;2%A~(jkl7kt<=?BSOEEGqnp-SIjIyoh#DB!0wj2t9T z_#@>@4;IJ|@`Q1fRlFV#43u|YXBY>QY%*qwnPCAqy47;zw8)BC!;~6(g$X19H4vHv6R=1kX3ODJg)yG0 zg;>`F(Y}jHY+K%#@FYJJ5i@`Rj9JMBRe}Vf8vZW0Cqd`MH#R-I;(N0J!1+{c%D&5; z;i^4R^_$&z>;$OIxBnBnmHBnE zB6C(%rM^o!*Dgmp=wUSsds`=zO(ha={SkPazESL(olNhPMh~hfdm&co6vy$LoFEfam`HDCv2mm5k;D@-9 zRd8N0WDnf6AarqGORK}=yd)&FyNQ+i6wd+Vk3_otC)C~Ay7G}GEy~;*WD~-)LO#L2 zWcA+?2Qg~+=;c(-Bi|Wrfk|na%EEjtK+Mc)o+t)Iwg0(Gfn<9p1s}&)muFb}qp%)@ zIS{alJd2M!1uHS$b$}IZ!IdhX01JW%vtHtUdNI*(*2=HED#U#xl_TJEc^C;ine3^a zrWm!x(4JW>s7Qg(K{A%maD9iodtA>oQO^{N2O%h9_kr?w16Fm6`t^*=KS0I6^5|R{ zb^Q$vTr!Pf?aiRB2f#J<5#$|_K^JIQ&VN4Ce=4$rv-+?Bvk*ZOLphIG(BBy)W$FzJ z_izC;GXyM@H)i;g41afR*80yF=u_rbyw~}`txm>Hog~G&o(QkOA=eU=z5j>rXa;SQ zh0annQ|21?HLsx|tYR zvl`+wNl^)klF`{83PRs0vqllxM<~e&**p^#!5Yxbeq;sda{^FS1RIXCsW>9=K-dcv ztVbg0@7WNis!oI5zPFOTbeIxOH@M>)Y8d<^*)yLim92E?se}O@%CgMk*1B8M;+;c0 z;QG!CZ`T0;WW15{zq~W}x6q`~pPUde!ETFTZO%vP_PdN5575@+--FDhK91HcBd+6403*`bPSO)v0 zCY+c$N>$pqC8aESBXI|`8i!@`$XJQG<=MTzL*FJQJ}Q&3~Kt>DC^&zJKpN zbAXEb^@84|#Xgl`eUA^m*l=LbtGhEW^-7Z7chy$XsCUe zZ{U!;pMX$&>A~d4Vq9Wd5my#$EjR*Q$oNebV{Wz@T5z-hcMj441bgR z(+foF`^cy4)Eae6Z(1J2qzAUH)n``Vck(>Yv^R?9;L1PpYNX~ z+1Bw;Gt|QW)OGnRBytqE=D$Emf$?`z*=R^-j%Lxc--8qI?Dm>X%*2Ed*^ki;rx0)R zTv=1_P6!p7-9x#pHJMl(KT(QhizUWt9RQ!Q_#RY3TcET}`p`p|Md&Pl!G`(v8~u9| z-)C6kJL20>VgohvYT7FnCSLnb)G7#0Qj}k`4x8Pqr00ZRh>3kF8OOf=A7Cz8cYGj7 z=38yeSGq5Q*zVe$4MBKILYlh3N)9m5%jEitlk_!EM{%bj(+Qwp8r>2w_bl=49gRZ$57&;tV`XauJ^aQ*7`!Mhq4y9>W*`VvK6;;9h*$mS#t@blwXkwIvW)X)j??qbA?;)J$ zkCobc$Uq5)PS(VVfR!82$P@!bRM)zz!VC8O?m5w*aWsRx^=#{YK+USnk;pgE`7w^y z&GYM>;c6`_j*%@zS95Qwy;s&prOuS03%mWbF3okw_iLn#YUz@_Q+{}aUut2NyTxML z*9DDqnt&NkXs7XJzZ87Ifh^G5@>3auZnV_dq){+>ueqUp+>^;GDQ&L#S?8F^V!zDA zruI#v+)c6H1ABw78Q=Y5X}>;Lu}ssMzz(Sz^gNxmyfVnuiVj{lTk@yk05M-LTI2Z(5F_(b z?SkC0&gJjUUZW_w1C-a&uxHErSH9C$KG1q0LR72gq3$FmaI$w`fY+<9YsPLN9N_n5 zIcHxxkzU^0-#a|HMYDn_Rs?$*evtOG;fp3pJW0G6OdqBp-?044{|mCsN*`w{LAZKa z-k^L|y-r`K(%30>vC!<}&w@YONorUMHxs+n6Y=F%dtGl$AEDJ@4b~HEnA6o^ClOdT zbn2b6xbbI9aXS62f$qTTCtTK|*NA{R=XoCFQ2;P0(XGSbU)lcvsS1}60gEeSms?&J zts{pYagA*y7#Z=D5$7+{72`koB*2)Pc4fKiyUD04LEz9SsI+ zzc9ZpgAGx`RCc>9{_0qHNttEl<2FNVA;~gi5fos75^fi0HoV#^k-`oc#(xG#1Zb}B zj=LkqLCgRvvz7QwU2S3&%ajV_*^?Rgt=}V+!v;I?GV_-CzZ(R_^o31*@rw%It>=#& zR3)ozo0zXL`W~IRTXAOs(#U(o07uVYQkvket!GTL=*Hr9I{FfD<<;56CvVcI$G!}8 zm+G#cd;HX}Hspge@ZW}*>|Ns00h6YK_z3@cwEyjQ!_GE`<+Cx*9ENDlhiq|TfZ z$InIs;en;P@A#zO<;uV@jDglC=Gz;z3^a?ZXxS-`?;S_)*W z+bTpR4yEc`6S6Sf1Se)dStJ5+_Jb=(6Ibo;YAL>qCJiyM0q2t#r!7t~J$-z5WSUZ) znnAV(PW71X;31xX>Qd=_9yA(zpx^3XG$it$8$<^m8Xaq~dP1l5ZLKZHs9u(8&Gun^ zPrya~cHKKi=D#z+D~b8{=vS3F)nuNDFQirUH1x)=4FsdNJxXk{_c9;V3;Lfn=aF96 z?`HD~-LFgr#B~r}`{Rpyo!!!~ewbSg_QbKyj$2BtjWOahi6=5vYbfj{46?ZA{E<+d zgL${l%@$X9126TLmxVGz@l@8|R;$cs!j>ovc+3v%Zs13#{%=ut19s2vT-5$&@_YX4 z97lHB0mZ%|FxqRN)RQ{NTUy8~H)$Z!uw>QLM-IM1^*S zzDVXAiHwCeJYVVv-5b~GOtPspC!Qyv_CB8)$9BMva$Im{VT?-TJ-h zrSaQs*=mc=pP$v4&4f#YJ?Inu5MwKk?IzVvtNVHFVseWc=-+~*R`0E*k|}+OYSnk@ zY+Rt@0>i`?=1~d`v23OJ+2s1NcBRpCcdh2Sw%z@o@3HDeonP^=cjZ4c4-+Kvzx4xi z?{+d|R_XMF2mEmZGLoKB+uy z8~q%*55RdN{0p1&ig+sYQA1((C0SNfbHKB^#q^N~18EoFio^(xeYHg~(~@aB$-b9T zf26WMF>$qHS_pI66jeR-y6*m*c2D(*CGANM8`bkx^^E(lAZtzZk&MdmzMV<_QKj()U^tS~77(%mlni=MCTG08~`eju5uvCGPF z|3U~d+fNsFR(@k<3K*lPrpbZ1Y?$F$^oB`Up{pPQ*-{i>id!0j*}2eJ;?OJqx&`un8yorDTAl2#RmqO(_Fx9kF1=bYv*v)j03e7xosDY;~ih=-y}9 ziCYsBC5#qLKO$|=U+M>V2LgkcjPI(SnuO9)0t8bnM&jkOqLEE5ek_j^V%6+JT-?x^ zG z+ARSd1o0-(5hIfQ8->NvM9?lU>!}HxhP1wmnmG{gAI0r1Pxsy#zBjJUR*{g6qr7E) z0<&4EoKk|hsCVi}rEv84B^x_W#9kH(=i%=T5ZKB8l9ng>21R{4$HU8o(IIb%ltmdWkk5)v?e;^Cw7{^0V1V#Pk;0Myax?b_ z$WtdM1vBSPs&8?36TtWc#+A<6$r3Yf3{H?mL;WASQGQ3`xP(XI-4#I6GmcHKWz7wN z1dWGmev%EWtKm_^A3N;{d+OYDPNear&Hn)K{}(XJdFlHg+qy}{8@Kp1^B*iE;VNYD z7kZ7B-tS01f>+0)iuy|-y#mX|@+hnD)(q1p<0(rfhwrlQFlsKTGJ;~{wJsNxThu@h zt$u9F&uV#~fRCECP(gqdDZ_v4&^NdKx!7-wz$`{4jGpIyJ~VGyi*IvYRO;DlrMS5@ z&}3Bk*RiwBI%J{MS3fu`(jVDxbC8LLa)X;G4vwFGiWzTka3S{%*f>`(){_vezCDRa z=1>B9X{V+*fEnh|~F7x2o=aHJ7*wnhX^*s^QX1OMS zFome1>j!aQr|F|EpzJRblB!4Kna6CAoVW={m`o&&kYZ{Vdgc8h*gVSpF9OI(_Lz5W zGj=y6M_g7xQwUA|)?Bts>~F5f^F5XCo7JDDBCvKM#x!++qcXxk{H=&Qp>iLd3eN$A zOp&)jtzF?TuQ@qf^BlnUFNYNWjVJBO_7!sWpcZcq>m~uYzS9?h#F2jgdVy;2j8jH_ zR0*xq=N&AJTEHBGA9`fzHtRG^qx~lj%B+|^6Rx3e-4K&7*>GhbT7>12Yo=Lmv^Vr&<})ntzAULNUEF886b*?t^iB#GG!WaE@=&Eb3w-j}6Z zQKE!q-K*sD)rfz&?CxM1Jms7~1eqR6f}N5?LiTL6Y5TDGkaALVjyu-MwrP)jrgwE% z6m>S^t7#Se%-G8Pkdorjn@&0Dd2et4*$U%{RgZ<><`I)>=`gv*7-eyXf*0WMSeGg! zW>KrSxqtI0f0Kv^siZI}=ui4`hSUw$tkGIYaw_V6 z{LN)#ilBU7%rV!+RyA;xG2&uUi7$QvA z@c6|{;_fUd-(yU?HUE$0eDYS&%zw*8SYmd)aJ*Qeh@E?3%j59LoELMBZk58GN1Bq;I=@T9d8Zt& zFMz^R*)eGB8Ih$VXfELYso{n?SG~6%9Lb-@EjUfCoBr;{N3jdIc2cjy=R1<2CEp>W z_TZ5gX6Lxa;_to6s&pSH|4woy5Ak*MDa$ss`B3)-o=W$rz1!D@?JeMTBi&ZQUx8{iyrkSuU@bhBGT{~8jnv1AuXCTV5x54GR9w1DtF=Ll$IFy>}-If#&2WsKfp|ITJ`!dEUk#4x#v zYGqrO>TYYsximG4Sc-K1|8>O_*rjXLG-o`GrsHYdqbNPxp*id>Hd|<3gNnZt&D^3r z@m1iKNaZ@mQL8t6{<~CsB{LA-V%NKLo5t1;4&lGiPd&RRsa=eqq=Ecsb$GSXM8+x# z{G*t1qq$S6-gAE}t9cdpr;dPzv@m7hFz8oE5zrTcwF)~+Jo?g>OQWL_<_T`O^Ye4;0L0Eaz7>n;0=MPL^iDA3nHiOjCsF zc0L%O#Br#vk=7Ll(kJdnPiq?hFj#8^yZg0%j|VZn1ozxAY_xQ$Tm2JIq|unpZj?U| zab7pYE&{z7+IM_g?JX3vO3M*%Hbg}_t}8s`Aag&}JvV6L2+BEiG`c;&u6qzkF`1cc z?Z-&0?|W()W6n^4yqQ?NtZ4bq*(TBMGZDAw8zSX>gzJqH={+cm9Tcgwi8UJt78rBx zFV!m}9z>Xs=6c_y6$Ca@I-`pZe!h=`7Ldo1aPd(JrIF@!R41eDC5eKAzJ!&Hz)_{@ zzrxJc4oHVa=?^1D?&lg)&8a_A%)q=K~d1AtGXG=Rw?t_O-pk>y8(g@13#H(*=h9ch|l~#F}HywbCS0*8Qd5 zjzerse*$)}a>`0(K4W`MR^fD0>g`wtlZQ`nSz|mlemohq%B0h9Wyza&35VtnQd~fJ z6Agz{;`Hw-Ubt8fv$z;ws5!^1ajyezTBl%B;*0TahL<&_dQXQa$*a7>(e_+6W`f;* zaF=U0-}ehP`(Ih;s)7qQTjzWtk>q5-i4Z(hub0_nrTfk+Lntd+v-5Khz?C~j@I)Tj}qN!NCYDH>5Dgx0OL-j$XZiO2zx}eXUGpPzX zf5|N6^GGKsT!PPgy0|vuH)sLn(Y&)+aj4tyi}E4*Va}=9fA8XzF4Bbf7c|Ajff&*O zzi1)4IJC^itU3l$RCY#16z9sA$?F%9w^RU;QxR+B(W0C?bv@D4!}_mrU#&=Cchw5s zOHm9Rr2&Z0*F~r{zN`V9m~?t2y*wD=36aO$dI4wq5YA)MiGN*M^hRR8)Z(!5o_=4P z68g_qTf%bhhwUM#_ePgh^Fu1dNlcUrY@K`n=?i6f+#>%TvvC2cTuFqPqYosV!AUBr zB1yArvuc$uSsrhe{}UIp%9$2BNvla1V1`h!62&~qead?)t~y|b$J%elxSw61X})eI zRGQGzkU)?+K@<;we0^Bq&uvw!7<(LY5W&U2gPk<%5)Be5K99x8J~8QB78D-;++{x- zu=-a{JllX=zf0M1e&|5B9v~+Ccj-Ac7f9(xnM-<#LY4ejoua0=%JArzor}d7_jm~> z;k3=t1-^*2@yb4-rLuX}P=oh7J_G**=hwT<&n}JsozFS$#mapv=$!vR)4)>^wkRj{ z_7^IvJep>v+&N!vryL$slF**tZe?Q5vbaFe?&`x zKj`C>i{Xy=7J%_7rY;lCzus_U0t|V2qTgv^kdSqX2*r>yo>~rZ3n;J{a8(l$!&)HZ zqcBX|x$@ooNJ9Y#CwBy)wioGw#!iwEYXsCxLhEsz1zahr!}ZquDXwkwl|Jd8GBS9x z8A1Hw|5aEGPR3Yty&8;v%}nfk5pne9U(!sE6miYfh!>q+zi7G+`<4DEq-m+c+Fk!C z;?v^gOD=h~9}5Rhiqri4r_%gCcENk*2*}xZPUXJFzOx98pILJ=JIsdAxE#5?TyeT z@t>BU$=1iP9tICEIwr0L9Q>d`C4)BkT^m)>D1z={aZBDf%iT1yPeU%^6t;#C)Vbzn zKT6fe1PJHqY|J5hx?|(YFLHD;kGQJES{cm`xc#N_i%H>zdmp+y>EC^WakXeSg(Dr( z?|M6`yIM8rFE8Ai?!xWsHqi-gmIT>LKT9anndKUtdDUpCs@cr=w-g(O@0Nr`RE11Z5+VX z;8n722pe zUsz+ZW1R{pK|mj!LJY-YuB}_@`wc)@!4D8g%wrIjeK-kSFEFWI`9HvwVE%R^h}>^g z>z_fTodK|mQpisq!ulV^ewSzsIIz6@GxLx2K-&v`{8w~ll3*tvH)+XF9oin&5r~|Lfb*HIu zj{;d?);$KyXkLROF%d2^cf7uAC@=@kxIjf&CGs0&qP#bax)J8uOzi3k_@e3XKC)3q z@7TvKuh$UsoT^h7lm>?5S%av|1*vfm66?M)x%Yhz>{N>HH|Fz!62;*imxy*Icx$k* zY^vbk5N!G-56+%u+AVR2rMTN}4f<(QQ`e<7-r?v~2V=Q{)ve=4G{bf%)&R-t*XY<$IippU-%dj_4Kx?zYU2YkuhN48YGZqq9ds zx)Q49SN=69K1`?1@XU81Nt+5%JG~obSP&h^b4lJst><(9^7kM1a7e8&!L}b^Ru7`9 z=l1x&v#@Rg$dXIzbRVh)5_ug(Qat~niyo@}^TUdNw5m4t!S5rb!&$1)I zW{1e3M~yybm_>H!6u^j$Lu>8cxf7`vf4Ctvz*m-l*+DP<)m$TZfvW|GX%D5W z?r3682imJN-?^~pM}svq270L_NHXu2}CMbQaj_SD2St z^$dV(;?M-bTBg({j<=zZ|BUw{59t{`y!UC{`FYMjl5+w!KWZD zhdG_%Rt!GeEC_i^rGysTQXgo>eoXAOoD}6hpMJQ{uE?i(lrrb^e-xdGBh&xm$7klg z8M!SMbLKvBw8@!k$bBSNbIg5&)R1Dy88Kq+xyemLIm_gj`$$5WMsk%te1H4>4clJt z_nxok^YQSuW|2K|({O4H+R0z-sd#=Xiamf$^%E&#b0?u;|8BjaP+7u5-iiRL*neZ% z>IsML&ocr~hU2A$2LBt%|2I#0al^4C&^a~ZPISGS$8>S?Jl102uC=6u2th|rE`UgA z^~jX#I&FBAa6ei8Oz?+pXd5C)UlWd(^^w6J72XL z()%YJj`9O!^!ctBlOjK$7n|cUSx<4RyA(V*@Z4xttuE1|_jB#r3l)pd|KJ_@9O|E5 z6S*J{k&&+=>Z*1fI7ioIca|IM=E!^s`(B~!-){1r=-OP~8U+ddeOhM_5KuuJ6Ggt(PA&BptYYTxy1a{;>@*tNlKnX9SNoq>#Jk(SO|NB+_&s!9w@+q5 zI=O&F<=qRNm!G^N$gG&7S;gCLh~`nImUA9$m?{NTBLdvaZbx2`mtJ9El~Q|y#WrI( z**{^~?_0;tWpL*_nmX94vqkIZ7L!GhR=2)RVH-GW%=?bJ zUbE7_!aC|dzSk3Q8QEu4*)u9Z;K?CU}*5=T#RG$nE4o%)s24P zKZ{NU<`>N_Ai={37hGKIc4vUiE1?IVz@+s)=EU`~v4GO+^e4cO0b%<>u8Yp4<-^ANhWzav+*Cu$a)e7f`^Q2|I{U=c2QU9sg&tJK~s)R(U z+52AF=4+2oqIh2XTYy#>4fLNSj8!->W~}^m#UZ?AO}CG%qb}6xFYOpJh7qf*dj2iY zJI4_4;%zix$~+p+!$zBhOE`{}`qQ?pXP%#ortlVz{3G`C3fU->& zA9K(~G5AY7Ehf>V^0XO{w27(mWMPt2f{Ga$(##z#fPZB<$F*v0mn`}pDcDBUyMcQ> zmDxYVQ8_oQhy+3uVWe-DC>mHtjoEPzZQ_}SZNrW07DKI>Ac-D0mnXU3lZMqs6Dv9Y z%YokkY_I~Qot|WI6$~pu1Vn1=KJ*W7g~Jz^zjZE`VHToI89|SZ-&HxZgVqLlwD3_h zCijw4@Hsn)AncPMc&qh3sIBx-4ZhBX13!LT5*x3tQe12SVN+7 zDTu(_H$WfE(42imkbtK_qW>pH8$lLk#&J;6Ail(e;ct27gTY!-uk=-b^}b)DtAxd} z8Qn0W*HwZ9jqVmU@%~)4j1tRL<5+2V+8q_1S5!3LPp?_wUnoxno|HO%7mrT(hW-?! zMBa$js`mNoN|TLdF!r&$6*SziYNrST%ntE~y@M8 z(~G)B_9$`g0Uidh5#mp!XrX^C(><(*x#%oHf$wV6z*!le%O(W(j27H!x>^T;Z85`= z_3AeS8B67q>*DY8*8#2$ zwH(9^;1RFAB9Nbz88=scVFcYs$?)g9E#IQ|3nmy3_`T|hIbQTE6ZA|}7OIHzw(iki z4g%q>LV*)?-8E@r-;1V)+qC0sHaETBr{%!E(s+z6zumh@=6ga9sGEC*5`Z#Rcy+x= z9|g08h)n+{XmnTZ6DQNKqf@F()io-BgfY>{R}+6ru6yh7mY*Def}=-&=rz$zc50(e z&G9bvw-ZNs!StOI0=Q6=GA)moDj<~$3}n~NK_s>Sk}_~b<#ojJqX1WeO2t3EC z`TXf7&0soe5m^odfQIST2S1CFgsYJb7H+3UK_v2<@*-%ifLoZ+Wd$8Mz;A*_E!&mAgx$z-d2|{bYP&;?*_)PNN&n;#_owZ zBfg${DjUL7CpG^DFFjb>sK{yuHW=pOHJaJr9xcJ9>-5>xA+IJYLYJinywfhs>$sP9%#(pX9g{((pZ@s=X< z6g!m)kk8Kx%E#&Suah_vKYy-Zm$quAhpl*g91>MhQ>40_d1z5-NC|p|)3T@|tmb(a zma$rf4W?aG`~kf3)YC#{WIX6E-hNd>CX;C&_4*@zXqZn+V4Sdo&?HisTm9>=;?pq5 zBgaRa0q>H#V~+Ya%-IL*7gFGtsWoD!7+H?NSI#@Qi}IU!h)dKB7hFTfQl@sYwj+!f zbF;?pmXar$SIEhAM2~c16lq!Fzuf4)HSj+GG3-WhX)W5!UwFA!w$pobIjPkJ=W7T1 zSo@a>O_0nZ=J0*Y{`_|Tr)*v~X^ETI7bfAv46RZZT%VEe@T#57ig8{iISn&ZoivDi zmnEq0E0+-R)viZS=q~VV_1*MKn?=CWDRRW_ju;_1A1tIFbT^=*T}XowQZZ#4Ub)m| zxhunX5;l79Q>JcB!iv!5V42p~pE>cpv-z~i`F{W;E4p^shoM*!yWAUeuqmQI@6P4O zg?JTL#bSa>E;NHE%jRgE)wxttqt(K(BLx?!=t_J>2Cn}rseR12OXMjfS(EpNg;Bk< z&kWE10NbgTFqL)|67(*Dz!bQ@{P9Z0ksURhW^gEs=G)ir493oPH}(Z>7`24&vJRZ` zI{T}!rbf2iJLBd}V+0EXKiVF>UOQ80Kgy=UsnF5Xk7B zLPPz0?eY@;?T1dqHM7S9fHZ^*9Yf2hULfUCt71aA@C}|31C=UbV?TaEWNLOE0W^OP2rAjee#*fqW3jcy0!8 zWzr$E3Q`T?{T@me{?GpVv*U%+*GBEU=CL%cpTix` zStfAvB&V5I*P@b<9uMa$C(B9MW>OTii*nY(AjTVW&D)MtxhT%wzuz`1N;FLkAK|H!LwJI{uZ12f*fkDz0`vE z;#k^pAP=Wv9@8T~`tQrag&Av0s;Xwrg7ad|vA}?JU%)Beh(?X~)-K;Rp1o`nBCH^7 zY-Q+)rm%Ge{e~`7EAeA*68Q1I)_1dom%5^<2i$4xmx`4D;QD}Ys;6E-17xUxs6S(1 zL2uER)$y^MVAD5*sBJp74egWl3k4d?ukV|R`3t3vQxH#dw9(HlEasymxR#$CN4%MD zSejwM3YzsA1{Wk?8UBc;Y_*FB&iy+x>{Ag}jqmoJBRzxEO;z68jgHyW;?&it{gw7W z^@4px%8*@k75Sj_O4|?}s5XiFQ9vE*P*xT#&JH@!f@Rmb!QN_;NamQ3eAo=Nx%o^j z7IWrq_#u-n%DXHn0X*D?0U$%qVy`3lC@XM6ZE5KG+l7Z3jb_EDYx$vR4j~gWn!vJW zo~Ft$P1y@Ef}78ppAyAA;I(wycm$cB!DqQP(R*R~49-tgU0>*`$$_-*+=X!n24M+q?cZynSHy@O>3wqYK0 zg!=&n#tZ2FP}w-e@8k@gYJ752)RSHA7u@}!>w|j~;H5i`m67CN*uj3D-HmW&)2I4F zp82erjyD;9MfaBzJ%`dLMGl2EE&;I@x?9;Iw{caM)z(!cnppL>aDmHX!MZ^hJ=L*L zp|t9&yUUqt$W5mlngrTO(%Sb=@87IJV$K>sHiX_jBfOdab|TxC{j}-qwZA(Fk=jC* z>)te+94+;3GHleV7}f0W64<5QK(}^=)S`uF1XQ%)isBOvYhcn+7Yyl}8lyLjo0xL< zxgK;FY*Jz;E8X&H<({CrBjm@iC8DIzqA4&#pP&Fv za~}m|`dcP$S~>dD?>8H;AP4ul8<$0WX`Euz?Jfg9DzgwsNE77WM=>t5OFt2XW9tPZ zHNj&bsw(7u(^@x4?Nf!58Q<@rv&Lw`-tor~;&Y$55XQ}3(Yl$3hf&+FmM0;@VONGP z^Vr&(>xVAPC2Q@aHiP{d6-rITcvt?!5iS*G+K8dcdz~i+YAaXoJZ|?42p-H^b?OdH zcrnDx{(FVq)H(r+UK-e}?HEK;>aJw^OQ%bFgcn)M!^H}tClebP9lN}*^COsoh7e55b?s-=t z{P=h1Y((7qwXDDa<;O%cJ!>T*Nf;-=P~BLzUemA|%J-KT!Qym!ygB!wQ~}uxJZcP| z4-BSs;*h|BeA_eC+1(6^36#U$@1?0!4r20p!G$kaTwz}mm-~a{uNoWg9cUZr0=*6; z)n*vKOi0R6xkJ86=^sfIJ>FE3+NtaIQE>6mWLve*!qj){ueCqmZg_EsyRUwd*TKz3 z;{VIL*WBd0_G`>F@6xmNBzd2r9x<|HdlG`uIKThukF0+_)S*r%#4tuxe{HjAhiyJj zz_>3qT9|M)O#41T&U?lQP^y^`n}%P>`xI);zT#p9X1lC@fR(rjuJ&wBB`T(>z|mU* z-`Zu(M7sV|(J?~URm?)4q|l?7rIS{%Cie=6j`8%qh)SQ;uivr2PL9~@2{Rp<<%$=J zmogpy752VTU&*2%oiPP^o7kKARodaEJ4$c+9U)=|2C*7kaN3${z9xF4JF%_&wb=HK zBU_nAc%w(hr-c*f5C6@v65B?@EuPYH`l)BACf@IJ+>*g!%uKK#MnIaSbSfY?A171V zN&nh$2I zVOZ~V9T0W_Ey#?ssiUJ0)j!ae* zS+#hDi=p3w+u8AQD%hYGn-)edUOYc7XrTRvJ?ClY{opeUdWhXQ|B_ta6?cvtOnF`F z&sJR6)L!2vxb!cH7$+<;u+#5QPQJ1Jq5<+WA+f>j%y=)ay(2eB(d>zb=&|6~)h%mJ zTGIm)tESm3%j^LnvgoGff%%>S>$i4;#L);M@V&`TO}t)>7S^rwIq<<4{*0bAn~fK? zUO7M&O(*e#M*BeeX%AF}wP?DFLd^$q*CCvcsq4Gh(q`P^05y+$ZAtp8lT;2Kc!!n9 zQqctRQuBhXjTlOmrU>IeM!ukYUT;M4W;rEaywt;y`g`Dk5+RB))jG!XSsjETLmG68 z6!4{vz>2IrP<^ydA`?Ru?Y`2moIb6ZWZg+503VbmD5<~|K284khU3-;1;q&lzD!Lz zF#aE)dM^!0qeM=#zSo}#@Nszuw!8PJ%rmjltS&Ms6P+&efm4^ztdkDINP$_N(6b2} zJy2x@++Qz92zaatWa5Tc01Z+<`$za$RH3rk5)gOyQip5@q;v$0KAdG>+X3FtP2C^h zSQD0E34*}p>qj}7;(1@{c`i}HtOl3InAq>l6vO*L`$NO3M)z?v5KoB%ceL9lKM$e# z=i)^RHRU`09nYG{m(z&vEr0G_D=`4DhS4-WA`&f28`tBWjko<;%yH?HunJnwE%N== zS+}WKFJ|szl$}I&VdboP0yu35!CjBeg#4H}yZ+HtQb;{G$&`vYX$Jiec^MNAr zL+wIAJQ9lwYC$uSEe#COeZE`C*5cYzfsqv5-Zgo2iOI+p|3}Fv_ToYGOBui)Pi^dM zfGJ^y&WFzFfjG=>W}S+}Upc>@;f0uRpN{GC{U3m;7ENT;xY-^NYoY8H2r)#)57ei( zha1P9ue=>uJJEy+XZSBpU2Vl19vKdF+fvP^u4D+!cqNIggMaA#v?o+}>Zf&o^hU@IrI|&bm zi$c1i7VKxynJ;+$n~HE|`SjS>kCI`6lvu`Xm$4`@@~5!Udlp&+I?dFU)lSCOH2SDe z5Tg-@?*WkzclE}+Wqm@D8+}H3RiSfF-*%(#Bj4`**H!AVd3CmEmgmve9zP0b=lH=j zj<1BTV9;$-U3?9kbE-1I-Cpju(;pj;+DgKK+H6)JLB2`&#sF@XGH~ zx{zs=u?8xXF`X@@CrrN1e13?f`tgx_ZsMrcU;NfNv0Wr;ZRc7hEZ3IIJGUGf^|6Qh zPCYUF^}}n8mA=2|QZ0G|N~aswm>FgCIZO%snRh9!XIS3!^4niOzL+v;Otzes(fZDt zOvUZ%K8;z~@y4=r5V9^WLgfK zE_|{gGIwb78Xr(o(WWZL5ZS>wjsE=7MYi|gpbbG*_q4B(DY&@(Q;R_v<5@Q|4(o5Y z?Vrx?s(XD`{1Uq!TU%bvk=Bz%1{2_Qtd$9(BPs7OA=P549bF|3cX=zU7tw$NIA&{rK$9P}^9hmo=`(-2ht_;!2LcC-7Iz9@}aw5fG) zbwj%>q}lVW1w+-4cu61MWB0)!PeR8FwB=6zH;M!ODk${88fm6rMdZ9@nq~IMr^1%! zCk&!EqXMpq=6;Jqcl{+a^Lxhs04IPLOEtNM>DizNqWW~#8GRzp4+Rww0{Y7jPor-X zb4Y%E?FI8zq8Y2f6j(@*>6)eVWj0`9rU@EdWl@^$i=y!uq50NFJF=Y53f~Y+lVrpv zK{@C-D!2!D0B+_Nf?=M$v)@~}Z@f-&Qd12|UrqYE-TFB(|EnF-S z9a{wm=FKB8Sx8RLgF04PmI(`ckk+bIpJToc>Hy4ZPM1>>ZaV?;$gf%GGrTkZRG?5ERvCcsaA zL;gE5CWGWGcFR^P&B$&!paSeK{Y zbAnMqUH-`-z(LROL+h(&?CQnGX14=vPlTs9R~nn4{5y$U&A%jg)j=}l&?MX7@&}p+ z@RSv9!K>*q!#0jUI0F_*Yv8L{wOr@t*qpftHZJ-kQgF?YGtRb@etX_4R|z~>dV7-T zl4QU9EWSGnm*^tL{*5T~G$<~5m`_Om9~X|5si#WO0LiOY>`nE%{Ep$W%1;pMV+BEf z!w8@MvUL{G7-aYA52&UO3Zvd)HhBKZV@k zx|Z*o0;ri;>(k*eWPW1J9fvEVrM@cKF5?zit2Yy!0Xmr=W{2$REt0-j7HCw})tgU+ za)e@+ozn=p!gxy;%xBRBWqrdg{{(V(e zCQn{(!WO9;lAKA$Qe23jf$-pxX>Uwq!)WF5FLuh?F&Z~Z@(TI!23*k z)0iZ`{t`%&4Qn6VJ~tT9I<2YBmoovRqqNZR9sjBIHb{PZYbqHK>{LGM(h8f*2vBAn zub-d!`!5j@rvVvHi)x5}sQx;|E{apXB$nf*!M#7vSMoE-f{%%D$_g)60B23=FH!?O zx7*dfKM!GDs97w;w3?oRt?4-v#2y|0^IUC99Z++8{SGjzcp@i&zxIj4WMDs@%#|y# zqRLNqTsuIqy7ySle4j|?U(w3vf!HkI*zQo4VWewS1G&=qiepT#0Bgr@F6V9b&m{w% zW}{ZRN*7m*u7-A<{j+t~doe`eF+i^>)@o%cnaoN63^^s&-dNrSqM{hu{a)@Qanpl# z^0^tRUgq@TFv=4K7QD;^bKh#olyi2O+Ai%krnqaKMr04jDOgys!z&xb+l)`i_Dlsy z@&6B?reKo3;hRGm)#0Jm4Mx`K?7>3#97XAZQ7)eKmmDN5@q{iY46N+U|GC|w?|*<; zRoWA}%}h-VotBTbqjeDp*i3NF#1#F_{91ES&vFWgK1BVys)6N2c?29M#M>BjPZ6f0 zd+&AIkGzRIuYUt-$s2#~sx~KnFW8aAlOI*iir;&&8ei5O%+_pK9V+(H1|R2}6zo(Q z@7upw=+Vqwzl8y@%T5!1+|WLc^9$8?WueRTz)gR70%QcfTn)%(2W%$gllz5x<}3Br zT%t~^rc2gakYQ@=o@9kZ{;AodN~e>hCYif4+bal>*epeu2BDH z{_O2ax3KREQGXTgvJx>S%h1kX@CwILle^J2-F+p&EGaC`Uhi2=%=>lRb|Jwl^fZ0$ zptYtmzSBjSA(mx+F4u>TlDv}2J07`p<)POs#fXnBaxmAFnS*yUvQOXXu&Uq-4U+ah zWTfEAm#4dwP{8%~Nv`SD1oA7#FF$gbP32nCPnK@TU&th4|KVSZ$bJgPN9@%)HSl_^ z3bKcnpV0L^bnL5wO+wXLQ~o*FR<&1o)6_c$&A`<@ovc5PyKUFDKlY4U@n-B@*2sXw zzf)g4ob;XwBct>u3-10to_~4j*cY9j$64BCdd|+G|bey;J-h)j+>hOlXQFjEJHQ!`~iNtNB%mJhEikJ zvB@|HS*Tj;l}2~0bkJEs5O~|oYKy~-(Y5rpdUOVe%y{Z!n2|l z;0M)ME<%}{Du`U15uLzQ_$CO+ zQ@oSN3aI1MQvG5gL7$kYr5a{%iNn&EGAPP;LLMD^I_TWl#6(e!jE@g(vtgn!_~(b3 zWpBbEG}aF!Q3i=1BpoQ-TM%lgEm-s)^XnHNFU5E=I|>bDl4Jnp)2w4W*nM9~QR&S) z8C1e#p)pyroc1^gSOv+UVoL;u0iRWNUMWSNjh5^I@8?iAI>T#LBl2t|8IXGT?)=^ z`~5D-=z9?RRnI+lPyp4Shfh974>CiNF7|}#ySirrR~e+iLQ#voO(C+=-GdvKdJ36$4FX$JbX=wtaJ(4G643+SYOEXFYUk`27g7yl@hE-^%pF+F$<18xUS(s zz3Q8^@5`F$h@krVhXgHMVsIpzGC6|Mv*b$)^b9C!ueD$=_wvJv>eZCpzO{2ObR|OR&Y4r1Fw?V79D$qN&$-W!GR3i${SDNw_En?vw_oAYlx=hfRm5 zMMx87)D`Bd_ONtVNLWl6jEYs)<{!TOnjoGcypti7qaUhd&L~1)0#bQgTxL4?I~7}= zFxHffsqbgy5??a>pD*8x1>TXtg1&QsLnXs+@g%@$&=qYo)JJM-^)hKi4$i8nwwGwa zTe!&d$@pq&laEy&5Ba={n69seQVdI@82=ip>Lc;Gzcaa`abe!6DHmU zP{&W-a5A1r)ZLGT$cF@*@DUi0V4Yf(Ne>HOuhPP6-SmG(m2_cWGQT$nHHbBsPO}iC zQS58g_XxkJdG_c8LIh+HfyT6b{0ReC>v2`OC(HMA>t0SvyVu1Zc37#+D;R{TeIlQ* z_Bk%K`>&dtx=xGmK2Q0?BUz*f#XP80O>-t?f*#s#Kb_;3Qnl4!@WaV8@-c}uSKHay zE@vIU6or780s4Hw8aJWSzt!tiz$1kBXgl9sf=7q%1V1Lf^!pvLZ`?glC-aOL6=mzoL{{U8GzF)6_)*Izp-*7_lla_#~A1t{+!d($Rq>HDUgukjuvtaU?z??AqP^3-~pzA za%$j}=j zuWLNR*9o#r2_odt&YjDKcm8$Z@*SzZK$&uFE01MrDvgmdNy8oms0qnsRrz+^GJO=a z&}3YB-*a@LE$KKX$=xEdPclp3o2nv z&i$W1wqHtw<&ThG0lY?4({2wLJe<-UL$SW6s-l-wM0RskaD^BzFjqF~0DkW+I!&;p zFl5xf2{JJypJ?~CQ_*-ekYMd{77* zmE8&+Q~@p4SJ}hRGHx^L_j<7*G71RYh_l&KldfuWo1if|nGPC@!pJ^9yz9~#^~p~z zdveG-3UArHDI1GH`zdI~q-jFSY;u%d^Y9^x{@I z*`haZz}-mcjK06L3%x;naI&l|_)l`aYRX54XN;iLpS;l2)z(u6Ns+?tP3OMk)k$-h zym4SYe;o3D>3XFU8^w*|X-_}pTA{`UMKO;0C9(dpO%o_iV16F9 zB9X)jnb~doAK>Ym`LkC!;&IHKLDYl#mVg>9+s76j`cx>lW+ityNUTr84=M;iABYa! zv6XN0z+!(s_HW$O$QLm(w2qn)(%pqf^AOcW*0@%1`abw1FuRAk0a5y%CIu_$nd_k{ zEQl%aWZFP3)9`2dRo{%2m*-l>C;>$06ac5gbZ!HqL54ypQT28_q05|`GIUqXl;{(D zxoCCCni}#iTGC1Mp@+upkP~O06eXh=HB@I2UpBA;6#l>T;dbfNBU1lFX?)F}oq6t)l7)IBN{AIHnl8&WRXR zu8h;e@q4jG-LdHfjmfgqlje9*Ape3u4Sme~&@S+f(RNKH5IPG%3oO$D%eVN@VFb#` zSchnAzR|EI=?>GRM~C^{L4#~tSX=4+3lgwM}NV8}`FMd}U_J|BnKM|aB*|u|de+&Ddjb2pze=7m`wS4&j_n&4Ti@(Suq5X5pqfaXj(M z(P_hE>O;4ghQyiEmVZ&y0^q(T8KhF$@gbOC`31-R%q+xp+PSNti;Kvqq(qCWt6mXA zGrL^jJ^l5*G5a#xh|0UT$+^NtiVnV($7mJ0-s4^nwO+2@3D!TQZTE?Mtteusb{$>3 z=qS^E@Z&t0gi7i3UgEpZj=>@JBY6&y=jdNn;^`qu=_FB$H?)SZ?S}Pfg}2FFTp|?} z!eWoHWN*sAhJ#d7YhWZ#O?$-TMFUX0=O0>~>#2D-ypDyO3Z)7tKW=T(X@A6cG2j}% zUNfQP!m)c*EE|$v72Wj?*`m<0%GO>Jphw^~4focx39kR?5`P34?YLqo5Z$_HQ>rm4 z>GPb12=8V+t&Hg0v#&0h|C}jrhErfM7j>m?zXo=96((>Fup4?te4Tw}?=aKN0gVZS zX?#Co6zOgZZ@k*q=$1b1&%$^f|03c^=BoLE{H9XqjpBlzZQAE1XVgulACY(?=#xyU zn$O^F`k~#T#274-S@`nUwezL<7Bjo?ts0X5$zHWfV<+DMfib0VE`1dy8IbzxZ3*YP zq=x$LWk3h(?bm%Rs-p4w?S1l_6;GK>c(cBKA`-%5w|nnprL6NYHN2)~^hvI|A9tE{ zuGd=W>|!MHKxg<}_w`#qZ)&AGh0==>pp+cvD>3v1HdSbm7_M9e=GBju>JHg|5-f;bM>pTFiHM>U}t_| zB0C!mp!Gk8XN}G-eR||u>a=WSR%&}bW2{@ou}3F2Ez^IPWs;vf#edqB4xX^EEPDMh zYLz30cgmG}Hbre{(anv5jJvYkn1*Q?Ra@rzdpm9BcBs0G$xO=9}u!MR<%BNP-SGs z4r6eIxi4D+(@6?heWp~kMKmqOS32S++~Y$Uvx3J4;;jPWO^AAZq$yt49pchv8e|Ty(_ky@ zWuLR33-bugL`g8fhO$`%9P9XQH^m54zQ#)_t>Z!<(RjWEl!xCq6b8w%Tg~lipccFH zAOrz=--I_-^fLU*G!u8acV596nb&q5JWUjwUeJay((Ytx)GKJPqn6i4#c9er%o`bp z0b%@s!ooQ1QgNEo3L{V^h{xi@$B2%XR?(&@PlwsYm$UP(&|YnJI09j{+_!i{1SD(RBKvTZkaqw*H3L#aeYP3RGPkp2+@&**!*#%|-` zECK#u8tN^`XrB5$Apvey0~ydUR^?1|?ahSik!A+6>DlPeV_Ie4EV)%`Clo@_E_%FK z_$GhnrJ@g=v1XlM)Oorlmo+V}aqY8W%EWA%0T1PNFOpOI5$r1K`^^a;9orB^&bxN7 z4r%`IwD!VfC6HMih?|MEk9e zCHLr4kogYIlg%h6>ZYmd6ic9C zhb%S{-CKQvv||ZWQ3P0+p%#QfIH_5IJ0lhR{j#o$(Mz&;+{l-fCXPx^xF3A&K2E|9 zv`gX2M&3z;^VrNhn^_sBMb+e~D3cmoqqg*98j6jw^nK$ER21DCS zv)-Ya9bhnTRJEB^13Kl%%!g3@0u6_Ym~nZ|6S+L=jAw^8Yad zm84qm%1fxqwJy17s0bA-e2CblUf}$RdO?%zlyS=YF{rhA57+R@eWf+)*iyD}UfFrh zPlV*rOm)w=me}=%pA+|DtpjsH^5i6f4-lk?-i&aQheL^7u0{v>O}4UtE}@LmCJxgM z`Q3%cv#yVY&JP$i`}WHpWV6OiNhi{*gH8#bY3x@EbcX>#e#!KDegn!LNcn$J!KLjn zw}6`1O�m20zt+r~y0VRziW=YVa}`lx?N`@|QpC)nI-qL9x@&d+ zy=0RAf^lcfn@;&vnz@bxS)t@ug$SoOcej5oXi;?o-0T;rSxyEnvmKa~Qa_Hh&*(XU zrIYzdTp(iEMO;>ya`D)rc6p4pk3l}5#)W*I%;Nd2SxCQEKgo^n*@vi?2h=c0>4{B9K=!YT zxz>d-@8vW`L#e)a<>_N4TJa>#2&p5XaOdBS2taK4=39|l7380gzN!aQF3l|^H`h#K zv6dz&WJ}cVI=^odmJB?I5%T%dH|x0l;;)54Z!{zqGyKvT z_bXgy$?_|2021@c0U4dOH-z$<{65hm$Rm75&~Lo2Hgo?6IPmGk6qqHQHAy{- zeG|!|{LWFd5_k3|f#ujN?Tz3P2V%mXvh-y~{#QngRH&r5Z27M}?c-w&v2b&9V)&Kd zyY(#@QGq%;?P+ON1@q%Gm zo$OxJ+uHZTwA$%bLpE&_?8jUif!0IgSWf^A7+x6?7Ghy#ZDp-&Dkx>*)m|t(!giZ9Y0K~W(kJ-p40^@JBn{&;gdQ*%zFDV4IU8 zo*)MfQcA_zeEQ*9fRFh*Y)1XelV^;z{NcJbaQ70erl1*^}NU?U`TC2&IMCrr@Mi8jA z#pB!GhXBAlB*#;LwaiL*b_@X^7d~ucGXk0dn(AUs2{ETwPv!x@_%Q8fe~=7q9zB0b zRW^f?J`?{icNl{zU4lpS{j+*`-;!TF{|wQ&Z%jQATk~J@&(s9$H7{sq_{fVS!}lPt?{0!%P6*Y0>)b6??MyUyocCm4EYd^({F$l5YjojN4;Z z^H@#Fbk@XwKVqM2HrnQLt{q4zkf86bGw-o%*t&ErI5$;t<11=hVuoT_?l2OCxejeY z7kO;rje*!SxNdFSW1{Ja_rSk91<)yxkNix~d9jpwd|dPuOLs}j08~%`%V}w-#g-2= zmCL{@V$Ek|0=%-wKyi^!^va0cX)46I`AqkGd$|u{UY%`;Lq)5O_QP~NIYMo8iH4ZB zN4B*6s2a_h|43;^Mj!(m-kO0&GGPE`^GQicn8fOn?zmY+hX6;76~mw(^Hm+lJO(sx z%mLEz->5@yJ~f9MN$x(+!&B9$uhGMfX6V#QQVUrX6u#{58w$leA3p%ocqw|d(*_F2 zW9aNV?NVhBV!Ud6OUDz~^^T2&LW}Zl6z3#x1g7f+w31Bol=j-f1%a4pxT)BHBQda& z*iLzuSs*1Dn8>q?m-O#-psi1>UL#|e@G%tZ>&?W8&+ULEXd05+3Mg@4@NgzbZk5?D zd1EIbDOv)17>VZi_7m__Sb%qLa$Ovw7>8rOSrgG;8N=*qYQ5^9aUtE-^Dj7rv(|eI zd*1zM$l;Y86-A8vnBe*K8oVpJf( zc^+S}Vj_%m)G$>1jy_Kp=ET@V@gn{QKw)VIXqS^9 zy@BN(@jo)DsO=;y>;C{hoWr)CKa~O+^ADs zoxMc;pu{8kto!_fRscx?4fZq3Z!-rHs8+B>_Q{Uz{z~#&!!#@TAJ{YksGA1DrK z*YKmGv4(M5JICEjkH4)^r0M>~<0EI>r&pq67o+5@%|1rRm=0qZ){&1y=jma+G1|^n z9f}^BO)i>341ETN^NSJnwUGm=+)S#6S(&iV!_!jg_l*9reP{4^z(mS0y+(A6#oY03 zw0S&&LraHLrqg|i0&APt14zpnPd(vcYW%&j;IvQ|<0p6H6}}PJPye-Cs1*k-za#Le z65Kz_Jv#Z>9d+>@?Jv*o#jRNreCtn~g4}!h32Ld${9W~o%8G%9>9}~n{ph*~&(_%3 z=CFr*fqfXU^)~P3zpAVnrbD#DFd_a)Qv!MM#E`o@#8X)jCII&|7>ce;&YmV87||L^ zysl0}$*taI+Ns)TcJ!Dj=Tlx3Qw@T7sbp&6TSI7dMClkURsdQDNRbV8SULZoXz?*k zN~a8z3)d(-epbExT-{$0BX|?b!lgl@SsTw%v&hM{f+ zo~b6h?Vzc+s9hUMG(zzj%|VZ>?-ga8m5oSfNvLvCM00ltzawSm6`bPLM%^a5Z0~AJ z?Jk`U&bYlO{hLt|yMB1Zt~G$*N=-|3heZ=*^Jmvc@<(Bd-OztVFuj^`b-6_sd+dO) z9eJ;poGJVL?u#23qP#Elnp#Qio9_MEXWD947{$P1*4?4{Ln-^RgVD8qZItc8l!{+W zjo=5*>v(C|IYt6*5*EpVIp5dW@BE9xpL1BwmyqS^f1+1kH~aXukId2Sn-~pY z=OU!|6q5c2h{!_5b2vOUt}&Wj_xAXZMjJ*WPHQ)maFOv-9)n;$DL`s1<1xmV8j&j5vhZqfn*1s4 z3^x;=f>%>3h7Sdwgp##t82rF?M!OQKTps<4MEb4I;z>bAP;=&}Y#K0gb*Ow6*sEI{ zrIIYe&P2H4hhxwjkxb0$F^)}=)U5?bqGZQC?G56rS0|ntP{Z{npLvWdKj=)+WU_Kv zN|yC6&~_idl~#Vj(Ar5n0Hp2!-_L(D-C11N``0isnx#2o-&Glcq?$|HjDBP*!^Wi< zxF~k3-9gI&H`f!Eay)WAtG$|wef|2{(`ZHTqpkU1hrQE?HyxAzs*`zhD|T;OQo)8P zb6QNAwh0K!=TltO5{~F6u_~Y__w_;v-rN(fzq%6mij{sd6tTB^tF~O7 z|K>!mO*_TO6Yg9+gbE%X*VXN;wr&-AbC?Q%nClv)?=jePkm`B;6CSEI1sm;!#S9kk zwxvK?skA(UZg%7Q)8d5DlV{czp7 z51UVg&@7d3Xi<`GSMBja@bd1J>n=uJckZQYAR|6{PmEPUFe6H?(fWscr9JsGdyLE> zQn;TV=!(g4Q(eAfRkrdv{=28{Z1O>??Atudd0Pz~3t*XJ|@ex#etS z$Jc~wzVKAMeAl@Nl$l|szm%xtHTg{nn0uMYPh^1oA4TWkPxb%);j`>LBkRP;ChL%d zb7UR!*t=wP9D5hZLBz>EC60CMV~^}nl$pI{B_ShJ)+fsMcYc4uIgj^x-OuNJU84u{ zb)M$`8Tu%;=@;PlYPuUrTN$C^poj&LinrvqWCxX=Ksx2apwwg2+3@_bFDC9jw{HM$ zq`xa5GQUC3lm-GBEqiJo6fSoLRaVSObrfdbt++gP$WyTmPt|X&NC>1A*|bqB*;iJ| zL#SW+#v4#HB*+zz;4>+PK5MJw_(juNhFenhOX@n^I;jeuSE{8%>h^3*eXj4RYPmJ? zNFjH348EcK-*THHZN$XR>LNd~GLG7$mN>nQ(iSoeSbcQLpV}Q>r&N-HByD!k|B1w2 z#)-aKFMk?r8xR!Q&y?$Py9B}01G|Oy_vd*22-Vj7Yz;`>2*!K zIxV?+qvnPm`9-%pb4%VFVF%^esJ#1*Q_9cui5-2*PnQ7V7pvC_{>)O}2m9&Drw$st zK6Uf(KV*WsvJIo zDfa?H^x=M5o$9iyzZ1&7-Zn!PUv!&$_0L;}hg=25*R)r^eS~f~Y%~A%9-C(=v>TSx zOB;mD`)XrI)a`=E@wo&zcpI%Fh#!8YW_EB(y-?tfxU`=1eC@k3%lK_hAlau>Ea zAAJP+Zk12XssSppD zjvtsJzS+t{F6s?s9KNd~I=8|{=p~I>G+kP_+s3ZNu&M+Mmp<`w3*)!YXEg26O?&Bf4}eids{Q8K1#Kch~R03uEh^=51a8%TmmUHr4V`zg2)~ z)`&)0gaz5ly%Df-r`0Ah}AFEv*Xy5Xrd z9)uK@?+2{2qfQ?wO#vd0k-BG>^oC*gR2@@hSuTnj$ijjqfWm-`Wf5*_btPF9xke_C zJ!rLgX?a~g-NyIkV^$-gSu{XL&QDw0mS& zu6SmLwl?X#CAL{_=b$#{r*lc6m6>uhV>Zx61cU`$))xP* z_JG8=jR&d71AGY-4g~-R{f!k7VJD4RdSwh^dN$2i{Bb4u+|jQA>6~!JOuLB8AL6p# zJp*r(7@`H*%EpJr#oe8IV#iQ?2{1DYKnrt_0S{fPH@8brig@Di!!<-vpETD+GT;Hi zWhA?YbAc`tI;w*J*=8zyR6~wjuM3dsHYMw-zY}L)rs=ShVpSAt4hQPnMQd_#S%u|u zKRQAvqoAmIe?WUz|9PW0%xM0iO z3~}BtZ&6xK!B7TF-hfA9fpj*G7Bbycth~~Qo8^|1g!~VnXys#tflzHz!M9iDzwJKU zE0xshlmotCK-~7EW(YD#-)6%1{hbRrkvZa7aD5e~(!nzJ!YBr#E*i@Djp(&J)`=l8m1q;0 zRl1v#P+7&nLaIhRU|}59??vNbm&YaTpV*DA-L=X*YaTci()Ea^9~|EkmwQbWt@c=; zVrZ?Wms(QdzI2QWe5&aIA`FdY0(l+$_2qVm_oUN6XJfmrs_9maXMQR55m5?Lbg2C- z#L4wfm*vPPV|=Q&hnU{r7KmjrRiZa?TB2Wf11qsLPD7c+f9O0xaJIr3{bAXpji-Jy zb56}z1snYEPPfYdMFd{qzJUGF_QS(;us`^|+H6hLo!}+D;7_C0EQZt1#7ePd((GJU z?LDLm>imrroq!8mRkrRrpZZ4qg>|V?!AaO>9IFh$;hD!d6`CLE@|fh65m+zWwTjXi z&n6F&YuBGB+^$OS{CqS_JPwJ}@(lMa`=+GTbGKKC-%q=Xug>%H;oC2=NSc#`I@1K- zo2fjzwTfIP%rxN>KfksH)h%+*s?kU{l^@6#wQt5PG8-z&*AfS0tc)(Ed;2g{(U;YQrJ2%I z;{Bm!#s;H{HUl!WKL-zBr0cz1VwlQd{aXErN%RG*RLJ3P8nck0q=|m!D~jIdVdy$# zHMbq@Oh>NZ`606QJp2hB_IEbJjh^biGqPrX@s6n=p)b z$WslgTnz}=u=P8-pGUju?yJoE8|!58$Xame@Ys}0=;7q7#2&;aAO>hET`F1r^BR3~ zt5Xip+Tvvz3QMD+c5rvB#2qA05m|(>>3K5tkStMs_zojy^hglb_wMppm6{_ev#U{} zArp4yWpc>7jE4=#0~cD+O}5{X$-3DS+n)M1-n@mb)^A3T5W-)pjc;iIY)i4@9WkVr zJyk5vPO)ox4-7Np!T7eck!Bo}WmdFn;bfQgtcDC7@!|bPmhm$JtxTDzDiZEX5i|dm zDi4XN^7co7W7SjH5Py~>5&06%!_Z-YF{b4Neu9xUhzbID&b$4JrM+l18V+f|LDAH& z{aUdJ`~{Yv$AYt3$$fnrB@v91yw>gYY0jb58l}@ZogRC9t#k48+ebk14tO#C8NJ2ZC3de@<{7Gly zsg%~F9Jg!BhOFT3jirg(7;dWte&r3CrPw#~B!Q4xUs|fQ?T%!{XXtbI*yF^z`IWK` zE#*_N>r1p z9xw)K{-AHgb7@Hs$?)ne+oLfHnX`oE|A8Os#EW`h6g$Qf9yIzo0PgULc0~$Vgzhyu zwzn_>lNJzoT4*%axYtQt;Q|Bsrd8XM;|EXi@Hu=uo3&e5#uuC=LFf&a& zCp}ssDVmi8Vu0V301Enve~KO-Sxf`Qz{qp5uqU11PxU=1=4oSaM!9@HvXz%~dqYD! z;fP4rDMm0bdUiGI!R$iHFbXAQ4~_9TOK0~>6J!+BEJr8hJxLBnx-X)-Aw0ZeTJnk( ze@LJDKAe$a@lH-}!}N#BWrVh?g=xQWsS3w*azAaRR|FFy>rF6+r>u(nlfvp{G5t$& zYILGqFUhUpyM_@7JX!tWL0fW3x%B0R#ZGtJOLB<}HoURg8Kzelmb%@+t{D#xRniOf zJqq}zpG^@Yw$`;&&Ow&(FK|ru?Q+Hl9RsmkU2)en z9J@OCr>Hnf0`Udm7a}U!T$|E(zZ_M_5pb+1d|dn$vO2mbdSt64Hd{EzDlAuokPOK0YhDrV}`m zZ3E$_t@AB6d}QY>^C6&@>&+DN!JP{mFtx^MQ;Cv`4p)xH&~(Ogg77tgsjj`=p36$Vr8{AR?;oB+S4xF@1`!Nn}oxqGJtmMBk1q2yFgwV%` zy7kk%tXA(WQ&Wxu87-(3Ph#N<_Q!k%g$Yh06Jx>Z*tz{oKnq$T8)EDt*x-kVmbH6) ze@|Z9uJY$^nT(#ps7smoI=yL){13(1&S%70<$U5;KR{DL&$$_L5TWJj-i*jh$^ zjMT0g_a!w#>#D(l#ybI1oy@~f{T{=DQmrxbd`c>zyrh#wH#zzh>!~F;6K@1Q!*ak_ z!Wmwrr>PdQqOyrrf_B5{7T)c?vy3;aBX{yy{*p*Zd-RyVyW&N3%Kw}L2`n?NAjb*1>h8RVU`)gG(9n6sW z5oUAKb>MoQV%+?0NmRRWaJNbwrXvH0UB5|Stcb&yW3HLgKhgu(Wr<526tx5bmNH)o9wzstGP;l)I zyb{{Kolzr>j4091-(hy;&C^w055*Vb)I;%bV5PrL$ z86wFq@DY@L-eWe{ZRkBpjRX_@8~cXGK!smTMU;$=3J#7e{9!x*Jd;{U0OD^76P3F{ zWU?X(Eh+(E)XzF6J+BiW|8`v}amLB1&G~*+802IGws=G;ZG9L`x3gbsEuQ|g+J%oy zg^!(Ta&}Mq?4TPo$&(>>#%s!_hPy*7ZG`4J2CB$=Oey&jZ#$V!tqH{;%oULjENv^s z1DswM?sWL($6_*-_|J8Ij*YyD`}a`h%bZh&gQ4>L5`dGI4XrE|Js{C)q(4M*Pf*=1 z0#WvLSp8MW)nQ@sV*oq50Va8<-RsTi7`Kc_(XR6lI!{|d0g>UufdIKNEeq$B_keTv zn!VB{J2LrWv=gYI9piZKlo4$_O=3mSDE&}wt$NSJL&bJCNQtq2!v#0K8T*Oy|JPdb zo>$4lpsxY3X~pBGynsntTWRjTsqC!n%>8E%N>P`VZ`*RyiJ+(%F`N|Gvi6puXF|xW zwq<$3PcKqiVNGLD>UMh#bA`Zk<-7WA(2|l(FbfLfH z`HBO7OYoV%?MDX2`f<>d_%l&uQmNX115qM7h#21tOt_Nz{MN^bXN z@-(D5^2g_fh5-J=!z14bG zcI7#onBxxK#WCl-Bn>CB2^?9|cTYWnH_ymi36+z6cac6rvq^PURmQ@p zw-Y^=)OVYR`{4(apztZ%!F^5EKksLz!pW^9Sn^e7 zEyOU(H#B{z>CUldwO##rHQ?3_J#k^F@i!cL3w4=+T*J2~zHsgD9sUn6<+JwI|7~#$ z?+eu<y zZft|ydU)U@X4zi!KFB!8Ea1S;j>6qOP_FzRKyUtzXRhO0@0h&+=)!}5>C=*S%%?l? z7U#8I54?;kc8x2qd)3Y}53DR3MJ&{P3_qC-o+-Ec;uR-qWM-Eq(@ZyeOXg+0`QdhJ z!b7JV)_!}&AjekI226-+==^VitlJMyh`U{LII^fD{l)Xz%&&G#O=(hm9|w*$%8uV} zgS05T>+8Sy41*RcxZZqy`SOXMqcb>`Rc+Fj1E)If^>O|hh0cVaRM6ptt$8cN(fuFS zN*(z**sS1Ij)310 z3-VJPq@8Z#&-XMkc4PF1iaJf+S%pWX^&DW(gO?VMgN!$K4&UDPjMAq@T-v;>@sjqs zBl6&_zd{VJevJ^z-W$7_zx{}0xnI4cPkYz9CHH;h|1Oho=x>;s+On$$s5T=m?rlx% z_TPIXw>`fKgw`volFlw`F_a{Hq$BP8hz;_2h)+_6K(cP*@xr%@81w1_kXMP8!<;Qb zAvNR9wM-CL6=Uv9lj%9!YB}ze4=*o1a5s<%iVT@S3PE8(XZCOY6nOIMu7 zBIp&;H6R++q*q^#X5&g5%u<2h9BAx#9%FmX(T|wW$SdX`LReJ(2MGLSzD#p#7b@kt zoo&mG%4@JPu5VI{QsM&u&z0WDsyQHHnPMWzner>*M@ZTK0m@3VvJMd9kO5oDO$oG{ zy+DD5bM-Pu6imZ$ddG+#I1f#epC z#y%V=fD<35ZIs$9$2$_#4{}7(_S^$zmNyoUc(VyigfrhWNR+0IB-e606vnWBHuH4a ziT*PXhgr8SdeP zuyZA_2XI=dWJQ`Yp@szq#NFiRMPsN=>InpMP<8&SRm&%eg|V)=s~46p)(mW^+G^O) z>lSwT>6ZFe0PC}8AZbYB4p$RFF4a{3QsTH)ODTy&@()it**0$F$ z{@HkG&{xE;Qdm#A*xIY%yKEZU(e+%3P_WfaQkZY%ilz;=l?~>6-Q4Ih0?lV8P72rR zv(y!I4QOHnA_N*&1V6kkW|GfRL}u5{*!dX5M!2WZL34f2>K+)imNmO~yR{2GI+r2aaZLfMX5f-(v%(ksXO zsU8&Dz{S0B4HyO!BfNXZZx|(#NUwCCQ6@<#<8bch8_eR;E0rZZ@);OM4+pPiITH!v z!iML$1qa5#Wcn2LtFaB`U(6PrLxhP?)4QddnBO3a|m5{@9o(DAi#Sus;TDfO$q#d~08 zT7A^RZwZqEuS}}K7@g^>owG%a6*-!V&&aUoV+74CHcOmNM7+W|-(83E$V)vxUDY5BbPYi0ia+gi_)9Y(d` zQ3+7{c*XqbolRwL-&XHOyfR4Bgb?nIR5SmQ6{|ROm1g+vU6n!ybpe^?M%~|9xg5m4 zojf74@Q*q3zk94u_*5ApX-$i)~( z+};~2a~StS%|ZAy_9Q$KZARglJ`NbF_R))%`O+D1^k9Ygo}dm*?H8MA1^8(jy|l0E zQhmpfwehopPcv;1YGwPt+<^NIdE%Zv^0T|OPLJ9UE`6>C#^pPAk_{^D>t#SjT?OUa zu~X|cKp*3Ol%H!*cXZ!R$iZqaTv?GBAU^?LJUQTcS5V@lo(*+tIP^;U^(l5fn6L3& z!7=hP=FGl6O@R}ryBF_boA8}Tw)4@=l4<2$ysCR>>tsHGo;eI@kHCI?*h^u|1h-@< zO4$A(riQL|e_8WNX`Y8)MDlb@V2?qT6}@%T#eLTgtTInt>h~lX5s(|dn5!=8>~26D z7}-sq&d;r-Wh(7@15%T#r=`Zej=za=c+BvASA;r&=aP7IWM}xYA)N=9_8~U)ZPgu( zA|H*?PnEH~&~NzWyGEm9Tf3iUqgJ_!>vk&l17=Wvo`;9>TRRo7>_yQ(UH0|;C;667 zho-=4gL~G%b{ZNrJ3;*A*`#vhHQAECu+47B8SV7I_~${D^2ZfZ*{{6u1dBfI`H6J_ zUGA?`@9|7B)WrE53gwIKF7Z@s-Z_C-`{hEE7O?GkkhtC#f%aFopR3Wdo_FdDT^e?$ z|M2LnPSYUg;y|i+QL+^&+2*&=y(a!PAbj6j>*+capm^UTwd6X34SXS2X6(|6EBXqf z@xl)jK_9CLw|a3bT}6liR<(^%n4%f31sf%s%+Dmb`4E<{0<841$=rar*b~h)FI_4F6NK!Z?zGG9cxm$VSL~EC2w}7dtOvWEbJbTMuaz6K}W;W#~#K zH1;$AU6LNfaxo6uv2mdLE{M+nBtqK&fD;%)%OQArO$LDAoLNcNm;)iRZ|4iAPSb5* zH71ddCYrTAAo!=y8G(?qQpPZ)M1skvb2R6*;771Y$yjLz!P$=t(c_-_Y5IVEtq5E#+O;ikCf!s@=m*Y~7}E zQO!n)xu(e+o)gB?-DfS&%Q+3mohqM0qWtME0m~zzD_heQo7BEE@c!*$8n8 zgo6Qnl=&rei5VDuWM;1idd}Y7HwAHH><3b#(rBw!{fyhD&tywWRhOuz{?4bWlgWH0 z>mu8+in_O!Z}>Vkp~F~2yTf>+IJ^(dL=uN7P4H5_g}G`+oKYGo+R%67U5(72h`$w1 z>$(`lzh;j@wnCg{{MG>Y){nK!@zV{k??Pi%8&&D0O|axesFjA`?2<#WXBd0&GALm$ zYZL{GF!L)xlr;4}e+@NT9f#11_h!lK=v(KX$P0y|hx!ua#3h{Ib*i-&31W%;jyH30 zns}E_BGUkVGtDRqNO4)O?pV_V{73q1(ZgoE^qRi$ zB4Q>APbF96Hf6W0Iwm;lMg#!!=_-cLloUjbBKIURTq$VW=6m3L%;ew`(HNKn1U>Q0 z^SNF_;V7Do(k|Rc%HD{d8O4c@N>74}gb0XX^g`^jUSj+zb@VR)pK`y}g zn8^$!Em2~M?itex;73zKHjL@yS;e{C`fLcbOsfiCQ|1oLT@d(k`=V|9PShEZF(vUy z6mz9E^2*D?uA<#zV#`7Hdp(Eks^G>8XKJ{S?TDFGIHtmDZUnBeI&<9N)V3yJ}~8z!A4k3KGD4N54V$TO&S*r(j3)jMz%_PKbDyA_Bda_Q%j{<> zoeAgaR&^>w@E^lFxM_O0HfHu^8V_wCPi+cs`T3ENq=>_oAM77cJtZ@p&4t`^@+l|h zSqwV3)gKbxs=o)m5+#3@0AXe@AZH^cb#W4@h!{QAqd-WYw0Hm{MfC0I{7~fit=A9E za9;O^UP6xV0STt892Xy7Uvp!t* zApg~<8>7OjG4n7^@?m^V!>lfR>ENY4h!*Eu4!aIlvXkjQowq4`OHFrslG$l}PiQc! z9Z&lCGidLc|5S0{d$(PrsKzbPbcwc|8Fj(4`fQ+zdOyVrRCYecb)p#6$B9C2gB(L>29WAnD%`g&Fh(%hzu&!0A-1f;6)>IF5!)#ekE>2 zfDV|gjeMZB)qBGRFe$B{Ypg{gxt^lg;tRqPwi55p>dV7rH1wl?Ay_3P2&&b$*iK8Q z?O)24jst3vb-sFxz!!0_1%{}fPKH&IyQt8xp&#Pv|M*IxEX}IshRq*&a!oGp-eK@J z|1f%KQ)ld>)ZzZt=b@#xRW!;@5<%&!I7|lL8Sw@kxJZ3p^(x)#;I8p?aNQcMs`JBN ze83H82G|Ms72h&%I$M3tmKuxP{8`{6V5rZ&D;UW5cL7O3tB3h}Z7Lt`{Z*gC$5^G4 zQbwirB5yeo514ASSjfgSObh7GEamRzd($PfD^fK->(EYq2Kuf&^xq2pN zWanY_S?z<5k$M*o?3C@-m3;+D%Q=uI!aw3^x2r8=Y0pY!t7F#LBP{gk>zQ|nRNgDF z3C;ng#%l#cYP;^rJ89bboRH_-XDyE)*EhN>zSiBtHW?Tsy%PH6)Z{x3wY=eEAeT+n zaGku^x=QuGdG=^VS@FVaM_r}Dv-vD`v8_gMP`Ld)+hg~v7aYtt?Jdn-xeuM_9;H~fSA{=;wTg~T{~xg7B zgpKT^ic)XpZ45`&1Sh+5!um{XiYIiCr))`;2>2L_9K1wA%_1@eP=|li3xnty39s_=%lNSdh**k9wDbatb z@+P{)SiMOob(aO)rOyH|;=~0XPJoxvvqT=n65Z%IGqf+~HLdqhMKhT`XfWg(th7R7fJnXf*v3UFTR|psppEB2KN$Bc1KJ<(PPp|y z-}3F|LPiMdFQ=l~b#-&Ef?rluVM_aS{#ZB`Pk+a^UbgIaBtk1uG-6Hw+3ciN z^}_*ImDiKxJa_&hClAvy+eX#9i7 z4{GzSPsX5;1eLfkaj`kwhk71`* zEQKslT$32Xl}S4v#L};uF71bvvYtY)=x&_{bL zsvG5w^Uqv&*S>OF(PTHFCb$gkBbk2gR0LNr)F-9i*W~s#HhE)_j$H@7o6~KLYdQ!$ zT}3{MaOM6yVEnk5XyH}+uHyB<5>0T0P`B@iXj8bBfQGqo&_zzBtkZkniw7Q|&ISZ( z@w-AN0(yPmk+xB%cX{3WVSThRo zyj#IDFz$=ANjvPX`>_E>{nN#d3sR(ReYB}*c|T?tI=Pb8qbby^yBE=MWBLj7K}1BT zsOg%-QP7xFFBad8Hv^#uH!oE_UxUWD5}66+yAfrFE?VmCH=lfKc7OcDn_*PxoVdqI zX>ZQx6=9jHKGHu5a-cH(i~d>my2i0RBD}d#7`Q%(!E~h0hKS9ui>R4)nLkc6J!ysN z>iwx~B8E24>HiguV|KdlLKWWejb*phgNIdfjLSx^JMc8;!&WD@QukWdvE!ozrHb-> zJ=3xe_o1(T(A9Q+%v@R{ULBQYacP{6oGN+zvYJrXbCA4uqs<=!-MOADn^*gwZQosY zU5vV8f(7V@3Y=?_G^bNkcy{{03~V*U1K-COq*`7WS*-%of=LN`TegQH_}GaJ7P!?d zhqfvZtuK?i=V@zyo>j7YsjgQ9k^%TWeDW8cpJ8bKCc?BT#C>HqPxmT!<<49LRz=zc zquh1FJDF)pLB;yRid2QNL0=-1odySHTD>i%?cuRQ=WDHs7@BUXh}XG25IinitjqFq z^Y_Gx))AUECH}J7t*VQctxDfvf5KkH0?y#m!7uY488tZqIDK%DRXGkpbG2o!Dvt97 z91*oeW2KGpV`(5DNL+gH+8hoO<8ap;@Ed%_<(ig22h}GLR)Vt zIFlbNT3zqV{2zeU*AdlvSBFL=$mGqPG{dluj%`&pUPUi1SV@z)b=OtF)a~P?cN`Kc zEve^b(UwY)MXli>EzO0352+nrjrQF2AhqWNEO((ud*=Xp|E?Lyid+_= zRV{HrfEdpyXs+-f5Q`8TdPu1m_bR7GFD0^mQQ`=!$8gTB+4eX9z&(S2eF{W2R)$YC5Y` z(J%@n8BMWsn199jL-Vn$!qoR@m4Kl+kJUGdBX5|yWO*B+6)E&}m(0Fjh)&KFMoZqi ztW=5`fUHt<;74Ix+mh;cd~7r&MGRcx3J^x(sU19R0cdTVn=hkN!{d;QFoND|s2ed$ zMqomT&9sUpz2ESqhGVGrjO^TLwwy#5hXQ~GC(gd%H?Js{$ zAW`&rs(g!sv?Z#jywswe$P_0MjE6iSWM#6J;1i%%}^~RO`F&tQ6MwIwtJwDY$IWx8|k;G$<%#gR}VdLJxARnhYQ0bKR9p$rLZ zdj8fe!75(6ZRz9Z!})Gg%$Nht5QTt)sLoyqm97B>_DPdLO&>$QG3P#uzddq zBY!CQ7c3${i9Yr>7cy&eQc~HsU=EKb(c(B=#4ogZ1c`L5kyDBNP;DFM1CSfR+To$^ zZaU-}(E$^)y-hWA#6$Y!)UHDB&<3l&;iS?Rg|92e<{j}}lVy10o(OfOKgHHzmCiD^ zIwe~UBTXVA_j_l!u2sr8mArzz-iURdz4@B)r-&xp7Fu3n6u@=suxmbZk%~S%u{`uM z_dFfXMl>DH1ZJj7WtW?cPpYpDG;Qlg==S8U2)p1x1`2Ep3RH&Z%ysQ49VXB3Y!q32 z;~%+(0dc`a6>b=(UG%ZBmsiW#7K*y+8i#RNr~>HwdD%=wq+%;@SQz&*XQb8lQJ}HKOz}@=y5t#~f``1@mDf(`?piue zvW)4!5EG5{FXvG$g3-mGl%6N|G3(rxe5<|-x^k5}TBK$dsCWS> zHwFWij^h~P*z37_Imxhd%0FuaR#jrnP!n{Cj#em%)&_;iU0N!FP^8+g(#lUf=&Jp= zmc>wI?Sb2qvPioDmzJ%v$OgOnVl4~d20q4vk9q%)Cf*kMDB4k6cp8Hpd@e}^&7NK- z=Q0kaA4?Y`1I^n0OF11qIgU?TYpFqAomC z^^pj{@nq6mTDvcY=cLrav30%9qo~?}?NXT!tDWBZed$EM5sUYqv_77)aq?&FUR0fP zug-Tz8f@k33t?v_|MN2}4T*S@o1Iq7)zs=Vw9FbY_N3NJ>8mVt7x~j3)M&)0v=VP-pf6a3) z2{R!k9vs>3j$Yq8#Lh4BJm*=_$8S6hs4_;*G&kCcJL_-6HtnWv@6>dfRsgT&_9?TZ%@+tH z8_c6V+y)&HDP$U=yJ2RnMzCqM?I^6z{d(PsOkMslJmL*kjmDH3zJ5Et;Ny~mRO2^x zx*pE=v&{?2ISwjnKJ=7?)cnp`%`JFUOUABA=!Uq;$(gsO&&%tO`LjWqUbAIy6N2Y#+_c_>ubSHc+GXUaY*uG*Xgbk=3>gbI zQhX%br7mE0$0yxSs+Fo8ek63Z&U~ufwq`GY%RJ!h;e{kz9vhCBpx`WuZ-WG{W@*Ao zajKV-o3~Ues7*mxIKXf;lFmvb)HT{*jU?90ZZM>ymXm??p?5CWAVCdA0cw^C`k(-` z&k}>%G_NNC;lXpR@qwroDN2AEOfC7_esAV<)(yny(%Sal6X6*{B>^=~0Fu#t1>w$s z)ue(TE!u}rATmdu-57F4KxTo5Z<06Z`hn`dkfKoL69cxBCNnmQv$A3&2vG^D)!o35 z6pV0f+oVf?B+nXf9qqP)c=LClYwO+thn$zeX9#r+=dY#8z4@{IP%~LB0ssvDL&7aN zzmY}p@b*(J_%IAT#NX9jkFdHEqI^>p8!OI(_L`FG04J$2Z;wNi~V7mN^Ww1*7bMEoft@dyqoJ>enM{hY5=jf{3k z-YocapJCqHQ!%pEv28GTK1=We{<(OVbo!TWnpD%kWxHbq;I}aNjyVsvIW0f&w{o^D z_oLRx7&ra2XR~(~>en3NW79|h$V2lNd+btU5JKOS5Qv78oq-L06A{f@#5|P+yPUj9q5^=|Vt5nJ<;P5ZN>bqrd7%-OXBvMe z1tyiVHL)Y_-8^}kJHu88ZMsN!2?}tqUF`R}Y*CDP|381Q?b{!qZZ#yU@Dnnb#3AzG=X#_!>}ozsv)SEoS; z`})szl>py414&B6n_#H;y34c51c`*$#p{64${T2vFI?+;PUhqBU$$9!lEk;WoE&Ov z-rR}gIrigsh1$H(nOWO!X{}5fAEX}y#nkONnUcTw^)AuIw%56*q|U;PnBUuKu}qhB zYtEkRd>GHYCI)ceswkHoVpw+jA7BN;VOTtaIe6YgqR{`~JEGbFXxI9RUwH5tXAM9o z*TO>;Pi@G!j;89NzFl^a5`;)=G!<#qab*{ce#uIg1xjyy%Xn;Ba3$`m7Cd{dEjZWVG8wUM$WcG| zfHSC{N0F0>&oURFzE={Zbm1b}wQ4Y5XU;ws+steiC;Fxop4_OaYg-|G$K$&)G&0GoZ2JdO|$CEve$>xVUGmC5B0%!dVQy5E?>Uy zBA%((PK(`nKKSoL!W<^c;+{W<%0(qXNs{HCPNV6+S_wEhQ4H>hSKeJj!QLbY=ZHMTG_xSNL4@irqD!-&U{u z$PlD|R+PnYn`CWz*9;oAc~%7d)kBI#Y+wQs%dTeb`5vAygfFcbKhL1ighyBJT$5cn zc5sp0q#CY`2j!ybRII$Jiba=&Q?`=Obp@x$%IOuh&>d<2!g{Id9cWADXP?bMnX$)r zo+ZO=axBQg`$m93s$inmLr!N}o>KkBW3GB$bIUSSC#p{QjY-S7 zz^Of z@htij+I3Qs2ABfBhPAXM{KdHpW1-YGe)b1?>1WW}7FnN}w3`CD8PlH+2rYkQJb7vT{+hg@LW!g{jXPHjI z$2~`m%m_5i8k=5-zB%p%_W`dQElOQD`WNHkdAa){Nt&m`D|2bl9lV{gb;Dp-iMxuQ zU9>P=&V>+k@LFD!r04vQGlIzS7U)IR#gE&AP)I8>5Q|+<{|F5PsqBy}4*%nTnHz z$?#{dm8>}dDnL%bZN6AWHddXdNB#eJDQ0c*bWG>O^zFK$;>6p%bu^Z{iL=3%bdo(o zaB7z4cYe;=UspH03ZylUvI?1Bl%K%BR)`}H-&x)<3MJZ7uR)nhB8h)+S#sA6kI(d~V=UnGIKKG5PeAVRgk}rj5sW$9FMi==ie}Hgt-f;yr&M`{sKH~=s%acrJQvLz}5BfuGK%wWr>_U zZa=;g8`RRmuQTt7dc)CS+$8#RHDa{Eq@Hd3e}Lm*VS@eOWvbJ4SnaOg;|dIwH^s)6%bI zO*f9W?f=#J6y3a9y8n{basB0AX1gdp3Mu+;d|0ZyhNpFxjkE`?eXbkL>YG_DVLD{T z1o7+UfrY05@cJx0NxOpYYn`;oBxq0&o{@^r;E3;pKJ@$ zSYQOwc_PlDB~C?tg_F(rXm;hofXl~yW9i{lo2&hHN#<^7ICkk<80Cu1@p4p56>sgJ z=*|jT_+ESK(FX?tb0);Pz3$-Ng`>SXhBu9e6+c*BF@KJSnlZ8eM*nxt@G3yl&)?B> zK)Ds??yj~q4o~9Ih5+?>*M|YOAaWEt7E=2?cf*N&Cj49-qpYQKRwB^or7Yik3YAl% z+^6FrjW+pHmuNjeqNE7Xgg-rcfe7r4P_E{eO-Q9?_!6it#=MyfMA?kgX3sp#b)J*! zv^QsZE?)A3R;stwLHk0s*oG5zsMr**4+Yv-OWYa^YH_mg5Sb$=Vd2=Pu2!L_AFhZu zlEC@|$LmQSLz{12?d1nwFHj{BWS9*?^ms&prigwIZIxgQ=Kw9oQHf%-_JQMqIYdlvO5xt;M7wxxR&9MIQCKqtr{UPT{k^-WY@! zEJujv_CEQzIoQr{%x%9QDVJrJ(Mk%}^<1JZs|}s|>1BtPd)1`;%H)3E4P&R|%fcs2 zt;qK%@OpoGd`I7gz=#bv$G9()T|Ha811H(jxO*ip=*97f&%(e-IY%lJ#fcL44sxD` z??~w(%S!vVj#DlpPdq51|7mzpX?Ksqp2a_(z;OF53A~m~ce5_FcT~?WSOr??k-c_4 zY(M_wkW_L%%Pz>`YCL2*KLAY0>M{ ztH;S`YtH$psnnsolJ6#e%L%2=j3l?+bk^RQyOf^otWTBWZPa+)ZsXlv97kU2hl4*4 z?jNI0U$3;DynOQMdYo*j4K;e4Qq48ysJr{zsWP@o1uIgBi^6o)TfKQ!M5xnIT?wn5m&%;ND>($T4r4>q zZ!a_)TV055A`>K;%O}J;`)sNK{5x1G&KF_tm}OpQcl_<8*u$t?N4>q@LiV-Bz@J`6!(y7tYCQxgkQHGxuC}M@>5ybi>44 zoFZDA3nUNEB~Wg7lGv=}9iw+>Z-CTsI=)(rH20;)U;?lacT$k2BQ5Wko9`J1-0NiP z5U^>Z!nj>5f2m#dPt)p15~iSVq<&Cdz)qaADEnmc#Ni6DNI1Gi)(!%?q9Q<(ttI$q z&#Gx}rOqdP>yvDxRMS9=V#e(`fik!RfrQzAz_<16LHK-%%zFAt^9OdLw-uOJ7A4TB z?pW(!^(LR725PWUhF59|52N9%>b!qaOl5thVCLKP>4T0BLE*m1wMO9g7k6U7z+CmE z7Y+-^Yi{=$4|>Oa=6IZ;@6jpHYJg@$397WK3{5_MBw#W4@X+A>*a6lzGjg# zV=J%&BV=Qfq&fb0%L`HL@5QQQ56=b}L_Wic+XW?*F7nQ-GHI(aEuRQ0#UVm?joR|+ zE$yu(Yq4=66~lh#)2g8*YCXLYHsZI%Z#5pC*ev$BTU!rsaH>}fd!HM;zbw@(ByZ#v3a@Pl0cK4+b^Ehz6cjxt7f6<0LEV;Wm$Y$VRgGAGL2CzAl%1&=f& z1eUv|LLU`P%2Sxs35UpwppxhKbz~l?R~Z2kpqF*T&kAysRq>KjQz)8q>_dG(cx92S zGZ-fpJ}E8A`h>xROw0lN=}{3`Rs7}Z%wJsZ9cpMCY%&~8s}TiW<+#(w2bmWng^x`= zJmP2*PG}(PJGLAbv@ZN)deCr`&Bo^_iuV+BDJso+F zQc&D4Z~qTK7MCmy6t3;+nxv=bA6^N+Fak$7TO$c1#Lu-@(Mx+Dv?t2PgQ%rjU`;aoq}Ct+93V zY?g|yk>~rU%GB2vWS%(kIjt869r6=lv2}jQeqpkdruT20x|lz_jS_O#!VK0r&xxqED|-6KVu@_K;eCxA#-XdY-Tk1PSEM2OwLb&xs%cJ)QWB2 zDojEQr_W2>^b|}fP8GlN&j790xzP>TGBECCeGzhx=H4(40?@$k>ZVDpD^DQ;*NhXxl z@Z~i74v$AXcjodiK!j+@HVN2{l;?e9&z;FRxJY=PGYMfkp<^OBA>WR?g(o*=phL{Q zNe;SvBYW>c6-B$z)8*$N7riKZZCaR4YhUsz+W|l>V~T&;d=E1kJ!6TeWR$0YGT9g~ ztJH;5JoCtw0aJn-uq+N)hM-ezHqflp({+GFmw^m{a-OtyL{ zg0D&6P3_891(e_AJ1Z@WOh}eru{DUNk>&q~pet!xEp%?+&Wd9HxOc*wxR?08BFU5+ zy~P!?(>5o7Y&vS8qteY3 zZWAGogIe-R%)Y`2(m$@#io;qVioXquyU6g*L&+#K$Fh37U-~jJ4m0yyR(o@A=NliA`N5q|Y}c@+nCk*?p=Z~|D zWS`XBKy5*9aJLOITJMiE98CEJ;5l}p`A{=I=u5u5wEyzTM-iUUI)d7;FM}(*ABpz# zW>IQL{q#fERB1q=MB=-F!$zPkAH>>VzRd=+=-XNp))P;izUGy&v~Nc;U*Rn&*gl592sSttLW>(pf8yR-y3YUccw!@#K83h@b)`IqcS7()p=W* zR}F9qwbZ*9Dz<-9?z)k|ym$^AWmhcMZJ7&+%D8Vcuo7T9;J?A#S%^$+{^NnV*!_7z zFc`}I#c`>y$}3fzAh#|>bM33wG@GaE?HGFbmY#|~)a6rc*+WN5k+AnoG_F^5Hx;$v zKFyItd*U9y$gj5P>CRC4OSA1vC7M+F`bAYxhzXL&q=X16>@HY>tmD=P$iLRUz|e(< zS)UjBAKjB(y`66X@Xz|yHg<6SaIG)2;N3OXEqN}*uE|TXW*V{hgyhZ;>!&^Yeq&p7 zBNS|hi^msHK9AkMH8|I#bFvLD4n&yXyw+A8vFQsfqy8ZJ;So!9mH%NX)-Z{2xf&ttE$ z=n{RWv}hb?`I^NgAB`&a zZ&`Rq55M9-LrsD-J0IMf^JUU&o2@3JKzG9>yT||)7!U7rMaeJl;f)G84ZT*|)t6dk zCHjFx4O8a9KJ*V{TUvYgx_xXC^r{_US!DWIct}aUN4~J^JE1V{raI{Hpt`gEz$eC! z5LWZLTit&pQ@konWgf?<3YXGF1T=cc0qcgJB>f;U-AIacoyUlPy=Wu{SLjtRS=5(=$e=tt*atuhs7b<`vcyLtS-}10zJ;cu8tcin` zb-d9N+zFgo2mZ_|`TGluhA5nj!HCk#slQfmu|%}`y3Qz?=)e$%D=7bA;nZ{4(tq1d zb%@`RlWlw9X!q5&lx*B2di8$*gluQFmd6k(>;B|F^k+dCvb)O{uMm<0*+EuhO}6?h z@5#By7g{HJ=$uoB5;zsUy>T@SfC50yx5lDZYDS&(Dd|C5V2?P~6OVfDa>D<&0fIlC zc%_blz9?5w&d17~B061FG%#fO7a$p)MNUCsBTAC~;&tEbLZGPVk<~LS+YJ3^&>$vg z<(`lHpTvR8aXn(TcwgV(`D}K~Bke%^ad=uJnI{lv&dk5jj zF3D=Z*TxVWg-XycYc;ylCr?`skjMPc?TYynEY@myhnrTg;pe-S`A#Mzl{ z){PP48SH^>9AtjNo6q|t0J?>u85i9r>IRBH;H;PEG!f>%b2B?3nn9$MbR#`L^qdm1 zfl(gK;=*tK$70J6aqk%}HT|Z6)@^=vOF5N>nT?SR>V{?ROCY1d0!}xJU_{;nk4Oy+ z^CZ-WJZIISXlE~OQYOw^9?T#kgZM0=4X7U)*JRC6$1y*glF37Ktm+VqnBZeUn&HO6 zqJkt^QR5+>jCqO-mhl&wUoUT*hIRbm+AK0%o6MWH^^j+sD)hEW%LeaY%fjKa_(<2( zW%?d(gL1q0!N#X}akoTQLQ4DX+=+(AeF3UW)afqWTHrH7`$Ygy{`T!kzmtQad!46F zGDik6VXb}!e&!kVn{VseoKf6Ks@A-7-=(S>y&W2yxmhhaqWp7OaP-IZ1D^3d_-Ash z?o=*~mmY2VX3O1p#c*;8*3_?2AMN`FlDMKXTffMPO1}AOWIO%a^nZYX;k#eyu>S+# zU@uUUi%+|Dd*}k?7=s+M^p5l!yQS`ucc4ExQG3TxJl<5zW7}K#6@F0ye(QWEMpt;S z#6(<9c<4b;!54#}Gw=sCDvht&X=J)bDQ*2RqUzcqZ@FOu3a+uF=WWyhDB(nuBLts( zS*55yigK}%(Uu@%3_2re8O3JLytdX;YF*}kv7un}wiPE?>7f(K`>W~x z_S*j6dEyV74WUNGPNnf31NcRWju4?j39KpeXwH>{>Kyl?qOTHW3=WDr$} zR!T}UTW;$TY}0bKS}w8nzaIYd^%YWWMPv!X`22W0ANn)Gy8eUU^~%pl0m+{p9w{WE z&6=pJj&Q?be8RFoMwDcGeGkP`qGMV*mve-?b^B%AOrV!mj+&7)Wh6SV?~*L>E;OE+ zS6~Pu9K3l)>z4 zptCLpihW;<%3Lu>9%;gl4Ej!qZcQq5KlpIq=1M88BR*a`H2UfB&&iL^Do_`6)@@95 z;_>_|xf^NI;am%lt&~Z0VeZJXFpN9JF&IcF~IzN@t_>IJ0dfA=Oz ztamS;G$5WPz?L({ZSjwmdNVNEbQ*$*gC482QvT-STHGmT)H$ONpg;R4A4oppW8L=I zIP050z_h7vd^-zuy?RVjXhh+}#mK zPmZtBRDOch>B$+05zZ;%^cS$_6?Cy<)1=PT|OLG69dLwUk!T zso-}^p$0MbdWhJ2Ql`!Oe>MwS<~GcCH!xvOpL{%XvgDaHw2U}k4nvx4Cm^0()&ClF ztfULDsrm!47F#_vAtRmt|A zPUV+TL+~~HiG*Y;mCl41`ASq^M74F1D(FP_8robKiuy74Vgdpr_;fEe=~TJy_L+S8 zm3`X}_N+&oQcj2u=b1ibxTl>L;N|o1ofm!EjfXd!I3I_Np)uCkuc$AJPc@7J zyn@{j!T6Zl?TyF4ccBE$3%@OEqs4!By+;fB9+kiE?MCrR<%HXIS5~8ja$Dp6A%sf| zJPnYN`DCi7K@C&i+Z15-lzsU&5Xe6WrkChqOhM_9({uMF9l1;{*espKJOMVwi!NoI zK~VWX$hr6@FHwl;J?0PKIUD^oRwksXA04M;S zwuQtr>r;mgY#=3cod?HbnSu9j4nB-O4veoETZ!U)SG)d{|8-HD*+ltebMyLO<6?gI zl}VHG?TLZw;2d;VkDkC2r1X7?W@1BMnEzYz=gGGluUd(>)4c*zbOWHfewTLp17W8} z5s&=VqdrUiaMT_#USNFCz&R>mbH&W|;UX=o{;0RrexPpS+mTrw718m7&g{j^^IJx^ z`#mk2lEWN+Voy^UMU4KtsYfigZC~t5jL|VP1;B9Paz&tU1TG=O_EhNt| z>}o9KElKE^3Tkap=%4lZGPioeejpN@bZ$6#McJtauX_{V&}(&kXGNLG`Q~B)sn$JT zeP_62Vvlt*`*BM+45YBT^vXzb!VM7Vc#8IWRq>=ay}U4r)xIcusG6}3FJGo=Xz&VO!Nn2YkPzm z0T#Y|dAqLYR?VsrMPE{)X}~pgd}(dFXuSG?`d6zicez_kv)tGnQu@YBC~!jv!|asw zDUvHqz^~&WmyV{9Z`Thd#&M5O)hLSvLVt~ybu9e54fj11w6ssj9DoJr;`q1Q3q<~Mmu`mLAb_99uXaXT)hNGzl-#mnv}zB0rh9|f4~D(a%>ZpL zLSh*6Rf`kYX;GolA3Gs+3s-+59%dcw@5{n~zHxvq1`9b&eWmVI={$3x_54trv>pwW)G5+swELBIXSV{4fTQUmy7%(nG;bhj5DTDAlTE?#i zejOc9B+$P3J9lWM=x|HILDE-mPzYJR+OB=kw?gsWmd%s(!t6Y)-2dh91e817##o!G z>zkb5Z&w_H*B5`nnb{g%ZxyI!MrP0@uV0nAF=@m73bMk6uA>nw^q7|rj9&B?QOD8w z`l;TgAI)QfzzNoDJT#ltOIn?M&6E`6pGHN>MWrPcRFoUOrq%qXQuUb@O=g3lpl#dr zkGGW-ZNm1am!@XCl4A)nHxi&_&DMi3$7Y#MRtn6yF$I}@#m_(=7< z+A2o~j1`rzC=mh!$#&Bg0tOIn(es`cdS)KQ5W_9n^beqS-T;~uu@KXG|0OCl9Qe_v z35tiCiQ#?Zb5^&)Mp`_FEE5VeN6_B~ml@S8a`nFJqXlhxsCgUjB`I>WFDchUx3GG$ zy8N_&TW64)0;cB|5HWE$G!HH^O(vXdX0y(Vo)eF)G+=2~$vj_q;uc6DIUPL=UeFbM z$vtX#Ev$adEjg-vM`I-_E8*Q;J%GdWEMPc4o#L0vEV-Qk~WZ2>LuOdmDb>`Rtm$6(K{kL{HCJ@aO za1-@|gJOyjB&ZZ2IVEbrQI2fUqgzGvi~EvM6FkesVmM3BVC1=4&Y2gy=mrE0iS!vs zGGR%0RH~NcuCmnQkayM$B0q%BAbL_$B!C`lbdfE_JC4mS%}Qk zDeUr7E1D)3xh^s-{d~mqb-=?EgfKessSQ8EN{2JonMT1shLXQyJ0F_c{E<~_R17QP zFUqE`Hj==sZJ^c;FxTrz+97pXn~mRpQ=Efy@X3QY%h19P4iaA&!zxm>?g{7vF5|3) zi8p(xEd~UB6&Wmq_JxeTWR5(uUf)h1pq0+BNkih(y>X^(=ahoR^RuZP+LWOqx*R|o zbWXBELR^&-LiW$0-%B9AG0#d>T&dROX}h#fCaAW$`wD7#<+zmRGDU>}2(*F!JS-Nj z^odY>E!&I&MaxJ;uwTo?88$r3J!+r=An0Bi>PbO$ZU=}8QULiUJW&y5)G`-A3XW6vcJ<5k(RBSO(D&&m5AN&;VQN&VsF{lj zA0ZDoA(JzKJ0eDJAp2x@sa`-67We>R!CTLT+E$x*6(+n3(QVIaS)39UXfZ05Gt2_ z?HN0L7Us@zNQ|Y;i5iy9WEUUCK9&^s;GkYmGG4<9`EoOwr0zmCI86F7DMJk2*!1_q z5_x}5 z_7_jBc(GoV9Z)h6RO7H#Q*0_p!MyC0ktAq^hC_lLVJp`omO)3knnep2 z7=8^SY2kA_+=7h&5^6tVX|zjm1VLw@cIz}d{}dm&1Y$NgNL$O0MhMcHF$WasK=be zM1r%c;yDNij)pOyh`iz`6g+0(UI2Uvf=Ql|uE*5TBUHT3!0rdJS1$Kh9qD_&gi8_%}MFH^0!2LsRHR&C#Tx1Coc1&!pf?V_lnqX&AX;9Mj^MA z%r@>AKjBGG{{gT38lAc!JW8vT49)a$e=4HkYV(+pB1)k$C?Wp@ynJ(R?MewKP9;Oj z(Ts(&DFHtEa>y9?-yFK9|7XNICY$KYKZV?jt0fRAJu&*UwAnPPNr7D`|qjPGw>`-5Sa#5xhezb|K1yW@Juar>N|leF!Ek!OOU%y?p92zBJd0o~{+ zOtIX6TK#?XPMoxuk^oFvEJW~513y2Di-{Ln$zL_S{6p;Bly4nqebCMvV=ej&A)njK zK{|j_sZ>Z2WIU3FX>-R+w)epe?mDZ#;d%MCD3D%7S^jzXewfj;tlLL#t7(=Xd3xCm ztn?k{L;yk=0hp?sDgUq+CuMVHimrMSBCb#znxWW0cXCSRmi~gRjSDzMqQ+%zJ^7UI zITC$lw`4bzemN;KwcXx}$u}qlZN8COjrRXs|HM!Kk6y;oNpIi-j4setD+m6#`jNkE z$*qTi3H)Gd)W+uzGTm27jjV&Ii`KM>w~l@_NgbNbl_28}uZ^w`Bzlg6+-=x?)te~= ziR`^$LrpY9o&a3AMKst>&zO_hS2-rc(w=I{}69;NozO@ht*yRlbTlzr`5`M1}x zRD}c*4O*fr_nS$Wo-{Q%ma^>gJw%6JfzY1Vu)9>d za=YD{0-YOO1YtKVpC=)LLa1Lv75_rZ+Eyu_n#<(D=sSeHpEu@E#%6kUG-zdvS-4b2 z#+iLf0Dxc|qOnzR{4l46`H>k`&3AL^=M<6SEE7Q}z{6QllT)5K_<-Sm$gE(|%Pen> zRLTt=AVfB%2FJ`X2{Bz+z zHy)U0#;!W6#pbp*-2VgocV_~MYPh=iLYfD6>*pw(5g#5(9u~Jbr1jF2200;?Y`8L1 z@6L+vm$}wx6pfLQZzqPVbSGO$ygiLt{BPepMyl4=QCWm-E2)zoT*~5|*T<(!Ej~`Q z63P`9P9U+hewCU$a>Z+VJdH3N)C>suDX!a2P`Yn^U5Bo(WWuY$bpWYfEaU!KD}9|V zIZvkQZ_6;IL~?hNsDwY5b>K3ka}vQ65O5B@vS<(av2Us|WgH-vPU7ByL?pZhvGiT@ zsSMF$12F9Vn?6&}f-p(r$aI*y-&)w=T`p=Sxn?)KmeB7v2{$d;H-I^#uNrshYRI zMd>wRVU@baZi`bn@L5tgK5h22saxM8nm_3t>SEYPnLtC zhES-mZ7np~XU@PAQm-hcm>=J(MzEelqAx+hM)E0p*&!(ZRTO9{!5ku}5mjLV5{}o( z#2L~VtpZV;Iaqn;Ja{asBP%q`FZYE_BYYQQ?JrA2=y5b!G8i9c-zKde)Z+|0>Oz?m zca|a~6+UW18H2UG*c3hvxvZ^z*&A9WI$~Z-zw4_GT)b}HXzfUIf5^i50`D>ub?dAR z)0{e5NWhX0*Rx~7Pwa0o5Q^j!q9sRzP;21&^YW$r<@T=^0!yE6f5b#f4SqNGjU5Yu z2fulg570%{637%!OfXtj?8AmiT#8oPZO5_Fr8#i3sxFWZz13`ptjai@pI=$(Bvk^U zCpY!1~(PWj*9J!vF8HGAhkbjOX4732{ z0-hzx-;}tWBsZiARMrz=c6%}WptFaM+%kIDA$F_UK{=FxE`Dap(7Uv}T+cS}E#l-nz$CM&nmA3Ue&l!W9 zR2D+JqCT{}#9|_C+pBEvgkH{%&~suzQ_fUmZOqc-f3ao;Z0Fkd^;lJ!C?>@2sN%X+ zXJo3mOAC-f7V$s(6v1azyc zi27akYW!N);Hhv2T?3d0&bERaGGD~dDmntQTtt;<@}#vE{0QNHqb=D7%25Z2126xA ztk;Kq)1{kuSgQLW^ou|jI!mrr+r@#hlGZ%1uJ?Jj;zrHwGq^I-qI|5TN9(ig5WQwn zW+sE&!*eq|g+&EIjsF7K-o>2IQ}{odxr^1Nfa@guT_E7_hRKv~0>X&A_2R+T-2pC0 z1zl!JM#2?dR+MmKe{}i~G6OMgiXC9CHy77nk#oe#gCtnqCeg zN;XpdEa0o*Sz&CLzu@(eoOl;})cY4c9)12Cg8Ks7F}eAUP=7OapXffptL#U2I@Qi` zQ;)O2FC_&Vf_SW*7KW63^h-uqqOF#OCDWjkqqiv%~=ed_OjH1h{ zFhztcK6uO%LN*FL+e8QQWqOqyU7|sGgQ<>VOp041^v>2I#d!j(g#kQLRavqGAQNTn z1LE&~?V;X|bq1HKd!fM$7xqzce49nQ%V+WLHsgVS4oKSXlGszMO|O1$9Hf%AGoGv$ z1H{AV)Lbg1e}7A^V~SLOBoV45L?M+QO10gOnVgpSBrv`3o2qisy^ZS`zp_V;yC3`Y zR3QFLrTJWBdNVx#xE<=~vU~iuOjDoM#dCYW=sCJw?`)a8?$k0Q2A(-+Hjp9a?;Ok- zs2z3TXkhV&Pio)Lqf2LT_Z{SR0Hf`_aN@e?vyqYbjCj>lA_x6w5}=K-=2+o@g3;Kb z1N+eX*+(}O-fQZ27drFpYxpun@6)|4*aNmH&K7++65bj@4-?QxwdLJ+Oh_rO@P+n^AMEes40p%Y3LIlmFt57BWn|`VTBr_3?OGsD^;~^;~*~dv<{Zmz%OmZ8XI}p&S-pudRs2# zh4H>A=hR_Odh@VXzBvNR7|0~q^=|2eK1x2S4ky!FALK=%9v;z*LoSE(k&aJ-97p)f zQn4#Xn8LQ<4LQtsMP;yHxBvQrph&+e4Wp{ZyL1OZNS17P~6MS#6blASkdMxrdQ#OhR&K#ZPV4 zq!2hROvlguchCF#6`uxsg|?QL3)?_X9)Gh30mpV?n#I0t9NohHwd2-ypb+C=5XXgn zx*X|WEcn2mGo~~u&mLx6?|05s^p=C|ob9URl>T^8+pkU80~(`Mq`?>U&NQH&>9YNB zs6afyHqA}`v<)028TAy) z;8VZ%Qi|}4Zp}G1WOwE%#1EX~yb`fetrAqSnmdgr;vXU$alVe!VarCnp9n$~MEEj6 z?3+(q_ZjLZlK7m@G91sRS@zy2!k%vn4U=hhh+Su0RuxmkO;$C*y<{iQ`L+n9XoT?p z0MnP=_BE};2g*C<%A3$@O~GO}qRn1xX~sU8aP|(BGRnPB7p&DP(%4Fp!*i!8S&-_8 zsz*5wzd19>Qb;zx5=dGABUFht#j>tMt&@A_L_o-?L14cbi4Q5SV`Vd|LWFB*@#L8T z4ARFq1e>9q6ma1XD^*oan?x*GRSvR%DT1RmtnWQ5^L3+*Lw1CovS6#Q3|<2Tu(-=F zBP(YRWa^gy$j7pbfI%oGY88?UQgEy90Y9anR_0x{N8K`nu`?@9sIx9|T%HaY2-J|L z=3o{UIyHYzyG=ccGD_jj;#rE7qD@Cwq~Dm{&BT2zx<4B0;*}dtARVTRF~OVia{$o) zPzsK$^a&f(()!c+7x(l1hAYpMV4DB^n1cT__2pp4ex}I-ix05Yd(RD6IvQNnai8DK z&A>{fd5@U0x#i?wOhQ1;JOvu2xqgk!y6c{vbwI~uRh^D(G(uaWfSj|T&I70*i)Aqk z(V~{6hJa-0z^N3eUHfvn!6&k7m4hCxDA8_F0CQitm~$sx9%qdtov;V!v}1D2hTihgdPXaLTg`w3ffcV7y-#T)vk|}p``$(jrpmr{mSNtBvI4iizX5{2>}jkMm6_iLLUfv~~* zgWWzhWpvGSP;R_O3j7aX!Avyj;ef>&dr|toF6Iw1MYk6yamtcZasx+&aZ*oA7DNe& z5^-oyUv9K%7@|vZr1bN!5G#1bV)%<52m=x&MC7ikQdj#XxnfkW8bE34_3u9-QzgNex`>Ps8+~7*>C2uyp+)-=7E+PrH%&k@D0ESK+(GzPts$N<2~d+e{n8KaOh>zzu^D~DjdTiVM^-M17vR30aQ%D%2-Wf6RQXKvGX$Ja1aH%Jfw=s;h7O^VT}@OntI z6@hO38X$l-%oVOyD5@ZsZlxyrmSRGL?E6f#><_;Fl zbd}MRl$EiNcm^bz`%*vtEu4NS51ktmq0ZF;2&SlKLl6SNx85~XO88SNlie+45p*e7J`@|FR?jGm>nW?`m&ZJ?1m&ZTw@VMPToghcFp(gQwLtr?eUOIYNE%e zpw>gKG(%`UfePPeLg|ey?~l-NrdxPE@0fCo67KW65fDih7T;&b(4l{DEH^(l`y#9R zS0DZ7(Dm>_6!631IP6kB+-Q9UzyaFqFWHn>Xny%-;P@Hso7%&R2R=3fWqwsC1KmLL zjC~B1K~103q2Cub@jgAul5DuL%69oT>e!*^@J1iO5YT3vKNERyB=+g)dhc_VEpy-9 zf=Gqguq>t{{Mp((KDJIN*vOTz5?1xeYInr=dA6vcn&#K>q1G3$N)nxlw5q*}zyM z@_xXz8LWEZxs18j;}CPN^aeUu`et8>?sNUGn*qk5d!5fn2UoQ9JrDfC~0$Bq7J4_c6}fH_U$d{7;M=cVk~kF_f0(D_yUm z*c%zWxIxtSemx1-;UE&&x)vK=)^2C7>-BSqdr`xiIC_V6hV=(*HA$Qp@6AN^!EL*$ zD>hOnRV({r(0-hSO<;^6pjJm4Dp-7?*T|gd6{qGBr=T=cCOKU~lj^7}U^&!PTbQzq z`h(dJUx(EeJ+CGk!V4ay`#V~@PHc)kaI2Ok_uL%%lc9>)@qw1^fi2H^e~uZ37!O*2 zpcb4FQb&GACqf<3!GK?_^rLXtfA7g-j$YgQH4M$@-x*wB`*})udnFPMOD0QL>gMMz zH)1<~pF$c1TbnMsyk9xFg|7mr(tZUeODyh6$E*nuW<&Wp@;=sV|g36^eLL2z=UZU)qYUM ziYJIbW10*>WJY?N5@T_zwA@Kgj6gdcfft zRIL8*@A&ks$H&FOy_&aI^Ts7d#&W4m2@}Y>i<<@o31XwXgG-aL21PCF2kZwpgz^1PyPVqp015{HHp=3mDozecs$wjq z+?_otWN#??PjOxQ{4wvY6u;GNf@NX%msdJ|3U5OMniV(NYQ2vgf2xgq5rW*lh8rl& zWh{6I=;*imW=TYpS_KpbUneQ~D)jb9>!Hq(0YbL3{{t8^e1+V`c-pG!j%#h|OHTbl z*K|n0L9z5UPh*4Nv;euhGfQvZR-$<24h`EA7n{`BZ9&~AaLnx*#TFY2AZ)bdrt^)- z68?HRy;*D>w%2_^=&fH-Snm1+aenjD$n#fnNuh5>&t(U}pxcylz~@ucf5X8pJNY*< zjz(#@v@fL@^iLf&t3Mh1@iVvebVTPWvn?P`B0nYCh;F#!=KY*sJ|rLR>$=bL|341yV~Xcqcmp6s4?jF%xw)pk*LptH34h9Nrc>jR184R5 zn#@humAsDP?ys7CI)7GsVAD*vc1otN;u?W}#AEvP>pdS!Sx?7N)#UJ(y1p>4JA%>h zAE1xrc>ss%EJkNe#b;MCWXS=L4viYvd=EU%?lvHtN{Ozt0-!>c8))IH6IF9!Ixqw4 z2t)#h`6#5>&<9Chgn|&ZGB7m`r1_spiEJ{`Lc7$_qzo>6HK%jkiK0{&ETy^yJf$no zI76#Z;2`>Jl)umpUW|S<%NgtV>V$cU%keLUX5g&+6nS74;80uy2tu4^d=6#IoW3Zk zkccFvFkqf!@>dR9=TRddIkkUq0j~fRW~v__3$GM_!N|eNTLzO5Fo7;K0!1t|v7Q|{ zI5N3+zWh$D)@yx7BlY`uK{$zz_~^)+%~7y}WobeF`!}152I<{;y=!8vujbZvg|)r$ z3F4)$^NuIC(gmobjK4J0*uIO~1_rtOCTdN0Hz9xp~`am7}_|Z4}^Xv1g6VeY4q5 zY#qiCemuAHSHej{W z8vML|MXoVd<^*&ulqO{OO9ZJrIKT7Z%SL=DH=uk9#DM=h2q?3Qgm*d%kUWB}+upDG z(%OUT&TB)w3SRP+JmAy8QqRZ$3ncozsMPi>_fS_+*%p;a51q)jLqJIpH5j@3%%R4=j@W_)$OJDLBaH4cyE-A!ON#n&r0bwAIcbP_!A2i zmpbN~H{Bq$M-C6Mrb-fdTxh1_a|4ZnKRnn>=UsLcNlsJX5+8SXB6fp*+)6YQ@XfUb zpe{Z4QTFTYI)D?=(!LA>6l-9l=;FkL)-ZsfRfnwa>6t>)7EFxf5bs+!RYJ11T)!XI2K zrW}6gssiS;X1W4V!I_=K zPCVy*4vmAZnPUs2ezg(2a%bS@o<|hn9QR4DUBBOQ#)s#Ggq0`_nX(GRRUjJQ0n9W!i-@HBwmAf{Gq^ z6j6@wMg~A-yht2bDY~Rj?5F;dW(PQ}lw^Yof`q^EgPhjYsfFMp2Naa%jkM$}K6&M+ zC3Fh0jy784m=~buzIbA<&4}85#GIn`E7tDQSY* zbMoF6NC;#0nrx$`Y$o(CZ-L8Fd$w+QI!nT!EcbeCpV~FIj>qg*`$&iJ1KEzeh5OY> zVc|De>0+(Qzj%JBl)3(REs2SZcXjwevD%ma*&Rxb#*)y9?-U6S84zdAw{~fZA>p(2 zzTp2wrGfYt;NG=w*Y+ABLv}m2b@dWW=aNev7I9N1?T}Kms<8?4#k6176DK;J6Knjw z<{A<#N^YXWmFEF~Fb&bG=V1_8E;T5(Jznex!YQY{=jL3vZ~+44~C^@ z#c}D0<9WziViZy_XNhGRpA?Gi+^)(t;|nC8`_I+McEs~ATbiA?l0~urvrGMXzhvIU z?D95^Q7CibPD{-0?jzc8@9%l(s3V_LyYsLY8XhKM{s9(Ew5tAbSF_ii=cibXsPnzh zmF*aN1on1od>r(CYWT+IjC*?CVRyO$-{56}y3$TNOjy=+G_(wd9S9(PkB52H0`W#^ zzrSV*&y4)pGdWI5<2bpocjn67P^2nNOl|d_ouQykJh$PVFtP{!^YV-IhUVjOEe#3# zaIa2WPMw=;4}>WuDCkL%Gv5GB$Fv_sQ~y*ee975AUc`OEn38=y5s+w__e#PffFaIr zR1688ddsI((`P=W(V~Ct4abkHCXT z($j1iS)Y>d70(H? zsy>w9x<;by4o}CWfx>RCcc69?=MX~r#5w1A0c6AWWu@Qkuh4E4DM_chtXhvkhbz^zeC3XxZK~c-qCY|FWCDGs*kU zvKarciS#F;ju7;&mU-LO(=~!=Be1lqt>)@!Y@ueYl~-O^62R^y*1;+`H6e@>kAnem}OAt`Ek@gGmW`wI4_h2r3f0%XK?kqfgIm z|HfGH#eCWm^N1C!)J5f(T}7bv!n;;h$N}_&nYJ2~Gx6rV)9M5{VDyrc^q-pKK44&a z1*+|<7*awVfmq7-S9j9EHHKAS@Rj7#LCYoj z-d!nn9cLD!jtSwpyK}9m3{I6a!*4lwHH%5|RAj&JFWTuIZSzru$^vJ}uYv^8&kke& zn5>?J)5X#g8-X;Cbe`E#KL)I)VO3tL8j!&Cdftu>;a%6u`emiEUZX84B?)@1{An8g z?{Aq13B7D<6ML7zpdkiO^BNJwMQPXYzv0`s$+7ZkQRZ=xUK=_a;4HdUxbDdeDW)Mn zKsUy%v78@(1r|C!K>wAezUHxeR^iF!;SY~_ZvTl=wUa{l@doG8MajKL>SC&S1#sN; zA9j!asrLH}HUNY_Bj9u?E)uGd_{)Ey$ z(@;{rRAtyRxmo>`&y5_+&JcMUA%1tIV&nzals^O9xeMa_o^MeaeS7a&x1|>4nCha{5<=Z3jZ-rr*!pQ` zVU0o80tm2}X$k7ot`)vf#Nx2L=DY%1Rg5hy`|j($kV&fuvAmI(&<6NZN|0r^n{6@4 zwP^SF6xKP8c}%Cp(N{)9&A~KxpN-7Ngp{Uw)>Db8G^)*s?5*v@+b4XA_})OcG@bj} zyt8a!Gn0g2fvv!*^=X{5u+}-2#f>Gp7c~Pk*0;N+6H^R>vTNPz6Y!V-s3#pj2fNtQ zG+-mm8+(v&8>2MyC`i8sB#&uoQ-aXwl@B}HDZU|fxb zo@R^pe1Y$ib+ao&3APRa3zhb>kC+GZUR`1hpuQPvs9;=}B=2?lKh=2WJm(m5sW4u< z`J2iy>Ji&^RWjN}>ZiTq`R3o1{BFsi)F5@W$X*hsyU(j_*3I__@W%YZN}M-gMT=jN z)D`Xg_|lwvr>CCaIm2u9w6m3x6oV%W<9j`4X>F?UrTeEX22Ex!bMGh8gl7!}wXppM zaM)(URiOc%v=EvV3PYJBqhIO>8`{rj4P|$u$=CyXKO>t9EVofDV)IO$tPtW#ARy42$Bt2e7e91Q=OfPm_7s zH)j@vwf{FmKgkA&|I)Ffa^S4-G4VN+Gik2NGfJdbJVl{3NCcOTp|;&ju}H&N93>8x zVbWKZRsaZ#seZxR9^dcoM?)0%l?K!GG93$;owOD7SZCk77GIBi6w0%p;6z)Bk@)%r zO!u3WE)0@QMkuSfUy5Fa9bSF$IlbYO8<^!(elS`$P&!Lnm0YimqKHke(@=F6fId(_ zxEN7)HH2)0;dD8)Sf{>5h^JWUc}6Np%0{ICAPeHR28;P2A6fEqi>;NY2tiSFNGP|? zeyGmnbzd7zD(-)P8Pd@hI!E~;YE(d}kiC6I0gA((V(z1z;E~Rj{Rp5;6#>S`J@W&O zN$OGQJc!3VQR>W>SR7{(#xr5Eb%>)UJ6OT)gqc;x@MO}{6EiNb(fJ^&DK(zc;0Ml> z2*?fU@mBLDytGMeWts7u=L0UW8Mx1{65x_i~8+b z{`9?9^11&3_K}rGx-p^n6j+f_KYiK2CEM*~-TC%^k0QLd=#k!)Fej!8kgsXXe}K!W zgKIB2U}qge0=xW!@{u>PsFINex6L0UR=eCVVK@WMEV;<`GKd4NLdo=x_%fmQU)-v| zZ_dv=(J|P039CO42s9j^!o23=$ljPv09uIC-$yf*nby4NYYu73P2%tgd&yhVQTBm~ zL?^#Q<0ZsS55%xiw*m?!R3ICKxMfz%YM8FC;LD|X>FkL9EY1?wSA;i0{^*_D*8Gv( z0q!U3X83+(LHvij8`eVt%w^0wr207VNH49M)C0T|t~plK{nNUW4PCHSGg?pXrd4I5 znr~47om0Vk-int7O@Sqa%~(GO=La-h`z;UV9u9T)ip5-$Ik=up?TlwXj_4d&CYtP)zD>3iDFhAOI zNzCEB23uaAt`02i){F_tCu!NfQ!~8ew764-snC^_JuA>Ja{5v?t=KHJaqqa!&vMy& zw?i_Ys-+}OPyDog1xJ#pU(@nB_{Z#4k9IMo_*q0-RJQW!tEn=lb-;x~BTxG1)>;+v z_>7!FSJ2ZYiL@3gE&$`GAd_5EtsqXb)#4OM%&*Wrk2YM#?u&9iz-Z{%s#1{MDR%8F z-=>RdiVMTE=i@oSZ=aH#=+_AB;{+o2eAENIJw1AGiFXzoX?zAY@B_?jYZY~G-r9`3 zHOJzX`D+9ymp~}qGdg8B+QlTzj8m}l{@12I{)d*3~O) zBx(}3`Hfs;0m(O3Bfah#i)r2QdEsp^&7a5ovJZnGxg`=W3MsnZ+VFxs_hGX#*Oc$f z>{P?Sfa*kRg=v-R4i=MCyIepfs8eZ_t?X4JBXSQyosz@_`Tcbjs?9DS(GREzuzoPj zS)Q>>Ou1A$FfB(4PnvpTX($65hBd5T1-(@HI!gNQOp$Yekvg5fLO?cP7_6j6JtT)3 zH~{mjPY0w7$Z~-1zDYl;&n%>my7rCyira-fLO<5NDW@)-!g3yj73d`;au-MMd$K*~ zJ?{rt2noypV|q^Ozga~b>xoAQ*_t0hT*{p9%%+O9f6wyB=JV(HC_mWPmN2NB7qf^0 zGFx7_HdrQ3wqM(0juD&oj*`exd^|egir%teyn|ovYrpGc18JuzEu`+Tnj z*3NCExs-s(&Pb;1Lo?_M(?JQlic2niO?r@t4E2|K6W*}N-3^suee=+hu#TVWm&WM+ zXOhjqFKfiB*g4Ae7Pvg)Qc{UMS-m0bye|xd@(**bdnmGPmpQ^ z-z~z}G~2bF)c}}TFSk{C^TQX6b3s|dFB5~_7(B9%A$p{CTs)&5j`cLK$E=Y0u2t0K z+8WBU;cC~^jmZs;5ri~Fp)w?hW%l|0@k^aB1Po!e-DF$%?ReXs&K0vI=oEQeg7kXr zF7D=!S=xS)uw&0Rj!TizjLl^0=VWnd{LEJXSY-=+U~&N!VfD44)kDZx6xdfCPFjc= zW9SOJdOTES}c8-D9XSC#`+(|s-{2&>U6Z!lqLo7D+oe52ey*t9>&Q3Laa zjkOI=r1kTRsnnzpXL}~OJd$Hr)litoDinem!zG&+;Z*%HvSoPRSQGqPHGotDb;T1< zwz;me$^q?3$e7Bcf+dQW5~Dl;h7fg&1hoKuTrCxS|LD5M!RNVz|` zHsa48EbrVqHSmDtPg#G8S&%>@G*fz$>kRATDM3Rn4Y-Shs1^u)LH?8hPI1cY3r(_8 z0AFo;U~HSdDIblLsd7fal^jDEoRP{r#^$!cu9-g(L8TA{07dC#)Qxmnhyte_n+wXL zuv~O%UbW^@pL>7vvGh@vGGBGmIv^;Gp&#pZ^UiqVwhG+~1=XmaCN|;Jpq)sm!90y! z-N!V$AW%GveajqVZ)nF42u>%>T=xrIN)$a>Mm0E*KV8D1FCZ4fiLeY1pMJ z^y|{1LRinQtJLu0D*P`?PQMO?IHj^$W7F!OeK+TX&cg6-VOGHvnT#Cjd_-Cv_~yWC z4zY)Giy_Ik^1Mth?{qEb52OjLvaR*m0NWMvfleZybyn>Qruu0LvS~REOfApq#)|6@ zjOdcL?~#Zpb-qCWW1SHk5CCS_I2S?7rHD$;nyCl0XXkMK4oUUI&{(bK4-13*1RFkH$!ge1%RlR*h;EYYH z-ciI6bh=`e2P&@!cJumHn_ik7sA%CIstf7y8|Tj%ghtU4o$bTV?dZx9tT)aYS?ImG z?z>LJyK0j(I$`5kpIEqKei78X%A7hwH!u2{SB@?7Y2(vHVmaJi-ZlBzyxlE+Jy=B@ zBQNk&FZE0zIuGD%pk@EBaMI4-G3erm2AQxjyB(q5NYWpt^6}IvJafZyYJL`*Gyl>N zsd?+I%BtYwZ=een zG3V2ec*FE^n2!r0(*yuqOb=$}sq-&;j?=^sd^eZWxZTq1!PXWNKsLQyfwfQ`n1-GX zs_bCDj|wtRshMq5H$QsgQfxJ$$)-GD@MG}4K31uEt0%JCYoV-XKk+@ty0WpDxWK!pf#tn@c^-mkq5 zBt5Z$lu+G_Z+Jr)jrR?PuA67-yiUy*0CkoKcbj2L;VZdu&le9?InYdd>(nocn54>GLd8Zm}C~IHugE3+5P8 zNK_G-b@vAQMw<+(VSq2#+bhY)(|xFQ!Ae1t(ip#o>Nu6f#q52A#a2Hgu=<35_0SZ- zcRAN8d`P=B30wN*{Uk@rUV5E7b^fpLBlCb=^+jsg12VflASq*+jGl&*IqDO~ZK>a15)WBj8$7TOENKVzpO#7HDgFp3k zJ0v0w^CZzSeY0(Qw{*y%p2}s9Ftj(@5c-%G5wv10vF6wN?GK@KaskvVz+MY^p~M<- z>zTce_bM7XGYU8cv3a|aA5Fn#CKC?%(s7o1HhcTQ+?#ZVBOHz)fg!_c$&%&=X4GvV z{8&pvH!o@y!K5WE(9>w89+?1E8~2EflzPha(-gK&xcDNAug`mPU z^@9-%IJXU|?61|Wts_w!>Z~TEMWUb=1~+b7{IpT=6;x+6oAK|bshUud#_+O!Kvy%2|xFULS-6eGcIaSkl(-n#ji)SQlAa+YNogK30!8K}(fR{+o=zDEo>4r>T@)9Iu{957*6YgQ{t z+(vxK%&-&?EMO}^SFwde8L!i>s@W>b7D51Z6p@>=iBQ0-^N=VGdJ>^Z39Y>U4oC_@ zYqQYo-Z5E4sLRWKIa%B{q$}*vlGV^9L(0W!mVS!wQ9D>T{YCx?ODj)$GDi*SkXjL!Fgf z+zLwxW{!e=0!D0IEhT~WlG;s$L3t8v;>4pRQTdmh7=~D4p*CfF-E12c> z%JCFq{>i(q>OzSRO}mmFqdKT9F6QRrb7B^IaQON4HtaF4MMC#=$T6CiAt`J?l2RSO zvsMvT=!-wE`*@o}XN7h8g5I|ilN)bYU{7~D6FOW9$rayG$n291;n1(N#Nk6pR{6n1 z=c-+g)Yl1r+UHBY#6WJh*jIijxga%oC3v-VQJlyvxP@!h5uGK!fY#s^-4h45-jEh= zGe8}r+XXTg?n1ay`Va8J=+Y_{eHOBES&hd;U^xjwH2%R{N01-3%|9akxm70`Fbs$N zu(=35Q$K6+aO{f(w`f)@Z^9OIGvt(=80cQ_FV1=q!U?-Gdli}=ei^~p;9)0sKPSPH zplKf8qp$fq6}DYC9!$6@*B^@QWtbwi(fyDZo%5P0vE}BI7@@~dl%M9E|Mr;;ug6;B z{KYa3AU_H5rnCPzbSZk`?PeyZA~9!wK73xpZQAY9h)%{V+caK3QVeN&hNpfzpKloA z@b$0okEiep<9$;|H@^?_L-yZ?634+v}b22v1&wkFU+Wj*0UKoFhC< zGf`gc``eSCmkajyQZgvJEmB7CRm+(TedEcV*xQ(|{C+G+uy~dmB>#wN0FX~gzO1K_ z@YS4vC~?_g#zk+-kSbBhg#>?@kaO8-I;p#|6AIf&H%`o%7?q$*a{sZP?KqF8=!o3= z>W{2q>*PWvkMZP1F>A_tU?#Xx1Fu<1bP>#LcDuToTTA-X-rMkE-#z*VtzGpKc%=j7 zdjt|wM7L8EbKCl93&m5-6qoQhV^gq~(WtdPZdt1;G)4HcRf_#xY09TIU13)BFuBFR zo~X-2wF{~}$QEJu6!c zBWE-4FXofyvYMTi`j&I8pAm%I|0rWYu{_Bp_K@d40I5rZF7>Lc_N`(~1@T77J)7>x zPVwWHwBy4|D>41WZEoX@^M=D+J@iFZY8mKbgS~$W7yhn6y1CIsIYit{KjBzQNR8e^ znxO`CH5dFPq-m)$TCv0`@C?SU=uR=Eu)vQWIdU?yL68@7x=%EPojVWWTHmMYfCMOu z$vD7kd}&*d^bZM4XB_5wXMuI!i_4*+Mk@n5&xrHIFds^A^j1{m(p;g&i;mv3#DB)R zXWrk7IHB*?HL|7sKwJ{qFFt=b7g1Kb{Sz6p+zv{ALJ6SX{kF@x;5j}E04&vKbhp-* z)P;%cmV9^SMly_qhqxDXQ~Es{vRSRY(cQaKp9I>iz>;KA&%~h3)gJ&W1^kUYv|8= z&O;6)t&T*fS3kLW04x}5nxxpq+CMO+KI1&zR+`_rF|#`tzBgN@P@GY^b>Uk1@c2lv zRYsDDVSey>6>o9T+M7z~8N9;XVY=RJO`3ZT+2*Fn2LDal72C*Tm7UN$?<`7*F_i=( zdc^kq53CUy?_aJ}!WZGjsrsgX2}UB=U!4IxUY8$8O^Eorm@A-N(%)6NDJFTr?Ud32F^ms074NF5S)a$@5hV996k@RI(CP)x5HBj?kn$%Y5sZ0KI7>Q@AQkIw!J>RS zYAlqK?qRS9Ksx)F+FE!hKU8K^8^fk2#wS&Nezyz6;GB_{{j~y=%H&lVYjeUuNf$yb z*AQOI9WegLJ!>fd<&LC6N&bP-4?uu?f5HwogCcMZtt`hxp`voW4W^(3skHT@O+*ZK z%=I$I^c{0=1zf#H^1U42)2^`iM#=G+1@>ec)JFhvV!@+Es#5+MLnkZ}yIEVmz2B$F zjYh>{_L_1gBr%(|FYKaJeS$Tu42E4!Dd1y6P*+I&Mqu<&hqMZUw z5q%?yE0d{|PXXI^`Th}dbzuFvL}`d~YcCBciTR>GAJUZ^CSP-mEZE!^?F`l!3|je7 z;@VR%e6Iwzz2D%$yQgxe0~ZaMd~{}bq)3`0iYul8MKM1|&I_o)i`$A;0R@+7MJv*4SQg=HLDyaHCRKj%wrH?4V7hOJ)=BxwHwvc8OXXuS0%+N1%bqm{~*y_H~O1r-OoTp=a91qsB zIEby_0t(lyeHyp@g7>y}=^fi8F8AI?ykUxJQnj{xje*IN(stYD{kGrat?ivgC1ZV# zz6(2kjhTYEZP=*`T+%do?xOcvE3c`vFN`=Vn`jFcB(73hz>>bB&;ZIfM&Y`B)1xRNeo;dOznOHB0VFkrE z*OkY2!Kb?c`wSXN|CZEwU5D+=(NAEuOX`CoLknjXZ^n?h(Xk$wWLC_qYDiP0#4IUT zTXWYt;(O`}<+&E>S`NSa&jLgD84rnhjJmIX#xoR`t>W~j5pAWKubf;z zi#nV1o1z zQtQq+Fll4ip%broYPOC+j|MajRQc1y%5tH#8F&~lv~1n^*yjySAcvviJqV}`%1f~^ z1NV=QgtztKd$NzF+F}ET`PFWjozcMhlZ8stmM4=?Fe+EBu@>QFLAUO+xPuVx$1nf3 z5K;5V;xW=IsU(+u!{7YPR9T(tUCo`8UD9(&WY$Q3QdRw@Mm98?N`J&J9$~(mxo(G0 zb$maq7JH4^)kN0zTz9%~2hgLPS#GW1z&|wFLwpA4BF<(wM$EidkIxIW$$EB$0 zB#ZDvgVG7F72oW9;)r0I^NAc5ycJYy)4p_JfjxHXWwKH&`VSD&VzxH^aoYUA2jaVL z)oZDlvE=0cZ}ngA5AlVkuXZ#31HkC(X0;^%4;=FWP&$i(+pP{xeCh=8l$$DQP=$^t zISL0t=Ej*hm(Vn)*>^x57%@)ko4gAVL!Q?70cB3HDGWnYw`eaX`I#iRdCaVt7{mew ztCOqJ7Om|SEVuwk&@uNSthN*b5?lu1ro)lvQ%4`_7CKz@(lWE9(B_O)*W$W&|^ zO@5bsU%O%eWI655_ypb8G-bHyfE)cbg+aOv!9k{7_fmj#=~=!yNDpn%vTh)ey<@{I1a z61JFo&7qrpcPF|}6~&dbddR&<)+$|=sts4gc_qQCsF|h(UW4nVZvZkmT6W2LUuQkE zOot;~#x2bMy1vGC_Q7krB9;d{FF&A8A=nWrMQP~eIccy3g5k<&KN0`cz#NRx}WO2OD6Z>0t^u=nGH!6pN}Zs!%GB{}Wg zZ4I8YYneW49B_nZHUp(MPS(-a9@|ea97&`*)#9lR9~r z=05;PWf6^9r7?km+f{?>5!wZ2zR{DAp;8Rv*aUczZv9p011F>^L~yNAsioNuJhHAsB{#@D;*Bu|2_dq-9sPILYPSU&oZh!xxs1~6y6d%{{qS~&9R%W?66Lwcv+>@R-AxZauGQR;r15@B5&bEKtn7`4Q)g=l zeE1S)pxN3<)&k}G+REs3%^SYP?W_%UvW#dP3sdK!8I5AyWv3NFPAubAq$8;s;KQBQ z1glJMD{giV)F|5xb8yfU7}Mir%DdJui3GS`Z zQg7DEwIFxb@WOsPQsCNEossYEp&PgBj3SZ=o(ru>p<-oFe`oooFQQ}ii_DWEjT&r~ zvb7odm-Wp>r^HXK0DtNZ7+%lGm9h5G;O@G81VG9ybAGXp(CK2K$F?v3k9!3nj5~jq z@r=4>FERBJxZ{<#XybJM_)>`!ANU)>Gab>~{E6FZf(`R=`=#P}d`bj)y_6glZAmJf zb$k4GmMF|{UyQ)`N-n!HVXsL-P`)RNUT5u^fGMpa!V9(NPwsx_QwEK=G5w?sAh7hV zYW_!OW7f{{=X=~;*k7Nsm)o{zqWg;Kv;C%g7Tf@ev%N<97A=8gTpPkR)hxdlo9o`_ z5Kdt{pDr_9T;9D;@Vt~tc__!`YV|`mIY3VP!ZeZuTbUb=dx%W3#FeHBA9@?hnxN%Y zP3+)Lq=~r!K_NJ)MfHKf0}F$H`n3qJ{7`C*x~f@22y4qamy?pGp&yUJ?rZbq$~lWD zw*ax6a)x`k1N`OTg+VlXx2xy^g7USSR24T+;mT?J+^chMJL9i+?29Z!XK?S+3Y}m0 zx;_qtg~Vq?Y%YI#Xo$Ji^17WmQ4*5p9AdX_^-!D<|Hux0yfiP?-VlBb9c8v%-%)sr z6GqY;(5COFufqNw?!4hhEanymI)^K96F+Gs@60cz9uI=(!x)Z74?t5LSLy0n)~Px; zC-99c8EO7nRTE#dGy4ZgbfPa6&ji=Rv`kPg$cA5DTrAI-_xh|Y5x-UU>~%B-=>02s ziaW4DQo1ffLY<1p%pP)@`(7laAjV4!<4-oxqBKFB6+7}RapOIOUYGSi;+3yLH21cz z#}}4#J`GPq(30>6H5)RY(>>|G({hR*#Vq7kikrpNeUs}VI5SB>fM)6Dd)eD>U^`aV z9htuj(?{JD+e~#KmfTi#3ERw?*PUD=MfQlEqOtE>=9F1tjzm^)*z?L0MR8@`o1Tup z2b{Ie-)2zp-XsAoT3aXw_3d3P>ykvTvjUq-Hk|6z_oZR_+F{EI-IMR(nU|z= zmvnMGr=m@u#KB79OzeMe`lnYoQ;$+q>U2N1 zB%^JGEvVI;Nsr8NP&qLUHSpgcHSm}P4JL)ru-?zuECA|6V{L)7>ljsyzU^Ba&IB9e z?ZGhYKOM|}D9ipmed5Swa{?1jX$@RJ#qON93E9&}(W`raw)%zNi^W2ibM+h^wu@aj za_#a}iZSwIs9pnTs4KBRO~!KVSD|!E24GX_eHwmA!dqUFItMcH-dgcTUosLVmjN&- z{X0udh0MFnP|&eOY-Fa))zDPE_qae-FfN1or+(ko^v5Gie!rgdvET$>;sAG|m{A9} zN456FO$8HX1oi{I1fD;%0p@!=6wfLS^!4ShmY6%Vfq}2*3QgNoQ;Ww1RvwcNIGGHz@C>V)At*^ zQD6|8=ArzCWGOv?$B3$Yu?uLvh@P2@c=J~UsiO1l4D9YiWvBH}G}zgPG2A|=D}0qz za(b+~N9{(k3K#eq4L@>mRv&e42X_|D=YAr*Q~CQePgI>HpP*eWpZn>qnq34x>(Vft z1AaUfL)E<{bchD*FZI_2v~k+5yhqD)kFcB5g)*XQiIS~rMOh?spuG~$Qr@$2mYq8* zh+NmU6d9_Odsu<*^szZ>8CH}M9TnJtul)_pXiW&IHHGTHX~|rRH!{N7d4HpsF2odg zV}o=>(C~*-Nv_Fo>y0e}zvxZk`LKf4)LzAV#%p`m$5i%gTNM~Lpw7{WlH3u&4Dm6{ z(GCWV+NU+?W}Fo=%q6W>%k(D#*GZIZ86gIEF?+mWAQ1~@Qg^pDEFs{!t1(j*wctKt=P^Rtq*Zpy2R z-~|zpvuf7Zb_RBvdwcOVH%M>28|oL>LV3?$mDx@xEkn&CPRyH>gg4Y9y!=Y$t3W9F zKaJ0SU<4Y~Wki#A({4o~ce(ehJ@@Flcq9`Wpcz!fU_lXl; zv$LTxIQT}43o4+FVT*>eQYc02$LE_Iy5rB0VNI31w|1#{9lM00!c<3`X2n}6CGV?_ z*p71Sj^eU;ei`(`&9)jUMmjV3qMrIl)sJtC3Y}8lg^SSp1&2m{W7zMqD{53?dAEn% z&6;x=qkb;3Xm-LFJ{i+{acQqeiq!qE*lql@-jsHs-e=BT*Xo53_&6HPirs~IN=)`* zO*RJ9UnqTb>u#<#$Bl4!jhsXd)rWkuE!3R2k0`$U@mV8be|hHF&EO4haqEY3^g);g zSH(}>-nD5$&aUzEiup?4Oz(Wnic$Eu(zGWQ-+6zKd3=Xv)%pCTNR8e4%|EbXPOw-G zT)x7mtulib1@IjxYJlxFdL(p`Ij0nb7Suu~`&=XTW~)29B7|7okm)UkrCtJ_9+Mgs zd*RP}U{(7d;Tu;?K?Aah6HYonMxbk%-I@W<$0IK>dP4W*t(DjN@gn6-t*$mzU4izD z&f%l~HnIf0_y^Y+vDasT?h(9Chw6Vld%RGP{DPUG)OoU@orZJGIg$UTeD?Mwjd#c+ z_A@2L(Oig-OX{SSn&zdKFpmYbDp0*^8AJkMj;~DtGD-1<6{&V}M2kqW%1_ZVUyAf}JaylR^e`-}t`%1xLy3P!D5?0IsOTbn+@Nj(PxSwEf z7&74nH6!RfvAwHNwT(^(%^GxY8~<~@1D@isMsH%!PkwS$(u?1+uM=O9_P49=RsXWs z6}Mt)7{+jyPPWM%-cNr^ZpvbZ-Eu8H*4=ZS`RAX6 z&0PN&*~z%V4q~9fh;2#sT}(ov8_z5ZyJefQzW7M}=_?;8hI_T%N)?A@TE-!Ug}<|B z3~GACNB@bH#xY#XT-RbFS6sV$%rUis68~m3-L%>9Gg5-jSzPmC45XW5&Z?Nj)l_7h zCki!a2;D!m?CMC;0@WiCax>r5`7;O+_>|>J*@qM1Md=6X#Lwv7hN!bKU!aQ7XYD2f zOV5PAldB05D-DihfD@u&On6(F-lTiJSZS%d5c=Kq##KnirR*1$KEXW8e4iDYh)mk4 z`=Fbo?z5)n_f5|W?_-DGO;3_uILl$hQb9R&cN3+B zpaG$}Og^vUIaUkx1T;swFPvTUb>|hE_pH?Uo|?%AI{nGF6xXg3DS`s01D19aBORXD z)pl-F?u*p5K}&-#)p3;EONwJZGPfmiJG{YYrqlQXCEh_xo1bC0q7iG)r?4u5dxV5#NV3~ zzDd0UV7eY*tu^d(?ieHL+=y??6yT0Ag5x(|HSe;$tnvBUqP&y1Z?KMg7yNdV_TD7T z%Cyv}7VWax@7wUqn=9yGjlRfh*{@nD9#|R;TMW6@>OL&21=JZH!*G)HfM8g^dD=U# z5rccL#gH3pFyEND)E6|@(AJ@lbnDQ}Ul_HR@et}Dap z3CAS3_a)0XvsvLM)jXi>!y`L?^Ju<5Xa-*zc}B|mp}z?krK9k%Ny?JW{Emk6cLT%q zFwhc@z{>mjK5@hM^<4zFg2Y(&`$YQrZ+~5y+HduBoZsVizx&sAn|)=L|DTx_#j}JL z-IUo)q!pW=+z-V>yTvV+E^^s->a9PT zm03XZ?Z95ar`uz>-&j0PF?!C?V&jbH2@7m^>*dR% z>eJXmXnJAyp^o{(kz0o7N`FgJmmbgN>!>v;bPw}*ujLdGdw4}P0I7}+_FPh12|eyi zb~jxx%j?+VFw%&xUMvoh46>|YR`N<*x^AEX=BMq*pz>n?6%GWk-{9?6eHQkx!gAlB z9$-_fz+rv>R{cDj4$PiSWM)m8>XiN6w1jUS>SNqOLJ?%{d&8hq1unX2KQqfJ*o~GC z?Gdo5QHLn`X@XFF>#*D_>wLeIwn~$ZS6!;+HBs`zwQnEQebWsK|MXsfnaU%02)C>< zz`geFk4Me@FbnYeoD%`mG|uT(;-32Vw=If+6b}~&p||Al)8to0R+|zDBFU#tx7PlQ zPLi$W*=RqP99YE`C>spSPPUqvTy!J(Rr}5;q_rS_THm5wRfpqE3wszJ%ZXL z#2!T{(yFShHKK^UH?fr#t&!FqiKtR)G*qpk{NKDEAtzT(&iS3^zMn$EbcE(JYMNgP z(HJ9>ULK{=rOrYJYvqV!O>3S>6&om7;5*ED_)U2w$;gug72;$_=jb94d3Gnj+u!of z?|P#&L|YcEcT$2ysF}pXE2jva1VJc+ktk_u86-)V8cYy!BNB~t`$W=>3sX~GnAYN$ zOoBHAJi>-6{&9I;$lE?Nz?#oXukf?BS`AyCMIw9zJ``ZlQWBz03Ek(ZfSg7>j|}28 zP^}#823S`ZK*=o0%)SCJuCmp(7fY4akZ~ z>+Ve?k#~qALa(RE5ZyMkW7a}h?Lp8 z2&J@8q%?M%LYA5m$Gt|WFZQ+xt;hF`TJE@_0>k?c#3T*WXS|-c;`-P5AW@De0Y6OG zMB@>?Z`N7O&^ZUzPr2|#%v1W|(`!uJXlqzcteM=O2SF)KkU!0M5~#^%;eX(W$w+B& ztSXaZOmi(Fu(HoT#mE-u~3MEY2W3g3IN@S%)y3SzPkqM)aG_oC4PJ zr&!GJZ&dltYu76oT|CLI^^prj^4W4kjGfAcX3dJ{px2WYU>{6>Fus_&7+csKbq$VW ze~#r)<*Xtk8O;kDy=^lrFm-$R+?Mlr=N!6G3buVhf?v>?P^>LW)bAJDJNHYku2i10VJ|)X zX|NnBdy2%XrVvyDgPXX*1NvOcs+qv0UjJpQT(*W@MZ@WX6*5g?PRD!#Qe+O04~GVlqW?H!ezzBypC~8dhu@%@{>K7#kt1 zyeVgCV<0)!Bm2r`W8BPjSgE*0xYQFd0n`2-)V?+VYw&isr^ux@k_%usvVoo^Z@0w^ z+xGN+c%_JmMRh4}8%g$vw#cBA3vV{zQ`L(v9eXH)r9{}de|g1X9U-uViuA=0d6gk@5;M!Uq$`XE$+uN ztz5KtsZg+30#H=o2DKkEK2A%{sO=ypFB0YoesnDUn<1c#bfMp8y~2FSVK^YCV(@XX zMBCGJ-s|}1XT)uwirh2i$LkrY=Pi7tkjvN>SO!TjRf~SZkoVx&n+Z96GHik~yRQrRXITFXD1Gb zL6)3b?@y7mA}R8$+;Q@pF`?vS91|I5htqI?J-nu?ML?t?F@r7^vS1@ou#+^yASzXI zz?D3+CgBbyZrf*O_ebXPm7X~AMyF~bE3bx-q_Z4@Tsy`0#C!G|Ki&Kk!&_VYpdZ@& zwgcHEi^MfX9R` zGF97>?R3^-G2tx)yfCGb(VX?&dCljn5Fi!F5fI3!L@~x=Zbr(#wxA8(u*~ib-v~3w zcost<=-CzBwM2K|g<<{>Co~uXL`Zd6`~!!5OIh$eyp78PJpJ6{B3dR}y*;5>7n6a& z&nu5Ly}w{_*x5$&Ze4CtNTPNhi1?J+5Syzn=DssdJ>EU@i(mTp)GX%hgcyvZO<{~u z^9vpQr;wdOAfaS~?`9M{tcoCkPbfZdMv$dV;7uty7clXF3Qj_LHxp6h2EKZ-Q<)`7 zMyj#ZWiGxW)>})2s03J;#{|AcdOa2bt$j11+G2SsFbHWMjpKh)M zD~Og_RR7a_+udixlW0dIO1e|TqLB^SS#~t&em^BW^{HMWz%ZYYVg()33~JvfAqX5N z>k~l*N1$C&;JDxWKuI!y&97+W%aVDk_+Uw3#+eWvL=FWHkJB*^gZXFHXW2eR{-mz1NGQu7O?~} zuTx%NZ;kDL0ACinhy%LF$-W6Jp~gI@YRnFh@TC4hja3)2ZD_~gMx5Tv-LDVhN06-- z7bV3hJu;hjJ$Uf3aVZA|-+T1zRx-8u$xDZ2IE?!FG22XdQ}m*M2v8tW!LWX}k-lUU z3mB!fb>Y{+z{C?s+H%4E5*p+FpO#>_{_59(HsZOw2iUIX9?-!@H4nEF<m?Or+~ zGHaUv`=|-`D1q{{eceD(dWH zN@L87u|e<78-UM=1*jYB`J6fmSivYP7)EX}=qwCREg$~`{9u81EzI7tA|t+S47sSw zpn!T_Q-c-w(Ik<-;>CYU221jHQRLTi&bwt3V)=Du3$Xl|R>$m7k1BExR%a4{i+aTD ziDU1%fe&p~SMe4Xow9|uYP6P0up`Ain9Zf866 zzTCYRJ*qXU^!O~k;y|<)j&jW#^ z#+Ab#YMRjiY{4o<&daIa9Oe{?e6HZ*diKq@u?Sq?W-H%#(im*w?Pt|79=yvib;Gfq zk?rtKvmt%rC=1@k49W4%nw*w0MF>;D87MHLFaV(UW!Za|tN7hEH~1>CZaX^?w3R?m zFEIMP(-C>SYh(W`c90ql+&hKZ(ZGXE)5(CBr(_HmtRpKU5ag z122&(EPp1FBuxPn@qYT(QS48LL0gI@nbM#FWJe(;jI&B?Hl;-d9aw5UA94;)4PV-8 zPSQ=`ROHL<_j;H8uyT6ST&;@hwE_8=f-%9KJwf)4@<<-!Pa+gx<4s1t>9)nTeOpz2 zl~E-e+eNfUke=IJ6(COq1HkQ&AG3Wl0%?X9m0Wl!fZe_!vl+$Wijho&atZCsgR2A< zCc7dp!Qxp$R>TkW<+yuYkGg+;yFr4?kO@It29JURH%&*XPgnwySsAOw)W}{C!FxgX z=@_ITJ*G)wsglE9txUQz7b+42sG^56g^fmM1TbSZIZ9l~CFb{(=^XjO7yxG_@Q`); zKEnWOJqg+c>d9Ftf-i%tk{NVlfH{{oQrz*%#U#C$M;2GYj})I)d9VDlO!_!C141i% z5CCe)a$!7BXpo2baVmUnZZ2MuOnSI>_*R@Ur_3lbRn#jHll-sEbEJjsOPvS$(;ZnP zJaHX){z>pzmr`Q;nos*z*IA4D-CH`)CLNL7GO#oln$BHR%6A}NRU!J!JZ7PkXy zsvufWR}1M-n`v9mCSL~%t_DKElx7Qe5?(a=Z#AQNu(Wy(i>u&u z6O70_8Y78x8siQ!wWMsE_YNihS(UtRTtMOJ>MU<}3HtFvtNu!A$z4scTxXXrZ43Hi zura1VS+fDDSZduRCB*CGvFjqLt3b#wp+~xBjVOa+Pbk&M6 z3xA|l4orw&;APx@pbsv;^1S_S6oYz2f2679wk%dR$DNpd!2Lnqu18ZeegPp{8o!9r z>-GAa2RPIoqkz@ybHO}X+kzECC70jBY=}4g)6D2*K5S=Hj?EXj8U9<03e>9p&J~Ze zdB4z2%cjlB3;WVg)&3CI53_JHv%3j1U=181|1Pl1TZzhRUW<#-#8yz=Cp-dGKO;YX zxp{ggjW&RXny$zt>fsmEL@&b&4>@0`2B>ll#~vt8w?d@!yf33Tbg@aRfcQGRs3Mp0uyS#0FSq}Uy}BFm>eyW1K5aNX2#HA;83E$P$RD( zvjFBZcOf9G9;26CF-C0L?gm0CL6 zDAWErbayR^!WuzqH*+-5-3;L}QDNt)&osUMXWM-$W)>0@j@{YgcikbCYf{>?@OJOA z2r;J&$lT1o;u39gUFi(Su<6a!_kk+*#aaH-@2AYDrW^dt{kO8;W0&9}**<_2`RQ-a zuQX}z67ch1I2su(2i05uCEWcfm7mO!H|h>wPeA!W1`%B3bC89c%IRNs8^(h4E9PDO zqm&ec7Jci~E}C8!Yuhbr??quAg@yVw^WNoY-hs*5-Tu#MLEGD=yCy~XR zacPypl54;&DMGP#zK%=joWI~LKj<+l)A@SYqVoN8a%ZX3;2uZv+P6#OF{W$oZg!y3 zQjaO%XJ!yVc4vcWF0E8?nsb4SP(Kef*L>jz*+s!(77J}ugDV+~uV?mo#lLwEx@U8w zH$!@A)znwgEw2wCjw@2oiD{9nn1BYb8tP%~KH~f}=2QevsBHvp3 z^@t6|;C;^!>S+f7u8?}Nk+f?jP=4Tgw@ctAGgJ1>!%GFFgSoZERVu$zUsm_#Kw>D~ zF4H~=EbG^(SuMq&itu-e-TYWxVg8B#Q2LoW5c6#G!C+Zik~}u<{jo{lcq8tQ(ybXb zkjm;#3bKzE_&RBEI;}w&6VVafB>Al?7$VaXlh!guXdv)2+i0nYh@@>VytW#|i@aCf zUnA|7v>Cps|2gNd&Tj(U?>Q2qxM;B`g6@+I)~s#OPs6npImb?`U^r>wwin^uOovjd z9W}mqp{>^SVMbMOG`KY_tSK!+5>{)L9kp{Ph^@tQ2FCO4pAAONNHw3X74ETt9ufO$mT8m{+_OolD(+-1xj z$rOEtaG;xZ7sY#vkd=;3f-!M$+-F6_YvbBJYkkQ{z!}B%WQ26KtG2cI<8<7o_fQ7= z0@n0ZcYUWgH%=B;w<78Wle+IO1Zf?yAV6|gwNCK+ijm!sAhgA`fX$vB-W>vRJ6-STPari?tR-gNr42SN zYx@joPBw&EMjtZj#84f9+yzG9iY~9(c@5{$HZ36w#0mFH7HoPX`{{S^tnBL|mYjgK zSSxv-;AleT!M_@Jwnha2C63XgjZ7x&55Pg5uwFo#teX{2&K+8HoA&y=f1k1}f)Fh9 zn!;*3zVx#~(8IC(ngxr)S-4>Biky z`NSzORmYuPEFdDc9@2>;tHr@rw50I<&8n`5u+Z;0=46Hr1T4iP)n%Ec7L1f1wSK@p z*wdOING6;e!gC|(H9s`$vyuHv%U7uV*E!$qsSO5Wk^{JM^C?qa1o#$a0qPgKWkI>X z^8Hp^TgC}M$zjL|9*`|5Y>lB!B_`V%v_eLwIV1-PgITAh4c#ObpV*F(zpzZXwtNC$ z6Ey>-C7Eu&;Kb5m4dlc-+?W6tWkiYORGj5>WA=cFLOjqJmA5+0Os}`-v9n`Ct;-x@ z>l)(oXSE|JwilP1O5=I=2!c9%LTYO5(hY-08`b{ml@xsW^A7oMefZ>#-!>@lW-C=P zw>tK7e;3)CIM7SMyz{(|RsD8{m%amrwFEg|^@=ncz#LYxfHDn2rBF;eile3~A)BokGhSCaGLx)Ny7jNdQBVMs=CfY~tBtBLB)?T?PO0#e3e z16G|uGCBBlIYLpf?dxCjds2W{%kJQ4X_o}P4@eX%P;A{yso!@jQl|4`Msgp_*D&EXsieruFqh=Jd^GN>}9 z`5OutDYZX2G8*KsTM1IIc$#FOE2q>SlHdVQFZXzt_sDga$eHB`G+h*Dwu*OIeBffe zhIhE0yTn|>YEg%QP}wYEr(b}bzVyiv*B^{SH)zQZZ9US+9uU!%ARN)LK%e!tw=Psn z^0QAV;hG~Qpj$HlQcXmM)7BncF3l!hfT6h+bF4OhY{6OpMNYez+r;L?Ftpv4gzLio zmGWI!j|$JQHQcy%SNWchOn(#1v2t?a*8hWsLJV%v{|;<2OP3QtSE?jad*T?yCpjA7 zeLwQ^7N*yKkiYh_uPC5fw(V}-hMZ{jY24##xxReY4XiMWU@DN#WN-n$NQb~nlH7TpHV2Uf&v9R;AM8o|N67Ob^(WX3go+X z+N{MimO>-qxE=Mmy5J{lhqEqSPx>kv@O&p|BELVm^PhrZ+PAv%h-)o5D&_RN?hW!o z6x#$0$jD42e8pMT7SWRR#!RdOjnb5x@Ckj?eU}d4j0v%-)+s%B{)4fjNFFfJHksL0 z*O;e7Tp9xbtE3P;L8!k?ToIr@O~cw~{OqmhT3X*0$YU0T&(Ccgr<1zrLpgKAMB5+O z$o3kT_*e`q4NR$2H$E&}i>ssb@cQldb2BT)2sf-@t0yl>?r^NL^@2uCi~!3^A4c*H zP;)<)0l-r!XLt@70XuIPSBMP<4KZl-#GBn5vUUaG&4fGpI^*)G1VeX}hWt(aXYPli zNt$)ep22`tKnT!SAg2|`OeZszC%s1P;VDYR#$lX%eF74$Cy*+(GD9ba5g zl|M9-rjXIaL=$4#oPZtZk>T(> zvgN+9E`wsm+MVV?8-snN4>F&X|3x0)u`;kfK=~d%|7SISb9Ec^gEV2?;bBZRyAgel zn6PoODfBZJPsfgGvrl?Gxr!2Tg|4PN`Y-M(ncx&hS6Z#AXej<^VR<{OlBqeuwb#NQL+h-Q&(K$2SK zWlPkH2f6-={?G&cDY;5&`Zq*Vd=${1|3J$Gx%M2^?_$-vcpmXhwn2?_nRm;&X0W>B zNskCm9nteK3X}N=0)@K$g%b*4P z(O%zMZT!(O2>pcB$#&71PK6`=gX)fy?kFNMa_)f13!?7_r?{&*Wdt*cZntQIFwv?`1ocdtEkoCc_w;{}NyBat5 z%>EMKsl^F$4Crf2D{R71$tyuQ!AMCUsVrn|=AL{?s-L_-B5!Ryi&nGxm{9t3L%%jF z6>5vk=d;FqeSMopQq`Ppz0k)nQ<*gMoW&SfunYV_;@acX3Re@~mgeF_4}n2RUfhdds-9*uR&`3%HJ`nnwML2fNU(p8 zrcNfRtzjfJMyP&`t`*Mhy04}Hru7jQa1>LbhJ540jae82SkP>?pW)XtHY2mI8&XJ; zB&R|;jXz<^h~B>O?3_VO%Dl<}zB&TBWZjdCwUG$iZi9{1@gS^-nD4yXX|yG!U)_P< zKQGxyomVPu^7AT*6-1q?OTGLy#R2n5N?$pL5C9uG7{5PlzdpX7z z^QHW%=q0_wSEXO~7==mJXqPjst3tbFv67=#sXYklMsB+ZMns-3ODBNTE+NAA?#l*^ z<(H;;UF;9{Q8IHLtRo~{wy-gR6mkk9pXRxqKa7wMuLIKek;O*cxC z03l9-{P+U+TSe5-Lu}Do9(h^imCK}uFF@LfB#P2Loo5VoBYIdC)=BUCAzMa_gOw!Q zctWutjIiLnsDZkt4)xQT~yb&(45Q` zVzofK_V&ycty#3mai6o0LIH@nM^j6sljW)8<|iB*=6KQP-q{ppQ9IZf+W%N-=T0Dm zTV@}4-|^qrD@AU(N&_u3;(FldSM-xce;FFfm_G#Sxm#%;b-uph<%tqBBO3uaemXHw zN$&t$u$gbTfPK^&fC^FspVqyj`8BGLN0Iol*Ec#{GCH;QwV~)^60K`KmtlH?nHi@+ zCl~d2_LZJ(qaU;cE|Vc>^u#r=ma|a+vJRHveh)o^ao-BoEw#(OLuV>RIw0up|53t6 zjztY5Zg+I~;})OYgZNwvzLjG78gmjs6Ei+g^|VQ;3N~UwWFMg}i-B>gzq)dOrwUci zw|ToXaPW`Cc!;f~{_!h__D2~dBF=OQHD)axT9^>eJ136x;)qGVc9~wVk`ali5|CJw&y`ycvA~Gy`Dhs1h~RPhO0lu7}ldsF;h{jU2Vtq`<*C4teNzSTI%?M z-y_3dXB5D8>qHbD%p$O9rsjutj4^vw@VcLNT=PKBSYwQYd4)nTWIbPC`}w?q8iJ}P zzFCr-WkgZXf^?p}G!dlrw{B!3S1(X#6CQeJ5FnG}DX*j5#RjDEoM=(8TPRjei+pktH5F!;K(MP*ZX(pBQw{ zjppuYP}?Y|OE6)Q2j&ID^R3VPiHE|bH}$m_Mb+v+TK{5g1PxiE56Q^S!0epJIdVxu z&azuF(&5C33XU{OHla%-n-Fj9Zz>IHm$^~X8775M+t+zmX7#zJXwK^yAILm+%+FKQ ze3mC$dBG^B#{4vOj+#4y5?#QG{HL#&nk1M&P8=+J^e5ZVh9~07KBQ?C zlE`i-JQHIJ*W-C=TlflbyvK`J5fymFj7boh#p2WyE5Aa;G+x!6 z9#0_M#_1{9CL&m$jkyq?AcfyGOEu}lOXVNrA$A%o*2F8_=*^g(>G{srzfQms0aQMv+c{cnWX*aF}8g z%S3tIf}hnT8E%-rI>fyGHKRj}0wP}MY_m)>r4k~!D2tl< zQ__Lz^O3M<2iCu0Wc;(`uL@X!ZD7ckaFEYoI^$CYIrfm4g zN}ixPqey4j3^|0_B8vY5B)cU#Rsa@|!~J#L)!GHx(54tvmWGRnp@%)|#Z_F<#Q^q; z=gnX(D${i7VYC4J#K|ka>q;P}+v>Y!xj)ULx|#KX463#eQ-0%3ly(io)~h{|PMJR0B4HNf2#)K0WHf&=e1&AZH=2DIc1AK%T8oN^J; zVbmF%!A)^d&)1%wb@eU2(L}uIpGN6%Dlb zYaT%~Fca44m5CVI_ho#Y7oieaGEaE%Qkva6jfv>lhTWyW=}YY?ekBWEs@c$|(5{)s z^l_fzjIbeB5VnZimiET*tA;3S&Wpq*pFMsAQELYIp6?=dGR9f{o6PM7f z>avn4@$4?q;s`FZMO8#m3N!gk&1G|%v8x?(Uu$YDTVf+tx5UaG7^VfYyQ= z3{%1bC(VCbh#0b!Mb+$HG|(t7WDeLPz8d(GjlD+wD|(&_%k$+ra+q5gknWH(WbP)O zM4Ujo0{5TMEy&dJQ0{a#?J1sj);+ci#0pM(c)S=YMs}`yI3{cGj_Q+ZHn%j}aXtRi ztoD7}uc$6U%1lLC0rKvOF7Qp~P+N`Fx5Kpm0E)k&%3SI}A73|chj#-s$IZA?6M^po zH}h`nWyT^HYPy4`Ah}EmHr=M39{0Ze|F!lhIPBr4hr937zj;qH7kW3y?sX;I9x&AQ zdj;A-s*YsclcU%vz9~`zvkxbvQW=O~@lbrJ=kQ*MmCA zg)rzn)uATnDoIqm5Z;BYKMKEw`TWB83T|rsXg1xf;^!MXYl2rRmG;ie-os0~2<-yX z2EzJ4kJGifA69QcU7Wlfj7gtnEY4u}VD7J124RG#Y3qN0oqCw&b;i>Xzmy{cZT{TB z5t6H6_k1OC)E1%6t8XwL+|I=PoNLCs$lVL)E&t(A;2Gl7$wg`Eanv@Wn|KVZ;og|t z_meN1@`Kc4F{fAD7mD?F9zplCZTnyD-5eOp?%DoBMald!h1)gfoAEWNf^mx}$l--O z^J1z6$4qXEH zihwKcuU-Zg_%#$ueeRje zzsK5t#kx6=*A+8VqLF;^FBdMfcg?l;)p*XhDF0`7OX{QDb5u^>>){eS#VwSUb=i-h z<;(kk7G^3ONGY#5=z*Ep)EzY!LOh6TE%5m)iIdwkmg3g;KY%WgMn~ifMQbf4Th0pua3#S#IikJB~8Xw0_@v2b66QRkuIva!wgY{eb_M|JTrn z!-tOS_hjwo(G*oNgI`A-aPf1=Ou>-|Sd@KlP2WV2SM8eaR&d7nz=aa~p~C~07^QO! z=AwtCgVE0_piXOhbGw<99m#}?;P&y|f2#d|P5Lb&KHoyG`GjZJ+IHl;rg?`?9M0!% zlNKAIsC3_liK`Ntn)lGYUDxp*9W1ETLtho?Gm!3OOM_KwmE&Qht6yQW~@GxKWKYroSASOt+-n4#9<)*Lh@ zuAe6Kw)n`IR`-7Khi8c2+J@#8Kkq;4jCi<0`8VXqwOCtcp{WUV*i}^8jQ`F13-^30~c2%N&7_))3(}Hw08z0WB9V0B$o82nkLpj2=)goO4S`tiE8Xb zG@WNWzr8OzVf4GFR1;)!6{p?P(23)o?%@W@6nT}HY0Mblqs4KcNddko)NyPKV)@3o!gxluNB-f}HSM_(*5gg*ay z+IY9@;%490pB1mv&1!D&vb4-#Ci2l@FgmKyLzTmPj27^ z18_~vpTV3O9XmpI)}ylM)DHS^Y7Fti)N5>tywrZ-Q#HyOZ~Y%<>FZX`t?6X?tY(Hd z=#ENbpT0IfjAs20uq<1Y9sjX1ij$S=WzFgD=iC5tL0}c{z3RK_jS^yOn*&>rzi+%c zb=Dq%Db6xe+s9kii=rCEwN5~udk?}A(%mC}3ox;MGO1`qHkXD6+n7Zs53F==e*?<0 zpw_kOQOg7`p2;NB@EWViBF_T*+TNAPWaARsXnY@4*-U+re+^jFGi0Y^sUE#U-|~{f z+HR|`#Hdw> zmP7p-RR@Z7Q7F{xssu+UA7yD<4dAcs+rQ~T>{U?pKi?Qcoj}}OoK%WCWu3aCxp4D$ z`_bgyUtZ1cz?^J)LTNb3Ukqg(1UsK}E)@jJU=Z_Q6q5`j2asTHru4q{C32#BW>TK2 z&PdeL%lf^EGBDgE|M2MmkyCCi%7`LMyg`9V5YD_)+Th#^!>@G1vY12_bY>RzRs59t zbY#}HpAQGcd?TyisEkdbWVVQ*H#jout>~xZ!;Ivel6-!at9t@$(5#aduv2$4*~=>@5D!%e;|iI<%(yTe@ArtAt5 zV{rXxPoz7HL&x$4@)46ST`8GBNw)!2W6QmUd5=J9=YmC+&mhrwrI&w>Af&|;-BB16 z-m$YAv58p~>gFF)aO!01*cT(}0HqCv4BPelN)gG{u>6r)>1%6noJ~M$HxLincV78_ zzXL8?1@Y*`pY6n#XcfyG3DXZ7BOBKj1=)LRX!mDy-Wd+shShzW9r)Jy)o0^$_{yRy zhPz4zd)?*qvd7SC)S8#<3>Real*X{*m0)U|R{bJg8?m%%NU9}y5b&JEEtx;Mu^*v@ ztfs*(-0Sd=%%1Pd$h#=20Y1)37lc2G8wXAkh7>iZ{{VSWD)s(y`)3v*Fz5N_6mxpp z@&2DNO|C^&FghKjp3{CYMea%$t$wrYm5YYPLoeqnv6RN=iwCk!R{4!vIYbSeS5r;l zQqJ6vGsz8pC`0UoY_s|78p358*i~cUc;8{U2z;Y`dsvNQnxyl<$ z(1G$~7R~2CeOjqDV$i4|+h+ITuQZkNjURFiEOmabGpDV7ZY=P9BvVe#?1rZ3OinK& z(7Pg+R>o3-jVi-^LoTR@w4EgUh>@L|2A42i7eylLKk?Z1apaPlNuf2O@4FyF7wdU( zvp`S$CEj5B!wk`BiT`8-0VtQawr<+)huS1`fSzV0#fIqMKX&*B`|)jxTi;hzw8K{q zFozW&61IyLkSW;)Yn`uiwRvkH0dG}>*5AIC!Tllr;!`Vrop@eLV5jTbC{q1lcT=>o z7V>pzOhVO%Yo+D9WjU=ex$Jt<&k5J4d?F05z}p|T)`JCZiD*)*qKsAb)_A`t1)R$; zneM2yOC-Tw6wEMa683{TL!jFo#6zK;a$n*dK`6v+zxjrF_=~t=*R~}6oM-}`dMb$m znv%-V2DTW~92sH{)~qGPXbJ&*5&@)S{=VQO$_(GvP$Ekh2%j2pdX*>EW%cE{TY*w_ zj0Eper6Y;|$;JfxMd2%hWd+%J7G6{e$}$6~pCCIwy%{y%ub-E5Df7-$Fx5%UqCB!B zy2Dus+DvqoTqAnrV=b>60zv*t2qlv(GolHP^E)%#Z*ajSy#R>w%<%4apX2Y_g&2Je zb}qmwNh7;!@;ts+h#@>GqMmRf4Ru2jg^3gtBM7H4%OKLsA#pir`p87Qad7u0K2SI} zAr|ZyOrB{9`=yO0znih4!pbx~>)F~CsLvfMgS$>i6=(m4+o#uKVFR2t08GpcyX?9- zkM8prHk?@Qjv*k;^9*Cc z=&fLc81%g#?3l%o6kQAI$ytB%t2}8V!C2i_Fngaa$6PeMM?x&u@=Z~K8wcyu+{Txdg|&qSbO~HZvYVl9u`}$3%AWy}rHhJXI)J*YFeR6>lSrB< zE*5D9CcEvS0$XBVYGSHHH1W6hXj8bPIq5{DNh}P&lQlX~D

joiWB*+Wi^vN%|73 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±eo>Sl*X+u%zDF* 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 z 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�?`_M8tbX{jBDR_tco(owf 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 z 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

Rg9 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�uljeD8$ruI6gSXGYi~6Kk@^^ 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

LMp=PhpgPUpG>wE%@#3=6`~~8R<*0 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

9stc!@fcP0)ze+%eERWbJH#eswLQ`KA5igG+)a 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

nV% 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 N002ovPDHLkV1jISY*YXM delta 5158 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 literal 14583 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 diff --git a/docs/Images/Screens/F1TVHIGHRES.png b/docs/Images/Screens/F1TVHIGHRES.png index 3d0c7d74140f388428ff8c6935646b0625a6c0dd..76886aab7c5982b56207e288a458775b3ca5b729 100644 GIT binary patch literal 11462 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 m>n3>UM!?I4VMfRZE5Bc~X5ExJRIc_ot2%2D7`< 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 literal 8306 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 DJCF5U literal 7304 zcmd^EdsGu=7LTuDtBBSL6cDsqALq16Sw*Y}6h)A_f?^va2vY^c5<sE7nDz zTU=Q|pz4ZX7)GQqDr91pN=gx;KnM^?)F70E7zC0?LT2{T-EO;{Zd>>CtX=kxNis9v zoO9=X_x>I?N4Eq8Sij)#0);}c4&3M$LZM7K3P;lP=io|92JQi0lUN}E>nN4YPW^B) zHO6egEmsB0(TSs=z30iHlY{t+uWO~-1V8?O#$Azl(S?RwSv_yqq z@B#~7oJ65KMqZgiq5OU}ygTK?jZ@*O-z)HQ;rPAjf1FOCy!DYEoUeOzGKDhxyQN=T zymW0yzU{_pWpK^DYAWJ0@;HyK z=U?0Jk18ID$h{~YPuvvpO{TVG7G0K{7%nDc!>;kCAhFr#6u!y9_O3#>bWdv-imwuw zlr;iv()!28r~J$QJhRp04Y7oOs(}3 zCc^?BW$@L(_fSQorPd5xTqg#ONz(XT5L=0egRzwBBjl^v|X;2D+kRgB6E6-7b5J=my!RMtLZ?KyJykY|RG?+UxtSdzg& zaYNA>R4QNHS;qHR8~C$*#V><{{~dYttq1B%gxuI5L>p9Z?gEF44Bjs%Qm6f~+j=ZG@`A0A)Ef4OHA1EpP zK@bMo3tY!oJs*GY;-oS1WxJjiSB{8Ixo%!;u^IY=wFhPvZu3npeXQjXl~UP^5@QcAmoY+jK`OIi zo|LKSXUT;b;yuF2${IrS1|g0E^%YQ@6oTRz_cqu-%QKK2$CSrIg*up(thtm*L-F1j zEwj^`CMZ zJqUT)k;AXa+3(u!l{ii@i}MKd%@PTCp`04;`8KtuBOSwwgXsF?{=?%g^l-j22&bWa zU|JF4tD|6(OxZBjH0Lm2G;*1F6?`dX5K+Ai0}f3^`&&4mjviHyyR0VBh);b~RzhP~ zfsF<8tqvpUw|aYb-C-H7Eu7%O^Pj`_OIvJJY*z`i^y${ikQ12I!T4iCUkM0Jaj~3a zm!zo)nvmfv5`l0MRg-RnnPJIIkjF56LU@>`t^js`m^))|Y}fYVF|S*=CBdZ@^29Kj ziXO3@ptSr=PyJ&yH^`m2sSsFqv<udBrRz=;XSfPH0s?zN-m5|0v}S>~=@DQOlFc z>)SyWiN)JueQoOA04M6?Qc&JAK`mtFpQQXML$kHMtMj39QC9RE?>sqsd4Ij$DLLBS z#7(Wgoqr^f%`^>7Q1X0o9@&th_vzl0*RX4hjB+w_mvd5_X*(o4V-~j(#-h>oTHBGk l>8<%c=*O0B+C*BjPOj_x;A2W4{Gmn(+z{kfx$eC~e*;LWKllIu diff --git a/docs/Images/Screens/FigmaLogo.png b/docs/Images/Screens/FigmaLogo.png index 0eda24a6b1ebae23b6aec0a02bc0186c376cc871..2759ab4afb839e007369081de64ef1ee39239a9d 100644 GIT binary patch literal 10050 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 literal 13872 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 diff --git a/docs/Images/Screens/FigmaLogo.png:Zone.Identifier b/docs/Images/Screens/FigmaLogo.png:Zone.Identifier deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Images/Screens/FirefoxLogo.png b/docs/Images/Screens/FirefoxLogo.png index af7bd53607522e18f1da730b3b7a12a8fa7025d5..257c55b28578e06b20661fc44a0b49dbee697eae 100644 GIT binary patch literal 82856 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

WXLdi=7?8C*wARfK4$a6DDmFrp)PB$+)G_+4;ew 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 VZs#L#s{PChS4^yoNk*us{{yW(c9{SG diff --git a/site/404.html b/site/404.html index be461a3..d59457f 100644 --- a/site/404.html +++ b/site/404.html @@ -379,34 +379,6 @@ -

  • - - Program.cs - -
  • - - - - - - - - - -
  • - - Settings.Designer.cs - -
  • - - - - - - - - -
  • SqliteStorage.cs diff --git a/site/CahierDesCharges.html b/site/CahierDesCharges.html index fb88ab4..c51f51b 100644 --- a/site/CahierDesCharges.html +++ b/site/CahierDesCharges.html @@ -208,16 +208,6 @@
  • - - Program.cs - -
  • -
  • - - Settings.Designer.cs - -
  • -
  • SqliteStorage.cs diff --git a/site/Code/ConfigurationTool.html b/site/Code/ConfigurationTool.html index 8f639b1..e88b177 100644 --- a/site/Code/ConfigurationTool.html +++ b/site/Code/ConfigurationTool.html @@ -171,16 +171,6 @@
  • - - Program.cs - -
  • -
  • - - Settings.Designer.cs - -
  • -
  • SqliteStorage.cs diff --git a/site/Code/DataWrapper.html b/site/Code/DataWrapper.html index b479810..58f0811 100644 --- a/site/Code/DataWrapper.html +++ b/site/Code/DataWrapper.html @@ -170,16 +170,6 @@
  • - - Program.cs - -
  • -
  • - - Settings.Designer.cs - -
  • -
  • SqliteStorage.cs @@ -260,10 +250,10 @@

    DataWrapper.cs

    /// Author : Maxime Rohmer
    -/// Date : 30/05/2023
    +/// Date : 09/06/2023
     /// File : DataWrapper.cs
     /// Brief : Class that is used to interface between the main Form (vue) and the Storage (wich is a class that wraps the sqlite database, so the model) its almost MVC :D
    -/// Version : Alpha 1.0
    +/// Version : Beta 1.0
     
     using System;
     using System.Collections.Generic;
    diff --git a/site/Code/DriverData.html b/site/Code/DriverData.html
    index 3b28bbb..3f8cbf8 100644
    --- a/site/Code/DriverData.html
    +++ b/site/Code/DriverData.html
    @@ -171,16 +171,6 @@
           
     
  • - - Program.cs - -
  • -
  • - - Settings.Designer.cs - -
  • -
  • SqliteStorage.cs @@ -260,10 +250,10 @@

    DriverData.cs

    /// Author : Maxime Rohmer
    -/// Date : 30/05/2023
    +/// Date : 09/06/2023
     /// File : DriverData.cs
     /// Brief : File containing classes that behave just like structures to store data about drivers 
    -/// Version : Alpha 1.0
    +/// Version : Beta 1.0
     
     using System;
     using System.Collections.Generic;
    diff --git a/site/Code/DriverDrsWindow.html b/site/Code/DriverDrsWindow.html
    index 8b7bbe0..88c3e1a 100644
    --- a/site/Code/DriverDrsWindow.html
    +++ b/site/Code/DriverDrsWindow.html
    @@ -170,16 +170,6 @@
           
     
  • - - Program.cs - -
  • -
  • - - Settings.Designer.cs - -
  • -
  • SqliteStorage.cs @@ -260,10 +250,10 @@

    DriverDrsWindow.cs

    /// Author : Maxime Rohmer
    -/// Date : 30/05/2023
    +/// Date : 09/06/2023
     /// File : DriverDrsWindow.cs
     /// Brief : Window containing DRS related method and infos
    -/// Version : Alpha 1.0
    +/// Version : Beta 1.0
     
     using System;
     using System.Collections.Generic;
    diff --git a/site/Code/DriverGapToLeaderWindow.html b/site/Code/DriverGapToLeaderWindow.html
    index deb2c5f..c2f7833 100644
    --- a/site/Code/DriverGapToLeaderWindow.html
    +++ b/site/Code/DriverGapToLeaderWindow.html
    @@ -171,16 +171,6 @@
           
     
  • - - Program.cs - -
  • -
  • - - Settings.Designer.cs - -
  • -
  • SqliteStorage.cs diff --git a/site/Code/DriverLapTimeWindow.html b/site/Code/DriverLapTimeWindow.html index 43e444a..5bbc172 100644 --- a/site/Code/DriverLapTimeWindow.html +++ b/site/Code/DriverLapTimeWindow.html @@ -170,16 +170,6 @@
  • - - Program.cs - -
  • -
  • - - Settings.Designer.cs - -
  • -
  • SqliteStorage.cs @@ -260,10 +250,10 @@

    DriverLapTimeWindow.cs

    /// Author : Maxime Rohmer
    -/// Date : 30/05/2023
    +/// Date : 09/06/2023
     /// File : DriverLapTimeWindow
     /// Brief : Window containing infos about the lap time of a driver
    -/// Version : Alpha 1.0
    +/// Version : Beta 1.0
     
     using System;
     using System.Collections.Generic;
    diff --git a/site/Code/DriverNameWindow.html b/site/Code/DriverNameWindow.html
    index 782ffa9..2388001 100644
    --- a/site/Code/DriverNameWindow.html
    +++ b/site/Code/DriverNameWindow.html
    @@ -171,16 +171,6 @@
           
     
  • - - Program.cs - -
  • -
  • - - Settings.Designer.cs - -
  • -
  • SqliteStorage.cs @@ -260,10 +250,10 @@

    DriverNameWindow.cs

    /// Author : Maxime Rohmer
    -/// Date : 30/05/2023
    +/// Date : 09/06/2023
     /// File : DriverNameWindow
     /// Brief : Window containing infos about the name of the driver
    -/// Version : Alpha 1.0
    +/// Version : Beta 1.0
     
     using System;
     using System.Collections.Generic;
    diff --git a/site/Code/DriverPositionWindow.html b/site/Code/DriverPositionWindow.html
    index cbff0cc..a3aed81 100644
    --- a/site/Code/DriverPositionWindow.html
    +++ b/site/Code/DriverPositionWindow.html
    @@ -170,16 +170,6 @@
           
     
  • - - Program.cs - -
  • -
  • - - Settings.Designer.cs - -
  • -
  • SqliteStorage.cs @@ -260,10 +250,10 @@

    DriverPositionWindow.cs

    /// Author : Maxime Rohmer
    -/// Date : 30/05/2023
    +/// Date : 09/06/2023
     /// File : DriverPositionWindow.cs
     /// Brief : Window containing infos about the position of a driver.
    -/// Version : Alpha 1.0
    +/// Version : Beta 1.0
     
     using System;
     using System.Collections.Generic;
    diff --git a/site/Code/DriverSectorWindow.html b/site/Code/DriverSectorWindow.html
    index 20bedd4..3da0a87 100644
    --- a/site/Code/DriverSectorWindow.html
    +++ b/site/Code/DriverSectorWindow.html
    @@ -171,16 +171,6 @@
           
     
  • - - Program.cs - -
  • -
  • - - Settings.Designer.cs - -
  • -
  • SqliteStorage.cs @@ -260,10 +250,10 @@

    DriverSectorWindow.cs

    /// Author : Maxime Rohmer
    -/// Date : 30/05/2023
    +/// Date : 09/06/2023
     /// File : DriverSectorWindow.cs
     /// Brief : Window containing infos about a driver sector time. Can be the first second or third, does not matter.
    -/// Version : Alpha 1.0
    +/// Version : Beta 1.0
     
     using System;
     using System.Collections.Generic;
    diff --git a/site/Code/DriverTyresWindow.html b/site/Code/DriverTyresWindow.html
    index 347e31a..e90fe4c 100644
    --- a/site/Code/DriverTyresWindow.html
    +++ b/site/Code/DriverTyresWindow.html
    @@ -170,16 +170,6 @@
           
     
  • - - Program.cs - -
  • -
  • - - Settings.Designer.cs - -
  • -
  • SqliteStorage.cs @@ -260,10 +250,10 @@

    DriverTyresWindow.cs

    /// Author : Maxime Rohmer
    -/// Date : 30/05/2023
    +/// Date : 09/06/2023
     /// File : DriverTyresWindow.cs
     /// Brief : Window containing infos about a driver's tyre
    -/// Version : Alpha 1.0
    +/// Version : Beta 1.0
     
     using System;
     using System.Collections.Generic;
    diff --git a/site/Code/F1TVEmulator.html b/site/Code/F1TVEmulator.html
    index 2cbd2d2..e0eea1a 100644
    --- a/site/Code/F1TVEmulator.html
    +++ b/site/Code/F1TVEmulator.html
    @@ -171,16 +171,6 @@
           
     
  • - - Program.cs - -
  • -
  • - - Settings.Designer.cs - -
  • -
  • SqliteStorage.cs @@ -260,10 +250,10 @@

    F1TVEmulator.cs

    /// Author : Maxime Rohmer
    -/// Date : 30/05/2023
    +/// Date : 09/06/2023
     /// File : F1TVEmulator.cs
     /// Brief : Class that contains methods to emulate a browser and navigate the F1TV website
    -/// Version : Alpha 1.0
    +/// Version : Beta 1.0
     
     using OpenQA.Selenium;
     using OpenQA.Selenium.Firefox;
    @@ -448,146 +438,158 @@
                     return 104;
                 }
     
    -            //Again waits for the page to fully load (when you accept cookies it takes a little time for the page to load)
    -            //Cannot use The timeout because the feed loading is not really loading so there is not event or anything
    -            Thread.Sleep(5000);
    -
    -            //Switches to the Data channel
    -            try
    -            {
    -                IWebElement dataChannelButton = Driver.FindElement(By.ClassName("data-button"));
    -                dataChannelButton.Click();
    -            }
    -            catch
    -            {
    -                //If the data button does not exists its because the user is not connected
    -                Screenshot("ERROR102");
    -                Driver.Dispose();
    -                return 102;
    -            }
    -
    -            //Open settings 
    -            // Press the space key, this should make the setting button visible
    -            // It does not matter if the feed is paused because when changing channel it autoplays
    -            actions.SendKeys(OpenQA.Selenium.Keys.Space).Perform();
    -            //Clicks on the settings Icon
    -
    -            int settingsClickTries = 0;
    -            bool settingsClickSuccess = false;
    -            while (settingsClickTries < 100 && !settingsClickSuccess)
    -            {
    -                Thread.Sleep(100);
    -                try
    -                {
    -                    IWebElement settingsButton = Driver.FindElement(By.ClassName("bmpui-ui-settingstogglebutton"));
    -                    settingsButton.Click();
    -                    IWebElement selectElement = Driver.FindElement(By.ClassName("bmpui-ui-videoqualityselectbox"));
    -                    SelectElement select = new SelectElement(selectElement);
    -                    IWebElement selectOption = selectElement.FindElement(By.CssSelector("option[value^='1080_']"));
    -                    selectOption.Click();
    -                    settingsClickSuccess = true;
    -                }
    -                catch
    -                {
    -                    //Sometimes it can crash because it could not get the options to show up in time. When it happens just retry
    -                    settingsClickSuccess = false;
    -                    settingsClickTries++;
    -                }
    -            }
    -
    -            if (!settingsClickSuccess)
    -            {
    -                Screenshot("ERROR105");
    -                Driver.Dispose();
    -                return 105;
    -            }
    -
    -            Screenshot("BEFOREFULLSCREEN");
    -
    -            //Makes the feed fullscreen
    -            int fullScreenClickTries = 0;
    -            bool fullScreenClickSuccess = false;
    -            Driver.Manage().Window.Maximize();
    -            //WebDriverWait wait = new WebDriverWait(Driver, TimeSpan.FromSeconds(10));
    -            while (fullScreenClickTries < 100 && !fullScreenClickSuccess)
    -            {
    -                Thread.Sleep(150);
    -                try
    -                {
    -                    IWebElement fullScreenButton = Driver.FindElement(By.ClassName("bmpui-ui-fullscreentogglebutton"));
    -                    fullScreenButton.Click();
    -                    fullScreenClickSuccess = true;
    -                }
    -                catch
    -                {
    -                    fullScreenClickSuccess = false;
    -                    fullScreenClickTries++;
    -                }
    -            }
    -
    -            if (!fullScreenClickSuccess)
    -            {
    -                Screenshot("ERROR106");
    -                Driver.Dispose();
    -                return 106;
    -            }
    -
    -            Screenshot("AFTERFULLSCREEN");
    -
    -            //STARTUP FINISHED READY TO SCREENSHOT
    -            Ready = true;
    -            return 0;
    -        }
    -        /// <summary>
    -        /// Takes a screenshot of what the headless browser is displaying
    -        /// </summary>
    -        /// <param name="name">Optional ! The name of the picture so it can be saved</param>
    -        /// <returns>Returns the screenshot in the bitmap format</returns>
    -        public Bitmap Screenshot(string name = "TEST")
    -        {
    -            Bitmap result = new Bitmap(4242, 6969);
    -            try
    -            {
    -                //Screenshot scrsht = ((ITakesScreenshot)Driver).GetScreenshot();
    -                //profileriver.SetPreferencC:\Users\Moi\source\repos\Test_Merge\README.mde("layout.css.devPixelsPerPx", "1.0");
    -
    -                //Screenshot scrsht = Driver.GetFullPageScreenshot();
    -                Screenshot scrsht = Driver.GetScreenshot();
    -
    -                byte[] screenshotBytes = Convert.FromBase64String(scrsht.AsBase64EncodedString);
    -                MemoryStream stream = new MemoryStream(screenshotBytes);
    -
    -                result = new Bitmap(stream);
    -                //result.Save(name + ".png");
    -                scrsht.SaveAsFile(name + ".png");
    -            }
    -            catch
    -            {
    -                //Nothing for now
    -            }
    -            return result;
    -        }
    -        /// <summary>
    -        /// Stops the Emulation. Note: if you plan to start it again please use ResetDriver() instead
    -        /// </summary>
    -        public void Stop()
    -        {
    -            Ready = false;
    -            if (Driver != null)
    -                Driver.Dispose();
    -        }
    -        /// <summary>
    -        /// Resets the emulation
    -        /// </summary>
    -        public void ResetDriver()
    -        {
    -            Ready = false;
    -            if (Driver != null)
    -                Driver.Dispose();
    -            Driver = null;
    -        }
    -    }
    -}
    +            try
    +            {
    +
    +                IWebElement LiveButton = Driver.FindElement(By.ClassName("btn-manage-account"));
    +                //By.ClassName("btn btn-controls btn-main btn-manage-account no-redirect")
    +                LiveButton.Click();
    +            }
    +            catch
    +            {
    +                Console.Write("Going for a rediff");
    +            }
    +
    +            //Again waits for the page to fully load (when you accept cookies it takes a little time for the page to load)
    +            //Cannot use The timeout because the feed loading is not really loading so there is not event or anything
    +            Thread.Sleep(5000);
    +
    +            //Switches to the Data channel
    +            try
    +            {
    +                IWebElement dataChannelButton = Driver.FindElement(By.ClassName("data-button"));
    +                dataChannelButton.Click();
    +            }
    +            catch
    +            {
    +                //If the data button does not exists its because the user is not connected
    +                Screenshot("ERROR102");
    +                Driver.Dispose();
    +                return 102;
    +            }
    +
    +            //Open settings 
    +            // Press the space key, this should make the setting button visible
    +            // It does not matter if the feed is paused because when changing channel it autoplays
    +            actions.SendKeys(OpenQA.Selenium.Keys.Space).Perform();
    +            //Clicks on the settings Icon
    +
    +            int settingsClickTries = 0;
    +            bool settingsClickSuccess = false;
    +            while (settingsClickTries < 100 && !settingsClickSuccess)
    +            {
    +                Thread.Sleep(100);
    +                try
    +                {
    +                    IWebElement settingsButton = Driver.FindElement(By.ClassName("bmpui-ui-settingstogglebutton"));
    +                    settingsButton.Click();
    +                    IWebElement selectElement = Driver.FindElement(By.ClassName("bmpui-ui-videoqualityselectbox"));
    +                    SelectElement select = new SelectElement(selectElement);
    +                    IWebElement selectOption = selectElement.FindElement(By.CssSelector("option[value^='1080_']"));
    +                    selectOption.Click();
    +                    settingsClickSuccess = true;
    +                }
    +                catch
    +                {
    +                    //Sometimes it can crash because it could not get the options to show up in time. When it happens just retry
    +                    settingsClickSuccess = false;
    +                    settingsClickTries++;
    +                }
    +            }
    +
    +            if (!settingsClickSuccess)
    +            {
    +                Screenshot("ERROR105");
    +                Driver.Dispose();
    +                return 105;
    +            }
    +
    +            Screenshot("BEFOREFULLSCREEN");
    +
    +            //Makes the feed fullscreen
    +            int fullScreenClickTries = 0;
    +            bool fullScreenClickSuccess = false;
    +            Driver.Manage().Window.Maximize();
    +            //WebDriverWait wait = new WebDriverWait(Driver, TimeSpan.FromSeconds(10));
    +            while (fullScreenClickTries < 100 && !fullScreenClickSuccess)
    +            {
    +                Thread.Sleep(150);
    +                try
    +                {
    +                    IWebElement fullScreenButton = Driver.FindElement(By.ClassName("bmpui-ui-fullscreentogglebutton"));
    +                    fullScreenButton.Click();
    +                    fullScreenClickSuccess = true;
    +                }
    +                catch
    +                {
    +                    fullScreenClickSuccess = false;
    +                    fullScreenClickTries++;
    +                }
    +            }
    +
    +            if (!fullScreenClickSuccess)
    +            {
    +                Screenshot("ERROR106");
    +                Driver.Dispose();
    +                return 106;
    +            }
    +
    +            Screenshot("AFTERFULLSCREEN");
    +
    +            //STARTUP FINISHED READY TO SCREENSHOT
    +            Ready = true;
    +            return 0;
    +        }
    +        /// <summary>
    +        /// Takes a screenshot of what the headless browser is displaying
    +        /// </summary>
    +        /// <param name="name">Optional ! The name of the picture so it can be saved</param>
    +        /// <returns>Returns the screenshot in the bitmap format</returns>
    +        public Bitmap Screenshot(string name = "TEST")
    +        {
    +            Bitmap result = new Bitmap(4242, 6969);
    +            try
    +            {
    +                //Screenshot scrsht = ((ITakesScreenshot)Driver).GetScreenshot();
    +                //profileriver.SetPreferencC:\Users\Moi\source\repos\Test_Merge\README.mde("layout.css.devPixelsPerPx", "1.0");
    +
    +                //Screenshot scrsht = Driver.GetFullPageScreenshot();
    +                Screenshot scrsht = Driver.GetScreenshot();
    +
    +                byte[] screenshotBytes = Convert.FromBase64String(scrsht.AsBase64EncodedString);
    +                MemoryStream stream = new MemoryStream(screenshotBytes);
    +
    +                result = new Bitmap(stream);
    +                //result.Save(name + ".png");
    +                scrsht.SaveAsFile(name + ".png");
    +            }
    +            catch
    +            {
    +                //Nothing for now
    +            }
    +            return result;
    +        }
    +        /// <summary>
    +        /// Stops the Emulation. Note: if you plan to start it again please use ResetDriver() instead
    +        /// </summary>
    +        public void Stop()
    +        {
    +            Ready = false;
    +            if (Driver != null)
    +                Driver.Dispose();
    +        }
    +        /// <summary>
    +        /// Resets the emulation
    +        /// </summary>
    +        public void ResetDriver()
    +        {
    +            Ready = false;
    +            if (Driver != null)
    +                Driver.Dispose();
    +            Driver = null;
    +        }
    +    }
    +}
     
    diff --git a/site/Code/Form1.html b/site/Code/Form1.html index f0bde66..edb216d 100644 --- a/site/Code/Form1.html +++ b/site/Code/Form1.html @@ -171,16 +171,6 @@
  • - - Program.cs - -
  • -
  • - - Settings.Designer.cs - -
  • -
  • SqliteStorage.cs @@ -259,428 +249,510 @@

    Form1.cs

    -
    using System;
    -using System.Collections.Generic;
    -using System.ComponentModel;
    -using System.Data;
    -using System.Diagnostics;
    -using System.Drawing;
    -using System.Linq;
    -using System.Text;
    -using System.Threading;
    -using System.Threading.Tasks;
    -using System.Windows.Forms;
    -using System.IO;
    -
    -namespace TrackTrends
    -{
    -    public partial class Main : Form
    -    {
    -        //private Reader Reader = null;
    -        private F1TVEmulator Emulator = null;
    -        private DataWrapper Wrapper = null;
    -        private bool cancelRequested = false;
    -        private SemaphoreSlim semaphore = new SemaphoreSlim(1);
    -
    -        string ConfigFile = "";
    -        string GpUrl = "";
    -
    -        //For the responsive content
    +
    /// Author : Maxime Rohmer
    +/// Date : 09/06/2023
    +/// File : Form1.cs
    +/// Brief : Class that controls the main view of the app
    +/// Version : Beta 1.0
    +
    +using System;
    +using System.Collections.Generic;
    +using System.ComponentModel;
    +using System.Data;
    +using System.Diagnostics;
    +using System.Drawing;
    +using System.Linq;
    +using System.Text;
    +using System.Threading;
    +using System.Threading.Tasks;
    +using System.Windows.Forms;
    +using System.IO;
    +
    +namespace TrackTrends
    +{
    +    public partial class Main : Form
    +    {
    +        private F1TVEmulator Emulator = null;
    +        private DataWrapper Wrapper = null;
    +        private bool cancelRequested = false;
    +        private SemaphoreSlim semaphore = new SemaphoreSlim(1);
     
    -        Size oldSize = new Size();
    -        Size oldRankingSize = new Size();
    -        Size oldLapTimesSize = new Size();
    -        Size oldBattles = new Size();
    +        string ConfigFile = "";
    +        string GpUrl = "";
    +
    +        //For the responsive content
     
    -        Size oldPnlBattles = new Size();
    -        Size oldPnlRankings = new Size();
    -        Size oldPnlFastest = new Size();
    -        Size oldPnlSlowest = new Size();
    +        Size oldSize = new Size();
    +        Size oldRankingSize = new Size();
    +        Size oldLapTimesSize = new Size();
    +        Size oldBattles = new Size();
     
    -        Point oldRankingPosition = new Point();
    -        Point oldBattlePosition = new Point();
    -        Point oldDriverInfoPosition = new Point();
    -
    -        Point olPnlFastestPosition = new Point();
    -        Point oldPnlSlowestPosition = new Point();
    -
    -        public Main()
    -        {
    -            InitializeComponent();
    -        }
    -        public async void RefreshUI()
    -        {
    -            if (Directory.Exists(ConfigurationTool.CONFIGS_FOLDER_NAME))
    -            {
    -                lsbPresets.DataSource = null;
    -                lsbPresets.DataSource = Directory.GetFiles(ConfigurationTool.CONFIGS_FOLDER_NAME);
    -            }
    -        }
    -        private async void btnSettings_Click(object sender, EventArgs e)
    +        Size oldPnlBattles = new Size();
    +        Size oldPnlRankings = new Size();
    +        Size oldPnlFastest = new Size();
    +        Size oldPnlSlowest = new Size();
    +
    +        Point oldRankingPosition = new Point();
    +        Point oldBattlePosition = new Point();
    +        Point oldDriverInfoPosition = new Point();
    +
    +        Point olPnlFastestPosition = new Point();
    +        Point oldPnlSlowestPosition = new Point();
    +
    +        public Main()
    +        {
    +            InitializeComponent();
    +        }
    +        /// <summary>
    +        /// Will update everything that is not data related
    +        /// </summary>
    +        public void RefreshUI()
             {
    -            if (Emulator != null)
    -                Emulator.ResetDriver();
    -
    -            btnStartDecoding.Enabled = false;
    -            btnStopUpdating.Enabled = false;
    -            btnResetEmulator.Text = "Launch";
    -
    -            Emulator = null;
    -            Wrapper = null;
    -
    -            GC.Collect();
    -
    -            Settings settingsForm = new Settings();
    -            settingsForm.ShowDialog();
    -            RefreshUI();
    -            //MessageBox.Show(settingsForm.GrandPrixUrl + Environment.NewLine + settingsForm.GrandPrixName + Environment.NewLine + settingsForm.GrandPrixYear);
    -            if (settingsForm.GrandPrixUrl != "" && settingsForm.SelectedConfigFile != "")
    -            {
    -                GpUrl = settingsForm.GrandPrixUrl;
    -                tbxGpUrl.Text = GpUrl;
    -                if (File.Exists(settingsForm.SelectedConfigFile))
    -                {
    -                    ConfigFile = settingsForm.SelectedConfigFile;
    -                    for(int i = 0; i < lsbPresets.Items.Count; i++)
    -                    {
    -                        if (lsbPresets.Items[i].ToString() == ConfigFile)
    -                            lsbPresets.SelectedIndex = i;
    -                    }
    -                }
    -                else
    -                {
    -                    MessageBox.Show("The config file has not been found please return to the config and change it");
    -                }
    -            }
    -            else
    -            {
    -                //WE dont care anymore, the user will choose its Grand Prix himself in the main program
    -                //MessageBox.Show("There is no URL for the Grand Prix you want to decode. Please return to the config and add a valid one");
    -            }
    -        }
    -
    -        private async void Form1_Load(object sender, EventArgs e)
    -        {
    -            //Those are the default values but they will need to be changed later when the configuration has been done
    -            ConfigFile = "./Presets/Clean_4K_2023.json";
    -            GpUrl = "https://f1tv.formula1.com/detail/1000006688/2023-azerbaijan-grand-prix?action=play";
    -
    -            tbxGpUrl.Text = GpUrl;
    -
    -            oldSize = this.Size;
    -            oldRankingSize = gpbxRanking.Size;
    -            oldLapTimesSize = gpbxLapTimes.Size;
    -            oldBattles = gpbxBattles.Size;
    -
    -            oldPnlRankings = pnlLiveRanking.Size;
    -            oldPnlBattles = pnlBattles.Size;
    -            oldPnlFastest = pnlFastest.Size;
    -            oldPnlSlowest = pnlSlowest.Size;
    -
    -            oldRankingPosition = gpbxRanking.Location;
    -            oldBattlePosition = gpbxBattles.Location;
    -            oldDriverInfoPosition = gpbxDriverInfos.Location;
    -
    -            olPnlFastestPosition = pnlFastest.Location;
    -            oldPnlSlowestPosition = pnlSlowest.Location;
    -
    -            tip1.SetToolTip(btnResetEmulator, "Starts or restarts the emulator. You need to start this to use the app");
    -            tip1.SetToolTip(btnSettings, "Opens the configuration menu");
    -            tip1.SetToolTip(tbxGpUrl, "Insert the URL of the Grand Prix you want to track. Dont forget the \"?action=play\" at the end");
    -            tip1.SetToolTip(lsbPresets, "Select a configuration preset to use with the decoding");
    -            tip1.SetToolTip(pbxResult,"A preview of what the program sees. You should see the DATA page of the F1TV here");
    -            tip1.SetToolTip(lsbOvertakes,"A list of all the activity. You can scroll to see the most recent overtakes");
    -            tip1.SetToolTip(gpbxBattles,"The four first battles in the field. A battle is two drivers less than 3 seconds apart");
    -            tip1.SetToolTip(gpbxLapTimes,"The fastest and slowest drivers on track at the moment. It takes the average lapTime of the last 5 laps to choose who is the fastes or the slowest");
    -
    -            RefreshUI();
    -        }
    -
    -        private async void btnUpdate_Click(object sender, EventArgs e)
    -        {
    -            cancelRequested = false;
    -            if (Emulator != null && Wrapper != null)
    -            {
    -                // Disable UI controls to prevent re-entrancy
    -                btnResetEmulator.Enabled = false;
    -                btnStartDecoding.Enabled = false;
    -                btnStopUpdating.Enabled = true;
    -                btnSettings.Enabled = false;
    -                while (!cancelRequested)
    -                {
    -                    await semaphore.WaitAsync();
    -
    -                    try
    -                    {
    -                        // Start the time-consuming task on a separate thread
    -                        await Task.Run(async () =>
    -                        {
    -                            Stopwatch sw = new Stopwatch();
    -                            sw.Start();
    -
    -                            Bitmap screen = Emulator.Screenshot();
    -                            screen.Save("HopefullyDataScreenshot.png");
    -
    -                            Invoke((MethodInvoker)delegate
    -                            {
    -                                pbxResult.Image = (Bitmap)screen.Clone();
    -                            });
    -
    -                            Wrapper.ChangeImage(screen);
    -                            int errorCode = Wrapper.Refresh();
    -
    -                            sw.Stop();
    -                            // Task completed
    -                            Invoke((MethodInvoker)delegate
    -                            {
    -                                DisplayResults(errorCode, sw, screen);
    -                                DisplayBattles();
    -                                DisplayDeltas();
    -                                DisplayOvertakes();
    -                            });
    -                        });
    -                    }
    -                    finally
    -                    {
    -                        semaphore.Release();
    -                    }
    -                }
    -                // Re-enable UI controls
    -                btnStopUpdating.Text = "Stop";
    -                btnStartDecoding.Enabled = true;
    -                btnStopUpdating.Enabled = false;
    -                btnResetEmulator.Enabled = true;
    -                btnSettings.Enabled = true;
    -            }
    -        }
    -        private void DisplayOvertakes()
    -        {
    -            Wrapper.DisplayOvertakes(lsbOvertakes);
    -        }
    -        private void DisplayBattles()
    -        {
    -            Wrapper.DisplayBattles(pnlBattles, this);
    -        }
    -        private void DisplayDeltas()
    -        {
    -            Wrapper.DisplayTimesDeltas(pnlFastest, pnlSlowest, this);
    -        }
    -        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    -        {
    -            if (Emulator != null)
    -            {
    -                Emulator.Stop();
    -            }
    -        }
    -        private void DisplayResults(int errorCode, Stopwatch sw, Bitmap screen)
    -        {
    -            if (errorCode != 0)
    -            {
    -                cancelRequested = true;
    -                MessageBox.Show("An error has occured while trying to recover data from live feed. This can happen sometimes. I would advise you to restart a few times. If the problem persists check your configuration.");
    -            }
    -            else
    -            {
    -                Wrapper.DisplayLiveRanking(pnlLiveRanking, this);
    -            }
    +            if (Directory.Exists(ConfigurationTool.CONFIGS_FOLDER_NAME))
    +            {
    +                lsbPresets.DataSource = null;
    +                lsbPresets.DataSource = Directory.GetFiles(ConfigurationTool.CONFIGS_FOLDER_NAME);
    +            }
    +        }
    +        /// <summary>
    +        /// Opens the settings page. Also disposes of the browser if there is one opened and all thos things
    +        /// </summary>
    +        /// <param name="sender"></param>
    +        /// <param name="e"></param>
    +        private void btnSettings_Click(object sender, EventArgs e)
    +        {
    +            if (Emulator != null)
    +                Emulator.ResetDriver();
    +
    +            btnStartDecoding.Enabled = false;
    +            btnStopUpdating.Enabled = false;
    +            btnResetEmulator.Text = "Launch";
    +
    +            Emulator = null;
    +            Wrapper = null;
    +
    +            GC.Collect();
    +
    +            Settings settingsForm = new Settings();
    +            settingsForm.ShowDialog();
    +            RefreshUI();
    +            //MessageBox.Show(settingsForm.GrandPrixUrl + Environment.NewLine + settingsForm.GrandPrixName + Environment.NewLine + settingsForm.GrandPrixYear);
    +            if (settingsForm.GrandPrixUrl != "" && settingsForm.SelectedConfigFile != "")
    +            {
    +                GpUrl = settingsForm.GrandPrixUrl;
    +                tbxGpUrl.Text = GpUrl;
    +                if (File.Exists(settingsForm.SelectedConfigFile))
    +                {
    +                    ConfigFile = settingsForm.SelectedConfigFile;
    +                    for(int i = 0; i < lsbPresets.Items.Count; i++)
    +                    {
    +                        if (lsbPresets.Items[i].ToString() == ConfigFile)
    +                            lsbPresets.SelectedIndex = i;
    +                    }
    +                }
    +                else
    +                {
    +                    //Should technically never show up but we never know
    +                    MessageBox.Show("The config file has not been found please return to the config and change it");
    +                }
    +            }
    +            else
    +            {
    +                //WE dont care anymore, the user will choose its Grand Prix himself in the main program
    +                //MessageBox.Show("There is no URL for the Grand Prix you want to decode. Please return to the config and add a valid one");
    +            }
    +        }
    +        /// <summary>
    +        /// Will do everything that needs to be done at the first start of the app
    +        /// </summary>
    +        /// <param name="sender"></param>
    +        /// <param name="e"></param>
    +        private async void Form1_Load(object sender, EventArgs e)
    +        {
    +            //Those are the default values but they will need to be changed later when the configuration has been done
    +            ConfigFile = "./Presets/Clean_4K_2023.json";
    +            GpUrl = "https://f1tv.formula1.com/detail/1000006688/2023-azerbaijan-grand-prix?action=play";
    +
    +            tbxGpUrl.Text = GpUrl;
    +
    +            this.DoubleBuffered = true;
    +
    +            oldSize = this.Size;
    +            oldRankingSize = gpbxRanking.Size;
    +            oldLapTimesSize = gpbxLapTimes.Size;
    +            oldBattles = gpbxBattles.Size;
    +
    +            oldPnlRankings = pnlLiveRanking.Size;
    +            oldPnlBattles = pnlBattles.Size;
    +            oldPnlFastest = pnlFastest.Size;
    +            oldPnlSlowest = pnlSlowest.Size;
    +
    +            oldRankingPosition = gpbxRanking.Location;
    +            oldBattlePosition = gpbxBattles.Location;
    +            oldDriverInfoPosition = gpbxDriverInfos.Location;
    +
    +            olPnlFastestPosition = pnlFastest.Location;
    +            oldPnlSlowestPosition = pnlSlowest.Location;
    +
    +            tip1.SetToolTip(btnResetEmulator, "Starts or restarts the emulator. You need to start this to use the app");
    +            tip1.SetToolTip(btnSettings, "Opens the configuration menu");
    +            tip1.SetToolTip(tbxGpUrl, "Insert the URL of the Grand Prix you want to track. Dont forget the \"?action=play\" at the end");
    +            tip1.SetToolTip(lsbPresets, "Select a configuration preset to use with the decoding");
    +            tip1.SetToolTip(pbxResult,"A preview of what the program sees. You should see the DATA page of the F1TV here");
    +            tip1.SetToolTip(lsbOvertakes,"A list of all the activity. You can scroll to see the most recent overtakes");
    +            tip1.SetToolTip(gpbxBattles,"The four first battles in the field. A battle is two drivers less than 3 seconds apart");
    +            tip1.SetToolTip(gpbxLapTimes,"The fastest and slowest drivers on track at the moment. It takes the average lapTime of the last 5 laps to choose who is the fastes or the slowest");
    +
    +            RefreshUI();
    +        }
    +        /// <summary>
    +        /// Will start or stop the process of decoding
    +        /// </summary>
    +        /// <param name="sender"></param>
    +        /// <param name="e"></param>
    +        private async void btnUpdate_Click(object sender, EventArgs e)
    +        {
    +            cancelRequested = false;
    +            if (Emulator != null && Wrapper != null)
    +            {
    +                // Disable UI controls to prevent re-entrancy
    +                btnResetEmulator.Enabled = false;
    +                btnStartDecoding.Enabled = false;
    +                btnStopUpdating.Enabled = true;
    +                btnSettings.Enabled = false;
    +                while (!cancelRequested)
    +                {
    +                    await semaphore.WaitAsync();
    +
    +                    try
    +                    {
    +                        // Start the time-consuming task on a separate thread
    +                        await Task.Run(async () =>
    +                        {
    +                            Stopwatch sw = new Stopwatch();
    +                            sw.Start();
    +
    +                            Bitmap screen = Emulator.Screenshot();
    +                            screen.Save("HopefullyDataScreenshot.png");
    +
    +                            Invoke((MethodInvoker)delegate
    +                            {
    +                                pbxResult.Image = (Bitmap)screen.Clone();
    +                            });
    +
    +                            Wrapper.ChangeImage(screen);
    +                            int errorCode = Wrapper.Refresh();
    +
    +                            sw.Stop();
    +                            // Task completed
    +                            Invoke((MethodInvoker)delegate
    +                            {
    +                                DisplayResults(errorCode, sw, screen);
    +                                DisplayBattles();
    +                                DisplayDeltas();
    +                                DisplayOvertakes();
    +                            });
    +                        });
    +                    }
    +                    finally
    +                    {
    +                        semaphore.Release();
    +                    }
    +                }
    +                // Re-enable UI controls
    +                btnStopUpdating.Text = "Stop";
    +                btnStartDecoding.Enabled = true;
    +                btnStopUpdating.Enabled = false;
    +                btnResetEmulator.Enabled = true;
    +                btnSettings.Enabled = true;
    +            }
    +        }
    +        /// <summary>
    +        /// Will display the overtakes in the overtakes list box
    +        /// </summary>
    +        private void DisplayOvertakes()
    +        {
    +            Wrapper.DisplayOvertakes(lsbOvertakes);
             }
    -
    -        private void btnStopUpdating_Click(object sender, EventArgs e)
    -        {
    -            // Set the cancellation flag
    -            cancelRequested = true;
    -            btnStopUpdating.Enabled = false;
    -            btnResetEmulator.Enabled = false;
    -            btnStopUpdating.Text = "Stopping";
    -        }
    -        private async void button1_Click(object sender, EventArgs e)
    -        {
    -            lsbOvertakes.Items.Clear();
    -            btnResetEmulator.Text = "Launching";
    -            btnResetEmulator.Enabled = false;
    -            btnSettings.Enabled = true;
    -            btnStartDecoding.Enabled = false;
    -            btnStopUpdating.Enabled = false;
    -            btnSettings.Enabled = false;
    -            int errorCode = -1;
    -            await Task.Run(async () =>
    -            {
    -                if (Emulator != null)
    -                    Emulator.ResetDriver();
    -
    -                Emulator = null;
    -                Wrapper = null;
    -
    -                GC.Collect();
    -
    -                Emulator = new F1TVEmulator(GpUrl);
    -                errorCode = await Emulator.Start();
    -            });
    -
    -            if (errorCode != 0)
    -            {
    -                string message = "";
    -                switch (errorCode)
    -                {
    -                    case 100:
    -                        message = "Error " + errorCode + " Could not recover cookies. It could be because of an improper installation of python or bad cookies in the chrome database. Please try to log on to the F1TV using chrome again";
    -                        break;
    -                    case 101:
    -                        message = "Error " + errorCode + " Could not start the driver. It could be because an other instance is runnin make sure you closed them all before trying again";
    -                        break;
    -                    case 102:
    -                        message = "Error " + errorCode + " Could not navigate on the F1TV site. Make sure the correct URL has been given and that you logged from chrome. It can take a few minutes to update";
    -                        break;
    -                    case 103:
    -                        message = "Error " + errorCode + " The url is not a valid url";
    -                        break;
    -                    case 104:
    -                        message = "Error " + errorCode + " The url is not a valid url";
    -                        break;
    -                    case 105:
    -                        message = "Error " + errorCode + " There has been an error trying to emulate button presses. Please try again";
    -                        break;
    -                    case 106:
    -                        message = "Error " + errorCode + " There has been an error trying to emulate button presses. Please try again";
    -                        break;
    -                    default:
    -                        message = "Could not start the emulator Error " + errorCode;
    -                        break;
    -                }
    -                MessageBox.Show(message);
    -
    -                btnResetEmulator.Enabled = true;
    -                btnSettings.Enabled = true;
    -                btnResetEmulator.Text = "Retry";
    -            }
    -            else
    -            {
    -                Wrapper = new DataWrapper(ConfigFile, Emulator.Screenshot());
    -                btnResetEmulator.Text = "Re launch";
    -                btnResetEmulator.Enabled = true;
    -                btnSettings.Enabled = true;
    -                btnStartDecoding.Enabled = true;
    -            }
    -        }
    -        private void removeBorders(object sender, PaintEventArgs e)
    -        {
    -            GroupBox gpbx = (GroupBox)sender;
    -
    -            using (Pen pen = new Pen(gpbx.BackColor, 50))
    -            {
    -                e.Graphics.DrawRectangle(pen, 0, 0, gpbx.Width - 1, gpbx.Height - 1);
    -                e.Graphics.DrawRectangle(pen, 0, 0, gpbx.Width - 1, gpbx.Height - 1);
    -            }
    -
    -            using (var brush = new SolidBrush(gpbx.ForeColor))
    -            {
    -                var textPosition = new Point(5, 0); // Adjust the X and Y values as needed
    -                e.Graphics.DrawString(gpbx.Text, gpbx.Font, brush, textPosition);
    -            }
    -        }
    -        private void lsbPresets_SelectedIndexChanged(object sender, EventArgs e)
    -        {
    -            if (lsbPresets.SelectedIndex >= 0)
    -                ConfigFile = lsbPresets.Items[lsbPresets.SelectedIndex].ToString();
    -        }
    -
    -        private void textBox1_TextChanged(object sender, EventArgs e)
    -        {
    -            if (tbxGpUrl.Text != "")
    -                GpUrl = tbxGpUrl.Text;
    -        }
    -        public void btnDriver_Click(object sender, EventArgs e)
    -        {
    -            //Removes the cover
    -            if (pnlCover.Visible = true)
    -                pnlCover.Visible = false;
    -            //Happens when a driver button has been clicked
    -            //MessageBox.Show((sender as Button).Name + " has been selected");
    -            Button btn = (sender as Button);
    -            string[] parts = btn.Name.Split('_');
    -            DriverData driver = Wrapper.GetFullDriverData(parts[0], pnlCurrentDriverLapsHistory, this);
    -            lblCurrentDriverName.Text = driver.Name;
    -            lblCurrentDriverPosition.Text = driver.Position.ToString();
    -            lblCurrentDriverGapToLeader.Text = Reader.ConvertMsToTime(driver.GapToLeader);
    -            lblCurrentDriverLapTime.Text = Reader.ConvertMsToTime(driver.LapTime);
    -            lblCurrentDriverTyreAge.Text = driver.CurrentTyre.NumberOfLaps.ToString();
    -            if (driver.DRS)
    -            {
    -                lblCurrentDriverDRS.Text = "Open";
    -                lblCurrentDriverDRS.ForeColor = Color.FromArgb(0, 164, 46);
    -            }
    -            else
    -            {
    -                lblCurrentDriverDRS.Text = "Closed";
    -                lblCurrentDriverDRS.ForeColor = Color.Black;
    -            }
    -            switch (driver.CurrentTyre.Coumpound)
    -            {
    -                case Tyre.Type.Undefined:
    -                    lblCurrentDriverTyreType.Text = "uuuuh...";
    -                    lblCurrentDriverTyreType.ForeColor = Color.Violet;
    -                    break;
    -                case Tyre.Type.Hard:
    -                    lblCurrentDriverTyreType.Text = "Hard";
    -                    lblCurrentDriverTyreType.ForeColor = Color.FromArgb(164, 165, 168);
    -                    break;
    -                case Tyre.Type.Medium:
    -                    lblCurrentDriverTyreType.Text = "Medium";
    -                    lblCurrentDriverTyreType.ForeColor = Color.FromArgb(245, 191, 0);
    -                    break;
    -                case Tyre.Type.Soft:
    -                    lblCurrentDriverTyreType.Text = "Soft";
    -                    lblCurrentDriverTyreType.ForeColor = Color.FromArgb(255, 0, 0);
    -                    break;
    -                case Tyre.Type.Inter:
    -                    lblCurrentDriverTyreType.Text = "Intermediate";
    -                    lblCurrentDriverTyreType.ForeColor = Color.FromArgb(0, 164, 46);
    -                    break;
    -                case Tyre.Type.Wet:
    -                    lblCurrentDriverTyreType.Text = "Wet";
    -                    lblCurrentDriverTyreType.ForeColor = Color.FromArgb(39, 96, 166);
    -                    break;
    -            }
    -        }
    -        public void btnLapTime_Click(object sender, EventArgs e)
    +        /// <summary>
    +        /// Will display the battles in the battles pannel
    +        /// </summary>
    +        private void DisplayBattles()
    +        {
    +            Wrapper.DisplayBattles(pnlBattles, this);
    +        }
    +        /// <summary>
    +        /// Will display the time differences in the faster and slowest pannels
    +        /// </summary>
    +        private void DisplayDeltas()
    +        {
    +            Wrapper.DisplayTimesDeltas(pnlFastest, pnlSlowest, this);
    +        }
    +        /// <summary>
    +        /// Will try to stop the emulator (usually does not work please do not count on it)
    +        /// </summary>
    +        /// <param name="sender"></param>
    +        /// <param name="e"></param>
    +        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    +        {
    +            if (Emulator != null)
    +            {
    +                Emulator.Stop();
    +            }
    +        }
    +        /// <summary>
    +        /// Will display the live ranking on the live ranking pannel. Its called like this because historically it was the method that just recovered the bare results from the OCR
    +        /// </summary>
    +        /// <param name="errorCode"></param>
    +        /// <param name="sw"></param>
    +        /// <param name="screen"></param>
    +        private void DisplayResults(int errorCode, Stopwatch sw, Bitmap screen)
    +        {
    +            if (errorCode != 0)
    +            {
    +                cancelRequested = true;
    +                MessageBox.Show("An error has occured while trying to recover data from live feed. This can happen sometimes. I would advise you to restart a few times. If the problem persists check your configuration.");
    +            }
    +            else
    +            {
    +                Wrapper.DisplayLiveRanking(pnlLiveRanking, this);
    +            }
    +        }
    +
    +        /// <summary>
    +        /// Will stop the data recovering operation and resets some buttons and text
    +        /// </summary>
    +        /// <param name="sender"></param>
    +        /// <param name="e"></param>
    +        private void btnStopUpdating_Click(object sender, EventArgs e)
    +        {
    +            // Set the cancellation flag
    +            cancelRequested = true;
    +            btnStopUpdating.Enabled = false;
    +            btnResetEmulator.Enabled = false;
    +            btnStopUpdating.Text = "Stopping";
    +        }
    +        /// <summary>
    +        /// Will start the F1TVEmulator, again this name is historical because back at the start of this project this button did not have a name
    +        /// </summary>
    +        /// <param name="sender"></param>
    +        /// <param name="e"></param>
    +        private async void button1_Click(object sender, EventArgs e)
    +        {
    +            lsbOvertakes.Items.Clear();
    +            btnResetEmulator.Text = "Launching";
    +            btnResetEmulator.Enabled = false;
    +            btnSettings.Enabled = true;
    +            btnStartDecoding.Enabled = false;
    +            btnStopUpdating.Enabled = false;
    +            btnSettings.Enabled = false;
    +            int errorCode = -1;
    +            await Task.Run(async () =>
    +            {
    +                if (Emulator != null)
    +                    Emulator.ResetDriver();
    +
    +                Emulator = null;
    +                Wrapper = null;
    +
    +                GC.Collect();
    +
    +                Emulator = new F1TVEmulator(GpUrl);
    +                errorCode = await Emulator.Start();
    +            });
    +
    +            if (errorCode != 0)
    +            {
    +                string message = "";
    +                switch (errorCode)
    +                {
    +                    case 100:
    +                        message = "Error " + errorCode + " Could not recover cookies. It could be because of an improper installation of python or bad cookies in the chrome database. Please try to log on to the F1TV using chrome again";
    +                        break;
    +                    case 101:
    +                        message = "Error " + errorCode + " Could not start the driver. It could be because an other instance is runnin make sure you closed them all before trying again";
    +                        break;
    +                    case 102:
    +                        message = "Error " + errorCode + " Could not navigate on the F1TV site. Make sure the correct URL has been given and that you logged from chrome. It can take a few minutes to update";
    +                        break;
    +                    case 103:
    +                        message = "Error " + errorCode + " The url is not a valid url";
    +                        break;
    +                    case 104:
    +                        message = "Error " + errorCode + " The url is not a valid url";
    +                        break;
    +                    case 105:
    +                        message = "Error " + errorCode + " There has been an error trying to emulate button presses. Please try again";
    +                        break;
    +                    case 106:
    +                        message = "Error " + errorCode + " There has been an error trying to emulate button presses. Please try again";
    +                        break;
    +                    default:
    +                        message = "Could not start the emulator Error " + errorCode;
    +                        break;
    +                }
    +                MessageBox.Show(message);
    +
    +                btnResetEmulator.Enabled = true;
    +                btnSettings.Enabled = true;
    +                btnResetEmulator.Text = "Retry";
    +            }
    +            else
    +            {
    +                Wrapper = new DataWrapper(ConfigFile, Emulator.Screenshot());
    +                btnResetEmulator.Text = "Re launch";
    +                btnResetEmulator.Enabled = true;
    +                btnSettings.Enabled = true;
    +                btnStartDecoding.Enabled = true;
    +            }
    +        }
    +        /// <summary>
    +        /// Silly way to remove borders from groupbox and make them look like pannels with titles
    +        /// </summary>
    +        /// <param name="sender"></param>
    +        /// <param name="e"></param>
    +        private void removeBorders(object sender, PaintEventArgs e)
    +        {
    +            GroupBox gpbx = (GroupBox)sender;
    +
    +            using (Pen pen = new Pen(gpbx.BackColor, 50))
    +            {
    +                e.Graphics.DrawRectangle(pen, 0, 0, gpbx.Width - 1, gpbx.Height - 1);
    +                e.Graphics.DrawRectangle(pen, 0, 0, gpbx.Width - 1, gpbx.Height - 1);
    +            }
    +
    +            using (var brush = new SolidBrush(gpbx.ForeColor))
    +            {
    +                var textPosition = new Point(5, 0); // Adjust the X and Y values as needed
    +                e.Graphics.DrawString(gpbx.Text, gpbx.Font, brush, textPosition);
    +            }
    +        }
    +        /// <summary>
    +        /// Will change the preset to use when starting the emulator
    +        /// </summary>
    +        /// <param name="sender"></param>
    +        /// <param name="e"></param>
    +        private void lsbPresets_SelectedIndexChanged(object sender, EventArgs e)
             {
    -            //Happens when a lapTime has been clicked
    -            Button btn = sender as Button;
    -            string[] parts = btn.Name.Split('_');
    -            Wrapper.DisplayLapTimeInfos(parts[0], Convert.ToInt32(parts[1]), btn.Text);
    -        }
    -
    -        private void Main_Resize(object sender, EventArgs e)
    -        {
    -            int xDiff = this.Width - oldSize.Width;
    -            int yDiff = this.Height - oldSize.Height;
    -            int padding = 10;
    -            //This will take half the newly created space
    -            gpbxRanking.Size = new Size(oldRankingSize.Width + xDiff / 2, oldRankingSize.Height + yDiff);
    -            gpbxRanking.Location = new Point(oldRankingPosition.X + xDiff / 2, gpbxRanking.Location.Y);
    -            //Will take half the new height and half the new height
    -            gpbxLapTimes.Size = new Size(oldLapTimesSize.Width + xDiff / 2, oldLapTimesSize.Height + yDiff / 2);
    -            //Will take half the new height and half the new width
    -            gpbxBattles.Size = new Size(oldBattles.Width + xDiff / 2, oldBattles.Height + yDiff / 2);
    -            gpbxBattles.Location = new Point(gpbxBattles.Location.X, oldBattlePosition.Y + yDiff / 2);
    -            //The infos wont change width but will need to be centerd
    -            Point startOfZone = new Point(gpbxOvertakes.Width + gpbxOvertakes.Location.X, gpbxOvertakes.Location.Y);
    -            Point endOfZone = new Point(gpbxRanking.Location.X, gpbxOvertakes.Location.Y);
    -            int totalWidth = endOfZone.X - startOfZone.X;
    -            gpbxDriverInfos.Location = new Point(startOfZone.X + (totalWidth / 2 - gpbxDriverInfos.Width / 2), oldDriverInfoPosition.Y + yDiff);
    -            //Now resizing internals
    -            pnlFastest.Size = new Size(oldPnlFastest.Width + xDiff / 4,oldPnlFastest.Height + yDiff / 4);
    -            pnlFastest.Location = new Point(olPnlFastestPosition.X,olPnlFastestPosition.Y + yDiff / 4);
    -
    -            pnlSlowest.Size = new Size(oldPnlSlowest.Width + xDiff / 4, oldPnlSlowest.Height + yDiff / 4);
    -            pnlSlowest.Location = new Point(oldPnlSlowestPosition.X + xDiff / 4, oldPnlSlowestPosition.Y + yDiff / 4);
    -
    -            pnlBattles.Size = new Size(oldPnlBattles.Width + xDiff / 2,oldPnlBattles.Height + yDiff / 2);
    -
    -            pnlLiveRanking.Size = new Size(oldPnlRankings.Width + xDiff / 2,oldPnlRankings.Height + yDiff);
    -        }
    -    }
    -}
    +            if (lsbPresets.SelectedIndex >= 0)
    +                ConfigFile = lsbPresets.Items[lsbPresets.SelectedIndex].ToString();
    +        }
    +        /// <summary>
    +        /// Will change the URL the emulator will use, historical name again
    +        /// </summary>
    +        /// <param name="sender"></param>
    +        /// <param name="e"></param>
    +        private void textBox1_TextChanged(object sender, EventArgs e)
    +        {
    +            if (tbxGpUrl.Text != "")
    +                GpUrl = tbxGpUrl.Text;
    +        }
    +        /// <summary>
    +        /// This is called by the automatically generated buttons. Its here to fill in the driver info tab whenever the user clicks on a button that contains the name of a driver
    +        /// </summary>
    +        /// <param name="sender"></param>
    +        /// <param name="e"></param>
    +        public void btnDriver_Click(object sender, EventArgs e)
    +        {
    +            //Removes the cover
    +            if (pnlCover.Visible = true)
    +                pnlCover.Visible = false;
    +            //Happens when a driver button has been clicked
    +            //MessageBox.Show((sender as Button).Name + " has been selected");
    +            Button btn = (sender as Button);
    +            string[] parts = btn.Name.Split('_');
    +            DriverData driver = Wrapper.GetFullDriverData(parts[0], pnlCurrentDriverLapsHistory, this);
    +            lblCurrentDriverName.Text = driver.Name;
    +            lblCurrentDriverPosition.Text = driver.Position.ToString();
    +            lblCurrentDriverGapToLeader.Text = Reader.ConvertMsToTime(driver.GapToLeader);
    +            lblCurrentDriverLapTime.Text = Reader.ConvertMsToTime(driver.LapTime);
    +            lblCurrentDriverTyreAge.Text = driver.CurrentTyre.NumberOfLaps.ToString();
    +            if (driver.DRS)
    +            {
    +                lblCurrentDriverDRS.Text = "Open";
    +                lblCurrentDriverDRS.ForeColor = Color.FromArgb(0, 164, 46);
    +            }
    +            else
    +            {
    +                lblCurrentDriverDRS.Text = "Closed";
    +                lblCurrentDriverDRS.ForeColor = Color.Black;
    +            }
    +            switch (driver.CurrentTyre.Coumpound)
    +            {
    +                case Tyre.Type.Undefined:
    +                    lblCurrentDriverTyreType.Text = "uuuuh...";
    +                    lblCurrentDriverTyreType.ForeColor = Color.Violet;
    +                    break;
    +                case Tyre.Type.Hard:
    +                    lblCurrentDriverTyreType.Text = "Hard";
    +                    lblCurrentDriverTyreType.ForeColor = Color.FromArgb(164, 165, 168);
    +                    break;
    +                case Tyre.Type.Medium:
    +                    lblCurrentDriverTyreType.Text = "Medium";
    +                    lblCurrentDriverTyreType.ForeColor = Color.FromArgb(245, 191, 0);
    +                    break;
    +                case Tyre.Type.Soft:
    +                    lblCurrentDriverTyreType.Text = "Soft";
    +                    lblCurrentDriverTyreType.ForeColor = Color.FromArgb(255, 0, 0);
    +                    break;
    +                case Tyre.Type.Inter:
    +                    lblCurrentDriverTyreType.Text = "Intermediate";
    +                    lblCurrentDriverTyreType.ForeColor = Color.FromArgb(0, 164, 46);
    +                    break;
    +                case Tyre.Type.Wet:
    +                    lblCurrentDriverTyreType.Text = "Wet";
    +                    lblCurrentDriverTyreType.ForeColor = Color.FromArgb(39, 96, 166);
    +                    break;
    +            }
    +        }
    +        /// <summary>
    +        /// This is supposed to be called by an automatically generated button. It should be any button with a laptime info on it
    +        /// </summary>
    +        /// <param name="sender"></param>
    +        /// <param name="e"></param>
    +        public void btnLapTime_Click(object sender, EventArgs e)
    +        {
    +            //Happens when a lapTime has been clicked
    +            Button btn = sender as Button;
    +            string[] parts = btn.Name.Split('_');
    +            Wrapper.DisplayLapTimeInfos(parts[0], Convert.ToInt32(parts[1]), btn.Text);
    +        }
    +        /// <summary>
    +        /// Will trigger responsive calculation everytime the form changes size
    +        /// </summary>
    +        /// <param name="sender"></param>
    +        /// <param name="e"></param>
    +        private void Main_Resize(object sender, EventArgs e)
    +        {
    +            int xDiff = this.Width - oldSize.Width;
    +            int yDiff = this.Height - oldSize.Height;
    +            int padding = 10;
    +            //This will take half the newly created space
    +            gpbxRanking.Size = new Size(oldRankingSize.Width + xDiff / 2, oldRankingSize.Height + yDiff);
    +            gpbxRanking.Location = new Point(oldRankingPosition.X + xDiff / 2, gpbxRanking.Location.Y);
    +            //Will take half the new height and half the new height
    +            gpbxLapTimes.Size = new Size(oldLapTimesSize.Width + xDiff / 2, oldLapTimesSize.Height + yDiff / 2);
    +            //Will take half the new height and half the new width
    +            gpbxBattles.Size = new Size(oldBattles.Width + xDiff / 2, oldBattles.Height + yDiff / 2);
    +            gpbxBattles.Location = new Point(gpbxBattles.Location.X, oldBattlePosition.Y + yDiff / 2);
    +            //The infos wont change width but will need to be centerd
    +            Point startOfZone = new Point(gpbxOvertakes.Width + gpbxOvertakes.Location.X, gpbxOvertakes.Location.Y);
    +            Point endOfZone = new Point(gpbxRanking.Location.X, gpbxOvertakes.Location.Y);
    +            int totalWidth = endOfZone.X - startOfZone.X;
    +            gpbxDriverInfos.Location = new Point(startOfZone.X + (totalWidth / 2 - gpbxDriverInfos.Width / 2), oldDriverInfoPosition.Y + yDiff);
    +            //Now resizing internals
    +            pnlFastest.Size = new Size(oldPnlFastest.Width + xDiff / 4,oldPnlFastest.Height + yDiff / 4);
    +            pnlFastest.Location = new Point(olPnlFastestPosition.X,olPnlFastestPosition.Y + yDiff / 4);
    +
    +            pnlSlowest.Size = new Size(oldPnlSlowest.Width + xDiff / 4, oldPnlSlowest.Height + yDiff / 4);
    +            pnlSlowest.Location = new Point(oldPnlSlowestPosition.X + xDiff / 4, oldPnlSlowestPosition.Y + yDiff / 4);
    +
    +            pnlBattles.Size = new Size(oldPnlBattles.Width + xDiff / 2,oldPnlBattles.Height + yDiff / 2);
    +
    +            pnlLiveRanking.Size = new Size(oldPnlRankings.Width + xDiff / 2,oldPnlRankings.Height + yDiff);
    +        }
    +    }
    +}
     
    @@ -701,13 +773,13 @@ -
  • - - Program.cs - -
  • -
  • - - Settings.Designer.cs - -
  • -
  • SqliteStorage.cs @@ -260,10 +250,10 @@

    OcrImage.cs

    /// Author : Maxime Rohmer
    -/// Date : 30/05/2023
    +/// Date : 09/06/2023
     /// File : OcrImage.cs
     /// Brief : Class containing all the methods used to enhance images for OCR
    -/// Version : Alpha 1.0
    +/// Version : Beta 1.0
     
     using System;
     using System.Collections.Generic;
    @@ -280,658 +270,672 @@
             //Any color that has any of its R,G or B channel higher than the treshold will be considered as being usefull information
             public static Color F1TV_BACKGROUND_TRESHOLD = Color.FromArgb(0x50, 0x50, 0x50);
             Bitmap InputBitmap;
    -        public enum WindowType
    -        {
    -            LapTime,
    -            Text,
    -            Sector,
    -            Gap,
    -            Tyre,
    -        }
    -
    -        /// <summary>
    -        /// Create a new Ocr image to help enhance the given bitmap for OCR
    -        /// </summary>
    -        /// <param name="inputBitmap">The image you want to enhance</param>
    -        public OcrImage(Bitmap inputBitmap)
    -        {
    -            InputBitmap = inputBitmap;
    -        }
    -        /// <summary>
    -        /// Enhances the image depending on wich type of window the image comes from
    -        /// </summary>
    -        /// <param name="type">The type of the window. Depending on it different enhancing features will be applied</param>
    -        /// <returns>The enhanced Bitmap</returns>
    -        public Bitmap Enhance(WindowType type = WindowType.Text)
    -        {
    -            Bitmap outputBitmap = (Bitmap)InputBitmap.Clone();
    -            //Note : If you plan to activate all the comments that I used to debug the OCR I would advise to make sure that the debug folder exists
    -            switch (type)
    -            {
    -                case WindowType.Gap:
    -                    //outputBitmap.Save(Window.GAPTOLEADER_DEBUG_FOLDER + @"\raw_" + id + ".png");
    -
    -                    outputBitmap = Tresholding(outputBitmap, 165);
    -                    //outputBitmap.Save(Window.GAPTOLEADER_DEBUG_FOLDER + @"\treshold_" + id + ".png");
    -
    -                    outputBitmap = Resize(outputBitmap, 2);
    -                    //outputBitmap.Save(Window.GAPTOLEADER_DEBUG_FOLDER + @"\resize_" + id + ".png");
    -
    -                    outputBitmap = Dilatation(outputBitmap, 1);
    -                    //outputBitmap.Save(Window.GAPTOLEADER_DEBUG_FOLDER + @"\Final_dilatation_" + id + ".png");
    -                    break;
    -                case WindowType.Sector:
    -                    //outputBitmap.Save(Window.SECTOR1_DEBUG_FOLDER + @"\raw_" + id + ".png");
    -
    -                    outputBitmap = VanishOxyAction(outputBitmap);
    -                    //outputBitmap.Save(Window.SECTOR1_DEBUG_FOLDER + @"\vanish_" + id + ".png");
    -
    -                    outputBitmap = Tresholding(outputBitmap, 150);
    -                    //outputBitmap.Save(Window.SECTOR1_DEBUG_FOLDER + @"\Final_treshold_" + id + ".png");
    -                    break;
    -                case WindowType.LapTime:
    -                    //outputBitmap.Save(Window.LAPTIME_DEBUG_FOLDER + @"\raw_" + id + ".png");
    -
    -                    outputBitmap = Tresholding(outputBitmap,185);
    -                    //outputBitmap.Save(Window.LAPTIME_DEBUG_FOLDER + @"\Treshold_" + id + ".png");
    -
    -                    outputBitmap = SobelEdgeDetection(outputBitmap);
    -                    //outputBitmap.Save(Window.LAPTIME_DEBUG_FOLDER + @"\SobelDetection_" + id + ".png");
    -                    break;
    -                case WindowType.Text:
    -                    //outputBitmap.Save(Window.STRING_DEBUG_FOLDER + @"\raw_" + id + ".png");
    -
    -                    outputBitmap = Tresholding(outputBitmap, 165);
    -                    //outputBitmap.Save(Window.STRING_DEBUG_FOLDER + @"\Final_treshold_" + id + ".png");
    -                    break;
    -                case WindowType.Tyre:
    -                    //outputBitmap.Save(Window.TYRE_DEBUG_FOLDER + @"\raw_" + id + ".png");
    -
    -                    outputBitmap = RemoveUseless(outputBitmap);
    -                    //outputBitmap.Save(Window.TYRE_DEBUG_FOLDER + @"\uselessRemoved_" + id + ".png");
    -
    -                    outputBitmap = Dilatation(outputBitmap, 1);
    -                    //outputBitmap.Save(Window.TYRE_DEBUG_FOLDER + @"\Final_dilatation_" + id + ".png");
    -                    break;
    -                default:
    -                    outputBitmap = Tresholding(outputBitmap, 165);
    -                    outputBitmap = Resize(outputBitmap, 2);
    -                    outputBitmap = Erode(outputBitmap, 1);
    -                    break;
    -            }
    -            return outputBitmap;
    -        }
    -        /// <summary>
    -        /// Method that convert a colored RGB bitmap into a GrayScale image 
    -        /// </summary>
    -        /// <param name="inputBitmap">The Bitmap you want to convert</param>
    -        /// <returns>The bitmap in grayscale</returns>
    -        public static Bitmap Grayscale(Bitmap inputBitmap)
    -        {
    -            Rectangle rect = new Rectangle(0, 0, inputBitmap.Width, inputBitmap.Height);
    -            BitmapData bmpData = inputBitmap.LockBits(rect, ImageLockMode.ReadWrite, inputBitmap.PixelFormat);
    -            int bytesPerPixel = Bitmap.GetPixelFormatSize(inputBitmap.PixelFormat) / 8;
    -
    -            unsafe
    -            {
    -                byte* ptr = (byte*)bmpData.Scan0.ToPointer();
    -                for (int y = 0; y < inputBitmap.Height; y++)
    -                {
    -                    byte* currentLine = ptr + (y * bmpData.Stride);
    -                    for (int x = 0; x < inputBitmap.Width; x++)
    -                    {
    -                        byte* pixel = currentLine + (x * bytesPerPixel);
    -
    -                        byte blue = pixel[0];
    -                        byte green = pixel[1];
    -                        byte red = pixel[2];
    +
    +        Random rnd = new Random();
    +        public enum WindowType
    +        {
    +            LapTime,
    +            Text,
    +            Sector,
    +            Gap,
    +            Tyre,
    +        }
    +
    +        /// <summary>
    +        /// Create a new Ocr image to help enhance the given bitmap for OCR
    +        /// </summary>
    +        /// <param name="inputBitmap">The image you want to enhance</param>
    +        public OcrImage(Bitmap inputBitmap)
    +        {
    +            InputBitmap = inputBitmap;
    +        }
    +        /// <summary>
    +        /// Enhances the image depending on wich type of window the image comes from
    +        /// </summary>
    +        /// <param name="type">The type of the window. Depending on it different enhancing features will be applied</param>
    +        /// <returns>The enhanced Bitmap</returns>
    +        public Bitmap Enhance(WindowType type = WindowType.Text)
    +        {
    +            Bitmap outputBitmap = (Bitmap)InputBitmap.Clone();
    +            //Note : If you plan to activate all the comments that I used to debug the OCR I would advise to make sure that the debug folder exists
    +            switch (type)
    +            {
    +                case WindowType.Gap:
    +                    //outputBitmap.Save(Window.GAPTOLEADER_DEBUG_FOLDER + @"\raw_" + id + ".png");
    +
    +                    outputBitmap = Tresholding(outputBitmap, 165);
    +                    //outputBitmap.Save(Window.GAPTOLEADER_DEBUG_FOLDER + @"\treshold_" + id + ".png");
    +
    +                    outputBitmap = Resize(outputBitmap, 2);
    +                    //outputBitmap.Save(Window.GAPTOLEADER_DEBUG_FOLDER + @"\resize_" + id + ".png");
    +
    +                    outputBitmap = Dilatation(outputBitmap, 1);
    +                    //outputBitmap.Save(Window.GAPTOLEADER_DEBUG_FOLDER + @"\Final_dilatation_" + id + ".png");
    +                    break;
    +                case WindowType.Sector:
    +                    //outputBitmap.Save(Window.SECTOR1_DEBUG_FOLDER + @"\raw_" + id + ".png");
    +
    +                    outputBitmap = VanishOxyAction(outputBitmap);
    +                    //outputBitmap.Save(Window.SECTOR1_DEBUG_FOLDER + @"\vanish_" + id + ".png");
    +
    +                    outputBitmap = Tresholding(outputBitmap, 150);
    +                    //outputBitmap.Save(Window.SECTOR1_DEBUG_FOLDER + @"\Final_treshold_" + id + ".png");
    +                    break;
    +                case WindowType.LapTime:
    +                    //outputBitmap.Save(Window.LAPTIME_DEBUG_FOLDER + @"\raw_" + id + ".png");
    +
    +                    outputBitmap = Tresholding(outputBitmap, 185);
    +                    //outputBitmap.Save(Window.LAPTIME_DEBUG_FOLDER + @"\Treshold_" + id + ".png");
    +
    +                    outputBitmap = SobelEdgeDetection(outputBitmap);
    +                    //outputBitmap.Save(Window.LAPTIME_DEBUG_FOLDER + @"\SobelDetection_" + id + ".png");
    +                    break;
    +                case WindowType.Text:
    +                    //outputBitmap.Save(Window.STRING_DEBUG_FOLDER + @"\raw_" + id + ".png");
    +
    +                    outputBitmap = Tresholding(outputBitmap, 165);
    +                    //outputBitmap.Save(Window.STRING_DEBUG_FOLDER + @"\Final_treshold_" + id + ".png");
    +                    break;
    +                case WindowType.Tyre:
    +                    //outputBitmap.Save(Window.TYRE_DEBUG_FOLDER + @"\raw_" + id + ".png");
    +
    +                    outputBitmap = RemoveUseless(outputBitmap);
    +                    //outputBitmap.Save(Window.TYRE_DEBUG_FOLDER + @"\uselessRemoved_" + id + ".png");
    +
    +                    outputBitmap = Dilatation(outputBitmap, 1);
    +                    //outputBitmap.Save(Window.TYRE_DEBUG_FOLDER + @"\Final_dilatation_" + id + ".png");
    +                    break;
    +                default:
    +                    outputBitmap = Tresholding(outputBitmap, 165);
    +                    outputBitmap = Resize(outputBitmap, 2);
    +                    outputBitmap = Erode(outputBitmap, 1);
    +                    break;
    +            }
    +            return outputBitmap;
    +        }
    +        /// <summary>
    +        /// Method that convert a colored RGB bitmap into a GrayScale image 
    +        /// </summary>
    +        /// <param name="inputBitmap">The Bitmap you want to convert</param>
    +        /// <returns>The bitmap in grayscale</returns>
    +        public static Bitmap Grayscale(Bitmap inputBitmap)
    +        {
    +            Rectangle rect = new Rectangle(0, 0, inputBitmap.Width, inputBitmap.Height);
    +            BitmapData bmpData = inputBitmap.LockBits(rect, ImageLockMode.ReadOnly, inputBitmap.PixelFormat);
    +            int bytesPerPixel = Bitmap.GetPixelFormatSize(inputBitmap.PixelFormat) / 8;
    +
    +            Bitmap resultBitmap = new Bitmap(inputBitmap.Width, inputBitmap.Height);
    +
    +            unsafe
    +            {
    +                byte* inputPtr = (byte*)bmpData.Scan0.ToPointer();
    +                byte* resultPtr = (byte*)resultBitmap.LockBits(rect, ImageLockMode.WriteOnly, resultBitmap.PixelFormat).Scan0.ToPointer();
    +
    +                Parallel.For(0, inputBitmap.Height, y =>
    +                {
    +                    byte* currentLine = inputPtr + (y * bmpData.Stride);
    +                    byte* resultLine = resultPtr + (y * resultBitmap.Width * bytesPerPixel);
     
    -                        //Those a specific values to correct the weights so its more pleasing to the human eye
    -                        int gray = (int)(red * 0.3 + green * 0.59 + blue * 0.11);
    -
    -                        //This is not a proper treshold method but it is helping the sobel edge detection
    -                        if(gray <= F1TV_BACKGROUND_TRESHOLD.R)
    -                        {
    -                            pixel[0] = pixel[1] = pixel[2] = 0;
    -                        }
    -                        else
    -                        {
    -                            pixel[0] = pixel[1] = pixel[2] = (byte)gray;
    -                        }
    -                    }
    -                }
    -            }
    -            inputBitmap.UnlockBits(bmpData);
    -
    -            return inputBitmap;
    -        }
    -        /// <summary>
    -        /// Method that uses the Sobel Edge detection to outline the edges of the characters to help with the OCR
    -        /// </summary>
    -        /// <param name="grayscaleImage">The image with the sobel edge detection used</param>
    -        /// <returns></returns>
    -        private Bitmap SobelEdgeDetection(Bitmap grayscaleImage)
    -        {
    -            // Create a new bitmap for the edges
    -            Bitmap edgesImage = new Bitmap(grayscaleImage.Width, grayscaleImage.Height);
    +                    for (int x = 0; x < inputBitmap.Width; x++)
    +                    {
    +                        byte* inputPixel = currentLine + (x * bytesPerPixel);
    +                        byte* resultPixel = resultLine + (x * bytesPerPixel);
    +
    +                        byte blue = inputPixel[0];
    +                        byte green = inputPixel[1];
    +                        byte red = inputPixel[2];
    +
    +                        //Those a specific values to correct the weights so its more pleasing to the human eye
    +                        int gray = (int)(red * 0.3 + green * 0.59 + blue * 0.11);
    +
    +                        //This is not a proper treshold method but it is helping the sobel edge detection
    +                        if (gray <= F1TV_BACKGROUND_TRESHOLD.R)
    +                        {
    +                            resultPixel[0] = resultPixel[1] = resultPixel[2] = 0;
    +                        }
    +                        else
    +                        {
    +                            resultPixel[0] = resultPixel[1] = resultPixel[2] = (byte)gray;
    +                        }
    +                    }
    +                });
    +
    +                resultBitmap.UnlockBits(resultBitmap.LockBits(rect, ImageLockMode.WriteOnly, resultBitmap.PixelFormat));
    +            }
    +
    +            inputBitmap.UnlockBits(bmpData);
     
    -            // Define the Sobel operators
    -            // Its just a matrix that we will use on the all image
    -            int[,] sobelX = { { -1, 0, 1 }, { -2, 0, 2 }, { -1, 0, 1 } };
    -            int[,] sobelY = { { -1, -2, -1 }, { 0, 0, 0 }, { 1, 2, 1 } };
    -
    -            // Apply the Sobel operators and normalize the gradients
    -            // NOTE: I dont know how easy or hard it would be to make this paralel but it could be a good idea to do so if possible.
    -            for (int y = 1; y < grayscaleImage.Height - 1; y++)
    -            {
    -                for (int x = 1; x < grayscaleImage.Width - 1; x++)
    -                {
    -                    int gradientX = CalculateGradient(grayscaleImage, sobelX, x, y);
    -                    int gradientY = CalculateGradient(grayscaleImage, sobelY, x, y);
    -                    int gradient = (int)Math.Sqrt(gradientX * gradientX + gradientY * gradientY);
    -
    -                    // Normalize the gradient value
    -                    // In some rare cases the value can exceed 255 so we limit it with the Math.Min method
    -                    gradient = Math.Min(255, Math.Max(0, gradient));
    -
    -                    edgesImage.SetPixel(x, y, Color.FromArgb(gradient, gradient, gradient));
    -                }
    -            }
    -
    -            return edgesImage;
    -        }
    -        /// <summary>
    -        /// Method that's here to be used by the sobel edge detection method (Chat GPT has been used for parts of this method)
    -        /// </summary>
    -        /// <param name="grayscaleImage">The input image with the grayscale processing already done</param>
    -        /// <param name="sobelOperator">The matrix to apply</param>
    -        /// <param name="x"></param>
    -        /// <param name="y"></param>
    -        /// <returns>Returns the processed gradient</returns>
    -        private int CalculateGradient(Bitmap grayscaleImage, int[,] sobelOperator, int x, int y)
    -        {
    -            int gradient = 0;
    +            return resultBitmap;
    +        }
    +
    +        /// <summary>
    +        /// Method that uses the Sobel Edge detection to outline the edges of the characters to help with the OCR
    +        /// </summary>
    +        /// <param name="grayscaleImage">The image with the sobel edge detection used</param>
    +        /// <returns></returns>
    +        private Bitmap SobelEdgeDetection(Bitmap grayscaleImage)
    +        {
    +            // Create a new bitmap for the edges
    +            Bitmap edgesImage = new Bitmap(grayscaleImage.Width, grayscaleImage.Height);
    +
    +            // Define the Sobel operators
    +            // Its just a matrix that we will use on the all image
    +            int[,] sobelX = { { -1, 0, 1 }, { -2, 0, 2 }, { -1, 0, 1 } };
    +            int[,] sobelY = { { -1, -2, -1 }, { 0, 0, 0 }, { 1, 2, 1 } };
    +
    +            // Apply the Sobel operators and normalize the gradients
    +            // NOTE: I dont know how easy or hard it would be to make this paralel but it could be a good idea to do so if possible.
    +            //Parallel.For(1, grayscaleImage.Height - 1, y =>
    +            for (int y = 1; y < grayscaleImage.Height - 1; y++)
    +            {
    +                for (int x = 1; x < grayscaleImage.Width - 1; x++)
    +                {
    +                    int gradientX = CalculateGradient(grayscaleImage, sobelX, x, y);
    +                    int gradientY = CalculateGradient(grayscaleImage, sobelY, x, y);
    +                    int gradient = (int)Math.Sqrt(gradientX * gradientX + gradientY * gradientY);
    +
    +                    // Normalize the gradient value
    +                    // In some rare cases the value can exceed 255 so we limit it with the Math.Min method
    +                    gradient = Math.Min(255, Math.Max(0, gradient));
    +
    +                    edgesImage.SetPixel(x, y, Color.FromArgb(gradient, gradient, gradient));
    +                }
    +            }//);
     
    -            for (int j = -1; j <= 1; j++)
    -            {
    -                for (int i = -1; i <= 1; i++)
    -                {
    -                    int pixelX = grayscaleImage.GetPixel(x + i, y + j).R;
    -                    gradient += sobelOperator[j + 1, i + 1] * pixelX;
    -                }
    -            }
    -
    -            return gradient;
    -        }
    -        /// <summary>
    -        /// Method that is used to whiten an image. Ignore the funny name. Its used to prevent colored text to trouble the OCR when it uses grayscaling
    -        /// </summary>
    -        /// <param name="inputBitmap">The bitmap to vanish</param>
    -        /// <returns></returns>
    -        public static Bitmap VanishOxyAction(Bitmap inputBitmap)
    -        {
    -            Rectangle rect = new Rectangle(0, 0, inputBitmap.Width, inputBitmap.Height);
    -            BitmapData bmpData = inputBitmap.LockBits(rect, ImageLockMode.ReadWrite, inputBitmap.PixelFormat);
    -            int bytesPerPixel = Bitmap.GetPixelFormatSize(inputBitmap.PixelFormat) / 8;
    -
    -            unsafe
    -            {
    -                //Note : MAKE THIS PARALELL OMG WY DID I LEFT IT LIKE THAT
    -                byte* ptr = (byte*)bmpData.Scan0.ToPointer();
    -                for (int y = 0; y < inputBitmap.Height; y++)
    -                {
    -                    byte* currentLine = ptr + (y * bmpData.Stride);
    -                    for (int x = 0; x < inputBitmap.Width; x++)
    -                    {
    -                        byte* pixel = currentLine + (x * bytesPerPixel);
    -
    -                        int blue = (int)pixel[0];
    -                        int green = (int)pixel[1];
    -                        int red = (int)pixel[2];
    -
    -                        int max = Math.Max(Math.Max(blue, green), red);
    -
    -                        if (max > 255 / 3)
    -                            max = 255;
    -
    -                        pixel[0] = pixel[1] = pixel[2] = (byte)max;
    -                    }
    -                }
    -            }
    -            inputBitmap.UnlockBits(bmpData);
    -
    -            return inputBitmap;
    -        }
    -        /// <summary>
    -        /// Method that binaries the input image up to a certain treshold given
    -        /// </summary>
    -        /// <param name="inputBitmap">the bitmap you want to convert to binary colors</param>
    -        /// <param name="threshold">The floor at wich the color is considered as white or black</param>
    -        /// <returns>The binarised bitmap</returns>
    -        public static Bitmap Tresholding(Bitmap inputBitmap, int threshold)
    -        {
    -            Rectangle rect = new Rectangle(0, 0, inputBitmap.Width, inputBitmap.Height);
    -            BitmapData bmpData = inputBitmap.LockBits(rect, ImageLockMode.ReadWrite, inputBitmap.PixelFormat);
    -            int bytesPerPixel = Bitmap.GetPixelFormatSize(inputBitmap.PixelFormat) / 8;
    -
    -            unsafe
    -            {
    -                byte* ptr = (byte*)bmpData.Scan0.ToPointer();
    -                int bmpHeight = inputBitmap.Height;
    -                int bmpWidth = inputBitmap.Width;
    -                Parallel.For(0, bmpHeight, y =>
    -                {
    -                    byte* currentLine = ptr + (y * bmpData.Stride);
    -                    for (int x = 0; x < bmpWidth; x++)
    -                    {
    -                        byte* pixel = currentLine + (x * bytesPerPixel);
    +            return edgesImage;
    +        }
    +        /// <summary>
    +        /// Method that's here to be used by the sobel edge detection method (Chat GPT has been used for parts of this method)
    +        /// </summary>
    +        /// <param name="grayscaleImage">The input image with the grayscale processing already done</param>
    +        /// <param name="sobelOperator">The matrix to apply</param>
    +        /// <param name="x"></param>
    +        /// <param name="y"></param>
    +        /// <returns>Returns the processed gradient</returns>
    +        private int CalculateGradient(Bitmap grayscaleImage, int[,] sobelOperator, int x, int y)
    +        {
    +            int gradient = 0;
    +
    +            for (int j = -1; j <= 1; j++)
    +            {
    +                for (int i = -1; i <= 1; i++)
    +                {
    +                    int pixelX = grayscaleImage.GetPixel(x + i, y + j).R;
    +                    gradient += sobelOperator[j + 1, i + 1] * pixelX;
    +                }
    +            }
    +
    +            return gradient;
    +        }
    +        /// <summary>
    +        /// Method that is used to whiten an image. Ignore the funny name. Its used to prevent colored text to trouble the OCR when it uses grayscaling
    +        /// </summary>
    +        /// <param name="inputBitmap">The bitmap to vanish</param>
    +        /// <returns></returns>       
    +        public Bitmap VanishOxyAction(Bitmap inputBitmap)
    +        {
    +            unsafe
    +            {
    +                BitmapData bitmapData = inputBitmap.LockBits(new Rectangle(0, 0, inputBitmap.Width, inputBitmap.Height), ImageLockMode.ReadWrite, inputBitmap.PixelFormat);
    +
    +                int bytesPerPixel = System.Drawing.Bitmap.GetPixelFormatSize(inputBitmap.PixelFormat) / 8;
    +                int heightInPixels = bitmapData.Height;
    +                int widthInBytes = bitmapData.Width * bytesPerPixel;
    +                byte* PtrFirstPixel = (byte*)bitmapData.Scan0;
    +
    +                Parallel.For(0, heightInPixels, y =>
    +                {
    +                    byte* currentLine = PtrFirstPixel + (y * bitmapData.Stride);
    +                    for (int x = 0; x < widthInBytes; x = x + bytesPerPixel)
    +                    {
    +                        int blue = currentLine[x];
    +                        int green = currentLine[x + 1];
    +                        int red = currentLine[x + 2];
    +
    +                        int max = Math.Max(Math.Max(blue, green), red);
    +
    +                        if (max > 255 / 3)
    +                            max = 255;
    +
    +                        currentLine[x] = currentLine[x + 1] = currentLine[x + 2] = (byte)max;
    +                    }
    +                });
    +                inputBitmap.UnlockBits(bitmapData);
    +            }
    +            return inputBitmap;
    +        }
    +        /// <summary>
    +        /// Method that binaries the input image up to a certain treshold given
    +        /// </summary>
    +        /// <param name="inputBitmap">the bitmap you want to convert to binary colors</param>
    +        /// <param name="threshold">The floor at wich the color is considered as white or black</param>
    +        /// <returns>The binarised bitmap</returns>
    +        public static Bitmap Tresholding(Bitmap inputBitmap, int threshold)
    +        {
    +            Rectangle rect = new Rectangle(0, 0, inputBitmap.Width, inputBitmap.Height);
    +            BitmapData bmpData = inputBitmap.LockBits(rect, ImageLockMode.ReadWrite, inputBitmap.PixelFormat);
    +            int bytesPerPixel = Bitmap.GetPixelFormatSize(inputBitmap.PixelFormat) / 8;
     
    -                        byte blue = pixel[0];
    -                        byte green = pixel[1];
    -                        byte red = pixel[2];
    -                        //Those a specific values to correct the weights so its more pleasing to the human eye
    -                        int gray = (int)(red * 0.3 + green * 0.59 + blue * 0.11);
    -                        int value = gray < threshold ? 0 : 255;
    -
    -                        pixel[0] = pixel[1] = pixel[2] = (byte)value;
    -                    }
    -                });
    -            }
    -            inputBitmap.UnlockBits(bmpData);
    -
    -            return inputBitmap;
    -        }
    -        /// <summary>
    -        /// Method that removes the pixels that are flagged as background
    -        /// </summary>
    -        /// <param name="inputBitmap">The bitmap you want to remove the background from</param>
    -        /// <returns>The Bitmap without the background</returns>
    -        public static Bitmap RemoveBG(Bitmap inputBitmap)
    -        {
    -            Rectangle rect = new Rectangle(0, 0, inputBitmap.Width, inputBitmap.Height);
    -            BitmapData bmpData = inputBitmap.LockBits(rect, ImageLockMode.ReadWrite, inputBitmap.PixelFormat);
    -            int bytesPerPixel = Bitmap.GetPixelFormatSize(inputBitmap.PixelFormat) / 8;
    -
    -            unsafe
    -            {
    -                byte* ptr = (byte*)bmpData.Scan0.ToPointer();
    -                for (int y = 0; y < inputBitmap.Height; y++)
    -                {
    -                    byte* currentLine = ptr + (y * bmpData.Stride);
    -                    for (int x = 0; x < inputBitmap.Width; x++)
    -                    {
    -                        byte* pixel = currentLine + (x * bytesPerPixel);
    -
    -                        int B = pixel[0];
    -                        int G = pixel[1];
    -                        int R = pixel[2];
    -
    -                        if (R <= F1TV_BACKGROUND_TRESHOLD.R && G <= F1TV_BACKGROUND_TRESHOLD.G && B <= F1TV_BACKGROUND_TRESHOLD.B)
    -                            pixel[0] = pixel[1] = pixel[2] = 0;
    -                    }
    -                }
    -            }
    -            inputBitmap.UnlockBits(bmpData);
    -
    -            return inputBitmap;
    -        }
    -        /// <summary>
    -        /// Method that removes all the useless things from the image and returns hopefully only the numbers
    -        /// </summary>
    -        /// <param name="inputBitmap">The bitmap you want to remove useless things from (Expects a cropped part of the TyreWindow)</param>
    -        /// <returns>The bitmap with (hopefully) only the digits</returns>
    -        public unsafe static Bitmap RemoveUseless(Bitmap inputBitmap)
    -        {
    -            //Note you can use something else than a cropped tyre window but I would recommend checking the code first to see if it fits your intended use
    -            Rectangle rect = new Rectangle(0, 0, inputBitmap.Width, inputBitmap.Height);
    -            BitmapData bmpData = inputBitmap.LockBits(rect, ImageLockMode.ReadWrite, inputBitmap.PixelFormat);
    -            int bytesPerPixel = Bitmap.GetPixelFormatSize(inputBitmap.PixelFormat) / 8;
    +            unsafe
    +            {
    +                byte* ptr = (byte*)bmpData.Scan0.ToPointer();
    +                int bmpHeight = inputBitmap.Height;
    +                int bmpWidth = inputBitmap.Width;
    +                Parallel.For(0, bmpHeight, y =>
    +                {
    +                    byte* currentLine = ptr + (y * bmpData.Stride);
    +                    for (int x = 0; x < bmpWidth; x++)
    +                    {
    +                        byte* pixel = currentLine + (x * bytesPerPixel);
    +
    +                        byte blue = pixel[0];
    +                        byte green = pixel[1];
    +                        byte red = pixel[2];
    +                        //Those a specific values to correct the weights so its more pleasing to the human eye
    +                        int gray = (int)(red * 0.3 + green * 0.59 + blue * 0.11);
    +                        int value = gray < threshold ? 0 : 255;
    +
    +                        pixel[0] = pixel[1] = pixel[2] = (byte)value;
    +                    }
    +                });
    +            }
    +            inputBitmap.UnlockBits(bmpData);
    +
    +            return inputBitmap;
    +        }
    +        /// <summary>
    +        /// Method that removes the pixels that are flagged as background
    +        /// </summary>
    +        /// <param name="inputBitmap">The bitmap you want to remove the background from</param>
    +        /// <returns>The Bitmap without the background</returns>
    +        public static Bitmap RemoveBG(Bitmap inputBitmap)
    +        {
    +            Rectangle rect = new Rectangle(0, 0, inputBitmap.Width, inputBitmap.Height);
    +            BitmapData bmpData = inputBitmap.LockBits(rect, ImageLockMode.ReadWrite, inputBitmap.PixelFormat);
    +            int bytesPerPixel = Bitmap.GetPixelFormatSize(inputBitmap.PixelFormat) / 8;
    +
    +            unsafe
    +            {
    +                byte* ptr = (byte*)bmpData.Scan0.ToPointer();
    +                int bmpHeight = inputBitmap.Height;
    +                int bmpWidth = inputBitmap.Width;
    +                Parallel.For(0, bmpHeight, y =>
    +                {
    +                    byte* currentLine = ptr + (y * bmpData.Stride);
    +                    for (int x = 0; x < bmpWidth; x++)
    +                    {
    +                        byte* pixel = currentLine + (x * bytesPerPixel);
    +
    +                        int B = pixel[0];
    +                        int G = pixel[1];
    +                        int R = pixel[2];
    +
    +                        if (R <= F1TV_BACKGROUND_TRESHOLD.R && G <= F1TV_BACKGROUND_TRESHOLD.G && B <= F1TV_BACKGROUND_TRESHOLD.B)
    +                            pixel[0] = pixel[1] = pixel[2] = 0;
    +                    }
    +                });
    +            }
    +            inputBitmap.UnlockBits(bmpData);
     
    -            byte* ptr = (byte*)bmpData.Scan0.ToPointer();
    -            for (int y = 0; y < inputBitmap.Height; y++)
    -            {
    -                byte* currentLine = ptr + (y * bmpData.Stride);
    -
    -                List<int> pixelsToRemove = new List<int>();
    -
    -                bool fromBorder = true;
    -
    -                for (int x = 0; x < inputBitmap.Width; x++)
    -                {
    -                    byte* pixel = currentLine + (x * bytesPerPixel);
    -
    -                    int B = pixel[0];
    -                    int G = pixel[1];
    -                    int R = pixel[2];
    -
    -                    if (fromBorder && B < F1TV_BACKGROUND_TRESHOLD.B && G < F1TV_BACKGROUND_TRESHOLD.G && R < F1TV_BACKGROUND_TRESHOLD.R)
    -                    {
    -                        pixelsToRemove.Add(x);
    -                    }
    -                    else
    -                    {
    -                        if (fromBorder)
    -                        {
    -                            fromBorder = false;
    -                            pixelsToRemove.Add(x);
    -                        }
    -                    }
    -                }
    -                fromBorder = true;
    -                for (int x = inputBitmap.Width - 1; x > 0; x--)
    -                {
    -                    byte* pixel = currentLine + (x * bytesPerPixel);
    -
    -                    int B = pixel[0];
    -                    int G = pixel[1];
    -                    int R = pixel[2];
    -
    -                    if (fromBorder && B < F1TV_BACKGROUND_TRESHOLD.B && G < F1TV_BACKGROUND_TRESHOLD.G && R < F1TV_BACKGROUND_TRESHOLD.R)
    -                    {
    -                        pixelsToRemove.Add(x);
    +            return inputBitmap;
    +        }
    +        /// <summary>
    +        /// Method that removes all the useless things from the image and returns hopefully only the numbers
    +        /// </summary>
    +        /// <param name="inputBitmap">The bitmap you want to remove useless things from (Expects a cropped part of the TyreWindow)</param>
    +        /// <returns>The bitmap with (hopefully) only the digits</returns>
    +        public unsafe static Bitmap RemoveUseless(Bitmap inputBitmap)
    +        {
    +            //Note you can use something else than a cropped tyre window but I would recommend checking the code first to see if it fits your intended use
    +            Rectangle rect = new Rectangle(0, 0, inputBitmap.Width, inputBitmap.Height);
    +            BitmapData bmpData = inputBitmap.LockBits(rect, ImageLockMode.ReadWrite, inputBitmap.PixelFormat);
    +            int bytesPerPixel = Bitmap.GetPixelFormatSize(inputBitmap.PixelFormat) / 8;
    +
    +            byte* ptr = (byte*)bmpData.Scan0.ToPointer();
    +            for (int y = 0; y < inputBitmap.Height; y++)
    +            {
    +                byte* currentLine = ptr + (y * bmpData.Stride);
    +
    +                List<int> pixelsToRemove = new List<int>();
    +
    +                bool fromBorder = true;
    +
    +                for (int x = 0; x < inputBitmap.Width; x++)
    +                {
    +                    byte* pixel = currentLine + (x * bytesPerPixel);
    +
    +                    int B = pixel[0];
    +                    int G = pixel[1];
    +                    int R = pixel[2];
    +
    +                    if (fromBorder && B < F1TV_BACKGROUND_TRESHOLD.B && G < F1TV_BACKGROUND_TRESHOLD.G && R < F1TV_BACKGROUND_TRESHOLD.R)
    +                    {
    +                        pixelsToRemove.Add(x);
    +                    }
    +                    else
    +                    {
    +                        if (fromBorder)
    +                        {
    +                            fromBorder = false;
    +                            pixelsToRemove.Add(x);
    +                        }
                         }
    -                    else
    -                    {
    -                        if (fromBorder)
    -                        {
    -                            fromBorder = false;
    -                            pixelsToRemove.Add(x);
    -                        }
    -                    }
    -                }
    +                }
    +                fromBorder = true;
    +                for (int x = inputBitmap.Width - 1; x > 0; x--)
    +                {
    +                    byte* pixel = currentLine + (x * bytesPerPixel);
    +
    +                    int B = pixel[0];
    +                    int G = pixel[1];
    +                    int R = pixel[2];
     
    -                foreach (int pxPos in pixelsToRemove)
    -                {
    -                    byte* pixel = currentLine + (pxPos * bytesPerPixel);
    -
    -                    pixel[0] = 0xFF;
    -                    pixel[1] = 0xFF;
    -                    pixel[2] = 0xFF;
    -                }
    -            }
    -
    -            //Removing the color parts
    -            for (int y = 0; y < inputBitmap.Height; y++)
    -            {
    -                byte* currentLine = ptr + (y * bmpData.Stride);
    -                for (int x = 0; x < inputBitmap.Width; x++)
    +                    if (fromBorder && B < F1TV_BACKGROUND_TRESHOLD.B && G < F1TV_BACKGROUND_TRESHOLD.G && R < F1TV_BACKGROUND_TRESHOLD.R)
    +                    {
    +                        pixelsToRemove.Add(x);
    +                    }
    +                    else
    +                    {
    +                        if (fromBorder)
    +                        {
    +                            fromBorder = false;
    +                            pixelsToRemove.Add(x);
    +                        }
    +                    }
    +                }
    +
    +                foreach (int pxPos in pixelsToRemove)
                     {
    -                    byte* pixel = currentLine + (x * bytesPerPixel);
    +                    byte* pixel = currentLine + (pxPos * bytesPerPixel);
     
    -                    int B = pixel[0];
    -                    int G = pixel[1];
    -                    int R = pixel[2];
    -
    -                    if (R >= F1TV_BACKGROUND_TRESHOLD.R  +25|| G >= F1TV_BACKGROUND_TRESHOLD.G +25|| B >= F1TV_BACKGROUND_TRESHOLD.B +25)
    -                    {
    -                        pixel[0] = 0xFF;
    -                        pixel[1] = 0xFF;
    -                        pixel[2] = 0xFF;
    -                    }
    -                }
    -            }
    -
    -            inputBitmap.UnlockBits(bmpData);
    -            return inputBitmap;
    -        }
    -        /// <summary>
    -        /// Recovers the average colors from the Image. NOTE : It wont take in account colors that are lower than the background
    -        /// </summary>
    -        /// <param name="inputBitmap">The bitmap you want to get the average color from</param>
    -        /// <returns>The average color of the bitmap</returns>
    -        public static Color GetAvgColorFromBitmap(Bitmap inputBitmap)
    -        {
    -            Rectangle rect = new Rectangle(0, 0, inputBitmap.Width, inputBitmap.Height);
    -            BitmapData bmpData = inputBitmap.LockBits(rect, ImageLockMode.ReadWrite, inputBitmap.PixelFormat);
    -            int bytesPerPixel = Bitmap.GetPixelFormatSize(inputBitmap.PixelFormat) / 8;
    +                    pixel[0] = 0xFF;
    +                    pixel[1] = 0xFF;
    +                    pixel[2] = 0xFF;
    +                }
    +            }
    +
    +            //Removing the color parts
    +            for (int y = 0; y < inputBitmap.Height; y++)
    +            {
    +                byte* currentLine = ptr + (y * bmpData.Stride);
    +                for (int x = 0; x < inputBitmap.Width; x++)
    +                {
    +                    byte* pixel = currentLine + (x * bytesPerPixel);
    +
    +                    int B = pixel[0];
    +                    int G = pixel[1];
    +                    int R = pixel[2];
    +
    +                    if (R >= F1TV_BACKGROUND_TRESHOLD.R + 25 || G >= F1TV_BACKGROUND_TRESHOLD.G + 25 || B >= F1TV_BACKGROUND_TRESHOLD.B + 25)
    +                    {
    +                        pixel[0] = 0xFF;
    +                        pixel[1] = 0xFF;
    +                        pixel[2] = 0xFF;
    +                    }
    +                }
    +            }
     
    -            int totR = 0;
    -            int totG = 0;
    -            int totB = 0;
    -
    -            int totPixels = 1;
    -
    -            unsafe
    -            {
    -                byte* ptr = (byte*)bmpData.Scan0.ToPointer();
    -                int bmpHeight = inputBitmap.Height;
    -                int bmpWidth = inputBitmap.Width;
    -                Parallel.For(0, bmpHeight, y =>
    -                {
    -                    byte* currentLine = ptr + (y * bmpData.Stride);
    -                    for (int x = 0; x < bmpWidth; x++)
    -                    {
    -                        byte* pixel = currentLine + (x * bytesPerPixel);
    +            inputBitmap.UnlockBits(bmpData);
    +            return inputBitmap;
    +        }
    +        /// <summary>
    +        /// Recovers the average colors from the Image. NOTE : It wont take in account colors that are lower than the background
    +        /// </summary>
    +        /// <param name="inputBitmap">The bitmap you want to get the average color from</param>
    +        /// <returns>The average color of the bitmap</returns>
    +        public static Color GetAvgColorFromBitmap(Bitmap inputBitmap)
    +        {
    +            Rectangle rect = new Rectangle(0, 0, inputBitmap.Width, inputBitmap.Height);
    +            BitmapData bmpData = inputBitmap.LockBits(rect, ImageLockMode.ReadWrite, inputBitmap.PixelFormat);
    +            int bytesPerPixel = Bitmap.GetPixelFormatSize(inputBitmap.PixelFormat) / 8;
    +
    +            int totR = 0;
    +            int totG = 0;
    +            int totB = 0;
     
    -                        int B = pixel[0];
    -                        int G = pixel[1];
    -                        int R = pixel[2];
    -
    -                        if (R >= F1TV_BACKGROUND_TRESHOLD.R || G >= F1TV_BACKGROUND_TRESHOLD.G || B >= F1TV_BACKGROUND_TRESHOLD.B)
    -                        {
    -                            totPixels++;
    -                            totB += pixel[0];
    -                            totG += pixel[1];
    -                            totR += pixel[2];
    -                        }
    -                    }
    -                });
    -            }
    -            inputBitmap.UnlockBits(bmpData);
    -
    -            return Color.FromArgb(255,Math.Min(Convert.ToInt32((float)totR / (float)totPixels),255), Math.Min(Convert.ToInt32((float)totG / (float)totPixels),255), Math.Min(Convert.ToInt32((float)totB / (float)totPixels),255));
    -        }
    -        /// <summary>
    -        /// This method simply inverts all the colors in a Bitmap
    -        /// </summary>
    -        /// <param name="inputBitmap">the bitmap you want to invert the colors from</param>
    -        /// <returns>The bitmap with inverted colors</returns>
    -        public static Bitmap InvertColors(Bitmap inputBitmap)
    -        {
    -            Rectangle rect = new Rectangle(0, 0, inputBitmap.Width, inputBitmap.Height);
    -            BitmapData bmpData = inputBitmap.LockBits(rect, ImageLockMode.ReadWrite, inputBitmap.PixelFormat);
    -            int bytesPerPixel = Bitmap.GetPixelFormatSize(inputBitmap.PixelFormat) / 8;
    -
    -            unsafe
    -            {
    -                byte* ptr = (byte*)bmpData.Scan0.ToPointer();
    -                for (int y = 0; y < inputBitmap.Height; y++)
    -                {
    -                    byte* currentLine = ptr + (y * bmpData.Stride);
    -                    for (int x = 0; x < inputBitmap.Width; x++)
    -                    {
    -                        byte* pixel = currentLine + (x * bytesPerPixel);
    -
    -                        pixel[0] = (byte)(255 - pixel[0]);
    -                        pixel[1] = (byte)(255 - pixel[1]);
    -                        pixel[2] = (byte)(255 - pixel[2]);
    -                    }
    -                }
    -            }
    -            inputBitmap.UnlockBits(bmpData);
    -
    -            return inputBitmap;
    -        }
    -        /// <summary>
    -        /// Methods that applies Bicubic interpolation to increase the size and resolution of an image
    -        /// </summary>
    -        /// <param name="inputBitmap">The bitmap you want to resize</param>
    -        /// <param name="resizeFactor">The factor of resizing you want to use. I recommend using even numbers</param>
    -        /// <returns>The bitmap witht the new size</returns>
    -        public static Bitmap Resize(Bitmap inputBitmap, int resizeFactor)
    -        {
    -            var resultBitmap = new Bitmap(inputBitmap.Width * resizeFactor, inputBitmap.Height * resizeFactor);
    -
    -            using (var graphics = Graphics.FromImage(resultBitmap))
    -            {
    -                graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
    -                graphics.DrawImage(inputBitmap, new Rectangle(0, 0, resultBitmap.Width, resultBitmap.Height));
    -            }
    -
    -            return resultBitmap;
    -        }
    -        /// <summary>
    -        /// method that Highlights the countours of a Bitmap
    -        /// </summary>
    -        /// <param name="inputBitmap">The bitmap you want to highlight the countours of</param>
    -        /// <returns>The bitmap with countours highlighted</returns>
    -        public static Bitmap HighlightContours(Bitmap inputBitmap)
    -        {
    -            Bitmap outputBitmap = new Bitmap(inputBitmap.Width, inputBitmap.Height);
    -
    -            Bitmap grayscale = Grayscale(inputBitmap);
    -            Bitmap thresholded = Tresholding(grayscale, 128);
    -            Bitmap dilated = Dilatation(thresholded, 3);
    -            Bitmap eroded = Erode(dilated, 3);
    -
    -            for (int y = 0; y < inputBitmap.Height; y++)
    -            {
    -                for (int x = 0; x < inputBitmap.Width; x++)
    -                {
    -                    Color pixel = inputBitmap.GetPixel(x, y);
    -                    Color dilatedPixel = dilated.GetPixel(x, y);
    -                    Color erodedPixel = eroded.GetPixel(x, y);
    -
    -                    int gray = (int)(pixel.R * 0.3 + pixel.G * 0.59 + pixel.B * 0.11);
    -                    int threshold = dilatedPixel.R;
    -
    -                    if (gray > threshold)
    -                    {
    -                        outputBitmap.SetPixel(x, y, Color.FromArgb(255, 255, 255));
    -                    }
    -                    else if (gray <= threshold && erodedPixel.R == 0)
    -                    {
    -                        outputBitmap.SetPixel(x, y, Color.FromArgb(255, 0, 0));
    -                    }
    -                    else
    -                    {
    -                        outputBitmap.SetPixel(x, y, Color.FromArgb(0, 0, 0));
    -                    }
    -                }
    -            }
    -
    -            return outputBitmap;
    -        }
    -        /// <summary>
    -        /// Method that that erodes the morphology of a bitmap
    -        /// </summary>
    -        /// <param name="inputBitmap">The bitmap you want to erode</param>
    -        /// <param name="kernelSize">The amount of Erosion you want (be carefull its expensive on ressources)</param>
    -        /// <returns>The Bitmap with the eroded contents</returns>
    -        public static Bitmap Erode(Bitmap inputBitmap, int kernelSize)
    -        {
    -            Bitmap outputBitmap = new Bitmap(inputBitmap.Width, inputBitmap.Height);
    -
    -            int[,] kernel = new int[kernelSize, kernelSize];
    +            int totPixels = 1;
    +
    +            unsafe
    +            {
    +                byte* ptr = (byte*)bmpData.Scan0.ToPointer();
    +                int bmpHeight = inputBitmap.Height;
    +                int bmpWidth = inputBitmap.Width;
    +                Parallel.For(0, bmpHeight, y =>
    +                {
    +                    byte* currentLine = ptr + (y * bmpData.Stride);
    +                    for (int x = 0; x < bmpWidth; x++)
    +                    {
    +                        byte* pixel = currentLine + (x * bytesPerPixel);
    +
    +                        int B = pixel[0];
    +                        int G = pixel[1];
    +                        int R = pixel[2];
    +
    +                        if (R >= F1TV_BACKGROUND_TRESHOLD.R || G >= F1TV_BACKGROUND_TRESHOLD.G || B >= F1TV_BACKGROUND_TRESHOLD.B)
    +                        {
    +                            totPixels++;
    +                            totB += pixel[0];
    +                            totG += pixel[1];
    +                            totR += pixel[2];
    +                        }
    +                    }
    +                });
    +            }
    +            inputBitmap.UnlockBits(bmpData);
    +
    +            return Color.FromArgb(255, Math.Min(Convert.ToInt32((float)totR / (float)totPixels), 255), Math.Min(Convert.ToInt32((float)totG / (float)totPixels), 255), Math.Min(Convert.ToInt32((float)totB / (float)totPixels), 255));
    +        }
    +        /// <summary>
    +        /// This method simply inverts all the colors in a Bitmap
    +        /// </summary>
    +        /// <param name="inputBitmap">the bitmap you want to invert the colors from</param>
    +        /// <returns>The bitmap with inverted colors</returns>
    +        public static Bitmap InvertColors(Bitmap inputBitmap)
    +        {
    +            Rectangle rect = new Rectangle(0, 0, inputBitmap.Width, inputBitmap.Height);
    +            BitmapData bmpData = inputBitmap.LockBits(rect, ImageLockMode.ReadWrite, inputBitmap.PixelFormat);
    +            int bytesPerPixel = Bitmap.GetPixelFormatSize(inputBitmap.PixelFormat) / 8;
    +
    +            unsafe
    +            {
    +                byte* ptr = (byte*)bmpData.Scan0.ToPointer();
    +                for (int y = 0; y < inputBitmap.Height; y++)
    +                {
    +                    byte* currentLine = ptr + (y * bmpData.Stride);
    +                    for (int x = 0; x < inputBitmap.Width; x++)
    +                    {
    +                        byte* pixel = currentLine + (x * bytesPerPixel);
    +
    +                        pixel[0] = (byte)(255 - pixel[0]);
    +                        pixel[1] = (byte)(255 - pixel[1]);
    +                        pixel[2] = (byte)(255 - pixel[2]);
    +                    }
    +                }
    +            }
    +            inputBitmap.UnlockBits(bmpData);
    +
    +            return inputBitmap;
    +        }
    +        /// <summary>
    +        /// Methods that applies Bicubic interpolation to increase the size and resolution of an image
    +        /// </summary>
    +        /// <param name="inputBitmap">The bitmap you want to resize</param>
    +        /// <param name="resizeFactor">The factor of resizing you want to use. I recommend using even numbers</param>
    +        /// <returns>The bitmap witht the new size</returns>
    +        public static Bitmap Resize(Bitmap inputBitmap, int resizeFactor)
    +        {
    +            var resultBitmap = new Bitmap(inputBitmap.Width * resizeFactor, inputBitmap.Height * resizeFactor);
    +
    +            using (var graphics = Graphics.FromImage(resultBitmap))
    +            {
    +                graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
    +                graphics.DrawImage(inputBitmap, new Rectangle(0, 0, resultBitmap.Width, resultBitmap.Height));
    +            }
    +
    +            return resultBitmap;
    +        }
    +        /// <summary>
    +        /// method that Highlights the countours of a Bitmap
    +        /// </summary>
    +        /// <param name="inputBitmap">The bitmap you want to highlight the countours of</param>
    +        /// <returns>The bitmap with countours highlighted</returns>
    +        public static Bitmap HighlightContours(Bitmap inputBitmap)
    +        {
    +            Bitmap outputBitmap = new Bitmap(inputBitmap.Width, inputBitmap.Height);
    +
    +            Bitmap grayscale = Grayscale(inputBitmap);
    +            Bitmap thresholded = Tresholding(grayscale, 128);
    +            Bitmap dilated = Dilatation(thresholded, 3);
    +            Bitmap eroded = Erode(dilated, 3);
    +
    +            for (int y = 0; y < inputBitmap.Height; y++)
    +            {
    +                for (int x = 0; x < inputBitmap.Width; x++)
    +                {
    +                    Color pixel = inputBitmap.GetPixel(x, y);
    +                    Color dilatedPixel = dilated.GetPixel(x, y);
    +                    Color erodedPixel = eroded.GetPixel(x, y);
    +
    +                    int gray = (int)(pixel.R * 0.3 + pixel.G * 0.59 + pixel.B * 0.11);
    +                    int threshold = dilatedPixel.R;
    +
    +                    if (gray > threshold)
    +                    {
    +                        outputBitmap.SetPixel(x, y, Color.FromArgb(255, 255, 255));
    +                    }
    +                    else if (gray <= threshold && erodedPixel.R == 0)
    +                    {
    +                        outputBitmap.SetPixel(x, y, Color.FromArgb(255, 0, 0));
    +                    }
    +                    else
    +                    {
    +                        outputBitmap.SetPixel(x, y, Color.FromArgb(0, 0, 0));
    +                    }
    +                }
    +            }
     
    -            for (int i = 0; i < kernelSize; i++)
    -            {
    -                for (int j = 0; j < kernelSize; j++)
    -                {
    -                    kernel[i, j] = 1;
    -                }
    -            }
    -
    -            for (int y = kernelSize / 2; y < inputBitmap.Height - kernelSize / 2; y++)
    -            {
    -                for (int x = kernelSize / 2; x < inputBitmap.Width - kernelSize / 2; x++)
    -                {
    -                    bool flag = true;
    +            return outputBitmap;
    +        }
    +        /// <summary>
    +        /// Method that that erodes the morphology of a bitmap
    +        /// </summary>
    +        /// <param name="inputBitmap">The bitmap you want to erode</param>
    +        /// <param name="kernelSize">The amount of Erosion you want (be carefull its expensive on ressources)</param>
    +        /// <returns>The Bitmap with the eroded contents</returns>
    +        public static Bitmap Erode(Bitmap inputBitmap, int kernelSize)
    +        {
    +            Bitmap outputBitmap = new Bitmap(inputBitmap.Width, inputBitmap.Height);
    +
    +            int[,] kernel = new int[kernelSize, kernelSize];
     
    -                    for (int i = -kernelSize / 2; i <= kernelSize / 2; i++)
    -                    {
    -                        for (int j = -kernelSize / 2; j <= kernelSize / 2; j++)
    -                        {
    -                            Color pixel = inputBitmap.GetPixel(x + i, y + j);
    -                            int gray = (int)(pixel.R * 0.3 + pixel.G * 0.59 + pixel.B * 0.11);
    -
    -                            if (gray >= 128 && kernel[i + kernelSize / 2, j + kernelSize / 2] == 1)
    -                            {
    -                                flag = false;
    -                                break;
    -                            }
    -                        }
    +            for (int i = 0; i < kernelSize; i++)
    +            {
    +                for (int j = 0; j < kernelSize; j++)
    +                {
    +                    kernel[i, j] = 1;
    +                }
    +            }
    +
    +            for (int y = kernelSize / 2; y < inputBitmap.Height - kernelSize / 2; y++)
    +            {
    +                for (int x = kernelSize / 2; x < inputBitmap.Width - kernelSize / 2; x++)
    +                {
    +                    bool flag = true;
     
    -                        if (!flag)
    -                        {
    -                            break;
    -                        }
    -                    }
    -
    -                    if (flag)
    -                    {
    -                        outputBitmap.SetPixel(x, y, Color.FromArgb(255, 255, 255));
    -                    }
    -                    else
    -                    {
    -                        outputBitmap.SetPixel(x, y, Color.FromArgb(0, 0, 0));
    -                    }
    -                }
    -            }
    -
    -            return outputBitmap;
    -        }
    -        /// <summary>
    -        /// Method that that use dilatation of the morphology of a bitmap
    -        /// </summary>
    -        /// <param name="inputBitmap">The bitmap you want to use dilatation on</param>
    -        /// <param name="kernelSize">The amount of dilatation you want (be carefull its expensive on ressources)</param>
    -        /// <returns>The Bitmap after Dilatation</returns>
    -        public static Bitmap Dilatation(Bitmap inputBitmap, int kernelSize)
    -        {
    -            Bitmap outputBitmap = new Bitmap(inputBitmap.Width, inputBitmap.Height);
    -
    -            int[,] kernel = new int[kernelSize, kernelSize];
    +                    for (int i = -kernelSize / 2; i <= kernelSize / 2; i++)
    +                    {
    +                        for (int j = -kernelSize / 2; j <= kernelSize / 2; j++)
    +                        {
    +                            Color pixel = inputBitmap.GetPixel(x + i, y + j);
    +                            int gray = (int)(pixel.R * 0.3 + pixel.G * 0.59 + pixel.B * 0.11);
    +
    +                            if (gray >= 128 && kernel[i + kernelSize / 2, j + kernelSize / 2] == 1)
    +                            {
    +                                flag = false;
    +                                break;
    +                            }
    +                        }
    +
    +                        if (!flag)
    +                        {
    +                            break;
    +                        }
    +                    }
    +
    +                    if (flag)
    +                    {
    +                        outputBitmap.SetPixel(x, y, Color.FromArgb(255, 255, 255));
    +                    }
    +                    else
    +                    {
    +                        outputBitmap.SetPixel(x, y, Color.FromArgb(0, 0, 0));
    +                    }
    +                }
    +            }
     
    -            for (int i = 0; i < kernelSize; i++)
    -            {
    -                for (int j = 0; j < kernelSize; j++)
    -                {
    -                    kernel[i, j] = 1;
    -                }
    -            }
    -
    -            for (int y = kernelSize / 2; y < inputBitmap.Height - kernelSize / 2; y++)
    -            {
    -                for (int x = kernelSize / 2; x < inputBitmap.Width - kernelSize / 2; x++)
    -                {
    -                    bool flag = false;
    +            return outputBitmap;
    +        }
    +        /// <summary>
    +        /// Method that that use dilatation of the morphology of a bitmap
    +        /// </summary>
    +        /// <param name="inputBitmap">The bitmap you want to use dilatation on</param>
    +        /// <param name="kernelSize">The amount of dilatation you want (be carefull its expensive on ressources)</param>
    +        /// <returns>The Bitmap after Dilatation</returns>
    +        public static Bitmap Dilatation(Bitmap inputBitmap, int kernelSize)
    +        {
    +            Bitmap outputBitmap = new Bitmap(inputBitmap.Width, inputBitmap.Height);
    +
    +            int[,] kernel = new int[kernelSize, kernelSize];
     
    -                    for (int i = -kernelSize / 2; i <= kernelSize / 2; i++)
    -                    {
    -                        for (int j = -kernelSize / 2; j <= kernelSize / 2; j++)
    -                        {
    -                            Color pixel = inputBitmap.GetPixel(x + i, y + j);
    -                            int gray = (int)(pixel.R * 0.3 + pixel.G * 0.59 + pixel.B * 0.11);
    -
    -                            if (gray < 128 && kernel[i + kernelSize / 2, j + kernelSize / 2] == 1)
    -                            {
    -                                flag = true;
    -                                break;
    -                            }
    -                        }
    +            for (int i = 0; i < kernelSize; i++)
    +            {
    +                for (int j = 0; j < kernelSize; j++)
    +                {
    +                    kernel[i, j] = 1;
    +                }
    +            }
    +
    +            for (int y = kernelSize / 2; y < inputBitmap.Height - kernelSize / 2; y++)
    +            {
    +                for (int x = kernelSize / 2; x < inputBitmap.Width - kernelSize / 2; x++)
    +                {
    +                    bool flag = false;
     
    -                        if (flag)
    -                        {
    -                            break;
    -                        }
    -                    }
    -
    -                    if (flag)
    -                    {
    -                        outputBitmap.SetPixel(x, y, Color.FromArgb(0, 0, 0));
    -                    }
    -                    else
    -                    {
    -                        outputBitmap.SetPixel(x, y, Color.FromArgb(255, 255, 255));
    -                    }
    -                }
    -            }
    -
    -            return outputBitmap;
    -        }
    -    }
    -}
    +                    for (int i = -kernelSize / 2; i <= kernelSize / 2; i++)
    +                    {
    +                        for (int j = -kernelSize / 2; j <= kernelSize / 2; j++)
    +                        {
    +                            Color pixel = inputBitmap.GetPixel(x + i, y + j);
    +                            int gray = (int)(pixel.R * 0.3 + pixel.G * 0.59 + pixel.B * 0.11);
    +
    +                            if (gray < 128 && kernel[i + kernelSize / 2, j + kernelSize / 2] == 1)
    +                            {
    +                                flag = true;
    +                                break;
    +                            }
    +                        }
    +
    +                        if (flag)
    +                        {
    +                            break;
    +                        }
    +                    }
    +
    +                    if (flag)
    +                    {
    +                        outputBitmap.SetPixel(x, y, Color.FromArgb(0, 0, 0));
    +                    }
    +                    else
    +                    {
    +                        outputBitmap.SetPixel(x, y, Color.FromArgb(255, 255, 255));
    +                    }
    +                }
    +            }
    +
    +            return outputBitmap;
    +        }
    +    }
    +}
     
    diff --git a/site/Code/Program.html b/site/Code/Program.html deleted file mode 100644 index c916416..0000000 --- a/site/Code/Program.html +++ /dev/null @@ -1,341 +0,0 @@ - - - - - - - - - - -Program.cs - Documentation Track Trends - - - - - - - - - - - - - -
    -
    -
    - -
    -
    -
    -
    - -
    -
    -
    - -
    -
    -
    -
    -
    -

    Program.cs

    -
    using System;
    -using System.Collections.Generic;
    -using System.Linq;
    -using System.Threading.Tasks;
    -using System.Windows.Forms;
    -
    -namespace TrackTrends
    -{
    -    internal static class Program
    -    {
    -        /// <summary>
    -        /// The main entry point for the application.
    -        /// </summary>
    -        [STAThread]
    -        static void Main()
    -        {
    -            Application.EnableVisualStyles();
    -            Application.SetCompatibleTextRenderingDefault(false);
    -            Application.Run(new Main());
    -        }
    -    }
    -}
    -
    -
    -
    -
    -
    - -
    -
    -
    -
    - - - - \ No newline at end of file diff --git a/site/Code/Reader.html b/site/Code/Reader.html index 9a0f1c9..2d2b343 100644 --- a/site/Code/Reader.html +++ b/site/Code/Reader.html @@ -170,16 +170,6 @@
  • - - Program.cs - -
  • -
  • - - Settings.Designer.cs - -
  • -
  • SqliteStorage.cs @@ -260,10 +250,10 @@

    Reader.cs

    /// Author : Maxime Rohmer
    -/// Date : 30/05/2023
    +/// Date : 09/06/2023
     /// File : Reader.cs
     /// Brief : Class used to Read the config file for the OCR
    -/// Version : Alpha 1.0
    +/// Version : Beta 1.0
     
     using System;
     using System.Collections.Generic;
    diff --git a/site/Code/Settings.Designer.html b/site/Code/Settings.Designer.html
    deleted file mode 100644
    index 6b1ef94..0000000
    --- a/site/Code/Settings.Designer.html
    +++ /dev/null
    @@ -1,813 +0,0 @@
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -Settings.Designer.cs - Documentation Track Trends
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -
    -
    - -
    -
    -
    - -
    -
    -
    -
    -
    -

    Settings.Designer.cs

    -
    namespace TrackTrends
    -{
    -    partial class Settings
    -    {
    -        /// <summary>
    -        /// Required designer variable.
    -        /// </summary>
    -        private System.ComponentModel.IContainer components = null;
    -
    -        /// <summary>
    -        /// Clean up any resources being used.
    -        /// </summary>
    -        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
    -        protected override void Dispose(bool disposing)
    -        {
    -            if (disposing && (components != null))
    -            {
    -                components.Dispose();
    -            }
    -            base.Dispose(disposing);
    -        }
    -
    -        #region Windows Form Designer generated code
    -
    -        /// <summary>
    -        /// Required method for Designer support - do not modify
    -        /// the contents of this method with the code editor.
    -        /// </summary>
    -        private void InitializeComponent()
    -        {
    -            this.components = new System.ComponentModel.Container();
    -            this.label1 = new System.Windows.Forms.Label();
    -            this.label2 = new System.Windows.Forms.Label();
    -            this.gpbxRaceSettings = new System.Windows.Forms.GroupBox();
    -            this.tbxGpUrl = new System.Windows.Forms.TextBox();
    -            this.gpbxDriverList = new System.Windows.Forms.GroupBox();
    -            this.lsbDrivers = new System.Windows.Forms.ListBox();
    -            this.btnRemoveDriver = new System.Windows.Forms.Button();
    -            this.btnAddDriver = new System.Windows.Forms.Button();
    -            this.tbxDriverName = new System.Windows.Forms.TextBox();
    -            this.gpbxPreview = new System.Windows.Forms.GroupBox();
    -            this.lblWindowsRemaining = new System.Windows.Forms.Label();
    -            this.btnResetDriver = new System.Windows.Forms.Button();
    -            this.btnRefresh = new System.Windows.Forms.Button();
    -            this.lblWindowPointsRemaining = new System.Windows.Forms.Label();
    -            this.lblZonePointsRemaning = new System.Windows.Forms.Label();
    -            this.btnCreateWindow = new System.Windows.Forms.Button();
    -            this.pbxPreview = new System.Windows.Forms.PictureBox();
    -            this.btnCreatZone = new System.Windows.Forms.Button();
    -            this.gpbxWindowPreview = new System.Windows.Forms.GroupBox();
    -            this.pbxWindowPreview = new System.Windows.Forms.PictureBox();
    -            this.btnLoadPreset = new System.Windows.Forms.Button();
    -            this.lsbPresets = new System.Windows.Forms.ListBox();
    -            this.tbxPresetName = new System.Windows.Forms.TextBox();
    -            this.btnSavePreset = new System.Windows.Forms.Button();
    -            this.gpbxPresets = new System.Windows.Forms.GroupBox();
    -            this.btnDeletePreset = new System.Windows.Forms.Button();
    -            this.tip1 = new System.Windows.Forms.ToolTip(this.components);
    -            this.gpbxRaceSettings.SuspendLayout();
    -            this.gpbxDriverList.SuspendLayout();
    -            this.gpbxPreview.SuspendLayout();
    -            ((System.ComponentModel.ISupportInitialize)(this.pbxPreview)).BeginInit();
    -            this.gpbxWindowPreview.SuspendLayout();
    -            ((System.ComponentModel.ISupportInitialize)(this.pbxWindowPreview)).BeginInit();
    -            this.gpbxPresets.SuspendLayout();
    -            this.SuspendLayout();
    -            // 
    -            // label1
    -            // 
    -            this.label1.AutoSize = true;
    -            this.label1.Font = new System.Drawing.Font("Microsoft YaHei UI", 19.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
    -            this.label1.ForeColor = System.Drawing.Color.White;
    -            this.label1.Location = new System.Drawing.Point(12, 14);
    -            this.label1.Name = "label1";
    -            this.label1.Size = new System.Drawing.Size(309, 43);
    -            this.label1.TabIndex = 0;
    -            this.label1.Text = "Configuration tool";
    -            // 
    -            // label2
    -            // 
    -            this.label2.AutoSize = true;
    -            this.label2.Font = new System.Drawing.Font("Microsoft YaHei UI", 10.2F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
    -            this.label2.ForeColor = System.Drawing.Color.White;
    -            this.label2.Location = new System.Drawing.Point(3, 25);
    -            this.label2.Name = "label2";
    -            this.label2.Size = new System.Drawing.Size(132, 23);
    -            this.label2.TabIndex = 1;
    -            this.label2.Text = "Grand Prix URL";
    -            // 
    -            // gpbxRaceSettings
    -            // 
    -            this.gpbxRaceSettings.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
    -            this.gpbxRaceSettings.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(79)))), ((int)(((byte)(79)))), ((int)(((byte)(79)))));
    -            this.gpbxRaceSettings.Controls.Add(this.tbxGpUrl);
    -            this.gpbxRaceSettings.Controls.Add(this.label2);
    -            this.gpbxRaceSettings.Font = new System.Drawing.Font("Microsoft YaHei UI", 10.2F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
    -            this.gpbxRaceSettings.ForeColor = System.Drawing.Color.White;
    -            this.gpbxRaceSettings.Location = new System.Drawing.Point(733, 9);
    -            this.gpbxRaceSettings.Name = "gpbxRaceSettings";
    -            this.gpbxRaceSettings.Padding = new System.Windows.Forms.Padding(0);
    -            this.gpbxRaceSettings.Size = new System.Drawing.Size(521, 58);
    -            this.gpbxRaceSettings.TabIndex = 2;
    -            this.gpbxRaceSettings.TabStop = false;
    -            this.gpbxRaceSettings.Text = "RaceSettings";
    -            this.gpbxRaceSettings.Paint += new System.Windows.Forms.PaintEventHandler(this.removeBorders);
    -            // 
    -            // tbxGpUrl
    -            // 
    -            this.tbxGpUrl.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(51)))), ((int)(((byte)(51)))));
    -            this.tbxGpUrl.BorderStyle = System.Windows.Forms.BorderStyle.None;
    -            this.tbxGpUrl.Font = new System.Drawing.Font("Microsoft YaHei UI", 10.2F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
    -            this.tbxGpUrl.ForeColor = System.Drawing.Color.White;
    -            this.tbxGpUrl.Location = new System.Drawing.Point(141, 25);
    -            this.tbxGpUrl.Name = "tbxGpUrl";
    -            this.tbxGpUrl.Size = new System.Drawing.Size(367, 22);
    -            this.tbxGpUrl.TabIndex = 4;
    -            this.tbxGpUrl.TextChanged += new System.EventHandler(this.tbxGpUrl_TextChanged);
    -            // 
    -            // gpbxDriverList
    -            // 
    -            this.gpbxDriverList.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
    -            this.gpbxDriverList.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(79)))), ((int)(((byte)(79)))), ((int)(((byte)(79)))));
    -            this.gpbxDriverList.Controls.Add(this.lsbDrivers);
    -            this.gpbxDriverList.Controls.Add(this.btnRemoveDriver);
    -            this.gpbxDriverList.Controls.Add(this.btnAddDriver);
    -            this.gpbxDriverList.Controls.Add(this.tbxDriverName);
    -            this.gpbxDriverList.FlatStyle = System.Windows.Forms.FlatStyle.Popup;
    -            this.gpbxDriverList.Font = new System.Drawing.Font("Microsoft YaHei UI", 10F);
    -            this.gpbxDriverList.ForeColor = System.Drawing.Color.White;
    -            this.gpbxDriverList.Location = new System.Drawing.Point(995, 73);
    -            this.gpbxDriverList.Name = "gpbxDriverList";
    -            this.gpbxDriverList.Padding = new System.Windows.Forms.Padding(0);
    -            this.gpbxDriverList.Size = new System.Drawing.Size(259, 269);
    -            this.gpbxDriverList.TabIndex = 3;
    -            this.gpbxDriverList.TabStop = false;
    -            this.gpbxDriverList.Text = "DriverList";
    -            this.gpbxDriverList.Paint += new System.Windows.Forms.PaintEventHandler(this.removeBorders);
    -            // 
    -            // lsbDrivers
    -            // 
    -            this.lsbDrivers.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(51)))), ((int)(((byte)(51)))));
    -            this.lsbDrivers.BorderStyle = System.Windows.Forms.BorderStyle.None;
    -            this.lsbDrivers.Font = new System.Drawing.Font("Microsoft YaHei UI", 10F);
    -            this.lsbDrivers.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(252)))), ((int)(((byte)(252)))), ((int)(((byte)(252)))));
    -            this.lsbDrivers.FormattingEnabled = true;
    -            this.lsbDrivers.ItemHeight = 23;
    -            this.lsbDrivers.Location = new System.Drawing.Point(10, 23);
    -            this.lsbDrivers.Name = "lsbDrivers";
    -            this.lsbDrivers.Size = new System.Drawing.Size(243, 138);
    -            this.lsbDrivers.TabIndex = 10;
    -            // 
    -            // btnRemoveDriver
    -            // 
    -            this.btnRemoveDriver.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(51)))), ((int)(((byte)(51)))));
    -            this.btnRemoveDriver.FlatStyle = System.Windows.Forms.FlatStyle.Popup;
    -            this.btnRemoveDriver.Font = new System.Drawing.Font("Microsoft YaHei UI", 10.2F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
    -            this.btnRemoveDriver.ForeColor = System.Drawing.Color.White;
    -            this.btnRemoveDriver.Location = new System.Drawing.Point(132, 167);
    -            this.btnRemoveDriver.Name = "btnRemoveDriver";
    -            this.btnRemoveDriver.Size = new System.Drawing.Size(121, 62);
    -            this.btnRemoveDriver.TabIndex = 9;
    -            this.btnRemoveDriver.Text = "Remove";
    -            this.btnRemoveDriver.UseVisualStyleBackColor = false;
    -            this.btnRemoveDriver.Click += new System.EventHandler(this.btnRemoveDriver_Click);
    -            // 
    -            // btnAddDriver
    -            // 
    -            this.btnAddDriver.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(51)))), ((int)(((byte)(51)))));
    -            this.btnAddDriver.FlatStyle = System.Windows.Forms.FlatStyle.Popup;
    -            this.btnAddDriver.Font = new System.Drawing.Font("Microsoft YaHei UI", 10.2F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
    -            this.btnAddDriver.ForeColor = System.Drawing.Color.White;
    -            this.btnAddDriver.Location = new System.Drawing.Point(10, 167);
    -            this.btnAddDriver.Name = "btnAddDriver";
    -            this.btnAddDriver.Size = new System.Drawing.Size(116, 62);
    -            this.btnAddDriver.TabIndex = 8;
    -            this.btnAddDriver.Text = "Add";
    -            this.btnAddDriver.UseVisualStyleBackColor = false;
    -            this.btnAddDriver.Click += new System.EventHandler(this.btnAddDriver_Click);
    -            // 
    -            // tbxDriverName
    -            // 
    -            this.tbxDriverName.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(51)))), ((int)(((byte)(51)))));
    -            this.tbxDriverName.BorderStyle = System.Windows.Forms.BorderStyle.None;
    -            this.tbxDriverName.Font = new System.Drawing.Font("Microsoft YaHei UI", 11F);
    -            this.tbxDriverName.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(252)))), ((int)(((byte)(252)))), ((int)(((byte)(252)))));
    -            this.tbxDriverName.Location = new System.Drawing.Point(10, 235);
    -            this.tbxDriverName.Name = "tbxDriverName";
    -            this.tbxDriverName.Size = new System.Drawing.Size(243, 24);
    -            this.tbxDriverName.TabIndex = 7;
    -            // 
    -            // gpbxPreview
    -            // 
    -            this.gpbxPreview.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(79)))), ((int)(((byte)(79)))), ((int)(((byte)(79)))));
    -            this.gpbxPreview.Controls.Add(this.lblWindowsRemaining);
    -            this.gpbxPreview.Controls.Add(this.btnResetDriver);
    -            this.gpbxPreview.Controls.Add(this.btnRefresh);
    -            this.gpbxPreview.Controls.Add(this.lblWindowPointsRemaining);
    -            this.gpbxPreview.Controls.Add(this.lblZonePointsRemaning);
    -            this.gpbxPreview.Controls.Add(this.btnCreateWindow);
    -            this.gpbxPreview.Controls.Add(this.pbxPreview);
    -            this.gpbxPreview.Controls.Add(this.btnCreatZone);
    -            this.gpbxPreview.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
    -            this.gpbxPreview.Font = new System.Drawing.Font("Microsoft YaHei UI", 10F);
    -            this.gpbxPreview.ForeColor = System.Drawing.Color.White;
    -            this.gpbxPreview.Location = new System.Drawing.Point(18, 73);
    -            this.gpbxPreview.Name = "gpbxPreview";
    -            this.gpbxPreview.Padding = new System.Windows.Forms.Padding(0);
    -            this.gpbxPreview.Size = new System.Drawing.Size(968, 608);
    -            this.gpbxPreview.TabIndex = 4;
    -            this.gpbxPreview.TabStop = false;
    -            this.gpbxPreview.Text = "Preview";
    -            this.gpbxPreview.Paint += new System.Windows.Forms.PaintEventHandler(this.removeBorders);
    -            // 
    -            // lblWindowsRemaining
    -            // 
    -            this.lblWindowsRemaining.AutoSize = true;
    -            this.lblWindowsRemaining.BackColor = System.Drawing.Color.Transparent;
    -            this.lblWindowsRemaining.ForeColor = System.Drawing.Color.White;
    -            this.lblWindowsRemaining.Location = new System.Drawing.Point(215, 82);
    -            this.lblWindowsRemaining.Name = "lblWindowsRemaining";
    -            this.lblWindowsRemaining.Size = new System.Drawing.Size(183, 23);
    -            this.lblWindowsRemaining.TabIndex = 6;
    -            this.lblWindowsRemaining.Text = "7 windows remaining";
    -            // 
    -            // btnResetDriver
    -            // 
    -            this.btnResetDriver.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
    -            this.btnResetDriver.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(51)))), ((int)(((byte)(51)))));
    -            this.btnResetDriver.Enabled = false;
    -            this.btnResetDriver.FlatStyle = System.Windows.Forms.FlatStyle.Popup;
    -            this.btnResetDriver.ForeColor = System.Drawing.Color.White;
    -            this.btnResetDriver.Location = new System.Drawing.Point(748, 20);
    -            this.btnResetDriver.Name = "btnResetDriver";
    -            this.btnResetDriver.Size = new System.Drawing.Size(211, 33);
    -            this.btnResetDriver.TabIndex = 2;
    -            this.btnResetDriver.Text = "Reset the emulator";
    -            this.btnResetDriver.UseVisualStyleBackColor = false;
    -            this.btnResetDriver.Click += new System.EventHandler(this.btnResetDriver_Click);
    -            // 
    -            // btnRefresh
    -            // 
    -            this.btnRefresh.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
    -            this.btnRefresh.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(51)))), ((int)(((byte)(51)))));
    -            this.btnRefresh.FlatStyle = System.Windows.Forms.FlatStyle.Popup;
    -            this.btnRefresh.ForeColor = System.Drawing.Color.White;
    -            this.btnRefresh.Location = new System.Drawing.Point(549, 20);
    -            this.btnRefresh.Name = "btnRefresh";
    -            this.btnRefresh.Size = new System.Drawing.Size(193, 33);
    -            this.btnRefresh.TabIndex = 1;
    -            this.btnRefresh.Text = "Start the browser";
    -            this.btnRefresh.UseVisualStyleBackColor = false;
    -            this.btnRefresh.Click += new System.EventHandler(this.btnRefresh_Click);
    -            // 
    -            // lblWindowPointsRemaining
    -            // 
    -            this.lblWindowPointsRemaining.AutoSize = true;
    -            this.lblWindowPointsRemaining.ForeColor = System.Drawing.Color.White;
    -            this.lblWindowPointsRemaining.Location = new System.Drawing.Point(215, 59);
    -            this.lblWindowPointsRemaining.Name = "lblWindowPointsRemaining";
    -            this.lblWindowPointsRemaining.Size = new System.Drawing.Size(163, 23);
    -            this.lblWindowPointsRemaining.TabIndex = 4;
    -            this.lblWindowPointsRemaining.Text = "0 points remaining";
    -            // 
    -            // lblZonePointsRemaning
    -            // 
    -            this.lblZonePointsRemaning.AutoSize = true;
    -            this.lblZonePointsRemaning.ForeColor = System.Drawing.Color.White;
    -            this.lblZonePointsRemaning.Location = new System.Drawing.Point(19, 59);
    -            this.lblZonePointsRemaning.Name = "lblZonePointsRemaning";
    -            this.lblZonePointsRemaning.Size = new System.Drawing.Size(163, 23);
    -            this.lblZonePointsRemaning.TabIndex = 5;
    -            this.lblZonePointsRemaning.Text = "0 points remaining";
    -            // 
    -            // btnCreateWindow
    -            // 
    -            this.btnCreateWindow.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(51)))), ((int)(((byte)(51)))));
    -            this.btnCreateWindow.Enabled = false;
    -            this.btnCreateWindow.FlatStyle = System.Windows.Forms.FlatStyle.Popup;
    -            this.btnCreateWindow.ForeColor = System.Drawing.Color.White;
    -            this.btnCreateWindow.Location = new System.Drawing.Point(213, 23);
    -            this.btnCreateWindow.Name = "btnCreateWindow";
    -            this.btnCreateWindow.Size = new System.Drawing.Size(201, 33);
    -            this.btnCreateWindow.TabIndex = 2;
    -            this.btnCreateWindow.Text = "Create the windows";
    -            this.btnCreateWindow.UseVisualStyleBackColor = false;
    -            this.btnCreateWindow.Click += new System.EventHandler(this.btnCreateWindow_Click);
    -            // 
    -            // pbxPreview
    -            // 
    -            this.pbxPreview.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(51)))), ((int)(((byte)(51)))));
    -            this.pbxPreview.Location = new System.Drawing.Point(10, 62);
    -            this.pbxPreview.Name = "pbxPreview";
    -            this.pbxPreview.Size = new System.Drawing.Size(950, 540);
    -            this.pbxPreview.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
    -            this.pbxPreview.TabIndex = 0;
    -            this.pbxPreview.TabStop = false;
    -            this.pbxPreview.Click += new System.EventHandler(this.pbxMain_Click);
    -            this.pbxPreview.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbxMain_MouseClick);
    -            // 
    -            // btnCreatZone
    -            // 
    -            this.btnCreatZone.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(51)))), ((int)(((byte)(51)))));
    -            this.btnCreatZone.Enabled = false;
    -            this.btnCreatZone.FlatStyle = System.Windows.Forms.FlatStyle.Popup;
    -            this.btnCreatZone.ForeColor = System.Drawing.Color.White;
    -            this.btnCreatZone.Location = new System.Drawing.Point(6, 23);
    -            this.btnCreatZone.Name = "btnCreatZone";
    -            this.btnCreatZone.Size = new System.Drawing.Size(201, 33);
    -            this.btnCreatZone.TabIndex = 1;
    -            this.btnCreatZone.Text = "Create the main zone";
    -            this.btnCreatZone.UseVisualStyleBackColor = false;
    -            this.btnCreatZone.Click += new System.EventHandler(this.btnCreatZone_Click);
    -            // 
    -            // gpbxWindowPreview
    -            // 
    -            this.gpbxWindowPreview.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
    -            this.gpbxWindowPreview.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(79)))), ((int)(((byte)(79)))), ((int)(((byte)(79)))));
    -            this.gpbxWindowPreview.Controls.Add(this.pbxWindowPreview);
    -            this.gpbxWindowPreview.FlatStyle = System.Windows.Forms.FlatStyle.Popup;
    -            this.gpbxWindowPreview.Font = new System.Drawing.Font("Microsoft YaHei UI", 10F);
    -            this.gpbxWindowPreview.ForeColor = System.Drawing.Color.White;
    -            this.gpbxWindowPreview.Location = new System.Drawing.Point(18, 688);
    -            this.gpbxWindowPreview.Name = "gpbxWindowPreview";
    -            this.gpbxWindowPreview.Padding = new System.Windows.Forms.Padding(0);
    -            this.gpbxWindowPreview.Size = new System.Drawing.Size(1237, 88);
    -            this.gpbxWindowPreview.TabIndex = 5;
    -            this.gpbxWindowPreview.TabStop = false;
    -            this.gpbxWindowPreview.Text = "DriverZonePreview";
    -            this.gpbxWindowPreview.Paint += new System.Windows.Forms.PaintEventHandler(this.removeBorders);
    -            // 
    -            // pbxWindowPreview
    -            // 
    -            this.pbxWindowPreview.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(51)))), ((int)(((byte)(51)))));
    -            this.pbxWindowPreview.Location = new System.Drawing.Point(6, 30);
    -            this.pbxWindowPreview.Name = "pbxWindowPreview";
    -            this.pbxWindowPreview.Size = new System.Drawing.Size(1225, 50);
    -            this.pbxWindowPreview.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
    -            this.pbxWindowPreview.TabIndex = 0;
    -            this.pbxWindowPreview.TabStop = false;
    -            this.pbxWindowPreview.Click += new System.EventHandler(this.pbxDriverZone_Click);
    -            this.pbxWindowPreview.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbxDriverZone_MouseClick);
    -            // 
    -            // btnLoadPreset
    -            // 
    -            this.btnLoadPreset.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(51)))), ((int)(((byte)(51)))));
    -            this.btnLoadPreset.FlatStyle = System.Windows.Forms.FlatStyle.Popup;
    -            this.btnLoadPreset.ForeColor = System.Drawing.Color.White;
    -            this.btnLoadPreset.Location = new System.Drawing.Point(10, 213);
    -            this.btnLoadPreset.Name = "btnLoadPreset";
    -            this.btnLoadPreset.Size = new System.Drawing.Size(243, 40);
    -            this.btnLoadPreset.TabIndex = 10;
    -            this.btnLoadPreset.Text = "Load the preset";
    -            this.btnLoadPreset.UseVisualStyleBackColor = false;
    -            this.btnLoadPreset.Click += new System.EventHandler(this.btnLoadPreset_Click);
    -            // 
    -            // lsbPresets
    -            // 
    -            this.lsbPresets.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(51)))), ((int)(((byte)(51)))));
    -            this.lsbPresets.BorderStyle = System.Windows.Forms.BorderStyle.None;
    -            this.lsbPresets.Font = new System.Drawing.Font("Microsoft YaHei UI", 10F);
    -            this.lsbPresets.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(252)))), ((int)(((byte)(252)))), ((int)(((byte)(252)))));
    -            this.lsbPresets.FormattingEnabled = true;
    -            this.lsbPresets.ItemHeight = 23;
    -            this.lsbPresets.Location = new System.Drawing.Point(10, 23);
    -            this.lsbPresets.Name = "lsbPresets";
    -            this.lsbPresets.Size = new System.Drawing.Size(243, 138);
    -            this.lsbPresets.TabIndex = 8;
    -            this.lsbPresets.SelectedIndexChanged += new System.EventHandler(this.lsbPresets_SelectedIndexChanged);
    -            // 
    -            // tbxPresetName
    -            // 
    -            this.tbxPresetName.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(51)))), ((int)(((byte)(51)))));
    -            this.tbxPresetName.BorderStyle = System.Windows.Forms.BorderStyle.None;
    -            this.tbxPresetName.Font = new System.Drawing.Font("Microsoft YaHei UI", 11F);
    -            this.tbxPresetName.ForeColor = System.Drawing.Color.White;
    -            this.tbxPresetName.Location = new System.Drawing.Point(10, 303);
    -            this.tbxPresetName.Name = "tbxPresetName";
    -            this.tbxPresetName.Size = new System.Drawing.Size(243, 24);
    -            this.tbxPresetName.TabIndex = 7;
    -            // 
    -            // btnSavePreset
    -            // 
    -            this.btnSavePreset.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(51)))), ((int)(((byte)(51)))));
    -            this.btnSavePreset.FlatStyle = System.Windows.Forms.FlatStyle.Popup;
    -            this.btnSavePreset.ForeColor = System.Drawing.Color.White;
    -            this.btnSavePreset.Location = new System.Drawing.Point(10, 259);
    -            this.btnSavePreset.Name = "btnSavePreset";
    -            this.btnSavePreset.Size = new System.Drawing.Size(243, 40);
    -            this.btnSavePreset.TabIndex = 7;
    -            this.btnSavePreset.Text = "Save current preset";
    -            this.btnSavePreset.UseVisualStyleBackColor = false;
    -            this.btnSavePreset.Click += new System.EventHandler(this.btnSavePreset_Click);
    -            // 
    -            // gpbxPresets
    -            // 
    -            this.gpbxPresets.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
    -            this.gpbxPresets.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(79)))), ((int)(((byte)(79)))), ((int)(((byte)(79)))));
    -            this.gpbxPresets.Controls.Add(this.btnSavePreset);
    -            this.gpbxPresets.Controls.Add(this.btnDeletePreset);
    -            this.gpbxPresets.Controls.Add(this.tbxPresetName);
    -            this.gpbxPresets.Controls.Add(this.btnLoadPreset);
    -            this.gpbxPresets.Controls.Add(this.lsbPresets);
    -            this.gpbxPresets.FlatStyle = System.Windows.Forms.FlatStyle.Popup;
    -            this.gpbxPresets.Font = new System.Drawing.Font("Microsoft YaHei UI", 10F);
    -            this.gpbxPresets.ForeColor = System.Drawing.Color.White;
    -            this.gpbxPresets.Location = new System.Drawing.Point(995, 348);
    -            this.gpbxPresets.Name = "gpbxPresets";
    -            this.gpbxPresets.Padding = new System.Windows.Forms.Padding(0);
    -            this.gpbxPresets.Size = new System.Drawing.Size(259, 333);
    -            this.gpbxPresets.TabIndex = 6;
    -            this.gpbxPresets.TabStop = false;
    -            this.gpbxPresets.Text = "Presets";
    -            this.gpbxPresets.Paint += new System.Windows.Forms.PaintEventHandler(this.removeBorders);
    -            // 
    -            // btnDeletePreset
    -            // 
    -            this.btnDeletePreset.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(51)))), ((int)(((byte)(51)))));
    -            this.btnDeletePreset.FlatStyle = System.Windows.Forms.FlatStyle.Popup;
    -            this.btnDeletePreset.ForeColor = System.Drawing.Color.White;
    -            this.btnDeletePreset.Location = new System.Drawing.Point(10, 167);
    -            this.btnDeletePreset.Name = "btnDeletePreset";
    -            this.btnDeletePreset.Size = new System.Drawing.Size(243, 40);
    -            this.btnDeletePreset.TabIndex = 11;
    -            this.btnDeletePreset.Text = "Delete the preset";
    -            this.btnDeletePreset.UseVisualStyleBackColor = false;
    -            this.btnDeletePreset.Click += new System.EventHandler(this.btnDeletePreset_Click);
    -            // 
    -            // Settings
    -            // 
    -            this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 19F);
    -            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
    -            this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(51)))), ((int)(((byte)(51)))));
    -            this.ClientSize = new System.Drawing.Size(1266, 788);
    -            this.Controls.Add(this.gpbxPresets);
    -            this.Controls.Add(this.gpbxWindowPreview);
    -            this.Controls.Add(this.gpbxPreview);
    -            this.Controls.Add(this.gpbxDriverList);
    -            this.Controls.Add(this.label1);
    -            this.Controls.Add(this.gpbxRaceSettings);
    -            this.Font = new System.Drawing.Font("Microsoft YaHei UI", 7.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
    -            this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
    -            this.MinimumSize = new System.Drawing.Size(1284, 835);
    -            this.Name = "Settings";
    -            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
    -            this.Text = "Settings";
    -            this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Settings_FormClosing);
    -            this.Resize += new System.EventHandler(this.Settings_Resize);
    -            this.gpbxRaceSettings.ResumeLayout(false);
    -            this.gpbxRaceSettings.PerformLayout();
    -            this.gpbxDriverList.ResumeLayout(false);
    -            this.gpbxDriverList.PerformLayout();
    -            this.gpbxPreview.ResumeLayout(false);
    -            this.gpbxPreview.PerformLayout();
    -            ((System.ComponentModel.ISupportInitialize)(this.pbxPreview)).EndInit();
    -            this.gpbxWindowPreview.ResumeLayout(false);
    -            ((System.ComponentModel.ISupportInitialize)(this.pbxWindowPreview)).EndInit();
    -            this.gpbxPresets.ResumeLayout(false);
    -            this.gpbxPresets.PerformLayout();
    -            this.ResumeLayout(false);
    -            this.PerformLayout();
    -
    -        }
    -
    -        #endregion
    -
    -        private System.Windows.Forms.Label label1;
    -        private System.Windows.Forms.Label label2;
    -        private System.Windows.Forms.GroupBox gpbxRaceSettings;
    -        private System.Windows.Forms.TextBox tbxGpUrl;
    -        private System.Windows.Forms.GroupBox gpbxDriverList;
    -        private System.Windows.Forms.ListBox lsbDrivers;
    -        private System.Windows.Forms.Button btnRemoveDriver;
    -        private System.Windows.Forms.Button btnAddDriver;
    -        private System.Windows.Forms.TextBox tbxDriverName;
    -        private System.Windows.Forms.GroupBox gpbxPreview;
    -        private System.Windows.Forms.PictureBox pbxPreview;
    -        private System.Windows.Forms.GroupBox gpbxWindowPreview;
    -        private System.Windows.Forms.PictureBox pbxWindowPreview;
    -        private System.Windows.Forms.Button btnCreateWindow;
    -        private System.Windows.Forms.Button btnCreatZone;
    -        private System.Windows.Forms.ListBox lsbPresets;
    -        private System.Windows.Forms.TextBox tbxPresetName;
    -        private System.Windows.Forms.Button btnSavePreset;
    -        private System.Windows.Forms.Label lblWindowsRemaining;
    -        private System.Windows.Forms.Label lblZonePointsRemaning;
    -        private System.Windows.Forms.Label lblWindowPointsRemaining;
    -        private System.Windows.Forms.Button btnRefresh;
    -        private System.Windows.Forms.Button btnResetDriver;
    -        private System.Windows.Forms.Button btnLoadPreset;
    -        private System.Windows.Forms.GroupBox gpbxPresets;
    -        private System.Windows.Forms.Button btnDeletePreset;
    -        private System.Windows.Forms.ToolTip tip1;
    -    }
    -}
    -
    -
    -
    -
    -
    - -
    -
    -
    -
    - - - - \ No newline at end of file diff --git a/site/Code/Settings.html b/site/Code/Settings.html index db034b1..5f47169 100644 --- a/site/Code/Settings.html +++ b/site/Code/Settings.html @@ -170,16 +170,6 @@
  • - - Program.cs - -
  • -
  • - - Settings.Designer.cs - -
  • -
  • SqliteStorage.cs @@ -259,483 +249,593 @@

    Settings.cs

    -
    using System;
    -using System.Collections.Generic;
    -using System.ComponentModel;
    -using System.Data;
    -using System.Drawing;
    -using System.Linq;
    -using System.Text;
    -using System.Threading.Tasks;
    -using System.Windows.Forms;
    -using System.IO;
    -using TrackTrends;
    -
    -namespace TrackTrends
    -{
    -    public partial class Settings : Form
    -    {
    -        private string _grandPrixUrl = "";
    -        private string _selectedConfigFile;
    -        private List<string> _driverList = new List<string>();
    -
    -        private F1TVEmulator Emulator = null;
    -        private ConfigurationTool Config = null;
    -
    -        private bool CreatingZone = false;
    -        private Point ZoneP1;
    -        private Point ZoneP2;
    -
    -        private bool CreatingWindow = false;
    -        private Point WindowP1;
    -        private Point WindowP2;
    -
    -        List<Rectangle> WindowsToAdd = new List<Rectangle>();
    +
    /// Author : Maxime Rohmer
    +/// Date : 09/06/2023
    +/// File : Settings.cs
    +/// Brief : Class that controls the settings view
    +/// Version : Beta 1.0
    +
    +using System;
    +using System.Collections.Generic;
    +using System.ComponentModel;
    +using System.Data;
    +using System.Drawing;
    +using System.Linq;
    +using System.Text;
    +using System.Threading.Tasks;
    +using System.Windows.Forms;
    +using System.IO;
    +using TrackTrends;
    +
    +namespace TrackTrends
    +{
    +    public partial class Settings : Form
    +    {
    +        private string _grandPrixUrl = "";
    +        private string _selectedConfigFile;
    +        private List<string> _driverList = new List<string>();
    +
    +        private F1TVEmulator Emulator = null;
    +        private ConfigurationTool Config = null;
    +
    +        private bool CreatingZone = false;
    +        private Point ZoneP1;
    +        private Point ZoneP2;
     
    -        public string GrandPrixUrl { get => _grandPrixUrl; private set => _grandPrixUrl = value; }
    -        public List<string> DriverList { get => _driverList; private set => _driverList = value; }
    -        public string SelectedConfigFile { get => _selectedConfigFile; private set => _selectedConfigFile = value; }
    +        private bool CreatingWindow = false;
    +        private Point WindowP1;
    +        private Point WindowP2;
     
    -        //For the responsive content
    -        Size oldSize = new Size();
    -        Size oldGpbxPreviewSize = new Size();
    -        Size oldGpbxWindowPreviewSize = new Size();
    -
    -        Size oldPbxPreviewSize = new Size();
    -        Size oldPbxWindowPreviewSize = new Size();
    -
    -        public Settings()
    -        {
    -            InitializeComponent();
    -            Load();
    -        }
    -        private void Load()
    -        {
    -            RefreshUI();
    -            oldSize = this.Size;
    -            oldGpbxPreviewSize = gpbxPreview.Size;
    -            oldGpbxWindowPreviewSize = gpbxWindowPreview.Size;
    -            oldPbxPreviewSize = pbxPreview.Size;
    -            oldPbxWindowPreviewSize = pbxWindowPreview.Size;
    -
    -            tip1.SetToolTip(btnCreatZone, "After clicking you can select two points in the image to set the bounds of the important data");
    -            tip1.SetToolTip(btnCreateWindow, "After clicking this you will have to select all the windows that are important on the lower image. Refer to the documentation for more infos");
    -            tip1.SetToolTip(btnRefresh, "Starts the emulator or refreshes the images if its already running");
    -            tip1.SetToolTip(btnResetDriver, "Resets the driver if something went wrong or if you want to test an other URL");
    -            tip1.SetToolTip(lsbDrivers, "The drivers that are on the image. Non-Case sensitive");
    -            tip1.SetToolTip(tbxPresetName, "The name of the preset you want to save");
    -            tip1.SetToolTip(pbxPreview, "What the emulator returns");
    -            tip1.SetToolTip(pbxWindowPreview, "One of the driver zones that the program managed to slice from the main zone");
    -        }
    -        private void RefreshUI()
    -        {
    -            lsbDrivers.DataSource = null;
    -            lsbDrivers.DataSource = DriverList;
    -
    -            if (Directory.Exists(ConfigurationTool.CONFIGS_FOLDER_NAME))
    -            {
    -                lsbPresets.DataSource = null;
    -                lsbPresets.DataSource = Directory.GetFiles(ConfigurationTool.CONFIGS_FOLDER_NAME);
    -            }
    -            if (CreatingZone)
    -            {
    -                if (ZoneP1 == new Point(-1, -1))
    -                {
    -                    lblZonePointsRemaning.Text = "2 points Remaining";
    -                }
    -                else
    -                {
    -                    lblZonePointsRemaning.Text = "1 point Remaining";
    -                }
    -            }
    -            else
    -            {
    -                lblZonePointsRemaning.Text = "";
    -            }
    -
    -            if (CreatingWindow)
    -            {
    -                if (WindowP1 == new Point(-1, -1))
    -                {
    -                    lblWindowPointsRemaining.Text = "2 points Remaining";
    -                }
    -                else
    -                {
    -                    lblWindowPointsRemaining.Text = "1 point Remaining";
    -                }
    -                lblWindowPointsRemaining.Text = ConfigurationTool.NUMBER_OF_ZONES - WindowsToAdd.Count() + " Windows remaining";
    -            }
    -            else
    -            {
    -                lblWindowPointsRemaining.Text = "";
    -                lblWindowsRemaining.Text = "";
    +        List<Rectangle> WindowsToAdd = new List<Rectangle>();
    +
    +        public string GrandPrixUrl { get => _grandPrixUrl; private set => _grandPrixUrl = value; }
    +        public List<string> DriverList { get => _driverList; private set => _driverList = value; }
    +        public string SelectedConfigFile { get => _selectedConfigFile; private set => _selectedConfigFile = value; }
    +
    +        //For the responsive content
    +        Size oldSize = new Size();
    +        Size oldGpbxPreviewSize = new Size();
    +        Size oldGpbxWindowPreviewSize = new Size();
    +
    +        Size oldPbxPreviewSize = new Size();
    +        Size oldPbxWindowPreviewSize = new Size();
    +
    +        public Settings()
    +        {
    +            InitializeComponent();
    +            Load();
    +        }
    +        /// <summary>
    +        /// This methods regroups all the actions that the forms need to be doing at the first launch
    +        /// </summary>
    +        private void Load()
    +        {
    +            RefreshUI();
    +            oldSize = this.Size;
    +            oldGpbxPreviewSize = gpbxPreview.Size;
    +            oldGpbxWindowPreviewSize = gpbxWindowPreview.Size;
    +            oldPbxPreviewSize = pbxPreview.Size;
    +            oldPbxWindowPreviewSize = pbxWindowPreview.Size;
    +
    +            btnLoadPreset.Enabled = false;
    +            btnDeletePreset.Enabled = false;
    +            btnSavePreset.Enabled = false;
    +
    +            // I prefered regrouping all the tooltips here to make it easier to edit (there is 100% of thoses sentences containing typos so if you see one dont hesitate to edit those messages)
    +            tip1.SetToolTip(btnCreatZone, "After clicking you can select two points in the image to set the bounds of the important data");
    +            tip1.SetToolTip(btnCreateWindow, "After clicking this you will have to select all the windows that are important on the lower image. Refer to the documentation for more infos");
    +            tip1.SetToolTip(btnRefresh, "Starts the emulator or refreshes the images if its already running");
    +            tip1.SetToolTip(btnResetDriver, "Resets the driver if something went wrong or if you want to test an other URL");
    +            tip1.SetToolTip(lsbDrivers, "The drivers that are on the image. Non-Case sensitive");
    +            tip1.SetToolTip(tbxPresetName, "The name of the preset you want to save");
    +            tip1.SetToolTip(pbxPreview, "What the emulator returns");
    +            tip1.SetToolTip(pbxWindowPreview, "One of the driver zones that the program managed to slice from the main zone");
    +        }
    +        /// <summary>
    +        /// This is the main method that will be called anytime something changes on the view
    +        /// It can be called at any time and will adapt the UI taking into account the state of the app
    +        /// </summary>
    +        private void RefreshUI()
    +        {
    +            lsbDrivers.DataSource = null;
    +            lsbDrivers.DataSource = DriverList;
    +
    +            if (Directory.Exists(ConfigurationTool.CONFIGS_FOLDER_NAME))
    +            {
    +                lsbPresets.DataSource = null;
    +                lsbPresets.DataSource = Directory.GetFiles(ConfigurationTool.CONFIGS_FOLDER_NAME);
    +            }
    +            if (CreatingZone)
    +            {
    +                if (ZoneP1 == new Point(-1, -1))
    +                {
    +                    lblZonePointsRemaning.Text = "2 points Remaining";
    +                }
    +                else
    +                {
    +                    lblZonePointsRemaning.Text = "1 point Remaining";
    +                }
    +            }
    +            else
    +            {
    +                lblZonePointsRemaning.Text = "";
                 }
    -            if (Config != null)
    -            {
    -                pbxPreview.Image = Config.MainZone.Draw();
    -                if (Config.MainZone.Zones.Count > 0)
    -                    pbxWindowPreview.Image = Config.MainZone.Zones[0].Draw();
    -            }
    -        }
    -        private void CreateNewZone(Point p1, Point p2)
    -        {
    -            Rectangle dimensions = CreateAbsoluteRectangle(p1, p2);
    -            Config = new ConfigurationTool((Bitmap)pbxPreview.Image, dimensions);
    -            RefreshUI();
    -        }
    -        private void CreateWindows(List<Rectangle> dimensions)
    -        {
    -            if (Config != null)
    -            {
    -                Config.AddWindows(dimensions);
    -            }
    -        }
    -        private void tbxGpUrl_TextChanged(object sender, EventArgs e)
    -        {
    -            GrandPrixUrl = tbxGpUrl.Text;
    -        }
    -
    -        private void btnAddDriver_Click(object sender, EventArgs e)
    -        {
    -            string newDriver = tbxDriverName.Text;
    -            DriverList.Add(newDriver);
    -            tbxDriverName.Text = "";
    -            RefreshUI();
    -        }
    -
    -        private void btnRemoveDriver_Click(object sender, EventArgs e)
    -        {
    -            if (lsbDrivers.SelectedIndex >= 0)
    -            {
    -                DriverList.RemoveAt(lsbDrivers.SelectedIndex);
    -            }
    -            RefreshUI();
    -        }
    -        private void SwitchZoneCreation()
    -        {
    -            if (CreatingZone)
    -            {
    -                CreatingZone = false;
    -                lblZonePointsRemaning.Text = "";
    -            }
    -            else
    -            {
    -                CreatingZone = true;
    -
    -                if (Config != null)
    -                    Config.ResetMainZone();
    -
    -                if (CreatingWindow)
    -                    SwitchWindowCreation();
    -
    -                if (Emulator != null && Emulator.Ready)
    -                {
    -                    Config = null;
    -                    pbxPreview.Image = Emulator.Screenshot();
    -                }
    -
    -                ZoneP1 = new Point(-1, -1);
    -                ZoneP2 = new Point(-1, -1);
    -
    -                lblZonePointsRemaning.Text = "2 Points left";
    -            }
    -            RefreshUI();
    -        }
    -        private void SwitchWindowCreation()
    -        {
    -            if (CreatingWindow)
    -            {
    -                CreatingWindow = false;
    -            }
    -            else
    -            {
    -                CreatingWindow = true;
    -
    -                if (Config != null)
    -                    Config.ResetWindows();
    -
    -                if (CreatingZone)
    -                    SwitchZoneCreation();
    -
    -                WindowP1 = new Point(-1, -1);
    -                WindowP2 = new Point(-1, -1);
    -
    -                WindowsToAdd = new List<Rectangle>();
    -            }
    -            RefreshUI();
    -        }
    -        private void btnCreatZone_Click(object sender, EventArgs e)
    -        {
    -            SwitchZoneCreation();
    -        }
    -        private void btnCreateWindow_Click(object sender, EventArgs e)
    -        {
    -            SwitchWindowCreation();
    -        }
    -        private void pbxMain_MouseClick(object sender, MouseEventArgs e)
    -        {
    -            if (CreatingZone && pbxPreview.Image != null)
    -            {
    -                //Point coordinates = pbxMain.PointToClient(new Point(MousePosition.X, MousePosition.Y));
    -                Point coordinates = e.Location;
    -                float xOffset = (float)pbxPreview.Image.Width / (float)pbxPreview.Width;
    -                float yOffset = (float)pbxPreview.Image.Height / (float)pbxPreview.Height;
    -                Point newPoint = new Point(Convert.ToInt32((float)coordinates.X * xOffset), Convert.ToInt32((float)coordinates.Y * yOffset));
    -
    -                //MessageBox.Show("Coordinates" + Environment.NewLine + "Old : " + coordinates.ToString() + Environment.NewLine + "New : " + newPoint.ToString());
    -
    -                if (ZoneP1 == new Point(-1, -1))
    -                {
    -                    ZoneP1 = newPoint;
    -                }
    -                else
    -                {
    -                    ZoneP2 = newPoint;
    -                    CreateNewZone(ZoneP1, ZoneP2);
    -                    SwitchZoneCreation();
    -                }
    -                RefreshUI();
    -            }
    -        }
    -        private void pbxMain_Click(object sender, EventArgs e)
    -        {
    -            //Not the right one to use visibly
    -        }
    -        private void pbxDriverZone_MouseClick(object sender, MouseEventArgs e)
    -        {
    -            if (CreatingWindow && pbxWindowPreview.Image != null)
    -            {
    -                Point coordinates = e.Location;
    -
    -                float xOffset = (float)pbxWindowPreview.Image.Width / (float)pbxWindowPreview.Width;
    -                float yOffset = (float)pbxWindowPreview.Image.Height / (float)pbxWindowPreview.Height;
    -
    -                Point newPoint = new Point(Convert.ToInt32((float)coordinates.X * xOffset), Convert.ToInt32((float)coordinates.Y * yOffset));
    -
    -                if (WindowP1 == new Point(-1, -1))
    -                {
    -                    WindowP1 = newPoint;
    -                }
    -                else
    -                {
    -                    WindowP2 = newPoint;
    -                    WindowsToAdd.Add(CreateAbsoluteRectangle(WindowP1, WindowP2));
    -
    -                    if (WindowsToAdd.Count < ConfigurationTool.NUMBER_OF_ZONES)
    -                    {
    -                        WindowP1 = new Point(-1, -1);
    -                        WindowP2 = new Point(-1, -1);
    -                    }
    -                    else
    -                    {
    -                        WindowP1 = new Point(WindowP1.X, 0);
    -                        WindowP2 = new Point(WindowP2.X, pbxWindowPreview.Image.Height);
    -                        CreateWindows(WindowsToAdd);
    -                        SwitchWindowCreation();
    -                    }
    -                }
    -                RefreshUI();
    -            }
    -        }
    -        private void pbxDriverZone_Click(object sender, EventArgs e)
    -        {
    -            //Not the right one to use visibly
    -        }
    -        private Rectangle CreateAbsoluteRectangle(Point p1, Point p2)
    -        {
    -            Point newP1 = new Point();
    -            Point newP2 = new Point();
    -
    -            if (p1.X < p2.X)
    -            {
    -                newP1.X = p1.X;
    -                newP2.X = p2.X;
    -            }
    -            else
    -            {
    -                newP1.X = p2.X;
    -                newP2.X = p1.X;
    -            }
    -
    -            if (p1.Y < p2.Y)
    -            {
    -                newP1.Y = p1.Y;
    -                newP2.Y = p2.Y;
    -            }
    -            else
    -            {
    -                newP1.Y = p2.Y;
    -                newP2.Y = p1.Y;
    -            }
    -            return new Rectangle(newP1.X, newP1.Y, newP2.X - newP1.X, newP2.Y - newP1.Y);
    -        }
    -
    -        private async void btnRefresh_Click(object sender, EventArgs e)
    -        {
    -            btnRefresh.Enabled = false;
    -            btnCreatZone.Enabled = false;
    -            btnCreateWindow.Enabled = false;
    -            btnResetDriver.Enabled = false;
    -            if (Emulator == null || Emulator.GrandPrixUrl != tbxGpUrl.Text)
    -            {
    -                Emulator = new F1TVEmulator(tbxGpUrl.Text);
    -            }
    -
    -            if (!Emulator.Ready)
    -            {
    -                Task<int> start = Task.Run(() => Emulator.Start());
    -                int errorCode = await start;
    -                if (errorCode != 0)
    -                {
    -                    string message;
    -                    switch (errorCode)
    -                    {
    -                        case 100:
    -                            message = "Error " + errorCode + " Could not recover cookies. It could be because of an improper installation of python or bad cookies in the chrome database. Please try to log on to the F1TV using chrome again";
    -                            break;
    -                        case 101:
    -                            message = "Error " + errorCode + " Could not start the driver. It could be because an other instance is runnin make sure you closed them all before trying again";
    -                            break;
    -                        case 102:
    -                            message = "Error " + errorCode + " Could not navigate on the F1TV site. Make sure the correct URL has been given and that you logged from chrome. It can take a few minutes to update";
    -                            break;
    -                        case 103:
    -                            message = "Error " + errorCode + " The url is not a valid url";
    -                            break;
    -                        case 104:
    -                            message = "Error " + errorCode + " The url is not a valid url";
    -                            break;
    -                        case 105:
    -                            message = "Error " + errorCode + " There has been an error trying to emulate button presses. Please try again";
    -                            break;
    -                        case 106:
    -                            message = "Error " + errorCode + " There has been an error trying to emulate button presses. Please try again";
    -                            break;
    -                        default:
    -                            message = "Could not start the emulator Error " + errorCode;
    -                            break;
    -                    }
    -                    MessageBox.Show(message);
    -                }
    -                else
    -                {
    -                    pbxPreview.Image = Emulator.Screenshot();
    -                }
    +
    +            if (CreatingWindow)
    +            {
    +                if (WindowP1 == new Point(-1, -1))
    +                {
    +                    lblWindowPointsRemaining.Text = "2 points Remaining";
    +                }
    +                else
    +                {
    +                    lblWindowPointsRemaining.Text = "1 point Remaining";
    +                }
    +                lblWindowPointsRemaining.Text = ConfigurationTool.NUMBER_OF_ZONES - WindowsToAdd.Count() + " Windows remaining";
    +            }
    +            else
    +            {
    +                lblWindowPointsRemaining.Text = "";
    +                lblWindowsRemaining.Text = "";
    +            }
    +            if (Config != null)
    +            {
    +                pbxPreview.Image = Config.MainZone.Draw();
    +                if (Config.MainZone.Zones.Count > 0)
    +                    pbxWindowPreview.Image = Config.MainZone.Zones[0].Draw();
    +            }
    +        }
    +        /// <summary>
    +        /// This will create a new zone but will require two points (one at each opposing sides and corners)
    +        /// </summary>
    +        /// <param name="p1">The first corner (usually top left)</param>
    +        /// <param name="p2">The second corner (usually bottom right)</param>
    +        private void CreateNewZone(Point p1, Point p2)
    +        {
    +            Rectangle dimensions = CreateAbsoluteRectangle(p1, p2);
    +            Config = new ConfigurationTool((Bitmap)pbxPreview.Image, dimensions);
    +            RefreshUI();
    +        }
    +        /// <summary>
    +        /// Creates all the windows with an array of rectangles
    +        /// </summary>
    +        /// <param name="dimensions">An array that contains all the windows bounds and position (expects 9)</param>
    +        private void CreateWindows(List<Rectangle> dimensions)
    +        {
    +            if (Config != null)
    +            {
    +                Config.AddWindows(dimensions);
    +            }
    +        }
    +        /// <summary>
    +        /// Will just change the main URL
    +        /// </summary>
    +        /// <param name="sender"></param>
    +        /// <param name="e"></param>
    +        private void tbxGpUrl_TextChanged(object sender, EventArgs e)
    +        {
    +            GrandPrixUrl = tbxGpUrl.Text;
    +        }
    +        /// <summary>
    +        /// Adds a driver into the driver list
    +        /// </summary>
    +        /// <param name="sender"></param>
    +        /// <param name="e"></param>
    +        private void btnAddDriver_Click(object sender, EventArgs e)
    +        {
    +            string newDriver = tbxDriverName.Text;
    +            DriverList.Add(newDriver);
    +            tbxDriverName.Text = "";
    +            RefreshUI();
    +        }
    +        /// <summary>
    +        /// Removes a driver from the drivers list
    +        /// </summary>
    +        /// <param name="sender"></param>
    +        /// <param name="e"></param>
    +        private void btnRemoveDriver_Click(object sender, EventArgs e)
    +        {
    +            if (lsbDrivers.SelectedIndex >= 0)
    +            {
    +                DriverList.RemoveAt(lsbDrivers.SelectedIndex);
    +            }
    +            RefreshUI();
    +        }
    +        /// <summary>
    +        /// Will change everything that needs to be changed for when the users starts or stops creating a zone
    +        /// </summary>
    +        private void SwitchZoneCreation()
    +        {
    +            if (CreatingZone)
    +            {
    +                CreatingZone = false;
    +                lblZonePointsRemaning.Text = "";
    +            }
    +            else
    +            {
    +                CreatingZone = true;
    +
    +                if (Config != null)
    +                    Config.ResetMainZone();
    +
    +                if (CreatingWindow)
    +                    SwitchWindowCreation();
    +
    +                if (Emulator != null && Emulator.Ready)
    +                {
    +                    Config = null;
    +                    pbxPreview.Image = Emulator.Screenshot();
    +                }
    +
    +                ZoneP1 = new Point(-1, -1);
    +                ZoneP2 = new Point(-1, -1);
    +
    +                lblZonePointsRemaning.Text = "2 Points left";
    +            }
    +            RefreshUI();
    +        }
    +        /// <summary>
    +        /// Will change everything that needs to be changed for when the users starts or stops creating a window
    +        /// </summary>
    +        private void SwitchWindowCreation()
    +        {
    +            if (CreatingWindow)
    +            {
    +                CreatingWindow = false;
    +            }
    +            else
    +            {
    +                CreatingWindow = true;
    +
    +                if (Config != null)
    +                    Config.ResetWindows();
    +
    +                if (CreatingZone)
    +                    SwitchZoneCreation();
    +
    +                WindowP1 = new Point(-1, -1);
    +                WindowP2 = new Point(-1, -1);
    +
    +                WindowsToAdd = new List<Rectangle>();
    +            }
    +            RefreshUI();
    +        }
    +        private void btnCreatZone_Click(object sender, EventArgs e)
    +        {
    +            SwitchZoneCreation();
    +        }
    +        private void btnCreateWindow_Click(object sender, EventArgs e)
    +        {
    +            SwitchWindowCreation();
    +        }
    +        /// <summary>
    +        /// If the user is supposed to create a zone, will record the position of the clicks
    +        /// </summary>
    +        /// <param name="sender"></param>
    +        /// <param name="e"></param>
    +        private void pbxMain_MouseClick(object sender, MouseEventArgs e)
    +        {
    +            if (CreatingZone && pbxPreview.Image != null)
    +            {
    +                //Point coordinates = pbxMain.PointToClient(new Point(MousePosition.X, MousePosition.Y));
    +                Point coordinates = e.Location;
    +                float xOffset = (float)pbxPreview.Image.Width / (float)pbxPreview.Width;
    +                float yOffset = (float)pbxPreview.Image.Height / (float)pbxPreview.Height;
    +                Point newPoint = new Point(Convert.ToInt32((float)coordinates.X * xOffset), Convert.ToInt32((float)coordinates.Y * yOffset));
    +
    +                //MessageBox.Show("Coordinates" + Environment.NewLine + "Old : " + coordinates.ToString() + Environment.NewLine + "New : " + newPoint.ToString());
    +
    +                if (ZoneP1 == new Point(-1, -1))
    +                {
    +                    ZoneP1 = newPoint;
    +                }
    +                else
    +                {
    +                    ZoneP2 = newPoint;
    +                    CreateNewZone(ZoneP1, ZoneP2);
    +                    SwitchZoneCreation();
    +                }
    +                RefreshUI();
    +            }
    +        }
    +        /// <summary>
    +        /// If the user is supposed to create a window, will record the position of the clicks
    +        /// </summary>
    +        /// <param name="sender"></param>
    +        /// <param name="e"></param>
    +        private void pbxDriverZone_MouseClick(object sender, MouseEventArgs e)
    +        {
    +            if (CreatingWindow && pbxWindowPreview.Image != null)
    +            {
    +                Point coordinates = e.Location;
    +
    +                float xOffset = (float)pbxWindowPreview.Image.Width / (float)pbxWindowPreview.Width;
    +                float yOffset = (float)pbxWindowPreview.Image.Height / (float)pbxWindowPreview.Height;
    +
    +                Point newPoint = new Point(Convert.ToInt32((float)coordinates.X * xOffset), Convert.ToInt32((float)coordinates.Y * yOffset));
    +
    +                if (WindowP1 == new Point(-1, -1))
    +                {
    +                    WindowP1 = newPoint;
    +                }
    +                else
    +                {
    +                    WindowP2 = newPoint;
    +                    WindowsToAdd.Add(CreateAbsoluteRectangle(WindowP1, WindowP2));
    +
    +                    if (WindowsToAdd.Count < ConfigurationTool.NUMBER_OF_ZONES)
    +                    {
    +                        WindowP1 = new Point(-1, -1);
    +                        WindowP2 = new Point(-1, -1);
    +                    }
    +                    else
    +                    {
    +                        WindowP1 = new Point(WindowP1.X, 0);
    +                        WindowP2 = new Point(WindowP2.X, pbxWindowPreview.Image.Height);
    +                        CreateWindows(WindowsToAdd);
    +                        SwitchWindowCreation();
    +                    }
    +                }
    +                RefreshUI();
    +            }
    +        }
    +        /// <summary>
    +        /// Creates a rectangle without caring about the order of the points.
    +        /// </summary>
    +        /// <param name="p1">First point. Can be top left or bottom right</param>
    +        /// <param name="p2">Second point. Can be top left or bottom right</param>
    +        /// <returns></returns>
    +        private Rectangle CreateAbsoluteRectangle(Point p1, Point p2)
    +        {
    +            Point newP1 = new Point();
    +            Point newP2 = new Point();
    +
    +            //Kind of a pain to have to do this but this lets the user do stupid things without the app crashing
    +            if (p1.X < p2.X)
    +            {
    +                newP1.X = p1.X;
    +                newP2.X = p2.X;
    +            }
    +            else
    +            {
    +                newP1.X = p2.X;
    +                newP2.X = p1.X;
    +            }
    +
    +            if (p1.Y < p2.Y)
    +            {
    +                newP1.Y = p1.Y;
    +                newP2.Y = p2.Y;
    +            }
    +            else
    +            {
    +                newP1.Y = p2.Y;
    +                newP2.Y = p1.Y;
                 }
    -            else
    -            {
    -                pbxPreview.Image = Emulator.Screenshot();
    -            }
    -            btnRefresh.Enabled = true;
    -            btnCreatZone.Enabled = true;
    -            btnCreateWindow.Enabled = true;
    -            btnResetDriver.Enabled = true;
    -            btnRefresh.Text = "Get a newer image";
    -        }
    -
    -        private void Settings_FormClosing(object sender, FormClosingEventArgs e)
    -        {
    -            if (Emulator != null)
    +            return new Rectangle(newP1.X, newP1.Y, newP2.X - newP1.X, newP2.Y - newP1.Y);
    +        }
    +        /// <summary>
    +        /// Will refresh the emulator and will controll some of the controls
    +        /// </summary>
    +        /// <param name="sender"></param>
    +        /// <param name="e"></param>
    +        private async void btnRefresh_Click(object sender, EventArgs e)
    +        {
    +            btnRefresh.Enabled = false;
    +            btnCreatZone.Enabled = false;
    +            btnCreateWindow.Enabled = false;
    +            btnResetDriver.Enabled = false;
    +            if (Emulator == null || Emulator.GrandPrixUrl != tbxGpUrl.Text)
                 {
    -                Emulator.Stop();
    +                Emulator = new F1TVEmulator(tbxGpUrl.Text);
                 }
    -            Emulator = null;
    -            GC.Collect();
    -        }
    -
    -        private void btnResetDriver_Click(object sender, EventArgs e)
    -        {
    -            if (Emulator != null)
    -            {
    -                Emulator.ResetDriver();
    -            }
    -        }
    -
    -        private void btnSavePreset_Click(object sender, EventArgs e)
    -        {
    -            string presetName = tbxPresetName.Text;
    -            if (Config != null)
    -            {
    -                Config.SaveToJson(DriverList, presetName);
    -            }
    -            RefreshUI();
    -        }
    -
    -        private void lsbPresets_SelectedIndexChanged(object sender, EventArgs e)
    -        {
    -            SelectedConfigFile = (string)lsbPresets.Items[lsbPresets.SelectedIndex];
    -        }
    -
    -        private void btnLoadPreset_Click(object sender, EventArgs e)
    -        {
    -            //MessageBox.Show(lsbPresets.SelectedIndex.ToString());
    -            if (lsbPresets.SelectedIndex >= 0 && pbxPreview.Image != null)
    -            {
    -                try
    -                {
    -                    string fileName = lsbPresets.Items[lsbPresets.SelectedIndex].ToString();
    -                    Reader reader = new Reader(fileName, (Bitmap)pbxPreview.Image, false);
    -                    //MainZones #0 is the big main zone containing driver zones
    -                    Config = new ConfigurationTool((Bitmap)pbxPreview.Image, reader.MainZones[0].Bounds);
    -                    Config.MainZone = reader.MainZones[0];
    -                    DriverList = reader.Drivers;
    -                    SelectedConfigFile = fileName;
    -                }
    -                catch (Exception ex)
    -                {
    -                    MessageBox.Show("Could not load the settings error :" + ex);
    -                }
    -                RefreshUI();
    -            }
    -        }
    -
    -        private void Settings_Resize(object sender, EventArgs e)
    -        {
    -            int xDiff = this.Width - oldSize.Width;
    -            int yDiff = this.Height - oldSize.Height;
    -
    -            gpbxPreview.Size = new Size(oldGpbxPreviewSize.Width + xDiff, oldGpbxPreviewSize.Height + yDiff);
    -            gpbxWindowPreview.Size = new Size(oldGpbxWindowPreviewSize.Width + xDiff, oldGpbxWindowPreviewSize.Height);
    -            pbxPreview.Size = new Size(oldPbxPreviewSize.Width + xDiff, oldPbxPreviewSize.Height + yDiff);
    -            pbxWindowPreview.Size = new Size(oldPbxWindowPreviewSize.Width + xDiff, oldPbxWindowPreviewSize.Height);
    -        }
    -
    -        private void btnDeletePreset_Click(object sender, EventArgs e)
    -        {
    -            int selectedIndex = lsbPresets.SelectedIndex;
    -            if (selectedIndex >= 0)
    -            {
    -                string fileName = lsbPresets.Items[selectedIndex].ToString();
    -                if (File.Exists(fileName))
    -                {
    -                    File.Delete(fileName);
    -                    RefreshUI();
    -                }
    -                else
    -                {
    -                    MessageBox.Show("Could not delete the preset because it does not exists");
    -                }
    -            }
    -        }
    -
    -        private void removeBorders(object sender, PaintEventArgs e)
    -        {
    -            GroupBox gpbx = (GroupBox)sender;
    -
    -            using (Pen pen = new Pen(gpbx.BackColor, 50))
    -            {
    -                e.Graphics.DrawRectangle(pen, 0, 0, gpbx.Width - 1, gpbx.Height - 1);
    -                e.Graphics.DrawRectangle(pen, 0, 0, gpbx.Width - 1, gpbx.Height - 1);
    -            }
    -
    -            using (var brush = new SolidBrush(gpbx.ForeColor))
    -            {
    -                var textPosition = new Point(5, 0); // Adjust the X and Y values as needed
    -                e.Graphics.DrawString(gpbx.Text, gpbx.Font, brush, textPosition);
    -            }
    -        }
    -    }
    -}
    +
    +            if (!Emulator.Ready)
    +            {
    +                Task<int> start = Task.Run(() => Emulator.Start());
    +                int errorCode = await start;
    +                if (errorCode != 0)
    +                {
    +                    string message;
    +                    switch (errorCode)
    +                    {
    +                        case 100:
    +                            message = "Error " + errorCode + " Could not recover cookies. It could be because of an improper installation of python or bad cookies in the chrome database. Please try to log on to the F1TV using chrome again";
    +                            break;
    +                        case 101:
    +                            message = "Error " + errorCode + " Could not start the driver. It could be because an other instance is runnin make sure you closed them all before trying again";
    +                            break;
    +                        case 102:
    +                            message = "Error " + errorCode + " Could not navigate on the F1TV site. Make sure the correct URL has been given and that you logged from chrome. It can take a few minutes to update";
    +                            break;
    +                        case 103:
    +                            message = "Error " + errorCode + " The url is not a valid url";
    +                            break;
    +                        case 104:
    +                            message = "Error " + errorCode + " The url is not a valid url";
    +                            break;
    +                        case 105:
    +                            message = "Error " + errorCode + " There has been an error trying to emulate button presses. Please try again";
    +                            break;
    +                        case 106:
    +                            message = "Error " + errorCode + " There has been an error trying to emulate button presses. Please try again";
    +                            break;
    +                        default:
    +                            message = "Could not start the emulator Error " + errorCode;
    +                            break;
    +                    }
    +                    MessageBox.Show(message);
    +                    btnRefresh.Text = "Retry";
    +                    btnLoadPreset.Enabled = false;
    +                    btnDeletePreset.Enabled = false;
    +                    btnSavePreset.Enabled = false;
    +                    btnCreatZone.Enabled = false;
    +                    btnCreateWindow.Enabled = false;
    +                    btnResetDriver.Enabled = false;
    +                }
    +                else
    +                {
    +                    btnRefresh.Text = "Get a newer image";
    +                    pbxPreview.Image = Emulator.Screenshot();
    +
    +                    btnLoadPreset.Enabled = true;
    +                    btnDeletePreset.Enabled = true;
    +                    btnSavePreset.Enabled = true;
    +                    btnCreatZone.Enabled = true;
    +                    btnCreateWindow.Enabled = true;
    +                    btnResetDriver.Enabled = true;
    +                }
    +            }
    +            else
    +            {
    +                pbxPreview.Image = Emulator.Screenshot();
    +                //I know im repeating myself. This part could use a bool variable that allows those buttons to be displayed but it was the fastest way to fix a bad behaviour in the app
    +                btnLoadPreset.Enabled = true;
    +                btnDeletePreset.Enabled = true;
    +                btnSavePreset.Enabled = true;
    +                btnCreatZone.Enabled = true;
    +                btnCreateWindow.Enabled = true;
    +                btnResetDriver.Enabled = true;
    +            }
    +            btnRefresh.Enabled = true;
    +        }
    +        /// <summary>
    +        /// Will try to close the headless browser so the main form can launch a new one safely
    +        /// </summary>
    +        /// <param name="sender"></param>
    +        /// <param name="e"></param>
    +        private void Settings_FormClosing(object sender, FormClosingEventArgs e)
    +        {
    +            if (Emulator != null)
    +            {
    +                Emulator.Stop();
    +            }
    +            Emulator = null;
    +            GC.Collect();
    +        }
    +        /// <summary>
    +        /// Will reset the drivers
    +        /// </summary>
    +        /// <param name="sender"></param>
    +        /// <param name="e"></param>
    +        private void btnResetDriver_Click(object sender, EventArgs e)
    +        {
    +            if (Emulator != null)
    +            {
    +                Emulator.ResetDriver();
    +            }
    +        }
    +        /// <summary>
    +        /// Saves the current presets as a new JSON file
    +        /// </summary>
    +        /// <param name="sender"></param>
    +        /// <param name="e"></param>
    +        private void btnSavePreset_Click(object sender, EventArgs e)
    +        {
    +            string presetName = tbxPresetName.Text;
    +            if (Config != null)
    +            {
    +                Config.SaveToJson(DriverList, presetName);
    +            }
    +            RefreshUI();
    +        }
    +        /// <summary>
    +        /// Will change the selected preset. Usefull if you close this page because then the main form will keep in memory your last choice
    +        /// </summary>
    +        /// <param name="sender"></param>
    +        /// <param name="e"></param>
    +        private void lsbPresets_SelectedIndexChanged(object sender, EventArgs e)
    +        {
    +            if (lsbPresets.SelectedIndex >= 0)
    +                SelectedConfigFile = (string)lsbPresets.Items[lsbPresets.SelectedIndex];
    +        }
    +        /// <summary>
    +        /// Will load an existing presets
    +        /// </summary>
    +        /// <param name="sender"></param>
    +        /// <param name="e"></param>
    +        private void btnLoadPreset_Click(object sender, EventArgs e)
    +        {
    +            //MessageBox.Show(lsbPresets.SelectedIndex.ToString());
    +            if (lsbPresets.SelectedIndex >= 0 && pbxPreview.Image != null)
    +            {
    +                try
    +                {
    +                    string fileName = lsbPresets.Items[lsbPresets.SelectedIndex].ToString();
    +                    Reader reader = new Reader(fileName, (Bitmap)pbxPreview.Image, false);
    +                    //MainZones #0 is the big main zone containing driver zones
    +                    Config = new ConfigurationTool((Bitmap)pbxPreview.Image, reader.MainZones[0].Bounds);
    +                    Config.MainZone = reader.MainZones[0];
    +                    DriverList = reader.Drivers;
    +                    SelectedConfigFile = fileName;
    +                }
    +                catch (Exception ex)
    +                {
    +                    MessageBox.Show("Could not load the settings error :" + ex);
    +                }
    +                RefreshUI();
    +            }
    +        }
    +        /// <summary>
    +        /// This will be called everytime the form resizes. Here we are making the form responsive
    +        /// </summary>
    +        /// <param name="sender"></param>
    +        /// <param name="e"></param>
    +        private void Settings_Resize(object sender, EventArgs e)
    +        {
    +            int xDiff = this.Width - oldSize.Width;
    +            int yDiff = this.Height - oldSize.Height;
    +
    +            gpbxPreview.Size = new Size(oldGpbxPreviewSize.Width + xDiff, oldGpbxPreviewSize.Height + yDiff);
    +            gpbxWindowPreview.Size = new Size(oldGpbxWindowPreviewSize.Width + xDiff, oldGpbxWindowPreviewSize.Height);
    +            pbxPreview.Size = new Size(oldPbxPreviewSize.Width + xDiff, oldPbxPreviewSize.Height + yDiff);
    +            pbxWindowPreview.Size = new Size(oldPbxWindowPreviewSize.Width + xDiff, oldPbxWindowPreviewSize.Height);
    +        }
    +        /// <summary>
    +        /// Will delete an existing preset
    +        /// </summary>
    +        /// <param name="sender"></param>
    +        /// <param name="e"></param>
    +        private void btnDeletePreset_Click(object sender, EventArgs e)
    +        {
    +            int selectedIndex = lsbPresets.SelectedIndex;
    +            if (selectedIndex >= 0)
    +            {
    +                string fileName = lsbPresets.Items[selectedIndex].ToString();
    +                if (File.Exists(fileName))
    +                {
    +                    File.Delete(fileName);
    +                    RefreshUI();
    +                }
    +                else
    +                {
    +                    MessageBox.Show("Could not delete the preset because it does not exists");
    +                }
    +            }
    +        }
    +        /// <summary>
    +        /// Sketchy method that is used to remove the borders from groupboxes... Yes its dumb but I dont think there is any other way
    +        /// </summary>
    +        /// <param name="sender"></param>
    +        /// <param name="e"></param>
    +        private void removeBorders(object sender, PaintEventArgs e)
    +        {
    +            GroupBox gpbx = (GroupBox)sender;
    +
    +            using (Pen pen = new Pen(gpbx.BackColor, 50))
    +            {
    +                e.Graphics.DrawRectangle(pen, 0, 0, gpbx.Width - 1, gpbx.Height - 1);
    +                e.Graphics.DrawRectangle(pen, 0, 0, gpbx.Width - 1, gpbx.Height - 1);
    +            }
    +
    +            using (var brush = new SolidBrush(gpbx.ForeColor))
    +            {
    +                var textPosition = new Point(5, 0); // Adjust the X and Y values as needed
    +                e.Graphics.DrawString(gpbx.Text, gpbx.Font, brush, textPosition);
    +            }
    +        }
    +    }
    +}
     
    diff --git a/site/Code/SqliteStorage.html b/site/Code/SqliteStorage.html index 04a5ad4..8a3ee05 100644 --- a/site/Code/SqliteStorage.html +++ b/site/Code/SqliteStorage.html @@ -169,16 +169,6 @@ Form1.cs
  • -
  • - - Program.cs - -
  • -
  • - - Settings.Designer.cs - -
  • @@ -260,10 +250,10 @@

    SqliteStorage.cs

    /// Author : Maxime Rohmer
    -/// Date : 30/05/2023
    +/// Date : 09/08/2023
     /// File : SqliteStorage.cs
     /// Brief : Class that controls the sqlite database
    -/// Version : Alpha 1.0
    +/// Version : Beta 1.0
     
     using System;
     using System.Collections.Generic;
    @@ -528,7 +518,7 @@
     
     
    diff --git a/site/Code/Window.html b/site/Code/Window.html index e8f8375..823433c 100644 --- a/site/Code/Window.html +++ b/site/Code/Window.html @@ -170,16 +170,6 @@
  • - - Program.cs - -
  • -
  • - - Settings.Designer.cs - -
  • -
  • SqliteStorage.cs @@ -260,10 +250,10 @@

    Window.cs

    /// Author : Maxime Rohmer
    -/// Date : 30/05/2023
    +/// Date : 09/06/2023
     /// File : Window.cs
     /// Brief : Default Window object that is mainly expected to be inherited.
    -/// Version : Alpha 1.0
    +/// Version : Beta 1.0
     
     using System;
     using System.Collections.Generic;
    diff --git a/site/Code/Zone.html b/site/Code/Zone.html
    index 7278424..c8c9a82 100644
    --- a/site/Code/Zone.html
    +++ b/site/Code/Zone.html
    @@ -170,16 +170,6 @@
           
     
  • - - Program.cs - -
  • -
  • - - Settings.Designer.cs - -
  • -
  • SqliteStorage.cs @@ -260,10 +250,10 @@

    Zone.cs

    /// Author : Maxime Rohmer
    -/// Date : 30/05/2023
    +/// Date : 09/06/2023
     /// File : Zone.cs
     /// Brief : Class that contains all the methods and infos for a zone. This is designed to be potentially be inherited.
    -/// Version : Alpha 1.0
    +/// Version : Beta 1.0
     
     using System;
     using System.Collections.Generic;
    diff --git a/site/Code/recoverCookiesCSV.html b/site/Code/recoverCookiesCSV.html
    index 14895f2..e527d45 100644
    --- a/site/Code/recoverCookiesCSV.html
    +++ b/site/Code/recoverCookiesCSV.html
    @@ -170,16 +170,6 @@
           
     
  • - - Program.cs - -
  • -
  • - - Settings.Designer.cs - -
  • -
  • SqliteStorage.cs diff --git a/site/Images/Figma/ZonesStuctureDiagram.png b/site/Images/Figma/ZonesStuctureDiagram.png new file mode 100644 index 0000000000000000000000000000000000000000..f2a125caa56986078d28a1dbe66fe9a8d483085d GIT binary patch literal 80871 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

    DbKl-vL$~r!kQmKx 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 W`bw4x_YRN4_2)U`KMKy+-}xU2^;Zi3 literal 0 HcmV?d00001 diff --git a/docs/Images/Figma/ZonesStuctureDiagram.png:Zone.Identifier b/site/Images/Figma/ZonesStuctureDiagram.png:Zone.Identifier similarity index 100% rename from docs/Images/Figma/ZonesStuctureDiagram.png:Zone.Identifier rename to site/Images/Figma/ZonesStuctureDiagram.png:Zone.Identifier diff --git a/site/Images/Photos/PCThermals.jpg b/site/Images/Photos/PCThermals.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ce36eb98b2d2f8a46fbd26fc47e2b4e87ed729cc GIT binary patch literal 110696 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�gKbq~&&kr86z>T*!Ou`eXc02Pr>Q@kNG;d4 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 literal 0 HcmV?d00001 diff --git a/site/Images/Screens/CPUUsage.png b/site/Images/Screens/CPUUsage.png new file mode 100644 index 0000000000000000000000000000000000000000..9cbbb25e1b23c124b515cd1442f71c2b5bbd1197 GIT binary patch literal 164322 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/ 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%0AX^(HW3}pOevj9lgP`hmiZ1AbcLB(%zOz98*RVB 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

    (oZ+5uXlJ8giTW};L?kcQ`+q-g6z#lmktXI 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 literal 0 HcmV?d00001 diff --git a/site/Images/Screens/GPTLogo.png b/site/Images/Screens/GPTLogo.png new file mode 100644 index 0000000000000000000000000000000000000000..521c14ad9a3c6053fe43459319518f70b7a526d1 GIT binary patch literal 11417 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 Jtpb_`{10zj#XSH3 literal 0 HcmV?d00001 diff --git a/docs/Images/Screens/GPTLogo.png:Zone.Identifier b/site/Images/Screens/GPTLogo.png:Zone.Identifier similarity index 100% rename from docs/Images/Screens/GPTLogo.png:Zone.Identifier rename to site/Images/Screens/GPTLogo.png:Zone.Identifier diff --git a/site/Images/Screens/MemoryUtilisation.png b/site/Images/Screens/MemoryUtilisation.png new file mode 100644 index 0000000000000000000000000000000000000000..e88efbc4089c42a66e1fa846214f82031c285a5d GIT binary patch literal 18353 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 PJ3X1Jxz literal 0 HcmV?d00001 diff --git a/site/ManuelUtilisateur.html b/site/ManuelUtilisateur.html index c9ba2a3..f928026 100644 --- a/site/ManuelUtilisateur.html +++ b/site/ManuelUtilisateur.html @@ -294,16 +294,6 @@
  • - - Program.cs - -
  • -
  • - - Settings.Designer.cs - -
  • -
  • SqliteStorage.cs diff --git a/site/index.html b/site/index.html index 0a0f3ad..6c78617 100644 --- a/site/index.html +++ b/site/index.html @@ -362,7 +362,7 @@
  • - Python? + Python ?
  • @@ -392,7 +392,7 @@

    Différences sur le cahier des charges


    -

    Ici je vais parler de l'étât du projet à la date du 12 Juin 2023.

    -

    A cette date, le projet est fonctionel mais comporte quelques différences avec le cahier des charges original. Je vais expliquer non seulement ces différences mais aussi les raisons qui font qu'elles sont la.

    -

    Pour bien comprendre les différences il faut s'en réfèrer au cahier des charges original.

    -

    L'application doit être "Un outil de style compagnon sous forme d'application C# Windows Form qui récupère en temps réel les informations de la course et affiche les informations les plus importantes". C'est ca la phrase la plus importante dans tout le CDC. Et je pense que très honnêtement, ce cahier des charges est rempli !

    -

    L'application actuellement disponible sur le répo GIT est une application de style compagnion Windows Forms qui récupère les infos de la F1TV en temps réel et elle affiche les informations qu'elle trouve importante. Donc je dirais que l'objectif général est remplis.

    -

    Maintenant c'est dans les détails que cela pêche.

    -

    Il est mentionné trois exemples d'infos à suivre je cite :

    +

    Ici, je vais parler de l'état du projet à la date du 12 Juin 2023.

    +

    À cette date, le projet est fonctionnel, mais comporte quelques différences avec le cahier des charges original. Je vais expliquer non seulement ces différences, mais aussi les raisons qui font qu'elles sont là.

    +

    Pour bien comprendre les différences, il faut s'en référer au cahier des charges original.

    +

    L'application doit être "Un outil de style compagnon sous forme d'application C# Windows Form qui récupère en temps réel les informations de la course et affiche les informations les plus importantes". C'est ça la phrase la plus importante dans tout le CDC. Et je pense que très honnêtement, ce cahier des charges est rempli !

    +

    L'application actuellement disponible sur le repos GIT est une application de style compagnion Windows Forms qui récupère les infos de la F1TV en temps réel et elle affiche les informations qu'elle trouve importante. Donc, je dirais que l'objectif général est rempli.

    +

    Maintenant, c'est dans les détails que cela pêche.

    +

    Il est mentionné trois exemples d'infos à suivre, je cite :

      -
    • "Les pilotes qui sont proches (moins de 1-2 secondes qui sont donc en train de se battre)."
    • +
    • "Les pilotes qui sont proches (moins de 1-2 secondes qui sont ainsi en train de se battre)."
    • "Les pilotes qui améliorent leur temps au tour et ceux qui perdent le plus de temps"
    • "Le classement pondéré tenant compte des futurs arrêts au stand"

    résultats :

      -
    1. Dans l'application on peut effectivement voir les pilotes proches (Ce sont ceux qui sont à moins de 3 secondes dans le version finale)
    2. -
    3. Dans l'application on peut aussi voir un affichage qui permet de voir les pilotes les plus rapides et les plus lents sur le circuit.
    4. -
    5. On ne peut en revanche pas voir de classement pondéré selon les arrêts aux stands car l'application a du mal à detecter des arrêts.
    6. +
    7. Dans l'application, on peut effectivement voir les pilotes proches (Ce sont ceux qui sont à moins de 3 secondes dans le version finale)
    8. +
    9. Dans l'application, on peut aussi voir un affichage qui permet de voir les pilotes les plus rapides et les plus lents sur le circuit.
    10. +
    11. On ne peut en revanche pas voir de classement pondéré selon les arrêts aux stands, car l'application a du mal à détecter des arrêts.
    -

    Ensuite pour ce qui est des prédictions il n'y en a aucunes comme ca c'est simple.

    -

    Si on ne regarde que de très loin le CDC et le projet final on pourrait dire que c'est plutôt décevant car il manque beaucoup de choses comme les prédictions et certains affichages.

    -

    On peut aussi se dire ca en comparant la maquette du CDC et le résultat final.

    +

    Ensuite pour ce qui est des prédictions, il n'y en a aucunes comme ça, c'est simple.

    +

    Si on ne regarde que de très loin le CDC et le projet final, on pourrait dire que c'est plutôt décevant puisqu'il manque beaucoup de choses comme les prédictions et certains affichages.

    +

    On peut aussi se dire ça en comparant la maquette du CDC et le résultat final.

    "Maquette originale du projet faite sur Figma"
    @@ -1625,22 +1959,22 @@ La raison la plus probable étant qu'Amazon avec son service AWS propose exactem
    "Maquette originale du projet faite sur Figma"
    -

    Clairement un oeuil non avisé pourrait être très décu et pourrait dire que c'est un echec.

    -

    Et moi je vais vous expliquer pourquoi au contraire c'est un total succès.

    -

    Déja, la beauté de l'interface est très difficile a répliquer en Windows Forms et il faudrait plus d'une semaine de travail pour arriver à quelque chose qui pourrait ressembler un tout petit peu à la maquette.

    -

    Ensuite, si on regarde bien, on a quand même une application qui nous permet de suivre les informations de la course et qui calcule des choses à notre place. C'est déja une grosse plus-value par rapport à la page Data de la F1TV.

    -

    Et finalement, les prédictions, les affichages et le style ce sont les choses les moins compliquées du projet. On ne se rends pas compte que pour simplement afficher les 20 pilotes dans le bon ordre il faut énormément de travail.

    -

    Voici une petite représentation graphique de la quantité de travail nescessaire pour en arriver à l'étât actuel du projet :

    +

    Clairement, un œil non avisé pourrait être très déçu et pourrait dire que c'est un échec.

    +

    Et moi je vais vous expliquer pourquoi, au contraire c'est un total succès.

    +

    Déjà, la beauté de l'interface est très difficile à répliquer en Windows Forms et il faudrait plus d'une semaine de travail pour arriver à quelque chose qui pourrait ressembler un tout petit peu à la maquette.

    +

    Ensuite, si on regarde bien, on a quand même une application qui nous permet de suivre les informations de la course et qui calcule des choses à notre place. C'est déjà une grosse plus-value par rapport à la page Data de la F1TV.

    +

    Et finalement, les prédictions, les affichages et le style, ce sont les choses les moins compliquées du projet. On ne se rend pas compte que pour simplement afficher les 20 pilotes dans le bon ordre, il faut énormément de travail.

    +

    Voici une petite représentation graphique de la quantité de travail nécessaire pour en arriver à l'état actuel du projet :

    "Graphique représentant la quantité de travail requise"
    -

    Pour en arriver à un affichage il a fallu récupèrer automatiquement les images en utilisant un browser headless ce qui a pris un temps fou à mettre en place et il a fallu surtout lire les informations que l'on recevait des images.

    -

    J'ai passé presque 90% du temps de mon projet à développer des choses qui permettront ensuite de faire de l'affichage.

    -

    Le fait qu'il y aie quoi que ce soit de logique qui s'affiche cela veut dire que TOUT LE RESTE fonctionne ! Le moindre soucis à la récupération des images, ou surtout à la reconnaissance de texte et de chiffres et l'affichage est ruiné.

    -

    Si j'avais passé ne serait-ce qu'une semaine de plus juste sur l'affichage le résultat final n'aurait rien à voir.

    -

    Le soucis c'est simplement que le cahier des charges ne parle pas du tout du reste du projet et ne parle que du résultat final.

    -

    Pour toutes ces raisons je dirais que le CDC était trop superficiel mais que l'application est conforme à l'idée générale de ce dernier et qu'il serait très facile de la rendre parfaitement conforme maintenant que tout le travail de fond a été fait et fonctionne et je pense donc que c'est un succès.

    +

    Pour en arriver à un affichage, il a fallu récupérer automatiquement les images en utilisant un browser headless ce qui a pris un temps fou à mettre en place et il a fallu surtout lire les informations que l'on recevait des images.

    +

    J'ai passé presque 90 % du temps de mon projet à développer des choses qui permettront ensuite de faire de l'affichage.

    +

    Le fait qu'il y ait quoi que ce soit de logique qui s'affiche, cela veut dire que TOUT LE RESTE fonctionne ! Le moindre souci à la récupération des images, ou surtout à la reconnaissance de texte et de chiffres, et l'affichage est ruiné.

    +

    Si j'avais passé ne serait-ce qu'une semaine de plus juste sur l'affichage, le résultat final n'aurait rien à voir.

    +

    Le souci, c'est simplement que le cahier des charges ne parle pas du tout du reste du projet et ne parle que du résultat final.

    +

    Pour toutes ces raisons, je dirais que le CDC était trop superficiel, mais que l'application est conforme à l'idée générale de ce dernier et qu'il serait très facile de la rendre parfaitement conforme maintenant que tout le travail de fond a été fait et fonctionne et je pense donc que c'est un succès.

    Planning prévisionnel


    Mes suiveurs m'ont demandé un planning de type GANTT pour ce travail de diplôme

    @@ -1668,15 +2002,15 @@ La raison la plus probable étant qu'Amazon avec son service AWS propose exactem

    Il y a déjà des croquis de poster et j'ai clairement prévu de travailler sur ça pendant les vacances alors, je n'ai mis qu'un jour et je l'ai placé juste avant le rendu de ce dernier.

    DT2 Documentation Analyse de l'existant (2)

    Cette tâche est dédiée à l'écriture de la documentation et plus précisément de l'analyse de l'existant.

    -

    Comme il y a pas mal de technologies utilisées dans mon projet, j'aimerais faire correctement un vrai debrief de pourquoi j'ai utilisé l'une ou l'autre alors, j'ai assigné deux jours dessus.

    +

    Comme il y a pas mal de technologies utilisées dans mon projet, j'aimerais faire correctement un vrai debrief de pourquoi j'ai utilisé l'une ou l'autre, alors, j'ai assigné deux jours dessus.

    DT3 Documentation Analyse organique (5)

    Cette tâche est la plus grosse dans la catégorie documentation. Il s'agit de documenter comment l'application fonctionne.

    -

    J'y ai mis cinq jours et je pense que c'est un minimum car c'est dans cette tâche que je vais devoir détailler exactement comment fonctionne chaque partie du projet.

    +

    J'y ai mis cinq jours et je pense que c'est un minimum, car c'est dans cette tâche que je vais devoir détailler exactement comment fonctionne chaque partie du projet.

    Ces cinq jours sont éparpillés sur le projet en général à la fin du développement de chaque grande partie de projet. Le but est de ne rien oublier et de ne pas avoir à tout faire en même temps.

    DT4 Documentation Analyse fonctionnelle (2)

    Cette tâche est déjà moins grosse, elle consiste à documenter le fonctionnement de l'application et comment utiliser les composants que j'ai développés.

    Je l'ai mis en fin de projet, car comme j'ai l'habitude de faire des analyses fonctionnelles plutôt précises, le moindre changement dans l'UI peut tout rendre obsolète.

    -

    J'y ai mis deux jours, car j'aimerais correctement documenter avec de bonnes photos et scénarios pour qu'on puisse voir toutes les possibilités de l'application.

    +

    J'y ai mis deux jours, puisque j'aimerais correctement documenter avec de bonnes photos et scénarios pour qu'on puisse voir toutes les possibilités de l'application.

    DT5 Documentation Tests (1)

    Cette tâche est un peu plus petite qu'elle ne le devrait. Elle concerne la documentation des différents tests. Je n'y ai mis qu'un seul jour, car en réalité les différentes tâches de tests contiennent aussi beaucoup de documentation,

    DT6 Documentation Reste (2)
    @@ -1684,11 +2018,11 @@ La raison la plus probable étant qu'Amazon avec son service AWS propose exactem

    PT

    Rubrique programmation qui contient toutes les tâches qui touchent à la programmation et au développement de l'application.

    PT1 Programmation récupération des images (3)
    -

    Cette tâche est estimée à seulement trois jours, il ne faut pas s'y méprendre, c'est une des tâches les plus dures et lourdes niveaux documentation en explications. Cependant, un POC (Proof Of Concept) assez avancé a déjà été fait et donc cela permet de n'envisager que trois jours, car il suffit de l'implémenter et de la paufinner.

    +

    Cette tâche est estimée à seulement trois jours, il ne faut pas s'y méprendre, c'est une des tâches les plus dures et lourdes au niveau de la documentation et en explications. Cependant, un POC (Proof Of Concept) assez avancé a déjà été fait et donc cela permet de n'envisager que trois jours, car il suffit de l'implémenter et de la peaufiner.

    Cette tâche consiste à prendre en entrée un lien de Grand Prix et de sortir une image tous les x secondes de la page DATA. Cela peut sembler simple, mais pour le faire sans prendre d'espace d'écran et ne demandant pas à l'utilisateur de copier-coller quoi que ce soit où de donner ses identifiants F1TV c'est un challenge.

    -

    Cela peut paraitre curieux alors de mettre cette tâche loin dans le planning même si c'est la première étape du projet. Encore une fois cela s'explique avec le fait qu'il y a déjà un POC qui fonctionne à peu près et que donc préfère commencer avec des tâches plus incertaines dans le cas où elles prendraient plus de temps que prévu.

    +

    Cela peut paraitre curieux alors de mettre cette tâche loin dans le planning même si c'est la première étape du projet. Encore une fois, cela s'explique avec le fait qu'il y a déjà un POC qui fonctionne à peu près et que donc préfère commencer avec des tâches plus incertaines dans le cas où elles prendraient plus de temps que prévu.

    PT2 Programmation OCR (5)
    -

    Cette tâche consiste à développer la partie qui reconnait le texte sur les images. C'est très certainement la tâche qui risque le plus de déborder car c'est celle qui est la plus complexe techniquement puisqu'elle demande non seulement la lecture sur image, mais aussi le développement d'algorithmes de traitement de cette donnée pour être sûr qu'elle a bien été lue.

    +

    Cette tâche consiste à développer la partie qui reconnait le texte sur les images. C'est très certainement la tâche qui risque le plus de déborder, car c'est celle qui est la plus complexe techniquement puisqu'elle demande non seulement la lecture sur image, mais aussi le développement d'algorithmes de traitement de cette donnée pour être sûr qu'elle a bien été lue.

    J'y ai ainsi alloué cinq jours, mais j'espère que j'arriverai à gagner du temps sur les autres pour y allouer plus dans le planning effectif, car je suis convaincu que plus, on y passe du temps, meilleur sera le résultat.

    PT3 Programmation, stockage et modèle (5)

    Cette partie est moins technique, mais concerne le stockage des données que nous retourne la lecture des images. Mais elle va demander de la réflexion et de l'intelligence de programmation, car il faut que cette partie anticipe les besoins de la vue et prépare un terrain fertile qui ne demande pas un refactor quand on passera au développement de la vue.

    @@ -1697,7 +2031,7 @@ La raison la plus probable étant qu'Amazon avec son service AWS propose exactem

    Cette partie peut être horrible comme très facile, cela dépend complètement de la qualité du travail avant. Si le modèle est parfait et que les données sont intègres, cela devrait être plutôt simple de les afficher de manière intéressante. Cependant, cette partie débordera sûrement un peu, car tout le temps gagné avec de bonnes données sera utilisé pour tenter de faire de la prédiction.

    Pour ces raisons, je lui ai assigné également cinq jours de travail et elle doit absolument être faite après le modèle.

    PT5 Programmation mise en commun (3)
    -

    Cette tâche est aussi un petit peu spéciale, car elle regroupe plusieurs choses. En gros, chaque partie de programmation sera sûrement assez indépendante et il faudra à un moment faire un seul projet C# qui contient tout.

    +

    Cette tâche est aussi un petit peu spéciale, car elle regroupe plusieurs choses. En gros, chaque partie de programmation sera assurément assez indépendante et il faudra à un moment faire un seul projet C# qui contient tout.

    Il est difficile d'estimer à quel point cela va être compliqué alors, j'ai été conservateur et j'ai mis trois jours.

    TT

    Cette rubrique contient les tâches qui sont uniquement des tests. La plupart des tâches de programmations contiennent déjà des tests, mais certaines demandent une attention particulière.

    @@ -1712,19 +2046,19 @@ La raison la plus probable étant qu'Amazon avec son service AWS propose exactem

    Alors !

    Ces lignes sont écrites dans les derniers jours du travail de diplôme et j'ai des choses à dire.

    -

    Premièrement je suis plutôt content de mon estimation du travail. Je trouve que j'ai bien estimé la quantité de travail et combien de temps les différentes tâches allaient prendre. La plupart des dépassements sont des imprévus et/ou des allers et retours entre d'autres tâches.

    -

    La raison pour laquelle je suis plutôt content de ma planification, c'est que malgré l'usine à Gaz que représente ce projet et le nombre de soucis que j'ai eu, j'ai quand même pu arriver à un projet qui fonctionne en suivant plutôt fidèlement le planning. Une chose dont je suis plutôt fier c'est la documentation. En ayant développé le squelette de l'app dès le début du projet ca m'a permis d'avancer au fur et à mesure du projet la conscience tranquille.

    -

    Bon c'est bien joli les fleurs mais clairement c'est loin d'être parfait. Au moment de la planification je n'avais pas prévu de faire des allers et retours entre plusieurs tâches. Dans le planning effectif on peut voir que un jour je suis sur la PT3 (Stockage) et la PT5 (regroupement des mini projets en un seul gros). J'aurais peut-être du inverser l'ordre.

    +

    Premièrement, je suis plutôt content de mon estimation du travail. Je trouve que j'ai bien estimé la quantité de travail et combien de temps les différentes tâches allaient prendre. La plupart des dépassements sont des imprévus et/ou des allers et des retours entre d'autres tâches.

    +

    La raison pour laquelle je suis plutôt content de ma planification, c'est que malgré l'usine à Gaz que représente ce projet et le nombre de soucis que j'ai eu, j'ai quand même pu arriver à un projet qui fonctionne en suivant essentiellement fidèlement le planning. Une chose dont je suis assez fier, c'est la documentation. En ayant développé le squelette de l'app dès le début du projet, ça m'a permis d'avancer au fur et à mesure du projet la conscience tranquille.

    +

    Bon, c'est bien joli les fleurs, mais clairement, c'est loin d'être parfait. Au moment de la planification, je n'avais pas prévu de faire des allers et des retours entre plusieurs tâches. Dans le planning effectif, on peut voir qu'un jour, je suis sur la PT3 (Stockage) et la PT5 (regroupement des mini projets en un seul gros). J'aurais peut-être dû inverser l'ordre.

    Mais il y a deux gros soucis dans mon planning :

      -
    • L'ordre des tâches n'était pas bon (mais il a été décidé comme ca pour que les plus grosse difficultées soient faites en premier) ce qui a créé pas mal de soucis. Ex : L'émulateur de la F1TV a été fait très tard et au final les images récupèrées n'étaient pas de la même qualité que ce que j'avais prévu en développant l'OCR en premier.
    • -
    • Les Tests ont été négligés et utilisés comme des jours tampons. Ca c'est la plus grosse erreur de planning. Autant les autres sont pénibles etc... mais n'ont pas forcément compromis la bonne réalisation du projet alors que la les tests ont été mal placés et ont au final été balayés alors que si ils avaient été mieux planifiés ca ne serait pas arrivé.
    • +
    • L'ordre des tâches n'était pas bon (mais il a été décidé comme ça pour que les plus grosses difficultés soient faites en premier) ce qui a créé pas mal de soucis. Ex : L'émulateur de la F1TV a été fait très tard et finalement les images récupérées n'étaient pas de la même qualité que ce que j'avais prévu en développant l'OCR en premier.
    • +
    • Les Tests ont été négligés et utilisés comme des jours tampons. Ça, c'est la plus grosse erreur de planning. Autant les autres sont pénibles, etc. mais n'ont pas forcément compromis la bonne réalisation du projet alors que les tests ont été mal placés et ont finalement été balayés tandis que s'ils avaient été mieux planifiés ça ne serait pas arrivé.

    Solutions :

    -

    L'ordre des tâches a été décidé exprès de cette facon pour éviter de prendre trop de risques. L'idée était qu'en faisant le plus dur au début, je pourrai facilement changer le cahier des charges. J'ai envie de dire que j'aurais dû être plus confiant mais pour être honnête je pense que c'était un mal pour un bien. Je ne pense pas avoir "bien" fait mais je pense que c'est une erreur qui était rentable pour mon niveau de stress dans le projet.

    -

    Par contre les Tests c'est tout simplement une erreur. J'en parle plus en détail dans la partie test de la documentation mais je vais résumer un peu ici. -La documentation a été faite dès le début du projet. J'ai mis en place le squelette pour qu'ensuite il soit simple d'y ajouter au fur et à mesure. J'aurais dur faire exactement pareil avec les tests. Si j'avais fait au moins le squelette des tests au début du projet j'aurais pu beaucoup plus facilement en faire et cela m'aurait fait gagner un temps fou et j'aurais même pu faire du TDD (Test Driven Developpement). Je suis persuadé que cette bête erreur de planification m'a côuté très chère car ne pas avoir une bonne stratégie de tests a du me faire perdre un temps fou.

    -

    Pour conclure je suis content car j'ai réussi à rendre un projet qui marche en suivant assez bien le planning mais il y a des choses que je vais devoir changer dans mes prochains projets.

    +

    L'ordre des tâches a été décidé exprès de cette façon pour éviter de prendre trop de risques. L'idée était qu'en faisant le plus dur au début, je pourrai facilement changer le cahier des charges. J'ai envie de dire que j'aurais dû être plus confiant, mais pour être honnête, je pense que c'était un mal pour un bien. Je ne pense pas avoir "bien" fait, mais je pense que c'est une erreur qui était rentable pour mon niveau de stress dans le projet.

    +

    Par contre, les Tests c'est tout simplement une erreur. J'en parle plus en détail dans la partie test de la documentation, mais je vais résumer un peu ici. +La documentation a été faite dès le début du projet. J'ai mis en place le squelette pour qu'ensuite, il soit simple d'y ajouter au fur et à mesure. J'aurais dû faire exactement pareil avec les tests. Si j'avais fait au moins le squelette des tests au début du projet, j'aurais pu beaucoup plus facilement en faire et cela m'aurait fait gagner un temps fou et j'aurais même pu faire du TDD (Test Driven Developpement). Je suis persuadé que cette bête erreur de planification m'a coûté très cher, car ne pas avoir une bonne stratégie de tests a dû me faire perdre un temps fou.

    +

    Pour conclure, je suis content parce que j'ai réussi à rendre un projet qui marche en suivant assez bien le planning, mais il y a des choses que je vais devoir changer dans mes prochains projets.

    Analyse fonctionnelle


    Voir "Manuel Utilisateur" tout y est indiqué

    @@ -1736,28 +2070,28 @@ La documentation a été faite dès le début du projet. J'ai mis en place le sq
    "Logo de Visual Studio 2022"
    -

    C'est l'application que j'ai le plus utilisé je pense. Visual Studio 2022 est l'IDE officiel de Microsoft pour coder en C#.

    -

    C'est l'outil que j'utilise depuis maintenant 6 ans au CFPT et franchement il fait tout ce que je pourrais vouloir. C'est aussi un outil pratique pour utiliser Windows Forms et faire des applications natives Windows.

    -

    Pas grand chose à dire à ce sujet à part que c'est un outil qui marche bien et qui est gratuit si on prend la community edition.

    +

    C'est l'application que j'ai le plus utilisé, je pense. Visual Studio 2022 est l'IDE officiel de Microsoft pour coder en C#.

    +

    C'est l'outil que j'utilise depuis maintenant six ans au CFPT et franchement, il fait tout ce que je pourrais vouloir. C'est aussi un outil pratique pour utiliser Windows Forms et faire des applications natives Windows.

    +

    Pas grand-chose à dire à ce sujet à part que c'est un outil qui marche bien et qui est gratuit si on prend la community édition.

    Visual Studio Code

    "Logo de Visual Studio Code"
    -

    Cet outil est déja un peu plus intéressant. C'est le second outil que j'ai le plus utilisé. J'en ai surtout eu besoin pour écrire de la doc, mais aussi pour coder en python et pour contrôler mkdocs.

    +

    Cet outil est déjà un peu plus intéressant. C'est le second outil que j'ai le plus utilisé. J'en ai surtout eu besoin pour écrire de la doc, mais aussi pour coder en python et pour contrôler mkdocs.

    Visual Studio est un IDE absolument génial qui est très puissant avec les bonnes extensions. Je l'utilise au quotidien pour tout ce qui est développement WEB, Mobile ou pour éditer des fichiers de configs pour mes drones ou imprimantes 3D. Je peux même compiler le firmware pour ces dernières en utilisant une extension faite pour.

    -

    Les possibilités de customisation sont presques infinies et c'est un plaisir d'utiliser ce logiciel gratuit fournis par Microsoft mais qui est amélioré constamment par des développeurs indépendants.

    -

    Je conseille à nimporte quel développeur de l'essayer à moins qu'il soit uniquement sur C# ou il serait plus intéressant d'utiliser visual studio 2022

    +

    Les possibilités de customisation sont presque infinies et c'est un plaisir d'utiliser ce logiciel gratuit fourni par Microsoft, mais qui est amélioré constamment par des développeurs indépendants.

    +

    Je conseille à n'importe quel développeur de l'essayer à moins qu'il soit uniquement sur C# ou il serait plus intéressant d'utiliser visual studio 2022.

    Material/Mkdocs/Markdown

    "Logo de Mkdocs Materials"
    -

    Pendant ce projet j'ai utilisé exclusivement du markdown avec l'aide de Mkdocs et Materials.

    -

    Le choix de Markdown a été plutôt simple, c'est une facon facile et efficace de créer de la documentation et on n'avait pas le choix de l'utiliser.

    -

    On avait également l'obligation (Ou au moins un très forte incitation) par nos professeurs d'utiliser mkdocs et materials pour que notre documentation ne soit pas simplement une liste de fichiers mais un joli site dans lequel il est agréable de chercher des informations.

    -

    Mkdocs et Materials sont deux outils vraiment fantastiques mais je dois avouer que je n'ai pas assez mis de temps pour apprendre tout leur potentiel. Pour moi ce sont simplement des outils et je veux qu'ils marchent. Je ne suis pas forcément du genre à aller changer toutes les couleurs et polices pour avoir la doc parfaite, j'ai préféré passer du temps sur mon app. Mais même si ces outils offrent une customisation très avancée, il est très facile de créer un projet simple et j'aime beaucoup cette simplicité.

    -

    J'ai eu pas mal d'aide de la part de M.Briard pour implémenter certaines features et je l'en remercie très chaudement car sans son aide ce document serait sûrement un peu moins facile à lire (Oui oui ca aurait pu être pire, je sais c'est dur à imaginer)

    +

    Pendant ce projet, j'ai utilisé exclusivement du Markdown avec l'aide de Mkdocs et Materials.

    +

    Le choix de Markdown a été plutôt simple, c'est une façon facile et efficace de créer de la documentation et on n'avait pas le choix de l'utiliser.

    +

    On avait également l'obligation (Ou au moins un très forte incitation) par nos professeurs d'utiliser mkdocs et materials pour que notre documentation ne soit pas simplement une liste de fichiers, mais un joli site dans lequel il est agréable de chercher des informations.

    +

    Mkdocs et Materials sont deux outils vraiment fantastiques, mais je dois avouer que je n'ai pas assez mis de temps pour apprendre tout leur potentiel. Pour moi ce sont simplement des outils et je veux qu'ils marchent. Je ne suis pas forcément du genre à aller changer toutes les couleurs et polices pour avoir la doc parfaite, j'ai préféré passer du temps sur mon app. Mais même si ces outils offrent une customisation très avancée, il est très facile de créer un projet simple et j'aime beaucoup cette simplicité.

    +

    J'ai eu pas mal d'aide de la part de M. Briard pour implémenter certaines features et je l'en remercie très chaudement, car sans son aide ce document serait sûrement un peu moins commode à lire (Oui oui ça aurait pu être pire, je sais, c'est dur à imaginer).

    Figma

    @@ -1765,209 +2099,207 @@ La documentation a été faite dès le début du projet. J'ai mis en place le sq

    Figma est l'outil que j'ai utilisé pour créer mon poster et un certain nombre des diagrammes de cette documentation.

    J'utilise aussi cet outil dès que je vais faire des maquettes de sites ou d'applications. D'ailleurs les maquettes dans le cahier des charges ont été faites avec.

    -

    C'est un outil en ligne parfaitement gratuit qui conserve tout dans le cloud. Franchement je n'ai rien à dire, je n'ai pas utilisé plus de 15% des features que cet outil propose et je suis déja conquis.

    +

    C'est un outil en ligne parfaitement gratuit qui conserve tout dans le cloud. Franchement, je n'ai rien à dire, je n'ai pas utilisé plus de 15 % des features que cet outil propose et je suis déjà conquis.

    Technologies utilisées

    -

    Dans ce projet différents choix ont été faits pour ce qui est des technologies.

    -

    Certaines ont été choisies car elles étaient les plus simples, les plus pratiques, les plus efficaces ou encore les plus connues et donc ayant le meilleur support. Je vais tenter de résumer ici ces choix mais je reviendrai sur la plupart d'entre eux plus tard quand j'explique ce que je fais avec.

    +

    Dans ce projet, différents choix ont été faits pour ce qui est des technologies.

    +

    Certaines ont été choisies, car elles étaient les plus simples, les plus pratiques, les plus efficaces ou encore les plus connues et donc ayant le meilleur support. Je vais tenter de résumer ici ces choix, mais je reviendrai sur la plupart d'entre eux plus tard quand j'explique ce que je fais avec.

    Selenium

    - -
    "Logo de selenium"
    + +
    "Logo de sélénium"
    -

    Selenium est une librairie à la base Node JS qui permet d'automatiser des actions sur un navigateur internet. Le but premier et je pense son utilisation première est l'automatisation de tests pour des applications WEB. En effet c'est un super outil pour simuler un user faisant un certain nombre d'actions sans apporter de variabilité ce qui fait de supers test unitaires.

    -

    Cependant je pense que l'autre grande partie des utilisateurs de Selenium l'utilisent pour faire du "Scrapping". Et nous sommes un peu dans cette seconde catégorie. Le "Scrapping" c'est l'acte d'aller récupèrer des informations sur des pages web automatiquement pour alimenter sa propre base de données. En effet, si on arrive à passer les protections anti-bot on peut facilemnt utiliser Selenium pour scraper tous les sites qui nous passent par la tête.

    +

    Selenium est une librairie à la base Node JS qui permet d'automatiser des actions sur un navigateur internet. Le but premier et je pense son utilisation première et l'automatisation de tests pour des applications WEB. En effet, c'est un super outil pour simuler un user faisant un certain nombre d'actions sans apporter de variabilité, ce qui fait de super test unitaires.

    +

    Cependant, je pense que l'autre grande partie des utilisateurs de Selenium l'utilisent pour faire du "Scrapping". Et nous sommes un peu dans cette seconde catégorie. Le "Scrapping" c'est l'acte d'aller récupérer des informations sur des pages web automatiquement pour alimenter sa propre base de données. En effet, si on arrive à passer les protections anti-bot, on peut facilement utiliser Selenium pour scraper tous les sites qui nous passent par la tête.

    Le cahier des charges que j'avais en tête en cherchant une technologie de contrôle de navigateur internet était le suivant :

    • Simple
    • Permettant de contrôler un navigateur Headless (Voir chapitre "Simuler un navigateur ?")
    • -
    • Permettant de contrôler firefox
    • +
    • Permettant de contrôler Firefox
    • Ayant un wrapper C#
    • -
    • Permettre de changer certaines choses comme les cookies en Live
    • +
    • Permettre de changer certaines choses comme les cookies en direct
    • Permettre d'interagir avec les éléments d'une page
    • Fonctionner
    -

    Simple car je ne voulais pas avoir à passer trop de temps dessus (ca n'a pas bien vieillit lol...). Je voulais que l'on puisse utiliser Firefox car il n'implémente pas les mêmes sécuritées que Chrome pour faire simple. J'avais besoin que la lib puisse contrôler un Firefox HEADLESS car je ne voulais pas avoir une page web ouvert sur mon ordi quand je commente car c'est de l'espace utilisé pour rien. J'avais besoin d'un wrapper C# car c'est le language que j'utilise. Pour finir j'avais besoin d'interragir avec les éléments de la page pour naviguer dessus et d'insèrer des cookies pour me connecter sans avoir à passer par le login de la F1TV qui est très bon pour detecter les bots.

    -

    Avec un cahier des charges parreil beaucoup de librairies ont été abandonnées. J'ai pu tester pleins de librairies C# qui arrivaient à contrôler un Chrome et même pas mal qui arrivaient à contrôler un Chrome Headless. Mais le choix est très vite restreind quand on veut pouvoir contrôler Chrome OU Firefox.

    -

    A la base mon choix c'était porté sur Puppeteer Sharp qui est une librairie qui se veut être exactement ce que je veux.

    +

    Simple, car je ne voulais pas avoir à passer trop de temps dessus (ça n'a pas bien vieilli lol...). Je voulais que l'on puisse utiliser Firefox parce qu'il n'implémente pas les mêmes sécurités que Chrome pour faire simple. J'avais besoin que la lib puisse contrôler un Firefox HEADLESS comme je ne voulais pas avoir une page web ouverte sur mon ordi quand je commente, car c'est de l'espace utilisé pour rien. J'avais besoin d'un wrapper C# puisque c'est le langage que j'utilise. Pour finir, j'avais besoin d'interagir avec les éléments de la page pour naviguer dessus et d'insérer des cookies pour me connecter sans avoir à passer par le login de la F1TV qui est très bon pour détecter les bots.

    +

    Avec un cahier des charges pareil beaucoup de librairies ont été abandonnées. J'ai pu tester pleins de librairies C# qui arrivaient à contrôler un Chrome et même pas mal qui arrivaient à contrôler un Chrome Headless. Mais le choix est très vite restreint quand on veut pouvoir contrôler Chrome OU Firefox.

    +

    À la base, mon choix, c'était porté sur Puppeteer Sharp qui est une librairie qui se veut être exactement ce que je veux.

    "Logo de Pupeteer"
    -

    Je voulais utiliser cette librairie car il y a des plugins qui sont très orientés scrapping, en effet, ils implémentent de nombreuses techniques pour permettre de mieux passer innapercu par les systèmes de detection de bots.

    -

    Sur le papier c'est la librairie parfaite qui correspond parfaitement au cahier des charges que je m'étais fixé et je pense que si j'utilisais un projet JS elle le serait. Sauf que avec le wrapper C# j'ai eu un certain nombre de problèmes:

    +

    Je voulais utiliser cette librairie, car il y a des plugins qui sont très orientés scrapping, en effet, ils implémentent de nombreuses techniques pour permettre de mieux passer inaperçu par les systèmes de détection de bots.

    +

    Sur le papier, c'est la librairie parfaite qui correspond parfaitement au cahier des charges que je m'étais fixé et je pense que si j'utilisais un projet JS, elle le serait. Sauf qu'avec le wrapper C# j'ai eu un certain nombre de problèmes :

      -
    • Toutes les versions de la librairie ne fonctionnaient pas. Il fallait faire des tests avec différentes versions de la librairie et de ses dépendences simplement pour faire démarrer un browser. Et ca c'est quand ca marchait car il y avait des jours ou des machines ou je n'ai simplement pas pu faire fonctionner la librairie.
    • -
    • Même avec les techniques proposées par les plugins "Stealth" je n'arrivais pas à bypass les sécuritées de la page de login de la F1TV. J'ai essayé tout ce que j'ai pu trouver sur internet mais on se fait toujours chopper dès que l'on arrive sur la page.
    • -
    • Et le pire de tout, impossible de faire fonctionner un vidéo. J'ai pu faire tout ce que je voulais faire au final en passant par l'utillisation de cookies pour la connexion. Tout ca pour arriver au moment ou il faut lancer la vidéo, et la, crash. Impossible de faire fonctionner Puppeteer Sharp avec une vidéo. Dès qu'elle se lance c'est un crash assuré sans message d'erreur clair. Et le soucis c'est que le wrapper C# n'est pas vraiment bien supporté et que si c'est un bug de la lib je ne risque pas de voir de fix avant un moment si ce n'est jamais.
    • +
    • Toutes les versions de la librairie ne fonctionnaient pas. Il fallait faire des tests avec différentes versions de la librairie et de ses dépendances simplement pour faire lancer un browser. Et ça, c'est quand ça marchait, car il y avait des jours où des machines sur lesquelles je n'ai juste pas pu faire fonctionner la librairie.
    • +
    • Même avec les techniques proposées par les plugins "Stealth" je n'arrivais pas à bypass les sécurités de la page de login de la F1TV. J'ai essayé tout ce que j'ai pu trouver sur internet, mais on se fait toujours chopper dès que l'on arrive sur la page.
    • +
    • Et le pire de tous, impossible de faire fonctionner une vidéo. J'ai pu faire tout ce que je voulais faire finalement en passant par l'utillisation de cookies pour la connexion. Tout ça pour arriver au moment où il faut lancer la vidéo, et là, crash. Impossible de faire fonctionner Puppeteer Sharp avec une vidéo. Dès qu'elle se lance, c'est un crash assuré sans message d'erreur clair. Et le souci, c'est que le wrapper C# n'est pas vraiment bien supporté et que si c'est un bug de la lib, je ne risque pas de voir de fix avant un moment si ce n'est jamais.
    -

    Pour toutes ces raisons, j'ai du abandonner cette librairie ce qui a été très dur car j'avais passé beaucoup de temps dessus à essayer de la faire marcher.

    -

    Ensuite le choix de Selenium était plutôt simple, c'était la seule option restante. A ce jour je ne connait aucune autre librairie que Puppeteer ou Selenium qui puisse contrôler un Firefox Headless en respectant mon cahier des charges et qui soit donc disponible depuis C#.

    -

    Si je n'arrivais pas à faire fonctionner Selenium j'aurai du abandonner l'idée de simuler un navigateur tout simplement. Mais j'ai eu la chance que cette librairie fasse tout ce que je pouvais demander. C'est une super lib et même si la version C# n'est vraiment pas bien documentée, la plupart des documentations de la version JS sont pertinentes pour al version C# même si ca n'est pas la même syntaxe.

    -

    Pour résumer, j'ai choisis Puppeteer car c'était la seule option viable pour mon besoin.

    -

    (Note : Par contre si je trouve la personne chez mozilla ou puppeteer qui a décidé d'hardcoder la résolution maximale du browser Headless que l'on peut override UNIQUEMENT en changeant les variables d'environnement de la machine ET DE NE LE DOCUMENTER QUASI NULLE PART JE JURE QUE CA VA TRES MAL SE PASSER)

    +

    Pour toutes ces raisons, j'ai dû abandonner cette librairie, ce qui a été très dur, car j'avais passé beaucoup de temps dessus à essayer de la faire marcher.

    +

    Ensuite le choix de Selenium était plutôt simple, c'était la seule option restante. À ce jour, je ne connais aucune autre librairie que Puppeteer ou Selenium qui puisse contrôler un Firefox Headless en respectant mon cahier des charges et qui soit donc disponible depuis C#.

    +

    Si je n'arrivais pas à faire fonctionner Selenium, j'aurais dû abandonner l'idée de simuler un navigateur tout simplement. Mais j'ai eu la chance que cette librairie fasse tout ce que je pouvais demander. C'est une super lib et même si la version C# n'est vraiment pas bien documentée, la plupart des documentations de la version JS sont pertinentes pour la version C# même si ça n'est pas la même syntaxe.

    +

    Pour résumer, j'ai choisi Puppeteer car c'était la seule option viable pour mon besoin.

    +

    (Note : Par contre si je trouve la personne chez Mozilla ou puppeteer qui a décidé d'hard coder la résolution maximale du browser Headless que l'on peut override UNIQUEMENT en changeant les variables d'environnement de la machine ET DE NE LE DOCUMENTER QUASI NULLE PART JE JURE QUE CA VA TRÈS MAL SE PASSER)

    CSharp

    "Logo C#"
    -

    Je pense que c'est le choix le plus simple à expliquer. C# est un language de programmation orienté objet relativement haut niveau qui a été créé par Microsoft et qui a comme cible le developpement d'applications pour Windows. (On peut evidemment trouver des adaptations pour le faire tourner sur Linux mais ce n'est pas vraiment le but du language)

    -

    En plus d'être un superbe language de programmation, c'est le language que l'on apprend au CFPT informatique. C'est donc un language avec lequel je suis beaucoup plus à l'aise que pour d'autres languages comme le Python ou le JS.

    -

    Mon but n'était pas de faire une application Web et je travaille sous Windows. Je savais que mon projet allait demander un minimum de programmation orientée objet. J'ai donc immédiattement pensé à utliser C#.

    -

    Cependant j'aurais très bien pu utiliser un language comme python qui m'aurait clairement facilité la tâche avec des librairies bien plus fournies et plus souvent mises à jour. Mais comme je ne suis pas du tout aussi à l'aise avec je pense que le C# était la meilleure option.

    -

    Mes seuls regrets après coup sont que je trouve les Windows Forms très moches et qu'il est particulièrement difficile de les rendres plus jolies et que les librairies disponibles en C# pour des scénarios très précis ne sont pas au niveau de celles pour JS et pour Python.

    -

    Cependant si j'avais à refaire le projet je reprendrais C# je pense.

    -

    Python?

    +

    Je pense que c'est le choix le plus simple à expliquer. C# est un langage de programmation orienté objet relativement haut niveau qui a été créé par Microsoft et qui a comme cible le développement d'applications pour Windows. (On peut évidemment trouver des adaptations pour le faire tourner sur Linux, mais ce n'est pas vraiment le but du langage)

    +

    En plus d'être un superbe langage de programmation, c'est le langage que l'on apprend au CFPT informatique. C'est donc un langage avec lequel je suis beaucoup plus à l'aise que pour d'autres langages comme le Python ou le JS.

    +

    Mon but n'était pas de faire une application Web et je travaille sous Windows. Je savais que mon projet allait demander un minimum de programmation orientée objet. J'ai ainsi immédiatement pensé à utiliser C#.

    +

    Cependant, j'aurais très bien pu utiliser un langage comme python qui m'aurait clairement facilité la tâche avec des librairies bien plus fournies et plus souvent mises à jour. Mais comme je ne suis pas du tout aussi à l'aise avec, je pense que le C# était la meilleure option. +Mes seuls regrets après coup sont que je trouve les Windows Forms très moches et qu'il est particulièrement difficile de les rendre plus jolies et que les librairies disponibles en C# pour des scénarios très précis ne sont pas au niveau de celles pour JS et pour Python. +Cependant, si j'avais à refaire le projet, je reprendrais C# je pense.

    +

    Python ?

    "Logo Python"
    -

    Alors ce choix la est plus commpliqué à comprendre.

    -

    Pour tout le projet j'ai tenté de garder le C# comme language et de ne pas utiliser autre chose. Cependant j'ai du utiliser une seule fois le Python dans un cas très précis.

    -

    Je n'aime vraiment pas coder en python de base et clairement j'aurais préfèré ne pas l'utiliser mais je n'avais pas le choix.

    +

    Alors ce choix-là est plus compliqué à comprendre.

    +

    Pour tout le projet, j'ai tenté de garder le C# comme langage et de ne pas utiliser autre chose. Cependant, j'ai dû utiliser une seule fois le Python dans un cas très précis.

    +

    Je n'aime vraiment pas coder en python de base et clairement, j'aurais préféré ne pas l'utiliser, mais je n'avais pas le choix.

    Le besoin dans le cas du python était le suivant :

    -

    J'avais besoin d'un moyen de récupèrer des strings et les décoder avec une clé encodée avec le système propriétaire de windows d'encodage.

    -

    Le soucis que j'avais avec le C# c'est que les methodes de decryption ne fonctionnent pas pareil que en python et tous les exemples que je pouvais trouver étaient en python. J'ai essayé pendant un sacré moment de faire fonctionner la decryption en C# mais sans succès.

    -

    J'ai donc directement utilisé le python comme faisait toutes les personnes que je pouvais voir sur internet et je pense que ca n'est pas une mauvaise idée. En effet, cela veut dire que si à un moment Chrome est mis à jour, je n'aurai pas besoin d'aller ouvrir tout le code source de mon projet pour tout recompiler, j'aurai simplement besoin de changer ce script.

    -

    Un des avantages du Python est quand même qu'il y beaucoup plus de gens qui codent dessus, et pour ce genre d'utilisation très spécifiques c'est plutôt pratique.

    -

    Le seul problème c'est que cela oblige l'utilisateur à avoir python installé sur sa machine et que sa version doit être compatible... (les joies de python)

    +

    J'avais besoin d'un moyen de récupérer des strings et les décoder avec une clé encodée avec le système propriétaire de Windows d'encodage.

    +

    Le souci, c'est que j'avais avec le C# c'est que les méthodes de décryptions ne fonctionnent pas pareil qu'en python et tous les exemples que je pouvais trouver étaient en python. J'ai essayé pendant un sacré moment de faire fonctionner la décryptions en C# mais sans succès.

    +

    J'ai donc directement utilisé le python comme faisait toutes les personnes que je pouvais voir sur internet et je pense que ça n'est pas une mauvaise idée. En effet, cela veut dire que si à un moment Chrome est mis à jour, je n'aurai pas besoin d'aller ouvrir tout le code source de mon projet pour tout recompiler, j'aurai simplement besoin de changer ce script.

    +

    Un des avantages du Python est quand même qu'il y a beaucoup plus de gens qui codent dessus, et pour ce genre d'utilisation très spécifique, c'est plutôt pratique.

    +

    Le seul problème, c'est que cela oblige l'utilisateur à avoir python installé sur sa machine et que sa version doit être compatible... (les joies de python).

    Firefox

    "Logo Firefox Headless"
    -

    J'en parle deja plus bas, mais le choix de navigateur est super important.

    -

    Deja tous les navigateurs n'ont pas un mode Headless(sans tête, mieux expliqué dans la rubrique "Simuler un naviguateur ?"). Par exemple, même si Edge est maintenant basé sur chromium, il n'existe pas de moyen de le faire tourner en Headless pour le moment.

    -

    Autre soucis, les librairies d'automatisation ne supportent pas tous les navigateurs. Par exemple, beaucoup supportent chrome mais très peu supportent Firefox ou Edge.

    -

    Donc il me fallait un navigateur qui puisse opèrer en Headless et qui soit supporté par plusieurs librairies d'automatisation.

    -

    Il n'y a que Firefox et Chrome qui sont conforme à ces exigeances (Je n'ai pas verifié pour TOUS les navigateurs. Peut-être que les Opera GX ont aussi un mode headless super, mais je me suis concentré sur les navigateurs plus grand public).

    -

    Chrome est supporté par plus de lib, mais le soucis c'est que la F1TV utilise un lecteur de vidéo avec DRM (Plus d'infos la dessus dans la partie "Simuler un navigateur?") et donc le choix était simple. Il ne restait que Firefox.

    +

    J'en parle déjà plus bas, mais le choix de navigateur est super important.

    +

    Déjà tous les navigateurs n'ont pas un mode Headless (sans tête, mieux expliqué dans la rubrique "Simuler un navigateur ?"). Par exemple, même si Edge est maintenant basé sur Chromium, il n'existe pas de moyen de le faire tourner en Headless pour le moment.

    +

    Autre souci, les librairies d'automatisation ne supportent pas tous les navigateurs. Par exemple, beaucoup supportent chrome, mais très peu supportent Firefox ou Edge. +Donc, il me fallait un navigateur qui puisse opérer en Headless et qui soit supporté par plusieurs librairies d'automatisation.

    +

    Il n'y a que Firefox et Chrome qui soient conformes à ces exigences. (Je n'ai pas vérifié pour TOUS les navigateurs. Peut-être que les Opera GX ont aussi un mode headless super, mais je me suis concentré sur les navigateurs plus grand public).

    +

    Chrome est supporté par plus de lib, mais le souci c'est que la F1TV utilise un lecteur de vidéo avec DRM (Plus d'infos là-dessus dans la partie "Simuler un navigateur ?") et donc le choix était simple. Il ne restait que Firefox.

    Tesseract

    Je pense que le choix le plus simple après le C# fut l'utilisation de Tesseract.

    -

    C'est tout simplement l'outil le plus utilisé pour faire de l'OCR. A la base c'est une lib Python (Ah tiens encore ?) qui peut être redoutablement efficace avec le bon dataset.

    -

    Il existe d'autres outils mais j'ai décidé de prendre celui la à cause de son support juste incroyable et de son omniprésence dans la documentation OCR.

    +

    C'est tout simplement l'outil le plus utilisé pour faire de l'OCR. À la base, c'est une lib Python (Ah tiens encore ?) qui peut être redoutablement efficace avec le bon dataset.

    +

    Il existe d'autres outils, mais j'ai décidé de prendre celui-là à cause de son support juste incroyable et de son omniprésence dans la documentation OCR.

    En plus il est facile à utiliser et je ne pense pas encore avoir fait le tour de tout son potentiel dans ce projet.

    Fonctionnement général

    -

    Avant de passer à l'explication de chaques parties du projet en détail, je pense qu'il est important de faire un petit point sur comment toutes les parties du projet s'emboitent et fonctionnement ensemble. Comme ca quand vous lirez l'explication d'une étape vous serez conscient de à quoi elle sert et ou elle s'înscrit dans le projet principal.

    +

    Avant de passer à l'explication de chaque partie du projet en détail, je pense qu'il est important de faire un petit point sur comment toutes les parties du projet s'emboitent et fonctionnement ensemble. Comme ça, quand vous lirez l'explication d'une étape, vous serez conscient de à quoi elle sert, et où elle s'inscrit dans le projet principal.

    Les briques principales

    -

    Voici trois grosses étapes du projet. Pour rappel ce sont des vulgarisations plutôt larges qui n'ont qu'un seul but, aider à la compréhension de ce qui vient par la suite.

    -
    Recupération d'images
    +

    Voici trois grosses étapes du projet. Pour rappel, ce sont des vulgarisations plutôt larges qui n'ont qu'un seul but, aider à la compréhension de ce qui vient par la suite.

    +
    Récupération d'images
    - -
    "Diagramme simplifié représentant le processus de récupèration des images"
    + +
    "Diagramme simplifié représentant le processus de récupération des images"
    -

    Pour faire simple on peut voir qu'il y a deux parties à cette étape. La première en partant du haut représente un script python qui va chercher des informations dans la base de données de Chrome qui est en SQLITE. Ces informations dans notre cas sont les cookies de connexion.

    -

    Dans la seconde étape, on peut voir que le programme utilise Selenium avec un navigateur Firefox Headless qui va aller communiquer avec la F1TV qui est le site web qui nous intéresse et que une des infos que l'on récupère est une image de la page en format PNG que l'on envoie au programme C#.

    -

    Ces deux partie sont liées car pour se connecter à la F1TV Selenium a besoin des cookies de connexion récupèrés par le programme Python.

    +

    Pour faire simple, on peut voir qu'il y a deux parties à cette étape. La première en partant du haut représente un script python qui va chercher des informations dans la base de données de Chrome qui est en SQLite. Ces informations dans notre cas sont les cookies de connexion.

    +

    Dans la seconde étape, on peut voir que le programme utilise Selenium avec un navigateur Firefox Headless qui va aller communiquer avec la F1TV qui est le site web qui nous intéresse et qu'une des infos que l'on récupère est une image de la page en format PNG que l'on envoie au programme C#.

    +

    Ces deux parties sont liées, car pour se connecter à la F1TV Selenium a besoin des cookies de connexion récupérés par le programme Python.

    La première partie est un processus qui n'est utilisé qu'une seule fois au démarrage tandis que la récupération d'images et en continu pendant toute la durée de l'utilisation de l'application.

    OCR
    - -
    "Diagramme simplifié représentant le processur d'OCR"
    + +
    "Diagramme simplifié représentant le processus d'OCR"

    ;

    -

    On peut voir dans ce diagramme simplifié qu'avec l'aide de ce que contient le fichier "Config.JSON" on découpe l'image que l'on a récupèré au préalable en petits morceaux qui continennent des informations. Ensuite on prend cette image et on lui applique un filtre pour retirer le flou la couleur etc... Puis en utilisant de l'OCR (Optical Character Recognition) on en récupère les informations sous forme de texte et on le renvoie dans le programme C#

    -

    Dans cette partie explicative générale, on ne reviendra pas sur la création de ce fichier config. Pour plus d'infos à son sujet voir la rubrique (OCR/Fonctionnement général)

    +

    On peut voir dans ce diagramme simplifié qu'avec l'aide de ce que contient le fichier "Config.JSON" on découpe l'image que l'on a récupéré au préalable en petits morceaux qui contiennent des informations. Ensuite, on prend cette image et on lui applique un filtre pour retirer le flou, la couleur, etc. Puis en utilisant de l'OCR (Optical Character Recognition) on en récupère les informations sous forme de texte et on le renvoie dans le programme C#

    +

    Dans cette partie explicative générale, on ne reviendra pas sur la création de ce fichier config. Pour plus d'infos à son sujet, voir la rubrique (OCR/Fonctionnement général)

    Traitement et affichage
    "Diagramme simplifié représentant le processus de traitement et d'affichage"
    -

    On peut voir dans ce dernier mini diagramme simplifié que on prend les données que l'on récupèré de l'étape précédente qui ne sont pas forcément toutes cohérentes et qu'on les traite pour leur redonner du sens avant de les stocker dans une base de données SQLITE. Ensuite cette même base de donnée fournis les infos nescessaires pour des affichages (Ces affichages sont directements récupèrés depuis le projet en cours de fonctionnement)

    +

    On peut voir dans ce dernier mini diagramme simplifié qu'on prend les données que l'on récupérait de l'étape précédente qui ne sont pas forcément toutes cohérentes et qu'on les traite pour leur redonner du sens avant de les stocker dans une base de données SQLITE. Ensuite cette même base de donnée fournis les infos nécessaires pour des affichages (Ces affichages sont directement récupérés depuis le projet en cours de fonctionnement).

    Résumé du fonctionnement général

    - -
    "Diagramme simplifé représentant le processus général du projet"
    + +
    "Diagramme simplifié représentant le processus global du projet"

    Ce dernier diagramme est un schéma fait pour représenter de la manière la plus simple possible toutes les briques du projet et comment elles s'imbriquent ensemble. -La représentation est un peu différentes des 3 autre diagramme car le but ici est surtout de montrer le chemin que fait la donnée à travers les couches

    +La représentation est un peu différente des trois autres diagrammes, car le but ici est surtout de montrer le chemin que fait la donnée à travers les couches.

    Toutes les parties du projet ne sont pas incluses, notamment la partie calibration dans un objectif de simplifier la lecture.

    -

    Dans l'ordre, on peut voir que pour la partie récupèration d'images, le python va récupèrer les cookies dans la base de données chrome pour ensuite les retourner à Selenium.

    -

    Selenium va ensuite pouvoir lancer un navigateur (en l'occurence Firefox) et utiliser les cookies récupèrés pour aller sur la page de la F1TV qui va retourner un certain nombre d'infos à Selenium.

    -

    L'info qui nous intéresse le plus depuis Selenium c'est les images de la page data de la F1Tv et c'est elles que l'on va envoyer dans la partie LOAD du diagramme.

    -

    Dans cette partie on prend l'image de la F1TV et on la decoupe selon les directives données par le fichier Config.JSON (il renseigne les zones à découper et ce qu'elles représentent) et après le découpage on se retrouve avec une zone principale, vingt zones de pilotes et 9 fenêtres de données par zone de pilote donc 180 fenêtres en tout.

    +

    Dans l'ordre, on peut voir que pour la partie récupération d'images, le python va récupérer les cookies dans la base de données chrome pour ensuite les retourner à Selenium.

    +

    Selenium va ensuite pouvoir lancer un navigateur (en l'occurrence Firefox) et utiliser les cookies récupérés pour aller sur la page de la F1TV qui va retourner un certain nombre d'infos à Selenium.

    +

    L'info qui nous intéresse le plus depuis Selenium ce sont les images de la page data de la F1Tv et ce sont elles que l'on va envoyer dans la partie LOAD du diagramme.

    +

    Dans cette partie, on prend l'image de la F1TV et on la découpe selon les directives données par le fichier Config.JSON (il renseigne les zones à découper et ce qu'elles représentent) et après le découpage, on se retrouve avec une zone principale, vingt zones de pilotes et 9 fenêtres de données par zone de pilote donc 180 fenêtres en tout.

    Ces fenêtres sont ensuite envoyées pour être filtrées (retirer le flou, mettre en évidence les caractères, en gros les préparer pour la reconnaissance) dans la partie OCR

    -

    Dans cette partie, après avoir filtré les images, on les envoie à Tesseract pour qu'il nous retourne des résultats d'OCR. Ces résultats sont ce que Tesseract a trouvé sur les image et ils sont retournés sous al forme de Data Pilote. Ex (Position: 1,Tour : 45, Temps au tour : 1:34.683, Pneus: Medium etc....)

    -

    Finalement ces données ont envoyées dans la partie traitement qui va faire des vérifications d'usage pour s'assurer qu'elles sont correctes et quand c'est fait, tout est envoyé dans une base de données SQLITE.

    -

    On ne montre pas non plus dans ce diagramme la parte affichage des données car je ne trouve pas pertinent de l'inclure ici.

    -

    Et voila c'est le fonctionnement très général et simplifié de l'application. Je vous invite à continuer à lire cette documentation pour des informations plus précises à propos de toutes ces étapes. Bonne lecture !

    +

    Dans cette partie, après avoir filtré les images, on les envoie à Tesseract pour qu'il nous retourne des résultats d'OCR. Ces résultats sont ce que Tesseract a trouvé sur les images et ils sont retournés sous la forme de Data Pilote. Ex (Position : 1,Tour : 45, Temps au tour : 1:34.683, Pneus : Medium etc....)

    +

    Finalement, ces données ont envoyées dans la partie traitement qui va faire des vérifications d'usage pour s'assurer qu'elles sont correctes et quand c'est fait, tout est envoyé dans une base de données SQLite.

    +

    On ne montre pas non plus dans ce diagramme la parte affichage des données, car je ne trouve pas pertinent de l'inclure ici.

    +

    Et voilà, c'est le fonctionnement très général et simplifié de l'application. Je vous invite à continuer à lire cette documentation pour des informations plus précises à propos de toutes ces étapes. Bonne lecture !

    Récupération des images

    Voici la première grande étape du projet.

    Pour rappel, Amazon héberge directement le site de la F1TV et possède les droits sur les données de la F1. C'est sous le nom de AWS (le service d'hébergement d'Amazon) que la firme apparait en tant que sponsor.

    -

    On peut voir ce nom apparaître assez souvent quand on regarde un Grand Prix car comme ils ont la main-mise sur les données ils peuvent insèrer des bandeaux d'informations sur le flux public sur ce qu'il se passe voir même faire des prédictions (Bien qu'un peu bancales)

    +

    On peut voir ce nom apparaître assez souvent quand on regarde un Grand Prix, car comme ils ont la mainmise sur les données, ils peuvent insérer des bandeaux d'informations sur le flux public sur ce qu'il se passe, voir même faire des prédictions (Bien qu'un peu bancales)

    "Exemple insertion AWS en GP"
    -

    Ce service s'appelle F1 Insights (Oui c'est un meilleur nom de projet que F1 Companion mais bon) et c'est, je pense, la raison pour laquelle on ne voit aucune API publique qui permette de correctement se renseigner en donées en direct pendant un Grand Prix. Ils ont du dégotter un juteux contrat pour s'occuper de toute l'infrastructure digitale de la F1 (du moins publique) en échange d'une exclusivité totale sur certaines choses comme les Data

    +

    Ce service s'appelle F1 Insights (Oui, c'est un meilleur nom de projet que F1 Compagnon, mais bon) et c'est, je pense, la raison pour laquelle on ne voit aucune API publique qui permette de correctement se renseigner en données en direct pendant un Grand Prix. Ils ont dû dégotter un juteux contrat pour s'occuper de toute l'infrastructure digitale de la F1 (du moins publique) en échange d'une exclusivité totale sur certaines choses comme les Data.

    "Exemple data d'AWS"
    -

    Evidemment je ne fais que conjecturer et ce que j'ai dit n'est pas à prendre au pied de la lettre mais c'est une explication possible je pense de pourquoi il est si difficile de trouver des données sur la F1 facilement en temps réel.

    -

    Il existe bien quelques API un peu bancales publiques, mais le problème c'est qu'elles ne sont vraiment pas suffisante et je ne peux pas leur faire confiance quand je commente. Ce qu'il m'aurait fallut c'est une API publique et officielle qui me permette d'être sur que les données sont les bonnes et qu'elles arrivent le plus vite possible.

    -

    On pourrait croire que c'est impossible car cela n'existe pas comme je l'ai dit MAIS ! Ce n'est pas complêtement vrai. En effet depuis que je possède un abonnement à la F1TV, il existe une source d'informations très précieuse qui m'aide énormément dans mon quotidien de commentateur de Formule 1. La "DATA CHANNEL".

    +

    Évidemment, je ne fais que conjecturer et ce que j'ai dit n'est pas à prendre au pied de la lettre, mais c'est une explication possible, je pense, de pourquoi il est si difficile de trouver des données sur la F1 facilement en temps réel.

    +

    Il existe bien quelques API un peu bancales publiques, mais le problème, c'est qu'elles ne sont vraiment pas suffisantes et je ne peux pas leur faire confiance quand je commente. Ce qu'il m'aurait fallu, c'est une API publique et officielle qui me permette d'être sûr que les données sont les bonnes et qu'elles arrivent le plus vite possible.

    +

    On pourrait croire que c'est impossible, car cela n'existe pas comme je l'ai dit MAIS ! Ce n'est pas complètement vrai. En effet, depuis que je possède un abonnement à la F1TV, il existe une source d'informations très précieuse qui m'aide énormément dans mon quotidien de commentateur de Formule 1. La "DATA CHANNEL".

    La Data Channel est une page de la F1TV qui permet, pour chaque Grand Prix, de visualiser, sous la forme d'un flux vidéo, différentes informations capitales sur la course.

    "Exemple de Data Channel"

    Le problème, c'est que comme je viens de le dire, ces données ne sont pas accessibles comme un tableau HTML ou un flux RSS ou un tableau JSON. C'est un flux vidéo. -Il faut savoir qu'entretenir une diffusion de flux vidéo en 1080P pendant deux heures accessible par des milliers d'abonnés est EXTRÊMENT cher surtout quand on le compare à simplement afficher les données dans un tableau. Ce qui veut dire que ce choix est délibéré et a un sens au niveau économique. -Je pense donc que c'est justement pour éviter que des petits malins puissent simplement venir scraper l'intégralité des données qu'ils proposent et fasse sa propre API. (C'est d'ailleurs un des sites avec la meilleure protection anti bot du monde)

    -

    MAIS ce n'est pas par ce que les données ne sont pas facile à avoir qu'elles sont IMPOSSIBLE à avoir. Et c'est la que ce projet entre en jeu. Mais pour décoder les données d'une image il faut dabord ... (roulement de tambours) ... Avoir des images !

    -

    Et c'est la que vient se glisser cette partie du projet.

    +Il faut savoir qu'entretenir une diffusion de flux vidéo en 1080P pendant deux heures accessible par des milliers d'abonnés est EXTRÊMENT cher, surtout quand on le compare à simplement afficher les données dans un tableau. Ce qui veut dire que ce choix est délibéré et a un sens au niveau économique. +Je pense donc que c'est justement pour éviter que des petits malins puissent juste venir scraper l'intégralité des données qu'ils proposent et fasse sa propre API. (C'est d'ailleurs un des sites avec la meilleure protection anti-bot du monde)

    +

    MAIS ce n'est pas par ce que les données ne sont pas faciles à avoir qu'elles sont IMPOSSIBLE à avoir. Et c'est là que ce projet entre en jeu. Mais pour décoder les données d'une image, il faut d'abord ... (roulement de tambours) ... Avoir des images !

    +

    Et c'est là que vient se glisser cette partie du projet.

    Comment faire ?

    -

    Le but de ce segment est de se concentrer sur la récupèration et la mise à disposition pour le reste du programme, des images en direct de la F1TV dans la meilleure qualité possible et dans les meilleurs délais.

    -

    Pour ce faire il y a plusieurs solutions :

    +

    Le but de ce segment est de se concentrer sur la récupération et la mise à disposition, pour le reste du programme, des images en direct de la F1TV dans la meilleure qualité possible et dans les meilleurs délais.

    +

    Pour ce faire, il y a plusieurs solutions :

      -
    • Reverse engeneer la F1TV pour accèder directement au flux sans passer par la plateforme internet et pouvoir prendres images à volonté.
    • -
    • Avoir tout simplement une page de la F1TV ouverte sur un écran et prendres des screenshots à intervals réguliers.
    • +
    • Reverse engeneer la F1TV pour accéder directement au flux sans passer par la plateforme internet et pouvoir prendre images à volonté.
    • +
    • Avoir tout simplement une page de la F1TV ouverte sur un écran et prendre des screenshots à intervalles réguliers.
    • Simuler un navigateur internet sans qu'il soit affiché et le contrôler automatiquement pour qu'il prenne des captures.
    -

    La première option aurait été la plus élégante mais lors d'un POC que je tentais de réaliser je me suis rendu compte que cela serait un peu trop compliqué et long à faire. Sans compter le fait que les rediffusions de Grand Prix ne sont pas gèrées de la même manière que les diffusions en live. Et que pour faire des Tests en live il faudrait attendre à chaque fois un weekend de Grand Prix et le faire en plus du commentaire que je dois produire.

    -

    Pour toutes ces raisons et bien d'autres je l'ai rangée dans la case "Trop dur, Trop chiant, Sûrement illégal" (Oui je sais c'est une catégorie bien spécifique mais c'est ma documentation je fais ce que je veux)

    +

    La première option aurait été la plus élégante, mais lors d'un POC que je tentais de réaliser, je me suis rendu compte que cela serait un peu trop compliqué et long à faire. Sans compter le fait que les rediffusions de Grand Prix ne sont pas gérées de la même manière que les diffusions en direct. Et que pour faire des Tests en direct, il faudrait attendre à chaque fois un weekend de Grand Prix et le faire en plus du commentaire que je dois produire.

    +

    Pour toutes ces raisons et bien d'autres, je l'ai rangée dans la case "Trop dur, Trop chiant, Sûrement illégal" (Oui, je sais, c'est une catégorie bien spécifique, mais c'est ma documentation, je fais ce que je veux).

    La troisième option aurait été la plus simple (et moins drôle) et je suis presque sûr que je peux implémenter cette dernière en moins d'une après-midi. Sauf qu'elle apporte de gros soucis.

      -
    1. On ne peux pas garantir l'intégrité et la continuité des données si l'utilisateur avance ou fait pause même par simple inadvertance.
    2. +
    3. On ne peut pas garantir l'intégrité et la continuité des données si l'utilisateur avance ou fait pause, même par simple inadvertance.
    4. La moindre fenêtre qui s'afficherait devant ruinerait toute la reconnaissance de caractères.
    5. On ne peut pas contrôler la qualité du flux et on est obligé de faire confiance en l'utilisateur
    6. On ne peut pas vraiment automatiser quoi que ce soit niveau tests ou même pour faire du scrapping auto pour remplir une base de donnée.
    7. -
    8. Et finalement le pire inconvénient : C'EST NUL ! Je ne pourrais jamais utiliser un projet qui fonctionne de cette facon, je ne peux pas me permettre d'avoir un écran inutilisable quand je commente et auquel je dois constamment faire attention pour ne pas perturber la reconnaissance. Pour moi cette option aurait été celle à choisir en cas d'extrême urgence et en dernier recours car le projet deviendrait inutile.
    9. +
    10. Et finalement le pire inconvénient : C'EST NUL ! Je ne pourrais jamais utiliser un projet qui fonctionne de cette façon, je ne peux pas me permettre d'avoir un écran inutilisable quand je commente et auquel je dois constamment faire attention pour ne pas perturber la reconnaissance. Pour moi, cette option aurait été celle à choisir en cas d'extrême urgence et en dernier recours, car le projet deviendrait inutile.

    J'ai donc décidé de m'occuper de la seconde option : Simuler un navigateur.

    -

    Cette option bien que complexe et difficile à implémenter propose une solution à tous les problême et permet une récupèration quasi sans compromis.

    +

    Cette option, bien que complexe et difficile à implémenter, propose une solution à tous les problèmes et permet une récupération quasi sans compromis.

    Simuler un navigateur ?

    - -
    "Navigateur Headless(sans tête)"
    + +
    "Navigateur Headless (sans tête)"

    Simuler un navigateur internet n'est pas forcément très difficile. Chromium par exemple offre une panoplie d'outils natifs et énormément de librairies existent permettant de facilement et en quelques lignes simuler un Google Chrome et le contrôler sans afficher son UI (Interface Utilisateur).

    "Chromium logo"
    -

    {: style="height:150px;width:150px"}

    -

    Cependant. La F1TV n'utilise pas simplement un player HTML5 basique. Elle utilise un service de streaming BitMovin qui permet de fournir un stream de bonne qualité et surtout qui implémente les DRM (Digital Right Management)

    -

    Cela veut dire que quand on ouvre un flux de la F1TV sur chrome et que l'on essaie de prendre une capture d'écran, le player se met en noir et ne permet pas de voir quoi que ce soit (Certaines version de Chrome le permettent pendant quelques semaines avant de bloquer à nouveau). Ce qui dans notre cas est un immense problème. Mais Firefox ne nous bloque pas de cette facon et il est donc assez facile de passer outre.

    +

    Cependant, La F1TV n'utilise pas simplement un player HTML5 basique. Elle utilise un service de streaming Bit Movin qui permet de fournir un stream de bonne qualité et surtout qui implémente les DRM (Digital Right Management).

    +

    Cela veut dire que quand on ouvre un flux de la F1TV sur chrome et que l'on essaie de prendre une capture d'écran, le player se met en noir et ne permet pas de voir quoi que ce soit (Certaines versions de Chrome le permettent pendant quelques semaines avant de bloquer à nouveau). Ce qui dans notre cas est un immense problème. Mais Firefox ne nous bloque pas de cette façon et il est donc assez facile de passer outre.

    L'explication sans trop rentrer dans les détails est la suivante :

    -

    Dans chrome, le player par défaut utilise une technologie appellée "PCP" ou "Protected Content Playback" qui leur permet de bloquer au moins une partie des techniques de récupèration du flux vidéo et audio.

    -

    Cependant Firefox de pas sa nature Open Source utilise "OpenH264" pour lire ces mêmes flux soumis à des DRM et OpenH264 n'implémente pas les mêmes restrictions.

    -

    Sauf que Firefox n'est pas aussi facilement émulé que chrome et cela réduit notre choix de librairies à ... Une seule... Qui est Selenium. (Il existe aussi Pupetteer C# mais j'ai rencontré énormément de soucis avec cette dernière dès que je voulais lancer une vidéo)

    +

    Dans Chrome, le player par défaut utilise une technologie appelée "PCP" ou "Protected Content Playback" qui leur permet de bloquer au moins une partie des techniques de récupération du flux vidéo et audio.

    +

    Cependant, Firefox de pas sa nature Open Source utilise "Open H264" pour lire ces mêmes flux soumis à des DRM et Open H264 n'implémente pas les mêmes restrictions.

    +

    Sauf que Firefox n'est pas aussi facilement émulé que chrome et cela réduit notre choix de librairies à ... Une seule… Qui est Selenium. (Il existe aussi Pupetteer C# mais j'ai rencontré énormément de soucis avec cette dernière dès que je voulais lancer une vidéo)

    "Firefox dev logo"
    -

    {: style="height:150px;width:150px"}

    Mais même si la documentation est plutôt maigre parfois, c'est une bonne librairie qui permet de très bien contrôler une instance de chrome ou de Firefox.

    Contrôler le navigateur

    Maintenant que l'on sait quel navigateur simuler et avec quelle technologie, on peut passer à la réalisation.

    Ce qu'il y a de bien avec Selenium, c'est qu'on a un certain nombre de commandes très haut niveau qui nous permettent de contrôler un navigateur de manière plutôt précise.

    -

    Je vais décrire ici la procédure habituelle utilisée sous une forme de recette de cuisine pour que l'on puisse facilement comprendre ce qu'il se passe.

    -

    Durant cette explication je vais parler à un moment de Cookies, ne vous en faites pas c'est le sous chapitre suivant qui va vous en parler.

    -

    Recette de cuisine pour récupèrer des images de la F1TV :

    +

    Je vais décrire ici la procédure habituelle utilisée sous une forme de recette de cuisine pour que l'on puisse simplement comprendre ce qu'il se passe.

    +

    Durant cette explication, je vais parler à un moment de Cookies, ne vous en faites pas, c'est le sous-chapitre suivant qui va vous en parler.

    +

    Recette de cuisine pour récupérer des images de la F1TV :

    1. Démarrer une instance de navigateur avec les bons arguments
    2. -
    3. Ajouter les bons paramêtres pour ne pas se faire flag comme un bot
    4. +
    5. Ajouter les bons paramètres pour ne pas se faire flag comme un bot
    6. Naviguer sur la page de la F1TV
    7. Ajouter les cookies de connexion pour avoir accès au contenu de la page
    8. Naviguer sur la page du Grand Prix demandé
    9. @@ -1975,24 +2307,24 @@ Je pense donc que c'est justement pour éviter que des petits malins puissent si
    10. Cliquer sur l'invite de cookies
    11. Attendre cinq secondes le temps que la page se reload
    12. Cliquer sur le bouton qui permet de passer du feed live à la DATA CHANNEL
    13. -
    14. Appuyer sur Espace pour faire apparaitre le bouton d'accès au paramêtres
    15. -
    16. Cliquer sur le menu déroulant des résolution
    17. -
    18. Trouver l'option 1080P et la selectionner
    19. +
    20. Appuyer sur Espace pour faire apparaitre le bouton d'accès au paramètres
    21. +
    22. Cliquer sur le menu déroulant des résolutions
    23. +
    24. Trouver l'option 1080P et la sélectionner
    25. Cliquer sur le bouton qui met la vidéo en plein écran
    26. -
    27. Prendre de screenshots à intervales réguliers
    28. +
    29. Prendre de screenshots à intervalles réguliers
    -

    Pour faire toutes ces actions on doit récupèrer les éléments selon leur ID ou leur classe.

    +

    Pour faire toutes ces actions, on doit récupérer les éléments selon leur ID ou leur classe.

    Voici un exemple qui récupère le bouton de plein écran et qui clique dessus :

    IWebElement fullScreenButton = Driver.FindElement(By.ClassName("bmpui-ui-fullscreentogglebutton"));
     fullScreenButton.Click();
     
    -

    Ca peut paraître plutôt simple dit comme ca et quand tout fonctionne ca l'est mais la difficulté vient du fait que à peu près nimporte laquelle de ces étapes peut rater et qu'il faut donc faire un bon système de gestion d'erreurs qui puisse aider l'utilisateur en cas de problème.

    -

    Parfois il est aussi difficile de trouver un élément selon son ID,sa classe, ou sa value.

    -

    Par exemple l'option qui permet de passer en 1080P peut avoir comme value 1080_9011456 ou 1080_9011200 si on refresh la page. Cela demande de passer par des expression régulières ce qui n'est pas compliqué en soi mais c'est toutes ces petites choses qui rendent le processus long à mettre en place.

    -

    Il faut dire aussi que les sites ne sont pas forcément très content de voir des bots passer car cela peut être un risque de DDOS et de Scraping (Comme moi) et donc ils mettent en place des systèmes pour nous empêcher de faire ce que l'on veut

    -

    On peut utiliser différntes techniques pour passer outre ces restrictions comme :

    +

    Ça peut paraître plutôt simple dit comme ça et quand tout fonctionne ça l'est, mais la difficulté vient du fait qu'à peu près n'importe laquelle de ces étapes peut rater et qu'il faut donc faire un bon système de gestion d'erreurs qui puisse aider l'utilisateur en cas de problème.

    +

    Parfois, il est aussi difficile de trouver un élément selon son ID, sa classe, ou sa value.

    +

    Par exemple, l'option qui permet de passer en 1080P peut avoir comme value 1080_9011456 ou 1080_9011200 si on refresh la page. Cela demande de passer par des expressions régulières, ce qui n'est pas compliqué en soi, mais ce sont toutes ces petites choses qui rendent le processus long à mettre en place.

    +

    Il faut dire aussi que les sites ne sont pas forcément très contents de voir des bots passer, car cela peut être un risque de DDOS et de Scraping (Comme moi) et donc ils mettent en place des systèmes pour nous empêcher de faire ce que l'on veut.

    +

    On peut utiliser différentes techniques pour passer outre ces restrictions comme :

      -
    • Changer son UserAgent
    • +
    • Changer son User Agent
    • Changer sa résolution
    • Ne pas avoir des patterns trop prévisibles
    • Avoir un historique
    • @@ -2001,25 +2333,25 @@ Je pense donc que c'est justement pour éviter que des petits malins puissent si
    • Passer par un proxy pour ne pas se faire flag
    • Utiliser des librairies plus discrètes
    -

    J'ai eu l'occasion de tester toutes ces methodes pour tenter de passer derrière les radars de la F1TV et visiblement j'ai réussi pour les pages principales mais pas pour les pages de Login.

    -

    Il faut savoir que la bataille entre bots et propriétaires de sites est un grand jeu du chat et de la souris et que les plateformes innovent constamment leur sécurité. Et il se trouve que la partie login de la F1TV est hebergée autre part que le reste du site chez Amazon et que elle possède les meilleures sécurités que j'aie pu voir. Aucunes des methodes que j'ai citées et d'autres encore que j'ai essayé n'ont réussi à fourvoyer le système.

    -

    J'ai donc été obligé de faire appel à la connexion par Cookies pour pouvoir accèder au reste du site internet.

    -

    Récupèrer les cookies ?

    -

    Alors, on va mettre de côté toutes les questions de sécurité et de violation de la vie privée et de protection des données des utilisateurs pour ce chapitre. Car pour faire simple, je siphonne TOUS les cookies de la persone qui utilise mon app.

    -

    Alors évidemment ca n'est pas pour faire des bétises avec et c'est pour une "bonne" raison, mais bon quand même ca peut faire bizarre comme ca.

    -

    Je pense que vous savez déja ce qu'est un Cookie, mais je vais quand même faire un petit point la dessus car c'est important pour la suite.

    -

    Quand on va sur un site internet et que l'on se connecte avec nos identifiants nous sommes connectés sur la session.

    -

    Cependant, si on quitte le site ou que l'on ferme le navigateur, le site ne peut pas garder en mémoire que c'est bien vous quand le lendemain vous retournez dessus. Pour palier à cette limitation on a inventé cette chose magnifique (hem...) que sont les cookies !

    +

    J'ai eu l'occasion de tester toutes ces méthodes pour tenter de passer derrière les radars de la F1TV et visiblement, j'ai réussi pour les pages principales, mais pas pour les pages de Login.

    +

    Il faut savoir que la bataille entre bots et propriétaires de sites est un grand jeu du chat et de la souris et que les plateformes innovent constamment leur sécurité. Et il se trouve que la partie login de la F1TV est hébergée autre part que le reste du site chez Amazon et qu'elle possède les meilleures sécurités que j'aie pu voir. Aucunes des méthodes que j'ai citées et d'autres encore que j'ai essayé n'ont réussi à fourvoyer le système.

    +

    J'ai donc été obligé de faire appel à la connexion par Cookies pour pouvoir accéder au reste du site internet.

    +

    Récupérer les cookies ?

    +

    Alors, on va mettre de côté toutes les questions de sécurité et de violation de la vie privée et de protection des données des utilisateurs pour ce chapitre. Car pour faire simple, je siphonne TOUS les cookies de la personne qui utilise mon app.

    +

    Alors évidemment ça n'est pas pour faire des bêtises avec et c'est pour une "bonne" raison, mais bon quand même ça peut faire bizarre comme ça.

    +

    Je pense que vous savez déjà ce qu'est un Cookie, mais je vais malgré tout faire un petit point là-dessus, car c'est important pour la suite.

    +

    Quand on va sur un site internet et que l'on se connecte avec nos identifiants, nous sommes connectés sur la session.

    +

    Cependant, si on quitte le site ou que l'on ferme le navigateur, le site ne peut pas garder en mémoire que c'est bien vous quand le lendemain, vous retournez dessus. Pour palier à cette limitation, on a inventé cette chose magnifique (hem...) que sont les cookies !

    Les cookies sont des petits fichiers qui sont stockés dans votre navigateur et qui peuvent servir à beaucoup de choses comme traquer votre activité sur internet et espionner un peu ou aussi par exemple, servir de jeton de connexion.

    -

    L'idée est que quand vous vous connectez sur le site avec vos identifiants, le site envoie un petit fichier dans votre navigateur qui va servir de jeton. Et donc quand vous reviendrez, le site pourra voir que vous avez le jeton et vous connectera automatiquement.

    -

    Ca peut paraître génial, et c'est effectivement bien pratique, cependant ce n'est pas sans risques. En effet, imaginons qu'un acteur malveillant parvienne à s'emparer de ces petits fichiers, il pourrait ainsi facilement se faire passer pour vous. Alors un cookie expire à un moment donné pour temperer les risques, mais ils sont toujours présents.

    -

    Dans notre cas on peut vite comprendre pourquoi cela peut être intéressant de récupèrer ces cookies. En effet, si on peut mettre la main sur le jeton de connexion de l'utilisateur de notre application. On pourra se connecter automatiquement à la F1TV et aller prendre des photos directement sans que l'utilisateur aie à faire quoi que ce soit.

    -

    Sauf que les cookies ne sont pas stockés en clair comme ca. Evidemment Google Chrome a mis en place quelques techniques pour éviter que nimporte qui puisse s'amuser à aller taper dans les cookies de la machine.

    -

    Tous les cookies sont stockés dans une base de données sqlite avec les noms en clair et les valeurs sont encryptées en utilisant la methode AES 256 qui est une methode de cryptage très utilisée et efficace.

    -

    Tellement efficace qu'il serait complêtement inutile de tenter de les decrypter en utilisant de la force brute pour trouver la valeur ou même une attaque de dictionnaire ou quoi que ce soit.

    -

    Si ces valeurs peuvent être encodées et décodées en local sur la machine sans connexion internet, cela veut dire que la clé est stockée sur la machine. Et si je peux mettre la mais sur cette clé alors je pourrai lire tous les cookies de la machine.

    -

    Cette clé est stocké dans les fichiers de Google Chrome sous Google\Chrome\User Data\Local State. Et dans ce fichier on peut trouver une liste de données en clé valeurs et on peut trouver la clé sous os_crypt encrypted_key. On pourrait croire que l'on a déja touché le jackpot mais il reste encore une étape. Cette clé est cryptée en utilisant le système d'encryption de Windows. Cette encryption est utilisée pour empêcher des utilisateurs non connectés d'accèder à certaines données. Mais comme nous sommes connectés nous pouvons facilement utiliser les librairies de decryption pour trouver la valeur de cette clé.

    -

    Et à partir de la il suffit d'utiliser cette clé pour décrypter tous les cookies de la machine pour aller chercher ceux qui nous intéressent.

    +

    L'idée est que quand vous vous connectez sur le site avec vos identifiants, le site envoie un petit fichier dans votre navigateur qui va servir de jeton. Et donc lorsque vous reviendrez, le site pourra voir que vous avez le jeton et vous connectera automatiquement.

    +

    Ça peut paraître génial, et c'est effectivement bien pratique, cependant ce n'est pas sans risques. En effet, imaginons qu'un acteur malveillant parvienne à s'emparer de ces petits fichiers, il pourrait ainsi facilement se faire passer pour vous. Alors un cookie expire à un moment donné pour tempérer les risques, mais ils sont toujours présents.

    +

    Dans notre cas, on peut vite comprendre pourquoi cela peut être intéressant de récupérer ces cookies. En effet, si on peut mettre la main sur le jeton de connexion de l'utilisateur de notre application. On pourra se connecter automatiquement à la F1TV et aller prendre des photos directement sans que l'utilisateur ait à faire quoi que ce soit.

    +

    Sauf que les cookies ne sont pas stockés en clair comme ça. Évidemment, Google Chrome a mis en place quelques techniques pour éviter que n'importe qui puisse s'amuser à aller taper dans les cookies de la machine.

    +

    Tous les cookies sont stockés dans une base de données SQLite avec les noms en clair et les valeurs sont encryptées en utilisant la méthode AES 256 qui est une méthode de cryptage très utilisée et efficace.

    +

    Tellement efficace qu'il serait complètement inutile de tenter de les décrypter en utilisant de la force brute pour trouver la valeur ou même une attaque de dictionnaire ou quoi que ce soit.

    +

    Si ces valeurs peuvent être encodées et décodées en local sur la machine sans connexion internet, cela veut dire que la clé est stockée sur la machine. Et si je peux mettre là, mais sur cette clé, alors je pourrai lire tous les cookies de la machine.

    +

    Cette clé est stockée dans les fichiers de Google Chrome sous Google\Chrome\User Data\Local State. Et dans ce fichier, on peut trouver une liste de données en clé valeurs et on peut trouver la clé sous os_crypt encrypted_key. On pourrait croire que l'on a déjà touché le jackpot, mais il reste encore une étape. Cette clé est cryptée en utilisant le système d'encryption de Windows. Cette encryption est utilisée pour empêcher des utilisateurs non connectés d'accéder à certaines données. Mais comme nous sommes connectés, nous pouvons facilement utiliser les librairies de décryptions pour trouver la valeur de cette clé.

    +

    Et à partir de là, il suffit d'utiliser cette clé pour décrypter tous les cookies de la machine pour aller chercher ceux qui nous intéressent.

    Voici un exemple du code python qui permet d'aller chercher la clé d'encryption dans les fichiers de Google Chrome :

    def get_master_key():
         with open(
    @@ -2125,36 +2457,36 @@ Je pense donc que c'est justement pour éviter que des petits malins puissent si
                 return value;
             }
     
    -

    Maintenant que l'on sait comment simuler et manipuler un navigateur internet, que l'on sait comment se connecter sur le compte F1TV de l'utilisateur sans qu'il n'aie rien à faire. On a tous les ingrédients pour automatiquement récupèrer des images de la F1TV du Grand Prix que l'on souhaite.

    +

    Maintenant que l'on sait comment simuler et manipuler un navigateur internet, que l'on sait comment se connecter sur le compte F1TV de l'utilisateur sans qu'il n’aie rien à faire. On a tous les ingrédients pour automatiquement récupérer des images de la F1TV du Grand Prix que l'on souhaite.

    Calibration

    -

    Maintenant que l'on a des images de la page Data de la F1TV on pourrait croire que c'est tout bon on peut direct passer à la partie OCR. Mais que nenni !

    -

    Le gros soucis de l'OCR c'est que sa précision est grandement réduite dès que l'on augmente la taille de la zone de recherche. Même simplement deux mots sur une image, si on les prends dans images individuelles on a de grandes chances de trouver quelque chose mais si on les mets les deux sur la même et que on tente l'OCR on va avoir de résultats bien moins bons.

    -

    Et puis il faut aussi voir que selon les données que je cherche je ne peux pas faire le même traitement.

    +

    Maintenant que l'on a des images de la page Data de la F1TV, on pourrait croire que c'est tout bon, on peut direct passer à la partie OCR. Mais que nenni !

    +

    Le gros souci de l'OCR c'est que sa précision est grandement réduite dès que l'on augmente la taille de la zone de recherche. Même simplement deux mots sur une image, si on les prend dans les images individuelles, on a de grandes chances de trouver quelque chose, mais si on les met les deux sur la même et qu'on tente l'OCR, on va avoir de résultats bien moins bons.

    +

    Et puis il faut aussi voir que selon les données que je cherche, je ne peux pas faire le même traitement.

    Par exemple, savoir si le DRS est allumé, savoir quels pneus chausse un pilote et depuis combien de tours et savoir quel est le temps de son dernier tour, ce sont des informations qui demandent des traitements qui n'ont rien à voir.

    Il faut donc pouvoir dire au programme d'OCR ou se trouvent les informations et quelle est leur nature pour qu'il puisse les décoder.

    -

    Il faut donc faire une calibration qui puisse donner toutes les infos importantes mais qui en même temps soit facile à utiliser car un utilisateur doit être capable de le faire assez facilement.

    -

    Voici la liste des informations que l'on doit récupèrer :

    +

    Il faut donc faire une calibration qui puisse donner toutes les infos importantes, mais qui en même temps soit facile à utiliser, car un utilisateur doit être capable de le faire assez facilement.

    +

    Voici la liste des informations que l'on doit récupérer :

      -
    • La liste des pilotes présent sur le Grand Prix
    • +
    • La liste des pilotes présents sur le Grand Prix
    • La position de la zone principale
    • La position de chaque zone de pilote
    • -
    • La position de toutes les Window sur chaque zone de pilote
    • +
    • La position de toutes les Windows sur chaque zone de pilote
    -

    Le but a été de retirer le plus d'étapes possibles à l'utilisateur. Techniquement j'aurais pu faire une version complêtement manuelle mais ca aurait pris trop de temps alors il y a des systèmes qui permettent de rendre cette tâche moins pénible.

    +

    Le but a été de retirer le plus d'étapes possibles à l'utilisateur. Techniquement, j'aurais pu faire une version complètement manuelle, mais ça aurait pris trop de temps, alors il y a des systèmes qui permettent de rendre cette tâche moins pénible.

    Liste des pilotes
    -

    Pour la liste des pilotes j'ai pensé à utiliser une API externe pour avoir une liste dans laquelle on pourrait selectionner des noms de pilotes sauf que j'ai abandonné l'idée car je trouvais que le projet avait déja bien assez de points qui dépendent de l'exterieur.

    -

    Il y a donc une liste de pilotes dans laquelle on peut ajouter ou supprimer des noms de pilotes. L'idéal serait de mettre tous les pilotes de reserve comme ca si un pilote est malade sur une course on a pas besoin de venir changer la liste.

    +

    Pour la liste des pilotes, j'ai pensé à utiliser une API externe pour avoir une liste dans laquelle on pourrait sélectionner des noms de pilotes, sauf que j'ai abandonné l'idée, car je trouvais que le projet avait déjà bien assez de points qui dépendent de l'extérieur.

    +

    Il y a donc une liste de pilotes dans laquelle on peut ajouter ou supprimer des noms de pilotes. L'idéal serait de mettre tous les pilotes de réserve, comme ça si un pilote est malade sur une course, on n'a pas besoin de venir changer la liste.

    Zone principale
    -

    Pour la zone principale c'est complêtement manuel, on attend de l'utilisateur deux points x,y sur l'image pour ensuite avoir une idée de ou est sensé se trouver la zone.

    +

    Pour la zone principale, c'est entièrement manuel, on attend de l'utilisateur deux points x, y sur l'image pour ensuite avoir une idée d'où est censé se trouver la zone.

    "Exemple de zone principale"
    Zones pilotes
    -

    C'est la que ca devient intéressant. L'utilisateur n'a pas besoin de faire quoi que ce soit pour que le programme sache ou sont les zones des pilotes.

    -

    J'aurais pu le faire manuellement en faisant choisir à l'utilisateur de donner deux points qui correspondent à la première zone et extrapoler pour en avoir 20. Sauf que si l'utilisateur n'est pas précis au pixel près (et même comme ca parfois) le vingtième pilote se retrouve avec une zone complêtement desaxée.

    -

    La, le programme va "simplement" effectuer une reconaissance de texte sur toute l'image. Les résultats ne nous intéressent pas vraiment tout ce que l'on veut c'est la position des textes.

    -

    Avec les position il est facile de determiner ou sont toutes les zones de pilotes et donc sans que l'utilisateur n'aie à toucher quoi que ce soit, dès qu'il a donné les infos pour la zone principale, les zones de pilotes sont determinées.

    +

    C'est là que ça devient intéressant. L'utilisateur n'a pas besoin de faire quoi que ce soit pour que le programme sache où sont les zones des pilotes.

    +

    J'aurais pu le faire manuellement en faisant choisir à l'utilisateur de donner deux points qui correspondent à la première zone et extrapoler pour en avoir 20. Sauf que si l'utilisateur n'est pas précis au pixel près (et même comme ça parfois) le vingtième pilote se retrouve avec une zone complètement désaxée.

    +

    Là, le programme va "simplement" effectuer une reconnaissance de texte sur toute l'image. Les résultats ne nous intéressent pas vraiment, tout ce que l'on veut, c'est la position des textes.

    +

    Avec les positions, il est facile de déterminer où sont toutes les zones de pilotes et donc sans que l'utilisateur ait à toucher quoi que ce soit, dès qu'il a donné les infos pour la zone principale, les zones de pilotes sont déterminées.

    "Exemple zone pilote"
    @@ -2224,7 +2556,7 @@ Je pense donc que c'est justement pour éviter que des petits malins puissent si }
    Windows pilotes
    -

    C'est ici que c'est le plus pénible pour l'utilisateur, il doit selectionner manuellement les positions des fenêtres de données. Ensuite dès que l'utilisateur a donnée une position pour chaque window, on applique les positions pour chaque zone de pilote.

    +

    C'est ici que c'est le plus pénible pour l'utilisateur, il doit sélectionner manuellement les positions des fenêtres de données. Ensuite, dès que l'utilisateur a donné une position pour chaque window, on applique les positions pour chaque zone de pilote.

    Il y a plusieurs types de windows et selon le type le traitement est différent comme je l'ai dit plus tôt. Voici des exemples concrets :

    @@ -2240,9 +2572,9 @@ Je pense donc que c'est justement pour éviter que des petits malins puissent si

    Il est important que toutes ces zones soient transmises avec le plus de précision possible pour que l'OCR puisse bien faire son boulot.

    Stockage
    -

    Ensuite quand l'utilisateur a finit de configurer son flux, la configuration est stockée pour qu'il puisse ensuite la réutiliser pour tous les autres Grand Prix de l'année.

    -

    Le stockage est fait sous format JSON et est fait pour que le programme d'OCR puisse lire dedans toutes les infos nescessaires.

    -

    Cela fait des fichiers plutôt gros mais je n'avais pas vraiment le choix. J'ai testé une version avec seulement les infos de la première zone de pilote mais avec l'interpolation, les derniers pilotes se retrouvent avec des zones clairement pas à la bonne taille.

    +

    Ensuite, quand l'utilisateur a fini de configurer son flux, la configuration est stockée pour qu'il puisse ensuite la réutiliser pour tous les autres Grand Prix de l'année.

    +

    Le stockage est fait sous format JSON et est fait pour que le programme d'OCR puisse lire dedans toutes les infos nécessaires.

    +

    Cela fait des fichiers plutôt gros, mais je n'avais pas vraiment le choix. J'ai testé une version avec seulement les infos de la première zone de pilote, mais avec l'interpolation, les derniers pilotes se retrouvent avec des zones clairement pas à la bonne taille.

    Voici un exemple de ce à quoi ressemble le JSON final :

    {
       "Main": {
    @@ -2408,55 +2740,55 @@ Je pense donc que c'est justement pour éviter que des petits malins puissent si
       }
     }
     
    -

    Et avec tout ca. L'OCR peut démarrer dans de bonnes conditions

    +

    Et avec tout ça. L'OCR peut démarrer dans de bonnes conditions

    OCR

    -

    Maintenant que on a des images qui arrivent automatiquement et que l'on sait ou se trouvent les informations sur ces dites images, je vais parler de la seconde partie du projet qui parle du processus de reconnaissance de data sur une image du feed DATA de la F1TV.

    +

    Maintenant qu'on a des images qui arrivent automatiquement et que l'on sait où se trouvent les informations sur ces dites images, je vais parler de la seconde partie du projet qui parle du processus de reconnaissance de data sur une image du feed DATA de la F1TV.

    C'est je pense la partie qui a demandé le plus tests et de refactor.

    Toute la partie OCR a été développée dans un projet à part avant d'être intégrée dans le projet final.

    -

    Il faut savoir que la reconnaissance est différente celon ce que l'on cherche. Je vais donc décomposer cette partie du document en sous rubriques selon les données recherchées.

    -

    Mais avant ca je dois expliquer certains concepts qui seront importants.

    +

    Il faut savoir que la reconnaissance est différente selon ce que l'on cherche. Je vais donc décomposer cette partie du document en sous rubriques selon les données recherchées.

    +

    Mais avant ça, je dois expliquer certains concepts qui seront importants.

    Fonctionnement général

    Voici un screenshot de la page DATA de la F1TV que le programme va recevoir :

    "Screen F1TV"
    -

    Si on regarde de loin on peut se dire que la structure est plutôt simple mais c'est loin d'être le cas. -On peut y voir au moins 4 zones contenant de l'information dans un format différent.

    +

    Si on regarde de loin, on peut se dire que la structure est plutôt simple, mais c'est loin d'être le cas. +On peut y voir au moins quatre zones contenant de l'information dans un format différent.

    "Zones principales"
    -

    Dans l'exemple ci dessus on peut voir 3 zones mais on aurait également pu comprendre la zone de position des pilotes autour du circuit pour faire 4.

    -

    Ces 4 zones sont très différentes et contiennent d'autres informations. Pour ce travail de diplôme je ne m'occupe que de la zone principale. Mais je pense que le titre et les infos de circuit ne prendrait pas tant de temps que ca à implémenter.

    -

    J'ai utilisé le mot "Zone" plus haut et ca n'est pas juste un mot utilisé au hasard. C'est le nom de l'objet que j'utilise pour les représenter dans mon programme. Mais comme c'est important de bien comprendre ce concept avant de continuer je vais vous l'expliquer.

    +

    Dans l'exemple ci-dessus, on peut voir trois zones, mais on aurait également pu comprendre la zone de position des pilotes autour du circuit pour faire 4.

    +

    Ces quatre zones sont très différentes et contiennent d'autres informations. Pour ce travail de diplôme, je ne m'occupe que de la zone principale. Mais je pense que le titre et les infos de circuit ne prendrait pas tant de temps que ça à implémenter.

    +

    J'ai utilisé le mot "Zone" plus haut et ça n'est pas juste un mot utilisé au hasard. C'est le nom de l'objet que j'utilise pour les représenter dans mon programme. Mais comme c'est important de bien comprendre ce concept avant de continuer, je vais vous l'expliquer.

    ZONE :

    L'objet "Zone" parent est un objet qui est une zone d'image. Je m'explique, le but d'une zone est d'être un morceau d'une image plus grande.

    Le but d'une Zone est de contenir une liste de plus petites Zones ou bien une liste de "Window" (j'explique ce que c'est juste après). Elle contient la portion d'image qui la concerne et ses propres dimensions.

    -

    Le parent zone ne prévoit que de pouvoir ajouter ou supprimer des éléments des listes de zones ou de windows ainsi qu'une methode qui permet d'aller chercher toutes informations des livres qu'elle contient.

    -

    L'intérêt d'une zone est de pouvoir compartimenter une image dans des parties intéressantes au niveau de la reconnaissance mais pas de traiter d'information.

    +

    Le parent zone ne prévoit que de pouvoir ajouter ou supprimer des éléments des listes de zones ou de fenêtres ainsi qu'une méthode qui permet d'aller chercher toutes informations des livres qu'elle contient.

    +

    L'intérêt d'une zone est de pouvoir compartimenter une image dans des parties intéressantes au niveau de la reconnaissance, mais pas de traiter d'information.

    WINDOW :

    -

    L'objet "Window" est un objet qui peut ressembler beaucoup à l'objet "Zone". En effet elle aussi est une partie d'une image plus grande et contient ses dimensions, mais elle se distingue en deux points importants.

    +

    L'objet "Window" est un objet qui peut ressembler beaucoup à l'objet "Zone". En effet, elle aussi est une partie d'une image plus grande et contient ses dimensions, mais elle se distingue en deux points importants.

    • Elle ne contient pas d'autres Zones ou Windows
    • Elle peut retourner les informations écrites sur son image.
    -

    Toutes les Window qui héritent du parent Window peuvent implémenter une methode qui permet de renvoyer ce qui peut être décodé sur son image. Les enfants peuvent aussi aller piocher dans les nombresues methodes de récupèration de données contenues dans le parent Window. Mieux vaut réutiliser le plus possible que de réinventer la roue pour chaque Window.

    +

    Toutes les Window qui héritent du parent Window peuvent implémenter une méthode qui permet de renvoyer ce qui peut être décodé sur son image. Les enfants peuvent aussi aller piocher dans les nombreuses méthodes de récupération de données contenues dans le parent Window. Il vaut mieux réutiliser le plus possible que de réinventer la roue pour chaque Window.

    Une analogie un peu bancale pourrait se présenter comme la suivante :

    -

    La zone est une armoire ou une bibliotèque. Si c'est une zone qui contient d'autres zones c'est une bibliotèque et chacune de ces sous-zones sont des armoires. Leur unique but est de contenir de manière ordonnée des objets qui eux contiennent de l'information.

    -

    Les livres ici sont les Windows. Ils contiennet de l'information et sont stockés dans des armoires et on y accède en allant dans la bonne bibliotèque et en allant dans la bonne armoire.

    -

    Dernières choses pour comprendre le diagramme:

    +

    La zone est une armoire ou une bibliothèque. Si c'est une zone qui contient d'autres zones, c'est une bibliothèque et chacune de ces sous-zones sont des armoires. Leur unique but est de contenir de manière ordonnée des objets qui eux contiennent de l'information.

    +

    Les livres ici sont les Windows. Ils contiennent de l'information et sont stockés dans des armoires et on y accède en allant dans la bonne bibliothèque et en allant dans la bonne armoire.

    +

    Dernières choses pour comprendre le diagramme :

      -
    • Il existe une Main Zone qui est une des 4 grandes zones dont je parlais dans la décomposition de l'image.
    • +
    • Il existe une Main Zone qui est une des quatre grandes zones dont je parlais dans la décomposition de l'image.
    • Il existe aussi des "Driver Zone" qui sont de plus petites zones contenues dans la Main Zone qui et qui ne contiennent que les informations d'un pilote.
    • L'objet Window n'est quasi jamais utilisé, c'est presque tout le temps des enfants de Window plus spécifiques qui sont utilisés, le but est que chaque type d'information sur l'image aie son type de window.
    -

    Voila donc un petit diagramme qui montre le découpage du programme :

    +

    Voilà donc un petit diagramme qui montre le découpage du programme :

    "Diagramme explicatif de l'architecture des zones"
    -

    Pour visualiser encore un peu mieux comment ce découpage prend forme voici ce que chaque zone et Window contient.

    +

    Pour visualiser encore un peu mieux comment ce découpage prend forme, voici ce que chaque zone et Window contient.

    Main Zone :

    @@ -2488,30 +2820,30 @@ On peut y voir au moins 4 zones contenant de l'information dans un format diffé
    "Exemple de fenêtre pneus"

    Il existe d'autres types de Window mais ce sont les principaux.

    -

    On se rend assez facilement compte que chacunes de ces windows va avoir besoin d'un traitement spécifique car la manière de reconnaitre le pneu utilisé et le temps au tour ne peut pas être la même.

    -

    Pour résumer, on a un programme qui prend en entrée un fichier de configuration, qui prend des images de la F1TV et les découpe dans des ZONES qui elles même sont découpées en WINDOWS pour qu'on puisse plus facilement les décoder.

    -

    Maintenant qu'on a une liste de différent types de zones on peut commencer à chercher ce qu'il y a marqué dessus.

    -

    Pour cela il faut dabord comprendre un petit peu comment l'OCR fonctionne et comment des libraries comme Tesseract fonctionnent pour donner du texte en partant d'une image.

    -

    Pour faire très simple, nous avons un modèle qui est entrainé. C'est à dire que on donne à un programme un très grand nombre de mots ou de lettres en lui disant ce que contiennent chaques images. Ensuite le programme va créer des matrices de convolutions pour chaque lettre avec comme objectif de detecter les points communs entre les lettres pour créer un alpphabet.

    -

    Par exemple la matric de la lettre 'H' donnerait un poids important à des lignes verticales connectées par une ligne centrale. Et si on fournis assez de données de bonne qualité au modèle, les matrices peuvent être très efficace à detecter si une lettre est un H ou un M.

    -

    Il y a pleins d'autres methodes comme l'utilisation d'un dictionnaire de mots de la langue pour permettre la reconnaissance de mots même si une lettre au milieu n'est pas comprise ou en ajoutant d'autres informations sur le contexte mais ca ne nous intéresse pas ici.

    -

    C'est important de comprendre comment cette reconnaissance de caractères avec des matrices fonctionne car cela va nous aider à préparer nos données pour lui rendre la vie facile et augmenter la précision de nos résultats.

    +

    On se rend assez facilement compte que chacunes de ces Windows va avoir besoin d'un traitement spécifique, car la manière de reconnaitre le pneu utilisé et le temps au tour ne peut pas être la même.

    +

    Pour résumer, on a un programme qui prend en entrée un fichier de configuration, qui prend des images de la F1TV et les découpe dans des ZONES qui elles même sont découpées en WINDOWS pour qu'on puisse plus simplement les décoder.

    +

    Maintenant qu'on a une liste de différents types de zones, on peut commencer à chercher ce qu'il y a marqué dessus.

    +

    Pour cela, il faut d'abord comprendre un petit peu comment l'OCR fonctionne et comment des libraires comme Tesseract fonctionnent pour donner du texte en partant d'une image.

    +

    Pour faire très simple, nous avons un modèle qui est entrainé. C'est-à-dire qu'on donne à un programme un très grand nombre de mots ou de lettres en lui disant ce que contiennent chaques images. Ensuite le programme va créer des matrices de convolutions pour chaque lettre avec comme objectif de détecter les points communs entre les lettres pour créer un alpphabet.

    +

    Par exemple, la matrice de la lettre 'H' donnerait un poids important à des lignes verticales connectées par une ligne centrale. Et si on fournit assez de données de bonne qualité au modèle, les matrices peuvent être très efficace à détecter si une lettre est un H ou un M.

    +

    Il y a pleins d'autres méthodes comme l'utilisation d'un dictionnaire de mots de la langue pour permettre la reconnaissance de mots même si une lettre au milieu n'est pas comprise ou en ajoutant d'autres informations sur le contexte, mais ça ne nous intéresse pas ici.

    +

    C'est important de comprendre comment cette reconnaissance de caractères avec des matrices fonctionne, car cela va nous aider à préparer nos données pour lui rendre la vie facile et augmenter la précision de nos résultats.

    Filtres et traitement
    -

    On peut essayer de donner toutes nos images directement à Tesseract pour qu'il reconnaisse tout le texte qu'il y voit mais on risque de se retrouver avec des résultats au mieux inconsistents.

    -

    Dans notre cas, le soucis est que les chiffres et lettres sont beaucoup trop petits. Ils ne font parfoisd que 10 pixels de haut et cela fait que il n'est pas forcément facile de toujours les différencier. De plus, comme ils sont petits, les artéfacts d'aliasing sont assez violents et peuvent grandement déformer une lettre ou un chiffre.

    +

    On peut essayer de donner toutes nos images directement à Tesseract pour qu'il reconnaisse tout le texte qu'il y voit, mais on risque de se retrouver avec des résultats au mieux inconsistants.

    +

    Dans notre cas, le souci est que les chiffres et lettres sont beaucoup trop petits. Ils ne font parfois que 10 pixels de haut et cela fait qu'il n'est pas forcément aisé de toujours les différencier. De plus, comme ils sont petits, les artéfacts d'aliasing sont assez violents et peuvent grandement déformer une lettre ou un chiffre.

    Exemple :

    -

    Prenons le chiffre 9. Dans l'image il peut être représenté de cette manière :

    +

    Prenons le chiffre 9. Dans l'image, il peut être représenté de cette manière :

    "Exemple de chiffre avant post traitement"
    -

    On peut voir qu'il est flou, pour nous cela ne pose pas de problème et je pense que à peu près nimporte qui peut dire que c'est un 9.

    -

    Cependant comme les contours sont flous et même si on essaie de retirer le background :

    +

    On peut voir qu'il est flou, pour nous cela ne pose pas de problème et je pense qu'à peu près n'importe qui peut dire que c'est un 9.

    +

    Cependant, comme les contours sont flous et même si on essaie de retirer le background :

    - -
    "9 avec anti aliasing"
    + +
    "9 avec antialiasing"
    -

    On voit que le 9 n'est pas clairement définit. En effet on pourrait le comprendre comme :

    +

    On voit que le 9 n'est pas clairement défini. En effet, on pourrait le comprendre comme :

    "Premier exemple de contours"
    @@ -2521,14 +2853,14 @@ On peut y voir au moins 4 zones contenant de l'information dans un format diffé
    "Second exemple de contours"
    -

    Voire même simplement comme :

    +

    Voire simplement comme :

    - -
    "Exemple de coutour généreux"
    + +
    "Exemple de contour généreux"
    -

    Et on se rend bien compte que les performances de detection ne sont pas les mêmes dans ces trois cas.

    +

    Et on se rend bien compte que les performances de détection ne sont pas les mêmes dans ces trois cas.

    Il faut donc faire un certain post traitement des images pour supprimer les éléments parasites, les couleurs, et augmenter la visibilité des contours importants.

    -

    Mais chaque type de donnée va avoir des methodes de post traitement différents.

    +

    Mais chaque type de donnée va avoir des méthodes de post traitement différents.

    Donc voici les différents types de reconnaissance et leur post traitements :

    Texte

    Alors ce type de reconnaissance est utilisé par la WINDOW du nom de pilote et de la position du pilote.

    @@ -2539,14 +2871,14 @@ On peut y voir au moins 4 zones contenant de l'information dans un format diffé
    "Exemple texte cru"
    -

    Ce texte peut paraitre bon, cependant quand on le lance dans Tesseract, il ne va pas toujours donner un résultat parfait. Il faut aussi savoir qu'il y a des noms pas mal plus pénibles que Tesseract a plus de mal à reconnaitres, soit à cause des lettres utilisées, soit car le nom est un nom d'une autre région et qui ne veut rien dire en anglais ce qui empêche l'utilisation de dictionnaire (Ex : Tsunoda est un nom japonais et parfois il est difficile pour Tesseract de le reconnaitre car si une lettre pose problême il ne peut pas trouver de contexte qui puisse l'aider).

    +

    Ce texte peut paraitre bon, cependant quand on le lance dans Tesseract, il ne va pas toujours donner un résultat parfait. Il faut aussi savoir qu'il y a des noms pas mal plus pénibles que Tesseract à plus de mal à reconnaître, soit à cause des lettres utilisées, soit, car le nom est un nom d'une autre région et qui ne veut rien dire en anglais, ce qui empêche l'utilisation de dictionnaire (Ex : Tsunoda est un nom japonais et parfois, il est difficile pour Tesseract de le reconnaitre puisque si une lettre pose un problème, il ne peut pas trouver de contexte qui puisse l'aider).

    Donc pour le rendre plus facilement lisible et augmenter les chances que toutes les lettres soient découvertes, voici les étapes que j'ai mis en place.

    -

    1 : J'inverse les couleurs. Je me suis rendu compte que il était souvent plus facile de trouver un noir sur blanc que blanc sur noir. Je ne suis pas sur que cette étape soit capitale cependant.

    +

    1 : J'inverse les couleurs. Je me suis rendu compte qu'il était souvent plus facile de trouver un noir sur blanc que blanc sur noir. Je ne suis pas sûr que cette étape soit capitale cependant

    "Texte inversé"
    -

    2 : Je fais un Treshhold de 165 car avec moins le texte parfois prend trop du background et avec plus les lettres sont trop fines.

    +

    2 : Je fais un Treshhold de 165, car avec moins le texte occasionnellement prend trop du background et avec plus les lettres sont trop fines.

    "Texte après Treshold"
    @@ -2556,93 +2888,93 @@ On peut y voir au moins 4 zones contenant de l'information dans un format diffé
    "Texte après Resize"
    -

    4: Je fais une très rapide Dilatation du texte pour retirer le flou amené par la methode de Resize. Je n'utilise qu'une valeur de 1 car je ne veux pas trop changer comment le texte est modelé je veux juste retirer le flou.

    +

    4 : Je fais une très rapide Dilatation du texte pour retirer le flou amené par la méthode de Resize. Je n'utilise qu'une valeur de 1, car je ne veux pas trop changer comment le texte est modelé, je veux juste retirer le flou.

    "Texte après Dilatation"
    -

    Explication des methodes précises plus bas

    -

    Voila pour ce qui est du post processing. Je ne dis pas que ce sont les meilleurs paramêtres possibles mais dans mes tests ce sont ceux qui ont le mieux marchés.

    -

    C'est aussi les premières methodes que j'ai pu développer alors forcément elles n'ont pas le niveau de détails de certaines autres.

    -

    Mais comme même avec ce traitement il n'est pas rare que je me retrouve avec une ou deux lettres pas justes, il faut un moyen d'être sûr que c'est le bon nom qui est trouvé. Ce qu'il y a de pratique avec les noms de pilotes c'est que on sait déja comment ils s'appellent avant le Grand Prix.

    -

    En effet dans le fichier de configuration de la reconnaissance, il y a une liste de noms de pilotes. Cela veut dire que au lieu de chercher à trouver parfaitement les bonnes lettres, on peut simplement essayer de trouver quel nom de pilote ressemble le plus au nom trouvé sur l'image.

    -

    Pour ce faire j'ai utilisé une methode appelée la distance de Levenshtein. Pour faire simple c'est une methode qui va calculer les distances de lettres pour determiner entre des strings laquelle ressemble le plus à une autre.

    -

    Pour résumer le fonctionnement dans lordre :

    +

    Explication des méthodes précises plus bas

    +

    Voilà pour ce qui est du post processing. Je ne dis pas que ce sont les meilleurs paramètres possibles, mais dans mes tests ce sont ceux qui ont le mieux marchés.

    +

    Ce sont aussi les premières méthodes que j'ai pu développer alors forcément, elles n'ont pas le niveau de détails de certaines autres.

    +

    Mais comme même avec ce traitement, il n'est pas rare que je me retrouve avec une ou deux lettres pas justes, il faut un moyen d'être sûr que c'est le bon nom qui est trouvé. Ce qu'il y a de pratique avec les noms de pilotes, c'est qu'on sait déjà comment ils s'appellent avant le Grand Prix.

    +

    En effet, dans le fichier de configuration de la reconnaissance, il y a une liste de noms de pilotes. Cela veut dire qu'au lieu de chercher à trouver parfaitement les bonnes lettres, on peut simplement essayer de trouver quel nom de pilote ressemble le plus au nom trouvé sur l'image.

    +

    Pour ce faire, j'ai utilisé une méthode appelée la distance de Levenshtein. Pour faire simple, c'est une méthode qui va calculer les distances de lettres pour déterminer entre des strings laquelle ressemble le plus à une autre.

    +

    Pour résumer le fonctionnement dans l'ordre :

      -
    • On prend l'image on la traite
    • +
    • On prend l'image, on la traite
    • On envoie l'image traitée à Tesseract
    • On trouve quel nom de pilote ressemble le plus à ce résultat
    • On renvoie le nom du pilote
    Chiffres
    -

    Cette methode en réalité utilise simplement la même methode que celle qui va récupèrer le texte sur une image. Cependant, la, on envoie à Tesseract l'information qu'il ne peut trouver que des chiffres sur l'image ce qui lui permet d'être beaucoup plus précis et de ne pas confondre un 9 avec un P ou un 11 avec un H PAR EXEMPLE (non pas que ca me soit arrivé très régulièrement et que ca me soit resté dans la gorge évidemment)

    -

    L'avantage c'est que cette methode ne demande même pas de traitement de la donnée en sortie de Tesseract. On éspère simplement que le post traitement aura suffit.

    +

    Cette méthode en réalité utilise juste la même méthode que celle qui va récupérer le texte sur une image. Cependant, là, on envoie à Tesseract l'information qu'il ne peut trouver que des chiffres sur l'image, ce qui lui permet d'être beaucoup plus précis et de ne pas confondre un 9 avec un P ou un 11 avec un H PAR EXEMPLE (non pas que ça me soit arrivé très régulièrement et que ça me soit resté dans la gorge évidemment).

    +

    L'avantage, c'est que cette méthode ne demande même pas de traitement de la donnée en sortie de Tesseract. On espère simplement que le post traitement aura suffit.

    TEMPS :

    -

    Cette methode regroupe la détection de temps au tour. Il y a trois grands types de WINDOW qui sont concernées :

    +

    Cette méthode regroupe la détection de temps au tour. Il y a trois grands types de WINDOW qui sont concernées :

    • La WINDOW du temps au tour
    • La WINDOW du retard sur le leader
    • La WINDOW des secteurs
    -

    La grande différence ce sont les ordres de grandeur. Les temps au tour sont en général entre 50 secondes et 2 minutes. Tandis que les secteurs sont entre 20 et 30 secondes alors que le retard sur le leader peut-être de plusieurs minutes.

    +

    La grande différence ce sont les ordres de grandeur. Les temps au tour sont en général entre 50 secondes et deux minutes. Tandis que les secteurs sont entre 20 et 30 secondes alors que le retard sur le leader peut être de plusieurs minutes.

    Cependant, tous ces temps possèdent le même type de post-traitement avant d'être envoyés à Tesseract.

    Voici un exemple de temps au tour avant toute transformation :

    "Temps au tour avant traitement"
    -

    On peut avoir l'impression que ce texte est tout à fait lisible et facile à décoder surtout quand on le voit de loin comme ca. Cependant, il faut imaginer que ces chiffres font 13 pixels de haut en comptant le flou et comme expliqué plus haut ce flou dans ces echelles est terrible.

    +

    On peut avoir l'impression que ce texte est tout à fait lisible et facile à décoder, surtout quand on le voit de loin comme ça. Cependant, il faut imaginer que ces chiffres font 13 pixels de haut en comptant le flou et comme expliqué plus haut, ce flou dans ces échelles est terrible.

    "Temps au tour zoomé"
    -

    Si on donne cette image à Tesseract, les '3' deviennent des '9', des '9' deviennent des '8', des '2' deviennent eux aussi des '9', le tout parfois inversement et de manière complêtement imprévisible. Ca n'est simplement pas utilisable.

    -

    Cette partie est un peu plus complexe car si la detection n'est pas fiable les chiffres sont simplement inutilisables. Si à tout moment un temps au tour de 1:39.106 devient 1:32.108 c'est juste pas possible.

    +

    Si on donne cette image à Tesseract, les '3' deviennent des '9', des '9' deviennent des '8', des '2' deviennent, eux aussi, des '9', le tout parfois inversement et de manière complètement imprévisible. Ça n'est simplement pas utilisable.

    +

    Cette partie est un peu plus complexe, car si la détection n'est pas fiable, les chiffres sont juste inutilisables. Si à tout moment un temps au tour de 1:39.106 devient 1:32.108 c'est juste pas possible.

    Voici donc les étapes de post-traitement que j'ai mis en place pour leur détection :

    -

    1: J'applique un Treshold de 185 pour enlever les ambiguités d'alisaising et avoir une image en noir et blanc claire. La valeur de 185 est assez élevée car le but est de vraiment garder uniquement les contours. Comme les chiffres se ressemlent beaucoup plu que les lettres, il faut tenter le plus possible de conserver leur formes spécifiques. Je me suis rendu compte que cette valeur était une de celles qui marchent le mieux.

    +

    1 : J'applique un Treshold de 185 pour enlever les ambiguïtés d'alisaising et avoir une image en noir et blanc claire. La valeur de 185 est assez élevée, car le but est de vraiment garder uniquement les contours. Comme les chiffres se ressemblent beaucoup plus que les lettres, il faut tenter le plus possible de conserver leurs formes spécifiques. Je me suis rendu compte que cette valeur était une de celles qui marchent le mieux.

    "Temps au tour après Treshold"
    -

    2: J'applique un Resize de 2 pour augmenter la résolution des chiffres et permettre une meilleure détection. Le but est d'avoir plus de pixels et donc de permettre à Tesseract de mieux utiliser ses matrices de convolution.

    +

    2 : J'applique un Resize de 2 pour augmenter la résolution des chiffres et permettre une meilleure détection. Le but est d'avoir plus de pixels et donc de permettre à Tesseract de mieux utiliser ses matrices de convolution.

    "Temps au tour après Resize"
    -

    3: Comme le Resize amène du flou, j'utilise une methode de Dilatation qui me permet de retirer ce flou et de remplir un peu plus certaines parties qui ont été un peu laissée par le Resize;

    +

    3 : Comme le Resize amène du flou, j'utilise une méthode de Dilatation qui me permet de retirer ce flou et de remplir un peu plus certaines parties qui ont été un peu laissée par le Resize;

    "Temps au tour après Dilatation"
    -

    4: Contrairement aux mots plus haut, la rondeur ajoutée par la dilatation n'est pas vraiment désirée. En effet, elle peut rendre confuse certains chiffres et empêcher Tesseract de bien trouver le chiffre. Alors j'applique une Erosion qui me permet de contrecarrer en partie les rondeurs ajoutées par la dilatation et retrouver des chiffres bien formées. Pour l'Erosion et la Dilatation j'ai utilisé une valeur de 1 car je ne voulais pas trop changer les chiffres.

    +

    4 : Contrairement aux mots plus haut, la rondeur ajoutée par la dilatation n'est pas vraiment désirée. En effet, elle peut rendre confuse certains chiffres et empêcher Tesseract de bien trouver le chiffre. Alors, j'applique une Érosion qui me permet de contrecarrer en partie les rondeurs ajoutées par la dilatation et retrouver des chiffres bien formés. Pour l'Érosion et la Dilatation, j'ai utilisé une valeur de 1, car je ne voulais pas trop changer les chiffres.

    - -
    "Temps au tour après Erosion"
    + +
    "Temps au tour après Érosion"
    -

    Explication des methodes précises plus bas

    -

    Et avec ce post processing on retrouve de plutôts bon résultats qui demandent peu de traitement.

    -

    Le traitement dépend du type de WINDOW cependant.

    +

    Explication des méthodes précises plus bas

    +

    Et avec ce post processing, on retrouve de plutôt bons résultats qui demandent peu de traitement.

    +

    Le traitement dépend du type de WINDOW cependant :

      -
    • Pour les secteurs on indique à Tesseract que les caractères autorisés sont : "0123456789."
    • -
    • Pour les temps au tour on autorise plutôt "0123456789.:"
    • -
    • Et pour les écarts on autorise "0123456789.+"
    • +
    • Pour les secteurs, on indique à Tesseract que les caractères autorisés sont : "0123456789."
    • +
    • Pour les temps au tour, on autorise plutôt "0123456789.:"
    • +
    • Et pour les écarts, on autorise "0123456789.+"
    -

    Ensuite on récupère une liste de chiffres qui'il va falloir transformer en milisecondes pour faciliter le stockage et l'envoi.

    -

    Le programme nettoie un peu la chaine avant de la convertir. Par exemple parfois le ':' de 1:34.456 est compris comme un '1' ou un '2' et il faut faire attention à detecter quand ca arriver.

    -

    Je passe les détails du reste du nettoyage car c'est vraiment du cas par cas mais quand on a finit de nettoyer la chaine on peut transformer les chaines de minutes secondes et milisecondes en un total de milisecondes.

    +

    Ensuite, on récupère une liste de chiffres qu'il va falloir transformer en millisecondes pour faciliter le stockage et l'envoi.

    +

    Le programme nettoie un peu la chaine avant de la convertir. Par exemple parfois le ':' de 1:34.456 est compris comme un '1' ou un '2' et il faut faire attention à détecter quand ça arriver.

    +

    Je passe les détails du reste du nettoyage, car c'est vraiment du cas par cas, mais quand on a fini de nettoyer la chaine, on peut transformer les chaines de minutes, secondes et millisecondes en un total de millisecondes.

    Pour résumer le fonctionnement dans l'ordre :

    • On prend l'image et on lui applique une série de filtres
    • On envoie l'image filtrée à Tesseract
    • On nettoie le résultat Tesseract pour compenser certains biais
    • -
    • On convertis le résultat en milisecondes
    • +
    • On convertit le résultat en millisecondes
    les chiffres (2)
    -

    Il faut savoir que avec la dernière version de l'émulateur (dont je vais parler un peu plus tard)

    +

    Il faut savoir qu'avec la dernière version de l'émulateur (dont je vais parler un peu plus tard).

    Pneus
    -

    La on arrive sur la partie la plus pénible.

    -

    Pour comprendre la problématique il faut d'abord faire un petit point sur comment les pneus fonctionnent en Formule 1.

    -

    Depuis 2019 en Formule 1 nous avons 5 grandes familles de pneus :

    +

    Là, on arrive sur la partie la plus pénible.

    +

    Pour comprendre la problématique, il faut d'abord faire un petit point sur comment les pneus fonctionnent en Formule 1.

    +

    Depuis 2019, en Formule 1 nous avons 5 grandes familles de pneus :

    • Les pneus tendres
    • Les pneus medium
    • @@ -2654,56 +2986,56 @@ On peut y voir au moins 4 zones contenant de l'information dans un format diffé
      "Gamme de pneus Pirelli"
      -

      Les trois premiers pneus sont des pneus faits pour piste sèche, le pneu intermédiaire pour piste humide et le neu pluie pour la pluie.

      -

      Chaque pneu a sa durée de vie et son niveau de performance propre mais je ne vais pas rentrer dans le détail ici. Tout ce qu'il faut savoir ce que savoir sur quel pneu chaque pilote est et depuis combien de temps il les chausse est une information très importante.

      +

      Les trois premiers pneus sont des pneus faits pour piste sèche, le pneu intermédiaire pour piste humide et le pneu pluie pour la pluie.

      +

      Chaque pneu a sa durée de vie et son niveau de performance propre, mais je ne vais pas rentrer dans le détail ici. Tout ce qu'il faut savoir, ce que savoir sur quel pneu chaque pilote est et depuis combien de temps, il les chausse est une information très importante.

      Chaque pneu a une couleur donnée qui permet de les différencier.

      Voici un exemple de ce à quoi une WINDOW de pneus peut ressembler :

      "Exemple zone pneus 1"
      -

      Mais cette zone peut aussi ressembler à ca :

      +

      Mais cette zone peut aussi ressembler à ça :

      "Exemple zone pneus 2"
      -

      Mais aussi à ca :

      +

      Mais aussi à ça :

      "Exemple zone pneus 3"
      -

      Voire même ca :

      +

      Voire même ça :

      "Exemple zone pneus 4"
      -

      Je pense que vous pouvez tout de suite comprendre la difficulté que représente la tâche de récupèration de données à partir de cette image.

      -

      En gros le fonctionnement de cette zone d'information est assez simple.

      +

      Je pense que vous pouvez tout de suite comprendre la difficulté que représente la tâche de récupération de données à partir de cette image.

      +

      En gros, le fonctionnement de cette zone d'information est assez simple.

      • Au fur et à mesure que la course avance, le trait fait de même.
      • -
      • Le chiffre dans le round tout à droite indique le nombre de tour que le pilote a passé sur ce pneu.
      • +
      • Le chiffre dans le round tout à droite indique le nombre de tours que le pilote a passé sur ce pneu.
      • La couleur indique le type de pneu.
      • -
      • Si il y a une lettre à la place d'un chiffre c'est que c'est le premier tour sur ce pneu. La lettre indique le type de pneu.
      • +
      • S'il y a une lettre à la place d'un chiffre, c'est que c'est le premier tour sur ce pneu. La lettre indique le type de pneu.
      -

      Et pas besoin de dire que si on essaie simplement de donner l'image à Tesseract on ne récupère ni les chiffres ni les lettres correctement si ce n'est pas du tout.

      -

      Il faut donc utiliser une methode qui permette d'isoler le rond le plus à droite, lui appliquer un traitement qui permette à Tesseract de lire ce qu'il y a marqué et qui puisse determiner quel pneu est en train d'être utilisé.

      -

      J'ai décidé de m'occuper dans un premier temps de trouver ce rond avant d'appliquer les filtres car plus l'image est petite plus les filtres sont rapides.

      -

      Le programme va tirer un trait depuis le bord droit de la zone, et il va avancer vers la gauche jusqu'à trouver un obstacle. Je détecte un obstacle si le pixel sur lequel est mon trait possède une valeur de plus de 0x50 dans le channel R,G ou B. J'ai trouvé en faisant des tests que les couleurs de background de la F1TV ne dépassaient jamais ces valeurs.

      -

      Ensuite après avoir trouvé le premier obstacle, je récupère une zone qui doit englober le cercle.

      +

      Et pas besoin de dire que si on essaie simplement de donner l'image à Tesseract, on ne récupère ni les chiffres ni les lettres correctement si ce n'est pas du tout.

      +

      Il faut donc utiliser une méthode qui permette d'isoler le rond le plus à droite, lui appliquer un traitement qui permette à Tesseract de lire ce qu'il y a marqué et qui puisse déterminer quel pneu est en train d'être utilisé.

      +

      J'ai décidé de m'occuper dans un premier temps de trouver ce rond avant d'appliquer les filtres, car plus l'image est petite, plus les filtres sont rapides.

      +

      Le programme va tirer un trait depuis le bord droit de la zone, et il va avancer vers la gauche jusqu'à trouver un obstacle. Je détecte un obstacle si le pixel sur lequel est mon trait possède une valeur de plus de 0x50 dans le channel R, G ou B. J'ai trouvé en faisant des tests que les couleurs de background de la F1TV ne dépassaient jamais ces valeurs.

      +

      Ensuite, après avoir trouvé le premier obstacle, je récupère une zone qui doit englober le cercle.

      Voici un exemple avec cette image en entrée :

      - -
      "Zone complête"
      + +
      "Zone complète"
      -

      Elle est automatiquement coupée de cette facon :

      +

      Elle est automatiquement coupée de cette façon :

      "Zone coupée automatiquement"
      -

      Cela me permet d'isoler uniquement ce qui m'intéresse ce qui est très pratique pour Tesseract et pour la detection de couleur.

      -

      Ensuite avec cette image je peux commencer le processus de reconnaissance.

      +

      Cela me permet d'isoler uniquement ce qui m'intéresse, ce qui est très pratique pour Tesseract et pour la détection de couleur.

      +

      Ensuite, avec cette image, je peux commencer le processus de reconnaissance.

      Je commence par faire une moyenne de tous les pixels de l'image en excluant les pixels trop sombres qui font sûrement partie du background ou du chiffre.

      -

      Ensuite j'utilise une methode qui calcule la différence entre la couleur obbtenue et la liste de couleurs possible.

      +

      Ensuite, j'utilise une méthode qui calcule la différence entre la couleur obtenue et la liste de couleurs possible.

      Il y a cinq couleurs des pneus possibles :

      "#ff0000" pneu tendre/soft

      @@ -2730,46 +3062,46 @@ On peut y voir au moins 4 zones contenant de l'information dans un format diffé
      "Couleur d'un pneu pluie"
      -

      Ce qui est pratique c'est que même dans les cas ou il n'y a pas beaucoup de couleur comme celui la :

      +

      Ce qui est pratique, c'est que même dans les cas où il n'y a pas beaucoup de couleur comme celui-là :

      "Pneu dur avec 0 tours"

      On arrive à une couleur moyenne de :

      - -
      "Couleur moyenne de l'image ci dessus après soustraction du background"
      + +
      "Couleur moyenne de l'image ci-dessus après soustraction du background"
      -

      Et il est donc assez facile de determiner le type de pneu en question.

      +

      Et il est donc assez facile de déterminer le type de pneu en question.

      Attention, les résultats peuvent être très vite dérangés par la couleur du pneu précédent si le découpage de la fenêtre n'a pas été assez précis.

      -

      Ensuite il "suffit" de lire le chiffre dans le rond et si on arrive pas à le lire alors c'est que c'est une lettre et on sait que le nombre de tours est donc de 0.

      -

      Maintenant vient le moment très sympatique de la lecture du chiffre.

      -

      Vous saurez que Tesseract en plus de detester les grandes images et les images avec des couleurs, deteste également les formes dans une image. Donc dans notre cas, le round de couleur autour du chiffre, même si il n'est pas complet, il interfère avec la reconnaissance et empêche de bien lire le chiffre.

      -

      Il faut donc retirer le background et ensuite la couleur. Sauf que comme le chiffre est de la couleur du background, si on retire le background et ensuite la couleur il ne reste plus rien. Il faut donc retirer le background AUTOUR du rond, et ensuite si on retire la couleur il devrait rester le chiffre sur fond blanc.

      -

      Pour se faire, j'ai tiré des traits depuis les bords de l'image jusqu'à ce qu'ils rencontrent le rond. Ensuite je retire tous les pixels entre le rond et les bords de l'image ce qui nous donne ceci :

      +

      Ensuite il "suffit" de lire le chiffre dans le rond et si on n'arrive pas à le lire alors c'est que c'est une lettre et on sait que le nombre de tours est donc de 0.

      +

      Maintenant vient le moment très sympathique de la lecture du chiffre.

      +

      Vous saurez que Tesseract, en plus de détester les grandes images et les images avec des couleurs, déteste également les formes dans une image. Ainsi dans notre cas, le round de couleur autour du chiffre, même s'il n'est pas complet, il interfère avec la reconnaissance et empêche de bien lire le chiffre.

      +

      Il faut donc retirer le background et ensuite la couleur. Sauf que comme le chiffre est de la couleur du background, si on retire le background et ensuite la couleur, il ne reste plus rien. Il faut alors retirer le background AUTOUR du rond, et ensuite si on retire la couleur, il devrait rester le chiffre sur fond blanc.

      +

      Pour ce faire, j'ai tiré des traits depuis les bords de l'image jusqu'à ce qu'ils rencontrent le rond. Ensuite, je retire tous les pixels entre le rond et les bords de l'image, ce qui nous donne ceci :

      "Zone pneu avec le background en moins"
      -

      Ensuite on peu retirer les pixels qui ont une valeur dans un channel RGB plus haute qu'un certain seuil :

      +

      Ensuite, on peut retirer les pixels qui ont une valeur dans un channel RGB plus haute qu'un certain seuil :

      - -
      "Zone avec le reste des couleurs supprimmées"
      + +
      "Zone avec le reste des couleurs supprimées"
      -

      Et la on a ce que l'on veut !

      -

      A partir de la c'est les filtres que l'on connait qui sont utilisés pour en faire une image plus facile à utiliser par Tesseract.

      -

      1 : On effectue un Resize de facteur 4 (oui c'est beaucoup mais en même temps le chiffre est vraiment petit à la base) qui permet d'avoir une image d'une bien meilleure résolution.

      +

      Et là, on a ce que l'on veut !

      +

      À partir de là, ce sont les filtres que l'on connait qui sont utilisés pour en faire une image plus facile à utiliser par Tesseract.

      +

      1 : On effectue un Resize de facteur 4 (oui, c'est beaucoup, mais en même temps le chiffre est vraiment petit à la base) qui permet d'avoir une image d'une bien meilleure résolution.

      "Filtre 1"
      -

      2: On fait une Dilatation de facteur 1 pour retirer tout le flou de l'image pour aider Tesseract

      +

      2 : On fait une Dilatation de facteur 1 pour retirer tout le flou de l'image pour aider Tesseract

      "Resultat"

      Et on a un chiffre qui est utilisable par Tesseract !

      -

      Explication des methodes précises plus bas

      +

      Explication des méthodes précises plus bas

      Pour résumer :

      • On prend l'image de la zone et on la crop pour ne garder que la partie essentielle
      • @@ -2782,39 +3114,39 @@ On peut y voir au moins 4 zones contenant de l'information dans un format diffé
      • On détermine le nombre de tours que le pilote a fait avec ses pneus avec le résultat de Tesseract
      DRS
      -

      Bon ca c'était plutôt simple j'ai simplement vérifié si la moyenne de vert dépassait une certaine valeur et puis voila.

      -
      Filtres et methodes sur les images
      -

      Dans ce projet on a du utiliser différentes methodes d'édition d'image que ce soit sous forme de filtres ou de modification de l'image directement. -Voici un sommaire des methodes utilisées et comment elles fonctionnent.

      +

      Bon ça, c'était plutôt simple, j'ai simplement vérifié si la moyenne de vert dépassait une certaine valeur et puis voila.

      +
      Filtres et méthodes sur les images
      +

      Dans ce projet, on a dû utiliser différentes méthodes d'édition d'image, que ce soit sous forme de filtres ou de modification de l'image directement. +Voici un sommaire des méthodes utilisées et comment elles fonctionnent.

      Tresholding

      -

      Cette methode sert à passer d'une image en couleurs à une image binaire noir blanc. +

      Cette méthode sert à passer d'une image en couleurs à une image binaire noir-blanc. C'est une étape très importante pour l'OCR car elle permet (si bien faite) d'isoler du texte de son background.

      Un exemple ici :

      "Exemple treshold"
      -

      Le fonctionnement est assez simple mais il peut être fait de différentes manières mais dans mon cas voici comment l'algorythme fonctionne sachant qu'il demande en entrée la Bitmap que l'on veut modifier ainsi que la valeur de Treshold :

      +

      Le fonctionnement est assez simple, mais il peut être fait de différentes manières, mais dans mon cas voici comment l'algorithme fonctionne sachant qu'il demande en entrée la Bitmap que l'on veut modifier ainsi que la valeur de Treshold :

        -
      1. On parcours chaque pixel de l'image
      2. -
      3. On convertir la couleur du pixel en une valeur de gris pour avoir la même valeur en R,G et B (Formule utilisée : grey = R x 0.3 + G x 0.59 + B x 0.11)
      4. -
      5. Si le résultat de la valeur de gris est au dessus de la valeur de treshold, le pixel est passé en blanc complet et dans le cas contraire il est passé en noir complet
      6. +
      7. On parcourt chaque pixel de l'image
      8. +
      9. On convertit la couleur du pixel en une valeur de gris pour avoir la même valeur en R,G et B (Formule utilisée : gray = R x 0.3 + G x 0.59 + B x 0.11)
      10. +
      11. Si le résultat de la valeur de gris est au-dessus de la valeur de treshold, le pixel est passé en blanc complet et dans le cas contraire, il est passé en noir complet.
      12. On retourne la Bitmap modifiée
      -

      Un algorythme pas forcément complexe mais qui peut augmenter de manière titanesque les chances de réussir une OCR

      +

      Un algorithme pas forcément complexe, mais qui peut augmenter de manière titanesque les chances de réussir une OCR

      Resize

      -

      Cette methode sert à augmenter la résolution d'une image pour améliorer la précision de l'algorythme de Tesseract. En effet, avec trop peu de pixels, la matrice de convolution n'est pas toujours aussi efficace.

      -

      Il ne faut pas confondre cette methode d'augmentation de la taille avec une simple interpolation. En effet une augmentation de taille interpolée ne vas pas vraiment changer la résolution, l'image sera toujours aussi pixelisée, seulement, les pixels seront composées de plus de pixels comme dans l'exemple ci dessous :

      +

      Cette méthode sert à augmenter la résolution d'une image pour améliorer la précision de l'algorithme de Tesseract. En effet, avec trop peu de pixels, la matrice de convolution n'est pas toujours aussi efficace.

      +

      Il ne faut pas confondre cette méthode d'augmentation de la taille avec une simple interpolation. En effet, une augmentation de taille interpolée ne va pas vraiment changer la résolution, l'image sera toujours aussi pixelisée, seulement, les pixels seront composés de plus de pixels comme dans l'exemple ci-dessous :

      "Exemple d'interpolation linéaire"
      -

      Dans mon projet j'utilise de l'interpolation bicubique qui va créer de l'information pour tenter de combler le vide et produire une image réellement plus grande et avec plus de details mais en ajoutant du flou.

      +

      Dans mon projet, j'utilise de l'interpolation bicubique qui va créer de l'information pour tenter de combler le vide et produire une image réellement plus grande et avec plus de détails, mais en ajoutant du flou.

      "Exemple des différents types d'interpolation"
      -

      Le but est d'aller chercher dans les pixels alentours les couleurs qui sont déja présente et de jouer avec des poids pour tenter de faire une prédiction de ce que ce pixel aurait été si l'image avait plus de detail.

      +

      Le but est d'aller chercher dans les pixels alentours les couleurs qui sont déjà présentes et de jouer avec des poids pour tenter de faire une prédiction de ce que ce pixel aurait été si l'image avait plus de détails.

      Voici un exemple assez parlant :

      @@ -2824,20 +3156,20 @@ C'est une étape très importante pour l'OCR car elle permet (si bien faite) d'i
      "Exemple interpolation bicubique (après)"
      -

      On pourrait croire que c'est inutile mais dans le contexte de Tesseract ajouter des détails pour tenter de simuler une meilleure résolution même en créant du flou est intéressant pour mieux remplir la matrice de convolution.

      +

      On pourrait croire que c'est inutile, mais dans le contexte de Tesseract ajouter des détails pour tenter de simuler une meilleure résolution même en créant du flou est intéressant pour mieux remplir la matrice de convolution.

      Mais il est possible de réduire ce flou avec d'autres méthodes également.

      -

      (Dans mon code je n'ai pas utilisé du code fait main mais j'utilise une librairie qui me permet de le faire)

      -

      Il faut simplement faire attention car c'est un procédé assez lourd en performances.

      -

      Dilatation et Erosion

      -

      Cette methode et la suivante font partie des methodes de transformation morphologiques.

      -

      Ces methodes sont utilisées pour accentuer les formes et les epaissir ou les réduire et les affiner. Elles possèdent l'aventage également de retirer le flou d'une image ce qui est très pratique si utilisé après l'utilisation de methodes comme Resize.

      -

      Je ne vais pas trop rentrer dans les détails de ces methodes car leur fonctionnement est un peu plus lourd en math si on veut faire une véritable explication du pourquoi et du comment ca marche aussi bien. Pour notre projet je dirais que l'important est de savoir que ce sont deux outils très pratiques pour changer la morphologie des lettres et des chiffres et qu'on peut les utiliser pour corriger du flou et/ou des artéfacts apparus lors de la binarisation de l'image ou de la suppression de fond.

      +

      (Dans mon code, je n'ai pas utilisé du code fait main, mais j'utilise une librairie qui me permet de le faire)

      +

      Il faut simplement faire attention, car c'est un procédé assez lourd en performances.

      +

      Dilatation et Érosion

      +

      Cette méthode et la suivante font partie des méthodes de transformation morphologiques.

      +

      Ces méthodes sont utilisées pour accentuer les formes et les épaissir ou les réduire et les affiner. Elles possèdent l'aventage aussi de retirer le flou d'une image ce qui est très pratique si utilisé après l'utilisation de méthodes comme Resize.

      +

      Je ne vais pas trop rentrer dans les détails de ces méthodes, car leur fonctionnement est un peu plus lourd en math si on veut faire une véritable explication du pourquoi et du comment ça marche aussi bien. Pour notre projet, je dirais que l'important est de savoir que ce sont deux outils très pratiques pour changer la morphologie des lettres et des chiffres et qu'on peut les utiliser pour corriger du flou et/ou des artéfacts apparus lors de la binarisation de l'image ou de la suppression de fond.

      Remove Background

      -

      Cette methode est assez simple et est juste une methode qui va passer en revue tous les pixels de l'image et si la couleur d'un pixel s'apparente à celle d'un pixel de fond il est passé en noir total ou en blanc total. Le but est de permettre au reste du programme de fonctionner avec des couleurs moins ambigues.

      -

      Une variante spécialisée pour la reconnaissance des pneus appelée affectueusement Remove Useless cherche à atteindre le même bu mais est bien plus soffistiquée et spécialisée pour retirer le background autour d'un cercle de couleur pour ensuite retirer la couleur et qu'il ne reste qu'un chiffre. Pour plus de details voir la detection de pneus.

      -

      Il y aussi d'autre methodes comme un filtre Gaussien ou Highlight countour que j'ai du développer mais que je n'ai pas utilisé donc je ne vais pas en parler ici.

      +

      Cette méthode est assez simple et est juste une méthode qui va passer en revue tous les pixels de l'image et si la couleur d'un pixel s'apparente à celle d'un pixel de fond, il est passé en noir total ou en blanc total. Le but est de permettre au reste du programme de fonctionner avec des couleurs moins ambiguës.

      +

      Une variante spécialisée pour la reconnaissance des pneus appelée affectueusement Remove Useless cherche à atteindre le même bu, mais est bien plus sophistiquée et spécialisée pour retirer le background autour d'un cercle de couleur pour ensuite retirer la couleur et qu'il ne reste qu'un chiffre. Pour plus de détails, voir la détection de pneus.

      +

      Il y a aussi d'autres méthodes comme un filtre Gaussien ou Highlight countour que j'ai dû développer, mais que je n'ai pas utilisé donc je ne vais pas en parler ici.

      Petit point résolution
      -

      Comme on peut l'imaginer la résolution est extrêmement importante pour l'OCR. Et en avancant sur le projet de l'émulateur je me suis rendu compte qu'il était possible de récupèrer des images en 4K (Plutôt 1080 avec l'upscaling du lecteur). Cela est une superbe nouvelle car cela permet de simplifier énormément le processing sur les différentes windows.

      +

      Comme on peut l'imaginer, la résolution est extrêmement importante pour l'OCR. Et en avançant sur le projet de l'émulateur, je me suis rendu compte qu'il était possible de récupérer des images en 4K (Plutôt 1080 avec l'upscaling du lecteur). Cela est une superbe nouvelle car cela permet de simplifier énormément le processing sur les différentes windows.

      Quelques exemples pour se faire une idée

      @@ -2852,20 +3184,20 @@ C'est une étape très importante pour l'OCR car elle permet (si bien faite) d'i
      "Echantillon 4K"
      -

      Mais il faut savoir que grâce à cette simplification j'ai pu aussi créer d'autres methodes de filtrage pour certaines parties. Mais la simplification était obligatoire car avec des images aussi grande il n'était simplement pas possible de venir appliquer les mêmes filtres car le temps de traitement serait beaucoup plus long.

      +

      Mais il faut savoir que grâce à cette simplification, j'ai pu aussi créer d'autres méthodes de filtrage pour certaines parties. Mais la simplification était obligatoire, car avec des images aussi grandes, il n'était simplement pas possible de venir appliquer les mêmes filtres car le temps de traitement serait beaucoup plus long.

      J'indique ces changements que après l'explication d'avant car ce sont des changements un peu de dernière minute et que la logique expliquée plus haut a été très importante pour le projet OCR même si tout n'est plus forcément utilisé maintenant que j'ai des images de meilleure qualité.

      -

      Dans la version actuellement disponible la reconnaissance a été simplifiée sous cette forme :

      +

      Dans la version actuellement disponible, la reconnaissance a été simplifiée sous cette forme :

      • Le "GapToLeader" est décodé avec un premier passage de Tresholding à 165 puis un Resize de 2 et une Dilatation de 1 pour retirer le flou
      • -
      • Les "Sectors" sont décodés en utilisant une toute nouvelle methode VanishOxyAction à cause des couleurs parfois appliquées et ensuite simplement une methode de Tresholding de 150 pour rendre le résultat assez propre pour l'OCR.
      • -
      • Le "LapTime" est dabord passé par un Tresholding très strict de 185 pour préparer la SobelEdgeDetection qui est également une nouvelle methode qu'il a été possible d'utiliser grâce à la simplification du reste des processus.
      • -
      • Le "Text" est décodé simplement avec un tresholding de 165 maintenant grâce à l'image 4K.
      • +
      • Les "Sectors" sont décodés en utilisant une toute nouvelle méthode VanishOxyAction à cause des couleurs parfois appliquées et ensuite simplement une methode de Tresholding de 150 pour rendre le résultat assez propre pour l'OCR.
      • +
      • Le "LapTime" est d'abord passé par un Tresholding très strict de 185 pour préparer la SobelEdgeDetection qui est également une nouvelle méthode qu'il a été possible d'utiliser grâce à la simplification du reste des processus.
      • +
      • Le "Text" est décodé juste avec un tresholding de 165 désormais grâce à l'image 4K.
      • Les pneus ont leur propre traitement comme expliqué plus haut auquel on ajoute la Dilatation de 1.
      -

      Comme on peut le voir le traitement est pas mal plus simple mais cela ne veut pas dire que les autres methodes que je n'utilise plus ne sont pas utiles. La reconnaissance n'est pas encore parfaite et je pense que leur utilisation pourrait aider à améliorer les résultats. (Et parfois ces anciennes methodes sont utiles dans les traitements personnalisés des windows elle mêmes comme par exemple les pneus qui utilisent la methode GrayScale pour isoler les couleurs)

      +

      Comme on peut le voir, le traitement est pas mal plus simple, mais cela ne veut pas dire que les autres méthodes que je n'utilise plus ne sont pas utiles. La reconnaissance n'est pas encore parfaite et je pense que leur utilisation pourrait aider à améliorer les résultats. (Et parfois ces anciennes méthodes sont utiles dans les traitements personnalisés des Windows elle même comme par exemple les pneus qui utilisent la méthode GrayScale pour isoler les couleurs)

      VanishOxyAction

      -

      Cette methode est une methode plutôt simple mais qui est importante. Elle se base beaucoup sur le code de la methode Grayscale et sur la methode Tresholding car elle essaie de regrouper le meilleur des deux en règlant quelques soucis que ces dernières crééent.

      -

      Le soucis avec la methode grayscale c'est que quand le texte est de couleur (Ce qui arrive souvent pour les temps de secteurs) la methode GrayScale rend les couleurs dans une nuance de gris un peu trop sombre ce qui fait que ensuite la methode de Tresholding défonce tout.

      +

      Cette méthode est une méthode plutôt simple, mais qui est importante. Elle se base beaucoup sur le code de la méthode Grayscale et sur la méthode Tresholding car elle essaie de regrouper le meilleur dès deux en réglant quelques soucis que ces dernières créaient.

      +

      Les soucis avec la méthode grayscale c'est que quand le texte est de couleur (Ce qui arrive souvent pour les temps de secteurs) la méthode GrayScale rend les couleurs dans une nuance de gris un peu trop sombre ce qui fait qu'ensuite la méthode de Tresholding défonce tout.

      "Exemple de secteur en couleur"
      @@ -2874,32 +3206,32 @@ C'est une étape très importante pour l'OCR car elle permet (si bien faite) d'i
      "Exemple de secteur en grayscale"
      -

      L'idée est alors de prendre pour chaque pixel et de garder uniquement la valeur de R,G ou B la plus haute et de mettre les deux autres canaux au même niveau pour avoir une image blanchie qui puisse être ensuite utilisée avec la methode de Tresholding sans soucis.

      +

      L'idée est alors de prendre pour chaque pixel et de garder uniquement la valeur de R, G ou B la plus haute et de mettre les deux autres canaux au même niveau pour avoir une image blanchie qui puisse être ensuite utilisée avec la méthode de Tresholding sans soucis.

      "Exemple de secteur blanchi avec vanishoxyAction"

      SobelEdgeDetection

      -

      On pourrait se dire que avec ce genre de methode le tresholding est inutile ensuite mais ca n'est pas le cas car le tresholding sert ensuite pour rendre les contours plus ou moins aggressif. Car même si l'image ressemble à une image binarisée, il reste des nuances que le treshold va pouvoir utiliser.

      +

      On pourrait se dire qu'avec ce genre de méthode le tresholding est inutile ensuite, mais ça n'est pas le cas, car le tresholding sert ensuite pour rendre les contours plus ou moins agressif. Parce que même si l'image ressemble à une image binarisée, il reste des nuances que le treshold va pouvoir utiliser.

      SobelEdgeDetection

      -

      Cette methode est une methode assez classique que je n'ai pas designé moi même alors je ne vais pas trop m'épancher dessus.

      -

      En gros on utilise une matrice et une formule mathématique pour redessiner une image et le résultat est une image avec des contours. Je ne l'ai utilisé que pour les temps au tour car ce sont les plus récalcitrants.

      -

      Cette methode a besoin d'une image passée en noir et blanc au préalable à laquelle on applique ensuite les matrrices de filtres. Et avec ces filtres ajoutés à l'image on peut ensuite calculer le "Gradient" pour créer les bords.

      -

      Le seul soucis de cette methode c'est qu'elle est assez gourmande et qu'elle fournit des formes creuses dû à la nature des matrices données.

      +

      Cette méthode est une méthode assez classique que je n'ai pas designé moi-même alors, je ne vais pas trop m'épancher dessus.

      +

      En gros, on utilise une matrice et une formule mathématique pour redessiner une image et le résultat est une image avec des contours. Je ne l'ai utilisé que pour les temps au tour, car ce sont les plus récalcitrants.

      +

      Cette méthode a besoin d'une image passée en noir et blanc au préalable à laquelle on applique ensuite les matrices de filtres. Et avec ces filtres ajoutés à l'image, on peut ensuite calculer le "Gradient" pour créer les bords.

      +

      Le seul souci de cette méthode, c'est qu'elle est assez gourmande et qu'elle fournit des formes creuses dû à la nature des matrices données.

      Voici un exemple de ce dont cette méthode est capable :

      -Artefacts de la detection de bords de Sobel -
      Artefacts de la detection de bords de Sobel
      +Artefacts de la détection de bords de Sobel +
      Artefacts de la détection de bords de Sobel
      -

      Apparemment l'OCR aime assez bien cette methode et elle permet de beaucoup moins souvent oublier les '.' ou ':'

      +

      Apparemment l'OCR aime assez bien cette méthode et elle permet de beaucoup moins souvent oublier les '.' ou ':'

      Traitement des données

      -

      C'est bien gentil de recevoir des résultats de l'OCR, cependant on ne peut pas souvent les utiliser comme tels. En effet les resultats ne sont pas très constants et demandent d'être verifiés pour savoir si ils doivent être pris en compte.

      -

      Le post traitement de ces données dépend complêtement du contexte et donc il est différent pour chque type de window.

      +

      C'est bien gentil de recevoir des résultats de l'OCR, cependant on ne peut pas souvent les utiliser comme tels. En effet, les résultats ne sont pas très constants et demandent d'être vérifiés pour savoir s'ils doivent être pris en compte.

      +

      Le post traitement de ces données dépend complètement du contexte et donc il est différent pour chaque type de window.

      Voici un florilège des différents types de traitements :

      • Traitement du nom de pilote
      -

      Rien de plus que ce qui est déja détaillé dans la partie OCR

      +

      Rien de plus que ce qui est déjà détaillé dans la partie OCR

      • Traitement des pneus
      @@ -2907,13 +3239,13 @@ C'est une étape très importante pour l'OCR car elle permet (si bien faite) d'i
      • Traitement des temps
      -

      La par contre c'est intéressant. Dans un monde parfait je pourrais simplement prendre les résultats de l'OCR et les traiter directement. Mais comme nous vivons dans un monde ou la souffrance et la douleur sont les seules choses autorisées on ne peut pas.

      -

      Le problème vient du fait que les temps que l'on peut trouver sur la F1TV sont encodés avec des '.' et des ':' qui determinent les limites entre les chiffres qui désignent les minutes, les secondes et les milisecondes. Et le soucis avec ces séparateurs c'est qu'ils aiment bien mettre le chaos dans la reconnaissance. Quand ils ne sont pas compris comme des autres chiffres ils sont parfois simplement oubliés ou pris en double c'est un enfer.

      -

      Il faut donc trouver un moyen de detecter quand cela arrive. Et je n'ai pas trouvé de meilleur moyen que de faire du cas par cas.

      -

      Cela peut paraître simple quand on parle par exemple des secteurs. On sasit que on attend deux chiffres avant un '.' et trois chiffres après. Il est donc facile de voir que si je trouve six chiffres et pas de séparation le troisième est le séparateur mal compris.

      -

      Mais l'exemple qui détruit vraiment tout c'est les écarts avec le leader. Autant un temps au tour c'est toujours x:xx.xxx et un temps de secteur c'est xx.xxx. Mais un écart avec le leader ca peut être 0.345 comme 1:12.345. Ce qui fait que quand je 121345 est-ce que c'est 12.345 ou 1:21.345...?

      -

      Souvent on peut quand même déduire mais cela demande de prévoir presque tous les cas limites ce qui est assez pénible.

      -

      On pourrait se dire qu'il suffit de voir si la valeur est trop en dehors des normes. Le soucis c'est que il n'est pas impossible que un temps au tour ou un écart prenne d'un coup une grosse différence. Cela arrive même assez souvent quand des pilotes sortent de la piste.

      +

      Là, par contre, c'est intéressant. Dans un monde parfait, je pourrais simplement prendre les résultats de l'OCR et les traiter directement. Mais comme nous vivons dans un monde ou la souffrance et la douleur sont les seules choses autorisées, on ne peut pas.

      +

      Le problème vient du fait que les temps que l'on peut trouver sur la F1TV sont encodés avec des '.' et des ':' qui déterminent les limites entre les chiffres qui désignent les minutes, les secondes et les millisecondes. Et le souci avec ces séparateurs, c'est qu'ils aiment bien mettre le chaos dans la reconnaissance. Quand ils ne sont pas compris comme des autres chiffres, ils sont parfois juste oubliés ou pris en double, c'est un enfer.

      +

      Il faut donc trouver un moyen de détecter quand cela arrive. Et je n'ai pas trouvé de meilleurs moyens que de faire du cas par cas.

      +

      Cela peut paraître simple quand on parle par exemple des secteurs. On sait qu'on attend deux chiffres avant un '.' et trois chiffres après. Il est ainsi facile de voir que si je trouve six chiffres et pas de séparation, le troisième est le séparateur mal compris.

      +

      Mais l'exemple qui détruit vraiment tout, ce sont les écarts avec le leader. Autant un temps au tour, c'est toujours x:xx.xxx et un temps de secteur, c'est xx.xxx. Mais un écart avec le leader ça peut être 0.345 comme 1:12.345. Ce qui fait que lorsque je reçois 121345 est-ce que c'est 12.345 ou 1:21.345...?

      +

      Souvent, on peut quand même déduire, mais cela demande de prévoir presque tous les cas limites, ce qui est assez pénible.

      +

      On pourrait se dire qu'il suffit de voir si la valeur est trop en dehors des normes. Le souci, c'est qu'il n'est pas impossible qu'un temps au tour ou un écart prenne d'un coup une grosse différence. Cela arrive même assez souvent quand des pilotes sortent de la piste.

      "Exemple temps au tour"
      @@ -2922,20 +3254,20 @@ C'est une étape très importante pour l'OCR car elle permet (si bien faite) d'i
      "Exemple temps secteur"
      -

      Pour ce qui est du DRS et de la position des pilotes, il n'y a pas vraiment de traitement supplémentaire. Non pas car la detection est parfaite, mais par ce que la detection ne peut pas rater de 200 facons. Le DRS ne peut retourner que TRUE ou FALSE et la position du pilote est entre 1 et 20 compris. Le peu de nuance fait que ce sont des cas de figures qui ne demandent pas un traitement particulier au delà de l'OCR

      +

      Pour ce qui est du DRS et de la position des pilotes, il n'y a pas vraiment de traitement supplémentaire. Non pas, car la détection est parfaite, mais par ce que la détection ne peut pas rater de 200 façons. Le DRS ne peut retourner que TRUE ou FALSE et la position du pilote est entre 1 et 20 compris. Le peu de nuance fait que ce sont des cas de figures qui ne demandent pas un traitement particulier au-delà de l'OCR

      Stockage des données

      -

      Dans ce projet le but n'est pas simplement de trouver les données et les afficher. L'intérêt de les récupèrer est de pouvoir les comparer à d'autres données précédentes.

      -

      Le vrai soucis de la F1TV c'est justement que l'on ne peut pas facilement voir les évolutions. On ne peut voir que des "photos" de la situation actuelle de la course.

      -

      Il faut donc garder en mémoire les différentes choses qui se sont passées. Techniquement on pourrait stocker ces données dans de bêtes listes C#. Mais le soucis avec ca c'est que même si des outils comme LinQ existent, ca n'est pas le plus pratique quand on veut faire des recherches complexes.

      -

      Il faut aussi voir que si le projet dans sa forme actuelle aurait peut-être pu se satisfaire de listes simples, le but est d'ensuite pouvoir construire sur ces bases pour faire des predictions et des insertions de stats beaucoup plus intéressantes qui demandent de faire des requêtes complexe rapidement.

      -

      Je me suis dit que la meilleure methode serait d'avoir une base de donnée dans laquelle je peux faire des requètes SQL. Mais commme je n'ai pas besoin de toutes les features de SQl et que je ne veut pas avoir à gèrer un serveur de base de donnée et tout ce qui va avec je me suis dit qu'une bonne option serait d'utiliser SQLITE.

      +

      Dans ce projet, le but n'est pas simplement de trouver les données et les afficher. L'intérêt de les récupérer est de pouvoir les comparer à d'autres données précédentes.

      +

      Le vrai souci de la F1TV c'est justement que l'on ne peut pas facilement voir les évolutions. On ne peut voir que des "photos" de la situation actuelle de la course.

      +

      Il faut donc garder en mémoire les différentes choses qui se sont passées. Techniquement, on pourrait stocker ces données dans de bêtes listes C#. Mais le souci avec ça, c'est que même si des outils comme LinQ existent, ça n'est pas le plus pratique quand on veut faire des recherches complexes.

      +

      Il faut aussi voir que si le projet dans sa forme actuelle aurait peut-être pu se satisfaire de listes simples, le but est d'ensuite pouvoir construire sur ces bases pour faire des prédictions et des insertions de stats beaucoup plus intéressantes qui demandent de faire des requêtes complexe rapidement.

      +

      Je me suis dit que la meilleure méthode serait d'avoir une base de donnée dans laquelle je peux faire des requêtes SQL. Mais, comme je n'ai pas besoin de toutes les features de SQl et que je ne veux pas avoir à gérer un serveur de base de donnée et tout ce qui va avec, je me suis dit qu'une bonne option serait d'utiliser SQLite.

      -
      "Logo Sqlite"
      +
      "Logo SQLite"

      ;

      -

      SQLITE est vraiment pratique car cela me permet d'avoir une DB sans avoir de serveur donc pas vraiment complexe ou quoi que ce soit mais qui conserve les aventages de rapidité et d'utilisation de requetes SQl.

      -

      J'ai créé trois tables dans cette base de donnée SQLITE que voici :

      +

      SQLite est vraiment pratique, car cela me permet d'avoir une DB sans avoir de serveur, donc pas vraiment complexe ou quoi que ce soit, mais qui conserve les avantages de rapidité et d'utilisation de requêtes SQL.

      +

      J'ai créé trois tables dans cette base de donnée SQLite que voici :

      Base de donnée

      Drivers

      @@ -3061,24 +3393,24 @@ C'est une étape très importante pour l'OCR car elle permet (si bien faite) d'i

      La table Drivers sert juste à stocker les différents noms de pilote pour qu'ils soient utilisés dans le reste de la DB

      -

      La table Pitstops n'est pas vraiment utilisée dans l'état actuel du projet. Mais le but était de la remplir dès que le programme détectais un arrêt aux stands. Le but est ensuite de pouvoir construire un classement pondèré en fonction des arrêts des différents pilotes et d'afficher la stats tout le temps sur l'affichage principal. -Elle n'est pas vraiment utilisée car la detection de pitstop n'a pas pu être commplêtée. De par la nature des données récupèrées des pneus et des positions, c'est très difficile de detecter avec prescision un arrêt aux stands.

      -

      La table Stats est la plus importante car elle contient toutes les informations concernant les pilotes à chaque tour. L'idée est qu'elle soit remplie à chaque tour. Les infos ne sont pas scensée être les infos live mais plutôt juste une photo à chaque tour de la situation de chaque pilote pour ensuite pouvoir faire des commparaisons tourspar tours. Des données comme le GapToLeader peuvent évoluer pendant le tour mais on s'en fiche. Ce qui compte vraiment c'est le temps au tour et les secteurs ainsi que les pneus.

      +

      La table Pitstops n'est pas vraiment utilisée dans l'état actuel du projet. Mais le but était de la remplir dès que le programme détectait un arrêt aux stands. Le but est ensuite de pouvoir construire un classement pondéré en fonction des arrêts des différents pilotes et d'afficher la stats tout le temps sur l'affichage principal. +Elle n'est pas réellement utilisée, car la détection de pitstop n'a pas pu être complétée. De par la nature des données récupérées des pneus et des positions, c'est très difficile de détecter avec précision un arrêt aux stands.

      +

      La table Stats est la plus importante parce qu'elle contient toutes les informations concernant les pilotes à chaque tour. L'idée est qu'elle soit remplie à chaque tour. Les infos ne sont pas censées être les infos lives, mais plutôt juste une photo à chaque tour de la situation de chaque pilote pour ensuite pouvoir faire des comparaisons tours par tours. Des données comme le GapToLeader peuvent évoluer pendant le tour, mais on s'en fiche. Ce qui compte vraiment, c'est le temps au tour et les secteurs ainsi que les pneus.

      Quand remplir la base ?

      -

      Dans ce projet il y a deux type d'information. Les informations live qui sont stockées dans des listes et les informations long terme qui sont stockées dans la DB.

      -

      A chaque itération de l'OCR, les données récupèrées sont stockées dans une liste de DRIVERDATA.

      -

      Les DRIVERDATA sont des structures de données qui contiennent toutes les infos d'un pilote à un instant T. Elles peuvent être incomplêtes et sont juste la pour faire de petits calculs et determiner quand insèrer des données permanentes.

      -

      Ce qui nous amène au moment intéressant. Comment on détermine quand il est intéressant d'insèrer des informations dans la base de données.

      -

      Il y a deux cas de figure ou on pourrait vouloir insèrer des infos :

      -
      Quand un pilote a finit un tour
      -

      En effet, j'ai estimé que les seuls moments ou on veut garder une photo de la situation du pilote c'est quand il passe d'un tour à l'autre. +

      Dans ce projet, il y a deux types d'information. Les informations lives qui sont stockés dans des listes et les informations long terme qui sont stockées dans la DB.

      +

      À chaque itération de l'OCR, les données récupérées sont stockées dans une liste de DRIVERDATA.

      +

      Les DRIVERDATA sont des structures de données qui contiennent toutes les infos d'un pilote à un instant T. Elles peuvent être incomplètes et sont juste là pour faire de petits calculs et déterminer quand insérer des données permanentes.

      +

      Ce qui nous amène au moment intéressant. Comment on détermine quand il est intéressant d'insérer des informations dans la base de données.

      +

      Il y a deux cas de figure ou on pourrait vouloir insérer des infos :

      +
      Quand un pilote a fini un tour
      +

      En effet, j'ai estimé que les seuls moments où on veut garder une photo de la situation du pilote, c'est, car il passe d'un tour à l'autre. Le raisonnement est le suivant : -On ne veut pas conserver TOUTES les données car si on prend une phot toutes les trois secondes, la majorité des informations seront redondantes avec les précédentes. -Mais en même temps il ne faut pas rater des changements importants de données. +On ne veut pas conserver TOUTES les données parce que si on prend une photo toutes les trois secondes, la majorité des informations seront redondantes avec les précédentes. +Mais en même temps, il ne faut pas rater des changements importants de données. Les seules données qui changent entre deux passages de l'OCR sont les écarts entre les pilotes et de temps en temps un nouveau secteur s'affiche. Alors que d'un tour à l'autre presque toutes les informations changent. Et on ne perd que les légères fluctuations des écarts entre les pilotes.

      J'ai donc décidé de conserver une photo par tour. Mais c'est bien joli sauf qu'il reste une difficulté : Comment savoir qu'un pilote a fait son tour ?

      -

      Cela peut paraître simple comme question mais elle est plus difficile qu'il n'y parait. Il faut savoir que en F1 un pilote peut être dans son 26ème tour pendant qu'un autre en est à son 24ème. Chaque pilote a sa propre course et au fur et à mesure que les écarts se creusent il peut y avoir un tour voir plusieurs d'écart entre la queue de course et les premiers pilotes.

      -

      Ensuite il faut savoir qu'il n'est pas marqué sur la f1TV dans quel tour chaque pilote est. Il faut donc le déduire en fonction des Data.

      +

      Cela peut paraître simple comme question, mais elle est plus difficile qu'il n'y parait. Il faut savoir qu'en F1 un pilote peut être dans son 26ᵉ tour pendant qu'un autre en est à son 24ᵉ. Chaque pilote a sa propre course et au fur et à mesure que les écarts se creusent, il peut y avoir un tour voir plusieurs d'écart entre la queue de course et les premiers pilotes.

      +

      Ensuite, il faut savoir qu'il n'est pas marqué sur la f1TV dans quel tour chaque pilote est. Il faut donc le déduire en fonction des Data.

      Voici le code le if qui détecte un nouveau tour

      if (DriverDataLogs[i][DriverDataLogs[i].Count - 1].Sector3 != 0
       && DriverDataLogs[i][DriverDataLogs[i].Count - 2].Sector3 == 0
      @@ -3114,7 +3446,7 @@ Les seules données qui changent entre deux passages de l'OCR sont les écarts e
       

      On vérifie aussi que le pneu a bien été detecté en verifiant que le pneu n'est pas de type undefined.

      Le soucis c'est que ce n'est pas rare que l'OCR nous retourne qu'un pneu est vieux de 0 tours et donc il est absolument impossible de faire confiance à cette metric.

      Si on veut utiliser cette methode pour trouver les Pitstop il va falloir avant tout améliorer l'OCR sur ce point.

      -

      Ce soucis mets en lumière un principe assez important de l'informatique "Ggarbage in, Garbage out". Si les données que je recoit ne sont pas géniales, le résultat ne sera pas génial non plus. Ce qui est frustrant c'est que la detection des pneus n'est pas si mal mais entre les chiffres qui se chevauchent ce qui nous fait lire 0 alors que c'est juste un un '1' derrière un 'H' ou le 1% du temps ou le programme se trompe, on ne peut pour l'instant tout simplement rien faire de mieux.

      +

      Ce soucis mets en lumière un principe assez important de l'informatique "Ggarbage in, Garbage out". Si les données que je recoit ne sont pas géniales, le résultat ne sera pas génial non plus. Ce qui est frustran,t c'est que la detection des pneus n'est pas si mal mais entre les chiffres qui se chevauchent ce qui nous fait lire 0 alors que c'est juste un un '1' derrière un 'H' ou le 1% du temps ou le programme se trompe, on ne peut pour l'instant tout simplement rien faire de mieux.

      Affichage des données

      Maintenant que l'on a stocké toutes ces données, il faut en faire quelque chose sinon ca ne sert a rien.

      Afficher les données est techniquement la partie la plus simple du projet. Il faut prendre les données qui nous intéressent de la base de données et des résultats de l'OCR et les afficher sur des composants Windows Forms.

      @@ -3299,65 +3631,347 @@ Les seules données qui changent entre deux passages de l'OCR sont les écarts e
      "Exemple d'échantillons pour les tests"
      -

      Ce qui est pratique avec cette approche c'est qu'il est très facile de rajouter des cas spécifiques et voir comment le programme les gère. -Si je vois que un certain nombre est souvent mal reconnu je peux faire exprès de le mettre dans le dossier et modifier mon code d'OCR jusqu'à ce que le test passe.

      -

      Si j'avais eu plus de temps j'aurais sûrement pu ajouter de vrais tests unitaires qui testent des fonctions très précises. Par exemple verifier que les différentes Windows sont bien appelées et que les zones se créent correctement ou même plus simplement que la lecture du JSON au démarrage marche bien.

      -

      Il faut savoir que même si je n'ai pas eu l'occasion d'écrire beaucoup de tests sous forme de code. Toute la phase de développement de l'OCR j'ai passé plus d'une heure par jour à analyser les résultats. Je gardais toutes les images des WINDOWS et je notais dans le nom du fichier ce que l'algorythme trouvais et je passais en revue manuellement les centaines de résultats pour isoler ceux qui posaient problème.

      -

      C'est comme ca que je me suis rendu compte par exemple que, avec cette police, les 4 et les 1 étaient souvent confondus. Donc même si les tests automatisés sont clairement insuffisant par rapport à ce que j'aurais peut-être du faire, j'ai passé énormément de temps à tester mon application.

      -

      Comment ca aurait du se passer

      -

      Si je devais refaire ce projet aujourd'hui je pense que j'utiliserais un peu la même technique que pour la doc. J'aurais mis les tâches de Tests directement au début du projet et j'aurais determiné le squelette de l'application par la même occasion.

      -

      Je pense que j'aurais mis trois jours pour écrire tous les tests dont j'aurais besoin et j'aurais fait une stratégie de TDD (Test Driven Developpement) par ce que je pense que ca marcherait vraiment super bien sur ce type de projet.

      -

      J'aurais pris je pense 5 une dixaine d'images complêtes de la F1TV de plusieurs GP différents et j'aurais mis toutes les fenêtres découpées dans des fichiers avec des tests comme ceux que j'ai fait pour ce projet. Et comme ca je saurai que mon algo est bon uniquement quand il aura réussi à passer tous les tests.

      -

      Cela règlerait le soucis que j'ai eu le plus : Me retrouver à devoir changer l'OCR 5 fois par ce que à chaque fois que je développe une nouvelle feature je me rends compte d'une faiblesse mon algorythme...

      -

      Non seulement j'aurai eu beaucoup plus de facilité à avancer sur le projet, mais en plus je pense que cela m'aurait fait gagner énormément de temps non seulement car je n'ai plus à tester tout à la main mais en plus par ce que ca veut dire que quand l'OCR passe les tests je n'ai plus jamais à m'en soucier.

      -

      Lecons

      -

      Je pense que dans mes futurs projets je mettrai les tests en début de projet plutôt que à la fin et je ferai en sorte qu'ils fassent partie du chemin critique et que je ne puisse pas passer à côté sous pretexte que "Je n'ai pas le temps".

      -

      Ecrire des tests c'est jamais marrant et c'est encore moins marrant quand ils nous empêchent d'avancer. Mais je suis convaincu que au final c'est un gain de temps et de sérénité incontournable.

      +

      Ce qui est pratique avec cette approche, c'est qu'il est très facile de rajouter des cas spécifiques et voir comment le programme les gère. +Si je vois qu'un certain nombre est souvent mal reconnu, je peux faire exprès de le mettre dans le dossier et modifier mon code d'OCR jusqu'à ce que le test passe.

      +

      Si j'avais eu plus de temps, j'aurais sûrement pu ajouter de vrais tests unitaires qui testent des fonctions très précises. Par exemple, vérifier que les différents Windows sont bien appelées et que les zones se créent correctement ou même plus simplement que la lecture du JSON au démarrage marche bien.

      +

      Il faut savoir que même si je n'ai pas eu l'occasion d'écrire beaucoup de tests sous forme de code. Toute la phase de développement de l'OCR, j'ai passé plus d'une heure par jour à analyser les résultats. Je gardais toutes les images des WINDOWS et je notais dans le nom du fichier ce que l'algorithme trouvait et je passais en revue manuellement les centaines de résultats pour isoler ceux qui posaient un problème.

      +

      C'est comme ça que je me suis rendu compte par exemple que, avec cette police, les quatre et les 1 étaient souvent confondus. Donc même si les tests automatisés sont clairement insuffisants par rapport à ce que j'aurais peut-être dû faire, j'ai passé énormément de temps à tester mon application.

      +

      Comment ç'aurait dû se passer

      +

      Si je devais refaire ce projet aujourd'hui, je pense que j'utiliserais un peu la même technique que pour la doc. J'aurais mis les tâches de Tests directement au début du projet et j'aurais déterminé le squelette de l'application par la même occasion.

      +

      Je pense que j'aurais mis trois jours pour écrire tous les tests dont j'aurais besoin et j'aurais fait une stratégie de TDD (Test Driven Developpement) par ce que je pense que ça marcherait vraiment super bien sur ce type de projet.

      +

      J'aurais pris, je pense, cinq une dizaine d'images complètes de la F1TV de plusieurs GP différents et j'aurais mis toutes les fenêtres découpées dans des fichiers avec des tests comme ceux que j'ai faits pour ce projet. Et comme ça je saurai que mon algo est bon uniquement quand il aura réussi à passer tous les tests.

      +

      Cela règlerait le souci que j'ai eu le plus : Me retrouver à devoir changer l'OCR 5 fois par ce qu'à chaque fois que je développe une nouvelle feature, je me rends compte d'une faiblesse, mon algorithme…

      +

      Non seulement j'aurais eu beaucoup plus de facilité à avancer sur le projet, mais en plus, je pense que cela m'aurait fait gagner énormément de temps non seulement, car je n'ai plus à tester tout à la main, mais en plus par ce que ça veut dire que quand l'OCR passe les tests, je n'ai plus jamais à m'en soucier.

      +

      Leçons

      +

      Je pense que dans mes futurs projets, je mettrai les tests en début de projet plutôt qu'à la fin et je ferai en sorte qu'ils fassent partie du chemin critique et que je ne puisse pas passer à côté sous prétexte que "Je n'ai pas le temps".

      +

      Écrire des tests, ce n'est jamais marrant et c'est encore moins marrant quand ils nous empêchent d'avancer. Mais je suis convaincu qu'à la fin, c'est un gain de temps et de sérénité incontournable.

      Résumé des difficultés techniques


      -

      Ici je vais parler très rapidement des difficultées techniques rencontrées. Si vous voulez tout savoir à propos des difficultées vous pouvez aller lire le journal de bord. C'est aussi pour éviter de me répèter par rapport aux explications des différents points dans l'analyse organique.

      -

      Je vais pas non plus parler des difficultées rencontrée avec des choses que je n'ai pas gardé dans le programme final donc il est normal que vous vous disiez qu'il n'y a pas eu tant de difficultés que ca.

      +

      Ici, je vais parler très rapidement des difficultés techniques rencontrées. Si vous voulez tout savoir à propos des difficultés, vous pouvez aller lire le journal de bord. C'est aussi pour éviter de me répéter par rapport aux explications des différents points dans l'analyse organique.

      +

      Je ne vais pas non plus parler des difficultés rencontré avec des choses que je n'ai pas gardées dans le programme final donc il est normal que vous vous disiez qu'il n'y a pas eu tant de difficultés que ça.

      Browser Headless

      -

      Il y avait plusieurs difficultées techniques avec cette histoire de Browser Headless.

      -

      Deja pouvoir lancer un browser headless et le contrôler. C'est difficile car il faut trouver la bonne librairie et ensuite il faut trouver le bon exectuable de geckoDriver qui permette de faire fonctionner l'application même si l'utilisateur n'a pas Firefox sur sa machine.

      -

      Ensuite la seconde difficulté est celle de ne pas se faire chopper comme un bot par le site de la F1TV. Il faut savoir qu'à ce jour je n'ai toujours pas réussi à faire croire à la page de login de la F1TV que j'étais un user normal en utilisant Selnnium mais au moins maintenant je peux accèder aux vidéos tranquillement.

      -

      Ce soucis de ne pas pouvoir se connecter avec la page de login à la plus grosse difficulté technique de cette partie du projet : la connexion automatique. Pour me connecter à la F1TV avec un browser headless la seule solution que j'ai trouvé a été d'utiliser des cookies. Et pour que l'utilisateur n'aie pas à aller chercher les siens dans son navigateur il a fallut trouver une technique pour aller les chercher directement sans lui demander son avis.

      -

      Autre difficutlé, comme on travaille avec un site web que l'on ne contrôle pas, il faut trouver un moyen de gèrer les erreurs et de réessayer parfois et attendre quand il faut dans les cas ou le chargement est long etc...

      -

      Ensuite après tout ca la dernière difficulté a été de pouvoir contrôler le firefox Headless assez bien pour qu'il puisse non seulement naviguer les pages mais aussi qu'il puisse cliquer sur des boutons qui ne s'affichent pas tout le temps.

      -

      (Je ne vais pas mentioner la difficulté que ca a été de mettre le browser en 4K pour des raison de santé mentale)

      +

      Il y avait plusieurs difficultés techniques avec cette histoire de Browser Headless.

      +

      Déjà pouvoir lancer un browser headless et le contrôler. C'est difficile, car il faut trouver la bonne librairie et ensuite, il faut trouver le bon exécutable de gecko Driver qui permette de faire fonctionner l'application même si l'utilisateur n'a pas Firefox sur sa machine.

      +

      Ensuite, la seconde difficulté est celle de ne pas se faire chopper comme un bot par le site de la F1TV. Il faut savoir qu'à ce jour, je n'ai toujours pas réussi à faire croire à la page de login de la F1TV que j'étais un user normal en utilisant Sélénium mais au moins maintenant, je peux accéder aux vidéos tranquillement.

      +

      Ce souci de ne pas pouvoir se connecter avec la page de login à la plus grosse difficulté technique de cette partie du projet : la connexion automatique. Pour me connecter à la F1TV avec un browser headless la seule solution que j'ai trouvée a été d'utiliser des cookies. Et pour que l'utilisateur n'ait pas à aller chercher les siens dans son navigateur, il a fallu trouver une technique pour aller les chercher directement sans lui demander son avis.

      +

      Autre difficulté, comme on travaille avec un site web que l'on ne contrôle pas, il faut trouver un moyen de gérer les erreurs et de réessayer parfois et attendre quand il faut dans les cas où le chargement est long etc...

      +

      Ensuite, après tout ça, la dernière difficulté a été de pouvoir contrôler le Firefox Headless assez bien pour qu'il puisse non seulement naviguer les pages, mais aussi qu'il puisse cliquer sur des boutons qui ne s'affichent pas tout le temps.

      +

      (Je ne vais pas mentionner la difficulté que c'était de mettre le browser en 4K pour des raisons de santé mentale)

      OCR

      -

      Les difficultées ici sont dans un autre niveau. Chaque type de donnée représentait sa difficulté à lui tout seul sans compter l'optimisation.

      -

      Pour commencer on a le texte pour les noms de pilotes. Il a fallu trouver un système qui puisse reconnaitre le texte et qui puisse comparer le résultat avec les pilotes que l'on connait.

      -

      Ensuite il a fallu trouver un moyen de detecter la différence entre les fenêtres de DRS où il est ouvert ou fermé. Il fallait également faire attention à ne pas faire de faux positifs.

      -

      Pour les temps par secteurs il a fallu trouver des filtres qui permettent de bien différencier les '1' et les '4' sans les confondre et il a aussi fallut trouver un moyen de filter l'image pour que dans le cas ou le texte serait en couleur ca fonctionne quand même. (Car oui un filtre de nuances de gris ne marche pas super avec des couleurs sombres)

      -

      Pour les pneus (le plus dur) il a fallut trouver un moyen de trouver sur toute la longeur de la zone la partie intéressante. Ensuite il a fallut trouver une technique pour savoir quel type de pneu c'est en fonction de la couleur moyenne et ensuite le plus dur a été d'isoler le chiffre du dessin autour car Tesseract aime pas les formes, le tout automatiquement.

      -

      Pour les temps au tour il a fallut trouver un moyen de ne pas confondre les ponctuations avec des chiffres tout en ne les ratant pas. Et il a fallu trouver un moyen de detecter quand inévitablement cela arrive quand même.

      -

      Et la dernière difficulté (la plus pénible) a été de detecter les écarts entre les pilotes. Il a fallut trouver une facon de decoder le texte en temps mais aussi de faire tout un système qui détecte et règle les cas ou un ':' a été oublié ou confondu tout en ne sachant pas si il était scensé y en avoir à la base car les valeurs peuvent varier entre '1_23.657' et '0.452'.

      +

      Les difficultés ici sont dans un autre niveau. Chaque type de donnée représentait sa difficulté à lui tout seul, sans compter l'optimisation.

      +

      Pour commencer, on a le texte pour les noms de pilotes. Il a fallu trouver un système qui puisse reconnaitre le texte et qui puisse comparer le résultat avec les pilotes que l'on connait.

      +

      Ensuite, il a fallu trouver un moyen de détecter la différence entre les fenêtres de DRS où il est ouvert ou fermé. Il fallait également faire attention à ne pas faire de faux positifs.

      +

      Pour les temps par secteurs, il a fallu trouver des filtres qui permettent de bien différencier les '1' et les '4' sans les confondre et il a aussi fallu trouver un moyen de filtrer l'image pour que dans le cas où le texte serait en couleur ça fonctionne quand même. (Car oui, un filtre de nuances de gris ne marche pas super avec des couleurs sombres)

      +

      Pour les pneus (le plus dur) il a fallu trouver un moyen de trouver sur toute la longueur de la zone la partie intéressante. Ensuite, il a fallu trouver une technique pour savoir quel type de pneu c'est en fonction de la couleur moyenne et ensuite le plus dur a été d'isoler le chiffre du dessin autour, car Tesseract n'aime pas les formes, le tout automatiquement.

      +

      Pour les temps au tour, il a fallu trouver un moyen de ne pas confondre les ponctuations avec des chiffres tout en ne les ratant pas. Et il a fallu trouver un moyen de détecter quand inévitablement cela arrive quand même.

      +

      Et la dernière difficulté (la plus pénible) a été de détecter les écarts entre les pilotes. Il a fallu trouver une façon de décoder le texte en temps, mais aussi de faire tout un système qui détecte et règle les cas ou un ':' a été oublié ou confondu tout en ne sachant pas s'il était censé y en avoir à la base, car les valeurs peuvent varier entre '1_23.657' et '0.452'.

      Stockage

      -

      Pour ce qui est du stockage la grande difficulté a été de savoir quand un pilote avait avait finit un tour car chaque pilote finit son tour à un moment différent. Il a également fallut trouver un moyen de savoir les données d'un pilote étaient logiques.

      -

      Une difficulté qui n'a pas été complêtement dépassée est de savoir quand un pilote a fait un arrêt aux stands car la detection de l'age des pneus est plus que mauvaise.

      -

      Voila. Ce fut une petite liste non exhaustive de quelques difficultés techniques que j'ai rencontré pendant ce projet.

      +

      Pour ce qui est du stockage, la grande difficulté a été de savoir quand un pilote avait fini un tour parce que chaque pilote finit son tour à un moment différent. Il a également fallu trouver un moyen de savoir les données d'un pilote étaient logiques.

      +

      Une difficulté qui n'a pas été complètement dépassée est de savoir quand un pilote a fait un arrêt aux stands, car la détection de l'âge des pneus est plus que mauvaise.

      +

      Voilà. Ce fut une petite liste non exhaustive de quelques difficultés techniques que j'ai rencontrées pendant ce projet.

      Optimisation du programme


      -

      Ici je vais parler des techniques que j'ai utilisé pour réduire le temps de traitement de chaques images de 50 secondes à un peu moins de 3 sur le processeur de mon laptop. En effet, dans les premières version du projet, traiter l'intégralité d'une image pouvait prendre presque une minute.

      -

      Ce qui est compliqué dans ce projet c'est qu'il y a un certain nombres de choses que je ne contrôle pas. En utilisant Tesseract, je me retrouve avec des incompressibles. En imaginant que l'OCR sur une image prenne 300ms, même si j'avais 180 threads capables de faire cette tâche en même temps, le temps de traitement sera toujours d'au moins 300ms. Créer une instance de Tesseract prend également du temps. Ma mission n'est donc pas d'arriver à des temps de quelques dixaines de milisecondes mais plutôt de rajouter le moins de temps possible pendant le traitement et de tenter de faire le plus du choses possible en paralelle.

      -

      I

      +

      Ici, je vais parler des techniques que j'ai utilisées pour réduire le temps de traitement de chaque image de 50 secondes à un peu moins de 3 sur le processeur de mon laptop. En effet, dans les premières versions du projet, traiter l'intégralité d'une image pouvait prendre presque une minute.

      +

      Ce qui est compliqué dans ce projet, c'est qu'il y a un certain nombre de choses que je ne contrôle pas. En utilisant Tesseract, je me retrouve avec des incompressibles. En imaginant que l'OCR sur une image prenne 300 ms, même si j'avais 180 threads capables de faire cette tâche en même temps, le temps de traitement sera toujours d'au moins 300 ms. Créer une instance de Tesseract prend également du temps. Ma mission n'est donc pas d'arriver à des temps de quelques dizaines de millisecondes, mais plutôt de rajouter le moins de temps possible pendant le traitement et de tenter de faire le plus de choses possible en parallèle.

      +

      Voici la liste des choses qui prennent du temps :

      +
        +
      • Lancement du navigateur et navigation
      • +
      • Création des instances de Tesseract
      • +
      • Filtrage des images
      • +
      • OCR
      • +
      +

      Ce sont les quatre gros postes qui coutent le plus cher en ressources.

      +

      Mais par chance, deux de ces postes ne sont appelés qu'une seule fois au démarrage, ce qui fait que ce n'est pas catastrophique s'ils prennent du temps. Tandis que l'OCR et le filtrage est fait à chaque détection.

      +

      Pour ce qui est du démarrage, malheureusement, on ne peut pas faire grand-chose. Lancer le browser et naviguer à travers la F1TV prend du temps, surtout si la connexion du client est mauvaise. Pour certaines actions, j'ai fait un système qui essaie pendant 10 secondes de cliquer sur un bouton plutôt que d'attendre 10 secondes et cliquer pour tenter d'économiser un peu, mais malheureusement, c'est lent et on ne peut pas y faire grand-chose.

      +

      Pour la génération des instances de Tesseract, c'est un peu pareil, mais pour d'autres raisons. Comme Tesseract n'est pas "Thread Safe" (Ce qui veut dire qu'il n'est pas parallélisable), si on veut faire plusieurs reconnaissances à la fois, il faut plusieurs instances de Tesseract loadées en mémoire. J'ai donc décidé, pour une question de simplicité et de performances, de faire en sorte que chaque fenêtre de donnée ou "Window" aie sa propre instance de Tesseract.

      +

      Vous qui lisez ces lignes êtes peut-être en train de vous dire "Oulala mais ça doit beaucoup de mémoire son truc là " et vous auriez parfaitement raison !

      +
      + +
      "Consommation de mémoire peu après avoir commencé la détection"
      +
      +

      Ce programme consomme en effet une quantité absolument catastrophique de mémoire vive. Mais si je l'ai fait, c'est pour une bonne raison. Cela prend juste beaucoup trop de temps de créer une nouvelle instance à chaque boucle de Tesseract et c'est encore plus long de faire toutes les opérations d'OCR les unes après les autres pour n'avoir qu'un seul Tesseract de loadé.

      +

      On peut parfois arriver à des chiffres qui approchent les 4GB de RAM ce qui est absolument RIDICULE. Cependant, c'est un compromis que j'étais prêt à faire pour avoir une application qui soit plus rapide.

      +

      Je suis absolument certain que cette solution et les autres solutions que j'ai trouvées pour ce projet ne sont pas les meilleures ou les plus efficaces. Mais ce sont les solutions que j'ai trouvé pour faire en sorte que le projet avance et fonctionne à peu près vite.

      +

      Ensuite pour ce qui est de ce qui se passe à chaque boucle, là le mot magique, c'est "Parallèle". Le traitement de toutes les zones est fait en même temps.

      +

      La structure du projet en zones, sous zones et fenêtres de données fait qu'il est assez facile de venir paralléliser le processus si on les implémente correctement.

      +
      +Diagramme qui montre comment les zones et fenêtres interagissent +
      Diagramme qui montre comment les zones et fenêtres interagissent
      +
      +

      On peut voir sur ce diagramme que la zone principale demande à toutes les sous zones de décoder leur contenu. Ces dernières font l'exacte même chose avec les fenêtres de données qui retournent chacune ce qu'elles contiennent après un coup d'OCR et ensuite les zones recombinent les informations et les envoient à la zone principale.

      +

      Tout cela est très bien, mais quel rapport avec la parallélisation ? Eh bien, comme chaque zone de pilote est indépendante, on peut tout simplement faire une boucle for parallèle qui appelle toutes les zones pilotes.

      +

      On passe de 15 à 20 secondes de traitement à un peu plus de trois juste avec cette technique. Alors ça n'était pas simple à implémenter, car il a fallu programmer les zones de sorte qu'elles soient toutes indépendantes les unes des autres. Mais une fois que le travail en amont a été effectué, il est très simple de paralléliser.

      +

      Les filtres fonctionnent de la même façon sauf que là, on parallélise le traitement de chaque ligne dans une image. L'impact est moindre qu'avec les zones, mais si on teste avec une machine assez puissante cela pourrait faire la différence.

      +

      Seul souci avec cette méthode, cela veut dire que le processeur est particulièrement sollicité '^^...

      +
      + +
      "Utilisation du processeur pendant le fonctionnement de l'application"
      +
      +

      Mon laptop ne possède malheureusement que six coeurs ce qui limite pas mal la puissance de la paralellisation. Mais je suis convaincu qu'avec un CPU avec plus de coeurs on pourrait arriver à d'encore meilleurs résultats.

      +

      Mais cette utilisation du processeur a aussi un inconvénient...

      +
      + +
      "Températures du laptop pendant le fonctionnement de l'application"
      +
      +

      ;

      +

      Donc si je veux commenter la F1 avec cet outil, note à moi même, je ne dois pas utiliser le laptop si je ne veux pas me cramer les doigts.

      +

      Si je pouvais utiliser le GPU pour accèlérer le processus on pourrait peut-être avoir de meilleurs résultats mais de ce que j'ai pu lire, l'OCR n'est pas spécialement un bon use case pour les GPU.

      +

      Pour conclure, je dirais que ce projet est loin d'être un exemple de performances et clairement, il y a des choix discutables qui ont été faits et d'une manière générale, si je devais refaire tout le projet avec la performance en premier objectif, j'aurais sûrement fait différemment. Maintenant, avec le temps que j'ai eu, je suis déjà content d'avoir pu faire quelque chose qui fonctionne et qui ne prenne pas une minute à traiter une image.

      Ethique du projet


      -

      [A remplir à la fin du projet pour parler des questions ethiques du projet (Ex: Utilisation potentiellement abusive de la F1Tv ou L'histoire des cookies)]

      +

      Ici, on va parler des questions éthiques de ce projet. En effet, il y a quelques petites choses qui peuvent soulever une question.

      +

      Il y a deux questions qui reviennent presque à chaque fois que je parle ou présente mon projet :

      +

      Utilisation abusive de la F1TV ?

      +

      La F1TV est un service payant qui n'est pas forcément donné (même si pas bien cher pour un utilisateur comme moi qui l'utilise plus d'une fois par semaine plusieurs heures). De ce fait, je ne peux pas rendre son accès plus facile ou faire fuiter des informations de courses que l'on ne peut se procurer que par son utilisation.

      +

      Mais voilà pourquoi je pense que mon utilisation n'est pas une utilisation abusive :

      +
        +
      • L'application ne fonctionne que si l'utilisateur a un compte F1TV valide et qu'il s'est connecté récemment sur sa machine. (Cela veut donc dire que je ne permets pas à des utilisateurs de frauder)
      • +
      • L'application ne partage aucune information sur le contenu de la F1TV avec l'extérieur. (On ne peut pas avoir accès à des informations payantes sans abonnement)
      • +
      • L'application ne simule qu'un seul utilisateur connecté sur une vraie machine (Cela veut donc dire que je ne suis pas en train de faire un système de bot qui regarde 45 flux en même temps pour scrapper tout le site et/ou poser des problèmes de DDOS)
      • +
      • Les données ne sont pas stockées entre les sessions (cela veut dire que l'on ne représente pas un risque de fuite de données et on n'est pas un service qui vient scrapper le contenu pour alimenter une IA ou quoi que ce soit... pour l'instant...)
      • +
      +

      En fait mon application fonctionne exactement comme si on avait une page ouverte avec la F1TV dessus et qu'un ami à côté de nous la regardait en prenant des notes pour nous aider à suivre. Je ne vois donc pas le mal et je ne vois pas en quoi ce projet serait problématique sur ce point.

      +

      Après dans le futur, le but est clairement de conserver les infos trouvées pour entrainer un algorithme de prédiction et là peut-être que cela pourrait poser plus de problèmes, mais ce n'est pas le cas à l'heure ou j'écris ces lignes.

      +

      Récupération de cookies à l'insu de l'utilisateur ?

      +

      Alors là, on est clairement sur le sujet un peu plus épineux...

      +

      Un peu de contexte d'abord :

      +

      À la base, je voulais que l'utilisateur entre ses identifiants dans mon application et ensuite que le navigateur les rentre dans la page de login automatiquement et qu'il puisse se connecter.

      +

      Deux problèmes à cette solution :

      +
        +
      1. L'utilisateur doit avoir assez confiance en mon programme pour laisser ses identifiants en clair à l'intérieur.
      2. +
      3. Il est extrêmement difficile de bypass la protection contre les bots de la page de login de la F1TV.
      4. +
      +

      J'ai donc dû trouver une autre solution : Utiliser les cookies !

      +

      Le seul souci, c'est que cela voulait dire que l'utilisateur devait aller chercher lui-même ses cookies dans le navigateur en utilisant F12 et qu'il devait à nouveau me faire confiance pour que je n'en fasse rien. Je trouvais cette solution trop pénible pour l'utilisateur alors, j'ai décidé d'en trouver une autre.

      +

      Utiliser les cookies MAIS, sans demander à l'utilisateur. Pour faire simple, mon programme va directement décoder les cookies encryptés dans la base de donnée SQLITE de Chrome, va les stocker dans un CSV en clair et va laisser mon programme C# aller piocher ceux qui l'intéressent.

      +

      Soucis, mon programme a accès à tous les cookies de l'utilisateur à son insu, cela veut dire que je pourrais les utiliser à des fins peu scrupuleuses.

      +

      Et c'est la solution que j'ai décidé de choisir, car elle permet à l'utilisateur de ne rien avoir à faire pour se connecter depuis l'application, mais cela veut aussi dire qu'il doit me faire confiance pour ne pas utiliser tous ces cookies pour mon utilisation personnelle.

      +

      Sauf que contrairement aux autres solutions, il ne sait pas qu'il est en train de me faire confiance donc ça va. :D

      +

      Non plus sérieusement, oui, je pourrais faire n'importe quoi avec les cookies de l'utilisateur, non, je ne vais pas le faire, et non, je ne prévois jamais de le faire.

      +

      Mais il est intéressant de mentionner que mon application met en péril la sécurité des cookies de l'utilisateur et qu'il serait bien dans le futur de mettre un message explicatif au premier démarrage ou dans l'installeur de l'application pour prévenir l'utilisateur.

      Utilisation de Chat GPT


      -

      [A remplir à la fin du projet]

      +
      + +
      "Logo chat Gpt"
      +
      +

      Cette année, ChatGPT est venu s'installer dans la liste des outils que j'utilise presque quotidiennement pour avancer sur mes projets.

      +

      J'ai utilisé ChatGPT un certain nombre de fois pendant ce travail et je pense qu'il m'a fait gagner un certain nombre d'heures. En effet, dans certains cas très précis, ChatGPT est une ressource absolument géniale.

      +

      Je l'ai surtout utilisé quand j'avais de soucis avec des librairies ou pour faire du troubleshooting. Ce que j'aime beaucoup avec ChatGPT c'est qu'il s'adapte à ce qu'on lui donne.

      +

      Par exemple, il m'est souvent arrivé de vouloir utiliser des librairies comme Puppeteer sharp ou des exemples sont difficilement trouvables sur internet normalement. Et quand je voulais simplement faire fonctionner un exemple très rapide, il a quasiment toujours pu me fournir le code minimum. Cependant, dès que l'on arrive sur des cas encore plus précis, on atteint assez vite les limites du système.

      +

      J'ai fréquemment fait appel à cet outil pour diagnostiquer du code, que ce soit pour détecter un souci ou même plus juste pour voir si mon code avait du sens. En effet, si on donne une méthode à chatGPT, il va tenter de l'expliquer, et s'il n'y arrive pas, c'est généralement que les variables sont mal nommées ou qu'il y a un souci avec la logique du code. Et pour ce qui est de la détection des erreurs, l'exemple que je peux donner c'est quand je faisais des méthodes asynchrones et parallèles, je pouvais lui donner la méthode avec l'erreur que je ne comprends pas et il peut me donner cinq raisons de possibles soucis.

      +

      Cependant, je pensais utiliser beaucoup plus ChatGpt mais à la fin l'outil est assez limité et je ne l'utilisais que quand mes recherches internet étaient infructueuses.

      +

      Le seul cas où il m'a un peu sauvé, c'est quand je travaillais avec Puppeteer et que j'essayais de régler un souci qui faisait que le programme plantait à chaque fois que j'ouvrais une vidéo. Au bout de quelques heures de galère, il m'a juste proposé d'utiliser une autre librairie comme sélénium et il m'a converti tout mon code puppeteer en code utilisable par Selenium, et même si cela a demandé un peu plus de travail que de copier-coller, pour finir, j'ai pu avoir quelque chose qui marchait et je n'aurais peut-être pas eu le réflexe ou l'envie de le faire si je n'avais pas utilisé cet outil.

      +

      En conclusion, certaines méthodes de mon projet ont été faites avec l'aide de ChatGPT mais c'est une minorité et je l'ai surtout utilisé pour comprendre des erreurs et pour avoir des pistes à explorer pour les fix. Rien de bien fou.

      Améliorations futures


      -

      [A remplir dans les dernières semaines du travail de diplôme]

      +

      Ici, je vais parler de deux types d'améliorations. Les améliorations à court terme, que j'aurais pu faire si je n'avais pas perdu autant de temps sur certains problèmes techniques ou si j'avais eu quelques semaines de plus pour travailler sur le projet. Et les idées qui seraient plus compliquées à mettre en place que je n'aurais jamais pu ajouter à ce travail dans le temps imparti, mais qui sont maintenant possibles si je continue pendant quelques mois à travailler sur le projet.

      +

      Court terme

      +

      Je vais commencer par les petites améliorations.

      +
        +
      1. Chose que je regrette le plus, je dirai, c'est tout ce qui est affichage. J'aurais vraiment aimé faire une magnifique interface, mais il m'a manqué de temps pour en faire une plus jolie et plus facile d'utilisation.
      2. +
      3. Une amélioration réellement nécessaire serait d'améliorer la détection des pneus pour qu'il soit possible de correctement détecter les arrêts aux stands.
      4. +
      5. En général, si j'avais pu mettre plus de temps dans l'analyse des données que je reçois de la F1TV, j'aurais pu faire un système plus efficace de détection de dépassements, car la version actuelle n'est vraiment pas bonne.
      6. +
      7. Trouver un moyen de faire des erreurs plus précises. En effet, maintenant, certaines erreurs ont des causes qui peuvent être multiples (qui peuvent être causées par un mauvais lien, ou une erreur de récupération des cookies ou même juste de connexion internet). Ça demanderait simplement un peu plus de temps pour qu'au lieu de retourner seulement une erreur, on tente de récupérer plus d'infos pour la rendre plus spécifique.
      8. +
      +

      Et pour les améliorations un peu plus concrètes :

      +
        +
      1. Implémenter plus d'affichages calculés. J'aurais aimé ajouter des affichages comme le classement pondéré des pilotes en fonction des arrêts aux stands. Cela demanderait juste un peu de temps et d'améliorer la détection des pitstops.
      2. +
      3. Implémenter des affichages prédictifs simples. On pourrait imaginer des algorithmes simple qui pourraient tenter de prédire quand un pilote va en rattraper un autre ou quand un pilote va devoir s'arrêter en fonction des temps aux tours. Ça ne me demanderait pas de nouvelles technologies, mais simplement du temps pour mettre en place et tester les algorithmes.
      4. +
      5. Faire un système qui puisse tester les algorithmes prédictifs sur un panel de Grand Prix. Si l'étape d'avant est faite, on peut facilement imaginer un bout de programme qui aille tester le programme sur différents Grand Prix pour voir si les prédictions sont bonnes.
      6. +
      7. Avoir une notion d'historique des courses pour avoir une page de comparaison des performances des équipes. Par exemple, déterminer quelle voiture est la plus rapide et comparer avec les autres circuits. On peut même imaginer qu'après plusieurs Grands Prix, on puisse tenter de déterminer quelle équipe est forte sur quel circuit.
      8. +
      9. Avoir un système qui permet de trouver automatiquement tous les liens de Grand Prix comme ça l'utilisateur n'aie plus besoin d'aller chercher un URL.
      10. +
      11. Faire un installer pour qu'un utilisateur n'ait pas à se taper la procédure d'installation (qui est assez pénible) à la main.
      12. +
      +

      Long terme

      +

      Là, on va se pencher sur des features qui prendraient plus d'un mois à mettre en place correctement.

      +
        +
      1. On pourrait imaginer un système qui puisse regarder 50 Grand Prix et qui change automatiquement les variables des algorithmes en fonction de leurs performances (Un genre d'apprentissage machine rustique).
      2. +
      3. On pourrait imaginer un système qui puisse créer des infographies. Que ce soit au milieu de la course ou à la fin, le programme pourrait nous générer des images avec une stat intéressante (ex : x pilote a fait x dépassements ou x pilote gagnerait x points s'il finissait dans cette position, ce qui le ferait changer de position au classement général). Si c'est bien fait, cela pourrait être un outil extrêmement précieux, car je pourrais utiliser ces infographies dans mes commentaires.
      4. +
      5. On pourrait avoir un système qui donne une note de performance pour chaque pilote en fonction de ses performances et en fonction de sa voiture pour faire un genre de classement des pilotes.
      6. +
      7. Il serait génial d'avoir une page de stats qui se souviennent de tous les anciens Grand Prix regardés qui permettent d'afficher toutes les stats d'un pilote sur plusieurs courses. (Cela me permettrait, dans des moments où la course stagne un peu, de pouvoir prendre n'importe quel pilote et d'avoir des choses à dire à son sujet)
      8. +
      9. On pourrait même imaginer un système qui utilise une base de données sur un serveur Infomaniak et développer une extension de navigateur qui me donne des infos importantes directement sur la page où je commente le Grand Prix ou qui au moins me fasse des notifications pour que je sache quand aller regarder, car un truc important s'est passé.
      10. +
      +

      Je vais m'arrêter là parce que les possibilités sont tout simplement infinies. À partir du moment où je peux récupérer toutes les informations de la F1TV de manière fiable, les champs des possibles sont ouverts et la seule limite est notre imagination.

      +

      Il n'est pas impossible que je refasse une version de ce projet dans le futur qui me permette d'appliquer tout ce que j'ai appris pour le faire plus proprement (avec de la TDD par exemple) et qui me permette d'implémenter toutes ces améliorations et plus.

      +

      Je pense vraiment que si je continue à commenter pour le 20 minutes dans les années qui viennent, cela pourrait être intéressant de développer un outil du style qui pourrait grandement m'aider à faire des commentaires de qualité.

      Conclusion


      -

      [A remplir la dernière semaine du travail de diplôme]

      +

      Bilan

      +

      Je vais faire un petit bilan de ce travail. Déjà, je vous remercie chaleureusement d'avoir lu cette documentation (j'ai dû la relire en entier une ou deux fois, je sais que ce n'est pas facile). J'espère que j'ai pu parler de tout ce dont je voulais parler et que je l'ai fait de manière explicite et aisé à lire pour vous. J'ai réellement fait de mon mieux pour qu'elle soit la plus simple possible à lire, mais c'est un exercice difficile dans un document de cette taille et je m'excuse des inévitables erreurs et coquilles que vous aurez peut-être remarqué.

      +

      Je dois avouer que je suis quand même très content d'arriver au bout de ce travail. J'ai vraiment aimé cette expérience unique de pouvoir travailler à 100 % sur un projet et voir de quoi je suis capable. Mais je suis aussi heureux d'arriver à la fin, car je dois avouer que ça n'a pas été simple tous les jours et que de travailler presque seul sur un projet si long n'est pas facile.

      +

      Pour être tout à fait honnête, je suis quand même fier de ce que j'ai fait (ce qui n'arrive pas souvent). C'est un projet qui est à des années lumières de la perfection, mais c'était mon idée et en commençant le projet, je ne savais même pas si j'allais y arriver. Certes le résultat n'est pas exactement comme je l'aurais rêvé, mais il est concret et il fonctionne !

      +

      Il y a eu des moments ou en voyant la quantité de choses qu'il restait à faire, je me sentais un peu découragé, mais je suis arrivé au bout avec un projet fonctionnel et pour ça, je suis assez fier.

      +

      Ce fut un projet difficile, surtout sur le plan de la résolution de problèmes. Chaque étape du projet apportait une nouvelle problématique qu'il fallait résoudre et si parfois, j'ai pu trouver des façons élégantes de le faire, pour d'autres, il a fallu être un peu plus créatif et moins regardant sur la méthode, mais que sur le résultat.

      +

      Je suis un peu frustré de rendre le projet alors que j'ai encore pleins d'idées pour le rendre meilleur. Mais je suis content de rendre quelque chose qui fonctionne et qui est déjà techniquement utilisable sur le terrain.

      +

      Ce projet m'a également appris pas mal de chose sur ma manière de travailler et sur la gestion de projet et je sais que tous mes futurs projets bénéficieront de ces apprentissages.

      +

      Résumé des épreuves

      +

      Ici, je vais tenter de résumer très rapidement tout ce qui a dû se passer pour en arriver là.

      +

      Pour commencer, il a fallu trouver un moyen de récupérer des images de la F1TV automatiquement. Pour ce faire, j'ai dû trouver une librairie qui me permette de contrôler un navigateur Firefox. Il a ensuite fallu trouver un moyen de se connecter automatiquement, pour ce faire, j'ai dû écrire un bout de code Python qui est allé chercher les cookies dans la base de données de chrome. Ensuite, il a fallu réussir à naviguer sur la page de la F1TV en tenant compte des chargements et de la protection anti bots. Puis finalement trouver un moyen de retourner une image en assez bonne résolution.

      +

      Avec ces images, il a ensuite fallu développer un système qui permette à l'utilisateur d'indiquer au programme où se trouvaient les informations. Il a ensuite fallu faire un système qui utilise ces informations pour découper l'image pour isoler les infos et les envoyer à la partie reconnaissance.

      +

      Cette partie reconnaissance a dû être développée de manière quasi unique pour chaque type d'information reconnue et en plus de la partie reconnaissance qui était déjà bien galère, il a fallu faire tout un système qui puisse détecter les anomalies de reconnaissances pour être sûr que les informations récupérées étaient bonnes.

      +

      Après tout ça, il a fallu faire en sorte que ces données soient stockées et affichées correctement. Créer une façon de les afficher de manière utile et facile à l'utilisateur.

      +

      Et tout ce beau monde a dû être optimisé pour que l'application ne prenne pas une minute pour récupérer des images et il a fallu raccorder ensembles toutes les parties du projet en un seul qui fonctionne correctement sans crasher.

      +

      C'est un résumé un peu barbare qui oublie énormément de choses et qui ne parle pas des problèmes rencontrés, mais cela peut donner une vague idée de la taille du projet et de pourquoi je suis déjà si fier, juste que tout fonctionne.

      +

      Merci d'avoir lu cette documentation, j'espère qu'elle a été instructive et je vous souhaite une excellente journée

      Notes de code


      +

      Ici, je vais donner quelques petites infos qui pourraient vous être utiles si vous décidez d'aller vous aventurer dans mon code source.

      +

      Le programme n'est pas à proprement parlé un programme en MVC, le découpage général suit quand même cette philosophie, je vais donc les ranger de cette façon pour que ça soit plus simple pour vous de comprendre.

      +

      Vues

      +

      Comme le projet n'est pas un MVC parfait, les vues font quand même quelques actions, mais les deux fichiers dont je vais parler ici sont à au moins 90 % juste de la vue

      +

      Settings.cs

      +

      Ce fichier contient tout le code pour contrôler la vue des "Settings" qui est la vue qui se charge de la création et édition des Presets. Si vous voulez changer le comportement de cette page, il faut éditer ce fichier.

      +

      Cette vue utilise deux contrôleurs :

      +
        +
      • F1TVEmulator
      • +
      • ConfigurationTool
      • +
      +

      Le premier pour pouvoir lancer une instance de Firefox qui permet de tester le système, le second pour effectuer toutes les actions de création, modification ou de lecture des "Presets"

      +

      Rien de bien fou à dire sur ce fichier. La seule chose un peu bizarre est la gestion de la création des zones et des fenêtres. Il y a tout un système qui peut être un peu bizarre à première vue qui sert à détecter quand l'utilisateur clique sur l'image pour créer une zone. Je suis sûr qu'il existe une manière plus propre de le faire que celle que j'ai utilisée, mais j'ai fait en sorte que cela fonctionne.

      +

      Un truc qui serait bien à ajouter dans le futur serait un moyen de visualiser au moins les points que l'on ajoute au fur et à mesure plutôt que de tout voir à la fin.

      +

      Form1.cs

      +

      Ce fichier contient tout le code pour contrôler la vue principale. Elle se charge de lancer le navigateur et d'afficher toutes les données récupérées ou stockées.

      +

      Cette vue utilise deux contrôleurs :

      +
        +
      • F1TVEmulator
      • +
      • DataWrapper
      • +
      +

      Le premier pour contrôler le navigateur (le lancer, le stopper, changer l'URL etc.) et le second pour accéder à des infos de la base de donnée sans avoir à l'appeler directement.

      +

      Contrôleurs

      +

      Ces classes ne sont pas des contrôleurs à 100 %, car ils contiennent aussi un peu de calcul, etc. mais ont comme but principal de servir d'interface entre la vue et les données.

      +

      ConfigurationTool.cs

      +

      Cette classe sert à travailler avec la zone principale pour la contrôler et à contenir les méthode qui servent à la création de Presets.

      +

      Les deux grosses méthodes que cette classe contient sont :

      +
        +
      • SaveToJson
      • +
      • AutoCalibrate
      • +
      +

      La première sert tout simplement à prendre la configuration actuelle et la sauvegarder en format JSON dans un fichier dans le dossier PRESETS. La seconde prend une zone, utilise de l'OCR pour localiser les endroits où il y a du texte et fait une calibration auto pour créer automatiquement les zones de pilotes.

      +

      Les autres méthodes sont juste des méthodes qui appellent des méthodes de modèles et servent seulement d'interface.

      +

      DataWrapper.cs

      +

      Cette méthode sert à faire l'intermédiaire entre la form principale et le contrôler "Reader" ainsi que la classe qui contrôle directement la base de données.

      +

      Elle interface avec ces deux classes :

      +
        +
      • Reader
      • +
      • Storage
      • +
      +

      Reader est un genre d'hybride, mais qui se veut être un genre de contrôler de la lecture des données sur les images et des fichiers JSON tandis que storage est le modèle qui interagis directement avec la base de données SQLITE.

      +

      Cette classe contient des méthodes qui auraient très pu (et sûrement dûes) se retrouver directement dans la vue. La plupart des méthodes sont là pour générer des contrôles qui contiennent des informations récupérées par la base de données ou par l'OCR.

      +

      Reader.cs

      +

      Cette méthode est un genre d'hybride. Elle contient des calculs, etc. mais son but est de servir d'interface entre le reste du programme et les zones/fenêtres de données.

      +

      C'est cette méthode qui va gérer la classe Zone, qui va demander à la classe zone de modifier, ajouter ou supprimer des fenêtres etc.

      +

      Elle contient aussi des méthodes pour charger un "Preset" et dessiner sur les Images quand une vue en a besoin.

      +

      Zone.cs

      +

      Cette méthode est clairement la plus discutable en tant que contrôleur, mais qui est en même temps la plus proche.

      +

      La raison est qu'elle peut être deux choses. Une zone principale ou une zone de pilote. Dans le cas ou c'est une zone de pilote, c'est clairement une classe normale qui est utilisée par un contrôleur et qui retourne des infos. Mais quand elle est utilisée comme une zone principale, c'est l'orchestre de toutes les zones et fenêtres.

      +

      Dans ce dernier cas, c'est un intermédiaire entre les zones et fenêtres. Elle ne sert qu'à contrôler des sous zones et leurs fenêtres.

      +

      Les seules méthodes de cette classe servent à demander des informations aux sous zones/fenêtres. Il n'y a quasi aucun calculs.

      +

      Modèles

      +

      Là, on va parler des classes "classiques" (lol).

      +

      Il y a deux types de classes dans cette liste :

      +
        +
      • Les classes normales
      • +
      • Les classes enfants de Window.cs
      • +
      +

      Les classes normales sont indépendantes et contiennent toutes des méthodes et des infos très différentes, tandis que les classes dérivées de Window.cs ont toutes la même structure et ont comme seul et unique but de retourner ce qui est marqué dans leur image.

      +

      Il est donc normal que ces dernières se ressemblent beaucoup.

      +

      DriverDrsWindow.cs

      +

      Cette classe est prévue pour contenir une image dans laquelle on peut voir l'état du DRS d'un pilote.

      +

      La méthode qu'elle utilise pour savoir si le pilote a activé son DRS ou non est d'utiliser la moyenne de couleur de son image.

      +

      Elle retourne true ou false et elle contient elle-même toutes les méthodes qui sont nécessaires pour donner une réponse (c'est un cas rare).

      +

      DriverGapToLeaderWindow.cs

      +

      Cette classe est prévue pour contenir une image dans laquelle on peut voir combien de temps sépare le pilote actuel du pilote devant lui.

      +

      La méthode qu'elle utilise pour le savoir utilise de l'OCR et fait appel à une méthode contenue dans son parent Window.

      +

      Elle est plutôt vide, car tout le traitement est déporté dans son parent.

      +

      DriverLapTimeWindow.cs

      +

      Cette classe est prévue pour contenir une image dans laquelle on peut voir quel était le dernier temps au tour enregistré du pilote.

      +

      La méthode qu'elle utilise pour le savoir utilise de l'OCR et fait appel à une méthode contenue dans son parent.

      +

      Elle est plutôt vide, car tout le traitement est déporté vers son parent.

      +

      DriverNameWindow.cs

      +

      Cette classe est prévue pour contenir une image dans laquelle on peut voir le nom du pilote écrit en toutes lettres.

      +

      La méthode qu'elle utilise une partie d'OCR qui est déportée dans le parent et utilise aussi une méthode appelée IsADriver (qui aurait pu aussi être déportée dans la page principale) qui vérifie si le nom trouvé existe.

      +

      DriverPositionWindow.cs

      +

      Cette classe est prévue pour contenir une image dans laquelle on peut voir la position d'un pilote.

      +

      Cette méthode est également un peu vide, car pour décoder l'image le traitement est déporté dans son parent.

      +

      DriverSectorWindow.cs

      +

      Pareil que pour DriverPositionWindow.cs

      +

      DriverTyresWindow.cs

      +

      Cette classe est prévue pour contenir une image dans laquelle on peut voir l'infographique qui représente le pneu du pilote.

      +

      Cette méthode est la seule fenêtre intéressante, car elle utilise du code déporté dans le parent, mais aussi une certaine proportion qu'elle contient elle-même.

      +

      Elle contient des méthodes qui permettent par exemple de trouver la zone intéressante dans l'image ou choisir quel pneu un pilote chausse en fonction de la couleur moyenne de l'image de la zone trouvée.

      +

      Pour toutes les zones de type Window, ce qui est vraiment intéressant, vous le trouverez dans le parent.

      +

      F1TVEmulator.cs

      +

      F1TVEmulator est la classe qui s'occupe de tout ce qui concerne le navigateur Headless.

      +

      Cette classe utilise la librairie Selenium et est la pour tout faire.

      +

      Elle s'occupe aussi bien d'envoyer la requête, de cliquer sur un bouton après 34 secondes que de récupérer les cookies qui permettront de se connecter ensuite.

      +

      Voici les méthodes qui s'occupent des cookies :

      +
        +
      • StartCookieRecovering
      • +
      • GetCookie
      • +
      +

      Je déconseille de modifier ces deux méthodes. Elles ont une utilité très claire et elles fonctionnent. (If its not broken dont fix it)

      +

      Ce qui peut être intéressant en revanche, c'est la seule autre méthode que cette classe propose sobrement intitulée "Start".

      +

      Cette méthode est codée de manière totalement procédurale et décrit exactement toutes les actions à faire à partir du moment ou le navigateur est démarré, dans quel ordre et s'il faut les faire ou non. Si vous vouliez modifier quelque chose ici, je pense que la bonne idée serait une meilleure gestion des erreurs. Pour le moment, si le programme n'arrive pas à cliquer sur certains boutons, soit une erreur est lancée, soit on attend un peu avant de réessayer. La vraie chose qui manque, c'est la raison pour laquelle ces boutons n'ont pas pu être cliqués. Dans l'idéal, il faudrait ajouter un système qui peut détecter la panne exacte pour que le message d'erreur soit plus personnalisé.

      +

      Sinon c'est une méthode qui marche plutôt bien et qui est faite complètement sur mesure pour l'utilisation de la F1TV.

      +

      OcrImage.cs

      +

      Là, on attaque les classes un peu plus "bordéliques".

      +

      Cette classe regroupe toutes les actions de filtrage que l'on pourrait vouloir. Cette classe est pas mal utilisée pour l'OCR. Il n'y a que deux choses à savoir.

      +
        +
      1. Presque toutes les méthodes de filtres sont génériques et peuvent être utilisées à peu près n'importe où et n'importe quand et devraient toujours fonctionner tant qu'on leur fournit ce dont elles ont besoin (la plupart sont en statique).
      2. +
      3. La seule méthode qui va vous intéresser si vous voulez changer le comportement de l'OCR est la méthode "Enhance".
      4. +
      +

      La méthode enhance est un genre de mode d'emploi. Selon le contexte de l'image (si c'est une image qui vient d'une fenêtre de DRS, de temps au tour, de pneu etc.) il y aura une combinaison de filtres différente.

      +

      Plusieurs méthodes dans cette classe ne sont pas utilisées, mais sont gardées, car elles pourraient être utiles. La plupart du temps, l'utilisation de ces filtres est décidée avec des essais à tâtons. Vous comprendrez donc vite que c'est mieux de garder sous le code des méthodes car certaines combinaisons marchent mieux que d'autres.

      +

      SqliteStorage.cs

      +

      Cette classe est plutôt simple.

      +

      Ce sont simplement toutes les méthodes qui permettent de créer, éditer et accéder à la base de données SQLITE.

      +

      Vous y trouverez des méthodes qui sont juste là pour créer la base comme d'autres plus spécifiques qui sont un peu plus spécifiques comme celles qui veulent récupérer l'ID d'un pilote selon son nom ou celle qui veut récupérer l'historique des temps autour d'un pilote.

      +

      Rien de spécial à dire sur cette classe.

      +

      Window.cs

      +

      Ahlala... je pense que c'est une des classes les plus longues de tout le projet. Du haut de ses presque 700 lignes, cette classe s'occupe de tout ce que les enfants fenêtres pourraient avoir besoin.

      +

      On retrouve des méthodes pour calculer la différence entre deux strings qui peut servir pour aider à la reconnaissance de noms de pilotes ou bien une méthode qui permet de convertir une image en tableau de bytes.

      +

      La méthode la plus grosse cependant et de loin est la méthode GetTimeFromPng qui doit implémenter un système qui permet de détecter quand un temps est anormal et détecter si la raison est la mauvaise compréhension d'une ponctuation ou le rajout d'un chiffre. Cela prend énormément de place, car il y a beaucoup de cas particuliers et il a fallu tout coder à la main. Je déconseille à qui que ce soit de lire cette méthode, ainsi, elle pourrait causer de sévères dommages au cerveau humain.

      +

      À écrire, ce fut une horreur, à comprendre, je n'ose pas imaginer.

      +

      Sinon pas grand-chose de plus à raconter.

      +

      Structures

      +

      Les classes de structures sont des classes qui ne contiennent que peu ou pas de traitement et qui sont simplement là pour contenir des informations. Elles sont pratiques, car elles permettent de rendre le code dans les autres classes beaucoup plus lisible et leur éviter d'utiliser des tuples bizarres.

      +

      DriverData.cs

      +

      Cette classe contient toutes les infos d'un pilote à un moment donné.

      +

      On peut voir cette classe comme une classe contenant une ligne de la F1TV. Toutes les données à propos d'un pilote que l'on peut détecter en une détection sont stockées là-dedans.

      +

      Il n'y a pas de notion d'historique ou quoi que ce soit. C'est simplement un moyen de stocker des données de pilotes dans d'autres classes en ayant un nom logique et aider à la lecture. Pas réellement de traitement.

      +

      Ce fichier contient également un autre objet : Tyre.

      +

      Cet objet contient les infos d'un pneu, rien de plus.

      +

      Et voilà, ce fut un résumé extrêmement succinct de tous les fichiers .CS de l'application pour que vous sachiez ce que vous regardez quand vous irez voir dans la partie code source de la documentation. Normalement, il devrait y avoir aussi un certain nombre de commentaires dans ces fichiers pour expliquer certains choix un peu bizarres. C'est en anglais, mais pas de l'anglais très difficile à comprendre. Bonne chance !

      Glossaire


      +

      Vocabulaire F1 :

      +
        +
      1. DRS : Drag Reduction System. : Système qui permet d'ouvrir l'aileron arrière de la monoplace quand elle se trouve à une seconde ou moins de la voiture devant elle. Cela permet de réduire la trainée que la voiture subit et lui permet d'avoir un petit boost qui aide à dépasser.
      2. +
      3. Pitstop : Arrêt aux stands : Pendant une course de F1, les pneus s'usent extrêmement vite et tous les pilotes sont obligés de passer au moins une fois par les stands par course pour les changer. Et pour changer ces pneus, ils font un arrêt aux stands que l'on appelle dans le milieu un Pitstop.
      4. +
      5. Pneus Hard, Medium, Soft, Inter, Wet : Types de pneus de F1. Hard est un pneu qui ne s'use pas beaucoup, mais qui est lent, Soft est l'inverse et Medium est l'entre deux. Les pneus sont des outils stratégiques et il est très important de savoir lequel chaque pilote utilise. Les pneus Inter et Wet sont des pneus pluies, l'Inter étant pour les faibles pluies.
      6. +
      7. Secteur : Section de circuit : Les circuits de F1 sont toujours découpés en trois parties qui sont mesurées séparément et qui permettent une meilleure granularité dans l'estimation des résultats. On n'est pas obligé d'attendre la fin d'un tour pour savoir si un pilote est rapide ou non et on peut voir dans quelle partie du circuit, il est rapide ou lent.
      8. +
      9. Monoplace : Voiture à une seule place, terme utilisé souvent pour décrire les F1 dans le document.
      10. +
      11. Grand Prix : Course officielle de Formule 1. Événement faisant partie du championnat du monde de Formule 1.
      12. +
      +

      Vocabulaire projet :

      +
        +
      1. Browser/navigateur Headless : Navigateur qui existe et fonctionne sans interface graphique
      2. +
      3. OCR : Optical Character Recognition : Processus de reconnaissance de texte sur une image par un ordinateur
      4. +
      5. TDD : Test Driver Developppement : Développement avec pour objectif les test. Les tests sont écrits en amont et le but du développeur est simplement de les faire passer.
      6. +
      7. MVC : Modèle Vue Controlleur : Architecture de projet qui sépare le traitement de l'information, son affichage et sa gestion.
      8. +
      9. Preset : (dans ce projet) Set d'informations préparées à l'avance pour être utilisés ultérieurement.
      10. +
      11. DB : Data Base / Base de donnée
      12. +
      13. Cookie : Fichier créé par un site internet stocké sur la machine du client qui est utilisé en général pour conserver des informations de connexion même après la fermeture du navigateur.
      14. +
      15. Window : Fenêtre (dans ce projet) objet contenant une partie d'une image contenant une information précise.
      16. +
      17. Zone : (dans ce projet) objet contenant une partie d'une image qui peu être sous divisée en fenêtres de données.
      18. +
      19. Wrapper : Code qui s'occupe de faire l'interface entre une librairie ou une classe pour rendre l'utilisation plus simple ou plus propre
      20. +
      21. JSON : JavaScript Object Notation : Format de fichier qui permet de stocker des informations dans un format très précis
      22. +
      23. AWS : Amazon Web Service : Service d'hébergement d'Amazon
      24. +
      25. User Agent : Signature numérique du navigateur qui permet à un site de détecter le type d'appareil et de navigateur connecté (peut être changé manuellement)
      26. +
      27. CSV : Comma Separated Values : Format de fichier qui permet de stocker facilement des données sous forme de tableau
      28. +
      29. API : Application Programming Interface : Interface générique qui permet d'accéder à une ressource.
      30. +
      diff --git a/site/jdb.html b/site/jdb.html index 2d20465..3d7ead4 100644 --- a/site/jdb.html +++ b/site/jdb.html @@ -337,6 +337,11 @@ Mercredi 7 Juin +
    • + + Jeudi 8 Juin 2023 + +
  • @@ -388,16 +393,6 @@
  • - - Program.cs - -
  • -
  • - - Settings.Designer.cs - -
  • -
  • SqliteStorage.cs @@ -679,6 +674,11 @@ Mercredi 7 Juin
  • +
  • + + Jeudi 8 Juin 2023 + +
  • @@ -3311,7 +3311,8 @@ Pour detecter un arrêt je pense que la meilleure manière est de regarder si le

    Mercredi 7 Juin

    La je suis en train de parler de l'optimisation de mon application et je viens de me rappeller qu'il manquait des methodes avec de la paralellisation alors je vais les convertir avant de continuer la doc.

    En fait je viens de me rendre compte qu'aucunes de mes methodes de filtres n'étaient en parralel... Je ne sais pas si jaurai le temps de le faire aujourd'hui en fait

    -
    public static Bitmap Grayscale(Bitmap inputBitmap)
    +

    Voici le code avant la paralellisation :

    +
    public static Bitmap VanishOxyAction(Bitmap inputBitmap)
             {
                 Rectangle rect = new Rectangle(0, 0, inputBitmap.Width, inputBitmap.Height);
                 BitmapData bmpData = inputBitmap.LockBits(rect, ImageLockMode.ReadWrite, inputBitmap.PixelFormat);
    @@ -3327,30 +3328,62 @@ Pour detecter un arrêt je pense que la meilleure manière est de regarder si le
                         {
                             byte* pixel = currentLine + (x * bytesPerPixel);
     
    -                        byte blue = pixel[0];
    -                        byte green = pixel[1];
    -                        byte red = pixel[2];
    +                        int blue = (int)pixel[0];
    +                        int green = (int)pixel[1];
    +                        int red = (int)pixel[2];
     
    -                        //Those a specific values to correct the weights so its more pleasing to the human eye
    -                        int gray = (int)(red * 0.3 + green * 0.59 + blue * 0.11);
    -
    -                        //This is not a proper treshold method but it is helping the sobel edge detection
    -                        if(gray <= F1TV_BACKGROUND_TRESHOLD.R)
    -                        {
    -                            pixel[0] = pixel[1] = pixel[2] = 0;
    -                        }
    -                        else
    -                        {
    -                            pixel[0] = pixel[1] = pixel[2] = (byte)gray;
    -                        }
    -                    }
    -                }
    -            }
    -            inputBitmap.UnlockBits(bmpData);
    -
    -            return inputBitmap;
    -        }
    +                        int max = Math.Max(Math.Max(blue, green), red);
    +
    +                        if (max > 255 / 3)
    +                            max = 255;
    +
    +                        pixel[0] = pixel[1] = pixel[2] = (byte)max;
    +                    }
    +                }
    +            }
    +            inputBitmap.UnlockBits(bmpData);
    +
    +            return inputBitmap;
    +        }
     
    +

    Et voici à quoi ca ressemble avec la paralellisation :

    +
    public Bitmap VanishOxyAction(Bitmap inputBitmap)
    +        {
    +            unsafe
    +            {
    +                BitmapData bitmapData = inputBitmap.LockBits(new Rectangle(0, 0, inputBitmap.Width, inputBitmap.Height), ImageLockMode.ReadWrite, inputBitmap.PixelFormat);
    +
    +                int bytesPerPixel = System.Drawing.Bitmap.GetPixelFormatSize(inputBitmap.PixelFormat) / 8;
    +                int heightInPixels = bitmapData.Height;
    +                int widthInBytes = bitmapData.Width * bytesPerPixel;
    +                byte* PtrFirstPixel = (byte*)bitmapData.Scan0;
    +
    +                Parallel.For(0, heightInPixels, y =>
    +                {
    +                    byte* currentLine = PtrFirstPixel + (y * bitmapData.Stride);
    +                    for (int x = 0; x < widthInBytes; x = x + bytesPerPixel)
    +                    {
    +                        int blue = currentLine[x];
    +                        int green = currentLine[x + 1];
    +                        int red = currentLine[x + 2];
    +
    +                        int max = Math.Max(Math.Max(blue, green), red);
    +
    +                        if (max > 255 / 3)
    +                            max = 255;
    +
    +                        currentLine[x] = currentLine[x + 1] = currentLine[x + 2] = (byte)max;
    +                    }
    +                });
    +                inputBitmap.UnlockBits(bitmapData);
    +            }
    +            return inputBitmap;
    +        }
    +
    +

    Les performances n'ont pas beaucoup augmenté mais au moins comme ca c'est fait

    +

    Jeudi 8 Juin 2023

    +

    Aujourd'hui, le but est de finir la documentation et de mettre les derniers commentaires dans le code et faire une première release en BETA.

    +

    Pour ce genre de travail un peu pénible je conseille une bonne playlist de phonk. Ca permet d'écrire en rythme.

    diff --git a/site/pdf/document.pdf b/site/pdf/document.pdf index eb3bffb..e30b8fa 100644 --- a/site/pdf/document.pdf +++ b/site/pdf/document.pdf @@ -3,8 +3,8 @@ 1 0 obj << /Type /Pages -/Kids [ 6 0 R 8 0 R 83 0 R 156 0 R 246 0 R 344 0 R 442 0 R 510 0 R 513 0 R 516 0 R 522 0 R 524 0 R 526 0 R 531 0 R 534 0 R 538 0 R 540 0 R 546 0 R 551 0 R 555 0 R 557 0 R 559 0 R 561 0 R 563 0 R 566 0 R 571 0 R 575 0 R 581 0 R 585 0 R 590 0 R 593 0 R 597 0 R 602 0 R 607 0 R 610 0 R 614 0 R 617 0 R 622 0 R 627 0 R 632 0 R 636 0 R 638 0 R 640 0 R 645 0 R 647 0 R 652 0 R 657 0 R 659 0 R 661 0 R 663 0 R 665 0 R 667 0 R 669 0 R 675 0 R 679 0 R 688 0 R 692 0 R 694 0 R 696 0 R 698 0 R 704 0 R 708 0 R 711 0 R 715 0 R 732 0 R 737 0 R 746 0 R 754 0 R 761 0 R 775 0 R 778 0 R 788 0 R 799 0 R 804 0 R 818 0 R 827 0 R 841 0 R 852 0 R 865 0 R 867 0 R 873 0 R 877 0 R 879 0 R 882 0 R 887 0 R 892 0 R 896 0 R 905 0 R 912 0 R 917 0 R 923 0 R 927 0 R 929 0 R 931 0 R 936 0 R 941 0 R 946 0 R 951 0 R 957 0 R 961 0 R 963 0 R 965 0 R 968 0 R 972 0 R 974 0 R 976 0 R 978 0 R 980 0 R 985 0 R 989 0 R 992 0 R 996 0 R 1001 0 R 1003 0 R 1005 0 R 1009 0 R 1014 0 R 1020 0 R 1025 0 R 1029 0 R 1035 0 R 1040 0 R 1044 0 R 1048 0 R 1052 0 R 1060 0 R 1066 0 R 1071 0 R 1076 0 R 1083 0 R 1092 0 R 1097 0 R 1102 0 R 1107 0 R 1112 0 R 1117 0 R 1122 0 R 1129 0 R 1132 0 R 1135 0 R 1138 0 R 1141 0 R 1145 0 R 1147 0 R 1149 0 R 1151 0 R 1153 0 R 1156 0 R 1166 0 R 1169 0 R 1174 0 R 1179 0 R 1184 0 R 1192 0 R 1196 0 R 1199 0 R 1204 0 R 1209 0 R 1213 0 R 1219 0 R 1224 0 R 1228 0 R 1233 0 R 1241 0 R 1244 0 R 1248 0 R 1250 0 R 1252 0 R 1257 0 R 1266 0 R 1274 0 R 1281 0 R 1283 0 R 1294 0 R 1300 0 R 1307 0 R 1312 0 R 1315 0 R 1319 0 R 1321 0 R 1324 0 R 1335 0 R 1340 0 R 1344 0 R 1346 0 R 1348 0 R 1350 0 R 1362 0 R 1373 0 R 1386 0 R 1391 0 R 1393 0 R 1402 0 R 1406 0 R 1412 0 R 1416 0 R 1418 0 R 1429 0 R 1437 0 R 1439 0 R 1441 0 R 1443 0 R 1445 0 R 1448 0 R 1451 0 R 1455 0 R 1458 0 R 1461 0 R 1463 0 R 1465 0 R 1467 0 R 1469 0 R 1471 0 R 1477 0 R 1490 0 R 1492 0 R 1497 0 R 1500 0 R 1505 0 R 1509 0 R 1511 0 R 1513 0 R 1515 0 R 1517 0 R 1520 0 R 1527 0 R 1533 0 R 1537 0 R 1540 0 R 1545 0 R 1548 0 R 1552 0 R 1555 0 R 1559 0 R 1562 0 R 1566 0 R 1569 0 R 1573 0 R 1576 0 R 1582 0 R 1584 0 R 1587 0 R 1590 0 R 1594 0 R 1597 0 R 1603 0 R 1605 0 R 1607 0 R 1609 0 R 1611 0 R 1616 0 R 1618 0 R 1620 0 R 1622 0 R 1624 0 R 1626 0 R 1628 0 R 1633 0 R 1635 0 R 1640 0 R 1642 0 R 1645 0 R 1650 0 R 1657 0 R 1660 0 R 1665 0 R 1670 0 R 1675 0 R 1680 0 R 1684 0 R 1689 0 R 1691 0 R 1694 0 R 1699 0 R 1703 0 R 1705 0 R 1710 0 R 1721 0 R 1729 0 R 1732 0 R 1736 0 R 1742 0 R 1747 0 R 1751 0 R 1757 0 R 1761 0 R 1763 0 R 1765 0 R 1767 0 R 1769 0 R 1771 0 R 1773 0 R 1775 0 R 1777 0 R 1779 0 R 1781 0 R 1783 0 R 1785 0 R 1787 0 R 1789 0 R 1791 0 R 1793 0 R 1795 0 R 1797 0 R 1799 0 R 1801 0 R 1803 0 R 1805 0 R 1807 0 R 1809 0 R 1811 0 R 1813 0 R 1815 0 R 1817 0 R 1819 0 R 1821 0 R 1823 0 R 1825 0 R 1827 0 R 1829 0 R 1831 0 R 1833 0 R 1835 0 R 1837 0 R 1839 0 R 1841 0 R 1843 0 R 1845 0 R 1847 0 R 1849 0 R 1851 0 R 1853 0 R 1855 0 R 1857 0 R 1859 0 R 1861 0 R 1863 0 R 1865 0 R 1867 0 R 1869 0 R 1871 0 R 1873 0 R 1875 0 R 1877 0 R 1879 0 R 1881 0 R 1883 0 R 1885 0 R 1887 0 R 1889 0 R 1891 0 R 1893 0 R 1895 0 R 1897 0 R 1899 0 R 1901 0 R 1903 0 R 1905 0 R 1907 0 R 1909 0 R 1911 0 R 1913 0 R 1915 0 R 1917 0 R 1919 0 R 1921 0 R 1923 0 R 1925 0 R 1927 0 R 1929 0 R 1931 0 R 1933 0 R 1935 0 R 1937 0 R 1939 0 R 1941 0 R 1943 0 R 1945 0 R 1947 0 R 1949 0 R 1951 0 R 1953 0 R 1955 0 R 1957 0 R 1959 0 R 1961 0 R 1963 0 R 1965 0 R 1967 0 R 1969 0 R 1971 0 R 1973 0 R 1975 0 R 1977 0 R 1979 0 R 1981 0 R 1983 0 R 1985 0 R 1987 0 R 1989 0 R 1991 0 R 1993 0 R 1995 0 R 1997 0 R 1999 0 R 2001 0 R 2003 0 R 2005 0 R 2007 0 R 2009 0 R ] -/Count 410 +/Kids [ 6 0 R 8 0 R 83 0 R 156 0 R 246 0 R 329 0 R 427 0 R 528 0 R 575 0 R 578 0 R 581 0 R 587 0 R 589 0 R 591 0 R 596 0 R 599 0 R 603 0 R 605 0 R 611 0 R 616 0 R 620 0 R 622 0 R 624 0 R 626 0 R 628 0 R 631 0 R 636 0 R 640 0 R 646 0 R 650 0 R 655 0 R 658 0 R 662 0 R 667 0 R 672 0 R 675 0 R 679 0 R 682 0 R 687 0 R 692 0 R 697 0 R 701 0 R 703 0 R 705 0 R 710 0 R 712 0 R 717 0 R 722 0 R 724 0 R 726 0 R 728 0 R 730 0 R 732 0 R 734 0 R 740 0 R 744 0 R 753 0 R 757 0 R 759 0 R 761 0 R 763 0 R 769 0 R 773 0 R 776 0 R 780 0 R 797 0 R 802 0 R 811 0 R 819 0 R 826 0 R 840 0 R 843 0 R 853 0 R 864 0 R 869 0 R 883 0 R 892 0 R 906 0 R 917 0 R 930 0 R 932 0 R 938 0 R 942 0 R 944 0 R 947 0 R 952 0 R 957 0 R 961 0 R 970 0 R 977 0 R 982 0 R 988 0 R 992 0 R 994 0 R 996 0 R 1001 0 R 1004 0 R 1009 0 R 1013 0 R 1021 0 R 1026 0 R 1028 0 R 1030 0 R 1032 0 R 1037 0 R 1039 0 R 1041 0 R 1043 0 R 1048 0 R 1054 0 R 1058 0 R 1060 0 R 1062 0 R 1067 0 R 1069 0 R 1071 0 R 1073 0 R 1075 0 R 1077 0 R 1079 0 R 1081 0 R 1083 0 R 1085 0 R 1087 0 R 1089 0 R 1091 0 R 1093 0 R 1098 0 R 1102 0 R 1105 0 R 1109 0 R 1114 0 R 1116 0 R 1118 0 R 1122 0 R 1127 0 R 1133 0 R 1138 0 R 1142 0 R 1148 0 R 1153 0 R 1157 0 R 1161 0 R 1165 0 R 1173 0 R 1179 0 R 1184 0 R 1189 0 R 1196 0 R 1205 0 R 1210 0 R 1215 0 R 1220 0 R 1225 0 R 1230 0 R 1235 0 R 1242 0 R 1245 0 R 1248 0 R 1251 0 R 1254 0 R 1258 0 R 1260 0 R 1262 0 R 1264 0 R 1266 0 R 1269 0 R 1279 0 R 1282 0 R 1287 0 R 1292 0 R 1297 0 R 1305 0 R 1309 0 R 1312 0 R 1317 0 R 1322 0 R 1326 0 R 1332 0 R 1337 0 R 1341 0 R 1346 0 R 1354 0 R 1357 0 R 1361 0 R 1363 0 R 1365 0 R 1370 0 R 1379 0 R 1387 0 R 1394 0 R 1396 0 R 1407 0 R 1413 0 R 1420 0 R 1425 0 R 1428 0 R 1432 0 R 1434 0 R 1437 0 R 1448 0 R 1453 0 R 1457 0 R 1459 0 R 1461 0 R 1463 0 R 1475 0 R 1486 0 R 1499 0 R 1504 0 R 1506 0 R 1515 0 R 1519 0 R 1525 0 R 1529 0 R 1531 0 R 1542 0 R 1550 0 R 1552 0 R 1554 0 R 1556 0 R 1558 0 R 1561 0 R 1564 0 R 1568 0 R 1571 0 R 1574 0 R 1576 0 R 1578 0 R 1580 0 R 1582 0 R 1584 0 R 1590 0 R 1603 0 R 1605 0 R 1610 0 R 1613 0 R 1618 0 R 1622 0 R 1624 0 R 1626 0 R 1628 0 R 1630 0 R 1633 0 R 1640 0 R 1646 0 R 1650 0 R 1653 0 R 1658 0 R 1661 0 R 1665 0 R 1668 0 R 1672 0 R 1675 0 R 1679 0 R 1682 0 R 1686 0 R 1689 0 R 1695 0 R 1697 0 R 1700 0 R 1703 0 R 1707 0 R 1710 0 R 1716 0 R 1718 0 R 1720 0 R 1722 0 R 1724 0 R 1729 0 R 1731 0 R 1733 0 R 1735 0 R 1737 0 R 1739 0 R 1741 0 R 1746 0 R 1748 0 R 1753 0 R 1755 0 R 1758 0 R 1763 0 R 1770 0 R 1773 0 R 1778 0 R 1783 0 R 1788 0 R 1793 0 R 1797 0 R 1802 0 R 1804 0 R 1807 0 R 1812 0 R 1816 0 R 1818 0 R 1823 0 R 1834 0 R 1842 0 R 1845 0 R 1849 0 R 1855 0 R 1860 0 R 1864 0 R 1870 0 R 1874 0 R 1876 0 R 1878 0 R 1880 0 R 1882 0 R 1884 0 R 1886 0 R 1888 0 R 1890 0 R 1892 0 R 1894 0 R 1896 0 R 1898 0 R 1900 0 R 1902 0 R 1904 0 R 1906 0 R 1908 0 R 1910 0 R 1912 0 R 1914 0 R 1916 0 R 1918 0 R 1920 0 R 1922 0 R 1924 0 R 1926 0 R 1928 0 R 1930 0 R 1932 0 R 1934 0 R 1936 0 R 1938 0 R 1940 0 R 1942 0 R 1944 0 R 1946 0 R 1948 0 R 1950 0 R 1952 0 R 1954 0 R 1956 0 R 1958 0 R 1960 0 R 1962 0 R 1964 0 R 1966 0 R 1968 0 R 1970 0 R 1972 0 R 1974 0 R 1976 0 R 1978 0 R 1980 0 R 1982 0 R 1984 0 R 1986 0 R 1988 0 R 1990 0 R 1992 0 R 1994 0 R 1996 0 R 1998 0 R 2000 0 R 2002 0 R 2004 0 R 2006 0 R 2008 0 R 2010 0 R 2012 0 R 2014 0 R 2016 0 R 2018 0 R 2020 0 R 2022 0 R 2024 0 R 2026 0 R 2028 0 R 2030 0 R 2032 0 R 2034 0 R 2036 0 R 2038 0 R 2040 0 R 2042 0 R 2044 0 R 2046 0 R 2048 0 R 2050 0 R 2052 0 R 2054 0 R 2056 0 R 2058 0 R 2060 0 R 2062 0 R 2064 0 R 2066 0 R 2068 0 R 2070 0 R 2072 0 R 2074 0 R 2076 0 R 2078 0 R 2080 0 R 2082 0 R 2084 0 R 2086 0 R 2088 0 R 2090 0 R 2092 0 R 2094 0 R 2096 0 R 2098 0 R 2100 0 R 2102 0 R 2104 0 R 2106 0 R 2108 0 R ] +/Count 422 >> endobj 2 0 obj @@ -19,10 +19,10 @@ endobj << /Type /Catalog /Pages 1 0 R -/Outlines 2200 0 R +/Outlines 2326 0 R /Names << /Dests << -/Names [ (.:) [ 510 0 R /XYZ 39.386457 771.023622 0 ] (.:__span-0-1) [ 657 0 R /XYZ 60.307257 407.980122 0 ] (.:__span-0-2) [ 657 0 R /XYZ 60.307257 381.179418 0 ] (.:__span-1-1) [ 661 0 R /XYZ 60.307257 202.470522 0 ] (.:__span-1-10) [ 663 0 R /XYZ 60.307257 771.023622 0 ] (.:__span-1-11) [ 663 0 R /XYZ 60.307257 757.623270 0 ] (.:__span-1-12) [ 663 0 R /XYZ 60.307257 744.222918 0 ] (.:__span-1-13) [ 663 0 R /XYZ 60.307257 730.822566 0 ] (.:__span-1-2) [ 661 0 R /XYZ 60.307257 189.070170 0 ] (.:__span-1-3) [ 661 0 R /XYZ 60.307257 175.669818 0 ] (.:__span-1-4) [ 661 0 R /XYZ 60.307257 162.269466 0 ] (.:__span-1-5) [ 661 0 R /XYZ 60.307257 148.869114 0 ] (.:__span-1-6) [ 661 0 R /XYZ 60.307257 135.468762 0 ] (.:__span-1-7) [ 661 0 R /XYZ 60.307257 122.068410 0 ] (.:__span-1-8) [ 661 0 R /XYZ 60.307257 108.668058 0 ] (.:__span-1-9) [ 661 0 R /XYZ 60.307257 95.267706 0 ] (.:__span-10-1) [ 941 0 R /XYZ 60.307257 140.764186 0 ] (.:__span-10-10) [ 946 0 R /XYZ 60.307257 690.621510 0 ] (.:__span-10-11) [ 946 0 R /XYZ 60.307257 677.221158 0 ] (.:__span-10-12) [ 946 0 R /XYZ 60.307257 663.820806 0 ] (.:__span-10-13) [ 946 0 R /XYZ 60.307257 650.420454 0 ] (.:__span-10-14) [ 946 0 R /XYZ 60.307257 637.020102 0 ] (.:__span-10-15) [ 946 0 R /XYZ 60.307257 623.619750 0 ] (.:__span-10-16) [ 946 0 R /XYZ 60.307257 610.219398 0 ] (.:__span-10-17) [ 946 0 R /XYZ 60.307257 596.819046 0 ] (.:__span-10-18) [ 946 0 R /XYZ 60.307257 583.418694 0 ] (.:__span-10-19) [ 946 0 R /XYZ 60.307257 570.018342 0 ] (.:__span-10-2) [ 941 0 R /XYZ 60.307257 113.963482 0 ] (.:__span-10-20) [ 946 0 R /XYZ 60.307257 556.617990 0 ] (.:__span-10-21) [ 946 0 R /XYZ 60.307257 543.217638 0 ] (.:__span-10-22) [ 946 0 R /XYZ 60.307257 529.817286 0 ] (.:__span-10-23) [ 946 0 R /XYZ 60.307257 516.416934 0 ] (.:__span-10-24) [ 946 0 R /XYZ 60.307257 503.016582 0 ] (.:__span-10-25) [ 946 0 R /XYZ 60.307257 489.616230 0 ] (.:__span-10-26) [ 946 0 R /XYZ 60.307257 476.215878 0 ] (.:__span-10-27) [ 946 0 R /XYZ 60.307257 462.815526 0 ] (.:__span-10-28) [ 946 0 R /XYZ 60.307257 449.415174 0 ] (.:__span-10-29) [ 946 0 R /XYZ 60.307257 436.014822 0 ] (.:__span-10-3) [ 941 0 R /XYZ 60.307257 100.563130 0 ] (.:__span-10-4) [ 941 0 R /XYZ 60.307257 87.162778 0 ] (.:__span-10-5) [ 946 0 R /XYZ 60.307257 771.023622 0 ] (.:__span-10-6) [ 946 0 R /XYZ 60.307257 744.222918 0 ] (.:__span-10-7) [ 946 0 R /XYZ 60.307257 730.822566 0 ] (.:__span-10-8) [ 946 0 R /XYZ 60.307257 717.422214 0 ] (.:__span-10-9) [ 946 0 R /XYZ 60.307257 704.021862 0 ] (.:__span-11-1) [ 957 0 R /XYZ 60.307257 186.718980 0 ] (.:__span-11-10) [ 961 0 R /XYZ 60.307257 717.422214 0 ] (.:__span-11-11) [ 961 0 R /XYZ 60.307257 704.021862 0 ] (.:__span-11-12) [ 961 0 R /XYZ 60.307257 690.621510 0 ] (.:__span-11-13) [ 961 0 R /XYZ 60.307257 677.221158 0 ] (.:__span-11-14) [ 961 0 R /XYZ 60.307257 663.820806 0 ] (.:__span-11-15) [ 961 0 R /XYZ 60.307257 650.420454 0 ] (.:__span-11-16) [ 961 0 R /XYZ 60.307257 637.020102 0 ] (.:__span-11-2) [ 957 0 R /XYZ 60.307257 159.918276 0 ] (.:__span-11-3) [ 957 0 R /XYZ 60.307257 133.117572 0 ] (.:__span-11-4) [ 957 0 R /XYZ 60.307257 119.717220 0 ] (.:__span-11-5) [ 957 0 R /XYZ 60.307257 106.316868 0 ] (.:__span-11-6) [ 961 0 R /XYZ 60.307257 771.023622 0 ] (.:__span-11-7) [ 961 0 R /XYZ 60.307257 757.623270 0 ] (.:__span-11-8) [ 961 0 R /XYZ 60.307257 744.222918 0 ] (.:__span-11-9) [ 961 0 R /XYZ 60.307257 730.822566 0 ] (.:__span-12-1) [ 963 0 R /XYZ 60.307257 186.377322 0 ] (.:__span-12-10) [ 965 0 R /XYZ 60.307257 744.222918 0 ] (.:__span-12-11) [ 965 0 R /XYZ 60.307257 730.822566 0 ] (.:__span-12-12) [ 965 0 R /XYZ 60.307257 717.422214 0 ] (.:__span-12-13) [ 965 0 R /XYZ 60.307257 704.021862 0 ] (.:__span-12-14) [ 965 0 R /XYZ 60.307257 690.621510 0 ] (.:__span-12-15) [ 965 0 R /XYZ 60.307257 677.221158 0 ] (.:__span-12-16) [ 965 0 R /XYZ 60.307257 663.820806 0 ] (.:__span-12-17) [ 965 0 R /XYZ 60.307257 650.420454 0 ] (.:__span-12-18) [ 965 0 R /XYZ 60.307257 637.020102 0 ] (.:__span-12-19) [ 965 0 R /XYZ 60.307257 623.619750 0 ] (.:__span-12-2) [ 963 0 R /XYZ 60.307257 172.976970 0 ] (.:__span-12-20) [ 965 0 R /XYZ 60.307257 610.219398 0 ] (.:__span-12-21) [ 965 0 R /XYZ 60.307257 596.819046 0 ] (.:__span-12-22) [ 965 0 R /XYZ 60.307257 583.418694 0 ] (.:__span-12-23) [ 965 0 R /XYZ 60.307257 570.018342 0 ] (.:__span-12-24) [ 965 0 R /XYZ 60.307257 556.617990 0 ] (.:__span-12-25) [ 965 0 R /XYZ 60.307257 543.217638 0 ] (.:__span-12-26) [ 965 0 R /XYZ 60.307257 516.416934 0 ] (.:__span-12-27) [ 965 0 R /XYZ 60.307257 503.016582 0 ] (.:__span-12-28) [ 965 0 R /XYZ 60.307257 489.616230 0 ] (.:__span-12-29) [ 965 0 R /XYZ 60.307257 476.215878 0 ] (.:__span-12-3) [ 963 0 R /XYZ 60.307257 159.576618 0 ] (.:__span-12-30) [ 965 0 R /XYZ 60.307257 462.815526 0 ] (.:__span-12-31) [ 965 0 R /XYZ 60.307257 449.415174 0 ] (.:__span-12-32) [ 965 0 R /XYZ 60.307257 422.614470 0 ] (.:__span-12-33) [ 965 0 R /XYZ 60.307257 395.813766 0 ] (.:__span-12-34) [ 965 0 R /XYZ 60.307257 382.413414 0 ] (.:__span-12-35) [ 965 0 R /XYZ 60.307257 369.013062 0 ] (.:__span-12-36) [ 965 0 R /XYZ 60.307257 355.612710 0 ] (.:__span-12-4) [ 963 0 R /XYZ 60.307257 146.176266 0 ] (.:__span-12-5) [ 963 0 R /XYZ 60.307257 132.775914 0 ] (.:__span-12-6) [ 963 0 R /XYZ 60.307257 119.375562 0 ] (.:__span-12-7) [ 963 0 R /XYZ 60.307257 105.975210 0 ] (.:__span-12-8) [ 963 0 R /XYZ 60.307257 92.574858 0 ] (.:__span-12-9) [ 965 0 R /XYZ 60.307257 757.623270 0 ] (.:__span-2-1) [ 663 0 R /XYZ 60.307257 422.999214 0 ] (.:__span-2-10) [ 663 0 R /XYZ 60.307257 302.396046 0 ] (.:__span-2-11) [ 663 0 R /XYZ 60.307257 275.595342 0 ] (.:__span-2-12) [ 663 0 R /XYZ 60.307257 262.194990 0 ] (.:__span-2-13) [ 663 0 R /XYZ 60.307257 248.794638 0 ] (.:__span-2-14) [ 663 0 R /XYZ 60.307257 235.394286 0 ] (.:__span-2-15) [ 663 0 R /XYZ 60.307257 221.993934 0 ] (.:__span-2-16) [ 663 0 R /XYZ 60.307257 208.593582 0 ] (.:__span-2-17) [ 663 0 R /XYZ 60.307257 195.193230 0 ] (.:__span-2-18) [ 663 0 R /XYZ 60.307257 181.792878 0 ] (.:__span-2-19) [ 663 0 R /XYZ 60.307257 168.392526 0 ] (.:__span-2-2) [ 663 0 R /XYZ 60.307257 409.598862 0 ] (.:__span-2-20) [ 663 0 R /XYZ 60.307257 154.992174 0 ] (.:__span-2-21) [ 663 0 R /XYZ 60.307257 141.591822 0 ] (.:__span-2-22) [ 663 0 R /XYZ 60.307257 128.191470 0 ] (.:__span-2-23) [ 663 0 R /XYZ 60.307257 114.791118 0 ] (.:__span-2-24) [ 663 0 R /XYZ 60.307257 101.390766 0 ] (.:__span-2-25) [ 663 0 R /XYZ 60.307257 87.990414 0 ] (.:__span-2-26) [ 665 0 R /XYZ 60.307257 771.023622 0 ] (.:__span-2-27) [ 665 0 R /XYZ 60.307257 757.623270 0 ] (.:__span-2-28) [ 665 0 R /XYZ 60.307257 744.222918 0 ] (.:__span-2-3) [ 663 0 R /XYZ 60.307257 396.198510 0 ] (.:__span-2-4) [ 663 0 R /XYZ 60.307257 382.798158 0 ] (.:__span-2-5) [ 663 0 R /XYZ 60.307257 369.397806 0 ] (.:__span-2-6) [ 663 0 R /XYZ 60.307257 355.997454 0 ] (.:__span-2-7) [ 663 0 R /XYZ 60.307257 342.597102 0 ] (.:__span-2-8) [ 663 0 R /XYZ 60.307257 329.196750 0 ] (.:__span-2-9) [ 663 0 R /XYZ 60.307257 315.796398 0 ] (.:__span-3-1) [ 665 0 R /XYZ 60.307257 678.506766 0 ] (.:__span-3-10) [ 665 0 R /XYZ 60.307257 557.903598 0 ] (.:__span-3-11) [ 665 0 R /XYZ 60.307257 544.503246 0 ] (.:__span-3-12) [ 665 0 R /XYZ 60.307257 531.102894 0 ] (.:__span-3-2) [ 665 0 R /XYZ 60.307257 665.106414 0 ] (.:__span-3-3) [ 665 0 R /XYZ 60.307257 651.706062 0 ] (.:__span-3-4) [ 665 0 R /XYZ 60.307257 638.305710 0 ] (.:__span-3-5) [ 665 0 R /XYZ 60.307257 624.905358 0 ] (.:__span-3-6) [ 665 0 R /XYZ 60.307257 611.505006 0 ] (.:__span-3-7) [ 665 0 R /XYZ 60.307257 598.104654 0 ] (.:__span-3-8) [ 665 0 R /XYZ 60.307257 584.704302 0 ] (.:__span-3-9) [ 665 0 R /XYZ 60.307257 571.303950 0 ] (.:__span-4-1) [ 665 0 R /XYZ 60.307257 491.661942 0 ] (.:__span-4-10) [ 665 0 R /XYZ 60.307257 371.058774 0 ] (.:__span-4-11) [ 665 0 R /XYZ 60.307257 344.258070 0 ] (.:__span-4-12) [ 665 0 R /XYZ 60.307257 330.857718 0 ] (.:__span-4-13) [ 665 0 R /XYZ 60.307257 317.457366 0 ] (.:__span-4-14) [ 665 0 R /XYZ 60.307257 304.057014 0 ] (.:__span-4-15) [ 665 0 R /XYZ 60.307257 290.656662 0 ] (.:__span-4-16) [ 665 0 R /XYZ 60.307257 277.256310 0 ] (.:__span-4-17) [ 665 0 R /XYZ 60.307257 250.455606 0 ] (.:__span-4-18) [ 665 0 R /XYZ 60.307257 237.055254 0 ] (.:__span-4-19) [ 665 0 R /XYZ 60.307257 223.654902 0 ] (.:__span-4-2) [ 665 0 R /XYZ 60.307257 478.261590 0 ] (.:__span-4-20) [ 665 0 R /XYZ 60.307257 210.254550 0 ] (.:__span-4-21) [ 665 0 R /XYZ 60.307257 196.854198 0 ] (.:__span-4-22) [ 665 0 R /XYZ 60.307257 183.453846 0 ] (.:__span-4-23) [ 665 0 R /XYZ 60.307257 170.053494 0 ] (.:__span-4-24) [ 665 0 R /XYZ 60.307257 156.653142 0 ] (.:__span-4-25) [ 665 0 R /XYZ 60.307257 143.252790 0 ] (.:__span-4-26) [ 665 0 R /XYZ 60.307257 129.852438 0 ] (.:__span-4-27) [ 665 0 R /XYZ 60.307257 116.452086 0 ] (.:__span-4-28) [ 665 0 R /XYZ 60.307257 103.051734 0 ] (.:__span-4-29) [ 665 0 R /XYZ 60.307257 89.651382 0 ] (.:__span-4-3) [ 665 0 R /XYZ 60.307257 464.861238 0 ] (.:__span-4-30) [ 667 0 R /XYZ 60.307257 771.023622 0 ] (.:__span-4-31) [ 667 0 R /XYZ 60.307257 757.623270 0 ] (.:__span-4-32) [ 667 0 R /XYZ 60.307257 744.222918 0 ] (.:__span-4-33) [ 667 0 R /XYZ 60.307257 730.822566 0 ] (.:__span-4-34) [ 667 0 R /XYZ 60.307257 717.422214 0 ] (.:__span-4-35) [ 667 0 R /XYZ 60.307257 704.021862 0 ] (.:__span-4-36) [ 667 0 R /XYZ 60.307257 690.621510 0 ] (.:__span-4-37) [ 667 0 R /XYZ 60.307257 677.221158 0 ] (.:__span-4-4) [ 665 0 R /XYZ 60.307257 451.460886 0 ] (.:__span-4-5) [ 665 0 R /XYZ 60.307257 438.060534 0 ] (.:__span-4-6) [ 665 0 R /XYZ 60.307257 424.660182 0 ] (.:__span-4-7) [ 665 0 R /XYZ 60.307257 411.259830 0 ] (.:__span-4-8) [ 665 0 R /XYZ 60.307257 397.859478 0 ] (.:__span-4-9) [ 665 0 R /XYZ 60.307257 384.459126 0 ] (.:__span-5-1) [ 675 0 R /XYZ 60.307257 671.460194 0 ] (.:__span-5-10) [ 675 0 R /XYZ 60.307257 537.456674 0 ] (.:__span-5-11) [ 675 0 R /XYZ 60.307257 524.056322 0 ] (.:__span-5-12) [ 675 0 R /XYZ 60.307257 510.655970 0 ] (.:__span-5-13) [ 675 0 R /XYZ 60.307257 497.255618 0 ] (.:__span-5-14) [ 675 0 R /XYZ 60.307257 483.855266 0 ] (.:__span-5-15) [ 675 0 R /XYZ 60.307257 470.454914 0 ] (.:__span-5-16) [ 675 0 R /XYZ 60.307257 457.054562 0 ] (.:__span-5-17) [ 675 0 R /XYZ 60.307257 443.654210 0 ] (.:__span-5-18) [ 675 0 R /XYZ 60.307257 416.853506 0 ] (.:__span-5-19) [ 675 0 R /XYZ 60.307257 403.453154 0 ] (.:__span-5-2) [ 675 0 R /XYZ 60.307257 658.059842 0 ] (.:__span-5-20) [ 675 0 R /XYZ 60.307257 390.052802 0 ] (.:__span-5-21) [ 675 0 R /XYZ 60.307257 376.652450 0 ] (.:__span-5-22) [ 675 0 R /XYZ 60.307257 363.252098 0 ] (.:__span-5-23) [ 675 0 R /XYZ 60.307257 349.851746 0 ] (.:__span-5-24) [ 675 0 R /XYZ 60.307257 323.051042 0 ] (.:__span-5-25) [ 675 0 R /XYZ 60.307257 309.650690 0 ] (.:__span-5-26) [ 675 0 R /XYZ 60.307257 296.250338 0 ] (.:__span-5-27) [ 675 0 R /XYZ 60.307257 269.449634 0 ] (.:__span-5-28) [ 675 0 R /XYZ 60.307257 256.049282 0 ] (.:__span-5-29) [ 675 0 R /XYZ 60.307257 229.248578 0 ] (.:__span-5-3) [ 675 0 R /XYZ 60.307257 644.659490 0 ] (.:__span-5-30) [ 675 0 R /XYZ 60.307257 202.447874 0 ] (.:__span-5-31) [ 675 0 R /XYZ 60.307257 189.047522 0 ] (.:__span-5-32) [ 675 0 R /XYZ 60.307257 175.647170 0 ] (.:__span-5-33) [ 675 0 R /XYZ 60.307257 162.246818 0 ] (.:__span-5-34) [ 675 0 R /XYZ 60.307257 135.446114 0 ] (.:__span-5-35) [ 675 0 R /XYZ 60.307257 122.045762 0 ] (.:__span-5-36) [ 675 0 R /XYZ 60.307257 108.645410 0 ] (.:__span-5-37) [ 675 0 R /XYZ 60.307257 95.245058 0 ] (.:__span-5-38) [ 679 0 R /XYZ 60.307257 771.023622 0 ] (.:__span-5-39) [ 679 0 R /XYZ 60.307257 757.623270 0 ] (.:__span-5-4) [ 675 0 R /XYZ 60.307257 631.259138 0 ] (.:__span-5-40) [ 679 0 R /XYZ 60.307257 744.222918 0 ] (.:__span-5-41) [ 679 0 R /XYZ 60.307257 730.822566 0 ] (.:__span-5-42) [ 679 0 R /XYZ 60.307257 704.021862 0 ] (.:__span-5-43) [ 679 0 R /XYZ 60.307257 690.621510 0 ] (.:__span-5-44) [ 679 0 R /XYZ 60.307257 677.221158 0 ] (.:__span-5-45) [ 679 0 R /XYZ 60.307257 663.820806 0 ] (.:__span-5-46) [ 679 0 R /XYZ 60.307257 650.420454 0 ] (.:__span-5-47) [ 679 0 R /XYZ 60.307257 637.020102 0 ] (.:__span-5-48) [ 679 0 R /XYZ 60.307257 623.619750 0 ] (.:__span-5-49) [ 679 0 R /XYZ 60.307257 610.219398 0 ] (.:__span-5-5) [ 675 0 R /XYZ 60.307257 617.858786 0 ] (.:__span-5-50) [ 679 0 R /XYZ 60.307257 596.819046 0 ] (.:__span-5-51) [ 679 0 R /XYZ 60.307257 583.418694 0 ] (.:__span-5-52) [ 679 0 R /XYZ 60.307257 570.018342 0 ] (.:__span-5-53) [ 679 0 R /XYZ 60.307257 543.217638 0 ] (.:__span-5-54) [ 679 0 R /XYZ 60.307257 516.416934 0 ] (.:__span-5-55) [ 679 0 R /XYZ 60.307257 503.016582 0 ] (.:__span-5-56) [ 679 0 R /XYZ 60.307257 489.616230 0 ] (.:__span-5-57) [ 679 0 R /XYZ 60.307257 462.815526 0 ] (.:__span-5-58) [ 679 0 R /XYZ 60.307257 449.415174 0 ] (.:__span-5-59) [ 679 0 R /XYZ 60.307257 436.014822 0 ] (.:__span-5-6) [ 675 0 R /XYZ 60.307257 604.458434 0 ] (.:__span-5-60) [ 679 0 R /XYZ 60.307257 422.614470 0 ] (.:__span-5-61) [ 679 0 R /XYZ 60.307257 409.214118 0 ] (.:__span-5-62) [ 679 0 R /XYZ 60.307257 395.813766 0 ] (.:__span-5-7) [ 675 0 R /XYZ 60.307257 577.657730 0 ] (.:__span-5-8) [ 675 0 R /XYZ 60.307257 564.257378 0 ] (.:__span-5-9) [ 675 0 R /XYZ 60.307257 550.857026 0 ] (.:__span-6-1) [ 688 0 R /XYZ 60.307257 458.116602 0 ] (.:__span-6-10) [ 688 0 R /XYZ 60.307257 337.513434 0 ] (.:__span-6-100) [ 694 0 R /XYZ 60.307257 516.416934 0 ] (.:__span-6-101) [ 694 0 R /XYZ 60.307257 503.016582 0 ] (.:__span-6-102) [ 694 0 R /XYZ 60.307257 489.616230 0 ] (.:__span-6-103) [ 694 0 R /XYZ 60.307257 476.215878 0 ] (.:__span-6-104) [ 694 0 R /XYZ 60.307257 462.815526 0 ] (.:__span-6-105) [ 694 0 R /XYZ 60.307257 449.415174 0 ] (.:__span-6-106) [ 694 0 R /XYZ 60.307257 436.014822 0 ] (.:__span-6-107) [ 694 0 R /XYZ 60.307257 422.614470 0 ] (.:__span-6-108) [ 694 0 R /XYZ 60.307257 409.214118 0 ] (.:__span-6-109) [ 694 0 R /XYZ 60.307257 395.813766 0 ] (.:__span-6-11) [ 688 0 R /XYZ 60.307257 324.113082 0 ] (.:__span-6-110) [ 694 0 R /XYZ 60.307257 382.413414 0 ] (.:__span-6-111) [ 694 0 R /XYZ 60.307257 369.013062 0 ] (.:__span-6-112) [ 694 0 R /XYZ 60.307257 355.612710 0 ] (.:__span-6-113) [ 694 0 R /XYZ 60.307257 342.212358 0 ] (.:__span-6-114) [ 694 0 R /XYZ 60.307257 328.812006 0 ] (.:__span-6-115) [ 694 0 R /XYZ 60.307257 315.411654 0 ] (.:__span-6-116) [ 694 0 R /XYZ 60.307257 302.011302 0 ] (.:__span-6-117) [ 694 0 R /XYZ 60.307257 288.610950 0 ] (.:__span-6-118) [ 694 0 R /XYZ 60.307257 275.210598 0 ] (.:__span-6-119) [ 694 0 R /XYZ 60.307257 261.810246 0 ] (.:__span-6-12) [ 688 0 R /XYZ 60.307257 310.712730 0 ] (.:__span-6-120) [ 694 0 R /XYZ 60.307257 248.409894 0 ] (.:__span-6-121) [ 694 0 R /XYZ 60.307257 235.009542 0 ] (.:__span-6-122) [ 694 0 R /XYZ 60.307257 221.609190 0 ] (.:__span-6-123) [ 694 0 R /XYZ 60.307257 208.208838 0 ] (.:__span-6-124) [ 694 0 R /XYZ 60.307257 194.808486 0 ] (.:__span-6-125) [ 694 0 R /XYZ 60.307257 181.408134 0 ] (.:__span-6-126) [ 694 0 R /XYZ 60.307257 168.007782 0 ] (.:__span-6-127) [ 694 0 R /XYZ 60.307257 154.607430 0 ] (.:__span-6-128) [ 694 0 R /XYZ 60.307257 141.207078 0 ] (.:__span-6-129) [ 694 0 R /XYZ 60.307257 127.806726 0 ] (.:__span-6-13) [ 688 0 R /XYZ 60.307257 297.312378 0 ] (.:__span-6-130) [ 694 0 R /XYZ 60.307257 114.406374 0 ] (.:__span-6-131) [ 694 0 R /XYZ 60.307257 101.006022 0 ] (.:__span-6-132) [ 694 0 R /XYZ 60.307257 87.605670 0 ] (.:__span-6-133) [ 696 0 R /XYZ 60.307257 771.023622 0 ] (.:__span-6-134) [ 696 0 R /XYZ 60.307257 757.623270 0 ] (.:__span-6-135) [ 696 0 R /XYZ 60.307257 744.222918 0 ] (.:__span-6-136) [ 696 0 R /XYZ 60.307257 730.822566 0 ] (.:__span-6-137) [ 696 0 R /XYZ 60.307257 717.422214 0 ] (.:__span-6-138) [ 696 0 R /XYZ 60.307257 704.021862 0 ] (.:__span-6-139) [ 696 0 R /XYZ 60.307257 690.621510 0 ] (.:__span-6-14) [ 688 0 R /XYZ 60.307257 283.912026 0 ] (.:__span-6-140) [ 696 0 R /XYZ 60.307257 677.221158 0 ] (.:__span-6-141) [ 696 0 R /XYZ 60.307257 663.820806 0 ] (.:__span-6-142) [ 696 0 R /XYZ 60.307257 650.420454 0 ] (.:__span-6-143) [ 696 0 R /XYZ 60.307257 637.020102 0 ] (.:__span-6-144) [ 696 0 R /XYZ 60.307257 623.619750 0 ] (.:__span-6-145) [ 696 0 R /XYZ 60.307257 610.219398 0 ] (.:__span-6-146) [ 696 0 R /XYZ 60.307257 596.819046 0 ] (.:__span-6-147) [ 696 0 R /XYZ 60.307257 583.418694 0 ] (.:__span-6-148) [ 696 0 R /XYZ 60.307257 570.018342 0 ] (.:__span-6-149) [ 696 0 R /XYZ 60.307257 556.617990 0 ] (.:__span-6-15) [ 688 0 R /XYZ 60.307257 270.511674 0 ] (.:__span-6-150) [ 696 0 R /XYZ 60.307257 543.217638 0 ] (.:__span-6-151) [ 696 0 R /XYZ 60.307257 529.817286 0 ] (.:__span-6-152) [ 696 0 R /XYZ 60.307257 516.416934 0 ] (.:__span-6-153) [ 696 0 R /XYZ 60.307257 503.016582 0 ] (.:__span-6-154) [ 696 0 R /XYZ 60.307257 489.616230 0 ] (.:__span-6-155) [ 696 0 R /XYZ 60.307257 476.215878 0 ] (.:__span-6-156) [ 696 0 R /XYZ 60.307257 462.815526 0 ] (.:__span-6-157) [ 696 0 R /XYZ 60.307257 449.415174 0 ] (.:__span-6-158) [ 696 0 R /XYZ 60.307257 436.014822 0 ] (.:__span-6-159) [ 696 0 R /XYZ 60.307257 422.614470 0 ] (.:__span-6-16) [ 688 0 R /XYZ 60.307257 257.111322 0 ] (.:__span-6-160) [ 696 0 R /XYZ 60.307257 409.214118 0 ] (.:__span-6-161) [ 696 0 R /XYZ 60.307257 395.813766 0 ] (.:__span-6-162) [ 696 0 R /XYZ 60.307257 382.413414 0 ] (.:__span-6-163) [ 696 0 R /XYZ 60.307257 369.013062 0 ] (.:__span-6-17) [ 688 0 R /XYZ 60.307257 243.710970 0 ] (.:__span-6-18) [ 688 0 R /XYZ 60.307257 230.310618 0 ] (.:__span-6-19) [ 688 0 R /XYZ 60.307257 216.910266 0 ] (.:__span-6-2) [ 688 0 R /XYZ 60.307257 444.716250 0 ] (.:__span-6-20) [ 688 0 R /XYZ 60.307257 203.509914 0 ] (.:__span-6-21) [ 688 0 R /XYZ 60.307257 190.109562 0 ] (.:__span-6-22) [ 688 0 R /XYZ 60.307257 176.709210 0 ] (.:__span-6-23) [ 688 0 R /XYZ 60.307257 163.308858 0 ] (.:__span-6-24) [ 688 0 R /XYZ 60.307257 149.908506 0 ] (.:__span-6-25) [ 688 0 R /XYZ 60.307257 136.508154 0 ] (.:__span-6-26) [ 688 0 R /XYZ 60.307257 123.107802 0 ] (.:__span-6-27) [ 688 0 R /XYZ 60.307257 109.707450 0 ] (.:__span-6-28) [ 688 0 R /XYZ 60.307257 96.307098 0 ] (.:__span-6-29) [ 692 0 R /XYZ 60.307257 771.023622 0 ] (.:__span-6-3) [ 688 0 R /XYZ 60.307257 431.315898 0 ] (.:__span-6-30) [ 692 0 R /XYZ 60.307257 757.623270 0 ] (.:__span-6-31) [ 692 0 R /XYZ 60.307257 744.222918 0 ] (.:__span-6-32) [ 692 0 R /XYZ 60.307257 730.822566 0 ] (.:__span-6-33) [ 692 0 R /XYZ 60.307257 717.422214 0 ] (.:__span-6-34) [ 692 0 R /XYZ 60.307257 704.021862 0 ] (.:__span-6-35) [ 692 0 R /XYZ 60.307257 690.621510 0 ] (.:__span-6-36) [ 692 0 R /XYZ 60.307257 677.221158 0 ] (.:__span-6-37) [ 692 0 R /XYZ 60.307257 663.820806 0 ] (.:__span-6-38) [ 692 0 R /XYZ 60.307257 650.420454 0 ] (.:__span-6-39) [ 692 0 R /XYZ 60.307257 637.020102 0 ] (.:__span-6-4) [ 688 0 R /XYZ 60.307257 417.915546 0 ] (.:__span-6-40) [ 692 0 R /XYZ 60.307257 623.619750 0 ] (.:__span-6-41) [ 692 0 R /XYZ 60.307257 610.219398 0 ] (.:__span-6-42) [ 692 0 R /XYZ 60.307257 596.819046 0 ] (.:__span-6-43) [ 692 0 R /XYZ 60.307257 583.418694 0 ] (.:__span-6-44) [ 692 0 R /XYZ 60.307257 570.018342 0 ] (.:__span-6-45) [ 692 0 R /XYZ 60.307257 556.617990 0 ] (.:__span-6-46) [ 692 0 R /XYZ 60.307257 543.217638 0 ] (.:__span-6-47) [ 692 0 R /XYZ 60.307257 529.817286 0 ] (.:__span-6-48) [ 692 0 R /XYZ 60.307257 516.416934 0 ] (.:__span-6-49) [ 692 0 R /XYZ 60.307257 503.016582 0 ] (.:__span-6-5) [ 688 0 R /XYZ 60.307257 404.515194 0 ] (.:__span-6-50) [ 692 0 R /XYZ 60.307257 489.616230 0 ] (.:__span-6-51) [ 692 0 R /XYZ 60.307257 476.215878 0 ] (.:__span-6-52) [ 692 0 R /XYZ 60.307257 462.815526 0 ] (.:__span-6-53) [ 692 0 R /XYZ 60.307257 449.415174 0 ] (.:__span-6-54) [ 692 0 R /XYZ 60.307257 436.014822 0 ] (.:__span-6-55) [ 692 0 R /XYZ 60.307257 422.614470 0 ] (.:__span-6-56) [ 692 0 R /XYZ 60.307257 409.214118 0 ] (.:__span-6-57) [ 692 0 R /XYZ 60.307257 395.813766 0 ] (.:__span-6-58) [ 692 0 R /XYZ 60.307257 382.413414 0 ] (.:__span-6-59) [ 692 0 R /XYZ 60.307257 369.013062 0 ] (.:__span-6-6) [ 688 0 R /XYZ 60.307257 391.114842 0 ] (.:__span-6-60) [ 692 0 R /XYZ 60.307257 355.612710 0 ] (.:__span-6-61) [ 692 0 R /XYZ 60.307257 342.212358 0 ] (.:__span-6-62) [ 692 0 R /XYZ 60.307257 328.812006 0 ] (.:__span-6-63) [ 692 0 R /XYZ 60.307257 315.411654 0 ] (.:__span-6-64) [ 692 0 R /XYZ 60.307257 302.011302 0 ] (.:__span-6-65) [ 692 0 R /XYZ 60.307257 288.610950 0 ] (.:__span-6-66) [ 692 0 R /XYZ 60.307257 275.210598 0 ] (.:__span-6-67) [ 692 0 R /XYZ 60.307257 261.810246 0 ] (.:__span-6-68) [ 692 0 R /XYZ 60.307257 248.409894 0 ] (.:__span-6-69) [ 692 0 R /XYZ 60.307257 235.009542 0 ] (.:__span-6-7) [ 688 0 R /XYZ 60.307257 377.714490 0 ] (.:__span-6-70) [ 692 0 R /XYZ 60.307257 221.609190 0 ] (.:__span-6-71) [ 692 0 R /XYZ 60.307257 208.208838 0 ] (.:__span-6-72) [ 692 0 R /XYZ 60.307257 194.808486 0 ] (.:__span-6-73) [ 692 0 R /XYZ 60.307257 181.408134 0 ] (.:__span-6-74) [ 692 0 R /XYZ 60.307257 168.007782 0 ] (.:__span-6-75) [ 692 0 R /XYZ 60.307257 154.607430 0 ] (.:__span-6-76) [ 692 0 R /XYZ 60.307257 141.207078 0 ] (.:__span-6-77) [ 692 0 R /XYZ 60.307257 127.806726 0 ] (.:__span-6-78) [ 692 0 R /XYZ 60.307257 114.406374 0 ] (.:__span-6-79) [ 692 0 R /XYZ 60.307257 101.006022 0 ] (.:__span-6-8) [ 688 0 R /XYZ 60.307257 364.314138 0 ] (.:__span-6-80) [ 692 0 R /XYZ 60.307257 87.605670 0 ] (.:__span-6-81) [ 694 0 R /XYZ 60.307257 771.023622 0 ] (.:__span-6-82) [ 694 0 R /XYZ 60.307257 757.623270 0 ] (.:__span-6-83) [ 694 0 R /XYZ 60.307257 744.222918 0 ] (.:__span-6-84) [ 694 0 R /XYZ 60.307257 730.822566 0 ] (.:__span-6-85) [ 694 0 R /XYZ 60.307257 717.422214 0 ] (.:__span-6-86) [ 694 0 R /XYZ 60.307257 704.021862 0 ] (.:__span-6-87) [ 694 0 R /XYZ 60.307257 690.621510 0 ] (.:__span-6-88) [ 694 0 R /XYZ 60.307257 677.221158 0 ] (.:__span-6-89) [ 694 0 R /XYZ 60.307257 663.820806 0 ] (.:__span-6-9) [ 688 0 R /XYZ 60.307257 350.913786 0 ] (.:__span-6-90) [ 694 0 R /XYZ 60.307257 650.420454 0 ] (.:__span-6-91) [ 694 0 R /XYZ 60.307257 637.020102 0 ] (.:__span-6-92) [ 694 0 R /XYZ 60.307257 623.619750 0 ] (.:__span-6-93) [ 694 0 R /XYZ 60.307257 610.219398 0 ] (.:__span-6-94) [ 694 0 R /XYZ 60.307257 596.819046 0 ] (.:__span-6-95) [ 694 0 R /XYZ 60.307257 583.418694 0 ] (.:__span-6-96) [ 694 0 R /XYZ 60.307257 570.018342 0 ] (.:__span-6-97) [ 694 0 R /XYZ 60.307257 556.617990 0 ] (.:__span-6-98) [ 694 0 R /XYZ 60.307257 543.217638 0 ] (.:__span-6-99) [ 694 0 R /XYZ 60.307257 529.817286 0 ] (.:__span-7-1) [ 929 0 R /XYZ 60.307257 428.812602 0 ] (.:__span-7-2) [ 929 0 R /XYZ 60.307257 415.412250 0 ] (.:__span-7-3) [ 929 0 R /XYZ 60.307257 402.011898 0 ] (.:__span-7-4) [ 929 0 R /XYZ 60.307257 388.611546 0 ] (.:__span-7-5) [ 929 0 R /XYZ 60.307257 375.211194 0 ] (.:__span-7-6) [ 929 0 R /XYZ 60.307257 361.810842 0 ] (.:__span-7-7) [ 929 0 R /XYZ 60.307257 348.410490 0 ] (.:__span-8-1) [ 931 0 R /XYZ 60.307257 381.602202 0 ] (.:__span-8-2) [ 931 0 R /XYZ 60.307257 368.201850 0 ] (.:__span-8-3) [ 931 0 R /XYZ 60.307257 354.801498 0 ] (.:__span-8-4) [ 931 0 R /XYZ 60.307257 341.401146 0 ] (.:__span-8-5) [ 931 0 R /XYZ 60.307257 328.000794 0 ] (.:__span-8-6) [ 931 0 R /XYZ 60.307257 314.600442 0 ] (.:__span-9-1) [ 936 0 R /XYZ 60.307257 458.458122 0 ] (.:__span-9-2) [ 936 0 R /XYZ 60.307257 445.057770 0 ] (.:__span-9-3) [ 936 0 R /XYZ 60.307257 431.657418 0 ] (.:__span-9-4) [ 936 0 R /XYZ 60.307257 418.257066 0 ] (.:__span-9-5) [ 936 0 R /XYZ 60.307257 404.856714 0 ] (.:__span-9-6) [ 936 0 R /XYZ 60.307257 391.456362 0 ] (.:__span-9-7) [ 936 0 R /XYZ 60.307257 378.056010 0 ] (.:abstract) [ 522 0 R /XYZ 39.386457 771.023622 0 ] (.:affichage-calcule) [ 941 0 R /XYZ 42.836457 716.541222 0 ] (.:affichage-des-donnees) [ 936 0 R /XYZ 39.386457 722.226822 0 ] (.:affichage-direct) [ 936 0 R /XYZ 42.836457 580.332822 0 ] (.:affichage-hybride) [ 941 0 R /XYZ 42.836457 667.744422 0 ] (.:affichage-predictif) [ 961 0 R /XYZ 42.836457 595.529850 0 ] (.:affichage-totalement-calcule) [ 951 0 R /XYZ 42.836457 353.735622 0 ] (.:ameliorations-futures) [ 976 0 R /XYZ 39.386457 265.576722 0 ] (.:analyse-fonctionnelle) [ 563 0 R /XYZ 39.386457 335.606022 0 ] (.:analyse-organique) [ 563 0 R /XYZ 39.386457 246.262122 0 ] (.:base-de-donnee) [ 923 0 R /XYZ 42.836457 353.394469 0 ] (.:browser-headless) [ 972 0 R /XYZ 39.386457 324.008922 0 ] (.:cahier-des-charges) [ 524 0 R /XYZ 39.386457 550.499622 0 ] (.:calibration) [ 667 0 R /XYZ 42.836457 579.426906 0 ] (.:cas-dutilisation) [ 534 0 R /XYZ 39.386457 412.926066 0 ] (.:chiffres) [ 775 0 R /XYZ 42.836457 460.413222 0 ] (.:comment-ca-aurait-du-se-passer) [ 968 0 R /XYZ 39.386457 250.947249 0 ] (.:comment-ca-cest-passe) [ 963 0 R /XYZ 39.386457 682.814022 0 ] (.:comment-faire) [ 645 0 R /XYZ 42.836457 735.309222 0 ] (.:conclusion) [ 976 0 R /XYZ 39.386457 176.232822 0 ] (.:controler-le-navigateur) [ 652 0 R /XYZ 42.836457 387.800022 0 ] (.:csharp) [ 597 0 R /XYZ 42.836457 487.571622 0 ] (.:description-du-besoin) [ 522 0 R /XYZ 39.386457 343.911222 0 ] (.:differences-sur-le-cahier-des-charges) [ 538 0 R /XYZ 39.386457 368.746422 0 ] (.:difficultes-techniques) [ 538 0 R /XYZ 39.386457 638.709222 0 ] (.:drs) [ 865 0 R /XYZ 42.836457 584.282022 0 ] (.:dt) [ 555 0 R /XYZ 42.836457 404.984502 0 ] (.:dt1-creation-du-poster-1) [ 555 0 R /XYZ 42.836457 341.173302 0 ] (.:dt2-documentation-analyse-de-lexistant-2) [ 555 0 R /XYZ 42.836457 225.937782 0 ] (.:dt3-documentation-analyse-organique-5) [ 555 0 R /XYZ 42.836457 140.731062 0 ] (.:dt4-documentation-analyse-fonctionnelle-2) [ 557 0 R /XYZ 42.836457 692.198022 0 ] (.:dt5-documentation-tests-1) [ 557 0 R /XYZ 42.836457 552.564102 0 ] (.:dt6-documentation-reste-2) [ 557 0 R /XYZ 42.836457 476.741382 0 ] (.:ethique-du-projet) [ 976 0 R /XYZ 39.386457 459.278922 0 ] (.:figma) [ 575 0 R /XYZ 42.836457 270.006822 0 ] (.:filtres-et-methodes-sur-les-images) [ 865 0 R /XYZ 42.836457 523.473702 0 ] (.:filtres-et-traitement) [ 732 0 R /XYZ 42.836457 237.136277 0 ] (.:firefox) [ 607 0 R /XYZ 42.836457 389.978022 0 ] (.:fonctionnement-general) [ 614 0 R /XYZ 39.386457 435.021222 0 ] (.:fonctionnement-general_1) [ 698 0 R /XYZ 42.836457 771.023622 0 ] (.:glossaire) [ 978 0 R /XYZ 39.386457 710.770122 0 ] (.:introduction) [ 516 0 R /XYZ 39.386457 723.165222 0 ] (.:lecons) [ 972 0 R /XYZ 39.386457 613.372422 0 ] (.:les-briques-principales) [ 614 0 R /XYZ 42.836457 326.909622 0 ] (.:les-chiffres-2) [ 799 0 R /XYZ 42.836457 569.267622 0 ] (.:liste-des-pilotes) [ 669 0 R /XYZ 42.836457 771.023622 0 ] (.:materialmkdocsmarkdown) [ 575 0 R /XYZ 42.836457 771.023622 0 ] (.:notes-de-code) [ 978 0 R /XYZ 39.386457 771.023622 0 ] (.:ocr) [ 617 0 R /XYZ 42.836457 95.795299 0 ] (.:ocr_1) [ 696 0 R /XYZ 39.386457 303.179610 0 ] (.:ocr_2) [ 974 0 R /XYZ 39.386457 613.372422 0 ] (.:optimisation-du-programme) [ 976 0 R /XYZ 39.386457 717.534822 0 ] (.:outils-utilises) [ 563 0 R /XYZ 39.386457 190.700622 0 ] (.:petit-point-resolution) [ 879 0 R /XYZ 42.836457 371.265222 0 ] (.:planning-effectif-et-differences) [ 561 0 R /XYZ 39.386457 517.843302 0 ] (.:planning-previsionnel) [ 551 0 R /XYZ 39.386457 268.716368 0 ] (.:pneus) [ 799 0 R /XYZ 42.836457 523.473702 0 ] (.:projet) [ 524 0 R /XYZ 39.386457 435.818922 0 ] (.:pt) [ 555 0 R /XYZ 42.836457 580.332822 0 ] (.:pt1-preparation-au-travail-de-diplome-2) [ 555 0 R /XYZ 42.836457 531.536022 0 ] (.:pt1-programmation-recuperation-des-images-3) [ 557 0 R /XYZ 42.836457 310.777062 0 ] (.:pt2-programmation-ocr-5) [ 559 0 R /XYZ 42.836457 771.023622 0 ] (.:pt3-programmation-stockage-et-modele-5) [ 559 0 R /XYZ 42.836457 625.759302 0 ] (.:pt4-programmation-vue-de-lapp-5) [ 559 0 R /XYZ 42.836457 495.509382 0 ] (.:pt5-programmation-mise-en-commun-3) [ 559 0 R /XYZ 42.836457 365.259462 0 ] (.:pt_1) [ 557 0 R /XYZ 42.836457 374.588262 0 ] (.:python) [ 602 0 R /XYZ 42.836457 517.600422 0 ] (.:quand-remplir-la-base) [ 927 0 R /XYZ 42.836457 256.212822 0 ] (.:quand-un-pilote-a-fait-un-arret-aux-stands) [ 931 0 R /XYZ 42.836457 771.023622 0 ] (.:quand-un-pilote-a-finit-un-tour) [ 929 0 R /XYZ 42.836457 746.625222 0 ] (.:rapport-track-trends-v10) [ 510 0 R /XYZ 39.386457 757.223622 0 ] (.:realisation) [ 526 0 R /XYZ 39.386457 771.023622 0 ] (.:recuperation-des-images) [ 636 0 R /XYZ 39.386457 253.026822 0 ] (.:recuperation-dimages) [ 614 0 R /XYZ 42.836457 263.098422 0 ] (.:recuperer-les-cookies) [ 659 0 R /XYZ 42.836457 409.684422 0 ] (.:resume) [ 516 0 R /XYZ 39.386457 667.603722 0 ] (.:resume-des-difficultes-techniques) [ 972 0 R /XYZ 39.386457 478.102422 0 ] (.:resume-du-fonctionnement-general) [ 627 0 R /XYZ 42.836457 187.703299 0 ] (.:selenium) [ 585 0 R /XYZ 42.836457 653.528022 0 ] (.:simuler-un-navigateur) [ 645 0 R /XYZ 42.836457 106.526022 0 ] (.:stockage) [ 688 0 R /XYZ 42.836457 646.430022 0 ] (.:stockage-des-donnees) [ 917 0 R /XYZ 39.386457 572.502822 0 ] (.:stockage_1) [ 974 0 R /XYZ 39.386457 195.644022 0 ] (.:taches) [ 555 0 R /XYZ 39.386457 771.023622 0 ] (.:technologies-utilisees) [ 585 0 R /XYZ 39.386457 771.023622 0 ] (.:tesseract) [ 614 0 R /XYZ 42.836457 611.440422 0 ] (.:tests) [ 961 0 R /XYZ 39.386457 211.724250 0 ] (.:texte) [ 754 0 R /XYZ 42.836457 369.234822 0 ] (.:traitement-des-donnees) [ 905 0 R /XYZ 39.386457 195.312822 0 ] (.:traitement-et-affichage) [ 622 0 R /XYZ 42.836457 122.598958 0 ] (.:tt) [ 559 0 R /XYZ 42.836457 238.707942 0 ] (.:tt1-tests-ocr-2) [ 559 0 R /XYZ 42.836457 174.896742 0 ] (.:tt2-tests-finaux-2) [ 561 0 R /XYZ 42.836457 662.169222 0 ] (.:utilisation-de-chat-gpt) [ 976 0 R /XYZ 39.386457 354.920622 0 ] (.:visual-studio-2022) [ 563 0 R /XYZ 42.836457 163.346622 0 ] (.:visual-studio-code) [ 566 0 R /XYZ 42.836457 298.274022 0 ] (.:windows-pilotes) [ 679 0 R /XYZ 42.836457 363.762714 0 ] (.:zone-principale) [ 669 0 R /XYZ 42.836457 640.773702 0 ] (.:zones-pilotes) [ 669 0 R /XYZ 42.836457 316.153201 0 ] (CahierDesCharges/:) [ 980 0 R /XYZ 39.386457 771.023622 0 ] (CahierDesCharges/:cahier-des-charges) [ 980 0 R /XYZ 39.386457 757.223622 0 ] (CahierDesCharges/:cas-dutilisation) [ 1001 0 R /XYZ 39.386457 771.023622 0 ] (CahierDesCharges/:contexte) [ 980 0 R /XYZ 39.386457 669.390822 0 ] (CahierDesCharges/:difficultes-techniques) [ 1003 0 R /XYZ 39.386457 771.023622 0 ] (CahierDesCharges/:projet) [ 985 0 R /XYZ 39.386457 124.199039 0 ] (CahierDesCharges/:realisation) [ 989 0 R /XYZ 39.386457 436.953222 0 ] (Code/ConfigurationTool/:) [ 1765 0 R /XYZ 39.386457 707.865222 0 ] (Code/ConfigurationTool/:__span-0-1) [ 1765 0 R /XYZ 60.307257 667.937022 0 ] (Code/ConfigurationTool/:__span-0-10) [ 1765 0 R /XYZ 60.307257 533.933502 0 ] (Code/ConfigurationTool/:__span-0-100) [ 1769 0 R /XYZ 60.307257 637.020102 0 ] (Code/ConfigurationTool/:__span-0-101) [ 1769 0 R /XYZ 60.307257 623.619750 0 ] (Code/ConfigurationTool/:__span-0-102) [ 1769 0 R /XYZ 60.307257 610.219398 0 ] (Code/ConfigurationTool/:__span-0-103) [ 1769 0 R /XYZ 60.307257 596.819046 0 ] (Code/ConfigurationTool/:__span-0-104) [ 1769 0 R /XYZ 60.307257 583.418694 0 ] (Code/ConfigurationTool/:__span-0-105) [ 1769 0 R /XYZ 60.307257 570.018342 0 ] (Code/ConfigurationTool/:__span-0-106) [ 1769 0 R /XYZ 60.307257 556.617990 0 ] (Code/ConfigurationTool/:__span-0-107) [ 1769 0 R /XYZ 60.307257 543.217638 0 ] (Code/ConfigurationTool/:__span-0-108) [ 1769 0 R /XYZ 60.307257 529.817286 0 ] (Code/ConfigurationTool/:__span-0-109) [ 1769 0 R /XYZ 60.307257 516.416934 0 ] (Code/ConfigurationTool/:__span-0-11) [ 1765 0 R /XYZ 60.307257 520.533150 0 ] (Code/ConfigurationTool/:__span-0-110) [ 1769 0 R /XYZ 60.307257 503.016582 0 ] (Code/ConfigurationTool/:__span-0-111) [ 1769 0 R /XYZ 60.307257 489.616230 0 ] (Code/ConfigurationTool/:__span-0-112) [ 1769 0 R /XYZ 60.307257 476.215878 0 ] (Code/ConfigurationTool/:__span-0-113) [ 1769 0 R /XYZ 60.307257 462.815526 0 ] (Code/ConfigurationTool/:__span-0-114) [ 1769 0 R /XYZ 60.307257 449.415174 0 ] (Code/ConfigurationTool/:__span-0-115) [ 1769 0 R /XYZ 60.307257 436.014822 0 ] (Code/ConfigurationTool/:__span-0-116) [ 1769 0 R /XYZ 60.307257 422.614470 0 ] (Code/ConfigurationTool/:__span-0-117) [ 1769 0 R /XYZ 60.307257 409.214118 0 ] (Code/ConfigurationTool/:__span-0-118) [ 1769 0 R /XYZ 60.307257 395.813766 0 ] (Code/ConfigurationTool/:__span-0-119) [ 1769 0 R /XYZ 60.307257 382.413414 0 ] (Code/ConfigurationTool/:__span-0-12) [ 1765 0 R /XYZ 60.307257 507.132798 0 ] (Code/ConfigurationTool/:__span-0-120) [ 1769 0 R /XYZ 60.307257 369.013062 0 ] (Code/ConfigurationTool/:__span-0-121) [ 1769 0 R /XYZ 60.307257 355.612710 0 ] (Code/ConfigurationTool/:__span-0-122) [ 1769 0 R /XYZ 60.307257 342.212358 0 ] (Code/ConfigurationTool/:__span-0-123) [ 1769 0 R /XYZ 60.307257 328.812006 0 ] (Code/ConfigurationTool/:__span-0-124) [ 1769 0 R /XYZ 60.307257 315.411654 0 ] (Code/ConfigurationTool/:__span-0-125) [ 1769 0 R /XYZ 60.307257 302.011302 0 ] (Code/ConfigurationTool/:__span-0-126) [ 1769 0 R /XYZ 60.307257 288.610950 0 ] (Code/ConfigurationTool/:__span-0-127) [ 1769 0 R /XYZ 60.307257 275.210598 0 ] (Code/ConfigurationTool/:__span-0-128) [ 1769 0 R /XYZ 60.307257 261.810246 0 ] (Code/ConfigurationTool/:__span-0-129) [ 1769 0 R /XYZ 60.307257 248.409894 0 ] (Code/ConfigurationTool/:__span-0-13) [ 1765 0 R /XYZ 60.307257 493.732446 0 ] (Code/ConfigurationTool/:__span-0-130) [ 1769 0 R /XYZ 60.307257 235.009542 0 ] (Code/ConfigurationTool/:__span-0-131) [ 1769 0 R /XYZ 60.307257 221.609190 0 ] (Code/ConfigurationTool/:__span-0-132) [ 1769 0 R /XYZ 60.307257 208.208838 0 ] (Code/ConfigurationTool/:__span-0-133) [ 1769 0 R /XYZ 60.307257 194.808486 0 ] (Code/ConfigurationTool/:__span-0-134) [ 1769 0 R /XYZ 60.307257 181.408134 0 ] (Code/ConfigurationTool/:__span-0-135) [ 1769 0 R /XYZ 60.307257 168.007782 0 ] (Code/ConfigurationTool/:__span-0-136) [ 1769 0 R /XYZ 60.307257 154.607430 0 ] (Code/ConfigurationTool/:__span-0-137) [ 1769 0 R /XYZ 60.307257 141.207078 0 ] (Code/ConfigurationTool/:__span-0-138) [ 1769 0 R /XYZ 60.307257 127.806726 0 ] (Code/ConfigurationTool/:__span-0-139) [ 1769 0 R /XYZ 60.307257 114.406374 0 ] (Code/ConfigurationTool/:__span-0-14) [ 1765 0 R /XYZ 60.307257 480.332094 0 ] (Code/ConfigurationTool/:__span-0-140) [ 1769 0 R /XYZ 60.307257 101.006022 0 ] (Code/ConfigurationTool/:__span-0-141) [ 1769 0 R /XYZ 60.307257 87.605670 0 ] (Code/ConfigurationTool/:__span-0-142) [ 1771 0 R /XYZ 60.307257 757.623270 0 ] (Code/ConfigurationTool/:__span-0-143) [ 1771 0 R /XYZ 60.307257 744.222918 0 ] (Code/ConfigurationTool/:__span-0-144) [ 1771 0 R /XYZ 60.307257 730.822566 0 ] (Code/ConfigurationTool/:__span-0-145) [ 1771 0 R /XYZ 60.307257 717.422214 0 ] (Code/ConfigurationTool/:__span-0-146) [ 1771 0 R /XYZ 60.307257 704.021862 0 ] (Code/ConfigurationTool/:__span-0-147) [ 1771 0 R /XYZ 60.307257 690.621510 0 ] (Code/ConfigurationTool/:__span-0-148) [ 1771 0 R /XYZ 60.307257 677.221158 0 ] (Code/ConfigurationTool/:__span-0-149) [ 1771 0 R /XYZ 60.307257 663.820806 0 ] (Code/ConfigurationTool/:__span-0-15) [ 1765 0 R /XYZ 60.307257 466.931742 0 ] (Code/ConfigurationTool/:__span-0-150) [ 1771 0 R /XYZ 60.307257 650.420454 0 ] (Code/ConfigurationTool/:__span-0-151) [ 1771 0 R /XYZ 60.307257 637.020102 0 ] (Code/ConfigurationTool/:__span-0-152) [ 1771 0 R /XYZ 60.307257 623.619750 0 ] (Code/ConfigurationTool/:__span-0-153) [ 1771 0 R /XYZ 60.307257 610.219398 0 ] (Code/ConfigurationTool/:__span-0-154) [ 1771 0 R /XYZ 60.307257 596.819046 0 ] (Code/ConfigurationTool/:__span-0-155) [ 1771 0 R /XYZ 60.307257 583.418694 0 ] (Code/ConfigurationTool/:__span-0-156) [ 1771 0 R /XYZ 60.307257 570.018342 0 ] (Code/ConfigurationTool/:__span-0-157) [ 1771 0 R /XYZ 60.307257 543.217638 0 ] (Code/ConfigurationTool/:__span-0-158) [ 1771 0 R /XYZ 60.307257 529.817286 0 ] (Code/ConfigurationTool/:__span-0-159) [ 1771 0 R /XYZ 60.307257 516.416934 0 ] (Code/ConfigurationTool/:__span-0-16) [ 1765 0 R /XYZ 60.307257 453.531390 0 ] (Code/ConfigurationTool/:__span-0-160) [ 1771 0 R /XYZ 60.307257 503.016582 0 ] (Code/ConfigurationTool/:__span-0-161) [ 1771 0 R /XYZ 60.307257 476.215878 0 ] (Code/ConfigurationTool/:__span-0-162) [ 1771 0 R /XYZ 60.307257 462.815526 0 ] (Code/ConfigurationTool/:__span-0-163) [ 1771 0 R /XYZ 60.307257 449.415174 0 ] (Code/ConfigurationTool/:__span-0-164) [ 1771 0 R /XYZ 60.307257 436.014822 0 ] (Code/ConfigurationTool/:__span-0-165) [ 1771 0 R /XYZ 60.307257 409.214118 0 ] (Code/ConfigurationTool/:__span-0-166) [ 1771 0 R /XYZ 60.307257 395.813766 0 ] (Code/ConfigurationTool/:__span-0-167) [ 1771 0 R /XYZ 60.307257 382.413414 0 ] (Code/ConfigurationTool/:__span-0-168) [ 1771 0 R /XYZ 60.307257 369.013062 0 ] (Code/ConfigurationTool/:__span-0-169) [ 1771 0 R /XYZ 60.307257 342.212358 0 ] (Code/ConfigurationTool/:__span-0-17) [ 1765 0 R /XYZ 60.307257 440.131038 0 ] (Code/ConfigurationTool/:__span-0-170) [ 1771 0 R /XYZ 60.307257 328.812006 0 ] (Code/ConfigurationTool/:__span-0-171) [ 1771 0 R /XYZ 60.307257 315.411654 0 ] (Code/ConfigurationTool/:__span-0-172) [ 1771 0 R /XYZ 60.307257 302.011302 0 ] (Code/ConfigurationTool/:__span-0-173) [ 1771 0 R /XYZ 60.307257 275.210598 0 ] (Code/ConfigurationTool/:__span-0-174) [ 1771 0 R /XYZ 60.307257 261.810246 0 ] (Code/ConfigurationTool/:__span-0-175) [ 1771 0 R /XYZ 60.307257 248.409894 0 ] (Code/ConfigurationTool/:__span-0-176) [ 1771 0 R /XYZ 60.307257 235.009542 0 ] (Code/ConfigurationTool/:__span-0-177) [ 1771 0 R /XYZ 60.307257 208.208838 0 ] (Code/ConfigurationTool/:__span-0-178) [ 1771 0 R /XYZ 60.307257 194.808486 0 ] (Code/ConfigurationTool/:__span-0-179) [ 1771 0 R /XYZ 60.307257 181.408134 0 ] (Code/ConfigurationTool/:__span-0-18) [ 1765 0 R /XYZ 60.307257 426.730686 0 ] (Code/ConfigurationTool/:__span-0-180) [ 1771 0 R /XYZ 60.307257 168.007782 0 ] (Code/ConfigurationTool/:__span-0-181) [ 1771 0 R /XYZ 60.307257 141.207078 0 ] (Code/ConfigurationTool/:__span-0-182) [ 1771 0 R /XYZ 60.307257 127.806726 0 ] (Code/ConfigurationTool/:__span-0-183) [ 1771 0 R /XYZ 60.307257 114.406374 0 ] (Code/ConfigurationTool/:__span-0-184) [ 1771 0 R /XYZ 60.307257 101.006022 0 ] (Code/ConfigurationTool/:__span-0-185) [ 1773 0 R /XYZ 60.307257 771.023622 0 ] (Code/ConfigurationTool/:__span-0-186) [ 1773 0 R /XYZ 60.307257 757.623270 0 ] (Code/ConfigurationTool/:__span-0-187) [ 1773 0 R /XYZ 60.307257 744.222918 0 ] (Code/ConfigurationTool/:__span-0-188) [ 1773 0 R /XYZ 60.307257 717.422214 0 ] (Code/ConfigurationTool/:__span-0-189) [ 1773 0 R /XYZ 60.307257 690.621510 0 ] (Code/ConfigurationTool/:__span-0-19) [ 1765 0 R /XYZ 60.307257 413.330334 0 ] (Code/ConfigurationTool/:__span-0-190) [ 1773 0 R /XYZ 60.307257 677.221158 0 ] (Code/ConfigurationTool/:__span-0-191) [ 1773 0 R /XYZ 60.307257 663.820806 0 ] (Code/ConfigurationTool/:__span-0-192) [ 1773 0 R /XYZ 60.307257 650.420454 0 ] (Code/ConfigurationTool/:__span-0-193) [ 1773 0 R /XYZ 60.307257 637.020102 0 ] (Code/ConfigurationTool/:__span-0-194) [ 1773 0 R /XYZ 60.307257 623.619750 0 ] (Code/ConfigurationTool/:__span-0-195) [ 1773 0 R /XYZ 60.307257 610.219398 0 ] (Code/ConfigurationTool/:__span-0-196) [ 1773 0 R /XYZ 60.307257 583.418694 0 ] (Code/ConfigurationTool/:__span-0-197) [ 1773 0 R /XYZ 60.307257 556.617990 0 ] (Code/ConfigurationTool/:__span-0-198) [ 1773 0 R /XYZ 60.307257 543.217638 0 ] (Code/ConfigurationTool/:__span-0-199) [ 1773 0 R /XYZ 60.307257 529.817286 0 ] (Code/ConfigurationTool/:__span-0-2) [ 1765 0 R /XYZ 60.307257 654.536670 0 ] (Code/ConfigurationTool/:__span-0-20) [ 1765 0 R /XYZ 60.307257 399.929982 0 ] (Code/ConfigurationTool/:__span-0-200) [ 1773 0 R /XYZ 60.307257 516.416934 0 ] (Code/ConfigurationTool/:__span-0-201) [ 1773 0 R /XYZ 60.307257 503.016582 0 ] (Code/ConfigurationTool/:__span-0-202) [ 1773 0 R /XYZ 60.307257 489.616230 0 ] (Code/ConfigurationTool/:__span-0-203) [ 1773 0 R /XYZ 60.307257 476.215878 0 ] (Code/ConfigurationTool/:__span-0-204) [ 1773 0 R /XYZ 60.307257 449.415174 0 ] (Code/ConfigurationTool/:__span-0-205) [ 1773 0 R /XYZ 60.307257 436.014822 0 ] (Code/ConfigurationTool/:__span-0-206) [ 1773 0 R /XYZ 60.307257 422.614470 0 ] (Code/ConfigurationTool/:__span-0-207) [ 1773 0 R /XYZ 60.307257 409.214118 0 ] (Code/ConfigurationTool/:__span-0-208) [ 1773 0 R /XYZ 60.307257 395.813766 0 ] (Code/ConfigurationTool/:__span-0-209) [ 1773 0 R /XYZ 60.307257 369.013062 0 ] (Code/ConfigurationTool/:__span-0-21) [ 1765 0 R /XYZ 60.307257 386.529630 0 ] (Code/ConfigurationTool/:__span-0-210) [ 1773 0 R /XYZ 60.307257 342.212358 0 ] (Code/ConfigurationTool/:__span-0-211) [ 1773 0 R /XYZ 60.307257 328.812006 0 ] (Code/ConfigurationTool/:__span-0-212) [ 1773 0 R /XYZ 60.307257 315.411654 0 ] (Code/ConfigurationTool/:__span-0-213) [ 1773 0 R /XYZ 60.307257 302.011302 0 ] (Code/ConfigurationTool/:__span-0-214) [ 1773 0 R /XYZ 60.307257 288.610950 0 ] (Code/ConfigurationTool/:__span-0-215) [ 1773 0 R /XYZ 60.307257 275.210598 0 ] (Code/ConfigurationTool/:__span-0-216) [ 1773 0 R /XYZ 60.307257 261.810246 0 ] (Code/ConfigurationTool/:__span-0-217) [ 1773 0 R /XYZ 60.307257 235.009542 0 ] (Code/ConfigurationTool/:__span-0-218) [ 1773 0 R /XYZ 60.307257 221.609190 0 ] (Code/ConfigurationTool/:__span-0-219) [ 1773 0 R /XYZ 60.307257 208.208838 0 ] (Code/ConfigurationTool/:__span-0-22) [ 1765 0 R /XYZ 60.307257 373.129278 0 ] (Code/ConfigurationTool/:__span-0-220) [ 1773 0 R /XYZ 60.307257 194.808486 0 ] (Code/ConfigurationTool/:__span-0-221) [ 1773 0 R /XYZ 60.307257 181.408134 0 ] (Code/ConfigurationTool/:__span-0-222) [ 1773 0 R /XYZ 60.307257 154.607430 0 ] (Code/ConfigurationTool/:__span-0-223) [ 1773 0 R /XYZ 60.307257 141.207078 0 ] (Code/ConfigurationTool/:__span-0-224) [ 1773 0 R /XYZ 60.307257 127.806726 0 ] (Code/ConfigurationTool/:__span-0-225) [ 1773 0 R /XYZ 60.307257 101.006022 0 ] (Code/ConfigurationTool/:__span-0-226) [ 1773 0 R /XYZ 60.307257 87.605670 0 ] (Code/ConfigurationTool/:__span-0-227) [ 1775 0 R /XYZ 60.307257 757.623270 0 ] (Code/ConfigurationTool/:__span-0-228) [ 1775 0 R /XYZ 60.307257 730.822566 0 ] (Code/ConfigurationTool/:__span-0-229) [ 1775 0 R /XYZ 60.307257 717.422214 0 ] (Code/ConfigurationTool/:__span-0-23) [ 1765 0 R /XYZ 60.307257 359.728926 0 ] (Code/ConfigurationTool/:__span-0-230) [ 1775 0 R /XYZ 60.307257 704.021862 0 ] (Code/ConfigurationTool/:__span-0-231) [ 1775 0 R /XYZ 60.307257 690.621510 0 ] (Code/ConfigurationTool/:__span-0-232) [ 1775 0 R /XYZ 60.307257 663.820806 0 ] (Code/ConfigurationTool/:__span-0-233) [ 1775 0 R /XYZ 60.307257 650.420454 0 ] (Code/ConfigurationTool/:__span-0-234) [ 1775 0 R /XYZ 60.307257 637.020102 0 ] (Code/ConfigurationTool/:__span-0-235) [ 1775 0 R /XYZ 60.307257 623.619750 0 ] (Code/ConfigurationTool/:__span-0-236) [ 1775 0 R /XYZ 60.307257 610.219398 0 ] (Code/ConfigurationTool/:__span-0-237) [ 1775 0 R /XYZ 60.307257 596.819046 0 ] (Code/ConfigurationTool/:__span-0-238) [ 1775 0 R /XYZ 60.307257 583.418694 0 ] (Code/ConfigurationTool/:__span-0-239) [ 1775 0 R /XYZ 60.307257 570.018342 0 ] (Code/ConfigurationTool/:__span-0-24) [ 1765 0 R /XYZ 60.307257 346.328574 0 ] (Code/ConfigurationTool/:__span-0-240) [ 1775 0 R /XYZ 60.307257 543.217638 0 ] (Code/ConfigurationTool/:__span-0-241) [ 1775 0 R /XYZ 60.307257 529.817286 0 ] (Code/ConfigurationTool/:__span-0-242) [ 1775 0 R /XYZ 60.307257 516.416934 0 ] (Code/ConfigurationTool/:__span-0-243) [ 1775 0 R /XYZ 60.307257 503.016582 0 ] (Code/ConfigurationTool/:__span-0-244) [ 1775 0 R /XYZ 60.307257 489.616230 0 ] (Code/ConfigurationTool/:__span-0-245) [ 1775 0 R /XYZ 60.307257 476.215878 0 ] (Code/ConfigurationTool/:__span-0-246) [ 1775 0 R /XYZ 60.307257 462.815526 0 ] (Code/ConfigurationTool/:__span-0-247) [ 1775 0 R /XYZ 60.307257 449.415174 0 ] (Code/ConfigurationTool/:__span-0-248) [ 1775 0 R /XYZ 60.307257 436.014822 0 ] (Code/ConfigurationTool/:__span-0-249) [ 1775 0 R /XYZ 60.307257 422.614470 0 ] (Code/ConfigurationTool/:__span-0-25) [ 1765 0 R /XYZ 60.307257 332.928222 0 ] (Code/ConfigurationTool/:__span-0-250) [ 1775 0 R /XYZ 60.307257 409.214118 0 ] (Code/ConfigurationTool/:__span-0-251) [ 1775 0 R /XYZ 60.307257 382.413414 0 ] (Code/ConfigurationTool/:__span-0-252) [ 1775 0 R /XYZ 60.307257 355.612710 0 ] (Code/ConfigurationTool/:__span-0-253) [ 1775 0 R /XYZ 60.307257 342.212358 0 ] (Code/ConfigurationTool/:__span-0-254) [ 1775 0 R /XYZ 60.307257 328.812006 0 ] (Code/ConfigurationTool/:__span-0-255) [ 1775 0 R /XYZ 60.307257 302.011302 0 ] (Code/ConfigurationTool/:__span-0-256) [ 1775 0 R /XYZ 60.307257 288.610950 0 ] (Code/ConfigurationTool/:__span-0-257) [ 1775 0 R /XYZ 60.307257 275.210598 0 ] (Code/ConfigurationTool/:__span-0-258) [ 1775 0 R /XYZ 60.307257 261.810246 0 ] (Code/ConfigurationTool/:__span-0-259) [ 1775 0 R /XYZ 60.307257 248.409894 0 ] (Code/ConfigurationTool/:__span-0-26) [ 1765 0 R /XYZ 60.307257 319.527870 0 ] (Code/ConfigurationTool/:__span-0-260) [ 1775 0 R /XYZ 60.307257 235.009542 0 ] (Code/ConfigurationTool/:__span-0-261) [ 1775 0 R /XYZ 60.307257 221.609190 0 ] (Code/ConfigurationTool/:__span-0-27) [ 1765 0 R /XYZ 60.307257 306.127518 0 ] (Code/ConfigurationTool/:__span-0-28) [ 1765 0 R /XYZ 60.307257 279.326814 0 ] (Code/ConfigurationTool/:__span-0-29) [ 1765 0 R /XYZ 60.307257 265.926462 0 ] (Code/ConfigurationTool/:__span-0-3) [ 1765 0 R /XYZ 60.307257 641.136318 0 ] (Code/ConfigurationTool/:__span-0-30) [ 1765 0 R /XYZ 60.307257 239.125758 0 ] (Code/ConfigurationTool/:__span-0-31) [ 1765 0 R /XYZ 60.307257 212.325054 0 ] (Code/ConfigurationTool/:__span-0-32) [ 1765 0 R /XYZ 60.307257 198.924702 0 ] (Code/ConfigurationTool/:__span-0-33) [ 1765 0 R /XYZ 60.307257 185.524350 0 ] (Code/ConfigurationTool/:__span-0-34) [ 1765 0 R /XYZ 60.307257 172.123998 0 ] (Code/ConfigurationTool/:__span-0-35) [ 1765 0 R /XYZ 60.307257 158.723646 0 ] (Code/ConfigurationTool/:__span-0-36) [ 1765 0 R /XYZ 60.307257 145.323294 0 ] (Code/ConfigurationTool/:__span-0-37) [ 1765 0 R /XYZ 60.307257 131.922942 0 ] (Code/ConfigurationTool/:__span-0-38) [ 1765 0 R /XYZ 60.307257 118.522590 0 ] (Code/ConfigurationTool/:__span-0-39) [ 1765 0 R /XYZ 60.307257 105.122238 0 ] (Code/ConfigurationTool/:__span-0-4) [ 1765 0 R /XYZ 60.307257 627.735966 0 ] (Code/ConfigurationTool/:__span-0-40) [ 1765 0 R /XYZ 60.307257 91.721886 0 ] (Code/ConfigurationTool/:__span-0-41) [ 1767 0 R /XYZ 60.307257 771.023622 0 ] (Code/ConfigurationTool/:__span-0-42) [ 1767 0 R /XYZ 60.307257 757.623270 0 ] (Code/ConfigurationTool/:__span-0-43) [ 1767 0 R /XYZ 60.307257 744.222918 0 ] (Code/ConfigurationTool/:__span-0-44) [ 1767 0 R /XYZ 60.307257 730.822566 0 ] (Code/ConfigurationTool/:__span-0-45) [ 1767 0 R /XYZ 60.307257 717.422214 0 ] (Code/ConfigurationTool/:__span-0-46) [ 1767 0 R /XYZ 60.307257 704.021862 0 ] (Code/ConfigurationTool/:__span-0-47) [ 1767 0 R /XYZ 60.307257 690.621510 0 ] (Code/ConfigurationTool/:__span-0-48) [ 1767 0 R /XYZ 60.307257 677.221158 0 ] (Code/ConfigurationTool/:__span-0-49) [ 1767 0 R /XYZ 60.307257 663.820806 0 ] (Code/ConfigurationTool/:__span-0-5) [ 1765 0 R /XYZ 60.307257 600.935262 0 ] (Code/ConfigurationTool/:__span-0-50) [ 1767 0 R /XYZ 60.307257 650.420454 0 ] (Code/ConfigurationTool/:__span-0-51) [ 1767 0 R /XYZ 60.307257 637.020102 0 ] (Code/ConfigurationTool/:__span-0-52) [ 1767 0 R /XYZ 60.307257 623.619750 0 ] (Code/ConfigurationTool/:__span-0-53) [ 1767 0 R /XYZ 60.307257 610.219398 0 ] (Code/ConfigurationTool/:__span-0-54) [ 1767 0 R /XYZ 60.307257 570.018342 0 ] (Code/ConfigurationTool/:__span-0-55) [ 1767 0 R /XYZ 60.307257 556.617990 0 ] (Code/ConfigurationTool/:__span-0-56) [ 1767 0 R /XYZ 60.307257 543.217638 0 ] (Code/ConfigurationTool/:__span-0-57) [ 1767 0 R /XYZ 60.307257 529.817286 0 ] (Code/ConfigurationTool/:__span-0-58) [ 1767 0 R /XYZ 60.307257 516.416934 0 ] (Code/ConfigurationTool/:__span-0-59) [ 1767 0 R /XYZ 60.307257 503.016582 0 ] (Code/ConfigurationTool/:__span-0-6) [ 1765 0 R /XYZ 60.307257 587.534910 0 ] (Code/ConfigurationTool/:__span-0-60) [ 1767 0 R /XYZ 60.307257 489.616230 0 ] (Code/ConfigurationTool/:__span-0-61) [ 1767 0 R /XYZ 60.307257 476.215878 0 ] (Code/ConfigurationTool/:__span-0-62) [ 1767 0 R /XYZ 60.307257 462.815526 0 ] (Code/ConfigurationTool/:__span-0-63) [ 1767 0 R /XYZ 60.307257 449.415174 0 ] (Code/ConfigurationTool/:__span-0-64) [ 1767 0 R /XYZ 60.307257 436.014822 0 ] (Code/ConfigurationTool/:__span-0-65) [ 1767 0 R /XYZ 60.307257 422.614470 0 ] (Code/ConfigurationTool/:__span-0-66) [ 1767 0 R /XYZ 60.307257 409.214118 0 ] (Code/ConfigurationTool/:__span-0-67) [ 1767 0 R /XYZ 60.307257 395.813766 0 ] (Code/ConfigurationTool/:__span-0-68) [ 1767 0 R /XYZ 60.307257 382.413414 0 ] (Code/ConfigurationTool/:__span-0-69) [ 1767 0 R /XYZ 60.307257 369.013062 0 ] (Code/ConfigurationTool/:__span-0-7) [ 1765 0 R /XYZ 60.307257 574.134558 0 ] (Code/ConfigurationTool/:__span-0-70) [ 1767 0 R /XYZ 60.307257 355.612710 0 ] (Code/ConfigurationTool/:__span-0-71) [ 1767 0 R /XYZ 60.307257 342.212358 0 ] (Code/ConfigurationTool/:__span-0-72) [ 1767 0 R /XYZ 60.307257 328.812006 0 ] (Code/ConfigurationTool/:__span-0-73) [ 1767 0 R /XYZ 60.307257 315.411654 0 ] (Code/ConfigurationTool/:__span-0-74) [ 1767 0 R /XYZ 60.307257 302.011302 0 ] (Code/ConfigurationTool/:__span-0-75) [ 1767 0 R /XYZ 60.307257 288.610950 0 ] (Code/ConfigurationTool/:__span-0-76) [ 1767 0 R /XYZ 60.307257 275.210598 0 ] (Code/ConfigurationTool/:__span-0-77) [ 1767 0 R /XYZ 60.307257 261.810246 0 ] (Code/ConfigurationTool/:__span-0-78) [ 1767 0 R /XYZ 60.307257 248.409894 0 ] (Code/ConfigurationTool/:__span-0-79) [ 1767 0 R /XYZ 60.307257 235.009542 0 ] (Code/ConfigurationTool/:__span-0-8) [ 1765 0 R /XYZ 60.307257 560.734206 0 ] (Code/ConfigurationTool/:__span-0-80) [ 1767 0 R /XYZ 60.307257 221.609190 0 ] (Code/ConfigurationTool/:__span-0-81) [ 1767 0 R /XYZ 60.307257 208.208838 0 ] (Code/ConfigurationTool/:__span-0-82) [ 1767 0 R /XYZ 60.307257 194.808486 0 ] (Code/ConfigurationTool/:__span-0-83) [ 1767 0 R /XYZ 60.307257 181.408134 0 ] (Code/ConfigurationTool/:__span-0-84) [ 1767 0 R /XYZ 60.307257 168.007782 0 ] (Code/ConfigurationTool/:__span-0-85) [ 1767 0 R /XYZ 60.307257 154.607430 0 ] (Code/ConfigurationTool/:__span-0-86) [ 1767 0 R /XYZ 60.307257 141.207078 0 ] (Code/ConfigurationTool/:__span-0-87) [ 1767 0 R /XYZ 60.307257 127.806726 0 ] (Code/ConfigurationTool/:__span-0-88) [ 1767 0 R /XYZ 60.307257 101.006022 0 ] (Code/ConfigurationTool/:__span-0-89) [ 1767 0 R /XYZ 60.307257 87.605670 0 ] (Code/ConfigurationTool/:__span-0-9) [ 1765 0 R /XYZ 60.307257 547.333854 0 ] (Code/ConfigurationTool/:__span-0-90) [ 1769 0 R /XYZ 60.307257 771.023622 0 ] (Code/ConfigurationTool/:__span-0-91) [ 1769 0 R /XYZ 60.307257 757.623270 0 ] (Code/ConfigurationTool/:__span-0-92) [ 1769 0 R /XYZ 60.307257 744.222918 0 ] (Code/ConfigurationTool/:__span-0-93) [ 1769 0 R /XYZ 60.307257 730.822566 0 ] (Code/ConfigurationTool/:__span-0-94) [ 1769 0 R /XYZ 60.307257 717.422214 0 ] (Code/ConfigurationTool/:__span-0-95) [ 1769 0 R /XYZ 60.307257 704.021862 0 ] (Code/ConfigurationTool/:__span-0-96) [ 1769 0 R /XYZ 60.307257 690.621510 0 ] (Code/ConfigurationTool/:__span-0-97) [ 1769 0 R /XYZ 60.307257 677.221158 0 ] (Code/ConfigurationTool/:__span-0-98) [ 1769 0 R /XYZ 60.307257 663.820806 0 ] (Code/ConfigurationTool/:__span-0-99) [ 1769 0 R /XYZ 60.307257 650.420454 0 ] (Code/ConfigurationTool/:configurationtoolcs) [ 1765 0 R /XYZ 39.386457 707.865222 0 ] (Code/DataWrapper/:) [ 1873 0 R /XYZ 39.386457 747.563622 0 ] (Code/DataWrapper/:__span-0-1) [ 1873 0 R /XYZ 60.307257 707.635422 0 ] (Code/DataWrapper/:__span-0-10) [ 1873 0 R /XYZ 60.307257 560.231550 0 ] (Code/DataWrapper/:__span-0-100) [ 1877 0 R /XYZ 60.307257 436.014822 0 ] (Code/DataWrapper/:__span-0-101) [ 1877 0 R /XYZ 60.307257 422.614470 0 ] (Code/DataWrapper/:__span-0-102) [ 1877 0 R /XYZ 60.307257 409.214118 0 ] (Code/DataWrapper/:__span-0-103) [ 1877 0 R /XYZ 60.307257 382.413414 0 ] (Code/DataWrapper/:__span-0-104) [ 1877 0 R /XYZ 60.307257 369.013062 0 ] (Code/DataWrapper/:__span-0-105) [ 1877 0 R /XYZ 60.307257 342.212358 0 ] (Code/DataWrapper/:__span-0-106) [ 1877 0 R /XYZ 60.307257 315.411654 0 ] (Code/DataWrapper/:__span-0-107) [ 1877 0 R /XYZ 60.307257 302.011302 0 ] (Code/DataWrapper/:__span-0-108) [ 1877 0 R /XYZ 60.307257 288.610950 0 ] (Code/DataWrapper/:__span-0-109) [ 1877 0 R /XYZ 60.307257 275.210598 0 ] (Code/DataWrapper/:__span-0-11) [ 1873 0 R /XYZ 60.307257 546.831198 0 ] (Code/DataWrapper/:__span-0-110) [ 1877 0 R /XYZ 60.307257 248.409894 0 ] (Code/DataWrapper/:__span-0-111) [ 1877 0 R /XYZ 60.307257 235.009542 0 ] (Code/DataWrapper/:__span-0-112) [ 1877 0 R /XYZ 60.307257 208.208838 0 ] (Code/DataWrapper/:__span-0-113) [ 1877 0 R /XYZ 60.307257 194.808486 0 ] (Code/DataWrapper/:__span-0-114) [ 1877 0 R /XYZ 60.307257 168.007782 0 ] (Code/DataWrapper/:__span-0-115) [ 1877 0 R /XYZ 60.307257 154.607430 0 ] (Code/DataWrapper/:__span-0-116) [ 1877 0 R /XYZ 60.307257 141.207078 0 ] (Code/DataWrapper/:__span-0-117) [ 1877 0 R /XYZ 60.307257 127.806726 0 ] (Code/DataWrapper/:__span-0-118) [ 1877 0 R /XYZ 60.307257 114.406374 0 ] (Code/DataWrapper/:__span-0-119) [ 1877 0 R /XYZ 60.307257 101.006022 0 ] (Code/DataWrapper/:__span-0-12) [ 1873 0 R /XYZ 60.307257 533.430846 0 ] (Code/DataWrapper/:__span-0-120) [ 1877 0 R /XYZ 60.307257 87.605670 0 ] (Code/DataWrapper/:__span-0-121) [ 1879 0 R /XYZ 60.307257 771.023622 0 ] (Code/DataWrapper/:__span-0-122) [ 1879 0 R /XYZ 60.307257 757.623270 0 ] (Code/DataWrapper/:__span-0-123) [ 1879 0 R /XYZ 60.307257 730.822566 0 ] (Code/DataWrapper/:__span-0-124) [ 1879 0 R /XYZ 60.307257 717.422214 0 ] (Code/DataWrapper/:__span-0-125) [ 1879 0 R /XYZ 60.307257 704.021862 0 ] (Code/DataWrapper/:__span-0-126) [ 1879 0 R /XYZ 60.307257 690.621510 0 ] (Code/DataWrapper/:__span-0-127) [ 1879 0 R /XYZ 60.307257 677.221158 0 ] (Code/DataWrapper/:__span-0-128) [ 1879 0 R /XYZ 60.307257 663.820806 0 ] (Code/DataWrapper/:__span-0-129) [ 1879 0 R /XYZ 60.307257 650.420454 0 ] (Code/DataWrapper/:__span-0-13) [ 1873 0 R /XYZ 60.307257 520.030494 0 ] (Code/DataWrapper/:__span-0-130) [ 1879 0 R /XYZ 60.307257 637.020102 0 ] (Code/DataWrapper/:__span-0-131) [ 1879 0 R /XYZ 60.307257 623.619750 0 ] (Code/DataWrapper/:__span-0-132) [ 1879 0 R /XYZ 60.307257 610.219398 0 ] (Code/DataWrapper/:__span-0-133) [ 1879 0 R /XYZ 60.307257 596.819046 0 ] (Code/DataWrapper/:__span-0-134) [ 1879 0 R /XYZ 60.307257 583.418694 0 ] (Code/DataWrapper/:__span-0-135) [ 1879 0 R /XYZ 60.307257 570.018342 0 ] (Code/DataWrapper/:__span-0-136) [ 1879 0 R /XYZ 60.307257 556.617990 0 ] (Code/DataWrapper/:__span-0-137) [ 1879 0 R /XYZ 60.307257 543.217638 0 ] (Code/DataWrapper/:__span-0-138) [ 1879 0 R /XYZ 60.307257 529.817286 0 ] (Code/DataWrapper/:__span-0-139) [ 1879 0 R /XYZ 60.307257 516.416934 0 ] (Code/DataWrapper/:__span-0-14) [ 1873 0 R /XYZ 60.307257 506.630142 0 ] (Code/DataWrapper/:__span-0-140) [ 1879 0 R /XYZ 60.307257 503.016582 0 ] (Code/DataWrapper/:__span-0-141) [ 1879 0 R /XYZ 60.307257 476.215878 0 ] (Code/DataWrapper/:__span-0-142) [ 1879 0 R /XYZ 60.307257 462.815526 0 ] (Code/DataWrapper/:__span-0-143) [ 1879 0 R /XYZ 60.307257 449.415174 0 ] (Code/DataWrapper/:__span-0-144) [ 1879 0 R /XYZ 60.307257 436.014822 0 ] (Code/DataWrapper/:__span-0-145) [ 1879 0 R /XYZ 60.307257 422.614470 0 ] (Code/DataWrapper/:__span-0-146) [ 1879 0 R /XYZ 60.307257 409.214118 0 ] (Code/DataWrapper/:__span-0-147) [ 1879 0 R /XYZ 60.307257 382.413414 0 ] (Code/DataWrapper/:__span-0-148) [ 1879 0 R /XYZ 60.307257 342.212358 0 ] (Code/DataWrapper/:__span-0-149) [ 1879 0 R /XYZ 60.307257 328.812006 0 ] (Code/DataWrapper/:__span-0-15) [ 1873 0 R /XYZ 60.307257 493.229790 0 ] (Code/DataWrapper/:__span-0-150) [ 1879 0 R /XYZ 60.307257 315.411654 0 ] (Code/DataWrapper/:__span-0-151) [ 1879 0 R /XYZ 60.307257 302.011302 0 ] (Code/DataWrapper/:__span-0-152) [ 1879 0 R /XYZ 60.307257 288.610950 0 ] (Code/DataWrapper/:__span-0-153) [ 1879 0 R /XYZ 60.307257 275.210598 0 ] (Code/DataWrapper/:__span-0-154) [ 1879 0 R /XYZ 60.307257 261.810246 0 ] (Code/DataWrapper/:__span-0-155) [ 1879 0 R /XYZ 60.307257 248.409894 0 ] (Code/DataWrapper/:__span-0-156) [ 1879 0 R /XYZ 60.307257 235.009542 0 ] (Code/DataWrapper/:__span-0-157) [ 1879 0 R /XYZ 60.307257 208.208838 0 ] (Code/DataWrapper/:__span-0-158) [ 1879 0 R /XYZ 60.307257 181.408134 0 ] (Code/DataWrapper/:__span-0-159) [ 1879 0 R /XYZ 60.307257 154.607430 0 ] (Code/DataWrapper/:__span-0-16) [ 1873 0 R /XYZ 60.307257 479.829438 0 ] (Code/DataWrapper/:__span-0-160) [ 1879 0 R /XYZ 60.307257 141.207078 0 ] (Code/DataWrapper/:__span-0-161) [ 1879 0 R /XYZ 60.307257 127.806726 0 ] (Code/DataWrapper/:__span-0-162) [ 1879 0 R /XYZ 60.307257 114.406374 0 ] (Code/DataWrapper/:__span-0-163) [ 1879 0 R /XYZ 60.307257 101.006022 0 ] (Code/DataWrapper/:__span-0-164) [ 1879 0 R /XYZ 60.307257 87.605670 0 ] (Code/DataWrapper/:__span-0-165) [ 1881 0 R /XYZ 60.307257 771.023622 0 ] (Code/DataWrapper/:__span-0-166) [ 1881 0 R /XYZ 60.307257 757.623270 0 ] (Code/DataWrapper/:__span-0-167) [ 1881 0 R /XYZ 60.307257 744.222918 0 ] (Code/DataWrapper/:__span-0-168) [ 1881 0 R /XYZ 60.307257 730.822566 0 ] (Code/DataWrapper/:__span-0-169) [ 1881 0 R /XYZ 60.307257 717.422214 0 ] (Code/DataWrapper/:__span-0-17) [ 1873 0 R /XYZ 60.307257 466.429086 0 ] (Code/DataWrapper/:__span-0-170) [ 1881 0 R /XYZ 60.307257 704.021862 0 ] (Code/DataWrapper/:__span-0-171) [ 1881 0 R /XYZ 60.307257 677.221158 0 ] (Code/DataWrapper/:__span-0-172) [ 1881 0 R /XYZ 60.307257 650.420454 0 ] (Code/DataWrapper/:__span-0-173) [ 1881 0 R /XYZ 60.307257 637.020102 0 ] (Code/DataWrapper/:__span-0-174) [ 1881 0 R /XYZ 60.307257 623.619750 0 ] (Code/DataWrapper/:__span-0-175) [ 1881 0 R /XYZ 60.307257 596.819046 0 ] (Code/DataWrapper/:__span-0-176) [ 1881 0 R /XYZ 60.307257 570.018342 0 ] (Code/DataWrapper/:__span-0-177) [ 1881 0 R /XYZ 60.307257 543.217638 0 ] (Code/DataWrapper/:__span-0-178) [ 1881 0 R /XYZ 60.307257 529.817286 0 ] (Code/DataWrapper/:__span-0-179) [ 1881 0 R /XYZ 60.307257 516.416934 0 ] (Code/DataWrapper/:__span-0-18) [ 1873 0 R /XYZ 60.307257 453.028734 0 ] (Code/DataWrapper/:__span-0-180) [ 1881 0 R /XYZ 60.307257 503.016582 0 ] (Code/DataWrapper/:__span-0-181) [ 1881 0 R /XYZ 60.307257 489.616230 0 ] (Code/DataWrapper/:__span-0-182) [ 1881 0 R /XYZ 60.307257 476.215878 0 ] (Code/DataWrapper/:__span-0-183) [ 1881 0 R /XYZ 60.307257 462.815526 0 ] (Code/DataWrapper/:__span-0-184) [ 1881 0 R /XYZ 60.307257 449.415174 0 ] (Code/DataWrapper/:__span-0-185) [ 1881 0 R /XYZ 60.307257 436.014822 0 ] (Code/DataWrapper/:__span-0-186) [ 1881 0 R /XYZ 60.307257 422.614470 0 ] (Code/DataWrapper/:__span-0-187) [ 1881 0 R /XYZ 60.307257 409.214118 0 ] (Code/DataWrapper/:__span-0-188) [ 1881 0 R /XYZ 60.307257 395.813766 0 ] (Code/DataWrapper/:__span-0-189) [ 1881 0 R /XYZ 60.307257 382.413414 0 ] (Code/DataWrapper/:__span-0-19) [ 1873 0 R /XYZ 60.307257 439.628382 0 ] (Code/DataWrapper/:__span-0-190) [ 1881 0 R /XYZ 60.307257 369.013062 0 ] (Code/DataWrapper/:__span-0-191) [ 1881 0 R /XYZ 60.307257 355.612710 0 ] (Code/DataWrapper/:__span-0-192) [ 1881 0 R /XYZ 60.307257 342.212358 0 ] (Code/DataWrapper/:__span-0-193) [ 1881 0 R /XYZ 60.307257 328.812006 0 ] (Code/DataWrapper/:__span-0-194) [ 1881 0 R /XYZ 60.307257 315.411654 0 ] (Code/DataWrapper/:__span-0-195) [ 1881 0 R /XYZ 60.307257 302.011302 0 ] (Code/DataWrapper/:__span-0-196) [ 1881 0 R /XYZ 60.307257 288.610950 0 ] (Code/DataWrapper/:__span-0-197) [ 1881 0 R /XYZ 60.307257 275.210598 0 ] (Code/DataWrapper/:__span-0-198) [ 1881 0 R /XYZ 60.307257 261.810246 0 ] (Code/DataWrapper/:__span-0-199) [ 1881 0 R /XYZ 60.307257 248.409894 0 ] (Code/DataWrapper/:__span-0-2) [ 1873 0 R /XYZ 60.307257 694.235070 0 ] (Code/DataWrapper/:__span-0-20) [ 1873 0 R /XYZ 60.307257 426.228030 0 ] (Code/DataWrapper/:__span-0-200) [ 1881 0 R /XYZ 60.307257 221.609190 0 ] (Code/DataWrapper/:__span-0-201) [ 1881 0 R /XYZ 60.307257 208.208838 0 ] (Code/DataWrapper/:__span-0-202) [ 1881 0 R /XYZ 60.307257 181.408134 0 ] (Code/DataWrapper/:__span-0-203) [ 1881 0 R /XYZ 60.307257 154.607430 0 ] (Code/DataWrapper/:__span-0-204) [ 1881 0 R /XYZ 60.307257 127.806726 0 ] (Code/DataWrapper/:__span-0-205) [ 1881 0 R /XYZ 60.307257 101.006022 0 ] (Code/DataWrapper/:__span-0-206) [ 1881 0 R /XYZ 60.307257 87.605670 0 ] (Code/DataWrapper/:__span-0-207) [ 1883 0 R /XYZ 60.307257 757.623270 0 ] (Code/DataWrapper/:__span-0-208) [ 1883 0 R /XYZ 60.307257 730.822566 0 ] (Code/DataWrapper/:__span-0-209) [ 1883 0 R /XYZ 60.307257 717.422214 0 ] (Code/DataWrapper/:__span-0-21) [ 1873 0 R /XYZ 60.307257 412.827678 0 ] (Code/DataWrapper/:__span-0-210) [ 1883 0 R /XYZ 60.307257 704.021862 0 ] (Code/DataWrapper/:__span-0-211) [ 1883 0 R /XYZ 60.307257 677.221158 0 ] (Code/DataWrapper/:__span-0-212) [ 1883 0 R /XYZ 60.307257 663.820806 0 ] (Code/DataWrapper/:__span-0-213) [ 1883 0 R /XYZ 60.307257 650.420454 0 ] (Code/DataWrapper/:__span-0-214) [ 1883 0 R /XYZ 60.307257 637.020102 0 ] (Code/DataWrapper/:__span-0-215) [ 1883 0 R /XYZ 60.307257 623.619750 0 ] (Code/DataWrapper/:__span-0-216) [ 1883 0 R /XYZ 60.307257 610.219398 0 ] (Code/DataWrapper/:__span-0-217) [ 1883 0 R /XYZ 60.307257 596.819046 0 ] (Code/DataWrapper/:__span-0-218) [ 1883 0 R /XYZ 60.307257 583.418694 0 ] (Code/DataWrapper/:__span-0-219) [ 1883 0 R /XYZ 60.307257 570.018342 0 ] (Code/DataWrapper/:__span-0-22) [ 1873 0 R /XYZ 60.307257 399.427326 0 ] (Code/DataWrapper/:__span-0-220) [ 1883 0 R /XYZ 60.307257 556.617990 0 ] (Code/DataWrapper/:__span-0-221) [ 1883 0 R /XYZ 60.307257 543.217638 0 ] (Code/DataWrapper/:__span-0-222) [ 1883 0 R /XYZ 60.307257 529.817286 0 ] (Code/DataWrapper/:__span-0-223) [ 1883 0 R /XYZ 60.307257 516.416934 0 ] (Code/DataWrapper/:__span-0-224) [ 1883 0 R /XYZ 60.307257 503.016582 0 ] (Code/DataWrapper/:__span-0-225) [ 1883 0 R /XYZ 60.307257 489.616230 0 ] (Code/DataWrapper/:__span-0-226) [ 1883 0 R /XYZ 60.307257 476.215878 0 ] (Code/DataWrapper/:__span-0-227) [ 1883 0 R /XYZ 60.307257 462.815526 0 ] (Code/DataWrapper/:__span-0-228) [ 1883 0 R /XYZ 60.307257 449.415174 0 ] (Code/DataWrapper/:__span-0-229) [ 1883 0 R /XYZ 60.307257 436.014822 0 ] (Code/DataWrapper/:__span-0-23) [ 1873 0 R /XYZ 60.307257 372.626622 0 ] (Code/DataWrapper/:__span-0-230) [ 1883 0 R /XYZ 60.307257 422.614470 0 ] (Code/DataWrapper/:__span-0-231) [ 1883 0 R /XYZ 60.307257 409.214118 0 ] (Code/DataWrapper/:__span-0-232) [ 1883 0 R /XYZ 60.307257 395.813766 0 ] (Code/DataWrapper/:__span-0-233) [ 1883 0 R /XYZ 60.307257 382.413414 0 ] (Code/DataWrapper/:__span-0-234) [ 1883 0 R /XYZ 60.307257 369.013062 0 ] (Code/DataWrapper/:__span-0-235) [ 1883 0 R /XYZ 60.307257 355.612710 0 ] (Code/DataWrapper/:__span-0-236) [ 1883 0 R /XYZ 60.307257 342.212358 0 ] (Code/DataWrapper/:__span-0-237) [ 1883 0 R /XYZ 60.307257 328.812006 0 ] (Code/DataWrapper/:__span-0-238) [ 1883 0 R /XYZ 60.307257 315.411654 0 ] (Code/DataWrapper/:__span-0-239) [ 1883 0 R /XYZ 60.307257 302.011302 0 ] (Code/DataWrapper/:__span-0-24) [ 1873 0 R /XYZ 60.307257 359.226270 0 ] (Code/DataWrapper/:__span-0-240) [ 1883 0 R /XYZ 60.307257 288.610950 0 ] (Code/DataWrapper/:__span-0-241) [ 1883 0 R /XYZ 60.307257 275.210598 0 ] (Code/DataWrapper/:__span-0-242) [ 1883 0 R /XYZ 60.307257 261.810246 0 ] (Code/DataWrapper/:__span-0-243) [ 1883 0 R /XYZ 60.307257 248.409894 0 ] (Code/DataWrapper/:__span-0-244) [ 1883 0 R /XYZ 60.307257 235.009542 0 ] (Code/DataWrapper/:__span-0-245) [ 1883 0 R /XYZ 60.307257 194.808486 0 ] (Code/DataWrapper/:__span-0-246) [ 1883 0 R /XYZ 60.307257 181.408134 0 ] (Code/DataWrapper/:__span-0-247) [ 1883 0 R /XYZ 60.307257 168.007782 0 ] (Code/DataWrapper/:__span-0-248) [ 1883 0 R /XYZ 60.307257 154.607430 0 ] (Code/DataWrapper/:__span-0-249) [ 1883 0 R /XYZ 60.307257 127.806726 0 ] (Code/DataWrapper/:__span-0-25) [ 1873 0 R /XYZ 60.307257 332.425566 0 ] (Code/DataWrapper/:__span-0-250) [ 1883 0 R /XYZ 60.307257 114.406374 0 ] (Code/DataWrapper/:__span-0-251) [ 1883 0 R /XYZ 60.307257 101.006022 0 ] (Code/DataWrapper/:__span-0-252) [ 1883 0 R /XYZ 60.307257 87.605670 0 ] (Code/DataWrapper/:__span-0-253) [ 1885 0 R /XYZ 60.307257 771.023622 0 ] (Code/DataWrapper/:__span-0-254) [ 1885 0 R /XYZ 60.307257 757.623270 0 ] (Code/DataWrapper/:__span-0-255) [ 1885 0 R /XYZ 60.307257 744.222918 0 ] (Code/DataWrapper/:__span-0-256) [ 1885 0 R /XYZ 60.307257 730.822566 0 ] (Code/DataWrapper/:__span-0-257) [ 1885 0 R /XYZ 60.307257 717.422214 0 ] (Code/DataWrapper/:__span-0-258) [ 1885 0 R /XYZ 60.307257 704.021862 0 ] (Code/DataWrapper/:__span-0-259) [ 1885 0 R /XYZ 60.307257 690.621510 0 ] (Code/DataWrapper/:__span-0-26) [ 1873 0 R /XYZ 60.307257 319.025214 0 ] (Code/DataWrapper/:__span-0-260) [ 1885 0 R /XYZ 60.307257 677.221158 0 ] (Code/DataWrapper/:__span-0-261) [ 1885 0 R /XYZ 60.307257 637.020102 0 ] (Code/DataWrapper/:__span-0-262) [ 1885 0 R /XYZ 60.307257 623.619750 0 ] (Code/DataWrapper/:__span-0-263) [ 1885 0 R /XYZ 60.307257 610.219398 0 ] (Code/DataWrapper/:__span-0-264) [ 1885 0 R /XYZ 60.307257 596.819046 0 ] (Code/DataWrapper/:__span-0-265) [ 1885 0 R /XYZ 60.307257 583.418694 0 ] (Code/DataWrapper/:__span-0-266) [ 1885 0 R /XYZ 60.307257 570.018342 0 ] (Code/DataWrapper/:__span-0-267) [ 1885 0 R /XYZ 60.307257 556.617990 0 ] (Code/DataWrapper/:__span-0-268) [ 1885 0 R /XYZ 60.307257 543.217638 0 ] (Code/DataWrapper/:__span-0-269) [ 1885 0 R /XYZ 60.307257 529.817286 0 ] (Code/DataWrapper/:__span-0-27) [ 1873 0 R /XYZ 60.307257 292.224510 0 ] (Code/DataWrapper/:__span-0-270) [ 1885 0 R /XYZ 60.307257 516.416934 0 ] (Code/DataWrapper/:__span-0-271) [ 1885 0 R /XYZ 60.307257 503.016582 0 ] (Code/DataWrapper/:__span-0-272) [ 1885 0 R /XYZ 60.307257 476.215878 0 ] (Code/DataWrapper/:__span-0-273) [ 1885 0 R /XYZ 60.307257 462.815526 0 ] (Code/DataWrapper/:__span-0-274) [ 1885 0 R /XYZ 60.307257 449.415174 0 ] (Code/DataWrapper/:__span-0-275) [ 1885 0 R /XYZ 60.307257 422.614470 0 ] (Code/DataWrapper/:__span-0-276) [ 1885 0 R /XYZ 60.307257 395.813766 0 ] (Code/DataWrapper/:__span-0-277) [ 1885 0 R /XYZ 60.307257 369.013062 0 ] (Code/DataWrapper/:__span-0-278) [ 1885 0 R /XYZ 60.307257 355.612710 0 ] (Code/DataWrapper/:__span-0-279) [ 1885 0 R /XYZ 60.307257 342.212358 0 ] (Code/DataWrapper/:__span-0-28) [ 1873 0 R /XYZ 60.307257 278.824158 0 ] (Code/DataWrapper/:__span-0-280) [ 1885 0 R /XYZ 60.307257 328.812006 0 ] (Code/DataWrapper/:__span-0-281) [ 1885 0 R /XYZ 60.307257 315.411654 0 ] (Code/DataWrapper/:__span-0-282) [ 1885 0 R /XYZ 60.307257 302.011302 0 ] (Code/DataWrapper/:__span-0-283) [ 1885 0 R /XYZ 60.307257 288.610950 0 ] (Code/DataWrapper/:__span-0-284) [ 1885 0 R /XYZ 60.307257 275.210598 0 ] (Code/DataWrapper/:__span-0-285) [ 1885 0 R /XYZ 60.307257 261.810246 0 ] (Code/DataWrapper/:__span-0-286) [ 1885 0 R /XYZ 60.307257 248.409894 0 ] (Code/DataWrapper/:__span-0-287) [ 1885 0 R /XYZ 60.307257 235.009542 0 ] (Code/DataWrapper/:__span-0-288) [ 1885 0 R /XYZ 60.307257 221.609190 0 ] (Code/DataWrapper/:__span-0-289) [ 1885 0 R /XYZ 60.307257 194.808486 0 ] (Code/DataWrapper/:__span-0-29) [ 1873 0 R /XYZ 60.307257 265.423806 0 ] (Code/DataWrapper/:__span-0-290) [ 1885 0 R /XYZ 60.307257 181.408134 0 ] (Code/DataWrapper/:__span-0-291) [ 1885 0 R /XYZ 60.307257 168.007782 0 ] (Code/DataWrapper/:__span-0-292) [ 1885 0 R /XYZ 60.307257 154.607430 0 ] (Code/DataWrapper/:__span-0-293) [ 1885 0 R /XYZ 60.307257 141.207078 0 ] (Code/DataWrapper/:__span-0-294) [ 1885 0 R /XYZ 60.307257 114.406374 0 ] (Code/DataWrapper/:__span-0-295) [ 1885 0 R /XYZ 60.307257 101.006022 0 ] (Code/DataWrapper/:__span-0-296) [ 1885 0 R /XYZ 60.307257 87.605670 0 ] (Code/DataWrapper/:__span-0-297) [ 1887 0 R /XYZ 60.307257 771.023622 0 ] (Code/DataWrapper/:__span-0-298) [ 1887 0 R /XYZ 60.307257 757.623270 0 ] (Code/DataWrapper/:__span-0-299) [ 1887 0 R /XYZ 60.307257 744.222918 0 ] (Code/DataWrapper/:__span-0-3) [ 1873 0 R /XYZ 60.307257 680.834718 0 ] (Code/DataWrapper/:__span-0-30) [ 1873 0 R /XYZ 60.307257 252.023454 0 ] (Code/DataWrapper/:__span-0-300) [ 1887 0 R /XYZ 60.307257 730.822566 0 ] (Code/DataWrapper/:__span-0-301) [ 1887 0 R /XYZ 60.307257 717.422214 0 ] (Code/DataWrapper/:__span-0-302) [ 1887 0 R /XYZ 60.307257 704.021862 0 ] (Code/DataWrapper/:__span-0-303) [ 1887 0 R /XYZ 60.307257 690.621510 0 ] (Code/DataWrapper/:__span-0-304) [ 1887 0 R /XYZ 60.307257 677.221158 0 ] (Code/DataWrapper/:__span-0-305) [ 1887 0 R /XYZ 60.307257 663.820806 0 ] (Code/DataWrapper/:__span-0-306) [ 1887 0 R /XYZ 60.307257 637.020102 0 ] (Code/DataWrapper/:__span-0-307) [ 1887 0 R /XYZ 60.307257 610.219398 0 ] (Code/DataWrapper/:__span-0-308) [ 1887 0 R /XYZ 60.307257 596.819046 0 ] (Code/DataWrapper/:__span-0-309) [ 1887 0 R /XYZ 60.307257 583.418694 0 ] (Code/DataWrapper/:__span-0-31) [ 1873 0 R /XYZ 60.307257 238.623102 0 ] (Code/DataWrapper/:__span-0-310) [ 1887 0 R /XYZ 60.307257 570.018342 0 ] (Code/DataWrapper/:__span-0-311) [ 1887 0 R /XYZ 60.307257 556.617990 0 ] (Code/DataWrapper/:__span-0-312) [ 1887 0 R /XYZ 60.307257 543.217638 0 ] (Code/DataWrapper/:__span-0-313) [ 1887 0 R /XYZ 60.307257 529.817286 0 ] (Code/DataWrapper/:__span-0-314) [ 1887 0 R /XYZ 60.307257 516.416934 0 ] (Code/DataWrapper/:__span-0-315) [ 1887 0 R /XYZ 60.307257 489.616230 0 ] (Code/DataWrapper/:__span-0-316) [ 1887 0 R /XYZ 60.307257 476.215878 0 ] (Code/DataWrapper/:__span-0-317) [ 1887 0 R /XYZ 60.307257 449.415174 0 ] (Code/DataWrapper/:__span-0-318) [ 1887 0 R /XYZ 60.307257 436.014822 0 ] (Code/DataWrapper/:__span-0-319) [ 1887 0 R /XYZ 60.307257 409.214118 0 ] (Code/DataWrapper/:__span-0-32) [ 1873 0 R /XYZ 60.307257 185.021694 0 ] (Code/DataWrapper/:__span-0-320) [ 1887 0 R /XYZ 60.307257 395.813766 0 ] (Code/DataWrapper/:__span-0-321) [ 1887 0 R /XYZ 60.307257 382.413414 0 ] (Code/DataWrapper/:__span-0-322) [ 1887 0 R /XYZ 60.307257 369.013062 0 ] (Code/DataWrapper/:__span-0-323) [ 1887 0 R /XYZ 60.307257 342.212358 0 ] (Code/DataWrapper/:__span-0-324) [ 1887 0 R /XYZ 60.307257 328.812006 0 ] (Code/DataWrapper/:__span-0-325) [ 1887 0 R /XYZ 60.307257 302.011302 0 ] (Code/DataWrapper/:__span-0-326) [ 1887 0 R /XYZ 60.307257 288.610950 0 ] (Code/DataWrapper/:__span-0-327) [ 1887 0 R /XYZ 60.307257 275.210598 0 ] (Code/DataWrapper/:__span-0-328) [ 1887 0 R /XYZ 60.307257 261.810246 0 ] (Code/DataWrapper/:__span-0-329) [ 1887 0 R /XYZ 60.307257 248.409894 0 ] (Code/DataWrapper/:__span-0-33) [ 1873 0 R /XYZ 60.307257 171.621342 0 ] (Code/DataWrapper/:__span-0-330) [ 1887 0 R /XYZ 60.307257 235.009542 0 ] (Code/DataWrapper/:__span-0-331) [ 1887 0 R /XYZ 60.307257 221.609190 0 ] (Code/DataWrapper/:__span-0-332) [ 1887 0 R /XYZ 60.307257 208.208838 0 ] (Code/DataWrapper/:__span-0-333) [ 1887 0 R /XYZ 60.307257 181.408134 0 ] (Code/DataWrapper/:__span-0-334) [ 1887 0 R /XYZ 60.307257 168.007782 0 ] (Code/DataWrapper/:__span-0-335) [ 1887 0 R /XYZ 60.307257 154.607430 0 ] (Code/DataWrapper/:__span-0-336) [ 1887 0 R /XYZ 60.307257 141.207078 0 ] (Code/DataWrapper/:__span-0-337) [ 1887 0 R /XYZ 60.307257 114.406374 0 ] (Code/DataWrapper/:__span-0-338) [ 1887 0 R /XYZ 60.307257 101.006022 0 ] (Code/DataWrapper/:__span-0-339) [ 1889 0 R /XYZ 60.307257 771.023622 0 ] (Code/DataWrapper/:__span-0-34) [ 1873 0 R /XYZ 60.307257 158.220990 0 ] (Code/DataWrapper/:__span-0-340) [ 1889 0 R /XYZ 60.307257 757.623270 0 ] (Code/DataWrapper/:__span-0-341) [ 1889 0 R /XYZ 60.307257 744.222918 0 ] (Code/DataWrapper/:__span-0-342) [ 1889 0 R /XYZ 60.307257 730.822566 0 ] (Code/DataWrapper/:__span-0-343) [ 1889 0 R /XYZ 60.307257 717.422214 0 ] (Code/DataWrapper/:__span-0-344) [ 1889 0 R /XYZ 60.307257 690.621510 0 ] (Code/DataWrapper/:__span-0-345) [ 1889 0 R /XYZ 60.307257 677.221158 0 ] (Code/DataWrapper/:__span-0-346) [ 1889 0 R /XYZ 60.307257 663.820806 0 ] (Code/DataWrapper/:__span-0-347) [ 1889 0 R /XYZ 60.307257 650.420454 0 ] (Code/DataWrapper/:__span-0-348) [ 1889 0 R /XYZ 60.307257 637.020102 0 ] (Code/DataWrapper/:__span-0-349) [ 1889 0 R /XYZ 60.307257 623.619750 0 ] (Code/DataWrapper/:__span-0-35) [ 1873 0 R /XYZ 60.307257 144.820638 0 ] (Code/DataWrapper/:__span-0-350) [ 1889 0 R /XYZ 60.307257 610.219398 0 ] (Code/DataWrapper/:__span-0-351) [ 1889 0 R /XYZ 60.307257 596.819046 0 ] (Code/DataWrapper/:__span-0-352) [ 1889 0 R /XYZ 60.307257 583.418694 0 ] (Code/DataWrapper/:__span-0-353) [ 1889 0 R /XYZ 60.307257 570.018342 0 ] (Code/DataWrapper/:__span-0-354) [ 1889 0 R /XYZ 60.307257 556.617990 0 ] (Code/DataWrapper/:__span-0-355) [ 1889 0 R /XYZ 60.307257 543.217638 0 ] (Code/DataWrapper/:__span-0-356) [ 1889 0 R /XYZ 60.307257 516.416934 0 ] (Code/DataWrapper/:__span-0-357) [ 1889 0 R /XYZ 60.307257 503.016582 0 ] (Code/DataWrapper/:__span-0-358) [ 1889 0 R /XYZ 60.307257 489.616230 0 ] (Code/DataWrapper/:__span-0-359) [ 1889 0 R /XYZ 60.307257 476.215878 0 ] (Code/DataWrapper/:__span-0-36) [ 1873 0 R /XYZ 60.307257 104.619582 0 ] (Code/DataWrapper/:__span-0-360) [ 1889 0 R /XYZ 60.307257 462.815526 0 ] (Code/DataWrapper/:__span-0-361) [ 1889 0 R /XYZ 60.307257 449.415174 0 ] (Code/DataWrapper/:__span-0-362) [ 1889 0 R /XYZ 60.307257 436.014822 0 ] (Code/DataWrapper/:__span-0-363) [ 1889 0 R /XYZ 60.307257 422.614470 0 ] (Code/DataWrapper/:__span-0-364) [ 1889 0 R /XYZ 60.307257 409.214118 0 ] (Code/DataWrapper/:__span-0-365) [ 1889 0 R /XYZ 60.307257 395.813766 0 ] (Code/DataWrapper/:__span-0-366) [ 1889 0 R /XYZ 60.307257 382.413414 0 ] (Code/DataWrapper/:__span-0-367) [ 1889 0 R /XYZ 60.307257 369.013062 0 ] (Code/DataWrapper/:__span-0-368) [ 1889 0 R /XYZ 60.307257 355.612710 0 ] (Code/DataWrapper/:__span-0-369) [ 1889 0 R /XYZ 60.307257 342.212358 0 ] (Code/DataWrapper/:__span-0-37) [ 1873 0 R /XYZ 60.307257 91.219230 0 ] (Code/DataWrapper/:__span-0-370) [ 1889 0 R /XYZ 60.307257 328.812006 0 ] (Code/DataWrapper/:__span-0-371) [ 1889 0 R /XYZ 60.307257 315.411654 0 ] (Code/DataWrapper/:__span-0-372) [ 1889 0 R /XYZ 60.307257 302.011302 0 ] (Code/DataWrapper/:__span-0-373) [ 1889 0 R /XYZ 60.307257 288.610950 0 ] (Code/DataWrapper/:__span-0-374) [ 1889 0 R /XYZ 60.307257 275.210598 0 ] (Code/DataWrapper/:__span-0-375) [ 1889 0 R /XYZ 60.307257 261.810246 0 ] (Code/DataWrapper/:__span-0-376) [ 1889 0 R /XYZ 60.307257 248.409894 0 ] (Code/DataWrapper/:__span-0-377) [ 1889 0 R /XYZ 60.307257 235.009542 0 ] (Code/DataWrapper/:__span-0-378) [ 1889 0 R /XYZ 60.307257 221.609190 0 ] (Code/DataWrapper/:__span-0-379) [ 1889 0 R /XYZ 60.307257 208.208838 0 ] (Code/DataWrapper/:__span-0-38) [ 1875 0 R /XYZ 60.307257 757.623270 0 ] (Code/DataWrapper/:__span-0-39) [ 1875 0 R /XYZ 60.307257 744.222918 0 ] (Code/DataWrapper/:__span-0-4) [ 1873 0 R /XYZ 60.307257 667.434366 0 ] (Code/DataWrapper/:__span-0-40) [ 1875 0 R /XYZ 60.307257 730.822566 0 ] (Code/DataWrapper/:__span-0-41) [ 1875 0 R /XYZ 60.307257 717.422214 0 ] (Code/DataWrapper/:__span-0-42) [ 1875 0 R /XYZ 60.307257 704.021862 0 ] (Code/DataWrapper/:__span-0-43) [ 1875 0 R /XYZ 60.307257 690.621510 0 ] (Code/DataWrapper/:__span-0-44) [ 1875 0 R /XYZ 60.307257 677.221158 0 ] (Code/DataWrapper/:__span-0-45) [ 1875 0 R /XYZ 60.307257 663.820806 0 ] (Code/DataWrapper/:__span-0-46) [ 1875 0 R /XYZ 60.307257 650.420454 0 ] (Code/DataWrapper/:__span-0-47) [ 1875 0 R /XYZ 60.307257 623.619750 0 ] (Code/DataWrapper/:__span-0-48) [ 1875 0 R /XYZ 60.307257 610.219398 0 ] (Code/DataWrapper/:__span-0-49) [ 1875 0 R /XYZ 60.307257 583.418694 0 ] (Code/DataWrapper/:__span-0-5) [ 1873 0 R /XYZ 60.307257 627.233310 0 ] (Code/DataWrapper/:__span-0-50) [ 1875 0 R /XYZ 60.307257 570.018342 0 ] (Code/DataWrapper/:__span-0-51) [ 1875 0 R /XYZ 60.307257 556.617990 0 ] (Code/DataWrapper/:__span-0-52) [ 1875 0 R /XYZ 60.307257 543.217638 0 ] (Code/DataWrapper/:__span-0-53) [ 1875 0 R /XYZ 60.307257 529.817286 0 ] (Code/DataWrapper/:__span-0-54) [ 1875 0 R /XYZ 60.307257 516.416934 0 ] (Code/DataWrapper/:__span-0-55) [ 1875 0 R /XYZ 60.307257 476.215878 0 ] (Code/DataWrapper/:__span-0-56) [ 1875 0 R /XYZ 60.307257 462.815526 0 ] (Code/DataWrapper/:__span-0-57) [ 1875 0 R /XYZ 60.307257 422.614470 0 ] (Code/DataWrapper/:__span-0-58) [ 1875 0 R /XYZ 60.307257 395.813766 0 ] (Code/DataWrapper/:__span-0-59) [ 1875 0 R /XYZ 60.307257 382.413414 0 ] (Code/DataWrapper/:__span-0-6) [ 1873 0 R /XYZ 60.307257 613.832958 0 ] (Code/DataWrapper/:__span-0-60) [ 1875 0 R /XYZ 60.307257 369.013062 0 ] (Code/DataWrapper/:__span-0-61) [ 1875 0 R /XYZ 60.307257 342.212358 0 ] (Code/DataWrapper/:__span-0-62) [ 1875 0 R /XYZ 60.307257 328.812006 0 ] (Code/DataWrapper/:__span-0-63) [ 1875 0 R /XYZ 60.307257 288.610950 0 ] (Code/DataWrapper/:__span-0-64) [ 1875 0 R /XYZ 60.307257 275.210598 0 ] (Code/DataWrapper/:__span-0-65) [ 1875 0 R /XYZ 60.307257 261.810246 0 ] (Code/DataWrapper/:__span-0-66) [ 1875 0 R /XYZ 60.307257 248.409894 0 ] (Code/DataWrapper/:__span-0-67) [ 1875 0 R /XYZ 60.307257 235.009542 0 ] (Code/DataWrapper/:__span-0-68) [ 1875 0 R /XYZ 60.307257 208.208838 0 ] (Code/DataWrapper/:__span-0-69) [ 1875 0 R /XYZ 60.307257 194.808486 0 ] (Code/DataWrapper/:__span-0-7) [ 1873 0 R /XYZ 60.307257 600.432606 0 ] (Code/DataWrapper/:__span-0-70) [ 1875 0 R /XYZ 60.307257 181.408134 0 ] (Code/DataWrapper/:__span-0-71) [ 1875 0 R /XYZ 60.307257 168.007782 0 ] (Code/DataWrapper/:__span-0-72) [ 1875 0 R /XYZ 60.307257 154.607430 0 ] (Code/DataWrapper/:__span-0-73) [ 1875 0 R /XYZ 60.307257 141.207078 0 ] (Code/DataWrapper/:__span-0-74) [ 1875 0 R /XYZ 60.307257 127.806726 0 ] (Code/DataWrapper/:__span-0-75) [ 1875 0 R /XYZ 60.307257 114.406374 0 ] (Code/DataWrapper/:__span-0-76) [ 1875 0 R /XYZ 60.307257 101.006022 0 ] (Code/DataWrapper/:__span-0-77) [ 1875 0 R /XYZ 60.307257 87.605670 0 ] (Code/DataWrapper/:__span-0-78) [ 1877 0 R /XYZ 60.307257 757.623270 0 ] (Code/DataWrapper/:__span-0-79) [ 1877 0 R /XYZ 60.307257 744.222918 0 ] (Code/DataWrapper/:__span-0-8) [ 1873 0 R /XYZ 60.307257 587.032254 0 ] (Code/DataWrapper/:__span-0-80) [ 1877 0 R /XYZ 60.307257 717.422214 0 ] (Code/DataWrapper/:__span-0-81) [ 1877 0 R /XYZ 60.307257 704.021862 0 ] (Code/DataWrapper/:__span-0-82) [ 1877 0 R /XYZ 60.307257 690.621510 0 ] (Code/DataWrapper/:__span-0-83) [ 1877 0 R /XYZ 60.307257 677.221158 0 ] (Code/DataWrapper/:__span-0-84) [ 1877 0 R /XYZ 60.307257 663.820806 0 ] (Code/DataWrapper/:__span-0-85) [ 1877 0 R /XYZ 60.307257 650.420454 0 ] (Code/DataWrapper/:__span-0-86) [ 1877 0 R /XYZ 60.307257 623.619750 0 ] (Code/DataWrapper/:__span-0-87) [ 1877 0 R /XYZ 60.307257 610.219398 0 ] (Code/DataWrapper/:__span-0-88) [ 1877 0 R /XYZ 60.307257 596.819046 0 ] (Code/DataWrapper/:__span-0-89) [ 1877 0 R /XYZ 60.307257 583.418694 0 ] (Code/DataWrapper/:__span-0-9) [ 1873 0 R /XYZ 60.307257 573.631902 0 ] (Code/DataWrapper/:__span-0-90) [ 1877 0 R /XYZ 60.307257 570.018342 0 ] (Code/DataWrapper/:__span-0-91) [ 1877 0 R /XYZ 60.307257 556.617990 0 ] (Code/DataWrapper/:__span-0-92) [ 1877 0 R /XYZ 60.307257 543.217638 0 ] (Code/DataWrapper/:__span-0-93) [ 1877 0 R /XYZ 60.307257 529.817286 0 ] (Code/DataWrapper/:__span-0-94) [ 1877 0 R /XYZ 60.307257 516.416934 0 ] (Code/DataWrapper/:__span-0-95) [ 1877 0 R /XYZ 60.307257 503.016582 0 ] (Code/DataWrapper/:__span-0-96) [ 1877 0 R /XYZ 60.307257 489.616230 0 ] (Code/DataWrapper/:__span-0-97) [ 1877 0 R /XYZ 60.307257 476.215878 0 ] (Code/DataWrapper/:__span-0-98) [ 1877 0 R /XYZ 60.307257 462.815526 0 ] (Code/DataWrapper/:__span-0-99) [ 1877 0 R /XYZ 60.307257 449.415174 0 ] (Code/DataWrapper/:datawrappercs) [ 1873 0 R /XYZ 39.386457 747.563622 0 ] (Code/DriverData/:) [ 1777 0 R /XYZ 39.386457 747.563622 0 ] (Code/DriverData/:__span-0-1) [ 1777 0 R /XYZ 60.307257 707.635422 0 ] (Code/DriverData/:__span-0-10) [ 1777 0 R /XYZ 60.307257 573.631902 0 ] (Code/DriverData/:__span-0-100) [ 1781 0 R /XYZ 60.307257 663.820806 0 ] (Code/DriverData/:__span-0-101) [ 1781 0 R /XYZ 60.307257 650.420454 0 ] (Code/DriverData/:__span-0-102) [ 1781 0 R /XYZ 60.307257 637.020102 0 ] (Code/DriverData/:__span-0-103) [ 1781 0 R /XYZ 60.307257 623.619750 0 ] (Code/DriverData/:__span-0-104) [ 1781 0 R /XYZ 60.307257 610.219398 0 ] (Code/DriverData/:__span-0-105) [ 1781 0 R /XYZ 60.307257 596.819046 0 ] (Code/DriverData/:__span-0-11) [ 1777 0 R /XYZ 60.307257 560.231550 0 ] (Code/DriverData/:__span-0-12) [ 1777 0 R /XYZ 60.307257 546.831198 0 ] (Code/DriverData/:__span-0-13) [ 1777 0 R /XYZ 60.307257 533.430846 0 ] (Code/DriverData/:__span-0-14) [ 1777 0 R /XYZ 60.307257 520.030494 0 ] (Code/DriverData/:__span-0-15) [ 1777 0 R /XYZ 60.307257 506.630142 0 ] (Code/DriverData/:__span-0-16) [ 1777 0 R /XYZ 60.307257 493.229790 0 ] (Code/DriverData/:__span-0-17) [ 1777 0 R /XYZ 60.307257 479.829438 0 ] (Code/DriverData/:__span-0-18) [ 1777 0 R /XYZ 60.307257 466.429086 0 ] (Code/DriverData/:__span-0-19) [ 1777 0 R /XYZ 60.307257 453.028734 0 ] (Code/DriverData/:__span-0-2) [ 1777 0 R /XYZ 60.307257 694.235070 0 ] (Code/DriverData/:__span-0-20) [ 1777 0 R /XYZ 60.307257 439.628382 0 ] (Code/DriverData/:__span-0-21) [ 1777 0 R /XYZ 60.307257 426.228030 0 ] (Code/DriverData/:__span-0-22) [ 1777 0 R /XYZ 60.307257 412.827678 0 ] (Code/DriverData/:__span-0-23) [ 1777 0 R /XYZ 60.307257 399.427326 0 ] (Code/DriverData/:__span-0-24) [ 1777 0 R /XYZ 60.307257 386.026974 0 ] (Code/DriverData/:__span-0-25) [ 1777 0 R /XYZ 60.307257 372.626622 0 ] (Code/DriverData/:__span-0-26) [ 1777 0 R /XYZ 60.307257 359.226270 0 ] (Code/DriverData/:__span-0-27) [ 1777 0 R /XYZ 60.307257 345.825918 0 ] (Code/DriverData/:__span-0-28) [ 1777 0 R /XYZ 60.307257 319.025214 0 ] (Code/DriverData/:__span-0-29) [ 1777 0 R /XYZ 60.307257 305.624862 0 ] (Code/DriverData/:__span-0-3) [ 1777 0 R /XYZ 60.307257 680.834718 0 ] (Code/DriverData/:__span-0-30) [ 1777 0 R /XYZ 60.307257 292.224510 0 ] (Code/DriverData/:__span-0-31) [ 1777 0 R /XYZ 60.307257 278.824158 0 ] (Code/DriverData/:__span-0-32) [ 1777 0 R /XYZ 60.307257 265.423806 0 ] (Code/DriverData/:__span-0-33) [ 1777 0 R /XYZ 60.307257 252.023454 0 ] (Code/DriverData/:__span-0-34) [ 1777 0 R /XYZ 60.307257 238.623102 0 ] (Code/DriverData/:__span-0-35) [ 1777 0 R /XYZ 60.307257 225.222750 0 ] (Code/DriverData/:__span-0-36) [ 1777 0 R /XYZ 60.307257 211.822398 0 ] (Code/DriverData/:__span-0-37) [ 1777 0 R /XYZ 60.307257 198.422046 0 ] (Code/DriverData/:__span-0-38) [ 1777 0 R /XYZ 60.307257 185.021694 0 ] (Code/DriverData/:__span-0-39) [ 1777 0 R /XYZ 60.307257 171.621342 0 ] (Code/DriverData/:__span-0-4) [ 1777 0 R /XYZ 60.307257 667.434366 0 ] (Code/DriverData/:__span-0-40) [ 1777 0 R /XYZ 60.307257 158.220990 0 ] (Code/DriverData/:__span-0-41) [ 1777 0 R /XYZ 60.307257 144.820638 0 ] (Code/DriverData/:__span-0-42) [ 1777 0 R /XYZ 60.307257 131.420286 0 ] (Code/DriverData/:__span-0-43) [ 1777 0 R /XYZ 60.307257 118.019934 0 ] (Code/DriverData/:__span-0-44) [ 1777 0 R /XYZ 60.307257 104.619582 0 ] (Code/DriverData/:__span-0-45) [ 1777 0 R /XYZ 60.307257 91.219230 0 ] (Code/DriverData/:__span-0-46) [ 1779 0 R /XYZ 60.307257 771.023622 0 ] (Code/DriverData/:__span-0-47) [ 1779 0 R /XYZ 60.307257 757.623270 0 ] (Code/DriverData/:__span-0-48) [ 1779 0 R /XYZ 60.307257 744.222918 0 ] (Code/DriverData/:__span-0-49) [ 1779 0 R /XYZ 60.307257 730.822566 0 ] (Code/DriverData/:__span-0-5) [ 1777 0 R /XYZ 60.307257 640.633662 0 ] (Code/DriverData/:__span-0-50) [ 1779 0 R /XYZ 60.307257 717.422214 0 ] (Code/DriverData/:__span-0-51) [ 1779 0 R /XYZ 60.307257 704.021862 0 ] (Code/DriverData/:__span-0-52) [ 1779 0 R /XYZ 60.307257 690.621510 0 ] (Code/DriverData/:__span-0-53) [ 1779 0 R /XYZ 60.307257 677.221158 0 ] (Code/DriverData/:__span-0-54) [ 1779 0 R /XYZ 60.307257 663.820806 0 ] (Code/DriverData/:__span-0-55) [ 1779 0 R /XYZ 60.307257 650.420454 0 ] (Code/DriverData/:__span-0-56) [ 1779 0 R /XYZ 60.307257 637.020102 0 ] (Code/DriverData/:__span-0-57) [ 1779 0 R /XYZ 60.307257 623.619750 0 ] (Code/DriverData/:__span-0-58) [ 1779 0 R /XYZ 60.307257 610.219398 0 ] (Code/DriverData/:__span-0-59) [ 1779 0 R /XYZ 60.307257 596.819046 0 ] (Code/DriverData/:__span-0-6) [ 1777 0 R /XYZ 60.307257 627.233310 0 ] (Code/DriverData/:__span-0-60) [ 1779 0 R /XYZ 60.307257 583.418694 0 ] (Code/DriverData/:__span-0-61) [ 1779 0 R /XYZ 60.307257 570.018342 0 ] (Code/DriverData/:__span-0-62) [ 1779 0 R /XYZ 60.307257 556.617990 0 ] (Code/DriverData/:__span-0-63) [ 1779 0 R /XYZ 60.307257 543.217638 0 ] (Code/DriverData/:__span-0-64) [ 1779 0 R /XYZ 60.307257 529.817286 0 ] (Code/DriverData/:__span-0-65) [ 1779 0 R /XYZ 60.307257 516.416934 0 ] (Code/DriverData/:__span-0-66) [ 1779 0 R /XYZ 60.307257 489.616230 0 ] (Code/DriverData/:__span-0-67) [ 1779 0 R /XYZ 60.307257 476.215878 0 ] (Code/DriverData/:__span-0-68) [ 1779 0 R /XYZ 60.307257 449.415174 0 ] (Code/DriverData/:__span-0-69) [ 1779 0 R /XYZ 60.307257 436.014822 0 ] (Code/DriverData/:__span-0-7) [ 1777 0 R /XYZ 60.307257 613.832958 0 ] (Code/DriverData/:__span-0-70) [ 1779 0 R /XYZ 60.307257 422.614470 0 ] (Code/DriverData/:__span-0-71) [ 1779 0 R /XYZ 60.307257 409.214118 0 ] (Code/DriverData/:__span-0-72) [ 1779 0 R /XYZ 60.307257 382.413414 0 ] (Code/DriverData/:__span-0-73) [ 1779 0 R /XYZ 60.307257 369.013062 0 ] (Code/DriverData/:__span-0-74) [ 1779 0 R /XYZ 60.307257 355.612710 0 ] (Code/DriverData/:__span-0-75) [ 1779 0 R /XYZ 60.307257 342.212358 0 ] (Code/DriverData/:__span-0-76) [ 1779 0 R /XYZ 60.307257 315.411654 0 ] (Code/DriverData/:__span-0-77) [ 1779 0 R /XYZ 60.307257 302.011302 0 ] (Code/DriverData/:__span-0-78) [ 1779 0 R /XYZ 60.307257 275.210598 0 ] (Code/DriverData/:__span-0-79) [ 1779 0 R /XYZ 60.307257 261.810246 0 ] (Code/DriverData/:__span-0-8) [ 1777 0 R /XYZ 60.307257 600.432606 0 ] (Code/DriverData/:__span-0-80) [ 1779 0 R /XYZ 60.307257 235.009542 0 ] (Code/DriverData/:__span-0-81) [ 1779 0 R /XYZ 60.307257 221.609190 0 ] (Code/DriverData/:__span-0-82) [ 1779 0 R /XYZ 60.307257 208.208838 0 ] (Code/DriverData/:__span-0-83) [ 1779 0 R /XYZ 60.307257 194.808486 0 ] (Code/DriverData/:__span-0-84) [ 1779 0 R /XYZ 60.307257 181.408134 0 ] (Code/DriverData/:__span-0-85) [ 1779 0 R /XYZ 60.307257 168.007782 0 ] (Code/DriverData/:__span-0-86) [ 1779 0 R /XYZ 60.307257 154.607430 0 ] (Code/DriverData/:__span-0-87) [ 1779 0 R /XYZ 60.307257 141.207078 0 ] (Code/DriverData/:__span-0-88) [ 1779 0 R /XYZ 60.307257 127.806726 0 ] (Code/DriverData/:__span-0-89) [ 1779 0 R /XYZ 60.307257 114.406374 0 ] (Code/DriverData/:__span-0-9) [ 1777 0 R /XYZ 60.307257 587.032254 0 ] (Code/DriverData/:__span-0-90) [ 1779 0 R /XYZ 60.307257 101.006022 0 ] (Code/DriverData/:__span-0-91) [ 1779 0 R /XYZ 60.307257 87.605670 0 ] (Code/DriverData/:__span-0-92) [ 1781 0 R /XYZ 60.307257 771.023622 0 ] (Code/DriverData/:__span-0-93) [ 1781 0 R /XYZ 60.307257 757.623270 0 ] (Code/DriverData/:__span-0-94) [ 1781 0 R /XYZ 60.307257 744.222918 0 ] (Code/DriverData/:__span-0-95) [ 1781 0 R /XYZ 60.307257 730.822566 0 ] (Code/DriverData/:__span-0-96) [ 1781 0 R /XYZ 60.307257 717.422214 0 ] (Code/DriverData/:__span-0-97) [ 1781 0 R /XYZ 60.307257 704.021862 0 ] (Code/DriverData/:__span-0-98) [ 1781 0 R /XYZ 60.307257 690.621510 0 ] (Code/DriverData/:__span-0-99) [ 1781 0 R /XYZ 60.307257 677.221158 0 ] (Code/DriverData/:driverdatacs) [ 1777 0 R /XYZ 39.386457 747.563622 0 ] (Code/DriverDrsWindow/:) [ 1891 0 R /XYZ 39.386457 747.563622 0 ] (Code/DriverDrsWindow/:__span-0-1) [ 1891 0 R /XYZ 60.307257 707.635422 0 ] (Code/DriverDrsWindow/:__span-0-10) [ 1891 0 R /XYZ 60.307257 587.032254 0 ] (Code/DriverDrsWindow/:__span-0-100) [ 1895 0 R /XYZ 60.307257 717.422214 0 ] (Code/DriverDrsWindow/:__span-0-101) [ 1895 0 R /XYZ 60.307257 704.021862 0 ] (Code/DriverDrsWindow/:__span-0-102) [ 1895 0 R /XYZ 60.307257 690.621510 0 ] (Code/DriverDrsWindow/:__span-0-103) [ 1895 0 R /XYZ 60.307257 663.820806 0 ] (Code/DriverDrsWindow/:__span-0-104) [ 1895 0 R /XYZ 60.307257 650.420454 0 ] (Code/DriverDrsWindow/:__span-0-105) [ 1895 0 R /XYZ 60.307257 637.020102 0 ] (Code/DriverDrsWindow/:__span-0-106) [ 1895 0 R /XYZ 60.307257 610.219398 0 ] (Code/DriverDrsWindow/:__span-0-107) [ 1895 0 R /XYZ 60.307257 596.819046 0 ] (Code/DriverDrsWindow/:__span-0-108) [ 1895 0 R /XYZ 60.307257 583.418694 0 ] (Code/DriverDrsWindow/:__span-0-109) [ 1895 0 R /XYZ 60.307257 570.018342 0 ] (Code/DriverDrsWindow/:__span-0-11) [ 1891 0 R /XYZ 60.307257 573.631902 0 ] (Code/DriverDrsWindow/:__span-0-110) [ 1895 0 R /XYZ 60.307257 556.617990 0 ] (Code/DriverDrsWindow/:__span-0-111) [ 1895 0 R /XYZ 60.307257 543.217638 0 ] (Code/DriverDrsWindow/:__span-0-112) [ 1895 0 R /XYZ 60.307257 529.817286 0 ] (Code/DriverDrsWindow/:__span-0-113) [ 1895 0 R /XYZ 60.307257 516.416934 0 ] (Code/DriverDrsWindow/:__span-0-114) [ 1895 0 R /XYZ 60.307257 503.016582 0 ] (Code/DriverDrsWindow/:__span-0-12) [ 1891 0 R /XYZ 60.307257 560.231550 0 ] (Code/DriverDrsWindow/:__span-0-13) [ 1891 0 R /XYZ 60.307257 546.831198 0 ] (Code/DriverDrsWindow/:__span-0-14) [ 1891 0 R /XYZ 60.307257 533.430846 0 ] (Code/DriverDrsWindow/:__span-0-15) [ 1891 0 R /XYZ 60.307257 520.030494 0 ] (Code/DriverDrsWindow/:__span-0-16) [ 1891 0 R /XYZ 60.307257 506.630142 0 ] (Code/DriverDrsWindow/:__span-0-17) [ 1891 0 R /XYZ 60.307257 493.229790 0 ] (Code/DriverDrsWindow/:__span-0-18) [ 1891 0 R /XYZ 60.307257 479.829438 0 ] (Code/DriverDrsWindow/:__span-0-19) [ 1891 0 R /XYZ 60.307257 466.429086 0 ] (Code/DriverDrsWindow/:__span-0-2) [ 1891 0 R /XYZ 60.307257 694.235070 0 ] (Code/DriverDrsWindow/:__span-0-20) [ 1891 0 R /XYZ 60.307257 453.028734 0 ] (Code/DriverDrsWindow/:__span-0-21) [ 1891 0 R /XYZ 60.307257 439.628382 0 ] (Code/DriverDrsWindow/:__span-0-22) [ 1891 0 R /XYZ 60.307257 426.228030 0 ] (Code/DriverDrsWindow/:__span-0-23) [ 1891 0 R /XYZ 60.307257 399.427326 0 ] (Code/DriverDrsWindow/:__span-0-24) [ 1891 0 R /XYZ 60.307257 386.026974 0 ] (Code/DriverDrsWindow/:__span-0-25) [ 1891 0 R /XYZ 60.307257 372.626622 0 ] (Code/DriverDrsWindow/:__span-0-26) [ 1891 0 R /XYZ 60.307257 359.226270 0 ] (Code/DriverDrsWindow/:__span-0-27) [ 1891 0 R /XYZ 60.307257 345.825918 0 ] (Code/DriverDrsWindow/:__span-0-28) [ 1891 0 R /XYZ 60.307257 332.425566 0 ] (Code/DriverDrsWindow/:__span-0-29) [ 1891 0 R /XYZ 60.307257 319.025214 0 ] (Code/DriverDrsWindow/:__span-0-3) [ 1891 0 R /XYZ 60.307257 680.834718 0 ] (Code/DriverDrsWindow/:__span-0-30) [ 1891 0 R /XYZ 60.307257 292.224510 0 ] (Code/DriverDrsWindow/:__span-0-31) [ 1891 0 R /XYZ 60.307257 278.824158 0 ] (Code/DriverDrsWindow/:__span-0-32) [ 1891 0 R /XYZ 60.307257 265.423806 0 ] (Code/DriverDrsWindow/:__span-0-33) [ 1891 0 R /XYZ 60.307257 252.023454 0 ] (Code/DriverDrsWindow/:__span-0-34) [ 1891 0 R /XYZ 60.307257 238.623102 0 ] (Code/DriverDrsWindow/:__span-0-35) [ 1891 0 R /XYZ 60.307257 225.222750 0 ] (Code/DriverDrsWindow/:__span-0-36) [ 1891 0 R /XYZ 60.307257 211.822398 0 ] (Code/DriverDrsWindow/:__span-0-37) [ 1891 0 R /XYZ 60.307257 198.422046 0 ] (Code/DriverDrsWindow/:__span-0-38) [ 1891 0 R /XYZ 60.307257 185.021694 0 ] (Code/DriverDrsWindow/:__span-0-39) [ 1891 0 R /XYZ 60.307257 171.621342 0 ] (Code/DriverDrsWindow/:__span-0-4) [ 1891 0 R /XYZ 60.307257 667.434366 0 ] (Code/DriverDrsWindow/:__span-0-40) [ 1891 0 R /XYZ 60.307257 158.220990 0 ] (Code/DriverDrsWindow/:__span-0-41) [ 1891 0 R /XYZ 60.307257 144.820638 0 ] (Code/DriverDrsWindow/:__span-0-42) [ 1891 0 R /XYZ 60.307257 131.420286 0 ] (Code/DriverDrsWindow/:__span-0-43) [ 1891 0 R /XYZ 60.307257 118.019934 0 ] (Code/DriverDrsWindow/:__span-0-44) [ 1891 0 R /XYZ 60.307257 104.619582 0 ] (Code/DriverDrsWindow/:__span-0-45) [ 1891 0 R /XYZ 60.307257 91.219230 0 ] (Code/DriverDrsWindow/:__span-0-46) [ 1893 0 R /XYZ 60.307257 771.023622 0 ] (Code/DriverDrsWindow/:__span-0-47) [ 1893 0 R /XYZ 60.307257 757.623270 0 ] (Code/DriverDrsWindow/:__span-0-48) [ 1893 0 R /XYZ 60.307257 730.822566 0 ] (Code/DriverDrsWindow/:__span-0-49) [ 1893 0 R /XYZ 60.307257 717.422214 0 ] (Code/DriverDrsWindow/:__span-0-5) [ 1891 0 R /XYZ 60.307257 654.034014 0 ] (Code/DriverDrsWindow/:__span-0-50) [ 1893 0 R /XYZ 60.307257 704.021862 0 ] (Code/DriverDrsWindow/:__span-0-51) [ 1893 0 R /XYZ 60.307257 690.621510 0 ] (Code/DriverDrsWindow/:__span-0-52) [ 1893 0 R /XYZ 60.307257 677.221158 0 ] (Code/DriverDrsWindow/:__span-0-53) [ 1893 0 R /XYZ 60.307257 663.820806 0 ] (Code/DriverDrsWindow/:__span-0-54) [ 1893 0 R /XYZ 60.307257 650.420454 0 ] (Code/DriverDrsWindow/:__span-0-55) [ 1893 0 R /XYZ 60.307257 637.020102 0 ] (Code/DriverDrsWindow/:__span-0-56) [ 1893 0 R /XYZ 60.307257 623.619750 0 ] (Code/DriverDrsWindow/:__span-0-57) [ 1893 0 R /XYZ 60.307257 596.819046 0 ] (Code/DriverDrsWindow/:__span-0-58) [ 1893 0 R /XYZ 60.307257 583.418694 0 ] (Code/DriverDrsWindow/:__span-0-59) [ 1893 0 R /XYZ 60.307257 570.018342 0 ] (Code/DriverDrsWindow/:__span-0-6) [ 1891 0 R /XYZ 60.307257 640.633662 0 ] (Code/DriverDrsWindow/:__span-0-60) [ 1893 0 R /XYZ 60.307257 556.617990 0 ] (Code/DriverDrsWindow/:__span-0-61) [ 1893 0 R /XYZ 60.307257 543.217638 0 ] (Code/DriverDrsWindow/:__span-0-62) [ 1893 0 R /XYZ 60.307257 529.817286 0 ] (Code/DriverDrsWindow/:__span-0-63) [ 1893 0 R /XYZ 60.307257 516.416934 0 ] (Code/DriverDrsWindow/:__span-0-64) [ 1893 0 R /XYZ 60.307257 503.016582 0 ] (Code/DriverDrsWindow/:__span-0-65) [ 1893 0 R /XYZ 60.307257 489.616230 0 ] (Code/DriverDrsWindow/:__span-0-66) [ 1893 0 R /XYZ 60.307257 476.215878 0 ] (Code/DriverDrsWindow/:__span-0-67) [ 1893 0 R /XYZ 60.307257 462.815526 0 ] (Code/DriverDrsWindow/:__span-0-68) [ 1893 0 R /XYZ 60.307257 449.415174 0 ] (Code/DriverDrsWindow/:__span-0-69) [ 1893 0 R /XYZ 60.307257 436.014822 0 ] (Code/DriverDrsWindow/:__span-0-7) [ 1891 0 R /XYZ 60.307257 627.233310 0 ] (Code/DriverDrsWindow/:__span-0-70) [ 1893 0 R /XYZ 60.307257 422.614470 0 ] (Code/DriverDrsWindow/:__span-0-71) [ 1893 0 R /XYZ 60.307257 409.214118 0 ] (Code/DriverDrsWindow/:__span-0-72) [ 1893 0 R /XYZ 60.307257 395.813766 0 ] (Code/DriverDrsWindow/:__span-0-73) [ 1893 0 R /XYZ 60.307257 382.413414 0 ] (Code/DriverDrsWindow/:__span-0-74) [ 1893 0 R /XYZ 60.307257 369.013062 0 ] (Code/DriverDrsWindow/:__span-0-75) [ 1893 0 R /XYZ 60.307257 355.612710 0 ] (Code/DriverDrsWindow/:__span-0-76) [ 1893 0 R /XYZ 60.307257 342.212358 0 ] (Code/DriverDrsWindow/:__span-0-77) [ 1893 0 R /XYZ 60.307257 328.812006 0 ] (Code/DriverDrsWindow/:__span-0-78) [ 1893 0 R /XYZ 60.307257 315.411654 0 ] (Code/DriverDrsWindow/:__span-0-79) [ 1893 0 R /XYZ 60.307257 302.011302 0 ] (Code/DriverDrsWindow/:__span-0-8) [ 1891 0 R /XYZ 60.307257 613.832958 0 ] (Code/DriverDrsWindow/:__span-0-80) [ 1893 0 R /XYZ 60.307257 288.610950 0 ] (Code/DriverDrsWindow/:__span-0-81) [ 1893 0 R /XYZ 60.307257 275.210598 0 ] (Code/DriverDrsWindow/:__span-0-82) [ 1893 0 R /XYZ 60.307257 261.810246 0 ] (Code/DriverDrsWindow/:__span-0-83) [ 1893 0 R /XYZ 60.307257 248.409894 0 ] (Code/DriverDrsWindow/:__span-0-84) [ 1893 0 R /XYZ 60.307257 235.009542 0 ] (Code/DriverDrsWindow/:__span-0-85) [ 1893 0 R /XYZ 60.307257 221.609190 0 ] (Code/DriverDrsWindow/:__span-0-86) [ 1893 0 R /XYZ 60.307257 208.208838 0 ] (Code/DriverDrsWindow/:__span-0-87) [ 1893 0 R /XYZ 60.307257 194.808486 0 ] (Code/DriverDrsWindow/:__span-0-88) [ 1893 0 R /XYZ 60.307257 181.408134 0 ] (Code/DriverDrsWindow/:__span-0-89) [ 1893 0 R /XYZ 60.307257 168.007782 0 ] (Code/DriverDrsWindow/:__span-0-9) [ 1891 0 R /XYZ 60.307257 600.432606 0 ] (Code/DriverDrsWindow/:__span-0-90) [ 1893 0 R /XYZ 60.307257 154.607430 0 ] (Code/DriverDrsWindow/:__span-0-91) [ 1893 0 R /XYZ 60.307257 141.207078 0 ] (Code/DriverDrsWindow/:__span-0-92) [ 1893 0 R /XYZ 60.307257 127.806726 0 ] (Code/DriverDrsWindow/:__span-0-93) [ 1893 0 R /XYZ 60.307257 114.406374 0 ] (Code/DriverDrsWindow/:__span-0-94) [ 1893 0 R /XYZ 60.307257 101.006022 0 ] (Code/DriverDrsWindow/:__span-0-95) [ 1893 0 R /XYZ 60.307257 87.605670 0 ] (Code/DriverDrsWindow/:__span-0-96) [ 1895 0 R /XYZ 60.307257 771.023622 0 ] (Code/DriverDrsWindow/:__span-0-97) [ 1895 0 R /XYZ 60.307257 757.623270 0 ] (Code/DriverDrsWindow/:__span-0-98) [ 1895 0 R /XYZ 60.307257 744.222918 0 ] (Code/DriverDrsWindow/:__span-0-99) [ 1895 0 R /XYZ 60.307257 730.822566 0 ] (Code/DriverDrsWindow/:driverdrswindowcs) [ 1891 0 R /XYZ 39.386457 747.563622 0 ] (Code/DriverGapToLeaderWindow/:) [ 1783 0 R /XYZ 39.386457 747.563622 0 ] (Code/DriverGapToLeaderWindow/:__span-0-1) [ 1783 0 R /XYZ 60.307257 707.635422 0 ] (Code/DriverGapToLeaderWindow/:__span-0-10) [ 1783 0 R /XYZ 60.307257 587.032254 0 ] (Code/DriverGapToLeaderWindow/:__span-0-11) [ 1783 0 R /XYZ 60.307257 573.631902 0 ] (Code/DriverGapToLeaderWindow/:__span-0-12) [ 1783 0 R /XYZ 60.307257 560.231550 0 ] (Code/DriverGapToLeaderWindow/:__span-0-13) [ 1783 0 R /XYZ 60.307257 546.831198 0 ] (Code/DriverGapToLeaderWindow/:__span-0-14) [ 1783 0 R /XYZ 60.307257 533.430846 0 ] (Code/DriverGapToLeaderWindow/:__span-0-15) [ 1783 0 R /XYZ 60.307257 520.030494 0 ] (Code/DriverGapToLeaderWindow/:__span-0-16) [ 1783 0 R /XYZ 60.307257 506.630142 0 ] (Code/DriverGapToLeaderWindow/:__span-0-17) [ 1783 0 R /XYZ 60.307257 493.229790 0 ] (Code/DriverGapToLeaderWindow/:__span-0-18) [ 1783 0 R /XYZ 60.307257 479.829438 0 ] (Code/DriverGapToLeaderWindow/:__span-0-19) [ 1783 0 R /XYZ 60.307257 453.028734 0 ] (Code/DriverGapToLeaderWindow/:__span-0-2) [ 1783 0 R /XYZ 60.307257 694.235070 0 ] (Code/DriverGapToLeaderWindow/:__span-0-20) [ 1783 0 R /XYZ 60.307257 439.628382 0 ] (Code/DriverGapToLeaderWindow/:__span-0-21) [ 1783 0 R /XYZ 60.307257 426.228030 0 ] (Code/DriverGapToLeaderWindow/:__span-0-22) [ 1783 0 R /XYZ 60.307257 412.827678 0 ] (Code/DriverGapToLeaderWindow/:__span-0-23) [ 1783 0 R /XYZ 60.307257 399.427326 0 ] (Code/DriverGapToLeaderWindow/:__span-0-24) [ 1783 0 R /XYZ 60.307257 386.026974 0 ] (Code/DriverGapToLeaderWindow/:__span-0-25) [ 1783 0 R /XYZ 60.307257 372.626622 0 ] (Code/DriverGapToLeaderWindow/:__span-0-26) [ 1783 0 R /XYZ 60.307257 359.226270 0 ] (Code/DriverGapToLeaderWindow/:__span-0-27) [ 1783 0 R /XYZ 60.307257 345.825918 0 ] (Code/DriverGapToLeaderWindow/:__span-0-28) [ 1783 0 R /XYZ 60.307257 332.425566 0 ] (Code/DriverGapToLeaderWindow/:__span-0-29) [ 1783 0 R /XYZ 60.307257 305.624862 0 ] (Code/DriverGapToLeaderWindow/:__span-0-3) [ 1783 0 R /XYZ 60.307257 680.834718 0 ] (Code/DriverGapToLeaderWindow/:__span-0-30) [ 1783 0 R /XYZ 60.307257 292.224510 0 ] (Code/DriverGapToLeaderWindow/:__span-0-31) [ 1783 0 R /XYZ 60.307257 278.824158 0 ] (Code/DriverGapToLeaderWindow/:__span-0-32) [ 1783 0 R /XYZ 60.307257 265.423806 0 ] (Code/DriverGapToLeaderWindow/:__span-0-4) [ 1783 0 R /XYZ 60.307257 667.434366 0 ] (Code/DriverGapToLeaderWindow/:__span-0-5) [ 1783 0 R /XYZ 60.307257 654.034014 0 ] (Code/DriverGapToLeaderWindow/:__span-0-6) [ 1783 0 R /XYZ 60.307257 640.633662 0 ] (Code/DriverGapToLeaderWindow/:__span-0-7) [ 1783 0 R /XYZ 60.307257 627.233310 0 ] (Code/DriverGapToLeaderWindow/:__span-0-8) [ 1783 0 R /XYZ 60.307257 613.832958 0 ] (Code/DriverGapToLeaderWindow/:__span-0-9) [ 1783 0 R /XYZ 60.307257 600.432606 0 ] (Code/DriverGapToLeaderWindow/:drivergaptoleaderwindowcs) [ 1783 0 R /XYZ 39.386457 747.563622 0 ] (Code/DriverLapTimeWindow/:) [ 1897 0 R /XYZ 39.386457 747.563622 0 ] (Code/DriverLapTimeWindow/:__span-0-1) [ 1897 0 R /XYZ 60.307257 707.635422 0 ] (Code/DriverLapTimeWindow/:__span-0-10) [ 1897 0 R /XYZ 60.307257 587.032254 0 ] (Code/DriverLapTimeWindow/:__span-0-11) [ 1897 0 R /XYZ 60.307257 573.631902 0 ] (Code/DriverLapTimeWindow/:__span-0-12) [ 1897 0 R /XYZ 60.307257 560.231550 0 ] (Code/DriverLapTimeWindow/:__span-0-13) [ 1897 0 R /XYZ 60.307257 546.831198 0 ] (Code/DriverLapTimeWindow/:__span-0-14) [ 1897 0 R /XYZ 60.307257 533.430846 0 ] (Code/DriverLapTimeWindow/:__span-0-15) [ 1897 0 R /XYZ 60.307257 520.030494 0 ] (Code/DriverLapTimeWindow/:__span-0-16) [ 1897 0 R /XYZ 60.307257 506.630142 0 ] (Code/DriverLapTimeWindow/:__span-0-17) [ 1897 0 R /XYZ 60.307257 493.229790 0 ] (Code/DriverLapTimeWindow/:__span-0-18) [ 1897 0 R /XYZ 60.307257 479.829438 0 ] (Code/DriverLapTimeWindow/:__span-0-19) [ 1897 0 R /XYZ 60.307257 453.028734 0 ] (Code/DriverLapTimeWindow/:__span-0-2) [ 1897 0 R /XYZ 60.307257 694.235070 0 ] (Code/DriverLapTimeWindow/:__span-0-20) [ 1897 0 R /XYZ 60.307257 439.628382 0 ] (Code/DriverLapTimeWindow/:__span-0-21) [ 1897 0 R /XYZ 60.307257 426.228030 0 ] (Code/DriverLapTimeWindow/:__span-0-22) [ 1897 0 R /XYZ 60.307257 412.827678 0 ] (Code/DriverLapTimeWindow/:__span-0-23) [ 1897 0 R /XYZ 60.307257 399.427326 0 ] (Code/DriverLapTimeWindow/:__span-0-24) [ 1897 0 R /XYZ 60.307257 386.026974 0 ] (Code/DriverLapTimeWindow/:__span-0-25) [ 1897 0 R /XYZ 60.307257 372.626622 0 ] (Code/DriverLapTimeWindow/:__span-0-26) [ 1897 0 R /XYZ 60.307257 359.226270 0 ] (Code/DriverLapTimeWindow/:__span-0-27) [ 1897 0 R /XYZ 60.307257 345.825918 0 ] (Code/DriverLapTimeWindow/:__span-0-28) [ 1897 0 R /XYZ 60.307257 332.425566 0 ] (Code/DriverLapTimeWindow/:__span-0-29) [ 1897 0 R /XYZ 60.307257 305.624862 0 ] (Code/DriverLapTimeWindow/:__span-0-3) [ 1897 0 R /XYZ 60.307257 680.834718 0 ] (Code/DriverLapTimeWindow/:__span-0-30) [ 1897 0 R /XYZ 60.307257 292.224510 0 ] (Code/DriverLapTimeWindow/:__span-0-31) [ 1897 0 R /XYZ 60.307257 278.824158 0 ] (Code/DriverLapTimeWindow/:__span-0-32) [ 1897 0 R /XYZ 60.307257 265.423806 0 ] (Code/DriverLapTimeWindow/:__span-0-4) [ 1897 0 R /XYZ 60.307257 667.434366 0 ] (Code/DriverLapTimeWindow/:__span-0-5) [ 1897 0 R /XYZ 60.307257 654.034014 0 ] (Code/DriverLapTimeWindow/:__span-0-6) [ 1897 0 R /XYZ 60.307257 640.633662 0 ] (Code/DriverLapTimeWindow/:__span-0-7) [ 1897 0 R /XYZ 60.307257 627.233310 0 ] (Code/DriverLapTimeWindow/:__span-0-8) [ 1897 0 R /XYZ 60.307257 613.832958 0 ] (Code/DriverLapTimeWindow/:__span-0-9) [ 1897 0 R /XYZ 60.307257 600.432606 0 ] (Code/DriverLapTimeWindow/:driverlaptimewindowcs) [ 1897 0 R /XYZ 39.386457 747.563622 0 ] (Code/DriverNameWindow/:) [ 1785 0 R /XYZ 39.386457 747.563622 0 ] (Code/DriverNameWindow/:__span-0-1) [ 1785 0 R /XYZ 60.307257 707.635422 0 ] (Code/DriverNameWindow/:__span-0-10) [ 1785 0 R /XYZ 60.307257 587.032254 0 ] (Code/DriverNameWindow/:__span-0-11) [ 1785 0 R /XYZ 60.307257 573.631902 0 ] (Code/DriverNameWindow/:__span-0-12) [ 1785 0 R /XYZ 60.307257 560.231550 0 ] (Code/DriverNameWindow/:__span-0-13) [ 1785 0 R /XYZ 60.307257 546.831198 0 ] (Code/DriverNameWindow/:__span-0-14) [ 1785 0 R /XYZ 60.307257 533.430846 0 ] (Code/DriverNameWindow/:__span-0-15) [ 1785 0 R /XYZ 60.307257 520.030494 0 ] (Code/DriverNameWindow/:__span-0-16) [ 1785 0 R /XYZ 60.307257 506.630142 0 ] (Code/DriverNameWindow/:__span-0-17) [ 1785 0 R /XYZ 60.307257 493.229790 0 ] (Code/DriverNameWindow/:__span-0-18) [ 1785 0 R /XYZ 60.307257 479.829438 0 ] (Code/DriverNameWindow/:__span-0-19) [ 1785 0 R /XYZ 60.307257 453.028734 0 ] (Code/DriverNameWindow/:__span-0-2) [ 1785 0 R /XYZ 60.307257 694.235070 0 ] (Code/DriverNameWindow/:__span-0-20) [ 1785 0 R /XYZ 60.307257 439.628382 0 ] (Code/DriverNameWindow/:__span-0-21) [ 1785 0 R /XYZ 60.307257 426.228030 0 ] (Code/DriverNameWindow/:__span-0-22) [ 1785 0 R /XYZ 60.307257 412.827678 0 ] (Code/DriverNameWindow/:__span-0-23) [ 1785 0 R /XYZ 60.307257 399.427326 0 ] (Code/DriverNameWindow/:__span-0-24) [ 1785 0 R /XYZ 60.307257 386.026974 0 ] (Code/DriverNameWindow/:__span-0-25) [ 1785 0 R /XYZ 60.307257 372.626622 0 ] (Code/DriverNameWindow/:__span-0-26) [ 1785 0 R /XYZ 60.307257 345.825918 0 ] (Code/DriverNameWindow/:__span-0-27) [ 1785 0 R /XYZ 60.307257 319.025214 0 ] (Code/DriverNameWindow/:__span-0-28) [ 1785 0 R /XYZ 60.307257 305.624862 0 ] (Code/DriverNameWindow/:__span-0-29) [ 1785 0 R /XYZ 60.307257 292.224510 0 ] (Code/DriverNameWindow/:__span-0-3) [ 1785 0 R /XYZ 60.307257 680.834718 0 ] (Code/DriverNameWindow/:__span-0-30) [ 1785 0 R /XYZ 60.307257 278.824158 0 ] (Code/DriverNameWindow/:__span-0-31) [ 1785 0 R /XYZ 60.307257 265.423806 0 ] (Code/DriverNameWindow/:__span-0-32) [ 1785 0 R /XYZ 60.307257 252.023454 0 ] (Code/DriverNameWindow/:__span-0-33) [ 1785 0 R /XYZ 60.307257 238.623102 0 ] (Code/DriverNameWindow/:__span-0-34) [ 1785 0 R /XYZ 60.307257 225.222750 0 ] (Code/DriverNameWindow/:__span-0-35) [ 1785 0 R /XYZ 60.307257 198.422046 0 ] (Code/DriverNameWindow/:__span-0-36) [ 1785 0 R /XYZ 60.307257 171.621342 0 ] (Code/DriverNameWindow/:__span-0-37) [ 1785 0 R /XYZ 60.307257 158.220990 0 ] (Code/DriverNameWindow/:__span-0-38) [ 1785 0 R /XYZ 60.307257 144.820638 0 ] (Code/DriverNameWindow/:__span-0-39) [ 1785 0 R /XYZ 60.307257 131.420286 0 ] (Code/DriverNameWindow/:__span-0-4) [ 1785 0 R /XYZ 60.307257 667.434366 0 ] (Code/DriverNameWindow/:__span-0-40) [ 1785 0 R /XYZ 60.307257 118.019934 0 ] (Code/DriverNameWindow/:__span-0-41) [ 1785 0 R /XYZ 60.307257 104.619582 0 ] (Code/DriverNameWindow/:__span-0-42) [ 1785 0 R /XYZ 60.307257 91.219230 0 ] (Code/DriverNameWindow/:__span-0-43) [ 1787 0 R /XYZ 60.307257 757.623270 0 ] (Code/DriverNameWindow/:__span-0-44) [ 1787 0 R /XYZ 60.307257 730.822566 0 ] (Code/DriverNameWindow/:__span-0-45) [ 1787 0 R /XYZ 60.307257 717.422214 0 ] (Code/DriverNameWindow/:__span-0-46) [ 1787 0 R /XYZ 60.307257 690.621510 0 ] (Code/DriverNameWindow/:__span-0-47) [ 1787 0 R /XYZ 60.307257 677.221158 0 ] (Code/DriverNameWindow/:__span-0-48) [ 1787 0 R /XYZ 60.307257 663.820806 0 ] (Code/DriverNameWindow/:__span-0-49) [ 1787 0 R /XYZ 60.307257 650.420454 0 ] (Code/DriverNameWindow/:__span-0-5) [ 1785 0 R /XYZ 60.307257 654.034014 0 ] (Code/DriverNameWindow/:__span-0-50) [ 1787 0 R /XYZ 60.307257 637.020102 0 ] (Code/DriverNameWindow/:__span-0-51) [ 1787 0 R /XYZ 60.307257 623.619750 0 ] (Code/DriverNameWindow/:__span-0-52) [ 1787 0 R /XYZ 60.307257 610.219398 0 ] (Code/DriverNameWindow/:__span-0-53) [ 1787 0 R /XYZ 60.307257 596.819046 0 ] (Code/DriverNameWindow/:__span-0-54) [ 1787 0 R /XYZ 60.307257 583.418694 0 ] (Code/DriverNameWindow/:__span-0-55) [ 1787 0 R /XYZ 60.307257 570.018342 0 ] (Code/DriverNameWindow/:__span-0-56) [ 1787 0 R /XYZ 60.307257 556.617990 0 ] (Code/DriverNameWindow/:__span-0-57) [ 1787 0 R /XYZ 60.307257 543.217638 0 ] (Code/DriverNameWindow/:__span-0-6) [ 1785 0 R /XYZ 60.307257 640.633662 0 ] (Code/DriverNameWindow/:__span-0-7) [ 1785 0 R /XYZ 60.307257 627.233310 0 ] (Code/DriverNameWindow/:__span-0-8) [ 1785 0 R /XYZ 60.307257 613.832958 0 ] (Code/DriverNameWindow/:__span-0-9) [ 1785 0 R /XYZ 60.307257 600.432606 0 ] (Code/DriverNameWindow/:drivernamewindowcs) [ 1785 0 R /XYZ 39.386457 747.563622 0 ] (Code/DriverPositionWindow/:) [ 1899 0 R /XYZ 39.386457 747.563622 0 ] (Code/DriverPositionWindow/:__span-0-1) [ 1899 0 R /XYZ 60.307257 707.635422 0 ] (Code/DriverPositionWindow/:__span-0-10) [ 1899 0 R /XYZ 60.307257 587.032254 0 ] (Code/DriverPositionWindow/:__span-0-11) [ 1899 0 R /XYZ 60.307257 573.631902 0 ] (Code/DriverPositionWindow/:__span-0-12) [ 1899 0 R /XYZ 60.307257 560.231550 0 ] (Code/DriverPositionWindow/:__span-0-13) [ 1899 0 R /XYZ 60.307257 546.831198 0 ] (Code/DriverPositionWindow/:__span-0-14) [ 1899 0 R /XYZ 60.307257 533.430846 0 ] (Code/DriverPositionWindow/:__span-0-15) [ 1899 0 R /XYZ 60.307257 520.030494 0 ] (Code/DriverPositionWindow/:__span-0-16) [ 1899 0 R /XYZ 60.307257 506.630142 0 ] (Code/DriverPositionWindow/:__span-0-17) [ 1899 0 R /XYZ 60.307257 493.229790 0 ] (Code/DriverPositionWindow/:__span-0-18) [ 1899 0 R /XYZ 60.307257 479.829438 0 ] (Code/DriverPositionWindow/:__span-0-19) [ 1899 0 R /XYZ 60.307257 453.028734 0 ] (Code/DriverPositionWindow/:__span-0-2) [ 1899 0 R /XYZ 60.307257 694.235070 0 ] (Code/DriverPositionWindow/:__span-0-20) [ 1899 0 R /XYZ 60.307257 439.628382 0 ] (Code/DriverPositionWindow/:__span-0-21) [ 1899 0 R /XYZ 60.307257 426.228030 0 ] (Code/DriverPositionWindow/:__span-0-22) [ 1899 0 R /XYZ 60.307257 412.827678 0 ] (Code/DriverPositionWindow/:__span-0-23) [ 1899 0 R /XYZ 60.307257 399.427326 0 ] (Code/DriverPositionWindow/:__span-0-24) [ 1899 0 R /XYZ 60.307257 386.026974 0 ] (Code/DriverPositionWindow/:__span-0-25) [ 1899 0 R /XYZ 60.307257 372.626622 0 ] (Code/DriverPositionWindow/:__span-0-26) [ 1899 0 R /XYZ 60.307257 345.825918 0 ] (Code/DriverPositionWindow/:__span-0-27) [ 1899 0 R /XYZ 60.307257 332.425566 0 ] (Code/DriverPositionWindow/:__span-0-28) [ 1899 0 R /XYZ 60.307257 319.025214 0 ] (Code/DriverPositionWindow/:__span-0-29) [ 1899 0 R /XYZ 60.307257 305.624862 0 ] (Code/DriverPositionWindow/:__span-0-3) [ 1899 0 R /XYZ 60.307257 680.834718 0 ] (Code/DriverPositionWindow/:__span-0-30) [ 1899 0 R /XYZ 60.307257 292.224510 0 ] (Code/DriverPositionWindow/:__span-0-31) [ 1899 0 R /XYZ 60.307257 278.824158 0 ] (Code/DriverPositionWindow/:__span-0-32) [ 1899 0 R /XYZ 60.307257 265.423806 0 ] (Code/DriverPositionWindow/:__span-0-33) [ 1899 0 R /XYZ 60.307257 252.023454 0 ] (Code/DriverPositionWindow/:__span-0-34) [ 1899 0 R /XYZ 60.307257 238.623102 0 ] (Code/DriverPositionWindow/:__span-0-35) [ 1899 0 R /XYZ 60.307257 225.222750 0 ] (Code/DriverPositionWindow/:__span-0-36) [ 1899 0 R /XYZ 60.307257 211.822398 0 ] (Code/DriverPositionWindow/:__span-0-37) [ 1899 0 R /XYZ 60.307257 198.422046 0 ] (Code/DriverPositionWindow/:__span-0-38) [ 1899 0 R /XYZ 60.307257 185.021694 0 ] (Code/DriverPositionWindow/:__span-0-39) [ 1899 0 R /XYZ 60.307257 171.621342 0 ] (Code/DriverPositionWindow/:__span-0-4) [ 1899 0 R /XYZ 60.307257 667.434366 0 ] (Code/DriverPositionWindow/:__span-0-40) [ 1899 0 R /XYZ 60.307257 158.220990 0 ] (Code/DriverPositionWindow/:__span-0-41) [ 1899 0 R /XYZ 60.307257 144.820638 0 ] (Code/DriverPositionWindow/:__span-0-42) [ 1899 0 R /XYZ 60.307257 131.420286 0 ] (Code/DriverPositionWindow/:__span-0-5) [ 1899 0 R /XYZ 60.307257 654.034014 0 ] (Code/DriverPositionWindow/:__span-0-6) [ 1899 0 R /XYZ 60.307257 640.633662 0 ] (Code/DriverPositionWindow/:__span-0-7) [ 1899 0 R /XYZ 60.307257 627.233310 0 ] (Code/DriverPositionWindow/:__span-0-8) [ 1899 0 R /XYZ 60.307257 613.832958 0 ] (Code/DriverPositionWindow/:__span-0-9) [ 1899 0 R /XYZ 60.307257 600.432606 0 ] (Code/DriverPositionWindow/:driverpositionwindowcs) [ 1899 0 R /XYZ 39.386457 747.563622 0 ] (Code/DriverSectorWindow/:) [ 1789 0 R /XYZ 39.386457 747.563622 0 ] (Code/DriverSectorWindow/:__span-0-1) [ 1789 0 R /XYZ 60.307257 707.635422 0 ] (Code/DriverSectorWindow/:__span-0-10) [ 1789 0 R /XYZ 60.307257 573.631902 0 ] (Code/DriverSectorWindow/:__span-0-11) [ 1789 0 R /XYZ 60.307257 560.231550 0 ] (Code/DriverSectorWindow/:__span-0-12) [ 1789 0 R /XYZ 60.307257 546.831198 0 ] (Code/DriverSectorWindow/:__span-0-13) [ 1789 0 R /XYZ 60.307257 533.430846 0 ] (Code/DriverSectorWindow/:__span-0-14) [ 1789 0 R /XYZ 60.307257 520.030494 0 ] (Code/DriverSectorWindow/:__span-0-15) [ 1789 0 R /XYZ 60.307257 506.630142 0 ] (Code/DriverSectorWindow/:__span-0-16) [ 1789 0 R /XYZ 60.307257 493.229790 0 ] (Code/DriverSectorWindow/:__span-0-17) [ 1789 0 R /XYZ 60.307257 479.829438 0 ] (Code/DriverSectorWindow/:__span-0-18) [ 1789 0 R /XYZ 60.307257 466.429086 0 ] (Code/DriverSectorWindow/:__span-0-19) [ 1789 0 R /XYZ 60.307257 439.628382 0 ] (Code/DriverSectorWindow/:__span-0-2) [ 1789 0 R /XYZ 60.307257 694.235070 0 ] (Code/DriverSectorWindow/:__span-0-20) [ 1789 0 R /XYZ 60.307257 426.228030 0 ] (Code/DriverSectorWindow/:__span-0-21) [ 1789 0 R /XYZ 60.307257 412.827678 0 ] (Code/DriverSectorWindow/:__span-0-22) [ 1789 0 R /XYZ 60.307257 399.427326 0 ] (Code/DriverSectorWindow/:__span-0-23) [ 1789 0 R /XYZ 60.307257 386.026974 0 ] (Code/DriverSectorWindow/:__span-0-24) [ 1789 0 R /XYZ 60.307257 372.626622 0 ] (Code/DriverSectorWindow/:__span-0-25) [ 1789 0 R /XYZ 60.307257 359.226270 0 ] (Code/DriverSectorWindow/:__span-0-26) [ 1789 0 R /XYZ 60.307257 345.825918 0 ] (Code/DriverSectorWindow/:__span-0-27) [ 1789 0 R /XYZ 60.307257 332.425566 0 ] (Code/DriverSectorWindow/:__span-0-28) [ 1789 0 R /XYZ 60.307257 319.025214 0 ] (Code/DriverSectorWindow/:__span-0-29) [ 1789 0 R /XYZ 60.307257 292.224510 0 ] (Code/DriverSectorWindow/:__span-0-3) [ 1789 0 R /XYZ 60.307257 680.834718 0 ] (Code/DriverSectorWindow/:__span-0-30) [ 1789 0 R /XYZ 60.307257 278.824158 0 ] (Code/DriverSectorWindow/:__span-0-31) [ 1789 0 R /XYZ 60.307257 265.423806 0 ] (Code/DriverSectorWindow/:__span-0-32) [ 1789 0 R /XYZ 60.307257 252.023454 0 ] (Code/DriverSectorWindow/:__span-0-4) [ 1789 0 R /XYZ 60.307257 667.434366 0 ] (Code/DriverSectorWindow/:__span-0-5) [ 1789 0 R /XYZ 60.307257 640.633662 0 ] (Code/DriverSectorWindow/:__span-0-6) [ 1789 0 R /XYZ 60.307257 627.233310 0 ] (Code/DriverSectorWindow/:__span-0-7) [ 1789 0 R /XYZ 60.307257 613.832958 0 ] (Code/DriverSectorWindow/:__span-0-8) [ 1789 0 R /XYZ 60.307257 600.432606 0 ] (Code/DriverSectorWindow/:__span-0-9) [ 1789 0 R /XYZ 60.307257 587.032254 0 ] (Code/DriverSectorWindow/:driversectorwindowcs) [ 1789 0 R /XYZ 39.386457 747.563622 0 ] (Code/DriverTyresWindow/:) [ 1901 0 R /XYZ 39.386457 747.563622 0 ] (Code/DriverTyresWindow/:__span-0-1) [ 1901 0 R /XYZ 60.307257 707.635422 0 ] (Code/DriverTyresWindow/:__span-0-10) [ 1901 0 R /XYZ 60.307257 587.032254 0 ] (Code/DriverTyresWindow/:__span-0-100) [ 1905 0 R /XYZ 60.307257 570.018342 0 ] (Code/DriverTyresWindow/:__span-0-101) [ 1905 0 R /XYZ 60.307257 543.217638 0 ] (Code/DriverTyresWindow/:__span-0-102) [ 1905 0 R /XYZ 60.307257 529.817286 0 ] (Code/DriverTyresWindow/:__span-0-103) [ 1905 0 R /XYZ 60.307257 516.416934 0 ] (Code/DriverTyresWindow/:__span-0-104) [ 1905 0 R /XYZ 60.307257 503.016582 0 ] (Code/DriverTyresWindow/:__span-0-105) [ 1905 0 R /XYZ 60.307257 489.616230 0 ] (Code/DriverTyresWindow/:__span-0-106) [ 1905 0 R /XYZ 60.307257 476.215878 0 ] (Code/DriverTyresWindow/:__span-0-107) [ 1905 0 R /XYZ 60.307257 462.815526 0 ] (Code/DriverTyresWindow/:__span-0-108) [ 1905 0 R /XYZ 60.307257 449.415174 0 ] (Code/DriverTyresWindow/:__span-0-109) [ 1905 0 R /XYZ 60.307257 422.614470 0 ] (Code/DriverTyresWindow/:__span-0-11) [ 1901 0 R /XYZ 60.307257 573.631902 0 ] (Code/DriverTyresWindow/:__span-0-110) [ 1905 0 R /XYZ 60.307257 395.813766 0 ] (Code/DriverTyresWindow/:__span-0-111) [ 1905 0 R /XYZ 60.307257 382.413414 0 ] (Code/DriverTyresWindow/:__span-0-112) [ 1905 0 R /XYZ 60.307257 369.013062 0 ] (Code/DriverTyresWindow/:__span-0-113) [ 1905 0 R /XYZ 60.307257 355.612710 0 ] (Code/DriverTyresWindow/:__span-0-114) [ 1905 0 R /XYZ 60.307257 342.212358 0 ] (Code/DriverTyresWindow/:__span-0-115) [ 1905 0 R /XYZ 60.307257 328.812006 0 ] (Code/DriverTyresWindow/:__span-0-116) [ 1905 0 R /XYZ 60.307257 315.411654 0 ] (Code/DriverTyresWindow/:__span-0-117) [ 1905 0 R /XYZ 60.307257 302.011302 0 ] (Code/DriverTyresWindow/:__span-0-118) [ 1905 0 R /XYZ 60.307257 288.610950 0 ] (Code/DriverTyresWindow/:__span-0-119) [ 1905 0 R /XYZ 60.307257 275.210598 0 ] (Code/DriverTyresWindow/:__span-0-12) [ 1901 0 R /XYZ 60.307257 560.231550 0 ] (Code/DriverTyresWindow/:__span-0-120) [ 1905 0 R /XYZ 60.307257 261.810246 0 ] (Code/DriverTyresWindow/:__span-0-121) [ 1905 0 R /XYZ 60.307257 248.409894 0 ] (Code/DriverTyresWindow/:__span-0-122) [ 1905 0 R /XYZ 60.307257 221.609190 0 ] (Code/DriverTyresWindow/:__span-0-123) [ 1905 0 R /XYZ 60.307257 208.208838 0 ] (Code/DriverTyresWindow/:__span-0-124) [ 1905 0 R /XYZ 60.307257 194.808486 0 ] (Code/DriverTyresWindow/:__span-0-125) [ 1905 0 R /XYZ 60.307257 181.408134 0 ] (Code/DriverTyresWindow/:__span-0-126) [ 1905 0 R /XYZ 60.307257 168.007782 0 ] (Code/DriverTyresWindow/:__span-0-127) [ 1905 0 R /XYZ 60.307257 154.607430 0 ] (Code/DriverTyresWindow/:__span-0-128) [ 1905 0 R /XYZ 60.307257 141.207078 0 ] (Code/DriverTyresWindow/:__span-0-129) [ 1905 0 R /XYZ 60.307257 127.806726 0 ] (Code/DriverTyresWindow/:__span-0-13) [ 1901 0 R /XYZ 60.307257 546.831198 0 ] (Code/DriverTyresWindow/:__span-0-130) [ 1905 0 R /XYZ 60.307257 114.406374 0 ] (Code/DriverTyresWindow/:__span-0-131) [ 1905 0 R /XYZ 60.307257 101.006022 0 ] (Code/DriverTyresWindow/:__span-0-132) [ 1905 0 R /XYZ 60.307257 87.605670 0 ] (Code/DriverTyresWindow/:__span-0-133) [ 1907 0 R /XYZ 60.307257 771.023622 0 ] (Code/DriverTyresWindow/:__span-0-134) [ 1907 0 R /XYZ 60.307257 757.623270 0 ] (Code/DriverTyresWindow/:__span-0-135) [ 1907 0 R /XYZ 60.307257 744.222918 0 ] (Code/DriverTyresWindow/:__span-0-136) [ 1907 0 R /XYZ 60.307257 730.822566 0 ] (Code/DriverTyresWindow/:__span-0-137) [ 1907 0 R /XYZ 60.307257 717.422214 0 ] (Code/DriverTyresWindow/:__span-0-138) [ 1907 0 R /XYZ 60.307257 704.021862 0 ] (Code/DriverTyresWindow/:__span-0-139) [ 1907 0 R /XYZ 60.307257 690.621510 0 ] (Code/DriverTyresWindow/:__span-0-14) [ 1901 0 R /XYZ 60.307257 533.430846 0 ] (Code/DriverTyresWindow/:__span-0-140) [ 1907 0 R /XYZ 60.307257 677.221158 0 ] (Code/DriverTyresWindow/:__span-0-141) [ 1907 0 R /XYZ 60.307257 663.820806 0 ] (Code/DriverTyresWindow/:__span-0-142) [ 1907 0 R /XYZ 60.307257 650.420454 0 ] (Code/DriverTyresWindow/:__span-0-143) [ 1907 0 R /XYZ 60.307257 637.020102 0 ] (Code/DriverTyresWindow/:__span-0-144) [ 1907 0 R /XYZ 60.307257 623.619750 0 ] (Code/DriverTyresWindow/:__span-0-145) [ 1907 0 R /XYZ 60.307257 610.219398 0 ] (Code/DriverTyresWindow/:__span-0-146) [ 1907 0 R /XYZ 60.307257 596.819046 0 ] (Code/DriverTyresWindow/:__span-0-15) [ 1901 0 R /XYZ 60.307257 520.030494 0 ] (Code/DriverTyresWindow/:__span-0-16) [ 1901 0 R /XYZ 60.307257 506.630142 0 ] (Code/DriverTyresWindow/:__span-0-17) [ 1901 0 R /XYZ 60.307257 493.229790 0 ] (Code/DriverTyresWindow/:__span-0-18) [ 1901 0 R /XYZ 60.307257 479.829438 0 ] (Code/DriverTyresWindow/:__span-0-19) [ 1901 0 R /XYZ 60.307257 466.429086 0 ] (Code/DriverTyresWindow/:__span-0-2) [ 1901 0 R /XYZ 60.307257 694.235070 0 ] (Code/DriverTyresWindow/:__span-0-20) [ 1901 0 R /XYZ 60.307257 439.628382 0 ] (Code/DriverTyresWindow/:__span-0-21) [ 1901 0 R /XYZ 60.307257 426.228030 0 ] (Code/DriverTyresWindow/:__span-0-22) [ 1901 0 R /XYZ 60.307257 412.827678 0 ] (Code/DriverTyresWindow/:__span-0-23) [ 1901 0 R /XYZ 60.307257 399.427326 0 ] (Code/DriverTyresWindow/:__span-0-24) [ 1901 0 R /XYZ 60.307257 386.026974 0 ] (Code/DriverTyresWindow/:__span-0-25) [ 1901 0 R /XYZ 60.307257 372.626622 0 ] (Code/DriverTyresWindow/:__span-0-26) [ 1901 0 R /XYZ 60.307257 359.226270 0 ] (Code/DriverTyresWindow/:__span-0-27) [ 1901 0 R /XYZ 60.307257 345.825918 0 ] (Code/DriverTyresWindow/:__span-0-28) [ 1901 0 R /XYZ 60.307257 319.025214 0 ] (Code/DriverTyresWindow/:__span-0-29) [ 1901 0 R /XYZ 60.307257 305.624862 0 ] (Code/DriverTyresWindow/:__span-0-3) [ 1901 0 R /XYZ 60.307257 680.834718 0 ] (Code/DriverTyresWindow/:__span-0-30) [ 1901 0 R /XYZ 60.307257 292.224510 0 ] (Code/DriverTyresWindow/:__span-0-31) [ 1901 0 R /XYZ 60.307257 278.824158 0 ] (Code/DriverTyresWindow/:__span-0-32) [ 1901 0 R /XYZ 60.307257 265.423806 0 ] (Code/DriverTyresWindow/:__span-0-33) [ 1901 0 R /XYZ 60.307257 252.023454 0 ] (Code/DriverTyresWindow/:__span-0-34) [ 1901 0 R /XYZ 60.307257 238.623102 0 ] (Code/DriverTyresWindow/:__span-0-35) [ 1901 0 R /XYZ 60.307257 225.222750 0 ] (Code/DriverTyresWindow/:__span-0-36) [ 1901 0 R /XYZ 60.307257 211.822398 0 ] (Code/DriverTyresWindow/:__span-0-37) [ 1901 0 R /XYZ 60.307257 198.422046 0 ] (Code/DriverTyresWindow/:__span-0-38) [ 1901 0 R /XYZ 60.307257 185.021694 0 ] (Code/DriverTyresWindow/:__span-0-39) [ 1901 0 R /XYZ 60.307257 171.621342 0 ] (Code/DriverTyresWindow/:__span-0-4) [ 1901 0 R /XYZ 60.307257 667.434366 0 ] (Code/DriverTyresWindow/:__span-0-40) [ 1901 0 R /XYZ 60.307257 158.220990 0 ] (Code/DriverTyresWindow/:__span-0-41) [ 1901 0 R /XYZ 60.307257 131.420286 0 ] (Code/DriverTyresWindow/:__span-0-42) [ 1901 0 R /XYZ 60.307257 118.019934 0 ] (Code/DriverTyresWindow/:__span-0-43) [ 1901 0 R /XYZ 60.307257 104.619582 0 ] (Code/DriverTyresWindow/:__span-0-44) [ 1901 0 R /XYZ 60.307257 91.219230 0 ] (Code/DriverTyresWindow/:__span-0-45) [ 1903 0 R /XYZ 60.307257 771.023622 0 ] (Code/DriverTyresWindow/:__span-0-46) [ 1903 0 R /XYZ 60.307257 757.623270 0 ] (Code/DriverTyresWindow/:__span-0-47) [ 1903 0 R /XYZ 60.307257 744.222918 0 ] (Code/DriverTyresWindow/:__span-0-48) [ 1903 0 R /XYZ 60.307257 730.822566 0 ] (Code/DriverTyresWindow/:__span-0-49) [ 1903 0 R /XYZ 60.307257 717.422214 0 ] (Code/DriverTyresWindow/:__span-0-5) [ 1901 0 R /XYZ 60.307257 654.034014 0 ] (Code/DriverTyresWindow/:__span-0-50) [ 1903 0 R /XYZ 60.307257 704.021862 0 ] (Code/DriverTyresWindow/:__span-0-51) [ 1903 0 R /XYZ 60.307257 690.621510 0 ] (Code/DriverTyresWindow/:__span-0-52) [ 1903 0 R /XYZ 60.307257 677.221158 0 ] (Code/DriverTyresWindow/:__span-0-53) [ 1903 0 R /XYZ 60.307257 663.820806 0 ] (Code/DriverTyresWindow/:__span-0-54) [ 1903 0 R /XYZ 60.307257 637.020102 0 ] (Code/DriverTyresWindow/:__span-0-55) [ 1903 0 R /XYZ 60.307257 623.619750 0 ] (Code/DriverTyresWindow/:__span-0-56) [ 1903 0 R /XYZ 60.307257 610.219398 0 ] (Code/DriverTyresWindow/:__span-0-57) [ 1903 0 R /XYZ 60.307257 596.819046 0 ] (Code/DriverTyresWindow/:__span-0-58) [ 1903 0 R /XYZ 60.307257 583.418694 0 ] (Code/DriverTyresWindow/:__span-0-59) [ 1903 0 R /XYZ 60.307257 570.018342 0 ] (Code/DriverTyresWindow/:__span-0-6) [ 1901 0 R /XYZ 60.307257 640.633662 0 ] (Code/DriverTyresWindow/:__span-0-60) [ 1903 0 R /XYZ 60.307257 556.617990 0 ] (Code/DriverTyresWindow/:__span-0-61) [ 1903 0 R /XYZ 60.307257 543.217638 0 ] (Code/DriverTyresWindow/:__span-0-62) [ 1903 0 R /XYZ 60.307257 529.817286 0 ] (Code/DriverTyresWindow/:__span-0-63) [ 1903 0 R /XYZ 60.307257 516.416934 0 ] (Code/DriverTyresWindow/:__span-0-64) [ 1903 0 R /XYZ 60.307257 503.016582 0 ] (Code/DriverTyresWindow/:__span-0-65) [ 1903 0 R /XYZ 60.307257 462.815526 0 ] (Code/DriverTyresWindow/:__span-0-66) [ 1903 0 R /XYZ 60.307257 449.415174 0 ] (Code/DriverTyresWindow/:__span-0-67) [ 1903 0 R /XYZ 60.307257 436.014822 0 ] (Code/DriverTyresWindow/:__span-0-68) [ 1903 0 R /XYZ 60.307257 422.614470 0 ] (Code/DriverTyresWindow/:__span-0-69) [ 1903 0 R /XYZ 60.307257 409.214118 0 ] (Code/DriverTyresWindow/:__span-0-7) [ 1901 0 R /XYZ 60.307257 627.233310 0 ] (Code/DriverTyresWindow/:__span-0-70) [ 1903 0 R /XYZ 60.307257 395.813766 0 ] (Code/DriverTyresWindow/:__span-0-71) [ 1903 0 R /XYZ 60.307257 382.413414 0 ] (Code/DriverTyresWindow/:__span-0-72) [ 1903 0 R /XYZ 60.307257 369.013062 0 ] (Code/DriverTyresWindow/:__span-0-73) [ 1903 0 R /XYZ 60.307257 355.612710 0 ] (Code/DriverTyresWindow/:__span-0-74) [ 1903 0 R /XYZ 60.307257 328.812006 0 ] (Code/DriverTyresWindow/:__span-0-75) [ 1903 0 R /XYZ 60.307257 315.411654 0 ] (Code/DriverTyresWindow/:__span-0-76) [ 1903 0 R /XYZ 60.307257 302.011302 0 ] (Code/DriverTyresWindow/:__span-0-77) [ 1903 0 R /XYZ 60.307257 288.610950 0 ] (Code/DriverTyresWindow/:__span-0-78) [ 1903 0 R /XYZ 60.307257 275.210598 0 ] (Code/DriverTyresWindow/:__span-0-79) [ 1903 0 R /XYZ 60.307257 261.810246 0 ] (Code/DriverTyresWindow/:__span-0-8) [ 1901 0 R /XYZ 60.307257 613.832958 0 ] (Code/DriverTyresWindow/:__span-0-80) [ 1903 0 R /XYZ 60.307257 248.409894 0 ] (Code/DriverTyresWindow/:__span-0-81) [ 1903 0 R /XYZ 60.307257 235.009542 0 ] (Code/DriverTyresWindow/:__span-0-82) [ 1903 0 R /XYZ 60.307257 208.208838 0 ] (Code/DriverTyresWindow/:__span-0-83) [ 1903 0 R /XYZ 60.307257 168.007782 0 ] (Code/DriverTyresWindow/:__span-0-84) [ 1903 0 R /XYZ 60.307257 154.607430 0 ] (Code/DriverTyresWindow/:__span-0-85) [ 1903 0 R /XYZ 60.307257 127.806726 0 ] (Code/DriverTyresWindow/:__span-0-86) [ 1903 0 R /XYZ 60.307257 114.406374 0 ] (Code/DriverTyresWindow/:__span-0-87) [ 1903 0 R /XYZ 60.307257 101.006022 0 ] (Code/DriverTyresWindow/:__span-0-88) [ 1903 0 R /XYZ 60.307257 87.605670 0 ] (Code/DriverTyresWindow/:__span-0-89) [ 1905 0 R /XYZ 60.307257 771.023622 0 ] (Code/DriverTyresWindow/:__span-0-9) [ 1901 0 R /XYZ 60.307257 600.432606 0 ] (Code/DriverTyresWindow/:__span-0-90) [ 1905 0 R /XYZ 60.307257 757.623270 0 ] (Code/DriverTyresWindow/:__span-0-91) [ 1905 0 R /XYZ 60.307257 744.222918 0 ] (Code/DriverTyresWindow/:__span-0-92) [ 1905 0 R /XYZ 60.307257 717.422214 0 ] (Code/DriverTyresWindow/:__span-0-93) [ 1905 0 R /XYZ 60.307257 690.621510 0 ] (Code/DriverTyresWindow/:__span-0-94) [ 1905 0 R /XYZ 60.307257 677.221158 0 ] (Code/DriverTyresWindow/:__span-0-95) [ 1905 0 R /XYZ 60.307257 650.420454 0 ] (Code/DriverTyresWindow/:__span-0-96) [ 1905 0 R /XYZ 60.307257 637.020102 0 ] (Code/DriverTyresWindow/:__span-0-97) [ 1905 0 R /XYZ 60.307257 610.219398 0 ] (Code/DriverTyresWindow/:__span-0-98) [ 1905 0 R /XYZ 60.307257 596.819046 0 ] (Code/DriverTyresWindow/:__span-0-99) [ 1905 0 R /XYZ 60.307257 583.418694 0 ] (Code/DriverTyresWindow/:drivertyreswindowcs) [ 1901 0 R /XYZ 39.386457 747.563622 0 ] (Code/F1TVEmulator/:) [ 1791 0 R /XYZ 39.386457 747.563622 0 ] (Code/F1TVEmulator/:__span-0-1) [ 1791 0 R /XYZ 60.307257 707.635422 0 ] (Code/F1TVEmulator/:__span-0-10) [ 1791 0 R /XYZ 60.307257 573.631902 0 ] (Code/F1TVEmulator/:__span-0-100) [ 1795 0 R /XYZ 60.307257 663.820806 0 ] (Code/F1TVEmulator/:__span-0-101) [ 1795 0 R /XYZ 60.307257 650.420454 0 ] (Code/F1TVEmulator/:__span-0-102) [ 1795 0 R /XYZ 60.307257 637.020102 0 ] (Code/F1TVEmulator/:__span-0-103) [ 1795 0 R /XYZ 60.307257 623.619750 0 ] (Code/F1TVEmulator/:__span-0-104) [ 1795 0 R /XYZ 60.307257 610.219398 0 ] (Code/F1TVEmulator/:__span-0-105) [ 1795 0 R /XYZ 60.307257 596.819046 0 ] (Code/F1TVEmulator/:__span-0-106) [ 1795 0 R /XYZ 60.307257 583.418694 0 ] (Code/F1TVEmulator/:__span-0-107) [ 1795 0 R /XYZ 60.307257 570.018342 0 ] (Code/F1TVEmulator/:__span-0-108) [ 1795 0 R /XYZ 60.307257 556.617990 0 ] (Code/F1TVEmulator/:__span-0-109) [ 1795 0 R /XYZ 60.307257 543.217638 0 ] (Code/F1TVEmulator/:__span-0-11) [ 1791 0 R /XYZ 60.307257 560.231550 0 ] (Code/F1TVEmulator/:__span-0-110) [ 1795 0 R /XYZ 60.307257 529.817286 0 ] (Code/F1TVEmulator/:__span-0-111) [ 1795 0 R /XYZ 60.307257 516.416934 0 ] (Code/F1TVEmulator/:__span-0-112) [ 1795 0 R /XYZ 60.307257 503.016582 0 ] (Code/F1TVEmulator/:__span-0-113) [ 1795 0 R /XYZ 60.307257 489.616230 0 ] (Code/F1TVEmulator/:__span-0-114) [ 1795 0 R /XYZ 60.307257 476.215878 0 ] (Code/F1TVEmulator/:__span-0-115) [ 1795 0 R /XYZ 60.307257 449.415174 0 ] (Code/F1TVEmulator/:__span-0-116) [ 1795 0 R /XYZ 60.307257 436.014822 0 ] (Code/F1TVEmulator/:__span-0-117) [ 1795 0 R /XYZ 60.307257 409.214118 0 ] (Code/F1TVEmulator/:__span-0-118) [ 1795 0 R /XYZ 60.307257 395.813766 0 ] (Code/F1TVEmulator/:__span-0-119) [ 1795 0 R /XYZ 60.307257 382.413414 0 ] (Code/F1TVEmulator/:__span-0-12) [ 1791 0 R /XYZ 60.307257 546.831198 0 ] (Code/F1TVEmulator/:__span-0-120) [ 1795 0 R /XYZ 60.307257 369.013062 0 ] (Code/F1TVEmulator/:__span-0-121) [ 1795 0 R /XYZ 60.307257 342.212358 0 ] (Code/F1TVEmulator/:__span-0-122) [ 1795 0 R /XYZ 60.307257 328.812006 0 ] (Code/F1TVEmulator/:__span-0-123) [ 1795 0 R /XYZ 60.307257 315.411654 0 ] (Code/F1TVEmulator/:__span-0-124) [ 1795 0 R /XYZ 60.307257 302.011302 0 ] (Code/F1TVEmulator/:__span-0-125) [ 1795 0 R /XYZ 60.307257 288.610950 0 ] (Code/F1TVEmulator/:__span-0-126) [ 1795 0 R /XYZ 60.307257 275.210598 0 ] (Code/F1TVEmulator/:__span-0-127) [ 1795 0 R /XYZ 60.307257 261.810246 0 ] (Code/F1TVEmulator/:__span-0-128) [ 1795 0 R /XYZ 60.307257 248.409894 0 ] (Code/F1TVEmulator/:__span-0-129) [ 1795 0 R /XYZ 60.307257 235.009542 0 ] (Code/F1TVEmulator/:__span-0-13) [ 1791 0 R /XYZ 60.307257 533.430846 0 ] (Code/F1TVEmulator/:__span-0-130) [ 1795 0 R /XYZ 60.307257 221.609190 0 ] (Code/F1TVEmulator/:__span-0-131) [ 1795 0 R /XYZ 60.307257 208.208838 0 ] (Code/F1TVEmulator/:__span-0-132) [ 1795 0 R /XYZ 60.307257 194.808486 0 ] (Code/F1TVEmulator/:__span-0-133) [ 1795 0 R /XYZ 60.307257 181.408134 0 ] (Code/F1TVEmulator/:__span-0-134) [ 1795 0 R /XYZ 60.307257 168.007782 0 ] (Code/F1TVEmulator/:__span-0-135) [ 1795 0 R /XYZ 60.307257 154.607430 0 ] (Code/F1TVEmulator/:__span-0-136) [ 1795 0 R /XYZ 60.307257 141.207078 0 ] (Code/F1TVEmulator/:__span-0-137) [ 1795 0 R /XYZ 60.307257 127.806726 0 ] (Code/F1TVEmulator/:__span-0-138) [ 1795 0 R /XYZ 60.307257 114.406374 0 ] (Code/F1TVEmulator/:__span-0-139) [ 1795 0 R /XYZ 60.307257 101.006022 0 ] (Code/F1TVEmulator/:__span-0-14) [ 1791 0 R /XYZ 60.307257 520.030494 0 ] (Code/F1TVEmulator/:__span-0-140) [ 1795 0 R /XYZ 60.307257 87.605670 0 ] (Code/F1TVEmulator/:__span-0-141) [ 1797 0 R /XYZ 60.307257 771.023622 0 ] (Code/F1TVEmulator/:__span-0-142) [ 1797 0 R /XYZ 60.307257 757.623270 0 ] (Code/F1TVEmulator/:__span-0-143) [ 1797 0 R /XYZ 60.307257 744.222918 0 ] (Code/F1TVEmulator/:__span-0-144) [ 1797 0 R /XYZ 60.307257 730.822566 0 ] (Code/F1TVEmulator/:__span-0-145) [ 1797 0 R /XYZ 60.307257 717.422214 0 ] (Code/F1TVEmulator/:__span-0-146) [ 1797 0 R /XYZ 60.307257 704.021862 0 ] (Code/F1TVEmulator/:__span-0-147) [ 1797 0 R /XYZ 60.307257 690.621510 0 ] (Code/F1TVEmulator/:__span-0-148) [ 1797 0 R /XYZ 60.307257 677.221158 0 ] (Code/F1TVEmulator/:__span-0-149) [ 1797 0 R /XYZ 60.307257 663.820806 0 ] (Code/F1TVEmulator/:__span-0-15) [ 1791 0 R /XYZ 60.307257 506.630142 0 ] (Code/F1TVEmulator/:__span-0-150) [ 1797 0 R /XYZ 60.307257 650.420454 0 ] (Code/F1TVEmulator/:__span-0-151) [ 1797 0 R /XYZ 60.307257 637.020102 0 ] (Code/F1TVEmulator/:__span-0-152) [ 1797 0 R /XYZ 60.307257 623.619750 0 ] (Code/F1TVEmulator/:__span-0-153) [ 1797 0 R /XYZ 60.307257 610.219398 0 ] (Code/F1TVEmulator/:__span-0-154) [ 1797 0 R /XYZ 60.307257 596.819046 0 ] (Code/F1TVEmulator/:__span-0-155) [ 1797 0 R /XYZ 60.307257 570.018342 0 ] (Code/F1TVEmulator/:__span-0-156) [ 1797 0 R /XYZ 60.307257 543.217638 0 ] (Code/F1TVEmulator/:__span-0-157) [ 1797 0 R /XYZ 60.307257 529.817286 0 ] (Code/F1TVEmulator/:__span-0-158) [ 1797 0 R /XYZ 60.307257 516.416934 0 ] (Code/F1TVEmulator/:__span-0-159) [ 1797 0 R /XYZ 60.307257 503.016582 0 ] (Code/F1TVEmulator/:__span-0-16) [ 1791 0 R /XYZ 60.307257 493.229790 0 ] (Code/F1TVEmulator/:__span-0-160) [ 1797 0 R /XYZ 60.307257 489.616230 0 ] (Code/F1TVEmulator/:__span-0-161) [ 1797 0 R /XYZ 60.307257 476.215878 0 ] (Code/F1TVEmulator/:__span-0-162) [ 1797 0 R /XYZ 60.307257 462.815526 0 ] (Code/F1TVEmulator/:__span-0-163) [ 1797 0 R /XYZ 60.307257 449.415174 0 ] (Code/F1TVEmulator/:__span-0-164) [ 1797 0 R /XYZ 60.307257 436.014822 0 ] (Code/F1TVEmulator/:__span-0-165) [ 1797 0 R /XYZ 60.307257 422.614470 0 ] (Code/F1TVEmulator/:__span-0-166) [ 1797 0 R /XYZ 60.307257 409.214118 0 ] (Code/F1TVEmulator/:__span-0-167) [ 1797 0 R /XYZ 60.307257 395.813766 0 ] (Code/F1TVEmulator/:__span-0-168) [ 1797 0 R /XYZ 60.307257 382.413414 0 ] (Code/F1TVEmulator/:__span-0-169) [ 1797 0 R /XYZ 60.307257 369.013062 0 ] (Code/F1TVEmulator/:__span-0-17) [ 1791 0 R /XYZ 60.307257 479.829438 0 ] (Code/F1TVEmulator/:__span-0-170) [ 1797 0 R /XYZ 60.307257 355.612710 0 ] (Code/F1TVEmulator/:__span-0-171) [ 1797 0 R /XYZ 60.307257 342.212358 0 ] (Code/F1TVEmulator/:__span-0-172) [ 1797 0 R /XYZ 60.307257 328.812006 0 ] (Code/F1TVEmulator/:__span-0-173) [ 1797 0 R /XYZ 60.307257 315.411654 0 ] (Code/F1TVEmulator/:__span-0-174) [ 1797 0 R /XYZ 60.307257 302.011302 0 ] (Code/F1TVEmulator/:__span-0-175) [ 1797 0 R /XYZ 60.307257 288.610950 0 ] (Code/F1TVEmulator/:__span-0-176) [ 1797 0 R /XYZ 60.307257 275.210598 0 ] (Code/F1TVEmulator/:__span-0-177) [ 1797 0 R /XYZ 60.307257 261.810246 0 ] (Code/F1TVEmulator/:__span-0-178) [ 1797 0 R /XYZ 60.307257 248.409894 0 ] (Code/F1TVEmulator/:__span-0-179) [ 1797 0 R /XYZ 60.307257 235.009542 0 ] (Code/F1TVEmulator/:__span-0-18) [ 1791 0 R /XYZ 60.307257 466.429086 0 ] (Code/F1TVEmulator/:__span-0-180) [ 1797 0 R /XYZ 60.307257 208.208838 0 ] (Code/F1TVEmulator/:__span-0-181) [ 1797 0 R /XYZ 60.307257 194.808486 0 ] (Code/F1TVEmulator/:__span-0-182) [ 1797 0 R /XYZ 60.307257 181.408134 0 ] (Code/F1TVEmulator/:__span-0-183) [ 1797 0 R /XYZ 60.307257 168.007782 0 ] (Code/F1TVEmulator/:__span-0-184) [ 1797 0 R /XYZ 60.307257 154.607430 0 ] (Code/F1TVEmulator/:__span-0-185) [ 1797 0 R /XYZ 60.307257 141.207078 0 ] (Code/F1TVEmulator/:__span-0-186) [ 1797 0 R /XYZ 60.307257 127.806726 0 ] (Code/F1TVEmulator/:__span-0-187) [ 1797 0 R /XYZ 60.307257 114.406374 0 ] (Code/F1TVEmulator/:__span-0-188) [ 1797 0 R /XYZ 60.307257 101.006022 0 ] (Code/F1TVEmulator/:__span-0-189) [ 1797 0 R /XYZ 60.307257 87.605670 0 ] (Code/F1TVEmulator/:__span-0-19) [ 1791 0 R /XYZ 60.307257 453.028734 0 ] (Code/F1TVEmulator/:__span-0-190) [ 1799 0 R /XYZ 60.307257 771.023622 0 ] (Code/F1TVEmulator/:__span-0-191) [ 1799 0 R /XYZ 60.307257 744.222918 0 ] (Code/F1TVEmulator/:__span-0-192) [ 1799 0 R /XYZ 60.307257 717.422214 0 ] (Code/F1TVEmulator/:__span-0-193) [ 1799 0 R /XYZ 60.307257 704.021862 0 ] (Code/F1TVEmulator/:__span-0-194) [ 1799 0 R /XYZ 60.307257 690.621510 0 ] (Code/F1TVEmulator/:__span-0-195) [ 1799 0 R /XYZ 60.307257 677.221158 0 ] (Code/F1TVEmulator/:__span-0-196) [ 1799 0 R /XYZ 60.307257 663.820806 0 ] (Code/F1TVEmulator/:__span-0-197) [ 1799 0 R /XYZ 60.307257 650.420454 0 ] (Code/F1TVEmulator/:__span-0-198) [ 1799 0 R /XYZ 60.307257 623.619750 0 ] (Code/F1TVEmulator/:__span-0-199) [ 1799 0 R /XYZ 60.307257 610.219398 0 ] (Code/F1TVEmulator/:__span-0-2) [ 1791 0 R /XYZ 60.307257 694.235070 0 ] (Code/F1TVEmulator/:__span-0-20) [ 1791 0 R /XYZ 60.307257 439.628382 0 ] (Code/F1TVEmulator/:__span-0-200) [ 1799 0 R /XYZ 60.307257 596.819046 0 ] (Code/F1TVEmulator/:__span-0-201) [ 1799 0 R /XYZ 60.307257 583.418694 0 ] (Code/F1TVEmulator/:__span-0-202) [ 1799 0 R /XYZ 60.307257 570.018342 0 ] (Code/F1TVEmulator/:__span-0-203) [ 1799 0 R /XYZ 60.307257 543.217638 0 ] (Code/F1TVEmulator/:__span-0-204) [ 1799 0 R /XYZ 60.307257 529.817286 0 ] (Code/F1TVEmulator/:__span-0-205) [ 1799 0 R /XYZ 60.307257 516.416934 0 ] (Code/F1TVEmulator/:__span-0-206) [ 1799 0 R /XYZ 60.307257 503.016582 0 ] (Code/F1TVEmulator/:__span-0-207) [ 1799 0 R /XYZ 60.307257 489.616230 0 ] (Code/F1TVEmulator/:__span-0-208) [ 1799 0 R /XYZ 60.307257 476.215878 0 ] (Code/F1TVEmulator/:__span-0-209) [ 1799 0 R /XYZ 60.307257 462.815526 0 ] (Code/F1TVEmulator/:__span-0-21) [ 1791 0 R /XYZ 60.307257 426.228030 0 ] (Code/F1TVEmulator/:__span-0-210) [ 1799 0 R /XYZ 60.307257 449.415174 0 ] (Code/F1TVEmulator/:__span-0-211) [ 1799 0 R /XYZ 60.307257 422.614470 0 ] (Code/F1TVEmulator/:__span-0-212) [ 1799 0 R /XYZ 60.307257 409.214118 0 ] (Code/F1TVEmulator/:__span-0-213) [ 1799 0 R /XYZ 60.307257 395.813766 0 ] (Code/F1TVEmulator/:__span-0-214) [ 1799 0 R /XYZ 60.307257 382.413414 0 ] (Code/F1TVEmulator/:__span-0-215) [ 1799 0 R /XYZ 60.307257 369.013062 0 ] (Code/F1TVEmulator/:__span-0-216) [ 1799 0 R /XYZ 60.307257 355.612710 0 ] (Code/F1TVEmulator/:__span-0-217) [ 1799 0 R /XYZ 60.307257 342.212358 0 ] (Code/F1TVEmulator/:__span-0-218) [ 1799 0 R /XYZ 60.307257 328.812006 0 ] (Code/F1TVEmulator/:__span-0-219) [ 1799 0 R /XYZ 60.307257 315.411654 0 ] (Code/F1TVEmulator/:__span-0-22) [ 1791 0 R /XYZ 60.307257 412.827678 0 ] (Code/F1TVEmulator/:__span-0-220) [ 1799 0 R /XYZ 60.307257 302.011302 0 ] (Code/F1TVEmulator/:__span-0-221) [ 1799 0 R /XYZ 60.307257 288.610950 0 ] (Code/F1TVEmulator/:__span-0-222) [ 1799 0 R /XYZ 60.307257 261.810246 0 ] (Code/F1TVEmulator/:__span-0-223) [ 1799 0 R /XYZ 60.307257 248.409894 0 ] (Code/F1TVEmulator/:__span-0-224) [ 1799 0 R /XYZ 60.307257 221.609190 0 ] (Code/F1TVEmulator/:__span-0-225) [ 1799 0 R /XYZ 60.307257 208.208838 0 ] (Code/F1TVEmulator/:__span-0-226) [ 1799 0 R /XYZ 60.307257 181.408134 0 ] (Code/F1TVEmulator/:__span-0-227) [ 1799 0 R /XYZ 60.307257 168.007782 0 ] (Code/F1TVEmulator/:__span-0-228) [ 1799 0 R /XYZ 60.307257 154.607430 0 ] (Code/F1TVEmulator/:__span-0-229) [ 1799 0 R /XYZ 60.307257 141.207078 0 ] (Code/F1TVEmulator/:__span-0-23) [ 1791 0 R /XYZ 60.307257 399.427326 0 ] (Code/F1TVEmulator/:__span-0-230) [ 1799 0 R /XYZ 60.307257 127.806726 0 ] (Code/F1TVEmulator/:__span-0-231) [ 1799 0 R /XYZ 60.307257 114.406374 0 ] (Code/F1TVEmulator/:__span-0-232) [ 1799 0 R /XYZ 60.307257 87.605670 0 ] (Code/F1TVEmulator/:__span-0-233) [ 1801 0 R /XYZ 60.307257 771.023622 0 ] (Code/F1TVEmulator/:__span-0-234) [ 1801 0 R /XYZ 60.307257 757.623270 0 ] (Code/F1TVEmulator/:__span-0-235) [ 1801 0 R /XYZ 60.307257 744.222918 0 ] (Code/F1TVEmulator/:__span-0-236) [ 1801 0 R /XYZ 60.307257 730.822566 0 ] (Code/F1TVEmulator/:__span-0-237) [ 1801 0 R /XYZ 60.307257 717.422214 0 ] (Code/F1TVEmulator/:__span-0-238) [ 1801 0 R /XYZ 60.307257 704.021862 0 ] (Code/F1TVEmulator/:__span-0-239) [ 1801 0 R /XYZ 60.307257 690.621510 0 ] (Code/F1TVEmulator/:__span-0-24) [ 1791 0 R /XYZ 60.307257 386.026974 0 ] (Code/F1TVEmulator/:__span-0-240) [ 1801 0 R /XYZ 60.307257 677.221158 0 ] (Code/F1TVEmulator/:__span-0-241) [ 1801 0 R /XYZ 60.307257 663.820806 0 ] (Code/F1TVEmulator/:__span-0-242) [ 1801 0 R /XYZ 60.307257 650.420454 0 ] (Code/F1TVEmulator/:__span-0-243) [ 1801 0 R /XYZ 60.307257 637.020102 0 ] (Code/F1TVEmulator/:__span-0-244) [ 1801 0 R /XYZ 60.307257 623.619750 0 ] (Code/F1TVEmulator/:__span-0-245) [ 1801 0 R /XYZ 60.307257 610.219398 0 ] (Code/F1TVEmulator/:__span-0-246) [ 1801 0 R /XYZ 60.307257 596.819046 0 ] (Code/F1TVEmulator/:__span-0-247) [ 1801 0 R /XYZ 60.307257 583.418694 0 ] (Code/F1TVEmulator/:__span-0-248) [ 1801 0 R /XYZ 60.307257 570.018342 0 ] (Code/F1TVEmulator/:__span-0-249) [ 1801 0 R /XYZ 60.307257 556.617990 0 ] (Code/F1TVEmulator/:__span-0-25) [ 1791 0 R /XYZ 60.307257 372.626622 0 ] (Code/F1TVEmulator/:__span-0-250) [ 1801 0 R /XYZ 60.307257 543.217638 0 ] (Code/F1TVEmulator/:__span-0-251) [ 1801 0 R /XYZ 60.307257 516.416934 0 ] (Code/F1TVEmulator/:__span-0-252) [ 1801 0 R /XYZ 60.307257 503.016582 0 ] (Code/F1TVEmulator/:__span-0-253) [ 1801 0 R /XYZ 60.307257 489.616230 0 ] (Code/F1TVEmulator/:__span-0-254) [ 1801 0 R /XYZ 60.307257 476.215878 0 ] (Code/F1TVEmulator/:__span-0-255) [ 1801 0 R /XYZ 60.307257 462.815526 0 ] (Code/F1TVEmulator/:__span-0-256) [ 1801 0 R /XYZ 60.307257 449.415174 0 ] (Code/F1TVEmulator/:__span-0-257) [ 1801 0 R /XYZ 60.307257 422.614470 0 ] (Code/F1TVEmulator/:__span-0-258) [ 1801 0 R /XYZ 60.307257 409.214118 0 ] (Code/F1TVEmulator/:__span-0-259) [ 1801 0 R /XYZ 60.307257 395.813766 0 ] (Code/F1TVEmulator/:__span-0-26) [ 1791 0 R /XYZ 60.307257 359.226270 0 ] (Code/F1TVEmulator/:__span-0-260) [ 1801 0 R /XYZ 60.307257 382.413414 0 ] (Code/F1TVEmulator/:__span-0-261) [ 1801 0 R /XYZ 60.307257 369.013062 0 ] (Code/F1TVEmulator/:__span-0-262) [ 1801 0 R /XYZ 60.307257 355.612710 0 ] (Code/F1TVEmulator/:__span-0-263) [ 1801 0 R /XYZ 60.307257 342.212358 0 ] (Code/F1TVEmulator/:__span-0-264) [ 1801 0 R /XYZ 60.307257 328.812006 0 ] (Code/F1TVEmulator/:__span-0-265) [ 1801 0 R /XYZ 60.307257 315.411654 0 ] (Code/F1TVEmulator/:__span-0-266) [ 1801 0 R /XYZ 60.307257 302.011302 0 ] (Code/F1TVEmulator/:__span-0-267) [ 1801 0 R /XYZ 60.307257 288.610950 0 ] (Code/F1TVEmulator/:__span-0-268) [ 1801 0 R /XYZ 60.307257 275.210598 0 ] (Code/F1TVEmulator/:__span-0-269) [ 1801 0 R /XYZ 60.307257 261.810246 0 ] (Code/F1TVEmulator/:__span-0-27) [ 1791 0 R /XYZ 60.307257 332.425566 0 ] (Code/F1TVEmulator/:__span-0-270) [ 1801 0 R /XYZ 60.307257 248.409894 0 ] (Code/F1TVEmulator/:__span-0-271) [ 1801 0 R /XYZ 60.307257 235.009542 0 ] (Code/F1TVEmulator/:__span-0-272) [ 1801 0 R /XYZ 60.307257 221.609190 0 ] (Code/F1TVEmulator/:__span-0-273) [ 1801 0 R /XYZ 60.307257 208.208838 0 ] (Code/F1TVEmulator/:__span-0-274) [ 1801 0 R /XYZ 60.307257 194.808486 0 ] (Code/F1TVEmulator/:__span-0-275) [ 1801 0 R /XYZ 60.307257 181.408134 0 ] (Code/F1TVEmulator/:__span-0-276) [ 1801 0 R /XYZ 60.307257 168.007782 0 ] (Code/F1TVEmulator/:__span-0-277) [ 1801 0 R /XYZ 60.307257 154.607430 0 ] (Code/F1TVEmulator/:__span-0-278) [ 1801 0 R /XYZ 60.307257 141.207078 0 ] (Code/F1TVEmulator/:__span-0-279) [ 1801 0 R /XYZ 60.307257 127.806726 0 ] (Code/F1TVEmulator/:__span-0-28) [ 1791 0 R /XYZ 60.307257 305.624862 0 ] (Code/F1TVEmulator/:__span-0-280) [ 1801 0 R /XYZ 60.307257 114.406374 0 ] (Code/F1TVEmulator/:__span-0-281) [ 1801 0 R /XYZ 60.307257 101.006022 0 ] (Code/F1TVEmulator/:__span-0-282) [ 1801 0 R /XYZ 60.307257 87.605670 0 ] (Code/F1TVEmulator/:__span-0-283) [ 1803 0 R /XYZ 60.307257 771.023622 0 ] (Code/F1TVEmulator/:__span-0-284) [ 1803 0 R /XYZ 60.307257 744.222918 0 ] (Code/F1TVEmulator/:__span-0-285) [ 1803 0 R /XYZ 60.307257 730.822566 0 ] (Code/F1TVEmulator/:__span-0-286) [ 1803 0 R /XYZ 60.307257 717.422214 0 ] (Code/F1TVEmulator/:__span-0-287) [ 1803 0 R /XYZ 60.307257 704.021862 0 ] (Code/F1TVEmulator/:__span-0-288) [ 1803 0 R /XYZ 60.307257 690.621510 0 ] (Code/F1TVEmulator/:__span-0-289) [ 1803 0 R /XYZ 60.307257 677.221158 0 ] (Code/F1TVEmulator/:__span-0-29) [ 1791 0 R /XYZ 60.307257 278.824158 0 ] (Code/F1TVEmulator/:__span-0-290) [ 1803 0 R /XYZ 60.307257 663.820806 0 ] (Code/F1TVEmulator/:__span-0-291) [ 1803 0 R /XYZ 60.307257 650.420454 0 ] (Code/F1TVEmulator/:__span-0-292) [ 1803 0 R /XYZ 60.307257 623.619750 0 ] (Code/F1TVEmulator/:__span-0-293) [ 1803 0 R /XYZ 60.307257 610.219398 0 ] (Code/F1TVEmulator/:__span-0-294) [ 1803 0 R /XYZ 60.307257 596.819046 0 ] (Code/F1TVEmulator/:__span-0-295) [ 1803 0 R /XYZ 60.307257 583.418694 0 ] (Code/F1TVEmulator/:__span-0-296) [ 1803 0 R /XYZ 60.307257 570.018342 0 ] (Code/F1TVEmulator/:__span-0-297) [ 1803 0 R /XYZ 60.307257 543.217638 0 ] (Code/F1TVEmulator/:__span-0-298) [ 1803 0 R /XYZ 60.307257 529.817286 0 ] (Code/F1TVEmulator/:__span-0-299) [ 1803 0 R /XYZ 60.307257 516.416934 0 ] (Code/F1TVEmulator/:__span-0-3) [ 1791 0 R /XYZ 60.307257 680.834718 0 ] (Code/F1TVEmulator/:__span-0-30) [ 1791 0 R /XYZ 60.307257 265.423806 0 ] (Code/F1TVEmulator/:__span-0-300) [ 1803 0 R /XYZ 60.307257 503.016582 0 ] (Code/F1TVEmulator/:__span-0-301) [ 1803 0 R /XYZ 60.307257 489.616230 0 ] (Code/F1TVEmulator/:__span-0-302) [ 1803 0 R /XYZ 60.307257 476.215878 0 ] (Code/F1TVEmulator/:__span-0-303) [ 1803 0 R /XYZ 60.307257 462.815526 0 ] (Code/F1TVEmulator/:__span-0-304) [ 1803 0 R /XYZ 60.307257 449.415174 0 ] (Code/F1TVEmulator/:__span-0-305) [ 1803 0 R /XYZ 60.307257 436.014822 0 ] (Code/F1TVEmulator/:__span-0-306) [ 1803 0 R /XYZ 60.307257 422.614470 0 ] (Code/F1TVEmulator/:__span-0-307) [ 1803 0 R /XYZ 60.307257 409.214118 0 ] (Code/F1TVEmulator/:__span-0-308) [ 1803 0 R /XYZ 60.307257 395.813766 0 ] (Code/F1TVEmulator/:__span-0-309) [ 1803 0 R /XYZ 60.307257 382.413414 0 ] (Code/F1TVEmulator/:__span-0-31) [ 1791 0 R /XYZ 60.307257 252.023454 0 ] (Code/F1TVEmulator/:__span-0-310) [ 1803 0 R /XYZ 60.307257 369.013062 0 ] (Code/F1TVEmulator/:__span-0-311) [ 1803 0 R /XYZ 60.307257 342.212358 0 ] (Code/F1TVEmulator/:__span-0-312) [ 1803 0 R /XYZ 60.307257 328.812006 0 ] (Code/F1TVEmulator/:__span-0-313) [ 1803 0 R /XYZ 60.307257 315.411654 0 ] (Code/F1TVEmulator/:__span-0-314) [ 1803 0 R /XYZ 60.307257 302.011302 0 ] (Code/F1TVEmulator/:__span-0-315) [ 1803 0 R /XYZ 60.307257 288.610950 0 ] (Code/F1TVEmulator/:__span-0-316) [ 1803 0 R /XYZ 60.307257 275.210598 0 ] (Code/F1TVEmulator/:__span-0-317) [ 1803 0 R /XYZ 60.307257 261.810246 0 ] (Code/F1TVEmulator/:__span-0-318) [ 1803 0 R /XYZ 60.307257 248.409894 0 ] (Code/F1TVEmulator/:__span-0-319) [ 1803 0 R /XYZ 60.307257 235.009542 0 ] (Code/F1TVEmulator/:__span-0-32) [ 1791 0 R /XYZ 60.307257 238.623102 0 ] (Code/F1TVEmulator/:__span-0-320) [ 1803 0 R /XYZ 60.307257 221.609190 0 ] (Code/F1TVEmulator/:__span-0-321) [ 1803 0 R /XYZ 60.307257 208.208838 0 ] (Code/F1TVEmulator/:__span-0-322) [ 1803 0 R /XYZ 60.307257 194.808486 0 ] (Code/F1TVEmulator/:__span-0-323) [ 1803 0 R /XYZ 60.307257 181.408134 0 ] (Code/F1TVEmulator/:__span-0-324) [ 1803 0 R /XYZ 60.307257 168.007782 0 ] (Code/F1TVEmulator/:__span-0-325) [ 1803 0 R /XYZ 60.307257 154.607430 0 ] (Code/F1TVEmulator/:__span-0-326) [ 1803 0 R /XYZ 60.307257 141.207078 0 ] (Code/F1TVEmulator/:__span-0-327) [ 1803 0 R /XYZ 60.307257 127.806726 0 ] (Code/F1TVEmulator/:__span-0-328) [ 1803 0 R /XYZ 60.307257 114.406374 0 ] (Code/F1TVEmulator/:__span-0-329) [ 1803 0 R /XYZ 60.307257 101.006022 0 ] (Code/F1TVEmulator/:__span-0-33) [ 1791 0 R /XYZ 60.307257 225.222750 0 ] (Code/F1TVEmulator/:__span-0-34) [ 1791 0 R /XYZ 60.307257 211.822398 0 ] (Code/F1TVEmulator/:__span-0-35) [ 1791 0 R /XYZ 60.307257 198.422046 0 ] (Code/F1TVEmulator/:__span-0-36) [ 1791 0 R /XYZ 60.307257 171.621342 0 ] (Code/F1TVEmulator/:__span-0-37) [ 1791 0 R /XYZ 60.307257 158.220990 0 ] (Code/F1TVEmulator/:__span-0-38) [ 1791 0 R /XYZ 60.307257 144.820638 0 ] (Code/F1TVEmulator/:__span-0-39) [ 1791 0 R /XYZ 60.307257 131.420286 0 ] (Code/F1TVEmulator/:__span-0-4) [ 1791 0 R /XYZ 60.307257 667.434366 0 ] (Code/F1TVEmulator/:__span-0-40) [ 1791 0 R /XYZ 60.307257 118.019934 0 ] (Code/F1TVEmulator/:__span-0-41) [ 1791 0 R /XYZ 60.307257 104.619582 0 ] (Code/F1TVEmulator/:__span-0-42) [ 1791 0 R /XYZ 60.307257 91.219230 0 ] (Code/F1TVEmulator/:__span-0-43) [ 1793 0 R /XYZ 60.307257 771.023622 0 ] (Code/F1TVEmulator/:__span-0-44) [ 1793 0 R /XYZ 60.307257 757.623270 0 ] (Code/F1TVEmulator/:__span-0-45) [ 1793 0 R /XYZ 60.307257 744.222918 0 ] (Code/F1TVEmulator/:__span-0-46) [ 1793 0 R /XYZ 60.307257 730.822566 0 ] (Code/F1TVEmulator/:__span-0-47) [ 1793 0 R /XYZ 60.307257 717.422214 0 ] (Code/F1TVEmulator/:__span-0-48) [ 1793 0 R /XYZ 60.307257 704.021862 0 ] (Code/F1TVEmulator/:__span-0-49) [ 1793 0 R /XYZ 60.307257 690.621510 0 ] (Code/F1TVEmulator/:__span-0-5) [ 1791 0 R /XYZ 60.307257 640.633662 0 ] (Code/F1TVEmulator/:__span-0-50) [ 1793 0 R /XYZ 60.307257 677.221158 0 ] (Code/F1TVEmulator/:__span-0-51) [ 1793 0 R /XYZ 60.307257 663.820806 0 ] (Code/F1TVEmulator/:__span-0-52) [ 1793 0 R /XYZ 60.307257 650.420454 0 ] (Code/F1TVEmulator/:__span-0-53) [ 1793 0 R /XYZ 60.307257 637.020102 0 ] (Code/F1TVEmulator/:__span-0-54) [ 1793 0 R /XYZ 60.307257 623.619750 0 ] (Code/F1TVEmulator/:__span-0-55) [ 1793 0 R /XYZ 60.307257 610.219398 0 ] (Code/F1TVEmulator/:__span-0-56) [ 1793 0 R /XYZ 60.307257 596.819046 0 ] (Code/F1TVEmulator/:__span-0-57) [ 1793 0 R /XYZ 60.307257 583.418694 0 ] (Code/F1TVEmulator/:__span-0-58) [ 1793 0 R /XYZ 60.307257 570.018342 0 ] (Code/F1TVEmulator/:__span-0-59) [ 1793 0 R /XYZ 60.307257 556.617990 0 ] (Code/F1TVEmulator/:__span-0-6) [ 1791 0 R /XYZ 60.307257 627.233310 0 ] (Code/F1TVEmulator/:__span-0-60) [ 1793 0 R /XYZ 60.307257 543.217638 0 ] (Code/F1TVEmulator/:__span-0-61) [ 1793 0 R /XYZ 60.307257 516.416934 0 ] (Code/F1TVEmulator/:__span-0-62) [ 1793 0 R /XYZ 60.307257 503.016582 0 ] (Code/F1TVEmulator/:__span-0-63) [ 1793 0 R /XYZ 60.307257 489.616230 0 ] (Code/F1TVEmulator/:__span-0-64) [ 1793 0 R /XYZ 60.307257 476.215878 0 ] (Code/F1TVEmulator/:__span-0-65) [ 1793 0 R /XYZ 60.307257 462.815526 0 ] (Code/F1TVEmulator/:__span-0-66) [ 1793 0 R /XYZ 60.307257 449.415174 0 ] (Code/F1TVEmulator/:__span-0-67) [ 1793 0 R /XYZ 60.307257 436.014822 0 ] (Code/F1TVEmulator/:__span-0-68) [ 1793 0 R /XYZ 60.307257 422.614470 0 ] (Code/F1TVEmulator/:__span-0-69) [ 1793 0 R /XYZ 60.307257 409.214118 0 ] (Code/F1TVEmulator/:__span-0-7) [ 1791 0 R /XYZ 60.307257 613.832958 0 ] (Code/F1TVEmulator/:__span-0-70) [ 1793 0 R /XYZ 60.307257 395.813766 0 ] (Code/F1TVEmulator/:__span-0-71) [ 1793 0 R /XYZ 60.307257 382.413414 0 ] (Code/F1TVEmulator/:__span-0-72) [ 1793 0 R /XYZ 60.307257 369.013062 0 ] (Code/F1TVEmulator/:__span-0-73) [ 1793 0 R /XYZ 60.307257 355.612710 0 ] (Code/F1TVEmulator/:__span-0-74) [ 1793 0 R /XYZ 60.307257 342.212358 0 ] (Code/F1TVEmulator/:__span-0-75) [ 1793 0 R /XYZ 60.307257 328.812006 0 ] (Code/F1TVEmulator/:__span-0-76) [ 1793 0 R /XYZ 60.307257 302.011302 0 ] (Code/F1TVEmulator/:__span-0-77) [ 1793 0 R /XYZ 60.307257 288.610950 0 ] (Code/F1TVEmulator/:__span-0-78) [ 1793 0 R /XYZ 60.307257 275.210598 0 ] (Code/F1TVEmulator/:__span-0-79) [ 1793 0 R /XYZ 60.307257 261.810246 0 ] (Code/F1TVEmulator/:__span-0-8) [ 1791 0 R /XYZ 60.307257 600.432606 0 ] (Code/F1TVEmulator/:__span-0-80) [ 1793 0 R /XYZ 60.307257 248.409894 0 ] (Code/F1TVEmulator/:__span-0-81) [ 1793 0 R /XYZ 60.307257 235.009542 0 ] (Code/F1TVEmulator/:__span-0-82) [ 1793 0 R /XYZ 60.307257 208.208838 0 ] (Code/F1TVEmulator/:__span-0-83) [ 1793 0 R /XYZ 60.307257 194.808486 0 ] (Code/F1TVEmulator/:__span-0-84) [ 1793 0 R /XYZ 60.307257 181.408134 0 ] (Code/F1TVEmulator/:__span-0-85) [ 1793 0 R /XYZ 60.307257 168.007782 0 ] (Code/F1TVEmulator/:__span-0-86) [ 1793 0 R /XYZ 60.307257 154.607430 0 ] (Code/F1TVEmulator/:__span-0-87) [ 1793 0 R /XYZ 60.307257 141.207078 0 ] (Code/F1TVEmulator/:__span-0-88) [ 1793 0 R /XYZ 60.307257 127.806726 0 ] (Code/F1TVEmulator/:__span-0-89) [ 1793 0 R /XYZ 60.307257 114.406374 0 ] (Code/F1TVEmulator/:__span-0-9) [ 1791 0 R /XYZ 60.307257 587.032254 0 ] (Code/F1TVEmulator/:__span-0-90) [ 1793 0 R /XYZ 60.307257 101.006022 0 ] (Code/F1TVEmulator/:__span-0-91) [ 1793 0 R /XYZ 60.307257 87.605670 0 ] (Code/F1TVEmulator/:__span-0-92) [ 1795 0 R /XYZ 60.307257 771.023622 0 ] (Code/F1TVEmulator/:__span-0-93) [ 1795 0 R /XYZ 60.307257 757.623270 0 ] (Code/F1TVEmulator/:__span-0-94) [ 1795 0 R /XYZ 60.307257 744.222918 0 ] (Code/F1TVEmulator/:__span-0-95) [ 1795 0 R /XYZ 60.307257 730.822566 0 ] (Code/F1TVEmulator/:__span-0-96) [ 1795 0 R /XYZ 60.307257 717.422214 0 ] (Code/F1TVEmulator/:__span-0-97) [ 1795 0 R /XYZ 60.307257 704.021862 0 ] (Code/F1TVEmulator/:__span-0-98) [ 1795 0 R /XYZ 60.307257 690.621510 0 ] (Code/F1TVEmulator/:__span-0-99) [ 1795 0 R /XYZ 60.307257 677.221158 0 ] (Code/F1TVEmulator/:f1tvemulatorcs) [ 1791 0 R /XYZ 39.386457 747.563622 0 ] (Code/Form1/:) [ 1805 0 R /XYZ 39.386457 747.563622 0 ] (Code/Form1/:__span-0-1) [ 1805 0 R /XYZ 60.307257 707.635422 0 ] (Code/Form1/:__span-0-10) [ 1805 0 R /XYZ 60.307257 587.032254 0 ] (Code/Form1/:__span-0-100) [ 1809 0 R /XYZ 60.307257 690.621510 0 ] (Code/Form1/:__span-0-101) [ 1809 0 R /XYZ 60.307257 677.221158 0 ] (Code/Form1/:__span-0-102) [ 1809 0 R /XYZ 60.307257 663.820806 0 ] (Code/Form1/:__span-0-103) [ 1809 0 R /XYZ 60.307257 650.420454 0 ] (Code/Form1/:__span-0-104) [ 1809 0 R /XYZ 60.307257 623.619750 0 ] (Code/Form1/:__span-0-105) [ 1809 0 R /XYZ 60.307257 610.219398 0 ] (Code/Form1/:__span-0-106) [ 1809 0 R /XYZ 60.307257 583.418694 0 ] (Code/Form1/:__span-0-107) [ 1809 0 R /XYZ 60.307257 570.018342 0 ] (Code/Form1/:__span-0-108) [ 1809 0 R /XYZ 60.307257 556.617990 0 ] (Code/Form1/:__span-0-109) [ 1809 0 R /XYZ 60.307257 543.217638 0 ] (Code/Form1/:__span-0-11) [ 1805 0 R /XYZ 60.307257 573.631902 0 ] (Code/Form1/:__span-0-110) [ 1809 0 R /XYZ 60.307257 529.817286 0 ] (Code/Form1/:__span-0-111) [ 1809 0 R /XYZ 60.307257 516.416934 0 ] (Code/Form1/:__span-0-112) [ 1809 0 R /XYZ 60.307257 503.016582 0 ] (Code/Form1/:__span-0-113) [ 1809 0 R /XYZ 60.307257 489.616230 0 ] (Code/Form1/:__span-0-114) [ 1809 0 R /XYZ 60.307257 476.215878 0 ] (Code/Form1/:__span-0-115) [ 1809 0 R /XYZ 60.307257 462.815526 0 ] (Code/Form1/:__span-0-116) [ 1809 0 R /XYZ 60.307257 449.415174 0 ] (Code/Form1/:__span-0-117) [ 1809 0 R /XYZ 60.307257 436.014822 0 ] (Code/Form1/:__span-0-118) [ 1809 0 R /XYZ 60.307257 422.614470 0 ] (Code/Form1/:__span-0-119) [ 1809 0 R /XYZ 60.307257 409.214118 0 ] (Code/Form1/:__span-0-12) [ 1805 0 R /XYZ 60.307257 560.231550 0 ] (Code/Form1/:__span-0-120) [ 1809 0 R /XYZ 60.307257 395.813766 0 ] (Code/Form1/:__span-0-121) [ 1809 0 R /XYZ 60.307257 382.413414 0 ] (Code/Form1/:__span-0-122) [ 1809 0 R /XYZ 60.307257 369.013062 0 ] (Code/Form1/:__span-0-123) [ 1809 0 R /XYZ 60.307257 355.612710 0 ] (Code/Form1/:__span-0-124) [ 1809 0 R /XYZ 60.307257 342.212358 0 ] (Code/Form1/:__span-0-125) [ 1809 0 R /XYZ 60.307257 328.812006 0 ] (Code/Form1/:__span-0-126) [ 1809 0 R /XYZ 60.307257 315.411654 0 ] (Code/Form1/:__span-0-127) [ 1809 0 R /XYZ 60.307257 288.610950 0 ] (Code/Form1/:__span-0-128) [ 1809 0 R /XYZ 60.307257 275.210598 0 ] (Code/Form1/:__span-0-129) [ 1809 0 R /XYZ 60.307257 248.409894 0 ] (Code/Form1/:__span-0-13) [ 1805 0 R /XYZ 60.307257 546.831198 0 ] (Code/Form1/:__span-0-130) [ 1809 0 R /XYZ 60.307257 221.609190 0 ] (Code/Form1/:__span-0-131) [ 1809 0 R /XYZ 60.307257 194.808486 0 ] (Code/Form1/:__span-0-132) [ 1809 0 R /XYZ 60.307257 168.007782 0 ] (Code/Form1/:__span-0-133) [ 1809 0 R /XYZ 60.307257 141.207078 0 ] (Code/Form1/:__span-0-134) [ 1809 0 R /XYZ 60.307257 101.006022 0 ] (Code/Form1/:__span-0-135) [ 1809 0 R /XYZ 60.307257 87.605670 0 ] (Code/Form1/:__span-0-136) [ 1811 0 R /XYZ 60.307257 771.023622 0 ] (Code/Form1/:__span-0-137) [ 1811 0 R /XYZ 60.307257 757.623270 0 ] (Code/Form1/:__span-0-138) [ 1811 0 R /XYZ 60.307257 744.222918 0 ] (Code/Form1/:__span-0-139) [ 1811 0 R /XYZ 60.307257 730.822566 0 ] (Code/Form1/:__span-0-14) [ 1805 0 R /XYZ 60.307257 533.430846 0 ] (Code/Form1/:__span-0-140) [ 1811 0 R /XYZ 60.307257 717.422214 0 ] (Code/Form1/:__span-0-141) [ 1811 0 R /XYZ 60.307257 704.021862 0 ] (Code/Form1/:__span-0-142) [ 1811 0 R /XYZ 60.307257 690.621510 0 ] (Code/Form1/:__span-0-143) [ 1811 0 R /XYZ 60.307257 677.221158 0 ] (Code/Form1/:__span-0-144) [ 1811 0 R /XYZ 60.307257 663.820806 0 ] (Code/Form1/:__span-0-145) [ 1811 0 R /XYZ 60.307257 650.420454 0 ] (Code/Form1/:__span-0-146) [ 1811 0 R /XYZ 60.307257 637.020102 0 ] (Code/Form1/:__span-0-147) [ 1811 0 R /XYZ 60.307257 623.619750 0 ] (Code/Form1/:__span-0-148) [ 1811 0 R /XYZ 60.307257 610.219398 0 ] (Code/Form1/:__span-0-149) [ 1811 0 R /XYZ 60.307257 596.819046 0 ] (Code/Form1/:__span-0-15) [ 1805 0 R /XYZ 60.307257 520.030494 0 ] (Code/Form1/:__span-0-150) [ 1811 0 R /XYZ 60.307257 583.418694 0 ] (Code/Form1/:__span-0-151) [ 1811 0 R /XYZ 60.307257 570.018342 0 ] (Code/Form1/:__span-0-152) [ 1811 0 R /XYZ 60.307257 556.617990 0 ] (Code/Form1/:__span-0-153) [ 1811 0 R /XYZ 60.307257 543.217638 0 ] (Code/Form1/:__span-0-154) [ 1811 0 R /XYZ 60.307257 529.817286 0 ] (Code/Form1/:__span-0-155) [ 1811 0 R /XYZ 60.307257 516.416934 0 ] (Code/Form1/:__span-0-156) [ 1811 0 R /XYZ 60.307257 503.016582 0 ] (Code/Form1/:__span-0-157) [ 1811 0 R /XYZ 60.307257 489.616230 0 ] (Code/Form1/:__span-0-158) [ 1811 0 R /XYZ 60.307257 476.215878 0 ] (Code/Form1/:__span-0-159) [ 1811 0 R /XYZ 60.307257 462.815526 0 ] (Code/Form1/:__span-0-16) [ 1805 0 R /XYZ 60.307257 506.630142 0 ] (Code/Form1/:__span-0-160) [ 1811 0 R /XYZ 60.307257 449.415174 0 ] (Code/Form1/:__span-0-161) [ 1811 0 R /XYZ 60.307257 436.014822 0 ] (Code/Form1/:__span-0-162) [ 1811 0 R /XYZ 60.307257 422.614470 0 ] (Code/Form1/:__span-0-163) [ 1811 0 R /XYZ 60.307257 409.214118 0 ] (Code/Form1/:__span-0-164) [ 1811 0 R /XYZ 60.307257 395.813766 0 ] (Code/Form1/:__span-0-165) [ 1811 0 R /XYZ 60.307257 382.413414 0 ] (Code/Form1/:__span-0-166) [ 1811 0 R /XYZ 60.307257 369.013062 0 ] (Code/Form1/:__span-0-167) [ 1811 0 R /XYZ 60.307257 355.612710 0 ] (Code/Form1/:__span-0-168) [ 1811 0 R /XYZ 60.307257 342.212358 0 ] (Code/Form1/:__span-0-169) [ 1811 0 R /XYZ 60.307257 328.812006 0 ] (Code/Form1/:__span-0-17) [ 1805 0 R /XYZ 60.307257 493.229790 0 ] (Code/Form1/:__span-0-170) [ 1811 0 R /XYZ 60.307257 315.411654 0 ] (Code/Form1/:__span-0-171) [ 1811 0 R /XYZ 60.307257 302.011302 0 ] (Code/Form1/:__span-0-172) [ 1811 0 R /XYZ 60.307257 288.610950 0 ] (Code/Form1/:__span-0-173) [ 1811 0 R /XYZ 60.307257 275.210598 0 ] (Code/Form1/:__span-0-174) [ 1811 0 R /XYZ 60.307257 261.810246 0 ] (Code/Form1/:__span-0-175) [ 1811 0 R /XYZ 60.307257 248.409894 0 ] (Code/Form1/:__span-0-176) [ 1811 0 R /XYZ 60.307257 235.009542 0 ] (Code/Form1/:__span-0-177) [ 1811 0 R /XYZ 60.307257 221.609190 0 ] (Code/Form1/:__span-0-178) [ 1811 0 R /XYZ 60.307257 208.208838 0 ] (Code/Form1/:__span-0-179) [ 1811 0 R /XYZ 60.307257 194.808486 0 ] (Code/Form1/:__span-0-18) [ 1805 0 R /XYZ 60.307257 479.829438 0 ] (Code/Form1/:__span-0-180) [ 1811 0 R /XYZ 60.307257 181.408134 0 ] (Code/Form1/:__span-0-181) [ 1811 0 R /XYZ 60.307257 168.007782 0 ] (Code/Form1/:__span-0-182) [ 1811 0 R /XYZ 60.307257 154.607430 0 ] (Code/Form1/:__span-0-183) [ 1811 0 R /XYZ 60.307257 141.207078 0 ] (Code/Form1/:__span-0-184) [ 1811 0 R /XYZ 60.307257 127.806726 0 ] (Code/Form1/:__span-0-185) [ 1811 0 R /XYZ 60.307257 114.406374 0 ] (Code/Form1/:__span-0-186) [ 1811 0 R /XYZ 60.307257 101.006022 0 ] (Code/Form1/:__span-0-187) [ 1811 0 R /XYZ 60.307257 87.605670 0 ] (Code/Form1/:__span-0-188) [ 1813 0 R /XYZ 60.307257 771.023622 0 ] (Code/Form1/:__span-0-189) [ 1813 0 R /XYZ 60.307257 757.623270 0 ] (Code/Form1/:__span-0-19) [ 1805 0 R /XYZ 60.307257 466.429086 0 ] (Code/Form1/:__span-0-190) [ 1813 0 R /XYZ 60.307257 744.222918 0 ] (Code/Form1/:__span-0-191) [ 1813 0 R /XYZ 60.307257 730.822566 0 ] (Code/Form1/:__span-0-192) [ 1813 0 R /XYZ 60.307257 717.422214 0 ] (Code/Form1/:__span-0-193) [ 1813 0 R /XYZ 60.307257 704.021862 0 ] (Code/Form1/:__span-0-194) [ 1813 0 R /XYZ 60.307257 690.621510 0 ] (Code/Form1/:__span-0-195) [ 1813 0 R /XYZ 60.307257 677.221158 0 ] (Code/Form1/:__span-0-196) [ 1813 0 R /XYZ 60.307257 663.820806 0 ] (Code/Form1/:__span-0-197) [ 1813 0 R /XYZ 60.307257 650.420454 0 ] (Code/Form1/:__span-0-198) [ 1813 0 R /XYZ 60.307257 637.020102 0 ] (Code/Form1/:__span-0-199) [ 1813 0 R /XYZ 60.307257 623.619750 0 ] (Code/Form1/:__span-0-2) [ 1805 0 R /XYZ 60.307257 694.235070 0 ] (Code/Form1/:__span-0-20) [ 1805 0 R /XYZ 60.307257 453.028734 0 ] (Code/Form1/:__span-0-200) [ 1813 0 R /XYZ 60.307257 610.219398 0 ] (Code/Form1/:__span-0-201) [ 1813 0 R /XYZ 60.307257 596.819046 0 ] (Code/Form1/:__span-0-202) [ 1813 0 R /XYZ 60.307257 583.418694 0 ] (Code/Form1/:__span-0-203) [ 1813 0 R /XYZ 60.307257 570.018342 0 ] (Code/Form1/:__span-0-204) [ 1813 0 R /XYZ 60.307257 556.617990 0 ] (Code/Form1/:__span-0-205) [ 1813 0 R /XYZ 60.307257 543.217638 0 ] (Code/Form1/:__span-0-206) [ 1813 0 R /XYZ 60.307257 529.817286 0 ] (Code/Form1/:__span-0-207) [ 1813 0 R /XYZ 60.307257 516.416934 0 ] (Code/Form1/:__span-0-208) [ 1813 0 R /XYZ 60.307257 503.016582 0 ] (Code/Form1/:__span-0-209) [ 1813 0 R /XYZ 60.307257 489.616230 0 ] (Code/Form1/:__span-0-21) [ 1805 0 R /XYZ 60.307257 439.628382 0 ] (Code/Form1/:__span-0-210) [ 1813 0 R /XYZ 60.307257 476.215878 0 ] (Code/Form1/:__span-0-211) [ 1813 0 R /XYZ 60.307257 462.815526 0 ] (Code/Form1/:__span-0-212) [ 1813 0 R /XYZ 60.307257 449.415174 0 ] (Code/Form1/:__span-0-213) [ 1813 0 R /XYZ 60.307257 436.014822 0 ] (Code/Form1/:__span-0-214) [ 1813 0 R /XYZ 60.307257 422.614470 0 ] (Code/Form1/:__span-0-215) [ 1813 0 R /XYZ 60.307257 409.214118 0 ] (Code/Form1/:__span-0-216) [ 1813 0 R /XYZ 60.307257 395.813766 0 ] (Code/Form1/:__span-0-217) [ 1813 0 R /XYZ 60.307257 382.413414 0 ] (Code/Form1/:__span-0-218) [ 1813 0 R /XYZ 60.307257 369.013062 0 ] (Code/Form1/:__span-0-219) [ 1813 0 R /XYZ 60.307257 355.612710 0 ] (Code/Form1/:__span-0-22) [ 1805 0 R /XYZ 60.307257 426.228030 0 ] (Code/Form1/:__span-0-220) [ 1813 0 R /XYZ 60.307257 315.411654 0 ] (Code/Form1/:__span-0-221) [ 1813 0 R /XYZ 60.307257 302.011302 0 ] (Code/Form1/:__span-0-222) [ 1813 0 R /XYZ 60.307257 288.610950 0 ] (Code/Form1/:__span-0-223) [ 1813 0 R /XYZ 60.307257 275.210598 0 ] (Code/Form1/:__span-0-224) [ 1813 0 R /XYZ 60.307257 261.810246 0 ] (Code/Form1/:__span-0-225) [ 1813 0 R /XYZ 60.307257 248.409894 0 ] (Code/Form1/:__span-0-226) [ 1813 0 R /XYZ 60.307257 235.009542 0 ] (Code/Form1/:__span-0-227) [ 1813 0 R /XYZ 60.307257 221.609190 0 ] (Code/Form1/:__span-0-228) [ 1813 0 R /XYZ 60.307257 208.208838 0 ] (Code/Form1/:__span-0-229) [ 1813 0 R /XYZ 60.307257 194.808486 0 ] (Code/Form1/:__span-0-23) [ 1805 0 R /XYZ 60.307257 412.827678 0 ] (Code/Form1/:__span-0-230) [ 1813 0 R /XYZ 60.307257 181.408134 0 ] (Code/Form1/:__span-0-231) [ 1813 0 R /XYZ 60.307257 168.007782 0 ] (Code/Form1/:__span-0-232) [ 1813 0 R /XYZ 60.307257 154.607430 0 ] (Code/Form1/:__span-0-233) [ 1813 0 R /XYZ 60.307257 141.207078 0 ] (Code/Form1/:__span-0-234) [ 1813 0 R /XYZ 60.307257 127.806726 0 ] (Code/Form1/:__span-0-235) [ 1813 0 R /XYZ 60.307257 114.406374 0 ] (Code/Form1/:__span-0-236) [ 1813 0 R /XYZ 60.307257 101.006022 0 ] (Code/Form1/:__span-0-237) [ 1813 0 R /XYZ 60.307257 87.605670 0 ] (Code/Form1/:__span-0-238) [ 1815 0 R /XYZ 60.307257 771.023622 0 ] (Code/Form1/:__span-0-239) [ 1815 0 R /XYZ 60.307257 757.623270 0 ] (Code/Form1/:__span-0-24) [ 1805 0 R /XYZ 60.307257 399.427326 0 ] (Code/Form1/:__span-0-240) [ 1815 0 R /XYZ 60.307257 744.222918 0 ] (Code/Form1/:__span-0-241) [ 1815 0 R /XYZ 60.307257 730.822566 0 ] (Code/Form1/:__span-0-242) [ 1815 0 R /XYZ 60.307257 717.422214 0 ] (Code/Form1/:__span-0-243) [ 1815 0 R /XYZ 60.307257 704.021862 0 ] (Code/Form1/:__span-0-244) [ 1815 0 R /XYZ 60.307257 690.621510 0 ] (Code/Form1/:__span-0-245) [ 1815 0 R /XYZ 60.307257 677.221158 0 ] (Code/Form1/:__span-0-246) [ 1815 0 R /XYZ 60.307257 663.820806 0 ] (Code/Form1/:__span-0-247) [ 1815 0 R /XYZ 60.307257 650.420454 0 ] (Code/Form1/:__span-0-248) [ 1815 0 R /XYZ 60.307257 637.020102 0 ] (Code/Form1/:__span-0-249) [ 1815 0 R /XYZ 60.307257 623.619750 0 ] (Code/Form1/:__span-0-25) [ 1805 0 R /XYZ 60.307257 386.026974 0 ] (Code/Form1/:__span-0-250) [ 1815 0 R /XYZ 60.307257 610.219398 0 ] (Code/Form1/:__span-0-251) [ 1815 0 R /XYZ 60.307257 596.819046 0 ] (Code/Form1/:__span-0-252) [ 1815 0 R /XYZ 60.307257 583.418694 0 ] (Code/Form1/:__span-0-253) [ 1815 0 R /XYZ 60.307257 570.018342 0 ] (Code/Form1/:__span-0-254) [ 1815 0 R /XYZ 60.307257 556.617990 0 ] (Code/Form1/:__span-0-255) [ 1815 0 R /XYZ 60.307257 543.217638 0 ] (Code/Form1/:__span-0-256) [ 1815 0 R /XYZ 60.307257 529.817286 0 ] (Code/Form1/:__span-0-257) [ 1815 0 R /XYZ 60.307257 516.416934 0 ] (Code/Form1/:__span-0-258) [ 1815 0 R /XYZ 60.307257 503.016582 0 ] (Code/Form1/:__span-0-259) [ 1815 0 R /XYZ 60.307257 489.616230 0 ] (Code/Form1/:__span-0-26) [ 1805 0 R /XYZ 60.307257 372.626622 0 ] (Code/Form1/:__span-0-260) [ 1815 0 R /XYZ 60.307257 476.215878 0 ] (Code/Form1/:__span-0-261) [ 1815 0 R /XYZ 60.307257 462.815526 0 ] (Code/Form1/:__span-0-262) [ 1815 0 R /XYZ 60.307257 449.415174 0 ] (Code/Form1/:__span-0-263) [ 1815 0 R /XYZ 60.307257 436.014822 0 ] (Code/Form1/:__span-0-264) [ 1815 0 R /XYZ 60.307257 422.614470 0 ] (Code/Form1/:__span-0-265) [ 1815 0 R /XYZ 60.307257 409.214118 0 ] (Code/Form1/:__span-0-266) [ 1815 0 R /XYZ 60.307257 369.013062 0 ] (Code/Form1/:__span-0-267) [ 1815 0 R /XYZ 60.307257 355.612710 0 ] (Code/Form1/:__span-0-268) [ 1815 0 R /XYZ 60.307257 342.212358 0 ] (Code/Form1/:__span-0-269) [ 1815 0 R /XYZ 60.307257 302.011302 0 ] (Code/Form1/:__span-0-27) [ 1805 0 R /XYZ 60.307257 359.226270 0 ] (Code/Form1/:__span-0-270) [ 1815 0 R /XYZ 60.307257 288.610950 0 ] (Code/Form1/:__span-0-271) [ 1815 0 R /XYZ 60.307257 275.210598 0 ] (Code/Form1/:__span-0-272) [ 1815 0 R /XYZ 60.307257 235.009542 0 ] (Code/Form1/:__span-0-273) [ 1815 0 R /XYZ 60.307257 221.609190 0 ] (Code/Form1/:__span-0-274) [ 1815 0 R /XYZ 60.307257 208.208838 0 ] (Code/Form1/:__span-0-275) [ 1815 0 R /XYZ 60.307257 181.408134 0 ] (Code/Form1/:__span-0-276) [ 1815 0 R /XYZ 60.307257 168.007782 0 ] (Code/Form1/:__span-0-277) [ 1815 0 R /XYZ 60.307257 154.607430 0 ] (Code/Form1/:__span-0-278) [ 1815 0 R /XYZ 60.307257 127.806726 0 ] (Code/Form1/:__span-0-279) [ 1815 0 R /XYZ 60.307257 114.406374 0 ] (Code/Form1/:__span-0-28) [ 1805 0 R /XYZ 60.307257 345.825918 0 ] (Code/Form1/:__span-0-280) [ 1815 0 R /XYZ 60.307257 101.006022 0 ] (Code/Form1/:__span-0-281) [ 1817 0 R /XYZ 60.307257 771.023622 0 ] (Code/Form1/:__span-0-282) [ 1817 0 R /XYZ 60.307257 757.623270 0 ] (Code/Form1/:__span-0-283) [ 1817 0 R /XYZ 60.307257 744.222918 0 ] (Code/Form1/:__span-0-284) [ 1817 0 R /XYZ 60.307257 717.422214 0 ] (Code/Form1/:__span-0-285) [ 1817 0 R /XYZ 60.307257 704.021862 0 ] (Code/Form1/:__span-0-286) [ 1817 0 R /XYZ 60.307257 690.621510 0 ] (Code/Form1/:__span-0-287) [ 1817 0 R /XYZ 60.307257 677.221158 0 ] (Code/Form1/:__span-0-288) [ 1817 0 R /XYZ 60.307257 663.820806 0 ] (Code/Form1/:__span-0-289) [ 1817 0 R /XYZ 60.307257 650.420454 0 ] (Code/Form1/:__span-0-29) [ 1805 0 R /XYZ 60.307257 332.425566 0 ] (Code/Form1/:__span-0-290) [ 1817 0 R /XYZ 60.307257 637.020102 0 ] (Code/Form1/:__span-0-291) [ 1817 0 R /XYZ 60.307257 623.619750 0 ] (Code/Form1/:__span-0-292) [ 1817 0 R /XYZ 60.307257 610.219398 0 ] (Code/Form1/:__span-0-293) [ 1817 0 R /XYZ 60.307257 596.819046 0 ] (Code/Form1/:__span-0-294) [ 1817 0 R /XYZ 60.307257 583.418694 0 ] (Code/Form1/:__span-0-295) [ 1817 0 R /XYZ 60.307257 570.018342 0 ] (Code/Form1/:__span-0-296) [ 1817 0 R /XYZ 60.307257 556.617990 0 ] (Code/Form1/:__span-0-297) [ 1817 0 R /XYZ 60.307257 543.217638 0 ] (Code/Form1/:__span-0-298) [ 1817 0 R /XYZ 60.307257 529.817286 0 ] (Code/Form1/:__span-0-299) [ 1817 0 R /XYZ 60.307257 516.416934 0 ] (Code/Form1/:__span-0-3) [ 1805 0 R /XYZ 60.307257 680.834718 0 ] (Code/Form1/:__span-0-30) [ 1805 0 R /XYZ 60.307257 319.025214 0 ] (Code/Form1/:__span-0-300) [ 1817 0 R /XYZ 60.307257 503.016582 0 ] (Code/Form1/:__span-0-301) [ 1817 0 R /XYZ 60.307257 489.616230 0 ] (Code/Form1/:__span-0-302) [ 1817 0 R /XYZ 60.307257 476.215878 0 ] (Code/Form1/:__span-0-303) [ 1817 0 R /XYZ 60.307257 462.815526 0 ] (Code/Form1/:__span-0-304) [ 1817 0 R /XYZ 60.307257 449.415174 0 ] (Code/Form1/:__span-0-305) [ 1817 0 R /XYZ 60.307257 436.014822 0 ] (Code/Form1/:__span-0-306) [ 1817 0 R /XYZ 60.307257 422.614470 0 ] (Code/Form1/:__span-0-307) [ 1817 0 R /XYZ 60.307257 409.214118 0 ] (Code/Form1/:__span-0-308) [ 1817 0 R /XYZ 60.307257 395.813766 0 ] (Code/Form1/:__span-0-309) [ 1817 0 R /XYZ 60.307257 382.413414 0 ] (Code/Form1/:__span-0-31) [ 1805 0 R /XYZ 60.307257 305.624862 0 ] (Code/Form1/:__span-0-310) [ 1817 0 R /XYZ 60.307257 369.013062 0 ] (Code/Form1/:__span-0-311) [ 1817 0 R /XYZ 60.307257 342.212358 0 ] (Code/Form1/:__span-0-312) [ 1817 0 R /XYZ 60.307257 315.411654 0 ] (Code/Form1/:__span-0-313) [ 1817 0 R /XYZ 60.307257 302.011302 0 ] (Code/Form1/:__span-0-314) [ 1817 0 R /XYZ 60.307257 288.610950 0 ] (Code/Form1/:__span-0-315) [ 1817 0 R /XYZ 60.307257 275.210598 0 ] (Code/Form1/:__span-0-316) [ 1817 0 R /XYZ 60.307257 261.810246 0 ] (Code/Form1/:__span-0-317) [ 1817 0 R /XYZ 60.307257 235.009542 0 ] (Code/Form1/:__span-0-318) [ 1817 0 R /XYZ 60.307257 221.609190 0 ] (Code/Form1/:__span-0-319) [ 1817 0 R /XYZ 60.307257 208.208838 0 ] (Code/Form1/:__span-0-32) [ 1805 0 R /XYZ 60.307257 292.224510 0 ] (Code/Form1/:__span-0-320) [ 1817 0 R /XYZ 60.307257 194.808486 0 ] (Code/Form1/:__span-0-321) [ 1817 0 R /XYZ 60.307257 181.408134 0 ] (Code/Form1/:__span-0-322) [ 1817 0 R /XYZ 60.307257 168.007782 0 ] (Code/Form1/:__span-0-323) [ 1817 0 R /XYZ 60.307257 154.607430 0 ] (Code/Form1/:__span-0-324) [ 1817 0 R /XYZ 60.307257 141.207078 0 ] (Code/Form1/:__span-0-325) [ 1817 0 R /XYZ 60.307257 127.806726 0 ] (Code/Form1/:__span-0-326) [ 1817 0 R /XYZ 60.307257 114.406374 0 ] (Code/Form1/:__span-0-327) [ 1817 0 R /XYZ 60.307257 101.006022 0 ] (Code/Form1/:__span-0-328) [ 1817 0 R /XYZ 60.307257 87.605670 0 ] (Code/Form1/:__span-0-329) [ 1819 0 R /XYZ 60.307257 771.023622 0 ] (Code/Form1/:__span-0-33) [ 1805 0 R /XYZ 60.307257 278.824158 0 ] (Code/Form1/:__span-0-330) [ 1819 0 R /XYZ 60.307257 757.623270 0 ] (Code/Form1/:__span-0-331) [ 1819 0 R /XYZ 60.307257 744.222918 0 ] (Code/Form1/:__span-0-332) [ 1819 0 R /XYZ 60.307257 730.822566 0 ] (Code/Form1/:__span-0-333) [ 1819 0 R /XYZ 60.307257 717.422214 0 ] (Code/Form1/:__span-0-334) [ 1819 0 R /XYZ 60.307257 704.021862 0 ] (Code/Form1/:__span-0-335) [ 1819 0 R /XYZ 60.307257 690.621510 0 ] (Code/Form1/:__span-0-336) [ 1819 0 R /XYZ 60.307257 677.221158 0 ] (Code/Form1/:__span-0-337) [ 1819 0 R /XYZ 60.307257 663.820806 0 ] (Code/Form1/:__span-0-338) [ 1819 0 R /XYZ 60.307257 650.420454 0 ] (Code/Form1/:__span-0-339) [ 1819 0 R /XYZ 60.307257 637.020102 0 ] (Code/Form1/:__span-0-34) [ 1805 0 R /XYZ 60.307257 265.423806 0 ] (Code/Form1/:__span-0-340) [ 1819 0 R /XYZ 60.307257 623.619750 0 ] (Code/Form1/:__span-0-341) [ 1819 0 R /XYZ 60.307257 596.819046 0 ] (Code/Form1/:__span-0-342) [ 1819 0 R /XYZ 60.307257 583.418694 0 ] (Code/Form1/:__span-0-343) [ 1819 0 R /XYZ 60.307257 570.018342 0 ] (Code/Form1/:__span-0-344) [ 1819 0 R /XYZ 60.307257 543.217638 0 ] (Code/Form1/:__span-0-345) [ 1819 0 R /XYZ 60.307257 529.817286 0 ] (Code/Form1/:__span-0-346) [ 1819 0 R /XYZ 60.307257 503.016582 0 ] (Code/Form1/:__span-0-347) [ 1819 0 R /XYZ 60.307257 489.616230 0 ] (Code/Form1/:__span-0-348) [ 1819 0 R /XYZ 60.307257 476.215878 0 ] (Code/Form1/:__span-0-349) [ 1819 0 R /XYZ 60.307257 462.815526 0 ] (Code/Form1/:__span-0-35) [ 1805 0 R /XYZ 60.307257 252.023454 0 ] (Code/Form1/:__span-0-350) [ 1819 0 R /XYZ 60.307257 449.415174 0 ] (Code/Form1/:__span-0-351) [ 1819 0 R /XYZ 60.307257 436.014822 0 ] (Code/Form1/:__span-0-352) [ 1819 0 R /XYZ 60.307257 422.614470 0 ] (Code/Form1/:__span-0-353) [ 1819 0 R /XYZ 60.307257 409.214118 0 ] (Code/Form1/:__span-0-354) [ 1819 0 R /XYZ 60.307257 395.813766 0 ] (Code/Form1/:__span-0-355) [ 1819 0 R /XYZ 60.307257 382.413414 0 ] (Code/Form1/:__span-0-356) [ 1819 0 R /XYZ 60.307257 369.013062 0 ] (Code/Form1/:__span-0-357) [ 1819 0 R /XYZ 60.307257 355.612710 0 ] (Code/Form1/:__span-0-358) [ 1819 0 R /XYZ 60.307257 342.212358 0 ] (Code/Form1/:__span-0-359) [ 1819 0 R /XYZ 60.307257 328.812006 0 ] (Code/Form1/:__span-0-36) [ 1805 0 R /XYZ 60.307257 238.623102 0 ] (Code/Form1/:__span-0-360) [ 1819 0 R /XYZ 60.307257 315.411654 0 ] (Code/Form1/:__span-0-361) [ 1819 0 R /XYZ 60.307257 302.011302 0 ] (Code/Form1/:__span-0-362) [ 1819 0 R /XYZ 60.307257 288.610950 0 ] (Code/Form1/:__span-0-363) [ 1819 0 R /XYZ 60.307257 275.210598 0 ] (Code/Form1/:__span-0-364) [ 1819 0 R /XYZ 60.307257 261.810246 0 ] (Code/Form1/:__span-0-365) [ 1819 0 R /XYZ 60.307257 235.009542 0 ] (Code/Form1/:__span-0-366) [ 1819 0 R /XYZ 60.307257 221.609190 0 ] (Code/Form1/:__span-0-367) [ 1819 0 R /XYZ 60.307257 208.208838 0 ] (Code/Form1/:__span-0-368) [ 1819 0 R /XYZ 60.307257 194.808486 0 ] (Code/Form1/:__span-0-369) [ 1819 0 R /XYZ 60.307257 168.007782 0 ] (Code/Form1/:__span-0-37) [ 1805 0 R /XYZ 60.307257 225.222750 0 ] (Code/Form1/:__span-0-370) [ 1819 0 R /XYZ 60.307257 154.607430 0 ] (Code/Form1/:__span-0-371) [ 1819 0 R /XYZ 60.307257 141.207078 0 ] (Code/Form1/:__span-0-372) [ 1819 0 R /XYZ 60.307257 127.806726 0 ] (Code/Form1/:__span-0-373) [ 1819 0 R /XYZ 60.307257 114.406374 0 ] (Code/Form1/:__span-0-374) [ 1819 0 R /XYZ 60.307257 101.006022 0 ] (Code/Form1/:__span-0-375) [ 1819 0 R /XYZ 60.307257 87.605670 0 ] (Code/Form1/:__span-0-376) [ 1821 0 R /XYZ 60.307257 771.023622 0 ] (Code/Form1/:__span-0-377) [ 1821 0 R /XYZ 60.307257 757.623270 0 ] (Code/Form1/:__span-0-378) [ 1821 0 R /XYZ 60.307257 744.222918 0 ] (Code/Form1/:__span-0-379) [ 1821 0 R /XYZ 60.307257 730.822566 0 ] (Code/Form1/:__span-0-38) [ 1805 0 R /XYZ 60.307257 211.822398 0 ] (Code/Form1/:__span-0-380) [ 1821 0 R /XYZ 60.307257 717.422214 0 ] (Code/Form1/:__span-0-381) [ 1821 0 R /XYZ 60.307257 690.621510 0 ] (Code/Form1/:__span-0-382) [ 1821 0 R /XYZ 60.307257 677.221158 0 ] (Code/Form1/:__span-0-383) [ 1821 0 R /XYZ 60.307257 663.820806 0 ] (Code/Form1/:__span-0-384) [ 1821 0 R /XYZ 60.307257 650.420454 0 ] (Code/Form1/:__span-0-385) [ 1821 0 R /XYZ 60.307257 637.020102 0 ] (Code/Form1/:__span-0-386) [ 1821 0 R /XYZ 60.307257 623.619750 0 ] (Code/Form1/:__span-0-387) [ 1821 0 R /XYZ 60.307257 610.219398 0 ] (Code/Form1/:__span-0-388) [ 1821 0 R /XYZ 60.307257 596.819046 0 ] (Code/Form1/:__span-0-389) [ 1821 0 R /XYZ 60.307257 583.418694 0 ] (Code/Form1/:__span-0-39) [ 1805 0 R /XYZ 60.307257 198.422046 0 ] (Code/Form1/:__span-0-390) [ 1821 0 R /XYZ 60.307257 556.617990 0 ] (Code/Form1/:__span-0-391) [ 1821 0 R /XYZ 60.307257 543.217638 0 ] (Code/Form1/:__span-0-392) [ 1821 0 R /XYZ 60.307257 529.817286 0 ] (Code/Form1/:__span-0-393) [ 1821 0 R /XYZ 60.307257 516.416934 0 ] (Code/Form1/:__span-0-394) [ 1821 0 R /XYZ 60.307257 503.016582 0 ] (Code/Form1/:__span-0-395) [ 1821 0 R /XYZ 60.307257 489.616230 0 ] (Code/Form1/:__span-0-396) [ 1821 0 R /XYZ 60.307257 476.215878 0 ] (Code/Form1/:__span-0-397) [ 1821 0 R /XYZ 60.307257 462.815526 0 ] (Code/Form1/:__span-0-398) [ 1821 0 R /XYZ 60.307257 449.415174 0 ] (Code/Form1/:__span-0-399) [ 1821 0 R /XYZ 60.307257 422.614470 0 ] (Code/Form1/:__span-0-4) [ 1805 0 R /XYZ 60.307257 667.434366 0 ] (Code/Form1/:__span-0-40) [ 1805 0 R /XYZ 60.307257 185.021694 0 ] (Code/Form1/:__span-0-400) [ 1821 0 R /XYZ 60.307257 395.813766 0 ] (Code/Form1/:__span-0-401) [ 1821 0 R /XYZ 60.307257 382.413414 0 ] (Code/Form1/:__span-0-402) [ 1821 0 R /XYZ 60.307257 355.612710 0 ] (Code/Form1/:__span-0-403) [ 1821 0 R /XYZ 60.307257 342.212358 0 ] (Code/Form1/:__span-0-404) [ 1821 0 R /XYZ 60.307257 315.411654 0 ] (Code/Form1/:__span-0-405) [ 1821 0 R /XYZ 60.307257 288.610950 0 ] (Code/Form1/:__span-0-406) [ 1821 0 R /XYZ 60.307257 275.210598 0 ] (Code/Form1/:__span-0-407) [ 1821 0 R /XYZ 60.307257 248.409894 0 ] (Code/Form1/:__span-0-408) [ 1821 0 R /XYZ 60.307257 221.609190 0 ] (Code/Form1/:__span-0-409) [ 1821 0 R /XYZ 60.307257 208.208838 0 ] (Code/Form1/:__span-0-41) [ 1805 0 R /XYZ 60.307257 171.621342 0 ] (Code/Form1/:__span-0-410) [ 1821 0 R /XYZ 60.307257 181.408134 0 ] (Code/Form1/:__span-0-411) [ 1821 0 R /XYZ 60.307257 168.007782 0 ] (Code/Form1/:__span-0-412) [ 1821 0 R /XYZ 60.307257 141.207078 0 ] (Code/Form1/:__span-0-413) [ 1821 0 R /XYZ 60.307257 114.406374 0 ] (Code/Form1/:__span-0-414) [ 1821 0 R /XYZ 60.307257 101.006022 0 ] (Code/Form1/:__span-0-415) [ 1823 0 R /XYZ 60.307257 771.023622 0 ] (Code/Form1/:__span-0-416) [ 1823 0 R /XYZ 60.307257 744.222918 0 ] (Code/Form1/:__span-0-417) [ 1823 0 R /XYZ 60.307257 730.822566 0 ] (Code/Form1/:__span-0-418) [ 1823 0 R /XYZ 60.307257 704.021862 0 ] (Code/Form1/:__span-0-419) [ 1823 0 R /XYZ 60.307257 690.621510 0 ] (Code/Form1/:__span-0-42) [ 1805 0 R /XYZ 60.307257 158.220990 0 ] (Code/Form1/:__span-0-420) [ 1823 0 R /XYZ 60.307257 663.820806 0 ] (Code/Form1/:__span-0-421) [ 1823 0 R /XYZ 60.307257 650.420454 0 ] (Code/Form1/:__span-0-422) [ 1823 0 R /XYZ 60.307257 637.020102 0 ] (Code/Form1/:__span-0-43) [ 1805 0 R /XYZ 60.307257 144.820638 0 ] (Code/Form1/:__span-0-44) [ 1805 0 R /XYZ 60.307257 131.420286 0 ] (Code/Form1/:__span-0-45) [ 1805 0 R /XYZ 60.307257 118.019934 0 ] (Code/Form1/:__span-0-46) [ 1805 0 R /XYZ 60.307257 104.619582 0 ] (Code/Form1/:__span-0-47) [ 1805 0 R /XYZ 60.307257 91.219230 0 ] (Code/Form1/:__span-0-48) [ 1807 0 R /XYZ 60.307257 771.023622 0 ] (Code/Form1/:__span-0-49) [ 1807 0 R /XYZ 60.307257 757.623270 0 ] (Code/Form1/:__span-0-5) [ 1805 0 R /XYZ 60.307257 654.034014 0 ] (Code/Form1/:__span-0-50) [ 1807 0 R /XYZ 60.307257 744.222918 0 ] (Code/Form1/:__span-0-51) [ 1807 0 R /XYZ 60.307257 730.822566 0 ] (Code/Form1/:__span-0-52) [ 1807 0 R /XYZ 60.307257 717.422214 0 ] (Code/Form1/:__span-0-53) [ 1807 0 R /XYZ 60.307257 704.021862 0 ] (Code/Form1/:__span-0-54) [ 1807 0 R /XYZ 60.307257 690.621510 0 ] (Code/Form1/:__span-0-55) [ 1807 0 R /XYZ 60.307257 677.221158 0 ] (Code/Form1/:__span-0-56) [ 1807 0 R /XYZ 60.307257 650.420454 0 ] (Code/Form1/:__span-0-57) [ 1807 0 R /XYZ 60.307257 637.020102 0 ] (Code/Form1/:__span-0-58) [ 1807 0 R /XYZ 60.307257 623.619750 0 ] (Code/Form1/:__span-0-59) [ 1807 0 R /XYZ 60.307257 610.219398 0 ] (Code/Form1/:__span-0-6) [ 1805 0 R /XYZ 60.307257 640.633662 0 ] (Code/Form1/:__span-0-60) [ 1807 0 R /XYZ 60.307257 596.819046 0 ] (Code/Form1/:__span-0-61) [ 1807 0 R /XYZ 60.307257 583.418694 0 ] (Code/Form1/:__span-0-62) [ 1807 0 R /XYZ 60.307257 570.018342 0 ] (Code/Form1/:__span-0-63) [ 1807 0 R /XYZ 60.307257 556.617990 0 ] (Code/Form1/:__span-0-64) [ 1807 0 R /XYZ 60.307257 543.217638 0 ] (Code/Form1/:__span-0-65) [ 1807 0 R /XYZ 60.307257 529.817286 0 ] (Code/Form1/:__span-0-66) [ 1807 0 R /XYZ 60.307257 516.416934 0 ] (Code/Form1/:__span-0-67) [ 1807 0 R /XYZ 60.307257 503.016582 0 ] (Code/Form1/:__span-0-68) [ 1807 0 R /XYZ 60.307257 489.616230 0 ] (Code/Form1/:__span-0-69) [ 1807 0 R /XYZ 60.307257 476.215878 0 ] (Code/Form1/:__span-0-7) [ 1805 0 R /XYZ 60.307257 627.233310 0 ] (Code/Form1/:__span-0-70) [ 1807 0 R /XYZ 60.307257 462.815526 0 ] (Code/Form1/:__span-0-71) [ 1807 0 R /XYZ 60.307257 449.415174 0 ] (Code/Form1/:__span-0-72) [ 1807 0 R /XYZ 60.307257 436.014822 0 ] (Code/Form1/:__span-0-73) [ 1807 0 R /XYZ 60.307257 422.614470 0 ] (Code/Form1/:__span-0-74) [ 1807 0 R /XYZ 60.307257 409.214118 0 ] (Code/Form1/:__span-0-75) [ 1807 0 R /XYZ 60.307257 395.813766 0 ] (Code/Form1/:__span-0-76) [ 1807 0 R /XYZ 60.307257 369.013062 0 ] (Code/Form1/:__span-0-77) [ 1807 0 R /XYZ 60.307257 342.212358 0 ] (Code/Form1/:__span-0-78) [ 1807 0 R /XYZ 60.307257 328.812006 0 ] (Code/Form1/:__span-0-79) [ 1807 0 R /XYZ 60.307257 315.411654 0 ] (Code/Form1/:__span-0-8) [ 1805 0 R /XYZ 60.307257 613.832958 0 ] (Code/Form1/:__span-0-80) [ 1807 0 R /XYZ 60.307257 302.011302 0 ] (Code/Form1/:__span-0-81) [ 1807 0 R /XYZ 60.307257 288.610950 0 ] (Code/Form1/:__span-0-82) [ 1807 0 R /XYZ 60.307257 275.210598 0 ] (Code/Form1/:__span-0-83) [ 1807 0 R /XYZ 60.307257 261.810246 0 ] (Code/Form1/:__span-0-84) [ 1807 0 R /XYZ 60.307257 248.409894 0 ] (Code/Form1/:__span-0-85) [ 1807 0 R /XYZ 60.307257 235.009542 0 ] (Code/Form1/:__span-0-86) [ 1807 0 R /XYZ 60.307257 221.609190 0 ] (Code/Form1/:__span-0-87) [ 1807 0 R /XYZ 60.307257 208.208838 0 ] (Code/Form1/:__span-0-88) [ 1807 0 R /XYZ 60.307257 194.808486 0 ] (Code/Form1/:__span-0-89) [ 1807 0 R /XYZ 60.307257 181.408134 0 ] (Code/Form1/:__span-0-9) [ 1805 0 R /XYZ 60.307257 600.432606 0 ] (Code/Form1/:__span-0-90) [ 1807 0 R /XYZ 60.307257 168.007782 0 ] (Code/Form1/:__span-0-91) [ 1807 0 R /XYZ 60.307257 154.607430 0 ] (Code/Form1/:__span-0-92) [ 1807 0 R /XYZ 60.307257 127.806726 0 ] (Code/Form1/:__span-0-93) [ 1807 0 R /XYZ 60.307257 114.406374 0 ] (Code/Form1/:__span-0-94) [ 1807 0 R /XYZ 60.307257 101.006022 0 ] (Code/Form1/:__span-0-95) [ 1807 0 R /XYZ 60.307257 87.605670 0 ] (Code/Form1/:__span-0-96) [ 1809 0 R /XYZ 60.307257 771.023622 0 ] (Code/Form1/:__span-0-97) [ 1809 0 R /XYZ 60.307257 744.222918 0 ] (Code/Form1/:__span-0-98) [ 1809 0 R /XYZ 60.307257 717.422214 0 ] (Code/Form1/:__span-0-99) [ 1809 0 R /XYZ 60.307257 704.021862 0 ] (Code/Form1/:form1cs) [ 1805 0 R /XYZ 39.386457 747.563622 0 ] (Code/OcrImage/:) [ 1909 0 R /XYZ 39.386457 747.563622 0 ] (Code/OcrImage/:__span-0-1) [ 1909 0 R /XYZ 60.307257 707.635422 0 ] (Code/OcrImage/:__span-0-10) [ 1909 0 R /XYZ 60.307257 587.032254 0 ] (Code/OcrImage/:__span-0-100) [ 1913 0 R /XYZ 60.307257 503.016582 0 ] (Code/OcrImage/:__span-0-101) [ 1913 0 R /XYZ 60.307257 489.616230 0 ] (Code/OcrImage/:__span-0-102) [ 1913 0 R /XYZ 60.307257 476.215878 0 ] (Code/OcrImage/:__span-0-103) [ 1913 0 R /XYZ 60.307257 462.815526 0 ] (Code/OcrImage/:__span-0-104) [ 1913 0 R /XYZ 60.307257 449.415174 0 ] (Code/OcrImage/:__span-0-105) [ 1913 0 R /XYZ 60.307257 436.014822 0 ] (Code/OcrImage/:__span-0-106) [ 1913 0 R /XYZ 60.307257 422.614470 0 ] (Code/OcrImage/:__span-0-107) [ 1913 0 R /XYZ 60.307257 409.214118 0 ] (Code/OcrImage/:__span-0-108) [ 1913 0 R /XYZ 60.307257 395.813766 0 ] (Code/OcrImage/:__span-0-109) [ 1913 0 R /XYZ 60.307257 382.413414 0 ] (Code/OcrImage/:__span-0-11) [ 1909 0 R /XYZ 60.307257 573.631902 0 ] (Code/OcrImage/:__span-0-110) [ 1913 0 R /XYZ 60.307257 369.013062 0 ] (Code/OcrImage/:__span-0-111) [ 1913 0 R /XYZ 60.307257 342.212358 0 ] (Code/OcrImage/:__span-0-112) [ 1913 0 R /XYZ 60.307257 315.411654 0 ] (Code/OcrImage/:__span-0-113) [ 1913 0 R /XYZ 60.307257 288.610950 0 ] (Code/OcrImage/:__span-0-114) [ 1913 0 R /XYZ 60.307257 275.210598 0 ] (Code/OcrImage/:__span-0-115) [ 1913 0 R /XYZ 60.307257 261.810246 0 ] (Code/OcrImage/:__span-0-116) [ 1913 0 R /XYZ 60.307257 248.409894 0 ] (Code/OcrImage/:__span-0-117) [ 1913 0 R /XYZ 60.307257 235.009542 0 ] (Code/OcrImage/:__span-0-118) [ 1913 0 R /XYZ 60.307257 221.609190 0 ] (Code/OcrImage/:__span-0-119) [ 1913 0 R /XYZ 60.307257 208.208838 0 ] (Code/OcrImage/:__span-0-12) [ 1909 0 R /XYZ 60.307257 560.231550 0 ] (Code/OcrImage/:__span-0-120) [ 1913 0 R /XYZ 60.307257 194.808486 0 ] (Code/OcrImage/:__span-0-121) [ 1913 0 R /XYZ 60.307257 181.408134 0 ] (Code/OcrImage/:__span-0-122) [ 1913 0 R /XYZ 60.307257 168.007782 0 ] (Code/OcrImage/:__span-0-123) [ 1913 0 R /XYZ 60.307257 154.607430 0 ] (Code/OcrImage/:__span-0-124) [ 1913 0 R /XYZ 60.307257 141.207078 0 ] (Code/OcrImage/:__span-0-125) [ 1913 0 R /XYZ 60.307257 127.806726 0 ] (Code/OcrImage/:__span-0-126) [ 1913 0 R /XYZ 60.307257 114.406374 0 ] (Code/OcrImage/:__span-0-127) [ 1913 0 R /XYZ 60.307257 101.006022 0 ] (Code/OcrImage/:__span-0-128) [ 1913 0 R /XYZ 60.307257 87.605670 0 ] (Code/OcrImage/:__span-0-129) [ 1915 0 R /XYZ 60.307257 757.623270 0 ] (Code/OcrImage/:__span-0-13) [ 1909 0 R /XYZ 60.307257 546.831198 0 ] (Code/OcrImage/:__span-0-130) [ 1915 0 R /XYZ 60.307257 744.222918 0 ] (Code/OcrImage/:__span-0-131) [ 1915 0 R /XYZ 60.307257 730.822566 0 ] (Code/OcrImage/:__span-0-132) [ 1915 0 R /XYZ 60.307257 704.021862 0 ] (Code/OcrImage/:__span-0-133) [ 1915 0 R /XYZ 60.307257 690.621510 0 ] (Code/OcrImage/:__span-0-134) [ 1915 0 R /XYZ 60.307257 677.221158 0 ] (Code/OcrImage/:__span-0-135) [ 1915 0 R /XYZ 60.307257 663.820806 0 ] (Code/OcrImage/:__span-0-136) [ 1915 0 R /XYZ 60.307257 650.420454 0 ] (Code/OcrImage/:__span-0-137) [ 1915 0 R /XYZ 60.307257 637.020102 0 ] (Code/OcrImage/:__span-0-138) [ 1915 0 R /XYZ 60.307257 623.619750 0 ] (Code/OcrImage/:__span-0-139) [ 1915 0 R /XYZ 60.307257 610.219398 0 ] (Code/OcrImage/:__span-0-14) [ 1909 0 R /XYZ 60.307257 533.430846 0 ] (Code/OcrImage/:__span-0-140) [ 1915 0 R /XYZ 60.307257 596.819046 0 ] (Code/OcrImage/:__span-0-141) [ 1915 0 R /XYZ 60.307257 583.418694 0 ] (Code/OcrImage/:__span-0-142) [ 1915 0 R /XYZ 60.307257 570.018342 0 ] (Code/OcrImage/:__span-0-143) [ 1915 0 R /XYZ 60.307257 556.617990 0 ] (Code/OcrImage/:__span-0-144) [ 1915 0 R /XYZ 60.307257 543.217638 0 ] (Code/OcrImage/:__span-0-145) [ 1915 0 R /XYZ 60.307257 529.817286 0 ] (Code/OcrImage/:__span-0-146) [ 1915 0 R /XYZ 60.307257 516.416934 0 ] (Code/OcrImage/:__span-0-147) [ 1915 0 R /XYZ 60.307257 503.016582 0 ] (Code/OcrImage/:__span-0-148) [ 1915 0 R /XYZ 60.307257 489.616230 0 ] (Code/OcrImage/:__span-0-149) [ 1915 0 R /XYZ 60.307257 462.815526 0 ] (Code/OcrImage/:__span-0-15) [ 1909 0 R /XYZ 60.307257 520.030494 0 ] (Code/OcrImage/:__span-0-150) [ 1915 0 R /XYZ 60.307257 449.415174 0 ] (Code/OcrImage/:__span-0-151) [ 1915 0 R /XYZ 60.307257 422.614470 0 ] (Code/OcrImage/:__span-0-152) [ 1915 0 R /XYZ 60.307257 409.214118 0 ] (Code/OcrImage/:__span-0-153) [ 1915 0 R /XYZ 60.307257 395.813766 0 ] (Code/OcrImage/:__span-0-154) [ 1915 0 R /XYZ 60.307257 382.413414 0 ] (Code/OcrImage/:__span-0-155) [ 1915 0 R /XYZ 60.307257 369.013062 0 ] (Code/OcrImage/:__span-0-156) [ 1915 0 R /XYZ 60.307257 342.212358 0 ] (Code/OcrImage/:__span-0-157) [ 1915 0 R /XYZ 60.307257 328.812006 0 ] (Code/OcrImage/:__span-0-158) [ 1915 0 R /XYZ 60.307257 315.411654 0 ] (Code/OcrImage/:__span-0-159) [ 1915 0 R /XYZ 60.307257 302.011302 0 ] (Code/OcrImage/:__span-0-16) [ 1909 0 R /XYZ 60.307257 506.630142 0 ] (Code/OcrImage/:__span-0-160) [ 1915 0 R /XYZ 60.307257 288.610950 0 ] (Code/OcrImage/:__span-0-161) [ 1915 0 R /XYZ 60.307257 275.210598 0 ] (Code/OcrImage/:__span-0-162) [ 1915 0 R /XYZ 60.307257 261.810246 0 ] (Code/OcrImage/:__span-0-163) [ 1915 0 R /XYZ 60.307257 248.409894 0 ] (Code/OcrImage/:__span-0-164) [ 1915 0 R /XYZ 60.307257 221.609190 0 ] (Code/OcrImage/:__span-0-165) [ 1915 0 R /XYZ 60.307257 208.208838 0 ] (Code/OcrImage/:__span-0-166) [ 1915 0 R /XYZ 60.307257 194.808486 0 ] (Code/OcrImage/:__span-0-167) [ 1915 0 R /XYZ 60.307257 181.408134 0 ] (Code/OcrImage/:__span-0-168) [ 1915 0 R /XYZ 60.307257 168.007782 0 ] (Code/OcrImage/:__span-0-169) [ 1915 0 R /XYZ 60.307257 154.607430 0 ] (Code/OcrImage/:__span-0-17) [ 1909 0 R /XYZ 60.307257 493.229790 0 ] (Code/OcrImage/:__span-0-170) [ 1915 0 R /XYZ 60.307257 141.207078 0 ] (Code/OcrImage/:__span-0-171) [ 1915 0 R /XYZ 60.307257 114.406374 0 ] (Code/OcrImage/:__span-0-172) [ 1915 0 R /XYZ 60.307257 101.006022 0 ] (Code/OcrImage/:__span-0-173) [ 1915 0 R /XYZ 60.307257 87.605670 0 ] (Code/OcrImage/:__span-0-174) [ 1917 0 R /XYZ 60.307257 757.623270 0 ] (Code/OcrImage/:__span-0-175) [ 1917 0 R /XYZ 60.307257 744.222918 0 ] (Code/OcrImage/:__span-0-176) [ 1917 0 R /XYZ 60.307257 730.822566 0 ] (Code/OcrImage/:__span-0-177) [ 1917 0 R /XYZ 60.307257 704.021862 0 ] (Code/OcrImage/:__span-0-178) [ 1917 0 R /XYZ 60.307257 690.621510 0 ] (Code/OcrImage/:__span-0-179) [ 1917 0 R /XYZ 60.307257 677.221158 0 ] (Code/OcrImage/:__span-0-18) [ 1909 0 R /XYZ 60.307257 479.829438 0 ] (Code/OcrImage/:__span-0-180) [ 1917 0 R /XYZ 60.307257 663.820806 0 ] (Code/OcrImage/:__span-0-181) [ 1917 0 R /XYZ 60.307257 650.420454 0 ] (Code/OcrImage/:__span-0-182) [ 1917 0 R /XYZ 60.307257 637.020102 0 ] (Code/OcrImage/:__span-0-183) [ 1917 0 R /XYZ 60.307257 623.619750 0 ] (Code/OcrImage/:__span-0-184) [ 1917 0 R /XYZ 60.307257 596.819046 0 ] (Code/OcrImage/:__span-0-185) [ 1917 0 R /XYZ 60.307257 583.418694 0 ] (Code/OcrImage/:__span-0-186) [ 1917 0 R /XYZ 60.307257 556.617990 0 ] (Code/OcrImage/:__span-0-187) [ 1917 0 R /XYZ 60.307257 543.217638 0 ] (Code/OcrImage/:__span-0-188) [ 1917 0 R /XYZ 60.307257 529.817286 0 ] (Code/OcrImage/:__span-0-189) [ 1917 0 R /XYZ 60.307257 516.416934 0 ] (Code/OcrImage/:__span-0-19) [ 1909 0 R /XYZ 60.307257 453.028734 0 ] (Code/OcrImage/:__span-0-190) [ 1917 0 R /XYZ 60.307257 503.016582 0 ] (Code/OcrImage/:__span-0-191) [ 1917 0 R /XYZ 60.307257 476.215878 0 ] (Code/OcrImage/:__span-0-192) [ 1917 0 R /XYZ 60.307257 462.815526 0 ] (Code/OcrImage/:__span-0-193) [ 1917 0 R /XYZ 60.307257 449.415174 0 ] (Code/OcrImage/:__span-0-194) [ 1917 0 R /XYZ 60.307257 436.014822 0 ] (Code/OcrImage/:__span-0-195) [ 1917 0 R /XYZ 60.307257 422.614470 0 ] (Code/OcrImage/:__span-0-196) [ 1917 0 R /XYZ 60.307257 409.214118 0 ] (Code/OcrImage/:__span-0-197) [ 1917 0 R /XYZ 60.307257 395.813766 0 ] (Code/OcrImage/:__span-0-198) [ 1917 0 R /XYZ 60.307257 382.413414 0 ] (Code/OcrImage/:__span-0-199) [ 1917 0 R /XYZ 60.307257 369.013062 0 ] (Code/OcrImage/:__span-0-2) [ 1909 0 R /XYZ 60.307257 694.235070 0 ] (Code/OcrImage/:__span-0-20) [ 1909 0 R /XYZ 60.307257 426.228030 0 ] (Code/OcrImage/:__span-0-200) [ 1917 0 R /XYZ 60.307257 355.612710 0 ] (Code/OcrImage/:__span-0-201) [ 1917 0 R /XYZ 60.307257 342.212358 0 ] (Code/OcrImage/:__span-0-202) [ 1917 0 R /XYZ 60.307257 328.812006 0 ] (Code/OcrImage/:__span-0-203) [ 1917 0 R /XYZ 60.307257 315.411654 0 ] (Code/OcrImage/:__span-0-204) [ 1917 0 R /XYZ 60.307257 302.011302 0 ] (Code/OcrImage/:__span-0-205) [ 1917 0 R /XYZ 60.307257 288.610950 0 ] (Code/OcrImage/:__span-0-206) [ 1917 0 R /XYZ 60.307257 275.210598 0 ] (Code/OcrImage/:__span-0-207) [ 1917 0 R /XYZ 60.307257 248.409894 0 ] (Code/OcrImage/:__span-0-208) [ 1917 0 R /XYZ 60.307257 235.009542 0 ] (Code/OcrImage/:__span-0-209) [ 1917 0 R /XYZ 60.307257 221.609190 0 ] (Code/OcrImage/:__span-0-21) [ 1909 0 R /XYZ 60.307257 399.427326 0 ] (Code/OcrImage/:__span-0-210) [ 1917 0 R /XYZ 60.307257 208.208838 0 ] (Code/OcrImage/:__span-0-211) [ 1917 0 R /XYZ 60.307257 194.808486 0 ] (Code/OcrImage/:__span-0-212) [ 1917 0 R /XYZ 60.307257 181.408134 0 ] (Code/OcrImage/:__span-0-213) [ 1917 0 R /XYZ 60.307257 154.607430 0 ] (Code/OcrImage/:__span-0-214) [ 1917 0 R /XYZ 60.307257 127.806726 0 ] (Code/OcrImage/:__span-0-215) [ 1917 0 R /XYZ 60.307257 101.006022 0 ] (Code/OcrImage/:__span-0-216) [ 1917 0 R /XYZ 60.307257 87.605670 0 ] (Code/OcrImage/:__span-0-217) [ 1919 0 R /XYZ 60.307257 771.023622 0 ] (Code/OcrImage/:__span-0-218) [ 1919 0 R /XYZ 60.307257 757.623270 0 ] (Code/OcrImage/:__span-0-219) [ 1919 0 R /XYZ 60.307257 744.222918 0 ] (Code/OcrImage/:__span-0-22) [ 1909 0 R /XYZ 60.307257 386.026974 0 ] (Code/OcrImage/:__span-0-220) [ 1919 0 R /XYZ 60.307257 730.822566 0 ] (Code/OcrImage/:__span-0-221) [ 1919 0 R /XYZ 60.307257 717.422214 0 ] (Code/OcrImage/:__span-0-222) [ 1919 0 R /XYZ 60.307257 704.021862 0 ] (Code/OcrImage/:__span-0-223) [ 1919 0 R /XYZ 60.307257 690.621510 0 ] (Code/OcrImage/:__span-0-224) [ 1919 0 R /XYZ 60.307257 677.221158 0 ] (Code/OcrImage/:__span-0-225) [ 1919 0 R /XYZ 60.307257 663.820806 0 ] (Code/OcrImage/:__span-0-226) [ 1919 0 R /XYZ 60.307257 650.420454 0 ] (Code/OcrImage/:__span-0-227) [ 1919 0 R /XYZ 60.307257 637.020102 0 ] (Code/OcrImage/:__span-0-228) [ 1919 0 R /XYZ 60.307257 623.619750 0 ] (Code/OcrImage/:__span-0-229) [ 1919 0 R /XYZ 60.307257 610.219398 0 ] (Code/OcrImage/:__span-0-23) [ 1909 0 R /XYZ 60.307257 372.626622 0 ] (Code/OcrImage/:__span-0-230) [ 1919 0 R /XYZ 60.307257 596.819046 0 ] (Code/OcrImage/:__span-0-231) [ 1919 0 R /XYZ 60.307257 583.418694 0 ] (Code/OcrImage/:__span-0-232) [ 1919 0 R /XYZ 60.307257 570.018342 0 ] (Code/OcrImage/:__span-0-233) [ 1919 0 R /XYZ 60.307257 556.617990 0 ] (Code/OcrImage/:__span-0-234) [ 1919 0 R /XYZ 60.307257 543.217638 0 ] (Code/OcrImage/:__span-0-235) [ 1919 0 R /XYZ 60.307257 529.817286 0 ] (Code/OcrImage/:__span-0-236) [ 1919 0 R /XYZ 60.307257 516.416934 0 ] (Code/OcrImage/:__span-0-237) [ 1919 0 R /XYZ 60.307257 503.016582 0 ] (Code/OcrImage/:__span-0-238) [ 1919 0 R /XYZ 60.307257 489.616230 0 ] (Code/OcrImage/:__span-0-239) [ 1919 0 R /XYZ 60.307257 476.215878 0 ] (Code/OcrImage/:__span-0-24) [ 1909 0 R /XYZ 60.307257 359.226270 0 ] (Code/OcrImage/:__span-0-240) [ 1919 0 R /XYZ 60.307257 462.815526 0 ] (Code/OcrImage/:__span-0-241) [ 1919 0 R /XYZ 60.307257 449.415174 0 ] (Code/OcrImage/:__span-0-242) [ 1919 0 R /XYZ 60.307257 436.014822 0 ] (Code/OcrImage/:__span-0-243) [ 1919 0 R /XYZ 60.307257 422.614470 0 ] (Code/OcrImage/:__span-0-244) [ 1919 0 R /XYZ 60.307257 409.214118 0 ] (Code/OcrImage/:__span-0-245) [ 1919 0 R /XYZ 60.307257 395.813766 0 ] (Code/OcrImage/:__span-0-246) [ 1919 0 R /XYZ 60.307257 382.413414 0 ] (Code/OcrImage/:__span-0-247) [ 1919 0 R /XYZ 60.307257 369.013062 0 ] (Code/OcrImage/:__span-0-248) [ 1919 0 R /XYZ 60.307257 342.212358 0 ] (Code/OcrImage/:__span-0-249) [ 1919 0 R /XYZ 60.307257 315.411654 0 ] (Code/OcrImage/:__span-0-25) [ 1909 0 R /XYZ 60.307257 345.825918 0 ] (Code/OcrImage/:__span-0-250) [ 1919 0 R /XYZ 60.307257 302.011302 0 ] (Code/OcrImage/:__span-0-251) [ 1919 0 R /XYZ 60.307257 288.610950 0 ] (Code/OcrImage/:__span-0-252) [ 1919 0 R /XYZ 60.307257 275.210598 0 ] (Code/OcrImage/:__span-0-253) [ 1919 0 R /XYZ 60.307257 248.409894 0 ] (Code/OcrImage/:__span-0-254) [ 1919 0 R /XYZ 60.307257 221.609190 0 ] (Code/OcrImage/:__span-0-255) [ 1919 0 R /XYZ 60.307257 194.808486 0 ] (Code/OcrImage/:__span-0-256) [ 1919 0 R /XYZ 60.307257 181.408134 0 ] (Code/OcrImage/:__span-0-257) [ 1919 0 R /XYZ 60.307257 168.007782 0 ] (Code/OcrImage/:__span-0-258) [ 1919 0 R /XYZ 60.307257 154.607430 0 ] (Code/OcrImage/:__span-0-259) [ 1919 0 R /XYZ 60.307257 141.207078 0 ] (Code/OcrImage/:__span-0-26) [ 1909 0 R /XYZ 60.307257 332.425566 0 ] (Code/OcrImage/:__span-0-260) [ 1919 0 R /XYZ 60.307257 127.806726 0 ] (Code/OcrImage/:__span-0-261) [ 1919 0 R /XYZ 60.307257 114.406374 0 ] (Code/OcrImage/:__span-0-262) [ 1919 0 R /XYZ 60.307257 101.006022 0 ] (Code/OcrImage/:__span-0-263) [ 1919 0 R /XYZ 60.307257 87.605670 0 ] (Code/OcrImage/:__span-0-264) [ 1921 0 R /XYZ 60.307257 771.023622 0 ] (Code/OcrImage/:__span-0-265) [ 1921 0 R /XYZ 60.307257 757.623270 0 ] (Code/OcrImage/:__span-0-266) [ 1921 0 R /XYZ 60.307257 744.222918 0 ] (Code/OcrImage/:__span-0-267) [ 1921 0 R /XYZ 60.307257 730.822566 0 ] (Code/OcrImage/:__span-0-268) [ 1921 0 R /XYZ 60.307257 717.422214 0 ] (Code/OcrImage/:__span-0-269) [ 1921 0 R /XYZ 60.307257 704.021862 0 ] (Code/OcrImage/:__span-0-27) [ 1909 0 R /XYZ 60.307257 319.025214 0 ] (Code/OcrImage/:__span-0-270) [ 1921 0 R /XYZ 60.307257 690.621510 0 ] (Code/OcrImage/:__span-0-271) [ 1921 0 R /XYZ 60.307257 677.221158 0 ] (Code/OcrImage/:__span-0-272) [ 1921 0 R /XYZ 60.307257 650.420454 0 ] (Code/OcrImage/:__span-0-273) [ 1921 0 R /XYZ 60.307257 637.020102 0 ] (Code/OcrImage/:__span-0-274) [ 1921 0 R /XYZ 60.307257 623.619750 0 ] (Code/OcrImage/:__span-0-275) [ 1921 0 R /XYZ 60.307257 610.219398 0 ] (Code/OcrImage/:__span-0-276) [ 1921 0 R /XYZ 60.307257 596.819046 0 ] (Code/OcrImage/:__span-0-277) [ 1921 0 R /XYZ 60.307257 583.418694 0 ] (Code/OcrImage/:__span-0-278) [ 1921 0 R /XYZ 60.307257 570.018342 0 ] (Code/OcrImage/:__span-0-279) [ 1921 0 R /XYZ 60.307257 556.617990 0 ] (Code/OcrImage/:__span-0-28) [ 1909 0 R /XYZ 60.307257 305.624862 0 ] (Code/OcrImage/:__span-0-280) [ 1921 0 R /XYZ 60.307257 543.217638 0 ] (Code/OcrImage/:__span-0-281) [ 1921 0 R /XYZ 60.307257 529.817286 0 ] (Code/OcrImage/:__span-0-282) [ 1921 0 R /XYZ 60.307257 516.416934 0 ] (Code/OcrImage/:__span-0-283) [ 1921 0 R /XYZ 60.307257 503.016582 0 ] (Code/OcrImage/:__span-0-284) [ 1921 0 R /XYZ 60.307257 489.616230 0 ] (Code/OcrImage/:__span-0-285) [ 1921 0 R /XYZ 60.307257 476.215878 0 ] (Code/OcrImage/:__span-0-286) [ 1921 0 R /XYZ 60.307257 462.815526 0 ] (Code/OcrImage/:__span-0-287) [ 1921 0 R /XYZ 60.307257 436.014822 0 ] (Code/OcrImage/:__span-0-288) [ 1921 0 R /XYZ 60.307257 422.614470 0 ] (Code/OcrImage/:__span-0-289) [ 1921 0 R /XYZ 60.307257 409.214118 0 ] (Code/OcrImage/:__span-0-29) [ 1909 0 R /XYZ 60.307257 292.224510 0 ] (Code/OcrImage/:__span-0-290) [ 1921 0 R /XYZ 60.307257 395.813766 0 ] (Code/OcrImage/:__span-0-291) [ 1921 0 R /XYZ 60.307257 369.013062 0 ] (Code/OcrImage/:__span-0-292) [ 1921 0 R /XYZ 60.307257 342.212358 0 ] (Code/OcrImage/:__span-0-293) [ 1921 0 R /XYZ 60.307257 315.411654 0 ] (Code/OcrImage/:__span-0-294) [ 1921 0 R /XYZ 60.307257 302.011302 0 ] (Code/OcrImage/:__span-0-295) [ 1921 0 R /XYZ 60.307257 288.610950 0 ] (Code/OcrImage/:__span-0-296) [ 1921 0 R /XYZ 60.307257 275.210598 0 ] (Code/OcrImage/:__span-0-297) [ 1921 0 R /XYZ 60.307257 261.810246 0 ] (Code/OcrImage/:__span-0-298) [ 1921 0 R /XYZ 60.307257 248.409894 0 ] (Code/OcrImage/:__span-0-299) [ 1921 0 R /XYZ 60.307257 235.009542 0 ] (Code/OcrImage/:__span-0-3) [ 1909 0 R /XYZ 60.307257 680.834718 0 ] (Code/OcrImage/:__span-0-30) [ 1909 0 R /XYZ 60.307257 278.824158 0 ] (Code/OcrImage/:__span-0-300) [ 1921 0 R /XYZ 60.307257 221.609190 0 ] (Code/OcrImage/:__span-0-301) [ 1921 0 R /XYZ 60.307257 208.208838 0 ] (Code/OcrImage/:__span-0-302) [ 1921 0 R /XYZ 60.307257 194.808486 0 ] (Code/OcrImage/:__span-0-303) [ 1921 0 R /XYZ 60.307257 181.408134 0 ] (Code/OcrImage/:__span-0-304) [ 1921 0 R /XYZ 60.307257 168.007782 0 ] (Code/OcrImage/:__span-0-305) [ 1921 0 R /XYZ 60.307257 154.607430 0 ] (Code/OcrImage/:__span-0-306) [ 1921 0 R /XYZ 60.307257 141.207078 0 ] (Code/OcrImage/:__span-0-307) [ 1921 0 R /XYZ 60.307257 127.806726 0 ] (Code/OcrImage/:__span-0-308) [ 1921 0 R /XYZ 60.307257 114.406374 0 ] (Code/OcrImage/:__span-0-309) [ 1921 0 R /XYZ 60.307257 87.605670 0 ] (Code/OcrImage/:__span-0-31) [ 1909 0 R /XYZ 60.307257 265.423806 0 ] (Code/OcrImage/:__span-0-310) [ 1923 0 R /XYZ 60.307257 771.023622 0 ] (Code/OcrImage/:__span-0-311) [ 1923 0 R /XYZ 60.307257 757.623270 0 ] (Code/OcrImage/:__span-0-312) [ 1923 0 R /XYZ 60.307257 744.222918 0 ] (Code/OcrImage/:__span-0-313) [ 1923 0 R /XYZ 60.307257 730.822566 0 ] (Code/OcrImage/:__span-0-314) [ 1923 0 R /XYZ 60.307257 717.422214 0 ] (Code/OcrImage/:__span-0-315) [ 1923 0 R /XYZ 60.307257 704.021862 0 ] (Code/OcrImage/:__span-0-316) [ 1923 0 R /XYZ 60.307257 690.621510 0 ] (Code/OcrImage/:__span-0-317) [ 1923 0 R /XYZ 60.307257 677.221158 0 ] (Code/OcrImage/:__span-0-318) [ 1923 0 R /XYZ 60.307257 663.820806 0 ] (Code/OcrImage/:__span-0-319) [ 1923 0 R /XYZ 60.307257 637.020102 0 ] (Code/OcrImage/:__span-0-32) [ 1909 0 R /XYZ 60.307257 252.023454 0 ] (Code/OcrImage/:__span-0-320) [ 1923 0 R /XYZ 60.307257 623.619750 0 ] (Code/OcrImage/:__span-0-321) [ 1923 0 R /XYZ 60.307257 596.819046 0 ] (Code/OcrImage/:__span-0-322) [ 1923 0 R /XYZ 60.307257 583.418694 0 ] (Code/OcrImage/:__span-0-323) [ 1923 0 R /XYZ 60.307257 570.018342 0 ] (Code/OcrImage/:__span-0-324) [ 1923 0 R /XYZ 60.307257 556.617990 0 ] (Code/OcrImage/:__span-0-325) [ 1923 0 R /XYZ 60.307257 529.817286 0 ] (Code/OcrImage/:__span-0-326) [ 1923 0 R /XYZ 60.307257 503.016582 0 ] (Code/OcrImage/:__span-0-327) [ 1923 0 R /XYZ 60.307257 476.215878 0 ] (Code/OcrImage/:__span-0-328) [ 1923 0 R /XYZ 60.307257 449.415174 0 ] (Code/OcrImage/:__span-0-329) [ 1923 0 R /XYZ 60.307257 436.014822 0 ] (Code/OcrImage/:__span-0-33) [ 1909 0 R /XYZ 60.307257 238.623102 0 ] (Code/OcrImage/:__span-0-330) [ 1923 0 R /XYZ 60.307257 422.614470 0 ] (Code/OcrImage/:__span-0-331) [ 1923 0 R /XYZ 60.307257 409.214118 0 ] (Code/OcrImage/:__span-0-332) [ 1923 0 R /XYZ 60.307257 395.813766 0 ] (Code/OcrImage/:__span-0-333) [ 1923 0 R /XYZ 60.307257 382.413414 0 ] (Code/OcrImage/:__span-0-334) [ 1923 0 R /XYZ 60.307257 369.013062 0 ] (Code/OcrImage/:__span-0-335) [ 1923 0 R /XYZ 60.307257 355.612710 0 ] (Code/OcrImage/:__span-0-336) [ 1923 0 R /XYZ 60.307257 342.212358 0 ] (Code/OcrImage/:__span-0-337) [ 1923 0 R /XYZ 60.307257 328.812006 0 ] (Code/OcrImage/:__span-0-338) [ 1923 0 R /XYZ 60.307257 315.411654 0 ] (Code/OcrImage/:__span-0-339) [ 1923 0 R /XYZ 60.307257 302.011302 0 ] (Code/OcrImage/:__span-0-34) [ 1909 0 R /XYZ 60.307257 225.222750 0 ] (Code/OcrImage/:__span-0-340) [ 1923 0 R /XYZ 60.307257 288.610950 0 ] (Code/OcrImage/:__span-0-341) [ 1923 0 R /XYZ 60.307257 275.210598 0 ] (Code/OcrImage/:__span-0-342) [ 1923 0 R /XYZ 60.307257 261.810246 0 ] (Code/OcrImage/:__span-0-343) [ 1923 0 R /XYZ 60.307257 248.409894 0 ] (Code/OcrImage/:__span-0-344) [ 1923 0 R /XYZ 60.307257 235.009542 0 ] (Code/OcrImage/:__span-0-345) [ 1923 0 R /XYZ 60.307257 221.609190 0 ] (Code/OcrImage/:__span-0-346) [ 1923 0 R /XYZ 60.307257 208.208838 0 ] (Code/OcrImage/:__span-0-347) [ 1923 0 R /XYZ 60.307257 181.408134 0 ] (Code/OcrImage/:__span-0-348) [ 1923 0 R /XYZ 60.307257 168.007782 0 ] (Code/OcrImage/:__span-0-349) [ 1923 0 R /XYZ 60.307257 154.607430 0 ] (Code/OcrImage/:__span-0-35) [ 1909 0 R /XYZ 60.307257 211.822398 0 ] (Code/OcrImage/:__span-0-350) [ 1923 0 R /XYZ 60.307257 141.207078 0 ] (Code/OcrImage/:__span-0-351) [ 1923 0 R /XYZ 60.307257 127.806726 0 ] (Code/OcrImage/:__span-0-352) [ 1923 0 R /XYZ 60.307257 114.406374 0 ] (Code/OcrImage/:__span-0-353) [ 1923 0 R /XYZ 60.307257 101.006022 0 ] (Code/OcrImage/:__span-0-354) [ 1923 0 R /XYZ 60.307257 87.605670 0 ] (Code/OcrImage/:__span-0-355) [ 1925 0 R /XYZ 60.307257 771.023622 0 ] (Code/OcrImage/:__span-0-356) [ 1925 0 R /XYZ 60.307257 757.623270 0 ] (Code/OcrImage/:__span-0-357) [ 1925 0 R /XYZ 60.307257 744.222918 0 ] (Code/OcrImage/:__span-0-358) [ 1925 0 R /XYZ 60.307257 730.822566 0 ] (Code/OcrImage/:__span-0-359) [ 1925 0 R /XYZ 60.307257 717.422214 0 ] (Code/OcrImage/:__span-0-36) [ 1909 0 R /XYZ 60.307257 198.422046 0 ] (Code/OcrImage/:__span-0-360) [ 1925 0 R /XYZ 60.307257 704.021862 0 ] (Code/OcrImage/:__span-0-361) [ 1925 0 R /XYZ 60.307257 690.621510 0 ] (Code/OcrImage/:__span-0-362) [ 1925 0 R /XYZ 60.307257 677.221158 0 ] (Code/OcrImage/:__span-0-363) [ 1925 0 R /XYZ 60.307257 663.820806 0 ] (Code/OcrImage/:__span-0-364) [ 1925 0 R /XYZ 60.307257 650.420454 0 ] (Code/OcrImage/:__span-0-365) [ 1925 0 R /XYZ 60.307257 637.020102 0 ] (Code/OcrImage/:__span-0-366) [ 1925 0 R /XYZ 60.307257 623.619750 0 ] (Code/OcrImage/:__span-0-367) [ 1925 0 R /XYZ 60.307257 610.219398 0 ] (Code/OcrImage/:__span-0-368) [ 1925 0 R /XYZ 60.307257 596.819046 0 ] (Code/OcrImage/:__span-0-369) [ 1925 0 R /XYZ 60.307257 570.018342 0 ] (Code/OcrImage/:__span-0-37) [ 1909 0 R /XYZ 60.307257 185.021694 0 ] (Code/OcrImage/:__span-0-370) [ 1925 0 R /XYZ 60.307257 556.617990 0 ] (Code/OcrImage/:__span-0-371) [ 1925 0 R /XYZ 60.307257 543.217638 0 ] (Code/OcrImage/:__span-0-372) [ 1925 0 R /XYZ 60.307257 529.817286 0 ] (Code/OcrImage/:__span-0-373) [ 1925 0 R /XYZ 60.307257 516.416934 0 ] (Code/OcrImage/:__span-0-374) [ 1925 0 R /XYZ 60.307257 503.016582 0 ] (Code/OcrImage/:__span-0-375) [ 1925 0 R /XYZ 60.307257 489.616230 0 ] (Code/OcrImage/:__span-0-376) [ 1925 0 R /XYZ 60.307257 476.215878 0 ] (Code/OcrImage/:__span-0-377) [ 1925 0 R /XYZ 60.307257 462.815526 0 ] (Code/OcrImage/:__span-0-378) [ 1925 0 R /XYZ 60.307257 449.415174 0 ] (Code/OcrImage/:__span-0-379) [ 1925 0 R /XYZ 60.307257 436.014822 0 ] (Code/OcrImage/:__span-0-38) [ 1909 0 R /XYZ 60.307257 171.621342 0 ] (Code/OcrImage/:__span-0-380) [ 1925 0 R /XYZ 60.307257 422.614470 0 ] (Code/OcrImage/:__span-0-381) [ 1925 0 R /XYZ 60.307257 409.214118 0 ] (Code/OcrImage/:__span-0-382) [ 1925 0 R /XYZ 60.307257 395.813766 0 ] (Code/OcrImage/:__span-0-383) [ 1925 0 R /XYZ 60.307257 382.413414 0 ] (Code/OcrImage/:__span-0-384) [ 1925 0 R /XYZ 60.307257 369.013062 0 ] (Code/OcrImage/:__span-0-385) [ 1925 0 R /XYZ 60.307257 355.612710 0 ] (Code/OcrImage/:__span-0-386) [ 1925 0 R /XYZ 60.307257 342.212358 0 ] (Code/OcrImage/:__span-0-387) [ 1925 0 R /XYZ 60.307257 328.812006 0 ] (Code/OcrImage/:__span-0-388) [ 1925 0 R /XYZ 60.307257 315.411654 0 ] (Code/OcrImage/:__span-0-389) [ 1925 0 R /XYZ 60.307257 302.011302 0 ] (Code/OcrImage/:__span-0-39) [ 1909 0 R /XYZ 60.307257 158.220990 0 ] (Code/OcrImage/:__span-0-390) [ 1925 0 R /XYZ 60.307257 288.610950 0 ] (Code/OcrImage/:__span-0-391) [ 1925 0 R /XYZ 60.307257 275.210598 0 ] (Code/OcrImage/:__span-0-392) [ 1925 0 R /XYZ 60.307257 261.810246 0 ] (Code/OcrImage/:__span-0-393) [ 1925 0 R /XYZ 60.307257 248.409894 0 ] (Code/OcrImage/:__span-0-394) [ 1925 0 R /XYZ 60.307257 235.009542 0 ] (Code/OcrImage/:__span-0-395) [ 1925 0 R /XYZ 60.307257 221.609190 0 ] (Code/OcrImage/:__span-0-396) [ 1925 0 R /XYZ 60.307257 208.208838 0 ] (Code/OcrImage/:__span-0-397) [ 1925 0 R /XYZ 60.307257 194.808486 0 ] (Code/OcrImage/:__span-0-398) [ 1925 0 R /XYZ 60.307257 181.408134 0 ] (Code/OcrImage/:__span-0-399) [ 1925 0 R /XYZ 60.307257 168.007782 0 ] (Code/OcrImage/:__span-0-4) [ 1909 0 R /XYZ 60.307257 667.434366 0 ] (Code/OcrImage/:__span-0-40) [ 1909 0 R /XYZ 60.307257 144.820638 0 ] (Code/OcrImage/:__span-0-400) [ 1925 0 R /XYZ 60.307257 154.607430 0 ] (Code/OcrImage/:__span-0-401) [ 1925 0 R /XYZ 60.307257 141.207078 0 ] (Code/OcrImage/:__span-0-402) [ 1925 0 R /XYZ 60.307257 127.806726 0 ] (Code/OcrImage/:__span-0-403) [ 1925 0 R /XYZ 60.307257 114.406374 0 ] (Code/OcrImage/:__span-0-404) [ 1925 0 R /XYZ 60.307257 101.006022 0 ] (Code/OcrImage/:__span-0-405) [ 1927 0 R /XYZ 60.307257 771.023622 0 ] (Code/OcrImage/:__span-0-406) [ 1927 0 R /XYZ 60.307257 757.623270 0 ] (Code/OcrImage/:__span-0-407) [ 1927 0 R /XYZ 60.307257 744.222918 0 ] (Code/OcrImage/:__span-0-408) [ 1927 0 R /XYZ 60.307257 730.822566 0 ] (Code/OcrImage/:__span-0-409) [ 1927 0 R /XYZ 60.307257 717.422214 0 ] (Code/OcrImage/:__span-0-41) [ 1909 0 R /XYZ 60.307257 131.420286 0 ] (Code/OcrImage/:__span-0-410) [ 1927 0 R /XYZ 60.307257 704.021862 0 ] (Code/OcrImage/:__span-0-411) [ 1927 0 R /XYZ 60.307257 690.621510 0 ] (Code/OcrImage/:__span-0-412) [ 1927 0 R /XYZ 60.307257 677.221158 0 ] (Code/OcrImage/:__span-0-413) [ 1927 0 R /XYZ 60.307257 663.820806 0 ] (Code/OcrImage/:__span-0-414) [ 1927 0 R /XYZ 60.307257 650.420454 0 ] (Code/OcrImage/:__span-0-415) [ 1927 0 R /XYZ 60.307257 637.020102 0 ] (Code/OcrImage/:__span-0-416) [ 1927 0 R /XYZ 60.307257 623.619750 0 ] (Code/OcrImage/:__span-0-417) [ 1927 0 R /XYZ 60.307257 610.219398 0 ] (Code/OcrImage/:__span-0-418) [ 1927 0 R /XYZ 60.307257 583.418694 0 ] (Code/OcrImage/:__span-0-419) [ 1927 0 R /XYZ 60.307257 570.018342 0 ] (Code/OcrImage/:__span-0-42) [ 1909 0 R /XYZ 60.307257 118.019934 0 ] (Code/OcrImage/:__span-0-420) [ 1927 0 R /XYZ 60.307257 543.217638 0 ] (Code/OcrImage/:__span-0-421) [ 1927 0 R /XYZ 60.307257 529.817286 0 ] (Code/OcrImage/:__span-0-422) [ 1927 0 R /XYZ 60.307257 516.416934 0 ] (Code/OcrImage/:__span-0-423) [ 1927 0 R /XYZ 60.307257 503.016582 0 ] (Code/OcrImage/:__span-0-424) [ 1927 0 R /XYZ 60.307257 476.215878 0 ] (Code/OcrImage/:__span-0-425) [ 1927 0 R /XYZ 60.307257 449.415174 0 ] (Code/OcrImage/:__span-0-426) [ 1927 0 R /XYZ 60.307257 422.614470 0 ] (Code/OcrImage/:__span-0-427) [ 1927 0 R /XYZ 60.307257 409.214118 0 ] (Code/OcrImage/:__span-0-428) [ 1927 0 R /XYZ 60.307257 395.813766 0 ] (Code/OcrImage/:__span-0-429) [ 1927 0 R /XYZ 60.307257 382.413414 0 ] (Code/OcrImage/:__span-0-43) [ 1909 0 R /XYZ 60.307257 91.219230 0 ] (Code/OcrImage/:__span-0-430) [ 1927 0 R /XYZ 60.307257 369.013062 0 ] (Code/OcrImage/:__span-0-431) [ 1927 0 R /XYZ 60.307257 355.612710 0 ] (Code/OcrImage/:__span-0-432) [ 1927 0 R /XYZ 60.307257 342.212358 0 ] (Code/OcrImage/:__span-0-433) [ 1927 0 R /XYZ 60.307257 328.812006 0 ] (Code/OcrImage/:__span-0-434) [ 1927 0 R /XYZ 60.307257 315.411654 0 ] (Code/OcrImage/:__span-0-435) [ 1927 0 R /XYZ 60.307257 302.011302 0 ] (Code/OcrImage/:__span-0-436) [ 1927 0 R /XYZ 60.307257 288.610950 0 ] (Code/OcrImage/:__span-0-437) [ 1927 0 R /XYZ 60.307257 275.210598 0 ] (Code/OcrImage/:__span-0-438) [ 1927 0 R /XYZ 60.307257 261.810246 0 ] (Code/OcrImage/:__span-0-439) [ 1927 0 R /XYZ 60.307257 248.409894 0 ] (Code/OcrImage/:__span-0-44) [ 1911 0 R /XYZ 60.307257 771.023622 0 ] (Code/OcrImage/:__span-0-440) [ 1927 0 R /XYZ 60.307257 235.009542 0 ] (Code/OcrImage/:__span-0-441) [ 1927 0 R /XYZ 60.307257 221.609190 0 ] (Code/OcrImage/:__span-0-442) [ 1927 0 R /XYZ 60.307257 208.208838 0 ] (Code/OcrImage/:__span-0-443) [ 1927 0 R /XYZ 60.307257 194.808486 0 ] (Code/OcrImage/:__span-0-444) [ 1927 0 R /XYZ 60.307257 181.408134 0 ] (Code/OcrImage/:__span-0-445) [ 1927 0 R /XYZ 60.307257 168.007782 0 ] (Code/OcrImage/:__span-0-446) [ 1927 0 R /XYZ 60.307257 154.607430 0 ] (Code/OcrImage/:__span-0-447) [ 1927 0 R /XYZ 60.307257 141.207078 0 ] (Code/OcrImage/:__span-0-448) [ 1927 0 R /XYZ 60.307257 127.806726 0 ] (Code/OcrImage/:__span-0-449) [ 1927 0 R /XYZ 60.307257 114.406374 0 ] (Code/OcrImage/:__span-0-45) [ 1911 0 R /XYZ 60.307257 757.623270 0 ] (Code/OcrImage/:__span-0-450) [ 1927 0 R /XYZ 60.307257 87.605670 0 ] (Code/OcrImage/:__span-0-451) [ 1929 0 R /XYZ 60.307257 771.023622 0 ] (Code/OcrImage/:__span-0-452) [ 1929 0 R /XYZ 60.307257 757.623270 0 ] (Code/OcrImage/:__span-0-453) [ 1929 0 R /XYZ 60.307257 744.222918 0 ] (Code/OcrImage/:__span-0-454) [ 1929 0 R /XYZ 60.307257 730.822566 0 ] (Code/OcrImage/:__span-0-455) [ 1929 0 R /XYZ 60.307257 717.422214 0 ] (Code/OcrImage/:__span-0-456) [ 1929 0 R /XYZ 60.307257 704.021862 0 ] (Code/OcrImage/:__span-0-457) [ 1929 0 R /XYZ 60.307257 690.621510 0 ] (Code/OcrImage/:__span-0-458) [ 1929 0 R /XYZ 60.307257 677.221158 0 ] (Code/OcrImage/:__span-0-459) [ 1929 0 R /XYZ 60.307257 663.820806 0 ] (Code/OcrImage/:__span-0-46) [ 1911 0 R /XYZ 60.307257 744.222918 0 ] (Code/OcrImage/:__span-0-460) [ 1929 0 R /XYZ 60.307257 650.420454 0 ] (Code/OcrImage/:__span-0-461) [ 1929 0 R /XYZ 60.307257 637.020102 0 ] (Code/OcrImage/:__span-0-462) [ 1929 0 R /XYZ 60.307257 596.819046 0 ] (Code/OcrImage/:__span-0-463) [ 1929 0 R /XYZ 60.307257 583.418694 0 ] (Code/OcrImage/:__span-0-464) [ 1929 0 R /XYZ 60.307257 570.018342 0 ] (Code/OcrImage/:__span-0-465) [ 1929 0 R /XYZ 60.307257 556.617990 0 ] (Code/OcrImage/:__span-0-466) [ 1929 0 R /XYZ 60.307257 543.217638 0 ] (Code/OcrImage/:__span-0-467) [ 1929 0 R /XYZ 60.307257 516.416934 0 ] (Code/OcrImage/:__span-0-468) [ 1929 0 R /XYZ 60.307257 503.016582 0 ] (Code/OcrImage/:__span-0-469) [ 1929 0 R /XYZ 60.307257 489.616230 0 ] (Code/OcrImage/:__span-0-47) [ 1911 0 R /XYZ 60.307257 730.822566 0 ] (Code/OcrImage/:__span-0-470) [ 1929 0 R /XYZ 60.307257 476.215878 0 ] (Code/OcrImage/:__span-0-471) [ 1929 0 R /XYZ 60.307257 449.415174 0 ] (Code/OcrImage/:__span-0-472) [ 1929 0 R /XYZ 60.307257 422.614470 0 ] (Code/OcrImage/:__span-0-473) [ 1929 0 R /XYZ 60.307257 395.813766 0 ] (Code/OcrImage/:__span-0-474) [ 1929 0 R /XYZ 60.307257 382.413414 0 ] (Code/OcrImage/:__span-0-475) [ 1929 0 R /XYZ 60.307257 369.013062 0 ] (Code/OcrImage/:__span-0-476) [ 1929 0 R /XYZ 60.307257 355.612710 0 ] (Code/OcrImage/:__span-0-477) [ 1929 0 R /XYZ 60.307257 342.212358 0 ] (Code/OcrImage/:__span-0-478) [ 1929 0 R /XYZ 60.307257 328.812006 0 ] (Code/OcrImage/:__span-0-479) [ 1929 0 R /XYZ 60.307257 315.411654 0 ] (Code/OcrImage/:__span-0-48) [ 1911 0 R /XYZ 60.307257 704.021862 0 ] (Code/OcrImage/:__span-0-480) [ 1929 0 R /XYZ 60.307257 302.011302 0 ] (Code/OcrImage/:__span-0-481) [ 1929 0 R /XYZ 60.307257 288.610950 0 ] (Code/OcrImage/:__span-0-482) [ 1929 0 R /XYZ 60.307257 275.210598 0 ] (Code/OcrImage/:__span-0-483) [ 1929 0 R /XYZ 60.307257 261.810246 0 ] (Code/OcrImage/:__span-0-484) [ 1929 0 R /XYZ 60.307257 248.409894 0 ] (Code/OcrImage/:__span-0-485) [ 1929 0 R /XYZ 60.307257 235.009542 0 ] (Code/OcrImage/:__span-0-486) [ 1929 0 R /XYZ 60.307257 221.609190 0 ] (Code/OcrImage/:__span-0-487) [ 1929 0 R /XYZ 60.307257 208.208838 0 ] (Code/OcrImage/:__span-0-488) [ 1929 0 R /XYZ 60.307257 194.808486 0 ] (Code/OcrImage/:__span-0-489) [ 1929 0 R /XYZ 60.307257 181.408134 0 ] (Code/OcrImage/:__span-0-49) [ 1911 0 R /XYZ 60.307257 690.621510 0 ] (Code/OcrImage/:__span-0-490) [ 1929 0 R /XYZ 60.307257 168.007782 0 ] (Code/OcrImage/:__span-0-491) [ 1929 0 R /XYZ 60.307257 154.607430 0 ] (Code/OcrImage/:__span-0-492) [ 1929 0 R /XYZ 60.307257 141.207078 0 ] (Code/OcrImage/:__span-0-493) [ 1929 0 R /XYZ 60.307257 127.806726 0 ] (Code/OcrImage/:__span-0-494) [ 1929 0 R /XYZ 60.307257 114.406374 0 ] (Code/OcrImage/:__span-0-495) [ 1929 0 R /XYZ 60.307257 101.006022 0 ] (Code/OcrImage/:__span-0-496) [ 1931 0 R /XYZ 60.307257 771.023622 0 ] (Code/OcrImage/:__span-0-497) [ 1931 0 R /XYZ 60.307257 757.623270 0 ] (Code/OcrImage/:__span-0-498) [ 1931 0 R /XYZ 60.307257 744.222918 0 ] (Code/OcrImage/:__span-0-499) [ 1931 0 R /XYZ 60.307257 717.422214 0 ] (Code/OcrImage/:__span-0-5) [ 1909 0 R /XYZ 60.307257 654.034014 0 ] (Code/OcrImage/:__span-0-50) [ 1911 0 R /XYZ 60.307257 677.221158 0 ] (Code/OcrImage/:__span-0-500) [ 1931 0 R /XYZ 60.307257 704.021862 0 ] (Code/OcrImage/:__span-0-501) [ 1931 0 R /XYZ 60.307257 690.621510 0 ] (Code/OcrImage/:__span-0-502) [ 1931 0 R /XYZ 60.307257 677.221158 0 ] (Code/OcrImage/:__span-0-503) [ 1931 0 R /XYZ 60.307257 650.420454 0 ] (Code/OcrImage/:__span-0-504) [ 1931 0 R /XYZ 60.307257 637.020102 0 ] (Code/OcrImage/:__span-0-505) [ 1931 0 R /XYZ 60.307257 623.619750 0 ] (Code/OcrImage/:__span-0-506) [ 1931 0 R /XYZ 60.307257 610.219398 0 ] (Code/OcrImage/:__span-0-507) [ 1931 0 R /XYZ 60.307257 596.819046 0 ] (Code/OcrImage/:__span-0-508) [ 1931 0 R /XYZ 60.307257 570.018342 0 ] (Code/OcrImage/:__span-0-509) [ 1931 0 R /XYZ 60.307257 556.617990 0 ] (Code/OcrImage/:__span-0-51) [ 1911 0 R /XYZ 60.307257 663.820806 0 ] (Code/OcrImage/:__span-0-510) [ 1931 0 R /XYZ 60.307257 543.217638 0 ] (Code/OcrImage/:__span-0-511) [ 1931 0 R /XYZ 60.307257 529.817286 0 ] (Code/OcrImage/:__span-0-512) [ 1931 0 R /XYZ 60.307257 516.416934 0 ] (Code/OcrImage/:__span-0-513) [ 1931 0 R /XYZ 60.307257 503.016582 0 ] (Code/OcrImage/:__span-0-514) [ 1931 0 R /XYZ 60.307257 489.616230 0 ] (Code/OcrImage/:__span-0-515) [ 1931 0 R /XYZ 60.307257 476.215878 0 ] (Code/OcrImage/:__span-0-516) [ 1931 0 R /XYZ 60.307257 449.415174 0 ] (Code/OcrImage/:__span-0-517) [ 1931 0 R /XYZ 60.307257 436.014822 0 ] (Code/OcrImage/:__span-0-518) [ 1931 0 R /XYZ 60.307257 422.614470 0 ] (Code/OcrImage/:__span-0-519) [ 1931 0 R /XYZ 60.307257 409.214118 0 ] (Code/OcrImage/:__span-0-52) [ 1911 0 R /XYZ 60.307257 637.020102 0 ] (Code/OcrImage/:__span-0-520) [ 1931 0 R /XYZ 60.307257 395.813766 0 ] (Code/OcrImage/:__span-0-521) [ 1931 0 R /XYZ 60.307257 382.413414 0 ] (Code/OcrImage/:__span-0-522) [ 1931 0 R /XYZ 60.307257 369.013062 0 ] (Code/OcrImage/:__span-0-523) [ 1931 0 R /XYZ 60.307257 355.612710 0 ] (Code/OcrImage/:__span-0-524) [ 1931 0 R /XYZ 60.307257 342.212358 0 ] (Code/OcrImage/:__span-0-525) [ 1931 0 R /XYZ 60.307257 328.812006 0 ] (Code/OcrImage/:__span-0-526) [ 1931 0 R /XYZ 60.307257 315.411654 0 ] (Code/OcrImage/:__span-0-527) [ 1931 0 R /XYZ 60.307257 302.011302 0 ] (Code/OcrImage/:__span-0-528) [ 1931 0 R /XYZ 60.307257 288.610950 0 ] (Code/OcrImage/:__span-0-529) [ 1931 0 R /XYZ 60.307257 275.210598 0 ] (Code/OcrImage/:__span-0-53) [ 1911 0 R /XYZ 60.307257 623.619750 0 ] (Code/OcrImage/:__span-0-530) [ 1931 0 R /XYZ 60.307257 261.810246 0 ] (Code/OcrImage/:__span-0-531) [ 1931 0 R /XYZ 60.307257 248.409894 0 ] (Code/OcrImage/:__span-0-532) [ 1931 0 R /XYZ 60.307257 235.009542 0 ] (Code/OcrImage/:__span-0-533) [ 1931 0 R /XYZ 60.307257 221.609190 0 ] (Code/OcrImage/:__span-0-534) [ 1931 0 R /XYZ 60.307257 208.208838 0 ] (Code/OcrImage/:__span-0-535) [ 1931 0 R /XYZ 60.307257 181.408134 0 ] (Code/OcrImage/:__span-0-536) [ 1931 0 R /XYZ 60.307257 168.007782 0 ] (Code/OcrImage/:__span-0-537) [ 1931 0 R /XYZ 60.307257 154.607430 0 ] (Code/OcrImage/:__span-0-538) [ 1931 0 R /XYZ 60.307257 141.207078 0 ] (Code/OcrImage/:__span-0-539) [ 1931 0 R /XYZ 60.307257 127.806726 0 ] (Code/OcrImage/:__span-0-54) [ 1911 0 R /XYZ 60.307257 610.219398 0 ] (Code/OcrImage/:__span-0-540) [ 1931 0 R /XYZ 60.307257 114.406374 0 ] (Code/OcrImage/:__span-0-541) [ 1931 0 R /XYZ 60.307257 101.006022 0 ] (Code/OcrImage/:__span-0-542) [ 1931 0 R /XYZ 60.307257 87.605670 0 ] (Code/OcrImage/:__span-0-543) [ 1933 0 R /XYZ 60.307257 771.023622 0 ] (Code/OcrImage/:__span-0-544) [ 1933 0 R /XYZ 60.307257 757.623270 0 ] (Code/OcrImage/:__span-0-545) [ 1933 0 R /XYZ 60.307257 744.222918 0 ] (Code/OcrImage/:__span-0-546) [ 1933 0 R /XYZ 60.307257 730.822566 0 ] (Code/OcrImage/:__span-0-547) [ 1933 0 R /XYZ 60.307257 717.422214 0 ] (Code/OcrImage/:__span-0-548) [ 1933 0 R /XYZ 60.307257 704.021862 0 ] (Code/OcrImage/:__span-0-549) [ 1933 0 R /XYZ 60.307257 690.621510 0 ] (Code/OcrImage/:__span-0-55) [ 1911 0 R /XYZ 60.307257 583.418694 0 ] (Code/OcrImage/:__span-0-550) [ 1933 0 R /XYZ 60.307257 677.221158 0 ] (Code/OcrImage/:__span-0-551) [ 1933 0 R /XYZ 60.307257 663.820806 0 ] (Code/OcrImage/:__span-0-552) [ 1933 0 R /XYZ 60.307257 650.420454 0 ] (Code/OcrImage/:__span-0-553) [ 1933 0 R /XYZ 60.307257 637.020102 0 ] (Code/OcrImage/:__span-0-554) [ 1933 0 R /XYZ 60.307257 623.619750 0 ] (Code/OcrImage/:__span-0-555) [ 1933 0 R /XYZ 60.307257 610.219398 0 ] (Code/OcrImage/:__span-0-556) [ 1933 0 R /XYZ 60.307257 596.819046 0 ] (Code/OcrImage/:__span-0-557) [ 1933 0 R /XYZ 60.307257 583.418694 0 ] (Code/OcrImage/:__span-0-558) [ 1933 0 R /XYZ 60.307257 570.018342 0 ] (Code/OcrImage/:__span-0-559) [ 1933 0 R /XYZ 60.307257 543.217638 0 ] (Code/OcrImage/:__span-0-56) [ 1911 0 R /XYZ 60.307257 570.018342 0 ] (Code/OcrImage/:__span-0-560) [ 1933 0 R /XYZ 60.307257 529.817286 0 ] (Code/OcrImage/:__span-0-561) [ 1933 0 R /XYZ 60.307257 516.416934 0 ] (Code/OcrImage/:__span-0-562) [ 1933 0 R /XYZ 60.307257 503.016582 0 ] (Code/OcrImage/:__span-0-563) [ 1933 0 R /XYZ 60.307257 489.616230 0 ] (Code/OcrImage/:__span-0-564) [ 1933 0 R /XYZ 60.307257 476.215878 0 ] (Code/OcrImage/:__span-0-565) [ 1933 0 R /XYZ 60.307257 462.815526 0 ] (Code/OcrImage/:__span-0-566) [ 1933 0 R /XYZ 60.307257 449.415174 0 ] (Code/OcrImage/:__span-0-567) [ 1933 0 R /XYZ 60.307257 436.014822 0 ] (Code/OcrImage/:__span-0-568) [ 1933 0 R /XYZ 60.307257 422.614470 0 ] (Code/OcrImage/:__span-0-569) [ 1933 0 R /XYZ 60.307257 409.214118 0 ] (Code/OcrImage/:__span-0-57) [ 1911 0 R /XYZ 60.307257 556.617990 0 ] (Code/OcrImage/:__span-0-570) [ 1933 0 R /XYZ 60.307257 395.813766 0 ] (Code/OcrImage/:__span-0-571) [ 1933 0 R /XYZ 60.307257 382.413414 0 ] (Code/OcrImage/:__span-0-572) [ 1933 0 R /XYZ 60.307257 369.013062 0 ] (Code/OcrImage/:__span-0-573) [ 1933 0 R /XYZ 60.307257 355.612710 0 ] (Code/OcrImage/:__span-0-574) [ 1933 0 R /XYZ 60.307257 342.212358 0 ] (Code/OcrImage/:__span-0-575) [ 1933 0 R /XYZ 60.307257 315.411654 0 ] (Code/OcrImage/:__span-0-576) [ 1933 0 R /XYZ 60.307257 302.011302 0 ] (Code/OcrImage/:__span-0-577) [ 1933 0 R /XYZ 60.307257 275.210598 0 ] (Code/OcrImage/:__span-0-578) [ 1933 0 R /XYZ 60.307257 261.810246 0 ] (Code/OcrImage/:__span-0-579) [ 1933 0 R /XYZ 60.307257 248.409894 0 ] (Code/OcrImage/:__span-0-58) [ 1911 0 R /XYZ 60.307257 529.817286 0 ] (Code/OcrImage/:__span-0-580) [ 1933 0 R /XYZ 60.307257 235.009542 0 ] (Code/OcrImage/:__span-0-581) [ 1933 0 R /XYZ 60.307257 221.609190 0 ] (Code/OcrImage/:__span-0-582) [ 1933 0 R /XYZ 60.307257 208.208838 0 ] (Code/OcrImage/:__span-0-583) [ 1933 0 R /XYZ 60.307257 194.808486 0 ] (Code/OcrImage/:__span-0-584) [ 1933 0 R /XYZ 60.307257 181.408134 0 ] (Code/OcrImage/:__span-0-585) [ 1933 0 R /XYZ 60.307257 168.007782 0 ] (Code/OcrImage/:__span-0-586) [ 1933 0 R /XYZ 60.307257 141.207078 0 ] (Code/OcrImage/:__span-0-587) [ 1933 0 R /XYZ 60.307257 127.806726 0 ] (Code/OcrImage/:__span-0-588) [ 1933 0 R /XYZ 60.307257 101.006022 0 ] (Code/OcrImage/:__span-0-589) [ 1933 0 R /XYZ 60.307257 87.605670 0 ] (Code/OcrImage/:__span-0-59) [ 1911 0 R /XYZ 60.307257 516.416934 0 ] (Code/OcrImage/:__span-0-590) [ 1935 0 R /XYZ 60.307257 771.023622 0 ] (Code/OcrImage/:__span-0-591) [ 1935 0 R /XYZ 60.307257 757.623270 0 ] (Code/OcrImage/:__span-0-592) [ 1935 0 R /XYZ 60.307257 744.222918 0 ] (Code/OcrImage/:__span-0-593) [ 1935 0 R /XYZ 60.307257 730.822566 0 ] (Code/OcrImage/:__span-0-594) [ 1935 0 R /XYZ 60.307257 717.422214 0 ] (Code/OcrImage/:__span-0-595) [ 1935 0 R /XYZ 60.307257 704.021862 0 ] (Code/OcrImage/:__span-0-596) [ 1935 0 R /XYZ 60.307257 690.621510 0 ] (Code/OcrImage/:__span-0-597) [ 1935 0 R /XYZ 60.307257 677.221158 0 ] (Code/OcrImage/:__span-0-598) [ 1935 0 R /XYZ 60.307257 663.820806 0 ] (Code/OcrImage/:__span-0-599) [ 1935 0 R /XYZ 60.307257 650.420454 0 ] (Code/OcrImage/:__span-0-6) [ 1909 0 R /XYZ 60.307257 640.633662 0 ] (Code/OcrImage/:__span-0-60) [ 1911 0 R /XYZ 60.307257 503.016582 0 ] (Code/OcrImage/:__span-0-600) [ 1935 0 R /XYZ 60.307257 637.020102 0 ] (Code/OcrImage/:__span-0-601) [ 1935 0 R /XYZ 60.307257 623.619750 0 ] (Code/OcrImage/:__span-0-602) [ 1935 0 R /XYZ 60.307257 610.219398 0 ] (Code/OcrImage/:__span-0-603) [ 1935 0 R /XYZ 60.307257 596.819046 0 ] (Code/OcrImage/:__span-0-604) [ 1935 0 R /XYZ 60.307257 583.418694 0 ] (Code/OcrImage/:__span-0-605) [ 1935 0 R /XYZ 60.307257 570.018342 0 ] (Code/OcrImage/:__span-0-606) [ 1935 0 R /XYZ 60.307257 556.617990 0 ] (Code/OcrImage/:__span-0-607) [ 1935 0 R /XYZ 60.307257 543.217638 0 ] (Code/OcrImage/:__span-0-608) [ 1935 0 R /XYZ 60.307257 529.817286 0 ] (Code/OcrImage/:__span-0-609) [ 1935 0 R /XYZ 60.307257 516.416934 0 ] (Code/OcrImage/:__span-0-61) [ 1911 0 R /XYZ 60.307257 476.215878 0 ] (Code/OcrImage/:__span-0-610) [ 1935 0 R /XYZ 60.307257 503.016582 0 ] (Code/OcrImage/:__span-0-611) [ 1935 0 R /XYZ 60.307257 489.616230 0 ] (Code/OcrImage/:__span-0-612) [ 1935 0 R /XYZ 60.307257 476.215878 0 ] (Code/OcrImage/:__span-0-613) [ 1935 0 R /XYZ 60.307257 462.815526 0 ] (Code/OcrImage/:__span-0-614) [ 1935 0 R /XYZ 60.307257 449.415174 0 ] (Code/OcrImage/:__span-0-615) [ 1935 0 R /XYZ 60.307257 436.014822 0 ] (Code/OcrImage/:__span-0-616) [ 1935 0 R /XYZ 60.307257 422.614470 0 ] (Code/OcrImage/:__span-0-617) [ 1935 0 R /XYZ 60.307257 395.813766 0 ] (Code/OcrImage/:__span-0-618) [ 1935 0 R /XYZ 60.307257 369.013062 0 ] (Code/OcrImage/:__span-0-619) [ 1935 0 R /XYZ 60.307257 355.612710 0 ] (Code/OcrImage/:__span-0-62) [ 1911 0 R /XYZ 60.307257 462.815526 0 ] (Code/OcrImage/:__span-0-620) [ 1935 0 R /XYZ 60.307257 342.212358 0 ] (Code/OcrImage/:__span-0-621) [ 1935 0 R /XYZ 60.307257 328.812006 0 ] (Code/OcrImage/:__span-0-622) [ 1935 0 R /XYZ 60.307257 315.411654 0 ] (Code/OcrImage/:__span-0-623) [ 1935 0 R /XYZ 60.307257 302.011302 0 ] (Code/OcrImage/:__span-0-624) [ 1935 0 R /XYZ 60.307257 288.610950 0 ] (Code/OcrImage/:__span-0-625) [ 1935 0 R /XYZ 60.307257 275.210598 0 ] (Code/OcrImage/:__span-0-626) [ 1935 0 R /XYZ 60.307257 261.810246 0 ] (Code/OcrImage/:__span-0-627) [ 1935 0 R /XYZ 60.307257 248.409894 0 ] (Code/OcrImage/:__span-0-628) [ 1935 0 R /XYZ 60.307257 235.009542 0 ] (Code/OcrImage/:__span-0-629) [ 1935 0 R /XYZ 60.307257 221.609190 0 ] (Code/OcrImage/:__span-0-63) [ 1911 0 R /XYZ 60.307257 449.415174 0 ] (Code/OcrImage/:__span-0-630) [ 1935 0 R /XYZ 60.307257 208.208838 0 ] (Code/OcrImage/:__span-0-631) [ 1935 0 R /XYZ 60.307257 194.808486 0 ] (Code/OcrImage/:__span-0-632) [ 1935 0 R /XYZ 60.307257 181.408134 0 ] (Code/OcrImage/:__span-0-633) [ 1935 0 R /XYZ 60.307257 168.007782 0 ] (Code/OcrImage/:__span-0-634) [ 1935 0 R /XYZ 60.307257 141.207078 0 ] (Code/OcrImage/:__span-0-635) [ 1935 0 R /XYZ 60.307257 127.806726 0 ] (Code/OcrImage/:__span-0-636) [ 1935 0 R /XYZ 60.307257 101.006022 0 ] (Code/OcrImage/:__span-0-637) [ 1935 0 R /XYZ 60.307257 87.605670 0 ] (Code/OcrImage/:__span-0-638) [ 1937 0 R /XYZ 60.307257 771.023622 0 ] (Code/OcrImage/:__span-0-639) [ 1937 0 R /XYZ 60.307257 757.623270 0 ] (Code/OcrImage/:__span-0-64) [ 1911 0 R /XYZ 60.307257 422.614470 0 ] (Code/OcrImage/:__span-0-640) [ 1937 0 R /XYZ 60.307257 744.222918 0 ] (Code/OcrImage/:__span-0-641) [ 1937 0 R /XYZ 60.307257 730.822566 0 ] (Code/OcrImage/:__span-0-642) [ 1937 0 R /XYZ 60.307257 717.422214 0 ] (Code/OcrImage/:__span-0-643) [ 1937 0 R /XYZ 60.307257 704.021862 0 ] (Code/OcrImage/:__span-0-644) [ 1937 0 R /XYZ 60.307257 690.621510 0 ] (Code/OcrImage/:__span-0-645) [ 1937 0 R /XYZ 60.307257 663.820806 0 ] (Code/OcrImage/:__span-0-646) [ 1937 0 R /XYZ 60.307257 650.420454 0 ] (Code/OcrImage/:__span-0-647) [ 1937 0 R /XYZ 60.307257 623.619750 0 ] (Code/OcrImage/:__span-0-648) [ 1937 0 R /XYZ 60.307257 610.219398 0 ] (Code/OcrImage/:__span-0-649) [ 1937 0 R /XYZ 60.307257 596.819046 0 ] (Code/OcrImage/:__span-0-65) [ 1911 0 R /XYZ 60.307257 409.214118 0 ] (Code/OcrImage/:__span-0-650) [ 1937 0 R /XYZ 60.307257 583.418694 0 ] (Code/OcrImage/:__span-0-651) [ 1937 0 R /XYZ 60.307257 570.018342 0 ] (Code/OcrImage/:__span-0-652) [ 1937 0 R /XYZ 60.307257 556.617990 0 ] (Code/OcrImage/:__span-0-653) [ 1937 0 R /XYZ 60.307257 543.217638 0 ] (Code/OcrImage/:__span-0-654) [ 1937 0 R /XYZ 60.307257 529.817286 0 ] (Code/OcrImage/:__span-0-655) [ 1937 0 R /XYZ 60.307257 516.416934 0 ] (Code/OcrImage/:__span-0-656) [ 1937 0 R /XYZ 60.307257 503.016582 0 ] (Code/OcrImage/:__span-0-657) [ 1937 0 R /XYZ 60.307257 489.616230 0 ] (Code/OcrImage/:__span-0-658) [ 1937 0 R /XYZ 60.307257 476.215878 0 ] (Code/OcrImage/:__span-0-659) [ 1937 0 R /XYZ 60.307257 462.815526 0 ] (Code/OcrImage/:__span-0-66) [ 1911 0 R /XYZ 60.307257 395.813766 0 ] (Code/OcrImage/:__span-0-660) [ 1937 0 R /XYZ 60.307257 449.415174 0 ] (Code/OcrImage/:__span-0-661) [ 1937 0 R /XYZ 60.307257 436.014822 0 ] (Code/OcrImage/:__span-0-662) [ 1937 0 R /XYZ 60.307257 422.614470 0 ] (Code/OcrImage/:__span-0-663) [ 1937 0 R /XYZ 60.307257 409.214118 0 ] (Code/OcrImage/:__span-0-664) [ 1937 0 R /XYZ 60.307257 395.813766 0 ] (Code/OcrImage/:__span-0-665) [ 1937 0 R /XYZ 60.307257 382.413414 0 ] (Code/OcrImage/:__span-0-666) [ 1937 0 R /XYZ 60.307257 369.013062 0 ] (Code/OcrImage/:__span-0-667) [ 1937 0 R /XYZ 60.307257 355.612710 0 ] (Code/OcrImage/:__span-0-668) [ 1937 0 R /XYZ 60.307257 342.212358 0 ] (Code/OcrImage/:__span-0-669) [ 1937 0 R /XYZ 60.307257 328.812006 0 ] (Code/OcrImage/:__span-0-67) [ 1911 0 R /XYZ 60.307257 369.013062 0 ] (Code/OcrImage/:__span-0-670) [ 1937 0 R /XYZ 60.307257 315.411654 0 ] (Code/OcrImage/:__span-0-671) [ 1937 0 R /XYZ 60.307257 302.011302 0 ] (Code/OcrImage/:__span-0-672) [ 1937 0 R /XYZ 60.307257 288.610950 0 ] (Code/OcrImage/:__span-0-673) [ 1937 0 R /XYZ 60.307257 275.210598 0 ] (Code/OcrImage/:__span-0-68) [ 1911 0 R /XYZ 60.307257 355.612710 0 ] (Code/OcrImage/:__span-0-69) [ 1911 0 R /XYZ 60.307257 342.212358 0 ] (Code/OcrImage/:__span-0-7) [ 1909 0 R /XYZ 60.307257 627.233310 0 ] (Code/OcrImage/:__span-0-70) [ 1911 0 R /XYZ 60.307257 315.411654 0 ] (Code/OcrImage/:__span-0-71) [ 1911 0 R /XYZ 60.307257 302.011302 0 ] (Code/OcrImage/:__span-0-72) [ 1911 0 R /XYZ 60.307257 288.610950 0 ] (Code/OcrImage/:__span-0-73) [ 1911 0 R /XYZ 60.307257 261.810246 0 ] (Code/OcrImage/:__span-0-74) [ 1911 0 R /XYZ 60.307257 248.409894 0 ] (Code/OcrImage/:__span-0-75) [ 1911 0 R /XYZ 60.307257 235.009542 0 ] (Code/OcrImage/:__span-0-76) [ 1911 0 R /XYZ 60.307257 208.208838 0 ] (Code/OcrImage/:__span-0-77) [ 1911 0 R /XYZ 60.307257 194.808486 0 ] (Code/OcrImage/:__span-0-78) [ 1911 0 R /XYZ 60.307257 181.408134 0 ] (Code/OcrImage/:__span-0-79) [ 1911 0 R /XYZ 60.307257 154.607430 0 ] (Code/OcrImage/:__span-0-8) [ 1909 0 R /XYZ 60.307257 613.832958 0 ] (Code/OcrImage/:__span-0-80) [ 1911 0 R /XYZ 60.307257 141.207078 0 ] (Code/OcrImage/:__span-0-81) [ 1911 0 R /XYZ 60.307257 127.806726 0 ] (Code/OcrImage/:__span-0-82) [ 1911 0 R /XYZ 60.307257 101.006022 0 ] (Code/OcrImage/:__span-0-83) [ 1911 0 R /XYZ 60.307257 87.605670 0 ] (Code/OcrImage/:__span-0-84) [ 1913 0 R /XYZ 60.307257 771.023622 0 ] (Code/OcrImage/:__span-0-85) [ 1913 0 R /XYZ 60.307257 744.222918 0 ] (Code/OcrImage/:__span-0-86) [ 1913 0 R /XYZ 60.307257 730.822566 0 ] (Code/OcrImage/:__span-0-87) [ 1913 0 R /XYZ 60.307257 717.422214 0 ] (Code/OcrImage/:__span-0-88) [ 1913 0 R /XYZ 60.307257 690.621510 0 ] (Code/OcrImage/:__span-0-89) [ 1913 0 R /XYZ 60.307257 677.221158 0 ] (Code/OcrImage/:__span-0-9) [ 1909 0 R /XYZ 60.307257 600.432606 0 ] (Code/OcrImage/:__span-0-90) [ 1913 0 R /XYZ 60.307257 663.820806 0 ] (Code/OcrImage/:__span-0-91) [ 1913 0 R /XYZ 60.307257 637.020102 0 ] (Code/OcrImage/:__span-0-92) [ 1913 0 R /XYZ 60.307257 623.619750 0 ] (Code/OcrImage/:__span-0-93) [ 1913 0 R /XYZ 60.307257 610.219398 0 ] (Code/OcrImage/:__span-0-94) [ 1913 0 R /XYZ 60.307257 583.418694 0 ] (Code/OcrImage/:__span-0-95) [ 1913 0 R /XYZ 60.307257 570.018342 0 ] (Code/OcrImage/:__span-0-96) [ 1913 0 R /XYZ 60.307257 556.617990 0 ] (Code/OcrImage/:__span-0-97) [ 1913 0 R /XYZ 60.307257 543.217638 0 ] (Code/OcrImage/:__span-0-98) [ 1913 0 R /XYZ 60.307257 529.817286 0 ] (Code/OcrImage/:__span-0-99) [ 1913 0 R /XYZ 60.307257 516.416934 0 ] (Code/OcrImage/:ocrimagecs) [ 1909 0 R /XYZ 39.386457 747.563622 0 ] (Code/Program/:) [ 1825 0 R /XYZ 39.386457 747.563622 0 ] (Code/Program/:__span-0-1) [ 1825 0 R /XYZ 60.307257 707.635422 0 ] (Code/Program/:__span-0-10) [ 1825 0 R /XYZ 60.307257 587.032254 0 ] (Code/Program/:__span-0-11) [ 1825 0 R /XYZ 60.307257 573.631902 0 ] (Code/Program/:__span-0-12) [ 1825 0 R /XYZ 60.307257 560.231550 0 ] (Code/Program/:__span-0-13) [ 1825 0 R /XYZ 60.307257 546.831198 0 ] (Code/Program/:__span-0-14) [ 1825 0 R /XYZ 60.307257 533.430846 0 ] (Code/Program/:__span-0-15) [ 1825 0 R /XYZ 60.307257 520.030494 0 ] (Code/Program/:__span-0-16) [ 1825 0 R /XYZ 60.307257 506.630142 0 ] (Code/Program/:__span-0-17) [ 1825 0 R /XYZ 60.307257 493.229790 0 ] (Code/Program/:__span-0-18) [ 1825 0 R /XYZ 60.307257 479.829438 0 ] (Code/Program/:__span-0-19) [ 1825 0 R /XYZ 60.307257 466.429086 0 ] (Code/Program/:__span-0-2) [ 1825 0 R /XYZ 60.307257 694.235070 0 ] (Code/Program/:__span-0-20) [ 1825 0 R /XYZ 60.307257 453.028734 0 ] (Code/Program/:__span-0-21) [ 1825 0 R /XYZ 60.307257 439.628382 0 ] (Code/Program/:__span-0-22) [ 1825 0 R /XYZ 60.307257 426.228030 0 ] (Code/Program/:__span-0-3) [ 1825 0 R /XYZ 60.307257 680.834718 0 ] (Code/Program/:__span-0-4) [ 1825 0 R /XYZ 60.307257 667.434366 0 ] (Code/Program/:__span-0-5) [ 1825 0 R /XYZ 60.307257 654.034014 0 ] (Code/Program/:__span-0-6) [ 1825 0 R /XYZ 60.307257 640.633662 0 ] (Code/Program/:__span-0-7) [ 1825 0 R /XYZ 60.307257 627.233310 0 ] (Code/Program/:__span-0-8) [ 1825 0 R /XYZ 60.307257 613.832958 0 ] (Code/Program/:__span-0-9) [ 1825 0 R /XYZ 60.307257 600.432606 0 ] (Code/Program/:programcs) [ 1825 0 R /XYZ 39.386457 747.563622 0 ] (Code/Reader/:) [ 1939 0 R /XYZ 39.386457 747.563622 0 ] (Code/Reader/:__span-0-1) [ 1939 0 R /XYZ 60.307257 707.635422 0 ] (Code/Reader/:__span-0-10) [ 1939 0 R /XYZ 60.307257 587.032254 0 ] (Code/Reader/:__span-0-100) [ 1943 0 R /XYZ 60.307257 529.817286 0 ] (Code/Reader/:__span-0-101) [ 1943 0 R /XYZ 60.307257 516.416934 0 ] (Code/Reader/:__span-0-102) [ 1943 0 R /XYZ 60.307257 503.016582 0 ] (Code/Reader/:__span-0-103) [ 1943 0 R /XYZ 60.307257 489.616230 0 ] (Code/Reader/:__span-0-104) [ 1943 0 R /XYZ 60.307257 476.215878 0 ] (Code/Reader/:__span-0-105) [ 1943 0 R /XYZ 60.307257 462.815526 0 ] (Code/Reader/:__span-0-106) [ 1943 0 R /XYZ 60.307257 449.415174 0 ] (Code/Reader/:__span-0-107) [ 1943 0 R /XYZ 60.307257 422.614470 0 ] (Code/Reader/:__span-0-108) [ 1943 0 R /XYZ 60.307257 395.813766 0 ] (Code/Reader/:__span-0-109) [ 1943 0 R /XYZ 60.307257 382.413414 0 ] (Code/Reader/:__span-0-11) [ 1939 0 R /XYZ 60.307257 573.631902 0 ] (Code/Reader/:__span-0-110) [ 1943 0 R /XYZ 60.307257 369.013062 0 ] (Code/Reader/:__span-0-111) [ 1943 0 R /XYZ 60.307257 355.612710 0 ] (Code/Reader/:__span-0-112) [ 1943 0 R /XYZ 60.307257 342.212358 0 ] (Code/Reader/:__span-0-113) [ 1943 0 R /XYZ 60.307257 328.812006 0 ] (Code/Reader/:__span-0-114) [ 1943 0 R /XYZ 60.307257 315.411654 0 ] (Code/Reader/:__span-0-115) [ 1943 0 R /XYZ 60.307257 302.011302 0 ] (Code/Reader/:__span-0-116) [ 1943 0 R /XYZ 60.307257 288.610950 0 ] (Code/Reader/:__span-0-117) [ 1943 0 R /XYZ 60.307257 275.210598 0 ] (Code/Reader/:__span-0-118) [ 1943 0 R /XYZ 60.307257 248.409894 0 ] (Code/Reader/:__span-0-119) [ 1943 0 R /XYZ 60.307257 235.009542 0 ] (Code/Reader/:__span-0-12) [ 1939 0 R /XYZ 60.307257 560.231550 0 ] (Code/Reader/:__span-0-120) [ 1943 0 R /XYZ 60.307257 221.609190 0 ] (Code/Reader/:__span-0-121) [ 1943 0 R /XYZ 60.307257 208.208838 0 ] (Code/Reader/:__span-0-122) [ 1943 0 R /XYZ 60.307257 194.808486 0 ] (Code/Reader/:__span-0-123) [ 1943 0 R /XYZ 60.307257 181.408134 0 ] (Code/Reader/:__span-0-124) [ 1943 0 R /XYZ 60.307257 168.007782 0 ] (Code/Reader/:__span-0-125) [ 1943 0 R /XYZ 60.307257 154.607430 0 ] (Code/Reader/:__span-0-126) [ 1943 0 R /XYZ 60.307257 141.207078 0 ] (Code/Reader/:__span-0-127) [ 1943 0 R /XYZ 60.307257 127.806726 0 ] (Code/Reader/:__span-0-128) [ 1943 0 R /XYZ 60.307257 101.006022 0 ] (Code/Reader/:__span-0-129) [ 1943 0 R /XYZ 60.307257 87.605670 0 ] (Code/Reader/:__span-0-13) [ 1939 0 R /XYZ 60.307257 546.831198 0 ] (Code/Reader/:__span-0-130) [ 1945 0 R /XYZ 60.307257 771.023622 0 ] (Code/Reader/:__span-0-131) [ 1945 0 R /XYZ 60.307257 757.623270 0 ] (Code/Reader/:__span-0-132) [ 1945 0 R /XYZ 60.307257 744.222918 0 ] (Code/Reader/:__span-0-133) [ 1945 0 R /XYZ 60.307257 730.822566 0 ] (Code/Reader/:__span-0-134) [ 1945 0 R /XYZ 60.307257 717.422214 0 ] (Code/Reader/:__span-0-135) [ 1945 0 R /XYZ 60.307257 704.021862 0 ] (Code/Reader/:__span-0-136) [ 1945 0 R /XYZ 60.307257 690.621510 0 ] (Code/Reader/:__span-0-137) [ 1945 0 R /XYZ 60.307257 677.221158 0 ] (Code/Reader/:__span-0-138) [ 1945 0 R /XYZ 60.307257 650.420454 0 ] (Code/Reader/:__span-0-139) [ 1945 0 R /XYZ 60.307257 637.020102 0 ] (Code/Reader/:__span-0-14) [ 1939 0 R /XYZ 60.307257 533.430846 0 ] (Code/Reader/:__span-0-140) [ 1945 0 R /XYZ 60.307257 623.619750 0 ] (Code/Reader/:__span-0-141) [ 1945 0 R /XYZ 60.307257 610.219398 0 ] (Code/Reader/:__span-0-142) [ 1945 0 R /XYZ 60.307257 596.819046 0 ] (Code/Reader/:__span-0-143) [ 1945 0 R /XYZ 60.307257 583.418694 0 ] (Code/Reader/:__span-0-144) [ 1945 0 R /XYZ 60.307257 570.018342 0 ] (Code/Reader/:__span-0-145) [ 1945 0 R /XYZ 60.307257 556.617990 0 ] (Code/Reader/:__span-0-146) [ 1945 0 R /XYZ 60.307257 543.217638 0 ] (Code/Reader/:__span-0-147) [ 1945 0 R /XYZ 60.307257 529.817286 0 ] (Code/Reader/:__span-0-148) [ 1945 0 R /XYZ 60.307257 503.016582 0 ] (Code/Reader/:__span-0-149) [ 1945 0 R /XYZ 60.307257 489.616230 0 ] (Code/Reader/:__span-0-15) [ 1939 0 R /XYZ 60.307257 520.030494 0 ] (Code/Reader/:__span-0-150) [ 1945 0 R /XYZ 60.307257 476.215878 0 ] (Code/Reader/:__span-0-151) [ 1945 0 R /XYZ 60.307257 462.815526 0 ] (Code/Reader/:__span-0-152) [ 1945 0 R /XYZ 60.307257 449.415174 0 ] (Code/Reader/:__span-0-153) [ 1945 0 R /XYZ 60.307257 436.014822 0 ] (Code/Reader/:__span-0-154) [ 1945 0 R /XYZ 60.307257 422.614470 0 ] (Code/Reader/:__span-0-155) [ 1945 0 R /XYZ 60.307257 409.214118 0 ] (Code/Reader/:__span-0-156) [ 1945 0 R /XYZ 60.307257 395.813766 0 ] (Code/Reader/:__span-0-157) [ 1945 0 R /XYZ 60.307257 382.413414 0 ] (Code/Reader/:__span-0-158) [ 1945 0 R /XYZ 60.307257 355.612710 0 ] (Code/Reader/:__span-0-159) [ 1945 0 R /XYZ 60.307257 342.212358 0 ] (Code/Reader/:__span-0-16) [ 1939 0 R /XYZ 60.307257 506.630142 0 ] (Code/Reader/:__span-0-160) [ 1945 0 R /XYZ 60.307257 328.812006 0 ] (Code/Reader/:__span-0-161) [ 1945 0 R /XYZ 60.307257 315.411654 0 ] (Code/Reader/:__span-0-162) [ 1945 0 R /XYZ 60.307257 302.011302 0 ] (Code/Reader/:__span-0-163) [ 1945 0 R /XYZ 60.307257 288.610950 0 ] (Code/Reader/:__span-0-164) [ 1945 0 R /XYZ 60.307257 275.210598 0 ] (Code/Reader/:__span-0-165) [ 1945 0 R /XYZ 60.307257 261.810246 0 ] (Code/Reader/:__span-0-166) [ 1945 0 R /XYZ 60.307257 248.409894 0 ] (Code/Reader/:__span-0-167) [ 1945 0 R /XYZ 60.307257 235.009542 0 ] (Code/Reader/:__span-0-168) [ 1945 0 R /XYZ 60.307257 208.208838 0 ] (Code/Reader/:__span-0-169) [ 1945 0 R /XYZ 60.307257 194.808486 0 ] (Code/Reader/:__span-0-17) [ 1939 0 R /XYZ 60.307257 493.229790 0 ] (Code/Reader/:__span-0-170) [ 1945 0 R /XYZ 60.307257 181.408134 0 ] (Code/Reader/:__span-0-171) [ 1945 0 R /XYZ 60.307257 168.007782 0 ] (Code/Reader/:__span-0-172) [ 1945 0 R /XYZ 60.307257 154.607430 0 ] (Code/Reader/:__span-0-173) [ 1945 0 R /XYZ 60.307257 141.207078 0 ] (Code/Reader/:__span-0-174) [ 1945 0 R /XYZ 60.307257 127.806726 0 ] (Code/Reader/:__span-0-175) [ 1945 0 R /XYZ 60.307257 114.406374 0 ] (Code/Reader/:__span-0-176) [ 1945 0 R /XYZ 60.307257 101.006022 0 ] (Code/Reader/:__span-0-177) [ 1945 0 R /XYZ 60.307257 87.605670 0 ] (Code/Reader/:__span-0-178) [ 1947 0 R /XYZ 60.307257 757.623270 0 ] (Code/Reader/:__span-0-179) [ 1947 0 R /XYZ 60.307257 744.222918 0 ] (Code/Reader/:__span-0-18) [ 1939 0 R /XYZ 60.307257 479.829438 0 ] (Code/Reader/:__span-0-180) [ 1947 0 R /XYZ 60.307257 730.822566 0 ] (Code/Reader/:__span-0-181) [ 1947 0 R /XYZ 60.307257 717.422214 0 ] (Code/Reader/:__span-0-182) [ 1947 0 R /XYZ 60.307257 704.021862 0 ] (Code/Reader/:__span-0-183) [ 1947 0 R /XYZ 60.307257 690.621510 0 ] (Code/Reader/:__span-0-184) [ 1947 0 R /XYZ 60.307257 677.221158 0 ] (Code/Reader/:__span-0-185) [ 1947 0 R /XYZ 60.307257 663.820806 0 ] (Code/Reader/:__span-0-186) [ 1947 0 R /XYZ 60.307257 650.420454 0 ] (Code/Reader/:__span-0-187) [ 1947 0 R /XYZ 60.307257 637.020102 0 ] (Code/Reader/:__span-0-188) [ 1947 0 R /XYZ 60.307257 623.619750 0 ] (Code/Reader/:__span-0-189) [ 1947 0 R /XYZ 60.307257 610.219398 0 ] (Code/Reader/:__span-0-19) [ 1939 0 R /XYZ 60.307257 466.429086 0 ] (Code/Reader/:__span-0-190) [ 1947 0 R /XYZ 60.307257 596.819046 0 ] (Code/Reader/:__span-0-191) [ 1947 0 R /XYZ 60.307257 583.418694 0 ] (Code/Reader/:__span-0-192) [ 1947 0 R /XYZ 60.307257 570.018342 0 ] (Code/Reader/:__span-0-193) [ 1947 0 R /XYZ 60.307257 556.617990 0 ] (Code/Reader/:__span-0-194) [ 1947 0 R /XYZ 60.307257 543.217638 0 ] (Code/Reader/:__span-0-195) [ 1947 0 R /XYZ 60.307257 529.817286 0 ] (Code/Reader/:__span-0-196) [ 1947 0 R /XYZ 60.307257 516.416934 0 ] (Code/Reader/:__span-0-197) [ 1947 0 R /XYZ 60.307257 503.016582 0 ] (Code/Reader/:__span-0-198) [ 1947 0 R /XYZ 60.307257 489.616230 0 ] (Code/Reader/:__span-0-199) [ 1947 0 R /XYZ 60.307257 476.215878 0 ] (Code/Reader/:__span-0-2) [ 1939 0 R /XYZ 60.307257 694.235070 0 ] (Code/Reader/:__span-0-20) [ 1939 0 R /XYZ 60.307257 453.028734 0 ] (Code/Reader/:__span-0-200) [ 1947 0 R /XYZ 60.307257 449.415174 0 ] (Code/Reader/:__span-0-201) [ 1947 0 R /XYZ 60.307257 436.014822 0 ] (Code/Reader/:__span-0-202) [ 1947 0 R /XYZ 60.307257 422.614470 0 ] (Code/Reader/:__span-0-203) [ 1947 0 R /XYZ 60.307257 409.214118 0 ] (Code/Reader/:__span-0-204) [ 1947 0 R /XYZ 60.307257 395.813766 0 ] (Code/Reader/:__span-0-205) [ 1947 0 R /XYZ 60.307257 382.413414 0 ] (Code/Reader/:__span-0-206) [ 1947 0 R /XYZ 60.307257 369.013062 0 ] (Code/Reader/:__span-0-207) [ 1947 0 R /XYZ 60.307257 355.612710 0 ] (Code/Reader/:__span-0-208) [ 1947 0 R /XYZ 60.307257 342.212358 0 ] (Code/Reader/:__span-0-209) [ 1947 0 R /XYZ 60.307257 328.812006 0 ] (Code/Reader/:__span-0-21) [ 1939 0 R /XYZ 60.307257 439.628382 0 ] (Code/Reader/:__span-0-210) [ 1947 0 R /XYZ 60.307257 315.411654 0 ] (Code/Reader/:__span-0-211) [ 1947 0 R /XYZ 60.307257 302.011302 0 ] (Code/Reader/:__span-0-212) [ 1947 0 R /XYZ 60.307257 288.610950 0 ] (Code/Reader/:__span-0-213) [ 1947 0 R /XYZ 60.307257 275.210598 0 ] (Code/Reader/:__span-0-214) [ 1947 0 R /XYZ 60.307257 261.810246 0 ] (Code/Reader/:__span-0-215) [ 1947 0 R /XYZ 60.307257 248.409894 0 ] (Code/Reader/:__span-0-216) [ 1947 0 R /XYZ 60.307257 235.009542 0 ] (Code/Reader/:__span-0-217) [ 1947 0 R /XYZ 60.307257 221.609190 0 ] (Code/Reader/:__span-0-218) [ 1947 0 R /XYZ 60.307257 208.208838 0 ] (Code/Reader/:__span-0-219) [ 1947 0 R /XYZ 60.307257 194.808486 0 ] (Code/Reader/:__span-0-22) [ 1939 0 R /XYZ 60.307257 426.228030 0 ] (Code/Reader/:__span-0-220) [ 1947 0 R /XYZ 60.307257 181.408134 0 ] (Code/Reader/:__span-0-221) [ 1947 0 R /XYZ 60.307257 168.007782 0 ] (Code/Reader/:__span-0-222) [ 1947 0 R /XYZ 60.307257 154.607430 0 ] (Code/Reader/:__span-0-223) [ 1947 0 R /XYZ 60.307257 141.207078 0 ] (Code/Reader/:__span-0-224) [ 1947 0 R /XYZ 60.307257 127.806726 0 ] (Code/Reader/:__span-0-225) [ 1947 0 R /XYZ 60.307257 114.406374 0 ] (Code/Reader/:__span-0-226) [ 1947 0 R /XYZ 60.307257 87.605670 0 ] (Code/Reader/:__span-0-227) [ 1949 0 R /XYZ 60.307257 771.023622 0 ] (Code/Reader/:__span-0-228) [ 1949 0 R /XYZ 60.307257 757.623270 0 ] (Code/Reader/:__span-0-229) [ 1949 0 R /XYZ 60.307257 744.222918 0 ] (Code/Reader/:__span-0-23) [ 1939 0 R /XYZ 60.307257 412.827678 0 ] (Code/Reader/:__span-0-230) [ 1949 0 R /XYZ 60.307257 730.822566 0 ] (Code/Reader/:__span-0-231) [ 1949 0 R /XYZ 60.307257 717.422214 0 ] (Code/Reader/:__span-0-232) [ 1949 0 R /XYZ 60.307257 704.021862 0 ] (Code/Reader/:__span-0-233) [ 1949 0 R /XYZ 60.307257 690.621510 0 ] (Code/Reader/:__span-0-234) [ 1949 0 R /XYZ 60.307257 677.221158 0 ] (Code/Reader/:__span-0-235) [ 1949 0 R /XYZ 60.307257 663.820806 0 ] (Code/Reader/:__span-0-236) [ 1949 0 R /XYZ 60.307257 650.420454 0 ] (Code/Reader/:__span-0-237) [ 1949 0 R /XYZ 60.307257 637.020102 0 ] (Code/Reader/:__span-0-238) [ 1949 0 R /XYZ 60.307257 623.619750 0 ] (Code/Reader/:__span-0-239) [ 1949 0 R /XYZ 60.307257 610.219398 0 ] (Code/Reader/:__span-0-24) [ 1939 0 R /XYZ 60.307257 399.427326 0 ] (Code/Reader/:__span-0-240) [ 1949 0 R /XYZ 60.307257 596.819046 0 ] (Code/Reader/:__span-0-241) [ 1949 0 R /XYZ 60.307257 570.018342 0 ] (Code/Reader/:__span-0-242) [ 1949 0 R /XYZ 60.307257 543.217638 0 ] (Code/Reader/:__span-0-243) [ 1949 0 R /XYZ 60.307257 529.817286 0 ] (Code/Reader/:__span-0-244) [ 1949 0 R /XYZ 60.307257 503.016582 0 ] (Code/Reader/:__span-0-245) [ 1949 0 R /XYZ 60.307257 489.616230 0 ] (Code/Reader/:__span-0-246) [ 1949 0 R /XYZ 60.307257 476.215878 0 ] (Code/Reader/:__span-0-247) [ 1949 0 R /XYZ 60.307257 462.815526 0 ] (Code/Reader/:__span-0-248) [ 1949 0 R /XYZ 60.307257 449.415174 0 ] (Code/Reader/:__span-0-249) [ 1949 0 R /XYZ 60.307257 436.014822 0 ] (Code/Reader/:__span-0-25) [ 1939 0 R /XYZ 60.307257 386.026974 0 ] (Code/Reader/:__span-0-250) [ 1949 0 R /XYZ 60.307257 422.614470 0 ] (Code/Reader/:__span-0-251) [ 1949 0 R /XYZ 60.307257 395.813766 0 ] (Code/Reader/:__span-0-252) [ 1949 0 R /XYZ 60.307257 369.013062 0 ] (Code/Reader/:__span-0-253) [ 1949 0 R /XYZ 60.307257 355.612710 0 ] (Code/Reader/:__span-0-254) [ 1949 0 R /XYZ 60.307257 342.212358 0 ] (Code/Reader/:__span-0-255) [ 1949 0 R /XYZ 60.307257 315.411654 0 ] (Code/Reader/:__span-0-256) [ 1949 0 R /XYZ 60.307257 288.610950 0 ] (Code/Reader/:__span-0-257) [ 1949 0 R /XYZ 60.307257 275.210598 0 ] (Code/Reader/:__span-0-258) [ 1949 0 R /XYZ 60.307257 248.409894 0 ] (Code/Reader/:__span-0-259) [ 1949 0 R /XYZ 60.307257 221.609190 0 ] (Code/Reader/:__span-0-26) [ 1939 0 R /XYZ 60.307257 372.626622 0 ] (Code/Reader/:__span-0-260) [ 1949 0 R /XYZ 60.307257 194.808486 0 ] (Code/Reader/:__span-0-261) [ 1949 0 R /XYZ 60.307257 168.007782 0 ] (Code/Reader/:__span-0-262) [ 1949 0 R /XYZ 60.307257 154.607430 0 ] (Code/Reader/:__span-0-263) [ 1949 0 R /XYZ 60.307257 141.207078 0 ] (Code/Reader/:__span-0-264) [ 1949 0 R /XYZ 60.307257 114.406374 0 ] (Code/Reader/:__span-0-265) [ 1949 0 R /XYZ 60.307257 101.006022 0 ] (Code/Reader/:__span-0-266) [ 1949 0 R /XYZ 60.307257 87.605670 0 ] (Code/Reader/:__span-0-267) [ 1951 0 R /XYZ 60.307257 771.023622 0 ] (Code/Reader/:__span-0-268) [ 1951 0 R /XYZ 60.307257 757.623270 0 ] (Code/Reader/:__span-0-269) [ 1951 0 R /XYZ 60.307257 730.822566 0 ] (Code/Reader/:__span-0-27) [ 1939 0 R /XYZ 60.307257 345.825918 0 ] (Code/Reader/:__span-0-270) [ 1951 0 R /XYZ 60.307257 690.621510 0 ] (Code/Reader/:__span-0-271) [ 1951 0 R /XYZ 60.307257 677.221158 0 ] (Code/Reader/:__span-0-272) [ 1951 0 R /XYZ 60.307257 650.420454 0 ] (Code/Reader/:__span-0-273) [ 1951 0 R /XYZ 60.307257 623.619750 0 ] (Code/Reader/:__span-0-274) [ 1951 0 R /XYZ 60.307257 610.219398 0 ] (Code/Reader/:__span-0-275) [ 1951 0 R /XYZ 60.307257 596.819046 0 ] (Code/Reader/:__span-0-276) [ 1951 0 R /XYZ 60.307257 583.418694 0 ] (Code/Reader/:__span-0-277) [ 1951 0 R /XYZ 60.307257 570.018342 0 ] (Code/Reader/:__span-0-278) [ 1951 0 R /XYZ 60.307257 556.617990 0 ] (Code/Reader/:__span-0-279) [ 1951 0 R /XYZ 60.307257 543.217638 0 ] (Code/Reader/:__span-0-28) [ 1939 0 R /XYZ 60.307257 332.425566 0 ] (Code/Reader/:__span-0-280) [ 1951 0 R /XYZ 60.307257 529.817286 0 ] (Code/Reader/:__span-0-281) [ 1951 0 R /XYZ 60.307257 516.416934 0 ] (Code/Reader/:__span-0-282) [ 1951 0 R /XYZ 60.307257 489.616230 0 ] (Code/Reader/:__span-0-283) [ 1951 0 R /XYZ 60.307257 476.215878 0 ] (Code/Reader/:__span-0-284) [ 1951 0 R /XYZ 60.307257 462.815526 0 ] (Code/Reader/:__span-0-285) [ 1951 0 R /XYZ 60.307257 449.415174 0 ] (Code/Reader/:__span-0-286) [ 1951 0 R /XYZ 60.307257 436.014822 0 ] (Code/Reader/:__span-0-287) [ 1951 0 R /XYZ 60.307257 409.214118 0 ] (Code/Reader/:__span-0-288) [ 1951 0 R /XYZ 60.307257 395.813766 0 ] (Code/Reader/:__span-0-289) [ 1951 0 R /XYZ 60.307257 382.413414 0 ] (Code/Reader/:__span-0-29) [ 1939 0 R /XYZ 60.307257 319.025214 0 ] (Code/Reader/:__span-0-290) [ 1951 0 R /XYZ 60.307257 369.013062 0 ] (Code/Reader/:__span-0-291) [ 1951 0 R /XYZ 60.307257 355.612710 0 ] (Code/Reader/:__span-0-292) [ 1951 0 R /XYZ 60.307257 342.212358 0 ] (Code/Reader/:__span-0-293) [ 1951 0 R /XYZ 60.307257 328.812006 0 ] (Code/Reader/:__span-0-294) [ 1951 0 R /XYZ 60.307257 315.411654 0 ] (Code/Reader/:__span-0-295) [ 1951 0 R /XYZ 60.307257 302.011302 0 ] (Code/Reader/:__span-0-296) [ 1951 0 R /XYZ 60.307257 288.610950 0 ] (Code/Reader/:__span-0-297) [ 1951 0 R /XYZ 60.307257 275.210598 0 ] (Code/Reader/:__span-0-298) [ 1951 0 R /XYZ 60.307257 248.409894 0 ] (Code/Reader/:__span-0-299) [ 1951 0 R /XYZ 60.307257 235.009542 0 ] (Code/Reader/:__span-0-3) [ 1939 0 R /XYZ 60.307257 680.834718 0 ] (Code/Reader/:__span-0-30) [ 1939 0 R /XYZ 60.307257 292.224510 0 ] (Code/Reader/:__span-0-300) [ 1951 0 R /XYZ 60.307257 208.208838 0 ] (Code/Reader/:__span-0-301) [ 1951 0 R /XYZ 60.307257 194.808486 0 ] (Code/Reader/:__span-0-302) [ 1951 0 R /XYZ 60.307257 181.408134 0 ] (Code/Reader/:__span-0-303) [ 1951 0 R /XYZ 60.307257 168.007782 0 ] (Code/Reader/:__span-0-304) [ 1951 0 R /XYZ 60.307257 154.607430 0 ] (Code/Reader/:__span-0-305) [ 1951 0 R /XYZ 60.307257 141.207078 0 ] (Code/Reader/:__span-0-306) [ 1951 0 R /XYZ 60.307257 127.806726 0 ] (Code/Reader/:__span-0-307) [ 1951 0 R /XYZ 60.307257 114.406374 0 ] (Code/Reader/:__span-0-308) [ 1951 0 R /XYZ 60.307257 101.006022 0 ] (Code/Reader/:__span-0-309) [ 1951 0 R /XYZ 60.307257 87.605670 0 ] (Code/Reader/:__span-0-31) [ 1939 0 R /XYZ 60.307257 278.824158 0 ] (Code/Reader/:__span-0-310) [ 1953 0 R /XYZ 60.307257 771.023622 0 ] (Code/Reader/:__span-0-311) [ 1953 0 R /XYZ 60.307257 757.623270 0 ] (Code/Reader/:__span-0-312) [ 1953 0 R /XYZ 60.307257 730.822566 0 ] (Code/Reader/:__span-0-313) [ 1953 0 R /XYZ 60.307257 717.422214 0 ] (Code/Reader/:__span-0-314) [ 1953 0 R /XYZ 60.307257 704.021862 0 ] (Code/Reader/:__span-0-315) [ 1953 0 R /XYZ 60.307257 690.621510 0 ] (Code/Reader/:__span-0-316) [ 1953 0 R /XYZ 60.307257 677.221158 0 ] (Code/Reader/:__span-0-317) [ 1953 0 R /XYZ 60.307257 663.820806 0 ] (Code/Reader/:__span-0-318) [ 1953 0 R /XYZ 60.307257 650.420454 0 ] (Code/Reader/:__span-0-319) [ 1953 0 R /XYZ 60.307257 637.020102 0 ] (Code/Reader/:__span-0-32) [ 1939 0 R /XYZ 60.307257 265.423806 0 ] (Code/Reader/:__span-0-320) [ 1953 0 R /XYZ 60.307257 623.619750 0 ] (Code/Reader/:__span-0-321) [ 1953 0 R /XYZ 60.307257 610.219398 0 ] (Code/Reader/:__span-0-322) [ 1953 0 R /XYZ 60.307257 596.819046 0 ] (Code/Reader/:__span-0-323) [ 1953 0 R /XYZ 60.307257 583.418694 0 ] (Code/Reader/:__span-0-324) [ 1953 0 R /XYZ 60.307257 570.018342 0 ] (Code/Reader/:__span-0-325) [ 1953 0 R /XYZ 60.307257 556.617990 0 ] (Code/Reader/:__span-0-326) [ 1953 0 R /XYZ 60.307257 543.217638 0 ] (Code/Reader/:__span-0-327) [ 1953 0 R /XYZ 60.307257 529.817286 0 ] (Code/Reader/:__span-0-328) [ 1953 0 R /XYZ 60.307257 516.416934 0 ] (Code/Reader/:__span-0-329) [ 1953 0 R /XYZ 60.307257 489.616230 0 ] (Code/Reader/:__span-0-33) [ 1939 0 R /XYZ 60.307257 252.023454 0 ] (Code/Reader/:__span-0-330) [ 1953 0 R /XYZ 60.307257 476.215878 0 ] (Code/Reader/:__span-0-331) [ 1953 0 R /XYZ 60.307257 462.815526 0 ] (Code/Reader/:__span-0-332) [ 1953 0 R /XYZ 60.307257 449.415174 0 ] (Code/Reader/:__span-0-333) [ 1953 0 R /XYZ 60.307257 436.014822 0 ] (Code/Reader/:__span-0-334) [ 1953 0 R /XYZ 60.307257 422.614470 0 ] (Code/Reader/:__span-0-335) [ 1953 0 R /XYZ 60.307257 409.214118 0 ] (Code/Reader/:__span-0-336) [ 1953 0 R /XYZ 60.307257 395.813766 0 ] (Code/Reader/:__span-0-337) [ 1953 0 R /XYZ 60.307257 382.413414 0 ] (Code/Reader/:__span-0-338) [ 1953 0 R /XYZ 60.307257 369.013062 0 ] (Code/Reader/:__span-0-34) [ 1939 0 R /XYZ 60.307257 238.623102 0 ] (Code/Reader/:__span-0-35) [ 1939 0 R /XYZ 60.307257 225.222750 0 ] (Code/Reader/:__span-0-36) [ 1939 0 R /XYZ 60.307257 211.822398 0 ] (Code/Reader/:__span-0-37) [ 1939 0 R /XYZ 60.307257 198.422046 0 ] (Code/Reader/:__span-0-38) [ 1939 0 R /XYZ 60.307257 171.621342 0 ] (Code/Reader/:__span-0-39) [ 1939 0 R /XYZ 60.307257 158.220990 0 ] (Code/Reader/:__span-0-4) [ 1939 0 R /XYZ 60.307257 667.434366 0 ] (Code/Reader/:__span-0-40) [ 1939 0 R /XYZ 60.307257 131.420286 0 ] (Code/Reader/:__span-0-41) [ 1939 0 R /XYZ 60.307257 104.619582 0 ] (Code/Reader/:__span-0-42) [ 1939 0 R /XYZ 60.307257 91.219230 0 ] (Code/Reader/:__span-0-43) [ 1941 0 R /XYZ 60.307257 757.623270 0 ] (Code/Reader/:__span-0-44) [ 1941 0 R /XYZ 60.307257 730.822566 0 ] (Code/Reader/:__span-0-45) [ 1941 0 R /XYZ 60.307257 717.422214 0 ] (Code/Reader/:__span-0-46) [ 1941 0 R /XYZ 60.307257 704.021862 0 ] (Code/Reader/:__span-0-47) [ 1941 0 R /XYZ 60.307257 690.621510 0 ] (Code/Reader/:__span-0-48) [ 1941 0 R /XYZ 60.307257 677.221158 0 ] (Code/Reader/:__span-0-49) [ 1941 0 R /XYZ 60.307257 663.820806 0 ] (Code/Reader/:__span-0-5) [ 1939 0 R /XYZ 60.307257 654.034014 0 ] (Code/Reader/:__span-0-50) [ 1941 0 R /XYZ 60.307257 650.420454 0 ] (Code/Reader/:__span-0-51) [ 1941 0 R /XYZ 60.307257 637.020102 0 ] (Code/Reader/:__span-0-52) [ 1941 0 R /XYZ 60.307257 623.619750 0 ] (Code/Reader/:__span-0-53) [ 1941 0 R /XYZ 60.307257 610.219398 0 ] (Code/Reader/:__span-0-54) [ 1941 0 R /XYZ 60.307257 596.819046 0 ] (Code/Reader/:__span-0-55) [ 1941 0 R /XYZ 60.307257 583.418694 0 ] (Code/Reader/:__span-0-56) [ 1941 0 R /XYZ 60.307257 570.018342 0 ] (Code/Reader/:__span-0-57) [ 1941 0 R /XYZ 60.307257 556.617990 0 ] (Code/Reader/:__span-0-58) [ 1941 0 R /XYZ 60.307257 543.217638 0 ] (Code/Reader/:__span-0-59) [ 1941 0 R /XYZ 60.307257 529.817286 0 ] (Code/Reader/:__span-0-6) [ 1939 0 R /XYZ 60.307257 640.633662 0 ] (Code/Reader/:__span-0-60) [ 1941 0 R /XYZ 60.307257 516.416934 0 ] (Code/Reader/:__span-0-61) [ 1941 0 R /XYZ 60.307257 503.016582 0 ] (Code/Reader/:__span-0-62) [ 1941 0 R /XYZ 60.307257 489.616230 0 ] (Code/Reader/:__span-0-63) [ 1941 0 R /XYZ 60.307257 476.215878 0 ] (Code/Reader/:__span-0-64) [ 1941 0 R /XYZ 60.307257 462.815526 0 ] (Code/Reader/:__span-0-65) [ 1941 0 R /XYZ 60.307257 449.415174 0 ] (Code/Reader/:__span-0-66) [ 1941 0 R /XYZ 60.307257 436.014822 0 ] (Code/Reader/:__span-0-67) [ 1941 0 R /XYZ 60.307257 422.614470 0 ] (Code/Reader/:__span-0-68) [ 1941 0 R /XYZ 60.307257 409.214118 0 ] (Code/Reader/:__span-0-69) [ 1941 0 R /XYZ 60.307257 395.813766 0 ] (Code/Reader/:__span-0-7) [ 1939 0 R /XYZ 60.307257 627.233310 0 ] (Code/Reader/:__span-0-70) [ 1941 0 R /XYZ 60.307257 382.413414 0 ] (Code/Reader/:__span-0-71) [ 1941 0 R /XYZ 60.307257 369.013062 0 ] (Code/Reader/:__span-0-72) [ 1941 0 R /XYZ 60.307257 355.612710 0 ] (Code/Reader/:__span-0-73) [ 1941 0 R /XYZ 60.307257 328.812006 0 ] (Code/Reader/:__span-0-74) [ 1941 0 R /XYZ 60.307257 315.411654 0 ] (Code/Reader/:__span-0-75) [ 1941 0 R /XYZ 60.307257 302.011302 0 ] (Code/Reader/:__span-0-76) [ 1941 0 R /XYZ 60.307257 288.610950 0 ] (Code/Reader/:__span-0-77) [ 1941 0 R /XYZ 60.307257 275.210598 0 ] (Code/Reader/:__span-0-78) [ 1941 0 R /XYZ 60.307257 261.810246 0 ] (Code/Reader/:__span-0-79) [ 1941 0 R /XYZ 60.307257 248.409894 0 ] (Code/Reader/:__span-0-8) [ 1939 0 R /XYZ 60.307257 613.832958 0 ] (Code/Reader/:__span-0-80) [ 1941 0 R /XYZ 60.307257 221.609190 0 ] (Code/Reader/:__span-0-81) [ 1941 0 R /XYZ 60.307257 208.208838 0 ] (Code/Reader/:__span-0-82) [ 1941 0 R /XYZ 60.307257 194.808486 0 ] (Code/Reader/:__span-0-83) [ 1941 0 R /XYZ 60.307257 168.007782 0 ] (Code/Reader/:__span-0-84) [ 1941 0 R /XYZ 60.307257 141.207078 0 ] (Code/Reader/:__span-0-85) [ 1941 0 R /XYZ 60.307257 114.406374 0 ] (Code/Reader/:__span-0-86) [ 1941 0 R /XYZ 60.307257 87.605670 0 ] (Code/Reader/:__span-0-87) [ 1943 0 R /XYZ 60.307257 771.023622 0 ] (Code/Reader/:__span-0-88) [ 1943 0 R /XYZ 60.307257 744.222918 0 ] (Code/Reader/:__span-0-89) [ 1943 0 R /XYZ 60.307257 730.822566 0 ] (Code/Reader/:__span-0-9) [ 1939 0 R /XYZ 60.307257 600.432606 0 ] (Code/Reader/:__span-0-90) [ 1943 0 R /XYZ 60.307257 704.021862 0 ] (Code/Reader/:__span-0-91) [ 1943 0 R /XYZ 60.307257 690.621510 0 ] (Code/Reader/:__span-0-92) [ 1943 0 R /XYZ 60.307257 663.820806 0 ] (Code/Reader/:__span-0-93) [ 1943 0 R /XYZ 60.307257 650.420454 0 ] (Code/Reader/:__span-0-94) [ 1943 0 R /XYZ 60.307257 623.619750 0 ] (Code/Reader/:__span-0-95) [ 1943 0 R /XYZ 60.307257 610.219398 0 ] (Code/Reader/:__span-0-96) [ 1943 0 R /XYZ 60.307257 596.819046 0 ] (Code/Reader/:__span-0-97) [ 1943 0 R /XYZ 60.307257 583.418694 0 ] (Code/Reader/:__span-0-98) [ 1943 0 R /XYZ 60.307257 556.617990 0 ] (Code/Reader/:__span-0-99) [ 1943 0 R /XYZ 60.307257 543.217638 0 ] (Code/Reader/:readercs) [ 1939 0 R /XYZ 39.386457 747.563622 0 ] (Code/Settings.Designer/:) [ 1827 0 R /XYZ 39.386457 747.563622 0 ] (Code/Settings.Designer/:__span-0-1) [ 1827 0 R /XYZ 60.307257 707.635422 0 ] (Code/Settings.Designer/:__span-0-10) [ 1827 0 R /XYZ 60.307257 587.032254 0 ] (Code/Settings.Designer/:__span-0-100) [ 1831 0 R /XYZ 60.307257 637.020102 0 ] (Code/Settings.Designer/:__span-0-101) [ 1831 0 R /XYZ 60.307257 623.619750 0 ] (Code/Settings.Designer/:__span-0-102) [ 1831 0 R /XYZ 60.307257 610.219398 0 ] (Code/Settings.Designer/:__span-0-103) [ 1831 0 R /XYZ 60.307257 596.819046 0 ] (Code/Settings.Designer/:__span-0-104) [ 1831 0 R /XYZ 60.307257 583.418694 0 ] (Code/Settings.Designer/:__span-0-105) [ 1831 0 R /XYZ 60.307257 570.018342 0 ] (Code/Settings.Designer/:__span-0-106) [ 1831 0 R /XYZ 60.307257 543.217638 0 ] (Code/Settings.Designer/:__span-0-107) [ 1831 0 R /XYZ 60.307257 529.817286 0 ] (Code/Settings.Designer/:__span-0-108) [ 1831 0 R /XYZ 60.307257 516.416934 0 ] (Code/Settings.Designer/:__span-0-109) [ 1831 0 R /XYZ 60.307257 503.016582 0 ] (Code/Settings.Designer/:__span-0-11) [ 1827 0 R /XYZ 60.307257 573.631902 0 ] (Code/Settings.Designer/:__span-0-110) [ 1831 0 R /XYZ 60.307257 476.215878 0 ] (Code/Settings.Designer/:__span-0-111) [ 1831 0 R /XYZ 60.307257 462.815526 0 ] (Code/Settings.Designer/:__span-0-112) [ 1831 0 R /XYZ 60.307257 422.614470 0 ] (Code/Settings.Designer/:__span-0-113) [ 1831 0 R /XYZ 60.307257 409.214118 0 ] (Code/Settings.Designer/:__span-0-114) [ 1831 0 R /XYZ 60.307257 395.813766 0 ] (Code/Settings.Designer/:__span-0-115) [ 1831 0 R /XYZ 60.307257 382.413414 0 ] (Code/Settings.Designer/:__span-0-116) [ 1831 0 R /XYZ 60.307257 369.013062 0 ] (Code/Settings.Designer/:__span-0-117) [ 1831 0 R /XYZ 60.307257 355.612710 0 ] (Code/Settings.Designer/:__span-0-118) [ 1831 0 R /XYZ 60.307257 328.812006 0 ] (Code/Settings.Designer/:__span-0-119) [ 1831 0 R /XYZ 60.307257 315.411654 0 ] (Code/Settings.Designer/:__span-0-12) [ 1827 0 R /XYZ 60.307257 560.231550 0 ] (Code/Settings.Designer/:__span-0-120) [ 1831 0 R /XYZ 60.307257 302.011302 0 ] (Code/Settings.Designer/:__span-0-121) [ 1831 0 R /XYZ 60.307257 288.610950 0 ] (Code/Settings.Designer/:__span-0-122) [ 1831 0 R /XYZ 60.307257 248.409894 0 ] (Code/Settings.Designer/:__span-0-123) [ 1831 0 R /XYZ 60.307257 221.609190 0 ] (Code/Settings.Designer/:__span-0-124) [ 1831 0 R /XYZ 60.307257 208.208838 0 ] (Code/Settings.Designer/:__span-0-125) [ 1831 0 R /XYZ 60.307257 194.808486 0 ] (Code/Settings.Designer/:__span-0-126) [ 1831 0 R /XYZ 60.307257 181.408134 0 ] (Code/Settings.Designer/:__span-0-127) [ 1831 0 R /XYZ 60.307257 168.007782 0 ] (Code/Settings.Designer/:__span-0-128) [ 1831 0 R /XYZ 60.307257 154.607430 0 ] (Code/Settings.Designer/:__span-0-129) [ 1831 0 R /XYZ 60.307257 127.806726 0 ] (Code/Settings.Designer/:__span-0-13) [ 1827 0 R /XYZ 60.307257 546.831198 0 ] (Code/Settings.Designer/:__span-0-130) [ 1831 0 R /XYZ 60.307257 114.406374 0 ] (Code/Settings.Designer/:__span-0-131) [ 1831 0 R /XYZ 60.307257 101.006022 0 ] (Code/Settings.Designer/:__span-0-132) [ 1831 0 R /XYZ 60.307257 87.605670 0 ] (Code/Settings.Designer/:__span-0-133) [ 1833 0 R /XYZ 60.307257 771.023622 0 ] (Code/Settings.Designer/:__span-0-134) [ 1833 0 R /XYZ 60.307257 757.623270 0 ] (Code/Settings.Designer/:__span-0-135) [ 1833 0 R /XYZ 60.307257 744.222918 0 ] (Code/Settings.Designer/:__span-0-136) [ 1833 0 R /XYZ 60.307257 730.822566 0 ] (Code/Settings.Designer/:__span-0-137) [ 1833 0 R /XYZ 60.307257 717.422214 0 ] (Code/Settings.Designer/:__span-0-138) [ 1833 0 R /XYZ 60.307257 690.621510 0 ] (Code/Settings.Designer/:__span-0-139) [ 1833 0 R /XYZ 60.307257 677.221158 0 ] (Code/Settings.Designer/:__span-0-14) [ 1827 0 R /XYZ 60.307257 520.030494 0 ] (Code/Settings.Designer/:__span-0-140) [ 1833 0 R /XYZ 60.307257 663.820806 0 ] (Code/Settings.Designer/:__span-0-141) [ 1833 0 R /XYZ 60.307257 650.420454 0 ] (Code/Settings.Designer/:__span-0-142) [ 1833 0 R /XYZ 60.307257 623.619750 0 ] (Code/Settings.Designer/:__span-0-143) [ 1833 0 R /XYZ 60.307257 610.219398 0 ] (Code/Settings.Designer/:__span-0-144) [ 1833 0 R /XYZ 60.307257 583.418694 0 ] (Code/Settings.Designer/:__span-0-145) [ 1833 0 R /XYZ 60.307257 556.617990 0 ] (Code/Settings.Designer/:__span-0-146) [ 1833 0 R /XYZ 60.307257 543.217638 0 ] (Code/Settings.Designer/:__span-0-147) [ 1833 0 R /XYZ 60.307257 529.817286 0 ] (Code/Settings.Designer/:__span-0-148) [ 1833 0 R /XYZ 60.307257 516.416934 0 ] (Code/Settings.Designer/:__span-0-149) [ 1833 0 R /XYZ 60.307257 503.016582 0 ] (Code/Settings.Designer/:__span-0-15) [ 1827 0 R /XYZ 60.307257 506.630142 0 ] (Code/Settings.Designer/:__span-0-150) [ 1833 0 R /XYZ 60.307257 489.616230 0 ] (Code/Settings.Designer/:__span-0-151) [ 1833 0 R /XYZ 60.307257 476.215878 0 ] (Code/Settings.Designer/:__span-0-152) [ 1833 0 R /XYZ 60.307257 462.815526 0 ] (Code/Settings.Designer/:__span-0-153) [ 1833 0 R /XYZ 60.307257 449.415174 0 ] (Code/Settings.Designer/:__span-0-154) [ 1833 0 R /XYZ 60.307257 436.014822 0 ] (Code/Settings.Designer/:__span-0-155) [ 1833 0 R /XYZ 60.307257 409.214118 0 ] (Code/Settings.Designer/:__span-0-156) [ 1833 0 R /XYZ 60.307257 395.813766 0 ] (Code/Settings.Designer/:__span-0-157) [ 1833 0 R /XYZ 60.307257 355.612710 0 ] (Code/Settings.Designer/:__span-0-158) [ 1833 0 R /XYZ 60.307257 342.212358 0 ] (Code/Settings.Designer/:__span-0-159) [ 1833 0 R /XYZ 60.307257 328.812006 0 ] (Code/Settings.Designer/:__span-0-16) [ 1827 0 R /XYZ 60.307257 493.229790 0 ] (Code/Settings.Designer/:__span-0-160) [ 1833 0 R /XYZ 60.307257 315.411654 0 ] (Code/Settings.Designer/:__span-0-161) [ 1833 0 R /XYZ 60.307257 302.011302 0 ] (Code/Settings.Designer/:__span-0-162) [ 1833 0 R /XYZ 60.307257 288.610950 0 ] (Code/Settings.Designer/:__span-0-163) [ 1833 0 R /XYZ 60.307257 275.210598 0 ] (Code/Settings.Designer/:__span-0-164) [ 1833 0 R /XYZ 60.307257 261.810246 0 ] (Code/Settings.Designer/:__span-0-165) [ 1833 0 R /XYZ 60.307257 235.009542 0 ] (Code/Settings.Designer/:__span-0-166) [ 1833 0 R /XYZ 60.307257 221.609190 0 ] (Code/Settings.Designer/:__span-0-167) [ 1833 0 R /XYZ 60.307257 208.208838 0 ] (Code/Settings.Designer/:__span-0-168) [ 1833 0 R /XYZ 60.307257 194.808486 0 ] (Code/Settings.Designer/:__span-0-169) [ 1833 0 R /XYZ 60.307257 168.007782 0 ] (Code/Settings.Designer/:__span-0-17) [ 1827 0 R /XYZ 60.307257 479.829438 0 ] (Code/Settings.Designer/:__span-0-170) [ 1833 0 R /XYZ 60.307257 154.607430 0 ] (Code/Settings.Designer/:__span-0-171) [ 1833 0 R /XYZ 60.307257 114.406374 0 ] (Code/Settings.Designer/:__span-0-172) [ 1833 0 R /XYZ 60.307257 101.006022 0 ] (Code/Settings.Designer/:__span-0-173) [ 1833 0 R /XYZ 60.307257 87.605670 0 ] (Code/Settings.Designer/:__span-0-174) [ 1835 0 R /XYZ 60.307257 771.023622 0 ] (Code/Settings.Designer/:__span-0-175) [ 1835 0 R /XYZ 60.307257 757.623270 0 ] (Code/Settings.Designer/:__span-0-176) [ 1835 0 R /XYZ 60.307257 744.222918 0 ] (Code/Settings.Designer/:__span-0-177) [ 1835 0 R /XYZ 60.307257 730.822566 0 ] (Code/Settings.Designer/:__span-0-178) [ 1835 0 R /XYZ 60.307257 717.422214 0 ] (Code/Settings.Designer/:__span-0-179) [ 1835 0 R /XYZ 60.307257 690.621510 0 ] (Code/Settings.Designer/:__span-0-18) [ 1827 0 R /XYZ 60.307257 466.429086 0 ] (Code/Settings.Designer/:__span-0-180) [ 1835 0 R /XYZ 60.307257 677.221158 0 ] (Code/Settings.Designer/:__span-0-181) [ 1835 0 R /XYZ 60.307257 663.820806 0 ] (Code/Settings.Designer/:__span-0-182) [ 1835 0 R /XYZ 60.307257 650.420454 0 ] (Code/Settings.Designer/:__span-0-183) [ 1835 0 R /XYZ 60.307257 623.619750 0 ] (Code/Settings.Designer/:__span-0-184) [ 1835 0 R /XYZ 60.307257 610.219398 0 ] (Code/Settings.Designer/:__span-0-185) [ 1835 0 R /XYZ 60.307257 583.418694 0 ] (Code/Settings.Designer/:__span-0-186) [ 1835 0 R /XYZ 60.307257 556.617990 0 ] (Code/Settings.Designer/:__span-0-187) [ 1835 0 R /XYZ 60.307257 543.217638 0 ] (Code/Settings.Designer/:__span-0-188) [ 1835 0 R /XYZ 60.307257 529.817286 0 ] (Code/Settings.Designer/:__span-0-189) [ 1835 0 R /XYZ 60.307257 516.416934 0 ] (Code/Settings.Designer/:__span-0-19) [ 1827 0 R /XYZ 60.307257 453.028734 0 ] (Code/Settings.Designer/:__span-0-190) [ 1835 0 R /XYZ 60.307257 503.016582 0 ] (Code/Settings.Designer/:__span-0-191) [ 1835 0 R /XYZ 60.307257 489.616230 0 ] (Code/Settings.Designer/:__span-0-192) [ 1835 0 R /XYZ 60.307257 476.215878 0 ] (Code/Settings.Designer/:__span-0-193) [ 1835 0 R /XYZ 60.307257 462.815526 0 ] (Code/Settings.Designer/:__span-0-194) [ 1835 0 R /XYZ 60.307257 436.014822 0 ] (Code/Settings.Designer/:__span-0-195) [ 1835 0 R /XYZ 60.307257 422.614470 0 ] (Code/Settings.Designer/:__span-0-196) [ 1835 0 R /XYZ 60.307257 409.214118 0 ] (Code/Settings.Designer/:__span-0-197) [ 1835 0 R /XYZ 60.307257 395.813766 0 ] (Code/Settings.Designer/:__span-0-198) [ 1835 0 R /XYZ 60.307257 382.413414 0 ] (Code/Settings.Designer/:__span-0-199) [ 1835 0 R /XYZ 60.307257 369.013062 0 ] (Code/Settings.Designer/:__span-0-2) [ 1827 0 R /XYZ 60.307257 694.235070 0 ] (Code/Settings.Designer/:__span-0-20) [ 1827 0 R /XYZ 60.307257 439.628382 0 ] (Code/Settings.Designer/:__span-0-200) [ 1835 0 R /XYZ 60.307257 355.612710 0 ] (Code/Settings.Designer/:__span-0-201) [ 1835 0 R /XYZ 60.307257 342.212358 0 ] (Code/Settings.Designer/:__span-0-202) [ 1835 0 R /XYZ 60.307257 328.812006 0 ] (Code/Settings.Designer/:__span-0-203) [ 1835 0 R /XYZ 60.307257 315.411654 0 ] (Code/Settings.Designer/:__span-0-204) [ 1835 0 R /XYZ 60.307257 288.610950 0 ] (Code/Settings.Designer/:__span-0-205) [ 1835 0 R /XYZ 60.307257 275.210598 0 ] (Code/Settings.Designer/:__span-0-206) [ 1835 0 R /XYZ 60.307257 261.810246 0 ] (Code/Settings.Designer/:__span-0-207) [ 1835 0 R /XYZ 60.307257 248.409894 0 ] (Code/Settings.Designer/:__span-0-208) [ 1835 0 R /XYZ 60.307257 235.009542 0 ] (Code/Settings.Designer/:__span-0-209) [ 1835 0 R /XYZ 60.307257 221.609190 0 ] (Code/Settings.Designer/:__span-0-21) [ 1827 0 R /XYZ 60.307257 426.228030 0 ] (Code/Settings.Designer/:__span-0-210) [ 1835 0 R /XYZ 60.307257 208.208838 0 ] (Code/Settings.Designer/:__span-0-211) [ 1835 0 R /XYZ 60.307257 194.808486 0 ] (Code/Settings.Designer/:__span-0-212) [ 1835 0 R /XYZ 60.307257 181.408134 0 ] (Code/Settings.Designer/:__span-0-213) [ 1835 0 R /XYZ 60.307257 154.607430 0 ] (Code/Settings.Designer/:__span-0-214) [ 1835 0 R /XYZ 60.307257 141.207078 0 ] (Code/Settings.Designer/:__span-0-215) [ 1835 0 R /XYZ 60.307257 127.806726 0 ] (Code/Settings.Designer/:__span-0-216) [ 1835 0 R /XYZ 60.307257 114.406374 0 ] (Code/Settings.Designer/:__span-0-217) [ 1835 0 R /XYZ 60.307257 101.006022 0 ] (Code/Settings.Designer/:__span-0-218) [ 1835 0 R /XYZ 60.307257 87.605670 0 ] (Code/Settings.Designer/:__span-0-219) [ 1837 0 R /XYZ 60.307257 771.023622 0 ] (Code/Settings.Designer/:__span-0-22) [ 1827 0 R /XYZ 60.307257 412.827678 0 ] (Code/Settings.Designer/:__span-0-220) [ 1837 0 R /XYZ 60.307257 757.623270 0 ] (Code/Settings.Designer/:__span-0-221) [ 1837 0 R /XYZ 60.307257 744.222918 0 ] (Code/Settings.Designer/:__span-0-222) [ 1837 0 R /XYZ 60.307257 730.822566 0 ] (Code/Settings.Designer/:__span-0-223) [ 1837 0 R /XYZ 60.307257 717.422214 0 ] (Code/Settings.Designer/:__span-0-224) [ 1837 0 R /XYZ 60.307257 704.021862 0 ] (Code/Settings.Designer/:__span-0-225) [ 1837 0 R /XYZ 60.307257 690.621510 0 ] (Code/Settings.Designer/:__span-0-226) [ 1837 0 R /XYZ 60.307257 677.221158 0 ] (Code/Settings.Designer/:__span-0-227) [ 1837 0 R /XYZ 60.307257 663.820806 0 ] (Code/Settings.Designer/:__span-0-228) [ 1837 0 R /XYZ 60.307257 623.619750 0 ] (Code/Settings.Designer/:__span-0-229) [ 1837 0 R /XYZ 60.307257 596.819046 0 ] (Code/Settings.Designer/:__span-0-23) [ 1827 0 R /XYZ 60.307257 399.427326 0 ] (Code/Settings.Designer/:__span-0-230) [ 1837 0 R /XYZ 60.307257 583.418694 0 ] (Code/Settings.Designer/:__span-0-231) [ 1837 0 R /XYZ 60.307257 570.018342 0 ] (Code/Settings.Designer/:__span-0-232) [ 1837 0 R /XYZ 60.307257 556.617990 0 ] (Code/Settings.Designer/:__span-0-233) [ 1837 0 R /XYZ 60.307257 543.217638 0 ] (Code/Settings.Designer/:__span-0-234) [ 1837 0 R /XYZ 60.307257 529.817286 0 ] (Code/Settings.Designer/:__span-0-235) [ 1837 0 R /XYZ 60.307257 516.416934 0 ] (Code/Settings.Designer/:__span-0-236) [ 1837 0 R /XYZ 60.307257 503.016582 0 ] (Code/Settings.Designer/:__span-0-237) [ 1837 0 R /XYZ 60.307257 489.616230 0 ] (Code/Settings.Designer/:__span-0-238) [ 1837 0 R /XYZ 60.307257 476.215878 0 ] (Code/Settings.Designer/:__span-0-239) [ 1837 0 R /XYZ 60.307257 449.415174 0 ] (Code/Settings.Designer/:__span-0-24) [ 1827 0 R /XYZ 60.307257 386.026974 0 ] (Code/Settings.Designer/:__span-0-240) [ 1837 0 R /XYZ 60.307257 436.014822 0 ] (Code/Settings.Designer/:__span-0-241) [ 1837 0 R /XYZ 60.307257 422.614470 0 ] (Code/Settings.Designer/:__span-0-242) [ 1837 0 R /XYZ 60.307257 409.214118 0 ] (Code/Settings.Designer/:__span-0-243) [ 1837 0 R /XYZ 60.307257 369.013062 0 ] (Code/Settings.Designer/:__span-0-244) [ 1837 0 R /XYZ 60.307257 342.212358 0 ] (Code/Settings.Designer/:__span-0-245) [ 1837 0 R /XYZ 60.307257 328.812006 0 ] (Code/Settings.Designer/:__span-0-246) [ 1837 0 R /XYZ 60.307257 315.411654 0 ] (Code/Settings.Designer/:__span-0-247) [ 1837 0 R /XYZ 60.307257 302.011302 0 ] (Code/Settings.Designer/:__span-0-248) [ 1837 0 R /XYZ 60.307257 288.610950 0 ] (Code/Settings.Designer/:__span-0-249) [ 1837 0 R /XYZ 60.307257 275.210598 0 ] (Code/Settings.Designer/:__span-0-25) [ 1827 0 R /XYZ 60.307257 372.626622 0 ] (Code/Settings.Designer/:__span-0-250) [ 1837 0 R /XYZ 60.307257 261.810246 0 ] (Code/Settings.Designer/:__span-0-251) [ 1837 0 R /XYZ 60.307257 248.409894 0 ] (Code/Settings.Designer/:__span-0-252) [ 1837 0 R /XYZ 60.307257 235.009542 0 ] (Code/Settings.Designer/:__span-0-253) [ 1837 0 R /XYZ 60.307257 221.609190 0 ] (Code/Settings.Designer/:__span-0-254) [ 1837 0 R /XYZ 60.307257 208.208838 0 ] (Code/Settings.Designer/:__span-0-255) [ 1837 0 R /XYZ 60.307257 194.808486 0 ] (Code/Settings.Designer/:__span-0-256) [ 1837 0 R /XYZ 60.307257 181.408134 0 ] (Code/Settings.Designer/:__span-0-257) [ 1837 0 R /XYZ 60.307257 168.007782 0 ] (Code/Settings.Designer/:__span-0-258) [ 1837 0 R /XYZ 60.307257 154.607430 0 ] (Code/Settings.Designer/:__span-0-259) [ 1837 0 R /XYZ 60.307257 127.806726 0 ] (Code/Settings.Designer/:__span-0-26) [ 1827 0 R /XYZ 60.307257 359.226270 0 ] (Code/Settings.Designer/:__span-0-260) [ 1837 0 R /XYZ 60.307257 114.406374 0 ] (Code/Settings.Designer/:__span-0-261) [ 1837 0 R /XYZ 60.307257 101.006022 0 ] (Code/Settings.Designer/:__span-0-262) [ 1837 0 R /XYZ 60.307257 87.605670 0 ] (Code/Settings.Designer/:__span-0-263) [ 1839 0 R /XYZ 60.307257 771.023622 0 ] (Code/Settings.Designer/:__span-0-264) [ 1839 0 R /XYZ 60.307257 757.623270 0 ] (Code/Settings.Designer/:__span-0-265) [ 1839 0 R /XYZ 60.307257 744.222918 0 ] (Code/Settings.Designer/:__span-0-266) [ 1839 0 R /XYZ 60.307257 730.822566 0 ] (Code/Settings.Designer/:__span-0-267) [ 1839 0 R /XYZ 60.307257 717.422214 0 ] (Code/Settings.Designer/:__span-0-268) [ 1839 0 R /XYZ 60.307257 704.021862 0 ] (Code/Settings.Designer/:__span-0-269) [ 1839 0 R /XYZ 60.307257 690.621510 0 ] (Code/Settings.Designer/:__span-0-27) [ 1827 0 R /XYZ 60.307257 345.825918 0 ] (Code/Settings.Designer/:__span-0-270) [ 1839 0 R /XYZ 60.307257 677.221158 0 ] (Code/Settings.Designer/:__span-0-271) [ 1839 0 R /XYZ 60.307257 663.820806 0 ] (Code/Settings.Designer/:__span-0-272) [ 1839 0 R /XYZ 60.307257 650.420454 0 ] (Code/Settings.Designer/:__span-0-273) [ 1839 0 R /XYZ 60.307257 637.020102 0 ] (Code/Settings.Designer/:__span-0-274) [ 1839 0 R /XYZ 60.307257 623.619750 0 ] (Code/Settings.Designer/:__span-0-275) [ 1839 0 R /XYZ 60.307257 610.219398 0 ] (Code/Settings.Designer/:__span-0-276) [ 1839 0 R /XYZ 60.307257 596.819046 0 ] (Code/Settings.Designer/:__span-0-277) [ 1839 0 R /XYZ 60.307257 570.018342 0 ] (Code/Settings.Designer/:__span-0-278) [ 1839 0 R /XYZ 60.307257 556.617990 0 ] (Code/Settings.Designer/:__span-0-279) [ 1839 0 R /XYZ 60.307257 543.217638 0 ] (Code/Settings.Designer/:__span-0-28) [ 1827 0 R /XYZ 60.307257 332.425566 0 ] (Code/Settings.Designer/:__span-0-280) [ 1839 0 R /XYZ 60.307257 529.817286 0 ] (Code/Settings.Designer/:__span-0-281) [ 1839 0 R /XYZ 60.307257 516.416934 0 ] (Code/Settings.Designer/:__span-0-282) [ 1839 0 R /XYZ 60.307257 503.016582 0 ] (Code/Settings.Designer/:__span-0-283) [ 1839 0 R /XYZ 60.307257 489.616230 0 ] (Code/Settings.Designer/:__span-0-284) [ 1839 0 R /XYZ 60.307257 476.215878 0 ] (Code/Settings.Designer/:__span-0-285) [ 1839 0 R /XYZ 60.307257 462.815526 0 ] (Code/Settings.Designer/:__span-0-286) [ 1839 0 R /XYZ 60.307257 449.415174 0 ] (Code/Settings.Designer/:__span-0-287) [ 1839 0 R /XYZ 60.307257 422.614470 0 ] (Code/Settings.Designer/:__span-0-288) [ 1839 0 R /XYZ 60.307257 409.214118 0 ] (Code/Settings.Designer/:__span-0-289) [ 1839 0 R /XYZ 60.307257 395.813766 0 ] (Code/Settings.Designer/:__span-0-29) [ 1827 0 R /XYZ 60.307257 319.025214 0 ] (Code/Settings.Designer/:__span-0-290) [ 1839 0 R /XYZ 60.307257 382.413414 0 ] (Code/Settings.Designer/:__span-0-291) [ 1839 0 R /XYZ 60.307257 355.612710 0 ] (Code/Settings.Designer/:__span-0-292) [ 1839 0 R /XYZ 60.307257 342.212358 0 ] (Code/Settings.Designer/:__span-0-293) [ 1839 0 R /XYZ 60.307257 328.812006 0 ] (Code/Settings.Designer/:__span-0-294) [ 1839 0 R /XYZ 60.307257 315.411654 0 ] (Code/Settings.Designer/:__span-0-295) [ 1839 0 R /XYZ 60.307257 288.610950 0 ] (Code/Settings.Designer/:__span-0-296) [ 1839 0 R /XYZ 60.307257 275.210598 0 ] (Code/Settings.Designer/:__span-0-297) [ 1839 0 R /XYZ 60.307257 261.810246 0 ] (Code/Settings.Designer/:__span-0-298) [ 1839 0 R /XYZ 60.307257 248.409894 0 ] (Code/Settings.Designer/:__span-0-299) [ 1839 0 R /XYZ 60.307257 221.609190 0 ] (Code/Settings.Designer/:__span-0-3) [ 1827 0 R /XYZ 60.307257 680.834718 0 ] (Code/Settings.Designer/:__span-0-30) [ 1827 0 R /XYZ 60.307257 305.624862 0 ] (Code/Settings.Designer/:__span-0-300) [ 1839 0 R /XYZ 60.307257 208.208838 0 ] (Code/Settings.Designer/:__span-0-301) [ 1839 0 R /XYZ 60.307257 194.808486 0 ] (Code/Settings.Designer/:__span-0-302) [ 1839 0 R /XYZ 60.307257 181.408134 0 ] (Code/Settings.Designer/:__span-0-303) [ 1839 0 R /XYZ 60.307257 154.607430 0 ] (Code/Settings.Designer/:__span-0-304) [ 1839 0 R /XYZ 60.307257 141.207078 0 ] (Code/Settings.Designer/:__span-0-305) [ 1839 0 R /XYZ 60.307257 127.806726 0 ] (Code/Settings.Designer/:__span-0-306) [ 1839 0 R /XYZ 60.307257 114.406374 0 ] (Code/Settings.Designer/:__span-0-307) [ 1839 0 R /XYZ 60.307257 101.006022 0 ] (Code/Settings.Designer/:__span-0-308) [ 1839 0 R /XYZ 60.307257 87.605670 0 ] (Code/Settings.Designer/:__span-0-309) [ 1841 0 R /XYZ 60.307257 771.023622 0 ] (Code/Settings.Designer/:__span-0-31) [ 1827 0 R /XYZ 60.307257 292.224510 0 ] (Code/Settings.Designer/:__span-0-310) [ 1841 0 R /XYZ 60.307257 757.623270 0 ] (Code/Settings.Designer/:__span-0-311) [ 1841 0 R /XYZ 60.307257 744.222918 0 ] (Code/Settings.Designer/:__span-0-312) [ 1841 0 R /XYZ 60.307257 730.822566 0 ] (Code/Settings.Designer/:__span-0-313) [ 1841 0 R /XYZ 60.307257 704.021862 0 ] (Code/Settings.Designer/:__span-0-314) [ 1841 0 R /XYZ 60.307257 690.621510 0 ] (Code/Settings.Designer/:__span-0-315) [ 1841 0 R /XYZ 60.307257 677.221158 0 ] (Code/Settings.Designer/:__span-0-316) [ 1841 0 R /XYZ 60.307257 663.820806 0 ] (Code/Settings.Designer/:__span-0-317) [ 1841 0 R /XYZ 60.307257 623.619750 0 ] (Code/Settings.Designer/:__span-0-318) [ 1841 0 R /XYZ 60.307257 596.819046 0 ] (Code/Settings.Designer/:__span-0-319) [ 1841 0 R /XYZ 60.307257 583.418694 0 ] (Code/Settings.Designer/:__span-0-32) [ 1827 0 R /XYZ 60.307257 278.824158 0 ] (Code/Settings.Designer/:__span-0-320) [ 1841 0 R /XYZ 60.307257 570.018342 0 ] (Code/Settings.Designer/:__span-0-321) [ 1841 0 R /XYZ 60.307257 543.217638 0 ] (Code/Settings.Designer/:__span-0-322) [ 1841 0 R /XYZ 60.307257 529.817286 0 ] (Code/Settings.Designer/:__span-0-323) [ 1841 0 R /XYZ 60.307257 516.416934 0 ] (Code/Settings.Designer/:__span-0-324) [ 1841 0 R /XYZ 60.307257 503.016582 0 ] (Code/Settings.Designer/:__span-0-325) [ 1841 0 R /XYZ 60.307257 489.616230 0 ] (Code/Settings.Designer/:__span-0-326) [ 1841 0 R /XYZ 60.307257 476.215878 0 ] (Code/Settings.Designer/:__span-0-327) [ 1841 0 R /XYZ 60.307257 462.815526 0 ] (Code/Settings.Designer/:__span-0-328) [ 1841 0 R /XYZ 60.307257 449.415174 0 ] (Code/Settings.Designer/:__span-0-329) [ 1841 0 R /XYZ 60.307257 436.014822 0 ] (Code/Settings.Designer/:__span-0-33) [ 1827 0 R /XYZ 60.307257 265.423806 0 ] (Code/Settings.Designer/:__span-0-330) [ 1841 0 R /XYZ 60.307257 409.214118 0 ] (Code/Settings.Designer/:__span-0-331) [ 1841 0 R /XYZ 60.307257 395.813766 0 ] (Code/Settings.Designer/:__span-0-332) [ 1841 0 R /XYZ 60.307257 382.413414 0 ] (Code/Settings.Designer/:__span-0-333) [ 1841 0 R /XYZ 60.307257 369.013062 0 ] (Code/Settings.Designer/:__span-0-334) [ 1841 0 R /XYZ 60.307257 342.212358 0 ] (Code/Settings.Designer/:__span-0-335) [ 1841 0 R /XYZ 60.307257 328.812006 0 ] (Code/Settings.Designer/:__span-0-336) [ 1841 0 R /XYZ 60.307257 315.411654 0 ] (Code/Settings.Designer/:__span-0-337) [ 1841 0 R /XYZ 60.307257 302.011302 0 ] (Code/Settings.Designer/:__span-0-338) [ 1841 0 R /XYZ 60.307257 275.210598 0 ] (Code/Settings.Designer/:__span-0-339) [ 1841 0 R /XYZ 60.307257 261.810246 0 ] (Code/Settings.Designer/:__span-0-34) [ 1827 0 R /XYZ 60.307257 252.023454 0 ] (Code/Settings.Designer/:__span-0-340) [ 1841 0 R /XYZ 60.307257 248.409894 0 ] (Code/Settings.Designer/:__span-0-341) [ 1841 0 R /XYZ 60.307257 221.609190 0 ] (Code/Settings.Designer/:__span-0-342) [ 1841 0 R /XYZ 60.307257 194.808486 0 ] (Code/Settings.Designer/:__span-0-343) [ 1841 0 R /XYZ 60.307257 181.408134 0 ] (Code/Settings.Designer/:__span-0-344) [ 1841 0 R /XYZ 60.307257 168.007782 0 ] (Code/Settings.Designer/:__span-0-345) [ 1841 0 R /XYZ 60.307257 154.607430 0 ] (Code/Settings.Designer/:__span-0-346) [ 1841 0 R /XYZ 60.307257 127.806726 0 ] (Code/Settings.Designer/:__span-0-347) [ 1841 0 R /XYZ 60.307257 114.406374 0 ] (Code/Settings.Designer/:__span-0-348) [ 1841 0 R /XYZ 60.307257 101.006022 0 ] (Code/Settings.Designer/:__span-0-349) [ 1841 0 R /XYZ 60.307257 87.605670 0 ] (Code/Settings.Designer/:__span-0-35) [ 1827 0 R /XYZ 60.307257 238.623102 0 ] (Code/Settings.Designer/:__span-0-350) [ 1843 0 R /XYZ 60.307257 771.023622 0 ] (Code/Settings.Designer/:__span-0-351) [ 1843 0 R /XYZ 60.307257 757.623270 0 ] (Code/Settings.Designer/:__span-0-352) [ 1843 0 R /XYZ 60.307257 744.222918 0 ] (Code/Settings.Designer/:__span-0-353) [ 1843 0 R /XYZ 60.307257 730.822566 0 ] (Code/Settings.Designer/:__span-0-354) [ 1843 0 R /XYZ 60.307257 717.422214 0 ] (Code/Settings.Designer/:__span-0-355) [ 1843 0 R /XYZ 60.307257 690.621510 0 ] (Code/Settings.Designer/:__span-0-356) [ 1843 0 R /XYZ 60.307257 677.221158 0 ] (Code/Settings.Designer/:__span-0-357) [ 1843 0 R /XYZ 60.307257 663.820806 0 ] (Code/Settings.Designer/:__span-0-358) [ 1843 0 R /XYZ 60.307257 650.420454 0 ] (Code/Settings.Designer/:__span-0-359) [ 1843 0 R /XYZ 60.307257 623.619750 0 ] (Code/Settings.Designer/:__span-0-36) [ 1827 0 R /XYZ 60.307257 225.222750 0 ] (Code/Settings.Designer/:__span-0-360) [ 1843 0 R /XYZ 60.307257 610.219398 0 ] (Code/Settings.Designer/:__span-0-361) [ 1843 0 R /XYZ 60.307257 583.418694 0 ] (Code/Settings.Designer/:__span-0-362) [ 1843 0 R /XYZ 60.307257 556.617990 0 ] (Code/Settings.Designer/:__span-0-363) [ 1843 0 R /XYZ 60.307257 543.217638 0 ] (Code/Settings.Designer/:__span-0-364) [ 1843 0 R /XYZ 60.307257 529.817286 0 ] (Code/Settings.Designer/:__span-0-365) [ 1843 0 R /XYZ 60.307257 516.416934 0 ] (Code/Settings.Designer/:__span-0-366) [ 1843 0 R /XYZ 60.307257 503.016582 0 ] (Code/Settings.Designer/:__span-0-367) [ 1843 0 R /XYZ 60.307257 489.616230 0 ] (Code/Settings.Designer/:__span-0-368) [ 1843 0 R /XYZ 60.307257 476.215878 0 ] (Code/Settings.Designer/:__span-0-369) [ 1843 0 R /XYZ 60.307257 449.415174 0 ] (Code/Settings.Designer/:__span-0-37) [ 1827 0 R /XYZ 60.307257 211.822398 0 ] (Code/Settings.Designer/:__span-0-370) [ 1843 0 R /XYZ 60.307257 436.014822 0 ] (Code/Settings.Designer/:__span-0-371) [ 1843 0 R /XYZ 60.307257 422.614470 0 ] (Code/Settings.Designer/:__span-0-372) [ 1843 0 R /XYZ 60.307257 409.214118 0 ] (Code/Settings.Designer/:__span-0-373) [ 1843 0 R /XYZ 60.307257 382.413414 0 ] (Code/Settings.Designer/:__span-0-374) [ 1843 0 R /XYZ 60.307257 369.013062 0 ] (Code/Settings.Designer/:__span-0-375) [ 1843 0 R /XYZ 60.307257 342.212358 0 ] (Code/Settings.Designer/:__span-0-376) [ 1843 0 R /XYZ 60.307257 328.812006 0 ] (Code/Settings.Designer/:__span-0-377) [ 1843 0 R /XYZ 60.307257 315.411654 0 ] (Code/Settings.Designer/:__span-0-378) [ 1843 0 R /XYZ 60.307257 302.011302 0 ] (Code/Settings.Designer/:__span-0-379) [ 1843 0 R /XYZ 60.307257 288.610950 0 ] (Code/Settings.Designer/:__span-0-38) [ 1827 0 R /XYZ 60.307257 198.422046 0 ] (Code/Settings.Designer/:__span-0-380) [ 1843 0 R /XYZ 60.307257 275.210598 0 ] (Code/Settings.Designer/:__span-0-381) [ 1843 0 R /XYZ 60.307257 261.810246 0 ] (Code/Settings.Designer/:__span-0-382) [ 1843 0 R /XYZ 60.307257 248.409894 0 ] (Code/Settings.Designer/:__span-0-383) [ 1843 0 R /XYZ 60.307257 235.009542 0 ] (Code/Settings.Designer/:__span-0-384) [ 1843 0 R /XYZ 60.307257 208.208838 0 ] (Code/Settings.Designer/:__span-0-385) [ 1843 0 R /XYZ 60.307257 194.808486 0 ] (Code/Settings.Designer/:__span-0-386) [ 1843 0 R /XYZ 60.307257 181.408134 0 ] (Code/Settings.Designer/:__span-0-387) [ 1843 0 R /XYZ 60.307257 168.007782 0 ] (Code/Settings.Designer/:__span-0-388) [ 1843 0 R /XYZ 60.307257 154.607430 0 ] (Code/Settings.Designer/:__span-0-389) [ 1843 0 R /XYZ 60.307257 141.207078 0 ] (Code/Settings.Designer/:__span-0-39) [ 1827 0 R /XYZ 60.307257 185.021694 0 ] (Code/Settings.Designer/:__span-0-390) [ 1843 0 R /XYZ 60.307257 127.806726 0 ] (Code/Settings.Designer/:__span-0-391) [ 1843 0 R /XYZ 60.307257 114.406374 0 ] (Code/Settings.Designer/:__span-0-392) [ 1843 0 R /XYZ 60.307257 101.006022 0 ] (Code/Settings.Designer/:__span-0-393) [ 1845 0 R /XYZ 60.307257 771.023622 0 ] (Code/Settings.Designer/:__span-0-394) [ 1845 0 R /XYZ 60.307257 757.623270 0 ] (Code/Settings.Designer/:__span-0-395) [ 1845 0 R /XYZ 60.307257 744.222918 0 ] (Code/Settings.Designer/:__span-0-396) [ 1845 0 R /XYZ 60.307257 730.822566 0 ] (Code/Settings.Designer/:__span-0-397) [ 1845 0 R /XYZ 60.307257 690.621510 0 ] (Code/Settings.Designer/:__span-0-398) [ 1845 0 R /XYZ 60.307257 663.820806 0 ] (Code/Settings.Designer/:__span-0-399) [ 1845 0 R /XYZ 60.307257 650.420454 0 ] (Code/Settings.Designer/:__span-0-4) [ 1827 0 R /XYZ 60.307257 667.434366 0 ] (Code/Settings.Designer/:__span-0-40) [ 1827 0 R /XYZ 60.307257 171.621342 0 ] (Code/Settings.Designer/:__span-0-400) [ 1845 0 R /XYZ 60.307257 637.020102 0 ] (Code/Settings.Designer/:__span-0-401) [ 1845 0 R /XYZ 60.307257 623.619750 0 ] (Code/Settings.Designer/:__span-0-402) [ 1845 0 R /XYZ 60.307257 610.219398 0 ] (Code/Settings.Designer/:__span-0-403) [ 1845 0 R /XYZ 60.307257 596.819046 0 ] (Code/Settings.Designer/:__span-0-404) [ 1845 0 R /XYZ 60.307257 583.418694 0 ] (Code/Settings.Designer/:__span-0-405) [ 1845 0 R /XYZ 60.307257 556.617990 0 ] (Code/Settings.Designer/:__span-0-406) [ 1845 0 R /XYZ 60.307257 543.217638 0 ] (Code/Settings.Designer/:__span-0-407) [ 1845 0 R /XYZ 60.307257 529.817286 0 ] (Code/Settings.Designer/:__span-0-408) [ 1845 0 R /XYZ 60.307257 516.416934 0 ] (Code/Settings.Designer/:__span-0-409) [ 1845 0 R /XYZ 60.307257 503.016582 0 ] (Code/Settings.Designer/:__span-0-41) [ 1827 0 R /XYZ 60.307257 158.220990 0 ] (Code/Settings.Designer/:__span-0-410) [ 1845 0 R /XYZ 60.307257 489.616230 0 ] (Code/Settings.Designer/:__span-0-411) [ 1845 0 R /XYZ 60.307257 476.215878 0 ] (Code/Settings.Designer/:__span-0-412) [ 1845 0 R /XYZ 60.307257 462.815526 0 ] (Code/Settings.Designer/:__span-0-413) [ 1845 0 R /XYZ 60.307257 449.415174 0 ] (Code/Settings.Designer/:__span-0-414) [ 1845 0 R /XYZ 60.307257 422.614470 0 ] (Code/Settings.Designer/:__span-0-415) [ 1845 0 R /XYZ 60.307257 409.214118 0 ] (Code/Settings.Designer/:__span-0-416) [ 1845 0 R /XYZ 60.307257 395.813766 0 ] (Code/Settings.Designer/:__span-0-417) [ 1845 0 R /XYZ 60.307257 382.413414 0 ] (Code/Settings.Designer/:__span-0-418) [ 1845 0 R /XYZ 60.307257 355.612710 0 ] (Code/Settings.Designer/:__span-0-419) [ 1845 0 R /XYZ 60.307257 342.212358 0 ] (Code/Settings.Designer/:__span-0-42) [ 1827 0 R /XYZ 60.307257 144.820638 0 ] (Code/Settings.Designer/:__span-0-420) [ 1845 0 R /XYZ 60.307257 328.812006 0 ] (Code/Settings.Designer/:__span-0-421) [ 1845 0 R /XYZ 60.307257 315.411654 0 ] (Code/Settings.Designer/:__span-0-422) [ 1845 0 R /XYZ 60.307257 302.011302 0 ] (Code/Settings.Designer/:__span-0-423) [ 1845 0 R /XYZ 60.307257 288.610950 0 ] (Code/Settings.Designer/:__span-0-424) [ 1845 0 R /XYZ 60.307257 275.210598 0 ] (Code/Settings.Designer/:__span-0-425) [ 1845 0 R /XYZ 60.307257 261.810246 0 ] (Code/Settings.Designer/:__span-0-426) [ 1845 0 R /XYZ 60.307257 248.409894 0 ] (Code/Settings.Designer/:__span-0-427) [ 1845 0 R /XYZ 60.307257 221.609190 0 ] (Code/Settings.Designer/:__span-0-428) [ 1845 0 R /XYZ 60.307257 208.208838 0 ] (Code/Settings.Designer/:__span-0-429) [ 1845 0 R /XYZ 60.307257 194.808486 0 ] (Code/Settings.Designer/:__span-0-43) [ 1827 0 R /XYZ 60.307257 131.420286 0 ] (Code/Settings.Designer/:__span-0-430) [ 1845 0 R /XYZ 60.307257 181.408134 0 ] (Code/Settings.Designer/:__span-0-431) [ 1845 0 R /XYZ 60.307257 168.007782 0 ] (Code/Settings.Designer/:__span-0-432) [ 1845 0 R /XYZ 60.307257 154.607430 0 ] (Code/Settings.Designer/:__span-0-433) [ 1845 0 R /XYZ 60.307257 127.806726 0 ] (Code/Settings.Designer/:__span-0-434) [ 1845 0 R /XYZ 60.307257 114.406374 0 ] (Code/Settings.Designer/:__span-0-435) [ 1845 0 R /XYZ 60.307257 101.006022 0 ] (Code/Settings.Designer/:__span-0-436) [ 1845 0 R /XYZ 60.307257 87.605670 0 ] (Code/Settings.Designer/:__span-0-437) [ 1847 0 R /XYZ 60.307257 771.023622 0 ] (Code/Settings.Designer/:__span-0-438) [ 1847 0 R /XYZ 60.307257 757.623270 0 ] (Code/Settings.Designer/:__span-0-439) [ 1847 0 R /XYZ 60.307257 744.222918 0 ] (Code/Settings.Designer/:__span-0-44) [ 1827 0 R /XYZ 60.307257 118.019934 0 ] (Code/Settings.Designer/:__span-0-440) [ 1847 0 R /XYZ 60.307257 730.822566 0 ] (Code/Settings.Designer/:__span-0-441) [ 1847 0 R /XYZ 60.307257 704.021862 0 ] (Code/Settings.Designer/:__span-0-442) [ 1847 0 R /XYZ 60.307257 690.621510 0 ] (Code/Settings.Designer/:__span-0-443) [ 1847 0 R /XYZ 60.307257 677.221158 0 ] (Code/Settings.Designer/:__span-0-444) [ 1847 0 R /XYZ 60.307257 663.820806 0 ] (Code/Settings.Designer/:__span-0-445) [ 1847 0 R /XYZ 60.307257 637.020102 0 ] (Code/Settings.Designer/:__span-0-446) [ 1847 0 R /XYZ 60.307257 623.619750 0 ] (Code/Settings.Designer/:__span-0-447) [ 1847 0 R /XYZ 60.307257 596.819046 0 ] (Code/Settings.Designer/:__span-0-448) [ 1847 0 R /XYZ 60.307257 583.418694 0 ] (Code/Settings.Designer/:__span-0-449) [ 1847 0 R /XYZ 60.307257 570.018342 0 ] (Code/Settings.Designer/:__span-0-45) [ 1827 0 R /XYZ 60.307257 104.619582 0 ] (Code/Settings.Designer/:__span-0-450) [ 1847 0 R /XYZ 60.307257 556.617990 0 ] (Code/Settings.Designer/:__span-0-451) [ 1847 0 R /XYZ 60.307257 543.217638 0 ] (Code/Settings.Designer/:__span-0-452) [ 1847 0 R /XYZ 60.307257 529.817286 0 ] (Code/Settings.Designer/:__span-0-453) [ 1847 0 R /XYZ 60.307257 516.416934 0 ] (Code/Settings.Designer/:__span-0-454) [ 1847 0 R /XYZ 60.307257 503.016582 0 ] (Code/Settings.Designer/:__span-0-455) [ 1847 0 R /XYZ 60.307257 489.616230 0 ] (Code/Settings.Designer/:__span-0-456) [ 1847 0 R /XYZ 60.307257 476.215878 0 ] (Code/Settings.Designer/:__span-0-457) [ 1847 0 R /XYZ 60.307257 449.415174 0 ] (Code/Settings.Designer/:__span-0-458) [ 1847 0 R /XYZ 60.307257 436.014822 0 ] (Code/Settings.Designer/:__span-0-459) [ 1847 0 R /XYZ 60.307257 422.614470 0 ] (Code/Settings.Designer/:__span-0-46) [ 1827 0 R /XYZ 60.307257 91.219230 0 ] (Code/Settings.Designer/:__span-0-460) [ 1847 0 R /XYZ 60.307257 409.214118 0 ] (Code/Settings.Designer/:__span-0-461) [ 1847 0 R /XYZ 60.307257 395.813766 0 ] (Code/Settings.Designer/:__span-0-462) [ 1847 0 R /XYZ 60.307257 382.413414 0 ] (Code/Settings.Designer/:__span-0-463) [ 1847 0 R /XYZ 60.307257 369.013062 0 ] (Code/Settings.Designer/:__span-0-464) [ 1847 0 R /XYZ 60.307257 355.612710 0 ] (Code/Settings.Designer/:__span-0-465) [ 1847 0 R /XYZ 60.307257 342.212358 0 ] (Code/Settings.Designer/:__span-0-466) [ 1847 0 R /XYZ 60.307257 328.812006 0 ] (Code/Settings.Designer/:__span-0-467) [ 1847 0 R /XYZ 60.307257 315.411654 0 ] (Code/Settings.Designer/:__span-0-468) [ 1847 0 R /XYZ 60.307257 302.011302 0 ] (Code/Settings.Designer/:__span-0-469) [ 1847 0 R /XYZ 60.307257 288.610950 0 ] (Code/Settings.Designer/:__span-0-47) [ 1829 0 R /XYZ 60.307257 771.023622 0 ] (Code/Settings.Designer/:__span-0-470) [ 1847 0 R /XYZ 60.307257 275.210598 0 ] (Code/Settings.Designer/:__span-0-471) [ 1847 0 R /XYZ 60.307257 261.810246 0 ] (Code/Settings.Designer/:__span-0-472) [ 1847 0 R /XYZ 60.307257 248.409894 0 ] (Code/Settings.Designer/:__span-0-473) [ 1847 0 R /XYZ 60.307257 235.009542 0 ] (Code/Settings.Designer/:__span-0-474) [ 1847 0 R /XYZ 60.307257 221.609190 0 ] (Code/Settings.Designer/:__span-0-475) [ 1847 0 R /XYZ 60.307257 208.208838 0 ] (Code/Settings.Designer/:__span-0-476) [ 1847 0 R /XYZ 60.307257 194.808486 0 ] (Code/Settings.Designer/:__span-0-477) [ 1847 0 R /XYZ 60.307257 181.408134 0 ] (Code/Settings.Designer/:__span-0-478) [ 1847 0 R /XYZ 60.307257 168.007782 0 ] (Code/Settings.Designer/:__span-0-479) [ 1847 0 R /XYZ 60.307257 154.607430 0 ] (Code/Settings.Designer/:__span-0-48) [ 1829 0 R /XYZ 60.307257 757.623270 0 ] (Code/Settings.Designer/:__span-0-480) [ 1847 0 R /XYZ 60.307257 141.207078 0 ] (Code/Settings.Designer/:__span-0-481) [ 1847 0 R /XYZ 60.307257 127.806726 0 ] (Code/Settings.Designer/:__span-0-482) [ 1847 0 R /XYZ 60.307257 114.406374 0 ] (Code/Settings.Designer/:__span-0-483) [ 1847 0 R /XYZ 60.307257 101.006022 0 ] (Code/Settings.Designer/:__span-0-484) [ 1847 0 R /XYZ 60.307257 87.605670 0 ] (Code/Settings.Designer/:__span-0-485) [ 1849 0 R /XYZ 60.307257 771.023622 0 ] (Code/Settings.Designer/:__span-0-486) [ 1849 0 R /XYZ 60.307257 757.623270 0 ] (Code/Settings.Designer/:__span-0-487) [ 1849 0 R /XYZ 60.307257 744.222918 0 ] (Code/Settings.Designer/:__span-0-488) [ 1849 0 R /XYZ 60.307257 730.822566 0 ] (Code/Settings.Designer/:__span-0-489) [ 1849 0 R /XYZ 60.307257 717.422214 0 ] (Code/Settings.Designer/:__span-0-49) [ 1829 0 R /XYZ 60.307257 744.222918 0 ] (Code/Settings.Designer/:__span-0-490) [ 1849 0 R /XYZ 60.307257 704.021862 0 ] (Code/Settings.Designer/:__span-0-491) [ 1849 0 R /XYZ 60.307257 690.621510 0 ] (Code/Settings.Designer/:__span-0-492) [ 1849 0 R /XYZ 60.307257 677.221158 0 ] (Code/Settings.Designer/:__span-0-493) [ 1849 0 R /XYZ 60.307257 663.820806 0 ] (Code/Settings.Designer/:__span-0-494) [ 1849 0 R /XYZ 60.307257 650.420454 0 ] (Code/Settings.Designer/:__span-0-5) [ 1827 0 R /XYZ 60.307257 654.034014 0 ] (Code/Settings.Designer/:__span-0-50) [ 1829 0 R /XYZ 60.307257 730.822566 0 ] (Code/Settings.Designer/:__span-0-51) [ 1829 0 R /XYZ 60.307257 717.422214 0 ] (Code/Settings.Designer/:__span-0-52) [ 1829 0 R /XYZ 60.307257 704.021862 0 ] (Code/Settings.Designer/:__span-0-53) [ 1829 0 R /XYZ 60.307257 690.621510 0 ] (Code/Settings.Designer/:__span-0-54) [ 1829 0 R /XYZ 60.307257 677.221158 0 ] (Code/Settings.Designer/:__span-0-55) [ 1829 0 R /XYZ 60.307257 663.820806 0 ] (Code/Settings.Designer/:__span-0-56) [ 1829 0 R /XYZ 60.307257 650.420454 0 ] (Code/Settings.Designer/:__span-0-57) [ 1829 0 R /XYZ 60.307257 637.020102 0 ] (Code/Settings.Designer/:__span-0-58) [ 1829 0 R /XYZ 60.307257 623.619750 0 ] (Code/Settings.Designer/:__span-0-59) [ 1829 0 R /XYZ 60.307257 610.219398 0 ] (Code/Settings.Designer/:__span-0-6) [ 1827 0 R /XYZ 60.307257 640.633662 0 ] (Code/Settings.Designer/:__span-0-60) [ 1829 0 R /XYZ 60.307257 596.819046 0 ] (Code/Settings.Designer/:__span-0-61) [ 1829 0 R /XYZ 60.307257 583.418694 0 ] (Code/Settings.Designer/:__span-0-62) [ 1829 0 R /XYZ 60.307257 570.018342 0 ] (Code/Settings.Designer/:__span-0-63) [ 1829 0 R /XYZ 60.307257 543.217638 0 ] (Code/Settings.Designer/:__span-0-64) [ 1829 0 R /XYZ 60.307257 529.817286 0 ] (Code/Settings.Designer/:__span-0-65) [ 1829 0 R /XYZ 60.307257 503.016582 0 ] (Code/Settings.Designer/:__span-0-66) [ 1829 0 R /XYZ 60.307257 489.616230 0 ] (Code/Settings.Designer/:__span-0-67) [ 1829 0 R /XYZ 60.307257 476.215878 0 ] (Code/Settings.Designer/:__span-0-68) [ 1829 0 R /XYZ 60.307257 462.815526 0 ] (Code/Settings.Designer/:__span-0-69) [ 1829 0 R /XYZ 60.307257 449.415174 0 ] (Code/Settings.Designer/:__span-0-7) [ 1827 0 R /XYZ 60.307257 627.233310 0 ] (Code/Settings.Designer/:__span-0-70) [ 1829 0 R /XYZ 60.307257 436.014822 0 ] (Code/Settings.Designer/:__span-0-71) [ 1829 0 R /XYZ 60.307257 422.614470 0 ] (Code/Settings.Designer/:__span-0-72) [ 1829 0 R /XYZ 60.307257 395.813766 0 ] (Code/Settings.Designer/:__span-0-73) [ 1829 0 R /XYZ 60.307257 382.413414 0 ] (Code/Settings.Designer/:__span-0-74) [ 1829 0 R /XYZ 60.307257 369.013062 0 ] (Code/Settings.Designer/:__span-0-75) [ 1829 0 R /XYZ 60.307257 355.612710 0 ] (Code/Settings.Designer/:__span-0-76) [ 1829 0 R /XYZ 60.307257 342.212358 0 ] (Code/Settings.Designer/:__span-0-77) [ 1829 0 R /XYZ 60.307257 328.812006 0 ] (Code/Settings.Designer/:__span-0-78) [ 1829 0 R /XYZ 60.307257 315.411654 0 ] (Code/Settings.Designer/:__span-0-79) [ 1829 0 R /XYZ 60.307257 302.011302 0 ] (Code/Settings.Designer/:__span-0-8) [ 1827 0 R /XYZ 60.307257 613.832958 0 ] (Code/Settings.Designer/:__span-0-80) [ 1829 0 R /XYZ 60.307257 288.610950 0 ] (Code/Settings.Designer/:__span-0-81) [ 1829 0 R /XYZ 60.307257 275.210598 0 ] (Code/Settings.Designer/:__span-0-82) [ 1829 0 R /XYZ 60.307257 261.810246 0 ] (Code/Settings.Designer/:__span-0-83) [ 1829 0 R /XYZ 60.307257 235.009542 0 ] (Code/Settings.Designer/:__span-0-84) [ 1829 0 R /XYZ 60.307257 221.609190 0 ] (Code/Settings.Designer/:__span-0-85) [ 1829 0 R /XYZ 60.307257 208.208838 0 ] (Code/Settings.Designer/:__span-0-86) [ 1829 0 R /XYZ 60.307257 194.808486 0 ] (Code/Settings.Designer/:__span-0-87) [ 1829 0 R /XYZ 60.307257 181.408134 0 ] (Code/Settings.Designer/:__span-0-88) [ 1829 0 R /XYZ 60.307257 168.007782 0 ] (Code/Settings.Designer/:__span-0-89) [ 1829 0 R /XYZ 60.307257 154.607430 0 ] (Code/Settings.Designer/:__span-0-9) [ 1827 0 R /XYZ 60.307257 600.432606 0 ] (Code/Settings.Designer/:__span-0-90) [ 1829 0 R /XYZ 60.307257 141.207078 0 ] (Code/Settings.Designer/:__span-0-91) [ 1829 0 R /XYZ 60.307257 127.806726 0 ] (Code/Settings.Designer/:__span-0-92) [ 1829 0 R /XYZ 60.307257 114.406374 0 ] (Code/Settings.Designer/:__span-0-93) [ 1831 0 R /XYZ 60.307257 771.023622 0 ] (Code/Settings.Designer/:__span-0-94) [ 1831 0 R /XYZ 60.307257 744.222918 0 ] (Code/Settings.Designer/:__span-0-95) [ 1831 0 R /XYZ 60.307257 730.822566 0 ] (Code/Settings.Designer/:__span-0-96) [ 1831 0 R /XYZ 60.307257 717.422214 0 ] (Code/Settings.Designer/:__span-0-97) [ 1831 0 R /XYZ 60.307257 677.221158 0 ] (Code/Settings.Designer/:__span-0-98) [ 1831 0 R /XYZ 60.307257 663.820806 0 ] (Code/Settings.Designer/:__span-0-99) [ 1831 0 R /XYZ 60.307257 650.420454 0 ] (Code/Settings.Designer/:settingsdesignercs) [ 1827 0 R /XYZ 39.386457 747.563622 0 ] (Code/Settings/:) [ 1955 0 R /XYZ 39.386457 747.563622 0 ] (Code/Settings/:__span-0-1) [ 1955 0 R /XYZ 60.307257 707.635422 0 ] (Code/Settings/:__span-0-10) [ 1955 0 R /XYZ 60.307257 587.032254 0 ] (Code/Settings/:__span-0-100) [ 1959 0 R /XYZ 60.307257 610.219398 0 ] (Code/Settings/:__span-0-101) [ 1959 0 R /XYZ 60.307257 596.819046 0 ] (Code/Settings/:__span-0-102) [ 1959 0 R /XYZ 60.307257 583.418694 0 ] (Code/Settings/:__span-0-103) [ 1959 0 R /XYZ 60.307257 570.018342 0 ] (Code/Settings/:__span-0-104) [ 1959 0 R /XYZ 60.307257 556.617990 0 ] (Code/Settings/:__span-0-105) [ 1959 0 R /XYZ 60.307257 543.217638 0 ] (Code/Settings/:__span-0-106) [ 1959 0 R /XYZ 60.307257 516.416934 0 ] (Code/Settings/:__span-0-107) [ 1959 0 R /XYZ 60.307257 503.016582 0 ] (Code/Settings/:__span-0-108) [ 1959 0 R /XYZ 60.307257 489.616230 0 ] (Code/Settings/:__span-0-109) [ 1959 0 R /XYZ 60.307257 476.215878 0 ] (Code/Settings/:__span-0-11) [ 1955 0 R /XYZ 60.307257 573.631902 0 ] (Code/Settings/:__span-0-110) [ 1959 0 R /XYZ 60.307257 462.815526 0 ] (Code/Settings/:__span-0-111) [ 1959 0 R /XYZ 60.307257 449.415174 0 ] (Code/Settings/:__span-0-112) [ 1959 0 R /XYZ 60.307257 436.014822 0 ] (Code/Settings/:__span-0-113) [ 1959 0 R /XYZ 60.307257 422.614470 0 ] (Code/Settings/:__span-0-114) [ 1959 0 R /XYZ 60.307257 409.214118 0 ] (Code/Settings/:__span-0-115) [ 1959 0 R /XYZ 60.307257 395.813766 0 ] (Code/Settings/:__span-0-116) [ 1959 0 R /XYZ 60.307257 382.413414 0 ] (Code/Settings/:__span-0-117) [ 1959 0 R /XYZ 60.307257 369.013062 0 ] (Code/Settings/:__span-0-118) [ 1959 0 R /XYZ 60.307257 355.612710 0 ] (Code/Settings/:__span-0-119) [ 1959 0 R /XYZ 60.307257 342.212358 0 ] (Code/Settings/:__span-0-12) [ 1955 0 R /XYZ 60.307257 560.231550 0 ] (Code/Settings/:__span-0-120) [ 1959 0 R /XYZ 60.307257 328.812006 0 ] (Code/Settings/:__span-0-121) [ 1959 0 R /XYZ 60.307257 315.411654 0 ] (Code/Settings/:__span-0-122) [ 1959 0 R /XYZ 60.307257 302.011302 0 ] (Code/Settings/:__span-0-123) [ 1959 0 R /XYZ 60.307257 288.610950 0 ] (Code/Settings/:__span-0-124) [ 1959 0 R /XYZ 60.307257 275.210598 0 ] (Code/Settings/:__span-0-125) [ 1959 0 R /XYZ 60.307257 261.810246 0 ] (Code/Settings/:__span-0-126) [ 1959 0 R /XYZ 60.307257 248.409894 0 ] (Code/Settings/:__span-0-127) [ 1959 0 R /XYZ 60.307257 235.009542 0 ] (Code/Settings/:__span-0-128) [ 1959 0 R /XYZ 60.307257 221.609190 0 ] (Code/Settings/:__span-0-129) [ 1959 0 R /XYZ 60.307257 208.208838 0 ] (Code/Settings/:__span-0-13) [ 1955 0 R /XYZ 60.307257 546.831198 0 ] (Code/Settings/:__span-0-130) [ 1959 0 R /XYZ 60.307257 194.808486 0 ] (Code/Settings/:__span-0-131) [ 1959 0 R /XYZ 60.307257 181.408134 0 ] (Code/Settings/:__span-0-132) [ 1959 0 R /XYZ 60.307257 168.007782 0 ] (Code/Settings/:__span-0-133) [ 1959 0 R /XYZ 60.307257 154.607430 0 ] (Code/Settings/:__span-0-134) [ 1959 0 R /XYZ 60.307257 141.207078 0 ] (Code/Settings/:__span-0-135) [ 1959 0 R /XYZ 60.307257 127.806726 0 ] (Code/Settings/:__span-0-136) [ 1959 0 R /XYZ 60.307257 114.406374 0 ] (Code/Settings/:__span-0-137) [ 1959 0 R /XYZ 60.307257 101.006022 0 ] (Code/Settings/:__span-0-138) [ 1959 0 R /XYZ 60.307257 87.605670 0 ] (Code/Settings/:__span-0-139) [ 1961 0 R /XYZ 60.307257 771.023622 0 ] (Code/Settings/:__span-0-14) [ 1955 0 R /XYZ 60.307257 533.430846 0 ] (Code/Settings/:__span-0-140) [ 1961 0 R /XYZ 60.307257 757.623270 0 ] (Code/Settings/:__span-0-141) [ 1961 0 R /XYZ 60.307257 744.222918 0 ] (Code/Settings/:__span-0-142) [ 1961 0 R /XYZ 60.307257 730.822566 0 ] (Code/Settings/:__span-0-143) [ 1961 0 R /XYZ 60.307257 717.422214 0 ] (Code/Settings/:__span-0-144) [ 1961 0 R /XYZ 60.307257 704.021862 0 ] (Code/Settings/:__span-0-145) [ 1961 0 R /XYZ 60.307257 690.621510 0 ] (Code/Settings/:__span-0-146) [ 1961 0 R /XYZ 60.307257 677.221158 0 ] (Code/Settings/:__span-0-147) [ 1961 0 R /XYZ 60.307257 663.820806 0 ] (Code/Settings/:__span-0-148) [ 1961 0 R /XYZ 60.307257 650.420454 0 ] (Code/Settings/:__span-0-149) [ 1961 0 R /XYZ 60.307257 637.020102 0 ] (Code/Settings/:__span-0-15) [ 1955 0 R /XYZ 60.307257 520.030494 0 ] (Code/Settings/:__span-0-150) [ 1961 0 R /XYZ 60.307257 623.619750 0 ] (Code/Settings/:__span-0-151) [ 1961 0 R /XYZ 60.307257 610.219398 0 ] (Code/Settings/:__span-0-152) [ 1961 0 R /XYZ 60.307257 596.819046 0 ] (Code/Settings/:__span-0-153) [ 1961 0 R /XYZ 60.307257 583.418694 0 ] (Code/Settings/:__span-0-154) [ 1961 0 R /XYZ 60.307257 570.018342 0 ] (Code/Settings/:__span-0-155) [ 1961 0 R /XYZ 60.307257 556.617990 0 ] (Code/Settings/:__span-0-156) [ 1961 0 R /XYZ 60.307257 543.217638 0 ] (Code/Settings/:__span-0-157) [ 1961 0 R /XYZ 60.307257 529.817286 0 ] (Code/Settings/:__span-0-158) [ 1961 0 R /XYZ 60.307257 516.416934 0 ] (Code/Settings/:__span-0-159) [ 1961 0 R /XYZ 60.307257 503.016582 0 ] (Code/Settings/:__span-0-16) [ 1955 0 R /XYZ 60.307257 506.630142 0 ] (Code/Settings/:__span-0-160) [ 1961 0 R /XYZ 60.307257 489.616230 0 ] (Code/Settings/:__span-0-161) [ 1961 0 R /XYZ 60.307257 476.215878 0 ] (Code/Settings/:__span-0-162) [ 1961 0 R /XYZ 60.307257 462.815526 0 ] (Code/Settings/:__span-0-163) [ 1961 0 R /XYZ 60.307257 449.415174 0 ] (Code/Settings/:__span-0-164) [ 1961 0 R /XYZ 60.307257 436.014822 0 ] (Code/Settings/:__span-0-165) [ 1961 0 R /XYZ 60.307257 422.614470 0 ] (Code/Settings/:__span-0-166) [ 1961 0 R /XYZ 60.307257 409.214118 0 ] (Code/Settings/:__span-0-167) [ 1961 0 R /XYZ 60.307257 395.813766 0 ] (Code/Settings/:__span-0-168) [ 1961 0 R /XYZ 60.307257 382.413414 0 ] (Code/Settings/:__span-0-169) [ 1961 0 R /XYZ 60.307257 369.013062 0 ] (Code/Settings/:__span-0-17) [ 1955 0 R /XYZ 60.307257 493.229790 0 ] (Code/Settings/:__span-0-170) [ 1961 0 R /XYZ 60.307257 355.612710 0 ] (Code/Settings/:__span-0-171) [ 1961 0 R /XYZ 60.307257 342.212358 0 ] (Code/Settings/:__span-0-172) [ 1961 0 R /XYZ 60.307257 328.812006 0 ] (Code/Settings/:__span-0-173) [ 1961 0 R /XYZ 60.307257 315.411654 0 ] (Code/Settings/:__span-0-174) [ 1961 0 R /XYZ 60.307257 302.011302 0 ] (Code/Settings/:__span-0-175) [ 1961 0 R /XYZ 60.307257 288.610950 0 ] (Code/Settings/:__span-0-176) [ 1961 0 R /XYZ 60.307257 275.210598 0 ] (Code/Settings/:__span-0-177) [ 1961 0 R /XYZ 60.307257 261.810246 0 ] (Code/Settings/:__span-0-178) [ 1961 0 R /XYZ 60.307257 248.409894 0 ] (Code/Settings/:__span-0-179) [ 1961 0 R /XYZ 60.307257 235.009542 0 ] (Code/Settings/:__span-0-18) [ 1955 0 R /XYZ 60.307257 479.829438 0 ] (Code/Settings/:__span-0-180) [ 1961 0 R /XYZ 60.307257 221.609190 0 ] (Code/Settings/:__span-0-181) [ 1961 0 R /XYZ 60.307257 208.208838 0 ] (Code/Settings/:__span-0-182) [ 1961 0 R /XYZ 60.307257 194.808486 0 ] (Code/Settings/:__span-0-183) [ 1961 0 R /XYZ 60.307257 181.408134 0 ] (Code/Settings/:__span-0-184) [ 1961 0 R /XYZ 60.307257 168.007782 0 ] (Code/Settings/:__span-0-185) [ 1961 0 R /XYZ 60.307257 154.607430 0 ] (Code/Settings/:__span-0-186) [ 1961 0 R /XYZ 60.307257 141.207078 0 ] (Code/Settings/:__span-0-187) [ 1961 0 R /XYZ 60.307257 127.806726 0 ] (Code/Settings/:__span-0-188) [ 1961 0 R /XYZ 60.307257 114.406374 0 ] (Code/Settings/:__span-0-189) [ 1961 0 R /XYZ 60.307257 101.006022 0 ] (Code/Settings/:__span-0-19) [ 1955 0 R /XYZ 60.307257 466.429086 0 ] (Code/Settings/:__span-0-190) [ 1961 0 R /XYZ 60.307257 87.605670 0 ] (Code/Settings/:__span-0-191) [ 1963 0 R /XYZ 60.307257 771.023622 0 ] (Code/Settings/:__span-0-192) [ 1963 0 R /XYZ 60.307257 757.623270 0 ] (Code/Settings/:__span-0-193) [ 1963 0 R /XYZ 60.307257 744.222918 0 ] (Code/Settings/:__span-0-194) [ 1963 0 R /XYZ 60.307257 730.822566 0 ] (Code/Settings/:__span-0-195) [ 1963 0 R /XYZ 60.307257 717.422214 0 ] (Code/Settings/:__span-0-196) [ 1963 0 R /XYZ 60.307257 704.021862 0 ] (Code/Settings/:__span-0-197) [ 1963 0 R /XYZ 60.307257 690.621510 0 ] (Code/Settings/:__span-0-198) [ 1963 0 R /XYZ 60.307257 677.221158 0 ] (Code/Settings/:__span-0-199) [ 1963 0 R /XYZ 60.307257 663.820806 0 ] (Code/Settings/:__span-0-2) [ 1955 0 R /XYZ 60.307257 694.235070 0 ] (Code/Settings/:__span-0-20) [ 1955 0 R /XYZ 60.307257 453.028734 0 ] (Code/Settings/:__span-0-200) [ 1963 0 R /XYZ 60.307257 650.420454 0 ] (Code/Settings/:__span-0-201) [ 1963 0 R /XYZ 60.307257 637.020102 0 ] (Code/Settings/:__span-0-202) [ 1963 0 R /XYZ 60.307257 623.619750 0 ] (Code/Settings/:__span-0-203) [ 1963 0 R /XYZ 60.307257 610.219398 0 ] (Code/Settings/:__span-0-204) [ 1963 0 R /XYZ 60.307257 596.819046 0 ] (Code/Settings/:__span-0-205) [ 1963 0 R /XYZ 60.307257 583.418694 0 ] (Code/Settings/:__span-0-206) [ 1963 0 R /XYZ 60.307257 570.018342 0 ] (Code/Settings/:__span-0-207) [ 1963 0 R /XYZ 60.307257 556.617990 0 ] (Code/Settings/:__span-0-208) [ 1963 0 R /XYZ 60.307257 543.217638 0 ] (Code/Settings/:__span-0-209) [ 1963 0 R /XYZ 60.307257 529.817286 0 ] (Code/Settings/:__span-0-21) [ 1955 0 R /XYZ 60.307257 439.628382 0 ] (Code/Settings/:__span-0-210) [ 1963 0 R /XYZ 60.307257 516.416934 0 ] (Code/Settings/:__span-0-211) [ 1963 0 R /XYZ 60.307257 503.016582 0 ] (Code/Settings/:__span-0-212) [ 1963 0 R /XYZ 60.307257 489.616230 0 ] (Code/Settings/:__span-0-213) [ 1963 0 R /XYZ 60.307257 476.215878 0 ] (Code/Settings/:__span-0-214) [ 1963 0 R /XYZ 60.307257 462.815526 0 ] (Code/Settings/:__span-0-215) [ 1963 0 R /XYZ 60.307257 449.415174 0 ] (Code/Settings/:__span-0-216) [ 1963 0 R /XYZ 60.307257 436.014822 0 ] (Code/Settings/:__span-0-217) [ 1963 0 R /XYZ 60.307257 422.614470 0 ] (Code/Settings/:__span-0-218) [ 1963 0 R /XYZ 60.307257 409.214118 0 ] (Code/Settings/:__span-0-219) [ 1963 0 R /XYZ 60.307257 382.413414 0 ] (Code/Settings/:__span-0-22) [ 1955 0 R /XYZ 60.307257 426.228030 0 ] (Code/Settings/:__span-0-220) [ 1963 0 R /XYZ 60.307257 369.013062 0 ] (Code/Settings/:__span-0-221) [ 1963 0 R /XYZ 60.307257 342.212358 0 ] (Code/Settings/:__span-0-222) [ 1963 0 R /XYZ 60.307257 315.411654 0 ] (Code/Settings/:__span-0-223) [ 1963 0 R /XYZ 60.307257 288.610950 0 ] (Code/Settings/:__span-0-224) [ 1963 0 R /XYZ 60.307257 275.210598 0 ] (Code/Settings/:__span-0-225) [ 1963 0 R /XYZ 60.307257 248.409894 0 ] (Code/Settings/:__span-0-226) [ 1963 0 R /XYZ 60.307257 235.009542 0 ] (Code/Settings/:__span-0-227) [ 1963 0 R /XYZ 60.307257 221.609190 0 ] (Code/Settings/:__span-0-228) [ 1963 0 R /XYZ 60.307257 208.208838 0 ] (Code/Settings/:__span-0-229) [ 1963 0 R /XYZ 60.307257 194.808486 0 ] (Code/Settings/:__span-0-23) [ 1955 0 R /XYZ 60.307257 412.827678 0 ] (Code/Settings/:__span-0-230) [ 1963 0 R /XYZ 60.307257 181.408134 0 ] (Code/Settings/:__span-0-231) [ 1963 0 R /XYZ 60.307257 168.007782 0 ] (Code/Settings/:__span-0-232) [ 1963 0 R /XYZ 60.307257 154.607430 0 ] (Code/Settings/:__span-0-233) [ 1963 0 R /XYZ 60.307257 141.207078 0 ] (Code/Settings/:__span-0-234) [ 1963 0 R /XYZ 60.307257 127.806726 0 ] (Code/Settings/:__span-0-235) [ 1963 0 R /XYZ 60.307257 114.406374 0 ] (Code/Settings/:__span-0-236) [ 1963 0 R /XYZ 60.307257 101.006022 0 ] (Code/Settings/:__span-0-237) [ 1963 0 R /XYZ 60.307257 87.605670 0 ] (Code/Settings/:__span-0-238) [ 1965 0 R /XYZ 60.307257 771.023622 0 ] (Code/Settings/:__span-0-239) [ 1965 0 R /XYZ 60.307257 757.623270 0 ] (Code/Settings/:__span-0-24) [ 1955 0 R /XYZ 60.307257 399.427326 0 ] (Code/Settings/:__span-0-240) [ 1965 0 R /XYZ 60.307257 744.222918 0 ] (Code/Settings/:__span-0-241) [ 1965 0 R /XYZ 60.307257 730.822566 0 ] (Code/Settings/:__span-0-242) [ 1965 0 R /XYZ 60.307257 717.422214 0 ] (Code/Settings/:__span-0-243) [ 1965 0 R /XYZ 60.307257 704.021862 0 ] (Code/Settings/:__span-0-244) [ 1965 0 R /XYZ 60.307257 690.621510 0 ] (Code/Settings/:__span-0-245) [ 1965 0 R /XYZ 60.307257 677.221158 0 ] (Code/Settings/:__span-0-246) [ 1965 0 R /XYZ 60.307257 663.820806 0 ] (Code/Settings/:__span-0-247) [ 1965 0 R /XYZ 60.307257 650.420454 0 ] (Code/Settings/:__span-0-248) [ 1965 0 R /XYZ 60.307257 637.020102 0 ] (Code/Settings/:__span-0-249) [ 1965 0 R /XYZ 60.307257 623.619750 0 ] (Code/Settings/:__span-0-25) [ 1955 0 R /XYZ 60.307257 386.026974 0 ] (Code/Settings/:__span-0-250) [ 1965 0 R /XYZ 60.307257 596.819046 0 ] (Code/Settings/:__span-0-251) [ 1965 0 R /XYZ 60.307257 570.018342 0 ] (Code/Settings/:__span-0-252) [ 1965 0 R /XYZ 60.307257 556.617990 0 ] (Code/Settings/:__span-0-253) [ 1965 0 R /XYZ 60.307257 529.817286 0 ] (Code/Settings/:__span-0-254) [ 1965 0 R /XYZ 60.307257 516.416934 0 ] (Code/Settings/:__span-0-255) [ 1965 0 R /XYZ 60.307257 503.016582 0 ] (Code/Settings/:__span-0-256) [ 1965 0 R /XYZ 60.307257 489.616230 0 ] (Code/Settings/:__span-0-257) [ 1965 0 R /XYZ 60.307257 476.215878 0 ] (Code/Settings/:__span-0-258) [ 1965 0 R /XYZ 60.307257 462.815526 0 ] (Code/Settings/:__span-0-259) [ 1965 0 R /XYZ 60.307257 449.415174 0 ] (Code/Settings/:__span-0-26) [ 1955 0 R /XYZ 60.307257 372.626622 0 ] (Code/Settings/:__span-0-260) [ 1965 0 R /XYZ 60.307257 436.014822 0 ] (Code/Settings/:__span-0-261) [ 1965 0 R /XYZ 60.307257 422.614470 0 ] (Code/Settings/:__span-0-262) [ 1965 0 R /XYZ 60.307257 409.214118 0 ] (Code/Settings/:__span-0-263) [ 1965 0 R /XYZ 60.307257 395.813766 0 ] (Code/Settings/:__span-0-264) [ 1965 0 R /XYZ 60.307257 382.413414 0 ] (Code/Settings/:__span-0-265) [ 1965 0 R /XYZ 60.307257 369.013062 0 ] (Code/Settings/:__span-0-266) [ 1965 0 R /XYZ 60.307257 355.612710 0 ] (Code/Settings/:__span-0-267) [ 1965 0 R /XYZ 60.307257 342.212358 0 ] (Code/Settings/:__span-0-268) [ 1965 0 R /XYZ 60.307257 328.812006 0 ] (Code/Settings/:__span-0-269) [ 1965 0 R /XYZ 60.307257 315.411654 0 ] (Code/Settings/:__span-0-27) [ 1955 0 R /XYZ 60.307257 359.226270 0 ] (Code/Settings/:__span-0-270) [ 1965 0 R /XYZ 60.307257 302.011302 0 ] (Code/Settings/:__span-0-271) [ 1965 0 R /XYZ 60.307257 288.610950 0 ] (Code/Settings/:__span-0-272) [ 1965 0 R /XYZ 60.307257 261.810246 0 ] (Code/Settings/:__span-0-273) [ 1965 0 R /XYZ 60.307257 248.409894 0 ] (Code/Settings/:__span-0-274) [ 1965 0 R /XYZ 60.307257 235.009542 0 ] (Code/Settings/:__span-0-275) [ 1965 0 R /XYZ 60.307257 221.609190 0 ] (Code/Settings/:__span-0-276) [ 1965 0 R /XYZ 60.307257 208.208838 0 ] (Code/Settings/:__span-0-277) [ 1965 0 R /XYZ 60.307257 194.808486 0 ] (Code/Settings/:__span-0-278) [ 1965 0 R /XYZ 60.307257 181.408134 0 ] (Code/Settings/:__span-0-279) [ 1965 0 R /XYZ 60.307257 168.007782 0 ] (Code/Settings/:__span-0-28) [ 1955 0 R /XYZ 60.307257 345.825918 0 ] (Code/Settings/:__span-0-280) [ 1965 0 R /XYZ 60.307257 154.607430 0 ] (Code/Settings/:__span-0-281) [ 1965 0 R /XYZ 60.307257 141.207078 0 ] (Code/Settings/:__span-0-282) [ 1965 0 R /XYZ 60.307257 127.806726 0 ] (Code/Settings/:__span-0-283) [ 1965 0 R /XYZ 60.307257 114.406374 0 ] (Code/Settings/:__span-0-284) [ 1965 0 R /XYZ 60.307257 101.006022 0 ] (Code/Settings/:__span-0-285) [ 1965 0 R /XYZ 60.307257 87.605670 0 ] (Code/Settings/:__span-0-286) [ 1967 0 R /XYZ 60.307257 771.023622 0 ] (Code/Settings/:__span-0-287) [ 1967 0 R /XYZ 60.307257 757.623270 0 ] (Code/Settings/:__span-0-288) [ 1967 0 R /XYZ 60.307257 744.222918 0 ] (Code/Settings/:__span-0-289) [ 1967 0 R /XYZ 60.307257 730.822566 0 ] (Code/Settings/:__span-0-29) [ 1955 0 R /XYZ 60.307257 332.425566 0 ] (Code/Settings/:__span-0-290) [ 1967 0 R /XYZ 60.307257 717.422214 0 ] (Code/Settings/:__span-0-291) [ 1967 0 R /XYZ 60.307257 704.021862 0 ] (Code/Settings/:__span-0-292) [ 1967 0 R /XYZ 60.307257 690.621510 0 ] (Code/Settings/:__span-0-293) [ 1967 0 R /XYZ 60.307257 677.221158 0 ] (Code/Settings/:__span-0-294) [ 1967 0 R /XYZ 60.307257 663.820806 0 ] (Code/Settings/:__span-0-295) [ 1967 0 R /XYZ 60.307257 650.420454 0 ] (Code/Settings/:__span-0-296) [ 1967 0 R /XYZ 60.307257 637.020102 0 ] (Code/Settings/:__span-0-297) [ 1967 0 R /XYZ 60.307257 623.619750 0 ] (Code/Settings/:__span-0-298) [ 1967 0 R /XYZ 60.307257 610.219398 0 ] (Code/Settings/:__span-0-299) [ 1967 0 R /XYZ 60.307257 596.819046 0 ] (Code/Settings/:__span-0-3) [ 1955 0 R /XYZ 60.307257 680.834718 0 ] (Code/Settings/:__span-0-30) [ 1955 0 R /XYZ 60.307257 319.025214 0 ] (Code/Settings/:__span-0-300) [ 1967 0 R /XYZ 60.307257 583.418694 0 ] (Code/Settings/:__span-0-301) [ 1967 0 R /XYZ 60.307257 570.018342 0 ] (Code/Settings/:__span-0-302) [ 1967 0 R /XYZ 60.307257 556.617990 0 ] (Code/Settings/:__span-0-303) [ 1967 0 R /XYZ 60.307257 543.217638 0 ] (Code/Settings/:__span-0-304) [ 1967 0 R /XYZ 60.307257 529.817286 0 ] (Code/Settings/:__span-0-305) [ 1967 0 R /XYZ 60.307257 516.416934 0 ] (Code/Settings/:__span-0-306) [ 1967 0 R /XYZ 60.307257 503.016582 0 ] (Code/Settings/:__span-0-307) [ 1967 0 R /XYZ 60.307257 489.616230 0 ] (Code/Settings/:__span-0-308) [ 1967 0 R /XYZ 60.307257 476.215878 0 ] (Code/Settings/:__span-0-309) [ 1967 0 R /XYZ 60.307257 462.815526 0 ] (Code/Settings/:__span-0-31) [ 1955 0 R /XYZ 60.307257 305.624862 0 ] (Code/Settings/:__span-0-310) [ 1967 0 R /XYZ 60.307257 436.014822 0 ] (Code/Settings/:__span-0-311) [ 1967 0 R /XYZ 60.307257 422.614470 0 ] (Code/Settings/:__span-0-312) [ 1967 0 R /XYZ 60.307257 409.214118 0 ] (Code/Settings/:__span-0-313) [ 1967 0 R /XYZ 60.307257 395.813766 0 ] (Code/Settings/:__span-0-314) [ 1967 0 R /XYZ 60.307257 382.413414 0 ] (Code/Settings/:__span-0-315) [ 1967 0 R /XYZ 60.307257 369.013062 0 ] (Code/Settings/:__span-0-316) [ 1967 0 R /XYZ 60.307257 355.612710 0 ] (Code/Settings/:__span-0-317) [ 1967 0 R /XYZ 60.307257 342.212358 0 ] (Code/Settings/:__span-0-318) [ 1967 0 R /XYZ 60.307257 328.812006 0 ] (Code/Settings/:__span-0-319) [ 1967 0 R /XYZ 60.307257 315.411654 0 ] (Code/Settings/:__span-0-32) [ 1955 0 R /XYZ 60.307257 292.224510 0 ] (Code/Settings/:__span-0-320) [ 1967 0 R /XYZ 60.307257 302.011302 0 ] (Code/Settings/:__span-0-321) [ 1967 0 R /XYZ 60.307257 288.610950 0 ] (Code/Settings/:__span-0-322) [ 1967 0 R /XYZ 60.307257 275.210598 0 ] (Code/Settings/:__span-0-323) [ 1967 0 R /XYZ 60.307257 261.810246 0 ] (Code/Settings/:__span-0-324) [ 1967 0 R /XYZ 60.307257 248.409894 0 ] (Code/Settings/:__span-0-325) [ 1967 0 R /XYZ 60.307257 235.009542 0 ] (Code/Settings/:__span-0-326) [ 1967 0 R /XYZ 60.307257 221.609190 0 ] (Code/Settings/:__span-0-327) [ 1967 0 R /XYZ 60.307257 208.208838 0 ] (Code/Settings/:__span-0-328) [ 1967 0 R /XYZ 60.307257 194.808486 0 ] (Code/Settings/:__span-0-329) [ 1967 0 R /XYZ 60.307257 181.408134 0 ] (Code/Settings/:__span-0-33) [ 1955 0 R /XYZ 60.307257 278.824158 0 ] (Code/Settings/:__span-0-330) [ 1967 0 R /XYZ 60.307257 168.007782 0 ] (Code/Settings/:__span-0-331) [ 1967 0 R /XYZ 60.307257 154.607430 0 ] (Code/Settings/:__span-0-332) [ 1967 0 R /XYZ 60.307257 141.207078 0 ] (Code/Settings/:__span-0-333) [ 1967 0 R /XYZ 60.307257 127.806726 0 ] (Code/Settings/:__span-0-334) [ 1967 0 R /XYZ 60.307257 87.605670 0 ] (Code/Settings/:__span-0-335) [ 1969 0 R /XYZ 60.307257 771.023622 0 ] (Code/Settings/:__span-0-336) [ 1969 0 R /XYZ 60.307257 757.623270 0 ] (Code/Settings/:__span-0-337) [ 1969 0 R /XYZ 60.307257 717.422214 0 ] (Code/Settings/:__span-0-338) [ 1969 0 R /XYZ 60.307257 704.021862 0 ] (Code/Settings/:__span-0-339) [ 1969 0 R /XYZ 60.307257 690.621510 0 ] (Code/Settings/:__span-0-34) [ 1955 0 R /XYZ 60.307257 265.423806 0 ] (Code/Settings/:__span-0-340) [ 1969 0 R /XYZ 60.307257 650.420454 0 ] (Code/Settings/:__span-0-341) [ 1969 0 R /XYZ 60.307257 637.020102 0 ] (Code/Settings/:__span-0-342) [ 1969 0 R /XYZ 60.307257 623.619750 0 ] (Code/Settings/:__span-0-343) [ 1969 0 R /XYZ 60.307257 596.819046 0 ] (Code/Settings/:__span-0-344) [ 1969 0 R /XYZ 60.307257 583.418694 0 ] (Code/Settings/:__span-0-345) [ 1969 0 R /XYZ 60.307257 570.018342 0 ] (Code/Settings/:__span-0-346) [ 1969 0 R /XYZ 60.307257 543.217638 0 ] (Code/Settings/:__span-0-347) [ 1969 0 R /XYZ 60.307257 529.817286 0 ] (Code/Settings/:__span-0-348) [ 1969 0 R /XYZ 60.307257 516.416934 0 ] (Code/Settings/:__span-0-349) [ 1969 0 R /XYZ 60.307257 489.616230 0 ] (Code/Settings/:__span-0-35) [ 1955 0 R /XYZ 60.307257 238.623102 0 ] (Code/Settings/:__span-0-350) [ 1969 0 R /XYZ 60.307257 476.215878 0 ] (Code/Settings/:__span-0-351) [ 1969 0 R /XYZ 60.307257 462.815526 0 ] (Code/Settings/:__span-0-352) [ 1969 0 R /XYZ 60.307257 436.014822 0 ] (Code/Settings/:__span-0-353) [ 1969 0 R /XYZ 60.307257 422.614470 0 ] (Code/Settings/:__span-0-354) [ 1969 0 R /XYZ 60.307257 409.214118 0 ] (Code/Settings/:__span-0-355) [ 1969 0 R /XYZ 60.307257 382.413414 0 ] (Code/Settings/:__span-0-356) [ 1969 0 R /XYZ 60.307257 369.013062 0 ] (Code/Settings/:__span-0-357) [ 1969 0 R /XYZ 60.307257 355.612710 0 ] (Code/Settings/:__span-0-358) [ 1969 0 R /XYZ 60.307257 342.212358 0 ] (Code/Settings/:__span-0-359) [ 1969 0 R /XYZ 60.307257 328.812006 0 ] (Code/Settings/:__span-0-36) [ 1955 0 R /XYZ 60.307257 211.822398 0 ] (Code/Settings/:__span-0-360) [ 1969 0 R /XYZ 60.307257 315.411654 0 ] (Code/Settings/:__span-0-361) [ 1969 0 R /XYZ 60.307257 302.011302 0 ] (Code/Settings/:__span-0-362) [ 1969 0 R /XYZ 60.307257 288.610950 0 ] (Code/Settings/:__span-0-363) [ 1969 0 R /XYZ 60.307257 275.210598 0 ] (Code/Settings/:__span-0-364) [ 1969 0 R /XYZ 60.307257 261.810246 0 ] (Code/Settings/:__span-0-365) [ 1969 0 R /XYZ 60.307257 248.409894 0 ] (Code/Settings/:__span-0-366) [ 1969 0 R /XYZ 60.307257 235.009542 0 ] (Code/Settings/:__span-0-367) [ 1969 0 R /XYZ 60.307257 221.609190 0 ] (Code/Settings/:__span-0-368) [ 1969 0 R /XYZ 60.307257 208.208838 0 ] (Code/Settings/:__span-0-369) [ 1969 0 R /XYZ 60.307257 194.808486 0 ] (Code/Settings/:__span-0-37) [ 1955 0 R /XYZ 60.307257 185.021694 0 ] (Code/Settings/:__span-0-370) [ 1969 0 R /XYZ 60.307257 181.408134 0 ] (Code/Settings/:__span-0-371) [ 1969 0 R /XYZ 60.307257 168.007782 0 ] (Code/Settings/:__span-0-372) [ 1969 0 R /XYZ 60.307257 154.607430 0 ] (Code/Settings/:__span-0-373) [ 1969 0 R /XYZ 60.307257 141.207078 0 ] (Code/Settings/:__span-0-374) [ 1969 0 R /XYZ 60.307257 127.806726 0 ] (Code/Settings/:__span-0-375) [ 1969 0 R /XYZ 60.307257 114.406374 0 ] (Code/Settings/:__span-0-376) [ 1969 0 R /XYZ 60.307257 101.006022 0 ] (Code/Settings/:__span-0-377) [ 1969 0 R /XYZ 60.307257 87.605670 0 ] (Code/Settings/:__span-0-378) [ 1971 0 R /XYZ 60.307257 771.023622 0 ] (Code/Settings/:__span-0-379) [ 1971 0 R /XYZ 60.307257 757.623270 0 ] (Code/Settings/:__span-0-38) [ 1955 0 R /XYZ 60.307257 171.621342 0 ] (Code/Settings/:__span-0-380) [ 1971 0 R /XYZ 60.307257 744.222918 0 ] (Code/Settings/:__span-0-381) [ 1971 0 R /XYZ 60.307257 730.822566 0 ] (Code/Settings/:__span-0-382) [ 1971 0 R /XYZ 60.307257 717.422214 0 ] (Code/Settings/:__span-0-383) [ 1971 0 R /XYZ 60.307257 704.021862 0 ] (Code/Settings/:__span-0-384) [ 1971 0 R /XYZ 60.307257 690.621510 0 ] (Code/Settings/:__span-0-385) [ 1971 0 R /XYZ 60.307257 677.221158 0 ] (Code/Settings/:__span-0-386) [ 1971 0 R /XYZ 60.307257 663.820806 0 ] (Code/Settings/:__span-0-387) [ 1971 0 R /XYZ 60.307257 650.420454 0 ] (Code/Settings/:__span-0-388) [ 1971 0 R /XYZ 60.307257 637.020102 0 ] (Code/Settings/:__span-0-389) [ 1971 0 R /XYZ 60.307257 623.619750 0 ] (Code/Settings/:__span-0-39) [ 1955 0 R /XYZ 60.307257 158.220990 0 ] (Code/Settings/:__span-0-390) [ 1971 0 R /XYZ 60.307257 610.219398 0 ] (Code/Settings/:__span-0-391) [ 1971 0 R /XYZ 60.307257 596.819046 0 ] (Code/Settings/:__span-0-392) [ 1971 0 R /XYZ 60.307257 583.418694 0 ] (Code/Settings/:__span-0-393) [ 1971 0 R /XYZ 60.307257 570.018342 0 ] (Code/Settings/:__span-0-394) [ 1971 0 R /XYZ 60.307257 556.617990 0 ] (Code/Settings/:__span-0-395) [ 1971 0 R /XYZ 60.307257 543.217638 0 ] (Code/Settings/:__span-0-396) [ 1971 0 R /XYZ 60.307257 529.817286 0 ] (Code/Settings/:__span-0-397) [ 1971 0 R /XYZ 60.307257 516.416934 0 ] (Code/Settings/:__span-0-398) [ 1971 0 R /XYZ 60.307257 503.016582 0 ] (Code/Settings/:__span-0-399) [ 1971 0 R /XYZ 60.307257 489.616230 0 ] (Code/Settings/:__span-0-4) [ 1955 0 R /XYZ 60.307257 667.434366 0 ] (Code/Settings/:__span-0-40) [ 1955 0 R /XYZ 60.307257 144.820638 0 ] (Code/Settings/:__span-0-400) [ 1971 0 R /XYZ 60.307257 476.215878 0 ] (Code/Settings/:__span-0-401) [ 1971 0 R /XYZ 60.307257 462.815526 0 ] (Code/Settings/:__span-0-402) [ 1971 0 R /XYZ 60.307257 449.415174 0 ] (Code/Settings/:__span-0-403) [ 1971 0 R /XYZ 60.307257 436.014822 0 ] (Code/Settings/:__span-0-404) [ 1971 0 R /XYZ 60.307257 422.614470 0 ] (Code/Settings/:__span-0-405) [ 1971 0 R /XYZ 60.307257 409.214118 0 ] (Code/Settings/:__span-0-406) [ 1971 0 R /XYZ 60.307257 395.813766 0 ] (Code/Settings/:__span-0-407) [ 1971 0 R /XYZ 60.307257 382.413414 0 ] (Code/Settings/:__span-0-408) [ 1971 0 R /XYZ 60.307257 369.013062 0 ] (Code/Settings/:__span-0-409) [ 1971 0 R /XYZ 60.307257 355.612710 0 ] (Code/Settings/:__span-0-41) [ 1955 0 R /XYZ 60.307257 131.420286 0 ] (Code/Settings/:__span-0-410) [ 1971 0 R /XYZ 60.307257 342.212358 0 ] (Code/Settings/:__span-0-411) [ 1971 0 R /XYZ 60.307257 328.812006 0 ] (Code/Settings/:__span-0-412) [ 1971 0 R /XYZ 60.307257 315.411654 0 ] (Code/Settings/:__span-0-413) [ 1971 0 R /XYZ 60.307257 302.011302 0 ] (Code/Settings/:__span-0-414) [ 1971 0 R /XYZ 60.307257 288.610950 0 ] (Code/Settings/:__span-0-415) [ 1971 0 R /XYZ 60.307257 275.210598 0 ] (Code/Settings/:__span-0-416) [ 1971 0 R /XYZ 60.307257 248.409894 0 ] (Code/Settings/:__span-0-417) [ 1971 0 R /XYZ 60.307257 221.609190 0 ] (Code/Settings/:__span-0-418) [ 1971 0 R /XYZ 60.307257 208.208838 0 ] (Code/Settings/:__span-0-419) [ 1971 0 R /XYZ 60.307257 181.408134 0 ] (Code/Settings/:__span-0-42) [ 1955 0 R /XYZ 60.307257 118.019934 0 ] (Code/Settings/:__span-0-420) [ 1971 0 R /XYZ 60.307257 168.007782 0 ] (Code/Settings/:__span-0-421) [ 1971 0 R /XYZ 60.307257 154.607430 0 ] (Code/Settings/:__span-0-422) [ 1971 0 R /XYZ 60.307257 141.207078 0 ] (Code/Settings/:__span-0-423) [ 1971 0 R /XYZ 60.307257 127.806726 0 ] (Code/Settings/:__span-0-424) [ 1971 0 R /XYZ 60.307257 114.406374 0 ] (Code/Settings/:__span-0-425) [ 1971 0 R /XYZ 60.307257 101.006022 0 ] (Code/Settings/:__span-0-426) [ 1971 0 R /XYZ 60.307257 87.605670 0 ] (Code/Settings/:__span-0-427) [ 1973 0 R /XYZ 60.307257 771.023622 0 ] (Code/Settings/:__span-0-428) [ 1973 0 R /XYZ 60.307257 757.623270 0 ] (Code/Settings/:__span-0-429) [ 1973 0 R /XYZ 60.307257 744.222918 0 ] (Code/Settings/:__span-0-43) [ 1955 0 R /XYZ 60.307257 104.619582 0 ] (Code/Settings/:__span-0-430) [ 1973 0 R /XYZ 60.307257 730.822566 0 ] (Code/Settings/:__span-0-431) [ 1973 0 R /XYZ 60.307257 717.422214 0 ] (Code/Settings/:__span-0-432) [ 1973 0 R /XYZ 60.307257 704.021862 0 ] (Code/Settings/:__span-0-433) [ 1973 0 R /XYZ 60.307257 690.621510 0 ] (Code/Settings/:__span-0-434) [ 1973 0 R /XYZ 60.307257 677.221158 0 ] (Code/Settings/:__span-0-435) [ 1973 0 R /XYZ 60.307257 663.820806 0 ] (Code/Settings/:__span-0-436) [ 1973 0 R /XYZ 60.307257 650.420454 0 ] (Code/Settings/:__span-0-437) [ 1973 0 R /XYZ 60.307257 623.619750 0 ] (Code/Settings/:__span-0-438) [ 1973 0 R /XYZ 60.307257 596.819046 0 ] (Code/Settings/:__span-0-439) [ 1973 0 R /XYZ 60.307257 570.018342 0 ] (Code/Settings/:__span-0-44) [ 1955 0 R /XYZ 60.307257 91.219230 0 ] (Code/Settings/:__span-0-440) [ 1973 0 R /XYZ 60.307257 543.217638 0 ] (Code/Settings/:__span-0-441) [ 1973 0 R /XYZ 60.307257 529.817286 0 ] (Code/Settings/:__span-0-442) [ 1973 0 R /XYZ 60.307257 516.416934 0 ] (Code/Settings/:__span-0-443) [ 1973 0 R /XYZ 60.307257 503.016582 0 ] (Code/Settings/:__span-0-444) [ 1973 0 R /XYZ 60.307257 489.616230 0 ] (Code/Settings/:__span-0-445) [ 1973 0 R /XYZ 60.307257 476.215878 0 ] (Code/Settings/:__span-0-446) [ 1973 0 R /XYZ 60.307257 462.815526 0 ] (Code/Settings/:__span-0-447) [ 1973 0 R /XYZ 60.307257 449.415174 0 ] (Code/Settings/:__span-0-448) [ 1973 0 R /XYZ 60.307257 436.014822 0 ] (Code/Settings/:__span-0-449) [ 1973 0 R /XYZ 60.307257 422.614470 0 ] (Code/Settings/:__span-0-45) [ 1957 0 R /XYZ 60.307257 771.023622 0 ] (Code/Settings/:__span-0-450) [ 1973 0 R /XYZ 60.307257 409.214118 0 ] (Code/Settings/:__span-0-451) [ 1973 0 R /XYZ 60.307257 395.813766 0 ] (Code/Settings/:__span-0-452) [ 1973 0 R /XYZ 60.307257 382.413414 0 ] (Code/Settings/:__span-0-453) [ 1973 0 R /XYZ 60.307257 369.013062 0 ] (Code/Settings/:__span-0-454) [ 1973 0 R /XYZ 60.307257 355.612710 0 ] (Code/Settings/:__span-0-455) [ 1973 0 R /XYZ 60.307257 342.212358 0 ] (Code/Settings/:__span-0-456) [ 1973 0 R /XYZ 60.307257 315.411654 0 ] (Code/Settings/:__span-0-457) [ 1973 0 R /XYZ 60.307257 302.011302 0 ] (Code/Settings/:__span-0-458) [ 1973 0 R /XYZ 60.307257 288.610950 0 ] (Code/Settings/:__span-0-459) [ 1973 0 R /XYZ 60.307257 275.210598 0 ] (Code/Settings/:__span-0-46) [ 1957 0 R /XYZ 60.307257 757.623270 0 ] (Code/Settings/:__span-0-460) [ 1973 0 R /XYZ 60.307257 261.810246 0 ] (Code/Settings/:__span-0-461) [ 1973 0 R /XYZ 60.307257 248.409894 0 ] (Code/Settings/:__span-0-462) [ 1973 0 R /XYZ 60.307257 235.009542 0 ] (Code/Settings/:__span-0-463) [ 1973 0 R /XYZ 60.307257 221.609190 0 ] (Code/Settings/:__span-0-464) [ 1973 0 R /XYZ 60.307257 208.208838 0 ] (Code/Settings/:__span-0-465) [ 1973 0 R /XYZ 60.307257 194.808486 0 ] (Code/Settings/:__span-0-466) [ 1973 0 R /XYZ 60.307257 181.408134 0 ] (Code/Settings/:__span-0-467) [ 1973 0 R /XYZ 60.307257 154.607430 0 ] (Code/Settings/:__span-0-468) [ 1973 0 R /XYZ 60.307257 127.806726 0 ] (Code/Settings/:__span-0-469) [ 1973 0 R /XYZ 60.307257 114.406374 0 ] (Code/Settings/:__span-0-47) [ 1957 0 R /XYZ 60.307257 744.222918 0 ] (Code/Settings/:__span-0-470) [ 1973 0 R /XYZ 60.307257 101.006022 0 ] (Code/Settings/:__span-0-471) [ 1973 0 R /XYZ 60.307257 87.605670 0 ] (Code/Settings/:__span-0-472) [ 1975 0 R /XYZ 60.307257 771.023622 0 ] (Code/Settings/:__span-0-473) [ 1975 0 R /XYZ 60.307257 744.222918 0 ] (Code/Settings/:__span-0-474) [ 1975 0 R /XYZ 60.307257 730.822566 0 ] (Code/Settings/:__span-0-475) [ 1975 0 R /XYZ 60.307257 717.422214 0 ] (Code/Settings/:__span-0-476) [ 1975 0 R /XYZ 60.307257 704.021862 0 ] (Code/Settings/:__span-0-477) [ 1975 0 R /XYZ 60.307257 690.621510 0 ] (Code/Settings/:__span-0-48) [ 1957 0 R /XYZ 60.307257 730.822566 0 ] (Code/Settings/:__span-0-49) [ 1957 0 R /XYZ 60.307257 717.422214 0 ] (Code/Settings/:__span-0-5) [ 1955 0 R /XYZ 60.307257 654.034014 0 ] (Code/Settings/:__span-0-50) [ 1957 0 R /XYZ 60.307257 704.021862 0 ] (Code/Settings/:__span-0-51) [ 1957 0 R /XYZ 60.307257 690.621510 0 ] (Code/Settings/:__span-0-52) [ 1957 0 R /XYZ 60.307257 677.221158 0 ] (Code/Settings/:__span-0-53) [ 1957 0 R /XYZ 60.307257 663.820806 0 ] (Code/Settings/:__span-0-54) [ 1957 0 R /XYZ 60.307257 650.420454 0 ] (Code/Settings/:__span-0-55) [ 1957 0 R /XYZ 60.307257 637.020102 0 ] (Code/Settings/:__span-0-56) [ 1957 0 R /XYZ 60.307257 623.619750 0 ] (Code/Settings/:__span-0-57) [ 1957 0 R /XYZ 60.307257 610.219398 0 ] (Code/Settings/:__span-0-58) [ 1957 0 R /XYZ 60.307257 596.819046 0 ] (Code/Settings/:__span-0-59) [ 1957 0 R /XYZ 60.307257 583.418694 0 ] (Code/Settings/:__span-0-6) [ 1955 0 R /XYZ 60.307257 640.633662 0 ] (Code/Settings/:__span-0-60) [ 1957 0 R /XYZ 60.307257 570.018342 0 ] (Code/Settings/:__span-0-61) [ 1957 0 R /XYZ 60.307257 543.217638 0 ] (Code/Settings/:__span-0-62) [ 1957 0 R /XYZ 60.307257 503.016582 0 ] (Code/Settings/:__span-0-63) [ 1957 0 R /XYZ 60.307257 476.215878 0 ] (Code/Settings/:__span-0-64) [ 1957 0 R /XYZ 60.307257 449.415174 0 ] (Code/Settings/:__span-0-65) [ 1957 0 R /XYZ 60.307257 422.614470 0 ] (Code/Settings/:__span-0-66) [ 1957 0 R /XYZ 60.307257 395.813766 0 ] (Code/Settings/:__span-0-67) [ 1957 0 R /XYZ 60.307257 382.413414 0 ] (Code/Settings/:__span-0-68) [ 1957 0 R /XYZ 60.307257 355.612710 0 ] (Code/Settings/:__span-0-69) [ 1957 0 R /XYZ 60.307257 342.212358 0 ] (Code/Settings/:__span-0-7) [ 1955 0 R /XYZ 60.307257 627.233310 0 ] (Code/Settings/:__span-0-70) [ 1957 0 R /XYZ 60.307257 328.812006 0 ] (Code/Settings/:__span-0-71) [ 1957 0 R /XYZ 60.307257 315.411654 0 ] (Code/Settings/:__span-0-72) [ 1957 0 R /XYZ 60.307257 302.011302 0 ] (Code/Settings/:__span-0-73) [ 1957 0 R /XYZ 60.307257 288.610950 0 ] (Code/Settings/:__span-0-74) [ 1957 0 R /XYZ 60.307257 275.210598 0 ] (Code/Settings/:__span-0-75) [ 1957 0 R /XYZ 60.307257 261.810246 0 ] (Code/Settings/:__span-0-76) [ 1957 0 R /XYZ 60.307257 248.409894 0 ] (Code/Settings/:__span-0-77) [ 1957 0 R /XYZ 60.307257 235.009542 0 ] (Code/Settings/:__span-0-78) [ 1957 0 R /XYZ 60.307257 208.208838 0 ] (Code/Settings/:__span-0-79) [ 1957 0 R /XYZ 60.307257 194.808486 0 ] (Code/Settings/:__span-0-8) [ 1955 0 R /XYZ 60.307257 613.832958 0 ] (Code/Settings/:__span-0-80) [ 1957 0 R /XYZ 60.307257 181.408134 0 ] (Code/Settings/:__span-0-81) [ 1957 0 R /XYZ 60.307257 168.007782 0 ] (Code/Settings/:__span-0-82) [ 1957 0 R /XYZ 60.307257 154.607430 0 ] (Code/Settings/:__span-0-83) [ 1957 0 R /XYZ 60.307257 141.207078 0 ] (Code/Settings/:__span-0-84) [ 1957 0 R /XYZ 60.307257 127.806726 0 ] (Code/Settings/:__span-0-85) [ 1957 0 R /XYZ 60.307257 114.406374 0 ] (Code/Settings/:__span-0-86) [ 1957 0 R /XYZ 60.307257 101.006022 0 ] (Code/Settings/:__span-0-87) [ 1957 0 R /XYZ 60.307257 87.605670 0 ] (Code/Settings/:__span-0-88) [ 1959 0 R /XYZ 60.307257 771.023622 0 ] (Code/Settings/:__span-0-89) [ 1959 0 R /XYZ 60.307257 757.623270 0 ] (Code/Settings/:__span-0-9) [ 1955 0 R /XYZ 60.307257 600.432606 0 ] (Code/Settings/:__span-0-90) [ 1959 0 R /XYZ 60.307257 744.222918 0 ] (Code/Settings/:__span-0-91) [ 1959 0 R /XYZ 60.307257 730.822566 0 ] (Code/Settings/:__span-0-92) [ 1959 0 R /XYZ 60.307257 717.422214 0 ] (Code/Settings/:__span-0-93) [ 1959 0 R /XYZ 60.307257 704.021862 0 ] (Code/Settings/:__span-0-94) [ 1959 0 R /XYZ 60.307257 690.621510 0 ] (Code/Settings/:__span-0-95) [ 1959 0 R /XYZ 60.307257 677.221158 0 ] (Code/Settings/:__span-0-96) [ 1959 0 R /XYZ 60.307257 663.820806 0 ] (Code/Settings/:__span-0-97) [ 1959 0 R /XYZ 60.307257 650.420454 0 ] (Code/Settings/:__span-0-98) [ 1959 0 R /XYZ 60.307257 637.020102 0 ] (Code/Settings/:__span-0-99) [ 1959 0 R /XYZ 60.307257 623.619750 0 ] (Code/Settings/:settingscs) [ 1955 0 R /XYZ 39.386457 747.563622 0 ] (Code/SqliteStorage/:) [ 1851 0 R /XYZ 39.386457 747.563622 0 ] (Code/SqliteStorage/:__span-0-1) [ 1851 0 R /XYZ 60.307257 707.635422 0 ] (Code/SqliteStorage/:__span-0-10) [ 1851 0 R /XYZ 60.307257 587.032254 0 ] (Code/SqliteStorage/:__span-0-100) [ 1855 0 R /XYZ 60.307257 704.021862 0 ] (Code/SqliteStorage/:__span-0-101) [ 1855 0 R /XYZ 60.307257 690.621510 0 ] (Code/SqliteStorage/:__span-0-102) [ 1855 0 R /XYZ 60.307257 677.221158 0 ] (Code/SqliteStorage/:__span-0-103) [ 1855 0 R /XYZ 60.307257 663.820806 0 ] (Code/SqliteStorage/:__span-0-104) [ 1855 0 R /XYZ 60.307257 650.420454 0 ] (Code/SqliteStorage/:__span-0-105) [ 1855 0 R /XYZ 60.307257 637.020102 0 ] (Code/SqliteStorage/:__span-0-106) [ 1855 0 R /XYZ 60.307257 623.619750 0 ] (Code/SqliteStorage/:__span-0-107) [ 1855 0 R /XYZ 60.307257 610.219398 0 ] (Code/SqliteStorage/:__span-0-108) [ 1855 0 R /XYZ 60.307257 596.819046 0 ] (Code/SqliteStorage/:__span-0-109) [ 1855 0 R /XYZ 60.307257 570.018342 0 ] (Code/SqliteStorage/:__span-0-11) [ 1851 0 R /XYZ 60.307257 573.631902 0 ] (Code/SqliteStorage/:__span-0-110) [ 1855 0 R /XYZ 60.307257 556.617990 0 ] (Code/SqliteStorage/:__span-0-111) [ 1855 0 R /XYZ 60.307257 543.217638 0 ] (Code/SqliteStorage/:__span-0-112) [ 1855 0 R /XYZ 60.307257 529.817286 0 ] (Code/SqliteStorage/:__span-0-113) [ 1855 0 R /XYZ 60.307257 516.416934 0 ] (Code/SqliteStorage/:__span-0-114) [ 1855 0 R /XYZ 60.307257 503.016582 0 ] (Code/SqliteStorage/:__span-0-115) [ 1855 0 R /XYZ 60.307257 489.616230 0 ] (Code/SqliteStorage/:__span-0-116) [ 1855 0 R /XYZ 60.307257 476.215878 0 ] (Code/SqliteStorage/:__span-0-117) [ 1855 0 R /XYZ 60.307257 462.815526 0 ] (Code/SqliteStorage/:__span-0-118) [ 1855 0 R /XYZ 60.307257 449.415174 0 ] (Code/SqliteStorage/:__span-0-119) [ 1855 0 R /XYZ 60.307257 436.014822 0 ] (Code/SqliteStorage/:__span-0-12) [ 1851 0 R /XYZ 60.307257 560.231550 0 ] (Code/SqliteStorage/:__span-0-120) [ 1855 0 R /XYZ 60.307257 409.214118 0 ] (Code/SqliteStorage/:__span-0-121) [ 1855 0 R /XYZ 60.307257 395.813766 0 ] (Code/SqliteStorage/:__span-0-122) [ 1855 0 R /XYZ 60.307257 382.413414 0 ] (Code/SqliteStorage/:__span-0-123) [ 1855 0 R /XYZ 60.307257 369.013062 0 ] (Code/SqliteStorage/:__span-0-124) [ 1855 0 R /XYZ 60.307257 355.612710 0 ] (Code/SqliteStorage/:__span-0-125) [ 1855 0 R /XYZ 60.307257 342.212358 0 ] (Code/SqliteStorage/:__span-0-126) [ 1855 0 R /XYZ 60.307257 328.812006 0 ] (Code/SqliteStorage/:__span-0-127) [ 1855 0 R /XYZ 60.307257 315.411654 0 ] (Code/SqliteStorage/:__span-0-128) [ 1855 0 R /XYZ 60.307257 302.011302 0 ] (Code/SqliteStorage/:__span-0-129) [ 1855 0 R /XYZ 60.307257 288.610950 0 ] (Code/SqliteStorage/:__span-0-13) [ 1851 0 R /XYZ 60.307257 546.831198 0 ] (Code/SqliteStorage/:__span-0-130) [ 1855 0 R /XYZ 60.307257 275.210598 0 ] (Code/SqliteStorage/:__span-0-131) [ 1855 0 R /XYZ 60.307257 261.810246 0 ] (Code/SqliteStorage/:__span-0-132) [ 1855 0 R /XYZ 60.307257 248.409894 0 ] (Code/SqliteStorage/:__span-0-133) [ 1855 0 R /XYZ 60.307257 235.009542 0 ] (Code/SqliteStorage/:__span-0-134) [ 1855 0 R /XYZ 60.307257 221.609190 0 ] (Code/SqliteStorage/:__span-0-135) [ 1855 0 R /XYZ 60.307257 208.208838 0 ] (Code/SqliteStorage/:__span-0-136) [ 1855 0 R /XYZ 60.307257 194.808486 0 ] (Code/SqliteStorage/:__span-0-137) [ 1855 0 R /XYZ 60.307257 168.007782 0 ] (Code/SqliteStorage/:__span-0-138) [ 1855 0 R /XYZ 60.307257 154.607430 0 ] (Code/SqliteStorage/:__span-0-139) [ 1855 0 R /XYZ 60.307257 141.207078 0 ] (Code/SqliteStorage/:__span-0-14) [ 1851 0 R /XYZ 60.307257 533.430846 0 ] (Code/SqliteStorage/:__span-0-140) [ 1855 0 R /XYZ 60.307257 127.806726 0 ] (Code/SqliteStorage/:__span-0-141) [ 1855 0 R /XYZ 60.307257 114.406374 0 ] (Code/SqliteStorage/:__span-0-142) [ 1855 0 R /XYZ 60.307257 101.006022 0 ] (Code/SqliteStorage/:__span-0-143) [ 1857 0 R /XYZ 60.307257 771.023622 0 ] (Code/SqliteStorage/:__span-0-144) [ 1857 0 R /XYZ 60.307257 757.623270 0 ] (Code/SqliteStorage/:__span-0-145) [ 1857 0 R /XYZ 60.307257 730.822566 0 ] (Code/SqliteStorage/:__span-0-146) [ 1857 0 R /XYZ 60.307257 717.422214 0 ] (Code/SqliteStorage/:__span-0-147) [ 1857 0 R /XYZ 60.307257 704.021862 0 ] (Code/SqliteStorage/:__span-0-148) [ 1857 0 R /XYZ 60.307257 690.621510 0 ] (Code/SqliteStorage/:__span-0-149) [ 1857 0 R /XYZ 60.307257 677.221158 0 ] (Code/SqliteStorage/:__span-0-15) [ 1851 0 R /XYZ 60.307257 520.030494 0 ] (Code/SqliteStorage/:__span-0-150) [ 1857 0 R /XYZ 60.307257 663.820806 0 ] (Code/SqliteStorage/:__span-0-151) [ 1857 0 R /XYZ 60.307257 637.020102 0 ] (Code/SqliteStorage/:__span-0-152) [ 1857 0 R /XYZ 60.307257 623.619750 0 ] (Code/SqliteStorage/:__span-0-153) [ 1857 0 R /XYZ 60.307257 610.219398 0 ] (Code/SqliteStorage/:__span-0-154) [ 1857 0 R /XYZ 60.307257 596.819046 0 ] (Code/SqliteStorage/:__span-0-155) [ 1857 0 R /XYZ 60.307257 583.418694 0 ] (Code/SqliteStorage/:__span-0-156) [ 1857 0 R /XYZ 60.307257 570.018342 0 ] (Code/SqliteStorage/:__span-0-157) [ 1857 0 R /XYZ 60.307257 556.617990 0 ] (Code/SqliteStorage/:__span-0-158) [ 1857 0 R /XYZ 60.307257 543.217638 0 ] (Code/SqliteStorage/:__span-0-159) [ 1857 0 R /XYZ 60.307257 529.817286 0 ] (Code/SqliteStorage/:__span-0-16) [ 1851 0 R /XYZ 60.307257 506.630142 0 ] (Code/SqliteStorage/:__span-0-160) [ 1857 0 R /XYZ 60.307257 516.416934 0 ] (Code/SqliteStorage/:__span-0-161) [ 1857 0 R /XYZ 60.307257 503.016582 0 ] (Code/SqliteStorage/:__span-0-162) [ 1857 0 R /XYZ 60.307257 489.616230 0 ] (Code/SqliteStorage/:__span-0-163) [ 1857 0 R /XYZ 60.307257 476.215878 0 ] (Code/SqliteStorage/:__span-0-164) [ 1857 0 R /XYZ 60.307257 462.815526 0 ] (Code/SqliteStorage/:__span-0-165) [ 1857 0 R /XYZ 60.307257 449.415174 0 ] (Code/SqliteStorage/:__span-0-166) [ 1857 0 R /XYZ 60.307257 436.014822 0 ] (Code/SqliteStorage/:__span-0-167) [ 1857 0 R /XYZ 60.307257 422.614470 0 ] (Code/SqliteStorage/:__span-0-168) [ 1857 0 R /XYZ 60.307257 409.214118 0 ] (Code/SqliteStorage/:__span-0-169) [ 1857 0 R /XYZ 60.307257 382.413414 0 ] (Code/SqliteStorage/:__span-0-17) [ 1851 0 R /XYZ 60.307257 493.229790 0 ] (Code/SqliteStorage/:__span-0-170) [ 1857 0 R /XYZ 60.307257 369.013062 0 ] (Code/SqliteStorage/:__span-0-171) [ 1857 0 R /XYZ 60.307257 355.612710 0 ] (Code/SqliteStorage/:__span-0-172) [ 1857 0 R /XYZ 60.307257 342.212358 0 ] (Code/SqliteStorage/:__span-0-173) [ 1857 0 R /XYZ 60.307257 328.812006 0 ] (Code/SqliteStorage/:__span-0-174) [ 1857 0 R /XYZ 60.307257 315.411654 0 ] (Code/SqliteStorage/:__span-0-175) [ 1857 0 R /XYZ 60.307257 302.011302 0 ] (Code/SqliteStorage/:__span-0-176) [ 1857 0 R /XYZ 60.307257 288.610950 0 ] (Code/SqliteStorage/:__span-0-177) [ 1857 0 R /XYZ 60.307257 275.210598 0 ] (Code/SqliteStorage/:__span-0-178) [ 1857 0 R /XYZ 60.307257 261.810246 0 ] (Code/SqliteStorage/:__span-0-179) [ 1857 0 R /XYZ 60.307257 221.609190 0 ] (Code/SqliteStorage/:__span-0-18) [ 1851 0 R /XYZ 60.307257 479.829438 0 ] (Code/SqliteStorage/:__span-0-180) [ 1857 0 R /XYZ 60.307257 194.808486 0 ] (Code/SqliteStorage/:__span-0-181) [ 1857 0 R /XYZ 60.307257 181.408134 0 ] (Code/SqliteStorage/:__span-0-182) [ 1857 0 R /XYZ 60.307257 168.007782 0 ] (Code/SqliteStorage/:__span-0-183) [ 1857 0 R /XYZ 60.307257 141.207078 0 ] (Code/SqliteStorage/:__span-0-184) [ 1857 0 R /XYZ 60.307257 114.406374 0 ] (Code/SqliteStorage/:__span-0-185) [ 1857 0 R /XYZ 60.307257 101.006022 0 ] (Code/SqliteStorage/:__span-0-186) [ 1857 0 R /XYZ 60.307257 87.605670 0 ] (Code/SqliteStorage/:__span-0-187) [ 1859 0 R /XYZ 60.307257 771.023622 0 ] (Code/SqliteStorage/:__span-0-188) [ 1859 0 R /XYZ 60.307257 757.623270 0 ] (Code/SqliteStorage/:__span-0-189) [ 1859 0 R /XYZ 60.307257 744.222918 0 ] (Code/SqliteStorage/:__span-0-19) [ 1851 0 R /XYZ 60.307257 466.429086 0 ] (Code/SqliteStorage/:__span-0-190) [ 1859 0 R /XYZ 60.307257 730.822566 0 ] (Code/SqliteStorage/:__span-0-191) [ 1859 0 R /XYZ 60.307257 717.422214 0 ] (Code/SqliteStorage/:__span-0-192) [ 1859 0 R /XYZ 60.307257 704.021862 0 ] (Code/SqliteStorage/:__span-0-193) [ 1859 0 R /XYZ 60.307257 690.621510 0 ] (Code/SqliteStorage/:__span-0-194) [ 1859 0 R /XYZ 60.307257 677.221158 0 ] (Code/SqliteStorage/:__span-0-195) [ 1859 0 R /XYZ 60.307257 663.820806 0 ] (Code/SqliteStorage/:__span-0-196) [ 1859 0 R /XYZ 60.307257 650.420454 0 ] (Code/SqliteStorage/:__span-0-197) [ 1859 0 R /XYZ 60.307257 637.020102 0 ] (Code/SqliteStorage/:__span-0-198) [ 1859 0 R /XYZ 60.307257 623.619750 0 ] (Code/SqliteStorage/:__span-0-199) [ 1859 0 R /XYZ 60.307257 610.219398 0 ] (Code/SqliteStorage/:__span-0-2) [ 1851 0 R /XYZ 60.307257 694.235070 0 ] (Code/SqliteStorage/:__span-0-20) [ 1851 0 R /XYZ 60.307257 453.028734 0 ] (Code/SqliteStorage/:__span-0-200) [ 1859 0 R /XYZ 60.307257 596.819046 0 ] (Code/SqliteStorage/:__span-0-201) [ 1859 0 R /XYZ 60.307257 570.018342 0 ] (Code/SqliteStorage/:__span-0-202) [ 1859 0 R /XYZ 60.307257 556.617990 0 ] (Code/SqliteStorage/:__span-0-203) [ 1859 0 R /XYZ 60.307257 543.217638 0 ] (Code/SqliteStorage/:__span-0-204) [ 1859 0 R /XYZ 60.307257 529.817286 0 ] (Code/SqliteStorage/:__span-0-205) [ 1859 0 R /XYZ 60.307257 516.416934 0 ] (Code/SqliteStorage/:__span-0-206) [ 1859 0 R /XYZ 60.307257 503.016582 0 ] (Code/SqliteStorage/:__span-0-207) [ 1859 0 R /XYZ 60.307257 489.616230 0 ] (Code/SqliteStorage/:__span-0-208) [ 1859 0 R /XYZ 60.307257 476.215878 0 ] (Code/SqliteStorage/:__span-0-209) [ 1859 0 R /XYZ 60.307257 449.415174 0 ] (Code/SqliteStorage/:__span-0-21) [ 1851 0 R /XYZ 60.307257 439.628382 0 ] (Code/SqliteStorage/:__span-0-210) [ 1859 0 R /XYZ 60.307257 436.014822 0 ] (Code/SqliteStorage/:__span-0-211) [ 1859 0 R /XYZ 60.307257 422.614470 0 ] (Code/SqliteStorage/:__span-0-212) [ 1859 0 R /XYZ 60.307257 409.214118 0 ] (Code/SqliteStorage/:__span-0-213) [ 1859 0 R /XYZ 60.307257 395.813766 0 ] (Code/SqliteStorage/:__span-0-214) [ 1859 0 R /XYZ 60.307257 369.013062 0 ] (Code/SqliteStorage/:__span-0-215) [ 1859 0 R /XYZ 60.307257 355.612710 0 ] (Code/SqliteStorage/:__span-0-216) [ 1859 0 R /XYZ 60.307257 342.212358 0 ] (Code/SqliteStorage/:__span-0-217) [ 1859 0 R /XYZ 60.307257 328.812006 0 ] (Code/SqliteStorage/:__span-0-218) [ 1859 0 R /XYZ 60.307257 315.411654 0 ] (Code/SqliteStorage/:__span-0-219) [ 1859 0 R /XYZ 60.307257 288.610950 0 ] (Code/SqliteStorage/:__span-0-22) [ 1851 0 R /XYZ 60.307257 426.228030 0 ] (Code/SqliteStorage/:__span-0-220) [ 1859 0 R /XYZ 60.307257 275.210598 0 ] (Code/SqliteStorage/:__span-0-221) [ 1859 0 R /XYZ 60.307257 261.810246 0 ] (Code/SqliteStorage/:__span-0-222) [ 1859 0 R /XYZ 60.307257 248.409894 0 ] (Code/SqliteStorage/:__span-0-223) [ 1859 0 R /XYZ 60.307257 235.009542 0 ] (Code/SqliteStorage/:__span-0-224) [ 1859 0 R /XYZ 60.307257 221.609190 0 ] (Code/SqliteStorage/:__span-0-225) [ 1859 0 R /XYZ 60.307257 208.208838 0 ] (Code/SqliteStorage/:__span-0-226) [ 1859 0 R /XYZ 60.307257 194.808486 0 ] (Code/SqliteStorage/:__span-0-227) [ 1859 0 R /XYZ 60.307257 168.007782 0 ] (Code/SqliteStorage/:__span-0-228) [ 1859 0 R /XYZ 60.307257 154.607430 0 ] (Code/SqliteStorage/:__span-0-229) [ 1859 0 R /XYZ 60.307257 141.207078 0 ] (Code/SqliteStorage/:__span-0-23) [ 1851 0 R /XYZ 60.307257 399.427326 0 ] (Code/SqliteStorage/:__span-0-230) [ 1859 0 R /XYZ 60.307257 127.806726 0 ] (Code/SqliteStorage/:__span-0-231) [ 1859 0 R /XYZ 60.307257 114.406374 0 ] (Code/SqliteStorage/:__span-0-232) [ 1859 0 R /XYZ 60.307257 101.006022 0 ] (Code/SqliteStorage/:__span-0-233) [ 1859 0 R /XYZ 60.307257 87.605670 0 ] (Code/SqliteStorage/:__span-0-234) [ 1861 0 R /XYZ 60.307257 771.023622 0 ] (Code/SqliteStorage/:__span-0-235) [ 1861 0 R /XYZ 60.307257 757.623270 0 ] (Code/SqliteStorage/:__span-0-236) [ 1861 0 R /XYZ 60.307257 744.222918 0 ] (Code/SqliteStorage/:__span-0-237) [ 1861 0 R /XYZ 60.307257 730.822566 0 ] (Code/SqliteStorage/:__span-0-238) [ 1861 0 R /XYZ 60.307257 690.621510 0 ] (Code/SqliteStorage/:__span-0-239) [ 1861 0 R /XYZ 60.307257 677.221158 0 ] (Code/SqliteStorage/:__span-0-24) [ 1851 0 R /XYZ 60.307257 386.026974 0 ] (Code/SqliteStorage/:__span-0-240) [ 1861 0 R /XYZ 60.307257 663.820806 0 ] (Code/SqliteStorage/:__span-0-241) [ 1861 0 R /XYZ 60.307257 650.420454 0 ] (Code/SqliteStorage/:__span-0-242) [ 1861 0 R /XYZ 60.307257 637.020102 0 ] (Code/SqliteStorage/:__span-0-243) [ 1861 0 R /XYZ 60.307257 623.619750 0 ] (Code/SqliteStorage/:__span-0-244) [ 1861 0 R /XYZ 60.307257 596.819046 0 ] (Code/SqliteStorage/:__span-0-245) [ 1861 0 R /XYZ 60.307257 583.418694 0 ] (Code/SqliteStorage/:__span-0-246) [ 1861 0 R /XYZ 60.307257 570.018342 0 ] (Code/SqliteStorage/:__span-0-247) [ 1861 0 R /XYZ 60.307257 556.617990 0 ] (Code/SqliteStorage/:__span-0-248) [ 1861 0 R /XYZ 60.307257 543.217638 0 ] (Code/SqliteStorage/:__span-0-249) [ 1861 0 R /XYZ 60.307257 529.817286 0 ] (Code/SqliteStorage/:__span-0-25) [ 1851 0 R /XYZ 60.307257 372.626622 0 ] (Code/SqliteStorage/:__span-0-250) [ 1861 0 R /XYZ 60.307257 516.416934 0 ] (Code/SqliteStorage/:__span-0-251) [ 1861 0 R /XYZ 60.307257 503.016582 0 ] (Code/SqliteStorage/:__span-0-252) [ 1861 0 R /XYZ 60.307257 489.616230 0 ] (Code/SqliteStorage/:__span-0-253) [ 1861 0 R /XYZ 60.307257 476.215878 0 ] (Code/SqliteStorage/:__span-0-254) [ 1861 0 R /XYZ 60.307257 462.815526 0 ] (Code/SqliteStorage/:__span-0-255) [ 1861 0 R /XYZ 60.307257 449.415174 0 ] (Code/SqliteStorage/:__span-0-256) [ 1861 0 R /XYZ 60.307257 436.014822 0 ] (Code/SqliteStorage/:__span-0-257) [ 1861 0 R /XYZ 60.307257 422.614470 0 ] (Code/SqliteStorage/:__span-0-258) [ 1861 0 R /XYZ 60.307257 395.813766 0 ] (Code/SqliteStorage/:__span-0-259) [ 1861 0 R /XYZ 60.307257 382.413414 0 ] (Code/SqliteStorage/:__span-0-26) [ 1851 0 R /XYZ 60.307257 359.226270 0 ] (Code/SqliteStorage/:__span-0-260) [ 1861 0 R /XYZ 60.307257 369.013062 0 ] (Code/SqliteStorage/:__span-0-261) [ 1861 0 R /XYZ 60.307257 355.612710 0 ] (Code/SqliteStorage/:__span-0-262) [ 1861 0 R /XYZ 60.307257 342.212358 0 ] (Code/SqliteStorage/:__span-0-27) [ 1851 0 R /XYZ 60.307257 345.825918 0 ] (Code/SqliteStorage/:__span-0-28) [ 1851 0 R /XYZ 60.307257 332.425566 0 ] (Code/SqliteStorage/:__span-0-29) [ 1851 0 R /XYZ 60.307257 319.025214 0 ] (Code/SqliteStorage/:__span-0-3) [ 1851 0 R /XYZ 60.307257 680.834718 0 ] (Code/SqliteStorage/:__span-0-30) [ 1851 0 R /XYZ 60.307257 305.624862 0 ] (Code/SqliteStorage/:__span-0-31) [ 1851 0 R /XYZ 60.307257 292.224510 0 ] (Code/SqliteStorage/:__span-0-32) [ 1851 0 R /XYZ 60.307257 278.824158 0 ] (Code/SqliteStorage/:__span-0-33) [ 1851 0 R /XYZ 60.307257 265.423806 0 ] (Code/SqliteStorage/:__span-0-34) [ 1851 0 R /XYZ 60.307257 252.023454 0 ] (Code/SqliteStorage/:__span-0-35) [ 1851 0 R /XYZ 60.307257 238.623102 0 ] (Code/SqliteStorage/:__span-0-36) [ 1851 0 R /XYZ 60.307257 225.222750 0 ] (Code/SqliteStorage/:__span-0-37) [ 1851 0 R /XYZ 60.307257 211.822398 0 ] (Code/SqliteStorage/:__span-0-38) [ 1851 0 R /XYZ 60.307257 198.422046 0 ] (Code/SqliteStorage/:__span-0-39) [ 1851 0 R /XYZ 60.307257 185.021694 0 ] (Code/SqliteStorage/:__span-0-4) [ 1851 0 R /XYZ 60.307257 667.434366 0 ] (Code/SqliteStorage/:__span-0-40) [ 1851 0 R /XYZ 60.307257 171.621342 0 ] (Code/SqliteStorage/:__span-0-41) [ 1851 0 R /XYZ 60.307257 158.220990 0 ] (Code/SqliteStorage/:__span-0-42) [ 1851 0 R /XYZ 60.307257 144.820638 0 ] (Code/SqliteStorage/:__span-0-43) [ 1851 0 R /XYZ 60.307257 131.420286 0 ] (Code/SqliteStorage/:__span-0-44) [ 1851 0 R /XYZ 60.307257 118.019934 0 ] (Code/SqliteStorage/:__span-0-45) [ 1851 0 R /XYZ 60.307257 104.619582 0 ] (Code/SqliteStorage/:__span-0-46) [ 1851 0 R /XYZ 60.307257 91.219230 0 ] (Code/SqliteStorage/:__span-0-47) [ 1853 0 R /XYZ 60.307257 771.023622 0 ] (Code/SqliteStorage/:__span-0-48) [ 1853 0 R /XYZ 60.307257 757.623270 0 ] (Code/SqliteStorage/:__span-0-49) [ 1853 0 R /XYZ 60.307257 744.222918 0 ] (Code/SqliteStorage/:__span-0-5) [ 1851 0 R /XYZ 60.307257 654.034014 0 ] (Code/SqliteStorage/:__span-0-50) [ 1853 0 R /XYZ 60.307257 730.822566 0 ] (Code/SqliteStorage/:__span-0-51) [ 1853 0 R /XYZ 60.307257 717.422214 0 ] (Code/SqliteStorage/:__span-0-52) [ 1853 0 R /XYZ 60.307257 704.021862 0 ] (Code/SqliteStorage/:__span-0-53) [ 1853 0 R /XYZ 60.307257 690.621510 0 ] (Code/SqliteStorage/:__span-0-54) [ 1853 0 R /XYZ 60.307257 677.221158 0 ] (Code/SqliteStorage/:__span-0-55) [ 1853 0 R /XYZ 60.307257 663.820806 0 ] (Code/SqliteStorage/:__span-0-56) [ 1853 0 R /XYZ 60.307257 650.420454 0 ] (Code/SqliteStorage/:__span-0-57) [ 1853 0 R /XYZ 60.307257 637.020102 0 ] (Code/SqliteStorage/:__span-0-58) [ 1853 0 R /XYZ 60.307257 610.219398 0 ] (Code/SqliteStorage/:__span-0-59) [ 1853 0 R /XYZ 60.307257 596.819046 0 ] (Code/SqliteStorage/:__span-0-6) [ 1851 0 R /XYZ 60.307257 640.633662 0 ] (Code/SqliteStorage/:__span-0-60) [ 1853 0 R /XYZ 60.307257 583.418694 0 ] (Code/SqliteStorage/:__span-0-61) [ 1853 0 R /XYZ 60.307257 570.018342 0 ] (Code/SqliteStorage/:__span-0-62) [ 1853 0 R /XYZ 60.307257 556.617990 0 ] (Code/SqliteStorage/:__span-0-63) [ 1853 0 R /XYZ 60.307257 543.217638 0 ] (Code/SqliteStorage/:__span-0-64) [ 1853 0 R /XYZ 60.307257 529.817286 0 ] (Code/SqliteStorage/:__span-0-65) [ 1853 0 R /XYZ 60.307257 516.416934 0 ] (Code/SqliteStorage/:__span-0-66) [ 1853 0 R /XYZ 60.307257 503.016582 0 ] (Code/SqliteStorage/:__span-0-67) [ 1853 0 R /XYZ 60.307257 489.616230 0 ] (Code/SqliteStorage/:__span-0-68) [ 1853 0 R /XYZ 60.307257 476.215878 0 ] (Code/SqliteStorage/:__span-0-69) [ 1853 0 R /XYZ 60.307257 449.415174 0 ] (Code/SqliteStorage/:__span-0-7) [ 1851 0 R /XYZ 60.307257 627.233310 0 ] (Code/SqliteStorage/:__span-0-70) [ 1853 0 R /XYZ 60.307257 436.014822 0 ] (Code/SqliteStorage/:__span-0-71) [ 1853 0 R /XYZ 60.307257 422.614470 0 ] (Code/SqliteStorage/:__span-0-72) [ 1853 0 R /XYZ 60.307257 409.214118 0 ] (Code/SqliteStorage/:__span-0-73) [ 1853 0 R /XYZ 60.307257 395.813766 0 ] (Code/SqliteStorage/:__span-0-74) [ 1853 0 R /XYZ 60.307257 382.413414 0 ] (Code/SqliteStorage/:__span-0-75) [ 1853 0 R /XYZ 60.307257 369.013062 0 ] (Code/SqliteStorage/:__span-0-76) [ 1853 0 R /XYZ 60.307257 355.612710 0 ] (Code/SqliteStorage/:__span-0-77) [ 1853 0 R /XYZ 60.307257 342.212358 0 ] (Code/SqliteStorage/:__span-0-78) [ 1853 0 R /XYZ 60.307257 328.812006 0 ] (Code/SqliteStorage/:__span-0-79) [ 1853 0 R /XYZ 60.307257 315.411654 0 ] (Code/SqliteStorage/:__span-0-8) [ 1851 0 R /XYZ 60.307257 613.832958 0 ] (Code/SqliteStorage/:__span-0-80) [ 1853 0 R /XYZ 60.307257 302.011302 0 ] (Code/SqliteStorage/:__span-0-81) [ 1853 0 R /XYZ 60.307257 288.610950 0 ] (Code/SqliteStorage/:__span-0-82) [ 1853 0 R /XYZ 60.307257 275.210598 0 ] (Code/SqliteStorage/:__span-0-83) [ 1853 0 R /XYZ 60.307257 261.810246 0 ] (Code/SqliteStorage/:__span-0-84) [ 1853 0 R /XYZ 60.307257 248.409894 0 ] (Code/SqliteStorage/:__span-0-85) [ 1853 0 R /XYZ 60.307257 235.009542 0 ] (Code/SqliteStorage/:__span-0-86) [ 1853 0 R /XYZ 60.307257 208.208838 0 ] (Code/SqliteStorage/:__span-0-87) [ 1853 0 R /XYZ 60.307257 194.808486 0 ] (Code/SqliteStorage/:__span-0-88) [ 1853 0 R /XYZ 60.307257 181.408134 0 ] (Code/SqliteStorage/:__span-0-89) [ 1853 0 R /XYZ 60.307257 168.007782 0 ] (Code/SqliteStorage/:__span-0-9) [ 1851 0 R /XYZ 60.307257 600.432606 0 ] (Code/SqliteStorage/:__span-0-90) [ 1853 0 R /XYZ 60.307257 154.607430 0 ] (Code/SqliteStorage/:__span-0-91) [ 1853 0 R /XYZ 60.307257 141.207078 0 ] (Code/SqliteStorage/:__span-0-92) [ 1853 0 R /XYZ 60.307257 114.406374 0 ] (Code/SqliteStorage/:__span-0-93) [ 1853 0 R /XYZ 60.307257 101.006022 0 ] (Code/SqliteStorage/:__span-0-94) [ 1853 0 R /XYZ 60.307257 87.605670 0 ] (Code/SqliteStorage/:__span-0-95) [ 1855 0 R /XYZ 60.307257 771.023622 0 ] (Code/SqliteStorage/:__span-0-96) [ 1855 0 R /XYZ 60.307257 757.623270 0 ] (Code/SqliteStorage/:__span-0-97) [ 1855 0 R /XYZ 60.307257 744.222918 0 ] (Code/SqliteStorage/:__span-0-98) [ 1855 0 R /XYZ 60.307257 730.822566 0 ] (Code/SqliteStorage/:__span-0-99) [ 1855 0 R /XYZ 60.307257 717.422214 0 ] (Code/SqliteStorage/:sqlitestoragecs) [ 1851 0 R /XYZ 39.386457 747.563622 0 ] (Code/Window/:) [ 1977 0 R /XYZ 39.386457 747.563622 0 ] (Code/Window/:__span-0-1) [ 1977 0 R /XYZ 60.307257 707.635422 0 ] (Code/Window/:__span-0-10) [ 1977 0 R /XYZ 60.307257 587.032254 0 ] (Code/Window/:__span-0-100) [ 1981 0 R /XYZ 60.307257 677.221158 0 ] (Code/Window/:__span-0-101) [ 1981 0 R /XYZ 60.307257 663.820806 0 ] (Code/Window/:__span-0-102) [ 1981 0 R /XYZ 60.307257 637.020102 0 ] (Code/Window/:__span-0-103) [ 1981 0 R /XYZ 60.307257 610.219398 0 ] (Code/Window/:__span-0-104) [ 1981 0 R /XYZ 60.307257 596.819046 0 ] (Code/Window/:__span-0-105) [ 1981 0 R /XYZ 60.307257 583.418694 0 ] (Code/Window/:__span-0-106) [ 1981 0 R /XYZ 60.307257 570.018342 0 ] (Code/Window/:__span-0-107) [ 1981 0 R /XYZ 60.307257 556.617990 0 ] (Code/Window/:__span-0-108) [ 1981 0 R /XYZ 60.307257 543.217638 0 ] (Code/Window/:__span-0-109) [ 1981 0 R /XYZ 60.307257 516.416934 0 ] (Code/Window/:__span-0-11) [ 1977 0 R /XYZ 60.307257 573.631902 0 ] (Code/Window/:__span-0-110) [ 1981 0 R /XYZ 60.307257 503.016582 0 ] (Code/Window/:__span-0-111) [ 1981 0 R /XYZ 60.307257 489.616230 0 ] (Code/Window/:__span-0-112) [ 1981 0 R /XYZ 60.307257 476.215878 0 ] (Code/Window/:__span-0-113) [ 1981 0 R /XYZ 60.307257 462.815526 0 ] (Code/Window/:__span-0-114) [ 1981 0 R /XYZ 60.307257 449.415174 0 ] (Code/Window/:__span-0-115) [ 1981 0 R /XYZ 60.307257 436.014822 0 ] (Code/Window/:__span-0-116) [ 1981 0 R /XYZ 60.307257 422.614470 0 ] (Code/Window/:__span-0-117) [ 1981 0 R /XYZ 60.307257 409.214118 0 ] (Code/Window/:__span-0-118) [ 1981 0 R /XYZ 60.307257 395.813766 0 ] (Code/Window/:__span-0-119) [ 1981 0 R /XYZ 60.307257 382.413414 0 ] (Code/Window/:__span-0-12) [ 1977 0 R /XYZ 60.307257 560.231550 0 ] (Code/Window/:__span-0-120) [ 1981 0 R /XYZ 60.307257 369.013062 0 ] (Code/Window/:__span-0-121) [ 1981 0 R /XYZ 60.307257 355.612710 0 ] (Code/Window/:__span-0-122) [ 1981 0 R /XYZ 60.307257 342.212358 0 ] (Code/Window/:__span-0-123) [ 1981 0 R /XYZ 60.307257 328.812006 0 ] (Code/Window/:__span-0-124) [ 1981 0 R /XYZ 60.307257 315.411654 0 ] (Code/Window/:__span-0-125) [ 1981 0 R /XYZ 60.307257 302.011302 0 ] (Code/Window/:__span-0-126) [ 1981 0 R /XYZ 60.307257 288.610950 0 ] (Code/Window/:__span-0-127) [ 1981 0 R /XYZ 60.307257 275.210598 0 ] (Code/Window/:__span-0-128) [ 1981 0 R /XYZ 60.307257 248.409894 0 ] (Code/Window/:__span-0-129) [ 1981 0 R /XYZ 60.307257 235.009542 0 ] (Code/Window/:__span-0-13) [ 1977 0 R /XYZ 60.307257 546.831198 0 ] (Code/Window/:__span-0-130) [ 1981 0 R /XYZ 60.307257 208.208838 0 ] (Code/Window/:__span-0-131) [ 1981 0 R /XYZ 60.307257 194.808486 0 ] (Code/Window/:__span-0-132) [ 1981 0 R /XYZ 60.307257 181.408134 0 ] (Code/Window/:__span-0-133) [ 1981 0 R /XYZ 60.307257 168.007782 0 ] (Code/Window/:__span-0-134) [ 1981 0 R /XYZ 60.307257 154.607430 0 ] (Code/Window/:__span-0-135) [ 1981 0 R /XYZ 60.307257 141.207078 0 ] (Code/Window/:__span-0-136) [ 1981 0 R /XYZ 60.307257 127.806726 0 ] (Code/Window/:__span-0-137) [ 1981 0 R /XYZ 60.307257 114.406374 0 ] (Code/Window/:__span-0-138) [ 1981 0 R /XYZ 60.307257 101.006022 0 ] (Code/Window/:__span-0-139) [ 1981 0 R /XYZ 60.307257 87.605670 0 ] (Code/Window/:__span-0-14) [ 1977 0 R /XYZ 60.307257 533.430846 0 ] (Code/Window/:__span-0-140) [ 1983 0 R /XYZ 60.307257 771.023622 0 ] (Code/Window/:__span-0-141) [ 1983 0 R /XYZ 60.307257 757.623270 0 ] (Code/Window/:__span-0-142) [ 1983 0 R /XYZ 60.307257 744.222918 0 ] (Code/Window/:__span-0-143) [ 1983 0 R /XYZ 60.307257 730.822566 0 ] (Code/Window/:__span-0-144) [ 1983 0 R /XYZ 60.307257 717.422214 0 ] (Code/Window/:__span-0-145) [ 1983 0 R /XYZ 60.307257 704.021862 0 ] (Code/Window/:__span-0-146) [ 1983 0 R /XYZ 60.307257 690.621510 0 ] (Code/Window/:__span-0-147) [ 1983 0 R /XYZ 60.307257 677.221158 0 ] (Code/Window/:__span-0-148) [ 1983 0 R /XYZ 60.307257 663.820806 0 ] (Code/Window/:__span-0-149) [ 1983 0 R /XYZ 60.307257 650.420454 0 ] (Code/Window/:__span-0-15) [ 1977 0 R /XYZ 60.307257 520.030494 0 ] (Code/Window/:__span-0-150) [ 1983 0 R /XYZ 60.307257 637.020102 0 ] (Code/Window/:__span-0-151) [ 1983 0 R /XYZ 60.307257 623.619750 0 ] (Code/Window/:__span-0-152) [ 1983 0 R /XYZ 60.307257 610.219398 0 ] (Code/Window/:__span-0-153) [ 1983 0 R /XYZ 60.307257 596.819046 0 ] (Code/Window/:__span-0-154) [ 1983 0 R /XYZ 60.307257 583.418694 0 ] (Code/Window/:__span-0-155) [ 1983 0 R /XYZ 60.307257 570.018342 0 ] (Code/Window/:__span-0-156) [ 1983 0 R /XYZ 60.307257 556.617990 0 ] (Code/Window/:__span-0-157) [ 1983 0 R /XYZ 60.307257 543.217638 0 ] (Code/Window/:__span-0-158) [ 1983 0 R /XYZ 60.307257 529.817286 0 ] (Code/Window/:__span-0-159) [ 1983 0 R /XYZ 60.307257 516.416934 0 ] (Code/Window/:__span-0-16) [ 1977 0 R /XYZ 60.307257 506.630142 0 ] (Code/Window/:__span-0-160) [ 1983 0 R /XYZ 60.307257 503.016582 0 ] (Code/Window/:__span-0-161) [ 1983 0 R /XYZ 60.307257 489.616230 0 ] (Code/Window/:__span-0-162) [ 1983 0 R /XYZ 60.307257 476.215878 0 ] (Code/Window/:__span-0-163) [ 1983 0 R /XYZ 60.307257 462.815526 0 ] (Code/Window/:__span-0-164) [ 1983 0 R /XYZ 60.307257 449.415174 0 ] (Code/Window/:__span-0-165) [ 1983 0 R /XYZ 60.307257 436.014822 0 ] (Code/Window/:__span-0-166) [ 1983 0 R /XYZ 60.307257 422.614470 0 ] (Code/Window/:__span-0-167) [ 1983 0 R /XYZ 60.307257 409.214118 0 ] (Code/Window/:__span-0-168) [ 1983 0 R /XYZ 60.307257 395.813766 0 ] (Code/Window/:__span-0-169) [ 1983 0 R /XYZ 60.307257 382.413414 0 ] (Code/Window/:__span-0-17) [ 1977 0 R /XYZ 60.307257 493.229790 0 ] (Code/Window/:__span-0-170) [ 1983 0 R /XYZ 60.307257 369.013062 0 ] (Code/Window/:__span-0-171) [ 1983 0 R /XYZ 60.307257 355.612710 0 ] (Code/Window/:__span-0-172) [ 1983 0 R /XYZ 60.307257 342.212358 0 ] (Code/Window/:__span-0-173) [ 1983 0 R /XYZ 60.307257 328.812006 0 ] (Code/Window/:__span-0-174) [ 1983 0 R /XYZ 60.307257 315.411654 0 ] (Code/Window/:__span-0-175) [ 1983 0 R /XYZ 60.307257 302.011302 0 ] (Code/Window/:__span-0-176) [ 1983 0 R /XYZ 60.307257 288.610950 0 ] (Code/Window/:__span-0-177) [ 1983 0 R /XYZ 60.307257 275.210598 0 ] (Code/Window/:__span-0-178) [ 1983 0 R /XYZ 60.307257 261.810246 0 ] (Code/Window/:__span-0-179) [ 1983 0 R /XYZ 60.307257 248.409894 0 ] (Code/Window/:__span-0-18) [ 1977 0 R /XYZ 60.307257 479.829438 0 ] (Code/Window/:__span-0-180) [ 1983 0 R /XYZ 60.307257 235.009542 0 ] (Code/Window/:__span-0-181) [ 1983 0 R /XYZ 60.307257 221.609190 0 ] (Code/Window/:__span-0-182) [ 1983 0 R /XYZ 60.307257 208.208838 0 ] (Code/Window/:__span-0-183) [ 1983 0 R /XYZ 60.307257 194.808486 0 ] (Code/Window/:__span-0-184) [ 1983 0 R /XYZ 60.307257 168.007782 0 ] (Code/Window/:__span-0-185) [ 1983 0 R /XYZ 60.307257 154.607430 0 ] (Code/Window/:__span-0-186) [ 1983 0 R /XYZ 60.307257 141.207078 0 ] (Code/Window/:__span-0-187) [ 1983 0 R /XYZ 60.307257 127.806726 0 ] (Code/Window/:__span-0-188) [ 1983 0 R /XYZ 60.307257 114.406374 0 ] (Code/Window/:__span-0-189) [ 1983 0 R /XYZ 60.307257 101.006022 0 ] (Code/Window/:__span-0-19) [ 1977 0 R /XYZ 60.307257 466.429086 0 ] (Code/Window/:__span-0-190) [ 1985 0 R /XYZ 60.307257 771.023622 0 ] (Code/Window/:__span-0-191) [ 1985 0 R /XYZ 60.307257 757.623270 0 ] (Code/Window/:__span-0-192) [ 1985 0 R /XYZ 60.307257 744.222918 0 ] (Code/Window/:__span-0-193) [ 1985 0 R /XYZ 60.307257 730.822566 0 ] (Code/Window/:__span-0-194) [ 1985 0 R /XYZ 60.307257 717.422214 0 ] (Code/Window/:__span-0-195) [ 1985 0 R /XYZ 60.307257 704.021862 0 ] (Code/Window/:__span-0-196) [ 1985 0 R /XYZ 60.307257 690.621510 0 ] (Code/Window/:__span-0-197) [ 1985 0 R /XYZ 60.307257 677.221158 0 ] (Code/Window/:__span-0-198) [ 1985 0 R /XYZ 60.307257 663.820806 0 ] (Code/Window/:__span-0-199) [ 1985 0 R /XYZ 60.307257 650.420454 0 ] (Code/Window/:__span-0-2) [ 1977 0 R /XYZ 60.307257 694.235070 0 ] (Code/Window/:__span-0-20) [ 1977 0 R /XYZ 60.307257 453.028734 0 ] (Code/Window/:__span-0-200) [ 1985 0 R /XYZ 60.307257 637.020102 0 ] (Code/Window/:__span-0-201) [ 1985 0 R /XYZ 60.307257 623.619750 0 ] (Code/Window/:__span-0-202) [ 1985 0 R /XYZ 60.307257 610.219398 0 ] (Code/Window/:__span-0-203) [ 1985 0 R /XYZ 60.307257 596.819046 0 ] (Code/Window/:__span-0-204) [ 1985 0 R /XYZ 60.307257 583.418694 0 ] (Code/Window/:__span-0-205) [ 1985 0 R /XYZ 60.307257 570.018342 0 ] (Code/Window/:__span-0-206) [ 1985 0 R /XYZ 60.307257 556.617990 0 ] (Code/Window/:__span-0-207) [ 1985 0 R /XYZ 60.307257 543.217638 0 ] (Code/Window/:__span-0-208) [ 1985 0 R /XYZ 60.307257 529.817286 0 ] (Code/Window/:__span-0-209) [ 1985 0 R /XYZ 60.307257 516.416934 0 ] (Code/Window/:__span-0-21) [ 1977 0 R /XYZ 60.307257 439.628382 0 ] (Code/Window/:__span-0-210) [ 1985 0 R /XYZ 60.307257 503.016582 0 ] (Code/Window/:__span-0-211) [ 1985 0 R /XYZ 60.307257 489.616230 0 ] (Code/Window/:__span-0-212) [ 1985 0 R /XYZ 60.307257 476.215878 0 ] (Code/Window/:__span-0-213) [ 1985 0 R /XYZ 60.307257 462.815526 0 ] (Code/Window/:__span-0-214) [ 1985 0 R /XYZ 60.307257 449.415174 0 ] (Code/Window/:__span-0-215) [ 1985 0 R /XYZ 60.307257 436.014822 0 ] (Code/Window/:__span-0-216) [ 1985 0 R /XYZ 60.307257 422.614470 0 ] (Code/Window/:__span-0-217) [ 1985 0 R /XYZ 60.307257 395.813766 0 ] (Code/Window/:__span-0-218) [ 1985 0 R /XYZ 60.307257 382.413414 0 ] (Code/Window/:__span-0-219) [ 1985 0 R /XYZ 60.307257 369.013062 0 ] (Code/Window/:__span-0-22) [ 1977 0 R /XYZ 60.307257 426.228030 0 ] (Code/Window/:__span-0-220) [ 1985 0 R /XYZ 60.307257 355.612710 0 ] (Code/Window/:__span-0-221) [ 1985 0 R /XYZ 60.307257 342.212358 0 ] (Code/Window/:__span-0-222) [ 1985 0 R /XYZ 60.307257 328.812006 0 ] (Code/Window/:__span-0-223) [ 1985 0 R /XYZ 60.307257 315.411654 0 ] (Code/Window/:__span-0-224) [ 1985 0 R /XYZ 60.307257 288.610950 0 ] (Code/Window/:__span-0-225) [ 1985 0 R /XYZ 60.307257 261.810246 0 ] (Code/Window/:__span-0-226) [ 1985 0 R /XYZ 60.307257 248.409894 0 ] (Code/Window/:__span-0-227) [ 1985 0 R /XYZ 60.307257 235.009542 0 ] (Code/Window/:__span-0-228) [ 1985 0 R /XYZ 60.307257 221.609190 0 ] (Code/Window/:__span-0-229) [ 1985 0 R /XYZ 60.307257 194.808486 0 ] (Code/Window/:__span-0-23) [ 1977 0 R /XYZ 60.307257 412.827678 0 ] (Code/Window/:__span-0-230) [ 1985 0 R /XYZ 60.307257 181.408134 0 ] (Code/Window/:__span-0-231) [ 1985 0 R /XYZ 60.307257 168.007782 0 ] (Code/Window/:__span-0-232) [ 1985 0 R /XYZ 60.307257 154.607430 0 ] (Code/Window/:__span-0-233) [ 1985 0 R /XYZ 60.307257 141.207078 0 ] (Code/Window/:__span-0-234) [ 1985 0 R /XYZ 60.307257 127.806726 0 ] (Code/Window/:__span-0-235) [ 1985 0 R /XYZ 60.307257 114.406374 0 ] (Code/Window/:__span-0-236) [ 1985 0 R /XYZ 60.307257 101.006022 0 ] (Code/Window/:__span-0-237) [ 1985 0 R /XYZ 60.307257 87.605670 0 ] (Code/Window/:__span-0-238) [ 1987 0 R /XYZ 60.307257 771.023622 0 ] (Code/Window/:__span-0-239) [ 1987 0 R /XYZ 60.307257 744.222918 0 ] (Code/Window/:__span-0-24) [ 1977 0 R /XYZ 60.307257 399.427326 0 ] (Code/Window/:__span-0-240) [ 1987 0 R /XYZ 60.307257 717.422214 0 ] (Code/Window/:__span-0-241) [ 1987 0 R /XYZ 60.307257 704.021862 0 ] (Code/Window/:__span-0-242) [ 1987 0 R /XYZ 60.307257 690.621510 0 ] (Code/Window/:__span-0-243) [ 1987 0 R /XYZ 60.307257 677.221158 0 ] (Code/Window/:__span-0-244) [ 1987 0 R /XYZ 60.307257 650.420454 0 ] (Code/Window/:__span-0-245) [ 1987 0 R /XYZ 60.307257 637.020102 0 ] (Code/Window/:__span-0-246) [ 1987 0 R /XYZ 60.307257 623.619750 0 ] (Code/Window/:__span-0-247) [ 1987 0 R /XYZ 60.307257 610.219398 0 ] (Code/Window/:__span-0-248) [ 1987 0 R /XYZ 60.307257 596.819046 0 ] (Code/Window/:__span-0-249) [ 1987 0 R /XYZ 60.307257 570.018342 0 ] (Code/Window/:__span-0-25) [ 1977 0 R /XYZ 60.307257 386.026974 0 ] (Code/Window/:__span-0-250) [ 1987 0 R /XYZ 60.307257 556.617990 0 ] (Code/Window/:__span-0-251) [ 1987 0 R /XYZ 60.307257 543.217638 0 ] (Code/Window/:__span-0-252) [ 1987 0 R /XYZ 60.307257 529.817286 0 ] (Code/Window/:__span-0-253) [ 1987 0 R /XYZ 60.307257 516.416934 0 ] (Code/Window/:__span-0-254) [ 1987 0 R /XYZ 60.307257 503.016582 0 ] (Code/Window/:__span-0-255) [ 1987 0 R /XYZ 60.307257 476.215878 0 ] (Code/Window/:__span-0-256) [ 1987 0 R /XYZ 60.307257 462.815526 0 ] (Code/Window/:__span-0-257) [ 1987 0 R /XYZ 60.307257 449.415174 0 ] (Code/Window/:__span-0-258) [ 1987 0 R /XYZ 60.307257 436.014822 0 ] (Code/Window/:__span-0-259) [ 1987 0 R /XYZ 60.307257 422.614470 0 ] (Code/Window/:__span-0-26) [ 1977 0 R /XYZ 60.307257 372.626622 0 ] (Code/Window/:__span-0-260) [ 1987 0 R /XYZ 60.307257 409.214118 0 ] (Code/Window/:__span-0-261) [ 1987 0 R /XYZ 60.307257 395.813766 0 ] (Code/Window/:__span-0-262) [ 1987 0 R /XYZ 60.307257 382.413414 0 ] (Code/Window/:__span-0-263) [ 1987 0 R /XYZ 60.307257 369.013062 0 ] (Code/Window/:__span-0-264) [ 1987 0 R /XYZ 60.307257 355.612710 0 ] (Code/Window/:__span-0-265) [ 1987 0 R /XYZ 60.307257 342.212358 0 ] (Code/Window/:__span-0-266) [ 1987 0 R /XYZ 60.307257 328.812006 0 ] (Code/Window/:__span-0-267) [ 1987 0 R /XYZ 60.307257 315.411654 0 ] (Code/Window/:__span-0-268) [ 1987 0 R /XYZ 60.307257 302.011302 0 ] (Code/Window/:__span-0-269) [ 1987 0 R /XYZ 60.307257 288.610950 0 ] (Code/Window/:__span-0-27) [ 1977 0 R /XYZ 60.307257 359.226270 0 ] (Code/Window/:__span-0-270) [ 1987 0 R /XYZ 60.307257 275.210598 0 ] (Code/Window/:__span-0-271) [ 1987 0 R /XYZ 60.307257 261.810246 0 ] (Code/Window/:__span-0-272) [ 1987 0 R /XYZ 60.307257 248.409894 0 ] (Code/Window/:__span-0-273) [ 1987 0 R /XYZ 60.307257 235.009542 0 ] (Code/Window/:__span-0-274) [ 1987 0 R /XYZ 60.307257 221.609190 0 ] (Code/Window/:__span-0-275) [ 1987 0 R /XYZ 60.307257 208.208838 0 ] (Code/Window/:__span-0-276) [ 1987 0 R /XYZ 60.307257 194.808486 0 ] (Code/Window/:__span-0-277) [ 1987 0 R /XYZ 60.307257 181.408134 0 ] (Code/Window/:__span-0-278) [ 1987 0 R /XYZ 60.307257 168.007782 0 ] (Code/Window/:__span-0-279) [ 1987 0 R /XYZ 60.307257 154.607430 0 ] (Code/Window/:__span-0-28) [ 1977 0 R /XYZ 60.307257 345.825918 0 ] (Code/Window/:__span-0-280) [ 1987 0 R /XYZ 60.307257 141.207078 0 ] (Code/Window/:__span-0-281) [ 1987 0 R /XYZ 60.307257 127.806726 0 ] (Code/Window/:__span-0-282) [ 1987 0 R /XYZ 60.307257 114.406374 0 ] (Code/Window/:__span-0-283) [ 1987 0 R /XYZ 60.307257 101.006022 0 ] (Code/Window/:__span-0-284) [ 1987 0 R /XYZ 60.307257 87.605670 0 ] (Code/Window/:__span-0-285) [ 1989 0 R /XYZ 60.307257 771.023622 0 ] (Code/Window/:__span-0-286) [ 1989 0 R /XYZ 60.307257 757.623270 0 ] (Code/Window/:__span-0-287) [ 1989 0 R /XYZ 60.307257 744.222918 0 ] (Code/Window/:__span-0-288) [ 1989 0 R /XYZ 60.307257 730.822566 0 ] (Code/Window/:__span-0-289) [ 1989 0 R /XYZ 60.307257 717.422214 0 ] (Code/Window/:__span-0-29) [ 1977 0 R /XYZ 60.307257 332.425566 0 ] (Code/Window/:__span-0-290) [ 1989 0 R /XYZ 60.307257 704.021862 0 ] (Code/Window/:__span-0-291) [ 1989 0 R /XYZ 60.307257 690.621510 0 ] (Code/Window/:__span-0-292) [ 1989 0 R /XYZ 60.307257 677.221158 0 ] (Code/Window/:__span-0-293) [ 1989 0 R /XYZ 60.307257 650.420454 0 ] (Code/Window/:__span-0-294) [ 1989 0 R /XYZ 60.307257 623.619750 0 ] (Code/Window/:__span-0-295) [ 1989 0 R /XYZ 60.307257 596.819046 0 ] (Code/Window/:__span-0-296) [ 1989 0 R /XYZ 60.307257 583.418694 0 ] (Code/Window/:__span-0-297) [ 1989 0 R /XYZ 60.307257 570.018342 0 ] (Code/Window/:__span-0-298) [ 1989 0 R /XYZ 60.307257 556.617990 0 ] (Code/Window/:__span-0-299) [ 1989 0 R /XYZ 60.307257 529.817286 0 ] (Code/Window/:__span-0-3) [ 1977 0 R /XYZ 60.307257 680.834718 0 ] (Code/Window/:__span-0-30) [ 1977 0 R /XYZ 60.307257 319.025214 0 ] (Code/Window/:__span-0-300) [ 1989 0 R /XYZ 60.307257 516.416934 0 ] (Code/Window/:__span-0-301) [ 1989 0 R /XYZ 60.307257 503.016582 0 ] (Code/Window/:__span-0-302) [ 1989 0 R /XYZ 60.307257 489.616230 0 ] (Code/Window/:__span-0-303) [ 1989 0 R /XYZ 60.307257 476.215878 0 ] (Code/Window/:__span-0-304) [ 1989 0 R /XYZ 60.307257 462.815526 0 ] (Code/Window/:__span-0-305) [ 1989 0 R /XYZ 60.307257 449.415174 0 ] (Code/Window/:__span-0-306) [ 1989 0 R /XYZ 60.307257 436.014822 0 ] (Code/Window/:__span-0-307) [ 1989 0 R /XYZ 60.307257 422.614470 0 ] (Code/Window/:__span-0-308) [ 1989 0 R /XYZ 60.307257 409.214118 0 ] (Code/Window/:__span-0-309) [ 1989 0 R /XYZ 60.307257 395.813766 0 ] (Code/Window/:__span-0-31) [ 1977 0 R /XYZ 60.307257 305.624862 0 ] (Code/Window/:__span-0-310) [ 1989 0 R /XYZ 60.307257 369.013062 0 ] (Code/Window/:__span-0-311) [ 1989 0 R /XYZ 60.307257 342.212358 0 ] (Code/Window/:__span-0-312) [ 1989 0 R /XYZ 60.307257 315.411654 0 ] (Code/Window/:__span-0-313) [ 1989 0 R /XYZ 60.307257 302.011302 0 ] (Code/Window/:__span-0-314) [ 1989 0 R /XYZ 60.307257 288.610950 0 ] (Code/Window/:__span-0-315) [ 1989 0 R /XYZ 60.307257 275.210598 0 ] (Code/Window/:__span-0-316) [ 1989 0 R /XYZ 60.307257 248.409894 0 ] (Code/Window/:__span-0-317) [ 1989 0 R /XYZ 60.307257 235.009542 0 ] (Code/Window/:__span-0-318) [ 1989 0 R /XYZ 60.307257 221.609190 0 ] (Code/Window/:__span-0-319) [ 1989 0 R /XYZ 60.307257 208.208838 0 ] (Code/Window/:__span-0-32) [ 1977 0 R /XYZ 60.307257 292.224510 0 ] (Code/Window/:__span-0-320) [ 1989 0 R /XYZ 60.307257 194.808486 0 ] (Code/Window/:__span-0-321) [ 1989 0 R /XYZ 60.307257 168.007782 0 ] (Code/Window/:__span-0-322) [ 1989 0 R /XYZ 60.307257 141.207078 0 ] (Code/Window/:__span-0-323) [ 1989 0 R /XYZ 60.307257 127.806726 0 ] (Code/Window/:__span-0-324) [ 1989 0 R /XYZ 60.307257 114.406374 0 ] (Code/Window/:__span-0-325) [ 1989 0 R /XYZ 60.307257 101.006022 0 ] (Code/Window/:__span-0-326) [ 1989 0 R /XYZ 60.307257 87.605670 0 ] (Code/Window/:__span-0-327) [ 1991 0 R /XYZ 60.307257 771.023622 0 ] (Code/Window/:__span-0-328) [ 1991 0 R /XYZ 60.307257 757.623270 0 ] (Code/Window/:__span-0-329) [ 1991 0 R /XYZ 60.307257 744.222918 0 ] (Code/Window/:__span-0-33) [ 1977 0 R /XYZ 60.307257 278.824158 0 ] (Code/Window/:__span-0-330) [ 1991 0 R /XYZ 60.307257 730.822566 0 ] (Code/Window/:__span-0-331) [ 1991 0 R /XYZ 60.307257 717.422214 0 ] (Code/Window/:__span-0-332) [ 1991 0 R /XYZ 60.307257 690.621510 0 ] (Code/Window/:__span-0-333) [ 1991 0 R /XYZ 60.307257 663.820806 0 ] (Code/Window/:__span-0-334) [ 1991 0 R /XYZ 60.307257 637.020102 0 ] (Code/Window/:__span-0-335) [ 1991 0 R /XYZ 60.307257 623.619750 0 ] (Code/Window/:__span-0-336) [ 1991 0 R /XYZ 60.307257 610.219398 0 ] (Code/Window/:__span-0-337) [ 1991 0 R /XYZ 60.307257 596.819046 0 ] (Code/Window/:__span-0-338) [ 1991 0 R /XYZ 60.307257 583.418694 0 ] (Code/Window/:__span-0-339) [ 1991 0 R /XYZ 60.307257 570.018342 0 ] (Code/Window/:__span-0-34) [ 1977 0 R /XYZ 60.307257 265.423806 0 ] (Code/Window/:__span-0-340) [ 1991 0 R /XYZ 60.307257 556.617990 0 ] (Code/Window/:__span-0-341) [ 1991 0 R /XYZ 60.307257 543.217638 0 ] (Code/Window/:__span-0-342) [ 1991 0 R /XYZ 60.307257 529.817286 0 ] (Code/Window/:__span-0-343) [ 1991 0 R /XYZ 60.307257 503.016582 0 ] (Code/Window/:__span-0-344) [ 1991 0 R /XYZ 60.307257 476.215878 0 ] (Code/Window/:__span-0-345) [ 1991 0 R /XYZ 60.307257 436.014822 0 ] (Code/Window/:__span-0-346) [ 1991 0 R /XYZ 60.307257 422.614470 0 ] (Code/Window/:__span-0-347) [ 1991 0 R /XYZ 60.307257 409.214118 0 ] (Code/Window/:__span-0-348) [ 1991 0 R /XYZ 60.307257 395.813766 0 ] (Code/Window/:__span-0-349) [ 1991 0 R /XYZ 60.307257 369.013062 0 ] (Code/Window/:__span-0-35) [ 1977 0 R /XYZ 60.307257 252.023454 0 ] (Code/Window/:__span-0-350) [ 1991 0 R /XYZ 60.307257 355.612710 0 ] (Code/Window/:__span-0-351) [ 1991 0 R /XYZ 60.307257 342.212358 0 ] (Code/Window/:__span-0-352) [ 1991 0 R /XYZ 60.307257 328.812006 0 ] (Code/Window/:__span-0-353) [ 1991 0 R /XYZ 60.307257 315.411654 0 ] (Code/Window/:__span-0-354) [ 1991 0 R /XYZ 60.307257 288.610950 0 ] (Code/Window/:__span-0-355) [ 1991 0 R /XYZ 60.307257 275.210598 0 ] (Code/Window/:__span-0-356) [ 1991 0 R /XYZ 60.307257 261.810246 0 ] (Code/Window/:__span-0-357) [ 1991 0 R /XYZ 60.307257 248.409894 0 ] (Code/Window/:__span-0-358) [ 1991 0 R /XYZ 60.307257 235.009542 0 ] (Code/Window/:__span-0-359) [ 1991 0 R /XYZ 60.307257 221.609190 0 ] (Code/Window/:__span-0-36) [ 1977 0 R /XYZ 60.307257 238.623102 0 ] (Code/Window/:__span-0-360) [ 1991 0 R /XYZ 60.307257 208.208838 0 ] (Code/Window/:__span-0-361) [ 1991 0 R /XYZ 60.307257 194.808486 0 ] (Code/Window/:__span-0-362) [ 1991 0 R /XYZ 60.307257 181.408134 0 ] (Code/Window/:__span-0-363) [ 1991 0 R /XYZ 60.307257 168.007782 0 ] (Code/Window/:__span-0-364) [ 1991 0 R /XYZ 60.307257 154.607430 0 ] (Code/Window/:__span-0-365) [ 1991 0 R /XYZ 60.307257 141.207078 0 ] (Code/Window/:__span-0-366) [ 1991 0 R /XYZ 60.307257 127.806726 0 ] (Code/Window/:__span-0-367) [ 1991 0 R /XYZ 60.307257 114.406374 0 ] (Code/Window/:__span-0-368) [ 1991 0 R /XYZ 60.307257 101.006022 0 ] (Code/Window/:__span-0-369) [ 1993 0 R /XYZ 60.307257 771.023622 0 ] (Code/Window/:__span-0-37) [ 1977 0 R /XYZ 60.307257 225.222750 0 ] (Code/Window/:__span-0-370) [ 1993 0 R /XYZ 60.307257 744.222918 0 ] (Code/Window/:__span-0-371) [ 1993 0 R /XYZ 60.307257 717.422214 0 ] (Code/Window/:__span-0-372) [ 1993 0 R /XYZ 60.307257 704.021862 0 ] (Code/Window/:__span-0-373) [ 1993 0 R /XYZ 60.307257 690.621510 0 ] (Code/Window/:__span-0-374) [ 1993 0 R /XYZ 60.307257 677.221158 0 ] (Code/Window/:__span-0-375) [ 1993 0 R /XYZ 60.307257 650.420454 0 ] (Code/Window/:__span-0-376) [ 1993 0 R /XYZ 60.307257 637.020102 0 ] (Code/Window/:__span-0-377) [ 1993 0 R /XYZ 60.307257 623.619750 0 ] (Code/Window/:__span-0-378) [ 1993 0 R /XYZ 60.307257 610.219398 0 ] (Code/Window/:__span-0-379) [ 1993 0 R /XYZ 60.307257 596.819046 0 ] (Code/Window/:__span-0-38) [ 1977 0 R /XYZ 60.307257 211.822398 0 ] (Code/Window/:__span-0-380) [ 1993 0 R /XYZ 60.307257 583.418694 0 ] (Code/Window/:__span-0-381) [ 1993 0 R /XYZ 60.307257 570.018342 0 ] (Code/Window/:__span-0-382) [ 1993 0 R /XYZ 60.307257 543.217638 0 ] (Code/Window/:__span-0-383) [ 1993 0 R /XYZ 60.307257 529.817286 0 ] (Code/Window/:__span-0-384) [ 1993 0 R /XYZ 60.307257 516.416934 0 ] (Code/Window/:__span-0-385) [ 1993 0 R /XYZ 60.307257 489.616230 0 ] (Code/Window/:__span-0-386) [ 1993 0 R /XYZ 60.307257 462.815526 0 ] (Code/Window/:__span-0-387) [ 1993 0 R /XYZ 60.307257 422.614470 0 ] (Code/Window/:__span-0-388) [ 1993 0 R /XYZ 60.307257 409.214118 0 ] (Code/Window/:__span-0-389) [ 1993 0 R /XYZ 60.307257 395.813766 0 ] (Code/Window/:__span-0-39) [ 1977 0 R /XYZ 60.307257 198.422046 0 ] (Code/Window/:__span-0-390) [ 1993 0 R /XYZ 60.307257 382.413414 0 ] (Code/Window/:__span-0-391) [ 1993 0 R /XYZ 60.307257 355.612710 0 ] (Code/Window/:__span-0-392) [ 1993 0 R /XYZ 60.307257 342.212358 0 ] (Code/Window/:__span-0-393) [ 1993 0 R /XYZ 60.307257 328.812006 0 ] (Code/Window/:__span-0-394) [ 1993 0 R /XYZ 60.307257 315.411654 0 ] (Code/Window/:__span-0-395) [ 1993 0 R /XYZ 60.307257 302.011302 0 ] (Code/Window/:__span-0-396) [ 1993 0 R /XYZ 60.307257 288.610950 0 ] (Code/Window/:__span-0-397) [ 1993 0 R /XYZ 60.307257 275.210598 0 ] (Code/Window/:__span-0-398) [ 1993 0 R /XYZ 60.307257 261.810246 0 ] (Code/Window/:__span-0-399) [ 1993 0 R /XYZ 60.307257 248.409894 0 ] (Code/Window/:__span-0-4) [ 1977 0 R /XYZ 60.307257 667.434366 0 ] (Code/Window/:__span-0-40) [ 1977 0 R /XYZ 60.307257 171.621342 0 ] (Code/Window/:__span-0-400) [ 1993 0 R /XYZ 60.307257 235.009542 0 ] (Code/Window/:__span-0-401) [ 1993 0 R /XYZ 60.307257 208.208838 0 ] (Code/Window/:__span-0-402) [ 1993 0 R /XYZ 60.307257 181.408134 0 ] (Code/Window/:__span-0-403) [ 1993 0 R /XYZ 60.307257 141.207078 0 ] (Code/Window/:__span-0-404) [ 1993 0 R /XYZ 60.307257 127.806726 0 ] (Code/Window/:__span-0-405) [ 1993 0 R /XYZ 60.307257 114.406374 0 ] (Code/Window/:__span-0-406) [ 1993 0 R /XYZ 60.307257 101.006022 0 ] (Code/Window/:__span-0-407) [ 1995 0 R /XYZ 60.307257 771.023622 0 ] (Code/Window/:__span-0-408) [ 1995 0 R /XYZ 60.307257 757.623270 0 ] (Code/Window/:__span-0-409) [ 1995 0 R /XYZ 60.307257 744.222918 0 ] (Code/Window/:__span-0-41) [ 1977 0 R /XYZ 60.307257 158.220990 0 ] (Code/Window/:__span-0-410) [ 1995 0 R /XYZ 60.307257 730.822566 0 ] (Code/Window/:__span-0-411) [ 1995 0 R /XYZ 60.307257 717.422214 0 ] (Code/Window/:__span-0-412) [ 1995 0 R /XYZ 60.307257 704.021862 0 ] (Code/Window/:__span-0-413) [ 1995 0 R /XYZ 60.307257 677.221158 0 ] (Code/Window/:__span-0-414) [ 1995 0 R /XYZ 60.307257 663.820806 0 ] (Code/Window/:__span-0-415) [ 1995 0 R /XYZ 60.307257 650.420454 0 ] (Code/Window/:__span-0-416) [ 1995 0 R /XYZ 60.307257 637.020102 0 ] (Code/Window/:__span-0-417) [ 1995 0 R /XYZ 60.307257 623.619750 0 ] (Code/Window/:__span-0-418) [ 1995 0 R /XYZ 60.307257 610.219398 0 ] (Code/Window/:__span-0-419) [ 1995 0 R /XYZ 60.307257 596.819046 0 ] (Code/Window/:__span-0-42) [ 1977 0 R /XYZ 60.307257 144.820638 0 ] (Code/Window/:__span-0-420) [ 1995 0 R /XYZ 60.307257 583.418694 0 ] (Code/Window/:__span-0-421) [ 1995 0 R /XYZ 60.307257 570.018342 0 ] (Code/Window/:__span-0-422) [ 1995 0 R /XYZ 60.307257 556.617990 0 ] (Code/Window/:__span-0-423) [ 1995 0 R /XYZ 60.307257 543.217638 0 ] (Code/Window/:__span-0-424) [ 1995 0 R /XYZ 60.307257 529.817286 0 ] (Code/Window/:__span-0-425) [ 1995 0 R /XYZ 60.307257 516.416934 0 ] (Code/Window/:__span-0-426) [ 1995 0 R /XYZ 60.307257 503.016582 0 ] (Code/Window/:__span-0-427) [ 1995 0 R /XYZ 60.307257 489.616230 0 ] (Code/Window/:__span-0-428) [ 1995 0 R /XYZ 60.307257 476.215878 0 ] (Code/Window/:__span-0-429) [ 1995 0 R /XYZ 60.307257 462.815526 0 ] (Code/Window/:__span-0-43) [ 1977 0 R /XYZ 60.307257 131.420286 0 ] (Code/Window/:__span-0-430) [ 1995 0 R /XYZ 60.307257 449.415174 0 ] (Code/Window/:__span-0-431) [ 1995 0 R /XYZ 60.307257 436.014822 0 ] (Code/Window/:__span-0-432) [ 1995 0 R /XYZ 60.307257 422.614470 0 ] (Code/Window/:__span-0-433) [ 1995 0 R /XYZ 60.307257 409.214118 0 ] (Code/Window/:__span-0-434) [ 1995 0 R /XYZ 60.307257 395.813766 0 ] (Code/Window/:__span-0-435) [ 1995 0 R /XYZ 60.307257 382.413414 0 ] (Code/Window/:__span-0-436) [ 1995 0 R /XYZ 60.307257 369.013062 0 ] (Code/Window/:__span-0-437) [ 1995 0 R /XYZ 60.307257 355.612710 0 ] (Code/Window/:__span-0-438) [ 1995 0 R /XYZ 60.307257 342.212358 0 ] (Code/Window/:__span-0-439) [ 1995 0 R /XYZ 60.307257 328.812006 0 ] (Code/Window/:__span-0-44) [ 1977 0 R /XYZ 60.307257 118.019934 0 ] (Code/Window/:__span-0-440) [ 1995 0 R /XYZ 60.307257 315.411654 0 ] (Code/Window/:__span-0-441) [ 1995 0 R /XYZ 60.307257 302.011302 0 ] (Code/Window/:__span-0-442) [ 1995 0 R /XYZ 60.307257 288.610950 0 ] (Code/Window/:__span-0-443) [ 1995 0 R /XYZ 60.307257 261.810246 0 ] (Code/Window/:__span-0-444) [ 1995 0 R /XYZ 60.307257 235.009542 0 ] (Code/Window/:__span-0-445) [ 1995 0 R /XYZ 60.307257 221.609190 0 ] (Code/Window/:__span-0-446) [ 1995 0 R /XYZ 60.307257 208.208838 0 ] (Code/Window/:__span-0-447) [ 1995 0 R /XYZ 60.307257 194.808486 0 ] (Code/Window/:__span-0-448) [ 1995 0 R /XYZ 60.307257 181.408134 0 ] (Code/Window/:__span-0-449) [ 1995 0 R /XYZ 60.307257 154.607430 0 ] (Code/Window/:__span-0-45) [ 1977 0 R /XYZ 60.307257 104.619582 0 ] (Code/Window/:__span-0-450) [ 1995 0 R /XYZ 60.307257 141.207078 0 ] (Code/Window/:__span-0-451) [ 1995 0 R /XYZ 60.307257 127.806726 0 ] (Code/Window/:__span-0-452) [ 1995 0 R /XYZ 60.307257 114.406374 0 ] (Code/Window/:__span-0-453) [ 1995 0 R /XYZ 60.307257 101.006022 0 ] (Code/Window/:__span-0-454) [ 1995 0 R /XYZ 60.307257 87.605670 0 ] (Code/Window/:__span-0-455) [ 1997 0 R /XYZ 60.307257 771.023622 0 ] (Code/Window/:__span-0-456) [ 1997 0 R /XYZ 60.307257 757.623270 0 ] (Code/Window/:__span-0-457) [ 1997 0 R /XYZ 60.307257 744.222918 0 ] (Code/Window/:__span-0-458) [ 1997 0 R /XYZ 60.307257 730.822566 0 ] (Code/Window/:__span-0-459) [ 1997 0 R /XYZ 60.307257 704.021862 0 ] (Code/Window/:__span-0-46) [ 1977 0 R /XYZ 60.307257 91.219230 0 ] (Code/Window/:__span-0-460) [ 1997 0 R /XYZ 60.307257 677.221158 0 ] (Code/Window/:__span-0-461) [ 1997 0 R /XYZ 60.307257 650.420454 0 ] (Code/Window/:__span-0-462) [ 1997 0 R /XYZ 60.307257 637.020102 0 ] (Code/Window/:__span-0-463) [ 1997 0 R /XYZ 60.307257 623.619750 0 ] (Code/Window/:__span-0-464) [ 1997 0 R /XYZ 60.307257 610.219398 0 ] (Code/Window/:__span-0-465) [ 1997 0 R /XYZ 60.307257 583.418694 0 ] (Code/Window/:__span-0-466) [ 1997 0 R /XYZ 60.307257 570.018342 0 ] (Code/Window/:__span-0-467) [ 1997 0 R /XYZ 60.307257 556.617990 0 ] (Code/Window/:__span-0-468) [ 1997 0 R /XYZ 60.307257 543.217638 0 ] (Code/Window/:__span-0-469) [ 1997 0 R /XYZ 60.307257 529.817286 0 ] (Code/Window/:__span-0-47) [ 1979 0 R /XYZ 60.307257 771.023622 0 ] (Code/Window/:__span-0-470) [ 1997 0 R /XYZ 60.307257 503.016582 0 ] (Code/Window/:__span-0-471) [ 1997 0 R /XYZ 60.307257 489.616230 0 ] (Code/Window/:__span-0-472) [ 1997 0 R /XYZ 60.307257 476.215878 0 ] (Code/Window/:__span-0-473) [ 1997 0 R /XYZ 60.307257 462.815526 0 ] (Code/Window/:__span-0-474) [ 1997 0 R /XYZ 60.307257 449.415174 0 ] (Code/Window/:__span-0-475) [ 1997 0 R /XYZ 60.307257 436.014822 0 ] (Code/Window/:__span-0-476) [ 1997 0 R /XYZ 60.307257 422.614470 0 ] (Code/Window/:__span-0-477) [ 1997 0 R /XYZ 60.307257 409.214118 0 ] (Code/Window/:__span-0-478) [ 1997 0 R /XYZ 60.307257 395.813766 0 ] (Code/Window/:__span-0-479) [ 1997 0 R /XYZ 60.307257 382.413414 0 ] (Code/Window/:__span-0-48) [ 1979 0 R /XYZ 60.307257 757.623270 0 ] (Code/Window/:__span-0-480) [ 1997 0 R /XYZ 60.307257 369.013062 0 ] (Code/Window/:__span-0-481) [ 1997 0 R /XYZ 60.307257 342.212358 0 ] (Code/Window/:__span-0-482) [ 1997 0 R /XYZ 60.307257 328.812006 0 ] (Code/Window/:__span-0-483) [ 1997 0 R /XYZ 60.307257 315.411654 0 ] (Code/Window/:__span-0-484) [ 1997 0 R /XYZ 60.307257 302.011302 0 ] (Code/Window/:__span-0-485) [ 1997 0 R /XYZ 60.307257 275.210598 0 ] (Code/Window/:__span-0-486) [ 1997 0 R /XYZ 60.307257 261.810246 0 ] (Code/Window/:__span-0-487) [ 1997 0 R /XYZ 60.307257 248.409894 0 ] (Code/Window/:__span-0-488) [ 1997 0 R /XYZ 60.307257 235.009542 0 ] (Code/Window/:__span-0-489) [ 1997 0 R /XYZ 60.307257 221.609190 0 ] (Code/Window/:__span-0-49) [ 1979 0 R /XYZ 60.307257 744.222918 0 ] (Code/Window/:__span-0-490) [ 1997 0 R /XYZ 60.307257 208.208838 0 ] (Code/Window/:__span-0-491) [ 1997 0 R /XYZ 60.307257 194.808486 0 ] (Code/Window/:__span-0-492) [ 1997 0 R /XYZ 60.307257 181.408134 0 ] (Code/Window/:__span-0-493) [ 1997 0 R /XYZ 60.307257 168.007782 0 ] (Code/Window/:__span-0-494) [ 1997 0 R /XYZ 60.307257 154.607430 0 ] (Code/Window/:__span-0-495) [ 1997 0 R /XYZ 60.307257 141.207078 0 ] (Code/Window/:__span-0-496) [ 1997 0 R /XYZ 60.307257 127.806726 0 ] (Code/Window/:__span-0-497) [ 1997 0 R /XYZ 60.307257 114.406374 0 ] (Code/Window/:__span-0-498) [ 1997 0 R /XYZ 60.307257 101.006022 0 ] (Code/Window/:__span-0-499) [ 1999 0 R /XYZ 60.307257 771.023622 0 ] (Code/Window/:__span-0-5) [ 1977 0 R /XYZ 60.307257 654.034014 0 ] (Code/Window/:__span-0-50) [ 1979 0 R /XYZ 60.307257 730.822566 0 ] (Code/Window/:__span-0-500) [ 1999 0 R /XYZ 60.307257 744.222918 0 ] (Code/Window/:__span-0-501) [ 1999 0 R /XYZ 60.307257 730.822566 0 ] (Code/Window/:__span-0-502) [ 1999 0 R /XYZ 60.307257 717.422214 0 ] (Code/Window/:__span-0-503) [ 1999 0 R /XYZ 60.307257 704.021862 0 ] (Code/Window/:__span-0-504) [ 1999 0 R /XYZ 60.307257 677.221158 0 ] (Code/Window/:__span-0-505) [ 1999 0 R /XYZ 60.307257 663.820806 0 ] (Code/Window/:__span-0-506) [ 1999 0 R /XYZ 60.307257 650.420454 0 ] (Code/Window/:__span-0-507) [ 1999 0 R /XYZ 60.307257 637.020102 0 ] (Code/Window/:__span-0-508) [ 1999 0 R /XYZ 60.307257 623.619750 0 ] (Code/Window/:__span-0-509) [ 1999 0 R /XYZ 60.307257 610.219398 0 ] (Code/Window/:__span-0-51) [ 1979 0 R /XYZ 60.307257 704.021862 0 ] (Code/Window/:__span-0-510) [ 1999 0 R /XYZ 60.307257 596.819046 0 ] (Code/Window/:__span-0-511) [ 1999 0 R /XYZ 60.307257 583.418694 0 ] (Code/Window/:__span-0-512) [ 1999 0 R /XYZ 60.307257 570.018342 0 ] (Code/Window/:__span-0-513) [ 1999 0 R /XYZ 60.307257 556.617990 0 ] (Code/Window/:__span-0-514) [ 1999 0 R /XYZ 60.307257 529.817286 0 ] (Code/Window/:__span-0-515) [ 1999 0 R /XYZ 60.307257 503.016582 0 ] (Code/Window/:__span-0-516) [ 1999 0 R /XYZ 60.307257 489.616230 0 ] (Code/Window/:__span-0-517) [ 1999 0 R /XYZ 60.307257 476.215878 0 ] (Code/Window/:__span-0-518) [ 1999 0 R /XYZ 60.307257 462.815526 0 ] (Code/Window/:__span-0-519) [ 1999 0 R /XYZ 60.307257 436.014822 0 ] (Code/Window/:__span-0-52) [ 1979 0 R /XYZ 60.307257 690.621510 0 ] (Code/Window/:__span-0-520) [ 1999 0 R /XYZ 60.307257 422.614470 0 ] (Code/Window/:__span-0-521) [ 1999 0 R /XYZ 60.307257 409.214118 0 ] (Code/Window/:__span-0-522) [ 1999 0 R /XYZ 60.307257 369.013062 0 ] (Code/Window/:__span-0-523) [ 1999 0 R /XYZ 60.307257 342.212358 0 ] (Code/Window/:__span-0-524) [ 1999 0 R /XYZ 60.307257 328.812006 0 ] (Code/Window/:__span-0-525) [ 1999 0 R /XYZ 60.307257 315.411654 0 ] (Code/Window/:__span-0-526) [ 1999 0 R /XYZ 60.307257 302.011302 0 ] (Code/Window/:__span-0-527) [ 1999 0 R /XYZ 60.307257 288.610950 0 ] (Code/Window/:__span-0-528) [ 1999 0 R /XYZ 60.307257 275.210598 0 ] (Code/Window/:__span-0-529) [ 1999 0 R /XYZ 60.307257 261.810246 0 ] (Code/Window/:__span-0-53) [ 1979 0 R /XYZ 60.307257 677.221158 0 ] (Code/Window/:__span-0-530) [ 1999 0 R /XYZ 60.307257 248.409894 0 ] (Code/Window/:__span-0-531) [ 1999 0 R /XYZ 60.307257 235.009542 0 ] (Code/Window/:__span-0-532) [ 1999 0 R /XYZ 60.307257 221.609190 0 ] (Code/Window/:__span-0-533) [ 1999 0 R /XYZ 60.307257 194.808486 0 ] (Code/Window/:__span-0-534) [ 1999 0 R /XYZ 60.307257 181.408134 0 ] (Code/Window/:__span-0-535) [ 1999 0 R /XYZ 60.307257 154.607430 0 ] (Code/Window/:__span-0-536) [ 1999 0 R /XYZ 60.307257 141.207078 0 ] (Code/Window/:__span-0-537) [ 1999 0 R /XYZ 60.307257 114.406374 0 ] (Code/Window/:__span-0-538) [ 1999 0 R /XYZ 60.307257 87.605670 0 ] (Code/Window/:__span-0-539) [ 2001 0 R /XYZ 60.307257 757.623270 0 ] (Code/Window/:__span-0-54) [ 1979 0 R /XYZ 60.307257 663.820806 0 ] (Code/Window/:__span-0-540) [ 2001 0 R /XYZ 60.307257 744.222918 0 ] (Code/Window/:__span-0-541) [ 2001 0 R /XYZ 60.307257 730.822566 0 ] (Code/Window/:__span-0-542) [ 2001 0 R /XYZ 60.307257 717.422214 0 ] (Code/Window/:__span-0-543) [ 2001 0 R /XYZ 60.307257 690.621510 0 ] (Code/Window/:__span-0-544) [ 2001 0 R /XYZ 60.307257 677.221158 0 ] (Code/Window/:__span-0-545) [ 2001 0 R /XYZ 60.307257 663.820806 0 ] (Code/Window/:__span-0-546) [ 2001 0 R /XYZ 60.307257 650.420454 0 ] (Code/Window/:__span-0-547) [ 2001 0 R /XYZ 60.307257 637.020102 0 ] (Code/Window/:__span-0-548) [ 2001 0 R /XYZ 60.307257 623.619750 0 ] (Code/Window/:__span-0-549) [ 2001 0 R /XYZ 60.307257 610.219398 0 ] (Code/Window/:__span-0-55) [ 1979 0 R /XYZ 60.307257 650.420454 0 ] (Code/Window/:__span-0-550) [ 2001 0 R /XYZ 60.307257 596.819046 0 ] (Code/Window/:__span-0-551) [ 2001 0 R /XYZ 60.307257 583.418694 0 ] (Code/Window/:__span-0-552) [ 2001 0 R /XYZ 60.307257 570.018342 0 ] (Code/Window/:__span-0-553) [ 2001 0 R /XYZ 60.307257 556.617990 0 ] (Code/Window/:__span-0-554) [ 2001 0 R /XYZ 60.307257 543.217638 0 ] (Code/Window/:__span-0-555) [ 2001 0 R /XYZ 60.307257 529.817286 0 ] (Code/Window/:__span-0-556) [ 2001 0 R /XYZ 60.307257 516.416934 0 ] (Code/Window/:__span-0-557) [ 2001 0 R /XYZ 60.307257 503.016582 0 ] (Code/Window/:__span-0-558) [ 2001 0 R /XYZ 60.307257 489.616230 0 ] (Code/Window/:__span-0-559) [ 2001 0 R /XYZ 60.307257 476.215878 0 ] (Code/Window/:__span-0-56) [ 1979 0 R /XYZ 60.307257 637.020102 0 ] (Code/Window/:__span-0-560) [ 2001 0 R /XYZ 60.307257 462.815526 0 ] (Code/Window/:__span-0-561) [ 2001 0 R /XYZ 60.307257 449.415174 0 ] (Code/Window/:__span-0-562) [ 2001 0 R /XYZ 60.307257 436.014822 0 ] (Code/Window/:__span-0-563) [ 2001 0 R /XYZ 60.307257 422.614470 0 ] (Code/Window/:__span-0-564) [ 2001 0 R /XYZ 60.307257 409.214118 0 ] (Code/Window/:__span-0-565) [ 2001 0 R /XYZ 60.307257 395.813766 0 ] (Code/Window/:__span-0-566) [ 2001 0 R /XYZ 60.307257 382.413414 0 ] (Code/Window/:__span-0-567) [ 2001 0 R /XYZ 60.307257 369.013062 0 ] (Code/Window/:__span-0-568) [ 2001 0 R /XYZ 60.307257 355.612710 0 ] (Code/Window/:__span-0-569) [ 2001 0 R /XYZ 60.307257 342.212358 0 ] (Code/Window/:__span-0-57) [ 1979 0 R /XYZ 60.307257 623.619750 0 ] (Code/Window/:__span-0-570) [ 2001 0 R /XYZ 60.307257 328.812006 0 ] (Code/Window/:__span-0-571) [ 2001 0 R /XYZ 60.307257 302.011302 0 ] (Code/Window/:__span-0-572) [ 2001 0 R /XYZ 60.307257 288.610950 0 ] (Code/Window/:__span-0-573) [ 2001 0 R /XYZ 60.307257 275.210598 0 ] (Code/Window/:__span-0-574) [ 2001 0 R /XYZ 60.307257 248.409894 0 ] (Code/Window/:__span-0-575) [ 2001 0 R /XYZ 60.307257 235.009542 0 ] (Code/Window/:__span-0-576) [ 2001 0 R /XYZ 60.307257 208.208838 0 ] (Code/Window/:__span-0-577) [ 2001 0 R /XYZ 60.307257 194.808486 0 ] (Code/Window/:__span-0-578) [ 2001 0 R /XYZ 60.307257 181.408134 0 ] (Code/Window/:__span-0-579) [ 2001 0 R /XYZ 60.307257 168.007782 0 ] (Code/Window/:__span-0-58) [ 1979 0 R /XYZ 60.307257 610.219398 0 ] (Code/Window/:__span-0-580) [ 2001 0 R /XYZ 60.307257 154.607430 0 ] (Code/Window/:__span-0-581) [ 2001 0 R /XYZ 60.307257 141.207078 0 ] (Code/Window/:__span-0-582) [ 2001 0 R /XYZ 60.307257 127.806726 0 ] (Code/Window/:__span-0-583) [ 2001 0 R /XYZ 60.307257 114.406374 0 ] (Code/Window/:__span-0-584) [ 2001 0 R /XYZ 60.307257 101.006022 0 ] (Code/Window/:__span-0-585) [ 2001 0 R /XYZ 60.307257 87.605670 0 ] (Code/Window/:__span-0-586) [ 2003 0 R /XYZ 60.307257 771.023622 0 ] (Code/Window/:__span-0-587) [ 2003 0 R /XYZ 60.307257 757.623270 0 ] (Code/Window/:__span-0-588) [ 2003 0 R /XYZ 60.307257 744.222918 0 ] (Code/Window/:__span-0-589) [ 2003 0 R /XYZ 60.307257 730.822566 0 ] (Code/Window/:__span-0-59) [ 1979 0 R /XYZ 60.307257 596.819046 0 ] (Code/Window/:__span-0-590) [ 2003 0 R /XYZ 60.307257 717.422214 0 ] (Code/Window/:__span-0-591) [ 2003 0 R /XYZ 60.307257 704.021862 0 ] (Code/Window/:__span-0-592) [ 2003 0 R /XYZ 60.307257 690.621510 0 ] (Code/Window/:__span-0-593) [ 2003 0 R /XYZ 60.307257 677.221158 0 ] (Code/Window/:__span-0-594) [ 2003 0 R /XYZ 60.307257 663.820806 0 ] (Code/Window/:__span-0-595) [ 2003 0 R /XYZ 60.307257 650.420454 0 ] (Code/Window/:__span-0-596) [ 2003 0 R /XYZ 60.307257 637.020102 0 ] (Code/Window/:__span-0-597) [ 2003 0 R /XYZ 60.307257 623.619750 0 ] (Code/Window/:__span-0-598) [ 2003 0 R /XYZ 60.307257 610.219398 0 ] (Code/Window/:__span-0-599) [ 2003 0 R /XYZ 60.307257 596.819046 0 ] (Code/Window/:__span-0-6) [ 1977 0 R /XYZ 60.307257 640.633662 0 ] (Code/Window/:__span-0-60) [ 1979 0 R /XYZ 60.307257 570.018342 0 ] (Code/Window/:__span-0-600) [ 2003 0 R /XYZ 60.307257 583.418694 0 ] (Code/Window/:__span-0-601) [ 2003 0 R /XYZ 60.307257 570.018342 0 ] (Code/Window/:__span-0-602) [ 2003 0 R /XYZ 60.307257 556.617990 0 ] (Code/Window/:__span-0-603) [ 2003 0 R /XYZ 60.307257 529.817286 0 ] (Code/Window/:__span-0-604) [ 2003 0 R /XYZ 60.307257 503.016582 0 ] (Code/Window/:__span-0-605) [ 2003 0 R /XYZ 60.307257 489.616230 0 ] (Code/Window/:__span-0-606) [ 2003 0 R /XYZ 60.307257 462.815526 0 ] (Code/Window/:__span-0-607) [ 2003 0 R /XYZ 60.307257 449.415174 0 ] (Code/Window/:__span-0-608) [ 2003 0 R /XYZ 60.307257 422.614470 0 ] (Code/Window/:__span-0-609) [ 2003 0 R /XYZ 60.307257 409.214118 0 ] (Code/Window/:__span-0-61) [ 1979 0 R /XYZ 60.307257 556.617990 0 ] (Code/Window/:__span-0-610) [ 2003 0 R /XYZ 60.307257 382.413414 0 ] (Code/Window/:__span-0-611) [ 2003 0 R /XYZ 60.307257 369.013062 0 ] (Code/Window/:__span-0-612) [ 2003 0 R /XYZ 60.307257 355.612710 0 ] (Code/Window/:__span-0-613) [ 2003 0 R /XYZ 60.307257 342.212358 0 ] (Code/Window/:__span-0-614) [ 2003 0 R /XYZ 60.307257 328.812006 0 ] (Code/Window/:__span-0-615) [ 2003 0 R /XYZ 60.307257 315.411654 0 ] (Code/Window/:__span-0-616) [ 2003 0 R /XYZ 60.307257 302.011302 0 ] (Code/Window/:__span-0-617) [ 2003 0 R /XYZ 60.307257 288.610950 0 ] (Code/Window/:__span-0-618) [ 2003 0 R /XYZ 60.307257 275.210598 0 ] (Code/Window/:__span-0-619) [ 2003 0 R /XYZ 60.307257 248.409894 0 ] (Code/Window/:__span-0-62) [ 1979 0 R /XYZ 60.307257 543.217638 0 ] (Code/Window/:__span-0-620) [ 2003 0 R /XYZ 60.307257 235.009542 0 ] (Code/Window/:__span-0-621) [ 2003 0 R /XYZ 60.307257 221.609190 0 ] (Code/Window/:__span-0-622) [ 2003 0 R /XYZ 60.307257 208.208838 0 ] (Code/Window/:__span-0-623) [ 2003 0 R /XYZ 60.307257 194.808486 0 ] (Code/Window/:__span-0-624) [ 2003 0 R /XYZ 60.307257 181.408134 0 ] (Code/Window/:__span-0-625) [ 2003 0 R /XYZ 60.307257 168.007782 0 ] (Code/Window/:__span-0-626) [ 2003 0 R /XYZ 60.307257 154.607430 0 ] (Code/Window/:__span-0-627) [ 2003 0 R /XYZ 60.307257 141.207078 0 ] (Code/Window/:__span-0-628) [ 2003 0 R /XYZ 60.307257 127.806726 0 ] (Code/Window/:__span-0-629) [ 2003 0 R /XYZ 60.307257 114.406374 0 ] (Code/Window/:__span-0-63) [ 1979 0 R /XYZ 60.307257 529.817286 0 ] (Code/Window/:__span-0-630) [ 2003 0 R /XYZ 60.307257 101.006022 0 ] (Code/Window/:__span-0-631) [ 2003 0 R /XYZ 60.307257 87.605670 0 ] (Code/Window/:__span-0-632) [ 2005 0 R /XYZ 60.307257 771.023622 0 ] (Code/Window/:__span-0-633) [ 2005 0 R /XYZ 60.307257 757.623270 0 ] (Code/Window/:__span-0-634) [ 2005 0 R /XYZ 60.307257 744.222918 0 ] (Code/Window/:__span-0-635) [ 2005 0 R /XYZ 60.307257 730.822566 0 ] (Code/Window/:__span-0-636) [ 2005 0 R /XYZ 60.307257 717.422214 0 ] (Code/Window/:__span-0-637) [ 2005 0 R /XYZ 60.307257 704.021862 0 ] (Code/Window/:__span-0-638) [ 2005 0 R /XYZ 60.307257 690.621510 0 ] (Code/Window/:__span-0-639) [ 2005 0 R /XYZ 60.307257 677.221158 0 ] (Code/Window/:__span-0-64) [ 1979 0 R /XYZ 60.307257 516.416934 0 ] (Code/Window/:__span-0-640) [ 2005 0 R /XYZ 60.307257 663.820806 0 ] (Code/Window/:__span-0-641) [ 2005 0 R /XYZ 60.307257 650.420454 0 ] (Code/Window/:__span-0-642) [ 2005 0 R /XYZ 60.307257 637.020102 0 ] (Code/Window/:__span-0-643) [ 2005 0 R /XYZ 60.307257 623.619750 0 ] (Code/Window/:__span-0-644) [ 2005 0 R /XYZ 60.307257 610.219398 0 ] (Code/Window/:__span-0-645) [ 2005 0 R /XYZ 60.307257 596.819046 0 ] (Code/Window/:__span-0-646) [ 2005 0 R /XYZ 60.307257 583.418694 0 ] (Code/Window/:__span-0-647) [ 2005 0 R /XYZ 60.307257 570.018342 0 ] (Code/Window/:__span-0-648) [ 2005 0 R /XYZ 60.307257 556.617990 0 ] (Code/Window/:__span-0-649) [ 2005 0 R /XYZ 60.307257 543.217638 0 ] (Code/Window/:__span-0-65) [ 1979 0 R /XYZ 60.307257 503.016582 0 ] (Code/Window/:__span-0-650) [ 2005 0 R /XYZ 60.307257 529.817286 0 ] (Code/Window/:__span-0-651) [ 2005 0 R /XYZ 60.307257 516.416934 0 ] (Code/Window/:__span-0-652) [ 2005 0 R /XYZ 60.307257 503.016582 0 ] (Code/Window/:__span-0-653) [ 2005 0 R /XYZ 60.307257 489.616230 0 ] (Code/Window/:__span-0-654) [ 2005 0 R /XYZ 60.307257 476.215878 0 ] (Code/Window/:__span-0-655) [ 2005 0 R /XYZ 60.307257 462.815526 0 ] (Code/Window/:__span-0-656) [ 2005 0 R /XYZ 60.307257 449.415174 0 ] (Code/Window/:__span-0-657) [ 2005 0 R /XYZ 60.307257 436.014822 0 ] (Code/Window/:__span-0-658) [ 2005 0 R /XYZ 60.307257 422.614470 0 ] (Code/Window/:__span-0-659) [ 2005 0 R /XYZ 60.307257 409.214118 0 ] (Code/Window/:__span-0-66) [ 1979 0 R /XYZ 60.307257 489.616230 0 ] (Code/Window/:__span-0-660) [ 2005 0 R /XYZ 60.307257 395.813766 0 ] (Code/Window/:__span-0-661) [ 2005 0 R /XYZ 60.307257 382.413414 0 ] (Code/Window/:__span-0-662) [ 2005 0 R /XYZ 60.307257 369.013062 0 ] (Code/Window/:__span-0-663) [ 2005 0 R /XYZ 60.307257 355.612710 0 ] (Code/Window/:__span-0-664) [ 2005 0 R /XYZ 60.307257 342.212358 0 ] (Code/Window/:__span-0-665) [ 2005 0 R /XYZ 60.307257 328.812006 0 ] (Code/Window/:__span-0-666) [ 2005 0 R /XYZ 60.307257 315.411654 0 ] (Code/Window/:__span-0-667) [ 2005 0 R /XYZ 60.307257 302.011302 0 ] (Code/Window/:__span-0-668) [ 2005 0 R /XYZ 60.307257 288.610950 0 ] (Code/Window/:__span-0-669) [ 2005 0 R /XYZ 60.307257 275.210598 0 ] (Code/Window/:__span-0-67) [ 1979 0 R /XYZ 60.307257 462.815526 0 ] (Code/Window/:__span-0-670) [ 2005 0 R /XYZ 60.307257 248.409894 0 ] (Code/Window/:__span-0-671) [ 2005 0 R /XYZ 60.307257 235.009542 0 ] (Code/Window/:__span-0-672) [ 2005 0 R /XYZ 60.307257 221.609190 0 ] (Code/Window/:__span-0-673) [ 2005 0 R /XYZ 60.307257 208.208838 0 ] (Code/Window/:__span-0-674) [ 2005 0 R /XYZ 60.307257 194.808486 0 ] (Code/Window/:__span-0-675) [ 2005 0 R /XYZ 60.307257 181.408134 0 ] (Code/Window/:__span-0-676) [ 2005 0 R /XYZ 60.307257 168.007782 0 ] (Code/Window/:__span-0-68) [ 1979 0 R /XYZ 60.307257 449.415174 0 ] (Code/Window/:__span-0-69) [ 1979 0 R /XYZ 60.307257 436.014822 0 ] (Code/Window/:__span-0-7) [ 1977 0 R /XYZ 60.307257 627.233310 0 ] (Code/Window/:__span-0-70) [ 1979 0 R /XYZ 60.307257 422.614470 0 ] (Code/Window/:__span-0-71) [ 1979 0 R /XYZ 60.307257 409.214118 0 ] (Code/Window/:__span-0-72) [ 1979 0 R /XYZ 60.307257 395.813766 0 ] (Code/Window/:__span-0-73) [ 1979 0 R /XYZ 60.307257 382.413414 0 ] (Code/Window/:__span-0-74) [ 1979 0 R /XYZ 60.307257 369.013062 0 ] (Code/Window/:__span-0-75) [ 1979 0 R /XYZ 60.307257 355.612710 0 ] (Code/Window/:__span-0-76) [ 1979 0 R /XYZ 60.307257 342.212358 0 ] (Code/Window/:__span-0-77) [ 1979 0 R /XYZ 60.307257 328.812006 0 ] (Code/Window/:__span-0-78) [ 1979 0 R /XYZ 60.307257 315.411654 0 ] (Code/Window/:__span-0-79) [ 1979 0 R /XYZ 60.307257 302.011302 0 ] (Code/Window/:__span-0-8) [ 1977 0 R /XYZ 60.307257 613.832958 0 ] (Code/Window/:__span-0-80) [ 1979 0 R /XYZ 60.307257 288.610950 0 ] (Code/Window/:__span-0-81) [ 1979 0 R /XYZ 60.307257 275.210598 0 ] (Code/Window/:__span-0-82) [ 1979 0 R /XYZ 60.307257 261.810246 0 ] (Code/Window/:__span-0-83) [ 1979 0 R /XYZ 60.307257 248.409894 0 ] (Code/Window/:__span-0-84) [ 1979 0 R /XYZ 60.307257 235.009542 0 ] (Code/Window/:__span-0-85) [ 1979 0 R /XYZ 60.307257 221.609190 0 ] (Code/Window/:__span-0-86) [ 1979 0 R /XYZ 60.307257 208.208838 0 ] (Code/Window/:__span-0-87) [ 1979 0 R /XYZ 60.307257 194.808486 0 ] (Code/Window/:__span-0-88) [ 1979 0 R /XYZ 60.307257 181.408134 0 ] (Code/Window/:__span-0-89) [ 1979 0 R /XYZ 60.307257 168.007782 0 ] (Code/Window/:__span-0-9) [ 1977 0 R /XYZ 60.307257 600.432606 0 ] (Code/Window/:__span-0-90) [ 1979 0 R /XYZ 60.307257 154.607430 0 ] (Code/Window/:__span-0-91) [ 1979 0 R /XYZ 60.307257 141.207078 0 ] (Code/Window/:__span-0-92) [ 1979 0 R /XYZ 60.307257 114.406374 0 ] (Code/Window/:__span-0-93) [ 1979 0 R /XYZ 60.307257 101.006022 0 ] (Code/Window/:__span-0-94) [ 1981 0 R /XYZ 60.307257 771.023622 0 ] (Code/Window/:__span-0-95) [ 1981 0 R /XYZ 60.307257 757.623270 0 ] (Code/Window/:__span-0-96) [ 1981 0 R /XYZ 60.307257 744.222918 0 ] (Code/Window/:__span-0-97) [ 1981 0 R /XYZ 60.307257 730.822566 0 ] (Code/Window/:__span-0-98) [ 1981 0 R /XYZ 60.307257 717.422214 0 ] (Code/Window/:__span-0-99) [ 1981 0 R /XYZ 60.307257 704.021862 0 ] (Code/Window/:windowcs) [ 1977 0 R /XYZ 39.386457 747.563622 0 ] (Code/Zone/:) [ 1863 0 R /XYZ 39.386457 747.563622 0 ] (Code/Zone/:__span-0-1) [ 1863 0 R /XYZ 60.307257 707.635422 0 ] (Code/Zone/:__span-0-10) [ 1863 0 R /XYZ 60.307257 573.631902 0 ] (Code/Zone/:__span-0-100) [ 1867 0 R /XYZ 60.307257 623.619750 0 ] (Code/Zone/:__span-0-101) [ 1867 0 R /XYZ 60.307257 610.219398 0 ] (Code/Zone/:__span-0-102) [ 1867 0 R /XYZ 60.307257 583.418694 0 ] (Code/Zone/:__span-0-103) [ 1867 0 R /XYZ 60.307257 570.018342 0 ] (Code/Zone/:__span-0-104) [ 1867 0 R /XYZ 60.307257 556.617990 0 ] (Code/Zone/:__span-0-105) [ 1867 0 R /XYZ 60.307257 543.217638 0 ] (Code/Zone/:__span-0-106) [ 1867 0 R /XYZ 60.307257 516.416934 0 ] (Code/Zone/:__span-0-107) [ 1867 0 R /XYZ 60.307257 503.016582 0 ] (Code/Zone/:__span-0-108) [ 1867 0 R /XYZ 60.307257 489.616230 0 ] (Code/Zone/:__span-0-109) [ 1867 0 R /XYZ 60.307257 476.215878 0 ] (Code/Zone/:__span-0-11) [ 1863 0 R /XYZ 60.307257 560.231550 0 ] (Code/Zone/:__span-0-110) [ 1867 0 R /XYZ 60.307257 462.815526 0 ] (Code/Zone/:__span-0-111) [ 1867 0 R /XYZ 60.307257 449.415174 0 ] (Code/Zone/:__span-0-112) [ 1867 0 R /XYZ 60.307257 436.014822 0 ] (Code/Zone/:__span-0-113) [ 1867 0 R /XYZ 60.307257 422.614470 0 ] (Code/Zone/:__span-0-114) [ 1867 0 R /XYZ 60.307257 409.214118 0 ] (Code/Zone/:__span-0-115) [ 1867 0 R /XYZ 60.307257 395.813766 0 ] (Code/Zone/:__span-0-116) [ 1867 0 R /XYZ 60.307257 382.413414 0 ] (Code/Zone/:__span-0-117) [ 1867 0 R /XYZ 60.307257 369.013062 0 ] (Code/Zone/:__span-0-118) [ 1867 0 R /XYZ 60.307257 355.612710 0 ] (Code/Zone/:__span-0-119) [ 1867 0 R /XYZ 60.307257 342.212358 0 ] (Code/Zone/:__span-0-12) [ 1863 0 R /XYZ 60.307257 546.831198 0 ] (Code/Zone/:__span-0-120) [ 1867 0 R /XYZ 60.307257 328.812006 0 ] (Code/Zone/:__span-0-121) [ 1867 0 R /XYZ 60.307257 315.411654 0 ] (Code/Zone/:__span-0-122) [ 1867 0 R /XYZ 60.307257 302.011302 0 ] (Code/Zone/:__span-0-123) [ 1867 0 R /XYZ 60.307257 288.610950 0 ] (Code/Zone/:__span-0-124) [ 1867 0 R /XYZ 60.307257 275.210598 0 ] (Code/Zone/:__span-0-125) [ 1867 0 R /XYZ 60.307257 261.810246 0 ] (Code/Zone/:__span-0-126) [ 1867 0 R /XYZ 60.307257 248.409894 0 ] (Code/Zone/:__span-0-127) [ 1867 0 R /XYZ 60.307257 235.009542 0 ] (Code/Zone/:__span-0-128) [ 1867 0 R /XYZ 60.307257 221.609190 0 ] (Code/Zone/:__span-0-129) [ 1867 0 R /XYZ 60.307257 208.208838 0 ] (Code/Zone/:__span-0-13) [ 1863 0 R /XYZ 60.307257 533.430846 0 ] (Code/Zone/:__span-0-130) [ 1867 0 R /XYZ 60.307257 194.808486 0 ] (Code/Zone/:__span-0-131) [ 1867 0 R /XYZ 60.307257 181.408134 0 ] (Code/Zone/:__span-0-132) [ 1867 0 R /XYZ 60.307257 168.007782 0 ] (Code/Zone/:__span-0-133) [ 1867 0 R /XYZ 60.307257 154.607430 0 ] (Code/Zone/:__span-0-134) [ 1867 0 R /XYZ 60.307257 141.207078 0 ] (Code/Zone/:__span-0-135) [ 1867 0 R /XYZ 60.307257 127.806726 0 ] (Code/Zone/:__span-0-136) [ 1867 0 R /XYZ 60.307257 114.406374 0 ] (Code/Zone/:__span-0-137) [ 1867 0 R /XYZ 60.307257 101.006022 0 ] (Code/Zone/:__span-0-138) [ 1867 0 R /XYZ 60.307257 87.605670 0 ] (Code/Zone/:__span-0-139) [ 1869 0 R /XYZ 60.307257 771.023622 0 ] (Code/Zone/:__span-0-14) [ 1863 0 R /XYZ 60.307257 520.030494 0 ] (Code/Zone/:__span-0-140) [ 1869 0 R /XYZ 60.307257 757.623270 0 ] (Code/Zone/:__span-0-141) [ 1869 0 R /XYZ 60.307257 744.222918 0 ] (Code/Zone/:__span-0-142) [ 1869 0 R /XYZ 60.307257 730.822566 0 ] (Code/Zone/:__span-0-143) [ 1869 0 R /XYZ 60.307257 717.422214 0 ] (Code/Zone/:__span-0-144) [ 1869 0 R /XYZ 60.307257 690.621510 0 ] (Code/Zone/:__span-0-145) [ 1869 0 R /XYZ 60.307257 677.221158 0 ] (Code/Zone/:__span-0-146) [ 1869 0 R /XYZ 60.307257 663.820806 0 ] (Code/Zone/:__span-0-147) [ 1869 0 R /XYZ 60.307257 650.420454 0 ] (Code/Zone/:__span-0-148) [ 1869 0 R /XYZ 60.307257 623.619750 0 ] (Code/Zone/:__span-0-149) [ 1869 0 R /XYZ 60.307257 596.819046 0 ] (Code/Zone/:__span-0-15) [ 1863 0 R /XYZ 60.307257 506.630142 0 ] (Code/Zone/:__span-0-150) [ 1869 0 R /XYZ 60.307257 583.418694 0 ] (Code/Zone/:__span-0-151) [ 1869 0 R /XYZ 60.307257 570.018342 0 ] (Code/Zone/:__span-0-152) [ 1869 0 R /XYZ 60.307257 556.617990 0 ] (Code/Zone/:__span-0-153) [ 1869 0 R /XYZ 60.307257 529.817286 0 ] (Code/Zone/:__span-0-154) [ 1869 0 R /XYZ 60.307257 516.416934 0 ] (Code/Zone/:__span-0-155) [ 1869 0 R /XYZ 60.307257 503.016582 0 ] (Code/Zone/:__span-0-156) [ 1869 0 R /XYZ 60.307257 489.616230 0 ] (Code/Zone/:__span-0-157) [ 1869 0 R /XYZ 60.307257 476.215878 0 ] (Code/Zone/:__span-0-158) [ 1869 0 R /XYZ 60.307257 462.815526 0 ] (Code/Zone/:__span-0-159) [ 1869 0 R /XYZ 60.307257 449.415174 0 ] (Code/Zone/:__span-0-16) [ 1863 0 R /XYZ 60.307257 493.229790 0 ] (Code/Zone/:__span-0-160) [ 1869 0 R /XYZ 60.307257 436.014822 0 ] (Code/Zone/:__span-0-161) [ 1869 0 R /XYZ 60.307257 422.614470 0 ] (Code/Zone/:__span-0-162) [ 1869 0 R /XYZ 60.307257 409.214118 0 ] (Code/Zone/:__span-0-163) [ 1869 0 R /XYZ 60.307257 395.813766 0 ] (Code/Zone/:__span-0-164) [ 1869 0 R /XYZ 60.307257 382.413414 0 ] (Code/Zone/:__span-0-165) [ 1869 0 R /XYZ 60.307257 369.013062 0 ] (Code/Zone/:__span-0-166) [ 1869 0 R /XYZ 60.307257 355.612710 0 ] (Code/Zone/:__span-0-167) [ 1869 0 R /XYZ 60.307257 342.212358 0 ] (Code/Zone/:__span-0-168) [ 1869 0 R /XYZ 60.307257 328.812006 0 ] (Code/Zone/:__span-0-169) [ 1869 0 R /XYZ 60.307257 315.411654 0 ] (Code/Zone/:__span-0-17) [ 1863 0 R /XYZ 60.307257 479.829438 0 ] (Code/Zone/:__span-0-170) [ 1869 0 R /XYZ 60.307257 302.011302 0 ] (Code/Zone/:__span-0-171) [ 1869 0 R /XYZ 60.307257 288.610950 0 ] (Code/Zone/:__span-0-172) [ 1869 0 R /XYZ 60.307257 261.810246 0 ] (Code/Zone/:__span-0-173) [ 1869 0 R /XYZ 60.307257 248.409894 0 ] (Code/Zone/:__span-0-174) [ 1869 0 R /XYZ 60.307257 235.009542 0 ] (Code/Zone/:__span-0-175) [ 1869 0 R /XYZ 60.307257 221.609190 0 ] (Code/Zone/:__span-0-176) [ 1869 0 R /XYZ 60.307257 181.408134 0 ] (Code/Zone/:__span-0-177) [ 1869 0 R /XYZ 60.307257 168.007782 0 ] (Code/Zone/:__span-0-178) [ 1869 0 R /XYZ 60.307257 154.607430 0 ] (Code/Zone/:__span-0-179) [ 1869 0 R /XYZ 60.307257 141.207078 0 ] (Code/Zone/:__span-0-18) [ 1863 0 R /XYZ 60.307257 466.429086 0 ] (Code/Zone/:__span-0-180) [ 1869 0 R /XYZ 60.307257 127.806726 0 ] (Code/Zone/:__span-0-181) [ 1869 0 R /XYZ 60.307257 114.406374 0 ] (Code/Zone/:__span-0-182) [ 1869 0 R /XYZ 60.307257 101.006022 0 ] (Code/Zone/:__span-0-183) [ 1869 0 R /XYZ 60.307257 87.605670 0 ] (Code/Zone/:__span-0-184) [ 1871 0 R /XYZ 60.307257 771.023622 0 ] (Code/Zone/:__span-0-185) [ 1871 0 R /XYZ 60.307257 757.623270 0 ] (Code/Zone/:__span-0-19) [ 1863 0 R /XYZ 60.307257 453.028734 0 ] (Code/Zone/:__span-0-2) [ 1863 0 R /XYZ 60.307257 694.235070 0 ] (Code/Zone/:__span-0-20) [ 1863 0 R /XYZ 60.307257 439.628382 0 ] (Code/Zone/:__span-0-21) [ 1863 0 R /XYZ 60.307257 426.228030 0 ] (Code/Zone/:__span-0-22) [ 1863 0 R /XYZ 60.307257 412.827678 0 ] (Code/Zone/:__span-0-23) [ 1863 0 R /XYZ 60.307257 399.427326 0 ] (Code/Zone/:__span-0-24) [ 1863 0 R /XYZ 60.307257 386.026974 0 ] (Code/Zone/:__span-0-25) [ 1863 0 R /XYZ 60.307257 372.626622 0 ] (Code/Zone/:__span-0-26) [ 1863 0 R /XYZ 60.307257 359.226270 0 ] (Code/Zone/:__span-0-27) [ 1863 0 R /XYZ 60.307257 345.825918 0 ] (Code/Zone/:__span-0-28) [ 1863 0 R /XYZ 60.307257 332.425566 0 ] (Code/Zone/:__span-0-29) [ 1863 0 R /XYZ 60.307257 319.025214 0 ] (Code/Zone/:__span-0-3) [ 1863 0 R /XYZ 60.307257 680.834718 0 ] (Code/Zone/:__span-0-30) [ 1863 0 R /XYZ 60.307257 305.624862 0 ] (Code/Zone/:__span-0-31) [ 1863 0 R /XYZ 60.307257 292.224510 0 ] (Code/Zone/:__span-0-32) [ 1863 0 R /XYZ 60.307257 265.423806 0 ] (Code/Zone/:__span-0-33) [ 1863 0 R /XYZ 60.307257 252.023454 0 ] (Code/Zone/:__span-0-34) [ 1863 0 R /XYZ 60.307257 238.623102 0 ] (Code/Zone/:__span-0-35) [ 1863 0 R /XYZ 60.307257 225.222750 0 ] (Code/Zone/:__span-0-36) [ 1863 0 R /XYZ 60.307257 211.822398 0 ] (Code/Zone/:__span-0-37) [ 1863 0 R /XYZ 60.307257 198.422046 0 ] (Code/Zone/:__span-0-38) [ 1863 0 R /XYZ 60.307257 185.021694 0 ] (Code/Zone/:__span-0-39) [ 1863 0 R /XYZ 60.307257 171.621342 0 ] (Code/Zone/:__span-0-4) [ 1863 0 R /XYZ 60.307257 667.434366 0 ] (Code/Zone/:__span-0-40) [ 1863 0 R /XYZ 60.307257 158.220990 0 ] (Code/Zone/:__span-0-41) [ 1863 0 R /XYZ 60.307257 131.420286 0 ] (Code/Zone/:__span-0-42) [ 1863 0 R /XYZ 60.307257 118.019934 0 ] (Code/Zone/:__span-0-43) [ 1863 0 R /XYZ 60.307257 104.619582 0 ] (Code/Zone/:__span-0-44) [ 1863 0 R /XYZ 60.307257 91.219230 0 ] (Code/Zone/:__span-0-45) [ 1865 0 R /XYZ 60.307257 771.023622 0 ] (Code/Zone/:__span-0-46) [ 1865 0 R /XYZ 60.307257 757.623270 0 ] (Code/Zone/:__span-0-47) [ 1865 0 R /XYZ 60.307257 744.222918 0 ] (Code/Zone/:__span-0-48) [ 1865 0 R /XYZ 60.307257 730.822566 0 ] (Code/Zone/:__span-0-49) [ 1865 0 R /XYZ 60.307257 717.422214 0 ] (Code/Zone/:__span-0-5) [ 1863 0 R /XYZ 60.307257 640.633662 0 ] (Code/Zone/:__span-0-50) [ 1865 0 R /XYZ 60.307257 704.021862 0 ] (Code/Zone/:__span-0-51) [ 1865 0 R /XYZ 60.307257 690.621510 0 ] (Code/Zone/:__span-0-52) [ 1865 0 R /XYZ 60.307257 677.221158 0 ] (Code/Zone/:__span-0-53) [ 1865 0 R /XYZ 60.307257 650.420454 0 ] (Code/Zone/:__span-0-54) [ 1865 0 R /XYZ 60.307257 637.020102 0 ] (Code/Zone/:__span-0-55) [ 1865 0 R /XYZ 60.307257 610.219398 0 ] (Code/Zone/:__span-0-56) [ 1865 0 R /XYZ 60.307257 596.819046 0 ] (Code/Zone/:__span-0-57) [ 1865 0 R /XYZ 60.307257 583.418694 0 ] (Code/Zone/:__span-0-58) [ 1865 0 R /XYZ 60.307257 570.018342 0 ] (Code/Zone/:__span-0-59) [ 1865 0 R /XYZ 60.307257 556.617990 0 ] (Code/Zone/:__span-0-6) [ 1863 0 R /XYZ 60.307257 627.233310 0 ] (Code/Zone/:__span-0-60) [ 1865 0 R /XYZ 60.307257 543.217638 0 ] (Code/Zone/:__span-0-61) [ 1865 0 R /XYZ 60.307257 529.817286 0 ] (Code/Zone/:__span-0-62) [ 1865 0 R /XYZ 60.307257 503.016582 0 ] (Code/Zone/:__span-0-63) [ 1865 0 R /XYZ 60.307257 489.616230 0 ] (Code/Zone/:__span-0-64) [ 1865 0 R /XYZ 60.307257 476.215878 0 ] (Code/Zone/:__span-0-65) [ 1865 0 R /XYZ 60.307257 462.815526 0 ] (Code/Zone/:__span-0-66) [ 1865 0 R /XYZ 60.307257 449.415174 0 ] (Code/Zone/:__span-0-67) [ 1865 0 R /XYZ 60.307257 436.014822 0 ] (Code/Zone/:__span-0-68) [ 1865 0 R /XYZ 60.307257 422.614470 0 ] (Code/Zone/:__span-0-69) [ 1865 0 R /XYZ 60.307257 395.813766 0 ] (Code/Zone/:__span-0-7) [ 1863 0 R /XYZ 60.307257 613.832958 0 ] (Code/Zone/:__span-0-70) [ 1865 0 R /XYZ 60.307257 382.413414 0 ] (Code/Zone/:__span-0-71) [ 1865 0 R /XYZ 60.307257 369.013062 0 ] (Code/Zone/:__span-0-72) [ 1865 0 R /XYZ 60.307257 355.612710 0 ] (Code/Zone/:__span-0-73) [ 1865 0 R /XYZ 60.307257 342.212358 0 ] (Code/Zone/:__span-0-74) [ 1865 0 R /XYZ 60.307257 328.812006 0 ] (Code/Zone/:__span-0-75) [ 1865 0 R /XYZ 60.307257 315.411654 0 ] (Code/Zone/:__span-0-76) [ 1865 0 R /XYZ 60.307257 302.011302 0 ] (Code/Zone/:__span-0-77) [ 1865 0 R /XYZ 60.307257 288.610950 0 ] (Code/Zone/:__span-0-78) [ 1865 0 R /XYZ 60.307257 275.210598 0 ] (Code/Zone/:__span-0-79) [ 1865 0 R /XYZ 60.307257 261.810246 0 ] (Code/Zone/:__span-0-8) [ 1863 0 R /XYZ 60.307257 600.432606 0 ] (Code/Zone/:__span-0-80) [ 1865 0 R /XYZ 60.307257 248.409894 0 ] (Code/Zone/:__span-0-81) [ 1865 0 R /XYZ 60.307257 235.009542 0 ] (Code/Zone/:__span-0-82) [ 1865 0 R /XYZ 60.307257 221.609190 0 ] (Code/Zone/:__span-0-83) [ 1865 0 R /XYZ 60.307257 208.208838 0 ] (Code/Zone/:__span-0-84) [ 1865 0 R /XYZ 60.307257 194.808486 0 ] (Code/Zone/:__span-0-85) [ 1865 0 R /XYZ 60.307257 181.408134 0 ] (Code/Zone/:__span-0-86) [ 1865 0 R /XYZ 60.307257 168.007782 0 ] (Code/Zone/:__span-0-87) [ 1865 0 R /XYZ 60.307257 154.607430 0 ] (Code/Zone/:__span-0-88) [ 1865 0 R /XYZ 60.307257 141.207078 0 ] (Code/Zone/:__span-0-89) [ 1865 0 R /XYZ 60.307257 127.806726 0 ] (Code/Zone/:__span-0-9) [ 1863 0 R /XYZ 60.307257 587.032254 0 ] (Code/Zone/:__span-0-90) [ 1865 0 R /XYZ 60.307257 101.006022 0 ] (Code/Zone/:__span-0-91) [ 1865 0 R /XYZ 60.307257 87.605670 0 ] (Code/Zone/:__span-0-92) [ 1867 0 R /XYZ 60.307257 757.623270 0 ] (Code/Zone/:__span-0-93) [ 1867 0 R /XYZ 60.307257 730.822566 0 ] (Code/Zone/:__span-0-94) [ 1867 0 R /XYZ 60.307257 717.422214 0 ] (Code/Zone/:__span-0-95) [ 1867 0 R /XYZ 60.307257 704.021862 0 ] (Code/Zone/:__span-0-96) [ 1867 0 R /XYZ 60.307257 690.621510 0 ] (Code/Zone/:__span-0-97) [ 1867 0 R /XYZ 60.307257 677.221158 0 ] (Code/Zone/:__span-0-98) [ 1867 0 R /XYZ 60.307257 663.820806 0 ] (Code/Zone/:__span-0-99) [ 1867 0 R /XYZ 60.307257 650.420454 0 ] (Code/Zone/:zonecs) [ 1863 0 R /XYZ 39.386457 747.563622 0 ] (Code/recoverCookiesCSV/:) [ 2007 0 R /XYZ 39.386457 747.563622 0 ] (Code/recoverCookiesCSV/:__span-0-1) [ 2007 0 R /XYZ 60.307257 707.635422 0 ] (Code/recoverCookiesCSV/:__span-0-10) [ 2007 0 R /XYZ 60.307257 546.831198 0 ] (Code/recoverCookiesCSV/:__span-0-11) [ 2007 0 R /XYZ 60.307257 533.430846 0 ] (Code/recoverCookiesCSV/:__span-0-12) [ 2007 0 R /XYZ 60.307257 520.030494 0 ] (Code/recoverCookiesCSV/:__span-0-13) [ 2007 0 R /XYZ 60.307257 506.630142 0 ] (Code/recoverCookiesCSV/:__span-0-14) [ 2007 0 R /XYZ 60.307257 493.229790 0 ] (Code/recoverCookiesCSV/:__span-0-15) [ 2007 0 R /XYZ 60.307257 479.829438 0 ] (Code/recoverCookiesCSV/:__span-0-16) [ 2007 0 R /XYZ 60.307257 466.429086 0 ] (Code/recoverCookiesCSV/:__span-0-17) [ 2007 0 R /XYZ 60.307257 453.028734 0 ] (Code/recoverCookiesCSV/:__span-0-18) [ 2007 0 R /XYZ 60.307257 439.628382 0 ] (Code/recoverCookiesCSV/:__span-0-19) [ 2007 0 R /XYZ 60.307257 426.228030 0 ] (Code/recoverCookiesCSV/:__span-0-2) [ 2007 0 R /XYZ 60.307257 694.235070 0 ] (Code/recoverCookiesCSV/:__span-0-20) [ 2007 0 R /XYZ 60.307257 412.827678 0 ] (Code/recoverCookiesCSV/:__span-0-21) [ 2007 0 R /XYZ 60.307257 399.427326 0 ] (Code/recoverCookiesCSV/:__span-0-22) [ 2007 0 R /XYZ 60.307257 386.026974 0 ] (Code/recoverCookiesCSV/:__span-0-23) [ 2007 0 R /XYZ 60.307257 372.626622 0 ] (Code/recoverCookiesCSV/:__span-0-24) [ 2007 0 R /XYZ 60.307257 359.226270 0 ] (Code/recoverCookiesCSV/:__span-0-25) [ 2007 0 R /XYZ 60.307257 345.825918 0 ] (Code/recoverCookiesCSV/:__span-0-26) [ 2007 0 R /XYZ 60.307257 332.425566 0 ] (Code/recoverCookiesCSV/:__span-0-27) [ 2007 0 R /XYZ 60.307257 319.025214 0 ] (Code/recoverCookiesCSV/:__span-0-28) [ 2007 0 R /XYZ 60.307257 305.624862 0 ] (Code/recoverCookiesCSV/:__span-0-29) [ 2007 0 R /XYZ 60.307257 292.224510 0 ] (Code/recoverCookiesCSV/:__span-0-3) [ 2007 0 R /XYZ 60.307257 680.834718 0 ] (Code/recoverCookiesCSV/:__span-0-30) [ 2007 0 R /XYZ 60.307257 278.824158 0 ] (Code/recoverCookiesCSV/:__span-0-31) [ 2007 0 R /XYZ 60.307257 265.423806 0 ] (Code/recoverCookiesCSV/:__span-0-32) [ 2007 0 R /XYZ 60.307257 252.023454 0 ] (Code/recoverCookiesCSV/:__span-0-33) [ 2007 0 R /XYZ 60.307257 238.623102 0 ] (Code/recoverCookiesCSV/:__span-0-34) [ 2007 0 R /XYZ 60.307257 225.222750 0 ] (Code/recoverCookiesCSV/:__span-0-35) [ 2007 0 R /XYZ 60.307257 211.822398 0 ] (Code/recoverCookiesCSV/:__span-0-36) [ 2007 0 R /XYZ 60.307257 198.422046 0 ] (Code/recoverCookiesCSV/:__span-0-37) [ 2007 0 R /XYZ 60.307257 185.021694 0 ] (Code/recoverCookiesCSV/:__span-0-38) [ 2007 0 R /XYZ 60.307257 171.621342 0 ] (Code/recoverCookiesCSV/:__span-0-39) [ 2007 0 R /XYZ 60.307257 158.220990 0 ] (Code/recoverCookiesCSV/:__span-0-4) [ 2007 0 R /XYZ 60.307257 654.034014 0 ] (Code/recoverCookiesCSV/:__span-0-40) [ 2007 0 R /XYZ 60.307257 144.820638 0 ] (Code/recoverCookiesCSV/:__span-0-41) [ 2007 0 R /XYZ 60.307257 131.420286 0 ] (Code/recoverCookiesCSV/:__span-0-42) [ 2007 0 R /XYZ 60.307257 118.019934 0 ] (Code/recoverCookiesCSV/:__span-0-43) [ 2007 0 R /XYZ 60.307257 104.619582 0 ] (Code/recoverCookiesCSV/:__span-0-44) [ 2007 0 R /XYZ 60.307257 91.219230 0 ] (Code/recoverCookiesCSV/:__span-0-45) [ 2009 0 R /XYZ 60.307257 771.023622 0 ] (Code/recoverCookiesCSV/:__span-0-46) [ 2009 0 R /XYZ 60.307257 757.623270 0 ] (Code/recoverCookiesCSV/:__span-0-47) [ 2009 0 R /XYZ 60.307257 744.222918 0 ] (Code/recoverCookiesCSV/:__span-0-48) [ 2009 0 R /XYZ 60.307257 730.822566 0 ] (Code/recoverCookiesCSV/:__span-0-49) [ 2009 0 R /XYZ 60.307257 717.422214 0 ] (Code/recoverCookiesCSV/:__span-0-5) [ 2007 0 R /XYZ 60.307257 613.832958 0 ] (Code/recoverCookiesCSV/:__span-0-50) [ 2009 0 R /XYZ 60.307257 704.021862 0 ] (Code/recoverCookiesCSV/:__span-0-51) [ 2009 0 R /XYZ 60.307257 690.621510 0 ] (Code/recoverCookiesCSV/:__span-0-52) [ 2009 0 R /XYZ 60.307257 677.221158 0 ] (Code/recoverCookiesCSV/:__span-0-53) [ 2009 0 R /XYZ 60.307257 663.820806 0 ] (Code/recoverCookiesCSV/:__span-0-54) [ 2009 0 R /XYZ 60.307257 637.020102 0 ] (Code/recoverCookiesCSV/:__span-0-55) [ 2009 0 R /XYZ 60.307257 623.619750 0 ] (Code/recoverCookiesCSV/:__span-0-56) [ 2009 0 R /XYZ 60.307257 610.219398 0 ] (Code/recoverCookiesCSV/:__span-0-57) [ 2009 0 R /XYZ 60.307257 596.819046 0 ] (Code/recoverCookiesCSV/:__span-0-58) [ 2009 0 R /XYZ 60.307257 583.418694 0 ] (Code/recoverCookiesCSV/:__span-0-59) [ 2009 0 R /XYZ 60.307257 570.018342 0 ] (Code/recoverCookiesCSV/:__span-0-6) [ 2007 0 R /XYZ 60.307257 600.432606 0 ] (Code/recoverCookiesCSV/:__span-0-60) [ 2009 0 R /XYZ 60.307257 556.617990 0 ] (Code/recoverCookiesCSV/:__span-0-61) [ 2009 0 R /XYZ 60.307257 543.217638 0 ] (Code/recoverCookiesCSV/:__span-0-62) [ 2009 0 R /XYZ 60.307257 529.817286 0 ] (Code/recoverCookiesCSV/:__span-0-63) [ 2009 0 R /XYZ 60.307257 516.416934 0 ] (Code/recoverCookiesCSV/:__span-0-64) [ 2009 0 R /XYZ 60.307257 503.016582 0 ] (Code/recoverCookiesCSV/:__span-0-65) [ 2009 0 R /XYZ 60.307257 489.616230 0 ] (Code/recoverCookiesCSV/:__span-0-66) [ 2009 0 R /XYZ 60.307257 462.815526 0 ] (Code/recoverCookiesCSV/:__span-0-67) [ 2009 0 R /XYZ 60.307257 449.415174 0 ] (Code/recoverCookiesCSV/:__span-0-68) [ 2009 0 R /XYZ 60.307257 436.014822 0 ] (Code/recoverCookiesCSV/:__span-0-69) [ 2009 0 R /XYZ 60.307257 422.614470 0 ] (Code/recoverCookiesCSV/:__span-0-7) [ 2007 0 R /XYZ 60.307257 587.032254 0 ] (Code/recoverCookiesCSV/:__span-0-70) [ 2009 0 R /XYZ 60.307257 409.214118 0 ] (Code/recoverCookiesCSV/:__span-0-71) [ 2009 0 R /XYZ 60.307257 395.813766 0 ] (Code/recoverCookiesCSV/:__span-0-72) [ 2009 0 R /XYZ 60.307257 382.413414 0 ] (Code/recoverCookiesCSV/:__span-0-73) [ 2009 0 R /XYZ 60.307257 369.013062 0 ] (Code/recoverCookiesCSV/:__span-0-74) [ 2009 0 R /XYZ 60.307257 355.612710 0 ] (Code/recoverCookiesCSV/:__span-0-75) [ 2009 0 R /XYZ 60.307257 342.212358 0 ] (Code/recoverCookiesCSV/:__span-0-76) [ 2009 0 R /XYZ 60.307257 328.812006 0 ] (Code/recoverCookiesCSV/:__span-0-77) [ 2009 0 R /XYZ 60.307257 315.411654 0 ] (Code/recoverCookiesCSV/:__span-0-78) [ 2009 0 R /XYZ 60.307257 302.011302 0 ] (Code/recoverCookiesCSV/:__span-0-79) [ 2009 0 R /XYZ 60.307257 288.610950 0 ] (Code/recoverCookiesCSV/:__span-0-8) [ 2007 0 R /XYZ 60.307257 573.631902 0 ] (Code/recoverCookiesCSV/:__span-0-80) [ 2009 0 R /XYZ 60.307257 275.210598 0 ] (Code/recoverCookiesCSV/:__span-0-81) [ 2009 0 R /XYZ 60.307257 261.810246 0 ] (Code/recoverCookiesCSV/:__span-0-82) [ 2009 0 R /XYZ 60.307257 248.409894 0 ] (Code/recoverCookiesCSV/:__span-0-83) [ 2009 0 R /XYZ 60.307257 235.009542 0 ] (Code/recoverCookiesCSV/:__span-0-9) [ 2007 0 R /XYZ 60.307257 560.231550 0 ] (Code/recoverCookiesCSV/:recovercookiescsvpy) [ 2007 0 R /XYZ 39.386457 747.563622 0 ] (INXWIZI/) [ 1765 0 R /XYZ 39.386457 757.223622 0 ] (INXWIZI/:) [ 1765 0 R /XYZ 39.386457 771.023622 0 ] (ManuelUtilisateur/:) [ 1005 0 R /XYZ 39.386457 771.023622 0 ] (ManuelUtilisateur/:a-quoi-sert-lapp) [ 1005 0 R /XYZ 39.386457 608.700522 0 ] (ManuelUtilisateur/:ajout-du-nom-des-pilotes) [ 1083 0 R /XYZ 42.836457 166.651302 0 ] (ManuelUtilisateur/:battles) [ 1112 0 R /XYZ 39.386457 234.880422 0 ] (ManuelUtilisateur/:boutons) [ 1025 0 R /XYZ 39.386457 309.260718 0 ] (ManuelUtilisateur/:calibration) [ 1044 0 R /XYZ 39.386457 771.023622 0 ] (ManuelUtilisateur/:comment-creer-son-preset) [ 1044 0 R /XYZ 39.386457 269.144922 0 ] (ManuelUtilisateur/:comprendre-les-donnees) [ 1102 0 R /XYZ 39.386457 322.349771 0 ] (ManuelUtilisateur/:creation-des-zones-et-des-windows) [ 1060 0 R /XYZ 42.836457 587.042022 0 ] (ManuelUtilisateur/:driver-infos) [ 1117 0 R /XYZ 39.386457 294.880422 0 ] (ManuelUtilisateur/:erreurs) [ 1135 0 R /XYZ 39.386457 634.955622 0 ] (ManuelUtilisateur/:installation) [ 1005 0 R /XYZ 39.386457 707.865222 0 ] (ManuelUtilisateur/:last-five-laps) [ 1107 0 R /XYZ 39.386457 206.972850 0 ] (ManuelUtilisateur/:live-ranking) [ 1129 0 R /XYZ 39.386457 771.023622 0 ] (ManuelUtilisateur/:load-un-preset-existant) [ 1097 0 R /XYZ 39.386457 189.089256 0 ] (ManuelUtilisateur/:manuel-utilisateur) [ 1005 0 R /XYZ 39.386457 757.223622 0 ] (ManuelUtilisateur/:overtakes) [ 1107 0 R /XYZ 39.386457 307.522050 0 ] (ManuelUtilisateur/:pourquoi-calibrer-lapplication-et-creer-un-preset) [ 1044 0 R /XYZ 39.386457 661.536522 0 ] (ManuelUtilisateur/:recuperer-le-lien-vers-le-flux) [ 1014 0 R /XYZ 39.386457 347.470422 0 ] (ManuelUtilisateur/:sauvegarder-le-nouveau-preset) [ 1097 0 R /XYZ 42.836457 341.110056 0 ] (ManuelUtilisateur/:utilisation-simple) [ 1005 0 R /XYZ 39.386457 391.297422 0 ] (__codelineno-0-1) [ 657 0 R /XYZ 60.307257 407.980122 0 ] (__codelineno-0-10) [ 1138 0 R /XYZ 60.307257 384.489054 0 ] (__codelineno-0-100) [ 1769 0 R /XYZ 60.307257 637.020102 0 ] (__codelineno-0-101) [ 1769 0 R /XYZ 60.307257 623.619750 0 ] (__codelineno-0-102) [ 1769 0 R /XYZ 60.307257 610.219398 0 ] (__codelineno-0-103) [ 1769 0 R /XYZ 60.307257 596.819046 0 ] (__codelineno-0-104) [ 1769 0 R /XYZ 60.307257 583.418694 0 ] (__codelineno-0-105) [ 1769 0 R /XYZ 60.307257 570.018342 0 ] (__codelineno-0-106) [ 1769 0 R /XYZ 60.307257 556.617990 0 ] (__codelineno-0-107) [ 1769 0 R /XYZ 60.307257 543.217638 0 ] (__codelineno-0-108) [ 1769 0 R /XYZ 60.307257 529.817286 0 ] (__codelineno-0-109) [ 1769 0 R /XYZ 60.307257 516.416934 0 ] (__codelineno-0-11) [ 1138 0 R /XYZ 60.307257 371.088702 0 ] (__codelineno-0-110) [ 1769 0 R /XYZ 60.307257 503.016582 0 ] (__codelineno-0-111) [ 1769 0 R /XYZ 60.307257 489.616230 0 ] (__codelineno-0-112) [ 1769 0 R /XYZ 60.307257 476.215878 0 ] (__codelineno-0-113) [ 1769 0 R /XYZ 60.307257 462.815526 0 ] (__codelineno-0-114) [ 1769 0 R /XYZ 60.307257 449.415174 0 ] (__codelineno-0-115) [ 1769 0 R /XYZ 60.307257 436.014822 0 ] (__codelineno-0-116) [ 1769 0 R /XYZ 60.307257 422.614470 0 ] (__codelineno-0-117) [ 1769 0 R /XYZ 60.307257 409.214118 0 ] (__codelineno-0-118) [ 1769 0 R /XYZ 60.307257 395.813766 0 ] (__codelineno-0-119) [ 1769 0 R /XYZ 60.307257 382.413414 0 ] (__codelineno-0-12) [ 1138 0 R /XYZ 60.307257 357.688350 0 ] (__codelineno-0-120) [ 1769 0 R /XYZ 60.307257 369.013062 0 ] (__codelineno-0-121) [ 1769 0 R /XYZ 60.307257 355.612710 0 ] (__codelineno-0-122) [ 1769 0 R /XYZ 60.307257 342.212358 0 ] (__codelineno-0-123) [ 1769 0 R /XYZ 60.307257 328.812006 0 ] (__codelineno-0-124) [ 1769 0 R /XYZ 60.307257 315.411654 0 ] (__codelineno-0-125) [ 1769 0 R /XYZ 60.307257 302.011302 0 ] (__codelineno-0-126) [ 1769 0 R /XYZ 60.307257 288.610950 0 ] (__codelineno-0-127) [ 1769 0 R /XYZ 60.307257 275.210598 0 ] (__codelineno-0-128) [ 1769 0 R /XYZ 60.307257 261.810246 0 ] (__codelineno-0-129) [ 1769 0 R /XYZ 60.307257 248.409894 0 ] (__codelineno-0-13) [ 1138 0 R /XYZ 60.307257 344.287998 0 ] (__codelineno-0-130) [ 1769 0 R /XYZ 60.307257 235.009542 0 ] (__codelineno-0-131) [ 1769 0 R /XYZ 60.307257 221.609190 0 ] (__codelineno-0-132) [ 1769 0 R /XYZ 60.307257 208.208838 0 ] (__codelineno-0-133) [ 1769 0 R /XYZ 60.307257 194.808486 0 ] (__codelineno-0-134) [ 1769 0 R /XYZ 60.307257 181.408134 0 ] (__codelineno-0-135) [ 1769 0 R /XYZ 60.307257 168.007782 0 ] (__codelineno-0-136) [ 1769 0 R /XYZ 60.307257 154.607430 0 ] (__codelineno-0-137) [ 1769 0 R /XYZ 60.307257 141.207078 0 ] (__codelineno-0-138) [ 1769 0 R /XYZ 60.307257 127.806726 0 ] (__codelineno-0-139) [ 1769 0 R /XYZ 60.307257 114.406374 0 ] (__codelineno-0-14) [ 1138 0 R /XYZ 60.307257 330.887646 0 ] (__codelineno-0-140) [ 1769 0 R /XYZ 60.307257 101.006022 0 ] (__codelineno-0-141) [ 1769 0 R /XYZ 60.307257 87.605670 0 ] (__codelineno-0-142) [ 1771 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-0-143) [ 1771 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-0-144) [ 1771 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-0-145) [ 1771 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-0-146) [ 1771 0 R /XYZ 60.307257 704.021862 0 ] (__codelineno-0-147) [ 1771 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-0-148) [ 1771 0 R /XYZ 60.307257 677.221158 0 ] (__codelineno-0-149) [ 1771 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-0-15) [ 1138 0 R /XYZ 60.307257 317.487294 0 ] (__codelineno-0-150) [ 1771 0 R /XYZ 60.307257 650.420454 0 ] (__codelineno-0-151) [ 1771 0 R /XYZ 60.307257 637.020102 0 ] (__codelineno-0-152) [ 1771 0 R /XYZ 60.307257 623.619750 0 ] (__codelineno-0-153) [ 1771 0 R /XYZ 60.307257 610.219398 0 ] (__codelineno-0-154) [ 1771 0 R /XYZ 60.307257 596.819046 0 ] (__codelineno-0-155) [ 1771 0 R /XYZ 60.307257 583.418694 0 ] (__codelineno-0-156) [ 1771 0 R /XYZ 60.307257 570.018342 0 ] (__codelineno-0-157) [ 1771 0 R /XYZ 60.307257 543.217638 0 ] (__codelineno-0-158) [ 1771 0 R /XYZ 60.307257 529.817286 0 ] (__codelineno-0-159) [ 1771 0 R /XYZ 60.307257 516.416934 0 ] (__codelineno-0-16) [ 1138 0 R /XYZ 60.307257 304.086942 0 ] (__codelineno-0-160) [ 1771 0 R /XYZ 60.307257 503.016582 0 ] (__codelineno-0-161) [ 1771 0 R /XYZ 60.307257 476.215878 0 ] (__codelineno-0-162) [ 1771 0 R /XYZ 60.307257 462.815526 0 ] (__codelineno-0-163) [ 1771 0 R /XYZ 60.307257 449.415174 0 ] (__codelineno-0-164) [ 1771 0 R /XYZ 60.307257 436.014822 0 ] (__codelineno-0-165) [ 1771 0 R /XYZ 60.307257 409.214118 0 ] (__codelineno-0-166) [ 1771 0 R /XYZ 60.307257 395.813766 0 ] (__codelineno-0-167) [ 1771 0 R /XYZ 60.307257 382.413414 0 ] (__codelineno-0-168) [ 1771 0 R /XYZ 60.307257 369.013062 0 ] (__codelineno-0-169) [ 1771 0 R /XYZ 60.307257 342.212358 0 ] (__codelineno-0-17) [ 1138 0 R /XYZ 60.307257 290.686590 0 ] (__codelineno-0-170) [ 1771 0 R /XYZ 60.307257 328.812006 0 ] (__codelineno-0-171) [ 1771 0 R /XYZ 60.307257 315.411654 0 ] (__codelineno-0-172) [ 1771 0 R /XYZ 60.307257 302.011302 0 ] (__codelineno-0-173) [ 1771 0 R /XYZ 60.307257 275.210598 0 ] (__codelineno-0-174) [ 1771 0 R /XYZ 60.307257 261.810246 0 ] (__codelineno-0-175) [ 1771 0 R /XYZ 60.307257 248.409894 0 ] (__codelineno-0-176) [ 1771 0 R /XYZ 60.307257 235.009542 0 ] (__codelineno-0-177) [ 1771 0 R /XYZ 60.307257 208.208838 0 ] (__codelineno-0-178) [ 1771 0 R /XYZ 60.307257 194.808486 0 ] (__codelineno-0-179) [ 1771 0 R /XYZ 60.307257 181.408134 0 ] (__codelineno-0-18) [ 1138 0 R /XYZ 60.307257 277.286238 0 ] (__codelineno-0-180) [ 1771 0 R /XYZ 60.307257 168.007782 0 ] (__codelineno-0-181) [ 1771 0 R /XYZ 60.307257 141.207078 0 ] (__codelineno-0-182) [ 1771 0 R /XYZ 60.307257 127.806726 0 ] (__codelineno-0-183) [ 1771 0 R /XYZ 60.307257 114.406374 0 ] (__codelineno-0-184) [ 1771 0 R /XYZ 60.307257 101.006022 0 ] (__codelineno-0-185) [ 1773 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-0-186) [ 1773 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-0-187) [ 1773 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-0-188) [ 1773 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-0-189) [ 1773 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-0-19) [ 1138 0 R /XYZ 60.307257 263.885886 0 ] (__codelineno-0-190) [ 1773 0 R /XYZ 60.307257 677.221158 0 ] (__codelineno-0-191) [ 1773 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-0-192) [ 1773 0 R /XYZ 60.307257 650.420454 0 ] (__codelineno-0-193) [ 1773 0 R /XYZ 60.307257 637.020102 0 ] (__codelineno-0-194) [ 1773 0 R /XYZ 60.307257 623.619750 0 ] (__codelineno-0-195) [ 1773 0 R /XYZ 60.307257 610.219398 0 ] (__codelineno-0-196) [ 1773 0 R /XYZ 60.307257 583.418694 0 ] (__codelineno-0-197) [ 1773 0 R /XYZ 60.307257 556.617990 0 ] (__codelineno-0-198) [ 1773 0 R /XYZ 60.307257 543.217638 0 ] (__codelineno-0-199) [ 1773 0 R /XYZ 60.307257 529.817286 0 ] (__codelineno-0-2) [ 657 0 R /XYZ 60.307257 381.179418 0 ] (__codelineno-0-20) [ 1138 0 R /XYZ 60.307257 250.485534 0 ] (__codelineno-0-200) [ 1773 0 R /XYZ 60.307257 516.416934 0 ] (__codelineno-0-201) [ 1773 0 R /XYZ 60.307257 503.016582 0 ] (__codelineno-0-202) [ 1773 0 R /XYZ 60.307257 489.616230 0 ] (__codelineno-0-203) [ 1773 0 R /XYZ 60.307257 476.215878 0 ] (__codelineno-0-204) [ 1773 0 R /XYZ 60.307257 449.415174 0 ] (__codelineno-0-205) [ 1773 0 R /XYZ 60.307257 436.014822 0 ] (__codelineno-0-206) [ 1773 0 R /XYZ 60.307257 422.614470 0 ] (__codelineno-0-207) [ 1773 0 R /XYZ 60.307257 409.214118 0 ] (__codelineno-0-208) [ 1773 0 R /XYZ 60.307257 395.813766 0 ] (__codelineno-0-209) [ 1773 0 R /XYZ 60.307257 369.013062 0 ] (__codelineno-0-21) [ 1138 0 R /XYZ 60.307257 237.085182 0 ] (__codelineno-0-210) [ 1773 0 R /XYZ 60.307257 342.212358 0 ] (__codelineno-0-211) [ 1773 0 R /XYZ 60.307257 328.812006 0 ] (__codelineno-0-212) [ 1773 0 R /XYZ 60.307257 315.411654 0 ] (__codelineno-0-213) [ 1773 0 R /XYZ 60.307257 302.011302 0 ] (__codelineno-0-214) [ 1773 0 R /XYZ 60.307257 288.610950 0 ] (__codelineno-0-215) [ 1773 0 R /XYZ 60.307257 275.210598 0 ] (__codelineno-0-216) [ 1773 0 R /XYZ 60.307257 261.810246 0 ] (__codelineno-0-217) [ 1773 0 R /XYZ 60.307257 235.009542 0 ] (__codelineno-0-218) [ 1773 0 R /XYZ 60.307257 221.609190 0 ] (__codelineno-0-219) [ 1773 0 R /XYZ 60.307257 208.208838 0 ] (__codelineno-0-22) [ 1138 0 R /XYZ 60.307257 223.684830 0 ] (__codelineno-0-220) [ 1773 0 R /XYZ 60.307257 194.808486 0 ] (__codelineno-0-221) [ 1773 0 R /XYZ 60.307257 181.408134 0 ] (__codelineno-0-222) [ 1773 0 R /XYZ 60.307257 154.607430 0 ] (__codelineno-0-223) [ 1773 0 R /XYZ 60.307257 141.207078 0 ] (__codelineno-0-224) [ 1773 0 R /XYZ 60.307257 127.806726 0 ] (__codelineno-0-225) [ 1773 0 R /XYZ 60.307257 101.006022 0 ] (__codelineno-0-226) [ 1773 0 R /XYZ 60.307257 87.605670 0 ] (__codelineno-0-227) [ 1775 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-0-228) [ 1775 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-0-229) [ 1775 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-0-23) [ 1138 0 R /XYZ 60.307257 210.284478 0 ] (__codelineno-0-230) [ 1775 0 R /XYZ 60.307257 704.021862 0 ] (__codelineno-0-231) [ 1775 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-0-232) [ 1775 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-0-233) [ 1775 0 R /XYZ 60.307257 650.420454 0 ] (__codelineno-0-234) [ 1775 0 R /XYZ 60.307257 637.020102 0 ] (__codelineno-0-235) [ 1775 0 R /XYZ 60.307257 623.619750 0 ] (__codelineno-0-236) [ 1775 0 R /XYZ 60.307257 610.219398 0 ] (__codelineno-0-237) [ 1775 0 R /XYZ 60.307257 596.819046 0 ] (__codelineno-0-238) [ 1775 0 R /XYZ 60.307257 583.418694 0 ] (__codelineno-0-239) [ 1775 0 R /XYZ 60.307257 570.018342 0 ] (__codelineno-0-24) [ 1765 0 R /XYZ 60.307257 346.328574 0 ] (__codelineno-0-240) [ 1775 0 R /XYZ 60.307257 543.217638 0 ] (__codelineno-0-241) [ 1775 0 R /XYZ 60.307257 529.817286 0 ] (__codelineno-0-242) [ 1775 0 R /XYZ 60.307257 516.416934 0 ] (__codelineno-0-243) [ 1775 0 R /XYZ 60.307257 503.016582 0 ] (__codelineno-0-244) [ 1775 0 R /XYZ 60.307257 489.616230 0 ] (__codelineno-0-245) [ 1775 0 R /XYZ 60.307257 476.215878 0 ] (__codelineno-0-246) [ 1775 0 R /XYZ 60.307257 462.815526 0 ] (__codelineno-0-247) [ 1775 0 R /XYZ 60.307257 449.415174 0 ] (__codelineno-0-248) [ 1775 0 R /XYZ 60.307257 436.014822 0 ] (__codelineno-0-249) [ 1775 0 R /XYZ 60.307257 422.614470 0 ] (__codelineno-0-25) [ 1765 0 R /XYZ 60.307257 332.928222 0 ] (__codelineno-0-250) [ 1775 0 R /XYZ 60.307257 409.214118 0 ] (__codelineno-0-251) [ 1775 0 R /XYZ 60.307257 382.413414 0 ] (__codelineno-0-252) [ 1775 0 R /XYZ 60.307257 355.612710 0 ] (__codelineno-0-253) [ 1775 0 R /XYZ 60.307257 342.212358 0 ] (__codelineno-0-254) [ 1775 0 R /XYZ 60.307257 328.812006 0 ] (__codelineno-0-255) [ 1775 0 R /XYZ 60.307257 302.011302 0 ] (__codelineno-0-256) [ 1775 0 R /XYZ 60.307257 288.610950 0 ] (__codelineno-0-257) [ 1775 0 R /XYZ 60.307257 275.210598 0 ] (__codelineno-0-258) [ 1775 0 R /XYZ 60.307257 261.810246 0 ] (__codelineno-0-259) [ 1775 0 R /XYZ 60.307257 248.409894 0 ] (__codelineno-0-26) [ 1765 0 R /XYZ 60.307257 319.527870 0 ] (__codelineno-0-260) [ 1775 0 R /XYZ 60.307257 235.009542 0 ] (__codelineno-0-261) [ 1775 0 R /XYZ 60.307257 221.609190 0 ] (__codelineno-0-262) [ 1801 0 R /XYZ 60.307257 355.612710 0 ] (__codelineno-0-263) [ 1801 0 R /XYZ 60.307257 342.212358 0 ] (__codelineno-0-264) [ 1801 0 R /XYZ 60.307257 328.812006 0 ] (__codelineno-0-265) [ 1801 0 R /XYZ 60.307257 315.411654 0 ] (__codelineno-0-266) [ 1801 0 R /XYZ 60.307257 302.011302 0 ] (__codelineno-0-267) [ 1801 0 R /XYZ 60.307257 288.610950 0 ] (__codelineno-0-268) [ 1801 0 R /XYZ 60.307257 275.210598 0 ] (__codelineno-0-269) [ 1801 0 R /XYZ 60.307257 261.810246 0 ] (__codelineno-0-27) [ 1765 0 R /XYZ 60.307257 306.127518 0 ] (__codelineno-0-270) [ 1801 0 R /XYZ 60.307257 248.409894 0 ] (__codelineno-0-271) [ 1801 0 R /XYZ 60.307257 235.009542 0 ] (__codelineno-0-272) [ 1801 0 R /XYZ 60.307257 221.609190 0 ] (__codelineno-0-273) [ 1801 0 R /XYZ 60.307257 208.208838 0 ] (__codelineno-0-274) [ 1801 0 R /XYZ 60.307257 194.808486 0 ] (__codelineno-0-275) [ 1801 0 R /XYZ 60.307257 181.408134 0 ] (__codelineno-0-276) [ 1801 0 R /XYZ 60.307257 168.007782 0 ] (__codelineno-0-277) [ 1801 0 R /XYZ 60.307257 154.607430 0 ] (__codelineno-0-278) [ 1801 0 R /XYZ 60.307257 141.207078 0 ] (__codelineno-0-279) [ 1801 0 R /XYZ 60.307257 127.806726 0 ] (__codelineno-0-28) [ 1765 0 R /XYZ 60.307257 279.326814 0 ] (__codelineno-0-280) [ 1801 0 R /XYZ 60.307257 114.406374 0 ] (__codelineno-0-281) [ 1801 0 R /XYZ 60.307257 101.006022 0 ] (__codelineno-0-282) [ 1801 0 R /XYZ 60.307257 87.605670 0 ] (__codelineno-0-283) [ 1803 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-0-284) [ 1803 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-0-285) [ 1803 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-0-286) [ 1803 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-0-287) [ 1803 0 R /XYZ 60.307257 704.021862 0 ] (__codelineno-0-288) [ 1803 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-0-289) [ 1803 0 R /XYZ 60.307257 677.221158 0 ] (__codelineno-0-29) [ 1765 0 R /XYZ 60.307257 265.926462 0 ] (__codelineno-0-290) [ 1803 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-0-291) [ 1803 0 R /XYZ 60.307257 650.420454 0 ] (__codelineno-0-292) [ 1803 0 R /XYZ 60.307257 623.619750 0 ] (__codelineno-0-293) [ 1803 0 R /XYZ 60.307257 610.219398 0 ] (__codelineno-0-294) [ 1803 0 R /XYZ 60.307257 596.819046 0 ] (__codelineno-0-295) [ 1803 0 R /XYZ 60.307257 583.418694 0 ] (__codelineno-0-296) [ 1803 0 R /XYZ 60.307257 570.018342 0 ] (__codelineno-0-297) [ 1803 0 R /XYZ 60.307257 543.217638 0 ] (__codelineno-0-298) [ 1803 0 R /XYZ 60.307257 529.817286 0 ] (__codelineno-0-299) [ 1803 0 R /XYZ 60.307257 516.416934 0 ] (__codelineno-0-3) [ 1138 0 R /XYZ 60.307257 478.291518 0 ] (__codelineno-0-30) [ 1765 0 R /XYZ 60.307257 239.125758 0 ] (__codelineno-0-300) [ 1803 0 R /XYZ 60.307257 503.016582 0 ] (__codelineno-0-301) [ 1803 0 R /XYZ 60.307257 489.616230 0 ] (__codelineno-0-302) [ 1803 0 R /XYZ 60.307257 476.215878 0 ] (__codelineno-0-303) [ 1803 0 R /XYZ 60.307257 462.815526 0 ] (__codelineno-0-304) [ 1803 0 R /XYZ 60.307257 449.415174 0 ] (__codelineno-0-305) [ 1803 0 R /XYZ 60.307257 436.014822 0 ] (__codelineno-0-306) [ 1803 0 R /XYZ 60.307257 422.614470 0 ] (__codelineno-0-307) [ 1803 0 R /XYZ 60.307257 409.214118 0 ] (__codelineno-0-308) [ 1803 0 R /XYZ 60.307257 395.813766 0 ] (__codelineno-0-309) [ 1803 0 R /XYZ 60.307257 382.413414 0 ] (__codelineno-0-31) [ 1765 0 R /XYZ 60.307257 212.325054 0 ] (__codelineno-0-310) [ 1803 0 R /XYZ 60.307257 369.013062 0 ] (__codelineno-0-311) [ 1803 0 R /XYZ 60.307257 342.212358 0 ] (__codelineno-0-312) [ 1803 0 R /XYZ 60.307257 328.812006 0 ] (__codelineno-0-313) [ 1803 0 R /XYZ 60.307257 315.411654 0 ] (__codelineno-0-314) [ 1803 0 R /XYZ 60.307257 302.011302 0 ] (__codelineno-0-315) [ 1803 0 R /XYZ 60.307257 288.610950 0 ] (__codelineno-0-316) [ 1803 0 R /XYZ 60.307257 275.210598 0 ] (__codelineno-0-317) [ 1803 0 R /XYZ 60.307257 261.810246 0 ] (__codelineno-0-318) [ 1803 0 R /XYZ 60.307257 248.409894 0 ] (__codelineno-0-319) [ 1803 0 R /XYZ 60.307257 235.009542 0 ] (__codelineno-0-32) [ 1765 0 R /XYZ 60.307257 198.924702 0 ] (__codelineno-0-320) [ 1803 0 R /XYZ 60.307257 221.609190 0 ] (__codelineno-0-321) [ 1803 0 R /XYZ 60.307257 208.208838 0 ] (__codelineno-0-322) [ 1803 0 R /XYZ 60.307257 194.808486 0 ] (__codelineno-0-323) [ 1803 0 R /XYZ 60.307257 181.408134 0 ] (__codelineno-0-324) [ 1803 0 R /XYZ 60.307257 168.007782 0 ] (__codelineno-0-325) [ 1803 0 R /XYZ 60.307257 154.607430 0 ] (__codelineno-0-326) [ 1803 0 R /XYZ 60.307257 141.207078 0 ] (__codelineno-0-327) [ 1803 0 R /XYZ 60.307257 127.806726 0 ] (__codelineno-0-328) [ 1803 0 R /XYZ 60.307257 114.406374 0 ] (__codelineno-0-329) [ 1803 0 R /XYZ 60.307257 101.006022 0 ] (__codelineno-0-33) [ 1765 0 R /XYZ 60.307257 185.524350 0 ] (__codelineno-0-330) [ 1819 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-0-331) [ 1819 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-0-332) [ 1819 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-0-333) [ 1819 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-0-334) [ 1819 0 R /XYZ 60.307257 704.021862 0 ] (__codelineno-0-335) [ 1819 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-0-336) [ 1819 0 R /XYZ 60.307257 677.221158 0 ] (__codelineno-0-337) [ 1819 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-0-338) [ 1819 0 R /XYZ 60.307257 650.420454 0 ] (__codelineno-0-339) [ 1819 0 R /XYZ 60.307257 637.020102 0 ] (__codelineno-0-34) [ 1765 0 R /XYZ 60.307257 172.123998 0 ] (__codelineno-0-340) [ 1819 0 R /XYZ 60.307257 623.619750 0 ] (__codelineno-0-341) [ 1819 0 R /XYZ 60.307257 596.819046 0 ] (__codelineno-0-342) [ 1819 0 R /XYZ 60.307257 583.418694 0 ] (__codelineno-0-343) [ 1819 0 R /XYZ 60.307257 570.018342 0 ] (__codelineno-0-344) [ 1819 0 R /XYZ 60.307257 543.217638 0 ] (__codelineno-0-345) [ 1819 0 R /XYZ 60.307257 529.817286 0 ] (__codelineno-0-346) [ 1819 0 R /XYZ 60.307257 503.016582 0 ] (__codelineno-0-347) [ 1819 0 R /XYZ 60.307257 489.616230 0 ] (__codelineno-0-348) [ 1819 0 R /XYZ 60.307257 476.215878 0 ] (__codelineno-0-349) [ 1819 0 R /XYZ 60.307257 462.815526 0 ] (__codelineno-0-35) [ 1765 0 R /XYZ 60.307257 158.723646 0 ] (__codelineno-0-350) [ 1819 0 R /XYZ 60.307257 449.415174 0 ] (__codelineno-0-351) [ 1819 0 R /XYZ 60.307257 436.014822 0 ] (__codelineno-0-352) [ 1819 0 R /XYZ 60.307257 422.614470 0 ] (__codelineno-0-353) [ 1819 0 R /XYZ 60.307257 409.214118 0 ] (__codelineno-0-354) [ 1819 0 R /XYZ 60.307257 395.813766 0 ] (__codelineno-0-355) [ 1819 0 R /XYZ 60.307257 382.413414 0 ] (__codelineno-0-356) [ 1819 0 R /XYZ 60.307257 369.013062 0 ] (__codelineno-0-357) [ 1819 0 R /XYZ 60.307257 355.612710 0 ] (__codelineno-0-358) [ 1819 0 R /XYZ 60.307257 342.212358 0 ] (__codelineno-0-359) [ 1819 0 R /XYZ 60.307257 328.812006 0 ] (__codelineno-0-36) [ 1765 0 R /XYZ 60.307257 145.323294 0 ] (__codelineno-0-360) [ 1819 0 R /XYZ 60.307257 315.411654 0 ] (__codelineno-0-361) [ 1819 0 R /XYZ 60.307257 302.011302 0 ] (__codelineno-0-362) [ 1819 0 R /XYZ 60.307257 288.610950 0 ] (__codelineno-0-363) [ 1819 0 R /XYZ 60.307257 275.210598 0 ] (__codelineno-0-364) [ 1819 0 R /XYZ 60.307257 261.810246 0 ] (__codelineno-0-365) [ 1819 0 R /XYZ 60.307257 235.009542 0 ] (__codelineno-0-366) [ 1819 0 R /XYZ 60.307257 221.609190 0 ] (__codelineno-0-367) [ 1819 0 R /XYZ 60.307257 208.208838 0 ] (__codelineno-0-368) [ 1819 0 R /XYZ 60.307257 194.808486 0 ] (__codelineno-0-369) [ 1819 0 R /XYZ 60.307257 168.007782 0 ] (__codelineno-0-37) [ 1765 0 R /XYZ 60.307257 131.922942 0 ] (__codelineno-0-370) [ 1819 0 R /XYZ 60.307257 154.607430 0 ] (__codelineno-0-371) [ 1819 0 R /XYZ 60.307257 141.207078 0 ] (__codelineno-0-372) [ 1819 0 R /XYZ 60.307257 127.806726 0 ] (__codelineno-0-373) [ 1819 0 R /XYZ 60.307257 114.406374 0 ] (__codelineno-0-374) [ 1819 0 R /XYZ 60.307257 101.006022 0 ] (__codelineno-0-375) [ 1819 0 R /XYZ 60.307257 87.605670 0 ] (__codelineno-0-376) [ 1821 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-0-377) [ 1821 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-0-378) [ 1821 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-0-379) [ 1821 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-0-38) [ 1765 0 R /XYZ 60.307257 118.522590 0 ] (__codelineno-0-380) [ 1821 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-0-381) [ 1821 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-0-382) [ 1821 0 R /XYZ 60.307257 677.221158 0 ] (__codelineno-0-383) [ 1821 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-0-384) [ 1821 0 R /XYZ 60.307257 650.420454 0 ] (__codelineno-0-385) [ 1821 0 R /XYZ 60.307257 637.020102 0 ] (__codelineno-0-386) [ 1821 0 R /XYZ 60.307257 623.619750 0 ] (__codelineno-0-387) [ 1821 0 R /XYZ 60.307257 610.219398 0 ] (__codelineno-0-388) [ 1821 0 R /XYZ 60.307257 596.819046 0 ] (__codelineno-0-389) [ 1821 0 R /XYZ 60.307257 583.418694 0 ] (__codelineno-0-39) [ 1765 0 R /XYZ 60.307257 105.122238 0 ] (__codelineno-0-390) [ 1821 0 R /XYZ 60.307257 556.617990 0 ] (__codelineno-0-391) [ 1821 0 R /XYZ 60.307257 543.217638 0 ] (__codelineno-0-392) [ 1821 0 R /XYZ 60.307257 529.817286 0 ] (__codelineno-0-393) [ 1821 0 R /XYZ 60.307257 516.416934 0 ] (__codelineno-0-394) [ 1821 0 R /XYZ 60.307257 503.016582 0 ] (__codelineno-0-395) [ 1821 0 R /XYZ 60.307257 489.616230 0 ] (__codelineno-0-396) [ 1821 0 R /XYZ 60.307257 476.215878 0 ] (__codelineno-0-397) [ 1821 0 R /XYZ 60.307257 462.815526 0 ] (__codelineno-0-398) [ 1821 0 R /XYZ 60.307257 449.415174 0 ] (__codelineno-0-399) [ 1821 0 R /XYZ 60.307257 422.614470 0 ] (__codelineno-0-4) [ 1138 0 R /XYZ 60.307257 464.891166 0 ] (__codelineno-0-40) [ 1765 0 R /XYZ 60.307257 91.721886 0 ] (__codelineno-0-400) [ 1821 0 R /XYZ 60.307257 395.813766 0 ] (__codelineno-0-401) [ 1821 0 R /XYZ 60.307257 382.413414 0 ] (__codelineno-0-402) [ 1821 0 R /XYZ 60.307257 355.612710 0 ] (__codelineno-0-403) [ 1821 0 R /XYZ 60.307257 342.212358 0 ] (__codelineno-0-404) [ 1821 0 R /XYZ 60.307257 315.411654 0 ] (__codelineno-0-405) [ 1821 0 R /XYZ 60.307257 288.610950 0 ] (__codelineno-0-406) [ 1821 0 R /XYZ 60.307257 275.210598 0 ] (__codelineno-0-407) [ 1821 0 R /XYZ 60.307257 248.409894 0 ] (__codelineno-0-408) [ 1821 0 R /XYZ 60.307257 221.609190 0 ] (__codelineno-0-409) [ 1821 0 R /XYZ 60.307257 208.208838 0 ] (__codelineno-0-41) [ 1767 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-0-410) [ 1821 0 R /XYZ 60.307257 181.408134 0 ] (__codelineno-0-411) [ 1821 0 R /XYZ 60.307257 168.007782 0 ] (__codelineno-0-412) [ 1821 0 R /XYZ 60.307257 141.207078 0 ] (__codelineno-0-413) [ 1821 0 R /XYZ 60.307257 114.406374 0 ] (__codelineno-0-414) [ 1821 0 R /XYZ 60.307257 101.006022 0 ] (__codelineno-0-415) [ 1823 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-0-416) [ 1823 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-0-417) [ 1823 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-0-418) [ 1823 0 R /XYZ 60.307257 704.021862 0 ] (__codelineno-0-419) [ 1823 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-0-42) [ 1767 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-0-420) [ 1823 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-0-421) [ 1823 0 R /XYZ 60.307257 650.420454 0 ] (__codelineno-0-422) [ 1823 0 R /XYZ 60.307257 637.020102 0 ] (__codelineno-0-423) [ 1845 0 R /XYZ 60.307257 288.610950 0 ] (__codelineno-0-424) [ 1845 0 R /XYZ 60.307257 275.210598 0 ] (__codelineno-0-425) [ 1845 0 R /XYZ 60.307257 261.810246 0 ] (__codelineno-0-426) [ 1845 0 R /XYZ 60.307257 248.409894 0 ] (__codelineno-0-427) [ 1845 0 R /XYZ 60.307257 221.609190 0 ] (__codelineno-0-428) [ 1845 0 R /XYZ 60.307257 208.208838 0 ] (__codelineno-0-429) [ 1845 0 R /XYZ 60.307257 194.808486 0 ] (__codelineno-0-43) [ 1767 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-0-430) [ 1845 0 R /XYZ 60.307257 181.408134 0 ] (__codelineno-0-431) [ 1845 0 R /XYZ 60.307257 168.007782 0 ] (__codelineno-0-432) [ 1845 0 R /XYZ 60.307257 154.607430 0 ] (__codelineno-0-433) [ 1845 0 R /XYZ 60.307257 127.806726 0 ] (__codelineno-0-434) [ 1845 0 R /XYZ 60.307257 114.406374 0 ] (__codelineno-0-435) [ 1845 0 R /XYZ 60.307257 101.006022 0 ] (__codelineno-0-436) [ 1845 0 R /XYZ 60.307257 87.605670 0 ] (__codelineno-0-437) [ 1847 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-0-438) [ 1847 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-0-439) [ 1847 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-0-44) [ 1767 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-0-440) [ 1847 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-0-441) [ 1847 0 R /XYZ 60.307257 704.021862 0 ] (__codelineno-0-442) [ 1847 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-0-443) [ 1847 0 R /XYZ 60.307257 677.221158 0 ] (__codelineno-0-444) [ 1847 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-0-445) [ 1847 0 R /XYZ 60.307257 637.020102 0 ] (__codelineno-0-446) [ 1847 0 R /XYZ 60.307257 623.619750 0 ] (__codelineno-0-447) [ 1847 0 R /XYZ 60.307257 596.819046 0 ] (__codelineno-0-448) [ 1847 0 R /XYZ 60.307257 583.418694 0 ] (__codelineno-0-449) [ 1847 0 R /XYZ 60.307257 570.018342 0 ] (__codelineno-0-45) [ 1767 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-0-450) [ 1847 0 R /XYZ 60.307257 556.617990 0 ] (__codelineno-0-451) [ 1847 0 R /XYZ 60.307257 543.217638 0 ] (__codelineno-0-452) [ 1847 0 R /XYZ 60.307257 529.817286 0 ] (__codelineno-0-453) [ 1847 0 R /XYZ 60.307257 516.416934 0 ] (__codelineno-0-454) [ 1847 0 R /XYZ 60.307257 503.016582 0 ] (__codelineno-0-455) [ 1847 0 R /XYZ 60.307257 489.616230 0 ] (__codelineno-0-456) [ 1847 0 R /XYZ 60.307257 476.215878 0 ] (__codelineno-0-457) [ 1847 0 R /XYZ 60.307257 449.415174 0 ] (__codelineno-0-458) [ 1847 0 R /XYZ 60.307257 436.014822 0 ] (__codelineno-0-459) [ 1847 0 R /XYZ 60.307257 422.614470 0 ] (__codelineno-0-46) [ 1767 0 R /XYZ 60.307257 704.021862 0 ] (__codelineno-0-460) [ 1847 0 R /XYZ 60.307257 409.214118 0 ] (__codelineno-0-461) [ 1847 0 R /XYZ 60.307257 395.813766 0 ] (__codelineno-0-462) [ 1847 0 R /XYZ 60.307257 382.413414 0 ] (__codelineno-0-463) [ 1847 0 R /XYZ 60.307257 369.013062 0 ] (__codelineno-0-464) [ 1847 0 R /XYZ 60.307257 355.612710 0 ] (__codelineno-0-465) [ 1847 0 R /XYZ 60.307257 342.212358 0 ] (__codelineno-0-466) [ 1847 0 R /XYZ 60.307257 328.812006 0 ] (__codelineno-0-467) [ 1847 0 R /XYZ 60.307257 315.411654 0 ] (__codelineno-0-468) [ 1847 0 R /XYZ 60.307257 302.011302 0 ] (__codelineno-0-469) [ 1847 0 R /XYZ 60.307257 288.610950 0 ] (__codelineno-0-47) [ 1767 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-0-470) [ 1847 0 R /XYZ 60.307257 275.210598 0 ] (__codelineno-0-471) [ 1847 0 R /XYZ 60.307257 261.810246 0 ] (__codelineno-0-472) [ 1847 0 R /XYZ 60.307257 248.409894 0 ] (__codelineno-0-473) [ 1847 0 R /XYZ 60.307257 235.009542 0 ] (__codelineno-0-474) [ 1847 0 R /XYZ 60.307257 221.609190 0 ] (__codelineno-0-475) [ 1847 0 R /XYZ 60.307257 208.208838 0 ] (__codelineno-0-476) [ 1847 0 R /XYZ 60.307257 194.808486 0 ] (__codelineno-0-477) [ 1847 0 R /XYZ 60.307257 181.408134 0 ] (__codelineno-0-478) [ 1847 0 R /XYZ 60.307257 168.007782 0 ] (__codelineno-0-479) [ 1847 0 R /XYZ 60.307257 154.607430 0 ] (__codelineno-0-48) [ 1767 0 R /XYZ 60.307257 677.221158 0 ] (__codelineno-0-480) [ 1847 0 R /XYZ 60.307257 141.207078 0 ] (__codelineno-0-481) [ 1847 0 R /XYZ 60.307257 127.806726 0 ] (__codelineno-0-482) [ 1847 0 R /XYZ 60.307257 114.406374 0 ] (__codelineno-0-483) [ 1847 0 R /XYZ 60.307257 101.006022 0 ] (__codelineno-0-484) [ 1847 0 R /XYZ 60.307257 87.605670 0 ] (__codelineno-0-485) [ 1849 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-0-486) [ 1849 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-0-487) [ 1849 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-0-488) [ 1849 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-0-489) [ 1849 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-0-49) [ 1767 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-0-490) [ 1849 0 R /XYZ 60.307257 704.021862 0 ] (__codelineno-0-491) [ 1849 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-0-492) [ 1849 0 R /XYZ 60.307257 677.221158 0 ] (__codelineno-0-493) [ 1849 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-0-494) [ 1849 0 R /XYZ 60.307257 650.420454 0 ] (__codelineno-0-495) [ 1929 0 R /XYZ 60.307257 101.006022 0 ] (__codelineno-0-496) [ 1931 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-0-497) [ 1931 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-0-498) [ 1931 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-0-499) [ 1931 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-0-5) [ 1138 0 R /XYZ 60.307257 451.490814 0 ] (__codelineno-0-50) [ 1767 0 R /XYZ 60.307257 650.420454 0 ] (__codelineno-0-500) [ 1931 0 R /XYZ 60.307257 704.021862 0 ] (__codelineno-0-501) [ 1931 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-0-502) [ 1931 0 R /XYZ 60.307257 677.221158 0 ] (__codelineno-0-503) [ 1931 0 R /XYZ 60.307257 650.420454 0 ] (__codelineno-0-504) [ 1931 0 R /XYZ 60.307257 637.020102 0 ] (__codelineno-0-505) [ 1931 0 R /XYZ 60.307257 623.619750 0 ] (__codelineno-0-506) [ 1931 0 R /XYZ 60.307257 610.219398 0 ] (__codelineno-0-507) [ 1931 0 R /XYZ 60.307257 596.819046 0 ] (__codelineno-0-508) [ 1931 0 R /XYZ 60.307257 570.018342 0 ] (__codelineno-0-509) [ 1931 0 R /XYZ 60.307257 556.617990 0 ] (__codelineno-0-51) [ 1767 0 R /XYZ 60.307257 637.020102 0 ] (__codelineno-0-510) [ 1931 0 R /XYZ 60.307257 543.217638 0 ] (__codelineno-0-511) [ 1931 0 R /XYZ 60.307257 529.817286 0 ] (__codelineno-0-512) [ 1931 0 R /XYZ 60.307257 516.416934 0 ] (__codelineno-0-513) [ 1931 0 R /XYZ 60.307257 503.016582 0 ] (__codelineno-0-514) [ 1931 0 R /XYZ 60.307257 489.616230 0 ] (__codelineno-0-515) [ 1931 0 R /XYZ 60.307257 476.215878 0 ] (__codelineno-0-516) [ 1931 0 R /XYZ 60.307257 449.415174 0 ] (__codelineno-0-517) [ 1931 0 R /XYZ 60.307257 436.014822 0 ] (__codelineno-0-518) [ 1931 0 R /XYZ 60.307257 422.614470 0 ] (__codelineno-0-519) [ 1931 0 R /XYZ 60.307257 409.214118 0 ] (__codelineno-0-52) [ 1767 0 R /XYZ 60.307257 623.619750 0 ] (__codelineno-0-520) [ 1931 0 R /XYZ 60.307257 395.813766 0 ] (__codelineno-0-521) [ 1931 0 R /XYZ 60.307257 382.413414 0 ] (__codelineno-0-522) [ 1931 0 R /XYZ 60.307257 369.013062 0 ] (__codelineno-0-523) [ 1931 0 R /XYZ 60.307257 355.612710 0 ] (__codelineno-0-524) [ 1931 0 R /XYZ 60.307257 342.212358 0 ] (__codelineno-0-525) [ 1931 0 R /XYZ 60.307257 328.812006 0 ] (__codelineno-0-526) [ 1931 0 R /XYZ 60.307257 315.411654 0 ] (__codelineno-0-527) [ 1931 0 R /XYZ 60.307257 302.011302 0 ] (__codelineno-0-528) [ 1931 0 R /XYZ 60.307257 288.610950 0 ] (__codelineno-0-529) [ 1931 0 R /XYZ 60.307257 275.210598 0 ] (__codelineno-0-53) [ 1767 0 R /XYZ 60.307257 610.219398 0 ] (__codelineno-0-530) [ 1931 0 R /XYZ 60.307257 261.810246 0 ] (__codelineno-0-531) [ 1931 0 R /XYZ 60.307257 248.409894 0 ] (__codelineno-0-532) [ 1931 0 R /XYZ 60.307257 235.009542 0 ] (__codelineno-0-533) [ 1931 0 R /XYZ 60.307257 221.609190 0 ] (__codelineno-0-534) [ 1931 0 R /XYZ 60.307257 208.208838 0 ] (__codelineno-0-535) [ 1931 0 R /XYZ 60.307257 181.408134 0 ] (__codelineno-0-536) [ 1931 0 R /XYZ 60.307257 168.007782 0 ] (__codelineno-0-537) [ 1931 0 R /XYZ 60.307257 154.607430 0 ] (__codelineno-0-538) [ 1931 0 R /XYZ 60.307257 141.207078 0 ] (__codelineno-0-539) [ 1931 0 R /XYZ 60.307257 127.806726 0 ] (__codelineno-0-54) [ 1767 0 R /XYZ 60.307257 570.018342 0 ] (__codelineno-0-540) [ 1931 0 R /XYZ 60.307257 114.406374 0 ] (__codelineno-0-541) [ 1931 0 R /XYZ 60.307257 101.006022 0 ] (__codelineno-0-542) [ 1931 0 R /XYZ 60.307257 87.605670 0 ] (__codelineno-0-543) [ 1933 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-0-544) [ 1933 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-0-545) [ 1933 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-0-546) [ 1933 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-0-547) [ 1933 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-0-548) [ 1933 0 R /XYZ 60.307257 704.021862 0 ] (__codelineno-0-549) [ 1933 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-0-55) [ 1767 0 R /XYZ 60.307257 556.617990 0 ] (__codelineno-0-550) [ 1933 0 R /XYZ 60.307257 677.221158 0 ] (__codelineno-0-551) [ 1933 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-0-552) [ 1933 0 R /XYZ 60.307257 650.420454 0 ] (__codelineno-0-553) [ 1933 0 R /XYZ 60.307257 637.020102 0 ] (__codelineno-0-554) [ 1933 0 R /XYZ 60.307257 623.619750 0 ] (__codelineno-0-555) [ 1933 0 R /XYZ 60.307257 610.219398 0 ] (__codelineno-0-556) [ 1933 0 R /XYZ 60.307257 596.819046 0 ] (__codelineno-0-557) [ 1933 0 R /XYZ 60.307257 583.418694 0 ] (__codelineno-0-558) [ 1933 0 R /XYZ 60.307257 570.018342 0 ] (__codelineno-0-559) [ 1933 0 R /XYZ 60.307257 543.217638 0 ] (__codelineno-0-56) [ 1767 0 R /XYZ 60.307257 543.217638 0 ] (__codelineno-0-560) [ 1933 0 R /XYZ 60.307257 529.817286 0 ] (__codelineno-0-561) [ 1933 0 R /XYZ 60.307257 516.416934 0 ] (__codelineno-0-562) [ 1933 0 R /XYZ 60.307257 503.016582 0 ] (__codelineno-0-563) [ 1933 0 R /XYZ 60.307257 489.616230 0 ] (__codelineno-0-564) [ 1933 0 R /XYZ 60.307257 476.215878 0 ] (__codelineno-0-565) [ 1933 0 R /XYZ 60.307257 462.815526 0 ] (__codelineno-0-566) [ 1933 0 R /XYZ 60.307257 449.415174 0 ] (__codelineno-0-567) [ 1933 0 R /XYZ 60.307257 436.014822 0 ] (__codelineno-0-568) [ 1933 0 R /XYZ 60.307257 422.614470 0 ] (__codelineno-0-569) [ 1933 0 R /XYZ 60.307257 409.214118 0 ] (__codelineno-0-57) [ 1767 0 R /XYZ 60.307257 529.817286 0 ] (__codelineno-0-570) [ 1933 0 R /XYZ 60.307257 395.813766 0 ] (__codelineno-0-571) [ 1933 0 R /XYZ 60.307257 382.413414 0 ] (__codelineno-0-572) [ 1933 0 R /XYZ 60.307257 369.013062 0 ] (__codelineno-0-573) [ 1933 0 R /XYZ 60.307257 355.612710 0 ] (__codelineno-0-574) [ 1933 0 R /XYZ 60.307257 342.212358 0 ] (__codelineno-0-575) [ 1933 0 R /XYZ 60.307257 315.411654 0 ] (__codelineno-0-576) [ 1933 0 R /XYZ 60.307257 302.011302 0 ] (__codelineno-0-577) [ 1933 0 R /XYZ 60.307257 275.210598 0 ] (__codelineno-0-578) [ 1933 0 R /XYZ 60.307257 261.810246 0 ] (__codelineno-0-579) [ 1933 0 R /XYZ 60.307257 248.409894 0 ] (__codelineno-0-58) [ 1767 0 R /XYZ 60.307257 516.416934 0 ] (__codelineno-0-580) [ 1933 0 R /XYZ 60.307257 235.009542 0 ] (__codelineno-0-581) [ 1933 0 R /XYZ 60.307257 221.609190 0 ] (__codelineno-0-582) [ 1933 0 R /XYZ 60.307257 208.208838 0 ] (__codelineno-0-583) [ 1933 0 R /XYZ 60.307257 194.808486 0 ] (__codelineno-0-584) [ 1933 0 R /XYZ 60.307257 181.408134 0 ] (__codelineno-0-585) [ 1933 0 R /XYZ 60.307257 168.007782 0 ] (__codelineno-0-586) [ 1933 0 R /XYZ 60.307257 141.207078 0 ] (__codelineno-0-587) [ 1933 0 R /XYZ 60.307257 127.806726 0 ] (__codelineno-0-588) [ 1933 0 R /XYZ 60.307257 101.006022 0 ] (__codelineno-0-589) [ 1933 0 R /XYZ 60.307257 87.605670 0 ] (__codelineno-0-59) [ 1767 0 R /XYZ 60.307257 503.016582 0 ] (__codelineno-0-590) [ 1935 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-0-591) [ 1935 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-0-592) [ 1935 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-0-593) [ 1935 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-0-594) [ 1935 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-0-595) [ 1935 0 R /XYZ 60.307257 704.021862 0 ] (__codelineno-0-596) [ 1935 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-0-597) [ 1935 0 R /XYZ 60.307257 677.221158 0 ] (__codelineno-0-598) [ 1935 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-0-599) [ 1935 0 R /XYZ 60.307257 650.420454 0 ] (__codelineno-0-6) [ 1138 0 R /XYZ 60.307257 438.090462 0 ] (__codelineno-0-60) [ 1767 0 R /XYZ 60.307257 489.616230 0 ] (__codelineno-0-600) [ 1935 0 R /XYZ 60.307257 637.020102 0 ] (__codelineno-0-601) [ 1935 0 R /XYZ 60.307257 623.619750 0 ] (__codelineno-0-602) [ 1935 0 R /XYZ 60.307257 610.219398 0 ] (__codelineno-0-603) [ 1935 0 R /XYZ 60.307257 596.819046 0 ] (__codelineno-0-604) [ 1935 0 R /XYZ 60.307257 583.418694 0 ] (__codelineno-0-605) [ 1935 0 R /XYZ 60.307257 570.018342 0 ] (__codelineno-0-606) [ 1935 0 R /XYZ 60.307257 556.617990 0 ] (__codelineno-0-607) [ 1935 0 R /XYZ 60.307257 543.217638 0 ] (__codelineno-0-608) [ 1935 0 R /XYZ 60.307257 529.817286 0 ] (__codelineno-0-609) [ 1935 0 R /XYZ 60.307257 516.416934 0 ] (__codelineno-0-61) [ 1767 0 R /XYZ 60.307257 476.215878 0 ] (__codelineno-0-610) [ 1935 0 R /XYZ 60.307257 503.016582 0 ] (__codelineno-0-611) [ 1935 0 R /XYZ 60.307257 489.616230 0 ] (__codelineno-0-612) [ 1935 0 R /XYZ 60.307257 476.215878 0 ] (__codelineno-0-613) [ 1935 0 R /XYZ 60.307257 462.815526 0 ] (__codelineno-0-614) [ 1935 0 R /XYZ 60.307257 449.415174 0 ] (__codelineno-0-615) [ 1935 0 R /XYZ 60.307257 436.014822 0 ] (__codelineno-0-616) [ 1935 0 R /XYZ 60.307257 422.614470 0 ] (__codelineno-0-617) [ 1935 0 R /XYZ 60.307257 395.813766 0 ] (__codelineno-0-618) [ 1935 0 R /XYZ 60.307257 369.013062 0 ] (__codelineno-0-619) [ 1935 0 R /XYZ 60.307257 355.612710 0 ] (__codelineno-0-62) [ 1767 0 R /XYZ 60.307257 462.815526 0 ] (__codelineno-0-620) [ 1935 0 R /XYZ 60.307257 342.212358 0 ] (__codelineno-0-621) [ 1935 0 R /XYZ 60.307257 328.812006 0 ] (__codelineno-0-622) [ 1935 0 R /XYZ 60.307257 315.411654 0 ] (__codelineno-0-623) [ 1935 0 R /XYZ 60.307257 302.011302 0 ] (__codelineno-0-624) [ 1935 0 R /XYZ 60.307257 288.610950 0 ] (__codelineno-0-625) [ 1935 0 R /XYZ 60.307257 275.210598 0 ] (__codelineno-0-626) [ 1935 0 R /XYZ 60.307257 261.810246 0 ] (__codelineno-0-627) [ 1935 0 R /XYZ 60.307257 248.409894 0 ] (__codelineno-0-628) [ 1935 0 R /XYZ 60.307257 235.009542 0 ] (__codelineno-0-629) [ 1935 0 R /XYZ 60.307257 221.609190 0 ] (__codelineno-0-63) [ 1767 0 R /XYZ 60.307257 449.415174 0 ] (__codelineno-0-630) [ 1935 0 R /XYZ 60.307257 208.208838 0 ] (__codelineno-0-631) [ 1935 0 R /XYZ 60.307257 194.808486 0 ] (__codelineno-0-632) [ 1935 0 R /XYZ 60.307257 181.408134 0 ] (__codelineno-0-633) [ 1935 0 R /XYZ 60.307257 168.007782 0 ] (__codelineno-0-634) [ 1935 0 R /XYZ 60.307257 141.207078 0 ] (__codelineno-0-635) [ 1935 0 R /XYZ 60.307257 127.806726 0 ] (__codelineno-0-636) [ 1935 0 R /XYZ 60.307257 101.006022 0 ] (__codelineno-0-637) [ 1935 0 R /XYZ 60.307257 87.605670 0 ] (__codelineno-0-638) [ 1937 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-0-639) [ 1937 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-0-64) [ 1767 0 R /XYZ 60.307257 436.014822 0 ] (__codelineno-0-640) [ 1937 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-0-641) [ 1937 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-0-642) [ 1937 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-0-643) [ 1937 0 R /XYZ 60.307257 704.021862 0 ] (__codelineno-0-644) [ 1937 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-0-645) [ 1937 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-0-646) [ 1937 0 R /XYZ 60.307257 650.420454 0 ] (__codelineno-0-647) [ 1937 0 R /XYZ 60.307257 623.619750 0 ] (__codelineno-0-648) [ 1937 0 R /XYZ 60.307257 610.219398 0 ] (__codelineno-0-649) [ 1937 0 R /XYZ 60.307257 596.819046 0 ] (__codelineno-0-65) [ 1767 0 R /XYZ 60.307257 422.614470 0 ] (__codelineno-0-650) [ 1937 0 R /XYZ 60.307257 583.418694 0 ] (__codelineno-0-651) [ 1937 0 R /XYZ 60.307257 570.018342 0 ] (__codelineno-0-652) [ 1937 0 R /XYZ 60.307257 556.617990 0 ] (__codelineno-0-653) [ 1937 0 R /XYZ 60.307257 543.217638 0 ] (__codelineno-0-654) [ 1937 0 R /XYZ 60.307257 529.817286 0 ] (__codelineno-0-655) [ 1937 0 R /XYZ 60.307257 516.416934 0 ] (__codelineno-0-656) [ 1937 0 R /XYZ 60.307257 503.016582 0 ] (__codelineno-0-657) [ 1937 0 R /XYZ 60.307257 489.616230 0 ] (__codelineno-0-658) [ 1937 0 R /XYZ 60.307257 476.215878 0 ] (__codelineno-0-659) [ 1937 0 R /XYZ 60.307257 462.815526 0 ] (__codelineno-0-66) [ 1767 0 R /XYZ 60.307257 409.214118 0 ] (__codelineno-0-660) [ 1937 0 R /XYZ 60.307257 449.415174 0 ] (__codelineno-0-661) [ 1937 0 R /XYZ 60.307257 436.014822 0 ] (__codelineno-0-662) [ 1937 0 R /XYZ 60.307257 422.614470 0 ] (__codelineno-0-663) [ 1937 0 R /XYZ 60.307257 409.214118 0 ] (__codelineno-0-664) [ 1937 0 R /XYZ 60.307257 395.813766 0 ] (__codelineno-0-665) [ 1937 0 R /XYZ 60.307257 382.413414 0 ] (__codelineno-0-666) [ 1937 0 R /XYZ 60.307257 369.013062 0 ] (__codelineno-0-667) [ 1937 0 R /XYZ 60.307257 355.612710 0 ] (__codelineno-0-668) [ 1937 0 R /XYZ 60.307257 342.212358 0 ] (__codelineno-0-669) [ 1937 0 R /XYZ 60.307257 328.812006 0 ] (__codelineno-0-67) [ 1767 0 R /XYZ 60.307257 395.813766 0 ] (__codelineno-0-670) [ 1937 0 R /XYZ 60.307257 315.411654 0 ] (__codelineno-0-671) [ 1937 0 R /XYZ 60.307257 302.011302 0 ] (__codelineno-0-672) [ 1937 0 R /XYZ 60.307257 288.610950 0 ] (__codelineno-0-673) [ 1937 0 R /XYZ 60.307257 275.210598 0 ] (__codelineno-0-674) [ 2005 0 R /XYZ 60.307257 194.808486 0 ] (__codelineno-0-675) [ 2005 0 R /XYZ 60.307257 181.408134 0 ] (__codelineno-0-676) [ 2005 0 R /XYZ 60.307257 168.007782 0 ] (__codelineno-0-68) [ 1767 0 R /XYZ 60.307257 382.413414 0 ] (__codelineno-0-69) [ 1767 0 R /XYZ 60.307257 369.013062 0 ] (__codelineno-0-7) [ 1138 0 R /XYZ 60.307257 424.690110 0 ] (__codelineno-0-70) [ 1767 0 R /XYZ 60.307257 355.612710 0 ] (__codelineno-0-71) [ 1767 0 R /XYZ 60.307257 342.212358 0 ] (__codelineno-0-72) [ 1767 0 R /XYZ 60.307257 328.812006 0 ] (__codelineno-0-73) [ 1767 0 R /XYZ 60.307257 315.411654 0 ] (__codelineno-0-74) [ 1767 0 R /XYZ 60.307257 302.011302 0 ] (__codelineno-0-75) [ 1767 0 R /XYZ 60.307257 288.610950 0 ] (__codelineno-0-76) [ 1767 0 R /XYZ 60.307257 275.210598 0 ] (__codelineno-0-77) [ 1767 0 R /XYZ 60.307257 261.810246 0 ] (__codelineno-0-78) [ 1767 0 R /XYZ 60.307257 248.409894 0 ] (__codelineno-0-79) [ 1767 0 R /XYZ 60.307257 235.009542 0 ] (__codelineno-0-8) [ 1138 0 R /XYZ 60.307257 411.289758 0 ] (__codelineno-0-80) [ 1767 0 R /XYZ 60.307257 221.609190 0 ] (__codelineno-0-81) [ 1767 0 R /XYZ 60.307257 208.208838 0 ] (__codelineno-0-82) [ 1767 0 R /XYZ 60.307257 194.808486 0 ] (__codelineno-0-83) [ 1767 0 R /XYZ 60.307257 181.408134 0 ] (__codelineno-0-84) [ 1767 0 R /XYZ 60.307257 168.007782 0 ] (__codelineno-0-85) [ 1767 0 R /XYZ 60.307257 154.607430 0 ] (__codelineno-0-86) [ 1767 0 R /XYZ 60.307257 141.207078 0 ] (__codelineno-0-87) [ 1767 0 R /XYZ 60.307257 127.806726 0 ] (__codelineno-0-88) [ 1767 0 R /XYZ 60.307257 101.006022 0 ] (__codelineno-0-89) [ 1767 0 R /XYZ 60.307257 87.605670 0 ] (__codelineno-0-9) [ 1138 0 R /XYZ 60.307257 397.889406 0 ] (__codelineno-0-90) [ 1769 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-0-91) [ 1769 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-0-92) [ 1769 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-0-93) [ 1769 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-0-94) [ 1769 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-0-95) [ 1769 0 R /XYZ 60.307257 704.021862 0 ] (__codelineno-0-96) [ 1769 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-0-97) [ 1769 0 R /XYZ 60.307257 677.221158 0 ] (__codelineno-0-98) [ 1769 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-0-99) [ 1769 0 R /XYZ 60.307257 650.420454 0 ] (__codelineno-1-1) [ 661 0 R /XYZ 60.307257 202.470522 0 ] (__codelineno-1-10) [ 663 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-1-11) [ 663 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-1-12) [ 663 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-1-13) [ 663 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-1-2) [ 661 0 R /XYZ 60.307257 189.070170 0 ] (__codelineno-1-3) [ 661 0 R /XYZ 60.307257 175.669818 0 ] (__codelineno-1-4) [ 661 0 R /XYZ 60.307257 162.269466 0 ] (__codelineno-1-5) [ 661 0 R /XYZ 60.307257 148.869114 0 ] (__codelineno-1-6) [ 661 0 R /XYZ 60.307257 135.468762 0 ] (__codelineno-1-7) [ 661 0 R /XYZ 60.307257 122.068410 0 ] (__codelineno-1-8) [ 661 0 R /XYZ 60.307257 108.668058 0 ] (__codelineno-1-9) [ 661 0 R /XYZ 60.307257 95.267706 0 ] (__codelineno-10-1) [ 941 0 R /XYZ 60.307257 140.764186 0 ] (__codelineno-10-10) [ 946 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-10-11) [ 946 0 R /XYZ 60.307257 677.221158 0 ] (__codelineno-10-12) [ 946 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-10-13) [ 946 0 R /XYZ 60.307257 650.420454 0 ] (__codelineno-10-14) [ 946 0 R /XYZ 60.307257 637.020102 0 ] (__codelineno-10-15) [ 946 0 R /XYZ 60.307257 623.619750 0 ] (__codelineno-10-16) [ 946 0 R /XYZ 60.307257 610.219398 0 ] (__codelineno-10-17) [ 946 0 R /XYZ 60.307257 596.819046 0 ] (__codelineno-10-18) [ 946 0 R /XYZ 60.307257 583.418694 0 ] (__codelineno-10-19) [ 946 0 R /XYZ 60.307257 570.018342 0 ] (__codelineno-10-2) [ 941 0 R /XYZ 60.307257 113.963482 0 ] (__codelineno-10-20) [ 946 0 R /XYZ 60.307257 556.617990 0 ] (__codelineno-10-21) [ 946 0 R /XYZ 60.307257 543.217638 0 ] (__codelineno-10-22) [ 946 0 R /XYZ 60.307257 529.817286 0 ] (__codelineno-10-23) [ 946 0 R /XYZ 60.307257 516.416934 0 ] (__codelineno-10-24) [ 946 0 R /XYZ 60.307257 503.016582 0 ] (__codelineno-10-25) [ 946 0 R /XYZ 60.307257 489.616230 0 ] (__codelineno-10-26) [ 946 0 R /XYZ 60.307257 476.215878 0 ] (__codelineno-10-27) [ 946 0 R /XYZ 60.307257 462.815526 0 ] (__codelineno-10-28) [ 946 0 R /XYZ 60.307257 449.415174 0 ] (__codelineno-10-29) [ 946 0 R /XYZ 60.307257 436.014822 0 ] (__codelineno-10-3) [ 941 0 R /XYZ 60.307257 100.563130 0 ] (__codelineno-10-4) [ 941 0 R /XYZ 60.307257 87.162778 0 ] (__codelineno-10-5) [ 946 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-10-6) [ 946 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-10-7) [ 946 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-10-8) [ 946 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-10-9) [ 946 0 R /XYZ 60.307257 704.021862 0 ] (__codelineno-11-1) [ 957 0 R /XYZ 60.307257 186.718980 0 ] (__codelineno-11-10) [ 961 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-11-11) [ 961 0 R /XYZ 60.307257 704.021862 0 ] (__codelineno-11-12) [ 961 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-11-13) [ 961 0 R /XYZ 60.307257 677.221158 0 ] (__codelineno-11-14) [ 961 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-11-15) [ 961 0 R /XYZ 60.307257 650.420454 0 ] (__codelineno-11-16) [ 961 0 R /XYZ 60.307257 637.020102 0 ] (__codelineno-11-17) [ 1344 0 R /XYZ 60.307257 610.219398 0 ] (__codelineno-11-18) [ 1344 0 R /XYZ 60.307257 596.819046 0 ] (__codelineno-11-19) [ 1344 0 R /XYZ 60.307257 583.418694 0 ] (__codelineno-11-2) [ 957 0 R /XYZ 60.307257 159.918276 0 ] (__codelineno-11-20) [ 1344 0 R /XYZ 60.307257 570.018342 0 ] (__codelineno-11-21) [ 1344 0 R /XYZ 60.307257 556.617990 0 ] (__codelineno-11-22) [ 1344 0 R /XYZ 60.307257 543.217638 0 ] (__codelineno-11-3) [ 957 0 R /XYZ 60.307257 133.117572 0 ] (__codelineno-11-4) [ 957 0 R /XYZ 60.307257 119.717220 0 ] (__codelineno-11-5) [ 957 0 R /XYZ 60.307257 106.316868 0 ] (__codelineno-11-6) [ 961 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-11-7) [ 961 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-11-8) [ 961 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-11-9) [ 961 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-12-1) [ 963 0 R /XYZ 60.307257 186.377322 0 ] (__codelineno-12-10) [ 965 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-12-11) [ 965 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-12-12) [ 965 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-12-13) [ 965 0 R /XYZ 60.307257 704.021862 0 ] (__codelineno-12-14) [ 965 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-12-15) [ 965 0 R /XYZ 60.307257 677.221158 0 ] (__codelineno-12-16) [ 965 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-12-17) [ 965 0 R /XYZ 60.307257 650.420454 0 ] (__codelineno-12-18) [ 965 0 R /XYZ 60.307257 637.020102 0 ] (__codelineno-12-19) [ 965 0 R /XYZ 60.307257 623.619750 0 ] (__codelineno-12-2) [ 963 0 R /XYZ 60.307257 172.976970 0 ] (__codelineno-12-20) [ 965 0 R /XYZ 60.307257 610.219398 0 ] (__codelineno-12-21) [ 965 0 R /XYZ 60.307257 596.819046 0 ] (__codelineno-12-22) [ 965 0 R /XYZ 60.307257 583.418694 0 ] (__codelineno-12-23) [ 965 0 R /XYZ 60.307257 570.018342 0 ] (__codelineno-12-24) [ 965 0 R /XYZ 60.307257 556.617990 0 ] (__codelineno-12-25) [ 965 0 R /XYZ 60.307257 543.217638 0 ] (__codelineno-12-26) [ 965 0 R /XYZ 60.307257 516.416934 0 ] (__codelineno-12-27) [ 965 0 R /XYZ 60.307257 503.016582 0 ] (__codelineno-12-28) [ 965 0 R /XYZ 60.307257 489.616230 0 ] (__codelineno-12-29) [ 965 0 R /XYZ 60.307257 476.215878 0 ] (__codelineno-12-3) [ 963 0 R /XYZ 60.307257 159.576618 0 ] (__codelineno-12-30) [ 965 0 R /XYZ 60.307257 462.815526 0 ] (__codelineno-12-31) [ 965 0 R /XYZ 60.307257 449.415174 0 ] (__codelineno-12-32) [ 965 0 R /XYZ 60.307257 422.614470 0 ] (__codelineno-12-33) [ 965 0 R /XYZ 60.307257 395.813766 0 ] (__codelineno-12-34) [ 965 0 R /XYZ 60.307257 382.413414 0 ] (__codelineno-12-35) [ 965 0 R /XYZ 60.307257 369.013062 0 ] (__codelineno-12-36) [ 965 0 R /XYZ 60.307257 355.612710 0 ] (__codelineno-12-4) [ 963 0 R /XYZ 60.307257 146.176266 0 ] (__codelineno-12-5) [ 963 0 R /XYZ 60.307257 132.775914 0 ] (__codelineno-12-6) [ 963 0 R /XYZ 60.307257 119.375562 0 ] (__codelineno-12-7) [ 963 0 R /XYZ 60.307257 105.975210 0 ] (__codelineno-12-8) [ 963 0 R /XYZ 60.307257 92.574858 0 ] (__codelineno-12-9) [ 965 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-13-1) [ 1348 0 R /XYZ 60.307257 722.344122 0 ] (__codelineno-13-2) [ 1348 0 R /XYZ 60.307257 708.943770 0 ] (__codelineno-13-3) [ 1348 0 R /XYZ 60.307257 695.543418 0 ] (__codelineno-13-4) [ 1348 0 R /XYZ 60.307257 682.143066 0 ] (__codelineno-13-5) [ 1348 0 R /XYZ 60.307257 668.742714 0 ] (__codelineno-13-6) [ 1348 0 R /XYZ 60.307257 655.342362 0 ] (__codelineno-13-7) [ 1348 0 R /XYZ 60.307257 641.942010 0 ] (__codelineno-13-8) [ 1348 0 R /XYZ 60.307257 628.541658 0 ] (__codelineno-13-9) [ 1348 0 R /XYZ 60.307257 615.141306 0 ] (__codelineno-14-1) [ 1348 0 R /XYZ 60.307257 510.012354 0 ] (__codelineno-14-2) [ 1348 0 R /XYZ 60.307257 496.612002 0 ] (__codelineno-14-3) [ 1348 0 R /XYZ 60.307257 483.211650 0 ] (__codelineno-14-4) [ 1348 0 R /XYZ 60.307257 469.811298 0 ] (__codelineno-14-5) [ 1348 0 R /XYZ 60.307257 456.410946 0 ] (__codelineno-14-6) [ 1348 0 R /XYZ 60.307257 443.010594 0 ] (__codelineno-14-7) [ 1348 0 R /XYZ 60.307257 429.610242 0 ] (__codelineno-14-8) [ 1348 0 R /XYZ 60.307257 416.209890 0 ] (__codelineno-14-9) [ 1348 0 R /XYZ 60.307257 402.809538 0 ] (__codelineno-15-1) [ 1386 0 R /XYZ 60.307257 512.569722 0 ] (__codelineno-15-10) [ 1386 0 R /XYZ 60.307257 391.966554 0 ] (__codelineno-15-11) [ 1386 0 R /XYZ 60.307257 378.566202 0 ] (__codelineno-15-12) [ 1386 0 R /XYZ 60.307257 365.165850 0 ] (__codelineno-15-13) [ 1386 0 R /XYZ 60.307257 351.765498 0 ] (__codelineno-15-14) [ 1386 0 R /XYZ 60.307257 338.365146 0 ] (__codelineno-15-15) [ 1386 0 R /XYZ 60.307257 324.964794 0 ] (__codelineno-15-16) [ 1386 0 R /XYZ 60.307257 311.564442 0 ] (__codelineno-15-17) [ 1386 0 R /XYZ 60.307257 298.164090 0 ] (__codelineno-15-18) [ 1386 0 R /XYZ 60.307257 284.763738 0 ] (__codelineno-15-2) [ 1386 0 R /XYZ 60.307257 499.169370 0 ] (__codelineno-15-3) [ 1386 0 R /XYZ 60.307257 485.769018 0 ] (__codelineno-15-4) [ 1386 0 R /XYZ 60.307257 472.368666 0 ] (__codelineno-15-5) [ 1386 0 R /XYZ 60.307257 458.968314 0 ] (__codelineno-15-6) [ 1386 0 R /XYZ 60.307257 445.567962 0 ] (__codelineno-15-7) [ 1386 0 R /XYZ 60.307257 432.167610 0 ] (__codelineno-15-8) [ 1386 0 R /XYZ 60.307257 418.767258 0 ] (__codelineno-15-9) [ 1386 0 R /XYZ 60.307257 405.366906 0 ] (__codelineno-16-1) [ 1391 0 R /XYZ 60.307257 422.361822 0 ] (__codelineno-16-10) [ 1391 0 R /XYZ 60.307257 301.758654 0 ] (__codelineno-16-11) [ 1391 0 R /XYZ 60.307257 288.358302 0 ] (__codelineno-16-12) [ 1391 0 R /XYZ 60.307257 274.957950 0 ] (__codelineno-16-13) [ 1391 0 R /XYZ 60.307257 261.557598 0 ] (__codelineno-16-14) [ 1391 0 R /XYZ 60.307257 248.157246 0 ] (__codelineno-16-15) [ 1391 0 R /XYZ 60.307257 234.756894 0 ] (__codelineno-16-16) [ 1391 0 R /XYZ 60.307257 221.356542 0 ] (__codelineno-16-17) [ 1391 0 R /XYZ 60.307257 207.956190 0 ] (__codelineno-16-18) [ 1391 0 R /XYZ 60.307257 194.555838 0 ] (__codelineno-16-2) [ 1391 0 R /XYZ 60.307257 408.961470 0 ] (__codelineno-16-3) [ 1391 0 R /XYZ 60.307257 395.561118 0 ] (__codelineno-16-4) [ 1391 0 R /XYZ 60.307257 382.160766 0 ] (__codelineno-16-5) [ 1391 0 R /XYZ 60.307257 368.760414 0 ] (__codelineno-16-6) [ 1391 0 R /XYZ 60.307257 355.360062 0 ] (__codelineno-16-7) [ 1391 0 R /XYZ 60.307257 341.959710 0 ] (__codelineno-16-8) [ 1391 0 R /XYZ 60.307257 328.559358 0 ] (__codelineno-16-9) [ 1391 0 R /XYZ 60.307257 315.159006 0 ] (__codelineno-17-1) [ 1402 0 R /XYZ 60.307257 363.601105 0 ] (__codelineno-17-10) [ 1402 0 R /XYZ 60.307257 242.997937 0 ] (__codelineno-17-11) [ 1402 0 R /XYZ 60.307257 229.597585 0 ] (__codelineno-17-12) [ 1402 0 R /XYZ 60.307257 202.796881 0 ] (__codelineno-17-13) [ 1402 0 R /XYZ 60.307257 189.396529 0 ] (__codelineno-17-14) [ 1402 0 R /XYZ 60.307257 175.996177 0 ] (__codelineno-17-15) [ 1402 0 R /XYZ 60.307257 162.595825 0 ] (__codelineno-17-16) [ 1402 0 R /XYZ 60.307257 149.195473 0 ] (__codelineno-17-17) [ 1402 0 R /XYZ 60.307257 135.795121 0 ] (__codelineno-17-18) [ 1402 0 R /XYZ 60.307257 122.394769 0 ] (__codelineno-17-19) [ 1402 0 R /XYZ 60.307257 108.994417 0 ] (__codelineno-17-2) [ 1402 0 R /XYZ 60.307257 350.200753 0 ] (__codelineno-17-20) [ 1402 0 R /XYZ 60.307257 95.594065 0 ] (__codelineno-17-21) [ 1406 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-17-22) [ 1406 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-17-23) [ 1406 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-17-24) [ 1406 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-17-3) [ 1402 0 R /XYZ 60.307257 336.800401 0 ] (__codelineno-17-4) [ 1402 0 R /XYZ 60.307257 323.400049 0 ] (__codelineno-17-5) [ 1402 0 R /XYZ 60.307257 309.999697 0 ] (__codelineno-17-6) [ 1402 0 R /XYZ 60.307257 296.599345 0 ] (__codelineno-17-7) [ 1402 0 R /XYZ 60.307257 283.198993 0 ] (__codelineno-17-8) [ 1402 0 R /XYZ 60.307257 269.798641 0 ] (__codelineno-17-9) [ 1402 0 R /XYZ 60.307257 256.398289 0 ] (__codelineno-18-1) [ 1437 0 R /XYZ 60.307257 236.252922 0 ] (__codelineno-18-10) [ 1439 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-18-11) [ 1439 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-18-12) [ 1439 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-18-13) [ 1439 0 R /XYZ 60.307257 637.020102 0 ] (__codelineno-18-14) [ 1439 0 R /XYZ 60.307257 610.219398 0 ] (__codelineno-18-15) [ 1439 0 R /XYZ 60.307257 583.418694 0 ] (__codelineno-18-16) [ 1439 0 R /XYZ 60.307257 556.617990 0 ] (__codelineno-18-17) [ 1439 0 R /XYZ 60.307257 543.217638 0 ] (__codelineno-18-18) [ 1439 0 R /XYZ 60.307257 529.817286 0 ] (__codelineno-18-2) [ 1437 0 R /XYZ 60.307257 222.852570 0 ] (__codelineno-18-3) [ 1437 0 R /XYZ 60.307257 209.452218 0 ] (__codelineno-18-4) [ 1437 0 R /XYZ 60.307257 169.251162 0 ] (__codelineno-18-5) [ 1437 0 R /XYZ 60.307257 142.450458 0 ] (__codelineno-18-6) [ 1437 0 R /XYZ 60.307257 129.050106 0 ] (__codelineno-18-7) [ 1437 0 R /XYZ 60.307257 115.649754 0 ] (__codelineno-18-8) [ 1437 0 R /XYZ 60.307257 88.849050 0 ] (__codelineno-18-9) [ 1439 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-19-1) [ 1439 0 R /XYZ 60.307257 464.101134 0 ] (__codelineno-19-2) [ 1439 0 R /XYZ 60.307257 450.700782 0 ] (__codelineno-19-3) [ 1439 0 R /XYZ 60.307257 437.300430 0 ] (__codelineno-19-4) [ 1439 0 R /XYZ 60.307257 423.900078 0 ] (__codelineno-2-1) [ 663 0 R /XYZ 60.307257 422.999214 0 ] (__codelineno-2-10) [ 663 0 R /XYZ 60.307257 302.396046 0 ] (__codelineno-2-11) [ 663 0 R /XYZ 60.307257 275.595342 0 ] (__codelineno-2-12) [ 663 0 R /XYZ 60.307257 262.194990 0 ] (__codelineno-2-13) [ 663 0 R /XYZ 60.307257 248.794638 0 ] (__codelineno-2-14) [ 663 0 R /XYZ 60.307257 235.394286 0 ] (__codelineno-2-15) [ 663 0 R /XYZ 60.307257 221.993934 0 ] (__codelineno-2-16) [ 663 0 R /XYZ 60.307257 208.593582 0 ] (__codelineno-2-17) [ 663 0 R /XYZ 60.307257 195.193230 0 ] (__codelineno-2-18) [ 663 0 R /XYZ 60.307257 181.792878 0 ] (__codelineno-2-19) [ 663 0 R /XYZ 60.307257 168.392526 0 ] (__codelineno-2-2) [ 663 0 R /XYZ 60.307257 409.598862 0 ] (__codelineno-2-20) [ 663 0 R /XYZ 60.307257 154.992174 0 ] (__codelineno-2-21) [ 663 0 R /XYZ 60.307257 141.591822 0 ] (__codelineno-2-22) [ 663 0 R /XYZ 60.307257 128.191470 0 ] (__codelineno-2-23) [ 663 0 R /XYZ 60.307257 114.791118 0 ] (__codelineno-2-24) [ 663 0 R /XYZ 60.307257 101.390766 0 ] (__codelineno-2-25) [ 663 0 R /XYZ 60.307257 87.990414 0 ] (__codelineno-2-26) [ 665 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-2-27) [ 665 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-2-28) [ 665 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-2-3) [ 663 0 R /XYZ 60.307257 396.198510 0 ] (__codelineno-2-4) [ 663 0 R /XYZ 60.307257 382.798158 0 ] (__codelineno-2-5) [ 663 0 R /XYZ 60.307257 369.397806 0 ] (__codelineno-2-6) [ 663 0 R /XYZ 60.307257 355.997454 0 ] (__codelineno-2-7) [ 663 0 R /XYZ 60.307257 342.597102 0 ] (__codelineno-2-8) [ 663 0 R /XYZ 60.307257 329.196750 0 ] (__codelineno-2-9) [ 663 0 R /XYZ 60.307257 315.796398 0 ] (__codelineno-20-1) [ 1439 0 R /XYZ 60.307257 333.785526 0 ] (__codelineno-20-2) [ 1439 0 R /XYZ 60.307257 320.385174 0 ] (__codelineno-20-3) [ 1439 0 R /XYZ 60.307257 306.984822 0 ] (__codelineno-20-4) [ 1439 0 R /XYZ 60.307257 293.584470 0 ] (__codelineno-21-1) [ 1439 0 R /XYZ 60.307257 227.868318 0 ] (__codelineno-21-2) [ 1439 0 R /XYZ 60.307257 214.467966 0 ] (__codelineno-21-3) [ 1439 0 R /XYZ 60.307257 201.067614 0 ] (__codelineno-21-4) [ 1439 0 R /XYZ 60.307257 187.667262 0 ] (__codelineno-21-5) [ 1439 0 R /XYZ 60.307257 174.266910 0 ] (__codelineno-21-6) [ 1439 0 R /XYZ 60.307257 160.866558 0 ] (__codelineno-21-7) [ 1439 0 R /XYZ 60.307257 134.065854 0 ] (__codelineno-21-8) [ 1439 0 R /XYZ 60.307257 120.665502 0 ] (__codelineno-22-1) [ 1441 0 R /XYZ 60.307257 697.945722 0 ] (__codelineno-22-2) [ 1441 0 R /XYZ 60.307257 684.545370 0 ] (__codelineno-22-3) [ 1441 0 R /XYZ 60.307257 671.145018 0 ] (__codelineno-22-4) [ 1441 0 R /XYZ 60.307257 644.344314 0 ] (__codelineno-22-5) [ 1441 0 R /XYZ 60.307257 630.943962 0 ] (__codelineno-23-1) [ 1458 0 R /XYZ 60.307257 422.056122 0 ] (__codelineno-23-2) [ 1458 0 R /XYZ 60.307257 381.855066 0 ] (__codelineno-23-3) [ 1458 0 R /XYZ 60.307257 368.454714 0 ] (__codelineno-23-4) [ 1458 0 R /XYZ 60.307257 355.054362 0 ] (__codelineno-23-5) [ 1458 0 R /XYZ 60.307257 341.654010 0 ] (__codelineno-24-1) [ 1463 0 R /XYZ 60.307257 520.588122 0 ] (__codelineno-24-10) [ 1463 0 R /XYZ 60.307257 373.184250 0 ] (__codelineno-24-2) [ 1463 0 R /XYZ 60.307257 480.387066 0 ] (__codelineno-24-3) [ 1463 0 R /XYZ 60.307257 466.986714 0 ] (__codelineno-24-4) [ 1463 0 R /XYZ 60.307257 453.586362 0 ] (__codelineno-24-5) [ 1463 0 R /XYZ 60.307257 440.186010 0 ] (__codelineno-24-6) [ 1463 0 R /XYZ 60.307257 426.785658 0 ] (__codelineno-24-7) [ 1463 0 R /XYZ 60.307257 413.385306 0 ] (__codelineno-24-8) [ 1463 0 R /XYZ 60.307257 399.984954 0 ] (__codelineno-24-9) [ 1463 0 R /XYZ 60.307257 386.584602 0 ] (__codelineno-25-1) [ 1465 0 R /XYZ 60.307257 342.292122 0 ] (__codelineno-25-10) [ 1465 0 R /XYZ 60.307257 221.688954 0 ] (__codelineno-25-11) [ 1465 0 R /XYZ 60.307257 208.288602 0 ] (__codelineno-25-12) [ 1465 0 R /XYZ 60.307257 194.888250 0 ] (__codelineno-25-13) [ 1465 0 R /XYZ 60.307257 181.487898 0 ] (__codelineno-25-14) [ 1465 0 R /XYZ 60.307257 168.087546 0 ] (__codelineno-25-15) [ 1465 0 R /XYZ 60.307257 154.687194 0 ] (__codelineno-25-16) [ 1465 0 R /XYZ 60.307257 141.286842 0 ] (__codelineno-25-17) [ 1465 0 R /XYZ 60.307257 127.886490 0 ] (__codelineno-25-18) [ 1465 0 R /XYZ 60.307257 114.486138 0 ] (__codelineno-25-19) [ 1465 0 R /XYZ 60.307257 101.085786 0 ] (__codelineno-25-2) [ 1465 0 R /XYZ 60.307257 328.891770 0 ] (__codelineno-25-20) [ 1465 0 R /XYZ 60.307257 87.685434 0 ] (__codelineno-25-21) [ 1467 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-25-22) [ 1467 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-25-23) [ 1467 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-25-24) [ 1467 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-25-25) [ 1467 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-25-26) [ 1467 0 R /XYZ 60.307257 704.021862 0 ] (__codelineno-25-27) [ 1467 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-25-28) [ 1467 0 R /XYZ 60.307257 677.221158 0 ] (__codelineno-25-29) [ 1467 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-25-3) [ 1465 0 R /XYZ 60.307257 315.491418 0 ] (__codelineno-25-30) [ 1467 0 R /XYZ 60.307257 650.420454 0 ] (__codelineno-25-31) [ 1467 0 R /XYZ 60.307257 637.020102 0 ] (__codelineno-25-32) [ 1467 0 R /XYZ 60.307257 623.619750 0 ] (__codelineno-25-33) [ 1467 0 R /XYZ 60.307257 610.219398 0 ] (__codelineno-25-34) [ 1467 0 R /XYZ 60.307257 596.819046 0 ] (__codelineno-25-35) [ 1467 0 R /XYZ 60.307257 583.418694 0 ] (__codelineno-25-36) [ 1467 0 R /XYZ 60.307257 570.018342 0 ] (__codelineno-25-37) [ 1467 0 R /XYZ 60.307257 556.617990 0 ] (__codelineno-25-38) [ 1467 0 R /XYZ 60.307257 543.217638 0 ] (__codelineno-25-39) [ 1467 0 R /XYZ 60.307257 516.416934 0 ] (__codelineno-25-4) [ 1465 0 R /XYZ 60.307257 302.091066 0 ] (__codelineno-25-40) [ 1467 0 R /XYZ 60.307257 503.016582 0 ] (__codelineno-25-41) [ 1467 0 R /XYZ 60.307257 489.616230 0 ] (__codelineno-25-42) [ 1467 0 R /XYZ 60.307257 476.215878 0 ] (__codelineno-25-43) [ 1467 0 R /XYZ 60.307257 462.815526 0 ] (__codelineno-25-44) [ 1467 0 R /XYZ 60.307257 449.415174 0 ] (__codelineno-25-45) [ 1467 0 R /XYZ 60.307257 436.014822 0 ] (__codelineno-25-46) [ 1467 0 R /XYZ 60.307257 422.614470 0 ] (__codelineno-25-47) [ 1467 0 R /XYZ 60.307257 409.214118 0 ] (__codelineno-25-48) [ 1467 0 R /XYZ 60.307257 395.813766 0 ] (__codelineno-25-49) [ 1467 0 R /XYZ 60.307257 382.413414 0 ] (__codelineno-25-5) [ 1465 0 R /XYZ 60.307257 288.690714 0 ] (__codelineno-25-50) [ 1467 0 R /XYZ 60.307257 369.013062 0 ] (__codelineno-25-51) [ 1467 0 R /XYZ 60.307257 342.212358 0 ] (__codelineno-25-52) [ 1467 0 R /XYZ 60.307257 328.812006 0 ] (__codelineno-25-53) [ 1467 0 R /XYZ 60.307257 315.411654 0 ] (__codelineno-25-54) [ 1467 0 R /XYZ 60.307257 302.011302 0 ] (__codelineno-25-55) [ 1467 0 R /XYZ 60.307257 288.610950 0 ] (__codelineno-25-56) [ 1467 0 R /XYZ 60.307257 275.210598 0 ] (__codelineno-25-57) [ 1467 0 R /XYZ 60.307257 261.810246 0 ] (__codelineno-25-58) [ 1467 0 R /XYZ 60.307257 248.409894 0 ] (__codelineno-25-59) [ 1467 0 R /XYZ 60.307257 235.009542 0 ] (__codelineno-25-6) [ 1465 0 R /XYZ 60.307257 275.290362 0 ] (__codelineno-25-60) [ 1467 0 R /XYZ 60.307257 221.609190 0 ] (__codelineno-25-61) [ 1467 0 R /XYZ 60.307257 208.208838 0 ] (__codelineno-25-62) [ 1467 0 R /XYZ 60.307257 194.808486 0 ] (__codelineno-25-63) [ 1467 0 R /XYZ 60.307257 181.408134 0 ] (__codelineno-25-64) [ 1467 0 R /XYZ 60.307257 168.007782 0 ] (__codelineno-25-65) [ 1467 0 R /XYZ 60.307257 154.607430 0 ] (__codelineno-25-66) [ 1467 0 R /XYZ 60.307257 141.207078 0 ] (__codelineno-25-67) [ 1467 0 R /XYZ 60.307257 127.806726 0 ] (__codelineno-25-68) [ 1467 0 R /XYZ 60.307257 114.406374 0 ] (__codelineno-25-7) [ 1465 0 R /XYZ 60.307257 261.890010 0 ] (__codelineno-25-8) [ 1465 0 R /XYZ 60.307257 248.489658 0 ] (__codelineno-25-9) [ 1465 0 R /XYZ 60.307257 235.089306 0 ] (__codelineno-26-1) [ 1469 0 R /XYZ 60.307257 412.672122 0 ] (__codelineno-26-2) [ 1469 0 R /XYZ 60.307257 385.871418 0 ] (__codelineno-26-3) [ 1469 0 R /XYZ 60.307257 372.471066 0 ] (__codelineno-26-4) [ 1469 0 R /XYZ 60.307257 345.670362 0 ] (__codelineno-26-5) [ 1469 0 R /XYZ 60.307257 332.270010 0 ] (__codelineno-26-6) [ 1469 0 R /XYZ 60.307257 305.469306 0 ] (__codelineno-27-1) [ 1509 0 R /XYZ 60.307257 292.862622 0 ] (__codelineno-27-10) [ 1509 0 R /XYZ 60.307257 158.859102 0 ] (__codelineno-27-2) [ 1509 0 R /XYZ 60.307257 279.462270 0 ] (__codelineno-27-3) [ 1509 0 R /XYZ 60.307257 266.061918 0 ] (__codelineno-27-4) [ 1509 0 R /XYZ 60.307257 252.661566 0 ] (__codelineno-27-5) [ 1509 0 R /XYZ 60.307257 239.261214 0 ] (__codelineno-27-6) [ 1509 0 R /XYZ 60.307257 225.860862 0 ] (__codelineno-27-7) [ 1509 0 R /XYZ 60.307257 212.460510 0 ] (__codelineno-27-8) [ 1509 0 R /XYZ 60.307257 185.659806 0 ] (__codelineno-27-9) [ 1509 0 R /XYZ 60.307257 172.259454 0 ] (__codelineno-28-1) [ 1513 0 R /XYZ 60.307257 722.344122 0 ] (__codelineno-28-10) [ 1513 0 R /XYZ 60.307257 548.139546 0 ] (__codelineno-28-11) [ 1513 0 R /XYZ 60.307257 534.739194 0 ] (__codelineno-28-12) [ 1513 0 R /XYZ 60.307257 521.338842 0 ] (__codelineno-28-13) [ 1513 0 R /XYZ 60.307257 507.938490 0 ] (__codelineno-28-14) [ 1513 0 R /XYZ 60.307257 467.737434 0 ] (__codelineno-28-15) [ 1513 0 R /XYZ 60.307257 454.337082 0 ] (__codelineno-28-16) [ 1513 0 R /XYZ 60.307257 440.936730 0 ] (__codelineno-28-17) [ 1513 0 R /XYZ 60.307257 427.536378 0 ] (__codelineno-28-2) [ 1513 0 R /XYZ 60.307257 708.943770 0 ] (__codelineno-28-3) [ 1513 0 R /XYZ 60.307257 668.742714 0 ] (__codelineno-28-4) [ 1513 0 R /XYZ 60.307257 655.342362 0 ] (__codelineno-28-5) [ 1513 0 R /XYZ 60.307257 641.942010 0 ] (__codelineno-28-6) [ 1513 0 R /XYZ 60.307257 628.541658 0 ] (__codelineno-28-7) [ 1513 0 R /XYZ 60.307257 601.740954 0 ] (__codelineno-28-8) [ 1513 0 R /XYZ 60.307257 588.340602 0 ] (__codelineno-28-9) [ 1513 0 R /XYZ 60.307257 574.940250 0 ] (__codelineno-29-1) [ 1513 0 R /XYZ 60.307257 361.820226 0 ] (__codelineno-29-2) [ 1513 0 R /XYZ 60.307257 348.419874 0 ] (__codelineno-29-3) [ 1513 0 R /XYZ 60.307257 335.019522 0 ] (__codelineno-29-4) [ 1513 0 R /XYZ 60.307257 321.619170 0 ] (__codelineno-29-5) [ 1513 0 R /XYZ 60.307257 308.218818 0 ] (__codelineno-3-1) [ 665 0 R /XYZ 60.307257 678.506766 0 ] (__codelineno-3-10) [ 665 0 R /XYZ 60.307257 557.903598 0 ] (__codelineno-3-11) [ 665 0 R /XYZ 60.307257 544.503246 0 ] (__codelineno-3-12) [ 665 0 R /XYZ 60.307257 531.102894 0 ] (__codelineno-3-13) [ 1166 0 R /XYZ 60.307257 504.302190 0 ] (__codelineno-3-14) [ 1166 0 R /XYZ 60.307257 477.501486 0 ] (__codelineno-3-15) [ 1166 0 R /XYZ 60.307257 464.101134 0 ] (__codelineno-3-16) [ 1166 0 R /XYZ 60.307257 437.300430 0 ] (__codelineno-3-17) [ 1166 0 R /XYZ 60.307257 423.900078 0 ] (__codelineno-3-18) [ 1166 0 R /XYZ 60.307257 410.499726 0 ] (__codelineno-3-19) [ 1166 0 R /XYZ 60.307257 397.099374 0 ] (__codelineno-3-2) [ 665 0 R /XYZ 60.307257 665.106414 0 ] (__codelineno-3-20) [ 1166 0 R /XYZ 60.307257 383.699022 0 ] (__codelineno-3-21) [ 1166 0 R /XYZ 60.307257 370.298670 0 ] (__codelineno-3-22) [ 1166 0 R /XYZ 60.307257 356.898318 0 ] (__codelineno-3-3) [ 665 0 R /XYZ 60.307257 651.706062 0 ] (__codelineno-3-4) [ 665 0 R /XYZ 60.307257 638.305710 0 ] (__codelineno-3-5) [ 665 0 R /XYZ 60.307257 624.905358 0 ] (__codelineno-3-6) [ 665 0 R /XYZ 60.307257 611.505006 0 ] (__codelineno-3-7) [ 665 0 R /XYZ 60.307257 598.104654 0 ] (__codelineno-3-8) [ 665 0 R /XYZ 60.307257 584.704302 0 ] (__codelineno-3-9) [ 665 0 R /XYZ 60.307257 571.303950 0 ] (__codelineno-30-1) [ 1517 0 R /XYZ 60.307257 763.633722 0 ] (__codelineno-30-2) [ 1517 0 R /XYZ 60.307257 750.233370 0 ] (__codelineno-31-1) [ 1582 0 R /XYZ 60.307257 525.280122 0 ] (__codelineno-31-10) [ 1582 0 R /XYZ 60.307257 404.676954 0 ] (__codelineno-31-11) [ 1582 0 R /XYZ 60.307257 391.276602 0 ] (__codelineno-31-12) [ 1582 0 R /XYZ 60.307257 377.876250 0 ] (__codelineno-31-13) [ 1582 0 R /XYZ 60.307257 364.475898 0 ] (__codelineno-31-14) [ 1582 0 R /XYZ 60.307257 351.075546 0 ] (__codelineno-31-15) [ 1582 0 R /XYZ 60.307257 337.675194 0 ] (__codelineno-31-16) [ 1582 0 R /XYZ 60.307257 324.274842 0 ] (__codelineno-31-17) [ 1582 0 R /XYZ 60.307257 310.874490 0 ] (__codelineno-31-18) [ 1582 0 R /XYZ 60.307257 297.474138 0 ] (__codelineno-31-19) [ 1582 0 R /XYZ 60.307257 284.073786 0 ] (__codelineno-31-2) [ 1582 0 R /XYZ 60.307257 511.879770 0 ] (__codelineno-31-20) [ 1582 0 R /XYZ 60.307257 270.673434 0 ] (__codelineno-31-21) [ 1582 0 R /XYZ 60.307257 257.273082 0 ] (__codelineno-31-22) [ 1582 0 R /XYZ 60.307257 243.872730 0 ] (__codelineno-31-23) [ 1582 0 R /XYZ 60.307257 230.472378 0 ] (__codelineno-31-24) [ 1582 0 R /XYZ 60.307257 217.072026 0 ] (__codelineno-31-25) [ 1582 0 R /XYZ 60.307257 203.671674 0 ] (__codelineno-31-26) [ 1582 0 R /XYZ 60.307257 190.271322 0 ] (__codelineno-31-27) [ 1582 0 R /XYZ 60.307257 176.870970 0 ] (__codelineno-31-28) [ 1582 0 R /XYZ 60.307257 163.470618 0 ] (__codelineno-31-29) [ 1582 0 R /XYZ 60.307257 150.070266 0 ] (__codelineno-31-3) [ 1582 0 R /XYZ 60.307257 498.479418 0 ] (__codelineno-31-30) [ 1582 0 R /XYZ 60.307257 136.669914 0 ] (__codelineno-31-31) [ 1582 0 R /XYZ 60.307257 123.269562 0 ] (__codelineno-31-32) [ 1582 0 R /XYZ 60.307257 109.869210 0 ] (__codelineno-31-33) [ 1582 0 R /XYZ 60.307257 96.468858 0 ] (__codelineno-31-34) [ 1584 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-31-35) [ 1584 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-31-36) [ 1584 0 R /XYZ 60.307257 704.021862 0 ] (__codelineno-31-37) [ 1584 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-31-38) [ 1584 0 R /XYZ 60.307257 677.221158 0 ] (__codelineno-31-39) [ 1584 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-31-4) [ 1582 0 R /XYZ 60.307257 485.079066 0 ] (__codelineno-31-40) [ 1584 0 R /XYZ 60.307257 650.420454 0 ] (__codelineno-31-41) [ 1584 0 R /XYZ 60.307257 623.619750 0 ] (__codelineno-31-42) [ 1584 0 R /XYZ 60.307257 596.819046 0 ] (__codelineno-31-43) [ 1584 0 R /XYZ 60.307257 583.418694 0 ] (__codelineno-31-44) [ 1584 0 R /XYZ 60.307257 570.018342 0 ] (__codelineno-31-45) [ 1584 0 R /XYZ 60.307257 556.617990 0 ] (__codelineno-31-46) [ 1584 0 R /XYZ 60.307257 529.817286 0 ] (__codelineno-31-47) [ 1584 0 R /XYZ 60.307257 503.016582 0 ] (__codelineno-31-48) [ 1584 0 R /XYZ 60.307257 476.215878 0 ] (__codelineno-31-49) [ 1584 0 R /XYZ 60.307257 462.815526 0 ] (__codelineno-31-5) [ 1582 0 R /XYZ 60.307257 471.678714 0 ] (__codelineno-31-50) [ 1584 0 R /XYZ 60.307257 449.415174 0 ] (__codelineno-31-6) [ 1582 0 R /XYZ 60.307257 458.278362 0 ] (__codelineno-31-7) [ 1582 0 R /XYZ 60.307257 444.878010 0 ] (__codelineno-31-8) [ 1582 0 R /XYZ 60.307257 431.477658 0 ] (__codelineno-31-9) [ 1582 0 R /XYZ 60.307257 418.077306 0 ] (__codelineno-32-1) [ 1603 0 R /XYZ 60.307257 737.358522 0 ] (__codelineno-32-10) [ 1603 0 R /XYZ 60.307257 603.355002 0 ] (__codelineno-32-11) [ 1603 0 R /XYZ 60.307257 589.954650 0 ] (__codelineno-32-12) [ 1603 0 R /XYZ 60.307257 576.554298 0 ] (__codelineno-32-13) [ 1603 0 R /XYZ 60.307257 563.153946 0 ] (__codelineno-32-14) [ 1603 0 R /XYZ 60.307257 549.753594 0 ] (__codelineno-32-15) [ 1603 0 R /XYZ 60.307257 536.353242 0 ] (__codelineno-32-16) [ 1603 0 R /XYZ 60.307257 522.952890 0 ] (__codelineno-32-17) [ 1603 0 R /XYZ 60.307257 509.552538 0 ] (__codelineno-32-18) [ 1603 0 R /XYZ 60.307257 482.751834 0 ] (__codelineno-32-19) [ 1603 0 R /XYZ 60.307257 455.951130 0 ] (__codelineno-32-2) [ 1603 0 R /XYZ 60.307257 723.958170 0 ] (__codelineno-32-20) [ 1603 0 R /XYZ 60.307257 442.550778 0 ] (__codelineno-32-21) [ 1603 0 R /XYZ 60.307257 429.150426 0 ] (__codelineno-32-22) [ 1603 0 R /XYZ 60.307257 415.750074 0 ] (__codelineno-32-23) [ 1603 0 R /XYZ 60.307257 402.349722 0 ] (__codelineno-32-24) [ 1603 0 R /XYZ 60.307257 388.949370 0 ] (__codelineno-32-25) [ 1603 0 R /XYZ 60.307257 362.148666 0 ] (__codelineno-32-26) [ 1603 0 R /XYZ 60.307257 335.347962 0 ] (__codelineno-32-27) [ 1603 0 R /XYZ 60.307257 321.947610 0 ] (__codelineno-32-28) [ 1603 0 R /XYZ 60.307257 308.547258 0 ] (__codelineno-32-29) [ 1603 0 R /XYZ 60.307257 295.146906 0 ] (__codelineno-32-3) [ 1603 0 R /XYZ 60.307257 710.557818 0 ] (__codelineno-32-30) [ 1603 0 R /XYZ 60.307257 281.746554 0 ] (__codelineno-32-31) [ 1603 0 R /XYZ 60.307257 268.346202 0 ] (__codelineno-32-32) [ 1603 0 R /XYZ 60.307257 254.945850 0 ] (__codelineno-32-33) [ 1603 0 R /XYZ 60.307257 241.545498 0 ] (__codelineno-32-34) [ 1603 0 R /XYZ 60.307257 214.744794 0 ] (__codelineno-32-35) [ 1603 0 R /XYZ 60.307257 201.344442 0 ] (__codelineno-32-36) [ 1603 0 R /XYZ 60.307257 174.543738 0 ] (__codelineno-32-37) [ 1603 0 R /XYZ 60.307257 147.743034 0 ] (__codelineno-32-38) [ 1603 0 R /XYZ 60.307257 120.942330 0 ] (__codelineno-32-39) [ 1603 0 R /XYZ 60.307257 107.541978 0 ] (__codelineno-32-4) [ 1603 0 R /XYZ 60.307257 697.157466 0 ] (__codelineno-32-40) [ 1603 0 R /XYZ 60.307257 94.141626 0 ] (__codelineno-32-41) [ 1605 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-32-42) [ 1605 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-32-43) [ 1605 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-32-44) [ 1605 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-32-45) [ 1605 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-32-46) [ 1605 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-32-47) [ 1605 0 R /XYZ 60.307257 637.020102 0 ] (__codelineno-32-48) [ 1605 0 R /XYZ 60.307257 623.619750 0 ] (__codelineno-32-49) [ 1605 0 R /XYZ 60.307257 610.219398 0 ] (__codelineno-32-5) [ 1603 0 R /XYZ 60.307257 670.356762 0 ] (__codelineno-32-50) [ 1605 0 R /XYZ 60.307257 596.819046 0 ] (__codelineno-32-51) [ 1605 0 R /XYZ 60.307257 583.418694 0 ] (__codelineno-32-52) [ 1605 0 R /XYZ 60.307257 570.018342 0 ] (__codelineno-32-53) [ 1605 0 R /XYZ 60.307257 556.617990 0 ] (__codelineno-32-54) [ 1605 0 R /XYZ 60.307257 543.217638 0 ] (__codelineno-32-55) [ 1605 0 R /XYZ 60.307257 516.416934 0 ] (__codelineno-32-56) [ 1605 0 R /XYZ 60.307257 489.616230 0 ] (__codelineno-32-57) [ 1605 0 R /XYZ 60.307257 476.215878 0 ] (__codelineno-32-58) [ 1605 0 R /XYZ 60.307257 462.815526 0 ] (__codelineno-32-59) [ 1605 0 R /XYZ 60.307257 449.415174 0 ] (__codelineno-32-6) [ 1603 0 R /XYZ 60.307257 656.956410 0 ] (__codelineno-32-60) [ 1605 0 R /XYZ 60.307257 436.014822 0 ] (__codelineno-32-61) [ 1605 0 R /XYZ 60.307257 422.614470 0 ] (__codelineno-32-62) [ 1605 0 R /XYZ 60.307257 409.214118 0 ] (__codelineno-32-63) [ 1605 0 R /XYZ 60.307257 395.813766 0 ] (__codelineno-32-64) [ 1605 0 R /XYZ 60.307257 382.413414 0 ] (__codelineno-32-65) [ 1605 0 R /XYZ 60.307257 369.013062 0 ] (__codelineno-32-66) [ 1605 0 R /XYZ 60.307257 355.612710 0 ] (__codelineno-32-67) [ 1605 0 R /XYZ 60.307257 328.812006 0 ] (__codelineno-32-68) [ 1605 0 R /XYZ 60.307257 315.411654 0 ] (__codelineno-32-69) [ 1605 0 R /XYZ 60.307257 302.011302 0 ] (__codelineno-32-7) [ 1603 0 R /XYZ 60.307257 643.556058 0 ] (__codelineno-32-70) [ 1605 0 R /XYZ 60.307257 288.610950 0 ] (__codelineno-32-71) [ 1605 0 R /XYZ 60.307257 275.210598 0 ] (__codelineno-32-72) [ 1605 0 R /XYZ 60.307257 261.810246 0 ] (__codelineno-32-73) [ 1605 0 R /XYZ 60.307257 248.409894 0 ] (__codelineno-32-74) [ 1605 0 R /XYZ 60.307257 235.009542 0 ] (__codelineno-32-8) [ 1603 0 R /XYZ 60.307257 630.155706 0 ] (__codelineno-32-9) [ 1603 0 R /XYZ 60.307257 616.755354 0 ] (__codelineno-33-1) [ 1605 0 R /XYZ 60.307257 195.568590 0 ] (__codelineno-33-2) [ 1605 0 R /XYZ 60.307257 182.168238 0 ] (__codelineno-34-1) [ 1607 0 R /XYZ 60.307257 682.931322 0 ] (__codelineno-34-10) [ 1607 0 R /XYZ 60.307257 535.527450 0 ] (__codelineno-34-11) [ 1607 0 R /XYZ 60.307257 522.127098 0 ] (__codelineno-34-12) [ 1607 0 R /XYZ 60.307257 508.726746 0 ] (__codelineno-34-13) [ 1607 0 R /XYZ 60.307257 495.326394 0 ] (__codelineno-34-14) [ 1607 0 R /XYZ 60.307257 468.525690 0 ] (__codelineno-34-15) [ 1607 0 R /XYZ 60.307257 455.125338 0 ] (__codelineno-34-16) [ 1607 0 R /XYZ 60.307257 428.324634 0 ] (__codelineno-34-17) [ 1607 0 R /XYZ 60.307257 414.924282 0 ] (__codelineno-34-18) [ 1607 0 R /XYZ 60.307257 388.123578 0 ] (__codelineno-34-19) [ 1607 0 R /XYZ 60.307257 374.723226 0 ] (__codelineno-34-2) [ 1607 0 R /XYZ 60.307257 669.530970 0 ] (__codelineno-34-20) [ 1607 0 R /XYZ 60.307257 361.322874 0 ] (__codelineno-34-21) [ 1607 0 R /XYZ 60.307257 347.922522 0 ] (__codelineno-34-22) [ 1607 0 R /XYZ 60.307257 334.522170 0 ] (__codelineno-34-23) [ 1607 0 R /XYZ 60.307257 307.721466 0 ] (__codelineno-34-24) [ 1607 0 R /XYZ 60.307257 294.321114 0 ] (__codelineno-34-25) [ 1607 0 R /XYZ 60.307257 267.520410 0 ] (__codelineno-34-26) [ 1607 0 R /XYZ 60.307257 254.120058 0 ] (__codelineno-34-27) [ 1607 0 R /XYZ 60.307257 227.319354 0 ] (__codelineno-34-28) [ 1607 0 R /XYZ 60.307257 213.919002 0 ] (__codelineno-34-29) [ 1607 0 R /XYZ 60.307257 200.518650 0 ] (__codelineno-34-3) [ 1607 0 R /XYZ 60.307257 656.130618 0 ] (__codelineno-34-30) [ 1607 0 R /XYZ 60.307257 173.717946 0 ] (__codelineno-34-31) [ 1607 0 R /XYZ 60.307257 160.317594 0 ] (__codelineno-34-32) [ 1607 0 R /XYZ 60.307257 146.917242 0 ] (__codelineno-34-4) [ 1607 0 R /XYZ 60.307257 642.730266 0 ] (__codelineno-34-5) [ 1607 0 R /XYZ 60.307257 629.329914 0 ] (__codelineno-34-6) [ 1607 0 R /XYZ 60.307257 615.929562 0 ] (__codelineno-34-7) [ 1607 0 R /XYZ 60.307257 602.529210 0 ] (__codelineno-34-8) [ 1607 0 R /XYZ 60.307257 575.728506 0 ] (__codelineno-34-9) [ 1607 0 R /XYZ 60.307257 562.328154 0 ] (__codelineno-35-1) [ 1609 0 R /XYZ 60.307257 519.649722 0 ] (__codelineno-35-10) [ 1609 0 R /XYZ 60.307257 385.646202 0 ] (__codelineno-35-11) [ 1609 0 R /XYZ 60.307257 372.245850 0 ] (__codelineno-35-12) [ 1609 0 R /XYZ 60.307257 358.845498 0 ] (__codelineno-35-13) [ 1609 0 R /XYZ 60.307257 332.044794 0 ] (__codelineno-35-14) [ 1609 0 R /XYZ 60.307257 318.644442 0 ] (__codelineno-35-15) [ 1609 0 R /XYZ 60.307257 305.244090 0 ] (__codelineno-35-16) [ 1609 0 R /XYZ 60.307257 291.843738 0 ] (__codelineno-35-17) [ 1609 0 R /XYZ 60.307257 278.443386 0 ] (__codelineno-35-18) [ 1609 0 R /XYZ 60.307257 265.043034 0 ] (__codelineno-35-19) [ 1609 0 R /XYZ 60.307257 251.642682 0 ] (__codelineno-35-2) [ 1609 0 R /XYZ 60.307257 506.249370 0 ] (__codelineno-35-20) [ 1609 0 R /XYZ 60.307257 238.242330 0 ] (__codelineno-35-21) [ 1609 0 R /XYZ 60.307257 224.841978 0 ] (__codelineno-35-22) [ 1609 0 R /XYZ 60.307257 198.041274 0 ] (__codelineno-35-23) [ 1609 0 R /XYZ 60.307257 171.240570 0 ] (__codelineno-35-24) [ 1609 0 R /XYZ 60.307257 157.840218 0 ] (__codelineno-35-25) [ 1609 0 R /XYZ 60.307257 144.439866 0 ] (__codelineno-35-26) [ 1609 0 R /XYZ 60.307257 131.039514 0 ] (__codelineno-35-27) [ 1609 0 R /XYZ 60.307257 104.238810 0 ] (__codelineno-35-28) [ 1609 0 R /XYZ 60.307257 90.838458 0 ] (__codelineno-35-29) [ 1611 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-35-3) [ 1609 0 R /XYZ 60.307257 492.849018 0 ] (__codelineno-35-30) [ 1611 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-35-31) [ 1611 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-35-32) [ 1611 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-35-4) [ 1609 0 R /XYZ 60.307257 479.448666 0 ] (__codelineno-35-5) [ 1609 0 R /XYZ 60.307257 452.647962 0 ] (__codelineno-35-6) [ 1609 0 R /XYZ 60.307257 439.247610 0 ] (__codelineno-35-7) [ 1609 0 R /XYZ 60.307257 425.847258 0 ] (__codelineno-35-8) [ 1609 0 R /XYZ 60.307257 412.446906 0 ] (__codelineno-35-9) [ 1609 0 R /XYZ 60.307257 399.046554 0 ] (__codelineno-36-1) [ 1616 0 R /XYZ 60.307257 619.120122 0 ] (__codelineno-36-10) [ 1616 0 R /XYZ 60.307257 498.516954 0 ] (__codelineno-36-11) [ 1616 0 R /XYZ 60.307257 485.116602 0 ] (__codelineno-36-12) [ 1616 0 R /XYZ 60.307257 471.716250 0 ] (__codelineno-36-13) [ 1616 0 R /XYZ 60.307257 458.315898 0 ] (__codelineno-36-14) [ 1616 0 R /XYZ 60.307257 444.915546 0 ] (__codelineno-36-15) [ 1616 0 R /XYZ 60.307257 431.515194 0 ] (__codelineno-36-16) [ 1616 0 R /XYZ 60.307257 418.114842 0 ] (__codelineno-36-17) [ 1616 0 R /XYZ 60.307257 404.714490 0 ] (__codelineno-36-18) [ 1616 0 R /XYZ 60.307257 391.314138 0 ] (__codelineno-36-19) [ 1616 0 R /XYZ 60.307257 377.913786 0 ] (__codelineno-36-2) [ 1616 0 R /XYZ 60.307257 605.719770 0 ] (__codelineno-36-20) [ 1616 0 R /XYZ 60.307257 364.513434 0 ] (__codelineno-36-21) [ 1616 0 R /XYZ 60.307257 351.113082 0 ] (__codelineno-36-22) [ 1616 0 R /XYZ 60.307257 337.712730 0 ] (__codelineno-36-23) [ 1616 0 R /XYZ 60.307257 324.312378 0 ] (__codelineno-36-24) [ 1616 0 R /XYZ 60.307257 310.912026 0 ] (__codelineno-36-25) [ 1616 0 R /XYZ 60.307257 297.511674 0 ] (__codelineno-36-26) [ 1616 0 R /XYZ 60.307257 284.111322 0 ] (__codelineno-36-27) [ 1616 0 R /XYZ 60.307257 270.710970 0 ] (__codelineno-36-28) [ 1616 0 R /XYZ 60.307257 257.310618 0 ] (__codelineno-36-29) [ 1616 0 R /XYZ 60.307257 243.910266 0 ] (__codelineno-36-3) [ 1616 0 R /XYZ 60.307257 592.319418 0 ] (__codelineno-36-30) [ 1616 0 R /XYZ 60.307257 230.509914 0 ] (__codelineno-36-31) [ 1616 0 R /XYZ 60.307257 217.109562 0 ] (__codelineno-36-32) [ 1616 0 R /XYZ 60.307257 203.709210 0 ] (__codelineno-36-33) [ 1616 0 R /XYZ 60.307257 190.308858 0 ] (__codelineno-36-34) [ 1616 0 R /XYZ 60.307257 176.908506 0 ] (__codelineno-36-35) [ 1616 0 R /XYZ 60.307257 163.508154 0 ] (__codelineno-36-36) [ 1616 0 R /XYZ 60.307257 150.107802 0 ] (__codelineno-36-37) [ 1616 0 R /XYZ 60.307257 136.707450 0 ] (__codelineno-36-38) [ 1616 0 R /XYZ 60.307257 123.307098 0 ] (__codelineno-36-39) [ 1616 0 R /XYZ 60.307257 109.906746 0 ] (__codelineno-36-4) [ 1616 0 R /XYZ 60.307257 578.919066 0 ] (__codelineno-36-40) [ 1616 0 R /XYZ 60.307257 96.506394 0 ] (__codelineno-36-41) [ 1618 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-36-42) [ 1618 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-36-43) [ 1618 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-36-44) [ 1618 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-36-45) [ 1618 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-36-46) [ 1618 0 R /XYZ 60.307257 704.021862 0 ] (__codelineno-36-47) [ 1618 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-36-48) [ 1618 0 R /XYZ 60.307257 677.221158 0 ] (__codelineno-36-49) [ 1618 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-36-5) [ 1616 0 R /XYZ 60.307257 565.518714 0 ] (__codelineno-36-50) [ 1618 0 R /XYZ 60.307257 650.420454 0 ] (__codelineno-36-51) [ 1618 0 R /XYZ 60.307257 637.020102 0 ] (__codelineno-36-52) [ 1618 0 R /XYZ 60.307257 623.619750 0 ] (__codelineno-36-53) [ 1618 0 R /XYZ 60.307257 610.219398 0 ] (__codelineno-36-54) [ 1618 0 R /XYZ 60.307257 596.819046 0 ] (__codelineno-36-55) [ 1618 0 R /XYZ 60.307257 583.418694 0 ] (__codelineno-36-56) [ 1618 0 R /XYZ 60.307257 570.018342 0 ] (__codelineno-36-57) [ 1618 0 R /XYZ 60.307257 556.617990 0 ] (__codelineno-36-58) [ 1618 0 R /XYZ 60.307257 543.217638 0 ] (__codelineno-36-59) [ 1618 0 R /XYZ 60.307257 529.817286 0 ] (__codelineno-36-6) [ 1616 0 R /XYZ 60.307257 552.118362 0 ] (__codelineno-36-60) [ 1618 0 R /XYZ 60.307257 516.416934 0 ] (__codelineno-36-61) [ 1618 0 R /XYZ 60.307257 503.016582 0 ] (__codelineno-36-62) [ 1618 0 R /XYZ 60.307257 489.616230 0 ] (__codelineno-36-63) [ 1618 0 R /XYZ 60.307257 476.215878 0 ] (__codelineno-36-64) [ 1618 0 R /XYZ 60.307257 462.815526 0 ] (__codelineno-36-65) [ 1618 0 R /XYZ 60.307257 449.415174 0 ] (__codelineno-36-66) [ 1618 0 R /XYZ 60.307257 436.014822 0 ] (__codelineno-36-67) [ 1618 0 R /XYZ 60.307257 422.614470 0 ] (__codelineno-36-68) [ 1618 0 R /XYZ 60.307257 409.214118 0 ] (__codelineno-36-69) [ 1618 0 R /XYZ 60.307257 395.813766 0 ] (__codelineno-36-7) [ 1616 0 R /XYZ 60.307257 538.718010 0 ] (__codelineno-36-70) [ 1618 0 R /XYZ 60.307257 382.413414 0 ] (__codelineno-36-71) [ 1618 0 R /XYZ 60.307257 369.013062 0 ] (__codelineno-36-72) [ 1618 0 R /XYZ 60.307257 355.612710 0 ] (__codelineno-36-73) [ 1618 0 R /XYZ 60.307257 342.212358 0 ] (__codelineno-36-74) [ 1618 0 R /XYZ 60.307257 328.812006 0 ] (__codelineno-36-75) [ 1618 0 R /XYZ 60.307257 315.411654 0 ] (__codelineno-36-76) [ 1618 0 R /XYZ 60.307257 302.011302 0 ] (__codelineno-36-77) [ 1618 0 R /XYZ 60.307257 288.610950 0 ] (__codelineno-36-78) [ 1618 0 R /XYZ 60.307257 275.210598 0 ] (__codelineno-36-79) [ 1618 0 R /XYZ 60.307257 261.810246 0 ] (__codelineno-36-8) [ 1616 0 R /XYZ 60.307257 525.317658 0 ] (__codelineno-36-80) [ 1618 0 R /XYZ 60.307257 248.409894 0 ] (__codelineno-36-81) [ 1618 0 R /XYZ 60.307257 235.009542 0 ] (__codelineno-36-82) [ 1618 0 R /XYZ 60.307257 221.609190 0 ] (__codelineno-36-83) [ 1618 0 R /XYZ 60.307257 208.208838 0 ] (__codelineno-36-84) [ 1618 0 R /XYZ 60.307257 194.808486 0 ] (__codelineno-36-85) [ 1618 0 R /XYZ 60.307257 181.408134 0 ] (__codelineno-36-86) [ 1618 0 R /XYZ 60.307257 168.007782 0 ] (__codelineno-36-87) [ 1618 0 R /XYZ 60.307257 154.607430 0 ] (__codelineno-36-88) [ 1618 0 R /XYZ 60.307257 141.207078 0 ] (__codelineno-36-89) [ 1618 0 R /XYZ 60.307257 127.806726 0 ] (__codelineno-36-9) [ 1616 0 R /XYZ 60.307257 511.917306 0 ] (__codelineno-37-1) [ 1620 0 R /XYZ 60.307257 658.532922 0 ] (__codelineno-37-10) [ 1620 0 R /XYZ 60.307257 537.929754 0 ] (__codelineno-37-11) [ 1620 0 R /XYZ 60.307257 524.529402 0 ] (__codelineno-37-12) [ 1620 0 R /XYZ 60.307257 511.129050 0 ] (__codelineno-37-13) [ 1620 0 R /XYZ 60.307257 497.728698 0 ] (__codelineno-37-14) [ 1620 0 R /XYZ 60.307257 484.328346 0 ] (__codelineno-37-15) [ 1620 0 R /XYZ 60.307257 470.927994 0 ] (__codelineno-37-16) [ 1620 0 R /XYZ 60.307257 457.527642 0 ] (__codelineno-37-17) [ 1620 0 R /XYZ 60.307257 444.127290 0 ] (__codelineno-37-18) [ 1620 0 R /XYZ 60.307257 430.726938 0 ] (__codelineno-37-19) [ 1620 0 R /XYZ 60.307257 417.326586 0 ] (__codelineno-37-2) [ 1620 0 R /XYZ 60.307257 645.132570 0 ] (__codelineno-37-20) [ 1620 0 R /XYZ 60.307257 403.926234 0 ] (__codelineno-37-21) [ 1620 0 R /XYZ 60.307257 390.525882 0 ] (__codelineno-37-22) [ 1620 0 R /XYZ 60.307257 377.125530 0 ] (__codelineno-37-23) [ 1620 0 R /XYZ 60.307257 363.725178 0 ] (__codelineno-37-24) [ 1620 0 R /XYZ 60.307257 350.324826 0 ] (__codelineno-37-25) [ 1620 0 R /XYZ 60.307257 336.924474 0 ] (__codelineno-37-26) [ 1620 0 R /XYZ 60.307257 323.524122 0 ] (__codelineno-37-27) [ 1620 0 R /XYZ 60.307257 310.123770 0 ] (__codelineno-37-28) [ 1620 0 R /XYZ 60.307257 296.723418 0 ] (__codelineno-37-29) [ 1620 0 R /XYZ 60.307257 283.323066 0 ] (__codelineno-37-3) [ 1620 0 R /XYZ 60.307257 631.732218 0 ] (__codelineno-37-30) [ 1620 0 R /XYZ 60.307257 269.922714 0 ] (__codelineno-37-31) [ 1620 0 R /XYZ 60.307257 256.522362 0 ] (__codelineno-37-32) [ 1620 0 R /XYZ 60.307257 243.122010 0 ] (__codelineno-37-33) [ 1620 0 R /XYZ 60.307257 229.721658 0 ] (__codelineno-37-34) [ 1620 0 R /XYZ 60.307257 216.321306 0 ] (__codelineno-37-35) [ 1620 0 R /XYZ 60.307257 202.920954 0 ] (__codelineno-37-36) [ 1620 0 R /XYZ 60.307257 189.520602 0 ] (__codelineno-37-37) [ 1620 0 R /XYZ 60.307257 176.120250 0 ] (__codelineno-37-38) [ 1620 0 R /XYZ 60.307257 162.719898 0 ] (__codelineno-37-39) [ 1620 0 R /XYZ 60.307257 149.319546 0 ] (__codelineno-37-4) [ 1620 0 R /XYZ 60.307257 618.331866 0 ] (__codelineno-37-40) [ 1620 0 R /XYZ 60.307257 135.919194 0 ] (__codelineno-37-41) [ 1620 0 R /XYZ 60.307257 122.518842 0 ] (__codelineno-37-42) [ 1620 0 R /XYZ 60.307257 109.118490 0 ] (__codelineno-37-43) [ 1620 0 R /XYZ 60.307257 95.718138 0 ] (__codelineno-37-44) [ 1622 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-37-45) [ 1622 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-37-46) [ 1622 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-37-47) [ 1622 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-37-48) [ 1622 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-37-49) [ 1622 0 R /XYZ 60.307257 704.021862 0 ] (__codelineno-37-5) [ 1620 0 R /XYZ 60.307257 604.931514 0 ] (__codelineno-37-50) [ 1622 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-37-51) [ 1622 0 R /XYZ 60.307257 677.221158 0 ] (__codelineno-37-52) [ 1622 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-37-53) [ 1622 0 R /XYZ 60.307257 650.420454 0 ] (__codelineno-37-54) [ 1622 0 R /XYZ 60.307257 637.020102 0 ] (__codelineno-37-55) [ 1622 0 R /XYZ 60.307257 623.619750 0 ] (__codelineno-37-56) [ 1622 0 R /XYZ 60.307257 610.219398 0 ] (__codelineno-37-57) [ 1622 0 R /XYZ 60.307257 596.819046 0 ] (__codelineno-37-58) [ 1622 0 R /XYZ 60.307257 583.418694 0 ] (__codelineno-37-59) [ 1622 0 R /XYZ 60.307257 570.018342 0 ] (__codelineno-37-6) [ 1620 0 R /XYZ 60.307257 591.531162 0 ] (__codelineno-37-60) [ 1622 0 R /XYZ 60.307257 556.617990 0 ] (__codelineno-37-61) [ 1622 0 R /XYZ 60.307257 543.217638 0 ] (__codelineno-37-62) [ 1622 0 R /XYZ 60.307257 529.817286 0 ] (__codelineno-37-63) [ 1622 0 R /XYZ 60.307257 516.416934 0 ] (__codelineno-37-64) [ 1622 0 R /XYZ 60.307257 503.016582 0 ] (__codelineno-37-65) [ 1622 0 R /XYZ 60.307257 489.616230 0 ] (__codelineno-37-66) [ 1622 0 R /XYZ 60.307257 476.215878 0 ] (__codelineno-37-67) [ 1622 0 R /XYZ 60.307257 462.815526 0 ] (__codelineno-37-68) [ 1622 0 R /XYZ 60.307257 449.415174 0 ] (__codelineno-37-69) [ 1622 0 R /XYZ 60.307257 436.014822 0 ] (__codelineno-37-7) [ 1620 0 R /XYZ 60.307257 578.130810 0 ] (__codelineno-37-70) [ 1622 0 R /XYZ 60.307257 422.614470 0 ] (__codelineno-37-71) [ 1622 0 R /XYZ 60.307257 409.214118 0 ] (__codelineno-37-72) [ 1622 0 R /XYZ 60.307257 395.813766 0 ] (__codelineno-37-73) [ 1622 0 R /XYZ 60.307257 382.413414 0 ] (__codelineno-37-74) [ 1622 0 R /XYZ 60.307257 369.013062 0 ] (__codelineno-37-75) [ 1622 0 R /XYZ 60.307257 355.612710 0 ] (__codelineno-37-76) [ 1622 0 R /XYZ 60.307257 342.212358 0 ] (__codelineno-37-77) [ 1622 0 R /XYZ 60.307257 328.812006 0 ] (__codelineno-37-78) [ 1622 0 R /XYZ 60.307257 315.411654 0 ] (__codelineno-37-79) [ 1622 0 R /XYZ 60.307257 302.011302 0 ] (__codelineno-37-8) [ 1620 0 R /XYZ 60.307257 564.730458 0 ] (__codelineno-37-80) [ 1622 0 R /XYZ 60.307257 288.610950 0 ] (__codelineno-37-81) [ 1622 0 R /XYZ 60.307257 275.210598 0 ] (__codelineno-37-9) [ 1620 0 R /XYZ 60.307257 551.330106 0 ] (__codelineno-38-1) [ 1624 0 R /XYZ 60.307257 174.624222 0 ] (__codelineno-38-10) [ 1626 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-38-11) [ 1626 0 R /XYZ 60.307257 704.021862 0 ] (__codelineno-38-12) [ 1626 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-38-13) [ 1626 0 R /XYZ 60.307257 677.221158 0 ] (__codelineno-38-14) [ 1626 0 R /XYZ 60.307257 650.420454 0 ] (__codelineno-38-15) [ 1626 0 R /XYZ 60.307257 637.020102 0 ] (__codelineno-38-16) [ 1626 0 R /XYZ 60.307257 623.619750 0 ] (__codelineno-38-17) [ 1626 0 R /XYZ 60.307257 596.819046 0 ] (__codelineno-38-18) [ 1626 0 R /XYZ 60.307257 583.418694 0 ] (__codelineno-38-19) [ 1626 0 R /XYZ 60.307257 570.018342 0 ] (__codelineno-38-2) [ 1624 0 R /XYZ 60.307257 161.223870 0 ] (__codelineno-38-20) [ 1626 0 R /XYZ 60.307257 543.217638 0 ] (__codelineno-38-21) [ 1626 0 R /XYZ 60.307257 529.817286 0 ] (__codelineno-38-22) [ 1626 0 R /XYZ 60.307257 516.416934 0 ] (__codelineno-38-23) [ 1626 0 R /XYZ 60.307257 503.016582 0 ] (__codelineno-38-24) [ 1626 0 R /XYZ 60.307257 489.616230 0 ] (__codelineno-38-25) [ 1626 0 R /XYZ 60.307257 476.215878 0 ] (__codelineno-38-26) [ 1626 0 R /XYZ 60.307257 449.415174 0 ] (__codelineno-38-27) [ 1626 0 R /XYZ 60.307257 436.014822 0 ] (__codelineno-38-28) [ 1626 0 R /XYZ 60.307257 422.614470 0 ] (__codelineno-38-29) [ 1626 0 R /XYZ 60.307257 395.813766 0 ] (__codelineno-38-3) [ 1624 0 R /XYZ 60.307257 147.823518 0 ] (__codelineno-38-30) [ 1626 0 R /XYZ 60.307257 382.413414 0 ] (__codelineno-38-31) [ 1626 0 R /XYZ 60.307257 369.013062 0 ] (__codelineno-38-32) [ 1626 0 R /XYZ 60.307257 342.212358 0 ] (__codelineno-38-33) [ 1626 0 R /XYZ 60.307257 328.812006 0 ] (__codelineno-38-34) [ 1626 0 R /XYZ 60.307257 315.411654 0 ] (__codelineno-38-35) [ 1626 0 R /XYZ 60.307257 302.011302 0 ] (__codelineno-38-36) [ 1626 0 R /XYZ 60.307257 275.210598 0 ] (__codelineno-38-37) [ 1626 0 R /XYZ 60.307257 261.810246 0 ] (__codelineno-38-38) [ 1626 0 R /XYZ 60.307257 248.409894 0 ] (__codelineno-38-4) [ 1624 0 R /XYZ 60.307257 134.423166 0 ] (__codelineno-38-5) [ 1624 0 R /XYZ 60.307257 121.022814 0 ] (__codelineno-38-6) [ 1624 0 R /XYZ 60.307257 94.222110 0 ] (__codelineno-38-7) [ 1626 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-38-8) [ 1626 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-38-9) [ 1626 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-39-1) [ 1761 0 R /XYZ 60.307257 529.339422 0 ] (__codelineno-39-10) [ 1761 0 R /XYZ 60.307257 368.535198 0 ] (__codelineno-39-11) [ 1761 0 R /XYZ 60.307257 355.134846 0 ] (__codelineno-39-12) [ 1761 0 R /XYZ 60.307257 341.734494 0 ] (__codelineno-39-13) [ 1761 0 R /XYZ 60.307257 328.334142 0 ] (__codelineno-39-14) [ 1761 0 R /XYZ 60.307257 314.933790 0 ] (__codelineno-39-15) [ 1761 0 R /XYZ 60.307257 301.533438 0 ] (__codelineno-39-16) [ 1761 0 R /XYZ 60.307257 288.133086 0 ] (__codelineno-39-17) [ 1761 0 R /XYZ 60.307257 274.732734 0 ] (__codelineno-39-18) [ 1761 0 R /XYZ 60.307257 261.332382 0 ] (__codelineno-39-19) [ 1761 0 R /XYZ 60.307257 247.932030 0 ] (__codelineno-39-2) [ 1761 0 R /XYZ 60.307257 515.939070 0 ] (__codelineno-39-20) [ 1761 0 R /XYZ 60.307257 234.531678 0 ] (__codelineno-39-21) [ 1761 0 R /XYZ 60.307257 221.131326 0 ] (__codelineno-39-22) [ 1761 0 R /XYZ 60.307257 194.330622 0 ] (__codelineno-39-23) [ 1761 0 R /XYZ 60.307257 180.930270 0 ] (__codelineno-39-24) [ 1761 0 R /XYZ 60.307257 167.529918 0 ] (__codelineno-39-25) [ 1761 0 R /XYZ 60.307257 140.729214 0 ] (__codelineno-39-26) [ 1761 0 R /XYZ 60.307257 127.328862 0 ] (__codelineno-39-27) [ 1761 0 R /XYZ 60.307257 113.928510 0 ] (__codelineno-39-28) [ 1761 0 R /XYZ 60.307257 100.528158 0 ] (__codelineno-39-29) [ 1761 0 R /XYZ 60.307257 87.127806 0 ] (__codelineno-39-3) [ 1761 0 R /XYZ 60.307257 502.538718 0 ] (__codelineno-39-30) [ 1763 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-39-31) [ 1763 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-39-32) [ 1763 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-39-33) [ 1763 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-39-34) [ 1763 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-39-35) [ 1763 0 R /XYZ 60.307257 704.021862 0 ] (__codelineno-39-36) [ 1763 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-39-37) [ 1763 0 R /XYZ 60.307257 677.221158 0 ] (__codelineno-39-38) [ 1763 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-39-39) [ 1763 0 R /XYZ 60.307257 650.420454 0 ] (__codelineno-39-4) [ 1761 0 R /XYZ 60.307257 475.738014 0 ] (__codelineno-39-5) [ 1761 0 R /XYZ 60.307257 448.937310 0 ] (__codelineno-39-6) [ 1761 0 R /XYZ 60.307257 422.136606 0 ] (__codelineno-39-7) [ 1761 0 R /XYZ 60.307257 408.736254 0 ] (__codelineno-39-8) [ 1761 0 R /XYZ 60.307257 395.335902 0 ] (__codelineno-39-9) [ 1761 0 R /XYZ 60.307257 381.935550 0 ] (__codelineno-4-1) [ 665 0 R /XYZ 60.307257 491.661942 0 ] (__codelineno-4-10) [ 665 0 R /XYZ 60.307257 371.058774 0 ] (__codelineno-4-11) [ 665 0 R /XYZ 60.307257 344.258070 0 ] (__codelineno-4-12) [ 665 0 R /XYZ 60.307257 330.857718 0 ] (__codelineno-4-13) [ 665 0 R /XYZ 60.307257 317.457366 0 ] (__codelineno-4-14) [ 665 0 R /XYZ 60.307257 304.057014 0 ] (__codelineno-4-15) [ 665 0 R /XYZ 60.307257 290.656662 0 ] (__codelineno-4-16) [ 665 0 R /XYZ 60.307257 277.256310 0 ] (__codelineno-4-17) [ 665 0 R /XYZ 60.307257 250.455606 0 ] (__codelineno-4-18) [ 665 0 R /XYZ 60.307257 237.055254 0 ] (__codelineno-4-19) [ 665 0 R /XYZ 60.307257 223.654902 0 ] (__codelineno-4-2) [ 665 0 R /XYZ 60.307257 478.261590 0 ] (__codelineno-4-20) [ 665 0 R /XYZ 60.307257 210.254550 0 ] (__codelineno-4-21) [ 665 0 R /XYZ 60.307257 196.854198 0 ] (__codelineno-4-22) [ 665 0 R /XYZ 60.307257 183.453846 0 ] (__codelineno-4-23) [ 665 0 R /XYZ 60.307257 170.053494 0 ] (__codelineno-4-24) [ 665 0 R /XYZ 60.307257 156.653142 0 ] (__codelineno-4-25) [ 665 0 R /XYZ 60.307257 143.252790 0 ] (__codelineno-4-26) [ 665 0 R /XYZ 60.307257 129.852438 0 ] (__codelineno-4-27) [ 665 0 R /XYZ 60.307257 116.452086 0 ] (__codelineno-4-28) [ 665 0 R /XYZ 60.307257 103.051734 0 ] (__codelineno-4-29) [ 665 0 R /XYZ 60.307257 89.651382 0 ] (__codelineno-4-3) [ 665 0 R /XYZ 60.307257 464.861238 0 ] (__codelineno-4-30) [ 667 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-4-31) [ 667 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-4-32) [ 667 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-4-33) [ 667 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-4-34) [ 667 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-4-35) [ 667 0 R /XYZ 60.307257 704.021862 0 ] (__codelineno-4-36) [ 667 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-4-37) [ 667 0 R /XYZ 60.307257 677.221158 0 ] (__codelineno-4-4) [ 665 0 R /XYZ 60.307257 451.460886 0 ] (__codelineno-4-5) [ 665 0 R /XYZ 60.307257 438.060534 0 ] (__codelineno-4-6) [ 665 0 R /XYZ 60.307257 424.660182 0 ] (__codelineno-4-7) [ 665 0 R /XYZ 60.307257 411.259830 0 ] (__codelineno-4-8) [ 665 0 R /XYZ 60.307257 397.859478 0 ] (__codelineno-4-9) [ 665 0 R /XYZ 60.307257 384.459126 0 ] (__codelineno-5-1) [ 675 0 R /XYZ 60.307257 671.460194 0 ] (__codelineno-5-10) [ 675 0 R /XYZ 60.307257 537.456674 0 ] (__codelineno-5-11) [ 675 0 R /XYZ 60.307257 524.056322 0 ] (__codelineno-5-12) [ 675 0 R /XYZ 60.307257 510.655970 0 ] (__codelineno-5-13) [ 675 0 R /XYZ 60.307257 497.255618 0 ] (__codelineno-5-14) [ 675 0 R /XYZ 60.307257 483.855266 0 ] (__codelineno-5-15) [ 675 0 R /XYZ 60.307257 470.454914 0 ] (__codelineno-5-16) [ 675 0 R /XYZ 60.307257 457.054562 0 ] (__codelineno-5-17) [ 675 0 R /XYZ 60.307257 443.654210 0 ] (__codelineno-5-18) [ 675 0 R /XYZ 60.307257 416.853506 0 ] (__codelineno-5-19) [ 675 0 R /XYZ 60.307257 403.453154 0 ] (__codelineno-5-2) [ 675 0 R /XYZ 60.307257 658.059842 0 ] (__codelineno-5-20) [ 675 0 R /XYZ 60.307257 390.052802 0 ] (__codelineno-5-21) [ 675 0 R /XYZ 60.307257 376.652450 0 ] (__codelineno-5-22) [ 675 0 R /XYZ 60.307257 363.252098 0 ] (__codelineno-5-23) [ 675 0 R /XYZ 60.307257 349.851746 0 ] (__codelineno-5-24) [ 675 0 R /XYZ 60.307257 323.051042 0 ] (__codelineno-5-25) [ 675 0 R /XYZ 60.307257 309.650690 0 ] (__codelineno-5-26) [ 675 0 R /XYZ 60.307257 296.250338 0 ] (__codelineno-5-27) [ 675 0 R /XYZ 60.307257 269.449634 0 ] (__codelineno-5-28) [ 675 0 R /XYZ 60.307257 256.049282 0 ] (__codelineno-5-29) [ 675 0 R /XYZ 60.307257 229.248578 0 ] (__codelineno-5-3) [ 675 0 R /XYZ 60.307257 644.659490 0 ] (__codelineno-5-30) [ 675 0 R /XYZ 60.307257 202.447874 0 ] (__codelineno-5-31) [ 675 0 R /XYZ 60.307257 189.047522 0 ] (__codelineno-5-32) [ 675 0 R /XYZ 60.307257 175.647170 0 ] (__codelineno-5-33) [ 675 0 R /XYZ 60.307257 162.246818 0 ] (__codelineno-5-34) [ 675 0 R /XYZ 60.307257 135.446114 0 ] (__codelineno-5-35) [ 675 0 R /XYZ 60.307257 122.045762 0 ] (__codelineno-5-36) [ 675 0 R /XYZ 60.307257 108.645410 0 ] (__codelineno-5-37) [ 675 0 R /XYZ 60.307257 95.245058 0 ] (__codelineno-5-38) [ 679 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-5-39) [ 679 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-5-4) [ 675 0 R /XYZ 60.307257 631.259138 0 ] (__codelineno-5-40) [ 679 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-5-41) [ 679 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-5-42) [ 679 0 R /XYZ 60.307257 704.021862 0 ] (__codelineno-5-43) [ 679 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-5-44) [ 679 0 R /XYZ 60.307257 677.221158 0 ] (__codelineno-5-45) [ 679 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-5-46) [ 679 0 R /XYZ 60.307257 650.420454 0 ] (__codelineno-5-47) [ 679 0 R /XYZ 60.307257 637.020102 0 ] (__codelineno-5-48) [ 679 0 R /XYZ 60.307257 623.619750 0 ] (__codelineno-5-49) [ 679 0 R /XYZ 60.307257 610.219398 0 ] (__codelineno-5-5) [ 675 0 R /XYZ 60.307257 617.858786 0 ] (__codelineno-5-50) [ 679 0 R /XYZ 60.307257 596.819046 0 ] (__codelineno-5-51) [ 679 0 R /XYZ 60.307257 583.418694 0 ] (__codelineno-5-52) [ 679 0 R /XYZ 60.307257 570.018342 0 ] (__codelineno-5-53) [ 679 0 R /XYZ 60.307257 543.217638 0 ] (__codelineno-5-54) [ 679 0 R /XYZ 60.307257 516.416934 0 ] (__codelineno-5-55) [ 679 0 R /XYZ 60.307257 503.016582 0 ] (__codelineno-5-56) [ 679 0 R /XYZ 60.307257 489.616230 0 ] (__codelineno-5-57) [ 679 0 R /XYZ 60.307257 462.815526 0 ] (__codelineno-5-58) [ 679 0 R /XYZ 60.307257 449.415174 0 ] (__codelineno-5-59) [ 679 0 R /XYZ 60.307257 436.014822 0 ] (__codelineno-5-6) [ 675 0 R /XYZ 60.307257 604.458434 0 ] (__codelineno-5-60) [ 679 0 R /XYZ 60.307257 422.614470 0 ] (__codelineno-5-61) [ 679 0 R /XYZ 60.307257 409.214118 0 ] (__codelineno-5-62) [ 679 0 R /XYZ 60.307257 395.813766 0 ] (__codelineno-5-7) [ 675 0 R /XYZ 60.307257 577.657730 0 ] (__codelineno-5-8) [ 675 0 R /XYZ 60.307257 564.257378 0 ] (__codelineno-5-9) [ 675 0 R /XYZ 60.307257 550.857026 0 ] (__codelineno-6-1) [ 688 0 R /XYZ 60.307257 458.116602 0 ] (__codelineno-6-10) [ 688 0 R /XYZ 60.307257 337.513434 0 ] (__codelineno-6-100) [ 694 0 R /XYZ 60.307257 516.416934 0 ] (__codelineno-6-101) [ 694 0 R /XYZ 60.307257 503.016582 0 ] (__codelineno-6-102) [ 694 0 R /XYZ 60.307257 489.616230 0 ] (__codelineno-6-103) [ 694 0 R /XYZ 60.307257 476.215878 0 ] (__codelineno-6-104) [ 694 0 R /XYZ 60.307257 462.815526 0 ] (__codelineno-6-105) [ 694 0 R /XYZ 60.307257 449.415174 0 ] (__codelineno-6-106) [ 694 0 R /XYZ 60.307257 436.014822 0 ] (__codelineno-6-107) [ 694 0 R /XYZ 60.307257 422.614470 0 ] (__codelineno-6-108) [ 694 0 R /XYZ 60.307257 409.214118 0 ] (__codelineno-6-109) [ 694 0 R /XYZ 60.307257 395.813766 0 ] (__codelineno-6-11) [ 688 0 R /XYZ 60.307257 324.113082 0 ] (__codelineno-6-110) [ 694 0 R /XYZ 60.307257 382.413414 0 ] (__codelineno-6-111) [ 694 0 R /XYZ 60.307257 369.013062 0 ] (__codelineno-6-112) [ 694 0 R /XYZ 60.307257 355.612710 0 ] (__codelineno-6-113) [ 694 0 R /XYZ 60.307257 342.212358 0 ] (__codelineno-6-114) [ 694 0 R /XYZ 60.307257 328.812006 0 ] (__codelineno-6-115) [ 694 0 R /XYZ 60.307257 315.411654 0 ] (__codelineno-6-116) [ 694 0 R /XYZ 60.307257 302.011302 0 ] (__codelineno-6-117) [ 694 0 R /XYZ 60.307257 288.610950 0 ] (__codelineno-6-118) [ 694 0 R /XYZ 60.307257 275.210598 0 ] (__codelineno-6-119) [ 694 0 R /XYZ 60.307257 261.810246 0 ] (__codelineno-6-12) [ 688 0 R /XYZ 60.307257 310.712730 0 ] (__codelineno-6-120) [ 694 0 R /XYZ 60.307257 248.409894 0 ] (__codelineno-6-121) [ 694 0 R /XYZ 60.307257 235.009542 0 ] (__codelineno-6-122) [ 694 0 R /XYZ 60.307257 221.609190 0 ] (__codelineno-6-123) [ 694 0 R /XYZ 60.307257 208.208838 0 ] (__codelineno-6-124) [ 694 0 R /XYZ 60.307257 194.808486 0 ] (__codelineno-6-125) [ 694 0 R /XYZ 60.307257 181.408134 0 ] (__codelineno-6-126) [ 694 0 R /XYZ 60.307257 168.007782 0 ] (__codelineno-6-127) [ 694 0 R /XYZ 60.307257 154.607430 0 ] (__codelineno-6-128) [ 694 0 R /XYZ 60.307257 141.207078 0 ] (__codelineno-6-129) [ 694 0 R /XYZ 60.307257 127.806726 0 ] (__codelineno-6-13) [ 688 0 R /XYZ 60.307257 297.312378 0 ] (__codelineno-6-130) [ 694 0 R /XYZ 60.307257 114.406374 0 ] (__codelineno-6-131) [ 694 0 R /XYZ 60.307257 101.006022 0 ] (__codelineno-6-132) [ 694 0 R /XYZ 60.307257 87.605670 0 ] (__codelineno-6-133) [ 696 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-6-134) [ 696 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-6-135) [ 696 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-6-136) [ 696 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-6-137) [ 696 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-6-138) [ 696 0 R /XYZ 60.307257 704.021862 0 ] (__codelineno-6-139) [ 696 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-6-14) [ 688 0 R /XYZ 60.307257 283.912026 0 ] (__codelineno-6-140) [ 696 0 R /XYZ 60.307257 677.221158 0 ] (__codelineno-6-141) [ 696 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-6-142) [ 696 0 R /XYZ 60.307257 650.420454 0 ] (__codelineno-6-143) [ 696 0 R /XYZ 60.307257 637.020102 0 ] (__codelineno-6-144) [ 696 0 R /XYZ 60.307257 623.619750 0 ] (__codelineno-6-145) [ 696 0 R /XYZ 60.307257 610.219398 0 ] (__codelineno-6-146) [ 696 0 R /XYZ 60.307257 596.819046 0 ] (__codelineno-6-147) [ 696 0 R /XYZ 60.307257 583.418694 0 ] (__codelineno-6-148) [ 696 0 R /XYZ 60.307257 570.018342 0 ] (__codelineno-6-149) [ 696 0 R /XYZ 60.307257 556.617990 0 ] (__codelineno-6-15) [ 688 0 R /XYZ 60.307257 270.511674 0 ] (__codelineno-6-150) [ 696 0 R /XYZ 60.307257 543.217638 0 ] (__codelineno-6-151) [ 696 0 R /XYZ 60.307257 529.817286 0 ] (__codelineno-6-152) [ 696 0 R /XYZ 60.307257 516.416934 0 ] (__codelineno-6-153) [ 696 0 R /XYZ 60.307257 503.016582 0 ] (__codelineno-6-154) [ 696 0 R /XYZ 60.307257 489.616230 0 ] (__codelineno-6-155) [ 696 0 R /XYZ 60.307257 476.215878 0 ] (__codelineno-6-156) [ 696 0 R /XYZ 60.307257 462.815526 0 ] (__codelineno-6-157) [ 696 0 R /XYZ 60.307257 449.415174 0 ] (__codelineno-6-158) [ 696 0 R /XYZ 60.307257 436.014822 0 ] (__codelineno-6-159) [ 696 0 R /XYZ 60.307257 422.614470 0 ] (__codelineno-6-16) [ 688 0 R /XYZ 60.307257 257.111322 0 ] (__codelineno-6-160) [ 696 0 R /XYZ 60.307257 409.214118 0 ] (__codelineno-6-161) [ 696 0 R /XYZ 60.307257 395.813766 0 ] (__codelineno-6-162) [ 696 0 R /XYZ 60.307257 382.413414 0 ] (__codelineno-6-163) [ 696 0 R /XYZ 60.307257 369.013062 0 ] (__codelineno-6-17) [ 688 0 R /XYZ 60.307257 243.710970 0 ] (__codelineno-6-18) [ 688 0 R /XYZ 60.307257 230.310618 0 ] (__codelineno-6-19) [ 688 0 R /XYZ 60.307257 216.910266 0 ] (__codelineno-6-2) [ 688 0 R /XYZ 60.307257 444.716250 0 ] (__codelineno-6-20) [ 688 0 R /XYZ 60.307257 203.509914 0 ] (__codelineno-6-21) [ 688 0 R /XYZ 60.307257 190.109562 0 ] (__codelineno-6-22) [ 688 0 R /XYZ 60.307257 176.709210 0 ] (__codelineno-6-23) [ 688 0 R /XYZ 60.307257 163.308858 0 ] (__codelineno-6-24) [ 688 0 R /XYZ 60.307257 149.908506 0 ] (__codelineno-6-25) [ 688 0 R /XYZ 60.307257 136.508154 0 ] (__codelineno-6-26) [ 688 0 R /XYZ 60.307257 123.107802 0 ] (__codelineno-6-27) [ 688 0 R /XYZ 60.307257 109.707450 0 ] (__codelineno-6-28) [ 688 0 R /XYZ 60.307257 96.307098 0 ] (__codelineno-6-29) [ 692 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-6-3) [ 688 0 R /XYZ 60.307257 431.315898 0 ] (__codelineno-6-30) [ 692 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-6-31) [ 692 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-6-32) [ 692 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-6-33) [ 692 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-6-34) [ 692 0 R /XYZ 60.307257 704.021862 0 ] (__codelineno-6-35) [ 692 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-6-36) [ 692 0 R /XYZ 60.307257 677.221158 0 ] (__codelineno-6-37) [ 692 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-6-38) [ 692 0 R /XYZ 60.307257 650.420454 0 ] (__codelineno-6-39) [ 692 0 R /XYZ 60.307257 637.020102 0 ] (__codelineno-6-4) [ 688 0 R /XYZ 60.307257 417.915546 0 ] (__codelineno-6-40) [ 692 0 R /XYZ 60.307257 623.619750 0 ] (__codelineno-6-41) [ 692 0 R /XYZ 60.307257 610.219398 0 ] (__codelineno-6-42) [ 692 0 R /XYZ 60.307257 596.819046 0 ] (__codelineno-6-43) [ 692 0 R /XYZ 60.307257 583.418694 0 ] (__codelineno-6-44) [ 692 0 R /XYZ 60.307257 570.018342 0 ] (__codelineno-6-45) [ 692 0 R /XYZ 60.307257 556.617990 0 ] (__codelineno-6-46) [ 692 0 R /XYZ 60.307257 543.217638 0 ] (__codelineno-6-47) [ 692 0 R /XYZ 60.307257 529.817286 0 ] (__codelineno-6-48) [ 692 0 R /XYZ 60.307257 516.416934 0 ] (__codelineno-6-49) [ 692 0 R /XYZ 60.307257 503.016582 0 ] (__codelineno-6-5) [ 688 0 R /XYZ 60.307257 404.515194 0 ] (__codelineno-6-50) [ 692 0 R /XYZ 60.307257 489.616230 0 ] (__codelineno-6-51) [ 692 0 R /XYZ 60.307257 476.215878 0 ] (__codelineno-6-52) [ 692 0 R /XYZ 60.307257 462.815526 0 ] (__codelineno-6-53) [ 692 0 R /XYZ 60.307257 449.415174 0 ] (__codelineno-6-54) [ 692 0 R /XYZ 60.307257 436.014822 0 ] (__codelineno-6-55) [ 692 0 R /XYZ 60.307257 422.614470 0 ] (__codelineno-6-56) [ 692 0 R /XYZ 60.307257 409.214118 0 ] (__codelineno-6-57) [ 692 0 R /XYZ 60.307257 395.813766 0 ] (__codelineno-6-58) [ 692 0 R /XYZ 60.307257 382.413414 0 ] (__codelineno-6-59) [ 692 0 R /XYZ 60.307257 369.013062 0 ] (__codelineno-6-6) [ 688 0 R /XYZ 60.307257 391.114842 0 ] (__codelineno-6-60) [ 692 0 R /XYZ 60.307257 355.612710 0 ] (__codelineno-6-61) [ 692 0 R /XYZ 60.307257 342.212358 0 ] (__codelineno-6-62) [ 692 0 R /XYZ 60.307257 328.812006 0 ] (__codelineno-6-63) [ 692 0 R /XYZ 60.307257 315.411654 0 ] (__codelineno-6-64) [ 692 0 R /XYZ 60.307257 302.011302 0 ] (__codelineno-6-65) [ 692 0 R /XYZ 60.307257 288.610950 0 ] (__codelineno-6-66) [ 692 0 R /XYZ 60.307257 275.210598 0 ] (__codelineno-6-67) [ 692 0 R /XYZ 60.307257 261.810246 0 ] (__codelineno-6-68) [ 692 0 R /XYZ 60.307257 248.409894 0 ] (__codelineno-6-69) [ 692 0 R /XYZ 60.307257 235.009542 0 ] (__codelineno-6-7) [ 688 0 R /XYZ 60.307257 377.714490 0 ] (__codelineno-6-70) [ 692 0 R /XYZ 60.307257 221.609190 0 ] (__codelineno-6-71) [ 692 0 R /XYZ 60.307257 208.208838 0 ] (__codelineno-6-72) [ 692 0 R /XYZ 60.307257 194.808486 0 ] (__codelineno-6-73) [ 692 0 R /XYZ 60.307257 181.408134 0 ] (__codelineno-6-74) [ 692 0 R /XYZ 60.307257 168.007782 0 ] (__codelineno-6-75) [ 692 0 R /XYZ 60.307257 154.607430 0 ] (__codelineno-6-76) [ 692 0 R /XYZ 60.307257 141.207078 0 ] (__codelineno-6-77) [ 692 0 R /XYZ 60.307257 127.806726 0 ] (__codelineno-6-78) [ 692 0 R /XYZ 60.307257 114.406374 0 ] (__codelineno-6-79) [ 692 0 R /XYZ 60.307257 101.006022 0 ] (__codelineno-6-8) [ 688 0 R /XYZ 60.307257 364.314138 0 ] (__codelineno-6-80) [ 692 0 R /XYZ 60.307257 87.605670 0 ] (__codelineno-6-81) [ 694 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-6-82) [ 694 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-6-83) [ 694 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-6-84) [ 694 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-6-85) [ 694 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-6-86) [ 694 0 R /XYZ 60.307257 704.021862 0 ] (__codelineno-6-87) [ 694 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-6-88) [ 694 0 R /XYZ 60.307257 677.221158 0 ] (__codelineno-6-89) [ 694 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-6-9) [ 688 0 R /XYZ 60.307257 350.913786 0 ] (__codelineno-6-90) [ 694 0 R /XYZ 60.307257 650.420454 0 ] (__codelineno-6-91) [ 694 0 R /XYZ 60.307257 637.020102 0 ] (__codelineno-6-92) [ 694 0 R /XYZ 60.307257 623.619750 0 ] (__codelineno-6-93) [ 694 0 R /XYZ 60.307257 610.219398 0 ] (__codelineno-6-94) [ 694 0 R /XYZ 60.307257 596.819046 0 ] (__codelineno-6-95) [ 694 0 R /XYZ 60.307257 583.418694 0 ] (__codelineno-6-96) [ 694 0 R /XYZ 60.307257 570.018342 0 ] (__codelineno-6-97) [ 694 0 R /XYZ 60.307257 556.617990 0 ] (__codelineno-6-98) [ 694 0 R /XYZ 60.307257 543.217638 0 ] (__codelineno-6-99) [ 694 0 R /XYZ 60.307257 529.817286 0 ] (__codelineno-7-1) [ 929 0 R /XYZ 60.307257 428.812602 0 ] (__codelineno-7-10) [ 1274 0 R /XYZ 60.307257 240.520223 0 ] (__codelineno-7-11) [ 1274 0 R /XYZ 60.307257 227.119871 0 ] (__codelineno-7-12) [ 1274 0 R /XYZ 60.307257 213.719519 0 ] (__codelineno-7-13) [ 1274 0 R /XYZ 60.307257 200.319167 0 ] (__codelineno-7-14) [ 1274 0 R /XYZ 60.307257 186.918815 0 ] (__codelineno-7-15) [ 1274 0 R /XYZ 60.307257 173.518463 0 ] (__codelineno-7-16) [ 1274 0 R /XYZ 60.307257 160.118111 0 ] (__codelineno-7-17) [ 1274 0 R /XYZ 60.307257 146.717759 0 ] (__codelineno-7-18) [ 1274 0 R /XYZ 60.307257 119.917055 0 ] (__codelineno-7-19) [ 1274 0 R /XYZ 60.307257 106.516703 0 ] (__codelineno-7-2) [ 929 0 R /XYZ 60.307257 415.412250 0 ] (__codelineno-7-20) [ 1274 0 R /XYZ 60.307257 93.116351 0 ] (__codelineno-7-21) [ 1281 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-7-22) [ 1281 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-7-23) [ 1281 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-7-24) [ 1281 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-7-25) [ 1281 0 R /XYZ 60.307257 704.021862 0 ] (__codelineno-7-26) [ 1281 0 R /XYZ 60.307257 677.221158 0 ] (__codelineno-7-27) [ 1281 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-7-28) [ 1281 0 R /XYZ 60.307257 637.020102 0 ] (__codelineno-7-29) [ 1281 0 R /XYZ 60.307257 610.219398 0 ] (__codelineno-7-3) [ 929 0 R /XYZ 60.307257 402.011898 0 ] (__codelineno-7-30) [ 1281 0 R /XYZ 60.307257 596.819046 0 ] (__codelineno-7-31) [ 1281 0 R /XYZ 60.307257 583.418694 0 ] (__codelineno-7-32) [ 1281 0 R /XYZ 60.307257 570.018342 0 ] (__codelineno-7-33) [ 1281 0 R /XYZ 60.307257 543.217638 0 ] (__codelineno-7-34) [ 1281 0 R /XYZ 60.307257 529.817286 0 ] (__codelineno-7-35) [ 1281 0 R /XYZ 60.307257 516.416934 0 ] (__codelineno-7-36) [ 1281 0 R /XYZ 60.307257 503.016582 0 ] (__codelineno-7-37) [ 1281 0 R /XYZ 60.307257 489.616230 0 ] (__codelineno-7-38) [ 1281 0 R /XYZ 60.307257 476.215878 0 ] (__codelineno-7-39) [ 1281 0 R /XYZ 60.307257 462.815526 0 ] (__codelineno-7-4) [ 929 0 R /XYZ 60.307257 388.611546 0 ] (__codelineno-7-40) [ 1281 0 R /XYZ 60.307257 449.415174 0 ] (__codelineno-7-41) [ 1281 0 R /XYZ 60.307257 422.614470 0 ] (__codelineno-7-42) [ 1281 0 R /XYZ 60.307257 409.214118 0 ] (__codelineno-7-43) [ 1281 0 R /XYZ 60.307257 395.813766 0 ] (__codelineno-7-44) [ 1281 0 R /XYZ 60.307257 382.413414 0 ] (__codelineno-7-45) [ 1281 0 R /XYZ 60.307257 369.013062 0 ] (__codelineno-7-46) [ 1281 0 R /XYZ 60.307257 355.612710 0 ] (__codelineno-7-47) [ 1281 0 R /XYZ 60.307257 342.212358 0 ] (__codelineno-7-48) [ 1281 0 R /XYZ 60.307257 328.812006 0 ] (__codelineno-7-49) [ 1281 0 R /XYZ 60.307257 315.411654 0 ] (__codelineno-7-5) [ 929 0 R /XYZ 60.307257 375.211194 0 ] (__codelineno-7-50) [ 1281 0 R /XYZ 60.307257 288.610950 0 ] (__codelineno-7-51) [ 1281 0 R /XYZ 60.307257 261.810246 0 ] (__codelineno-7-52) [ 1281 0 R /XYZ 60.307257 248.409894 0 ] (__codelineno-7-53) [ 1281 0 R /XYZ 60.307257 235.009542 0 ] (__codelineno-7-54) [ 1281 0 R /XYZ 60.307257 221.609190 0 ] (__codelineno-7-55) [ 1281 0 R /XYZ 60.307257 208.208838 0 ] (__codelineno-7-6) [ 929 0 R /XYZ 60.307257 361.810842 0 ] (__codelineno-7-7) [ 929 0 R /XYZ 60.307257 348.410490 0 ] (__codelineno-7-8) [ 1274 0 R /XYZ 60.307257 267.320927 0 ] (__codelineno-7-9) [ 1274 0 R /XYZ 60.307257 253.920575 0 ] (__codelineno-8-1) [ 931 0 R /XYZ 60.307257 381.602202 0 ] (__codelineno-8-10) [ 1312 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-8-11) [ 1312 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-8-12) [ 1312 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-8-13) [ 1312 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-8-14) [ 1312 0 R /XYZ 60.307257 704.021862 0 ] (__codelineno-8-15) [ 1312 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-8-16) [ 1312 0 R /XYZ 60.307257 677.221158 0 ] (__codelineno-8-17) [ 1312 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-8-18) [ 1312 0 R /XYZ 60.307257 650.420454 0 ] (__codelineno-8-19) [ 1312 0 R /XYZ 60.307257 637.020102 0 ] (__codelineno-8-2) [ 931 0 R /XYZ 60.307257 368.201850 0 ] (__codelineno-8-20) [ 1312 0 R /XYZ 60.307257 623.619750 0 ] (__codelineno-8-21) [ 1312 0 R /XYZ 60.307257 610.219398 0 ] (__codelineno-8-22) [ 1312 0 R /XYZ 60.307257 596.819046 0 ] (__codelineno-8-23) [ 1312 0 R /XYZ 60.307257 583.418694 0 ] (__codelineno-8-24) [ 1312 0 R /XYZ 60.307257 570.018342 0 ] (__codelineno-8-25) [ 1312 0 R /XYZ 60.307257 556.617990 0 ] (__codelineno-8-26) [ 1312 0 R /XYZ 60.307257 543.217638 0 ] (__codelineno-8-27) [ 1312 0 R /XYZ 60.307257 529.817286 0 ] (__codelineno-8-28) [ 1312 0 R /XYZ 60.307257 516.416934 0 ] (__codelineno-8-29) [ 1312 0 R /XYZ 60.307257 503.016582 0 ] (__codelineno-8-3) [ 931 0 R /XYZ 60.307257 354.801498 0 ] (__codelineno-8-4) [ 931 0 R /XYZ 60.307257 341.401146 0 ] (__codelineno-8-5) [ 931 0 R /XYZ 60.307257 328.000794 0 ] (__codelineno-8-6) [ 931 0 R /XYZ 60.307257 314.600442 0 ] (__codelineno-8-7) [ 1307 0 R /XYZ 60.307257 97.879717 0 ] (__codelineno-8-8) [ 1307 0 R /XYZ 60.307257 84.479365 0 ] (__codelineno-8-9) [ 1312 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-9-1) [ 936 0 R /XYZ 60.307257 458.458122 0 ] (__codelineno-9-10) [ 1319 0 R /XYZ 60.307257 643.030554 0 ] (__codelineno-9-11) [ 1319 0 R /XYZ 60.307257 629.630202 0 ] (__codelineno-9-12) [ 1319 0 R /XYZ 60.307257 616.229850 0 ] (__codelineno-9-13) [ 1319 0 R /XYZ 60.307257 602.829498 0 ] (__codelineno-9-14) [ 1319 0 R /XYZ 60.307257 589.429146 0 ] (__codelineno-9-15) [ 1319 0 R /XYZ 60.307257 576.028794 0 ] (__codelineno-9-16) [ 1319 0 R /XYZ 60.307257 562.628442 0 ] (__codelineno-9-17) [ 1319 0 R /XYZ 60.307257 549.228090 0 ] (__codelineno-9-18) [ 1319 0 R /XYZ 60.307257 535.827738 0 ] (__codelineno-9-19) [ 1319 0 R /XYZ 60.307257 522.427386 0 ] (__codelineno-9-2) [ 936 0 R /XYZ 60.307257 445.057770 0 ] (__codelineno-9-20) [ 1319 0 R /XYZ 60.307257 509.027034 0 ] (__codelineno-9-21) [ 1319 0 R /XYZ 60.307257 495.626682 0 ] (__codelineno-9-22) [ 1319 0 R /XYZ 60.307257 482.226330 0 ] (__codelineno-9-23) [ 1319 0 R /XYZ 60.307257 468.825978 0 ] (__codelineno-9-24) [ 1319 0 R /XYZ 60.307257 455.425626 0 ] (__codelineno-9-25) [ 1319 0 R /XYZ 60.307257 442.025274 0 ] (__codelineno-9-26) [ 1319 0 R /XYZ 60.307257 428.624922 0 ] (__codelineno-9-27) [ 1319 0 R /XYZ 60.307257 415.224570 0 ] (__codelineno-9-28) [ 1319 0 R /XYZ 60.307257 401.824218 0 ] (__codelineno-9-29) [ 1319 0 R /XYZ 60.307257 388.423866 0 ] (__codelineno-9-3) [ 936 0 R /XYZ 60.307257 431.657418 0 ] (__codelineno-9-30) [ 1319 0 R /XYZ 60.307257 375.023514 0 ] (__codelineno-9-31) [ 1319 0 R /XYZ 60.307257 361.623162 0 ] (__codelineno-9-32) [ 1319 0 R /XYZ 60.307257 348.222810 0 ] (__codelineno-9-33) [ 1319 0 R /XYZ 60.307257 334.822458 0 ] (__codelineno-9-34) [ 1319 0 R /XYZ 60.307257 321.422106 0 ] (__codelineno-9-35) [ 1319 0 R /XYZ 60.307257 308.021754 0 ] (__codelineno-9-36) [ 1319 0 R /XYZ 60.307257 294.621402 0 ] (__codelineno-9-37) [ 1319 0 R /XYZ 60.307257 281.221050 0 ] (__codelineno-9-38) [ 1319 0 R /XYZ 60.307257 267.820698 0 ] (__codelineno-9-39) [ 1319 0 R /XYZ 60.307257 254.420346 0 ] (__codelineno-9-4) [ 936 0 R /XYZ 60.307257 418.257066 0 ] (__codelineno-9-40) [ 1319 0 R /XYZ 60.307257 241.019994 0 ] (__codelineno-9-41) [ 1319 0 R /XYZ 60.307257 227.619642 0 ] (__codelineno-9-42) [ 1319 0 R /XYZ 60.307257 214.219290 0 ] (__codelineno-9-43) [ 1319 0 R /XYZ 60.307257 200.818938 0 ] (__codelineno-9-5) [ 936 0 R /XYZ 60.307257 404.856714 0 ] (__codelineno-9-6) [ 936 0 R /XYZ 60.307257 391.456362 0 ] (__codelineno-9-7) [ 936 0 R /XYZ 60.307257 378.056010 0 ] (__codelineno-9-8) [ 1319 0 R /XYZ 60.307257 669.831258 0 ] (__codelineno-9-9) [ 1319 0 R /XYZ 60.307257 656.430906 0 ] (author) [ 6 0 R /XYZ 55.946457 113.701342 0 ] (copyright) [ 6 0 R /XYZ 55.946457 84.997342 0 ] (doc-cover) [ 6 0 R /XYZ 28.346457 771.023622 0 ] (doc-toc) [ 8 0 R /XYZ 39.386457 771.023622 0 ] (jdb/:) [ 1138 0 R /XYZ 39.386457 771.023622 0 ] (jdb/:26-avril-2023) [ 1490 0 R /XYZ 39.386457 222.365322 0 ] (jdb/:__span-0-1) [ 1138 0 R /XYZ 60.307257 505.092222 0 ] (jdb/:__span-0-10) [ 1138 0 R /XYZ 60.307257 384.489054 0 ] (jdb/:__span-0-11) [ 1138 0 R /XYZ 60.307257 371.088702 0 ] (jdb/:__span-0-12) [ 1138 0 R /XYZ 60.307257 357.688350 0 ] (jdb/:__span-0-13) [ 1138 0 R /XYZ 60.307257 344.287998 0 ] (jdb/:__span-0-14) [ 1138 0 R /XYZ 60.307257 330.887646 0 ] (jdb/:__span-0-15) [ 1138 0 R /XYZ 60.307257 317.487294 0 ] (jdb/:__span-0-16) [ 1138 0 R /XYZ 60.307257 304.086942 0 ] (jdb/:__span-0-17) [ 1138 0 R /XYZ 60.307257 290.686590 0 ] (jdb/:__span-0-18) [ 1138 0 R /XYZ 60.307257 277.286238 0 ] (jdb/:__span-0-19) [ 1138 0 R /XYZ 60.307257 263.885886 0 ] (jdb/:__span-0-2) [ 1138 0 R /XYZ 60.307257 491.691870 0 ] (jdb/:__span-0-20) [ 1138 0 R /XYZ 60.307257 250.485534 0 ] (jdb/:__span-0-21) [ 1138 0 R /XYZ 60.307257 237.085182 0 ] (jdb/:__span-0-22) [ 1138 0 R /XYZ 60.307257 223.684830 0 ] (jdb/:__span-0-23) [ 1138 0 R /XYZ 60.307257 210.284478 0 ] (jdb/:__span-0-3) [ 1138 0 R /XYZ 60.307257 478.291518 0 ] (jdb/:__span-0-4) [ 1138 0 R /XYZ 60.307257 464.891166 0 ] (jdb/:__span-0-5) [ 1138 0 R /XYZ 60.307257 451.490814 0 ] (jdb/:__span-0-6) [ 1138 0 R /XYZ 60.307257 438.090462 0 ] (jdb/:__span-0-7) [ 1138 0 R /XYZ 60.307257 424.690110 0 ] (jdb/:__span-0-8) [ 1138 0 R /XYZ 60.307257 411.289758 0 ] (jdb/:__span-0-9) [ 1138 0 R /XYZ 60.307257 397.889406 0 ] (jdb/:__span-1-1) [ 1156 0 R /XYZ 60.307257 292.693722 0 ] (jdb/:__span-1-2) [ 1156 0 R /XYZ 60.307257 265.893018 0 ] (jdb/:__span-1-3) [ 1156 0 R /XYZ 60.307257 252.492666 0 ] (jdb/:__span-1-4) [ 1156 0 R /XYZ 60.307257 239.092314 0 ] (jdb/:__span-1-5) [ 1156 0 R /XYZ 60.307257 225.691962 0 ] (jdb/:__span-1-6) [ 1156 0 R /XYZ 60.307257 212.291610 0 ] (jdb/:__span-10-1) [ 1321 0 R /XYZ 60.307257 697.945722 0 ] (jdb/:__span-10-10) [ 1321 0 R /XYZ 60.307257 577.342554 0 ] (jdb/:__span-10-11) [ 1321 0 R /XYZ 60.307257 563.942202 0 ] (jdb/:__span-10-12) [ 1321 0 R /XYZ 60.307257 550.541850 0 ] (jdb/:__span-10-13) [ 1321 0 R /XYZ 60.307257 537.141498 0 ] (jdb/:__span-10-14) [ 1321 0 R /XYZ 60.307257 523.741146 0 ] (jdb/:__span-10-15) [ 1321 0 R /XYZ 60.307257 510.340794 0 ] (jdb/:__span-10-16) [ 1321 0 R /XYZ 60.307257 496.940442 0 ] (jdb/:__span-10-17) [ 1321 0 R /XYZ 60.307257 483.540090 0 ] (jdb/:__span-10-18) [ 1321 0 R /XYZ 60.307257 470.139738 0 ] (jdb/:__span-10-19) [ 1321 0 R /XYZ 60.307257 456.739386 0 ] (jdb/:__span-10-2) [ 1321 0 R /XYZ 60.307257 684.545370 0 ] (jdb/:__span-10-20) [ 1321 0 R /XYZ 60.307257 443.339034 0 ] (jdb/:__span-10-21) [ 1321 0 R /XYZ 60.307257 429.938682 0 ] (jdb/:__span-10-22) [ 1321 0 R /XYZ 60.307257 416.538330 0 ] (jdb/:__span-10-23) [ 1321 0 R /XYZ 60.307257 403.137978 0 ] (jdb/:__span-10-3) [ 1321 0 R /XYZ 60.307257 671.145018 0 ] (jdb/:__span-10-4) [ 1321 0 R /XYZ 60.307257 657.744666 0 ] (jdb/:__span-10-5) [ 1321 0 R /XYZ 60.307257 644.344314 0 ] (jdb/:__span-10-6) [ 1321 0 R /XYZ 60.307257 630.943962 0 ] (jdb/:__span-10-7) [ 1321 0 R /XYZ 60.307257 617.543610 0 ] (jdb/:__span-10-8) [ 1321 0 R /XYZ 60.307257 604.143258 0 ] (jdb/:__span-10-9) [ 1321 0 R /XYZ 60.307257 590.742906 0 ] (jdb/:__span-11-1) [ 1340 0 R /XYZ 60.307257 129.981873 0 ] (jdb/:__span-11-10) [ 1344 0 R /XYZ 60.307257 704.021862 0 ] (jdb/:__span-11-11) [ 1344 0 R /XYZ 60.307257 690.621510 0 ] (jdb/:__span-11-12) [ 1344 0 R /XYZ 60.307257 677.221158 0 ] (jdb/:__span-11-13) [ 1344 0 R /XYZ 60.307257 663.820806 0 ] (jdb/:__span-11-14) [ 1344 0 R /XYZ 60.307257 650.420454 0 ] (jdb/:__span-11-15) [ 1344 0 R /XYZ 60.307257 637.020102 0 ] (jdb/:__span-11-16) [ 1344 0 R /XYZ 60.307257 623.619750 0 ] (jdb/:__span-11-17) [ 1344 0 R /XYZ 60.307257 610.219398 0 ] (jdb/:__span-11-18) [ 1344 0 R /XYZ 60.307257 596.819046 0 ] (jdb/:__span-11-19) [ 1344 0 R /XYZ 60.307257 583.418694 0 ] (jdb/:__span-11-2) [ 1340 0 R /XYZ 60.307257 116.581521 0 ] (jdb/:__span-11-20) [ 1344 0 R /XYZ 60.307257 570.018342 0 ] (jdb/:__span-11-21) [ 1344 0 R /XYZ 60.307257 556.617990 0 ] (jdb/:__span-11-22) [ 1344 0 R /XYZ 60.307257 543.217638 0 ] (jdb/:__span-11-3) [ 1340 0 R /XYZ 60.307257 103.181169 0 ] (jdb/:__span-11-4) [ 1340 0 R /XYZ 60.307257 89.780817 0 ] (jdb/:__span-11-5) [ 1344 0 R /XYZ 60.307257 771.023622 0 ] (jdb/:__span-11-6) [ 1344 0 R /XYZ 60.307257 757.623270 0 ] (jdb/:__span-11-7) [ 1344 0 R /XYZ 60.307257 744.222918 0 ] (jdb/:__span-11-8) [ 1344 0 R /XYZ 60.307257 730.822566 0 ] (jdb/:__span-11-9) [ 1344 0 R /XYZ 60.307257 717.422214 0 ] (jdb/:__span-12-1) [ 1344 0 R /XYZ 60.307257 477.501486 0 ] (jdb/:__span-12-10) [ 1344 0 R /XYZ 60.307257 356.898318 0 ] (jdb/:__span-12-11) [ 1344 0 R /XYZ 60.307257 343.497966 0 ] (jdb/:__span-12-12) [ 1344 0 R /XYZ 60.307257 330.097614 0 ] (jdb/:__span-12-13) [ 1344 0 R /XYZ 60.307257 316.697262 0 ] (jdb/:__span-12-14) [ 1344 0 R /XYZ 60.307257 303.296910 0 ] (jdb/:__span-12-15) [ 1344 0 R /XYZ 60.307257 289.896558 0 ] (jdb/:__span-12-16) [ 1344 0 R /XYZ 60.307257 276.496206 0 ] (jdb/:__span-12-17) [ 1344 0 R /XYZ 60.307257 263.095854 0 ] (jdb/:__span-12-18) [ 1344 0 R /XYZ 60.307257 249.695502 0 ] (jdb/:__span-12-19) [ 1344 0 R /XYZ 60.307257 236.295150 0 ] (jdb/:__span-12-2) [ 1344 0 R /XYZ 60.307257 464.101134 0 ] (jdb/:__span-12-20) [ 1344 0 R /XYZ 60.307257 222.894798 0 ] (jdb/:__span-12-21) [ 1344 0 R /XYZ 60.307257 209.494446 0 ] (jdb/:__span-12-22) [ 1344 0 R /XYZ 60.307257 196.094094 0 ] (jdb/:__span-12-3) [ 1344 0 R /XYZ 60.307257 450.700782 0 ] (jdb/:__span-12-4) [ 1344 0 R /XYZ 60.307257 437.300430 0 ] (jdb/:__span-12-5) [ 1344 0 R /XYZ 60.307257 423.900078 0 ] (jdb/:__span-12-6) [ 1344 0 R /XYZ 60.307257 410.499726 0 ] (jdb/:__span-12-7) [ 1344 0 R /XYZ 60.307257 397.099374 0 ] (jdb/:__span-12-8) [ 1344 0 R /XYZ 60.307257 383.699022 0 ] (jdb/:__span-12-9) [ 1344 0 R /XYZ 60.307257 370.298670 0 ] (jdb/:__span-13-1) [ 1348 0 R /XYZ 60.307257 722.344122 0 ] (jdb/:__span-13-2) [ 1348 0 R /XYZ 60.307257 708.943770 0 ] (jdb/:__span-13-3) [ 1348 0 R /XYZ 60.307257 695.543418 0 ] (jdb/:__span-13-4) [ 1348 0 R /XYZ 60.307257 682.143066 0 ] (jdb/:__span-13-5) [ 1348 0 R /XYZ 60.307257 668.742714 0 ] (jdb/:__span-13-6) [ 1348 0 R /XYZ 60.307257 655.342362 0 ] (jdb/:__span-13-7) [ 1348 0 R /XYZ 60.307257 641.942010 0 ] (jdb/:__span-13-8) [ 1348 0 R /XYZ 60.307257 628.541658 0 ] (jdb/:__span-13-9) [ 1348 0 R /XYZ 60.307257 615.141306 0 ] (jdb/:__span-14-1) [ 1348 0 R /XYZ 60.307257 510.012354 0 ] (jdb/:__span-14-2) [ 1348 0 R /XYZ 60.307257 496.612002 0 ] (jdb/:__span-14-3) [ 1348 0 R /XYZ 60.307257 483.211650 0 ] (jdb/:__span-14-4) [ 1348 0 R /XYZ 60.307257 469.811298 0 ] (jdb/:__span-14-5) [ 1348 0 R /XYZ 60.307257 456.410946 0 ] (jdb/:__span-14-6) [ 1348 0 R /XYZ 60.307257 443.010594 0 ] (jdb/:__span-14-7) [ 1348 0 R /XYZ 60.307257 429.610242 0 ] (jdb/:__span-14-8) [ 1348 0 R /XYZ 60.307257 416.209890 0 ] (jdb/:__span-14-9) [ 1348 0 R /XYZ 60.307257 402.809538 0 ] (jdb/:__span-15-1) [ 1386 0 R /XYZ 60.307257 512.569722 0 ] (jdb/:__span-15-10) [ 1386 0 R /XYZ 60.307257 391.966554 0 ] (jdb/:__span-15-11) [ 1386 0 R /XYZ 60.307257 378.566202 0 ] (jdb/:__span-15-12) [ 1386 0 R /XYZ 60.307257 365.165850 0 ] (jdb/:__span-15-13) [ 1386 0 R /XYZ 60.307257 351.765498 0 ] (jdb/:__span-15-14) [ 1386 0 R /XYZ 60.307257 338.365146 0 ] (jdb/:__span-15-15) [ 1386 0 R /XYZ 60.307257 324.964794 0 ] (jdb/:__span-15-16) [ 1386 0 R /XYZ 60.307257 311.564442 0 ] (jdb/:__span-15-17) [ 1386 0 R /XYZ 60.307257 298.164090 0 ] (jdb/:__span-15-18) [ 1386 0 R /XYZ 60.307257 284.763738 0 ] (jdb/:__span-15-2) [ 1386 0 R /XYZ 60.307257 499.169370 0 ] (jdb/:__span-15-3) [ 1386 0 R /XYZ 60.307257 485.769018 0 ] (jdb/:__span-15-4) [ 1386 0 R /XYZ 60.307257 472.368666 0 ] (jdb/:__span-15-5) [ 1386 0 R /XYZ 60.307257 458.968314 0 ] (jdb/:__span-15-6) [ 1386 0 R /XYZ 60.307257 445.567962 0 ] (jdb/:__span-15-7) [ 1386 0 R /XYZ 60.307257 432.167610 0 ] (jdb/:__span-15-8) [ 1386 0 R /XYZ 60.307257 418.767258 0 ] (jdb/:__span-15-9) [ 1386 0 R /XYZ 60.307257 405.366906 0 ] (jdb/:__span-16-1) [ 1391 0 R /XYZ 60.307257 422.361822 0 ] (jdb/:__span-16-10) [ 1391 0 R /XYZ 60.307257 301.758654 0 ] (jdb/:__span-16-11) [ 1391 0 R /XYZ 60.307257 288.358302 0 ] (jdb/:__span-16-12) [ 1391 0 R /XYZ 60.307257 274.957950 0 ] (jdb/:__span-16-13) [ 1391 0 R /XYZ 60.307257 261.557598 0 ] (jdb/:__span-16-14) [ 1391 0 R /XYZ 60.307257 248.157246 0 ] (jdb/:__span-16-15) [ 1391 0 R /XYZ 60.307257 234.756894 0 ] (jdb/:__span-16-16) [ 1391 0 R /XYZ 60.307257 221.356542 0 ] (jdb/:__span-16-17) [ 1391 0 R /XYZ 60.307257 207.956190 0 ] (jdb/:__span-16-18) [ 1391 0 R /XYZ 60.307257 194.555838 0 ] (jdb/:__span-16-2) [ 1391 0 R /XYZ 60.307257 408.961470 0 ] (jdb/:__span-16-3) [ 1391 0 R /XYZ 60.307257 395.561118 0 ] (jdb/:__span-16-4) [ 1391 0 R /XYZ 60.307257 382.160766 0 ] (jdb/:__span-16-5) [ 1391 0 R /XYZ 60.307257 368.760414 0 ] (jdb/:__span-16-6) [ 1391 0 R /XYZ 60.307257 355.360062 0 ] (jdb/:__span-16-7) [ 1391 0 R /XYZ 60.307257 341.959710 0 ] (jdb/:__span-16-8) [ 1391 0 R /XYZ 60.307257 328.559358 0 ] (jdb/:__span-16-9) [ 1391 0 R /XYZ 60.307257 315.159006 0 ] (jdb/:__span-17-1) [ 1402 0 R /XYZ 60.307257 363.601105 0 ] (jdb/:__span-17-10) [ 1402 0 R /XYZ 60.307257 242.997937 0 ] (jdb/:__span-17-11) [ 1402 0 R /XYZ 60.307257 229.597585 0 ] (jdb/:__span-17-12) [ 1402 0 R /XYZ 60.307257 202.796881 0 ] (jdb/:__span-17-13) [ 1402 0 R /XYZ 60.307257 189.396529 0 ] (jdb/:__span-17-14) [ 1402 0 R /XYZ 60.307257 175.996177 0 ] (jdb/:__span-17-15) [ 1402 0 R /XYZ 60.307257 162.595825 0 ] (jdb/:__span-17-16) [ 1402 0 R /XYZ 60.307257 149.195473 0 ] (jdb/:__span-17-17) [ 1402 0 R /XYZ 60.307257 135.795121 0 ] (jdb/:__span-17-18) [ 1402 0 R /XYZ 60.307257 122.394769 0 ] (jdb/:__span-17-19) [ 1402 0 R /XYZ 60.307257 108.994417 0 ] (jdb/:__span-17-2) [ 1402 0 R /XYZ 60.307257 350.200753 0 ] (jdb/:__span-17-20) [ 1402 0 R /XYZ 60.307257 95.594065 0 ] (jdb/:__span-17-21) [ 1406 0 R /XYZ 60.307257 771.023622 0 ] (jdb/:__span-17-22) [ 1406 0 R /XYZ 60.307257 757.623270 0 ] (jdb/:__span-17-23) [ 1406 0 R /XYZ 60.307257 744.222918 0 ] (jdb/:__span-17-24) [ 1406 0 R /XYZ 60.307257 717.422214 0 ] (jdb/:__span-17-3) [ 1402 0 R /XYZ 60.307257 336.800401 0 ] (jdb/:__span-17-4) [ 1402 0 R /XYZ 60.307257 323.400049 0 ] (jdb/:__span-17-5) [ 1402 0 R /XYZ 60.307257 309.999697 0 ] (jdb/:__span-17-6) [ 1402 0 R /XYZ 60.307257 296.599345 0 ] (jdb/:__span-17-7) [ 1402 0 R /XYZ 60.307257 283.198993 0 ] (jdb/:__span-17-8) [ 1402 0 R /XYZ 60.307257 269.798641 0 ] (jdb/:__span-17-9) [ 1402 0 R /XYZ 60.307257 256.398289 0 ] (jdb/:__span-18-1) [ 1437 0 R /XYZ 60.307257 236.252922 0 ] (jdb/:__span-18-10) [ 1439 0 R /XYZ 60.307257 717.422214 0 ] (jdb/:__span-18-11) [ 1439 0 R /XYZ 60.307257 690.621510 0 ] (jdb/:__span-18-12) [ 1439 0 R /XYZ 60.307257 663.820806 0 ] (jdb/:__span-18-13) [ 1439 0 R /XYZ 60.307257 637.020102 0 ] (jdb/:__span-18-14) [ 1439 0 R /XYZ 60.307257 610.219398 0 ] (jdb/:__span-18-15) [ 1439 0 R /XYZ 60.307257 583.418694 0 ] (jdb/:__span-18-16) [ 1439 0 R /XYZ 60.307257 556.617990 0 ] (jdb/:__span-18-17) [ 1439 0 R /XYZ 60.307257 543.217638 0 ] (jdb/:__span-18-18) [ 1439 0 R /XYZ 60.307257 529.817286 0 ] (jdb/:__span-18-2) [ 1437 0 R /XYZ 60.307257 222.852570 0 ] (jdb/:__span-18-3) [ 1437 0 R /XYZ 60.307257 209.452218 0 ] (jdb/:__span-18-4) [ 1437 0 R /XYZ 60.307257 169.251162 0 ] (jdb/:__span-18-5) [ 1437 0 R /XYZ 60.307257 142.450458 0 ] (jdb/:__span-18-6) [ 1437 0 R /XYZ 60.307257 129.050106 0 ] (jdb/:__span-18-7) [ 1437 0 R /XYZ 60.307257 115.649754 0 ] (jdb/:__span-18-8) [ 1437 0 R /XYZ 60.307257 88.849050 0 ] (jdb/:__span-18-9) [ 1439 0 R /XYZ 60.307257 744.222918 0 ] (jdb/:__span-19-1) [ 1439 0 R /XYZ 60.307257 464.101134 0 ] (jdb/:__span-19-2) [ 1439 0 R /XYZ 60.307257 450.700782 0 ] (jdb/:__span-19-3) [ 1439 0 R /XYZ 60.307257 437.300430 0 ] (jdb/:__span-19-4) [ 1439 0 R /XYZ 60.307257 423.900078 0 ] (jdb/:__span-2-1) [ 1156 0 R /XYZ 60.307257 131.561058 0 ] (jdb/:__span-2-2) [ 1156 0 R /XYZ 60.307257 118.160706 0 ] (jdb/:__span-2-3) [ 1156 0 R /XYZ 60.307257 104.760354 0 ] (jdb/:__span-2-4) [ 1156 0 R /XYZ 60.307257 91.360002 0 ] (jdb/:__span-2-5) [ 1166 0 R /XYZ 60.307257 771.023622 0 ] (jdb/:__span-2-6) [ 1166 0 R /XYZ 60.307257 757.623270 0 ] (jdb/:__span-2-7) [ 1166 0 R /XYZ 60.307257 744.222918 0 ] (jdb/:__span-2-8) [ 1166 0 R /XYZ 60.307257 730.822566 0 ] (jdb/:__span-20-1) [ 1439 0 R /XYZ 60.307257 333.785526 0 ] (jdb/:__span-20-2) [ 1439 0 R /XYZ 60.307257 320.385174 0 ] (jdb/:__span-20-3) [ 1439 0 R /XYZ 60.307257 306.984822 0 ] (jdb/:__span-20-4) [ 1439 0 R /XYZ 60.307257 293.584470 0 ] (jdb/:__span-21-1) [ 1439 0 R /XYZ 60.307257 227.868318 0 ] (jdb/:__span-21-2) [ 1439 0 R /XYZ 60.307257 214.467966 0 ] (jdb/:__span-21-3) [ 1439 0 R /XYZ 60.307257 201.067614 0 ] (jdb/:__span-21-4) [ 1439 0 R /XYZ 60.307257 187.667262 0 ] (jdb/:__span-21-5) [ 1439 0 R /XYZ 60.307257 174.266910 0 ] (jdb/:__span-21-6) [ 1439 0 R /XYZ 60.307257 160.866558 0 ] (jdb/:__span-21-7) [ 1439 0 R /XYZ 60.307257 134.065854 0 ] (jdb/:__span-21-8) [ 1439 0 R /XYZ 60.307257 120.665502 0 ] (jdb/:__span-22-1) [ 1441 0 R /XYZ 60.307257 697.945722 0 ] (jdb/:__span-22-2) [ 1441 0 R /XYZ 60.307257 684.545370 0 ] (jdb/:__span-22-3) [ 1441 0 R /XYZ 60.307257 671.145018 0 ] (jdb/:__span-22-4) [ 1441 0 R /XYZ 60.307257 644.344314 0 ] (jdb/:__span-22-5) [ 1441 0 R /XYZ 60.307257 630.943962 0 ] (jdb/:__span-23-1) [ 1458 0 R /XYZ 60.307257 422.056122 0 ] (jdb/:__span-23-2) [ 1458 0 R /XYZ 60.307257 381.855066 0 ] (jdb/:__span-23-3) [ 1458 0 R /XYZ 60.307257 368.454714 0 ] (jdb/:__span-23-4) [ 1458 0 R /XYZ 60.307257 355.054362 0 ] (jdb/:__span-23-5) [ 1458 0 R /XYZ 60.307257 341.654010 0 ] (jdb/:__span-24-1) [ 1463 0 R /XYZ 60.307257 520.588122 0 ] (jdb/:__span-24-10) [ 1463 0 R /XYZ 60.307257 373.184250 0 ] (jdb/:__span-24-2) [ 1463 0 R /XYZ 60.307257 480.387066 0 ] (jdb/:__span-24-3) [ 1463 0 R /XYZ 60.307257 466.986714 0 ] (jdb/:__span-24-4) [ 1463 0 R /XYZ 60.307257 453.586362 0 ] (jdb/:__span-24-5) [ 1463 0 R /XYZ 60.307257 440.186010 0 ] (jdb/:__span-24-6) [ 1463 0 R /XYZ 60.307257 426.785658 0 ] (jdb/:__span-24-7) [ 1463 0 R /XYZ 60.307257 413.385306 0 ] (jdb/:__span-24-8) [ 1463 0 R /XYZ 60.307257 399.984954 0 ] (jdb/:__span-24-9) [ 1463 0 R /XYZ 60.307257 386.584602 0 ] (jdb/:__span-25-1) [ 1465 0 R /XYZ 60.307257 342.292122 0 ] (jdb/:__span-25-10) [ 1465 0 R /XYZ 60.307257 221.688954 0 ] (jdb/:__span-25-11) [ 1465 0 R /XYZ 60.307257 208.288602 0 ] (jdb/:__span-25-12) [ 1465 0 R /XYZ 60.307257 194.888250 0 ] (jdb/:__span-25-13) [ 1465 0 R /XYZ 60.307257 181.487898 0 ] (jdb/:__span-25-14) [ 1465 0 R /XYZ 60.307257 168.087546 0 ] (jdb/:__span-25-15) [ 1465 0 R /XYZ 60.307257 154.687194 0 ] (jdb/:__span-25-16) [ 1465 0 R /XYZ 60.307257 141.286842 0 ] (jdb/:__span-25-17) [ 1465 0 R /XYZ 60.307257 127.886490 0 ] (jdb/:__span-25-18) [ 1465 0 R /XYZ 60.307257 114.486138 0 ] (jdb/:__span-25-19) [ 1465 0 R /XYZ 60.307257 101.085786 0 ] (jdb/:__span-25-2) [ 1465 0 R /XYZ 60.307257 328.891770 0 ] (jdb/:__span-25-20) [ 1465 0 R /XYZ 60.307257 87.685434 0 ] (jdb/:__span-25-21) [ 1467 0 R /XYZ 60.307257 771.023622 0 ] (jdb/:__span-25-22) [ 1467 0 R /XYZ 60.307257 757.623270 0 ] (jdb/:__span-25-23) [ 1467 0 R /XYZ 60.307257 744.222918 0 ] (jdb/:__span-25-24) [ 1467 0 R /XYZ 60.307257 730.822566 0 ] (jdb/:__span-25-25) [ 1467 0 R /XYZ 60.307257 717.422214 0 ] (jdb/:__span-25-26) [ 1467 0 R /XYZ 60.307257 704.021862 0 ] (jdb/:__span-25-27) [ 1467 0 R /XYZ 60.307257 690.621510 0 ] (jdb/:__span-25-28) [ 1467 0 R /XYZ 60.307257 677.221158 0 ] (jdb/:__span-25-29) [ 1467 0 R /XYZ 60.307257 663.820806 0 ] (jdb/:__span-25-3) [ 1465 0 R /XYZ 60.307257 315.491418 0 ] (jdb/:__span-25-30) [ 1467 0 R /XYZ 60.307257 650.420454 0 ] (jdb/:__span-25-31) [ 1467 0 R /XYZ 60.307257 637.020102 0 ] (jdb/:__span-25-32) [ 1467 0 R /XYZ 60.307257 623.619750 0 ] (jdb/:__span-25-33) [ 1467 0 R /XYZ 60.307257 610.219398 0 ] (jdb/:__span-25-34) [ 1467 0 R /XYZ 60.307257 596.819046 0 ] (jdb/:__span-25-35) [ 1467 0 R /XYZ 60.307257 583.418694 0 ] (jdb/:__span-25-36) [ 1467 0 R /XYZ 60.307257 570.018342 0 ] (jdb/:__span-25-37) [ 1467 0 R /XYZ 60.307257 556.617990 0 ] (jdb/:__span-25-38) [ 1467 0 R /XYZ 60.307257 543.217638 0 ] (jdb/:__span-25-39) [ 1467 0 R /XYZ 60.307257 516.416934 0 ] (jdb/:__span-25-4) [ 1465 0 R /XYZ 60.307257 302.091066 0 ] (jdb/:__span-25-40) [ 1467 0 R /XYZ 60.307257 503.016582 0 ] (jdb/:__span-25-41) [ 1467 0 R /XYZ 60.307257 489.616230 0 ] (jdb/:__span-25-42) [ 1467 0 R /XYZ 60.307257 476.215878 0 ] (jdb/:__span-25-43) [ 1467 0 R /XYZ 60.307257 462.815526 0 ] (jdb/:__span-25-44) [ 1467 0 R /XYZ 60.307257 449.415174 0 ] (jdb/:__span-25-45) [ 1467 0 R /XYZ 60.307257 436.014822 0 ] (jdb/:__span-25-46) [ 1467 0 R /XYZ 60.307257 422.614470 0 ] (jdb/:__span-25-47) [ 1467 0 R /XYZ 60.307257 409.214118 0 ] (jdb/:__span-25-48) [ 1467 0 R /XYZ 60.307257 395.813766 0 ] (jdb/:__span-25-49) [ 1467 0 R /XYZ 60.307257 382.413414 0 ] (jdb/:__span-25-5) [ 1465 0 R /XYZ 60.307257 288.690714 0 ] (jdb/:__span-25-50) [ 1467 0 R /XYZ 60.307257 369.013062 0 ] (jdb/:__span-25-51) [ 1467 0 R /XYZ 60.307257 342.212358 0 ] (jdb/:__span-25-52) [ 1467 0 R /XYZ 60.307257 328.812006 0 ] (jdb/:__span-25-53) [ 1467 0 R /XYZ 60.307257 315.411654 0 ] (jdb/:__span-25-54) [ 1467 0 R /XYZ 60.307257 302.011302 0 ] (jdb/:__span-25-55) [ 1467 0 R /XYZ 60.307257 288.610950 0 ] (jdb/:__span-25-56) [ 1467 0 R /XYZ 60.307257 275.210598 0 ] (jdb/:__span-25-57) [ 1467 0 R /XYZ 60.307257 261.810246 0 ] (jdb/:__span-25-58) [ 1467 0 R /XYZ 60.307257 248.409894 0 ] (jdb/:__span-25-59) [ 1467 0 R /XYZ 60.307257 235.009542 0 ] (jdb/:__span-25-6) [ 1465 0 R /XYZ 60.307257 275.290362 0 ] (jdb/:__span-25-60) [ 1467 0 R /XYZ 60.307257 221.609190 0 ] (jdb/:__span-25-61) [ 1467 0 R /XYZ 60.307257 208.208838 0 ] (jdb/:__span-25-62) [ 1467 0 R /XYZ 60.307257 194.808486 0 ] (jdb/:__span-25-63) [ 1467 0 R /XYZ 60.307257 181.408134 0 ] (jdb/:__span-25-64) [ 1467 0 R /XYZ 60.307257 168.007782 0 ] (jdb/:__span-25-65) [ 1467 0 R /XYZ 60.307257 154.607430 0 ] (jdb/:__span-25-66) [ 1467 0 R /XYZ 60.307257 141.207078 0 ] (jdb/:__span-25-67) [ 1467 0 R /XYZ 60.307257 127.806726 0 ] (jdb/:__span-25-68) [ 1467 0 R /XYZ 60.307257 114.406374 0 ] (jdb/:__span-25-7) [ 1465 0 R /XYZ 60.307257 261.890010 0 ] (jdb/:__span-25-8) [ 1465 0 R /XYZ 60.307257 248.489658 0 ] (jdb/:__span-25-9) [ 1465 0 R /XYZ 60.307257 235.089306 0 ] (jdb/:__span-26-1) [ 1469 0 R /XYZ 60.307257 412.672122 0 ] (jdb/:__span-26-2) [ 1469 0 R /XYZ 60.307257 385.871418 0 ] (jdb/:__span-26-3) [ 1469 0 R /XYZ 60.307257 372.471066 0 ] (jdb/:__span-26-4) [ 1469 0 R /XYZ 60.307257 345.670362 0 ] (jdb/:__span-26-5) [ 1469 0 R /XYZ 60.307257 332.270010 0 ] (jdb/:__span-26-6) [ 1469 0 R /XYZ 60.307257 305.469306 0 ] (jdb/:__span-27-1) [ 1509 0 R /XYZ 60.307257 292.862622 0 ] (jdb/:__span-27-10) [ 1509 0 R /XYZ 60.307257 158.859102 0 ] (jdb/:__span-27-2) [ 1509 0 R /XYZ 60.307257 279.462270 0 ] (jdb/:__span-27-3) [ 1509 0 R /XYZ 60.307257 266.061918 0 ] (jdb/:__span-27-4) [ 1509 0 R /XYZ 60.307257 252.661566 0 ] (jdb/:__span-27-5) [ 1509 0 R /XYZ 60.307257 239.261214 0 ] (jdb/:__span-27-6) [ 1509 0 R /XYZ 60.307257 225.860862 0 ] (jdb/:__span-27-7) [ 1509 0 R /XYZ 60.307257 212.460510 0 ] (jdb/:__span-27-8) [ 1509 0 R /XYZ 60.307257 185.659806 0 ] (jdb/:__span-27-9) [ 1509 0 R /XYZ 60.307257 172.259454 0 ] (jdb/:__span-28-1) [ 1513 0 R /XYZ 60.307257 722.344122 0 ] (jdb/:__span-28-10) [ 1513 0 R /XYZ 60.307257 548.139546 0 ] (jdb/:__span-28-11) [ 1513 0 R /XYZ 60.307257 534.739194 0 ] (jdb/:__span-28-12) [ 1513 0 R /XYZ 60.307257 521.338842 0 ] (jdb/:__span-28-13) [ 1513 0 R /XYZ 60.307257 507.938490 0 ] (jdb/:__span-28-14) [ 1513 0 R /XYZ 60.307257 467.737434 0 ] (jdb/:__span-28-15) [ 1513 0 R /XYZ 60.307257 454.337082 0 ] (jdb/:__span-28-16) [ 1513 0 R /XYZ 60.307257 440.936730 0 ] (jdb/:__span-28-17) [ 1513 0 R /XYZ 60.307257 427.536378 0 ] (jdb/:__span-28-2) [ 1513 0 R /XYZ 60.307257 708.943770 0 ] (jdb/:__span-28-3) [ 1513 0 R /XYZ 60.307257 668.742714 0 ] (jdb/:__span-28-4) [ 1513 0 R /XYZ 60.307257 655.342362 0 ] (jdb/:__span-28-5) [ 1513 0 R /XYZ 60.307257 641.942010 0 ] (jdb/:__span-28-6) [ 1513 0 R /XYZ 60.307257 628.541658 0 ] (jdb/:__span-28-7) [ 1513 0 R /XYZ 60.307257 601.740954 0 ] (jdb/:__span-28-8) [ 1513 0 R /XYZ 60.307257 588.340602 0 ] (jdb/:__span-28-9) [ 1513 0 R /XYZ 60.307257 574.940250 0 ] (jdb/:__span-29-1) [ 1513 0 R /XYZ 60.307257 361.820226 0 ] (jdb/:__span-29-2) [ 1513 0 R /XYZ 60.307257 348.419874 0 ] (jdb/:__span-29-3) [ 1513 0 R /XYZ 60.307257 335.019522 0 ] (jdb/:__span-29-4) [ 1513 0 R /XYZ 60.307257 321.619170 0 ] (jdb/:__span-29-5) [ 1513 0 R /XYZ 60.307257 308.218818 0 ] (jdb/:__span-3-1) [ 1166 0 R /XYZ 60.307257 665.106414 0 ] (jdb/:__span-3-10) [ 1166 0 R /XYZ 60.307257 544.503246 0 ] (jdb/:__span-3-11) [ 1166 0 R /XYZ 60.307257 531.102894 0 ] (jdb/:__span-3-12) [ 1166 0 R /XYZ 60.307257 517.702542 0 ] (jdb/:__span-3-13) [ 1166 0 R /XYZ 60.307257 504.302190 0 ] (jdb/:__span-3-14) [ 1166 0 R /XYZ 60.307257 477.501486 0 ] (jdb/:__span-3-15) [ 1166 0 R /XYZ 60.307257 464.101134 0 ] (jdb/:__span-3-16) [ 1166 0 R /XYZ 60.307257 437.300430 0 ] (jdb/:__span-3-17) [ 1166 0 R /XYZ 60.307257 423.900078 0 ] (jdb/:__span-3-18) [ 1166 0 R /XYZ 60.307257 410.499726 0 ] (jdb/:__span-3-19) [ 1166 0 R /XYZ 60.307257 397.099374 0 ] (jdb/:__span-3-2) [ 1166 0 R /XYZ 60.307257 651.706062 0 ] (jdb/:__span-3-20) [ 1166 0 R /XYZ 60.307257 383.699022 0 ] (jdb/:__span-3-21) [ 1166 0 R /XYZ 60.307257 370.298670 0 ] (jdb/:__span-3-22) [ 1166 0 R /XYZ 60.307257 356.898318 0 ] (jdb/:__span-3-3) [ 1166 0 R /XYZ 60.307257 638.305710 0 ] (jdb/:__span-3-4) [ 1166 0 R /XYZ 60.307257 624.905358 0 ] (jdb/:__span-3-5) [ 1166 0 R /XYZ 60.307257 611.505006 0 ] (jdb/:__span-3-6) [ 1166 0 R /XYZ 60.307257 598.104654 0 ] (jdb/:__span-3-7) [ 1166 0 R /XYZ 60.307257 584.704302 0 ] (jdb/:__span-3-8) [ 1166 0 R /XYZ 60.307257 571.303950 0 ] (jdb/:__span-3-9) [ 1166 0 R /XYZ 60.307257 557.903598 0 ] (jdb/:__span-30-1) [ 1517 0 R /XYZ 60.307257 763.633722 0 ] (jdb/:__span-30-2) [ 1517 0 R /XYZ 60.307257 750.233370 0 ] (jdb/:__span-31-1) [ 1582 0 R /XYZ 60.307257 525.280122 0 ] (jdb/:__span-31-10) [ 1582 0 R /XYZ 60.307257 404.676954 0 ] (jdb/:__span-31-11) [ 1582 0 R /XYZ 60.307257 391.276602 0 ] (jdb/:__span-31-12) [ 1582 0 R /XYZ 60.307257 377.876250 0 ] (jdb/:__span-31-13) [ 1582 0 R /XYZ 60.307257 364.475898 0 ] (jdb/:__span-31-14) [ 1582 0 R /XYZ 60.307257 351.075546 0 ] (jdb/:__span-31-15) [ 1582 0 R /XYZ 60.307257 337.675194 0 ] (jdb/:__span-31-16) [ 1582 0 R /XYZ 60.307257 324.274842 0 ] (jdb/:__span-31-17) [ 1582 0 R /XYZ 60.307257 310.874490 0 ] (jdb/:__span-31-18) [ 1582 0 R /XYZ 60.307257 297.474138 0 ] (jdb/:__span-31-19) [ 1582 0 R /XYZ 60.307257 284.073786 0 ] (jdb/:__span-31-2) [ 1582 0 R /XYZ 60.307257 511.879770 0 ] (jdb/:__span-31-20) [ 1582 0 R /XYZ 60.307257 270.673434 0 ] (jdb/:__span-31-21) [ 1582 0 R /XYZ 60.307257 257.273082 0 ] (jdb/:__span-31-22) [ 1582 0 R /XYZ 60.307257 243.872730 0 ] (jdb/:__span-31-23) [ 1582 0 R /XYZ 60.307257 230.472378 0 ] (jdb/:__span-31-24) [ 1582 0 R /XYZ 60.307257 217.072026 0 ] (jdb/:__span-31-25) [ 1582 0 R /XYZ 60.307257 203.671674 0 ] (jdb/:__span-31-26) [ 1582 0 R /XYZ 60.307257 190.271322 0 ] (jdb/:__span-31-27) [ 1582 0 R /XYZ 60.307257 176.870970 0 ] (jdb/:__span-31-28) [ 1582 0 R /XYZ 60.307257 163.470618 0 ] (jdb/:__span-31-29) [ 1582 0 R /XYZ 60.307257 150.070266 0 ] (jdb/:__span-31-3) [ 1582 0 R /XYZ 60.307257 498.479418 0 ] (jdb/:__span-31-30) [ 1582 0 R /XYZ 60.307257 136.669914 0 ] (jdb/:__span-31-31) [ 1582 0 R /XYZ 60.307257 123.269562 0 ] (jdb/:__span-31-32) [ 1582 0 R /XYZ 60.307257 109.869210 0 ] (jdb/:__span-31-33) [ 1582 0 R /XYZ 60.307257 96.468858 0 ] (jdb/:__span-31-34) [ 1584 0 R /XYZ 60.307257 757.623270 0 ] (jdb/:__span-31-35) [ 1584 0 R /XYZ 60.307257 730.822566 0 ] (jdb/:__span-31-36) [ 1584 0 R /XYZ 60.307257 704.021862 0 ] (jdb/:__span-31-37) [ 1584 0 R /XYZ 60.307257 690.621510 0 ] (jdb/:__span-31-38) [ 1584 0 R /XYZ 60.307257 677.221158 0 ] (jdb/:__span-31-39) [ 1584 0 R /XYZ 60.307257 663.820806 0 ] (jdb/:__span-31-4) [ 1582 0 R /XYZ 60.307257 485.079066 0 ] (jdb/:__span-31-40) [ 1584 0 R /XYZ 60.307257 650.420454 0 ] (jdb/:__span-31-41) [ 1584 0 R /XYZ 60.307257 623.619750 0 ] (jdb/:__span-31-42) [ 1584 0 R /XYZ 60.307257 596.819046 0 ] (jdb/:__span-31-43) [ 1584 0 R /XYZ 60.307257 583.418694 0 ] (jdb/:__span-31-44) [ 1584 0 R /XYZ 60.307257 570.018342 0 ] (jdb/:__span-31-45) [ 1584 0 R /XYZ 60.307257 556.617990 0 ] (jdb/:__span-31-46) [ 1584 0 R /XYZ 60.307257 529.817286 0 ] (jdb/:__span-31-47) [ 1584 0 R /XYZ 60.307257 503.016582 0 ] (jdb/:__span-31-48) [ 1584 0 R /XYZ 60.307257 476.215878 0 ] (jdb/:__span-31-49) [ 1584 0 R /XYZ 60.307257 462.815526 0 ] (jdb/:__span-31-5) [ 1582 0 R /XYZ 60.307257 471.678714 0 ] (jdb/:__span-31-50) [ 1584 0 R /XYZ 60.307257 449.415174 0 ] (jdb/:__span-31-6) [ 1582 0 R /XYZ 60.307257 458.278362 0 ] (jdb/:__span-31-7) [ 1582 0 R /XYZ 60.307257 444.878010 0 ] (jdb/:__span-31-8) [ 1582 0 R /XYZ 60.307257 431.477658 0 ] (jdb/:__span-31-9) [ 1582 0 R /XYZ 60.307257 418.077306 0 ] (jdb/:__span-32-1) [ 1603 0 R /XYZ 60.307257 737.358522 0 ] (jdb/:__span-32-10) [ 1603 0 R /XYZ 60.307257 603.355002 0 ] (jdb/:__span-32-11) [ 1603 0 R /XYZ 60.307257 589.954650 0 ] (jdb/:__span-32-12) [ 1603 0 R /XYZ 60.307257 576.554298 0 ] (jdb/:__span-32-13) [ 1603 0 R /XYZ 60.307257 563.153946 0 ] (jdb/:__span-32-14) [ 1603 0 R /XYZ 60.307257 549.753594 0 ] (jdb/:__span-32-15) [ 1603 0 R /XYZ 60.307257 536.353242 0 ] (jdb/:__span-32-16) [ 1603 0 R /XYZ 60.307257 522.952890 0 ] (jdb/:__span-32-17) [ 1603 0 R /XYZ 60.307257 509.552538 0 ] (jdb/:__span-32-18) [ 1603 0 R /XYZ 60.307257 482.751834 0 ] (jdb/:__span-32-19) [ 1603 0 R /XYZ 60.307257 455.951130 0 ] (jdb/:__span-32-2) [ 1603 0 R /XYZ 60.307257 723.958170 0 ] (jdb/:__span-32-20) [ 1603 0 R /XYZ 60.307257 442.550778 0 ] (jdb/:__span-32-21) [ 1603 0 R /XYZ 60.307257 429.150426 0 ] (jdb/:__span-32-22) [ 1603 0 R /XYZ 60.307257 415.750074 0 ] (jdb/:__span-32-23) [ 1603 0 R /XYZ 60.307257 402.349722 0 ] (jdb/:__span-32-24) [ 1603 0 R /XYZ 60.307257 388.949370 0 ] (jdb/:__span-32-25) [ 1603 0 R /XYZ 60.307257 362.148666 0 ] (jdb/:__span-32-26) [ 1603 0 R /XYZ 60.307257 335.347962 0 ] (jdb/:__span-32-27) [ 1603 0 R /XYZ 60.307257 321.947610 0 ] (jdb/:__span-32-28) [ 1603 0 R /XYZ 60.307257 308.547258 0 ] (jdb/:__span-32-29) [ 1603 0 R /XYZ 60.307257 295.146906 0 ] (jdb/:__span-32-3) [ 1603 0 R /XYZ 60.307257 710.557818 0 ] (jdb/:__span-32-30) [ 1603 0 R /XYZ 60.307257 281.746554 0 ] (jdb/:__span-32-31) [ 1603 0 R /XYZ 60.307257 268.346202 0 ] (jdb/:__span-32-32) [ 1603 0 R /XYZ 60.307257 254.945850 0 ] (jdb/:__span-32-33) [ 1603 0 R /XYZ 60.307257 241.545498 0 ] (jdb/:__span-32-34) [ 1603 0 R /XYZ 60.307257 214.744794 0 ] (jdb/:__span-32-35) [ 1603 0 R /XYZ 60.307257 201.344442 0 ] (jdb/:__span-32-36) [ 1603 0 R /XYZ 60.307257 174.543738 0 ] (jdb/:__span-32-37) [ 1603 0 R /XYZ 60.307257 147.743034 0 ] (jdb/:__span-32-38) [ 1603 0 R /XYZ 60.307257 120.942330 0 ] (jdb/:__span-32-39) [ 1603 0 R /XYZ 60.307257 107.541978 0 ] (jdb/:__span-32-4) [ 1603 0 R /XYZ 60.307257 697.157466 0 ] (jdb/:__span-32-40) [ 1603 0 R /XYZ 60.307257 94.141626 0 ] (jdb/:__span-32-41) [ 1605 0 R /XYZ 60.307257 771.023622 0 ] (jdb/:__span-32-42) [ 1605 0 R /XYZ 60.307257 757.623270 0 ] (jdb/:__span-32-43) [ 1605 0 R /XYZ 60.307257 730.822566 0 ] (jdb/:__span-32-44) [ 1605 0 R /XYZ 60.307257 717.422214 0 ] (jdb/:__span-32-45) [ 1605 0 R /XYZ 60.307257 690.621510 0 ] (jdb/:__span-32-46) [ 1605 0 R /XYZ 60.307257 663.820806 0 ] (jdb/:__span-32-47) [ 1605 0 R /XYZ 60.307257 637.020102 0 ] (jdb/:__span-32-48) [ 1605 0 R /XYZ 60.307257 623.619750 0 ] (jdb/:__span-32-49) [ 1605 0 R /XYZ 60.307257 610.219398 0 ] (jdb/:__span-32-5) [ 1603 0 R /XYZ 60.307257 670.356762 0 ] (jdb/:__span-32-50) [ 1605 0 R /XYZ 60.307257 596.819046 0 ] (jdb/:__span-32-51) [ 1605 0 R /XYZ 60.307257 583.418694 0 ] (jdb/:__span-32-52) [ 1605 0 R /XYZ 60.307257 570.018342 0 ] (jdb/:__span-32-53) [ 1605 0 R /XYZ 60.307257 556.617990 0 ] (jdb/:__span-32-54) [ 1605 0 R /XYZ 60.307257 543.217638 0 ] (jdb/:__span-32-55) [ 1605 0 R /XYZ 60.307257 516.416934 0 ] (jdb/:__span-32-56) [ 1605 0 R /XYZ 60.307257 489.616230 0 ] (jdb/:__span-32-57) [ 1605 0 R /XYZ 60.307257 476.215878 0 ] (jdb/:__span-32-58) [ 1605 0 R /XYZ 60.307257 462.815526 0 ] (jdb/:__span-32-59) [ 1605 0 R /XYZ 60.307257 449.415174 0 ] (jdb/:__span-32-6) [ 1603 0 R /XYZ 60.307257 656.956410 0 ] (jdb/:__span-32-60) [ 1605 0 R /XYZ 60.307257 436.014822 0 ] (jdb/:__span-32-61) [ 1605 0 R /XYZ 60.307257 422.614470 0 ] (jdb/:__span-32-62) [ 1605 0 R /XYZ 60.307257 409.214118 0 ] (jdb/:__span-32-63) [ 1605 0 R /XYZ 60.307257 395.813766 0 ] (jdb/:__span-32-64) [ 1605 0 R /XYZ 60.307257 382.413414 0 ] (jdb/:__span-32-65) [ 1605 0 R /XYZ 60.307257 369.013062 0 ] (jdb/:__span-32-66) [ 1605 0 R /XYZ 60.307257 355.612710 0 ] (jdb/:__span-32-67) [ 1605 0 R /XYZ 60.307257 328.812006 0 ] (jdb/:__span-32-68) [ 1605 0 R /XYZ 60.307257 315.411654 0 ] (jdb/:__span-32-69) [ 1605 0 R /XYZ 60.307257 302.011302 0 ] (jdb/:__span-32-7) [ 1603 0 R /XYZ 60.307257 643.556058 0 ] (jdb/:__span-32-70) [ 1605 0 R /XYZ 60.307257 288.610950 0 ] (jdb/:__span-32-71) [ 1605 0 R /XYZ 60.307257 275.210598 0 ] (jdb/:__span-32-72) [ 1605 0 R /XYZ 60.307257 261.810246 0 ] (jdb/:__span-32-73) [ 1605 0 R /XYZ 60.307257 248.409894 0 ] (jdb/:__span-32-74) [ 1605 0 R /XYZ 60.307257 235.009542 0 ] (jdb/:__span-32-8) [ 1603 0 R /XYZ 60.307257 630.155706 0 ] (jdb/:__span-32-9) [ 1603 0 R /XYZ 60.307257 616.755354 0 ] (jdb/:__span-33-1) [ 1605 0 R /XYZ 60.307257 195.568590 0 ] (jdb/:__span-33-2) [ 1605 0 R /XYZ 60.307257 182.168238 0 ] (jdb/:__span-34-1) [ 1607 0 R /XYZ 60.307257 682.931322 0 ] (jdb/:__span-34-10) [ 1607 0 R /XYZ 60.307257 535.527450 0 ] (jdb/:__span-34-11) [ 1607 0 R /XYZ 60.307257 522.127098 0 ] (jdb/:__span-34-12) [ 1607 0 R /XYZ 60.307257 508.726746 0 ] (jdb/:__span-34-13) [ 1607 0 R /XYZ 60.307257 495.326394 0 ] (jdb/:__span-34-14) [ 1607 0 R /XYZ 60.307257 468.525690 0 ] (jdb/:__span-34-15) [ 1607 0 R /XYZ 60.307257 455.125338 0 ] (jdb/:__span-34-16) [ 1607 0 R /XYZ 60.307257 428.324634 0 ] (jdb/:__span-34-17) [ 1607 0 R /XYZ 60.307257 414.924282 0 ] (jdb/:__span-34-18) [ 1607 0 R /XYZ 60.307257 388.123578 0 ] (jdb/:__span-34-19) [ 1607 0 R /XYZ 60.307257 374.723226 0 ] (jdb/:__span-34-2) [ 1607 0 R /XYZ 60.307257 669.530970 0 ] (jdb/:__span-34-20) [ 1607 0 R /XYZ 60.307257 361.322874 0 ] (jdb/:__span-34-21) [ 1607 0 R /XYZ 60.307257 347.922522 0 ] (jdb/:__span-34-22) [ 1607 0 R /XYZ 60.307257 334.522170 0 ] (jdb/:__span-34-23) [ 1607 0 R /XYZ 60.307257 307.721466 0 ] (jdb/:__span-34-24) [ 1607 0 R /XYZ 60.307257 294.321114 0 ] (jdb/:__span-34-25) [ 1607 0 R /XYZ 60.307257 267.520410 0 ] (jdb/:__span-34-26) [ 1607 0 R /XYZ 60.307257 254.120058 0 ] (jdb/:__span-34-27) [ 1607 0 R /XYZ 60.307257 227.319354 0 ] (jdb/:__span-34-28) [ 1607 0 R /XYZ 60.307257 213.919002 0 ] (jdb/:__span-34-29) [ 1607 0 R /XYZ 60.307257 200.518650 0 ] (jdb/:__span-34-3) [ 1607 0 R /XYZ 60.307257 656.130618 0 ] (jdb/:__span-34-30) [ 1607 0 R /XYZ 60.307257 173.717946 0 ] (jdb/:__span-34-31) [ 1607 0 R /XYZ 60.307257 160.317594 0 ] (jdb/:__span-34-32) [ 1607 0 R /XYZ 60.307257 146.917242 0 ] (jdb/:__span-34-4) [ 1607 0 R /XYZ 60.307257 642.730266 0 ] (jdb/:__span-34-5) [ 1607 0 R /XYZ 60.307257 629.329914 0 ] (jdb/:__span-34-6) [ 1607 0 R /XYZ 60.307257 615.929562 0 ] (jdb/:__span-34-7) [ 1607 0 R /XYZ 60.307257 602.529210 0 ] (jdb/:__span-34-8) [ 1607 0 R /XYZ 60.307257 575.728506 0 ] (jdb/:__span-34-9) [ 1607 0 R /XYZ 60.307257 562.328154 0 ] (jdb/:__span-35-1) [ 1609 0 R /XYZ 60.307257 519.649722 0 ] (jdb/:__span-35-10) [ 1609 0 R /XYZ 60.307257 385.646202 0 ] (jdb/:__span-35-11) [ 1609 0 R /XYZ 60.307257 372.245850 0 ] (jdb/:__span-35-12) [ 1609 0 R /XYZ 60.307257 358.845498 0 ] (jdb/:__span-35-13) [ 1609 0 R /XYZ 60.307257 332.044794 0 ] (jdb/:__span-35-14) [ 1609 0 R /XYZ 60.307257 318.644442 0 ] (jdb/:__span-35-15) [ 1609 0 R /XYZ 60.307257 305.244090 0 ] (jdb/:__span-35-16) [ 1609 0 R /XYZ 60.307257 291.843738 0 ] (jdb/:__span-35-17) [ 1609 0 R /XYZ 60.307257 278.443386 0 ] (jdb/:__span-35-18) [ 1609 0 R /XYZ 60.307257 265.043034 0 ] (jdb/:__span-35-19) [ 1609 0 R /XYZ 60.307257 251.642682 0 ] (jdb/:__span-35-2) [ 1609 0 R /XYZ 60.307257 506.249370 0 ] (jdb/:__span-35-20) [ 1609 0 R /XYZ 60.307257 238.242330 0 ] (jdb/:__span-35-21) [ 1609 0 R /XYZ 60.307257 224.841978 0 ] (jdb/:__span-35-22) [ 1609 0 R /XYZ 60.307257 198.041274 0 ] (jdb/:__span-35-23) [ 1609 0 R /XYZ 60.307257 171.240570 0 ] (jdb/:__span-35-24) [ 1609 0 R /XYZ 60.307257 157.840218 0 ] (jdb/:__span-35-25) [ 1609 0 R /XYZ 60.307257 144.439866 0 ] (jdb/:__span-35-26) [ 1609 0 R /XYZ 60.307257 131.039514 0 ] (jdb/:__span-35-27) [ 1609 0 R /XYZ 60.307257 104.238810 0 ] (jdb/:__span-35-28) [ 1609 0 R /XYZ 60.307257 90.838458 0 ] (jdb/:__span-35-29) [ 1611 0 R /XYZ 60.307257 757.623270 0 ] (jdb/:__span-35-3) [ 1609 0 R /XYZ 60.307257 492.849018 0 ] (jdb/:__span-35-30) [ 1611 0 R /XYZ 60.307257 744.222918 0 ] (jdb/:__span-35-31) [ 1611 0 R /XYZ 60.307257 730.822566 0 ] (jdb/:__span-35-32) [ 1611 0 R /XYZ 60.307257 717.422214 0 ] (jdb/:__span-35-4) [ 1609 0 R /XYZ 60.307257 479.448666 0 ] (jdb/:__span-35-5) [ 1609 0 R /XYZ 60.307257 452.647962 0 ] (jdb/:__span-35-6) [ 1609 0 R /XYZ 60.307257 439.247610 0 ] (jdb/:__span-35-7) [ 1609 0 R /XYZ 60.307257 425.847258 0 ] (jdb/:__span-35-8) [ 1609 0 R /XYZ 60.307257 412.446906 0 ] (jdb/:__span-35-9) [ 1609 0 R /XYZ 60.307257 399.046554 0 ] (jdb/:__span-36-1) [ 1616 0 R /XYZ 60.307257 619.120122 0 ] (jdb/:__span-36-10) [ 1616 0 R /XYZ 60.307257 498.516954 0 ] (jdb/:__span-36-11) [ 1616 0 R /XYZ 60.307257 485.116602 0 ] (jdb/:__span-36-12) [ 1616 0 R /XYZ 60.307257 471.716250 0 ] (jdb/:__span-36-13) [ 1616 0 R /XYZ 60.307257 458.315898 0 ] (jdb/:__span-36-14) [ 1616 0 R /XYZ 60.307257 444.915546 0 ] (jdb/:__span-36-15) [ 1616 0 R /XYZ 60.307257 431.515194 0 ] (jdb/:__span-36-16) [ 1616 0 R /XYZ 60.307257 418.114842 0 ] (jdb/:__span-36-17) [ 1616 0 R /XYZ 60.307257 404.714490 0 ] (jdb/:__span-36-18) [ 1616 0 R /XYZ 60.307257 391.314138 0 ] (jdb/:__span-36-19) [ 1616 0 R /XYZ 60.307257 377.913786 0 ] (jdb/:__span-36-2) [ 1616 0 R /XYZ 60.307257 605.719770 0 ] (jdb/:__span-36-20) [ 1616 0 R /XYZ 60.307257 364.513434 0 ] (jdb/:__span-36-21) [ 1616 0 R /XYZ 60.307257 351.113082 0 ] (jdb/:__span-36-22) [ 1616 0 R /XYZ 60.307257 337.712730 0 ] (jdb/:__span-36-23) [ 1616 0 R /XYZ 60.307257 324.312378 0 ] (jdb/:__span-36-24) [ 1616 0 R /XYZ 60.307257 310.912026 0 ] (jdb/:__span-36-25) [ 1616 0 R /XYZ 60.307257 297.511674 0 ] (jdb/:__span-36-26) [ 1616 0 R /XYZ 60.307257 284.111322 0 ] (jdb/:__span-36-27) [ 1616 0 R /XYZ 60.307257 270.710970 0 ] (jdb/:__span-36-28) [ 1616 0 R /XYZ 60.307257 257.310618 0 ] (jdb/:__span-36-29) [ 1616 0 R /XYZ 60.307257 243.910266 0 ] (jdb/:__span-36-3) [ 1616 0 R /XYZ 60.307257 592.319418 0 ] (jdb/:__span-36-30) [ 1616 0 R /XYZ 60.307257 230.509914 0 ] (jdb/:__span-36-31) [ 1616 0 R /XYZ 60.307257 217.109562 0 ] (jdb/:__span-36-32) [ 1616 0 R /XYZ 60.307257 203.709210 0 ] (jdb/:__span-36-33) [ 1616 0 R /XYZ 60.307257 190.308858 0 ] (jdb/:__span-36-34) [ 1616 0 R /XYZ 60.307257 176.908506 0 ] (jdb/:__span-36-35) [ 1616 0 R /XYZ 60.307257 163.508154 0 ] (jdb/:__span-36-36) [ 1616 0 R /XYZ 60.307257 150.107802 0 ] (jdb/:__span-36-37) [ 1616 0 R /XYZ 60.307257 136.707450 0 ] (jdb/:__span-36-38) [ 1616 0 R /XYZ 60.307257 123.307098 0 ] (jdb/:__span-36-39) [ 1616 0 R /XYZ 60.307257 109.906746 0 ] (jdb/:__span-36-4) [ 1616 0 R /XYZ 60.307257 578.919066 0 ] (jdb/:__span-36-40) [ 1616 0 R /XYZ 60.307257 96.506394 0 ] (jdb/:__span-36-41) [ 1618 0 R /XYZ 60.307257 771.023622 0 ] (jdb/:__span-36-42) [ 1618 0 R /XYZ 60.307257 757.623270 0 ] (jdb/:__span-36-43) [ 1618 0 R /XYZ 60.307257 744.222918 0 ] (jdb/:__span-36-44) [ 1618 0 R /XYZ 60.307257 730.822566 0 ] (jdb/:__span-36-45) [ 1618 0 R /XYZ 60.307257 717.422214 0 ] (jdb/:__span-36-46) [ 1618 0 R /XYZ 60.307257 704.021862 0 ] (jdb/:__span-36-47) [ 1618 0 R /XYZ 60.307257 690.621510 0 ] (jdb/:__span-36-48) [ 1618 0 R /XYZ 60.307257 677.221158 0 ] (jdb/:__span-36-49) [ 1618 0 R /XYZ 60.307257 663.820806 0 ] (jdb/:__span-36-5) [ 1616 0 R /XYZ 60.307257 565.518714 0 ] (jdb/:__span-36-50) [ 1618 0 R /XYZ 60.307257 650.420454 0 ] (jdb/:__span-36-51) [ 1618 0 R /XYZ 60.307257 637.020102 0 ] (jdb/:__span-36-52) [ 1618 0 R /XYZ 60.307257 623.619750 0 ] (jdb/:__span-36-53) [ 1618 0 R /XYZ 60.307257 610.219398 0 ] (jdb/:__span-36-54) [ 1618 0 R /XYZ 60.307257 596.819046 0 ] (jdb/:__span-36-55) [ 1618 0 R /XYZ 60.307257 583.418694 0 ] (jdb/:__span-36-56) [ 1618 0 R /XYZ 60.307257 570.018342 0 ] (jdb/:__span-36-57) [ 1618 0 R /XYZ 60.307257 556.617990 0 ] (jdb/:__span-36-58) [ 1618 0 R /XYZ 60.307257 543.217638 0 ] (jdb/:__span-36-59) [ 1618 0 R /XYZ 60.307257 529.817286 0 ] (jdb/:__span-36-6) [ 1616 0 R /XYZ 60.307257 552.118362 0 ] (jdb/:__span-36-60) [ 1618 0 R /XYZ 60.307257 516.416934 0 ] (jdb/:__span-36-61) [ 1618 0 R /XYZ 60.307257 503.016582 0 ] (jdb/:__span-36-62) [ 1618 0 R /XYZ 60.307257 489.616230 0 ] (jdb/:__span-36-63) [ 1618 0 R /XYZ 60.307257 476.215878 0 ] (jdb/:__span-36-64) [ 1618 0 R /XYZ 60.307257 462.815526 0 ] (jdb/:__span-36-65) [ 1618 0 R /XYZ 60.307257 449.415174 0 ] (jdb/:__span-36-66) [ 1618 0 R /XYZ 60.307257 436.014822 0 ] (jdb/:__span-36-67) [ 1618 0 R /XYZ 60.307257 422.614470 0 ] (jdb/:__span-36-68) [ 1618 0 R /XYZ 60.307257 409.214118 0 ] (jdb/:__span-36-69) [ 1618 0 R /XYZ 60.307257 395.813766 0 ] (jdb/:__span-36-7) [ 1616 0 R /XYZ 60.307257 538.718010 0 ] (jdb/:__span-36-70) [ 1618 0 R /XYZ 60.307257 382.413414 0 ] (jdb/:__span-36-71) [ 1618 0 R /XYZ 60.307257 369.013062 0 ] (jdb/:__span-36-72) [ 1618 0 R /XYZ 60.307257 355.612710 0 ] (jdb/:__span-36-73) [ 1618 0 R /XYZ 60.307257 342.212358 0 ] (jdb/:__span-36-74) [ 1618 0 R /XYZ 60.307257 328.812006 0 ] (jdb/:__span-36-75) [ 1618 0 R /XYZ 60.307257 315.411654 0 ] (jdb/:__span-36-76) [ 1618 0 R /XYZ 60.307257 302.011302 0 ] (jdb/:__span-36-77) [ 1618 0 R /XYZ 60.307257 288.610950 0 ] (jdb/:__span-36-78) [ 1618 0 R /XYZ 60.307257 275.210598 0 ] (jdb/:__span-36-79) [ 1618 0 R /XYZ 60.307257 261.810246 0 ] (jdb/:__span-36-8) [ 1616 0 R /XYZ 60.307257 525.317658 0 ] (jdb/:__span-36-80) [ 1618 0 R /XYZ 60.307257 248.409894 0 ] (jdb/:__span-36-81) [ 1618 0 R /XYZ 60.307257 235.009542 0 ] (jdb/:__span-36-82) [ 1618 0 R /XYZ 60.307257 221.609190 0 ] (jdb/:__span-36-83) [ 1618 0 R /XYZ 60.307257 208.208838 0 ] (jdb/:__span-36-84) [ 1618 0 R /XYZ 60.307257 194.808486 0 ] (jdb/:__span-36-85) [ 1618 0 R /XYZ 60.307257 181.408134 0 ] (jdb/:__span-36-86) [ 1618 0 R /XYZ 60.307257 168.007782 0 ] (jdb/:__span-36-87) [ 1618 0 R /XYZ 60.307257 154.607430 0 ] (jdb/:__span-36-88) [ 1618 0 R /XYZ 60.307257 141.207078 0 ] (jdb/:__span-36-89) [ 1618 0 R /XYZ 60.307257 127.806726 0 ] (jdb/:__span-36-9) [ 1616 0 R /XYZ 60.307257 511.917306 0 ] (jdb/:__span-37-1) [ 1620 0 R /XYZ 60.307257 658.532922 0 ] (jdb/:__span-37-10) [ 1620 0 R /XYZ 60.307257 537.929754 0 ] (jdb/:__span-37-11) [ 1620 0 R /XYZ 60.307257 524.529402 0 ] (jdb/:__span-37-12) [ 1620 0 R /XYZ 60.307257 511.129050 0 ] (jdb/:__span-37-13) [ 1620 0 R /XYZ 60.307257 497.728698 0 ] (jdb/:__span-37-14) [ 1620 0 R /XYZ 60.307257 484.328346 0 ] (jdb/:__span-37-15) [ 1620 0 R /XYZ 60.307257 470.927994 0 ] (jdb/:__span-37-16) [ 1620 0 R /XYZ 60.307257 457.527642 0 ] (jdb/:__span-37-17) [ 1620 0 R /XYZ 60.307257 444.127290 0 ] (jdb/:__span-37-18) [ 1620 0 R /XYZ 60.307257 430.726938 0 ] (jdb/:__span-37-19) [ 1620 0 R /XYZ 60.307257 417.326586 0 ] (jdb/:__span-37-2) [ 1620 0 R /XYZ 60.307257 645.132570 0 ] (jdb/:__span-37-20) [ 1620 0 R /XYZ 60.307257 403.926234 0 ] (jdb/:__span-37-21) [ 1620 0 R /XYZ 60.307257 390.525882 0 ] (jdb/:__span-37-22) [ 1620 0 R /XYZ 60.307257 377.125530 0 ] (jdb/:__span-37-23) [ 1620 0 R /XYZ 60.307257 363.725178 0 ] (jdb/:__span-37-24) [ 1620 0 R /XYZ 60.307257 350.324826 0 ] (jdb/:__span-37-25) [ 1620 0 R /XYZ 60.307257 336.924474 0 ] (jdb/:__span-37-26) [ 1620 0 R /XYZ 60.307257 323.524122 0 ] (jdb/:__span-37-27) [ 1620 0 R /XYZ 60.307257 310.123770 0 ] (jdb/:__span-37-28) [ 1620 0 R /XYZ 60.307257 296.723418 0 ] (jdb/:__span-37-29) [ 1620 0 R /XYZ 60.307257 283.323066 0 ] (jdb/:__span-37-3) [ 1620 0 R /XYZ 60.307257 631.732218 0 ] (jdb/:__span-37-30) [ 1620 0 R /XYZ 60.307257 269.922714 0 ] (jdb/:__span-37-31) [ 1620 0 R /XYZ 60.307257 256.522362 0 ] (jdb/:__span-37-32) [ 1620 0 R /XYZ 60.307257 243.122010 0 ] (jdb/:__span-37-33) [ 1620 0 R /XYZ 60.307257 229.721658 0 ] (jdb/:__span-37-34) [ 1620 0 R /XYZ 60.307257 216.321306 0 ] (jdb/:__span-37-35) [ 1620 0 R /XYZ 60.307257 202.920954 0 ] (jdb/:__span-37-36) [ 1620 0 R /XYZ 60.307257 189.520602 0 ] (jdb/:__span-37-37) [ 1620 0 R /XYZ 60.307257 176.120250 0 ] (jdb/:__span-37-38) [ 1620 0 R /XYZ 60.307257 162.719898 0 ] (jdb/:__span-37-39) [ 1620 0 R /XYZ 60.307257 149.319546 0 ] (jdb/:__span-37-4) [ 1620 0 R /XYZ 60.307257 618.331866 0 ] (jdb/:__span-37-40) [ 1620 0 R /XYZ 60.307257 135.919194 0 ] (jdb/:__span-37-41) [ 1620 0 R /XYZ 60.307257 122.518842 0 ] (jdb/:__span-37-42) [ 1620 0 R /XYZ 60.307257 109.118490 0 ] (jdb/:__span-37-43) [ 1620 0 R /XYZ 60.307257 95.718138 0 ] (jdb/:__span-37-44) [ 1622 0 R /XYZ 60.307257 771.023622 0 ] (jdb/:__span-37-45) [ 1622 0 R /XYZ 60.307257 757.623270 0 ] (jdb/:__span-37-46) [ 1622 0 R /XYZ 60.307257 744.222918 0 ] (jdb/:__span-37-47) [ 1622 0 R /XYZ 60.307257 730.822566 0 ] (jdb/:__span-37-48) [ 1622 0 R /XYZ 60.307257 717.422214 0 ] (jdb/:__span-37-49) [ 1622 0 R /XYZ 60.307257 704.021862 0 ] (jdb/:__span-37-5) [ 1620 0 R /XYZ 60.307257 604.931514 0 ] (jdb/:__span-37-50) [ 1622 0 R /XYZ 60.307257 690.621510 0 ] (jdb/:__span-37-51) [ 1622 0 R /XYZ 60.307257 677.221158 0 ] (jdb/:__span-37-52) [ 1622 0 R /XYZ 60.307257 663.820806 0 ] (jdb/:__span-37-53) [ 1622 0 R /XYZ 60.307257 650.420454 0 ] (jdb/:__span-37-54) [ 1622 0 R /XYZ 60.307257 637.020102 0 ] (jdb/:__span-37-55) [ 1622 0 R /XYZ 60.307257 623.619750 0 ] (jdb/:__span-37-56) [ 1622 0 R /XYZ 60.307257 610.219398 0 ] (jdb/:__span-37-57) [ 1622 0 R /XYZ 60.307257 596.819046 0 ] (jdb/:__span-37-58) [ 1622 0 R /XYZ 60.307257 583.418694 0 ] (jdb/:__span-37-59) [ 1622 0 R /XYZ 60.307257 570.018342 0 ] (jdb/:__span-37-6) [ 1620 0 R /XYZ 60.307257 591.531162 0 ] (jdb/:__span-37-60) [ 1622 0 R /XYZ 60.307257 556.617990 0 ] (jdb/:__span-37-61) [ 1622 0 R /XYZ 60.307257 543.217638 0 ] (jdb/:__span-37-62) [ 1622 0 R /XYZ 60.307257 529.817286 0 ] (jdb/:__span-37-63) [ 1622 0 R /XYZ 60.307257 516.416934 0 ] (jdb/:__span-37-64) [ 1622 0 R /XYZ 60.307257 503.016582 0 ] (jdb/:__span-37-65) [ 1622 0 R /XYZ 60.307257 489.616230 0 ] (jdb/:__span-37-66) [ 1622 0 R /XYZ 60.307257 476.215878 0 ] (jdb/:__span-37-67) [ 1622 0 R /XYZ 60.307257 462.815526 0 ] (jdb/:__span-37-68) [ 1622 0 R /XYZ 60.307257 449.415174 0 ] (jdb/:__span-37-69) [ 1622 0 R /XYZ 60.307257 436.014822 0 ] (jdb/:__span-37-7) [ 1620 0 R /XYZ 60.307257 578.130810 0 ] (jdb/:__span-37-70) [ 1622 0 R /XYZ 60.307257 422.614470 0 ] (jdb/:__span-37-71) [ 1622 0 R /XYZ 60.307257 409.214118 0 ] (jdb/:__span-37-72) [ 1622 0 R /XYZ 60.307257 395.813766 0 ] (jdb/:__span-37-73) [ 1622 0 R /XYZ 60.307257 382.413414 0 ] (jdb/:__span-37-74) [ 1622 0 R /XYZ 60.307257 369.013062 0 ] (jdb/:__span-37-75) [ 1622 0 R /XYZ 60.307257 355.612710 0 ] (jdb/:__span-37-76) [ 1622 0 R /XYZ 60.307257 342.212358 0 ] (jdb/:__span-37-77) [ 1622 0 R /XYZ 60.307257 328.812006 0 ] (jdb/:__span-37-78) [ 1622 0 R /XYZ 60.307257 315.411654 0 ] (jdb/:__span-37-79) [ 1622 0 R /XYZ 60.307257 302.011302 0 ] (jdb/:__span-37-8) [ 1620 0 R /XYZ 60.307257 564.730458 0 ] (jdb/:__span-37-80) [ 1622 0 R /XYZ 60.307257 288.610950 0 ] (jdb/:__span-37-81) [ 1622 0 R /XYZ 60.307257 275.210598 0 ] (jdb/:__span-37-9) [ 1620 0 R /XYZ 60.307257 551.330106 0 ] (jdb/:__span-38-1) [ 1624 0 R /XYZ 60.307257 174.624222 0 ] (jdb/:__span-38-10) [ 1626 0 R /XYZ 60.307257 717.422214 0 ] (jdb/:__span-38-11) [ 1626 0 R /XYZ 60.307257 704.021862 0 ] (jdb/:__span-38-12) [ 1626 0 R /XYZ 60.307257 690.621510 0 ] (jdb/:__span-38-13) [ 1626 0 R /XYZ 60.307257 677.221158 0 ] (jdb/:__span-38-14) [ 1626 0 R /XYZ 60.307257 650.420454 0 ] (jdb/:__span-38-15) [ 1626 0 R /XYZ 60.307257 637.020102 0 ] (jdb/:__span-38-16) [ 1626 0 R /XYZ 60.307257 623.619750 0 ] (jdb/:__span-38-17) [ 1626 0 R /XYZ 60.307257 596.819046 0 ] (jdb/:__span-38-18) [ 1626 0 R /XYZ 60.307257 583.418694 0 ] (jdb/:__span-38-19) [ 1626 0 R /XYZ 60.307257 570.018342 0 ] (jdb/:__span-38-2) [ 1624 0 R /XYZ 60.307257 161.223870 0 ] (jdb/:__span-38-20) [ 1626 0 R /XYZ 60.307257 543.217638 0 ] (jdb/:__span-38-21) [ 1626 0 R /XYZ 60.307257 529.817286 0 ] (jdb/:__span-38-22) [ 1626 0 R /XYZ 60.307257 516.416934 0 ] (jdb/:__span-38-23) [ 1626 0 R /XYZ 60.307257 503.016582 0 ] (jdb/:__span-38-24) [ 1626 0 R /XYZ 60.307257 489.616230 0 ] (jdb/:__span-38-25) [ 1626 0 R /XYZ 60.307257 476.215878 0 ] (jdb/:__span-38-26) [ 1626 0 R /XYZ 60.307257 449.415174 0 ] (jdb/:__span-38-27) [ 1626 0 R /XYZ 60.307257 436.014822 0 ] (jdb/:__span-38-28) [ 1626 0 R /XYZ 60.307257 422.614470 0 ] (jdb/:__span-38-29) [ 1626 0 R /XYZ 60.307257 395.813766 0 ] (jdb/:__span-38-3) [ 1624 0 R /XYZ 60.307257 147.823518 0 ] (jdb/:__span-38-30) [ 1626 0 R /XYZ 60.307257 382.413414 0 ] (jdb/:__span-38-31) [ 1626 0 R /XYZ 60.307257 369.013062 0 ] (jdb/:__span-38-32) [ 1626 0 R /XYZ 60.307257 342.212358 0 ] (jdb/:__span-38-33) [ 1626 0 R /XYZ 60.307257 328.812006 0 ] (jdb/:__span-38-34) [ 1626 0 R /XYZ 60.307257 315.411654 0 ] (jdb/:__span-38-35) [ 1626 0 R /XYZ 60.307257 302.011302 0 ] (jdb/:__span-38-36) [ 1626 0 R /XYZ 60.307257 275.210598 0 ] (jdb/:__span-38-37) [ 1626 0 R /XYZ 60.307257 261.810246 0 ] (jdb/:__span-38-38) [ 1626 0 R /XYZ 60.307257 248.409894 0 ] (jdb/:__span-38-4) [ 1624 0 R /XYZ 60.307257 134.423166 0 ] (jdb/:__span-38-5) [ 1624 0 R /XYZ 60.307257 121.022814 0 ] (jdb/:__span-38-6) [ 1624 0 R /XYZ 60.307257 94.222110 0 ] (jdb/:__span-38-7) [ 1626 0 R /XYZ 60.307257 771.023622 0 ] (jdb/:__span-38-8) [ 1626 0 R /XYZ 60.307257 744.222918 0 ] (jdb/:__span-38-9) [ 1626 0 R /XYZ 60.307257 730.822566 0 ] (jdb/:__span-39-1) [ 1761 0 R /XYZ 60.307257 529.339422 0 ] (jdb/:__span-39-10) [ 1761 0 R /XYZ 60.307257 368.535198 0 ] (jdb/:__span-39-11) [ 1761 0 R /XYZ 60.307257 355.134846 0 ] (jdb/:__span-39-12) [ 1761 0 R /XYZ 60.307257 341.734494 0 ] (jdb/:__span-39-13) [ 1761 0 R /XYZ 60.307257 328.334142 0 ] (jdb/:__span-39-14) [ 1761 0 R /XYZ 60.307257 314.933790 0 ] (jdb/:__span-39-15) [ 1761 0 R /XYZ 60.307257 301.533438 0 ] (jdb/:__span-39-16) [ 1761 0 R /XYZ 60.307257 288.133086 0 ] (jdb/:__span-39-17) [ 1761 0 R /XYZ 60.307257 274.732734 0 ] (jdb/:__span-39-18) [ 1761 0 R /XYZ 60.307257 261.332382 0 ] (jdb/:__span-39-19) [ 1761 0 R /XYZ 60.307257 247.932030 0 ] (jdb/:__span-39-2) [ 1761 0 R /XYZ 60.307257 515.939070 0 ] (jdb/:__span-39-20) [ 1761 0 R /XYZ 60.307257 234.531678 0 ] (jdb/:__span-39-21) [ 1761 0 R /XYZ 60.307257 221.131326 0 ] (jdb/:__span-39-22) [ 1761 0 R /XYZ 60.307257 194.330622 0 ] (jdb/:__span-39-23) [ 1761 0 R /XYZ 60.307257 180.930270 0 ] (jdb/:__span-39-24) [ 1761 0 R /XYZ 60.307257 167.529918 0 ] (jdb/:__span-39-25) [ 1761 0 R /XYZ 60.307257 140.729214 0 ] (jdb/:__span-39-26) [ 1761 0 R /XYZ 60.307257 127.328862 0 ] (jdb/:__span-39-27) [ 1761 0 R /XYZ 60.307257 113.928510 0 ] (jdb/:__span-39-28) [ 1761 0 R /XYZ 60.307257 100.528158 0 ] (jdb/:__span-39-29) [ 1761 0 R /XYZ 60.307257 87.127806 0 ] (jdb/:__span-39-3) [ 1761 0 R /XYZ 60.307257 502.538718 0 ] (jdb/:__span-39-30) [ 1763 0 R /XYZ 60.307257 771.023622 0 ] (jdb/:__span-39-31) [ 1763 0 R /XYZ 60.307257 757.623270 0 ] (jdb/:__span-39-32) [ 1763 0 R /XYZ 60.307257 744.222918 0 ] (jdb/:__span-39-33) [ 1763 0 R /XYZ 60.307257 730.822566 0 ] (jdb/:__span-39-34) [ 1763 0 R /XYZ 60.307257 717.422214 0 ] (jdb/:__span-39-35) [ 1763 0 R /XYZ 60.307257 704.021862 0 ] (jdb/:__span-39-36) [ 1763 0 R /XYZ 60.307257 690.621510 0 ] (jdb/:__span-39-37) [ 1763 0 R /XYZ 60.307257 677.221158 0 ] (jdb/:__span-39-38) [ 1763 0 R /XYZ 60.307257 663.820806 0 ] (jdb/:__span-39-39) [ 1763 0 R /XYZ 60.307257 650.420454 0 ] (jdb/:__span-39-4) [ 1761 0 R /XYZ 60.307257 475.738014 0 ] (jdb/:__span-39-5) [ 1761 0 R /XYZ 60.307257 448.937310 0 ] (jdb/:__span-39-6) [ 1761 0 R /XYZ 60.307257 422.136606 0 ] (jdb/:__span-39-7) [ 1761 0 R /XYZ 60.307257 408.736254 0 ] (jdb/:__span-39-8) [ 1761 0 R /XYZ 60.307257 395.335902 0 ] (jdb/:__span-39-9) [ 1761 0 R /XYZ 60.307257 381.935550 0 ] (jdb/:__span-4-1) [ 1196 0 R /XYZ 60.307257 763.633722 0 ] (jdb/:__span-4-10) [ 1196 0 R /XYZ 60.307257 643.030554 0 ] (jdb/:__span-4-11) [ 1196 0 R /XYZ 60.307257 629.630202 0 ] (jdb/:__span-4-12) [ 1196 0 R /XYZ 60.307257 602.829498 0 ] (jdb/:__span-4-13) [ 1196 0 R /XYZ 60.307257 589.429146 0 ] (jdb/:__span-4-14) [ 1196 0 R /XYZ 60.307257 576.028794 0 ] (jdb/:__span-4-15) [ 1196 0 R /XYZ 60.307257 562.628442 0 ] (jdb/:__span-4-16) [ 1196 0 R /XYZ 60.307257 549.228090 0 ] (jdb/:__span-4-17) [ 1196 0 R /XYZ 60.307257 535.827738 0 ] (jdb/:__span-4-18) [ 1196 0 R /XYZ 60.307257 522.427386 0 ] (jdb/:__span-4-19) [ 1196 0 R /XYZ 60.307257 509.027034 0 ] (jdb/:__span-4-2) [ 1196 0 R /XYZ 60.307257 750.233370 0 ] (jdb/:__span-4-20) [ 1196 0 R /XYZ 60.307257 495.626682 0 ] (jdb/:__span-4-21) [ 1196 0 R /XYZ 60.307257 482.226330 0 ] (jdb/:__span-4-22) [ 1196 0 R /XYZ 60.307257 468.825978 0 ] (jdb/:__span-4-23) [ 1196 0 R /XYZ 60.307257 455.425626 0 ] (jdb/:__span-4-3) [ 1196 0 R /XYZ 60.307257 736.833018 0 ] (jdb/:__span-4-4) [ 1196 0 R /XYZ 60.307257 723.432666 0 ] (jdb/:__span-4-5) [ 1196 0 R /XYZ 60.307257 710.032314 0 ] (jdb/:__span-4-6) [ 1196 0 R /XYZ 60.307257 696.631962 0 ] (jdb/:__span-4-7) [ 1196 0 R /XYZ 60.307257 683.231610 0 ] (jdb/:__span-4-8) [ 1196 0 R /XYZ 60.307257 669.831258 0 ] (jdb/:__span-4-9) [ 1196 0 R /XYZ 60.307257 656.430906 0 ] (jdb/:__span-5-1) [ 1248 0 R /XYZ 60.307257 763.633722 0 ] (jdb/:__span-5-10) [ 1248 0 R /XYZ 60.307257 643.030554 0 ] (jdb/:__span-5-11) [ 1248 0 R /XYZ 60.307257 629.630202 0 ] (jdb/:__span-5-12) [ 1248 0 R /XYZ 60.307257 616.229850 0 ] (jdb/:__span-5-13) [ 1248 0 R /XYZ 60.307257 602.829498 0 ] (jdb/:__span-5-14) [ 1248 0 R /XYZ 60.307257 589.429146 0 ] (jdb/:__span-5-15) [ 1248 0 R /XYZ 60.307257 576.028794 0 ] (jdb/:__span-5-16) [ 1248 0 R /XYZ 60.307257 562.628442 0 ] (jdb/:__span-5-17) [ 1248 0 R /XYZ 60.307257 535.827738 0 ] (jdb/:__span-5-18) [ 1248 0 R /XYZ 60.307257 522.427386 0 ] (jdb/:__span-5-19) [ 1248 0 R /XYZ 60.307257 509.027034 0 ] (jdb/:__span-5-2) [ 1248 0 R /XYZ 60.307257 750.233370 0 ] (jdb/:__span-5-20) [ 1248 0 R /XYZ 60.307257 495.626682 0 ] (jdb/:__span-5-21) [ 1248 0 R /XYZ 60.307257 482.226330 0 ] (jdb/:__span-5-22) [ 1248 0 R /XYZ 60.307257 468.825978 0 ] (jdb/:__span-5-23) [ 1248 0 R /XYZ 60.307257 455.425626 0 ] (jdb/:__span-5-24) [ 1248 0 R /XYZ 60.307257 442.025274 0 ] (jdb/:__span-5-25) [ 1248 0 R /XYZ 60.307257 428.624922 0 ] (jdb/:__span-5-26) [ 1248 0 R /XYZ 60.307257 415.224570 0 ] (jdb/:__span-5-27) [ 1248 0 R /XYZ 60.307257 401.824218 0 ] (jdb/:__span-5-28) [ 1248 0 R /XYZ 60.307257 388.423866 0 ] (jdb/:__span-5-29) [ 1248 0 R /XYZ 60.307257 375.023514 0 ] (jdb/:__span-5-3) [ 1248 0 R /XYZ 60.307257 736.833018 0 ] (jdb/:__span-5-30) [ 1248 0 R /XYZ 60.307257 361.623162 0 ] (jdb/:__span-5-31) [ 1248 0 R /XYZ 60.307257 348.222810 0 ] (jdb/:__span-5-32) [ 1248 0 R /XYZ 60.307257 334.822458 0 ] (jdb/:__span-5-33) [ 1248 0 R /XYZ 60.307257 321.422106 0 ] (jdb/:__span-5-34) [ 1248 0 R /XYZ 60.307257 308.021754 0 ] (jdb/:__span-5-35) [ 1248 0 R /XYZ 60.307257 294.621402 0 ] (jdb/:__span-5-36) [ 1248 0 R /XYZ 60.307257 281.221050 0 ] (jdb/:__span-5-37) [ 1248 0 R /XYZ 60.307257 267.820698 0 ] (jdb/:__span-5-38) [ 1248 0 R /XYZ 60.307257 254.420346 0 ] (jdb/:__span-5-39) [ 1248 0 R /XYZ 60.307257 241.019994 0 ] (jdb/:__span-5-4) [ 1248 0 R /XYZ 60.307257 723.432666 0 ] (jdb/:__span-5-40) [ 1248 0 R /XYZ 60.307257 227.619642 0 ] (jdb/:__span-5-41) [ 1248 0 R /XYZ 60.307257 214.219290 0 ] (jdb/:__span-5-42) [ 1248 0 R /XYZ 60.307257 200.818938 0 ] (jdb/:__span-5-43) [ 1248 0 R /XYZ 60.307257 187.418586 0 ] (jdb/:__span-5-44) [ 1248 0 R /XYZ 60.307257 174.018234 0 ] (jdb/:__span-5-45) [ 1248 0 R /XYZ 60.307257 160.617882 0 ] (jdb/:__span-5-46) [ 1248 0 R /XYZ 60.307257 147.217530 0 ] (jdb/:__span-5-47) [ 1248 0 R /XYZ 60.307257 133.817178 0 ] (jdb/:__span-5-48) [ 1248 0 R /XYZ 60.307257 120.416826 0 ] (jdb/:__span-5-49) [ 1248 0 R /XYZ 60.307257 107.016474 0 ] (jdb/:__span-5-5) [ 1248 0 R /XYZ 60.307257 710.032314 0 ] (jdb/:__span-5-50) [ 1250 0 R /XYZ 60.307257 757.623270 0 ] (jdb/:__span-5-51) [ 1250 0 R /XYZ 60.307257 744.222918 0 ] (jdb/:__span-5-52) [ 1250 0 R /XYZ 60.307257 730.822566 0 ] (jdb/:__span-5-53) [ 1250 0 R /XYZ 60.307257 717.422214 0 ] (jdb/:__span-5-54) [ 1250 0 R /XYZ 60.307257 704.021862 0 ] (jdb/:__span-5-55) [ 1250 0 R /XYZ 60.307257 690.621510 0 ] (jdb/:__span-5-56) [ 1250 0 R /XYZ 60.307257 677.221158 0 ] (jdb/:__span-5-57) [ 1250 0 R /XYZ 60.307257 663.820806 0 ] (jdb/:__span-5-58) [ 1250 0 R /XYZ 60.307257 650.420454 0 ] (jdb/:__span-5-6) [ 1248 0 R /XYZ 60.307257 696.631962 0 ] (jdb/:__span-5-7) [ 1248 0 R /XYZ 60.307257 683.231610 0 ] (jdb/:__span-5-8) [ 1248 0 R /XYZ 60.307257 669.831258 0 ] (jdb/:__span-5-9) [ 1248 0 R /XYZ 60.307257 656.430906 0 ] (jdb/:__span-6-1) [ 1250 0 R /XYZ 60.307257 466.465902 0 ] (jdb/:__span-6-10) [ 1250 0 R /XYZ 60.307257 345.862734 0 ] (jdb/:__span-6-11) [ 1250 0 R /XYZ 60.307257 332.462382 0 ] (jdb/:__span-6-12) [ 1250 0 R /XYZ 60.307257 319.062030 0 ] (jdb/:__span-6-13) [ 1250 0 R /XYZ 60.307257 305.661678 0 ] (jdb/:__span-6-14) [ 1250 0 R /XYZ 60.307257 292.261326 0 ] (jdb/:__span-6-15) [ 1250 0 R /XYZ 60.307257 278.860974 0 ] (jdb/:__span-6-16) [ 1250 0 R /XYZ 60.307257 265.460622 0 ] (jdb/:__span-6-17) [ 1250 0 R /XYZ 60.307257 252.060270 0 ] (jdb/:__span-6-18) [ 1250 0 R /XYZ 60.307257 238.659918 0 ] (jdb/:__span-6-19) [ 1250 0 R /XYZ 60.307257 225.259566 0 ] (jdb/:__span-6-2) [ 1250 0 R /XYZ 60.307257 453.065550 0 ] (jdb/:__span-6-20) [ 1250 0 R /XYZ 60.307257 211.859214 0 ] (jdb/:__span-6-21) [ 1250 0 R /XYZ 60.307257 198.458862 0 ] (jdb/:__span-6-22) [ 1250 0 R /XYZ 60.307257 185.058510 0 ] (jdb/:__span-6-23) [ 1250 0 R /XYZ 60.307257 171.658158 0 ] (jdb/:__span-6-24) [ 1250 0 R /XYZ 60.307257 144.857454 0 ] (jdb/:__span-6-25) [ 1250 0 R /XYZ 60.307257 131.457102 0 ] (jdb/:__span-6-26) [ 1250 0 R /XYZ 60.307257 118.056750 0 ] (jdb/:__span-6-27) [ 1250 0 R /XYZ 60.307257 104.656398 0 ] (jdb/:__span-6-28) [ 1250 0 R /XYZ 60.307257 91.256046 0 ] (jdb/:__span-6-29) [ 1252 0 R /XYZ 60.307257 771.023622 0 ] (jdb/:__span-6-3) [ 1250 0 R /XYZ 60.307257 439.665198 0 ] (jdb/:__span-6-30) [ 1252 0 R /XYZ 60.307257 757.623270 0 ] (jdb/:__span-6-31) [ 1252 0 R /XYZ 60.307257 744.222918 0 ] (jdb/:__span-6-32) [ 1252 0 R /XYZ 60.307257 730.822566 0 ] (jdb/:__span-6-33) [ 1252 0 R /XYZ 60.307257 717.422214 0 ] (jdb/:__span-6-34) [ 1252 0 R /XYZ 60.307257 704.021862 0 ] (jdb/:__span-6-35) [ 1252 0 R /XYZ 60.307257 677.221158 0 ] (jdb/:__span-6-36) [ 1252 0 R /XYZ 60.307257 663.820806 0 ] (jdb/:__span-6-37) [ 1252 0 R /XYZ 60.307257 650.420454 0 ] (jdb/:__span-6-4) [ 1250 0 R /XYZ 60.307257 426.264846 0 ] (jdb/:__span-6-5) [ 1250 0 R /XYZ 60.307257 412.864494 0 ] (jdb/:__span-6-6) [ 1250 0 R /XYZ 60.307257 399.464142 0 ] (jdb/:__span-6-7) [ 1250 0 R /XYZ 60.307257 386.063790 0 ] (jdb/:__span-6-8) [ 1250 0 R /XYZ 60.307257 372.663438 0 ] (jdb/:__span-6-9) [ 1250 0 R /XYZ 60.307257 359.263086 0 ] (jdb/:__span-7-1) [ 1274 0 R /XYZ 60.307257 374.523743 0 ] (jdb/:__span-7-10) [ 1274 0 R /XYZ 60.307257 240.520223 0 ] (jdb/:__span-7-11) [ 1274 0 R /XYZ 60.307257 227.119871 0 ] (jdb/:__span-7-12) [ 1274 0 R /XYZ 60.307257 213.719519 0 ] (jdb/:__span-7-13) [ 1274 0 R /XYZ 60.307257 200.319167 0 ] (jdb/:__span-7-14) [ 1274 0 R /XYZ 60.307257 186.918815 0 ] (jdb/:__span-7-15) [ 1274 0 R /XYZ 60.307257 173.518463 0 ] (jdb/:__span-7-16) [ 1274 0 R /XYZ 60.307257 160.118111 0 ] (jdb/:__span-7-17) [ 1274 0 R /XYZ 60.307257 146.717759 0 ] (jdb/:__span-7-18) [ 1274 0 R /XYZ 60.307257 119.917055 0 ] (jdb/:__span-7-19) [ 1274 0 R /XYZ 60.307257 106.516703 0 ] (jdb/:__span-7-2) [ 1274 0 R /XYZ 60.307257 361.123391 0 ] (jdb/:__span-7-20) [ 1274 0 R /XYZ 60.307257 93.116351 0 ] (jdb/:__span-7-21) [ 1281 0 R /XYZ 60.307257 771.023622 0 ] (jdb/:__span-7-22) [ 1281 0 R /XYZ 60.307257 757.623270 0 ] (jdb/:__span-7-23) [ 1281 0 R /XYZ 60.307257 730.822566 0 ] (jdb/:__span-7-24) [ 1281 0 R /XYZ 60.307257 717.422214 0 ] (jdb/:__span-7-25) [ 1281 0 R /XYZ 60.307257 704.021862 0 ] (jdb/:__span-7-26) [ 1281 0 R /XYZ 60.307257 677.221158 0 ] (jdb/:__span-7-27) [ 1281 0 R /XYZ 60.307257 663.820806 0 ] (jdb/:__span-7-28) [ 1281 0 R /XYZ 60.307257 637.020102 0 ] (jdb/:__span-7-29) [ 1281 0 R /XYZ 60.307257 610.219398 0 ] (jdb/:__span-7-3) [ 1274 0 R /XYZ 60.307257 347.723039 0 ] (jdb/:__span-7-30) [ 1281 0 R /XYZ 60.307257 596.819046 0 ] (jdb/:__span-7-31) [ 1281 0 R /XYZ 60.307257 583.418694 0 ] (jdb/:__span-7-32) [ 1281 0 R /XYZ 60.307257 570.018342 0 ] (jdb/:__span-7-33) [ 1281 0 R /XYZ 60.307257 543.217638 0 ] (jdb/:__span-7-34) [ 1281 0 R /XYZ 60.307257 529.817286 0 ] (jdb/:__span-7-35) [ 1281 0 R /XYZ 60.307257 516.416934 0 ] (jdb/:__span-7-36) [ 1281 0 R /XYZ 60.307257 503.016582 0 ] (jdb/:__span-7-37) [ 1281 0 R /XYZ 60.307257 489.616230 0 ] (jdb/:__span-7-38) [ 1281 0 R /XYZ 60.307257 476.215878 0 ] (jdb/:__span-7-39) [ 1281 0 R /XYZ 60.307257 462.815526 0 ] (jdb/:__span-7-4) [ 1274 0 R /XYZ 60.307257 334.322687 0 ] (jdb/:__span-7-40) [ 1281 0 R /XYZ 60.307257 449.415174 0 ] (jdb/:__span-7-41) [ 1281 0 R /XYZ 60.307257 422.614470 0 ] (jdb/:__span-7-42) [ 1281 0 R /XYZ 60.307257 409.214118 0 ] (jdb/:__span-7-43) [ 1281 0 R /XYZ 60.307257 395.813766 0 ] (jdb/:__span-7-44) [ 1281 0 R /XYZ 60.307257 382.413414 0 ] (jdb/:__span-7-45) [ 1281 0 R /XYZ 60.307257 369.013062 0 ] (jdb/:__span-7-46) [ 1281 0 R /XYZ 60.307257 355.612710 0 ] (jdb/:__span-7-47) [ 1281 0 R /XYZ 60.307257 342.212358 0 ] (jdb/:__span-7-48) [ 1281 0 R /XYZ 60.307257 328.812006 0 ] (jdb/:__span-7-49) [ 1281 0 R /XYZ 60.307257 315.411654 0 ] (jdb/:__span-7-5) [ 1274 0 R /XYZ 60.307257 320.922335 0 ] (jdb/:__span-7-50) [ 1281 0 R /XYZ 60.307257 288.610950 0 ] (jdb/:__span-7-51) [ 1281 0 R /XYZ 60.307257 261.810246 0 ] (jdb/:__span-7-52) [ 1281 0 R /XYZ 60.307257 248.409894 0 ] (jdb/:__span-7-53) [ 1281 0 R /XYZ 60.307257 235.009542 0 ] (jdb/:__span-7-54) [ 1281 0 R /XYZ 60.307257 221.609190 0 ] (jdb/:__span-7-55) [ 1281 0 R /XYZ 60.307257 208.208838 0 ] (jdb/:__span-7-6) [ 1274 0 R /XYZ 60.307257 307.521983 0 ] (jdb/:__span-7-7) [ 1274 0 R /XYZ 60.307257 280.721279 0 ] (jdb/:__span-7-8) [ 1274 0 R /XYZ 60.307257 267.320927 0 ] (jdb/:__span-7-9) [ 1274 0 R /XYZ 60.307257 253.920575 0 ] (jdb/:__span-8-1) [ 1307 0 R /XYZ 60.307257 178.281829 0 ] (jdb/:__span-8-10) [ 1312 0 R /XYZ 60.307257 757.623270 0 ] (jdb/:__span-8-11) [ 1312 0 R /XYZ 60.307257 744.222918 0 ] (jdb/:__span-8-12) [ 1312 0 R /XYZ 60.307257 730.822566 0 ] (jdb/:__span-8-13) [ 1312 0 R /XYZ 60.307257 717.422214 0 ] (jdb/:__span-8-14) [ 1312 0 R /XYZ 60.307257 704.021862 0 ] (jdb/:__span-8-15) [ 1312 0 R /XYZ 60.307257 690.621510 0 ] (jdb/:__span-8-16) [ 1312 0 R /XYZ 60.307257 677.221158 0 ] (jdb/:__span-8-17) [ 1312 0 R /XYZ 60.307257 663.820806 0 ] (jdb/:__span-8-18) [ 1312 0 R /XYZ 60.307257 650.420454 0 ] (jdb/:__span-8-19) [ 1312 0 R /XYZ 60.307257 637.020102 0 ] (jdb/:__span-8-2) [ 1307 0 R /XYZ 60.307257 164.881477 0 ] (jdb/:__span-8-20) [ 1312 0 R /XYZ 60.307257 623.619750 0 ] (jdb/:__span-8-21) [ 1312 0 R /XYZ 60.307257 610.219398 0 ] (jdb/:__span-8-22) [ 1312 0 R /XYZ 60.307257 596.819046 0 ] (jdb/:__span-8-23) [ 1312 0 R /XYZ 60.307257 583.418694 0 ] (jdb/:__span-8-24) [ 1312 0 R /XYZ 60.307257 570.018342 0 ] (jdb/:__span-8-25) [ 1312 0 R /XYZ 60.307257 556.617990 0 ] (jdb/:__span-8-26) [ 1312 0 R /XYZ 60.307257 543.217638 0 ] (jdb/:__span-8-27) [ 1312 0 R /XYZ 60.307257 529.817286 0 ] (jdb/:__span-8-28) [ 1312 0 R /XYZ 60.307257 516.416934 0 ] (jdb/:__span-8-29) [ 1312 0 R /XYZ 60.307257 503.016582 0 ] (jdb/:__span-8-3) [ 1307 0 R /XYZ 60.307257 151.481125 0 ] (jdb/:__span-8-4) [ 1307 0 R /XYZ 60.307257 138.080773 0 ] (jdb/:__span-8-5) [ 1307 0 R /XYZ 60.307257 124.680421 0 ] (jdb/:__span-8-6) [ 1307 0 R /XYZ 60.307257 111.280069 0 ] (jdb/:__span-8-7) [ 1307 0 R /XYZ 60.307257 97.879717 0 ] (jdb/:__span-8-8) [ 1307 0 R /XYZ 60.307257 84.479365 0 ] (jdb/:__span-8-9) [ 1312 0 R /XYZ 60.307257 771.023622 0 ] (jdb/:__span-9-1) [ 1319 0 R /XYZ 60.307257 763.633722 0 ] (jdb/:__span-9-10) [ 1319 0 R /XYZ 60.307257 643.030554 0 ] (jdb/:__span-9-11) [ 1319 0 R /XYZ 60.307257 629.630202 0 ] (jdb/:__span-9-12) [ 1319 0 R /XYZ 60.307257 616.229850 0 ] (jdb/:__span-9-13) [ 1319 0 R /XYZ 60.307257 602.829498 0 ] (jdb/:__span-9-14) [ 1319 0 R /XYZ 60.307257 589.429146 0 ] (jdb/:__span-9-15) [ 1319 0 R /XYZ 60.307257 576.028794 0 ] (jdb/:__span-9-16) [ 1319 0 R /XYZ 60.307257 562.628442 0 ] (jdb/:__span-9-17) [ 1319 0 R /XYZ 60.307257 549.228090 0 ] (jdb/:__span-9-18) [ 1319 0 R /XYZ 60.307257 535.827738 0 ] (jdb/:__span-9-19) [ 1319 0 R /XYZ 60.307257 522.427386 0 ] (jdb/:__span-9-2) [ 1319 0 R /XYZ 60.307257 750.233370 0 ] (jdb/:__span-9-20) [ 1319 0 R /XYZ 60.307257 509.027034 0 ] (jdb/:__span-9-21) [ 1319 0 R /XYZ 60.307257 495.626682 0 ] (jdb/:__span-9-22) [ 1319 0 R /XYZ 60.307257 482.226330 0 ] (jdb/:__span-9-23) [ 1319 0 R /XYZ 60.307257 468.825978 0 ] (jdb/:__span-9-24) [ 1319 0 R /XYZ 60.307257 455.425626 0 ] (jdb/:__span-9-25) [ 1319 0 R /XYZ 60.307257 442.025274 0 ] (jdb/:__span-9-26) [ 1319 0 R /XYZ 60.307257 428.624922 0 ] (jdb/:__span-9-27) [ 1319 0 R /XYZ 60.307257 415.224570 0 ] (jdb/:__span-9-28) [ 1319 0 R /XYZ 60.307257 401.824218 0 ] (jdb/:__span-9-29) [ 1319 0 R /XYZ 60.307257 388.423866 0 ] (jdb/:__span-9-3) [ 1319 0 R /XYZ 60.307257 736.833018 0 ] (jdb/:__span-9-30) [ 1319 0 R /XYZ 60.307257 375.023514 0 ] (jdb/:__span-9-31) [ 1319 0 R /XYZ 60.307257 361.623162 0 ] (jdb/:__span-9-32) [ 1319 0 R /XYZ 60.307257 348.222810 0 ] (jdb/:__span-9-33) [ 1319 0 R /XYZ 60.307257 334.822458 0 ] (jdb/:__span-9-34) [ 1319 0 R /XYZ 60.307257 321.422106 0 ] (jdb/:__span-9-35) [ 1319 0 R /XYZ 60.307257 308.021754 0 ] (jdb/:__span-9-36) [ 1319 0 R /XYZ 60.307257 294.621402 0 ] (jdb/:__span-9-37) [ 1319 0 R /XYZ 60.307257 281.221050 0 ] (jdb/:__span-9-38) [ 1319 0 R /XYZ 60.307257 267.820698 0 ] (jdb/:__span-9-39) [ 1319 0 R /XYZ 60.307257 254.420346 0 ] (jdb/:__span-9-4) [ 1319 0 R /XYZ 60.307257 723.432666 0 ] (jdb/:__span-9-40) [ 1319 0 R /XYZ 60.307257 241.019994 0 ] (jdb/:__span-9-41) [ 1319 0 R /XYZ 60.307257 227.619642 0 ] (jdb/:__span-9-42) [ 1319 0 R /XYZ 60.307257 214.219290 0 ] (jdb/:__span-9-43) [ 1319 0 R /XYZ 60.307257 200.818938 0 ] (jdb/:__span-9-5) [ 1319 0 R /XYZ 60.307257 710.032314 0 ] (jdb/:__span-9-6) [ 1319 0 R /XYZ 60.307257 696.631962 0 ] (jdb/:__span-9-7) [ 1319 0 R /XYZ 60.307257 683.231610 0 ] (jdb/:__span-9-8) [ 1319 0 R /XYZ 60.307257 669.831258 0 ] (jdb/:__span-9-9) [ 1319 0 R /XYZ 60.307257 656.430906 0 ] (jdb/:grand-prix-de-monaco) [ 1699 0 R /XYZ 39.386457 164.992922 0 ] (jdb/:jeudi-1-juin-2023) [ 1703 0 R /XYZ 39.386457 270.835122 0 ] (jdb/:jeudi-11-mai-2023) [ 1611 0 R /XYZ 39.386457 562.440762 0 ] (jdb/:jeudi-18-mai-2023) [ 1650 0 R /XYZ 39.386457 459.588513 0 ] (jdb/:jeudi-25-mai-2023) [ 1691 0 R /XYZ 39.386457 446.337222 0 ] (jdb/:jeudi-27-avril-2023) [ 1497 0 R /XYZ 39.386457 584.282022 0 ] (jdb/:jeudi-30-mars-2023) [ 1141 0 R /XYZ 39.386457 263.492343 0 ] (jdb/:jeudi-6-avril) [ 1348 0 R /XYZ 39.386457 238.444086 0 ] (jdb/:journal-de-bord) [ 1138 0 R /XYZ 39.386457 757.223622 0 ] (jdb/:lundi-1-mai-2023) [ 1511 0 R /XYZ 39.386457 501.702822 0 ] (jdb/:lundi-15-mai-2023) [ 1633 0 R /XYZ 39.386457 584.282022 0 ] (jdb/:lundi-22-mai-2023) [ 1657 0 R /XYZ 39.386457 649.970022 0 ] (jdb/:lundi-24-avril-2023) [ 1471 0 R /XYZ 39.386457 266.404302 0 ] (jdb/:lundi-29-mai-2023) [ 1703 0 R /XYZ 39.386457 771.023622 0 ] (jdb/:lundi-3-avril) [ 1228 0 R /XYZ 39.386457 717.534822 0 ] (jdb/:lundi-5-juin-2023) [ 1747 0 R /XYZ 39.386457 229.986499 0 ] (jdb/:lundi-8-mai-2023) [ 1540 0 R /XYZ 39.386457 314.866514 0 ] (jdb/:mardi-16-mai-2023) [ 1633 0 R /XYZ 39.386457 273.038922 0 ] (jdb/:mardi-2-mai-2023) [ 1517 0 R /XYZ 39.386457 595.251918 0 ] (jdb/:mardi-23-mai-2023) [ 1684 0 R /XYZ 39.386457 234.994819 0 ] (jdb/:mardi-25-avril-2023) [ 1490 0 R /XYZ 39.386457 693.136422 0 ] (jdb/:mardi-30-mai-2023) [ 1703 0 R /XYZ 39.386457 547.990122 0 ] (jdb/:mardi-4-avril) [ 1294 0 R /XYZ 39.386457 305.202822 0 ] (jdb/:mardi-6-juin-2023) [ 1757 0 R /XYZ 39.386457 150.125803 0 ] (jdb/:mardi-9-mai-2023) [ 1576 0 R /XYZ 39.386457 146.799010 0 ] (jdb/:mercredi-10-mai-2023) [ 1597 0 R /XYZ 39.386457 659.354022 0 ] (jdb/:mercredi-17-mai-2023) [ 1642 0 R /XYZ 39.386457 771.023622 0 ] (jdb/:mercredi-24-mai-2023) [ 1689 0 R /XYZ 39.386457 629.325222 0 ] (jdb/:mercredi-29-mars-2023) [ 1138 0 R /XYZ 39.386457 707.865222 0 ] (jdb/:mercredi-31-mai-2023) [ 1703 0 R /XYZ 39.386457 339.971022 0 ] (jdb/:mercredi-5-avril) [ 1321 0 R /XYZ 39.386457 293.199726 0 ] (jdb/:mercredi-7-juin) [ 1761 0 R /XYZ 39.386457 648.093222 0 ] (jdb/:recrutement-payerne-mai-2023) [ 1537 0 R /XYZ 39.386457 526.101222 0 ] (jdb/:vacances) [ 1416 0 R /XYZ 39.386457 355.144422 0 ] (jdb/:vendredi-12-mai-2023) [ 1624 0 R /XYZ 39.386457 623.694822 0 ] (jdb/:vendredi-2-juin-2023) [ 1729 0 R /XYZ 39.386457 608.680422 0 ] (jdb/:vendredi-26-mai-2023) [ 1699 0 R /XYZ 39.386457 249.143222 0 ] (jdb/:vendredi-28-avril-2023) [ 1509 0 R /XYZ 39.386457 717.534822 0 ] (jdb/:vendredi-31032023) [ 1153 0 R /XYZ 39.386457 347.805222 0 ] (jdb/:vendredi-5-mai-2023) [ 1537 0 R /XYZ 39.386457 426.936522 0 ] (jdb/:vendredi-6-avril-2023) [ 1391 0 R /XYZ 39.386457 565.514022 0 ] ] +/Names [ (.:) [ 575 0 R /XYZ 39.386457 771.023622 0 ] (.:__span-0-1) [ 722 0 R /XYZ 60.307257 407.980122 0 ] (.:__span-0-2) [ 722 0 R /XYZ 60.307257 381.179418 0 ] (.:__span-1-1) [ 726 0 R /XYZ 60.307257 187.456122 0 ] (.:__span-1-10) [ 728 0 R /XYZ 60.307257 757.623270 0 ] (.:__span-1-11) [ 728 0 R /XYZ 60.307257 744.222918 0 ] (.:__span-1-12) [ 728 0 R /XYZ 60.307257 730.822566 0 ] (.:__span-1-13) [ 728 0 R /XYZ 60.307257 717.422214 0 ] (.:__span-1-2) [ 726 0 R /XYZ 60.307257 174.055770 0 ] (.:__span-1-3) [ 726 0 R /XYZ 60.307257 160.655418 0 ] (.:__span-1-4) [ 726 0 R /XYZ 60.307257 147.255066 0 ] (.:__span-1-5) [ 726 0 R /XYZ 60.307257 133.854714 0 ] (.:__span-1-6) [ 726 0 R /XYZ 60.307257 120.454362 0 ] (.:__span-1-7) [ 726 0 R /XYZ 60.307257 107.054010 0 ] (.:__span-1-8) [ 726 0 R /XYZ 60.307257 93.653658 0 ] (.:__span-1-9) [ 728 0 R /XYZ 60.307257 771.023622 0 ] (.:__span-10-1) [ 1009 0 R /XYZ 60.307257 443.734906 0 ] (.:__span-10-10) [ 1009 0 R /XYZ 60.307257 296.331034 0 ] (.:__span-10-11) [ 1009 0 R /XYZ 60.307257 282.930682 0 ] (.:__span-10-12) [ 1009 0 R /XYZ 60.307257 269.530330 0 ] (.:__span-10-13) [ 1009 0 R /XYZ 60.307257 256.129978 0 ] (.:__span-10-14) [ 1009 0 R /XYZ 60.307257 242.729626 0 ] (.:__span-10-15) [ 1009 0 R /XYZ 60.307257 229.329274 0 ] (.:__span-10-16) [ 1009 0 R /XYZ 60.307257 215.928922 0 ] (.:__span-10-17) [ 1009 0 R /XYZ 60.307257 202.528570 0 ] (.:__span-10-18) [ 1009 0 R /XYZ 60.307257 189.128218 0 ] (.:__span-10-19) [ 1009 0 R /XYZ 60.307257 175.727866 0 ] (.:__span-10-2) [ 1009 0 R /XYZ 60.307257 416.934202 0 ] (.:__span-10-20) [ 1009 0 R /XYZ 60.307257 162.327514 0 ] (.:__span-10-21) [ 1009 0 R /XYZ 60.307257 148.927162 0 ] (.:__span-10-22) [ 1009 0 R /XYZ 60.307257 135.526810 0 ] (.:__span-10-23) [ 1009 0 R /XYZ 60.307257 122.126458 0 ] (.:__span-10-24) [ 1009 0 R /XYZ 60.307257 108.726106 0 ] (.:__span-10-25) [ 1009 0 R /XYZ 60.307257 95.325754 0 ] (.:__span-10-26) [ 1013 0 R /XYZ 60.307257 771.023622 0 ] (.:__span-10-27) [ 1013 0 R /XYZ 60.307257 757.623270 0 ] (.:__span-10-28) [ 1013 0 R /XYZ 60.307257 744.222918 0 ] (.:__span-10-29) [ 1013 0 R /XYZ 60.307257 730.822566 0 ] (.:__span-10-3) [ 1009 0 R /XYZ 60.307257 403.533850 0 ] (.:__span-10-4) [ 1009 0 R /XYZ 60.307257 390.133498 0 ] (.:__span-10-5) [ 1009 0 R /XYZ 60.307257 376.733146 0 ] (.:__span-10-6) [ 1009 0 R /XYZ 60.307257 349.932442 0 ] (.:__span-10-7) [ 1009 0 R /XYZ 60.307257 336.532090 0 ] (.:__span-10-8) [ 1009 0 R /XYZ 60.307257 323.131738 0 ] (.:__span-10-9) [ 1009 0 R /XYZ 60.307257 309.731386 0 ] (.:__span-11-1) [ 1026 0 R /XYZ 60.307257 583.460922 0 ] (.:__span-11-10) [ 1026 0 R /XYZ 60.307257 422.656698 0 ] (.:__span-11-11) [ 1026 0 R /XYZ 60.307257 409.256346 0 ] (.:__span-11-12) [ 1026 0 R /XYZ 60.307257 395.855994 0 ] (.:__span-11-13) [ 1026 0 R /XYZ 60.307257 382.455642 0 ] (.:__span-11-14) [ 1026 0 R /XYZ 60.307257 369.055290 0 ] (.:__span-11-15) [ 1026 0 R /XYZ 60.307257 355.654938 0 ] (.:__span-11-16) [ 1026 0 R /XYZ 60.307257 342.254586 0 ] (.:__span-11-2) [ 1026 0 R /XYZ 60.307257 556.660218 0 ] (.:__span-11-3) [ 1026 0 R /XYZ 60.307257 529.859514 0 ] (.:__span-11-4) [ 1026 0 R /XYZ 60.307257 516.459162 0 ] (.:__span-11-5) [ 1026 0 R /XYZ 60.307257 503.058810 0 ] (.:__span-11-6) [ 1026 0 R /XYZ 60.307257 476.258106 0 ] (.:__span-11-7) [ 1026 0 R /XYZ 60.307257 462.857754 0 ] (.:__span-11-8) [ 1026 0 R /XYZ 60.307257 449.457402 0 ] (.:__span-11-9) [ 1026 0 R /XYZ 60.307257 436.057050 0 ] (.:__span-12-1) [ 1030 0 R /XYZ 60.307257 455.838522 0 ] (.:__span-12-10) [ 1030 0 R /XYZ 60.307257 321.835002 0 ] (.:__span-12-11) [ 1030 0 R /XYZ 60.307257 308.434650 0 ] (.:__span-12-12) [ 1030 0 R /XYZ 60.307257 295.034298 0 ] (.:__span-12-13) [ 1030 0 R /XYZ 60.307257 281.633946 0 ] (.:__span-12-14) [ 1030 0 R /XYZ 60.307257 268.233594 0 ] (.:__span-12-15) [ 1030 0 R /XYZ 60.307257 254.833242 0 ] (.:__span-12-16) [ 1030 0 R /XYZ 60.307257 241.432890 0 ] (.:__span-12-17) [ 1030 0 R /XYZ 60.307257 228.032538 0 ] (.:__span-12-18) [ 1030 0 R /XYZ 60.307257 214.632186 0 ] (.:__span-12-19) [ 1030 0 R /XYZ 60.307257 201.231834 0 ] (.:__span-12-2) [ 1030 0 R /XYZ 60.307257 442.438170 0 ] (.:__span-12-20) [ 1030 0 R /XYZ 60.307257 187.831482 0 ] (.:__span-12-21) [ 1030 0 R /XYZ 60.307257 174.431130 0 ] (.:__span-12-22) [ 1030 0 R /XYZ 60.307257 161.030778 0 ] (.:__span-12-23) [ 1030 0 R /XYZ 60.307257 147.630426 0 ] (.:__span-12-24) [ 1030 0 R /XYZ 60.307257 134.230074 0 ] (.:__span-12-25) [ 1030 0 R /XYZ 60.307257 120.829722 0 ] (.:__span-12-26) [ 1030 0 R /XYZ 60.307257 94.029018 0 ] (.:__span-12-27) [ 1032 0 R /XYZ 60.307257 771.023622 0 ] (.:__span-12-28) [ 1032 0 R /XYZ 60.307257 757.623270 0 ] (.:__span-12-29) [ 1032 0 R /XYZ 60.307257 744.222918 0 ] (.:__span-12-3) [ 1030 0 R /XYZ 60.307257 429.037818 0 ] (.:__span-12-30) [ 1032 0 R /XYZ 60.307257 730.822566 0 ] (.:__span-12-31) [ 1032 0 R /XYZ 60.307257 717.422214 0 ] (.:__span-12-32) [ 1032 0 R /XYZ 60.307257 690.621510 0 ] (.:__span-12-33) [ 1032 0 R /XYZ 60.307257 663.820806 0 ] (.:__span-12-34) [ 1032 0 R /XYZ 60.307257 650.420454 0 ] (.:__span-12-35) [ 1032 0 R /XYZ 60.307257 637.020102 0 ] (.:__span-12-36) [ 1032 0 R /XYZ 60.307257 623.619750 0 ] (.:__span-12-4) [ 1030 0 R /XYZ 60.307257 415.637466 0 ] (.:__span-12-5) [ 1030 0 R /XYZ 60.307257 402.237114 0 ] (.:__span-12-6) [ 1030 0 R /XYZ 60.307257 388.836762 0 ] (.:__span-12-7) [ 1030 0 R /XYZ 60.307257 375.436410 0 ] (.:__span-12-8) [ 1030 0 R /XYZ 60.307257 362.036058 0 ] (.:__span-12-9) [ 1030 0 R /XYZ 60.307257 335.235354 0 ] (.:__span-2-1) [ 728 0 R /XYZ 60.307257 409.598862 0 ] (.:__span-2-10) [ 728 0 R /XYZ 60.307257 288.995694 0 ] (.:__span-2-11) [ 728 0 R /XYZ 60.307257 262.194990 0 ] (.:__span-2-12) [ 728 0 R /XYZ 60.307257 248.794638 0 ] (.:__span-2-13) [ 728 0 R /XYZ 60.307257 235.394286 0 ] (.:__span-2-14) [ 728 0 R /XYZ 60.307257 221.993934 0 ] (.:__span-2-15) [ 728 0 R /XYZ 60.307257 208.593582 0 ] (.:__span-2-16) [ 728 0 R /XYZ 60.307257 195.193230 0 ] (.:__span-2-17) [ 728 0 R /XYZ 60.307257 181.792878 0 ] (.:__span-2-18) [ 728 0 R /XYZ 60.307257 168.392526 0 ] (.:__span-2-19) [ 728 0 R /XYZ 60.307257 154.992174 0 ] (.:__span-2-2) [ 728 0 R /XYZ 60.307257 396.198510 0 ] (.:__span-2-20) [ 728 0 R /XYZ 60.307257 141.591822 0 ] (.:__span-2-21) [ 728 0 R /XYZ 60.307257 128.191470 0 ] (.:__span-2-22) [ 728 0 R /XYZ 60.307257 114.791118 0 ] (.:__span-2-23) [ 728 0 R /XYZ 60.307257 101.390766 0 ] (.:__span-2-24) [ 728 0 R /XYZ 60.307257 87.990414 0 ] (.:__span-2-25) [ 730 0 R /XYZ 60.307257 771.023622 0 ] (.:__span-2-26) [ 730 0 R /XYZ 60.307257 757.623270 0 ] (.:__span-2-27) [ 730 0 R /XYZ 60.307257 744.222918 0 ] (.:__span-2-28) [ 730 0 R /XYZ 60.307257 730.822566 0 ] (.:__span-2-3) [ 728 0 R /XYZ 60.307257 382.798158 0 ] (.:__span-2-4) [ 728 0 R /XYZ 60.307257 369.397806 0 ] (.:__span-2-5) [ 728 0 R /XYZ 60.307257 355.997454 0 ] (.:__span-2-6) [ 728 0 R /XYZ 60.307257 342.597102 0 ] (.:__span-2-7) [ 728 0 R /XYZ 60.307257 329.196750 0 ] (.:__span-2-8) [ 728 0 R /XYZ 60.307257 315.796398 0 ] (.:__span-2-9) [ 728 0 R /XYZ 60.307257 302.396046 0 ] (.:__span-3-1) [ 730 0 R /XYZ 60.307257 665.106414 0 ] (.:__span-3-10) [ 730 0 R /XYZ 60.307257 544.503246 0 ] (.:__span-3-11) [ 730 0 R /XYZ 60.307257 531.102894 0 ] (.:__span-3-12) [ 730 0 R /XYZ 60.307257 517.702542 0 ] (.:__span-3-2) [ 730 0 R /XYZ 60.307257 651.706062 0 ] (.:__span-3-3) [ 730 0 R /XYZ 60.307257 638.305710 0 ] (.:__span-3-4) [ 730 0 R /XYZ 60.307257 624.905358 0 ] (.:__span-3-5) [ 730 0 R /XYZ 60.307257 611.505006 0 ] (.:__span-3-6) [ 730 0 R /XYZ 60.307257 598.104654 0 ] (.:__span-3-7) [ 730 0 R /XYZ 60.307257 584.704302 0 ] (.:__span-3-8) [ 730 0 R /XYZ 60.307257 571.303950 0 ] (.:__span-3-9) [ 730 0 R /XYZ 60.307257 557.903598 0 ] (.:__span-4-1) [ 730 0 R /XYZ 60.307257 478.261590 0 ] (.:__span-4-10) [ 730 0 R /XYZ 60.307257 357.658422 0 ] (.:__span-4-11) [ 730 0 R /XYZ 60.307257 330.857718 0 ] (.:__span-4-12) [ 730 0 R /XYZ 60.307257 317.457366 0 ] (.:__span-4-13) [ 730 0 R /XYZ 60.307257 304.057014 0 ] (.:__span-4-14) [ 730 0 R /XYZ 60.307257 290.656662 0 ] (.:__span-4-15) [ 730 0 R /XYZ 60.307257 277.256310 0 ] (.:__span-4-16) [ 730 0 R /XYZ 60.307257 263.855958 0 ] (.:__span-4-17) [ 730 0 R /XYZ 60.307257 237.055254 0 ] (.:__span-4-18) [ 730 0 R /XYZ 60.307257 223.654902 0 ] (.:__span-4-19) [ 730 0 R /XYZ 60.307257 210.254550 0 ] (.:__span-4-2) [ 730 0 R /XYZ 60.307257 464.861238 0 ] (.:__span-4-20) [ 730 0 R /XYZ 60.307257 196.854198 0 ] (.:__span-4-21) [ 730 0 R /XYZ 60.307257 183.453846 0 ] (.:__span-4-22) [ 730 0 R /XYZ 60.307257 170.053494 0 ] (.:__span-4-23) [ 730 0 R /XYZ 60.307257 156.653142 0 ] (.:__span-4-24) [ 730 0 R /XYZ 60.307257 143.252790 0 ] (.:__span-4-25) [ 730 0 R /XYZ 60.307257 129.852438 0 ] (.:__span-4-26) [ 730 0 R /XYZ 60.307257 116.452086 0 ] (.:__span-4-27) [ 730 0 R /XYZ 60.307257 103.051734 0 ] (.:__span-4-28) [ 730 0 R /XYZ 60.307257 89.651382 0 ] (.:__span-4-29) [ 732 0 R /XYZ 60.307257 771.023622 0 ] (.:__span-4-3) [ 730 0 R /XYZ 60.307257 451.460886 0 ] (.:__span-4-30) [ 732 0 R /XYZ 60.307257 757.623270 0 ] (.:__span-4-31) [ 732 0 R /XYZ 60.307257 744.222918 0 ] (.:__span-4-32) [ 732 0 R /XYZ 60.307257 730.822566 0 ] (.:__span-4-33) [ 732 0 R /XYZ 60.307257 717.422214 0 ] (.:__span-4-34) [ 732 0 R /XYZ 60.307257 704.021862 0 ] (.:__span-4-35) [ 732 0 R /XYZ 60.307257 690.621510 0 ] (.:__span-4-36) [ 732 0 R /XYZ 60.307257 677.221158 0 ] (.:__span-4-37) [ 732 0 R /XYZ 60.307257 663.820806 0 ] (.:__span-4-4) [ 730 0 R /XYZ 60.307257 438.060534 0 ] (.:__span-4-5) [ 730 0 R /XYZ 60.307257 424.660182 0 ] (.:__span-4-6) [ 730 0 R /XYZ 60.307257 411.259830 0 ] (.:__span-4-7) [ 730 0 R /XYZ 60.307257 397.859478 0 ] (.:__span-4-8) [ 730 0 R /XYZ 60.307257 384.459126 0 ] (.:__span-4-9) [ 730 0 R /XYZ 60.307257 371.058774 0 ] (.:__span-5-1) [ 740 0 R /XYZ 60.307257 671.460194 0 ] (.:__span-5-10) [ 740 0 R /XYZ 60.307257 537.456674 0 ] (.:__span-5-11) [ 740 0 R /XYZ 60.307257 524.056322 0 ] (.:__span-5-12) [ 740 0 R /XYZ 60.307257 510.655970 0 ] (.:__span-5-13) [ 740 0 R /XYZ 60.307257 497.255618 0 ] (.:__span-5-14) [ 740 0 R /XYZ 60.307257 483.855266 0 ] (.:__span-5-15) [ 740 0 R /XYZ 60.307257 470.454914 0 ] (.:__span-5-16) [ 740 0 R /XYZ 60.307257 457.054562 0 ] (.:__span-5-17) [ 740 0 R /XYZ 60.307257 443.654210 0 ] (.:__span-5-18) [ 740 0 R /XYZ 60.307257 416.853506 0 ] (.:__span-5-19) [ 740 0 R /XYZ 60.307257 403.453154 0 ] (.:__span-5-2) [ 740 0 R /XYZ 60.307257 658.059842 0 ] (.:__span-5-20) [ 740 0 R /XYZ 60.307257 390.052802 0 ] (.:__span-5-21) [ 740 0 R /XYZ 60.307257 376.652450 0 ] (.:__span-5-22) [ 740 0 R /XYZ 60.307257 363.252098 0 ] (.:__span-5-23) [ 740 0 R /XYZ 60.307257 349.851746 0 ] (.:__span-5-24) [ 740 0 R /XYZ 60.307257 323.051042 0 ] (.:__span-5-25) [ 740 0 R /XYZ 60.307257 309.650690 0 ] (.:__span-5-26) [ 740 0 R /XYZ 60.307257 296.250338 0 ] (.:__span-5-27) [ 740 0 R /XYZ 60.307257 269.449634 0 ] (.:__span-5-28) [ 740 0 R /XYZ 60.307257 256.049282 0 ] (.:__span-5-29) [ 740 0 R /XYZ 60.307257 229.248578 0 ] (.:__span-5-3) [ 740 0 R /XYZ 60.307257 644.659490 0 ] (.:__span-5-30) [ 740 0 R /XYZ 60.307257 202.447874 0 ] (.:__span-5-31) [ 740 0 R /XYZ 60.307257 189.047522 0 ] (.:__span-5-32) [ 740 0 R /XYZ 60.307257 175.647170 0 ] (.:__span-5-33) [ 740 0 R /XYZ 60.307257 162.246818 0 ] (.:__span-5-34) [ 740 0 R /XYZ 60.307257 135.446114 0 ] (.:__span-5-35) [ 740 0 R /XYZ 60.307257 122.045762 0 ] (.:__span-5-36) [ 740 0 R /XYZ 60.307257 108.645410 0 ] (.:__span-5-37) [ 740 0 R /XYZ 60.307257 95.245058 0 ] (.:__span-5-38) [ 744 0 R /XYZ 60.307257 771.023622 0 ] (.:__span-5-39) [ 744 0 R /XYZ 60.307257 757.623270 0 ] (.:__span-5-4) [ 740 0 R /XYZ 60.307257 631.259138 0 ] (.:__span-5-40) [ 744 0 R /XYZ 60.307257 744.222918 0 ] (.:__span-5-41) [ 744 0 R /XYZ 60.307257 730.822566 0 ] (.:__span-5-42) [ 744 0 R /XYZ 60.307257 704.021862 0 ] (.:__span-5-43) [ 744 0 R /XYZ 60.307257 690.621510 0 ] (.:__span-5-44) [ 744 0 R /XYZ 60.307257 677.221158 0 ] (.:__span-5-45) [ 744 0 R /XYZ 60.307257 663.820806 0 ] (.:__span-5-46) [ 744 0 R /XYZ 60.307257 650.420454 0 ] (.:__span-5-47) [ 744 0 R /XYZ 60.307257 637.020102 0 ] (.:__span-5-48) [ 744 0 R /XYZ 60.307257 623.619750 0 ] (.:__span-5-49) [ 744 0 R /XYZ 60.307257 610.219398 0 ] (.:__span-5-5) [ 740 0 R /XYZ 60.307257 617.858786 0 ] (.:__span-5-50) [ 744 0 R /XYZ 60.307257 596.819046 0 ] (.:__span-5-51) [ 744 0 R /XYZ 60.307257 583.418694 0 ] (.:__span-5-52) [ 744 0 R /XYZ 60.307257 570.018342 0 ] (.:__span-5-53) [ 744 0 R /XYZ 60.307257 543.217638 0 ] (.:__span-5-54) [ 744 0 R /XYZ 60.307257 516.416934 0 ] (.:__span-5-55) [ 744 0 R /XYZ 60.307257 503.016582 0 ] (.:__span-5-56) [ 744 0 R /XYZ 60.307257 489.616230 0 ] (.:__span-5-57) [ 744 0 R /XYZ 60.307257 462.815526 0 ] (.:__span-5-58) [ 744 0 R /XYZ 60.307257 449.415174 0 ] (.:__span-5-59) [ 744 0 R /XYZ 60.307257 436.014822 0 ] (.:__span-5-6) [ 740 0 R /XYZ 60.307257 604.458434 0 ] (.:__span-5-60) [ 744 0 R /XYZ 60.307257 422.614470 0 ] (.:__span-5-61) [ 744 0 R /XYZ 60.307257 409.214118 0 ] (.:__span-5-62) [ 744 0 R /XYZ 60.307257 395.813766 0 ] (.:__span-5-7) [ 740 0 R /XYZ 60.307257 577.657730 0 ] (.:__span-5-8) [ 740 0 R /XYZ 60.307257 564.257378 0 ] (.:__span-5-9) [ 740 0 R /XYZ 60.307257 550.857026 0 ] (.:__span-6-1) [ 753 0 R /XYZ 60.307257 458.116602 0 ] (.:__span-6-10) [ 753 0 R /XYZ 60.307257 337.513434 0 ] (.:__span-6-100) [ 759 0 R /XYZ 60.307257 516.416934 0 ] (.:__span-6-101) [ 759 0 R /XYZ 60.307257 503.016582 0 ] (.:__span-6-102) [ 759 0 R /XYZ 60.307257 489.616230 0 ] (.:__span-6-103) [ 759 0 R /XYZ 60.307257 476.215878 0 ] (.:__span-6-104) [ 759 0 R /XYZ 60.307257 462.815526 0 ] (.:__span-6-105) [ 759 0 R /XYZ 60.307257 449.415174 0 ] (.:__span-6-106) [ 759 0 R /XYZ 60.307257 436.014822 0 ] (.:__span-6-107) [ 759 0 R /XYZ 60.307257 422.614470 0 ] (.:__span-6-108) [ 759 0 R /XYZ 60.307257 409.214118 0 ] (.:__span-6-109) [ 759 0 R /XYZ 60.307257 395.813766 0 ] (.:__span-6-11) [ 753 0 R /XYZ 60.307257 324.113082 0 ] (.:__span-6-110) [ 759 0 R /XYZ 60.307257 382.413414 0 ] (.:__span-6-111) [ 759 0 R /XYZ 60.307257 369.013062 0 ] (.:__span-6-112) [ 759 0 R /XYZ 60.307257 355.612710 0 ] (.:__span-6-113) [ 759 0 R /XYZ 60.307257 342.212358 0 ] (.:__span-6-114) [ 759 0 R /XYZ 60.307257 328.812006 0 ] (.:__span-6-115) [ 759 0 R /XYZ 60.307257 315.411654 0 ] (.:__span-6-116) [ 759 0 R /XYZ 60.307257 302.011302 0 ] (.:__span-6-117) [ 759 0 R /XYZ 60.307257 288.610950 0 ] (.:__span-6-118) [ 759 0 R /XYZ 60.307257 275.210598 0 ] (.:__span-6-119) [ 759 0 R /XYZ 60.307257 261.810246 0 ] (.:__span-6-12) [ 753 0 R /XYZ 60.307257 310.712730 0 ] (.:__span-6-120) [ 759 0 R /XYZ 60.307257 248.409894 0 ] (.:__span-6-121) [ 759 0 R /XYZ 60.307257 235.009542 0 ] (.:__span-6-122) [ 759 0 R /XYZ 60.307257 221.609190 0 ] (.:__span-6-123) [ 759 0 R /XYZ 60.307257 208.208838 0 ] (.:__span-6-124) [ 759 0 R /XYZ 60.307257 194.808486 0 ] (.:__span-6-125) [ 759 0 R /XYZ 60.307257 181.408134 0 ] (.:__span-6-126) [ 759 0 R /XYZ 60.307257 168.007782 0 ] (.:__span-6-127) [ 759 0 R /XYZ 60.307257 154.607430 0 ] (.:__span-6-128) [ 759 0 R /XYZ 60.307257 141.207078 0 ] (.:__span-6-129) [ 759 0 R /XYZ 60.307257 127.806726 0 ] (.:__span-6-13) [ 753 0 R /XYZ 60.307257 297.312378 0 ] (.:__span-6-130) [ 759 0 R /XYZ 60.307257 114.406374 0 ] (.:__span-6-131) [ 759 0 R /XYZ 60.307257 101.006022 0 ] (.:__span-6-132) [ 759 0 R /XYZ 60.307257 87.605670 0 ] (.:__span-6-133) [ 761 0 R /XYZ 60.307257 771.023622 0 ] (.:__span-6-134) [ 761 0 R /XYZ 60.307257 757.623270 0 ] (.:__span-6-135) [ 761 0 R /XYZ 60.307257 744.222918 0 ] (.:__span-6-136) [ 761 0 R /XYZ 60.307257 730.822566 0 ] (.:__span-6-137) [ 761 0 R /XYZ 60.307257 717.422214 0 ] (.:__span-6-138) [ 761 0 R /XYZ 60.307257 704.021862 0 ] (.:__span-6-139) [ 761 0 R /XYZ 60.307257 690.621510 0 ] (.:__span-6-14) [ 753 0 R /XYZ 60.307257 283.912026 0 ] (.:__span-6-140) [ 761 0 R /XYZ 60.307257 677.221158 0 ] (.:__span-6-141) [ 761 0 R /XYZ 60.307257 663.820806 0 ] (.:__span-6-142) [ 761 0 R /XYZ 60.307257 650.420454 0 ] (.:__span-6-143) [ 761 0 R /XYZ 60.307257 637.020102 0 ] (.:__span-6-144) [ 761 0 R /XYZ 60.307257 623.619750 0 ] (.:__span-6-145) [ 761 0 R /XYZ 60.307257 610.219398 0 ] (.:__span-6-146) [ 761 0 R /XYZ 60.307257 596.819046 0 ] (.:__span-6-147) [ 761 0 R /XYZ 60.307257 583.418694 0 ] (.:__span-6-148) [ 761 0 R /XYZ 60.307257 570.018342 0 ] (.:__span-6-149) [ 761 0 R /XYZ 60.307257 556.617990 0 ] (.:__span-6-15) [ 753 0 R /XYZ 60.307257 270.511674 0 ] (.:__span-6-150) [ 761 0 R /XYZ 60.307257 543.217638 0 ] (.:__span-6-151) [ 761 0 R /XYZ 60.307257 529.817286 0 ] (.:__span-6-152) [ 761 0 R /XYZ 60.307257 516.416934 0 ] (.:__span-6-153) [ 761 0 R /XYZ 60.307257 503.016582 0 ] (.:__span-6-154) [ 761 0 R /XYZ 60.307257 489.616230 0 ] (.:__span-6-155) [ 761 0 R /XYZ 60.307257 476.215878 0 ] (.:__span-6-156) [ 761 0 R /XYZ 60.307257 462.815526 0 ] (.:__span-6-157) [ 761 0 R /XYZ 60.307257 449.415174 0 ] (.:__span-6-158) [ 761 0 R /XYZ 60.307257 436.014822 0 ] (.:__span-6-159) [ 761 0 R /XYZ 60.307257 422.614470 0 ] (.:__span-6-16) [ 753 0 R /XYZ 60.307257 257.111322 0 ] (.:__span-6-160) [ 761 0 R /XYZ 60.307257 409.214118 0 ] (.:__span-6-161) [ 761 0 R /XYZ 60.307257 395.813766 0 ] (.:__span-6-162) [ 761 0 R /XYZ 60.307257 382.413414 0 ] (.:__span-6-163) [ 761 0 R /XYZ 60.307257 369.013062 0 ] (.:__span-6-17) [ 753 0 R /XYZ 60.307257 243.710970 0 ] (.:__span-6-18) [ 753 0 R /XYZ 60.307257 230.310618 0 ] (.:__span-6-19) [ 753 0 R /XYZ 60.307257 216.910266 0 ] (.:__span-6-2) [ 753 0 R /XYZ 60.307257 444.716250 0 ] (.:__span-6-20) [ 753 0 R /XYZ 60.307257 203.509914 0 ] (.:__span-6-21) [ 753 0 R /XYZ 60.307257 190.109562 0 ] (.:__span-6-22) [ 753 0 R /XYZ 60.307257 176.709210 0 ] (.:__span-6-23) [ 753 0 R /XYZ 60.307257 163.308858 0 ] (.:__span-6-24) [ 753 0 R /XYZ 60.307257 149.908506 0 ] (.:__span-6-25) [ 753 0 R /XYZ 60.307257 136.508154 0 ] (.:__span-6-26) [ 753 0 R /XYZ 60.307257 123.107802 0 ] (.:__span-6-27) [ 753 0 R /XYZ 60.307257 109.707450 0 ] (.:__span-6-28) [ 753 0 R /XYZ 60.307257 96.307098 0 ] (.:__span-6-29) [ 757 0 R /XYZ 60.307257 771.023622 0 ] (.:__span-6-3) [ 753 0 R /XYZ 60.307257 431.315898 0 ] (.:__span-6-30) [ 757 0 R /XYZ 60.307257 757.623270 0 ] (.:__span-6-31) [ 757 0 R /XYZ 60.307257 744.222918 0 ] (.:__span-6-32) [ 757 0 R /XYZ 60.307257 730.822566 0 ] (.:__span-6-33) [ 757 0 R /XYZ 60.307257 717.422214 0 ] (.:__span-6-34) [ 757 0 R /XYZ 60.307257 704.021862 0 ] (.:__span-6-35) [ 757 0 R /XYZ 60.307257 690.621510 0 ] (.:__span-6-36) [ 757 0 R /XYZ 60.307257 677.221158 0 ] (.:__span-6-37) [ 757 0 R /XYZ 60.307257 663.820806 0 ] (.:__span-6-38) [ 757 0 R /XYZ 60.307257 650.420454 0 ] (.:__span-6-39) [ 757 0 R /XYZ 60.307257 637.020102 0 ] (.:__span-6-4) [ 753 0 R /XYZ 60.307257 417.915546 0 ] (.:__span-6-40) [ 757 0 R /XYZ 60.307257 623.619750 0 ] (.:__span-6-41) [ 757 0 R /XYZ 60.307257 610.219398 0 ] (.:__span-6-42) [ 757 0 R /XYZ 60.307257 596.819046 0 ] (.:__span-6-43) [ 757 0 R /XYZ 60.307257 583.418694 0 ] (.:__span-6-44) [ 757 0 R /XYZ 60.307257 570.018342 0 ] (.:__span-6-45) [ 757 0 R /XYZ 60.307257 556.617990 0 ] (.:__span-6-46) [ 757 0 R /XYZ 60.307257 543.217638 0 ] (.:__span-6-47) [ 757 0 R /XYZ 60.307257 529.817286 0 ] (.:__span-6-48) [ 757 0 R /XYZ 60.307257 516.416934 0 ] (.:__span-6-49) [ 757 0 R /XYZ 60.307257 503.016582 0 ] (.:__span-6-5) [ 753 0 R /XYZ 60.307257 404.515194 0 ] (.:__span-6-50) [ 757 0 R /XYZ 60.307257 489.616230 0 ] (.:__span-6-51) [ 757 0 R /XYZ 60.307257 476.215878 0 ] (.:__span-6-52) [ 757 0 R /XYZ 60.307257 462.815526 0 ] (.:__span-6-53) [ 757 0 R /XYZ 60.307257 449.415174 0 ] (.:__span-6-54) [ 757 0 R /XYZ 60.307257 436.014822 0 ] (.:__span-6-55) [ 757 0 R /XYZ 60.307257 422.614470 0 ] (.:__span-6-56) [ 757 0 R /XYZ 60.307257 409.214118 0 ] (.:__span-6-57) [ 757 0 R /XYZ 60.307257 395.813766 0 ] (.:__span-6-58) [ 757 0 R /XYZ 60.307257 382.413414 0 ] (.:__span-6-59) [ 757 0 R /XYZ 60.307257 369.013062 0 ] (.:__span-6-6) [ 753 0 R /XYZ 60.307257 391.114842 0 ] (.:__span-6-60) [ 757 0 R /XYZ 60.307257 355.612710 0 ] (.:__span-6-61) [ 757 0 R /XYZ 60.307257 342.212358 0 ] (.:__span-6-62) [ 757 0 R /XYZ 60.307257 328.812006 0 ] (.:__span-6-63) [ 757 0 R /XYZ 60.307257 315.411654 0 ] (.:__span-6-64) [ 757 0 R /XYZ 60.307257 302.011302 0 ] (.:__span-6-65) [ 757 0 R /XYZ 60.307257 288.610950 0 ] (.:__span-6-66) [ 757 0 R /XYZ 60.307257 275.210598 0 ] (.:__span-6-67) [ 757 0 R /XYZ 60.307257 261.810246 0 ] (.:__span-6-68) [ 757 0 R /XYZ 60.307257 248.409894 0 ] (.:__span-6-69) [ 757 0 R /XYZ 60.307257 235.009542 0 ] (.:__span-6-7) [ 753 0 R /XYZ 60.307257 377.714490 0 ] (.:__span-6-70) [ 757 0 R /XYZ 60.307257 221.609190 0 ] (.:__span-6-71) [ 757 0 R /XYZ 60.307257 208.208838 0 ] (.:__span-6-72) [ 757 0 R /XYZ 60.307257 194.808486 0 ] (.:__span-6-73) [ 757 0 R /XYZ 60.307257 181.408134 0 ] (.:__span-6-74) [ 757 0 R /XYZ 60.307257 168.007782 0 ] (.:__span-6-75) [ 757 0 R /XYZ 60.307257 154.607430 0 ] (.:__span-6-76) [ 757 0 R /XYZ 60.307257 141.207078 0 ] (.:__span-6-77) [ 757 0 R /XYZ 60.307257 127.806726 0 ] (.:__span-6-78) [ 757 0 R /XYZ 60.307257 114.406374 0 ] (.:__span-6-79) [ 757 0 R /XYZ 60.307257 101.006022 0 ] (.:__span-6-8) [ 753 0 R /XYZ 60.307257 364.314138 0 ] (.:__span-6-80) [ 757 0 R /XYZ 60.307257 87.605670 0 ] (.:__span-6-81) [ 759 0 R /XYZ 60.307257 771.023622 0 ] (.:__span-6-82) [ 759 0 R /XYZ 60.307257 757.623270 0 ] (.:__span-6-83) [ 759 0 R /XYZ 60.307257 744.222918 0 ] (.:__span-6-84) [ 759 0 R /XYZ 60.307257 730.822566 0 ] (.:__span-6-85) [ 759 0 R /XYZ 60.307257 717.422214 0 ] (.:__span-6-86) [ 759 0 R /XYZ 60.307257 704.021862 0 ] (.:__span-6-87) [ 759 0 R /XYZ 60.307257 690.621510 0 ] (.:__span-6-88) [ 759 0 R /XYZ 60.307257 677.221158 0 ] (.:__span-6-89) [ 759 0 R /XYZ 60.307257 663.820806 0 ] (.:__span-6-9) [ 753 0 R /XYZ 60.307257 350.913786 0 ] (.:__span-6-90) [ 759 0 R /XYZ 60.307257 650.420454 0 ] (.:__span-6-91) [ 759 0 R /XYZ 60.307257 637.020102 0 ] (.:__span-6-92) [ 759 0 R /XYZ 60.307257 623.619750 0 ] (.:__span-6-93) [ 759 0 R /XYZ 60.307257 610.219398 0 ] (.:__span-6-94) [ 759 0 R /XYZ 60.307257 596.819046 0 ] (.:__span-6-95) [ 759 0 R /XYZ 60.307257 583.418694 0 ] (.:__span-6-96) [ 759 0 R /XYZ 60.307257 570.018342 0 ] (.:__span-6-97) [ 759 0 R /XYZ 60.307257 556.617990 0 ] (.:__span-6-98) [ 759 0 R /XYZ 60.307257 543.217638 0 ] (.:__span-6-99) [ 759 0 R /XYZ 60.307257 529.817286 0 ] (.:__span-7-1) [ 994 0 R /XYZ 60.307257 389.399802 0 ] (.:__span-7-2) [ 994 0 R /XYZ 60.307257 375.999450 0 ] (.:__span-7-3) [ 994 0 R /XYZ 60.307257 362.599098 0 ] (.:__span-7-4) [ 994 0 R /XYZ 60.307257 349.198746 0 ] (.:__span-7-5) [ 994 0 R /XYZ 60.307257 335.798394 0 ] (.:__span-7-6) [ 994 0 R /XYZ 60.307257 322.398042 0 ] (.:__span-7-7) [ 994 0 R /XYZ 60.307257 308.997690 0 ] (.:__span-8-1) [ 996 0 R /XYZ 60.307257 342.189402 0 ] (.:__span-8-2) [ 996 0 R /XYZ 60.307257 328.789050 0 ] (.:__span-8-3) [ 996 0 R /XYZ 60.307257 315.388698 0 ] (.:__span-8-4) [ 996 0 R /XYZ 60.307257 301.988346 0 ] (.:__span-8-5) [ 996 0 R /XYZ 60.307257 288.587994 0 ] (.:__span-8-6) [ 996 0 R /XYZ 60.307257 275.187642 0 ] (.:__span-9-1) [ 1001 0 R /XYZ 60.307257 413.414922 0 ] (.:__span-9-2) [ 1001 0 R /XYZ 60.307257 400.014570 0 ] (.:__span-9-3) [ 1001 0 R /XYZ 60.307257 386.614218 0 ] (.:__span-9-4) [ 1001 0 R /XYZ 60.307257 373.213866 0 ] (.:__span-9-5) [ 1001 0 R /XYZ 60.307257 359.813514 0 ] (.:__span-9-6) [ 1001 0 R /XYZ 60.307257 346.413162 0 ] (.:__span-9-7) [ 1001 0 R /XYZ 60.307257 333.012810 0 ] (.:abstract) [ 587 0 R /XYZ 39.386457 771.023622 0 ] (.:affichage-calcule) [ 1004 0 R /XYZ 42.836457 528.276822 0 ] (.:affichage-des-donnees) [ 1001 0 R /XYZ 39.386457 677.183622 0 ] (.:affichage-direct) [ 1001 0 R /XYZ 42.836457 535.289622 0 ] (.:affichage-hybride) [ 1004 0 R /XYZ 42.836457 479.480022 0 ] (.:affichage-predictif) [ 1026 0 R /XYZ 42.836457 300.764334 0 ] (.:affichage-totalement-calcule) [ 1021 0 R /XYZ 42.836457 658.415622 0 ] (.:ameliorations-futures) [ 1067 0 R /XYZ 39.386457 261.472422 0 ] (.:analyse-fonctionnelle) [ 628 0 R /XYZ 39.386457 335.606022 0 ] (.:analyse-organique) [ 628 0 R /XYZ 39.386457 246.262122 0 ] (.:base-de-donnee) [ 988 0 R /XYZ 42.836457 353.394469 0 ] (.:bilan) [ 1071 0 R /XYZ 39.386457 202.955322 0 ] (.:browser-headless) [ 1039 0 R /XYZ 39.386457 771.023622 0 ] (.:cahier-des-charges) [ 589 0 R /XYZ 39.386457 550.499622 0 ] (.:calibration) [ 732 0 R /XYZ 42.836457 566.026554 0 ] (.:cas-dutilisation) [ 599 0 R /XYZ 39.386457 412.926066 0 ] (.:chiffres) [ 840 0 R /XYZ 42.836457 460.413222 0 ] (.:comment-ca-cest-passe) [ 1028 0 R /XYZ 39.386457 287.551722 0 ] (.:comment-caurait-du-se-passer) [ 1037 0 R /XYZ 39.386457 707.212422 0 ] (.:comment-faire) [ 710 0 R /XYZ 42.836457 735.309222 0 ] (.:conclusion) [ 1071 0 R /XYZ 39.386457 258.516822 0 ] (.:configurationtoolcs) [ 1077 0 R /XYZ 42.836457 511.829622 0 ] (.:controler-le-navigateur) [ 717 0 R /XYZ 42.836457 412.198422 0 ] (.:controleurs) [ 1077 0 R /XYZ 39.386457 589.912422 0 ] (.:court-terme) [ 1069 0 R /XYZ 39.386457 771.023622 0 ] (.:csharp) [ 662 0 R /XYZ 42.836457 487.571622 0 ] (.:datawrappercs) [ 1077 0 R /XYZ 42.836457 274.359222 0 ] (.:description-du-besoin) [ 587 0 R /XYZ 39.386457 343.911222 0 ] (.:differences-sur-le-cahier-des-charges) [ 603 0 R /XYZ 39.386457 368.746422 0 ] (.:difficultes-techniques) [ 603 0 R /XYZ 39.386457 638.709222 0 ] (.:driverdatacs) [ 1087 0 R /XYZ 42.836457 677.926422 0 ] (.:driverdrswindowcs) [ 1079 0 R /XYZ 42.836457 119.468022 0 ] (.:drivergaptoleaderwindowcs) [ 1081 0 R /XYZ 42.836457 680.882022 0 ] (.:driverlaptimewindowcs) [ 1081 0 R /XYZ 42.836457 541.943622 0 ] (.:drivernamewindowcs) [ 1081 0 R /XYZ 42.836457 403.005222 0 ] (.:driverpositionwindowcs) [ 1081 0 R /XYZ 42.836457 273.450822 0 ] (.:driversectorwindowcs) [ 1081 0 R /XYZ 42.836457 173.925222 0 ] (.:drivertyreswindowcs) [ 1083 0 R /XYZ 42.836457 771.023622 0 ] (.:drs) [ 930 0 R /XYZ 42.836457 584.282022 0 ] (.:dt) [ 620 0 R /XYZ 42.836457 404.984502 0 ] (.:dt1-creation-du-poster-1) [ 620 0 R /XYZ 42.836457 341.173302 0 ] (.:dt2-documentation-analyse-de-lexistant-2) [ 620 0 R /XYZ 42.836457 225.937782 0 ] (.:dt3-documentation-analyse-organique-5) [ 620 0 R /XYZ 42.836457 140.731062 0 ] (.:dt4-documentation-analyse-fonctionnelle-2) [ 622 0 R /XYZ 42.836457 692.198022 0 ] (.:dt5-documentation-tests-1) [ 622 0 R /XYZ 42.836457 552.564102 0 ] (.:dt6-documentation-reste-2) [ 622 0 R /XYZ 42.836457 476.741382 0 ] (.:ethique-du-projet) [ 1058 0 R /XYZ 39.386457 151.086822 0 ] (.:f1tvemulatorcs) [ 1083 0 R /XYZ 42.836457 592.672422 0 ] (.:figma) [ 640 0 R /XYZ 42.836457 270.006822 0 ] (.:filtres-et-methodes-sur-les-images) [ 930 0 R /XYZ 42.836457 523.473702 0 ] (.:filtres-et-traitement) [ 797 0 R /XYZ 42.836457 237.136277 0 ] (.:firefox) [ 672 0 R /XYZ 42.836457 414.376422 0 ] (.:fonctionnement-general) [ 679 0 R /XYZ 39.386457 420.006822 0 ] (.:fonctionnement-general_1) [ 763 0 R /XYZ 42.836457 771.023622 0 ] (.:form1cs) [ 1077 0 R /XYZ 42.836457 771.023622 0 ] (.:glossaire) [ 1087 0 R /XYZ 39.386457 387.960822 0 ] (.:introduction) [ 581 0 R /XYZ 39.386457 723.165222 0 ] (.:lecons) [ 1037 0 R /XYZ 39.386457 398.338422 0 ] (.:les-briques-principales) [ 679 0 R /XYZ 42.836457 311.895222 0 ] (.:les-chiffres-2) [ 864 0 R /XYZ 42.836457 569.267622 0 ] (.:liste-des-pilotes) [ 734 0 R /XYZ 42.836457 771.023622 0 ] (.:long-terme) [ 1071 0 R /XYZ 39.386457 771.023622 0 ] (.:materialmkdocsmarkdown) [ 640 0 R /XYZ 42.836457 771.023622 0 ] (.:modeles) [ 1079 0 R /XYZ 39.386457 329.865222 0 ] (.:notes-de-code) [ 1075 0 R /XYZ 39.386457 608.680422 0 ] (.:ocr) [ 682 0 R /XYZ 42.836457 95.795299 0 ] (.:ocr_1) [ 761 0 R /XYZ 39.386457 303.179610 0 ] (.:ocr_2) [ 1039 0 R /XYZ 39.386457 353.295222 0 ] (.:ocrimagecs) [ 1083 0 R /XYZ 42.836457 167.522022 0 ] (.:optimisation-du-programme) [ 1041 0 R /XYZ 39.386457 463.088022 0 ] (.:outils-utilises) [ 628 0 R /XYZ 39.386457 190.700622 0 ] (.:petit-point-resolution) [ 944 0 R /XYZ 42.836457 371.265222 0 ] (.:planning-effectif-et-differences) [ 626 0 R /XYZ 39.386457 517.843302 0 ] (.:planning-previsionnel) [ 616 0 R /XYZ 39.386457 268.716368 0 ] (.:pneus) [ 864 0 R /XYZ 42.836457 523.473702 0 ] (.:projet) [ 589 0 R /XYZ 39.386457 435.818922 0 ] (.:pt) [ 620 0 R /XYZ 42.836457 580.332822 0 ] (.:pt1-preparation-au-travail-de-diplome-2) [ 620 0 R /XYZ 42.836457 531.536022 0 ] (.:pt1-programmation-recuperation-des-images-3) [ 622 0 R /XYZ 42.836457 310.777062 0 ] (.:pt2-programmation-ocr-5) [ 624 0 R /XYZ 42.836457 771.023622 0 ] (.:pt3-programmation-stockage-et-modele-5) [ 624 0 R /XYZ 42.836457 625.759302 0 ] (.:pt4-programmation-vue-de-lapp-5) [ 624 0 R /XYZ 42.836457 495.509382 0 ] (.:pt5-programmation-mise-en-commun-3) [ 624 0 R /XYZ 42.836457 365.259462 0 ] (.:pt_1) [ 622 0 R /XYZ 42.836457 374.588262 0 ] (.:python) [ 667 0 R /XYZ 42.836457 551.382822 0 ] (.:quand-remplir-la-base) [ 992 0 R /XYZ 42.836457 241.198422 0 ] (.:quand-un-pilote-a-fait-un-arret-aux-stands) [ 996 0 R /XYZ 42.836457 731.610822 0 ] (.:quand-un-pilote-a-fini-un-tour) [ 994 0 R /XYZ 42.836457 707.212422 0 ] (.:rapport-track-trends-v10) [ 575 0 R /XYZ 39.386457 757.223622 0 ] (.:readercs) [ 1079 0 R /XYZ 42.836457 705.280422 0 ] (.:realisation) [ 591 0 R /XYZ 39.386457 771.023622 0 ] (.:recuperation-de-cookies-a-linsu-de-lutilisateur) [ 1060 0 R /XYZ 39.386457 284.792022 0 ] (.:recuperation-des-images) [ 701 0 R /XYZ 39.386457 238.012422 0 ] (.:recuperation-dimages) [ 679 0 R /XYZ 42.836457 248.084022 0 ] (.:recuperer-les-cookies) [ 724 0 R /XYZ 42.836457 409.684422 0 ] (.:resume) [ 581 0 R /XYZ 39.386457 667.603722 0 ] (.:resume-des-difficultes-techniques) [ 1037 0 R /XYZ 39.386457 263.068422 0 ] (.:resume-des-epreuves) [ 1073 0 R /XYZ 39.386457 420.062022 0 ] (.:resume-du-fonctionnement-general) [ 692 0 R /XYZ 42.836457 187.703299 0 ] (.:selenium) [ 650 0 R /XYZ 42.836457 653.528022 0 ] (.:settingscs) [ 1075 0 R /XYZ 42.836457 376.504122 0 ] (.:simuler-un-navigateur) [ 712 0 R /XYZ 42.836457 771.023622 0 ] (.:sqlitestoragecs) [ 1085 0 R /XYZ 42.836457 522.292422 0 ] (.:stockage) [ 753 0 R /XYZ 42.836457 646.430022 0 ] (.:stockage-des-donnees) [ 982 0 R /XYZ 39.386457 572.502822 0 ] (.:stockage_1) [ 1041 0 R /XYZ 39.386457 637.770822 0 ] (.:structures) [ 1087 0 R /XYZ 39.386457 771.023622 0 ] (.:taches) [ 620 0 R /XYZ 39.386457 771.023622 0 ] (.:technologies-utilisees) [ 650 0 R /XYZ 39.386457 771.023622 0 ] (.:tesseract) [ 679 0 R /XYZ 42.836457 596.426022 0 ] (.:tests) [ 1028 0 R /XYZ 39.386457 490.442022 0 ] (.:texte) [ 819 0 R /XYZ 42.836457 369.234822 0 ] (.:traitement-des-donnees) [ 970 0 R /XYZ 39.386457 195.312822 0 ] (.:traitement-et-affichage) [ 687 0 R /XYZ 42.836457 122.598958 0 ] (.:tt) [ 624 0 R /XYZ 42.836457 238.707942 0 ] (.:tt1-tests-ocr-2) [ 624 0 R /XYZ 42.836457 174.896742 0 ] (.:tt2-tests-finaux-2) [ 626 0 R /XYZ 42.836457 662.169222 0 ] (.:utilisation-abusive-de-la-f1tv) [ 1060 0 R /XYZ 39.386457 697.828422 0 ] (.:utilisation-de-chat-gpt) [ 1062 0 R /XYZ 39.386457 421.000422 0 ] (.:visual-studio-2022) [ 628 0 R /XYZ 42.836457 163.346622 0 ] (.:visual-studio-code) [ 631 0 R /XYZ 42.836457 298.274022 0 ] (.:vues) [ 1075 0 R /XYZ 39.386457 454.586922 0 ] (.:windowcs) [ 1085 0 R /XYZ 42.836457 343.941222 0 ] (.:windows-pilotes) [ 744 0 R /XYZ 42.836457 363.762714 0 ] (.:zone-principale) [ 734 0 R /XYZ 42.836457 640.773702 0 ] (.:zonecs) [ 1079 0 R /XYZ 42.836457 551.327622 0 ] (.:zones-pilotes) [ 734 0 R /XYZ 42.836457 316.153201 0 ] (CahierDesCharges/:) [ 1093 0 R /XYZ 39.386457 771.023622 0 ] (CahierDesCharges/:cahier-des-charges) [ 1093 0 R /XYZ 39.386457 757.223622 0 ] (CahierDesCharges/:cas-dutilisation) [ 1114 0 R /XYZ 39.386457 771.023622 0 ] (CahierDesCharges/:contexte) [ 1093 0 R /XYZ 39.386457 669.390822 0 ] (CahierDesCharges/:difficultes-techniques) [ 1116 0 R /XYZ 39.386457 771.023622 0 ] (CahierDesCharges/:projet) [ 1098 0 R /XYZ 39.386457 124.199039 0 ] (CahierDesCharges/:realisation) [ 1102 0 R /XYZ 39.386457 436.953222 0 ] (Code/ConfigurationTool/:) [ 1880 0 R /XYZ 39.386457 707.865222 0 ] (Code/ConfigurationTool/:__span-0-1) [ 1880 0 R /XYZ 60.307257 667.937022 0 ] (Code/ConfigurationTool/:__span-0-10) [ 1880 0 R /XYZ 60.307257 533.933502 0 ] (Code/ConfigurationTool/:__span-0-100) [ 1884 0 R /XYZ 60.307257 637.020102 0 ] (Code/ConfigurationTool/:__span-0-101) [ 1884 0 R /XYZ 60.307257 623.619750 0 ] (Code/ConfigurationTool/:__span-0-102) [ 1884 0 R /XYZ 60.307257 610.219398 0 ] (Code/ConfigurationTool/:__span-0-103) [ 1884 0 R /XYZ 60.307257 596.819046 0 ] (Code/ConfigurationTool/:__span-0-104) [ 1884 0 R /XYZ 60.307257 583.418694 0 ] (Code/ConfigurationTool/:__span-0-105) [ 1884 0 R /XYZ 60.307257 570.018342 0 ] (Code/ConfigurationTool/:__span-0-106) [ 1884 0 R /XYZ 60.307257 556.617990 0 ] (Code/ConfigurationTool/:__span-0-107) [ 1884 0 R /XYZ 60.307257 543.217638 0 ] (Code/ConfigurationTool/:__span-0-108) [ 1884 0 R /XYZ 60.307257 529.817286 0 ] (Code/ConfigurationTool/:__span-0-109) [ 1884 0 R /XYZ 60.307257 516.416934 0 ] (Code/ConfigurationTool/:__span-0-11) [ 1880 0 R /XYZ 60.307257 520.533150 0 ] (Code/ConfigurationTool/:__span-0-110) [ 1884 0 R /XYZ 60.307257 503.016582 0 ] (Code/ConfigurationTool/:__span-0-111) [ 1884 0 R /XYZ 60.307257 489.616230 0 ] (Code/ConfigurationTool/:__span-0-112) [ 1884 0 R /XYZ 60.307257 476.215878 0 ] (Code/ConfigurationTool/:__span-0-113) [ 1884 0 R /XYZ 60.307257 462.815526 0 ] (Code/ConfigurationTool/:__span-0-114) [ 1884 0 R /XYZ 60.307257 449.415174 0 ] (Code/ConfigurationTool/:__span-0-115) [ 1884 0 R /XYZ 60.307257 436.014822 0 ] (Code/ConfigurationTool/:__span-0-116) [ 1884 0 R /XYZ 60.307257 422.614470 0 ] (Code/ConfigurationTool/:__span-0-117) [ 1884 0 R /XYZ 60.307257 409.214118 0 ] (Code/ConfigurationTool/:__span-0-118) [ 1884 0 R /XYZ 60.307257 395.813766 0 ] (Code/ConfigurationTool/:__span-0-119) [ 1884 0 R /XYZ 60.307257 382.413414 0 ] (Code/ConfigurationTool/:__span-0-12) [ 1880 0 R /XYZ 60.307257 507.132798 0 ] (Code/ConfigurationTool/:__span-0-120) [ 1884 0 R /XYZ 60.307257 369.013062 0 ] (Code/ConfigurationTool/:__span-0-121) [ 1884 0 R /XYZ 60.307257 355.612710 0 ] (Code/ConfigurationTool/:__span-0-122) [ 1884 0 R /XYZ 60.307257 342.212358 0 ] (Code/ConfigurationTool/:__span-0-123) [ 1884 0 R /XYZ 60.307257 328.812006 0 ] (Code/ConfigurationTool/:__span-0-124) [ 1884 0 R /XYZ 60.307257 315.411654 0 ] (Code/ConfigurationTool/:__span-0-125) [ 1884 0 R /XYZ 60.307257 302.011302 0 ] (Code/ConfigurationTool/:__span-0-126) [ 1884 0 R /XYZ 60.307257 288.610950 0 ] (Code/ConfigurationTool/:__span-0-127) [ 1884 0 R /XYZ 60.307257 275.210598 0 ] (Code/ConfigurationTool/:__span-0-128) [ 1884 0 R /XYZ 60.307257 261.810246 0 ] (Code/ConfigurationTool/:__span-0-129) [ 1884 0 R /XYZ 60.307257 248.409894 0 ] (Code/ConfigurationTool/:__span-0-13) [ 1880 0 R /XYZ 60.307257 493.732446 0 ] (Code/ConfigurationTool/:__span-0-130) [ 1884 0 R /XYZ 60.307257 235.009542 0 ] (Code/ConfigurationTool/:__span-0-131) [ 1884 0 R /XYZ 60.307257 221.609190 0 ] (Code/ConfigurationTool/:__span-0-132) [ 1884 0 R /XYZ 60.307257 208.208838 0 ] (Code/ConfigurationTool/:__span-0-133) [ 1884 0 R /XYZ 60.307257 194.808486 0 ] (Code/ConfigurationTool/:__span-0-134) [ 1884 0 R /XYZ 60.307257 181.408134 0 ] (Code/ConfigurationTool/:__span-0-135) [ 1884 0 R /XYZ 60.307257 168.007782 0 ] (Code/ConfigurationTool/:__span-0-136) [ 1884 0 R /XYZ 60.307257 154.607430 0 ] (Code/ConfigurationTool/:__span-0-137) [ 1884 0 R /XYZ 60.307257 141.207078 0 ] (Code/ConfigurationTool/:__span-0-138) [ 1884 0 R /XYZ 60.307257 127.806726 0 ] (Code/ConfigurationTool/:__span-0-139) [ 1884 0 R /XYZ 60.307257 114.406374 0 ] (Code/ConfigurationTool/:__span-0-14) [ 1880 0 R /XYZ 60.307257 480.332094 0 ] (Code/ConfigurationTool/:__span-0-140) [ 1884 0 R /XYZ 60.307257 101.006022 0 ] (Code/ConfigurationTool/:__span-0-141) [ 1884 0 R /XYZ 60.307257 87.605670 0 ] (Code/ConfigurationTool/:__span-0-142) [ 1886 0 R /XYZ 60.307257 757.623270 0 ] (Code/ConfigurationTool/:__span-0-143) [ 1886 0 R /XYZ 60.307257 744.222918 0 ] (Code/ConfigurationTool/:__span-0-144) [ 1886 0 R /XYZ 60.307257 730.822566 0 ] (Code/ConfigurationTool/:__span-0-145) [ 1886 0 R /XYZ 60.307257 717.422214 0 ] (Code/ConfigurationTool/:__span-0-146) [ 1886 0 R /XYZ 60.307257 704.021862 0 ] (Code/ConfigurationTool/:__span-0-147) [ 1886 0 R /XYZ 60.307257 690.621510 0 ] (Code/ConfigurationTool/:__span-0-148) [ 1886 0 R /XYZ 60.307257 677.221158 0 ] (Code/ConfigurationTool/:__span-0-149) [ 1886 0 R /XYZ 60.307257 663.820806 0 ] (Code/ConfigurationTool/:__span-0-15) [ 1880 0 R /XYZ 60.307257 466.931742 0 ] (Code/ConfigurationTool/:__span-0-150) [ 1886 0 R /XYZ 60.307257 650.420454 0 ] (Code/ConfigurationTool/:__span-0-151) [ 1886 0 R /XYZ 60.307257 637.020102 0 ] (Code/ConfigurationTool/:__span-0-152) [ 1886 0 R /XYZ 60.307257 623.619750 0 ] (Code/ConfigurationTool/:__span-0-153) [ 1886 0 R /XYZ 60.307257 610.219398 0 ] (Code/ConfigurationTool/:__span-0-154) [ 1886 0 R /XYZ 60.307257 596.819046 0 ] (Code/ConfigurationTool/:__span-0-155) [ 1886 0 R /XYZ 60.307257 583.418694 0 ] (Code/ConfigurationTool/:__span-0-156) [ 1886 0 R /XYZ 60.307257 570.018342 0 ] (Code/ConfigurationTool/:__span-0-157) [ 1886 0 R /XYZ 60.307257 543.217638 0 ] (Code/ConfigurationTool/:__span-0-158) [ 1886 0 R /XYZ 60.307257 529.817286 0 ] (Code/ConfigurationTool/:__span-0-159) [ 1886 0 R /XYZ 60.307257 516.416934 0 ] (Code/ConfigurationTool/:__span-0-16) [ 1880 0 R /XYZ 60.307257 453.531390 0 ] (Code/ConfigurationTool/:__span-0-160) [ 1886 0 R /XYZ 60.307257 503.016582 0 ] (Code/ConfigurationTool/:__span-0-161) [ 1886 0 R /XYZ 60.307257 476.215878 0 ] (Code/ConfigurationTool/:__span-0-162) [ 1886 0 R /XYZ 60.307257 462.815526 0 ] (Code/ConfigurationTool/:__span-0-163) [ 1886 0 R /XYZ 60.307257 449.415174 0 ] (Code/ConfigurationTool/:__span-0-164) [ 1886 0 R /XYZ 60.307257 436.014822 0 ] (Code/ConfigurationTool/:__span-0-165) [ 1886 0 R /XYZ 60.307257 409.214118 0 ] (Code/ConfigurationTool/:__span-0-166) [ 1886 0 R /XYZ 60.307257 395.813766 0 ] (Code/ConfigurationTool/:__span-0-167) [ 1886 0 R /XYZ 60.307257 382.413414 0 ] (Code/ConfigurationTool/:__span-0-168) [ 1886 0 R /XYZ 60.307257 369.013062 0 ] (Code/ConfigurationTool/:__span-0-169) [ 1886 0 R /XYZ 60.307257 342.212358 0 ] (Code/ConfigurationTool/:__span-0-17) [ 1880 0 R /XYZ 60.307257 440.131038 0 ] (Code/ConfigurationTool/:__span-0-170) [ 1886 0 R /XYZ 60.307257 328.812006 0 ] (Code/ConfigurationTool/:__span-0-171) [ 1886 0 R /XYZ 60.307257 315.411654 0 ] (Code/ConfigurationTool/:__span-0-172) [ 1886 0 R /XYZ 60.307257 302.011302 0 ] (Code/ConfigurationTool/:__span-0-173) [ 1886 0 R /XYZ 60.307257 275.210598 0 ] (Code/ConfigurationTool/:__span-0-174) [ 1886 0 R /XYZ 60.307257 261.810246 0 ] (Code/ConfigurationTool/:__span-0-175) [ 1886 0 R /XYZ 60.307257 248.409894 0 ] (Code/ConfigurationTool/:__span-0-176) [ 1886 0 R /XYZ 60.307257 235.009542 0 ] (Code/ConfigurationTool/:__span-0-177) [ 1886 0 R /XYZ 60.307257 208.208838 0 ] (Code/ConfigurationTool/:__span-0-178) [ 1886 0 R /XYZ 60.307257 194.808486 0 ] (Code/ConfigurationTool/:__span-0-179) [ 1886 0 R /XYZ 60.307257 181.408134 0 ] (Code/ConfigurationTool/:__span-0-18) [ 1880 0 R /XYZ 60.307257 426.730686 0 ] (Code/ConfigurationTool/:__span-0-180) [ 1886 0 R /XYZ 60.307257 168.007782 0 ] (Code/ConfigurationTool/:__span-0-181) [ 1886 0 R /XYZ 60.307257 141.207078 0 ] (Code/ConfigurationTool/:__span-0-182) [ 1886 0 R /XYZ 60.307257 127.806726 0 ] (Code/ConfigurationTool/:__span-0-183) [ 1886 0 R /XYZ 60.307257 114.406374 0 ] (Code/ConfigurationTool/:__span-0-184) [ 1886 0 R /XYZ 60.307257 101.006022 0 ] (Code/ConfigurationTool/:__span-0-185) [ 1888 0 R /XYZ 60.307257 771.023622 0 ] (Code/ConfigurationTool/:__span-0-186) [ 1888 0 R /XYZ 60.307257 757.623270 0 ] (Code/ConfigurationTool/:__span-0-187) [ 1888 0 R /XYZ 60.307257 744.222918 0 ] (Code/ConfigurationTool/:__span-0-188) [ 1888 0 R /XYZ 60.307257 717.422214 0 ] (Code/ConfigurationTool/:__span-0-189) [ 1888 0 R /XYZ 60.307257 690.621510 0 ] (Code/ConfigurationTool/:__span-0-19) [ 1880 0 R /XYZ 60.307257 413.330334 0 ] (Code/ConfigurationTool/:__span-0-190) [ 1888 0 R /XYZ 60.307257 677.221158 0 ] (Code/ConfigurationTool/:__span-0-191) [ 1888 0 R /XYZ 60.307257 663.820806 0 ] (Code/ConfigurationTool/:__span-0-192) [ 1888 0 R /XYZ 60.307257 650.420454 0 ] (Code/ConfigurationTool/:__span-0-193) [ 1888 0 R /XYZ 60.307257 637.020102 0 ] (Code/ConfigurationTool/:__span-0-194) [ 1888 0 R /XYZ 60.307257 623.619750 0 ] (Code/ConfigurationTool/:__span-0-195) [ 1888 0 R /XYZ 60.307257 610.219398 0 ] (Code/ConfigurationTool/:__span-0-196) [ 1888 0 R /XYZ 60.307257 583.418694 0 ] (Code/ConfigurationTool/:__span-0-197) [ 1888 0 R /XYZ 60.307257 556.617990 0 ] (Code/ConfigurationTool/:__span-0-198) [ 1888 0 R /XYZ 60.307257 543.217638 0 ] (Code/ConfigurationTool/:__span-0-199) [ 1888 0 R /XYZ 60.307257 529.817286 0 ] (Code/ConfigurationTool/:__span-0-2) [ 1880 0 R /XYZ 60.307257 654.536670 0 ] (Code/ConfigurationTool/:__span-0-20) [ 1880 0 R /XYZ 60.307257 399.929982 0 ] (Code/ConfigurationTool/:__span-0-200) [ 1888 0 R /XYZ 60.307257 516.416934 0 ] (Code/ConfigurationTool/:__span-0-201) [ 1888 0 R /XYZ 60.307257 503.016582 0 ] (Code/ConfigurationTool/:__span-0-202) [ 1888 0 R /XYZ 60.307257 489.616230 0 ] (Code/ConfigurationTool/:__span-0-203) [ 1888 0 R /XYZ 60.307257 476.215878 0 ] (Code/ConfigurationTool/:__span-0-204) [ 1888 0 R /XYZ 60.307257 449.415174 0 ] (Code/ConfigurationTool/:__span-0-205) [ 1888 0 R /XYZ 60.307257 436.014822 0 ] (Code/ConfigurationTool/:__span-0-206) [ 1888 0 R /XYZ 60.307257 422.614470 0 ] (Code/ConfigurationTool/:__span-0-207) [ 1888 0 R /XYZ 60.307257 409.214118 0 ] (Code/ConfigurationTool/:__span-0-208) [ 1888 0 R /XYZ 60.307257 395.813766 0 ] (Code/ConfigurationTool/:__span-0-209) [ 1888 0 R /XYZ 60.307257 369.013062 0 ] (Code/ConfigurationTool/:__span-0-21) [ 1880 0 R /XYZ 60.307257 386.529630 0 ] (Code/ConfigurationTool/:__span-0-210) [ 1888 0 R /XYZ 60.307257 342.212358 0 ] (Code/ConfigurationTool/:__span-0-211) [ 1888 0 R /XYZ 60.307257 328.812006 0 ] (Code/ConfigurationTool/:__span-0-212) [ 1888 0 R /XYZ 60.307257 315.411654 0 ] (Code/ConfigurationTool/:__span-0-213) [ 1888 0 R /XYZ 60.307257 302.011302 0 ] (Code/ConfigurationTool/:__span-0-214) [ 1888 0 R /XYZ 60.307257 288.610950 0 ] (Code/ConfigurationTool/:__span-0-215) [ 1888 0 R /XYZ 60.307257 275.210598 0 ] (Code/ConfigurationTool/:__span-0-216) [ 1888 0 R /XYZ 60.307257 261.810246 0 ] (Code/ConfigurationTool/:__span-0-217) [ 1888 0 R /XYZ 60.307257 235.009542 0 ] (Code/ConfigurationTool/:__span-0-218) [ 1888 0 R /XYZ 60.307257 221.609190 0 ] (Code/ConfigurationTool/:__span-0-219) [ 1888 0 R /XYZ 60.307257 208.208838 0 ] (Code/ConfigurationTool/:__span-0-22) [ 1880 0 R /XYZ 60.307257 373.129278 0 ] (Code/ConfigurationTool/:__span-0-220) [ 1888 0 R /XYZ 60.307257 194.808486 0 ] (Code/ConfigurationTool/:__span-0-221) [ 1888 0 R /XYZ 60.307257 181.408134 0 ] (Code/ConfigurationTool/:__span-0-222) [ 1888 0 R /XYZ 60.307257 154.607430 0 ] (Code/ConfigurationTool/:__span-0-223) [ 1888 0 R /XYZ 60.307257 141.207078 0 ] (Code/ConfigurationTool/:__span-0-224) [ 1888 0 R /XYZ 60.307257 127.806726 0 ] (Code/ConfigurationTool/:__span-0-225) [ 1888 0 R /XYZ 60.307257 101.006022 0 ] (Code/ConfigurationTool/:__span-0-226) [ 1888 0 R /XYZ 60.307257 87.605670 0 ] (Code/ConfigurationTool/:__span-0-227) [ 1890 0 R /XYZ 60.307257 757.623270 0 ] (Code/ConfigurationTool/:__span-0-228) [ 1890 0 R /XYZ 60.307257 730.822566 0 ] (Code/ConfigurationTool/:__span-0-229) [ 1890 0 R /XYZ 60.307257 717.422214 0 ] (Code/ConfigurationTool/:__span-0-23) [ 1880 0 R /XYZ 60.307257 359.728926 0 ] (Code/ConfigurationTool/:__span-0-230) [ 1890 0 R /XYZ 60.307257 704.021862 0 ] (Code/ConfigurationTool/:__span-0-231) [ 1890 0 R /XYZ 60.307257 690.621510 0 ] (Code/ConfigurationTool/:__span-0-232) [ 1890 0 R /XYZ 60.307257 663.820806 0 ] (Code/ConfigurationTool/:__span-0-233) [ 1890 0 R /XYZ 60.307257 650.420454 0 ] (Code/ConfigurationTool/:__span-0-234) [ 1890 0 R /XYZ 60.307257 637.020102 0 ] (Code/ConfigurationTool/:__span-0-235) [ 1890 0 R /XYZ 60.307257 623.619750 0 ] (Code/ConfigurationTool/:__span-0-236) [ 1890 0 R /XYZ 60.307257 610.219398 0 ] (Code/ConfigurationTool/:__span-0-237) [ 1890 0 R /XYZ 60.307257 596.819046 0 ] (Code/ConfigurationTool/:__span-0-238) [ 1890 0 R /XYZ 60.307257 583.418694 0 ] (Code/ConfigurationTool/:__span-0-239) [ 1890 0 R /XYZ 60.307257 570.018342 0 ] (Code/ConfigurationTool/:__span-0-24) [ 1880 0 R /XYZ 60.307257 346.328574 0 ] (Code/ConfigurationTool/:__span-0-240) [ 1890 0 R /XYZ 60.307257 543.217638 0 ] (Code/ConfigurationTool/:__span-0-241) [ 1890 0 R /XYZ 60.307257 529.817286 0 ] (Code/ConfigurationTool/:__span-0-242) [ 1890 0 R /XYZ 60.307257 516.416934 0 ] (Code/ConfigurationTool/:__span-0-243) [ 1890 0 R /XYZ 60.307257 503.016582 0 ] (Code/ConfigurationTool/:__span-0-244) [ 1890 0 R /XYZ 60.307257 489.616230 0 ] (Code/ConfigurationTool/:__span-0-245) [ 1890 0 R /XYZ 60.307257 476.215878 0 ] (Code/ConfigurationTool/:__span-0-246) [ 1890 0 R /XYZ 60.307257 462.815526 0 ] (Code/ConfigurationTool/:__span-0-247) [ 1890 0 R /XYZ 60.307257 449.415174 0 ] (Code/ConfigurationTool/:__span-0-248) [ 1890 0 R /XYZ 60.307257 436.014822 0 ] (Code/ConfigurationTool/:__span-0-249) [ 1890 0 R /XYZ 60.307257 422.614470 0 ] (Code/ConfigurationTool/:__span-0-25) [ 1880 0 R /XYZ 60.307257 332.928222 0 ] (Code/ConfigurationTool/:__span-0-250) [ 1890 0 R /XYZ 60.307257 409.214118 0 ] (Code/ConfigurationTool/:__span-0-251) [ 1890 0 R /XYZ 60.307257 382.413414 0 ] (Code/ConfigurationTool/:__span-0-252) [ 1890 0 R /XYZ 60.307257 355.612710 0 ] (Code/ConfigurationTool/:__span-0-253) [ 1890 0 R /XYZ 60.307257 342.212358 0 ] (Code/ConfigurationTool/:__span-0-254) [ 1890 0 R /XYZ 60.307257 328.812006 0 ] (Code/ConfigurationTool/:__span-0-255) [ 1890 0 R /XYZ 60.307257 302.011302 0 ] (Code/ConfigurationTool/:__span-0-256) [ 1890 0 R /XYZ 60.307257 288.610950 0 ] (Code/ConfigurationTool/:__span-0-257) [ 1890 0 R /XYZ 60.307257 275.210598 0 ] (Code/ConfigurationTool/:__span-0-258) [ 1890 0 R /XYZ 60.307257 261.810246 0 ] (Code/ConfigurationTool/:__span-0-259) [ 1890 0 R /XYZ 60.307257 248.409894 0 ] (Code/ConfigurationTool/:__span-0-26) [ 1880 0 R /XYZ 60.307257 319.527870 0 ] (Code/ConfigurationTool/:__span-0-260) [ 1890 0 R /XYZ 60.307257 235.009542 0 ] (Code/ConfigurationTool/:__span-0-261) [ 1890 0 R /XYZ 60.307257 221.609190 0 ] (Code/ConfigurationTool/:__span-0-27) [ 1880 0 R /XYZ 60.307257 306.127518 0 ] (Code/ConfigurationTool/:__span-0-28) [ 1880 0 R /XYZ 60.307257 279.326814 0 ] (Code/ConfigurationTool/:__span-0-29) [ 1880 0 R /XYZ 60.307257 265.926462 0 ] (Code/ConfigurationTool/:__span-0-3) [ 1880 0 R /XYZ 60.307257 641.136318 0 ] (Code/ConfigurationTool/:__span-0-30) [ 1880 0 R /XYZ 60.307257 239.125758 0 ] (Code/ConfigurationTool/:__span-0-31) [ 1880 0 R /XYZ 60.307257 212.325054 0 ] (Code/ConfigurationTool/:__span-0-32) [ 1880 0 R /XYZ 60.307257 198.924702 0 ] (Code/ConfigurationTool/:__span-0-33) [ 1880 0 R /XYZ 60.307257 185.524350 0 ] (Code/ConfigurationTool/:__span-0-34) [ 1880 0 R /XYZ 60.307257 172.123998 0 ] (Code/ConfigurationTool/:__span-0-35) [ 1880 0 R /XYZ 60.307257 158.723646 0 ] (Code/ConfigurationTool/:__span-0-36) [ 1880 0 R /XYZ 60.307257 145.323294 0 ] (Code/ConfigurationTool/:__span-0-37) [ 1880 0 R /XYZ 60.307257 131.922942 0 ] (Code/ConfigurationTool/:__span-0-38) [ 1880 0 R /XYZ 60.307257 118.522590 0 ] (Code/ConfigurationTool/:__span-0-39) [ 1880 0 R /XYZ 60.307257 105.122238 0 ] (Code/ConfigurationTool/:__span-0-4) [ 1880 0 R /XYZ 60.307257 627.735966 0 ] (Code/ConfigurationTool/:__span-0-40) [ 1880 0 R /XYZ 60.307257 91.721886 0 ] (Code/ConfigurationTool/:__span-0-41) [ 1882 0 R /XYZ 60.307257 771.023622 0 ] (Code/ConfigurationTool/:__span-0-42) [ 1882 0 R /XYZ 60.307257 757.623270 0 ] (Code/ConfigurationTool/:__span-0-43) [ 1882 0 R /XYZ 60.307257 744.222918 0 ] (Code/ConfigurationTool/:__span-0-44) [ 1882 0 R /XYZ 60.307257 730.822566 0 ] (Code/ConfigurationTool/:__span-0-45) [ 1882 0 R /XYZ 60.307257 717.422214 0 ] (Code/ConfigurationTool/:__span-0-46) [ 1882 0 R /XYZ 60.307257 704.021862 0 ] (Code/ConfigurationTool/:__span-0-47) [ 1882 0 R /XYZ 60.307257 690.621510 0 ] (Code/ConfigurationTool/:__span-0-48) [ 1882 0 R /XYZ 60.307257 677.221158 0 ] (Code/ConfigurationTool/:__span-0-49) [ 1882 0 R /XYZ 60.307257 663.820806 0 ] (Code/ConfigurationTool/:__span-0-5) [ 1880 0 R /XYZ 60.307257 600.935262 0 ] (Code/ConfigurationTool/:__span-0-50) [ 1882 0 R /XYZ 60.307257 650.420454 0 ] (Code/ConfigurationTool/:__span-0-51) [ 1882 0 R /XYZ 60.307257 637.020102 0 ] (Code/ConfigurationTool/:__span-0-52) [ 1882 0 R /XYZ 60.307257 623.619750 0 ] (Code/ConfigurationTool/:__span-0-53) [ 1882 0 R /XYZ 60.307257 610.219398 0 ] (Code/ConfigurationTool/:__span-0-54) [ 1882 0 R /XYZ 60.307257 570.018342 0 ] (Code/ConfigurationTool/:__span-0-55) [ 1882 0 R /XYZ 60.307257 556.617990 0 ] (Code/ConfigurationTool/:__span-0-56) [ 1882 0 R /XYZ 60.307257 543.217638 0 ] (Code/ConfigurationTool/:__span-0-57) [ 1882 0 R /XYZ 60.307257 529.817286 0 ] (Code/ConfigurationTool/:__span-0-58) [ 1882 0 R /XYZ 60.307257 516.416934 0 ] (Code/ConfigurationTool/:__span-0-59) [ 1882 0 R /XYZ 60.307257 503.016582 0 ] (Code/ConfigurationTool/:__span-0-6) [ 1880 0 R /XYZ 60.307257 587.534910 0 ] (Code/ConfigurationTool/:__span-0-60) [ 1882 0 R /XYZ 60.307257 489.616230 0 ] (Code/ConfigurationTool/:__span-0-61) [ 1882 0 R /XYZ 60.307257 476.215878 0 ] (Code/ConfigurationTool/:__span-0-62) [ 1882 0 R /XYZ 60.307257 462.815526 0 ] (Code/ConfigurationTool/:__span-0-63) [ 1882 0 R /XYZ 60.307257 449.415174 0 ] (Code/ConfigurationTool/:__span-0-64) [ 1882 0 R /XYZ 60.307257 436.014822 0 ] (Code/ConfigurationTool/:__span-0-65) [ 1882 0 R /XYZ 60.307257 422.614470 0 ] (Code/ConfigurationTool/:__span-0-66) [ 1882 0 R /XYZ 60.307257 409.214118 0 ] (Code/ConfigurationTool/:__span-0-67) [ 1882 0 R /XYZ 60.307257 395.813766 0 ] (Code/ConfigurationTool/:__span-0-68) [ 1882 0 R /XYZ 60.307257 382.413414 0 ] (Code/ConfigurationTool/:__span-0-69) [ 1882 0 R /XYZ 60.307257 369.013062 0 ] (Code/ConfigurationTool/:__span-0-7) [ 1880 0 R /XYZ 60.307257 574.134558 0 ] (Code/ConfigurationTool/:__span-0-70) [ 1882 0 R /XYZ 60.307257 355.612710 0 ] (Code/ConfigurationTool/:__span-0-71) [ 1882 0 R /XYZ 60.307257 342.212358 0 ] (Code/ConfigurationTool/:__span-0-72) [ 1882 0 R /XYZ 60.307257 328.812006 0 ] (Code/ConfigurationTool/:__span-0-73) [ 1882 0 R /XYZ 60.307257 315.411654 0 ] (Code/ConfigurationTool/:__span-0-74) [ 1882 0 R /XYZ 60.307257 302.011302 0 ] (Code/ConfigurationTool/:__span-0-75) [ 1882 0 R /XYZ 60.307257 288.610950 0 ] (Code/ConfigurationTool/:__span-0-76) [ 1882 0 R /XYZ 60.307257 275.210598 0 ] (Code/ConfigurationTool/:__span-0-77) [ 1882 0 R /XYZ 60.307257 261.810246 0 ] (Code/ConfigurationTool/:__span-0-78) [ 1882 0 R /XYZ 60.307257 248.409894 0 ] (Code/ConfigurationTool/:__span-0-79) [ 1882 0 R /XYZ 60.307257 235.009542 0 ] (Code/ConfigurationTool/:__span-0-8) [ 1880 0 R /XYZ 60.307257 560.734206 0 ] (Code/ConfigurationTool/:__span-0-80) [ 1882 0 R /XYZ 60.307257 221.609190 0 ] (Code/ConfigurationTool/:__span-0-81) [ 1882 0 R /XYZ 60.307257 208.208838 0 ] (Code/ConfigurationTool/:__span-0-82) [ 1882 0 R /XYZ 60.307257 194.808486 0 ] (Code/ConfigurationTool/:__span-0-83) [ 1882 0 R /XYZ 60.307257 181.408134 0 ] (Code/ConfigurationTool/:__span-0-84) [ 1882 0 R /XYZ 60.307257 168.007782 0 ] (Code/ConfigurationTool/:__span-0-85) [ 1882 0 R /XYZ 60.307257 154.607430 0 ] (Code/ConfigurationTool/:__span-0-86) [ 1882 0 R /XYZ 60.307257 141.207078 0 ] (Code/ConfigurationTool/:__span-0-87) [ 1882 0 R /XYZ 60.307257 127.806726 0 ] (Code/ConfigurationTool/:__span-0-88) [ 1882 0 R /XYZ 60.307257 101.006022 0 ] (Code/ConfigurationTool/:__span-0-89) [ 1882 0 R /XYZ 60.307257 87.605670 0 ] (Code/ConfigurationTool/:__span-0-9) [ 1880 0 R /XYZ 60.307257 547.333854 0 ] (Code/ConfigurationTool/:__span-0-90) [ 1884 0 R /XYZ 60.307257 771.023622 0 ] (Code/ConfigurationTool/:__span-0-91) [ 1884 0 R /XYZ 60.307257 757.623270 0 ] (Code/ConfigurationTool/:__span-0-92) [ 1884 0 R /XYZ 60.307257 744.222918 0 ] (Code/ConfigurationTool/:__span-0-93) [ 1884 0 R /XYZ 60.307257 730.822566 0 ] (Code/ConfigurationTool/:__span-0-94) [ 1884 0 R /XYZ 60.307257 717.422214 0 ] (Code/ConfigurationTool/:__span-0-95) [ 1884 0 R /XYZ 60.307257 704.021862 0 ] (Code/ConfigurationTool/:__span-0-96) [ 1884 0 R /XYZ 60.307257 690.621510 0 ] (Code/ConfigurationTool/:__span-0-97) [ 1884 0 R /XYZ 60.307257 677.221158 0 ] (Code/ConfigurationTool/:__span-0-98) [ 1884 0 R /XYZ 60.307257 663.820806 0 ] (Code/ConfigurationTool/:__span-0-99) [ 1884 0 R /XYZ 60.307257 650.420454 0 ] (Code/ConfigurationTool/:configurationtoolcs) [ 1880 0 R /XYZ 39.386457 707.865222 0 ] (Code/DataWrapper/:) [ 1966 0 R /XYZ 39.386457 747.563622 0 ] (Code/DataWrapper/:__span-0-1) [ 1966 0 R /XYZ 60.307257 707.635422 0 ] (Code/DataWrapper/:__span-0-10) [ 1966 0 R /XYZ 60.307257 560.231550 0 ] (Code/DataWrapper/:__span-0-100) [ 1970 0 R /XYZ 60.307257 436.014822 0 ] (Code/DataWrapper/:__span-0-101) [ 1970 0 R /XYZ 60.307257 422.614470 0 ] (Code/DataWrapper/:__span-0-102) [ 1970 0 R /XYZ 60.307257 409.214118 0 ] (Code/DataWrapper/:__span-0-103) [ 1970 0 R /XYZ 60.307257 382.413414 0 ] (Code/DataWrapper/:__span-0-104) [ 1970 0 R /XYZ 60.307257 369.013062 0 ] (Code/DataWrapper/:__span-0-105) [ 1970 0 R /XYZ 60.307257 342.212358 0 ] (Code/DataWrapper/:__span-0-106) [ 1970 0 R /XYZ 60.307257 315.411654 0 ] (Code/DataWrapper/:__span-0-107) [ 1970 0 R /XYZ 60.307257 302.011302 0 ] (Code/DataWrapper/:__span-0-108) [ 1970 0 R /XYZ 60.307257 288.610950 0 ] (Code/DataWrapper/:__span-0-109) [ 1970 0 R /XYZ 60.307257 275.210598 0 ] (Code/DataWrapper/:__span-0-11) [ 1966 0 R /XYZ 60.307257 546.831198 0 ] (Code/DataWrapper/:__span-0-110) [ 1970 0 R /XYZ 60.307257 248.409894 0 ] (Code/DataWrapper/:__span-0-111) [ 1970 0 R /XYZ 60.307257 235.009542 0 ] (Code/DataWrapper/:__span-0-112) [ 1970 0 R /XYZ 60.307257 208.208838 0 ] (Code/DataWrapper/:__span-0-113) [ 1970 0 R /XYZ 60.307257 194.808486 0 ] (Code/DataWrapper/:__span-0-114) [ 1970 0 R /XYZ 60.307257 168.007782 0 ] (Code/DataWrapper/:__span-0-115) [ 1970 0 R /XYZ 60.307257 154.607430 0 ] (Code/DataWrapper/:__span-0-116) [ 1970 0 R /XYZ 60.307257 141.207078 0 ] (Code/DataWrapper/:__span-0-117) [ 1970 0 R /XYZ 60.307257 127.806726 0 ] (Code/DataWrapper/:__span-0-118) [ 1970 0 R /XYZ 60.307257 114.406374 0 ] (Code/DataWrapper/:__span-0-119) [ 1970 0 R /XYZ 60.307257 101.006022 0 ] (Code/DataWrapper/:__span-0-12) [ 1966 0 R /XYZ 60.307257 533.430846 0 ] (Code/DataWrapper/:__span-0-120) [ 1970 0 R /XYZ 60.307257 87.605670 0 ] (Code/DataWrapper/:__span-0-121) [ 1972 0 R /XYZ 60.307257 771.023622 0 ] (Code/DataWrapper/:__span-0-122) [ 1972 0 R /XYZ 60.307257 757.623270 0 ] (Code/DataWrapper/:__span-0-123) [ 1972 0 R /XYZ 60.307257 730.822566 0 ] (Code/DataWrapper/:__span-0-124) [ 1972 0 R /XYZ 60.307257 717.422214 0 ] (Code/DataWrapper/:__span-0-125) [ 1972 0 R /XYZ 60.307257 704.021862 0 ] (Code/DataWrapper/:__span-0-126) [ 1972 0 R /XYZ 60.307257 690.621510 0 ] (Code/DataWrapper/:__span-0-127) [ 1972 0 R /XYZ 60.307257 677.221158 0 ] (Code/DataWrapper/:__span-0-128) [ 1972 0 R /XYZ 60.307257 663.820806 0 ] (Code/DataWrapper/:__span-0-129) [ 1972 0 R /XYZ 60.307257 650.420454 0 ] (Code/DataWrapper/:__span-0-13) [ 1966 0 R /XYZ 60.307257 520.030494 0 ] (Code/DataWrapper/:__span-0-130) [ 1972 0 R /XYZ 60.307257 637.020102 0 ] (Code/DataWrapper/:__span-0-131) [ 1972 0 R /XYZ 60.307257 623.619750 0 ] (Code/DataWrapper/:__span-0-132) [ 1972 0 R /XYZ 60.307257 610.219398 0 ] (Code/DataWrapper/:__span-0-133) [ 1972 0 R /XYZ 60.307257 596.819046 0 ] (Code/DataWrapper/:__span-0-134) [ 1972 0 R /XYZ 60.307257 583.418694 0 ] (Code/DataWrapper/:__span-0-135) [ 1972 0 R /XYZ 60.307257 570.018342 0 ] (Code/DataWrapper/:__span-0-136) [ 1972 0 R /XYZ 60.307257 556.617990 0 ] (Code/DataWrapper/:__span-0-137) [ 1972 0 R /XYZ 60.307257 543.217638 0 ] (Code/DataWrapper/:__span-0-138) [ 1972 0 R /XYZ 60.307257 529.817286 0 ] (Code/DataWrapper/:__span-0-139) [ 1972 0 R /XYZ 60.307257 516.416934 0 ] (Code/DataWrapper/:__span-0-14) [ 1966 0 R /XYZ 60.307257 506.630142 0 ] (Code/DataWrapper/:__span-0-140) [ 1972 0 R /XYZ 60.307257 503.016582 0 ] (Code/DataWrapper/:__span-0-141) [ 1972 0 R /XYZ 60.307257 476.215878 0 ] (Code/DataWrapper/:__span-0-142) [ 1972 0 R /XYZ 60.307257 462.815526 0 ] (Code/DataWrapper/:__span-0-143) [ 1972 0 R /XYZ 60.307257 449.415174 0 ] (Code/DataWrapper/:__span-0-144) [ 1972 0 R /XYZ 60.307257 436.014822 0 ] (Code/DataWrapper/:__span-0-145) [ 1972 0 R /XYZ 60.307257 422.614470 0 ] (Code/DataWrapper/:__span-0-146) [ 1972 0 R /XYZ 60.307257 409.214118 0 ] (Code/DataWrapper/:__span-0-147) [ 1972 0 R /XYZ 60.307257 382.413414 0 ] (Code/DataWrapper/:__span-0-148) [ 1972 0 R /XYZ 60.307257 342.212358 0 ] (Code/DataWrapper/:__span-0-149) [ 1972 0 R /XYZ 60.307257 328.812006 0 ] (Code/DataWrapper/:__span-0-15) [ 1966 0 R /XYZ 60.307257 493.229790 0 ] (Code/DataWrapper/:__span-0-150) [ 1972 0 R /XYZ 60.307257 315.411654 0 ] (Code/DataWrapper/:__span-0-151) [ 1972 0 R /XYZ 60.307257 302.011302 0 ] (Code/DataWrapper/:__span-0-152) [ 1972 0 R /XYZ 60.307257 288.610950 0 ] (Code/DataWrapper/:__span-0-153) [ 1972 0 R /XYZ 60.307257 275.210598 0 ] (Code/DataWrapper/:__span-0-154) [ 1972 0 R /XYZ 60.307257 261.810246 0 ] (Code/DataWrapper/:__span-0-155) [ 1972 0 R /XYZ 60.307257 248.409894 0 ] (Code/DataWrapper/:__span-0-156) [ 1972 0 R /XYZ 60.307257 235.009542 0 ] (Code/DataWrapper/:__span-0-157) [ 1972 0 R /XYZ 60.307257 208.208838 0 ] (Code/DataWrapper/:__span-0-158) [ 1972 0 R /XYZ 60.307257 181.408134 0 ] (Code/DataWrapper/:__span-0-159) [ 1972 0 R /XYZ 60.307257 154.607430 0 ] (Code/DataWrapper/:__span-0-16) [ 1966 0 R /XYZ 60.307257 479.829438 0 ] (Code/DataWrapper/:__span-0-160) [ 1972 0 R /XYZ 60.307257 141.207078 0 ] (Code/DataWrapper/:__span-0-161) [ 1972 0 R /XYZ 60.307257 127.806726 0 ] (Code/DataWrapper/:__span-0-162) [ 1972 0 R /XYZ 60.307257 114.406374 0 ] (Code/DataWrapper/:__span-0-163) [ 1972 0 R /XYZ 60.307257 101.006022 0 ] (Code/DataWrapper/:__span-0-164) [ 1972 0 R /XYZ 60.307257 87.605670 0 ] (Code/DataWrapper/:__span-0-165) [ 1974 0 R /XYZ 60.307257 771.023622 0 ] (Code/DataWrapper/:__span-0-166) [ 1974 0 R /XYZ 60.307257 757.623270 0 ] (Code/DataWrapper/:__span-0-167) [ 1974 0 R /XYZ 60.307257 744.222918 0 ] (Code/DataWrapper/:__span-0-168) [ 1974 0 R /XYZ 60.307257 730.822566 0 ] (Code/DataWrapper/:__span-0-169) [ 1974 0 R /XYZ 60.307257 717.422214 0 ] (Code/DataWrapper/:__span-0-17) [ 1966 0 R /XYZ 60.307257 466.429086 0 ] (Code/DataWrapper/:__span-0-170) [ 1974 0 R /XYZ 60.307257 704.021862 0 ] (Code/DataWrapper/:__span-0-171) [ 1974 0 R /XYZ 60.307257 677.221158 0 ] (Code/DataWrapper/:__span-0-172) [ 1974 0 R /XYZ 60.307257 650.420454 0 ] (Code/DataWrapper/:__span-0-173) [ 1974 0 R /XYZ 60.307257 637.020102 0 ] (Code/DataWrapper/:__span-0-174) [ 1974 0 R /XYZ 60.307257 623.619750 0 ] (Code/DataWrapper/:__span-0-175) [ 1974 0 R /XYZ 60.307257 596.819046 0 ] (Code/DataWrapper/:__span-0-176) [ 1974 0 R /XYZ 60.307257 570.018342 0 ] (Code/DataWrapper/:__span-0-177) [ 1974 0 R /XYZ 60.307257 543.217638 0 ] (Code/DataWrapper/:__span-0-178) [ 1974 0 R /XYZ 60.307257 529.817286 0 ] (Code/DataWrapper/:__span-0-179) [ 1974 0 R /XYZ 60.307257 516.416934 0 ] (Code/DataWrapper/:__span-0-18) [ 1966 0 R /XYZ 60.307257 453.028734 0 ] (Code/DataWrapper/:__span-0-180) [ 1974 0 R /XYZ 60.307257 503.016582 0 ] (Code/DataWrapper/:__span-0-181) [ 1974 0 R /XYZ 60.307257 489.616230 0 ] (Code/DataWrapper/:__span-0-182) [ 1974 0 R /XYZ 60.307257 476.215878 0 ] (Code/DataWrapper/:__span-0-183) [ 1974 0 R /XYZ 60.307257 462.815526 0 ] (Code/DataWrapper/:__span-0-184) [ 1974 0 R /XYZ 60.307257 449.415174 0 ] (Code/DataWrapper/:__span-0-185) [ 1974 0 R /XYZ 60.307257 436.014822 0 ] (Code/DataWrapper/:__span-0-186) [ 1974 0 R /XYZ 60.307257 422.614470 0 ] (Code/DataWrapper/:__span-0-187) [ 1974 0 R /XYZ 60.307257 409.214118 0 ] (Code/DataWrapper/:__span-0-188) [ 1974 0 R /XYZ 60.307257 395.813766 0 ] (Code/DataWrapper/:__span-0-189) [ 1974 0 R /XYZ 60.307257 382.413414 0 ] (Code/DataWrapper/:__span-0-19) [ 1966 0 R /XYZ 60.307257 439.628382 0 ] (Code/DataWrapper/:__span-0-190) [ 1974 0 R /XYZ 60.307257 369.013062 0 ] (Code/DataWrapper/:__span-0-191) [ 1974 0 R /XYZ 60.307257 355.612710 0 ] (Code/DataWrapper/:__span-0-192) [ 1974 0 R /XYZ 60.307257 342.212358 0 ] (Code/DataWrapper/:__span-0-193) [ 1974 0 R /XYZ 60.307257 328.812006 0 ] (Code/DataWrapper/:__span-0-194) [ 1974 0 R /XYZ 60.307257 315.411654 0 ] (Code/DataWrapper/:__span-0-195) [ 1974 0 R /XYZ 60.307257 302.011302 0 ] (Code/DataWrapper/:__span-0-196) [ 1974 0 R /XYZ 60.307257 288.610950 0 ] (Code/DataWrapper/:__span-0-197) [ 1974 0 R /XYZ 60.307257 275.210598 0 ] (Code/DataWrapper/:__span-0-198) [ 1974 0 R /XYZ 60.307257 261.810246 0 ] (Code/DataWrapper/:__span-0-199) [ 1974 0 R /XYZ 60.307257 248.409894 0 ] (Code/DataWrapper/:__span-0-2) [ 1966 0 R /XYZ 60.307257 694.235070 0 ] (Code/DataWrapper/:__span-0-20) [ 1966 0 R /XYZ 60.307257 426.228030 0 ] (Code/DataWrapper/:__span-0-200) [ 1974 0 R /XYZ 60.307257 221.609190 0 ] (Code/DataWrapper/:__span-0-201) [ 1974 0 R /XYZ 60.307257 208.208838 0 ] (Code/DataWrapper/:__span-0-202) [ 1974 0 R /XYZ 60.307257 181.408134 0 ] (Code/DataWrapper/:__span-0-203) [ 1974 0 R /XYZ 60.307257 154.607430 0 ] (Code/DataWrapper/:__span-0-204) [ 1974 0 R /XYZ 60.307257 127.806726 0 ] (Code/DataWrapper/:__span-0-205) [ 1974 0 R /XYZ 60.307257 101.006022 0 ] (Code/DataWrapper/:__span-0-206) [ 1974 0 R /XYZ 60.307257 87.605670 0 ] (Code/DataWrapper/:__span-0-207) [ 1976 0 R /XYZ 60.307257 757.623270 0 ] (Code/DataWrapper/:__span-0-208) [ 1976 0 R /XYZ 60.307257 730.822566 0 ] (Code/DataWrapper/:__span-0-209) [ 1976 0 R /XYZ 60.307257 717.422214 0 ] (Code/DataWrapper/:__span-0-21) [ 1966 0 R /XYZ 60.307257 412.827678 0 ] (Code/DataWrapper/:__span-0-210) [ 1976 0 R /XYZ 60.307257 704.021862 0 ] (Code/DataWrapper/:__span-0-211) [ 1976 0 R /XYZ 60.307257 677.221158 0 ] (Code/DataWrapper/:__span-0-212) [ 1976 0 R /XYZ 60.307257 663.820806 0 ] (Code/DataWrapper/:__span-0-213) [ 1976 0 R /XYZ 60.307257 650.420454 0 ] (Code/DataWrapper/:__span-0-214) [ 1976 0 R /XYZ 60.307257 637.020102 0 ] (Code/DataWrapper/:__span-0-215) [ 1976 0 R /XYZ 60.307257 623.619750 0 ] (Code/DataWrapper/:__span-0-216) [ 1976 0 R /XYZ 60.307257 610.219398 0 ] (Code/DataWrapper/:__span-0-217) [ 1976 0 R /XYZ 60.307257 596.819046 0 ] (Code/DataWrapper/:__span-0-218) [ 1976 0 R /XYZ 60.307257 583.418694 0 ] (Code/DataWrapper/:__span-0-219) [ 1976 0 R /XYZ 60.307257 570.018342 0 ] (Code/DataWrapper/:__span-0-22) [ 1966 0 R /XYZ 60.307257 399.427326 0 ] (Code/DataWrapper/:__span-0-220) [ 1976 0 R /XYZ 60.307257 556.617990 0 ] (Code/DataWrapper/:__span-0-221) [ 1976 0 R /XYZ 60.307257 543.217638 0 ] (Code/DataWrapper/:__span-0-222) [ 1976 0 R /XYZ 60.307257 529.817286 0 ] (Code/DataWrapper/:__span-0-223) [ 1976 0 R /XYZ 60.307257 516.416934 0 ] (Code/DataWrapper/:__span-0-224) [ 1976 0 R /XYZ 60.307257 503.016582 0 ] (Code/DataWrapper/:__span-0-225) [ 1976 0 R /XYZ 60.307257 489.616230 0 ] (Code/DataWrapper/:__span-0-226) [ 1976 0 R /XYZ 60.307257 476.215878 0 ] (Code/DataWrapper/:__span-0-227) [ 1976 0 R /XYZ 60.307257 462.815526 0 ] (Code/DataWrapper/:__span-0-228) [ 1976 0 R /XYZ 60.307257 449.415174 0 ] (Code/DataWrapper/:__span-0-229) [ 1976 0 R /XYZ 60.307257 436.014822 0 ] (Code/DataWrapper/:__span-0-23) [ 1966 0 R /XYZ 60.307257 372.626622 0 ] (Code/DataWrapper/:__span-0-230) [ 1976 0 R /XYZ 60.307257 422.614470 0 ] (Code/DataWrapper/:__span-0-231) [ 1976 0 R /XYZ 60.307257 409.214118 0 ] (Code/DataWrapper/:__span-0-232) [ 1976 0 R /XYZ 60.307257 395.813766 0 ] (Code/DataWrapper/:__span-0-233) [ 1976 0 R /XYZ 60.307257 382.413414 0 ] (Code/DataWrapper/:__span-0-234) [ 1976 0 R /XYZ 60.307257 369.013062 0 ] (Code/DataWrapper/:__span-0-235) [ 1976 0 R /XYZ 60.307257 355.612710 0 ] (Code/DataWrapper/:__span-0-236) [ 1976 0 R /XYZ 60.307257 342.212358 0 ] (Code/DataWrapper/:__span-0-237) [ 1976 0 R /XYZ 60.307257 328.812006 0 ] (Code/DataWrapper/:__span-0-238) [ 1976 0 R /XYZ 60.307257 315.411654 0 ] (Code/DataWrapper/:__span-0-239) [ 1976 0 R /XYZ 60.307257 302.011302 0 ] (Code/DataWrapper/:__span-0-24) [ 1966 0 R /XYZ 60.307257 359.226270 0 ] (Code/DataWrapper/:__span-0-240) [ 1976 0 R /XYZ 60.307257 288.610950 0 ] (Code/DataWrapper/:__span-0-241) [ 1976 0 R /XYZ 60.307257 275.210598 0 ] (Code/DataWrapper/:__span-0-242) [ 1976 0 R /XYZ 60.307257 261.810246 0 ] (Code/DataWrapper/:__span-0-243) [ 1976 0 R /XYZ 60.307257 248.409894 0 ] (Code/DataWrapper/:__span-0-244) [ 1976 0 R /XYZ 60.307257 235.009542 0 ] (Code/DataWrapper/:__span-0-245) [ 1976 0 R /XYZ 60.307257 194.808486 0 ] (Code/DataWrapper/:__span-0-246) [ 1976 0 R /XYZ 60.307257 181.408134 0 ] (Code/DataWrapper/:__span-0-247) [ 1976 0 R /XYZ 60.307257 168.007782 0 ] (Code/DataWrapper/:__span-0-248) [ 1976 0 R /XYZ 60.307257 154.607430 0 ] (Code/DataWrapper/:__span-0-249) [ 1976 0 R /XYZ 60.307257 127.806726 0 ] (Code/DataWrapper/:__span-0-25) [ 1966 0 R /XYZ 60.307257 332.425566 0 ] (Code/DataWrapper/:__span-0-250) [ 1976 0 R /XYZ 60.307257 114.406374 0 ] (Code/DataWrapper/:__span-0-251) [ 1976 0 R /XYZ 60.307257 101.006022 0 ] (Code/DataWrapper/:__span-0-252) [ 1976 0 R /XYZ 60.307257 87.605670 0 ] (Code/DataWrapper/:__span-0-253) [ 1978 0 R /XYZ 60.307257 771.023622 0 ] (Code/DataWrapper/:__span-0-254) [ 1978 0 R /XYZ 60.307257 757.623270 0 ] (Code/DataWrapper/:__span-0-255) [ 1978 0 R /XYZ 60.307257 744.222918 0 ] (Code/DataWrapper/:__span-0-256) [ 1978 0 R /XYZ 60.307257 730.822566 0 ] (Code/DataWrapper/:__span-0-257) [ 1978 0 R /XYZ 60.307257 717.422214 0 ] (Code/DataWrapper/:__span-0-258) [ 1978 0 R /XYZ 60.307257 704.021862 0 ] (Code/DataWrapper/:__span-0-259) [ 1978 0 R /XYZ 60.307257 690.621510 0 ] (Code/DataWrapper/:__span-0-26) [ 1966 0 R /XYZ 60.307257 319.025214 0 ] (Code/DataWrapper/:__span-0-260) [ 1978 0 R /XYZ 60.307257 677.221158 0 ] (Code/DataWrapper/:__span-0-261) [ 1978 0 R /XYZ 60.307257 637.020102 0 ] (Code/DataWrapper/:__span-0-262) [ 1978 0 R /XYZ 60.307257 623.619750 0 ] (Code/DataWrapper/:__span-0-263) [ 1978 0 R /XYZ 60.307257 610.219398 0 ] (Code/DataWrapper/:__span-0-264) [ 1978 0 R /XYZ 60.307257 596.819046 0 ] (Code/DataWrapper/:__span-0-265) [ 1978 0 R /XYZ 60.307257 583.418694 0 ] (Code/DataWrapper/:__span-0-266) [ 1978 0 R /XYZ 60.307257 570.018342 0 ] (Code/DataWrapper/:__span-0-267) [ 1978 0 R /XYZ 60.307257 556.617990 0 ] (Code/DataWrapper/:__span-0-268) [ 1978 0 R /XYZ 60.307257 543.217638 0 ] (Code/DataWrapper/:__span-0-269) [ 1978 0 R /XYZ 60.307257 529.817286 0 ] (Code/DataWrapper/:__span-0-27) [ 1966 0 R /XYZ 60.307257 292.224510 0 ] (Code/DataWrapper/:__span-0-270) [ 1978 0 R /XYZ 60.307257 516.416934 0 ] (Code/DataWrapper/:__span-0-271) [ 1978 0 R /XYZ 60.307257 503.016582 0 ] (Code/DataWrapper/:__span-0-272) [ 1978 0 R /XYZ 60.307257 476.215878 0 ] (Code/DataWrapper/:__span-0-273) [ 1978 0 R /XYZ 60.307257 462.815526 0 ] (Code/DataWrapper/:__span-0-274) [ 1978 0 R /XYZ 60.307257 449.415174 0 ] (Code/DataWrapper/:__span-0-275) [ 1978 0 R /XYZ 60.307257 422.614470 0 ] (Code/DataWrapper/:__span-0-276) [ 1978 0 R /XYZ 60.307257 395.813766 0 ] (Code/DataWrapper/:__span-0-277) [ 1978 0 R /XYZ 60.307257 369.013062 0 ] (Code/DataWrapper/:__span-0-278) [ 1978 0 R /XYZ 60.307257 355.612710 0 ] (Code/DataWrapper/:__span-0-279) [ 1978 0 R /XYZ 60.307257 342.212358 0 ] (Code/DataWrapper/:__span-0-28) [ 1966 0 R /XYZ 60.307257 278.824158 0 ] (Code/DataWrapper/:__span-0-280) [ 1978 0 R /XYZ 60.307257 328.812006 0 ] (Code/DataWrapper/:__span-0-281) [ 1978 0 R /XYZ 60.307257 315.411654 0 ] (Code/DataWrapper/:__span-0-282) [ 1978 0 R /XYZ 60.307257 302.011302 0 ] (Code/DataWrapper/:__span-0-283) [ 1978 0 R /XYZ 60.307257 288.610950 0 ] (Code/DataWrapper/:__span-0-284) [ 1978 0 R /XYZ 60.307257 275.210598 0 ] (Code/DataWrapper/:__span-0-285) [ 1978 0 R /XYZ 60.307257 261.810246 0 ] (Code/DataWrapper/:__span-0-286) [ 1978 0 R /XYZ 60.307257 248.409894 0 ] (Code/DataWrapper/:__span-0-287) [ 1978 0 R /XYZ 60.307257 235.009542 0 ] (Code/DataWrapper/:__span-0-288) [ 1978 0 R /XYZ 60.307257 221.609190 0 ] (Code/DataWrapper/:__span-0-289) [ 1978 0 R /XYZ 60.307257 194.808486 0 ] (Code/DataWrapper/:__span-0-29) [ 1966 0 R /XYZ 60.307257 265.423806 0 ] (Code/DataWrapper/:__span-0-290) [ 1978 0 R /XYZ 60.307257 181.408134 0 ] (Code/DataWrapper/:__span-0-291) [ 1978 0 R /XYZ 60.307257 168.007782 0 ] (Code/DataWrapper/:__span-0-292) [ 1978 0 R /XYZ 60.307257 154.607430 0 ] (Code/DataWrapper/:__span-0-293) [ 1978 0 R /XYZ 60.307257 141.207078 0 ] (Code/DataWrapper/:__span-0-294) [ 1978 0 R /XYZ 60.307257 114.406374 0 ] (Code/DataWrapper/:__span-0-295) [ 1978 0 R /XYZ 60.307257 101.006022 0 ] (Code/DataWrapper/:__span-0-296) [ 1978 0 R /XYZ 60.307257 87.605670 0 ] (Code/DataWrapper/:__span-0-297) [ 1980 0 R /XYZ 60.307257 771.023622 0 ] (Code/DataWrapper/:__span-0-298) [ 1980 0 R /XYZ 60.307257 757.623270 0 ] (Code/DataWrapper/:__span-0-299) [ 1980 0 R /XYZ 60.307257 744.222918 0 ] (Code/DataWrapper/:__span-0-3) [ 1966 0 R /XYZ 60.307257 680.834718 0 ] (Code/DataWrapper/:__span-0-30) [ 1966 0 R /XYZ 60.307257 252.023454 0 ] (Code/DataWrapper/:__span-0-300) [ 1980 0 R /XYZ 60.307257 730.822566 0 ] (Code/DataWrapper/:__span-0-301) [ 1980 0 R /XYZ 60.307257 717.422214 0 ] (Code/DataWrapper/:__span-0-302) [ 1980 0 R /XYZ 60.307257 704.021862 0 ] (Code/DataWrapper/:__span-0-303) [ 1980 0 R /XYZ 60.307257 690.621510 0 ] (Code/DataWrapper/:__span-0-304) [ 1980 0 R /XYZ 60.307257 677.221158 0 ] (Code/DataWrapper/:__span-0-305) [ 1980 0 R /XYZ 60.307257 663.820806 0 ] (Code/DataWrapper/:__span-0-306) [ 1980 0 R /XYZ 60.307257 637.020102 0 ] (Code/DataWrapper/:__span-0-307) [ 1980 0 R /XYZ 60.307257 610.219398 0 ] (Code/DataWrapper/:__span-0-308) [ 1980 0 R /XYZ 60.307257 596.819046 0 ] (Code/DataWrapper/:__span-0-309) [ 1980 0 R /XYZ 60.307257 583.418694 0 ] (Code/DataWrapper/:__span-0-31) [ 1966 0 R /XYZ 60.307257 238.623102 0 ] (Code/DataWrapper/:__span-0-310) [ 1980 0 R /XYZ 60.307257 570.018342 0 ] (Code/DataWrapper/:__span-0-311) [ 1980 0 R /XYZ 60.307257 556.617990 0 ] (Code/DataWrapper/:__span-0-312) [ 1980 0 R /XYZ 60.307257 543.217638 0 ] (Code/DataWrapper/:__span-0-313) [ 1980 0 R /XYZ 60.307257 529.817286 0 ] (Code/DataWrapper/:__span-0-314) [ 1980 0 R /XYZ 60.307257 516.416934 0 ] (Code/DataWrapper/:__span-0-315) [ 1980 0 R /XYZ 60.307257 489.616230 0 ] (Code/DataWrapper/:__span-0-316) [ 1980 0 R /XYZ 60.307257 476.215878 0 ] (Code/DataWrapper/:__span-0-317) [ 1980 0 R /XYZ 60.307257 449.415174 0 ] (Code/DataWrapper/:__span-0-318) [ 1980 0 R /XYZ 60.307257 436.014822 0 ] (Code/DataWrapper/:__span-0-319) [ 1980 0 R /XYZ 60.307257 409.214118 0 ] (Code/DataWrapper/:__span-0-32) [ 1966 0 R /XYZ 60.307257 185.021694 0 ] (Code/DataWrapper/:__span-0-320) [ 1980 0 R /XYZ 60.307257 395.813766 0 ] (Code/DataWrapper/:__span-0-321) [ 1980 0 R /XYZ 60.307257 382.413414 0 ] (Code/DataWrapper/:__span-0-322) [ 1980 0 R /XYZ 60.307257 369.013062 0 ] (Code/DataWrapper/:__span-0-323) [ 1980 0 R /XYZ 60.307257 342.212358 0 ] (Code/DataWrapper/:__span-0-324) [ 1980 0 R /XYZ 60.307257 328.812006 0 ] (Code/DataWrapper/:__span-0-325) [ 1980 0 R /XYZ 60.307257 302.011302 0 ] (Code/DataWrapper/:__span-0-326) [ 1980 0 R /XYZ 60.307257 288.610950 0 ] (Code/DataWrapper/:__span-0-327) [ 1980 0 R /XYZ 60.307257 275.210598 0 ] (Code/DataWrapper/:__span-0-328) [ 1980 0 R /XYZ 60.307257 261.810246 0 ] (Code/DataWrapper/:__span-0-329) [ 1980 0 R /XYZ 60.307257 248.409894 0 ] (Code/DataWrapper/:__span-0-33) [ 1966 0 R /XYZ 60.307257 171.621342 0 ] (Code/DataWrapper/:__span-0-330) [ 1980 0 R /XYZ 60.307257 235.009542 0 ] (Code/DataWrapper/:__span-0-331) [ 1980 0 R /XYZ 60.307257 221.609190 0 ] (Code/DataWrapper/:__span-0-332) [ 1980 0 R /XYZ 60.307257 208.208838 0 ] (Code/DataWrapper/:__span-0-333) [ 1980 0 R /XYZ 60.307257 181.408134 0 ] (Code/DataWrapper/:__span-0-334) [ 1980 0 R /XYZ 60.307257 168.007782 0 ] (Code/DataWrapper/:__span-0-335) [ 1980 0 R /XYZ 60.307257 154.607430 0 ] (Code/DataWrapper/:__span-0-336) [ 1980 0 R /XYZ 60.307257 141.207078 0 ] (Code/DataWrapper/:__span-0-337) [ 1980 0 R /XYZ 60.307257 114.406374 0 ] (Code/DataWrapper/:__span-0-338) [ 1980 0 R /XYZ 60.307257 101.006022 0 ] (Code/DataWrapper/:__span-0-339) [ 1982 0 R /XYZ 60.307257 771.023622 0 ] (Code/DataWrapper/:__span-0-34) [ 1966 0 R /XYZ 60.307257 158.220990 0 ] (Code/DataWrapper/:__span-0-340) [ 1982 0 R /XYZ 60.307257 757.623270 0 ] (Code/DataWrapper/:__span-0-341) [ 1982 0 R /XYZ 60.307257 744.222918 0 ] (Code/DataWrapper/:__span-0-342) [ 1982 0 R /XYZ 60.307257 730.822566 0 ] (Code/DataWrapper/:__span-0-343) [ 1982 0 R /XYZ 60.307257 717.422214 0 ] (Code/DataWrapper/:__span-0-344) [ 1982 0 R /XYZ 60.307257 690.621510 0 ] (Code/DataWrapper/:__span-0-345) [ 1982 0 R /XYZ 60.307257 677.221158 0 ] (Code/DataWrapper/:__span-0-346) [ 1982 0 R /XYZ 60.307257 663.820806 0 ] (Code/DataWrapper/:__span-0-347) [ 1982 0 R /XYZ 60.307257 650.420454 0 ] (Code/DataWrapper/:__span-0-348) [ 1982 0 R /XYZ 60.307257 637.020102 0 ] (Code/DataWrapper/:__span-0-349) [ 1982 0 R /XYZ 60.307257 623.619750 0 ] (Code/DataWrapper/:__span-0-35) [ 1966 0 R /XYZ 60.307257 144.820638 0 ] (Code/DataWrapper/:__span-0-350) [ 1982 0 R /XYZ 60.307257 610.219398 0 ] (Code/DataWrapper/:__span-0-351) [ 1982 0 R /XYZ 60.307257 596.819046 0 ] (Code/DataWrapper/:__span-0-352) [ 1982 0 R /XYZ 60.307257 583.418694 0 ] (Code/DataWrapper/:__span-0-353) [ 1982 0 R /XYZ 60.307257 570.018342 0 ] (Code/DataWrapper/:__span-0-354) [ 1982 0 R /XYZ 60.307257 556.617990 0 ] (Code/DataWrapper/:__span-0-355) [ 1982 0 R /XYZ 60.307257 543.217638 0 ] (Code/DataWrapper/:__span-0-356) [ 1982 0 R /XYZ 60.307257 516.416934 0 ] (Code/DataWrapper/:__span-0-357) [ 1982 0 R /XYZ 60.307257 503.016582 0 ] (Code/DataWrapper/:__span-0-358) [ 1982 0 R /XYZ 60.307257 489.616230 0 ] (Code/DataWrapper/:__span-0-359) [ 1982 0 R /XYZ 60.307257 476.215878 0 ] (Code/DataWrapper/:__span-0-36) [ 1966 0 R /XYZ 60.307257 104.619582 0 ] (Code/DataWrapper/:__span-0-360) [ 1982 0 R /XYZ 60.307257 462.815526 0 ] (Code/DataWrapper/:__span-0-361) [ 1982 0 R /XYZ 60.307257 449.415174 0 ] (Code/DataWrapper/:__span-0-362) [ 1982 0 R /XYZ 60.307257 436.014822 0 ] (Code/DataWrapper/:__span-0-363) [ 1982 0 R /XYZ 60.307257 422.614470 0 ] (Code/DataWrapper/:__span-0-364) [ 1982 0 R /XYZ 60.307257 409.214118 0 ] (Code/DataWrapper/:__span-0-365) [ 1982 0 R /XYZ 60.307257 395.813766 0 ] (Code/DataWrapper/:__span-0-366) [ 1982 0 R /XYZ 60.307257 382.413414 0 ] (Code/DataWrapper/:__span-0-367) [ 1982 0 R /XYZ 60.307257 369.013062 0 ] (Code/DataWrapper/:__span-0-368) [ 1982 0 R /XYZ 60.307257 355.612710 0 ] (Code/DataWrapper/:__span-0-369) [ 1982 0 R /XYZ 60.307257 342.212358 0 ] (Code/DataWrapper/:__span-0-37) [ 1966 0 R /XYZ 60.307257 91.219230 0 ] (Code/DataWrapper/:__span-0-370) [ 1982 0 R /XYZ 60.307257 328.812006 0 ] (Code/DataWrapper/:__span-0-371) [ 1982 0 R /XYZ 60.307257 315.411654 0 ] (Code/DataWrapper/:__span-0-372) [ 1982 0 R /XYZ 60.307257 302.011302 0 ] (Code/DataWrapper/:__span-0-373) [ 1982 0 R /XYZ 60.307257 288.610950 0 ] (Code/DataWrapper/:__span-0-374) [ 1982 0 R /XYZ 60.307257 275.210598 0 ] (Code/DataWrapper/:__span-0-375) [ 1982 0 R /XYZ 60.307257 261.810246 0 ] (Code/DataWrapper/:__span-0-376) [ 1982 0 R /XYZ 60.307257 248.409894 0 ] (Code/DataWrapper/:__span-0-377) [ 1982 0 R /XYZ 60.307257 235.009542 0 ] (Code/DataWrapper/:__span-0-378) [ 1982 0 R /XYZ 60.307257 221.609190 0 ] (Code/DataWrapper/:__span-0-379) [ 1982 0 R /XYZ 60.307257 208.208838 0 ] (Code/DataWrapper/:__span-0-38) [ 1968 0 R /XYZ 60.307257 757.623270 0 ] (Code/DataWrapper/:__span-0-39) [ 1968 0 R /XYZ 60.307257 744.222918 0 ] (Code/DataWrapper/:__span-0-4) [ 1966 0 R /XYZ 60.307257 667.434366 0 ] (Code/DataWrapper/:__span-0-40) [ 1968 0 R /XYZ 60.307257 730.822566 0 ] (Code/DataWrapper/:__span-0-41) [ 1968 0 R /XYZ 60.307257 717.422214 0 ] (Code/DataWrapper/:__span-0-42) [ 1968 0 R /XYZ 60.307257 704.021862 0 ] (Code/DataWrapper/:__span-0-43) [ 1968 0 R /XYZ 60.307257 690.621510 0 ] (Code/DataWrapper/:__span-0-44) [ 1968 0 R /XYZ 60.307257 677.221158 0 ] (Code/DataWrapper/:__span-0-45) [ 1968 0 R /XYZ 60.307257 663.820806 0 ] (Code/DataWrapper/:__span-0-46) [ 1968 0 R /XYZ 60.307257 650.420454 0 ] (Code/DataWrapper/:__span-0-47) [ 1968 0 R /XYZ 60.307257 623.619750 0 ] (Code/DataWrapper/:__span-0-48) [ 1968 0 R /XYZ 60.307257 610.219398 0 ] (Code/DataWrapper/:__span-0-49) [ 1968 0 R /XYZ 60.307257 583.418694 0 ] (Code/DataWrapper/:__span-0-5) [ 1966 0 R /XYZ 60.307257 627.233310 0 ] (Code/DataWrapper/:__span-0-50) [ 1968 0 R /XYZ 60.307257 570.018342 0 ] (Code/DataWrapper/:__span-0-51) [ 1968 0 R /XYZ 60.307257 556.617990 0 ] (Code/DataWrapper/:__span-0-52) [ 1968 0 R /XYZ 60.307257 543.217638 0 ] (Code/DataWrapper/:__span-0-53) [ 1968 0 R /XYZ 60.307257 529.817286 0 ] (Code/DataWrapper/:__span-0-54) [ 1968 0 R /XYZ 60.307257 516.416934 0 ] (Code/DataWrapper/:__span-0-55) [ 1968 0 R /XYZ 60.307257 476.215878 0 ] (Code/DataWrapper/:__span-0-56) [ 1968 0 R /XYZ 60.307257 462.815526 0 ] (Code/DataWrapper/:__span-0-57) [ 1968 0 R /XYZ 60.307257 422.614470 0 ] (Code/DataWrapper/:__span-0-58) [ 1968 0 R /XYZ 60.307257 395.813766 0 ] (Code/DataWrapper/:__span-0-59) [ 1968 0 R /XYZ 60.307257 382.413414 0 ] (Code/DataWrapper/:__span-0-6) [ 1966 0 R /XYZ 60.307257 613.832958 0 ] (Code/DataWrapper/:__span-0-60) [ 1968 0 R /XYZ 60.307257 369.013062 0 ] (Code/DataWrapper/:__span-0-61) [ 1968 0 R /XYZ 60.307257 342.212358 0 ] (Code/DataWrapper/:__span-0-62) [ 1968 0 R /XYZ 60.307257 328.812006 0 ] (Code/DataWrapper/:__span-0-63) [ 1968 0 R /XYZ 60.307257 288.610950 0 ] (Code/DataWrapper/:__span-0-64) [ 1968 0 R /XYZ 60.307257 275.210598 0 ] (Code/DataWrapper/:__span-0-65) [ 1968 0 R /XYZ 60.307257 261.810246 0 ] (Code/DataWrapper/:__span-0-66) [ 1968 0 R /XYZ 60.307257 248.409894 0 ] (Code/DataWrapper/:__span-0-67) [ 1968 0 R /XYZ 60.307257 235.009542 0 ] (Code/DataWrapper/:__span-0-68) [ 1968 0 R /XYZ 60.307257 208.208838 0 ] (Code/DataWrapper/:__span-0-69) [ 1968 0 R /XYZ 60.307257 194.808486 0 ] (Code/DataWrapper/:__span-0-7) [ 1966 0 R /XYZ 60.307257 600.432606 0 ] (Code/DataWrapper/:__span-0-70) [ 1968 0 R /XYZ 60.307257 181.408134 0 ] (Code/DataWrapper/:__span-0-71) [ 1968 0 R /XYZ 60.307257 168.007782 0 ] (Code/DataWrapper/:__span-0-72) [ 1968 0 R /XYZ 60.307257 154.607430 0 ] (Code/DataWrapper/:__span-0-73) [ 1968 0 R /XYZ 60.307257 141.207078 0 ] (Code/DataWrapper/:__span-0-74) [ 1968 0 R /XYZ 60.307257 127.806726 0 ] (Code/DataWrapper/:__span-0-75) [ 1968 0 R /XYZ 60.307257 114.406374 0 ] (Code/DataWrapper/:__span-0-76) [ 1968 0 R /XYZ 60.307257 101.006022 0 ] (Code/DataWrapper/:__span-0-77) [ 1968 0 R /XYZ 60.307257 87.605670 0 ] (Code/DataWrapper/:__span-0-78) [ 1970 0 R /XYZ 60.307257 757.623270 0 ] (Code/DataWrapper/:__span-0-79) [ 1970 0 R /XYZ 60.307257 744.222918 0 ] (Code/DataWrapper/:__span-0-8) [ 1966 0 R /XYZ 60.307257 587.032254 0 ] (Code/DataWrapper/:__span-0-80) [ 1970 0 R /XYZ 60.307257 717.422214 0 ] (Code/DataWrapper/:__span-0-81) [ 1970 0 R /XYZ 60.307257 704.021862 0 ] (Code/DataWrapper/:__span-0-82) [ 1970 0 R /XYZ 60.307257 690.621510 0 ] (Code/DataWrapper/:__span-0-83) [ 1970 0 R /XYZ 60.307257 677.221158 0 ] (Code/DataWrapper/:__span-0-84) [ 1970 0 R /XYZ 60.307257 663.820806 0 ] (Code/DataWrapper/:__span-0-85) [ 1970 0 R /XYZ 60.307257 650.420454 0 ] (Code/DataWrapper/:__span-0-86) [ 1970 0 R /XYZ 60.307257 623.619750 0 ] (Code/DataWrapper/:__span-0-87) [ 1970 0 R /XYZ 60.307257 610.219398 0 ] (Code/DataWrapper/:__span-0-88) [ 1970 0 R /XYZ 60.307257 596.819046 0 ] (Code/DataWrapper/:__span-0-89) [ 1970 0 R /XYZ 60.307257 583.418694 0 ] (Code/DataWrapper/:__span-0-9) [ 1966 0 R /XYZ 60.307257 573.631902 0 ] (Code/DataWrapper/:__span-0-90) [ 1970 0 R /XYZ 60.307257 570.018342 0 ] (Code/DataWrapper/:__span-0-91) [ 1970 0 R /XYZ 60.307257 556.617990 0 ] (Code/DataWrapper/:__span-0-92) [ 1970 0 R /XYZ 60.307257 543.217638 0 ] (Code/DataWrapper/:__span-0-93) [ 1970 0 R /XYZ 60.307257 529.817286 0 ] (Code/DataWrapper/:__span-0-94) [ 1970 0 R /XYZ 60.307257 516.416934 0 ] (Code/DataWrapper/:__span-0-95) [ 1970 0 R /XYZ 60.307257 503.016582 0 ] (Code/DataWrapper/:__span-0-96) [ 1970 0 R /XYZ 60.307257 489.616230 0 ] (Code/DataWrapper/:__span-0-97) [ 1970 0 R /XYZ 60.307257 476.215878 0 ] (Code/DataWrapper/:__span-0-98) [ 1970 0 R /XYZ 60.307257 462.815526 0 ] (Code/DataWrapper/:__span-0-99) [ 1970 0 R /XYZ 60.307257 449.415174 0 ] (Code/DataWrapper/:datawrappercs) [ 1966 0 R /XYZ 39.386457 747.563622 0 ] (Code/DriverData/:) [ 1892 0 R /XYZ 39.386457 747.563622 0 ] (Code/DriverData/:__span-0-1) [ 1892 0 R /XYZ 60.307257 707.635422 0 ] (Code/DriverData/:__span-0-10) [ 1892 0 R /XYZ 60.307257 573.631902 0 ] (Code/DriverData/:__span-0-100) [ 1896 0 R /XYZ 60.307257 663.820806 0 ] (Code/DriverData/:__span-0-101) [ 1896 0 R /XYZ 60.307257 650.420454 0 ] (Code/DriverData/:__span-0-102) [ 1896 0 R /XYZ 60.307257 637.020102 0 ] (Code/DriverData/:__span-0-103) [ 1896 0 R /XYZ 60.307257 623.619750 0 ] (Code/DriverData/:__span-0-104) [ 1896 0 R /XYZ 60.307257 610.219398 0 ] (Code/DriverData/:__span-0-105) [ 1896 0 R /XYZ 60.307257 596.819046 0 ] (Code/DriverData/:__span-0-11) [ 1892 0 R /XYZ 60.307257 560.231550 0 ] (Code/DriverData/:__span-0-12) [ 1892 0 R /XYZ 60.307257 546.831198 0 ] (Code/DriverData/:__span-0-13) [ 1892 0 R /XYZ 60.307257 533.430846 0 ] (Code/DriverData/:__span-0-14) [ 1892 0 R /XYZ 60.307257 520.030494 0 ] (Code/DriverData/:__span-0-15) [ 1892 0 R /XYZ 60.307257 506.630142 0 ] (Code/DriverData/:__span-0-16) [ 1892 0 R /XYZ 60.307257 493.229790 0 ] (Code/DriverData/:__span-0-17) [ 1892 0 R /XYZ 60.307257 479.829438 0 ] (Code/DriverData/:__span-0-18) [ 1892 0 R /XYZ 60.307257 466.429086 0 ] (Code/DriverData/:__span-0-19) [ 1892 0 R /XYZ 60.307257 453.028734 0 ] (Code/DriverData/:__span-0-2) [ 1892 0 R /XYZ 60.307257 694.235070 0 ] (Code/DriverData/:__span-0-20) [ 1892 0 R /XYZ 60.307257 439.628382 0 ] (Code/DriverData/:__span-0-21) [ 1892 0 R /XYZ 60.307257 426.228030 0 ] (Code/DriverData/:__span-0-22) [ 1892 0 R /XYZ 60.307257 412.827678 0 ] (Code/DriverData/:__span-0-23) [ 1892 0 R /XYZ 60.307257 399.427326 0 ] (Code/DriverData/:__span-0-24) [ 1892 0 R /XYZ 60.307257 386.026974 0 ] (Code/DriverData/:__span-0-25) [ 1892 0 R /XYZ 60.307257 372.626622 0 ] (Code/DriverData/:__span-0-26) [ 1892 0 R /XYZ 60.307257 359.226270 0 ] (Code/DriverData/:__span-0-27) [ 1892 0 R /XYZ 60.307257 345.825918 0 ] (Code/DriverData/:__span-0-28) [ 1892 0 R /XYZ 60.307257 319.025214 0 ] (Code/DriverData/:__span-0-29) [ 1892 0 R /XYZ 60.307257 305.624862 0 ] (Code/DriverData/:__span-0-3) [ 1892 0 R /XYZ 60.307257 680.834718 0 ] (Code/DriverData/:__span-0-30) [ 1892 0 R /XYZ 60.307257 292.224510 0 ] (Code/DriverData/:__span-0-31) [ 1892 0 R /XYZ 60.307257 278.824158 0 ] (Code/DriverData/:__span-0-32) [ 1892 0 R /XYZ 60.307257 265.423806 0 ] (Code/DriverData/:__span-0-33) [ 1892 0 R /XYZ 60.307257 252.023454 0 ] (Code/DriverData/:__span-0-34) [ 1892 0 R /XYZ 60.307257 238.623102 0 ] (Code/DriverData/:__span-0-35) [ 1892 0 R /XYZ 60.307257 225.222750 0 ] (Code/DriverData/:__span-0-36) [ 1892 0 R /XYZ 60.307257 211.822398 0 ] (Code/DriverData/:__span-0-37) [ 1892 0 R /XYZ 60.307257 198.422046 0 ] (Code/DriverData/:__span-0-38) [ 1892 0 R /XYZ 60.307257 185.021694 0 ] (Code/DriverData/:__span-0-39) [ 1892 0 R /XYZ 60.307257 171.621342 0 ] (Code/DriverData/:__span-0-4) [ 1892 0 R /XYZ 60.307257 667.434366 0 ] (Code/DriverData/:__span-0-40) [ 1892 0 R /XYZ 60.307257 158.220990 0 ] (Code/DriverData/:__span-0-41) [ 1892 0 R /XYZ 60.307257 144.820638 0 ] (Code/DriverData/:__span-0-42) [ 1892 0 R /XYZ 60.307257 131.420286 0 ] (Code/DriverData/:__span-0-43) [ 1892 0 R /XYZ 60.307257 118.019934 0 ] (Code/DriverData/:__span-0-44) [ 1892 0 R /XYZ 60.307257 104.619582 0 ] (Code/DriverData/:__span-0-45) [ 1892 0 R /XYZ 60.307257 91.219230 0 ] (Code/DriverData/:__span-0-46) [ 1894 0 R /XYZ 60.307257 771.023622 0 ] (Code/DriverData/:__span-0-47) [ 1894 0 R /XYZ 60.307257 757.623270 0 ] (Code/DriverData/:__span-0-48) [ 1894 0 R /XYZ 60.307257 744.222918 0 ] (Code/DriverData/:__span-0-49) [ 1894 0 R /XYZ 60.307257 730.822566 0 ] (Code/DriverData/:__span-0-5) [ 1892 0 R /XYZ 60.307257 640.633662 0 ] (Code/DriverData/:__span-0-50) [ 1894 0 R /XYZ 60.307257 717.422214 0 ] (Code/DriverData/:__span-0-51) [ 1894 0 R /XYZ 60.307257 704.021862 0 ] (Code/DriverData/:__span-0-52) [ 1894 0 R /XYZ 60.307257 690.621510 0 ] (Code/DriverData/:__span-0-53) [ 1894 0 R /XYZ 60.307257 677.221158 0 ] (Code/DriverData/:__span-0-54) [ 1894 0 R /XYZ 60.307257 663.820806 0 ] (Code/DriverData/:__span-0-55) [ 1894 0 R /XYZ 60.307257 650.420454 0 ] (Code/DriverData/:__span-0-56) [ 1894 0 R /XYZ 60.307257 637.020102 0 ] (Code/DriverData/:__span-0-57) [ 1894 0 R /XYZ 60.307257 623.619750 0 ] (Code/DriverData/:__span-0-58) [ 1894 0 R /XYZ 60.307257 610.219398 0 ] (Code/DriverData/:__span-0-59) [ 1894 0 R /XYZ 60.307257 596.819046 0 ] (Code/DriverData/:__span-0-6) [ 1892 0 R /XYZ 60.307257 627.233310 0 ] (Code/DriverData/:__span-0-60) [ 1894 0 R /XYZ 60.307257 583.418694 0 ] (Code/DriverData/:__span-0-61) [ 1894 0 R /XYZ 60.307257 570.018342 0 ] (Code/DriverData/:__span-0-62) [ 1894 0 R /XYZ 60.307257 556.617990 0 ] (Code/DriverData/:__span-0-63) [ 1894 0 R /XYZ 60.307257 543.217638 0 ] (Code/DriverData/:__span-0-64) [ 1894 0 R /XYZ 60.307257 529.817286 0 ] (Code/DriverData/:__span-0-65) [ 1894 0 R /XYZ 60.307257 516.416934 0 ] (Code/DriverData/:__span-0-66) [ 1894 0 R /XYZ 60.307257 489.616230 0 ] (Code/DriverData/:__span-0-67) [ 1894 0 R /XYZ 60.307257 476.215878 0 ] (Code/DriverData/:__span-0-68) [ 1894 0 R /XYZ 60.307257 449.415174 0 ] (Code/DriverData/:__span-0-69) [ 1894 0 R /XYZ 60.307257 436.014822 0 ] (Code/DriverData/:__span-0-7) [ 1892 0 R /XYZ 60.307257 613.832958 0 ] (Code/DriverData/:__span-0-70) [ 1894 0 R /XYZ 60.307257 422.614470 0 ] (Code/DriverData/:__span-0-71) [ 1894 0 R /XYZ 60.307257 409.214118 0 ] (Code/DriverData/:__span-0-72) [ 1894 0 R /XYZ 60.307257 382.413414 0 ] (Code/DriverData/:__span-0-73) [ 1894 0 R /XYZ 60.307257 369.013062 0 ] (Code/DriverData/:__span-0-74) [ 1894 0 R /XYZ 60.307257 355.612710 0 ] (Code/DriverData/:__span-0-75) [ 1894 0 R /XYZ 60.307257 342.212358 0 ] (Code/DriverData/:__span-0-76) [ 1894 0 R /XYZ 60.307257 315.411654 0 ] (Code/DriverData/:__span-0-77) [ 1894 0 R /XYZ 60.307257 302.011302 0 ] (Code/DriverData/:__span-0-78) [ 1894 0 R /XYZ 60.307257 275.210598 0 ] (Code/DriverData/:__span-0-79) [ 1894 0 R /XYZ 60.307257 261.810246 0 ] (Code/DriverData/:__span-0-8) [ 1892 0 R /XYZ 60.307257 600.432606 0 ] (Code/DriverData/:__span-0-80) [ 1894 0 R /XYZ 60.307257 235.009542 0 ] (Code/DriverData/:__span-0-81) [ 1894 0 R /XYZ 60.307257 221.609190 0 ] (Code/DriverData/:__span-0-82) [ 1894 0 R /XYZ 60.307257 208.208838 0 ] (Code/DriverData/:__span-0-83) [ 1894 0 R /XYZ 60.307257 194.808486 0 ] (Code/DriverData/:__span-0-84) [ 1894 0 R /XYZ 60.307257 181.408134 0 ] (Code/DriverData/:__span-0-85) [ 1894 0 R /XYZ 60.307257 168.007782 0 ] (Code/DriverData/:__span-0-86) [ 1894 0 R /XYZ 60.307257 154.607430 0 ] (Code/DriverData/:__span-0-87) [ 1894 0 R /XYZ 60.307257 141.207078 0 ] (Code/DriverData/:__span-0-88) [ 1894 0 R /XYZ 60.307257 127.806726 0 ] (Code/DriverData/:__span-0-89) [ 1894 0 R /XYZ 60.307257 114.406374 0 ] (Code/DriverData/:__span-0-9) [ 1892 0 R /XYZ 60.307257 587.032254 0 ] (Code/DriverData/:__span-0-90) [ 1894 0 R /XYZ 60.307257 101.006022 0 ] (Code/DriverData/:__span-0-91) [ 1894 0 R /XYZ 60.307257 87.605670 0 ] (Code/DriverData/:__span-0-92) [ 1896 0 R /XYZ 60.307257 771.023622 0 ] (Code/DriverData/:__span-0-93) [ 1896 0 R /XYZ 60.307257 757.623270 0 ] (Code/DriverData/:__span-0-94) [ 1896 0 R /XYZ 60.307257 744.222918 0 ] (Code/DriverData/:__span-0-95) [ 1896 0 R /XYZ 60.307257 730.822566 0 ] (Code/DriverData/:__span-0-96) [ 1896 0 R /XYZ 60.307257 717.422214 0 ] (Code/DriverData/:__span-0-97) [ 1896 0 R /XYZ 60.307257 704.021862 0 ] (Code/DriverData/:__span-0-98) [ 1896 0 R /XYZ 60.307257 690.621510 0 ] (Code/DriverData/:__span-0-99) [ 1896 0 R /XYZ 60.307257 677.221158 0 ] (Code/DriverData/:driverdatacs) [ 1892 0 R /XYZ 39.386457 747.563622 0 ] (Code/DriverDrsWindow/:) [ 1984 0 R /XYZ 39.386457 747.563622 0 ] (Code/DriverDrsWindow/:__span-0-1) [ 1984 0 R /XYZ 60.307257 707.635422 0 ] (Code/DriverDrsWindow/:__span-0-10) [ 1984 0 R /XYZ 60.307257 587.032254 0 ] (Code/DriverDrsWindow/:__span-0-100) [ 1988 0 R /XYZ 60.307257 717.422214 0 ] (Code/DriverDrsWindow/:__span-0-101) [ 1988 0 R /XYZ 60.307257 704.021862 0 ] (Code/DriverDrsWindow/:__span-0-102) [ 1988 0 R /XYZ 60.307257 690.621510 0 ] (Code/DriverDrsWindow/:__span-0-103) [ 1988 0 R /XYZ 60.307257 663.820806 0 ] (Code/DriverDrsWindow/:__span-0-104) [ 1988 0 R /XYZ 60.307257 650.420454 0 ] (Code/DriverDrsWindow/:__span-0-105) [ 1988 0 R /XYZ 60.307257 637.020102 0 ] (Code/DriverDrsWindow/:__span-0-106) [ 1988 0 R /XYZ 60.307257 610.219398 0 ] (Code/DriverDrsWindow/:__span-0-107) [ 1988 0 R /XYZ 60.307257 596.819046 0 ] (Code/DriverDrsWindow/:__span-0-108) [ 1988 0 R /XYZ 60.307257 583.418694 0 ] (Code/DriverDrsWindow/:__span-0-109) [ 1988 0 R /XYZ 60.307257 570.018342 0 ] (Code/DriverDrsWindow/:__span-0-11) [ 1984 0 R /XYZ 60.307257 573.631902 0 ] (Code/DriverDrsWindow/:__span-0-110) [ 1988 0 R /XYZ 60.307257 556.617990 0 ] (Code/DriverDrsWindow/:__span-0-111) [ 1988 0 R /XYZ 60.307257 543.217638 0 ] (Code/DriverDrsWindow/:__span-0-112) [ 1988 0 R /XYZ 60.307257 529.817286 0 ] (Code/DriverDrsWindow/:__span-0-113) [ 1988 0 R /XYZ 60.307257 516.416934 0 ] (Code/DriverDrsWindow/:__span-0-114) [ 1988 0 R /XYZ 60.307257 503.016582 0 ] (Code/DriverDrsWindow/:__span-0-12) [ 1984 0 R /XYZ 60.307257 560.231550 0 ] (Code/DriverDrsWindow/:__span-0-13) [ 1984 0 R /XYZ 60.307257 546.831198 0 ] (Code/DriverDrsWindow/:__span-0-14) [ 1984 0 R /XYZ 60.307257 533.430846 0 ] (Code/DriverDrsWindow/:__span-0-15) [ 1984 0 R /XYZ 60.307257 520.030494 0 ] (Code/DriverDrsWindow/:__span-0-16) [ 1984 0 R /XYZ 60.307257 506.630142 0 ] (Code/DriverDrsWindow/:__span-0-17) [ 1984 0 R /XYZ 60.307257 493.229790 0 ] (Code/DriverDrsWindow/:__span-0-18) [ 1984 0 R /XYZ 60.307257 479.829438 0 ] (Code/DriverDrsWindow/:__span-0-19) [ 1984 0 R /XYZ 60.307257 466.429086 0 ] (Code/DriverDrsWindow/:__span-0-2) [ 1984 0 R /XYZ 60.307257 694.235070 0 ] (Code/DriverDrsWindow/:__span-0-20) [ 1984 0 R /XYZ 60.307257 453.028734 0 ] (Code/DriverDrsWindow/:__span-0-21) [ 1984 0 R /XYZ 60.307257 439.628382 0 ] (Code/DriverDrsWindow/:__span-0-22) [ 1984 0 R /XYZ 60.307257 426.228030 0 ] (Code/DriverDrsWindow/:__span-0-23) [ 1984 0 R /XYZ 60.307257 399.427326 0 ] (Code/DriverDrsWindow/:__span-0-24) [ 1984 0 R /XYZ 60.307257 386.026974 0 ] (Code/DriverDrsWindow/:__span-0-25) [ 1984 0 R /XYZ 60.307257 372.626622 0 ] (Code/DriverDrsWindow/:__span-0-26) [ 1984 0 R /XYZ 60.307257 359.226270 0 ] (Code/DriverDrsWindow/:__span-0-27) [ 1984 0 R /XYZ 60.307257 345.825918 0 ] (Code/DriverDrsWindow/:__span-0-28) [ 1984 0 R /XYZ 60.307257 332.425566 0 ] (Code/DriverDrsWindow/:__span-0-29) [ 1984 0 R /XYZ 60.307257 319.025214 0 ] (Code/DriverDrsWindow/:__span-0-3) [ 1984 0 R /XYZ 60.307257 680.834718 0 ] (Code/DriverDrsWindow/:__span-0-30) [ 1984 0 R /XYZ 60.307257 292.224510 0 ] (Code/DriverDrsWindow/:__span-0-31) [ 1984 0 R /XYZ 60.307257 278.824158 0 ] (Code/DriverDrsWindow/:__span-0-32) [ 1984 0 R /XYZ 60.307257 265.423806 0 ] (Code/DriverDrsWindow/:__span-0-33) [ 1984 0 R /XYZ 60.307257 252.023454 0 ] (Code/DriverDrsWindow/:__span-0-34) [ 1984 0 R /XYZ 60.307257 238.623102 0 ] (Code/DriverDrsWindow/:__span-0-35) [ 1984 0 R /XYZ 60.307257 225.222750 0 ] (Code/DriverDrsWindow/:__span-0-36) [ 1984 0 R /XYZ 60.307257 211.822398 0 ] (Code/DriverDrsWindow/:__span-0-37) [ 1984 0 R /XYZ 60.307257 198.422046 0 ] (Code/DriverDrsWindow/:__span-0-38) [ 1984 0 R /XYZ 60.307257 185.021694 0 ] (Code/DriverDrsWindow/:__span-0-39) [ 1984 0 R /XYZ 60.307257 171.621342 0 ] (Code/DriverDrsWindow/:__span-0-4) [ 1984 0 R /XYZ 60.307257 667.434366 0 ] (Code/DriverDrsWindow/:__span-0-40) [ 1984 0 R /XYZ 60.307257 158.220990 0 ] (Code/DriverDrsWindow/:__span-0-41) [ 1984 0 R /XYZ 60.307257 144.820638 0 ] (Code/DriverDrsWindow/:__span-0-42) [ 1984 0 R /XYZ 60.307257 131.420286 0 ] (Code/DriverDrsWindow/:__span-0-43) [ 1984 0 R /XYZ 60.307257 118.019934 0 ] (Code/DriverDrsWindow/:__span-0-44) [ 1984 0 R /XYZ 60.307257 104.619582 0 ] (Code/DriverDrsWindow/:__span-0-45) [ 1984 0 R /XYZ 60.307257 91.219230 0 ] (Code/DriverDrsWindow/:__span-0-46) [ 1986 0 R /XYZ 60.307257 771.023622 0 ] (Code/DriverDrsWindow/:__span-0-47) [ 1986 0 R /XYZ 60.307257 757.623270 0 ] (Code/DriverDrsWindow/:__span-0-48) [ 1986 0 R /XYZ 60.307257 730.822566 0 ] (Code/DriverDrsWindow/:__span-0-49) [ 1986 0 R /XYZ 60.307257 717.422214 0 ] (Code/DriverDrsWindow/:__span-0-5) [ 1984 0 R /XYZ 60.307257 654.034014 0 ] (Code/DriverDrsWindow/:__span-0-50) [ 1986 0 R /XYZ 60.307257 704.021862 0 ] (Code/DriverDrsWindow/:__span-0-51) [ 1986 0 R /XYZ 60.307257 690.621510 0 ] (Code/DriverDrsWindow/:__span-0-52) [ 1986 0 R /XYZ 60.307257 677.221158 0 ] (Code/DriverDrsWindow/:__span-0-53) [ 1986 0 R /XYZ 60.307257 663.820806 0 ] (Code/DriverDrsWindow/:__span-0-54) [ 1986 0 R /XYZ 60.307257 650.420454 0 ] (Code/DriverDrsWindow/:__span-0-55) [ 1986 0 R /XYZ 60.307257 637.020102 0 ] (Code/DriverDrsWindow/:__span-0-56) [ 1986 0 R /XYZ 60.307257 623.619750 0 ] (Code/DriverDrsWindow/:__span-0-57) [ 1986 0 R /XYZ 60.307257 596.819046 0 ] (Code/DriverDrsWindow/:__span-0-58) [ 1986 0 R /XYZ 60.307257 583.418694 0 ] (Code/DriverDrsWindow/:__span-0-59) [ 1986 0 R /XYZ 60.307257 570.018342 0 ] (Code/DriverDrsWindow/:__span-0-6) [ 1984 0 R /XYZ 60.307257 640.633662 0 ] (Code/DriverDrsWindow/:__span-0-60) [ 1986 0 R /XYZ 60.307257 556.617990 0 ] (Code/DriverDrsWindow/:__span-0-61) [ 1986 0 R /XYZ 60.307257 543.217638 0 ] (Code/DriverDrsWindow/:__span-0-62) [ 1986 0 R /XYZ 60.307257 529.817286 0 ] (Code/DriverDrsWindow/:__span-0-63) [ 1986 0 R /XYZ 60.307257 516.416934 0 ] (Code/DriverDrsWindow/:__span-0-64) [ 1986 0 R /XYZ 60.307257 503.016582 0 ] (Code/DriverDrsWindow/:__span-0-65) [ 1986 0 R /XYZ 60.307257 489.616230 0 ] (Code/DriverDrsWindow/:__span-0-66) [ 1986 0 R /XYZ 60.307257 476.215878 0 ] (Code/DriverDrsWindow/:__span-0-67) [ 1986 0 R /XYZ 60.307257 462.815526 0 ] (Code/DriverDrsWindow/:__span-0-68) [ 1986 0 R /XYZ 60.307257 449.415174 0 ] (Code/DriverDrsWindow/:__span-0-69) [ 1986 0 R /XYZ 60.307257 436.014822 0 ] (Code/DriverDrsWindow/:__span-0-7) [ 1984 0 R /XYZ 60.307257 627.233310 0 ] (Code/DriverDrsWindow/:__span-0-70) [ 1986 0 R /XYZ 60.307257 422.614470 0 ] (Code/DriverDrsWindow/:__span-0-71) [ 1986 0 R /XYZ 60.307257 409.214118 0 ] (Code/DriverDrsWindow/:__span-0-72) [ 1986 0 R /XYZ 60.307257 395.813766 0 ] (Code/DriverDrsWindow/:__span-0-73) [ 1986 0 R /XYZ 60.307257 382.413414 0 ] (Code/DriverDrsWindow/:__span-0-74) [ 1986 0 R /XYZ 60.307257 369.013062 0 ] (Code/DriverDrsWindow/:__span-0-75) [ 1986 0 R /XYZ 60.307257 355.612710 0 ] (Code/DriverDrsWindow/:__span-0-76) [ 1986 0 R /XYZ 60.307257 342.212358 0 ] (Code/DriverDrsWindow/:__span-0-77) [ 1986 0 R /XYZ 60.307257 328.812006 0 ] (Code/DriverDrsWindow/:__span-0-78) [ 1986 0 R /XYZ 60.307257 315.411654 0 ] (Code/DriverDrsWindow/:__span-0-79) [ 1986 0 R /XYZ 60.307257 302.011302 0 ] (Code/DriverDrsWindow/:__span-0-8) [ 1984 0 R /XYZ 60.307257 613.832958 0 ] (Code/DriverDrsWindow/:__span-0-80) [ 1986 0 R /XYZ 60.307257 288.610950 0 ] (Code/DriverDrsWindow/:__span-0-81) [ 1986 0 R /XYZ 60.307257 275.210598 0 ] (Code/DriverDrsWindow/:__span-0-82) [ 1986 0 R /XYZ 60.307257 261.810246 0 ] (Code/DriverDrsWindow/:__span-0-83) [ 1986 0 R /XYZ 60.307257 248.409894 0 ] (Code/DriverDrsWindow/:__span-0-84) [ 1986 0 R /XYZ 60.307257 235.009542 0 ] (Code/DriverDrsWindow/:__span-0-85) [ 1986 0 R /XYZ 60.307257 221.609190 0 ] (Code/DriverDrsWindow/:__span-0-86) [ 1986 0 R /XYZ 60.307257 208.208838 0 ] (Code/DriverDrsWindow/:__span-0-87) [ 1986 0 R /XYZ 60.307257 194.808486 0 ] (Code/DriverDrsWindow/:__span-0-88) [ 1986 0 R /XYZ 60.307257 181.408134 0 ] (Code/DriverDrsWindow/:__span-0-89) [ 1986 0 R /XYZ 60.307257 168.007782 0 ] (Code/DriverDrsWindow/:__span-0-9) [ 1984 0 R /XYZ 60.307257 600.432606 0 ] (Code/DriverDrsWindow/:__span-0-90) [ 1986 0 R /XYZ 60.307257 154.607430 0 ] (Code/DriverDrsWindow/:__span-0-91) [ 1986 0 R /XYZ 60.307257 141.207078 0 ] (Code/DriverDrsWindow/:__span-0-92) [ 1986 0 R /XYZ 60.307257 127.806726 0 ] (Code/DriverDrsWindow/:__span-0-93) [ 1986 0 R /XYZ 60.307257 114.406374 0 ] (Code/DriverDrsWindow/:__span-0-94) [ 1986 0 R /XYZ 60.307257 101.006022 0 ] (Code/DriverDrsWindow/:__span-0-95) [ 1986 0 R /XYZ 60.307257 87.605670 0 ] (Code/DriverDrsWindow/:__span-0-96) [ 1988 0 R /XYZ 60.307257 771.023622 0 ] (Code/DriverDrsWindow/:__span-0-97) [ 1988 0 R /XYZ 60.307257 757.623270 0 ] (Code/DriverDrsWindow/:__span-0-98) [ 1988 0 R /XYZ 60.307257 744.222918 0 ] (Code/DriverDrsWindow/:__span-0-99) [ 1988 0 R /XYZ 60.307257 730.822566 0 ] (Code/DriverDrsWindow/:driverdrswindowcs) [ 1984 0 R /XYZ 39.386457 747.563622 0 ] (Code/DriverGapToLeaderWindow/:) [ 1898 0 R /XYZ 39.386457 747.563622 0 ] (Code/DriverGapToLeaderWindow/:__span-0-1) [ 1898 0 R /XYZ 60.307257 707.635422 0 ] (Code/DriverGapToLeaderWindow/:__span-0-10) [ 1898 0 R /XYZ 60.307257 587.032254 0 ] (Code/DriverGapToLeaderWindow/:__span-0-11) [ 1898 0 R /XYZ 60.307257 573.631902 0 ] (Code/DriverGapToLeaderWindow/:__span-0-12) [ 1898 0 R /XYZ 60.307257 560.231550 0 ] (Code/DriverGapToLeaderWindow/:__span-0-13) [ 1898 0 R /XYZ 60.307257 546.831198 0 ] (Code/DriverGapToLeaderWindow/:__span-0-14) [ 1898 0 R /XYZ 60.307257 533.430846 0 ] (Code/DriverGapToLeaderWindow/:__span-0-15) [ 1898 0 R /XYZ 60.307257 520.030494 0 ] (Code/DriverGapToLeaderWindow/:__span-0-16) [ 1898 0 R /XYZ 60.307257 506.630142 0 ] (Code/DriverGapToLeaderWindow/:__span-0-17) [ 1898 0 R /XYZ 60.307257 493.229790 0 ] (Code/DriverGapToLeaderWindow/:__span-0-18) [ 1898 0 R /XYZ 60.307257 479.829438 0 ] (Code/DriverGapToLeaderWindow/:__span-0-19) [ 1898 0 R /XYZ 60.307257 453.028734 0 ] (Code/DriverGapToLeaderWindow/:__span-0-2) [ 1898 0 R /XYZ 60.307257 694.235070 0 ] (Code/DriverGapToLeaderWindow/:__span-0-20) [ 1898 0 R /XYZ 60.307257 439.628382 0 ] (Code/DriverGapToLeaderWindow/:__span-0-21) [ 1898 0 R /XYZ 60.307257 426.228030 0 ] (Code/DriverGapToLeaderWindow/:__span-0-22) [ 1898 0 R /XYZ 60.307257 412.827678 0 ] (Code/DriverGapToLeaderWindow/:__span-0-23) [ 1898 0 R /XYZ 60.307257 399.427326 0 ] (Code/DriverGapToLeaderWindow/:__span-0-24) [ 1898 0 R /XYZ 60.307257 386.026974 0 ] (Code/DriverGapToLeaderWindow/:__span-0-25) [ 1898 0 R /XYZ 60.307257 372.626622 0 ] (Code/DriverGapToLeaderWindow/:__span-0-26) [ 1898 0 R /XYZ 60.307257 359.226270 0 ] (Code/DriverGapToLeaderWindow/:__span-0-27) [ 1898 0 R /XYZ 60.307257 345.825918 0 ] (Code/DriverGapToLeaderWindow/:__span-0-28) [ 1898 0 R /XYZ 60.307257 332.425566 0 ] (Code/DriverGapToLeaderWindow/:__span-0-29) [ 1898 0 R /XYZ 60.307257 305.624862 0 ] (Code/DriverGapToLeaderWindow/:__span-0-3) [ 1898 0 R /XYZ 60.307257 680.834718 0 ] (Code/DriverGapToLeaderWindow/:__span-0-30) [ 1898 0 R /XYZ 60.307257 292.224510 0 ] (Code/DriverGapToLeaderWindow/:__span-0-31) [ 1898 0 R /XYZ 60.307257 278.824158 0 ] (Code/DriverGapToLeaderWindow/:__span-0-32) [ 1898 0 R /XYZ 60.307257 265.423806 0 ] (Code/DriverGapToLeaderWindow/:__span-0-4) [ 1898 0 R /XYZ 60.307257 667.434366 0 ] (Code/DriverGapToLeaderWindow/:__span-0-5) [ 1898 0 R /XYZ 60.307257 654.034014 0 ] (Code/DriverGapToLeaderWindow/:__span-0-6) [ 1898 0 R /XYZ 60.307257 640.633662 0 ] (Code/DriverGapToLeaderWindow/:__span-0-7) [ 1898 0 R /XYZ 60.307257 627.233310 0 ] (Code/DriverGapToLeaderWindow/:__span-0-8) [ 1898 0 R /XYZ 60.307257 613.832958 0 ] (Code/DriverGapToLeaderWindow/:__span-0-9) [ 1898 0 R /XYZ 60.307257 600.432606 0 ] (Code/DriverGapToLeaderWindow/:drivergaptoleaderwindowcs) [ 1898 0 R /XYZ 39.386457 747.563622 0 ] (Code/DriverLapTimeWindow/:) [ 1990 0 R /XYZ 39.386457 747.563622 0 ] (Code/DriverLapTimeWindow/:__span-0-1) [ 1990 0 R /XYZ 60.307257 707.635422 0 ] (Code/DriverLapTimeWindow/:__span-0-10) [ 1990 0 R /XYZ 60.307257 587.032254 0 ] (Code/DriverLapTimeWindow/:__span-0-11) [ 1990 0 R /XYZ 60.307257 573.631902 0 ] (Code/DriverLapTimeWindow/:__span-0-12) [ 1990 0 R /XYZ 60.307257 560.231550 0 ] (Code/DriverLapTimeWindow/:__span-0-13) [ 1990 0 R /XYZ 60.307257 546.831198 0 ] (Code/DriverLapTimeWindow/:__span-0-14) [ 1990 0 R /XYZ 60.307257 533.430846 0 ] (Code/DriverLapTimeWindow/:__span-0-15) [ 1990 0 R /XYZ 60.307257 520.030494 0 ] (Code/DriverLapTimeWindow/:__span-0-16) [ 1990 0 R /XYZ 60.307257 506.630142 0 ] (Code/DriverLapTimeWindow/:__span-0-17) [ 1990 0 R /XYZ 60.307257 493.229790 0 ] (Code/DriverLapTimeWindow/:__span-0-18) [ 1990 0 R /XYZ 60.307257 479.829438 0 ] (Code/DriverLapTimeWindow/:__span-0-19) [ 1990 0 R /XYZ 60.307257 453.028734 0 ] (Code/DriverLapTimeWindow/:__span-0-2) [ 1990 0 R /XYZ 60.307257 694.235070 0 ] (Code/DriverLapTimeWindow/:__span-0-20) [ 1990 0 R /XYZ 60.307257 439.628382 0 ] (Code/DriverLapTimeWindow/:__span-0-21) [ 1990 0 R /XYZ 60.307257 426.228030 0 ] (Code/DriverLapTimeWindow/:__span-0-22) [ 1990 0 R /XYZ 60.307257 412.827678 0 ] (Code/DriverLapTimeWindow/:__span-0-23) [ 1990 0 R /XYZ 60.307257 399.427326 0 ] (Code/DriverLapTimeWindow/:__span-0-24) [ 1990 0 R /XYZ 60.307257 386.026974 0 ] (Code/DriverLapTimeWindow/:__span-0-25) [ 1990 0 R /XYZ 60.307257 372.626622 0 ] (Code/DriverLapTimeWindow/:__span-0-26) [ 1990 0 R /XYZ 60.307257 359.226270 0 ] (Code/DriverLapTimeWindow/:__span-0-27) [ 1990 0 R /XYZ 60.307257 345.825918 0 ] (Code/DriverLapTimeWindow/:__span-0-28) [ 1990 0 R /XYZ 60.307257 332.425566 0 ] (Code/DriverLapTimeWindow/:__span-0-29) [ 1990 0 R /XYZ 60.307257 305.624862 0 ] (Code/DriverLapTimeWindow/:__span-0-3) [ 1990 0 R /XYZ 60.307257 680.834718 0 ] (Code/DriverLapTimeWindow/:__span-0-30) [ 1990 0 R /XYZ 60.307257 292.224510 0 ] (Code/DriverLapTimeWindow/:__span-0-31) [ 1990 0 R /XYZ 60.307257 278.824158 0 ] (Code/DriverLapTimeWindow/:__span-0-32) [ 1990 0 R /XYZ 60.307257 265.423806 0 ] (Code/DriverLapTimeWindow/:__span-0-4) [ 1990 0 R /XYZ 60.307257 667.434366 0 ] (Code/DriverLapTimeWindow/:__span-0-5) [ 1990 0 R /XYZ 60.307257 654.034014 0 ] (Code/DriverLapTimeWindow/:__span-0-6) [ 1990 0 R /XYZ 60.307257 640.633662 0 ] (Code/DriverLapTimeWindow/:__span-0-7) [ 1990 0 R /XYZ 60.307257 627.233310 0 ] (Code/DriverLapTimeWindow/:__span-0-8) [ 1990 0 R /XYZ 60.307257 613.832958 0 ] (Code/DriverLapTimeWindow/:__span-0-9) [ 1990 0 R /XYZ 60.307257 600.432606 0 ] (Code/DriverLapTimeWindow/:driverlaptimewindowcs) [ 1990 0 R /XYZ 39.386457 747.563622 0 ] (Code/DriverNameWindow/:) [ 1900 0 R /XYZ 39.386457 747.563622 0 ] (Code/DriverNameWindow/:__span-0-1) [ 1900 0 R /XYZ 60.307257 707.635422 0 ] (Code/DriverNameWindow/:__span-0-10) [ 1900 0 R /XYZ 60.307257 587.032254 0 ] (Code/DriverNameWindow/:__span-0-11) [ 1900 0 R /XYZ 60.307257 573.631902 0 ] (Code/DriverNameWindow/:__span-0-12) [ 1900 0 R /XYZ 60.307257 560.231550 0 ] (Code/DriverNameWindow/:__span-0-13) [ 1900 0 R /XYZ 60.307257 546.831198 0 ] (Code/DriverNameWindow/:__span-0-14) [ 1900 0 R /XYZ 60.307257 533.430846 0 ] (Code/DriverNameWindow/:__span-0-15) [ 1900 0 R /XYZ 60.307257 520.030494 0 ] (Code/DriverNameWindow/:__span-0-16) [ 1900 0 R /XYZ 60.307257 506.630142 0 ] (Code/DriverNameWindow/:__span-0-17) [ 1900 0 R /XYZ 60.307257 493.229790 0 ] (Code/DriverNameWindow/:__span-0-18) [ 1900 0 R /XYZ 60.307257 479.829438 0 ] (Code/DriverNameWindow/:__span-0-19) [ 1900 0 R /XYZ 60.307257 453.028734 0 ] (Code/DriverNameWindow/:__span-0-2) [ 1900 0 R /XYZ 60.307257 694.235070 0 ] (Code/DriverNameWindow/:__span-0-20) [ 1900 0 R /XYZ 60.307257 439.628382 0 ] (Code/DriverNameWindow/:__span-0-21) [ 1900 0 R /XYZ 60.307257 426.228030 0 ] (Code/DriverNameWindow/:__span-0-22) [ 1900 0 R /XYZ 60.307257 412.827678 0 ] (Code/DriverNameWindow/:__span-0-23) [ 1900 0 R /XYZ 60.307257 399.427326 0 ] (Code/DriverNameWindow/:__span-0-24) [ 1900 0 R /XYZ 60.307257 386.026974 0 ] (Code/DriverNameWindow/:__span-0-25) [ 1900 0 R /XYZ 60.307257 372.626622 0 ] (Code/DriverNameWindow/:__span-0-26) [ 1900 0 R /XYZ 60.307257 345.825918 0 ] (Code/DriverNameWindow/:__span-0-27) [ 1900 0 R /XYZ 60.307257 319.025214 0 ] (Code/DriverNameWindow/:__span-0-28) [ 1900 0 R /XYZ 60.307257 305.624862 0 ] (Code/DriverNameWindow/:__span-0-29) [ 1900 0 R /XYZ 60.307257 292.224510 0 ] (Code/DriverNameWindow/:__span-0-3) [ 1900 0 R /XYZ 60.307257 680.834718 0 ] (Code/DriverNameWindow/:__span-0-30) [ 1900 0 R /XYZ 60.307257 278.824158 0 ] (Code/DriverNameWindow/:__span-0-31) [ 1900 0 R /XYZ 60.307257 265.423806 0 ] (Code/DriverNameWindow/:__span-0-32) [ 1900 0 R /XYZ 60.307257 252.023454 0 ] (Code/DriverNameWindow/:__span-0-33) [ 1900 0 R /XYZ 60.307257 238.623102 0 ] (Code/DriverNameWindow/:__span-0-34) [ 1900 0 R /XYZ 60.307257 225.222750 0 ] (Code/DriverNameWindow/:__span-0-35) [ 1900 0 R /XYZ 60.307257 198.422046 0 ] (Code/DriverNameWindow/:__span-0-36) [ 1900 0 R /XYZ 60.307257 171.621342 0 ] (Code/DriverNameWindow/:__span-0-37) [ 1900 0 R /XYZ 60.307257 158.220990 0 ] (Code/DriverNameWindow/:__span-0-38) [ 1900 0 R /XYZ 60.307257 144.820638 0 ] (Code/DriverNameWindow/:__span-0-39) [ 1900 0 R /XYZ 60.307257 131.420286 0 ] (Code/DriverNameWindow/:__span-0-4) [ 1900 0 R /XYZ 60.307257 667.434366 0 ] (Code/DriverNameWindow/:__span-0-40) [ 1900 0 R /XYZ 60.307257 118.019934 0 ] (Code/DriverNameWindow/:__span-0-41) [ 1900 0 R /XYZ 60.307257 104.619582 0 ] (Code/DriverNameWindow/:__span-0-42) [ 1900 0 R /XYZ 60.307257 91.219230 0 ] (Code/DriverNameWindow/:__span-0-43) [ 1902 0 R /XYZ 60.307257 757.623270 0 ] (Code/DriverNameWindow/:__span-0-44) [ 1902 0 R /XYZ 60.307257 730.822566 0 ] (Code/DriverNameWindow/:__span-0-45) [ 1902 0 R /XYZ 60.307257 717.422214 0 ] (Code/DriverNameWindow/:__span-0-46) [ 1902 0 R /XYZ 60.307257 690.621510 0 ] (Code/DriverNameWindow/:__span-0-47) [ 1902 0 R /XYZ 60.307257 677.221158 0 ] (Code/DriverNameWindow/:__span-0-48) [ 1902 0 R /XYZ 60.307257 663.820806 0 ] (Code/DriverNameWindow/:__span-0-49) [ 1902 0 R /XYZ 60.307257 650.420454 0 ] (Code/DriverNameWindow/:__span-0-5) [ 1900 0 R /XYZ 60.307257 654.034014 0 ] (Code/DriverNameWindow/:__span-0-50) [ 1902 0 R /XYZ 60.307257 637.020102 0 ] (Code/DriverNameWindow/:__span-0-51) [ 1902 0 R /XYZ 60.307257 623.619750 0 ] (Code/DriverNameWindow/:__span-0-52) [ 1902 0 R /XYZ 60.307257 610.219398 0 ] (Code/DriverNameWindow/:__span-0-53) [ 1902 0 R /XYZ 60.307257 596.819046 0 ] (Code/DriverNameWindow/:__span-0-54) [ 1902 0 R /XYZ 60.307257 583.418694 0 ] (Code/DriverNameWindow/:__span-0-55) [ 1902 0 R /XYZ 60.307257 570.018342 0 ] (Code/DriverNameWindow/:__span-0-56) [ 1902 0 R /XYZ 60.307257 556.617990 0 ] (Code/DriverNameWindow/:__span-0-57) [ 1902 0 R /XYZ 60.307257 543.217638 0 ] (Code/DriverNameWindow/:__span-0-6) [ 1900 0 R /XYZ 60.307257 640.633662 0 ] (Code/DriverNameWindow/:__span-0-7) [ 1900 0 R /XYZ 60.307257 627.233310 0 ] (Code/DriverNameWindow/:__span-0-8) [ 1900 0 R /XYZ 60.307257 613.832958 0 ] (Code/DriverNameWindow/:__span-0-9) [ 1900 0 R /XYZ 60.307257 600.432606 0 ] (Code/DriverNameWindow/:drivernamewindowcs) [ 1900 0 R /XYZ 39.386457 747.563622 0 ] (Code/DriverPositionWindow/:) [ 1992 0 R /XYZ 39.386457 747.563622 0 ] (Code/DriverPositionWindow/:__span-0-1) [ 1992 0 R /XYZ 60.307257 707.635422 0 ] (Code/DriverPositionWindow/:__span-0-10) [ 1992 0 R /XYZ 60.307257 587.032254 0 ] (Code/DriverPositionWindow/:__span-0-11) [ 1992 0 R /XYZ 60.307257 573.631902 0 ] (Code/DriverPositionWindow/:__span-0-12) [ 1992 0 R /XYZ 60.307257 560.231550 0 ] (Code/DriverPositionWindow/:__span-0-13) [ 1992 0 R /XYZ 60.307257 546.831198 0 ] (Code/DriverPositionWindow/:__span-0-14) [ 1992 0 R /XYZ 60.307257 533.430846 0 ] (Code/DriverPositionWindow/:__span-0-15) [ 1992 0 R /XYZ 60.307257 520.030494 0 ] (Code/DriverPositionWindow/:__span-0-16) [ 1992 0 R /XYZ 60.307257 506.630142 0 ] (Code/DriverPositionWindow/:__span-0-17) [ 1992 0 R /XYZ 60.307257 493.229790 0 ] (Code/DriverPositionWindow/:__span-0-18) [ 1992 0 R /XYZ 60.307257 479.829438 0 ] (Code/DriverPositionWindow/:__span-0-19) [ 1992 0 R /XYZ 60.307257 453.028734 0 ] (Code/DriverPositionWindow/:__span-0-2) [ 1992 0 R /XYZ 60.307257 694.235070 0 ] (Code/DriverPositionWindow/:__span-0-20) [ 1992 0 R /XYZ 60.307257 439.628382 0 ] (Code/DriverPositionWindow/:__span-0-21) [ 1992 0 R /XYZ 60.307257 426.228030 0 ] (Code/DriverPositionWindow/:__span-0-22) [ 1992 0 R /XYZ 60.307257 412.827678 0 ] (Code/DriverPositionWindow/:__span-0-23) [ 1992 0 R /XYZ 60.307257 399.427326 0 ] (Code/DriverPositionWindow/:__span-0-24) [ 1992 0 R /XYZ 60.307257 386.026974 0 ] (Code/DriverPositionWindow/:__span-0-25) [ 1992 0 R /XYZ 60.307257 372.626622 0 ] (Code/DriverPositionWindow/:__span-0-26) [ 1992 0 R /XYZ 60.307257 345.825918 0 ] (Code/DriverPositionWindow/:__span-0-27) [ 1992 0 R /XYZ 60.307257 332.425566 0 ] (Code/DriverPositionWindow/:__span-0-28) [ 1992 0 R /XYZ 60.307257 319.025214 0 ] (Code/DriverPositionWindow/:__span-0-29) [ 1992 0 R /XYZ 60.307257 305.624862 0 ] (Code/DriverPositionWindow/:__span-0-3) [ 1992 0 R /XYZ 60.307257 680.834718 0 ] (Code/DriverPositionWindow/:__span-0-30) [ 1992 0 R /XYZ 60.307257 292.224510 0 ] (Code/DriverPositionWindow/:__span-0-31) [ 1992 0 R /XYZ 60.307257 278.824158 0 ] (Code/DriverPositionWindow/:__span-0-32) [ 1992 0 R /XYZ 60.307257 265.423806 0 ] (Code/DriverPositionWindow/:__span-0-33) [ 1992 0 R /XYZ 60.307257 252.023454 0 ] (Code/DriverPositionWindow/:__span-0-34) [ 1992 0 R /XYZ 60.307257 238.623102 0 ] (Code/DriverPositionWindow/:__span-0-35) [ 1992 0 R /XYZ 60.307257 225.222750 0 ] (Code/DriverPositionWindow/:__span-0-36) [ 1992 0 R /XYZ 60.307257 211.822398 0 ] (Code/DriverPositionWindow/:__span-0-37) [ 1992 0 R /XYZ 60.307257 198.422046 0 ] (Code/DriverPositionWindow/:__span-0-38) [ 1992 0 R /XYZ 60.307257 185.021694 0 ] (Code/DriverPositionWindow/:__span-0-39) [ 1992 0 R /XYZ 60.307257 171.621342 0 ] (Code/DriverPositionWindow/:__span-0-4) [ 1992 0 R /XYZ 60.307257 667.434366 0 ] (Code/DriverPositionWindow/:__span-0-40) [ 1992 0 R /XYZ 60.307257 158.220990 0 ] (Code/DriverPositionWindow/:__span-0-41) [ 1992 0 R /XYZ 60.307257 144.820638 0 ] (Code/DriverPositionWindow/:__span-0-42) [ 1992 0 R /XYZ 60.307257 131.420286 0 ] (Code/DriverPositionWindow/:__span-0-5) [ 1992 0 R /XYZ 60.307257 654.034014 0 ] (Code/DriverPositionWindow/:__span-0-6) [ 1992 0 R /XYZ 60.307257 640.633662 0 ] (Code/DriverPositionWindow/:__span-0-7) [ 1992 0 R /XYZ 60.307257 627.233310 0 ] (Code/DriverPositionWindow/:__span-0-8) [ 1992 0 R /XYZ 60.307257 613.832958 0 ] (Code/DriverPositionWindow/:__span-0-9) [ 1992 0 R /XYZ 60.307257 600.432606 0 ] (Code/DriverPositionWindow/:driverpositionwindowcs) [ 1992 0 R /XYZ 39.386457 747.563622 0 ] (Code/DriverSectorWindow/:) [ 1904 0 R /XYZ 39.386457 747.563622 0 ] (Code/DriverSectorWindow/:__span-0-1) [ 1904 0 R /XYZ 60.307257 707.635422 0 ] (Code/DriverSectorWindow/:__span-0-10) [ 1904 0 R /XYZ 60.307257 573.631902 0 ] (Code/DriverSectorWindow/:__span-0-11) [ 1904 0 R /XYZ 60.307257 560.231550 0 ] (Code/DriverSectorWindow/:__span-0-12) [ 1904 0 R /XYZ 60.307257 546.831198 0 ] (Code/DriverSectorWindow/:__span-0-13) [ 1904 0 R /XYZ 60.307257 533.430846 0 ] (Code/DriverSectorWindow/:__span-0-14) [ 1904 0 R /XYZ 60.307257 520.030494 0 ] (Code/DriverSectorWindow/:__span-0-15) [ 1904 0 R /XYZ 60.307257 506.630142 0 ] (Code/DriverSectorWindow/:__span-0-16) [ 1904 0 R /XYZ 60.307257 493.229790 0 ] (Code/DriverSectorWindow/:__span-0-17) [ 1904 0 R /XYZ 60.307257 479.829438 0 ] (Code/DriverSectorWindow/:__span-0-18) [ 1904 0 R /XYZ 60.307257 466.429086 0 ] (Code/DriverSectorWindow/:__span-0-19) [ 1904 0 R /XYZ 60.307257 439.628382 0 ] (Code/DriverSectorWindow/:__span-0-2) [ 1904 0 R /XYZ 60.307257 694.235070 0 ] (Code/DriverSectorWindow/:__span-0-20) [ 1904 0 R /XYZ 60.307257 426.228030 0 ] (Code/DriverSectorWindow/:__span-0-21) [ 1904 0 R /XYZ 60.307257 412.827678 0 ] (Code/DriverSectorWindow/:__span-0-22) [ 1904 0 R /XYZ 60.307257 399.427326 0 ] (Code/DriverSectorWindow/:__span-0-23) [ 1904 0 R /XYZ 60.307257 386.026974 0 ] (Code/DriverSectorWindow/:__span-0-24) [ 1904 0 R /XYZ 60.307257 372.626622 0 ] (Code/DriverSectorWindow/:__span-0-25) [ 1904 0 R /XYZ 60.307257 359.226270 0 ] (Code/DriverSectorWindow/:__span-0-26) [ 1904 0 R /XYZ 60.307257 345.825918 0 ] (Code/DriverSectorWindow/:__span-0-27) [ 1904 0 R /XYZ 60.307257 332.425566 0 ] (Code/DriverSectorWindow/:__span-0-28) [ 1904 0 R /XYZ 60.307257 319.025214 0 ] (Code/DriverSectorWindow/:__span-0-29) [ 1904 0 R /XYZ 60.307257 292.224510 0 ] (Code/DriverSectorWindow/:__span-0-3) [ 1904 0 R /XYZ 60.307257 680.834718 0 ] (Code/DriverSectorWindow/:__span-0-30) [ 1904 0 R /XYZ 60.307257 278.824158 0 ] (Code/DriverSectorWindow/:__span-0-31) [ 1904 0 R /XYZ 60.307257 265.423806 0 ] (Code/DriverSectorWindow/:__span-0-32) [ 1904 0 R /XYZ 60.307257 252.023454 0 ] (Code/DriverSectorWindow/:__span-0-4) [ 1904 0 R /XYZ 60.307257 667.434366 0 ] (Code/DriverSectorWindow/:__span-0-5) [ 1904 0 R /XYZ 60.307257 640.633662 0 ] (Code/DriverSectorWindow/:__span-0-6) [ 1904 0 R /XYZ 60.307257 627.233310 0 ] (Code/DriverSectorWindow/:__span-0-7) [ 1904 0 R /XYZ 60.307257 613.832958 0 ] (Code/DriverSectorWindow/:__span-0-8) [ 1904 0 R /XYZ 60.307257 600.432606 0 ] (Code/DriverSectorWindow/:__span-0-9) [ 1904 0 R /XYZ 60.307257 587.032254 0 ] (Code/DriverSectorWindow/:driversectorwindowcs) [ 1904 0 R /XYZ 39.386457 747.563622 0 ] (Code/DriverTyresWindow/:) [ 1994 0 R /XYZ 39.386457 747.563622 0 ] (Code/DriverTyresWindow/:__span-0-1) [ 1994 0 R /XYZ 60.307257 707.635422 0 ] (Code/DriverTyresWindow/:__span-0-10) [ 1994 0 R /XYZ 60.307257 587.032254 0 ] (Code/DriverTyresWindow/:__span-0-100) [ 1998 0 R /XYZ 60.307257 570.018342 0 ] (Code/DriverTyresWindow/:__span-0-101) [ 1998 0 R /XYZ 60.307257 543.217638 0 ] (Code/DriverTyresWindow/:__span-0-102) [ 1998 0 R /XYZ 60.307257 529.817286 0 ] (Code/DriverTyresWindow/:__span-0-103) [ 1998 0 R /XYZ 60.307257 516.416934 0 ] (Code/DriverTyresWindow/:__span-0-104) [ 1998 0 R /XYZ 60.307257 503.016582 0 ] (Code/DriverTyresWindow/:__span-0-105) [ 1998 0 R /XYZ 60.307257 489.616230 0 ] (Code/DriverTyresWindow/:__span-0-106) [ 1998 0 R /XYZ 60.307257 476.215878 0 ] (Code/DriverTyresWindow/:__span-0-107) [ 1998 0 R /XYZ 60.307257 462.815526 0 ] (Code/DriverTyresWindow/:__span-0-108) [ 1998 0 R /XYZ 60.307257 449.415174 0 ] (Code/DriverTyresWindow/:__span-0-109) [ 1998 0 R /XYZ 60.307257 422.614470 0 ] (Code/DriverTyresWindow/:__span-0-11) [ 1994 0 R /XYZ 60.307257 573.631902 0 ] (Code/DriverTyresWindow/:__span-0-110) [ 1998 0 R /XYZ 60.307257 395.813766 0 ] (Code/DriverTyresWindow/:__span-0-111) [ 1998 0 R /XYZ 60.307257 382.413414 0 ] (Code/DriverTyresWindow/:__span-0-112) [ 1998 0 R /XYZ 60.307257 369.013062 0 ] (Code/DriverTyresWindow/:__span-0-113) [ 1998 0 R /XYZ 60.307257 355.612710 0 ] (Code/DriverTyresWindow/:__span-0-114) [ 1998 0 R /XYZ 60.307257 342.212358 0 ] (Code/DriverTyresWindow/:__span-0-115) [ 1998 0 R /XYZ 60.307257 328.812006 0 ] (Code/DriverTyresWindow/:__span-0-116) [ 1998 0 R /XYZ 60.307257 315.411654 0 ] (Code/DriverTyresWindow/:__span-0-117) [ 1998 0 R /XYZ 60.307257 302.011302 0 ] (Code/DriverTyresWindow/:__span-0-118) [ 1998 0 R /XYZ 60.307257 288.610950 0 ] (Code/DriverTyresWindow/:__span-0-119) [ 1998 0 R /XYZ 60.307257 275.210598 0 ] (Code/DriverTyresWindow/:__span-0-12) [ 1994 0 R /XYZ 60.307257 560.231550 0 ] (Code/DriverTyresWindow/:__span-0-120) [ 1998 0 R /XYZ 60.307257 261.810246 0 ] (Code/DriverTyresWindow/:__span-0-121) [ 1998 0 R /XYZ 60.307257 248.409894 0 ] (Code/DriverTyresWindow/:__span-0-122) [ 1998 0 R /XYZ 60.307257 221.609190 0 ] (Code/DriverTyresWindow/:__span-0-123) [ 1998 0 R /XYZ 60.307257 208.208838 0 ] (Code/DriverTyresWindow/:__span-0-124) [ 1998 0 R /XYZ 60.307257 194.808486 0 ] (Code/DriverTyresWindow/:__span-0-125) [ 1998 0 R /XYZ 60.307257 181.408134 0 ] (Code/DriverTyresWindow/:__span-0-126) [ 1998 0 R /XYZ 60.307257 168.007782 0 ] (Code/DriverTyresWindow/:__span-0-127) [ 1998 0 R /XYZ 60.307257 154.607430 0 ] (Code/DriverTyresWindow/:__span-0-128) [ 1998 0 R /XYZ 60.307257 141.207078 0 ] (Code/DriverTyresWindow/:__span-0-129) [ 1998 0 R /XYZ 60.307257 127.806726 0 ] (Code/DriverTyresWindow/:__span-0-13) [ 1994 0 R /XYZ 60.307257 546.831198 0 ] (Code/DriverTyresWindow/:__span-0-130) [ 1998 0 R /XYZ 60.307257 114.406374 0 ] (Code/DriverTyresWindow/:__span-0-131) [ 1998 0 R /XYZ 60.307257 101.006022 0 ] (Code/DriverTyresWindow/:__span-0-132) [ 1998 0 R /XYZ 60.307257 87.605670 0 ] (Code/DriverTyresWindow/:__span-0-133) [ 2000 0 R /XYZ 60.307257 771.023622 0 ] (Code/DriverTyresWindow/:__span-0-134) [ 2000 0 R /XYZ 60.307257 757.623270 0 ] (Code/DriverTyresWindow/:__span-0-135) [ 2000 0 R /XYZ 60.307257 744.222918 0 ] (Code/DriverTyresWindow/:__span-0-136) [ 2000 0 R /XYZ 60.307257 730.822566 0 ] (Code/DriverTyresWindow/:__span-0-137) [ 2000 0 R /XYZ 60.307257 717.422214 0 ] (Code/DriverTyresWindow/:__span-0-138) [ 2000 0 R /XYZ 60.307257 704.021862 0 ] (Code/DriverTyresWindow/:__span-0-139) [ 2000 0 R /XYZ 60.307257 690.621510 0 ] (Code/DriverTyresWindow/:__span-0-14) [ 1994 0 R /XYZ 60.307257 533.430846 0 ] (Code/DriverTyresWindow/:__span-0-140) [ 2000 0 R /XYZ 60.307257 677.221158 0 ] (Code/DriverTyresWindow/:__span-0-141) [ 2000 0 R /XYZ 60.307257 663.820806 0 ] (Code/DriverTyresWindow/:__span-0-142) [ 2000 0 R /XYZ 60.307257 650.420454 0 ] (Code/DriverTyresWindow/:__span-0-143) [ 2000 0 R /XYZ 60.307257 637.020102 0 ] (Code/DriverTyresWindow/:__span-0-144) [ 2000 0 R /XYZ 60.307257 623.619750 0 ] (Code/DriverTyresWindow/:__span-0-145) [ 2000 0 R /XYZ 60.307257 610.219398 0 ] (Code/DriverTyresWindow/:__span-0-146) [ 2000 0 R /XYZ 60.307257 596.819046 0 ] (Code/DriverTyresWindow/:__span-0-15) [ 1994 0 R /XYZ 60.307257 520.030494 0 ] (Code/DriverTyresWindow/:__span-0-16) [ 1994 0 R /XYZ 60.307257 506.630142 0 ] (Code/DriverTyresWindow/:__span-0-17) [ 1994 0 R /XYZ 60.307257 493.229790 0 ] (Code/DriverTyresWindow/:__span-0-18) [ 1994 0 R /XYZ 60.307257 479.829438 0 ] (Code/DriverTyresWindow/:__span-0-19) [ 1994 0 R /XYZ 60.307257 466.429086 0 ] (Code/DriverTyresWindow/:__span-0-2) [ 1994 0 R /XYZ 60.307257 694.235070 0 ] (Code/DriverTyresWindow/:__span-0-20) [ 1994 0 R /XYZ 60.307257 439.628382 0 ] (Code/DriverTyresWindow/:__span-0-21) [ 1994 0 R /XYZ 60.307257 426.228030 0 ] (Code/DriverTyresWindow/:__span-0-22) [ 1994 0 R /XYZ 60.307257 412.827678 0 ] (Code/DriverTyresWindow/:__span-0-23) [ 1994 0 R /XYZ 60.307257 399.427326 0 ] (Code/DriverTyresWindow/:__span-0-24) [ 1994 0 R /XYZ 60.307257 386.026974 0 ] (Code/DriverTyresWindow/:__span-0-25) [ 1994 0 R /XYZ 60.307257 372.626622 0 ] (Code/DriverTyresWindow/:__span-0-26) [ 1994 0 R /XYZ 60.307257 359.226270 0 ] (Code/DriverTyresWindow/:__span-0-27) [ 1994 0 R /XYZ 60.307257 345.825918 0 ] (Code/DriverTyresWindow/:__span-0-28) [ 1994 0 R /XYZ 60.307257 319.025214 0 ] (Code/DriverTyresWindow/:__span-0-29) [ 1994 0 R /XYZ 60.307257 305.624862 0 ] (Code/DriverTyresWindow/:__span-0-3) [ 1994 0 R /XYZ 60.307257 680.834718 0 ] (Code/DriverTyresWindow/:__span-0-30) [ 1994 0 R /XYZ 60.307257 292.224510 0 ] (Code/DriverTyresWindow/:__span-0-31) [ 1994 0 R /XYZ 60.307257 278.824158 0 ] (Code/DriverTyresWindow/:__span-0-32) [ 1994 0 R /XYZ 60.307257 265.423806 0 ] (Code/DriverTyresWindow/:__span-0-33) [ 1994 0 R /XYZ 60.307257 252.023454 0 ] (Code/DriverTyresWindow/:__span-0-34) [ 1994 0 R /XYZ 60.307257 238.623102 0 ] (Code/DriverTyresWindow/:__span-0-35) [ 1994 0 R /XYZ 60.307257 225.222750 0 ] (Code/DriverTyresWindow/:__span-0-36) [ 1994 0 R /XYZ 60.307257 211.822398 0 ] (Code/DriverTyresWindow/:__span-0-37) [ 1994 0 R /XYZ 60.307257 198.422046 0 ] (Code/DriverTyresWindow/:__span-0-38) [ 1994 0 R /XYZ 60.307257 185.021694 0 ] (Code/DriverTyresWindow/:__span-0-39) [ 1994 0 R /XYZ 60.307257 171.621342 0 ] (Code/DriverTyresWindow/:__span-0-4) [ 1994 0 R /XYZ 60.307257 667.434366 0 ] (Code/DriverTyresWindow/:__span-0-40) [ 1994 0 R /XYZ 60.307257 158.220990 0 ] (Code/DriverTyresWindow/:__span-0-41) [ 1994 0 R /XYZ 60.307257 131.420286 0 ] (Code/DriverTyresWindow/:__span-0-42) [ 1994 0 R /XYZ 60.307257 118.019934 0 ] (Code/DriverTyresWindow/:__span-0-43) [ 1994 0 R /XYZ 60.307257 104.619582 0 ] (Code/DriverTyresWindow/:__span-0-44) [ 1994 0 R /XYZ 60.307257 91.219230 0 ] (Code/DriverTyresWindow/:__span-0-45) [ 1996 0 R /XYZ 60.307257 771.023622 0 ] (Code/DriverTyresWindow/:__span-0-46) [ 1996 0 R /XYZ 60.307257 757.623270 0 ] (Code/DriverTyresWindow/:__span-0-47) [ 1996 0 R /XYZ 60.307257 744.222918 0 ] (Code/DriverTyresWindow/:__span-0-48) [ 1996 0 R /XYZ 60.307257 730.822566 0 ] (Code/DriverTyresWindow/:__span-0-49) [ 1996 0 R /XYZ 60.307257 717.422214 0 ] (Code/DriverTyresWindow/:__span-0-5) [ 1994 0 R /XYZ 60.307257 654.034014 0 ] (Code/DriverTyresWindow/:__span-0-50) [ 1996 0 R /XYZ 60.307257 704.021862 0 ] (Code/DriverTyresWindow/:__span-0-51) [ 1996 0 R /XYZ 60.307257 690.621510 0 ] (Code/DriverTyresWindow/:__span-0-52) [ 1996 0 R /XYZ 60.307257 677.221158 0 ] (Code/DriverTyresWindow/:__span-0-53) [ 1996 0 R /XYZ 60.307257 663.820806 0 ] (Code/DriverTyresWindow/:__span-0-54) [ 1996 0 R /XYZ 60.307257 637.020102 0 ] (Code/DriverTyresWindow/:__span-0-55) [ 1996 0 R /XYZ 60.307257 623.619750 0 ] (Code/DriverTyresWindow/:__span-0-56) [ 1996 0 R /XYZ 60.307257 610.219398 0 ] (Code/DriverTyresWindow/:__span-0-57) [ 1996 0 R /XYZ 60.307257 596.819046 0 ] (Code/DriverTyresWindow/:__span-0-58) [ 1996 0 R /XYZ 60.307257 583.418694 0 ] (Code/DriverTyresWindow/:__span-0-59) [ 1996 0 R /XYZ 60.307257 570.018342 0 ] (Code/DriverTyresWindow/:__span-0-6) [ 1994 0 R /XYZ 60.307257 640.633662 0 ] (Code/DriverTyresWindow/:__span-0-60) [ 1996 0 R /XYZ 60.307257 556.617990 0 ] (Code/DriverTyresWindow/:__span-0-61) [ 1996 0 R /XYZ 60.307257 543.217638 0 ] (Code/DriverTyresWindow/:__span-0-62) [ 1996 0 R /XYZ 60.307257 529.817286 0 ] (Code/DriverTyresWindow/:__span-0-63) [ 1996 0 R /XYZ 60.307257 516.416934 0 ] (Code/DriverTyresWindow/:__span-0-64) [ 1996 0 R /XYZ 60.307257 503.016582 0 ] (Code/DriverTyresWindow/:__span-0-65) [ 1996 0 R /XYZ 60.307257 462.815526 0 ] (Code/DriverTyresWindow/:__span-0-66) [ 1996 0 R /XYZ 60.307257 449.415174 0 ] (Code/DriverTyresWindow/:__span-0-67) [ 1996 0 R /XYZ 60.307257 436.014822 0 ] (Code/DriverTyresWindow/:__span-0-68) [ 1996 0 R /XYZ 60.307257 422.614470 0 ] (Code/DriverTyresWindow/:__span-0-69) [ 1996 0 R /XYZ 60.307257 409.214118 0 ] (Code/DriverTyresWindow/:__span-0-7) [ 1994 0 R /XYZ 60.307257 627.233310 0 ] (Code/DriverTyresWindow/:__span-0-70) [ 1996 0 R /XYZ 60.307257 395.813766 0 ] (Code/DriverTyresWindow/:__span-0-71) [ 1996 0 R /XYZ 60.307257 382.413414 0 ] (Code/DriverTyresWindow/:__span-0-72) [ 1996 0 R /XYZ 60.307257 369.013062 0 ] (Code/DriverTyresWindow/:__span-0-73) [ 1996 0 R /XYZ 60.307257 355.612710 0 ] (Code/DriverTyresWindow/:__span-0-74) [ 1996 0 R /XYZ 60.307257 328.812006 0 ] (Code/DriverTyresWindow/:__span-0-75) [ 1996 0 R /XYZ 60.307257 315.411654 0 ] (Code/DriverTyresWindow/:__span-0-76) [ 1996 0 R /XYZ 60.307257 302.011302 0 ] (Code/DriverTyresWindow/:__span-0-77) [ 1996 0 R /XYZ 60.307257 288.610950 0 ] (Code/DriverTyresWindow/:__span-0-78) [ 1996 0 R /XYZ 60.307257 275.210598 0 ] (Code/DriverTyresWindow/:__span-0-79) [ 1996 0 R /XYZ 60.307257 261.810246 0 ] (Code/DriverTyresWindow/:__span-0-8) [ 1994 0 R /XYZ 60.307257 613.832958 0 ] (Code/DriverTyresWindow/:__span-0-80) [ 1996 0 R /XYZ 60.307257 248.409894 0 ] (Code/DriverTyresWindow/:__span-0-81) [ 1996 0 R /XYZ 60.307257 235.009542 0 ] (Code/DriverTyresWindow/:__span-0-82) [ 1996 0 R /XYZ 60.307257 208.208838 0 ] (Code/DriverTyresWindow/:__span-0-83) [ 1996 0 R /XYZ 60.307257 168.007782 0 ] (Code/DriverTyresWindow/:__span-0-84) [ 1996 0 R /XYZ 60.307257 154.607430 0 ] (Code/DriverTyresWindow/:__span-0-85) [ 1996 0 R /XYZ 60.307257 127.806726 0 ] (Code/DriverTyresWindow/:__span-0-86) [ 1996 0 R /XYZ 60.307257 114.406374 0 ] (Code/DriverTyresWindow/:__span-0-87) [ 1996 0 R /XYZ 60.307257 101.006022 0 ] (Code/DriverTyresWindow/:__span-0-88) [ 1996 0 R /XYZ 60.307257 87.605670 0 ] (Code/DriverTyresWindow/:__span-0-89) [ 1998 0 R /XYZ 60.307257 771.023622 0 ] (Code/DriverTyresWindow/:__span-0-9) [ 1994 0 R /XYZ 60.307257 600.432606 0 ] (Code/DriverTyresWindow/:__span-0-90) [ 1998 0 R /XYZ 60.307257 757.623270 0 ] (Code/DriverTyresWindow/:__span-0-91) [ 1998 0 R /XYZ 60.307257 744.222918 0 ] (Code/DriverTyresWindow/:__span-0-92) [ 1998 0 R /XYZ 60.307257 717.422214 0 ] (Code/DriverTyresWindow/:__span-0-93) [ 1998 0 R /XYZ 60.307257 690.621510 0 ] (Code/DriverTyresWindow/:__span-0-94) [ 1998 0 R /XYZ 60.307257 677.221158 0 ] (Code/DriverTyresWindow/:__span-0-95) [ 1998 0 R /XYZ 60.307257 650.420454 0 ] (Code/DriverTyresWindow/:__span-0-96) [ 1998 0 R /XYZ 60.307257 637.020102 0 ] (Code/DriverTyresWindow/:__span-0-97) [ 1998 0 R /XYZ 60.307257 610.219398 0 ] (Code/DriverTyresWindow/:__span-0-98) [ 1998 0 R /XYZ 60.307257 596.819046 0 ] (Code/DriverTyresWindow/:__span-0-99) [ 1998 0 R /XYZ 60.307257 583.418694 0 ] (Code/DriverTyresWindow/:drivertyreswindowcs) [ 1994 0 R /XYZ 39.386457 747.563622 0 ] (Code/F1TVEmulator/:) [ 1906 0 R /XYZ 39.386457 747.563622 0 ] (Code/F1TVEmulator/:__span-0-1) [ 1906 0 R /XYZ 60.307257 707.635422 0 ] (Code/F1TVEmulator/:__span-0-10) [ 1906 0 R /XYZ 60.307257 573.631902 0 ] (Code/F1TVEmulator/:__span-0-100) [ 1910 0 R /XYZ 60.307257 663.820806 0 ] (Code/F1TVEmulator/:__span-0-101) [ 1910 0 R /XYZ 60.307257 650.420454 0 ] (Code/F1TVEmulator/:__span-0-102) [ 1910 0 R /XYZ 60.307257 637.020102 0 ] (Code/F1TVEmulator/:__span-0-103) [ 1910 0 R /XYZ 60.307257 623.619750 0 ] (Code/F1TVEmulator/:__span-0-104) [ 1910 0 R /XYZ 60.307257 610.219398 0 ] (Code/F1TVEmulator/:__span-0-105) [ 1910 0 R /XYZ 60.307257 596.819046 0 ] (Code/F1TVEmulator/:__span-0-106) [ 1910 0 R /XYZ 60.307257 583.418694 0 ] (Code/F1TVEmulator/:__span-0-107) [ 1910 0 R /XYZ 60.307257 570.018342 0 ] (Code/F1TVEmulator/:__span-0-108) [ 1910 0 R /XYZ 60.307257 556.617990 0 ] (Code/F1TVEmulator/:__span-0-109) [ 1910 0 R /XYZ 60.307257 543.217638 0 ] (Code/F1TVEmulator/:__span-0-11) [ 1906 0 R /XYZ 60.307257 560.231550 0 ] (Code/F1TVEmulator/:__span-0-110) [ 1910 0 R /XYZ 60.307257 529.817286 0 ] (Code/F1TVEmulator/:__span-0-111) [ 1910 0 R /XYZ 60.307257 516.416934 0 ] (Code/F1TVEmulator/:__span-0-112) [ 1910 0 R /XYZ 60.307257 503.016582 0 ] (Code/F1TVEmulator/:__span-0-113) [ 1910 0 R /XYZ 60.307257 489.616230 0 ] (Code/F1TVEmulator/:__span-0-114) [ 1910 0 R /XYZ 60.307257 476.215878 0 ] (Code/F1TVEmulator/:__span-0-115) [ 1910 0 R /XYZ 60.307257 449.415174 0 ] (Code/F1TVEmulator/:__span-0-116) [ 1910 0 R /XYZ 60.307257 436.014822 0 ] (Code/F1TVEmulator/:__span-0-117) [ 1910 0 R /XYZ 60.307257 409.214118 0 ] (Code/F1TVEmulator/:__span-0-118) [ 1910 0 R /XYZ 60.307257 395.813766 0 ] (Code/F1TVEmulator/:__span-0-119) [ 1910 0 R /XYZ 60.307257 382.413414 0 ] (Code/F1TVEmulator/:__span-0-12) [ 1906 0 R /XYZ 60.307257 546.831198 0 ] (Code/F1TVEmulator/:__span-0-120) [ 1910 0 R /XYZ 60.307257 369.013062 0 ] (Code/F1TVEmulator/:__span-0-121) [ 1910 0 R /XYZ 60.307257 342.212358 0 ] (Code/F1TVEmulator/:__span-0-122) [ 1910 0 R /XYZ 60.307257 328.812006 0 ] (Code/F1TVEmulator/:__span-0-123) [ 1910 0 R /XYZ 60.307257 315.411654 0 ] (Code/F1TVEmulator/:__span-0-124) [ 1910 0 R /XYZ 60.307257 302.011302 0 ] (Code/F1TVEmulator/:__span-0-125) [ 1910 0 R /XYZ 60.307257 288.610950 0 ] (Code/F1TVEmulator/:__span-0-126) [ 1910 0 R /XYZ 60.307257 275.210598 0 ] (Code/F1TVEmulator/:__span-0-127) [ 1910 0 R /XYZ 60.307257 261.810246 0 ] (Code/F1TVEmulator/:__span-0-128) [ 1910 0 R /XYZ 60.307257 248.409894 0 ] (Code/F1TVEmulator/:__span-0-129) [ 1910 0 R /XYZ 60.307257 235.009542 0 ] (Code/F1TVEmulator/:__span-0-13) [ 1906 0 R /XYZ 60.307257 533.430846 0 ] (Code/F1TVEmulator/:__span-0-130) [ 1910 0 R /XYZ 60.307257 221.609190 0 ] (Code/F1TVEmulator/:__span-0-131) [ 1910 0 R /XYZ 60.307257 208.208838 0 ] (Code/F1TVEmulator/:__span-0-132) [ 1910 0 R /XYZ 60.307257 194.808486 0 ] (Code/F1TVEmulator/:__span-0-133) [ 1910 0 R /XYZ 60.307257 181.408134 0 ] (Code/F1TVEmulator/:__span-0-134) [ 1910 0 R /XYZ 60.307257 168.007782 0 ] (Code/F1TVEmulator/:__span-0-135) [ 1910 0 R /XYZ 60.307257 154.607430 0 ] (Code/F1TVEmulator/:__span-0-136) [ 1910 0 R /XYZ 60.307257 141.207078 0 ] (Code/F1TVEmulator/:__span-0-137) [ 1910 0 R /XYZ 60.307257 127.806726 0 ] (Code/F1TVEmulator/:__span-0-138) [ 1910 0 R /XYZ 60.307257 114.406374 0 ] (Code/F1TVEmulator/:__span-0-139) [ 1910 0 R /XYZ 60.307257 101.006022 0 ] (Code/F1TVEmulator/:__span-0-14) [ 1906 0 R /XYZ 60.307257 520.030494 0 ] (Code/F1TVEmulator/:__span-0-140) [ 1910 0 R /XYZ 60.307257 87.605670 0 ] (Code/F1TVEmulator/:__span-0-141) [ 1912 0 R /XYZ 60.307257 771.023622 0 ] (Code/F1TVEmulator/:__span-0-142) [ 1912 0 R /XYZ 60.307257 757.623270 0 ] (Code/F1TVEmulator/:__span-0-143) [ 1912 0 R /XYZ 60.307257 744.222918 0 ] (Code/F1TVEmulator/:__span-0-144) [ 1912 0 R /XYZ 60.307257 730.822566 0 ] (Code/F1TVEmulator/:__span-0-145) [ 1912 0 R /XYZ 60.307257 717.422214 0 ] (Code/F1TVEmulator/:__span-0-146) [ 1912 0 R /XYZ 60.307257 704.021862 0 ] (Code/F1TVEmulator/:__span-0-147) [ 1912 0 R /XYZ 60.307257 690.621510 0 ] (Code/F1TVEmulator/:__span-0-148) [ 1912 0 R /XYZ 60.307257 677.221158 0 ] (Code/F1TVEmulator/:__span-0-149) [ 1912 0 R /XYZ 60.307257 663.820806 0 ] (Code/F1TVEmulator/:__span-0-15) [ 1906 0 R /XYZ 60.307257 506.630142 0 ] (Code/F1TVEmulator/:__span-0-150) [ 1912 0 R /XYZ 60.307257 650.420454 0 ] (Code/F1TVEmulator/:__span-0-151) [ 1912 0 R /XYZ 60.307257 637.020102 0 ] (Code/F1TVEmulator/:__span-0-152) [ 1912 0 R /XYZ 60.307257 623.619750 0 ] (Code/F1TVEmulator/:__span-0-153) [ 1912 0 R /XYZ 60.307257 610.219398 0 ] (Code/F1TVEmulator/:__span-0-154) [ 1912 0 R /XYZ 60.307257 596.819046 0 ] (Code/F1TVEmulator/:__span-0-155) [ 1912 0 R /XYZ 60.307257 570.018342 0 ] (Code/F1TVEmulator/:__span-0-156) [ 1912 0 R /XYZ 60.307257 543.217638 0 ] (Code/F1TVEmulator/:__span-0-157) [ 1912 0 R /XYZ 60.307257 529.817286 0 ] (Code/F1TVEmulator/:__span-0-158) [ 1912 0 R /XYZ 60.307257 516.416934 0 ] (Code/F1TVEmulator/:__span-0-159) [ 1912 0 R /XYZ 60.307257 503.016582 0 ] (Code/F1TVEmulator/:__span-0-16) [ 1906 0 R /XYZ 60.307257 493.229790 0 ] (Code/F1TVEmulator/:__span-0-160) [ 1912 0 R /XYZ 60.307257 489.616230 0 ] (Code/F1TVEmulator/:__span-0-161) [ 1912 0 R /XYZ 60.307257 476.215878 0 ] (Code/F1TVEmulator/:__span-0-162) [ 1912 0 R /XYZ 60.307257 462.815526 0 ] (Code/F1TVEmulator/:__span-0-163) [ 1912 0 R /XYZ 60.307257 449.415174 0 ] (Code/F1TVEmulator/:__span-0-164) [ 1912 0 R /XYZ 60.307257 436.014822 0 ] (Code/F1TVEmulator/:__span-0-165) [ 1912 0 R /XYZ 60.307257 422.614470 0 ] (Code/F1TVEmulator/:__span-0-166) [ 1912 0 R /XYZ 60.307257 409.214118 0 ] (Code/F1TVEmulator/:__span-0-167) [ 1912 0 R /XYZ 60.307257 395.813766 0 ] (Code/F1TVEmulator/:__span-0-168) [ 1912 0 R /XYZ 60.307257 382.413414 0 ] (Code/F1TVEmulator/:__span-0-169) [ 1912 0 R /XYZ 60.307257 369.013062 0 ] (Code/F1TVEmulator/:__span-0-17) [ 1906 0 R /XYZ 60.307257 479.829438 0 ] (Code/F1TVEmulator/:__span-0-170) [ 1912 0 R /XYZ 60.307257 355.612710 0 ] (Code/F1TVEmulator/:__span-0-171) [ 1912 0 R /XYZ 60.307257 342.212358 0 ] (Code/F1TVEmulator/:__span-0-172) [ 1912 0 R /XYZ 60.307257 328.812006 0 ] (Code/F1TVEmulator/:__span-0-173) [ 1912 0 R /XYZ 60.307257 315.411654 0 ] (Code/F1TVEmulator/:__span-0-174) [ 1912 0 R /XYZ 60.307257 302.011302 0 ] (Code/F1TVEmulator/:__span-0-175) [ 1912 0 R /XYZ 60.307257 288.610950 0 ] (Code/F1TVEmulator/:__span-0-176) [ 1912 0 R /XYZ 60.307257 275.210598 0 ] (Code/F1TVEmulator/:__span-0-177) [ 1912 0 R /XYZ 60.307257 261.810246 0 ] (Code/F1TVEmulator/:__span-0-178) [ 1912 0 R /XYZ 60.307257 248.409894 0 ] (Code/F1TVEmulator/:__span-0-179) [ 1912 0 R /XYZ 60.307257 235.009542 0 ] (Code/F1TVEmulator/:__span-0-18) [ 1906 0 R /XYZ 60.307257 466.429086 0 ] (Code/F1TVEmulator/:__span-0-180) [ 1912 0 R /XYZ 60.307257 208.208838 0 ] (Code/F1TVEmulator/:__span-0-181) [ 1912 0 R /XYZ 60.307257 194.808486 0 ] (Code/F1TVEmulator/:__span-0-182) [ 1912 0 R /XYZ 60.307257 181.408134 0 ] (Code/F1TVEmulator/:__span-0-183) [ 1912 0 R /XYZ 60.307257 168.007782 0 ] (Code/F1TVEmulator/:__span-0-184) [ 1912 0 R /XYZ 60.307257 154.607430 0 ] (Code/F1TVEmulator/:__span-0-185) [ 1912 0 R /XYZ 60.307257 141.207078 0 ] (Code/F1TVEmulator/:__span-0-186) [ 1912 0 R /XYZ 60.307257 127.806726 0 ] (Code/F1TVEmulator/:__span-0-187) [ 1912 0 R /XYZ 60.307257 114.406374 0 ] (Code/F1TVEmulator/:__span-0-188) [ 1912 0 R /XYZ 60.307257 101.006022 0 ] (Code/F1TVEmulator/:__span-0-189) [ 1912 0 R /XYZ 60.307257 87.605670 0 ] (Code/F1TVEmulator/:__span-0-19) [ 1906 0 R /XYZ 60.307257 453.028734 0 ] (Code/F1TVEmulator/:__span-0-190) [ 1914 0 R /XYZ 60.307257 771.023622 0 ] (Code/F1TVEmulator/:__span-0-191) [ 1914 0 R /XYZ 60.307257 757.623270 0 ] (Code/F1TVEmulator/:__span-0-192) [ 1914 0 R /XYZ 60.307257 744.222918 0 ] (Code/F1TVEmulator/:__span-0-193) [ 1914 0 R /XYZ 60.307257 730.822566 0 ] (Code/F1TVEmulator/:__span-0-194) [ 1914 0 R /XYZ 60.307257 704.021862 0 ] (Code/F1TVEmulator/:__span-0-195) [ 1914 0 R /XYZ 60.307257 677.221158 0 ] (Code/F1TVEmulator/:__span-0-196) [ 1914 0 R /XYZ 60.307257 663.820806 0 ] (Code/F1TVEmulator/:__span-0-197) [ 1914 0 R /XYZ 60.307257 650.420454 0 ] (Code/F1TVEmulator/:__span-0-198) [ 1914 0 R /XYZ 60.307257 637.020102 0 ] (Code/F1TVEmulator/:__span-0-199) [ 1914 0 R /XYZ 60.307257 623.619750 0 ] (Code/F1TVEmulator/:__span-0-2) [ 1906 0 R /XYZ 60.307257 694.235070 0 ] (Code/F1TVEmulator/:__span-0-20) [ 1906 0 R /XYZ 60.307257 439.628382 0 ] (Code/F1TVEmulator/:__span-0-200) [ 1914 0 R /XYZ 60.307257 610.219398 0 ] (Code/F1TVEmulator/:__span-0-201) [ 1914 0 R /XYZ 60.307257 596.819046 0 ] (Code/F1TVEmulator/:__span-0-202) [ 1914 0 R /XYZ 60.307257 583.418694 0 ] (Code/F1TVEmulator/:__span-0-203) [ 1914 0 R /XYZ 60.307257 556.617990 0 ] (Code/F1TVEmulator/:__span-0-204) [ 1914 0 R /XYZ 60.307257 529.817286 0 ] (Code/F1TVEmulator/:__span-0-205) [ 1914 0 R /XYZ 60.307257 516.416934 0 ] (Code/F1TVEmulator/:__span-0-206) [ 1914 0 R /XYZ 60.307257 503.016582 0 ] (Code/F1TVEmulator/:__span-0-207) [ 1914 0 R /XYZ 60.307257 489.616230 0 ] (Code/F1TVEmulator/:__span-0-208) [ 1914 0 R /XYZ 60.307257 476.215878 0 ] (Code/F1TVEmulator/:__span-0-209) [ 1914 0 R /XYZ 60.307257 462.815526 0 ] (Code/F1TVEmulator/:__span-0-21) [ 1906 0 R /XYZ 60.307257 426.228030 0 ] (Code/F1TVEmulator/:__span-0-210) [ 1914 0 R /XYZ 60.307257 436.014822 0 ] (Code/F1TVEmulator/:__span-0-211) [ 1914 0 R /XYZ 60.307257 422.614470 0 ] (Code/F1TVEmulator/:__span-0-212) [ 1914 0 R /XYZ 60.307257 409.214118 0 ] (Code/F1TVEmulator/:__span-0-213) [ 1914 0 R /XYZ 60.307257 395.813766 0 ] (Code/F1TVEmulator/:__span-0-214) [ 1914 0 R /XYZ 60.307257 382.413414 0 ] (Code/F1TVEmulator/:__span-0-215) [ 1914 0 R /XYZ 60.307257 355.612710 0 ] (Code/F1TVEmulator/:__span-0-216) [ 1914 0 R /XYZ 60.307257 342.212358 0 ] (Code/F1TVEmulator/:__span-0-217) [ 1914 0 R /XYZ 60.307257 328.812006 0 ] (Code/F1TVEmulator/:__span-0-218) [ 1914 0 R /XYZ 60.307257 315.411654 0 ] (Code/F1TVEmulator/:__span-0-219) [ 1914 0 R /XYZ 60.307257 302.011302 0 ] (Code/F1TVEmulator/:__span-0-22) [ 1906 0 R /XYZ 60.307257 412.827678 0 ] (Code/F1TVEmulator/:__span-0-220) [ 1914 0 R /XYZ 60.307257 288.610950 0 ] (Code/F1TVEmulator/:__span-0-221) [ 1914 0 R /XYZ 60.307257 275.210598 0 ] (Code/F1TVEmulator/:__span-0-222) [ 1914 0 R /XYZ 60.307257 261.810246 0 ] (Code/F1TVEmulator/:__span-0-223) [ 1914 0 R /XYZ 60.307257 235.009542 0 ] (Code/F1TVEmulator/:__span-0-224) [ 1914 0 R /XYZ 60.307257 221.609190 0 ] (Code/F1TVEmulator/:__span-0-225) [ 1914 0 R /XYZ 60.307257 208.208838 0 ] (Code/F1TVEmulator/:__span-0-226) [ 1914 0 R /XYZ 60.307257 194.808486 0 ] (Code/F1TVEmulator/:__span-0-227) [ 1914 0 R /XYZ 60.307257 181.408134 0 ] (Code/F1TVEmulator/:__span-0-228) [ 1914 0 R /XYZ 60.307257 168.007782 0 ] (Code/F1TVEmulator/:__span-0-229) [ 1914 0 R /XYZ 60.307257 154.607430 0 ] (Code/F1TVEmulator/:__span-0-23) [ 1906 0 R /XYZ 60.307257 399.427326 0 ] (Code/F1TVEmulator/:__span-0-230) [ 1914 0 R /XYZ 60.307257 141.207078 0 ] (Code/F1TVEmulator/:__span-0-231) [ 1914 0 R /XYZ 60.307257 127.806726 0 ] (Code/F1TVEmulator/:__span-0-232) [ 1914 0 R /XYZ 60.307257 114.406374 0 ] (Code/F1TVEmulator/:__span-0-233) [ 1914 0 R /XYZ 60.307257 101.006022 0 ] (Code/F1TVEmulator/:__span-0-234) [ 1916 0 R /XYZ 60.307257 771.023622 0 ] (Code/F1TVEmulator/:__span-0-235) [ 1916 0 R /XYZ 60.307257 757.623270 0 ] (Code/F1TVEmulator/:__span-0-236) [ 1916 0 R /XYZ 60.307257 730.822566 0 ] (Code/F1TVEmulator/:__span-0-237) [ 1916 0 R /XYZ 60.307257 717.422214 0 ] (Code/F1TVEmulator/:__span-0-238) [ 1916 0 R /XYZ 60.307257 690.621510 0 ] (Code/F1TVEmulator/:__span-0-239) [ 1916 0 R /XYZ 60.307257 677.221158 0 ] (Code/F1TVEmulator/:__span-0-24) [ 1906 0 R /XYZ 60.307257 386.026974 0 ] (Code/F1TVEmulator/:__span-0-240) [ 1916 0 R /XYZ 60.307257 663.820806 0 ] (Code/F1TVEmulator/:__span-0-241) [ 1916 0 R /XYZ 60.307257 650.420454 0 ] (Code/F1TVEmulator/:__span-0-242) [ 1916 0 R /XYZ 60.307257 637.020102 0 ] (Code/F1TVEmulator/:__span-0-243) [ 1916 0 R /XYZ 60.307257 623.619750 0 ] (Code/F1TVEmulator/:__span-0-244) [ 1916 0 R /XYZ 60.307257 596.819046 0 ] (Code/F1TVEmulator/:__span-0-245) [ 1916 0 R /XYZ 60.307257 583.418694 0 ] (Code/F1TVEmulator/:__span-0-246) [ 1916 0 R /XYZ 60.307257 570.018342 0 ] (Code/F1TVEmulator/:__span-0-247) [ 1916 0 R /XYZ 60.307257 556.617990 0 ] (Code/F1TVEmulator/:__span-0-248) [ 1916 0 R /XYZ 60.307257 543.217638 0 ] (Code/F1TVEmulator/:__span-0-249) [ 1916 0 R /XYZ 60.307257 529.817286 0 ] (Code/F1TVEmulator/:__span-0-25) [ 1906 0 R /XYZ 60.307257 372.626622 0 ] (Code/F1TVEmulator/:__span-0-250) [ 1916 0 R /XYZ 60.307257 516.416934 0 ] (Code/F1TVEmulator/:__span-0-251) [ 1916 0 R /XYZ 60.307257 503.016582 0 ] (Code/F1TVEmulator/:__span-0-252) [ 1916 0 R /XYZ 60.307257 489.616230 0 ] (Code/F1TVEmulator/:__span-0-253) [ 1916 0 R /XYZ 60.307257 476.215878 0 ] (Code/F1TVEmulator/:__span-0-254) [ 1916 0 R /XYZ 60.307257 462.815526 0 ] (Code/F1TVEmulator/:__span-0-255) [ 1916 0 R /XYZ 60.307257 449.415174 0 ] (Code/F1TVEmulator/:__span-0-256) [ 1916 0 R /XYZ 60.307257 436.014822 0 ] (Code/F1TVEmulator/:__span-0-257) [ 1916 0 R /XYZ 60.307257 422.614470 0 ] (Code/F1TVEmulator/:__span-0-258) [ 1916 0 R /XYZ 60.307257 409.214118 0 ] (Code/F1TVEmulator/:__span-0-259) [ 1916 0 R /XYZ 60.307257 395.813766 0 ] (Code/F1TVEmulator/:__span-0-26) [ 1906 0 R /XYZ 60.307257 359.226270 0 ] (Code/F1TVEmulator/:__span-0-260) [ 1916 0 R /XYZ 60.307257 382.413414 0 ] (Code/F1TVEmulator/:__span-0-261) [ 1916 0 R /XYZ 60.307257 369.013062 0 ] (Code/F1TVEmulator/:__span-0-262) [ 1916 0 R /XYZ 60.307257 355.612710 0 ] (Code/F1TVEmulator/:__span-0-263) [ 1916 0 R /XYZ 60.307257 328.812006 0 ] (Code/F1TVEmulator/:__span-0-264) [ 1916 0 R /XYZ 60.307257 315.411654 0 ] (Code/F1TVEmulator/:__span-0-265) [ 1916 0 R /XYZ 60.307257 302.011302 0 ] (Code/F1TVEmulator/:__span-0-266) [ 1916 0 R /XYZ 60.307257 288.610950 0 ] (Code/F1TVEmulator/:__span-0-267) [ 1916 0 R /XYZ 60.307257 275.210598 0 ] (Code/F1TVEmulator/:__span-0-268) [ 1916 0 R /XYZ 60.307257 261.810246 0 ] (Code/F1TVEmulator/:__span-0-269) [ 1916 0 R /XYZ 60.307257 235.009542 0 ] (Code/F1TVEmulator/:__span-0-27) [ 1906 0 R /XYZ 60.307257 332.425566 0 ] (Code/F1TVEmulator/:__span-0-270) [ 1916 0 R /XYZ 60.307257 221.609190 0 ] (Code/F1TVEmulator/:__span-0-271) [ 1916 0 R /XYZ 60.307257 208.208838 0 ] (Code/F1TVEmulator/:__span-0-272) [ 1916 0 R /XYZ 60.307257 194.808486 0 ] (Code/F1TVEmulator/:__span-0-273) [ 1916 0 R /XYZ 60.307257 181.408134 0 ] (Code/F1TVEmulator/:__span-0-274) [ 1916 0 R /XYZ 60.307257 168.007782 0 ] (Code/F1TVEmulator/:__span-0-275) [ 1916 0 R /XYZ 60.307257 154.607430 0 ] (Code/F1TVEmulator/:__span-0-276) [ 1916 0 R /XYZ 60.307257 141.207078 0 ] (Code/F1TVEmulator/:__span-0-277) [ 1916 0 R /XYZ 60.307257 127.806726 0 ] (Code/F1TVEmulator/:__span-0-278) [ 1916 0 R /XYZ 60.307257 114.406374 0 ] (Code/F1TVEmulator/:__span-0-279) [ 1916 0 R /XYZ 60.307257 101.006022 0 ] (Code/F1TVEmulator/:__span-0-28) [ 1906 0 R /XYZ 60.307257 305.624862 0 ] (Code/F1TVEmulator/:__span-0-280) [ 1916 0 R /XYZ 60.307257 87.605670 0 ] (Code/F1TVEmulator/:__span-0-281) [ 1918 0 R /XYZ 60.307257 771.023622 0 ] (Code/F1TVEmulator/:__span-0-282) [ 1918 0 R /XYZ 60.307257 757.623270 0 ] (Code/F1TVEmulator/:__span-0-283) [ 1918 0 R /XYZ 60.307257 744.222918 0 ] (Code/F1TVEmulator/:__span-0-284) [ 1918 0 R /XYZ 60.307257 730.822566 0 ] (Code/F1TVEmulator/:__span-0-285) [ 1918 0 R /XYZ 60.307257 717.422214 0 ] (Code/F1TVEmulator/:__span-0-286) [ 1918 0 R /XYZ 60.307257 704.021862 0 ] (Code/F1TVEmulator/:__span-0-287) [ 1918 0 R /XYZ 60.307257 690.621510 0 ] (Code/F1TVEmulator/:__span-0-288) [ 1918 0 R /XYZ 60.307257 677.221158 0 ] (Code/F1TVEmulator/:__span-0-289) [ 1918 0 R /XYZ 60.307257 663.820806 0 ] (Code/F1TVEmulator/:__span-0-29) [ 1906 0 R /XYZ 60.307257 278.824158 0 ] (Code/F1TVEmulator/:__span-0-290) [ 1918 0 R /XYZ 60.307257 650.420454 0 ] (Code/F1TVEmulator/:__span-0-291) [ 1918 0 R /XYZ 60.307257 637.020102 0 ] (Code/F1TVEmulator/:__span-0-292) [ 1918 0 R /XYZ 60.307257 623.619750 0 ] (Code/F1TVEmulator/:__span-0-293) [ 1918 0 R /XYZ 60.307257 610.219398 0 ] (Code/F1TVEmulator/:__span-0-294) [ 1918 0 R /XYZ 60.307257 596.819046 0 ] (Code/F1TVEmulator/:__span-0-295) [ 1918 0 R /XYZ 60.307257 583.418694 0 ] (Code/F1TVEmulator/:__span-0-296) [ 1918 0 R /XYZ 60.307257 556.617990 0 ] (Code/F1TVEmulator/:__span-0-297) [ 1918 0 R /XYZ 60.307257 543.217638 0 ] (Code/F1TVEmulator/:__span-0-298) [ 1918 0 R /XYZ 60.307257 529.817286 0 ] (Code/F1TVEmulator/:__span-0-299) [ 1918 0 R /XYZ 60.307257 516.416934 0 ] (Code/F1TVEmulator/:__span-0-3) [ 1906 0 R /XYZ 60.307257 680.834718 0 ] (Code/F1TVEmulator/:__span-0-30) [ 1906 0 R /XYZ 60.307257 265.423806 0 ] (Code/F1TVEmulator/:__span-0-300) [ 1918 0 R /XYZ 60.307257 503.016582 0 ] (Code/F1TVEmulator/:__span-0-301) [ 1918 0 R /XYZ 60.307257 489.616230 0 ] (Code/F1TVEmulator/:__span-0-302) [ 1918 0 R /XYZ 60.307257 476.215878 0 ] (Code/F1TVEmulator/:__span-0-303) [ 1918 0 R /XYZ 60.307257 462.815526 0 ] (Code/F1TVEmulator/:__span-0-304) [ 1918 0 R /XYZ 60.307257 436.014822 0 ] (Code/F1TVEmulator/:__span-0-305) [ 1918 0 R /XYZ 60.307257 422.614470 0 ] (Code/F1TVEmulator/:__span-0-306) [ 1918 0 R /XYZ 60.307257 409.214118 0 ] (Code/F1TVEmulator/:__span-0-307) [ 1918 0 R /XYZ 60.307257 395.813766 0 ] (Code/F1TVEmulator/:__span-0-308) [ 1918 0 R /XYZ 60.307257 382.413414 0 ] (Code/F1TVEmulator/:__span-0-309) [ 1918 0 R /XYZ 60.307257 355.612710 0 ] (Code/F1TVEmulator/:__span-0-31) [ 1906 0 R /XYZ 60.307257 252.023454 0 ] (Code/F1TVEmulator/:__span-0-310) [ 1918 0 R /XYZ 60.307257 342.212358 0 ] (Code/F1TVEmulator/:__span-0-311) [ 1918 0 R /XYZ 60.307257 328.812006 0 ] (Code/F1TVEmulator/:__span-0-312) [ 1918 0 R /XYZ 60.307257 315.411654 0 ] (Code/F1TVEmulator/:__span-0-313) [ 1918 0 R /XYZ 60.307257 302.011302 0 ] (Code/F1TVEmulator/:__span-0-314) [ 1918 0 R /XYZ 60.307257 288.610950 0 ] (Code/F1TVEmulator/:__span-0-315) [ 1918 0 R /XYZ 60.307257 275.210598 0 ] (Code/F1TVEmulator/:__span-0-316) [ 1918 0 R /XYZ 60.307257 261.810246 0 ] (Code/F1TVEmulator/:__span-0-317) [ 1918 0 R /XYZ 60.307257 248.409894 0 ] (Code/F1TVEmulator/:__span-0-318) [ 1918 0 R /XYZ 60.307257 235.009542 0 ] (Code/F1TVEmulator/:__span-0-319) [ 1918 0 R /XYZ 60.307257 221.609190 0 ] (Code/F1TVEmulator/:__span-0-32) [ 1906 0 R /XYZ 60.307257 238.623102 0 ] (Code/F1TVEmulator/:__span-0-320) [ 1918 0 R /XYZ 60.307257 208.208838 0 ] (Code/F1TVEmulator/:__span-0-321) [ 1918 0 R /XYZ 60.307257 194.808486 0 ] (Code/F1TVEmulator/:__span-0-322) [ 1918 0 R /XYZ 60.307257 181.408134 0 ] (Code/F1TVEmulator/:__span-0-323) [ 1918 0 R /XYZ 60.307257 154.607430 0 ] (Code/F1TVEmulator/:__span-0-324) [ 1918 0 R /XYZ 60.307257 141.207078 0 ] (Code/F1TVEmulator/:__span-0-325) [ 1918 0 R /XYZ 60.307257 127.806726 0 ] (Code/F1TVEmulator/:__span-0-326) [ 1918 0 R /XYZ 60.307257 114.406374 0 ] (Code/F1TVEmulator/:__span-0-327) [ 1918 0 R /XYZ 60.307257 101.006022 0 ] (Code/F1TVEmulator/:__span-0-328) [ 1918 0 R /XYZ 60.307257 87.605670 0 ] (Code/F1TVEmulator/:__span-0-329) [ 1920 0 R /XYZ 60.307257 771.023622 0 ] (Code/F1TVEmulator/:__span-0-33) [ 1906 0 R /XYZ 60.307257 225.222750 0 ] (Code/F1TVEmulator/:__span-0-330) [ 1920 0 R /XYZ 60.307257 757.623270 0 ] (Code/F1TVEmulator/:__span-0-331) [ 1920 0 R /XYZ 60.307257 744.222918 0 ] (Code/F1TVEmulator/:__span-0-332) [ 1920 0 R /XYZ 60.307257 730.822566 0 ] (Code/F1TVEmulator/:__span-0-333) [ 1920 0 R /XYZ 60.307257 717.422214 0 ] (Code/F1TVEmulator/:__span-0-334) [ 1920 0 R /XYZ 60.307257 704.021862 0 ] (Code/F1TVEmulator/:__span-0-335) [ 1920 0 R /XYZ 60.307257 690.621510 0 ] (Code/F1TVEmulator/:__span-0-336) [ 1920 0 R /XYZ 60.307257 677.221158 0 ] (Code/F1TVEmulator/:__span-0-337) [ 1920 0 R /XYZ 60.307257 663.820806 0 ] (Code/F1TVEmulator/:__span-0-338) [ 1920 0 R /XYZ 60.307257 650.420454 0 ] (Code/F1TVEmulator/:__span-0-339) [ 1920 0 R /XYZ 60.307257 637.020102 0 ] (Code/F1TVEmulator/:__span-0-34) [ 1906 0 R /XYZ 60.307257 211.822398 0 ] (Code/F1TVEmulator/:__span-0-340) [ 1920 0 R /XYZ 60.307257 623.619750 0 ] (Code/F1TVEmulator/:__span-0-341) [ 1920 0 R /XYZ 60.307257 610.219398 0 ] (Code/F1TVEmulator/:__span-0-35) [ 1906 0 R /XYZ 60.307257 198.422046 0 ] (Code/F1TVEmulator/:__span-0-36) [ 1906 0 R /XYZ 60.307257 171.621342 0 ] (Code/F1TVEmulator/:__span-0-37) [ 1906 0 R /XYZ 60.307257 158.220990 0 ] (Code/F1TVEmulator/:__span-0-38) [ 1906 0 R /XYZ 60.307257 144.820638 0 ] (Code/F1TVEmulator/:__span-0-39) [ 1906 0 R /XYZ 60.307257 131.420286 0 ] (Code/F1TVEmulator/:__span-0-4) [ 1906 0 R /XYZ 60.307257 667.434366 0 ] (Code/F1TVEmulator/:__span-0-40) [ 1906 0 R /XYZ 60.307257 118.019934 0 ] (Code/F1TVEmulator/:__span-0-41) [ 1906 0 R /XYZ 60.307257 104.619582 0 ] (Code/F1TVEmulator/:__span-0-42) [ 1906 0 R /XYZ 60.307257 91.219230 0 ] (Code/F1TVEmulator/:__span-0-43) [ 1908 0 R /XYZ 60.307257 771.023622 0 ] (Code/F1TVEmulator/:__span-0-44) [ 1908 0 R /XYZ 60.307257 757.623270 0 ] (Code/F1TVEmulator/:__span-0-45) [ 1908 0 R /XYZ 60.307257 744.222918 0 ] (Code/F1TVEmulator/:__span-0-46) [ 1908 0 R /XYZ 60.307257 730.822566 0 ] (Code/F1TVEmulator/:__span-0-47) [ 1908 0 R /XYZ 60.307257 717.422214 0 ] (Code/F1TVEmulator/:__span-0-48) [ 1908 0 R /XYZ 60.307257 704.021862 0 ] (Code/F1TVEmulator/:__span-0-49) [ 1908 0 R /XYZ 60.307257 690.621510 0 ] (Code/F1TVEmulator/:__span-0-5) [ 1906 0 R /XYZ 60.307257 640.633662 0 ] (Code/F1TVEmulator/:__span-0-50) [ 1908 0 R /XYZ 60.307257 677.221158 0 ] (Code/F1TVEmulator/:__span-0-51) [ 1908 0 R /XYZ 60.307257 663.820806 0 ] (Code/F1TVEmulator/:__span-0-52) [ 1908 0 R /XYZ 60.307257 650.420454 0 ] (Code/F1TVEmulator/:__span-0-53) [ 1908 0 R /XYZ 60.307257 637.020102 0 ] (Code/F1TVEmulator/:__span-0-54) [ 1908 0 R /XYZ 60.307257 623.619750 0 ] (Code/F1TVEmulator/:__span-0-55) [ 1908 0 R /XYZ 60.307257 610.219398 0 ] (Code/F1TVEmulator/:__span-0-56) [ 1908 0 R /XYZ 60.307257 596.819046 0 ] (Code/F1TVEmulator/:__span-0-57) [ 1908 0 R /XYZ 60.307257 583.418694 0 ] (Code/F1TVEmulator/:__span-0-58) [ 1908 0 R /XYZ 60.307257 570.018342 0 ] (Code/F1TVEmulator/:__span-0-59) [ 1908 0 R /XYZ 60.307257 556.617990 0 ] (Code/F1TVEmulator/:__span-0-6) [ 1906 0 R /XYZ 60.307257 627.233310 0 ] (Code/F1TVEmulator/:__span-0-60) [ 1908 0 R /XYZ 60.307257 543.217638 0 ] (Code/F1TVEmulator/:__span-0-61) [ 1908 0 R /XYZ 60.307257 516.416934 0 ] (Code/F1TVEmulator/:__span-0-62) [ 1908 0 R /XYZ 60.307257 503.016582 0 ] (Code/F1TVEmulator/:__span-0-63) [ 1908 0 R /XYZ 60.307257 489.616230 0 ] (Code/F1TVEmulator/:__span-0-64) [ 1908 0 R /XYZ 60.307257 476.215878 0 ] (Code/F1TVEmulator/:__span-0-65) [ 1908 0 R /XYZ 60.307257 462.815526 0 ] (Code/F1TVEmulator/:__span-0-66) [ 1908 0 R /XYZ 60.307257 449.415174 0 ] (Code/F1TVEmulator/:__span-0-67) [ 1908 0 R /XYZ 60.307257 436.014822 0 ] (Code/F1TVEmulator/:__span-0-68) [ 1908 0 R /XYZ 60.307257 422.614470 0 ] (Code/F1TVEmulator/:__span-0-69) [ 1908 0 R /XYZ 60.307257 409.214118 0 ] (Code/F1TVEmulator/:__span-0-7) [ 1906 0 R /XYZ 60.307257 613.832958 0 ] (Code/F1TVEmulator/:__span-0-70) [ 1908 0 R /XYZ 60.307257 395.813766 0 ] (Code/F1TVEmulator/:__span-0-71) [ 1908 0 R /XYZ 60.307257 382.413414 0 ] (Code/F1TVEmulator/:__span-0-72) [ 1908 0 R /XYZ 60.307257 369.013062 0 ] (Code/F1TVEmulator/:__span-0-73) [ 1908 0 R /XYZ 60.307257 355.612710 0 ] (Code/F1TVEmulator/:__span-0-74) [ 1908 0 R /XYZ 60.307257 342.212358 0 ] (Code/F1TVEmulator/:__span-0-75) [ 1908 0 R /XYZ 60.307257 328.812006 0 ] (Code/F1TVEmulator/:__span-0-76) [ 1908 0 R /XYZ 60.307257 302.011302 0 ] (Code/F1TVEmulator/:__span-0-77) [ 1908 0 R /XYZ 60.307257 288.610950 0 ] (Code/F1TVEmulator/:__span-0-78) [ 1908 0 R /XYZ 60.307257 275.210598 0 ] (Code/F1TVEmulator/:__span-0-79) [ 1908 0 R /XYZ 60.307257 261.810246 0 ] (Code/F1TVEmulator/:__span-0-8) [ 1906 0 R /XYZ 60.307257 600.432606 0 ] (Code/F1TVEmulator/:__span-0-80) [ 1908 0 R /XYZ 60.307257 248.409894 0 ] (Code/F1TVEmulator/:__span-0-81) [ 1908 0 R /XYZ 60.307257 235.009542 0 ] (Code/F1TVEmulator/:__span-0-82) [ 1908 0 R /XYZ 60.307257 208.208838 0 ] (Code/F1TVEmulator/:__span-0-83) [ 1908 0 R /XYZ 60.307257 194.808486 0 ] (Code/F1TVEmulator/:__span-0-84) [ 1908 0 R /XYZ 60.307257 181.408134 0 ] (Code/F1TVEmulator/:__span-0-85) [ 1908 0 R /XYZ 60.307257 168.007782 0 ] (Code/F1TVEmulator/:__span-0-86) [ 1908 0 R /XYZ 60.307257 154.607430 0 ] (Code/F1TVEmulator/:__span-0-87) [ 1908 0 R /XYZ 60.307257 141.207078 0 ] (Code/F1TVEmulator/:__span-0-88) [ 1908 0 R /XYZ 60.307257 127.806726 0 ] (Code/F1TVEmulator/:__span-0-89) [ 1908 0 R /XYZ 60.307257 114.406374 0 ] (Code/F1TVEmulator/:__span-0-9) [ 1906 0 R /XYZ 60.307257 587.032254 0 ] (Code/F1TVEmulator/:__span-0-90) [ 1908 0 R /XYZ 60.307257 101.006022 0 ] (Code/F1TVEmulator/:__span-0-91) [ 1908 0 R /XYZ 60.307257 87.605670 0 ] (Code/F1TVEmulator/:__span-0-92) [ 1910 0 R /XYZ 60.307257 771.023622 0 ] (Code/F1TVEmulator/:__span-0-93) [ 1910 0 R /XYZ 60.307257 757.623270 0 ] (Code/F1TVEmulator/:__span-0-94) [ 1910 0 R /XYZ 60.307257 744.222918 0 ] (Code/F1TVEmulator/:__span-0-95) [ 1910 0 R /XYZ 60.307257 730.822566 0 ] (Code/F1TVEmulator/:__span-0-96) [ 1910 0 R /XYZ 60.307257 717.422214 0 ] (Code/F1TVEmulator/:__span-0-97) [ 1910 0 R /XYZ 60.307257 704.021862 0 ] (Code/F1TVEmulator/:__span-0-98) [ 1910 0 R /XYZ 60.307257 690.621510 0 ] (Code/F1TVEmulator/:__span-0-99) [ 1910 0 R /XYZ 60.307257 677.221158 0 ] (Code/F1TVEmulator/:f1tvemulatorcs) [ 1906 0 R /XYZ 39.386457 747.563622 0 ] (Code/Form1/:) [ 1922 0 R /XYZ 39.386457 747.563622 0 ] (Code/Form1/:__span-0-1) [ 1922 0 R /XYZ 60.307257 707.635422 0 ] (Code/Form1/:__span-0-10) [ 1922 0 R /XYZ 60.307257 587.032254 0 ] (Code/Form1/:__span-0-100) [ 1926 0 R /XYZ 60.307257 717.422214 0 ] (Code/Form1/:__span-0-101) [ 1926 0 R /XYZ 60.307257 704.021862 0 ] (Code/Form1/:__span-0-102) [ 1926 0 R /XYZ 60.307257 690.621510 0 ] (Code/Form1/:__span-0-103) [ 1926 0 R /XYZ 60.307257 677.221158 0 ] (Code/Form1/:__span-0-104) [ 1926 0 R /XYZ 60.307257 663.820806 0 ] (Code/Form1/:__span-0-105) [ 1926 0 R /XYZ 60.307257 650.420454 0 ] (Code/Form1/:__span-0-106) [ 1926 0 R /XYZ 60.307257 623.619750 0 ] (Code/Form1/:__span-0-107) [ 1926 0 R /XYZ 60.307257 610.219398 0 ] (Code/Form1/:__span-0-108) [ 1926 0 R /XYZ 60.307257 596.819046 0 ] (Code/Form1/:__span-0-109) [ 1926 0 R /XYZ 60.307257 583.418694 0 ] (Code/Form1/:__span-0-11) [ 1922 0 R /XYZ 60.307257 573.631902 0 ] (Code/Form1/:__span-0-110) [ 1926 0 R /XYZ 60.307257 570.018342 0 ] (Code/Form1/:__span-0-111) [ 1926 0 R /XYZ 60.307257 543.217638 0 ] (Code/Form1/:__span-0-112) [ 1926 0 R /XYZ 60.307257 516.416934 0 ] (Code/Form1/:__span-0-113) [ 1926 0 R /XYZ 60.307257 503.016582 0 ] (Code/Form1/:__span-0-114) [ 1926 0 R /XYZ 60.307257 489.616230 0 ] (Code/Form1/:__span-0-115) [ 1926 0 R /XYZ 60.307257 476.215878 0 ] (Code/Form1/:__span-0-116) [ 1926 0 R /XYZ 60.307257 462.815526 0 ] (Code/Form1/:__span-0-117) [ 1926 0 R /XYZ 60.307257 449.415174 0 ] (Code/Form1/:__span-0-118) [ 1926 0 R /XYZ 60.307257 436.014822 0 ] (Code/Form1/:__span-0-119) [ 1926 0 R /XYZ 60.307257 422.614470 0 ] (Code/Form1/:__span-0-12) [ 1922 0 R /XYZ 60.307257 560.231550 0 ] (Code/Form1/:__span-0-120) [ 1926 0 R /XYZ 60.307257 409.214118 0 ] (Code/Form1/:__span-0-121) [ 1926 0 R /XYZ 60.307257 395.813766 0 ] (Code/Form1/:__span-0-122) [ 1926 0 R /XYZ 60.307257 369.013062 0 ] (Code/Form1/:__span-0-123) [ 1926 0 R /XYZ 60.307257 355.612710 0 ] (Code/Form1/:__span-0-124) [ 1926 0 R /XYZ 60.307257 328.812006 0 ] (Code/Form1/:__span-0-125) [ 1926 0 R /XYZ 60.307257 315.411654 0 ] (Code/Form1/:__span-0-126) [ 1926 0 R /XYZ 60.307257 302.011302 0 ] (Code/Form1/:__span-0-127) [ 1926 0 R /XYZ 60.307257 288.610950 0 ] (Code/Form1/:__span-0-128) [ 1926 0 R /XYZ 60.307257 275.210598 0 ] (Code/Form1/:__span-0-129) [ 1926 0 R /XYZ 60.307257 261.810246 0 ] (Code/Form1/:__span-0-13) [ 1922 0 R /XYZ 60.307257 546.831198 0 ] (Code/Form1/:__span-0-130) [ 1926 0 R /XYZ 60.307257 248.409894 0 ] (Code/Form1/:__span-0-131) [ 1926 0 R /XYZ 60.307257 235.009542 0 ] (Code/Form1/:__span-0-132) [ 1926 0 R /XYZ 60.307257 221.609190 0 ] (Code/Form1/:__span-0-133) [ 1926 0 R /XYZ 60.307257 208.208838 0 ] (Code/Form1/:__span-0-134) [ 1926 0 R /XYZ 60.307257 194.808486 0 ] (Code/Form1/:__span-0-135) [ 1926 0 R /XYZ 60.307257 181.408134 0 ] (Code/Form1/:__span-0-136) [ 1926 0 R /XYZ 60.307257 168.007782 0 ] (Code/Form1/:__span-0-137) [ 1926 0 R /XYZ 60.307257 154.607430 0 ] (Code/Form1/:__span-0-138) [ 1926 0 R /XYZ 60.307257 141.207078 0 ] (Code/Form1/:__span-0-139) [ 1926 0 R /XYZ 60.307257 127.806726 0 ] (Code/Form1/:__span-0-14) [ 1922 0 R /XYZ 60.307257 533.430846 0 ] (Code/Form1/:__span-0-140) [ 1926 0 R /XYZ 60.307257 114.406374 0 ] (Code/Form1/:__span-0-141) [ 1926 0 R /XYZ 60.307257 101.006022 0 ] (Code/Form1/:__span-0-142) [ 1926 0 R /XYZ 60.307257 87.605670 0 ] (Code/Form1/:__span-0-143) [ 1928 0 R /XYZ 60.307257 771.023622 0 ] (Code/Form1/:__span-0-144) [ 1928 0 R /XYZ 60.307257 757.623270 0 ] (Code/Form1/:__span-0-145) [ 1928 0 R /XYZ 60.307257 744.222918 0 ] (Code/Form1/:__span-0-146) [ 1928 0 R /XYZ 60.307257 730.822566 0 ] (Code/Form1/:__span-0-147) [ 1928 0 R /XYZ 60.307257 704.021862 0 ] (Code/Form1/:__span-0-148) [ 1928 0 R /XYZ 60.307257 690.621510 0 ] (Code/Form1/:__span-0-149) [ 1928 0 R /XYZ 60.307257 663.820806 0 ] (Code/Form1/:__span-0-15) [ 1922 0 R /XYZ 60.307257 520.030494 0 ] (Code/Form1/:__span-0-150) [ 1928 0 R /XYZ 60.307257 637.020102 0 ] (Code/Form1/:__span-0-151) [ 1928 0 R /XYZ 60.307257 610.219398 0 ] (Code/Form1/:__span-0-152) [ 1928 0 R /XYZ 60.307257 583.418694 0 ] (Code/Form1/:__span-0-153) [ 1928 0 R /XYZ 60.307257 556.617990 0 ] (Code/Form1/:__span-0-154) [ 1928 0 R /XYZ 60.307257 516.416934 0 ] (Code/Form1/:__span-0-155) [ 1928 0 R /XYZ 60.307257 503.016582 0 ] (Code/Form1/:__span-0-156) [ 1928 0 R /XYZ 60.307257 489.616230 0 ] (Code/Form1/:__span-0-157) [ 1928 0 R /XYZ 60.307257 476.215878 0 ] (Code/Form1/:__span-0-158) [ 1928 0 R /XYZ 60.307257 462.815526 0 ] (Code/Form1/:__span-0-159) [ 1928 0 R /XYZ 60.307257 449.415174 0 ] (Code/Form1/:__span-0-16) [ 1922 0 R /XYZ 60.307257 506.630142 0 ] (Code/Form1/:__span-0-160) [ 1928 0 R /XYZ 60.307257 436.014822 0 ] (Code/Form1/:__span-0-161) [ 1928 0 R /XYZ 60.307257 422.614470 0 ] (Code/Form1/:__span-0-162) [ 1928 0 R /XYZ 60.307257 409.214118 0 ] (Code/Form1/:__span-0-163) [ 1928 0 R /XYZ 60.307257 395.813766 0 ] (Code/Form1/:__span-0-164) [ 1928 0 R /XYZ 60.307257 382.413414 0 ] (Code/Form1/:__span-0-165) [ 1928 0 R /XYZ 60.307257 369.013062 0 ] (Code/Form1/:__span-0-166) [ 1928 0 R /XYZ 60.307257 355.612710 0 ] (Code/Form1/:__span-0-167) [ 1928 0 R /XYZ 60.307257 342.212358 0 ] (Code/Form1/:__span-0-168) [ 1928 0 R /XYZ 60.307257 328.812006 0 ] (Code/Form1/:__span-0-169) [ 1928 0 R /XYZ 60.307257 315.411654 0 ] (Code/Form1/:__span-0-17) [ 1922 0 R /XYZ 60.307257 493.229790 0 ] (Code/Form1/:__span-0-170) [ 1928 0 R /XYZ 60.307257 302.011302 0 ] (Code/Form1/:__span-0-171) [ 1928 0 R /XYZ 60.307257 288.610950 0 ] (Code/Form1/:__span-0-172) [ 1928 0 R /XYZ 60.307257 275.210598 0 ] (Code/Form1/:__span-0-173) [ 1928 0 R /XYZ 60.307257 261.810246 0 ] (Code/Form1/:__span-0-174) [ 1928 0 R /XYZ 60.307257 248.409894 0 ] (Code/Form1/:__span-0-175) [ 1928 0 R /XYZ 60.307257 235.009542 0 ] (Code/Form1/:__span-0-176) [ 1928 0 R /XYZ 60.307257 221.609190 0 ] (Code/Form1/:__span-0-177) [ 1928 0 R /XYZ 60.307257 208.208838 0 ] (Code/Form1/:__span-0-178) [ 1928 0 R /XYZ 60.307257 194.808486 0 ] (Code/Form1/:__span-0-179) [ 1928 0 R /XYZ 60.307257 181.408134 0 ] (Code/Form1/:__span-0-18) [ 1922 0 R /XYZ 60.307257 479.829438 0 ] (Code/Form1/:__span-0-180) [ 1928 0 R /XYZ 60.307257 168.007782 0 ] (Code/Form1/:__span-0-181) [ 1928 0 R /XYZ 60.307257 154.607430 0 ] (Code/Form1/:__span-0-182) [ 1928 0 R /XYZ 60.307257 141.207078 0 ] (Code/Form1/:__span-0-183) [ 1928 0 R /XYZ 60.307257 127.806726 0 ] (Code/Form1/:__span-0-184) [ 1928 0 R /XYZ 60.307257 114.406374 0 ] (Code/Form1/:__span-0-185) [ 1928 0 R /XYZ 60.307257 101.006022 0 ] (Code/Form1/:__span-0-186) [ 1928 0 R /XYZ 60.307257 87.605670 0 ] (Code/Form1/:__span-0-187) [ 1930 0 R /XYZ 60.307257 771.023622 0 ] (Code/Form1/:__span-0-188) [ 1930 0 R /XYZ 60.307257 757.623270 0 ] (Code/Form1/:__span-0-189) [ 1930 0 R /XYZ 60.307257 744.222918 0 ] (Code/Form1/:__span-0-19) [ 1922 0 R /XYZ 60.307257 466.429086 0 ] (Code/Form1/:__span-0-190) [ 1930 0 R /XYZ 60.307257 730.822566 0 ] (Code/Form1/:__span-0-191) [ 1930 0 R /XYZ 60.307257 717.422214 0 ] (Code/Form1/:__span-0-192) [ 1930 0 R /XYZ 60.307257 704.021862 0 ] (Code/Form1/:__span-0-193) [ 1930 0 R /XYZ 60.307257 690.621510 0 ] (Code/Form1/:__span-0-194) [ 1930 0 R /XYZ 60.307257 677.221158 0 ] (Code/Form1/:__span-0-195) [ 1930 0 R /XYZ 60.307257 663.820806 0 ] (Code/Form1/:__span-0-196) [ 1930 0 R /XYZ 60.307257 650.420454 0 ] (Code/Form1/:__span-0-197) [ 1930 0 R /XYZ 60.307257 637.020102 0 ] (Code/Form1/:__span-0-198) [ 1930 0 R /XYZ 60.307257 623.619750 0 ] (Code/Form1/:__span-0-199) [ 1930 0 R /XYZ 60.307257 610.219398 0 ] (Code/Form1/:__span-0-2) [ 1922 0 R /XYZ 60.307257 694.235070 0 ] (Code/Form1/:__span-0-20) [ 1922 0 R /XYZ 60.307257 453.028734 0 ] (Code/Form1/:__span-0-200) [ 1930 0 R /XYZ 60.307257 596.819046 0 ] (Code/Form1/:__span-0-201) [ 1930 0 R /XYZ 60.307257 583.418694 0 ] (Code/Form1/:__span-0-202) [ 1930 0 R /XYZ 60.307257 570.018342 0 ] (Code/Form1/:__span-0-203) [ 1930 0 R /XYZ 60.307257 556.617990 0 ] (Code/Form1/:__span-0-204) [ 1930 0 R /XYZ 60.307257 543.217638 0 ] (Code/Form1/:__span-0-205) [ 1930 0 R /XYZ 60.307257 529.817286 0 ] (Code/Form1/:__span-0-206) [ 1930 0 R /XYZ 60.307257 516.416934 0 ] (Code/Form1/:__span-0-207) [ 1930 0 R /XYZ 60.307257 503.016582 0 ] (Code/Form1/:__span-0-208) [ 1930 0 R /XYZ 60.307257 489.616230 0 ] (Code/Form1/:__span-0-209) [ 1930 0 R /XYZ 60.307257 476.215878 0 ] (Code/Form1/:__span-0-21) [ 1922 0 R /XYZ 60.307257 439.628382 0 ] (Code/Form1/:__span-0-210) [ 1930 0 R /XYZ 60.307257 462.815526 0 ] (Code/Form1/:__span-0-211) [ 1930 0 R /XYZ 60.307257 449.415174 0 ] (Code/Form1/:__span-0-212) [ 1930 0 R /XYZ 60.307257 436.014822 0 ] (Code/Form1/:__span-0-213) [ 1930 0 R /XYZ 60.307257 422.614470 0 ] (Code/Form1/:__span-0-214) [ 1930 0 R /XYZ 60.307257 409.214118 0 ] (Code/Form1/:__span-0-215) [ 1930 0 R /XYZ 60.307257 395.813766 0 ] (Code/Form1/:__span-0-216) [ 1930 0 R /XYZ 60.307257 382.413414 0 ] (Code/Form1/:__span-0-217) [ 1930 0 R /XYZ 60.307257 369.013062 0 ] (Code/Form1/:__span-0-218) [ 1930 0 R /XYZ 60.307257 355.612710 0 ] (Code/Form1/:__span-0-219) [ 1930 0 R /XYZ 60.307257 342.212358 0 ] (Code/Form1/:__span-0-22) [ 1922 0 R /XYZ 60.307257 426.228030 0 ] (Code/Form1/:__span-0-220) [ 1930 0 R /XYZ 60.307257 328.812006 0 ] (Code/Form1/:__span-0-221) [ 1930 0 R /XYZ 60.307257 315.411654 0 ] (Code/Form1/:__span-0-222) [ 1930 0 R /XYZ 60.307257 302.011302 0 ] (Code/Form1/:__span-0-223) [ 1930 0 R /XYZ 60.307257 288.610950 0 ] (Code/Form1/:__span-0-224) [ 1930 0 R /XYZ 60.307257 275.210598 0 ] (Code/Form1/:__span-0-225) [ 1930 0 R /XYZ 60.307257 261.810246 0 ] (Code/Form1/:__span-0-226) [ 1930 0 R /XYZ 60.307257 248.409894 0 ] (Code/Form1/:__span-0-227) [ 1930 0 R /XYZ 60.307257 235.009542 0 ] (Code/Form1/:__span-0-228) [ 1930 0 R /XYZ 60.307257 221.609190 0 ] (Code/Form1/:__span-0-229) [ 1930 0 R /XYZ 60.307257 208.208838 0 ] (Code/Form1/:__span-0-23) [ 1922 0 R /XYZ 60.307257 412.827678 0 ] (Code/Form1/:__span-0-230) [ 1930 0 R /XYZ 60.307257 194.808486 0 ] (Code/Form1/:__span-0-231) [ 1930 0 R /XYZ 60.307257 181.408134 0 ] (Code/Form1/:__span-0-232) [ 1930 0 R /XYZ 60.307257 168.007782 0 ] (Code/Form1/:__span-0-233) [ 1930 0 R /XYZ 60.307257 154.607430 0 ] (Code/Form1/:__span-0-234) [ 1930 0 R /XYZ 60.307257 141.207078 0 ] (Code/Form1/:__span-0-235) [ 1930 0 R /XYZ 60.307257 127.806726 0 ] (Code/Form1/:__span-0-236) [ 1930 0 R /XYZ 60.307257 114.406374 0 ] (Code/Form1/:__span-0-237) [ 1930 0 R /XYZ 60.307257 101.006022 0 ] (Code/Form1/:__span-0-238) [ 1930 0 R /XYZ 60.307257 87.605670 0 ] (Code/Form1/:__span-0-239) [ 1932 0 R /XYZ 60.307257 771.023622 0 ] (Code/Form1/:__span-0-24) [ 1922 0 R /XYZ 60.307257 399.427326 0 ] (Code/Form1/:__span-0-240) [ 1932 0 R /XYZ 60.307257 757.623270 0 ] (Code/Form1/:__span-0-241) [ 1932 0 R /XYZ 60.307257 744.222918 0 ] (Code/Form1/:__span-0-242) [ 1932 0 R /XYZ 60.307257 717.422214 0 ] (Code/Form1/:__span-0-243) [ 1932 0 R /XYZ 60.307257 704.021862 0 ] (Code/Form1/:__span-0-244) [ 1932 0 R /XYZ 60.307257 690.621510 0 ] (Code/Form1/:__span-0-245) [ 1932 0 R /XYZ 60.307257 677.221158 0 ] (Code/Form1/:__span-0-246) [ 1932 0 R /XYZ 60.307257 663.820806 0 ] (Code/Form1/:__span-0-247) [ 1932 0 R /XYZ 60.307257 650.420454 0 ] (Code/Form1/:__span-0-248) [ 1932 0 R /XYZ 60.307257 637.020102 0 ] (Code/Form1/:__span-0-249) [ 1932 0 R /XYZ 60.307257 623.619750 0 ] (Code/Form1/:__span-0-25) [ 1922 0 R /XYZ 60.307257 386.026974 0 ] (Code/Form1/:__span-0-250) [ 1932 0 R /XYZ 60.307257 610.219398 0 ] (Code/Form1/:__span-0-251) [ 1932 0 R /XYZ 60.307257 596.819046 0 ] (Code/Form1/:__span-0-252) [ 1932 0 R /XYZ 60.307257 583.418694 0 ] (Code/Form1/:__span-0-253) [ 1932 0 R /XYZ 60.307257 570.018342 0 ] (Code/Form1/:__span-0-254) [ 1932 0 R /XYZ 60.307257 529.817286 0 ] (Code/Form1/:__span-0-255) [ 1932 0 R /XYZ 60.307257 516.416934 0 ] (Code/Form1/:__span-0-256) [ 1932 0 R /XYZ 60.307257 503.016582 0 ] (Code/Form1/:__span-0-257) [ 1932 0 R /XYZ 60.307257 489.616230 0 ] (Code/Form1/:__span-0-258) [ 1932 0 R /XYZ 60.307257 476.215878 0 ] (Code/Form1/:__span-0-259) [ 1932 0 R /XYZ 60.307257 462.815526 0 ] (Code/Form1/:__span-0-26) [ 1922 0 R /XYZ 60.307257 372.626622 0 ] (Code/Form1/:__span-0-260) [ 1932 0 R /XYZ 60.307257 449.415174 0 ] (Code/Form1/:__span-0-261) [ 1932 0 R /XYZ 60.307257 436.014822 0 ] (Code/Form1/:__span-0-262) [ 1932 0 R /XYZ 60.307257 422.614470 0 ] (Code/Form1/:__span-0-263) [ 1932 0 R /XYZ 60.307257 409.214118 0 ] (Code/Form1/:__span-0-264) [ 1932 0 R /XYZ 60.307257 369.013062 0 ] (Code/Form1/:__span-0-265) [ 1932 0 R /XYZ 60.307257 355.612710 0 ] (Code/Form1/:__span-0-266) [ 1932 0 R /XYZ 60.307257 342.212358 0 ] (Code/Form1/:__span-0-267) [ 1932 0 R /XYZ 60.307257 328.812006 0 ] (Code/Form1/:__span-0-268) [ 1932 0 R /XYZ 60.307257 315.411654 0 ] (Code/Form1/:__span-0-269) [ 1932 0 R /XYZ 60.307257 302.011302 0 ] (Code/Form1/:__span-0-27) [ 1922 0 R /XYZ 60.307257 359.226270 0 ] (Code/Form1/:__span-0-270) [ 1932 0 R /XYZ 60.307257 288.610950 0 ] (Code/Form1/:__span-0-271) [ 1932 0 R /XYZ 60.307257 275.210598 0 ] (Code/Form1/:__span-0-272) [ 1932 0 R /XYZ 60.307257 261.810246 0 ] (Code/Form1/:__span-0-273) [ 1932 0 R /XYZ 60.307257 248.409894 0 ] (Code/Form1/:__span-0-274) [ 1932 0 R /XYZ 60.307257 235.009542 0 ] (Code/Form1/:__span-0-275) [ 1932 0 R /XYZ 60.307257 221.609190 0 ] (Code/Form1/:__span-0-276) [ 1932 0 R /XYZ 60.307257 208.208838 0 ] (Code/Form1/:__span-0-277) [ 1932 0 R /XYZ 60.307257 194.808486 0 ] (Code/Form1/:__span-0-278) [ 1932 0 R /XYZ 60.307257 181.408134 0 ] (Code/Form1/:__span-0-279) [ 1932 0 R /XYZ 60.307257 168.007782 0 ] (Code/Form1/:__span-0-28) [ 1922 0 R /XYZ 60.307257 345.825918 0 ] (Code/Form1/:__span-0-280) [ 1932 0 R /XYZ 60.307257 154.607430 0 ] (Code/Form1/:__span-0-281) [ 1932 0 R /XYZ 60.307257 141.207078 0 ] (Code/Form1/:__span-0-282) [ 1932 0 R /XYZ 60.307257 127.806726 0 ] (Code/Form1/:__span-0-283) [ 1932 0 R /XYZ 60.307257 114.406374 0 ] (Code/Form1/:__span-0-284) [ 1932 0 R /XYZ 60.307257 101.006022 0 ] (Code/Form1/:__span-0-285) [ 1932 0 R /XYZ 60.307257 87.605670 0 ] (Code/Form1/:__span-0-286) [ 1934 0 R /XYZ 60.307257 757.623270 0 ] (Code/Form1/:__span-0-287) [ 1934 0 R /XYZ 60.307257 744.222918 0 ] (Code/Form1/:__span-0-288) [ 1934 0 R /XYZ 60.307257 730.822566 0 ] (Code/Form1/:__span-0-289) [ 1934 0 R /XYZ 60.307257 717.422214 0 ] (Code/Form1/:__span-0-29) [ 1922 0 R /XYZ 60.307257 332.425566 0 ] (Code/Form1/:__span-0-290) [ 1934 0 R /XYZ 60.307257 704.021862 0 ] (Code/Form1/:__span-0-291) [ 1934 0 R /XYZ 60.307257 690.621510 0 ] (Code/Form1/:__span-0-292) [ 1934 0 R /XYZ 60.307257 677.221158 0 ] (Code/Form1/:__span-0-293) [ 1934 0 R /XYZ 60.307257 663.820806 0 ] (Code/Form1/:__span-0-294) [ 1934 0 R /XYZ 60.307257 650.420454 0 ] (Code/Form1/:__span-0-295) [ 1934 0 R /XYZ 60.307257 637.020102 0 ] (Code/Form1/:__span-0-296) [ 1934 0 R /XYZ 60.307257 623.619750 0 ] (Code/Form1/:__span-0-297) [ 1934 0 R /XYZ 60.307257 610.219398 0 ] (Code/Form1/:__span-0-298) [ 1934 0 R /XYZ 60.307257 596.819046 0 ] (Code/Form1/:__span-0-299) [ 1934 0 R /XYZ 60.307257 583.418694 0 ] (Code/Form1/:__span-0-3) [ 1922 0 R /XYZ 60.307257 680.834718 0 ] (Code/Form1/:__span-0-30) [ 1922 0 R /XYZ 60.307257 319.025214 0 ] (Code/Form1/:__span-0-300) [ 1934 0 R /XYZ 60.307257 570.018342 0 ] (Code/Form1/:__span-0-301) [ 1934 0 R /XYZ 60.307257 556.617990 0 ] (Code/Form1/:__span-0-302) [ 1934 0 R /XYZ 60.307257 543.217638 0 ] (Code/Form1/:__span-0-303) [ 1934 0 R /XYZ 60.307257 529.817286 0 ] (Code/Form1/:__span-0-304) [ 1934 0 R /XYZ 60.307257 516.416934 0 ] (Code/Form1/:__span-0-305) [ 1934 0 R /XYZ 60.307257 503.016582 0 ] (Code/Form1/:__span-0-306) [ 1934 0 R /XYZ 60.307257 489.616230 0 ] (Code/Form1/:__span-0-307) [ 1934 0 R /XYZ 60.307257 476.215878 0 ] (Code/Form1/:__span-0-308) [ 1934 0 R /XYZ 60.307257 462.815526 0 ] (Code/Form1/:__span-0-309) [ 1934 0 R /XYZ 60.307257 449.415174 0 ] (Code/Form1/:__span-0-31) [ 1922 0 R /XYZ 60.307257 305.624862 0 ] (Code/Form1/:__span-0-310) [ 1934 0 R /XYZ 60.307257 436.014822 0 ] (Code/Form1/:__span-0-311) [ 1934 0 R /XYZ 60.307257 422.614470 0 ] (Code/Form1/:__span-0-312) [ 1934 0 R /XYZ 60.307257 409.214118 0 ] (Code/Form1/:__span-0-313) [ 1934 0 R /XYZ 60.307257 395.813766 0 ] (Code/Form1/:__span-0-314) [ 1934 0 R /XYZ 60.307257 382.413414 0 ] (Code/Form1/:__span-0-315) [ 1934 0 R /XYZ 60.307257 369.013062 0 ] (Code/Form1/:__span-0-316) [ 1934 0 R /XYZ 60.307257 355.612710 0 ] (Code/Form1/:__span-0-317) [ 1934 0 R /XYZ 60.307257 342.212358 0 ] (Code/Form1/:__span-0-318) [ 1934 0 R /XYZ 60.307257 328.812006 0 ] (Code/Form1/:__span-0-319) [ 1934 0 R /XYZ 60.307257 315.411654 0 ] (Code/Form1/:__span-0-32) [ 1922 0 R /XYZ 60.307257 292.224510 0 ] (Code/Form1/:__span-0-320) [ 1934 0 R /XYZ 60.307257 275.210598 0 ] (Code/Form1/:__span-0-321) [ 1934 0 R /XYZ 60.307257 261.810246 0 ] (Code/Form1/:__span-0-322) [ 1934 0 R /XYZ 60.307257 248.409894 0 ] (Code/Form1/:__span-0-323) [ 1934 0 R /XYZ 60.307257 208.208838 0 ] (Code/Form1/:__span-0-324) [ 1934 0 R /XYZ 60.307257 194.808486 0 ] (Code/Form1/:__span-0-325) [ 1934 0 R /XYZ 60.307257 181.408134 0 ] (Code/Form1/:__span-0-326) [ 1934 0 R /XYZ 60.307257 141.207078 0 ] (Code/Form1/:__span-0-327) [ 1934 0 R /XYZ 60.307257 127.806726 0 ] (Code/Form1/:__span-0-328) [ 1934 0 R /XYZ 60.307257 114.406374 0 ] (Code/Form1/:__span-0-329) [ 1934 0 R /XYZ 60.307257 87.605670 0 ] (Code/Form1/:__span-0-33) [ 1922 0 R /XYZ 60.307257 278.824158 0 ] (Code/Form1/:__span-0-330) [ 1936 0 R /XYZ 60.307257 771.023622 0 ] (Code/Form1/:__span-0-331) [ 1936 0 R /XYZ 60.307257 757.623270 0 ] (Code/Form1/:__span-0-332) [ 1936 0 R /XYZ 60.307257 730.822566 0 ] (Code/Form1/:__span-0-333) [ 1936 0 R /XYZ 60.307257 717.422214 0 ] (Code/Form1/:__span-0-334) [ 1936 0 R /XYZ 60.307257 704.021862 0 ] (Code/Form1/:__span-0-335) [ 1936 0 R /XYZ 60.307257 677.221158 0 ] (Code/Form1/:__span-0-336) [ 1936 0 R /XYZ 60.307257 663.820806 0 ] (Code/Form1/:__span-0-337) [ 1936 0 R /XYZ 60.307257 650.420454 0 ] (Code/Form1/:__span-0-338) [ 1936 0 R /XYZ 60.307257 623.619750 0 ] (Code/Form1/:__span-0-339) [ 1936 0 R /XYZ 60.307257 610.219398 0 ] (Code/Form1/:__span-0-34) [ 1922 0 R /XYZ 60.307257 265.423806 0 ] (Code/Form1/:__span-0-340) [ 1936 0 R /XYZ 60.307257 596.819046 0 ] (Code/Form1/:__span-0-341) [ 1936 0 R /XYZ 60.307257 583.418694 0 ] (Code/Form1/:__span-0-342) [ 1936 0 R /XYZ 60.307257 570.018342 0 ] (Code/Form1/:__span-0-343) [ 1936 0 R /XYZ 60.307257 556.617990 0 ] (Code/Form1/:__span-0-344) [ 1936 0 R /XYZ 60.307257 543.217638 0 ] (Code/Form1/:__span-0-345) [ 1936 0 R /XYZ 60.307257 529.817286 0 ] (Code/Form1/:__span-0-346) [ 1936 0 R /XYZ 60.307257 516.416934 0 ] (Code/Form1/:__span-0-347) [ 1936 0 R /XYZ 60.307257 503.016582 0 ] (Code/Form1/:__span-0-348) [ 1936 0 R /XYZ 60.307257 489.616230 0 ] (Code/Form1/:__span-0-349) [ 1936 0 R /XYZ 60.307257 476.215878 0 ] (Code/Form1/:__span-0-35) [ 1922 0 R /XYZ 60.307257 252.023454 0 ] (Code/Form1/:__span-0-350) [ 1936 0 R /XYZ 60.307257 462.815526 0 ] (Code/Form1/:__span-0-351) [ 1936 0 R /XYZ 60.307257 449.415174 0 ] (Code/Form1/:__span-0-352) [ 1936 0 R /XYZ 60.307257 436.014822 0 ] (Code/Form1/:__span-0-353) [ 1936 0 R /XYZ 60.307257 422.614470 0 ] (Code/Form1/:__span-0-354) [ 1936 0 R /XYZ 60.307257 409.214118 0 ] (Code/Form1/:__span-0-355) [ 1936 0 R /XYZ 60.307257 395.813766 0 ] (Code/Form1/:__span-0-356) [ 1936 0 R /XYZ 60.307257 382.413414 0 ] (Code/Form1/:__span-0-357) [ 1936 0 R /XYZ 60.307257 369.013062 0 ] (Code/Form1/:__span-0-358) [ 1936 0 R /XYZ 60.307257 355.612710 0 ] (Code/Form1/:__span-0-359) [ 1936 0 R /XYZ 60.307257 342.212358 0 ] (Code/Form1/:__span-0-36) [ 1922 0 R /XYZ 60.307257 238.623102 0 ] (Code/Form1/:__span-0-360) [ 1936 0 R /XYZ 60.307257 315.411654 0 ] (Code/Form1/:__span-0-361) [ 1936 0 R /XYZ 60.307257 302.011302 0 ] (Code/Form1/:__span-0-362) [ 1936 0 R /XYZ 60.307257 288.610950 0 ] (Code/Form1/:__span-0-363) [ 1936 0 R /XYZ 60.307257 275.210598 0 ] (Code/Form1/:__span-0-364) [ 1936 0 R /XYZ 60.307257 261.810246 0 ] (Code/Form1/:__span-0-365) [ 1936 0 R /XYZ 60.307257 248.409894 0 ] (Code/Form1/:__span-0-366) [ 1936 0 R /XYZ 60.307257 235.009542 0 ] (Code/Form1/:__span-0-367) [ 1936 0 R /XYZ 60.307257 221.609190 0 ] (Code/Form1/:__span-0-368) [ 1936 0 R /XYZ 60.307257 208.208838 0 ] (Code/Form1/:__span-0-369) [ 1936 0 R /XYZ 60.307257 194.808486 0 ] (Code/Form1/:__span-0-37) [ 1922 0 R /XYZ 60.307257 225.222750 0 ] (Code/Form1/:__span-0-370) [ 1936 0 R /XYZ 60.307257 168.007782 0 ] (Code/Form1/:__span-0-371) [ 1936 0 R /XYZ 60.307257 141.207078 0 ] (Code/Form1/:__span-0-372) [ 1936 0 R /XYZ 60.307257 127.806726 0 ] (Code/Form1/:__span-0-373) [ 1936 0 R /XYZ 60.307257 114.406374 0 ] (Code/Form1/:__span-0-374) [ 1936 0 R /XYZ 60.307257 101.006022 0 ] (Code/Form1/:__span-0-375) [ 1936 0 R /XYZ 60.307257 87.605670 0 ] (Code/Form1/:__span-0-376) [ 1938 0 R /XYZ 60.307257 757.623270 0 ] (Code/Form1/:__span-0-377) [ 1938 0 R /XYZ 60.307257 744.222918 0 ] (Code/Form1/:__span-0-378) [ 1938 0 R /XYZ 60.307257 730.822566 0 ] (Code/Form1/:__span-0-379) [ 1938 0 R /XYZ 60.307257 717.422214 0 ] (Code/Form1/:__span-0-38) [ 1922 0 R /XYZ 60.307257 211.822398 0 ] (Code/Form1/:__span-0-380) [ 1938 0 R /XYZ 60.307257 704.021862 0 ] (Code/Form1/:__span-0-381) [ 1938 0 R /XYZ 60.307257 690.621510 0 ] (Code/Form1/:__span-0-382) [ 1938 0 R /XYZ 60.307257 677.221158 0 ] (Code/Form1/:__span-0-383) [ 1938 0 R /XYZ 60.307257 663.820806 0 ] (Code/Form1/:__span-0-384) [ 1938 0 R /XYZ 60.307257 650.420454 0 ] (Code/Form1/:__span-0-385) [ 1938 0 R /XYZ 60.307257 637.020102 0 ] (Code/Form1/:__span-0-386) [ 1938 0 R /XYZ 60.307257 623.619750 0 ] (Code/Form1/:__span-0-387) [ 1938 0 R /XYZ 60.307257 610.219398 0 ] (Code/Form1/:__span-0-388) [ 1938 0 R /XYZ 60.307257 596.819046 0 ] (Code/Form1/:__span-0-389) [ 1938 0 R /XYZ 60.307257 583.418694 0 ] (Code/Form1/:__span-0-39) [ 1922 0 R /XYZ 60.307257 198.422046 0 ] (Code/Form1/:__span-0-390) [ 1938 0 R /XYZ 60.307257 570.018342 0 ] (Code/Form1/:__span-0-391) [ 1938 0 R /XYZ 60.307257 556.617990 0 ] (Code/Form1/:__span-0-392) [ 1938 0 R /XYZ 60.307257 543.217638 0 ] (Code/Form1/:__span-0-393) [ 1938 0 R /XYZ 60.307257 529.817286 0 ] (Code/Form1/:__span-0-394) [ 1938 0 R /XYZ 60.307257 516.416934 0 ] (Code/Form1/:__span-0-395) [ 1938 0 R /XYZ 60.307257 503.016582 0 ] (Code/Form1/:__span-0-396) [ 1938 0 R /XYZ 60.307257 489.616230 0 ] (Code/Form1/:__span-0-397) [ 1938 0 R /XYZ 60.307257 476.215878 0 ] (Code/Form1/:__span-0-398) [ 1938 0 R /XYZ 60.307257 462.815526 0 ] (Code/Form1/:__span-0-399) [ 1938 0 R /XYZ 60.307257 449.415174 0 ] (Code/Form1/:__span-0-4) [ 1922 0 R /XYZ 60.307257 667.434366 0 ] (Code/Form1/:__span-0-40) [ 1922 0 R /XYZ 60.307257 185.021694 0 ] (Code/Form1/:__span-0-400) [ 1938 0 R /XYZ 60.307257 436.014822 0 ] (Code/Form1/:__span-0-401) [ 1938 0 R /XYZ 60.307257 395.813766 0 ] (Code/Form1/:__span-0-402) [ 1938 0 R /XYZ 60.307257 382.413414 0 ] (Code/Form1/:__span-0-403) [ 1938 0 R /XYZ 60.307257 369.013062 0 ] (Code/Form1/:__span-0-404) [ 1938 0 R /XYZ 60.307257 355.612710 0 ] (Code/Form1/:__span-0-405) [ 1938 0 R /XYZ 60.307257 342.212358 0 ] (Code/Form1/:__span-0-406) [ 1938 0 R /XYZ 60.307257 328.812006 0 ] (Code/Form1/:__span-0-407) [ 1938 0 R /XYZ 60.307257 315.411654 0 ] (Code/Form1/:__span-0-408) [ 1938 0 R /XYZ 60.307257 302.011302 0 ] (Code/Form1/:__span-0-409) [ 1938 0 R /XYZ 60.307257 288.610950 0 ] (Code/Form1/:__span-0-41) [ 1922 0 R /XYZ 60.307257 171.621342 0 ] (Code/Form1/:__span-0-410) [ 1938 0 R /XYZ 60.307257 275.210598 0 ] (Code/Form1/:__span-0-411) [ 1938 0 R /XYZ 60.307257 261.810246 0 ] (Code/Form1/:__span-0-412) [ 1938 0 R /XYZ 60.307257 248.409894 0 ] (Code/Form1/:__span-0-413) [ 1938 0 R /XYZ 60.307257 235.009542 0 ] (Code/Form1/:__span-0-414) [ 1938 0 R /XYZ 60.307257 208.208838 0 ] (Code/Form1/:__span-0-415) [ 1938 0 R /XYZ 60.307257 194.808486 0 ] (Code/Form1/:__span-0-416) [ 1938 0 R /XYZ 60.307257 181.408134 0 ] (Code/Form1/:__span-0-417) [ 1938 0 R /XYZ 60.307257 154.607430 0 ] (Code/Form1/:__span-0-418) [ 1938 0 R /XYZ 60.307257 141.207078 0 ] (Code/Form1/:__span-0-419) [ 1938 0 R /XYZ 60.307257 114.406374 0 ] (Code/Form1/:__span-0-42) [ 1922 0 R /XYZ 60.307257 158.220990 0 ] (Code/Form1/:__span-0-420) [ 1938 0 R /XYZ 60.307257 101.006022 0 ] (Code/Form1/:__span-0-421) [ 1938 0 R /XYZ 60.307257 87.605670 0 ] (Code/Form1/:__span-0-422) [ 1940 0 R /XYZ 60.307257 771.023622 0 ] (Code/Form1/:__span-0-423) [ 1940 0 R /XYZ 60.307257 757.623270 0 ] (Code/Form1/:__span-0-424) [ 1940 0 R /XYZ 60.307257 744.222918 0 ] (Code/Form1/:__span-0-425) [ 1940 0 R /XYZ 60.307257 730.822566 0 ] (Code/Form1/:__span-0-426) [ 1940 0 R /XYZ 60.307257 717.422214 0 ] (Code/Form1/:__span-0-427) [ 1940 0 R /XYZ 60.307257 704.021862 0 ] (Code/Form1/:__span-0-428) [ 1940 0 R /XYZ 60.307257 690.621510 0 ] (Code/Form1/:__span-0-429) [ 1940 0 R /XYZ 60.307257 677.221158 0 ] (Code/Form1/:__span-0-43) [ 1922 0 R /XYZ 60.307257 144.820638 0 ] (Code/Form1/:__span-0-430) [ 1940 0 R /XYZ 60.307257 663.820806 0 ] (Code/Form1/:__span-0-431) [ 1940 0 R /XYZ 60.307257 650.420454 0 ] (Code/Form1/:__span-0-432) [ 1940 0 R /XYZ 60.307257 637.020102 0 ] (Code/Form1/:__span-0-433) [ 1940 0 R /XYZ 60.307257 623.619750 0 ] (Code/Form1/:__span-0-434) [ 1940 0 R /XYZ 60.307257 610.219398 0 ] (Code/Form1/:__span-0-435) [ 1940 0 R /XYZ 60.307257 596.819046 0 ] (Code/Form1/:__span-0-436) [ 1940 0 R /XYZ 60.307257 583.418694 0 ] (Code/Form1/:__span-0-437) [ 1940 0 R /XYZ 60.307257 570.018342 0 ] (Code/Form1/:__span-0-438) [ 1940 0 R /XYZ 60.307257 543.217638 0 ] (Code/Form1/:__span-0-439) [ 1940 0 R /XYZ 60.307257 529.817286 0 ] (Code/Form1/:__span-0-44) [ 1922 0 R /XYZ 60.307257 131.420286 0 ] (Code/Form1/:__span-0-440) [ 1940 0 R /XYZ 60.307257 516.416934 0 ] (Code/Form1/:__span-0-441) [ 1940 0 R /XYZ 60.307257 503.016582 0 ] (Code/Form1/:__span-0-442) [ 1940 0 R /XYZ 60.307257 476.215878 0 ] (Code/Form1/:__span-0-443) [ 1940 0 R /XYZ 60.307257 462.815526 0 ] (Code/Form1/:__span-0-444) [ 1940 0 R /XYZ 60.307257 449.415174 0 ] (Code/Form1/:__span-0-445) [ 1940 0 R /XYZ 60.307257 436.014822 0 ] (Code/Form1/:__span-0-446) [ 1940 0 R /XYZ 60.307257 422.614470 0 ] (Code/Form1/:__span-0-447) [ 1940 0 R /XYZ 60.307257 409.214118 0 ] (Code/Form1/:__span-0-448) [ 1940 0 R /XYZ 60.307257 395.813766 0 ] (Code/Form1/:__span-0-449) [ 1940 0 R /XYZ 60.307257 382.413414 0 ] (Code/Form1/:__span-0-45) [ 1922 0 R /XYZ 60.307257 118.019934 0 ] (Code/Form1/:__span-0-450) [ 1940 0 R /XYZ 60.307257 369.013062 0 ] (Code/Form1/:__span-0-451) [ 1940 0 R /XYZ 60.307257 355.612710 0 ] (Code/Form1/:__span-0-452) [ 1940 0 R /XYZ 60.307257 342.212358 0 ] (Code/Form1/:__span-0-453) [ 1940 0 R /XYZ 60.307257 328.812006 0 ] (Code/Form1/:__span-0-454) [ 1940 0 R /XYZ 60.307257 302.011302 0 ] (Code/Form1/:__span-0-455) [ 1940 0 R /XYZ 60.307257 288.610950 0 ] (Code/Form1/:__span-0-456) [ 1940 0 R /XYZ 60.307257 275.210598 0 ] (Code/Form1/:__span-0-457) [ 1940 0 R /XYZ 60.307257 261.810246 0 ] (Code/Form1/:__span-0-458) [ 1940 0 R /XYZ 60.307257 248.409894 0 ] (Code/Form1/:__span-0-459) [ 1940 0 R /XYZ 60.307257 221.609190 0 ] (Code/Form1/:__span-0-46) [ 1922 0 R /XYZ 60.307257 104.619582 0 ] (Code/Form1/:__span-0-460) [ 1940 0 R /XYZ 60.307257 208.208838 0 ] (Code/Form1/:__span-0-461) [ 1940 0 R /XYZ 60.307257 194.808486 0 ] (Code/Form1/:__span-0-462) [ 1940 0 R /XYZ 60.307257 181.408134 0 ] (Code/Form1/:__span-0-463) [ 1940 0 R /XYZ 60.307257 168.007782 0 ] (Code/Form1/:__span-0-464) [ 1940 0 R /XYZ 60.307257 154.607430 0 ] (Code/Form1/:__span-0-465) [ 1940 0 R /XYZ 60.307257 141.207078 0 ] (Code/Form1/:__span-0-466) [ 1940 0 R /XYZ 60.307257 127.806726 0 ] (Code/Form1/:__span-0-467) [ 1940 0 R /XYZ 60.307257 114.406374 0 ] (Code/Form1/:__span-0-468) [ 1940 0 R /XYZ 60.307257 87.605670 0 ] (Code/Form1/:__span-0-469) [ 1942 0 R /XYZ 60.307257 771.023622 0 ] (Code/Form1/:__span-0-47) [ 1922 0 R /XYZ 60.307257 91.219230 0 ] (Code/Form1/:__span-0-470) [ 1942 0 R /XYZ 60.307257 757.623270 0 ] (Code/Form1/:__span-0-471) [ 1942 0 R /XYZ 60.307257 744.222918 0 ] (Code/Form1/:__span-0-472) [ 1942 0 R /XYZ 60.307257 730.822566 0 ] (Code/Form1/:__span-0-473) [ 1942 0 R /XYZ 60.307257 717.422214 0 ] (Code/Form1/:__span-0-474) [ 1942 0 R /XYZ 60.307257 704.021862 0 ] (Code/Form1/:__span-0-475) [ 1942 0 R /XYZ 60.307257 690.621510 0 ] (Code/Form1/:__span-0-476) [ 1942 0 R /XYZ 60.307257 677.221158 0 ] (Code/Form1/:__span-0-477) [ 1942 0 R /XYZ 60.307257 663.820806 0 ] (Code/Form1/:__span-0-478) [ 1942 0 R /XYZ 60.307257 650.420454 0 ] (Code/Form1/:__span-0-479) [ 1942 0 R /XYZ 60.307257 637.020102 0 ] (Code/Form1/:__span-0-48) [ 1924 0 R /XYZ 60.307257 771.023622 0 ] (Code/Form1/:__span-0-480) [ 1942 0 R /XYZ 60.307257 623.619750 0 ] (Code/Form1/:__span-0-481) [ 1942 0 R /XYZ 60.307257 596.819046 0 ] (Code/Form1/:__span-0-482) [ 1942 0 R /XYZ 60.307257 570.018342 0 ] (Code/Form1/:__span-0-483) [ 1942 0 R /XYZ 60.307257 556.617990 0 ] (Code/Form1/:__span-0-484) [ 1942 0 R /XYZ 60.307257 529.817286 0 ] (Code/Form1/:__span-0-485) [ 1942 0 R /XYZ 60.307257 516.416934 0 ] (Code/Form1/:__span-0-486) [ 1942 0 R /XYZ 60.307257 489.616230 0 ] (Code/Form1/:__span-0-487) [ 1942 0 R /XYZ 60.307257 462.815526 0 ] (Code/Form1/:__span-0-488) [ 1942 0 R /XYZ 60.307257 449.415174 0 ] (Code/Form1/:__span-0-489) [ 1942 0 R /XYZ 60.307257 422.614470 0 ] (Code/Form1/:__span-0-49) [ 1924 0 R /XYZ 60.307257 757.623270 0 ] (Code/Form1/:__span-0-490) [ 1942 0 R /XYZ 60.307257 395.813766 0 ] (Code/Form1/:__span-0-491) [ 1942 0 R /XYZ 60.307257 382.413414 0 ] (Code/Form1/:__span-0-492) [ 1942 0 R /XYZ 60.307257 355.612710 0 ] (Code/Form1/:__span-0-493) [ 1942 0 R /XYZ 60.307257 342.212358 0 ] (Code/Form1/:__span-0-494) [ 1942 0 R /XYZ 60.307257 315.411654 0 ] (Code/Form1/:__span-0-495) [ 1942 0 R /XYZ 60.307257 288.610950 0 ] (Code/Form1/:__span-0-496) [ 1942 0 R /XYZ 60.307257 275.210598 0 ] (Code/Form1/:__span-0-497) [ 1942 0 R /XYZ 60.307257 248.409894 0 ] (Code/Form1/:__span-0-498) [ 1942 0 R /XYZ 60.307257 221.609190 0 ] (Code/Form1/:__span-0-499) [ 1942 0 R /XYZ 60.307257 208.208838 0 ] (Code/Form1/:__span-0-5) [ 1922 0 R /XYZ 60.307257 654.034014 0 ] (Code/Form1/:__span-0-50) [ 1924 0 R /XYZ 60.307257 744.222918 0 ] (Code/Form1/:__span-0-500) [ 1942 0 R /XYZ 60.307257 181.408134 0 ] (Code/Form1/:__span-0-501) [ 1942 0 R /XYZ 60.307257 168.007782 0 ] (Code/Form1/:__span-0-502) [ 1942 0 R /XYZ 60.307257 141.207078 0 ] (Code/Form1/:__span-0-503) [ 1942 0 R /XYZ 60.307257 127.806726 0 ] (Code/Form1/:__span-0-504) [ 1942 0 R /XYZ 60.307257 114.406374 0 ] (Code/Form1/:__span-0-51) [ 1924 0 R /XYZ 60.307257 730.822566 0 ] (Code/Form1/:__span-0-52) [ 1924 0 R /XYZ 60.307257 717.422214 0 ] (Code/Form1/:__span-0-53) [ 1924 0 R /XYZ 60.307257 704.021862 0 ] (Code/Form1/:__span-0-54) [ 1924 0 R /XYZ 60.307257 690.621510 0 ] (Code/Form1/:__span-0-55) [ 1924 0 R /XYZ 60.307257 677.221158 0 ] (Code/Form1/:__span-0-56) [ 1924 0 R /XYZ 60.307257 663.820806 0 ] (Code/Form1/:__span-0-57) [ 1924 0 R /XYZ 60.307257 650.420454 0 ] (Code/Form1/:__span-0-58) [ 1924 0 R /XYZ 60.307257 637.020102 0 ] (Code/Form1/:__span-0-59) [ 1924 0 R /XYZ 60.307257 623.619750 0 ] (Code/Form1/:__span-0-6) [ 1922 0 R /XYZ 60.307257 640.633662 0 ] (Code/Form1/:__span-0-60) [ 1924 0 R /XYZ 60.307257 610.219398 0 ] (Code/Form1/:__span-0-61) [ 1924 0 R /XYZ 60.307257 596.819046 0 ] (Code/Form1/:__span-0-62) [ 1924 0 R /XYZ 60.307257 583.418694 0 ] (Code/Form1/:__span-0-63) [ 1924 0 R /XYZ 60.307257 570.018342 0 ] (Code/Form1/:__span-0-64) [ 1924 0 R /XYZ 60.307257 543.217638 0 ] (Code/Form1/:__span-0-65) [ 1924 0 R /XYZ 60.307257 529.817286 0 ] (Code/Form1/:__span-0-66) [ 1924 0 R /XYZ 60.307257 516.416934 0 ] (Code/Form1/:__span-0-67) [ 1924 0 R /XYZ 60.307257 503.016582 0 ] (Code/Form1/:__span-0-68) [ 1924 0 R /XYZ 60.307257 476.215878 0 ] (Code/Form1/:__span-0-69) [ 1924 0 R /XYZ 60.307257 462.815526 0 ] (Code/Form1/:__span-0-7) [ 1922 0 R /XYZ 60.307257 627.233310 0 ] (Code/Form1/:__span-0-70) [ 1924 0 R /XYZ 60.307257 449.415174 0 ] (Code/Form1/:__span-0-71) [ 1924 0 R /XYZ 60.307257 436.014822 0 ] (Code/Form1/:__span-0-72) [ 1924 0 R /XYZ 60.307257 422.614470 0 ] (Code/Form1/:__span-0-73) [ 1924 0 R /XYZ 60.307257 409.214118 0 ] (Code/Form1/:__span-0-74) [ 1924 0 R /XYZ 60.307257 395.813766 0 ] (Code/Form1/:__span-0-75) [ 1924 0 R /XYZ 60.307257 382.413414 0 ] (Code/Form1/:__span-0-76) [ 1924 0 R /XYZ 60.307257 369.013062 0 ] (Code/Form1/:__span-0-77) [ 1924 0 R /XYZ 60.307257 355.612710 0 ] (Code/Form1/:__span-0-78) [ 1924 0 R /XYZ 60.307257 342.212358 0 ] (Code/Form1/:__span-0-79) [ 1924 0 R /XYZ 60.307257 328.812006 0 ] (Code/Form1/:__span-0-8) [ 1922 0 R /XYZ 60.307257 613.832958 0 ] (Code/Form1/:__span-0-80) [ 1924 0 R /XYZ 60.307257 315.411654 0 ] (Code/Form1/:__span-0-81) [ 1924 0 R /XYZ 60.307257 302.011302 0 ] (Code/Form1/:__span-0-82) [ 1924 0 R /XYZ 60.307257 288.610950 0 ] (Code/Form1/:__span-0-83) [ 1924 0 R /XYZ 60.307257 275.210598 0 ] (Code/Form1/:__span-0-84) [ 1924 0 R /XYZ 60.307257 261.810246 0 ] (Code/Form1/:__span-0-85) [ 1924 0 R /XYZ 60.307257 248.409894 0 ] (Code/Form1/:__span-0-86) [ 1924 0 R /XYZ 60.307257 235.009542 0 ] (Code/Form1/:__span-0-87) [ 1924 0 R /XYZ 60.307257 221.609190 0 ] (Code/Form1/:__span-0-88) [ 1924 0 R /XYZ 60.307257 208.208838 0 ] (Code/Form1/:__span-0-89) [ 1924 0 R /XYZ 60.307257 181.408134 0 ] (Code/Form1/:__span-0-9) [ 1922 0 R /XYZ 60.307257 600.432606 0 ] (Code/Form1/:__span-0-90) [ 1924 0 R /XYZ 60.307257 154.607430 0 ] (Code/Form1/:__span-0-91) [ 1924 0 R /XYZ 60.307257 141.207078 0 ] (Code/Form1/:__span-0-92) [ 1924 0 R /XYZ 60.307257 127.806726 0 ] (Code/Form1/:__span-0-93) [ 1924 0 R /XYZ 60.307257 114.406374 0 ] (Code/Form1/:__span-0-94) [ 1924 0 R /XYZ 60.307257 101.006022 0 ] (Code/Form1/:__span-0-95) [ 1924 0 R /XYZ 60.307257 87.605670 0 ] (Code/Form1/:__span-0-96) [ 1926 0 R /XYZ 60.307257 771.023622 0 ] (Code/Form1/:__span-0-97) [ 1926 0 R /XYZ 60.307257 757.623270 0 ] (Code/Form1/:__span-0-98) [ 1926 0 R /XYZ 60.307257 744.222918 0 ] (Code/Form1/:__span-0-99) [ 1926 0 R /XYZ 60.307257 730.822566 0 ] (Code/Form1/:form1cs) [ 1922 0 R /XYZ 39.386457 747.563622 0 ] (Code/OcrImage/:) [ 2002 0 R /XYZ 39.386457 747.563622 0 ] (Code/OcrImage/:__span-0-1) [ 2002 0 R /XYZ 60.307257 707.635422 0 ] (Code/OcrImage/:__span-0-10) [ 2002 0 R /XYZ 60.307257 587.032254 0 ] (Code/OcrImage/:__span-0-100) [ 2006 0 R /XYZ 60.307257 503.016582 0 ] (Code/OcrImage/:__span-0-101) [ 2006 0 R /XYZ 60.307257 489.616230 0 ] (Code/OcrImage/:__span-0-102) [ 2006 0 R /XYZ 60.307257 476.215878 0 ] (Code/OcrImage/:__span-0-103) [ 2006 0 R /XYZ 60.307257 462.815526 0 ] (Code/OcrImage/:__span-0-104) [ 2006 0 R /XYZ 60.307257 449.415174 0 ] (Code/OcrImage/:__span-0-105) [ 2006 0 R /XYZ 60.307257 436.014822 0 ] (Code/OcrImage/:__span-0-106) [ 2006 0 R /XYZ 60.307257 422.614470 0 ] (Code/OcrImage/:__span-0-107) [ 2006 0 R /XYZ 60.307257 409.214118 0 ] (Code/OcrImage/:__span-0-108) [ 2006 0 R /XYZ 60.307257 395.813766 0 ] (Code/OcrImage/:__span-0-109) [ 2006 0 R /XYZ 60.307257 382.413414 0 ] (Code/OcrImage/:__span-0-11) [ 2002 0 R /XYZ 60.307257 573.631902 0 ] (Code/OcrImage/:__span-0-110) [ 2006 0 R /XYZ 60.307257 369.013062 0 ] (Code/OcrImage/:__span-0-111) [ 2006 0 R /XYZ 60.307257 355.612710 0 ] (Code/OcrImage/:__span-0-112) [ 2006 0 R /XYZ 60.307257 342.212358 0 ] (Code/OcrImage/:__span-0-113) [ 2006 0 R /XYZ 60.307257 315.411654 0 ] (Code/OcrImage/:__span-0-114) [ 2006 0 R /XYZ 60.307257 288.610950 0 ] (Code/OcrImage/:__span-0-115) [ 2006 0 R /XYZ 60.307257 261.810246 0 ] (Code/OcrImage/:__span-0-116) [ 2006 0 R /XYZ 60.307257 248.409894 0 ] (Code/OcrImage/:__span-0-117) [ 2006 0 R /XYZ 60.307257 235.009542 0 ] (Code/OcrImage/:__span-0-118) [ 2006 0 R /XYZ 60.307257 221.609190 0 ] (Code/OcrImage/:__span-0-119) [ 2006 0 R /XYZ 60.307257 208.208838 0 ] (Code/OcrImage/:__span-0-12) [ 2002 0 R /XYZ 60.307257 560.231550 0 ] (Code/OcrImage/:__span-0-120) [ 2006 0 R /XYZ 60.307257 194.808486 0 ] (Code/OcrImage/:__span-0-121) [ 2006 0 R /XYZ 60.307257 181.408134 0 ] (Code/OcrImage/:__span-0-122) [ 2006 0 R /XYZ 60.307257 154.607430 0 ] (Code/OcrImage/:__span-0-123) [ 2006 0 R /XYZ 60.307257 141.207078 0 ] (Code/OcrImage/:__span-0-124) [ 2006 0 R /XYZ 60.307257 127.806726 0 ] (Code/OcrImage/:__span-0-125) [ 2006 0 R /XYZ 60.307257 114.406374 0 ] (Code/OcrImage/:__span-0-126) [ 2006 0 R /XYZ 60.307257 101.006022 0 ] (Code/OcrImage/:__span-0-127) [ 2008 0 R /XYZ 60.307257 771.023622 0 ] (Code/OcrImage/:__span-0-128) [ 2008 0 R /XYZ 60.307257 757.623270 0 ] (Code/OcrImage/:__span-0-129) [ 2008 0 R /XYZ 60.307257 744.222918 0 ] (Code/OcrImage/:__span-0-13) [ 2002 0 R /XYZ 60.307257 546.831198 0 ] (Code/OcrImage/:__span-0-130) [ 2008 0 R /XYZ 60.307257 730.822566 0 ] (Code/OcrImage/:__span-0-131) [ 2008 0 R /XYZ 60.307257 717.422214 0 ] (Code/OcrImage/:__span-0-132) [ 2008 0 R /XYZ 60.307257 704.021862 0 ] (Code/OcrImage/:__span-0-133) [ 2008 0 R /XYZ 60.307257 690.621510 0 ] (Code/OcrImage/:__span-0-134) [ 2008 0 R /XYZ 60.307257 677.221158 0 ] (Code/OcrImage/:__span-0-135) [ 2008 0 R /XYZ 60.307257 663.820806 0 ] (Code/OcrImage/:__span-0-136) [ 2008 0 R /XYZ 60.307257 650.420454 0 ] (Code/OcrImage/:__span-0-137) [ 2008 0 R /XYZ 60.307257 637.020102 0 ] (Code/OcrImage/:__span-0-138) [ 2008 0 R /XYZ 60.307257 610.219398 0 ] (Code/OcrImage/:__span-0-139) [ 2008 0 R /XYZ 60.307257 596.819046 0 ] (Code/OcrImage/:__span-0-14) [ 2002 0 R /XYZ 60.307257 533.430846 0 ] (Code/OcrImage/:__span-0-140) [ 2008 0 R /XYZ 60.307257 583.418694 0 ] (Code/OcrImage/:__span-0-141) [ 2008 0 R /XYZ 60.307257 556.617990 0 ] (Code/OcrImage/:__span-0-142) [ 2008 0 R /XYZ 60.307257 543.217638 0 ] (Code/OcrImage/:__span-0-143) [ 2008 0 R /XYZ 60.307257 529.817286 0 ] (Code/OcrImage/:__span-0-144) [ 2008 0 R /XYZ 60.307257 516.416934 0 ] (Code/OcrImage/:__span-0-145) [ 2008 0 R /XYZ 60.307257 503.016582 0 ] (Code/OcrImage/:__span-0-146) [ 2008 0 R /XYZ 60.307257 489.616230 0 ] (Code/OcrImage/:__span-0-147) [ 2008 0 R /XYZ 60.307257 476.215878 0 ] (Code/OcrImage/:__span-0-148) [ 2008 0 R /XYZ 60.307257 449.415174 0 ] (Code/OcrImage/:__span-0-149) [ 2008 0 R /XYZ 60.307257 436.014822 0 ] (Code/OcrImage/:__span-0-15) [ 2002 0 R /XYZ 60.307257 520.030494 0 ] (Code/OcrImage/:__span-0-150) [ 2008 0 R /XYZ 60.307257 422.614470 0 ] (Code/OcrImage/:__span-0-151) [ 2008 0 R /XYZ 60.307257 409.214118 0 ] (Code/OcrImage/:__span-0-152) [ 2008 0 R /XYZ 60.307257 395.813766 0 ] (Code/OcrImage/:__span-0-153) [ 2008 0 R /XYZ 60.307257 369.013062 0 ] (Code/OcrImage/:__span-0-154) [ 2008 0 R /XYZ 60.307257 355.612710 0 ] (Code/OcrImage/:__span-0-155) [ 2008 0 R /XYZ 60.307257 342.212358 0 ] (Code/OcrImage/:__span-0-156) [ 2008 0 R /XYZ 60.307257 328.812006 0 ] (Code/OcrImage/:__span-0-157) [ 2008 0 R /XYZ 60.307257 315.411654 0 ] (Code/OcrImage/:__span-0-158) [ 2008 0 R /XYZ 60.307257 302.011302 0 ] (Code/OcrImage/:__span-0-159) [ 2008 0 R /XYZ 60.307257 288.610950 0 ] (Code/OcrImage/:__span-0-16) [ 2002 0 R /XYZ 60.307257 506.630142 0 ] (Code/OcrImage/:__span-0-160) [ 2008 0 R /XYZ 60.307257 275.210598 0 ] (Code/OcrImage/:__span-0-161) [ 2008 0 R /XYZ 60.307257 261.810246 0 ] (Code/OcrImage/:__span-0-162) [ 2008 0 R /XYZ 60.307257 235.009542 0 ] (Code/OcrImage/:__span-0-163) [ 2008 0 R /XYZ 60.307257 221.609190 0 ] (Code/OcrImage/:__span-0-164) [ 2008 0 R /XYZ 60.307257 194.808486 0 ] (Code/OcrImage/:__span-0-165) [ 2008 0 R /XYZ 60.307257 181.408134 0 ] (Code/OcrImage/:__span-0-166) [ 2008 0 R /XYZ 60.307257 168.007782 0 ] (Code/OcrImage/:__span-0-167) [ 2008 0 R /XYZ 60.307257 154.607430 0 ] (Code/OcrImage/:__span-0-168) [ 2008 0 R /XYZ 60.307257 141.207078 0 ] (Code/OcrImage/:__span-0-169) [ 2008 0 R /XYZ 60.307257 114.406374 0 ] (Code/OcrImage/:__span-0-17) [ 2002 0 R /XYZ 60.307257 493.229790 0 ] (Code/OcrImage/:__span-0-170) [ 2008 0 R /XYZ 60.307257 101.006022 0 ] (Code/OcrImage/:__span-0-171) [ 2008 0 R /XYZ 60.307257 87.605670 0 ] (Code/OcrImage/:__span-0-172) [ 2010 0 R /XYZ 60.307257 771.023622 0 ] (Code/OcrImage/:__span-0-173) [ 2010 0 R /XYZ 60.307257 757.623270 0 ] (Code/OcrImage/:__span-0-174) [ 2010 0 R /XYZ 60.307257 744.222918 0 ] (Code/OcrImage/:__span-0-175) [ 2010 0 R /XYZ 60.307257 730.822566 0 ] (Code/OcrImage/:__span-0-176) [ 2010 0 R /XYZ 60.307257 717.422214 0 ] (Code/OcrImage/:__span-0-177) [ 2010 0 R /XYZ 60.307257 690.621510 0 ] (Code/OcrImage/:__span-0-178) [ 2010 0 R /XYZ 60.307257 677.221158 0 ] (Code/OcrImage/:__span-0-179) [ 2010 0 R /XYZ 60.307257 663.820806 0 ] (Code/OcrImage/:__span-0-18) [ 2002 0 R /XYZ 60.307257 479.829438 0 ] (Code/OcrImage/:__span-0-180) [ 2010 0 R /XYZ 60.307257 650.420454 0 ] (Code/OcrImage/:__span-0-181) [ 2010 0 R /XYZ 60.307257 637.020102 0 ] (Code/OcrImage/:__span-0-182) [ 2010 0 R /XYZ 60.307257 623.619750 0 ] (Code/OcrImage/:__span-0-183) [ 2010 0 R /XYZ 60.307257 610.219398 0 ] (Code/OcrImage/:__span-0-184) [ 2010 0 R /XYZ 60.307257 596.819046 0 ] (Code/OcrImage/:__span-0-185) [ 2010 0 R /XYZ 60.307257 570.018342 0 ] (Code/OcrImage/:__span-0-186) [ 2010 0 R /XYZ 60.307257 556.617990 0 ] (Code/OcrImage/:__span-0-187) [ 2010 0 R /XYZ 60.307257 543.217638 0 ] (Code/OcrImage/:__span-0-188) [ 2010 0 R /XYZ 60.307257 516.416934 0 ] (Code/OcrImage/:__span-0-189) [ 2010 0 R /XYZ 60.307257 503.016582 0 ] (Code/OcrImage/:__span-0-19) [ 2002 0 R /XYZ 60.307257 453.028734 0 ] (Code/OcrImage/:__span-0-190) [ 2010 0 R /XYZ 60.307257 489.616230 0 ] (Code/OcrImage/:__span-0-191) [ 2010 0 R /XYZ 60.307257 462.815526 0 ] (Code/OcrImage/:__span-0-192) [ 2010 0 R /XYZ 60.307257 449.415174 0 ] (Code/OcrImage/:__span-0-193) [ 2010 0 R /XYZ 60.307257 436.014822 0 ] (Code/OcrImage/:__span-0-194) [ 2010 0 R /XYZ 60.307257 422.614470 0 ] (Code/OcrImage/:__span-0-195) [ 2010 0 R /XYZ 60.307257 409.214118 0 ] (Code/OcrImage/:__span-0-196) [ 2010 0 R /XYZ 60.307257 395.813766 0 ] (Code/OcrImage/:__span-0-197) [ 2010 0 R /XYZ 60.307257 382.413414 0 ] (Code/OcrImage/:__span-0-198) [ 2010 0 R /XYZ 60.307257 355.612710 0 ] (Code/OcrImage/:__span-0-199) [ 2010 0 R /XYZ 60.307257 342.212358 0 ] (Code/OcrImage/:__span-0-2) [ 2002 0 R /XYZ 60.307257 694.235070 0 ] (Code/OcrImage/:__span-0-20) [ 2002 0 R /XYZ 60.307257 426.228030 0 ] (Code/OcrImage/:__span-0-200) [ 2010 0 R /XYZ 60.307257 315.411654 0 ] (Code/OcrImage/:__span-0-201) [ 2010 0 R /XYZ 60.307257 302.011302 0 ] (Code/OcrImage/:__span-0-202) [ 2010 0 R /XYZ 60.307257 288.610950 0 ] (Code/OcrImage/:__span-0-203) [ 2010 0 R /XYZ 60.307257 275.210598 0 ] (Code/OcrImage/:__span-0-204) [ 2010 0 R /XYZ 60.307257 261.810246 0 ] (Code/OcrImage/:__span-0-205) [ 2010 0 R /XYZ 60.307257 235.009542 0 ] (Code/OcrImage/:__span-0-206) [ 2010 0 R /XYZ 60.307257 221.609190 0 ] (Code/OcrImage/:__span-0-207) [ 2010 0 R /XYZ 60.307257 208.208838 0 ] (Code/OcrImage/:__span-0-208) [ 2010 0 R /XYZ 60.307257 194.808486 0 ] (Code/OcrImage/:__span-0-209) [ 2010 0 R /XYZ 60.307257 181.408134 0 ] (Code/OcrImage/:__span-0-21) [ 2002 0 R /XYZ 60.307257 399.427326 0 ] (Code/OcrImage/:__span-0-210) [ 2010 0 R /XYZ 60.307257 168.007782 0 ] (Code/OcrImage/:__span-0-211) [ 2010 0 R /XYZ 60.307257 154.607430 0 ] (Code/OcrImage/:__span-0-212) [ 2010 0 R /XYZ 60.307257 141.207078 0 ] (Code/OcrImage/:__span-0-213) [ 2010 0 R /XYZ 60.307257 127.806726 0 ] (Code/OcrImage/:__span-0-214) [ 2010 0 R /XYZ 60.307257 114.406374 0 ] (Code/OcrImage/:__span-0-215) [ 2010 0 R /XYZ 60.307257 101.006022 0 ] (Code/OcrImage/:__span-0-216) [ 2010 0 R /XYZ 60.307257 87.605670 0 ] (Code/OcrImage/:__span-0-217) [ 2012 0 R /XYZ 60.307257 771.023622 0 ] (Code/OcrImage/:__span-0-218) [ 2012 0 R /XYZ 60.307257 757.623270 0 ] (Code/OcrImage/:__span-0-219) [ 2012 0 R /XYZ 60.307257 744.222918 0 ] (Code/OcrImage/:__span-0-22) [ 2002 0 R /XYZ 60.307257 386.026974 0 ] (Code/OcrImage/:__span-0-220) [ 2012 0 R /XYZ 60.307257 730.822566 0 ] (Code/OcrImage/:__span-0-221) [ 2012 0 R /XYZ 60.307257 704.021862 0 ] (Code/OcrImage/:__span-0-222) [ 2012 0 R /XYZ 60.307257 690.621510 0 ] (Code/OcrImage/:__span-0-223) [ 2012 0 R /XYZ 60.307257 677.221158 0 ] (Code/OcrImage/:__span-0-224) [ 2012 0 R /XYZ 60.307257 663.820806 0 ] (Code/OcrImage/:__span-0-225) [ 2012 0 R /XYZ 60.307257 650.420454 0 ] (Code/OcrImage/:__span-0-226) [ 2012 0 R /XYZ 60.307257 637.020102 0 ] (Code/OcrImage/:__span-0-227) [ 2012 0 R /XYZ 60.307257 623.619750 0 ] (Code/OcrImage/:__span-0-228) [ 2012 0 R /XYZ 60.307257 610.219398 0 ] (Code/OcrImage/:__span-0-229) [ 2012 0 R /XYZ 60.307257 570.018342 0 ] (Code/OcrImage/:__span-0-23) [ 2002 0 R /XYZ 60.307257 372.626622 0 ] (Code/OcrImage/:__span-0-230) [ 2012 0 R /XYZ 60.307257 556.617990 0 ] (Code/OcrImage/:__span-0-231) [ 2012 0 R /XYZ 60.307257 529.817286 0 ] (Code/OcrImage/:__span-0-232) [ 2012 0 R /XYZ 60.307257 516.416934 0 ] (Code/OcrImage/:__span-0-233) [ 2012 0 R /XYZ 60.307257 503.016582 0 ] (Code/OcrImage/:__span-0-234) [ 2012 0 R /XYZ 60.307257 489.616230 0 ] (Code/OcrImage/:__span-0-235) [ 2012 0 R /XYZ 60.307257 476.215878 0 ] (Code/OcrImage/:__span-0-236) [ 2012 0 R /XYZ 60.307257 462.815526 0 ] (Code/OcrImage/:__span-0-237) [ 2012 0 R /XYZ 60.307257 449.415174 0 ] (Code/OcrImage/:__span-0-238) [ 2012 0 R /XYZ 60.307257 436.014822 0 ] (Code/OcrImage/:__span-0-239) [ 2012 0 R /XYZ 60.307257 422.614470 0 ] (Code/OcrImage/:__span-0-24) [ 2002 0 R /XYZ 60.307257 359.226270 0 ] (Code/OcrImage/:__span-0-240) [ 2012 0 R /XYZ 60.307257 409.214118 0 ] (Code/OcrImage/:__span-0-241) [ 2012 0 R /XYZ 60.307257 395.813766 0 ] (Code/OcrImage/:__span-0-242) [ 2012 0 R /XYZ 60.307257 382.413414 0 ] (Code/OcrImage/:__span-0-243) [ 2012 0 R /XYZ 60.307257 369.013062 0 ] (Code/OcrImage/:__span-0-244) [ 2012 0 R /XYZ 60.307257 355.612710 0 ] (Code/OcrImage/:__span-0-245) [ 2012 0 R /XYZ 60.307257 342.212358 0 ] (Code/OcrImage/:__span-0-246) [ 2012 0 R /XYZ 60.307257 328.812006 0 ] (Code/OcrImage/:__span-0-247) [ 2012 0 R /XYZ 60.307257 315.411654 0 ] (Code/OcrImage/:__span-0-248) [ 2012 0 R /XYZ 60.307257 302.011302 0 ] (Code/OcrImage/:__span-0-249) [ 2012 0 R /XYZ 60.307257 288.610950 0 ] (Code/OcrImage/:__span-0-25) [ 2002 0 R /XYZ 60.307257 345.825918 0 ] (Code/OcrImage/:__span-0-250) [ 2012 0 R /XYZ 60.307257 261.810246 0 ] (Code/OcrImage/:__span-0-251) [ 2012 0 R /XYZ 60.307257 248.409894 0 ] (Code/OcrImage/:__span-0-252) [ 2012 0 R /XYZ 60.307257 235.009542 0 ] (Code/OcrImage/:__span-0-253) [ 2012 0 R /XYZ 60.307257 221.609190 0 ] (Code/OcrImage/:__span-0-254) [ 2012 0 R /XYZ 60.307257 208.208838 0 ] (Code/OcrImage/:__span-0-255) [ 2012 0 R /XYZ 60.307257 194.808486 0 ] (Code/OcrImage/:__span-0-256) [ 2012 0 R /XYZ 60.307257 181.408134 0 ] (Code/OcrImage/:__span-0-257) [ 2012 0 R /XYZ 60.307257 168.007782 0 ] (Code/OcrImage/:__span-0-258) [ 2012 0 R /XYZ 60.307257 154.607430 0 ] (Code/OcrImage/:__span-0-259) [ 2012 0 R /XYZ 60.307257 141.207078 0 ] (Code/OcrImage/:__span-0-26) [ 2002 0 R /XYZ 60.307257 332.425566 0 ] (Code/OcrImage/:__span-0-260) [ 2012 0 R /XYZ 60.307257 114.406374 0 ] (Code/OcrImage/:__span-0-261) [ 2012 0 R /XYZ 60.307257 87.605670 0 ] (Code/OcrImage/:__span-0-262) [ 2014 0 R /XYZ 60.307257 771.023622 0 ] (Code/OcrImage/:__span-0-263) [ 2014 0 R /XYZ 60.307257 757.623270 0 ] (Code/OcrImage/:__span-0-264) [ 2014 0 R /XYZ 60.307257 744.222918 0 ] (Code/OcrImage/:__span-0-265) [ 2014 0 R /XYZ 60.307257 717.422214 0 ] (Code/OcrImage/:__span-0-266) [ 2014 0 R /XYZ 60.307257 690.621510 0 ] (Code/OcrImage/:__span-0-267) [ 2014 0 R /XYZ 60.307257 663.820806 0 ] (Code/OcrImage/:__span-0-268) [ 2014 0 R /XYZ 60.307257 650.420454 0 ] (Code/OcrImage/:__span-0-269) [ 2014 0 R /XYZ 60.307257 637.020102 0 ] (Code/OcrImage/:__span-0-27) [ 2002 0 R /XYZ 60.307257 319.025214 0 ] (Code/OcrImage/:__span-0-270) [ 2014 0 R /XYZ 60.307257 623.619750 0 ] (Code/OcrImage/:__span-0-271) [ 2014 0 R /XYZ 60.307257 610.219398 0 ] (Code/OcrImage/:__span-0-272) [ 2014 0 R /XYZ 60.307257 596.819046 0 ] (Code/OcrImage/:__span-0-273) [ 2014 0 R /XYZ 60.307257 583.418694 0 ] (Code/OcrImage/:__span-0-274) [ 2014 0 R /XYZ 60.307257 570.018342 0 ] (Code/OcrImage/:__span-0-275) [ 2014 0 R /XYZ 60.307257 556.617990 0 ] (Code/OcrImage/:__span-0-276) [ 2014 0 R /XYZ 60.307257 543.217638 0 ] (Code/OcrImage/:__span-0-277) [ 2014 0 R /XYZ 60.307257 529.817286 0 ] (Code/OcrImage/:__span-0-278) [ 2014 0 R /XYZ 60.307257 516.416934 0 ] (Code/OcrImage/:__span-0-279) [ 2014 0 R /XYZ 60.307257 503.016582 0 ] (Code/OcrImage/:__span-0-28) [ 2002 0 R /XYZ 60.307257 305.624862 0 ] (Code/OcrImage/:__span-0-280) [ 2014 0 R /XYZ 60.307257 489.616230 0 ] (Code/OcrImage/:__span-0-281) [ 2014 0 R /XYZ 60.307257 476.215878 0 ] (Code/OcrImage/:__span-0-282) [ 2014 0 R /XYZ 60.307257 462.815526 0 ] (Code/OcrImage/:__span-0-283) [ 2014 0 R /XYZ 60.307257 449.415174 0 ] (Code/OcrImage/:__span-0-284) [ 2014 0 R /XYZ 60.307257 422.614470 0 ] (Code/OcrImage/:__span-0-285) [ 2014 0 R /XYZ 60.307257 409.214118 0 ] (Code/OcrImage/:__span-0-286) [ 2014 0 R /XYZ 60.307257 395.813766 0 ] (Code/OcrImage/:__span-0-287) [ 2014 0 R /XYZ 60.307257 382.413414 0 ] (Code/OcrImage/:__span-0-288) [ 2014 0 R /XYZ 60.307257 369.013062 0 ] (Code/OcrImage/:__span-0-289) [ 2014 0 R /XYZ 60.307257 355.612710 0 ] (Code/OcrImage/:__span-0-29) [ 2002 0 R /XYZ 60.307257 292.224510 0 ] (Code/OcrImage/:__span-0-290) [ 2014 0 R /XYZ 60.307257 342.212358 0 ] (Code/OcrImage/:__span-0-291) [ 2014 0 R /XYZ 60.307257 328.812006 0 ] (Code/OcrImage/:__span-0-292) [ 2014 0 R /XYZ 60.307257 315.411654 0 ] (Code/OcrImage/:__span-0-293) [ 2014 0 R /XYZ 60.307257 302.011302 0 ] (Code/OcrImage/:__span-0-294) [ 2014 0 R /XYZ 60.307257 288.610950 0 ] (Code/OcrImage/:__span-0-295) [ 2014 0 R /XYZ 60.307257 275.210598 0 ] (Code/OcrImage/:__span-0-296) [ 2014 0 R /XYZ 60.307257 261.810246 0 ] (Code/OcrImage/:__span-0-297) [ 2014 0 R /XYZ 60.307257 248.409894 0 ] (Code/OcrImage/:__span-0-298) [ 2014 0 R /XYZ 60.307257 235.009542 0 ] (Code/OcrImage/:__span-0-299) [ 2014 0 R /XYZ 60.307257 208.208838 0 ] (Code/OcrImage/:__span-0-3) [ 2002 0 R /XYZ 60.307257 680.834718 0 ] (Code/OcrImage/:__span-0-30) [ 2002 0 R /XYZ 60.307257 278.824158 0 ] (Code/OcrImage/:__span-0-300) [ 2014 0 R /XYZ 60.307257 194.808486 0 ] (Code/OcrImage/:__span-0-301) [ 2014 0 R /XYZ 60.307257 181.408134 0 ] (Code/OcrImage/:__span-0-302) [ 2014 0 R /XYZ 60.307257 168.007782 0 ] (Code/OcrImage/:__span-0-303) [ 2014 0 R /XYZ 60.307257 141.207078 0 ] (Code/OcrImage/:__span-0-304) [ 2014 0 R /XYZ 60.307257 114.406374 0 ] (Code/OcrImage/:__span-0-305) [ 2014 0 R /XYZ 60.307257 87.605670 0 ] (Code/OcrImage/:__span-0-306) [ 2016 0 R /XYZ 60.307257 771.023622 0 ] (Code/OcrImage/:__span-0-307) [ 2016 0 R /XYZ 60.307257 757.623270 0 ] (Code/OcrImage/:__span-0-308) [ 2016 0 R /XYZ 60.307257 744.222918 0 ] (Code/OcrImage/:__span-0-309) [ 2016 0 R /XYZ 60.307257 730.822566 0 ] (Code/OcrImage/:__span-0-31) [ 2002 0 R /XYZ 60.307257 265.423806 0 ] (Code/OcrImage/:__span-0-310) [ 2016 0 R /XYZ 60.307257 717.422214 0 ] (Code/OcrImage/:__span-0-311) [ 2016 0 R /XYZ 60.307257 704.021862 0 ] (Code/OcrImage/:__span-0-312) [ 2016 0 R /XYZ 60.307257 690.621510 0 ] (Code/OcrImage/:__span-0-313) [ 2016 0 R /XYZ 60.307257 677.221158 0 ] (Code/OcrImage/:__span-0-314) [ 2016 0 R /XYZ 60.307257 663.820806 0 ] (Code/OcrImage/:__span-0-315) [ 2016 0 R /XYZ 60.307257 650.420454 0 ] (Code/OcrImage/:__span-0-316) [ 2016 0 R /XYZ 60.307257 637.020102 0 ] (Code/OcrImage/:__span-0-317) [ 2016 0 R /XYZ 60.307257 623.619750 0 ] (Code/OcrImage/:__span-0-318) [ 2016 0 R /XYZ 60.307257 610.219398 0 ] (Code/OcrImage/:__span-0-319) [ 2016 0 R /XYZ 60.307257 596.819046 0 ] (Code/OcrImage/:__span-0-32) [ 2002 0 R /XYZ 60.307257 252.023454 0 ] (Code/OcrImage/:__span-0-320) [ 2016 0 R /XYZ 60.307257 583.418694 0 ] (Code/OcrImage/:__span-0-321) [ 2016 0 R /XYZ 60.307257 570.018342 0 ] (Code/OcrImage/:__span-0-322) [ 2016 0 R /XYZ 60.307257 556.617990 0 ] (Code/OcrImage/:__span-0-323) [ 2016 0 R /XYZ 60.307257 529.817286 0 ] (Code/OcrImage/:__span-0-324) [ 2016 0 R /XYZ 60.307257 516.416934 0 ] (Code/OcrImage/:__span-0-325) [ 2016 0 R /XYZ 60.307257 503.016582 0 ] (Code/OcrImage/:__span-0-326) [ 2016 0 R /XYZ 60.307257 489.616230 0 ] (Code/OcrImage/:__span-0-327) [ 2016 0 R /XYZ 60.307257 476.215878 0 ] (Code/OcrImage/:__span-0-328) [ 2016 0 R /XYZ 60.307257 462.815526 0 ] (Code/OcrImage/:__span-0-329) [ 2016 0 R /XYZ 60.307257 449.415174 0 ] (Code/OcrImage/:__span-0-33) [ 2002 0 R /XYZ 60.307257 238.623102 0 ] (Code/OcrImage/:__span-0-330) [ 2016 0 R /XYZ 60.307257 436.014822 0 ] (Code/OcrImage/:__span-0-331) [ 2016 0 R /XYZ 60.307257 422.614470 0 ] (Code/OcrImage/:__span-0-332) [ 2016 0 R /XYZ 60.307257 409.214118 0 ] (Code/OcrImage/:__span-0-333) [ 2016 0 R /XYZ 60.307257 382.413414 0 ] (Code/OcrImage/:__span-0-334) [ 2016 0 R /XYZ 60.307257 369.013062 0 ] (Code/OcrImage/:__span-0-335) [ 2016 0 R /XYZ 60.307257 342.212358 0 ] (Code/OcrImage/:__span-0-336) [ 2016 0 R /XYZ 60.307257 328.812006 0 ] (Code/OcrImage/:__span-0-337) [ 2016 0 R /XYZ 60.307257 315.411654 0 ] (Code/OcrImage/:__span-0-338) [ 2016 0 R /XYZ 60.307257 302.011302 0 ] (Code/OcrImage/:__span-0-339) [ 2016 0 R /XYZ 60.307257 275.210598 0 ] (Code/OcrImage/:__span-0-34) [ 2002 0 R /XYZ 60.307257 225.222750 0 ] (Code/OcrImage/:__span-0-340) [ 2016 0 R /XYZ 60.307257 248.409894 0 ] (Code/OcrImage/:__span-0-341) [ 2016 0 R /XYZ 60.307257 221.609190 0 ] (Code/OcrImage/:__span-0-342) [ 2016 0 R /XYZ 60.307257 194.808486 0 ] (Code/OcrImage/:__span-0-343) [ 2016 0 R /XYZ 60.307257 181.408134 0 ] (Code/OcrImage/:__span-0-344) [ 2016 0 R /XYZ 60.307257 168.007782 0 ] (Code/OcrImage/:__span-0-345) [ 2016 0 R /XYZ 60.307257 154.607430 0 ] (Code/OcrImage/:__span-0-346) [ 2016 0 R /XYZ 60.307257 141.207078 0 ] (Code/OcrImage/:__span-0-347) [ 2016 0 R /XYZ 60.307257 127.806726 0 ] (Code/OcrImage/:__span-0-348) [ 2016 0 R /XYZ 60.307257 114.406374 0 ] (Code/OcrImage/:__span-0-349) [ 2016 0 R /XYZ 60.307257 101.006022 0 ] (Code/OcrImage/:__span-0-35) [ 2002 0 R /XYZ 60.307257 211.822398 0 ] (Code/OcrImage/:__span-0-350) [ 2016 0 R /XYZ 60.307257 87.605670 0 ] (Code/OcrImage/:__span-0-351) [ 2018 0 R /XYZ 60.307257 771.023622 0 ] (Code/OcrImage/:__span-0-352) [ 2018 0 R /XYZ 60.307257 757.623270 0 ] (Code/OcrImage/:__span-0-353) [ 2018 0 R /XYZ 60.307257 744.222918 0 ] (Code/OcrImage/:__span-0-354) [ 2018 0 R /XYZ 60.307257 730.822566 0 ] (Code/OcrImage/:__span-0-355) [ 2018 0 R /XYZ 60.307257 717.422214 0 ] (Code/OcrImage/:__span-0-356) [ 2018 0 R /XYZ 60.307257 704.021862 0 ] (Code/OcrImage/:__span-0-357) [ 2018 0 R /XYZ 60.307257 690.621510 0 ] (Code/OcrImage/:__span-0-358) [ 2018 0 R /XYZ 60.307257 677.221158 0 ] (Code/OcrImage/:__span-0-359) [ 2018 0 R /XYZ 60.307257 663.820806 0 ] (Code/OcrImage/:__span-0-36) [ 2002 0 R /XYZ 60.307257 198.422046 0 ] (Code/OcrImage/:__span-0-360) [ 2018 0 R /XYZ 60.307257 650.420454 0 ] (Code/OcrImage/:__span-0-361) [ 2018 0 R /XYZ 60.307257 623.619750 0 ] (Code/OcrImage/:__span-0-362) [ 2018 0 R /XYZ 60.307257 610.219398 0 ] (Code/OcrImage/:__span-0-363) [ 2018 0 R /XYZ 60.307257 596.819046 0 ] (Code/OcrImage/:__span-0-364) [ 2018 0 R /XYZ 60.307257 583.418694 0 ] (Code/OcrImage/:__span-0-365) [ 2018 0 R /XYZ 60.307257 570.018342 0 ] (Code/OcrImage/:__span-0-366) [ 2018 0 R /XYZ 60.307257 556.617990 0 ] (Code/OcrImage/:__span-0-367) [ 2018 0 R /XYZ 60.307257 543.217638 0 ] (Code/OcrImage/:__span-0-368) [ 2018 0 R /XYZ 60.307257 529.817286 0 ] (Code/OcrImage/:__span-0-369) [ 2018 0 R /XYZ 60.307257 516.416934 0 ] (Code/OcrImage/:__span-0-37) [ 2002 0 R /XYZ 60.307257 185.021694 0 ] (Code/OcrImage/:__span-0-370) [ 2018 0 R /XYZ 60.307257 503.016582 0 ] (Code/OcrImage/:__span-0-371) [ 2018 0 R /XYZ 60.307257 489.616230 0 ] (Code/OcrImage/:__span-0-372) [ 2018 0 R /XYZ 60.307257 476.215878 0 ] (Code/OcrImage/:__span-0-373) [ 2018 0 R /XYZ 60.307257 462.815526 0 ] (Code/OcrImage/:__span-0-374) [ 2018 0 R /XYZ 60.307257 449.415174 0 ] (Code/OcrImage/:__span-0-375) [ 2018 0 R /XYZ 60.307257 436.014822 0 ] (Code/OcrImage/:__span-0-376) [ 2018 0 R /XYZ 60.307257 422.614470 0 ] (Code/OcrImage/:__span-0-377) [ 2018 0 R /XYZ 60.307257 409.214118 0 ] (Code/OcrImage/:__span-0-378) [ 2018 0 R /XYZ 60.307257 395.813766 0 ] (Code/OcrImage/:__span-0-379) [ 2018 0 R /XYZ 60.307257 382.413414 0 ] (Code/OcrImage/:__span-0-38) [ 2002 0 R /XYZ 60.307257 171.621342 0 ] (Code/OcrImage/:__span-0-380) [ 2018 0 R /XYZ 60.307257 369.013062 0 ] (Code/OcrImage/:__span-0-381) [ 2018 0 R /XYZ 60.307257 355.612710 0 ] (Code/OcrImage/:__span-0-382) [ 2018 0 R /XYZ 60.307257 342.212358 0 ] (Code/OcrImage/:__span-0-383) [ 2018 0 R /XYZ 60.307257 315.411654 0 ] (Code/OcrImage/:__span-0-384) [ 2018 0 R /XYZ 60.307257 302.011302 0 ] (Code/OcrImage/:__span-0-385) [ 2018 0 R /XYZ 60.307257 288.610950 0 ] (Code/OcrImage/:__span-0-386) [ 2018 0 R /XYZ 60.307257 275.210598 0 ] (Code/OcrImage/:__span-0-387) [ 2018 0 R /XYZ 60.307257 261.810246 0 ] (Code/OcrImage/:__span-0-388) [ 2018 0 R /XYZ 60.307257 248.409894 0 ] (Code/OcrImage/:__span-0-389) [ 2018 0 R /XYZ 60.307257 235.009542 0 ] (Code/OcrImage/:__span-0-39) [ 2002 0 R /XYZ 60.307257 158.220990 0 ] (Code/OcrImage/:__span-0-390) [ 2018 0 R /XYZ 60.307257 221.609190 0 ] (Code/OcrImage/:__span-0-391) [ 2018 0 R /XYZ 60.307257 208.208838 0 ] (Code/OcrImage/:__span-0-392) [ 2018 0 R /XYZ 60.307257 194.808486 0 ] (Code/OcrImage/:__span-0-393) [ 2018 0 R /XYZ 60.307257 181.408134 0 ] (Code/OcrImage/:__span-0-394) [ 2018 0 R /XYZ 60.307257 168.007782 0 ] (Code/OcrImage/:__span-0-395) [ 2018 0 R /XYZ 60.307257 154.607430 0 ] (Code/OcrImage/:__span-0-396) [ 2018 0 R /XYZ 60.307257 141.207078 0 ] (Code/OcrImage/:__span-0-397) [ 2018 0 R /XYZ 60.307257 127.806726 0 ] (Code/OcrImage/:__span-0-398) [ 2018 0 R /XYZ 60.307257 114.406374 0 ] (Code/OcrImage/:__span-0-399) [ 2018 0 R /XYZ 60.307257 101.006022 0 ] (Code/OcrImage/:__span-0-4) [ 2002 0 R /XYZ 60.307257 667.434366 0 ] (Code/OcrImage/:__span-0-40) [ 2002 0 R /XYZ 60.307257 144.820638 0 ] (Code/OcrImage/:__span-0-400) [ 2018 0 R /XYZ 60.307257 87.605670 0 ] (Code/OcrImage/:__span-0-401) [ 2020 0 R /XYZ 60.307257 771.023622 0 ] (Code/OcrImage/:__span-0-402) [ 2020 0 R /XYZ 60.307257 757.623270 0 ] (Code/OcrImage/:__span-0-403) [ 2020 0 R /XYZ 60.307257 744.222918 0 ] (Code/OcrImage/:__span-0-404) [ 2020 0 R /XYZ 60.307257 730.822566 0 ] (Code/OcrImage/:__span-0-405) [ 2020 0 R /XYZ 60.307257 717.422214 0 ] (Code/OcrImage/:__span-0-406) [ 2020 0 R /XYZ 60.307257 704.021862 0 ] (Code/OcrImage/:__span-0-407) [ 2020 0 R /XYZ 60.307257 690.621510 0 ] (Code/OcrImage/:__span-0-408) [ 2020 0 R /XYZ 60.307257 677.221158 0 ] (Code/OcrImage/:__span-0-409) [ 2020 0 R /XYZ 60.307257 663.820806 0 ] (Code/OcrImage/:__span-0-41) [ 2002 0 R /XYZ 60.307257 131.420286 0 ] (Code/OcrImage/:__span-0-410) [ 2020 0 R /XYZ 60.307257 650.420454 0 ] (Code/OcrImage/:__span-0-411) [ 2020 0 R /XYZ 60.307257 637.020102 0 ] (Code/OcrImage/:__span-0-412) [ 2020 0 R /XYZ 60.307257 623.619750 0 ] (Code/OcrImage/:__span-0-413) [ 2020 0 R /XYZ 60.307257 610.219398 0 ] (Code/OcrImage/:__span-0-414) [ 2020 0 R /XYZ 60.307257 596.819046 0 ] (Code/OcrImage/:__span-0-415) [ 2020 0 R /XYZ 60.307257 583.418694 0 ] (Code/OcrImage/:__span-0-416) [ 2020 0 R /XYZ 60.307257 570.018342 0 ] (Code/OcrImage/:__span-0-417) [ 2020 0 R /XYZ 60.307257 556.617990 0 ] (Code/OcrImage/:__span-0-418) [ 2020 0 R /XYZ 60.307257 543.217638 0 ] (Code/OcrImage/:__span-0-419) [ 2020 0 R /XYZ 60.307257 516.416934 0 ] (Code/OcrImage/:__span-0-42) [ 2002 0 R /XYZ 60.307257 118.019934 0 ] (Code/OcrImage/:__span-0-420) [ 2020 0 R /XYZ 60.307257 503.016582 0 ] (Code/OcrImage/:__span-0-421) [ 2020 0 R /XYZ 60.307257 489.616230 0 ] (Code/OcrImage/:__span-0-422) [ 2020 0 R /XYZ 60.307257 476.215878 0 ] (Code/OcrImage/:__span-0-423) [ 2020 0 R /XYZ 60.307257 462.815526 0 ] (Code/OcrImage/:__span-0-424) [ 2020 0 R /XYZ 60.307257 449.415174 0 ] (Code/OcrImage/:__span-0-425) [ 2020 0 R /XYZ 60.307257 436.014822 0 ] (Code/OcrImage/:__span-0-426) [ 2020 0 R /XYZ 60.307257 422.614470 0 ] (Code/OcrImage/:__span-0-427) [ 2020 0 R /XYZ 60.307257 409.214118 0 ] (Code/OcrImage/:__span-0-428) [ 2020 0 R /XYZ 60.307257 395.813766 0 ] (Code/OcrImage/:__span-0-429) [ 2020 0 R /XYZ 60.307257 382.413414 0 ] (Code/OcrImage/:__span-0-43) [ 2002 0 R /XYZ 60.307257 104.619582 0 ] (Code/OcrImage/:__span-0-430) [ 2020 0 R /XYZ 60.307257 369.013062 0 ] (Code/OcrImage/:__span-0-431) [ 2020 0 R /XYZ 60.307257 355.612710 0 ] (Code/OcrImage/:__span-0-432) [ 2020 0 R /XYZ 60.307257 328.812006 0 ] (Code/OcrImage/:__span-0-433) [ 2020 0 R /XYZ 60.307257 315.411654 0 ] (Code/OcrImage/:__span-0-434) [ 2020 0 R /XYZ 60.307257 288.610950 0 ] (Code/OcrImage/:__span-0-435) [ 2020 0 R /XYZ 60.307257 275.210598 0 ] (Code/OcrImage/:__span-0-436) [ 2020 0 R /XYZ 60.307257 261.810246 0 ] (Code/OcrImage/:__span-0-437) [ 2020 0 R /XYZ 60.307257 248.409894 0 ] (Code/OcrImage/:__span-0-438) [ 2020 0 R /XYZ 60.307257 221.609190 0 ] (Code/OcrImage/:__span-0-439) [ 2020 0 R /XYZ 60.307257 194.808486 0 ] (Code/OcrImage/:__span-0-44) [ 2002 0 R /XYZ 60.307257 91.219230 0 ] (Code/OcrImage/:__span-0-440) [ 2020 0 R /XYZ 60.307257 168.007782 0 ] (Code/OcrImage/:__span-0-441) [ 2020 0 R /XYZ 60.307257 154.607430 0 ] (Code/OcrImage/:__span-0-442) [ 2020 0 R /XYZ 60.307257 141.207078 0 ] (Code/OcrImage/:__span-0-443) [ 2020 0 R /XYZ 60.307257 127.806726 0 ] (Code/OcrImage/:__span-0-444) [ 2020 0 R /XYZ 60.307257 114.406374 0 ] (Code/OcrImage/:__span-0-445) [ 2020 0 R /XYZ 60.307257 101.006022 0 ] (Code/OcrImage/:__span-0-446) [ 2020 0 R /XYZ 60.307257 87.605670 0 ] (Code/OcrImage/:__span-0-447) [ 2022 0 R /XYZ 60.307257 771.023622 0 ] (Code/OcrImage/:__span-0-448) [ 2022 0 R /XYZ 60.307257 757.623270 0 ] (Code/OcrImage/:__span-0-449) [ 2022 0 R /XYZ 60.307257 744.222918 0 ] (Code/OcrImage/:__span-0-45) [ 2004 0 R /XYZ 60.307257 757.623270 0 ] (Code/OcrImage/:__span-0-450) [ 2022 0 R /XYZ 60.307257 730.822566 0 ] (Code/OcrImage/:__span-0-451) [ 2022 0 R /XYZ 60.307257 717.422214 0 ] (Code/OcrImage/:__span-0-452) [ 2022 0 R /XYZ 60.307257 704.021862 0 ] (Code/OcrImage/:__span-0-453) [ 2022 0 R /XYZ 60.307257 690.621510 0 ] (Code/OcrImage/:__span-0-454) [ 2022 0 R /XYZ 60.307257 677.221158 0 ] (Code/OcrImage/:__span-0-455) [ 2022 0 R /XYZ 60.307257 663.820806 0 ] (Code/OcrImage/:__span-0-456) [ 2022 0 R /XYZ 60.307257 650.420454 0 ] (Code/OcrImage/:__span-0-457) [ 2022 0 R /XYZ 60.307257 637.020102 0 ] (Code/OcrImage/:__span-0-458) [ 2022 0 R /XYZ 60.307257 623.619750 0 ] (Code/OcrImage/:__span-0-459) [ 2022 0 R /XYZ 60.307257 610.219398 0 ] (Code/OcrImage/:__span-0-46) [ 2004 0 R /XYZ 60.307257 744.222918 0 ] (Code/OcrImage/:__span-0-460) [ 2022 0 R /XYZ 60.307257 596.819046 0 ] (Code/OcrImage/:__span-0-461) [ 2022 0 R /XYZ 60.307257 583.418694 0 ] (Code/OcrImage/:__span-0-462) [ 2022 0 R /XYZ 60.307257 570.018342 0 ] (Code/OcrImage/:__span-0-463) [ 2022 0 R /XYZ 60.307257 556.617990 0 ] (Code/OcrImage/:__span-0-464) [ 2022 0 R /XYZ 60.307257 529.817286 0 ] (Code/OcrImage/:__span-0-465) [ 2022 0 R /XYZ 60.307257 516.416934 0 ] (Code/OcrImage/:__span-0-466) [ 2022 0 R /XYZ 60.307257 503.016582 0 ] (Code/OcrImage/:__span-0-467) [ 2022 0 R /XYZ 60.307257 489.616230 0 ] (Code/OcrImage/:__span-0-468) [ 2022 0 R /XYZ 60.307257 476.215878 0 ] (Code/OcrImage/:__span-0-469) [ 2022 0 R /XYZ 60.307257 462.815526 0 ] (Code/OcrImage/:__span-0-47) [ 2004 0 R /XYZ 60.307257 730.822566 0 ] (Code/OcrImage/:__span-0-470) [ 2022 0 R /XYZ 60.307257 449.415174 0 ] (Code/OcrImage/:__span-0-471) [ 2022 0 R /XYZ 60.307257 436.014822 0 ] (Code/OcrImage/:__span-0-472) [ 2022 0 R /XYZ 60.307257 422.614470 0 ] (Code/OcrImage/:__span-0-473) [ 2022 0 R /XYZ 60.307257 409.214118 0 ] (Code/OcrImage/:__span-0-474) [ 2022 0 R /XYZ 60.307257 395.813766 0 ] (Code/OcrImage/:__span-0-475) [ 2022 0 R /XYZ 60.307257 382.413414 0 ] (Code/OcrImage/:__span-0-476) [ 2022 0 R /XYZ 60.307257 342.212358 0 ] (Code/OcrImage/:__span-0-477) [ 2022 0 R /XYZ 60.307257 328.812006 0 ] (Code/OcrImage/:__span-0-478) [ 2022 0 R /XYZ 60.307257 315.411654 0 ] (Code/OcrImage/:__span-0-479) [ 2022 0 R /XYZ 60.307257 302.011302 0 ] (Code/OcrImage/:__span-0-48) [ 2004 0 R /XYZ 60.307257 717.422214 0 ] (Code/OcrImage/:__span-0-480) [ 2022 0 R /XYZ 60.307257 288.610950 0 ] (Code/OcrImage/:__span-0-481) [ 2022 0 R /XYZ 60.307257 261.810246 0 ] (Code/OcrImage/:__span-0-482) [ 2022 0 R /XYZ 60.307257 248.409894 0 ] (Code/OcrImage/:__span-0-483) [ 2022 0 R /XYZ 60.307257 235.009542 0 ] (Code/OcrImage/:__span-0-484) [ 2022 0 R /XYZ 60.307257 221.609190 0 ] (Code/OcrImage/:__span-0-485) [ 2022 0 R /XYZ 60.307257 194.808486 0 ] (Code/OcrImage/:__span-0-486) [ 2022 0 R /XYZ 60.307257 168.007782 0 ] (Code/OcrImage/:__span-0-487) [ 2022 0 R /XYZ 60.307257 141.207078 0 ] (Code/OcrImage/:__span-0-488) [ 2022 0 R /XYZ 60.307257 127.806726 0 ] (Code/OcrImage/:__span-0-489) [ 2022 0 R /XYZ 60.307257 114.406374 0 ] (Code/OcrImage/:__span-0-49) [ 2004 0 R /XYZ 60.307257 704.021862 0 ] (Code/OcrImage/:__span-0-490) [ 2022 0 R /XYZ 60.307257 101.006022 0 ] (Code/OcrImage/:__span-0-491) [ 2022 0 R /XYZ 60.307257 87.605670 0 ] (Code/OcrImage/:__span-0-492) [ 2024 0 R /XYZ 60.307257 771.023622 0 ] (Code/OcrImage/:__span-0-493) [ 2024 0 R /XYZ 60.307257 757.623270 0 ] (Code/OcrImage/:__span-0-494) [ 2024 0 R /XYZ 60.307257 744.222918 0 ] (Code/OcrImage/:__span-0-495) [ 2024 0 R /XYZ 60.307257 730.822566 0 ] (Code/OcrImage/:__span-0-496) [ 2024 0 R /XYZ 60.307257 717.422214 0 ] (Code/OcrImage/:__span-0-497) [ 2024 0 R /XYZ 60.307257 704.021862 0 ] (Code/OcrImage/:__span-0-498) [ 2024 0 R /XYZ 60.307257 690.621510 0 ] (Code/OcrImage/:__span-0-499) [ 2024 0 R /XYZ 60.307257 677.221158 0 ] (Code/OcrImage/:__span-0-5) [ 2002 0 R /XYZ 60.307257 654.034014 0 ] (Code/OcrImage/:__span-0-50) [ 2004 0 R /XYZ 60.307257 677.221158 0 ] (Code/OcrImage/:__span-0-500) [ 2024 0 R /XYZ 60.307257 663.820806 0 ] (Code/OcrImage/:__span-0-501) [ 2024 0 R /XYZ 60.307257 650.420454 0 ] (Code/OcrImage/:__span-0-502) [ 2024 0 R /XYZ 60.307257 637.020102 0 ] (Code/OcrImage/:__span-0-503) [ 2024 0 R /XYZ 60.307257 623.619750 0 ] (Code/OcrImage/:__span-0-504) [ 2024 0 R /XYZ 60.307257 610.219398 0 ] (Code/OcrImage/:__span-0-505) [ 2024 0 R /XYZ 60.307257 596.819046 0 ] (Code/OcrImage/:__span-0-506) [ 2024 0 R /XYZ 60.307257 583.418694 0 ] (Code/OcrImage/:__span-0-507) [ 2024 0 R /XYZ 60.307257 570.018342 0 ] (Code/OcrImage/:__span-0-508) [ 2024 0 R /XYZ 60.307257 556.617990 0 ] (Code/OcrImage/:__span-0-509) [ 2024 0 R /XYZ 60.307257 543.217638 0 ] (Code/OcrImage/:__span-0-51) [ 2004 0 R /XYZ 60.307257 663.820806 0 ] (Code/OcrImage/:__span-0-510) [ 2024 0 R /XYZ 60.307257 516.416934 0 ] (Code/OcrImage/:__span-0-511) [ 2024 0 R /XYZ 60.307257 503.016582 0 ] (Code/OcrImage/:__span-0-512) [ 2024 0 R /XYZ 60.307257 489.616230 0 ] (Code/OcrImage/:__span-0-513) [ 2024 0 R /XYZ 60.307257 462.815526 0 ] (Code/OcrImage/:__span-0-514) [ 2024 0 R /XYZ 60.307257 449.415174 0 ] (Code/OcrImage/:__span-0-515) [ 2024 0 R /XYZ 60.307257 436.014822 0 ] (Code/OcrImage/:__span-0-516) [ 2024 0 R /XYZ 60.307257 422.614470 0 ] (Code/OcrImage/:__span-0-517) [ 2024 0 R /XYZ 60.307257 395.813766 0 ] (Code/OcrImage/:__span-0-518) [ 2024 0 R /XYZ 60.307257 382.413414 0 ] (Code/OcrImage/:__span-0-519) [ 2024 0 R /XYZ 60.307257 369.013062 0 ] (Code/OcrImage/:__span-0-52) [ 2004 0 R /XYZ 60.307257 650.420454 0 ] (Code/OcrImage/:__span-0-520) [ 2024 0 R /XYZ 60.307257 355.612710 0 ] (Code/OcrImage/:__span-0-521) [ 2024 0 R /XYZ 60.307257 342.212358 0 ] (Code/OcrImage/:__span-0-522) [ 2024 0 R /XYZ 60.307257 315.411654 0 ] (Code/OcrImage/:__span-0-523) [ 2024 0 R /XYZ 60.307257 302.011302 0 ] (Code/OcrImage/:__span-0-524) [ 2024 0 R /XYZ 60.307257 288.610950 0 ] (Code/OcrImage/:__span-0-525) [ 2024 0 R /XYZ 60.307257 275.210598 0 ] (Code/OcrImage/:__span-0-526) [ 2024 0 R /XYZ 60.307257 261.810246 0 ] (Code/OcrImage/:__span-0-527) [ 2024 0 R /XYZ 60.307257 248.409894 0 ] (Code/OcrImage/:__span-0-528) [ 2024 0 R /XYZ 60.307257 235.009542 0 ] (Code/OcrImage/:__span-0-529) [ 2024 0 R /XYZ 60.307257 221.609190 0 ] (Code/OcrImage/:__span-0-53) [ 2004 0 R /XYZ 60.307257 637.020102 0 ] (Code/OcrImage/:__span-0-530) [ 2024 0 R /XYZ 60.307257 194.808486 0 ] (Code/OcrImage/:__span-0-531) [ 2024 0 R /XYZ 60.307257 181.408134 0 ] (Code/OcrImage/:__span-0-532) [ 2024 0 R /XYZ 60.307257 168.007782 0 ] (Code/OcrImage/:__span-0-533) [ 2024 0 R /XYZ 60.307257 154.607430 0 ] (Code/OcrImage/:__span-0-534) [ 2024 0 R /XYZ 60.307257 141.207078 0 ] (Code/OcrImage/:__span-0-535) [ 2024 0 R /XYZ 60.307257 127.806726 0 ] (Code/OcrImage/:__span-0-536) [ 2024 0 R /XYZ 60.307257 114.406374 0 ] (Code/OcrImage/:__span-0-537) [ 2024 0 R /XYZ 60.307257 101.006022 0 ] (Code/OcrImage/:__span-0-538) [ 2024 0 R /XYZ 60.307257 87.605670 0 ] (Code/OcrImage/:__span-0-539) [ 2026 0 R /XYZ 60.307257 771.023622 0 ] (Code/OcrImage/:__span-0-54) [ 2004 0 R /XYZ 60.307257 610.219398 0 ] (Code/OcrImage/:__span-0-540) [ 2026 0 R /XYZ 60.307257 757.623270 0 ] (Code/OcrImage/:__span-0-541) [ 2026 0 R /XYZ 60.307257 744.222918 0 ] (Code/OcrImage/:__span-0-542) [ 2026 0 R /XYZ 60.307257 730.822566 0 ] (Code/OcrImage/:__span-0-543) [ 2026 0 R /XYZ 60.307257 717.422214 0 ] (Code/OcrImage/:__span-0-544) [ 2026 0 R /XYZ 60.307257 704.021862 0 ] (Code/OcrImage/:__span-0-545) [ 2026 0 R /XYZ 60.307257 690.621510 0 ] (Code/OcrImage/:__span-0-546) [ 2026 0 R /XYZ 60.307257 677.221158 0 ] (Code/OcrImage/:__span-0-547) [ 2026 0 R /XYZ 60.307257 663.820806 0 ] (Code/OcrImage/:__span-0-548) [ 2026 0 R /XYZ 60.307257 650.420454 0 ] (Code/OcrImage/:__span-0-549) [ 2026 0 R /XYZ 60.307257 623.619750 0 ] (Code/OcrImage/:__span-0-55) [ 2004 0 R /XYZ 60.307257 596.819046 0 ] (Code/OcrImage/:__span-0-550) [ 2026 0 R /XYZ 60.307257 610.219398 0 ] (Code/OcrImage/:__span-0-551) [ 2026 0 R /XYZ 60.307257 596.819046 0 ] (Code/OcrImage/:__span-0-552) [ 2026 0 R /XYZ 60.307257 583.418694 0 ] (Code/OcrImage/:__span-0-553) [ 2026 0 R /XYZ 60.307257 570.018342 0 ] (Code/OcrImage/:__span-0-554) [ 2026 0 R /XYZ 60.307257 556.617990 0 ] (Code/OcrImage/:__span-0-555) [ 2026 0 R /XYZ 60.307257 543.217638 0 ] (Code/OcrImage/:__span-0-556) [ 2026 0 R /XYZ 60.307257 529.817286 0 ] (Code/OcrImage/:__span-0-557) [ 2026 0 R /XYZ 60.307257 516.416934 0 ] (Code/OcrImage/:__span-0-558) [ 2026 0 R /XYZ 60.307257 503.016582 0 ] (Code/OcrImage/:__span-0-559) [ 2026 0 R /XYZ 60.307257 489.616230 0 ] (Code/OcrImage/:__span-0-56) [ 2004 0 R /XYZ 60.307257 583.418694 0 ] (Code/OcrImage/:__span-0-560) [ 2026 0 R /XYZ 60.307257 476.215878 0 ] (Code/OcrImage/:__span-0-561) [ 2026 0 R /XYZ 60.307257 462.815526 0 ] (Code/OcrImage/:__span-0-562) [ 2026 0 R /XYZ 60.307257 449.415174 0 ] (Code/OcrImage/:__span-0-563) [ 2026 0 R /XYZ 60.307257 436.014822 0 ] (Code/OcrImage/:__span-0-564) [ 2026 0 R /XYZ 60.307257 422.614470 0 ] (Code/OcrImage/:__span-0-565) [ 2026 0 R /XYZ 60.307257 409.214118 0 ] (Code/OcrImage/:__span-0-566) [ 2026 0 R /XYZ 60.307257 395.813766 0 ] (Code/OcrImage/:__span-0-567) [ 2026 0 R /XYZ 60.307257 382.413414 0 ] (Code/OcrImage/:__span-0-568) [ 2026 0 R /XYZ 60.307257 369.013062 0 ] (Code/OcrImage/:__span-0-569) [ 2026 0 R /XYZ 60.307257 355.612710 0 ] (Code/OcrImage/:__span-0-57) [ 2004 0 R /XYZ 60.307257 556.617990 0 ] (Code/OcrImage/:__span-0-570) [ 2026 0 R /XYZ 60.307257 342.212358 0 ] (Code/OcrImage/:__span-0-571) [ 2026 0 R /XYZ 60.307257 328.812006 0 ] (Code/OcrImage/:__span-0-572) [ 2026 0 R /XYZ 60.307257 315.411654 0 ] (Code/OcrImage/:__span-0-573) [ 2026 0 R /XYZ 60.307257 288.610950 0 ] (Code/OcrImage/:__span-0-574) [ 2026 0 R /XYZ 60.307257 275.210598 0 ] (Code/OcrImage/:__span-0-575) [ 2026 0 R /XYZ 60.307257 261.810246 0 ] (Code/OcrImage/:__span-0-576) [ 2026 0 R /XYZ 60.307257 248.409894 0 ] (Code/OcrImage/:__span-0-577) [ 2026 0 R /XYZ 60.307257 235.009542 0 ] (Code/OcrImage/:__span-0-578) [ 2026 0 R /XYZ 60.307257 221.609190 0 ] (Code/OcrImage/:__span-0-579) [ 2026 0 R /XYZ 60.307257 208.208838 0 ] (Code/OcrImage/:__span-0-58) [ 2004 0 R /XYZ 60.307257 543.217638 0 ] (Code/OcrImage/:__span-0-580) [ 2026 0 R /XYZ 60.307257 194.808486 0 ] (Code/OcrImage/:__span-0-581) [ 2026 0 R /XYZ 60.307257 181.408134 0 ] (Code/OcrImage/:__span-0-582) [ 2026 0 R /XYZ 60.307257 168.007782 0 ] (Code/OcrImage/:__span-0-583) [ 2026 0 R /XYZ 60.307257 154.607430 0 ] (Code/OcrImage/:__span-0-584) [ 2026 0 R /XYZ 60.307257 141.207078 0 ] (Code/OcrImage/:__span-0-585) [ 2026 0 R /XYZ 60.307257 127.806726 0 ] (Code/OcrImage/:__span-0-586) [ 2026 0 R /XYZ 60.307257 114.406374 0 ] (Code/OcrImage/:__span-0-587) [ 2026 0 R /XYZ 60.307257 101.006022 0 ] (Code/OcrImage/:__span-0-588) [ 2026 0 R /XYZ 60.307257 87.605670 0 ] (Code/OcrImage/:__span-0-589) [ 2028 0 R /XYZ 60.307257 757.623270 0 ] (Code/OcrImage/:__span-0-59) [ 2004 0 R /XYZ 60.307257 529.817286 0 ] (Code/OcrImage/:__span-0-590) [ 2028 0 R /XYZ 60.307257 744.222918 0 ] (Code/OcrImage/:__span-0-591) [ 2028 0 R /XYZ 60.307257 717.422214 0 ] (Code/OcrImage/:__span-0-592) [ 2028 0 R /XYZ 60.307257 704.021862 0 ] (Code/OcrImage/:__span-0-593) [ 2028 0 R /XYZ 60.307257 690.621510 0 ] (Code/OcrImage/:__span-0-594) [ 2028 0 R /XYZ 60.307257 677.221158 0 ] (Code/OcrImage/:__span-0-595) [ 2028 0 R /XYZ 60.307257 663.820806 0 ] (Code/OcrImage/:__span-0-596) [ 2028 0 R /XYZ 60.307257 650.420454 0 ] (Code/OcrImage/:__span-0-597) [ 2028 0 R /XYZ 60.307257 637.020102 0 ] (Code/OcrImage/:__span-0-598) [ 2028 0 R /XYZ 60.307257 623.619750 0 ] (Code/OcrImage/:__span-0-599) [ 2028 0 R /XYZ 60.307257 610.219398 0 ] (Code/OcrImage/:__span-0-6) [ 2002 0 R /XYZ 60.307257 640.633662 0 ] (Code/OcrImage/:__span-0-60) [ 2004 0 R /XYZ 60.307257 503.016582 0 ] (Code/OcrImage/:__span-0-600) [ 2028 0 R /XYZ 60.307257 583.418694 0 ] (Code/OcrImage/:__span-0-601) [ 2028 0 R /XYZ 60.307257 570.018342 0 ] (Code/OcrImage/:__span-0-602) [ 2028 0 R /XYZ 60.307257 543.217638 0 ] (Code/OcrImage/:__span-0-603) [ 2028 0 R /XYZ 60.307257 529.817286 0 ] (Code/OcrImage/:__span-0-604) [ 2028 0 R /XYZ 60.307257 516.416934 0 ] (Code/OcrImage/:__span-0-605) [ 2028 0 R /XYZ 60.307257 503.016582 0 ] (Code/OcrImage/:__span-0-606) [ 2028 0 R /XYZ 60.307257 489.616230 0 ] (Code/OcrImage/:__span-0-607) [ 2028 0 R /XYZ 60.307257 476.215878 0 ] (Code/OcrImage/:__span-0-608) [ 2028 0 R /XYZ 60.307257 462.815526 0 ] (Code/OcrImage/:__span-0-609) [ 2028 0 R /XYZ 60.307257 449.415174 0 ] (Code/OcrImage/:__span-0-61) [ 2004 0 R /XYZ 60.307257 489.616230 0 ] (Code/OcrImage/:__span-0-610) [ 2028 0 R /XYZ 60.307257 436.014822 0 ] (Code/OcrImage/:__span-0-611) [ 2028 0 R /XYZ 60.307257 422.614470 0 ] (Code/OcrImage/:__span-0-612) [ 2028 0 R /XYZ 60.307257 409.214118 0 ] (Code/OcrImage/:__span-0-613) [ 2028 0 R /XYZ 60.307257 395.813766 0 ] (Code/OcrImage/:__span-0-614) [ 2028 0 R /XYZ 60.307257 382.413414 0 ] (Code/OcrImage/:__span-0-615) [ 2028 0 R /XYZ 60.307257 369.013062 0 ] (Code/OcrImage/:__span-0-616) [ 2028 0 R /XYZ 60.307257 355.612710 0 ] (Code/OcrImage/:__span-0-617) [ 2028 0 R /XYZ 60.307257 342.212358 0 ] (Code/OcrImage/:__span-0-618) [ 2028 0 R /XYZ 60.307257 328.812006 0 ] (Code/OcrImage/:__span-0-619) [ 2028 0 R /XYZ 60.307257 315.411654 0 ] (Code/OcrImage/:__span-0-62) [ 2004 0 R /XYZ 60.307257 476.215878 0 ] (Code/OcrImage/:__span-0-620) [ 2028 0 R /XYZ 60.307257 302.011302 0 ] (Code/OcrImage/:__span-0-621) [ 2028 0 R /XYZ 60.307257 288.610950 0 ] (Code/OcrImage/:__span-0-622) [ 2028 0 R /XYZ 60.307257 275.210598 0 ] (Code/OcrImage/:__span-0-623) [ 2028 0 R /XYZ 60.307257 261.810246 0 ] (Code/OcrImage/:__span-0-624) [ 2028 0 R /XYZ 60.307257 248.409894 0 ] (Code/OcrImage/:__span-0-625) [ 2028 0 R /XYZ 60.307257 235.009542 0 ] (Code/OcrImage/:__span-0-626) [ 2028 0 R /XYZ 60.307257 221.609190 0 ] (Code/OcrImage/:__span-0-627) [ 2028 0 R /XYZ 60.307257 208.208838 0 ] (Code/OcrImage/:__span-0-628) [ 2028 0 R /XYZ 60.307257 194.808486 0 ] (Code/OcrImage/:__span-0-629) [ 2028 0 R /XYZ 60.307257 181.408134 0 ] (Code/OcrImage/:__span-0-63) [ 2004 0 R /XYZ 60.307257 449.415174 0 ] (Code/OcrImage/:__span-0-630) [ 2028 0 R /XYZ 60.307257 168.007782 0 ] (Code/OcrImage/:__span-0-631) [ 2028 0 R /XYZ 60.307257 141.207078 0 ] (Code/OcrImage/:__span-0-632) [ 2028 0 R /XYZ 60.307257 114.406374 0 ] (Code/OcrImage/:__span-0-633) [ 2028 0 R /XYZ 60.307257 101.006022 0 ] (Code/OcrImage/:__span-0-634) [ 2028 0 R /XYZ 60.307257 87.605670 0 ] (Code/OcrImage/:__span-0-635) [ 2030 0 R /XYZ 60.307257 771.023622 0 ] (Code/OcrImage/:__span-0-636) [ 2030 0 R /XYZ 60.307257 757.623270 0 ] (Code/OcrImage/:__span-0-637) [ 2030 0 R /XYZ 60.307257 744.222918 0 ] (Code/OcrImage/:__span-0-638) [ 2030 0 R /XYZ 60.307257 730.822566 0 ] (Code/OcrImage/:__span-0-639) [ 2030 0 R /XYZ 60.307257 717.422214 0 ] (Code/OcrImage/:__span-0-64) [ 2004 0 R /XYZ 60.307257 436.014822 0 ] (Code/OcrImage/:__span-0-640) [ 2030 0 R /XYZ 60.307257 704.021862 0 ] (Code/OcrImage/:__span-0-641) [ 2030 0 R /XYZ 60.307257 690.621510 0 ] (Code/OcrImage/:__span-0-642) [ 2030 0 R /XYZ 60.307257 677.221158 0 ] (Code/OcrImage/:__span-0-643) [ 2030 0 R /XYZ 60.307257 663.820806 0 ] (Code/OcrImage/:__span-0-644) [ 2030 0 R /XYZ 60.307257 650.420454 0 ] (Code/OcrImage/:__span-0-645) [ 2030 0 R /XYZ 60.307257 637.020102 0 ] (Code/OcrImage/:__span-0-646) [ 2030 0 R /XYZ 60.307257 623.619750 0 ] (Code/OcrImage/:__span-0-647) [ 2030 0 R /XYZ 60.307257 610.219398 0 ] (Code/OcrImage/:__span-0-648) [ 2030 0 R /XYZ 60.307257 583.418694 0 ] (Code/OcrImage/:__span-0-649) [ 2030 0 R /XYZ 60.307257 570.018342 0 ] (Code/OcrImage/:__span-0-65) [ 2004 0 R /XYZ 60.307257 422.614470 0 ] (Code/OcrImage/:__span-0-650) [ 2030 0 R /XYZ 60.307257 543.217638 0 ] (Code/OcrImage/:__span-0-651) [ 2030 0 R /XYZ 60.307257 529.817286 0 ] (Code/OcrImage/:__span-0-652) [ 2030 0 R /XYZ 60.307257 516.416934 0 ] (Code/OcrImage/:__span-0-653) [ 2030 0 R /XYZ 60.307257 503.016582 0 ] (Code/OcrImage/:__span-0-654) [ 2030 0 R /XYZ 60.307257 489.616230 0 ] (Code/OcrImage/:__span-0-655) [ 2030 0 R /XYZ 60.307257 476.215878 0 ] (Code/OcrImage/:__span-0-656) [ 2030 0 R /XYZ 60.307257 462.815526 0 ] (Code/OcrImage/:__span-0-657) [ 2030 0 R /XYZ 60.307257 449.415174 0 ] (Code/OcrImage/:__span-0-658) [ 2030 0 R /XYZ 60.307257 436.014822 0 ] (Code/OcrImage/:__span-0-659) [ 2030 0 R /XYZ 60.307257 409.214118 0 ] (Code/OcrImage/:__span-0-66) [ 2004 0 R /XYZ 60.307257 395.813766 0 ] (Code/OcrImage/:__span-0-660) [ 2030 0 R /XYZ 60.307257 395.813766 0 ] (Code/OcrImage/:__span-0-661) [ 2030 0 R /XYZ 60.307257 369.013062 0 ] (Code/OcrImage/:__span-0-662) [ 2030 0 R /XYZ 60.307257 355.612710 0 ] (Code/OcrImage/:__span-0-663) [ 2030 0 R /XYZ 60.307257 342.212358 0 ] (Code/OcrImage/:__span-0-664) [ 2030 0 R /XYZ 60.307257 328.812006 0 ] (Code/OcrImage/:__span-0-665) [ 2030 0 R /XYZ 60.307257 315.411654 0 ] (Code/OcrImage/:__span-0-666) [ 2030 0 R /XYZ 60.307257 302.011302 0 ] (Code/OcrImage/:__span-0-667) [ 2030 0 R /XYZ 60.307257 288.610950 0 ] (Code/OcrImage/:__span-0-668) [ 2030 0 R /XYZ 60.307257 275.210598 0 ] (Code/OcrImage/:__span-0-669) [ 2030 0 R /XYZ 60.307257 261.810246 0 ] (Code/OcrImage/:__span-0-67) [ 2004 0 R /XYZ 60.307257 382.413414 0 ] (Code/OcrImage/:__span-0-670) [ 2030 0 R /XYZ 60.307257 248.409894 0 ] (Code/OcrImage/:__span-0-671) [ 2030 0 R /XYZ 60.307257 235.009542 0 ] (Code/OcrImage/:__span-0-672) [ 2030 0 R /XYZ 60.307257 221.609190 0 ] (Code/OcrImage/:__span-0-673) [ 2030 0 R /XYZ 60.307257 208.208838 0 ] (Code/OcrImage/:__span-0-674) [ 2030 0 R /XYZ 60.307257 194.808486 0 ] (Code/OcrImage/:__span-0-675) [ 2030 0 R /XYZ 60.307257 181.408134 0 ] (Code/OcrImage/:__span-0-676) [ 2030 0 R /XYZ 60.307257 168.007782 0 ] (Code/OcrImage/:__span-0-677) [ 2030 0 R /XYZ 60.307257 154.607430 0 ] (Code/OcrImage/:__span-0-678) [ 2030 0 R /XYZ 60.307257 141.207078 0 ] (Code/OcrImage/:__span-0-679) [ 2030 0 R /XYZ 60.307257 127.806726 0 ] (Code/OcrImage/:__span-0-68) [ 2004 0 R /XYZ 60.307257 369.013062 0 ] (Code/OcrImage/:__span-0-680) [ 2030 0 R /XYZ 60.307257 114.406374 0 ] (Code/OcrImage/:__span-0-681) [ 2030 0 R /XYZ 60.307257 101.006022 0 ] (Code/OcrImage/:__span-0-682) [ 2030 0 R /XYZ 60.307257 87.605670 0 ] (Code/OcrImage/:__span-0-683) [ 2032 0 R /XYZ 60.307257 771.023622 0 ] (Code/OcrImage/:__span-0-684) [ 2032 0 R /XYZ 60.307257 757.623270 0 ] (Code/OcrImage/:__span-0-685) [ 2032 0 R /XYZ 60.307257 744.222918 0 ] (Code/OcrImage/:__span-0-686) [ 2032 0 R /XYZ 60.307257 730.822566 0 ] (Code/OcrImage/:__span-0-687) [ 2032 0 R /XYZ 60.307257 717.422214 0 ] (Code/OcrImage/:__span-0-69) [ 2004 0 R /XYZ 60.307257 342.212358 0 ] (Code/OcrImage/:__span-0-7) [ 2002 0 R /XYZ 60.307257 627.233310 0 ] (Code/OcrImage/:__span-0-70) [ 2004 0 R /XYZ 60.307257 328.812006 0 ] (Code/OcrImage/:__span-0-71) [ 2004 0 R /XYZ 60.307257 315.411654 0 ] (Code/OcrImage/:__span-0-72) [ 2004 0 R /XYZ 60.307257 288.610950 0 ] (Code/OcrImage/:__span-0-73) [ 2004 0 R /XYZ 60.307257 275.210598 0 ] (Code/OcrImage/:__span-0-74) [ 2004 0 R /XYZ 60.307257 261.810246 0 ] (Code/OcrImage/:__span-0-75) [ 2004 0 R /XYZ 60.307257 235.009542 0 ] (Code/OcrImage/:__span-0-76) [ 2004 0 R /XYZ 60.307257 221.609190 0 ] (Code/OcrImage/:__span-0-77) [ 2004 0 R /XYZ 60.307257 208.208838 0 ] (Code/OcrImage/:__span-0-78) [ 2004 0 R /XYZ 60.307257 181.408134 0 ] (Code/OcrImage/:__span-0-79) [ 2004 0 R /XYZ 60.307257 168.007782 0 ] (Code/OcrImage/:__span-0-8) [ 2002 0 R /XYZ 60.307257 613.832958 0 ] (Code/OcrImage/:__span-0-80) [ 2004 0 R /XYZ 60.307257 154.607430 0 ] (Code/OcrImage/:__span-0-81) [ 2004 0 R /XYZ 60.307257 127.806726 0 ] (Code/OcrImage/:__span-0-82) [ 2004 0 R /XYZ 60.307257 114.406374 0 ] (Code/OcrImage/:__span-0-83) [ 2004 0 R /XYZ 60.307257 101.006022 0 ] (Code/OcrImage/:__span-0-84) [ 2006 0 R /XYZ 60.307257 771.023622 0 ] (Code/OcrImage/:__span-0-85) [ 2006 0 R /XYZ 60.307257 757.623270 0 ] (Code/OcrImage/:__span-0-86) [ 2006 0 R /XYZ 60.307257 744.222918 0 ] (Code/OcrImage/:__span-0-87) [ 2006 0 R /XYZ 60.307257 717.422214 0 ] (Code/OcrImage/:__span-0-88) [ 2006 0 R /XYZ 60.307257 704.021862 0 ] (Code/OcrImage/:__span-0-89) [ 2006 0 R /XYZ 60.307257 690.621510 0 ] (Code/OcrImage/:__span-0-9) [ 2002 0 R /XYZ 60.307257 600.432606 0 ] (Code/OcrImage/:__span-0-90) [ 2006 0 R /XYZ 60.307257 663.820806 0 ] (Code/OcrImage/:__span-0-91) [ 2006 0 R /XYZ 60.307257 650.420454 0 ] (Code/OcrImage/:__span-0-92) [ 2006 0 R /XYZ 60.307257 637.020102 0 ] (Code/OcrImage/:__span-0-93) [ 2006 0 R /XYZ 60.307257 610.219398 0 ] (Code/OcrImage/:__span-0-94) [ 2006 0 R /XYZ 60.307257 596.819046 0 ] (Code/OcrImage/:__span-0-95) [ 2006 0 R /XYZ 60.307257 583.418694 0 ] (Code/OcrImage/:__span-0-96) [ 2006 0 R /XYZ 60.307257 556.617990 0 ] (Code/OcrImage/:__span-0-97) [ 2006 0 R /XYZ 60.307257 543.217638 0 ] (Code/OcrImage/:__span-0-98) [ 2006 0 R /XYZ 60.307257 529.817286 0 ] (Code/OcrImage/:__span-0-99) [ 2006 0 R /XYZ 60.307257 516.416934 0 ] (Code/OcrImage/:ocrimagecs) [ 2002 0 R /XYZ 39.386457 747.563622 0 ] (Code/Reader/:) [ 2034 0 R /XYZ 39.386457 747.563622 0 ] (Code/Reader/:__span-0-1) [ 2034 0 R /XYZ 60.307257 707.635422 0 ] (Code/Reader/:__span-0-10) [ 2034 0 R /XYZ 60.307257 587.032254 0 ] (Code/Reader/:__span-0-100) [ 2038 0 R /XYZ 60.307257 529.817286 0 ] (Code/Reader/:__span-0-101) [ 2038 0 R /XYZ 60.307257 516.416934 0 ] (Code/Reader/:__span-0-102) [ 2038 0 R /XYZ 60.307257 503.016582 0 ] (Code/Reader/:__span-0-103) [ 2038 0 R /XYZ 60.307257 489.616230 0 ] (Code/Reader/:__span-0-104) [ 2038 0 R /XYZ 60.307257 476.215878 0 ] (Code/Reader/:__span-0-105) [ 2038 0 R /XYZ 60.307257 462.815526 0 ] (Code/Reader/:__span-0-106) [ 2038 0 R /XYZ 60.307257 449.415174 0 ] (Code/Reader/:__span-0-107) [ 2038 0 R /XYZ 60.307257 422.614470 0 ] (Code/Reader/:__span-0-108) [ 2038 0 R /XYZ 60.307257 395.813766 0 ] (Code/Reader/:__span-0-109) [ 2038 0 R /XYZ 60.307257 382.413414 0 ] (Code/Reader/:__span-0-11) [ 2034 0 R /XYZ 60.307257 573.631902 0 ] (Code/Reader/:__span-0-110) [ 2038 0 R /XYZ 60.307257 369.013062 0 ] (Code/Reader/:__span-0-111) [ 2038 0 R /XYZ 60.307257 355.612710 0 ] (Code/Reader/:__span-0-112) [ 2038 0 R /XYZ 60.307257 342.212358 0 ] (Code/Reader/:__span-0-113) [ 2038 0 R /XYZ 60.307257 328.812006 0 ] (Code/Reader/:__span-0-114) [ 2038 0 R /XYZ 60.307257 315.411654 0 ] (Code/Reader/:__span-0-115) [ 2038 0 R /XYZ 60.307257 302.011302 0 ] (Code/Reader/:__span-0-116) [ 2038 0 R /XYZ 60.307257 288.610950 0 ] (Code/Reader/:__span-0-117) [ 2038 0 R /XYZ 60.307257 275.210598 0 ] (Code/Reader/:__span-0-118) [ 2038 0 R /XYZ 60.307257 248.409894 0 ] (Code/Reader/:__span-0-119) [ 2038 0 R /XYZ 60.307257 235.009542 0 ] (Code/Reader/:__span-0-12) [ 2034 0 R /XYZ 60.307257 560.231550 0 ] (Code/Reader/:__span-0-120) [ 2038 0 R /XYZ 60.307257 221.609190 0 ] (Code/Reader/:__span-0-121) [ 2038 0 R /XYZ 60.307257 208.208838 0 ] (Code/Reader/:__span-0-122) [ 2038 0 R /XYZ 60.307257 194.808486 0 ] (Code/Reader/:__span-0-123) [ 2038 0 R /XYZ 60.307257 181.408134 0 ] (Code/Reader/:__span-0-124) [ 2038 0 R /XYZ 60.307257 168.007782 0 ] (Code/Reader/:__span-0-125) [ 2038 0 R /XYZ 60.307257 154.607430 0 ] (Code/Reader/:__span-0-126) [ 2038 0 R /XYZ 60.307257 141.207078 0 ] (Code/Reader/:__span-0-127) [ 2038 0 R /XYZ 60.307257 127.806726 0 ] (Code/Reader/:__span-0-128) [ 2038 0 R /XYZ 60.307257 101.006022 0 ] (Code/Reader/:__span-0-129) [ 2038 0 R /XYZ 60.307257 87.605670 0 ] (Code/Reader/:__span-0-13) [ 2034 0 R /XYZ 60.307257 546.831198 0 ] (Code/Reader/:__span-0-130) [ 2040 0 R /XYZ 60.307257 771.023622 0 ] (Code/Reader/:__span-0-131) [ 2040 0 R /XYZ 60.307257 757.623270 0 ] (Code/Reader/:__span-0-132) [ 2040 0 R /XYZ 60.307257 744.222918 0 ] (Code/Reader/:__span-0-133) [ 2040 0 R /XYZ 60.307257 730.822566 0 ] (Code/Reader/:__span-0-134) [ 2040 0 R /XYZ 60.307257 717.422214 0 ] (Code/Reader/:__span-0-135) [ 2040 0 R /XYZ 60.307257 704.021862 0 ] (Code/Reader/:__span-0-136) [ 2040 0 R /XYZ 60.307257 690.621510 0 ] (Code/Reader/:__span-0-137) [ 2040 0 R /XYZ 60.307257 677.221158 0 ] (Code/Reader/:__span-0-138) [ 2040 0 R /XYZ 60.307257 650.420454 0 ] (Code/Reader/:__span-0-139) [ 2040 0 R /XYZ 60.307257 637.020102 0 ] (Code/Reader/:__span-0-14) [ 2034 0 R /XYZ 60.307257 533.430846 0 ] (Code/Reader/:__span-0-140) [ 2040 0 R /XYZ 60.307257 623.619750 0 ] (Code/Reader/:__span-0-141) [ 2040 0 R /XYZ 60.307257 610.219398 0 ] (Code/Reader/:__span-0-142) [ 2040 0 R /XYZ 60.307257 596.819046 0 ] (Code/Reader/:__span-0-143) [ 2040 0 R /XYZ 60.307257 583.418694 0 ] (Code/Reader/:__span-0-144) [ 2040 0 R /XYZ 60.307257 570.018342 0 ] (Code/Reader/:__span-0-145) [ 2040 0 R /XYZ 60.307257 556.617990 0 ] (Code/Reader/:__span-0-146) [ 2040 0 R /XYZ 60.307257 543.217638 0 ] (Code/Reader/:__span-0-147) [ 2040 0 R /XYZ 60.307257 529.817286 0 ] (Code/Reader/:__span-0-148) [ 2040 0 R /XYZ 60.307257 503.016582 0 ] (Code/Reader/:__span-0-149) [ 2040 0 R /XYZ 60.307257 489.616230 0 ] (Code/Reader/:__span-0-15) [ 2034 0 R /XYZ 60.307257 520.030494 0 ] (Code/Reader/:__span-0-150) [ 2040 0 R /XYZ 60.307257 476.215878 0 ] (Code/Reader/:__span-0-151) [ 2040 0 R /XYZ 60.307257 462.815526 0 ] (Code/Reader/:__span-0-152) [ 2040 0 R /XYZ 60.307257 449.415174 0 ] (Code/Reader/:__span-0-153) [ 2040 0 R /XYZ 60.307257 436.014822 0 ] (Code/Reader/:__span-0-154) [ 2040 0 R /XYZ 60.307257 422.614470 0 ] (Code/Reader/:__span-0-155) [ 2040 0 R /XYZ 60.307257 409.214118 0 ] (Code/Reader/:__span-0-156) [ 2040 0 R /XYZ 60.307257 395.813766 0 ] (Code/Reader/:__span-0-157) [ 2040 0 R /XYZ 60.307257 382.413414 0 ] (Code/Reader/:__span-0-158) [ 2040 0 R /XYZ 60.307257 355.612710 0 ] (Code/Reader/:__span-0-159) [ 2040 0 R /XYZ 60.307257 342.212358 0 ] (Code/Reader/:__span-0-16) [ 2034 0 R /XYZ 60.307257 506.630142 0 ] (Code/Reader/:__span-0-160) [ 2040 0 R /XYZ 60.307257 328.812006 0 ] (Code/Reader/:__span-0-161) [ 2040 0 R /XYZ 60.307257 315.411654 0 ] (Code/Reader/:__span-0-162) [ 2040 0 R /XYZ 60.307257 302.011302 0 ] (Code/Reader/:__span-0-163) [ 2040 0 R /XYZ 60.307257 288.610950 0 ] (Code/Reader/:__span-0-164) [ 2040 0 R /XYZ 60.307257 275.210598 0 ] (Code/Reader/:__span-0-165) [ 2040 0 R /XYZ 60.307257 261.810246 0 ] (Code/Reader/:__span-0-166) [ 2040 0 R /XYZ 60.307257 248.409894 0 ] (Code/Reader/:__span-0-167) [ 2040 0 R /XYZ 60.307257 235.009542 0 ] (Code/Reader/:__span-0-168) [ 2040 0 R /XYZ 60.307257 208.208838 0 ] (Code/Reader/:__span-0-169) [ 2040 0 R /XYZ 60.307257 194.808486 0 ] (Code/Reader/:__span-0-17) [ 2034 0 R /XYZ 60.307257 493.229790 0 ] (Code/Reader/:__span-0-170) [ 2040 0 R /XYZ 60.307257 181.408134 0 ] (Code/Reader/:__span-0-171) [ 2040 0 R /XYZ 60.307257 168.007782 0 ] (Code/Reader/:__span-0-172) [ 2040 0 R /XYZ 60.307257 154.607430 0 ] (Code/Reader/:__span-0-173) [ 2040 0 R /XYZ 60.307257 141.207078 0 ] (Code/Reader/:__span-0-174) [ 2040 0 R /XYZ 60.307257 127.806726 0 ] (Code/Reader/:__span-0-175) [ 2040 0 R /XYZ 60.307257 114.406374 0 ] (Code/Reader/:__span-0-176) [ 2040 0 R /XYZ 60.307257 101.006022 0 ] (Code/Reader/:__span-0-177) [ 2040 0 R /XYZ 60.307257 87.605670 0 ] (Code/Reader/:__span-0-178) [ 2042 0 R /XYZ 60.307257 757.623270 0 ] (Code/Reader/:__span-0-179) [ 2042 0 R /XYZ 60.307257 744.222918 0 ] (Code/Reader/:__span-0-18) [ 2034 0 R /XYZ 60.307257 479.829438 0 ] (Code/Reader/:__span-0-180) [ 2042 0 R /XYZ 60.307257 730.822566 0 ] (Code/Reader/:__span-0-181) [ 2042 0 R /XYZ 60.307257 717.422214 0 ] (Code/Reader/:__span-0-182) [ 2042 0 R /XYZ 60.307257 704.021862 0 ] (Code/Reader/:__span-0-183) [ 2042 0 R /XYZ 60.307257 690.621510 0 ] (Code/Reader/:__span-0-184) [ 2042 0 R /XYZ 60.307257 677.221158 0 ] (Code/Reader/:__span-0-185) [ 2042 0 R /XYZ 60.307257 663.820806 0 ] (Code/Reader/:__span-0-186) [ 2042 0 R /XYZ 60.307257 650.420454 0 ] (Code/Reader/:__span-0-187) [ 2042 0 R /XYZ 60.307257 637.020102 0 ] (Code/Reader/:__span-0-188) [ 2042 0 R /XYZ 60.307257 623.619750 0 ] (Code/Reader/:__span-0-189) [ 2042 0 R /XYZ 60.307257 610.219398 0 ] (Code/Reader/:__span-0-19) [ 2034 0 R /XYZ 60.307257 466.429086 0 ] (Code/Reader/:__span-0-190) [ 2042 0 R /XYZ 60.307257 596.819046 0 ] (Code/Reader/:__span-0-191) [ 2042 0 R /XYZ 60.307257 583.418694 0 ] (Code/Reader/:__span-0-192) [ 2042 0 R /XYZ 60.307257 570.018342 0 ] (Code/Reader/:__span-0-193) [ 2042 0 R /XYZ 60.307257 556.617990 0 ] (Code/Reader/:__span-0-194) [ 2042 0 R /XYZ 60.307257 543.217638 0 ] (Code/Reader/:__span-0-195) [ 2042 0 R /XYZ 60.307257 529.817286 0 ] (Code/Reader/:__span-0-196) [ 2042 0 R /XYZ 60.307257 516.416934 0 ] (Code/Reader/:__span-0-197) [ 2042 0 R /XYZ 60.307257 503.016582 0 ] (Code/Reader/:__span-0-198) [ 2042 0 R /XYZ 60.307257 489.616230 0 ] (Code/Reader/:__span-0-199) [ 2042 0 R /XYZ 60.307257 476.215878 0 ] (Code/Reader/:__span-0-2) [ 2034 0 R /XYZ 60.307257 694.235070 0 ] (Code/Reader/:__span-0-20) [ 2034 0 R /XYZ 60.307257 453.028734 0 ] (Code/Reader/:__span-0-200) [ 2042 0 R /XYZ 60.307257 449.415174 0 ] (Code/Reader/:__span-0-201) [ 2042 0 R /XYZ 60.307257 436.014822 0 ] (Code/Reader/:__span-0-202) [ 2042 0 R /XYZ 60.307257 422.614470 0 ] (Code/Reader/:__span-0-203) [ 2042 0 R /XYZ 60.307257 409.214118 0 ] (Code/Reader/:__span-0-204) [ 2042 0 R /XYZ 60.307257 395.813766 0 ] (Code/Reader/:__span-0-205) [ 2042 0 R /XYZ 60.307257 382.413414 0 ] (Code/Reader/:__span-0-206) [ 2042 0 R /XYZ 60.307257 369.013062 0 ] (Code/Reader/:__span-0-207) [ 2042 0 R /XYZ 60.307257 355.612710 0 ] (Code/Reader/:__span-0-208) [ 2042 0 R /XYZ 60.307257 342.212358 0 ] (Code/Reader/:__span-0-209) [ 2042 0 R /XYZ 60.307257 328.812006 0 ] (Code/Reader/:__span-0-21) [ 2034 0 R /XYZ 60.307257 439.628382 0 ] (Code/Reader/:__span-0-210) [ 2042 0 R /XYZ 60.307257 315.411654 0 ] (Code/Reader/:__span-0-211) [ 2042 0 R /XYZ 60.307257 302.011302 0 ] (Code/Reader/:__span-0-212) [ 2042 0 R /XYZ 60.307257 288.610950 0 ] (Code/Reader/:__span-0-213) [ 2042 0 R /XYZ 60.307257 275.210598 0 ] (Code/Reader/:__span-0-214) [ 2042 0 R /XYZ 60.307257 261.810246 0 ] (Code/Reader/:__span-0-215) [ 2042 0 R /XYZ 60.307257 248.409894 0 ] (Code/Reader/:__span-0-216) [ 2042 0 R /XYZ 60.307257 235.009542 0 ] (Code/Reader/:__span-0-217) [ 2042 0 R /XYZ 60.307257 221.609190 0 ] (Code/Reader/:__span-0-218) [ 2042 0 R /XYZ 60.307257 208.208838 0 ] (Code/Reader/:__span-0-219) [ 2042 0 R /XYZ 60.307257 194.808486 0 ] (Code/Reader/:__span-0-22) [ 2034 0 R /XYZ 60.307257 426.228030 0 ] (Code/Reader/:__span-0-220) [ 2042 0 R /XYZ 60.307257 181.408134 0 ] (Code/Reader/:__span-0-221) [ 2042 0 R /XYZ 60.307257 168.007782 0 ] (Code/Reader/:__span-0-222) [ 2042 0 R /XYZ 60.307257 154.607430 0 ] (Code/Reader/:__span-0-223) [ 2042 0 R /XYZ 60.307257 141.207078 0 ] (Code/Reader/:__span-0-224) [ 2042 0 R /XYZ 60.307257 127.806726 0 ] (Code/Reader/:__span-0-225) [ 2042 0 R /XYZ 60.307257 114.406374 0 ] (Code/Reader/:__span-0-226) [ 2042 0 R /XYZ 60.307257 87.605670 0 ] (Code/Reader/:__span-0-227) [ 2044 0 R /XYZ 60.307257 771.023622 0 ] (Code/Reader/:__span-0-228) [ 2044 0 R /XYZ 60.307257 757.623270 0 ] (Code/Reader/:__span-0-229) [ 2044 0 R /XYZ 60.307257 744.222918 0 ] (Code/Reader/:__span-0-23) [ 2034 0 R /XYZ 60.307257 412.827678 0 ] (Code/Reader/:__span-0-230) [ 2044 0 R /XYZ 60.307257 730.822566 0 ] (Code/Reader/:__span-0-231) [ 2044 0 R /XYZ 60.307257 717.422214 0 ] (Code/Reader/:__span-0-232) [ 2044 0 R /XYZ 60.307257 704.021862 0 ] (Code/Reader/:__span-0-233) [ 2044 0 R /XYZ 60.307257 690.621510 0 ] (Code/Reader/:__span-0-234) [ 2044 0 R /XYZ 60.307257 677.221158 0 ] (Code/Reader/:__span-0-235) [ 2044 0 R /XYZ 60.307257 663.820806 0 ] (Code/Reader/:__span-0-236) [ 2044 0 R /XYZ 60.307257 650.420454 0 ] (Code/Reader/:__span-0-237) [ 2044 0 R /XYZ 60.307257 637.020102 0 ] (Code/Reader/:__span-0-238) [ 2044 0 R /XYZ 60.307257 623.619750 0 ] (Code/Reader/:__span-0-239) [ 2044 0 R /XYZ 60.307257 610.219398 0 ] (Code/Reader/:__span-0-24) [ 2034 0 R /XYZ 60.307257 399.427326 0 ] (Code/Reader/:__span-0-240) [ 2044 0 R /XYZ 60.307257 596.819046 0 ] (Code/Reader/:__span-0-241) [ 2044 0 R /XYZ 60.307257 570.018342 0 ] (Code/Reader/:__span-0-242) [ 2044 0 R /XYZ 60.307257 543.217638 0 ] (Code/Reader/:__span-0-243) [ 2044 0 R /XYZ 60.307257 529.817286 0 ] (Code/Reader/:__span-0-244) [ 2044 0 R /XYZ 60.307257 503.016582 0 ] (Code/Reader/:__span-0-245) [ 2044 0 R /XYZ 60.307257 489.616230 0 ] (Code/Reader/:__span-0-246) [ 2044 0 R /XYZ 60.307257 476.215878 0 ] (Code/Reader/:__span-0-247) [ 2044 0 R /XYZ 60.307257 462.815526 0 ] (Code/Reader/:__span-0-248) [ 2044 0 R /XYZ 60.307257 449.415174 0 ] (Code/Reader/:__span-0-249) [ 2044 0 R /XYZ 60.307257 436.014822 0 ] (Code/Reader/:__span-0-25) [ 2034 0 R /XYZ 60.307257 386.026974 0 ] (Code/Reader/:__span-0-250) [ 2044 0 R /XYZ 60.307257 422.614470 0 ] (Code/Reader/:__span-0-251) [ 2044 0 R /XYZ 60.307257 395.813766 0 ] (Code/Reader/:__span-0-252) [ 2044 0 R /XYZ 60.307257 369.013062 0 ] (Code/Reader/:__span-0-253) [ 2044 0 R /XYZ 60.307257 355.612710 0 ] (Code/Reader/:__span-0-254) [ 2044 0 R /XYZ 60.307257 342.212358 0 ] (Code/Reader/:__span-0-255) [ 2044 0 R /XYZ 60.307257 315.411654 0 ] (Code/Reader/:__span-0-256) [ 2044 0 R /XYZ 60.307257 288.610950 0 ] (Code/Reader/:__span-0-257) [ 2044 0 R /XYZ 60.307257 275.210598 0 ] (Code/Reader/:__span-0-258) [ 2044 0 R /XYZ 60.307257 248.409894 0 ] (Code/Reader/:__span-0-259) [ 2044 0 R /XYZ 60.307257 221.609190 0 ] (Code/Reader/:__span-0-26) [ 2034 0 R /XYZ 60.307257 372.626622 0 ] (Code/Reader/:__span-0-260) [ 2044 0 R /XYZ 60.307257 194.808486 0 ] (Code/Reader/:__span-0-261) [ 2044 0 R /XYZ 60.307257 168.007782 0 ] (Code/Reader/:__span-0-262) [ 2044 0 R /XYZ 60.307257 154.607430 0 ] (Code/Reader/:__span-0-263) [ 2044 0 R /XYZ 60.307257 141.207078 0 ] (Code/Reader/:__span-0-264) [ 2044 0 R /XYZ 60.307257 114.406374 0 ] (Code/Reader/:__span-0-265) [ 2044 0 R /XYZ 60.307257 101.006022 0 ] (Code/Reader/:__span-0-266) [ 2044 0 R /XYZ 60.307257 87.605670 0 ] (Code/Reader/:__span-0-267) [ 2046 0 R /XYZ 60.307257 771.023622 0 ] (Code/Reader/:__span-0-268) [ 2046 0 R /XYZ 60.307257 757.623270 0 ] (Code/Reader/:__span-0-269) [ 2046 0 R /XYZ 60.307257 730.822566 0 ] (Code/Reader/:__span-0-27) [ 2034 0 R /XYZ 60.307257 345.825918 0 ] (Code/Reader/:__span-0-270) [ 2046 0 R /XYZ 60.307257 690.621510 0 ] (Code/Reader/:__span-0-271) [ 2046 0 R /XYZ 60.307257 677.221158 0 ] (Code/Reader/:__span-0-272) [ 2046 0 R /XYZ 60.307257 650.420454 0 ] (Code/Reader/:__span-0-273) [ 2046 0 R /XYZ 60.307257 623.619750 0 ] (Code/Reader/:__span-0-274) [ 2046 0 R /XYZ 60.307257 610.219398 0 ] (Code/Reader/:__span-0-275) [ 2046 0 R /XYZ 60.307257 596.819046 0 ] (Code/Reader/:__span-0-276) [ 2046 0 R /XYZ 60.307257 583.418694 0 ] (Code/Reader/:__span-0-277) [ 2046 0 R /XYZ 60.307257 570.018342 0 ] (Code/Reader/:__span-0-278) [ 2046 0 R /XYZ 60.307257 556.617990 0 ] (Code/Reader/:__span-0-279) [ 2046 0 R /XYZ 60.307257 543.217638 0 ] (Code/Reader/:__span-0-28) [ 2034 0 R /XYZ 60.307257 332.425566 0 ] (Code/Reader/:__span-0-280) [ 2046 0 R /XYZ 60.307257 529.817286 0 ] (Code/Reader/:__span-0-281) [ 2046 0 R /XYZ 60.307257 516.416934 0 ] (Code/Reader/:__span-0-282) [ 2046 0 R /XYZ 60.307257 489.616230 0 ] (Code/Reader/:__span-0-283) [ 2046 0 R /XYZ 60.307257 476.215878 0 ] (Code/Reader/:__span-0-284) [ 2046 0 R /XYZ 60.307257 462.815526 0 ] (Code/Reader/:__span-0-285) [ 2046 0 R /XYZ 60.307257 449.415174 0 ] (Code/Reader/:__span-0-286) [ 2046 0 R /XYZ 60.307257 436.014822 0 ] (Code/Reader/:__span-0-287) [ 2046 0 R /XYZ 60.307257 409.214118 0 ] (Code/Reader/:__span-0-288) [ 2046 0 R /XYZ 60.307257 395.813766 0 ] (Code/Reader/:__span-0-289) [ 2046 0 R /XYZ 60.307257 382.413414 0 ] (Code/Reader/:__span-0-29) [ 2034 0 R /XYZ 60.307257 319.025214 0 ] (Code/Reader/:__span-0-290) [ 2046 0 R /XYZ 60.307257 369.013062 0 ] (Code/Reader/:__span-0-291) [ 2046 0 R /XYZ 60.307257 355.612710 0 ] (Code/Reader/:__span-0-292) [ 2046 0 R /XYZ 60.307257 342.212358 0 ] (Code/Reader/:__span-0-293) [ 2046 0 R /XYZ 60.307257 328.812006 0 ] (Code/Reader/:__span-0-294) [ 2046 0 R /XYZ 60.307257 315.411654 0 ] (Code/Reader/:__span-0-295) [ 2046 0 R /XYZ 60.307257 302.011302 0 ] (Code/Reader/:__span-0-296) [ 2046 0 R /XYZ 60.307257 288.610950 0 ] (Code/Reader/:__span-0-297) [ 2046 0 R /XYZ 60.307257 275.210598 0 ] (Code/Reader/:__span-0-298) [ 2046 0 R /XYZ 60.307257 248.409894 0 ] (Code/Reader/:__span-0-299) [ 2046 0 R /XYZ 60.307257 235.009542 0 ] (Code/Reader/:__span-0-3) [ 2034 0 R /XYZ 60.307257 680.834718 0 ] (Code/Reader/:__span-0-30) [ 2034 0 R /XYZ 60.307257 292.224510 0 ] (Code/Reader/:__span-0-300) [ 2046 0 R /XYZ 60.307257 208.208838 0 ] (Code/Reader/:__span-0-301) [ 2046 0 R /XYZ 60.307257 194.808486 0 ] (Code/Reader/:__span-0-302) [ 2046 0 R /XYZ 60.307257 181.408134 0 ] (Code/Reader/:__span-0-303) [ 2046 0 R /XYZ 60.307257 168.007782 0 ] (Code/Reader/:__span-0-304) [ 2046 0 R /XYZ 60.307257 154.607430 0 ] (Code/Reader/:__span-0-305) [ 2046 0 R /XYZ 60.307257 141.207078 0 ] (Code/Reader/:__span-0-306) [ 2046 0 R /XYZ 60.307257 127.806726 0 ] (Code/Reader/:__span-0-307) [ 2046 0 R /XYZ 60.307257 114.406374 0 ] (Code/Reader/:__span-0-308) [ 2046 0 R /XYZ 60.307257 101.006022 0 ] (Code/Reader/:__span-0-309) [ 2046 0 R /XYZ 60.307257 87.605670 0 ] (Code/Reader/:__span-0-31) [ 2034 0 R /XYZ 60.307257 278.824158 0 ] (Code/Reader/:__span-0-310) [ 2048 0 R /XYZ 60.307257 771.023622 0 ] (Code/Reader/:__span-0-311) [ 2048 0 R /XYZ 60.307257 757.623270 0 ] (Code/Reader/:__span-0-312) [ 2048 0 R /XYZ 60.307257 730.822566 0 ] (Code/Reader/:__span-0-313) [ 2048 0 R /XYZ 60.307257 717.422214 0 ] (Code/Reader/:__span-0-314) [ 2048 0 R /XYZ 60.307257 704.021862 0 ] (Code/Reader/:__span-0-315) [ 2048 0 R /XYZ 60.307257 690.621510 0 ] (Code/Reader/:__span-0-316) [ 2048 0 R /XYZ 60.307257 677.221158 0 ] (Code/Reader/:__span-0-317) [ 2048 0 R /XYZ 60.307257 663.820806 0 ] (Code/Reader/:__span-0-318) [ 2048 0 R /XYZ 60.307257 650.420454 0 ] (Code/Reader/:__span-0-319) [ 2048 0 R /XYZ 60.307257 637.020102 0 ] (Code/Reader/:__span-0-32) [ 2034 0 R /XYZ 60.307257 265.423806 0 ] (Code/Reader/:__span-0-320) [ 2048 0 R /XYZ 60.307257 623.619750 0 ] (Code/Reader/:__span-0-321) [ 2048 0 R /XYZ 60.307257 610.219398 0 ] (Code/Reader/:__span-0-322) [ 2048 0 R /XYZ 60.307257 596.819046 0 ] (Code/Reader/:__span-0-323) [ 2048 0 R /XYZ 60.307257 583.418694 0 ] (Code/Reader/:__span-0-324) [ 2048 0 R /XYZ 60.307257 570.018342 0 ] (Code/Reader/:__span-0-325) [ 2048 0 R /XYZ 60.307257 556.617990 0 ] (Code/Reader/:__span-0-326) [ 2048 0 R /XYZ 60.307257 543.217638 0 ] (Code/Reader/:__span-0-327) [ 2048 0 R /XYZ 60.307257 529.817286 0 ] (Code/Reader/:__span-0-328) [ 2048 0 R /XYZ 60.307257 516.416934 0 ] (Code/Reader/:__span-0-329) [ 2048 0 R /XYZ 60.307257 489.616230 0 ] (Code/Reader/:__span-0-33) [ 2034 0 R /XYZ 60.307257 252.023454 0 ] (Code/Reader/:__span-0-330) [ 2048 0 R /XYZ 60.307257 476.215878 0 ] (Code/Reader/:__span-0-331) [ 2048 0 R /XYZ 60.307257 462.815526 0 ] (Code/Reader/:__span-0-332) [ 2048 0 R /XYZ 60.307257 449.415174 0 ] (Code/Reader/:__span-0-333) [ 2048 0 R /XYZ 60.307257 436.014822 0 ] (Code/Reader/:__span-0-334) [ 2048 0 R /XYZ 60.307257 422.614470 0 ] (Code/Reader/:__span-0-335) [ 2048 0 R /XYZ 60.307257 409.214118 0 ] (Code/Reader/:__span-0-336) [ 2048 0 R /XYZ 60.307257 395.813766 0 ] (Code/Reader/:__span-0-337) [ 2048 0 R /XYZ 60.307257 382.413414 0 ] (Code/Reader/:__span-0-338) [ 2048 0 R /XYZ 60.307257 369.013062 0 ] (Code/Reader/:__span-0-34) [ 2034 0 R /XYZ 60.307257 238.623102 0 ] (Code/Reader/:__span-0-35) [ 2034 0 R /XYZ 60.307257 225.222750 0 ] (Code/Reader/:__span-0-36) [ 2034 0 R /XYZ 60.307257 211.822398 0 ] (Code/Reader/:__span-0-37) [ 2034 0 R /XYZ 60.307257 198.422046 0 ] (Code/Reader/:__span-0-38) [ 2034 0 R /XYZ 60.307257 171.621342 0 ] (Code/Reader/:__span-0-39) [ 2034 0 R /XYZ 60.307257 158.220990 0 ] (Code/Reader/:__span-0-4) [ 2034 0 R /XYZ 60.307257 667.434366 0 ] (Code/Reader/:__span-0-40) [ 2034 0 R /XYZ 60.307257 131.420286 0 ] (Code/Reader/:__span-0-41) [ 2034 0 R /XYZ 60.307257 104.619582 0 ] (Code/Reader/:__span-0-42) [ 2034 0 R /XYZ 60.307257 91.219230 0 ] (Code/Reader/:__span-0-43) [ 2036 0 R /XYZ 60.307257 757.623270 0 ] (Code/Reader/:__span-0-44) [ 2036 0 R /XYZ 60.307257 730.822566 0 ] (Code/Reader/:__span-0-45) [ 2036 0 R /XYZ 60.307257 717.422214 0 ] (Code/Reader/:__span-0-46) [ 2036 0 R /XYZ 60.307257 704.021862 0 ] (Code/Reader/:__span-0-47) [ 2036 0 R /XYZ 60.307257 690.621510 0 ] (Code/Reader/:__span-0-48) [ 2036 0 R /XYZ 60.307257 677.221158 0 ] (Code/Reader/:__span-0-49) [ 2036 0 R /XYZ 60.307257 663.820806 0 ] (Code/Reader/:__span-0-5) [ 2034 0 R /XYZ 60.307257 654.034014 0 ] (Code/Reader/:__span-0-50) [ 2036 0 R /XYZ 60.307257 650.420454 0 ] (Code/Reader/:__span-0-51) [ 2036 0 R /XYZ 60.307257 637.020102 0 ] (Code/Reader/:__span-0-52) [ 2036 0 R /XYZ 60.307257 623.619750 0 ] (Code/Reader/:__span-0-53) [ 2036 0 R /XYZ 60.307257 610.219398 0 ] (Code/Reader/:__span-0-54) [ 2036 0 R /XYZ 60.307257 596.819046 0 ] (Code/Reader/:__span-0-55) [ 2036 0 R /XYZ 60.307257 583.418694 0 ] (Code/Reader/:__span-0-56) [ 2036 0 R /XYZ 60.307257 570.018342 0 ] (Code/Reader/:__span-0-57) [ 2036 0 R /XYZ 60.307257 556.617990 0 ] (Code/Reader/:__span-0-58) [ 2036 0 R /XYZ 60.307257 543.217638 0 ] (Code/Reader/:__span-0-59) [ 2036 0 R /XYZ 60.307257 529.817286 0 ] (Code/Reader/:__span-0-6) [ 2034 0 R /XYZ 60.307257 640.633662 0 ] (Code/Reader/:__span-0-60) [ 2036 0 R /XYZ 60.307257 516.416934 0 ] (Code/Reader/:__span-0-61) [ 2036 0 R /XYZ 60.307257 503.016582 0 ] (Code/Reader/:__span-0-62) [ 2036 0 R /XYZ 60.307257 489.616230 0 ] (Code/Reader/:__span-0-63) [ 2036 0 R /XYZ 60.307257 476.215878 0 ] (Code/Reader/:__span-0-64) [ 2036 0 R /XYZ 60.307257 462.815526 0 ] (Code/Reader/:__span-0-65) [ 2036 0 R /XYZ 60.307257 449.415174 0 ] (Code/Reader/:__span-0-66) [ 2036 0 R /XYZ 60.307257 436.014822 0 ] (Code/Reader/:__span-0-67) [ 2036 0 R /XYZ 60.307257 422.614470 0 ] (Code/Reader/:__span-0-68) [ 2036 0 R /XYZ 60.307257 409.214118 0 ] (Code/Reader/:__span-0-69) [ 2036 0 R /XYZ 60.307257 395.813766 0 ] (Code/Reader/:__span-0-7) [ 2034 0 R /XYZ 60.307257 627.233310 0 ] (Code/Reader/:__span-0-70) [ 2036 0 R /XYZ 60.307257 382.413414 0 ] (Code/Reader/:__span-0-71) [ 2036 0 R /XYZ 60.307257 369.013062 0 ] (Code/Reader/:__span-0-72) [ 2036 0 R /XYZ 60.307257 355.612710 0 ] (Code/Reader/:__span-0-73) [ 2036 0 R /XYZ 60.307257 328.812006 0 ] (Code/Reader/:__span-0-74) [ 2036 0 R /XYZ 60.307257 315.411654 0 ] (Code/Reader/:__span-0-75) [ 2036 0 R /XYZ 60.307257 302.011302 0 ] (Code/Reader/:__span-0-76) [ 2036 0 R /XYZ 60.307257 288.610950 0 ] (Code/Reader/:__span-0-77) [ 2036 0 R /XYZ 60.307257 275.210598 0 ] (Code/Reader/:__span-0-78) [ 2036 0 R /XYZ 60.307257 261.810246 0 ] (Code/Reader/:__span-0-79) [ 2036 0 R /XYZ 60.307257 248.409894 0 ] (Code/Reader/:__span-0-8) [ 2034 0 R /XYZ 60.307257 613.832958 0 ] (Code/Reader/:__span-0-80) [ 2036 0 R /XYZ 60.307257 221.609190 0 ] (Code/Reader/:__span-0-81) [ 2036 0 R /XYZ 60.307257 208.208838 0 ] (Code/Reader/:__span-0-82) [ 2036 0 R /XYZ 60.307257 194.808486 0 ] (Code/Reader/:__span-0-83) [ 2036 0 R /XYZ 60.307257 168.007782 0 ] (Code/Reader/:__span-0-84) [ 2036 0 R /XYZ 60.307257 141.207078 0 ] (Code/Reader/:__span-0-85) [ 2036 0 R /XYZ 60.307257 114.406374 0 ] (Code/Reader/:__span-0-86) [ 2036 0 R /XYZ 60.307257 87.605670 0 ] (Code/Reader/:__span-0-87) [ 2038 0 R /XYZ 60.307257 771.023622 0 ] (Code/Reader/:__span-0-88) [ 2038 0 R /XYZ 60.307257 744.222918 0 ] (Code/Reader/:__span-0-89) [ 2038 0 R /XYZ 60.307257 730.822566 0 ] (Code/Reader/:__span-0-9) [ 2034 0 R /XYZ 60.307257 600.432606 0 ] (Code/Reader/:__span-0-90) [ 2038 0 R /XYZ 60.307257 704.021862 0 ] (Code/Reader/:__span-0-91) [ 2038 0 R /XYZ 60.307257 690.621510 0 ] (Code/Reader/:__span-0-92) [ 2038 0 R /XYZ 60.307257 663.820806 0 ] (Code/Reader/:__span-0-93) [ 2038 0 R /XYZ 60.307257 650.420454 0 ] (Code/Reader/:__span-0-94) [ 2038 0 R /XYZ 60.307257 623.619750 0 ] (Code/Reader/:__span-0-95) [ 2038 0 R /XYZ 60.307257 610.219398 0 ] (Code/Reader/:__span-0-96) [ 2038 0 R /XYZ 60.307257 596.819046 0 ] (Code/Reader/:__span-0-97) [ 2038 0 R /XYZ 60.307257 583.418694 0 ] (Code/Reader/:__span-0-98) [ 2038 0 R /XYZ 60.307257 556.617990 0 ] (Code/Reader/:__span-0-99) [ 2038 0 R /XYZ 60.307257 543.217638 0 ] (Code/Reader/:readercs) [ 2034 0 R /XYZ 39.386457 747.563622 0 ] (Code/Settings/:) [ 2050 0 R /XYZ 39.386457 747.563622 0 ] (Code/Settings/:__span-0-1) [ 2050 0 R /XYZ 60.307257 707.635422 0 ] (Code/Settings/:__span-0-10) [ 2050 0 R /XYZ 60.307257 587.032254 0 ] (Code/Settings/:__span-0-100) [ 2054 0 R /XYZ 60.307257 543.217638 0 ] (Code/Settings/:__span-0-101) [ 2054 0 R /XYZ 60.307257 529.817286 0 ] (Code/Settings/:__span-0-102) [ 2054 0 R /XYZ 60.307257 516.416934 0 ] (Code/Settings/:__span-0-103) [ 2054 0 R /XYZ 60.307257 503.016582 0 ] (Code/Settings/:__span-0-104) [ 2054 0 R /XYZ 60.307257 489.616230 0 ] (Code/Settings/:__span-0-105) [ 2054 0 R /XYZ 60.307257 476.215878 0 ] (Code/Settings/:__span-0-106) [ 2054 0 R /XYZ 60.307257 462.815526 0 ] (Code/Settings/:__span-0-107) [ 2054 0 R /XYZ 60.307257 449.415174 0 ] (Code/Settings/:__span-0-108) [ 2054 0 R /XYZ 60.307257 436.014822 0 ] (Code/Settings/:__span-0-109) [ 2054 0 R /XYZ 60.307257 422.614470 0 ] (Code/Settings/:__span-0-11) [ 2050 0 R /XYZ 60.307257 573.631902 0 ] (Code/Settings/:__span-0-110) [ 2054 0 R /XYZ 60.307257 409.214118 0 ] (Code/Settings/:__span-0-111) [ 2054 0 R /XYZ 60.307257 395.813766 0 ] (Code/Settings/:__span-0-112) [ 2054 0 R /XYZ 60.307257 382.413414 0 ] (Code/Settings/:__span-0-113) [ 2054 0 R /XYZ 60.307257 369.013062 0 ] (Code/Settings/:__span-0-114) [ 2054 0 R /XYZ 60.307257 355.612710 0 ] (Code/Settings/:__span-0-115) [ 2054 0 R /XYZ 60.307257 342.212358 0 ] (Code/Settings/:__span-0-116) [ 2054 0 R /XYZ 60.307257 328.812006 0 ] (Code/Settings/:__span-0-117) [ 2054 0 R /XYZ 60.307257 315.411654 0 ] (Code/Settings/:__span-0-118) [ 2054 0 R /XYZ 60.307257 302.011302 0 ] (Code/Settings/:__span-0-119) [ 2054 0 R /XYZ 60.307257 288.610950 0 ] (Code/Settings/:__span-0-12) [ 2050 0 R /XYZ 60.307257 560.231550 0 ] (Code/Settings/:__span-0-120) [ 2054 0 R /XYZ 60.307257 275.210598 0 ] (Code/Settings/:__span-0-121) [ 2054 0 R /XYZ 60.307257 261.810246 0 ] (Code/Settings/:__span-0-122) [ 2054 0 R /XYZ 60.307257 248.409894 0 ] (Code/Settings/:__span-0-123) [ 2054 0 R /XYZ 60.307257 235.009542 0 ] (Code/Settings/:__span-0-124) [ 2054 0 R /XYZ 60.307257 208.208838 0 ] (Code/Settings/:__span-0-125) [ 2054 0 R /XYZ 60.307257 194.808486 0 ] (Code/Settings/:__span-0-126) [ 2054 0 R /XYZ 60.307257 181.408134 0 ] (Code/Settings/:__span-0-127) [ 2054 0 R /XYZ 60.307257 168.007782 0 ] (Code/Settings/:__span-0-128) [ 2054 0 R /XYZ 60.307257 154.607430 0 ] (Code/Settings/:__span-0-129) [ 2054 0 R /XYZ 60.307257 141.207078 0 ] (Code/Settings/:__span-0-13) [ 2050 0 R /XYZ 60.307257 546.831198 0 ] (Code/Settings/:__span-0-130) [ 2054 0 R /XYZ 60.307257 127.806726 0 ] (Code/Settings/:__span-0-131) [ 2054 0 R /XYZ 60.307257 114.406374 0 ] (Code/Settings/:__span-0-132) [ 2054 0 R /XYZ 60.307257 101.006022 0 ] (Code/Settings/:__span-0-133) [ 2054 0 R /XYZ 60.307257 87.605670 0 ] (Code/Settings/:__span-0-134) [ 2056 0 R /XYZ 60.307257 771.023622 0 ] (Code/Settings/:__span-0-135) [ 2056 0 R /XYZ 60.307257 757.623270 0 ] (Code/Settings/:__span-0-136) [ 2056 0 R /XYZ 60.307257 744.222918 0 ] (Code/Settings/:__span-0-137) [ 2056 0 R /XYZ 60.307257 730.822566 0 ] (Code/Settings/:__span-0-138) [ 2056 0 R /XYZ 60.307257 717.422214 0 ] (Code/Settings/:__span-0-139) [ 2056 0 R /XYZ 60.307257 690.621510 0 ] (Code/Settings/:__span-0-14) [ 2050 0 R /XYZ 60.307257 533.430846 0 ] (Code/Settings/:__span-0-140) [ 2056 0 R /XYZ 60.307257 677.221158 0 ] (Code/Settings/:__span-0-141) [ 2056 0 R /XYZ 60.307257 663.820806 0 ] (Code/Settings/:__span-0-142) [ 2056 0 R /XYZ 60.307257 650.420454 0 ] (Code/Settings/:__span-0-143) [ 2056 0 R /XYZ 60.307257 637.020102 0 ] (Code/Settings/:__span-0-144) [ 2056 0 R /XYZ 60.307257 623.619750 0 ] (Code/Settings/:__span-0-145) [ 2056 0 R /XYZ 60.307257 610.219398 0 ] (Code/Settings/:__span-0-146) [ 2056 0 R /XYZ 60.307257 596.819046 0 ] (Code/Settings/:__span-0-147) [ 2056 0 R /XYZ 60.307257 583.418694 0 ] (Code/Settings/:__span-0-148) [ 2056 0 R /XYZ 60.307257 570.018342 0 ] (Code/Settings/:__span-0-149) [ 2056 0 R /XYZ 60.307257 556.617990 0 ] (Code/Settings/:__span-0-15) [ 2050 0 R /XYZ 60.307257 520.030494 0 ] (Code/Settings/:__span-0-150) [ 2056 0 R /XYZ 60.307257 543.217638 0 ] (Code/Settings/:__span-0-151) [ 2056 0 R /XYZ 60.307257 529.817286 0 ] (Code/Settings/:__span-0-152) [ 2056 0 R /XYZ 60.307257 503.016582 0 ] (Code/Settings/:__span-0-153) [ 2056 0 R /XYZ 60.307257 489.616230 0 ] (Code/Settings/:__span-0-154) [ 2056 0 R /XYZ 60.307257 476.215878 0 ] (Code/Settings/:__span-0-155) [ 2056 0 R /XYZ 60.307257 462.815526 0 ] (Code/Settings/:__span-0-156) [ 2056 0 R /XYZ 60.307257 449.415174 0 ] (Code/Settings/:__span-0-157) [ 2056 0 R /XYZ 60.307257 436.014822 0 ] (Code/Settings/:__span-0-158) [ 2056 0 R /XYZ 60.307257 422.614470 0 ] (Code/Settings/:__span-0-159) [ 2056 0 R /XYZ 60.307257 409.214118 0 ] (Code/Settings/:__span-0-16) [ 2050 0 R /XYZ 60.307257 506.630142 0 ] (Code/Settings/:__span-0-160) [ 2056 0 R /XYZ 60.307257 395.813766 0 ] (Code/Settings/:__span-0-161) [ 2056 0 R /XYZ 60.307257 382.413414 0 ] (Code/Settings/:__span-0-162) [ 2056 0 R /XYZ 60.307257 369.013062 0 ] (Code/Settings/:__span-0-163) [ 2056 0 R /XYZ 60.307257 355.612710 0 ] (Code/Settings/:__span-0-164) [ 2056 0 R /XYZ 60.307257 342.212358 0 ] (Code/Settings/:__span-0-165) [ 2056 0 R /XYZ 60.307257 328.812006 0 ] (Code/Settings/:__span-0-166) [ 2056 0 R /XYZ 60.307257 315.411654 0 ] (Code/Settings/:__span-0-167) [ 2056 0 R /XYZ 60.307257 302.011302 0 ] (Code/Settings/:__span-0-168) [ 2056 0 R /XYZ 60.307257 288.610950 0 ] (Code/Settings/:__span-0-169) [ 2056 0 R /XYZ 60.307257 275.210598 0 ] (Code/Settings/:__span-0-17) [ 2050 0 R /XYZ 60.307257 493.229790 0 ] (Code/Settings/:__span-0-170) [ 2056 0 R /XYZ 60.307257 261.810246 0 ] (Code/Settings/:__span-0-171) [ 2056 0 R /XYZ 60.307257 248.409894 0 ] (Code/Settings/:__span-0-172) [ 2056 0 R /XYZ 60.307257 235.009542 0 ] (Code/Settings/:__span-0-173) [ 2056 0 R /XYZ 60.307257 221.609190 0 ] (Code/Settings/:__span-0-174) [ 2056 0 R /XYZ 60.307257 208.208838 0 ] (Code/Settings/:__span-0-175) [ 2056 0 R /XYZ 60.307257 194.808486 0 ] (Code/Settings/:__span-0-176) [ 2056 0 R /XYZ 60.307257 181.408134 0 ] (Code/Settings/:__span-0-177) [ 2056 0 R /XYZ 60.307257 168.007782 0 ] (Code/Settings/:__span-0-178) [ 2056 0 R /XYZ 60.307257 154.607430 0 ] (Code/Settings/:__span-0-179) [ 2056 0 R /XYZ 60.307257 141.207078 0 ] (Code/Settings/:__span-0-18) [ 2050 0 R /XYZ 60.307257 479.829438 0 ] (Code/Settings/:__span-0-180) [ 2056 0 R /XYZ 60.307257 127.806726 0 ] (Code/Settings/:__span-0-181) [ 2056 0 R /XYZ 60.307257 114.406374 0 ] (Code/Settings/:__span-0-182) [ 2056 0 R /XYZ 60.307257 101.006022 0 ] (Code/Settings/:__span-0-183) [ 2056 0 R /XYZ 60.307257 87.605670 0 ] (Code/Settings/:__span-0-184) [ 2058 0 R /XYZ 60.307257 771.023622 0 ] (Code/Settings/:__span-0-185) [ 2058 0 R /XYZ 60.307257 757.623270 0 ] (Code/Settings/:__span-0-186) [ 2058 0 R /XYZ 60.307257 744.222918 0 ] (Code/Settings/:__span-0-187) [ 2058 0 R /XYZ 60.307257 730.822566 0 ] (Code/Settings/:__span-0-188) [ 2058 0 R /XYZ 60.307257 717.422214 0 ] (Code/Settings/:__span-0-189) [ 2058 0 R /XYZ 60.307257 704.021862 0 ] (Code/Settings/:__span-0-19) [ 2050 0 R /XYZ 60.307257 466.429086 0 ] (Code/Settings/:__span-0-190) [ 2058 0 R /XYZ 60.307257 690.621510 0 ] (Code/Settings/:__span-0-191) [ 2058 0 R /XYZ 60.307257 677.221158 0 ] (Code/Settings/:__span-0-192) [ 2058 0 R /XYZ 60.307257 663.820806 0 ] (Code/Settings/:__span-0-193) [ 2058 0 R /XYZ 60.307257 650.420454 0 ] (Code/Settings/:__span-0-194) [ 2058 0 R /XYZ 60.307257 637.020102 0 ] (Code/Settings/:__span-0-195) [ 2058 0 R /XYZ 60.307257 610.219398 0 ] (Code/Settings/:__span-0-196) [ 2058 0 R /XYZ 60.307257 596.819046 0 ] (Code/Settings/:__span-0-197) [ 2058 0 R /XYZ 60.307257 583.418694 0 ] (Code/Settings/:__span-0-198) [ 2058 0 R /XYZ 60.307257 570.018342 0 ] (Code/Settings/:__span-0-199) [ 2058 0 R /XYZ 60.307257 556.617990 0 ] (Code/Settings/:__span-0-2) [ 2050 0 R /XYZ 60.307257 694.235070 0 ] (Code/Settings/:__span-0-20) [ 2050 0 R /XYZ 60.307257 453.028734 0 ] (Code/Settings/:__span-0-200) [ 2058 0 R /XYZ 60.307257 543.217638 0 ] (Code/Settings/:__span-0-201) [ 2058 0 R /XYZ 60.307257 529.817286 0 ] (Code/Settings/:__span-0-202) [ 2058 0 R /XYZ 60.307257 516.416934 0 ] (Code/Settings/:__span-0-203) [ 2058 0 R /XYZ 60.307257 503.016582 0 ] (Code/Settings/:__span-0-204) [ 2058 0 R /XYZ 60.307257 489.616230 0 ] (Code/Settings/:__span-0-205) [ 2058 0 R /XYZ 60.307257 476.215878 0 ] (Code/Settings/:__span-0-206) [ 2058 0 R /XYZ 60.307257 462.815526 0 ] (Code/Settings/:__span-0-207) [ 2058 0 R /XYZ 60.307257 449.415174 0 ] (Code/Settings/:__span-0-208) [ 2058 0 R /XYZ 60.307257 436.014822 0 ] (Code/Settings/:__span-0-209) [ 2058 0 R /XYZ 60.307257 422.614470 0 ] (Code/Settings/:__span-0-21) [ 2050 0 R /XYZ 60.307257 439.628382 0 ] (Code/Settings/:__span-0-210) [ 2058 0 R /XYZ 60.307257 409.214118 0 ] (Code/Settings/:__span-0-211) [ 2058 0 R /XYZ 60.307257 395.813766 0 ] (Code/Settings/:__span-0-212) [ 2058 0 R /XYZ 60.307257 382.413414 0 ] (Code/Settings/:__span-0-213) [ 2058 0 R /XYZ 60.307257 369.013062 0 ] (Code/Settings/:__span-0-214) [ 2058 0 R /XYZ 60.307257 355.612710 0 ] (Code/Settings/:__span-0-215) [ 2058 0 R /XYZ 60.307257 342.212358 0 ] (Code/Settings/:__span-0-216) [ 2058 0 R /XYZ 60.307257 328.812006 0 ] (Code/Settings/:__span-0-217) [ 2058 0 R /XYZ 60.307257 315.411654 0 ] (Code/Settings/:__span-0-218) [ 2058 0 R /XYZ 60.307257 302.011302 0 ] (Code/Settings/:__span-0-219) [ 2058 0 R /XYZ 60.307257 288.610950 0 ] (Code/Settings/:__span-0-22) [ 2050 0 R /XYZ 60.307257 426.228030 0 ] (Code/Settings/:__span-0-220) [ 2058 0 R /XYZ 60.307257 275.210598 0 ] (Code/Settings/:__span-0-221) [ 2058 0 R /XYZ 60.307257 261.810246 0 ] (Code/Settings/:__span-0-222) [ 2058 0 R /XYZ 60.307257 248.409894 0 ] (Code/Settings/:__span-0-223) [ 2058 0 R /XYZ 60.307257 235.009542 0 ] (Code/Settings/:__span-0-224) [ 2058 0 R /XYZ 60.307257 221.609190 0 ] (Code/Settings/:__span-0-225) [ 2058 0 R /XYZ 60.307257 208.208838 0 ] (Code/Settings/:__span-0-226) [ 2058 0 R /XYZ 60.307257 194.808486 0 ] (Code/Settings/:__span-0-227) [ 2058 0 R /XYZ 60.307257 181.408134 0 ] (Code/Settings/:__span-0-228) [ 2058 0 R /XYZ 60.307257 154.607430 0 ] (Code/Settings/:__span-0-229) [ 2058 0 R /XYZ 60.307257 141.207078 0 ] (Code/Settings/:__span-0-23) [ 2050 0 R /XYZ 60.307257 412.827678 0 ] (Code/Settings/:__span-0-230) [ 2058 0 R /XYZ 60.307257 127.806726 0 ] (Code/Settings/:__span-0-231) [ 2058 0 R /XYZ 60.307257 114.406374 0 ] (Code/Settings/:__span-0-232) [ 2058 0 R /XYZ 60.307257 101.006022 0 ] (Code/Settings/:__span-0-233) [ 2058 0 R /XYZ 60.307257 87.605670 0 ] (Code/Settings/:__span-0-234) [ 2060 0 R /XYZ 60.307257 771.023622 0 ] (Code/Settings/:__span-0-235) [ 2060 0 R /XYZ 60.307257 757.623270 0 ] (Code/Settings/:__span-0-236) [ 2060 0 R /XYZ 60.307257 744.222918 0 ] (Code/Settings/:__span-0-237) [ 2060 0 R /XYZ 60.307257 730.822566 0 ] (Code/Settings/:__span-0-238) [ 2060 0 R /XYZ 60.307257 717.422214 0 ] (Code/Settings/:__span-0-239) [ 2060 0 R /XYZ 60.307257 704.021862 0 ] (Code/Settings/:__span-0-24) [ 2050 0 R /XYZ 60.307257 399.427326 0 ] (Code/Settings/:__span-0-240) [ 2060 0 R /XYZ 60.307257 690.621510 0 ] (Code/Settings/:__span-0-241) [ 2060 0 R /XYZ 60.307257 677.221158 0 ] (Code/Settings/:__span-0-242) [ 2060 0 R /XYZ 60.307257 663.820806 0 ] (Code/Settings/:__span-0-243) [ 2060 0 R /XYZ 60.307257 650.420454 0 ] (Code/Settings/:__span-0-244) [ 2060 0 R /XYZ 60.307257 637.020102 0 ] (Code/Settings/:__span-0-245) [ 2060 0 R /XYZ 60.307257 623.619750 0 ] (Code/Settings/:__span-0-246) [ 2060 0 R /XYZ 60.307257 610.219398 0 ] (Code/Settings/:__span-0-247) [ 2060 0 R /XYZ 60.307257 596.819046 0 ] (Code/Settings/:__span-0-248) [ 2060 0 R /XYZ 60.307257 583.418694 0 ] (Code/Settings/:__span-0-249) [ 2060 0 R /XYZ 60.307257 570.018342 0 ] (Code/Settings/:__span-0-25) [ 2050 0 R /XYZ 60.307257 386.026974 0 ] (Code/Settings/:__span-0-250) [ 2060 0 R /XYZ 60.307257 556.617990 0 ] (Code/Settings/:__span-0-251) [ 2060 0 R /XYZ 60.307257 543.217638 0 ] (Code/Settings/:__span-0-252) [ 2060 0 R /XYZ 60.307257 529.817286 0 ] (Code/Settings/:__span-0-253) [ 2060 0 R /XYZ 60.307257 516.416934 0 ] (Code/Settings/:__span-0-254) [ 2060 0 R /XYZ 60.307257 503.016582 0 ] (Code/Settings/:__span-0-255) [ 2060 0 R /XYZ 60.307257 489.616230 0 ] (Code/Settings/:__span-0-256) [ 2060 0 R /XYZ 60.307257 476.215878 0 ] (Code/Settings/:__span-0-257) [ 2060 0 R /XYZ 60.307257 462.815526 0 ] (Code/Settings/:__span-0-258) [ 2060 0 R /XYZ 60.307257 449.415174 0 ] (Code/Settings/:__span-0-259) [ 2060 0 R /XYZ 60.307257 436.014822 0 ] (Code/Settings/:__span-0-26) [ 2050 0 R /XYZ 60.307257 372.626622 0 ] (Code/Settings/:__span-0-260) [ 2060 0 R /XYZ 60.307257 422.614470 0 ] (Code/Settings/:__span-0-261) [ 2060 0 R /XYZ 60.307257 409.214118 0 ] (Code/Settings/:__span-0-262) [ 2060 0 R /XYZ 60.307257 382.413414 0 ] (Code/Settings/:__span-0-263) [ 2060 0 R /XYZ 60.307257 369.013062 0 ] (Code/Settings/:__span-0-264) [ 2060 0 R /XYZ 60.307257 355.612710 0 ] (Code/Settings/:__span-0-265) [ 2060 0 R /XYZ 60.307257 342.212358 0 ] (Code/Settings/:__span-0-266) [ 2060 0 R /XYZ 60.307257 328.812006 0 ] (Code/Settings/:__span-0-267) [ 2060 0 R /XYZ 60.307257 315.411654 0 ] (Code/Settings/:__span-0-268) [ 2060 0 R /XYZ 60.307257 302.011302 0 ] (Code/Settings/:__span-0-269) [ 2060 0 R /XYZ 60.307257 288.610950 0 ] (Code/Settings/:__span-0-27) [ 2050 0 R /XYZ 60.307257 359.226270 0 ] (Code/Settings/:__span-0-270) [ 2060 0 R /XYZ 60.307257 261.810246 0 ] (Code/Settings/:__span-0-271) [ 2060 0 R /XYZ 60.307257 248.409894 0 ] (Code/Settings/:__span-0-272) [ 2060 0 R /XYZ 60.307257 221.609190 0 ] (Code/Settings/:__span-0-273) [ 2060 0 R /XYZ 60.307257 194.808486 0 ] (Code/Settings/:__span-0-274) [ 2060 0 R /XYZ 60.307257 168.007782 0 ] (Code/Settings/:__span-0-275) [ 2060 0 R /XYZ 60.307257 154.607430 0 ] (Code/Settings/:__span-0-276) [ 2060 0 R /XYZ 60.307257 127.806726 0 ] (Code/Settings/:__span-0-277) [ 2060 0 R /XYZ 60.307257 114.406374 0 ] (Code/Settings/:__span-0-278) [ 2060 0 R /XYZ 60.307257 101.006022 0 ] (Code/Settings/:__span-0-279) [ 2060 0 R /XYZ 60.307257 87.605670 0 ] (Code/Settings/:__span-0-28) [ 2050 0 R /XYZ 60.307257 345.825918 0 ] (Code/Settings/:__span-0-280) [ 2062 0 R /XYZ 60.307257 771.023622 0 ] (Code/Settings/:__span-0-281) [ 2062 0 R /XYZ 60.307257 757.623270 0 ] (Code/Settings/:__span-0-282) [ 2062 0 R /XYZ 60.307257 744.222918 0 ] (Code/Settings/:__span-0-283) [ 2062 0 R /XYZ 60.307257 730.822566 0 ] (Code/Settings/:__span-0-284) [ 2062 0 R /XYZ 60.307257 717.422214 0 ] (Code/Settings/:__span-0-285) [ 2062 0 R /XYZ 60.307257 704.021862 0 ] (Code/Settings/:__span-0-286) [ 2062 0 R /XYZ 60.307257 690.621510 0 ] (Code/Settings/:__span-0-287) [ 2062 0 R /XYZ 60.307257 677.221158 0 ] (Code/Settings/:__span-0-288) [ 2062 0 R /XYZ 60.307257 663.820806 0 ] (Code/Settings/:__span-0-289) [ 2062 0 R /XYZ 60.307257 650.420454 0 ] (Code/Settings/:__span-0-29) [ 2050 0 R /XYZ 60.307257 332.425566 0 ] (Code/Settings/:__span-0-290) [ 2062 0 R /XYZ 60.307257 637.020102 0 ] (Code/Settings/:__span-0-291) [ 2062 0 R /XYZ 60.307257 623.619750 0 ] (Code/Settings/:__span-0-292) [ 2062 0 R /XYZ 60.307257 596.819046 0 ] (Code/Settings/:__span-0-293) [ 2062 0 R /XYZ 60.307257 583.418694 0 ] (Code/Settings/:__span-0-294) [ 2062 0 R /XYZ 60.307257 570.018342 0 ] (Code/Settings/:__span-0-295) [ 2062 0 R /XYZ 60.307257 556.617990 0 ] (Code/Settings/:__span-0-296) [ 2062 0 R /XYZ 60.307257 543.217638 0 ] (Code/Settings/:__span-0-297) [ 2062 0 R /XYZ 60.307257 529.817286 0 ] (Code/Settings/:__span-0-298) [ 2062 0 R /XYZ 60.307257 516.416934 0 ] (Code/Settings/:__span-0-299) [ 2062 0 R /XYZ 60.307257 503.016582 0 ] (Code/Settings/:__span-0-3) [ 2050 0 R /XYZ 60.307257 680.834718 0 ] (Code/Settings/:__span-0-30) [ 2050 0 R /XYZ 60.307257 319.025214 0 ] (Code/Settings/:__span-0-300) [ 2062 0 R /XYZ 60.307257 489.616230 0 ] (Code/Settings/:__span-0-301) [ 2062 0 R /XYZ 60.307257 476.215878 0 ] (Code/Settings/:__span-0-302) [ 2062 0 R /XYZ 60.307257 449.415174 0 ] (Code/Settings/:__span-0-303) [ 2062 0 R /XYZ 60.307257 422.614470 0 ] (Code/Settings/:__span-0-304) [ 2062 0 R /XYZ 60.307257 409.214118 0 ] (Code/Settings/:__span-0-305) [ 2062 0 R /XYZ 60.307257 382.413414 0 ] (Code/Settings/:__span-0-306) [ 2062 0 R /XYZ 60.307257 369.013062 0 ] (Code/Settings/:__span-0-307) [ 2062 0 R /XYZ 60.307257 355.612710 0 ] (Code/Settings/:__span-0-308) [ 2062 0 R /XYZ 60.307257 342.212358 0 ] (Code/Settings/:__span-0-309) [ 2062 0 R /XYZ 60.307257 328.812006 0 ] (Code/Settings/:__span-0-31) [ 2050 0 R /XYZ 60.307257 305.624862 0 ] (Code/Settings/:__span-0-310) [ 2062 0 R /XYZ 60.307257 315.411654 0 ] (Code/Settings/:__span-0-311) [ 2062 0 R /XYZ 60.307257 302.011302 0 ] (Code/Settings/:__span-0-312) [ 2062 0 R /XYZ 60.307257 288.610950 0 ] (Code/Settings/:__span-0-313) [ 2062 0 R /XYZ 60.307257 275.210598 0 ] (Code/Settings/:__span-0-314) [ 2062 0 R /XYZ 60.307257 261.810246 0 ] (Code/Settings/:__span-0-315) [ 2062 0 R /XYZ 60.307257 248.409894 0 ] (Code/Settings/:__span-0-316) [ 2062 0 R /XYZ 60.307257 235.009542 0 ] (Code/Settings/:__span-0-317) [ 2062 0 R /XYZ 60.307257 221.609190 0 ] (Code/Settings/:__span-0-318) [ 2062 0 R /XYZ 60.307257 208.208838 0 ] (Code/Settings/:__span-0-319) [ 2062 0 R /XYZ 60.307257 194.808486 0 ] (Code/Settings/:__span-0-32) [ 2050 0 R /XYZ 60.307257 292.224510 0 ] (Code/Settings/:__span-0-320) [ 2062 0 R /XYZ 60.307257 181.408134 0 ] (Code/Settings/:__span-0-321) [ 2062 0 R /XYZ 60.307257 168.007782 0 ] (Code/Settings/:__span-0-322) [ 2062 0 R /XYZ 60.307257 154.607430 0 ] (Code/Settings/:__span-0-323) [ 2062 0 R /XYZ 60.307257 141.207078 0 ] (Code/Settings/:__span-0-324) [ 2062 0 R /XYZ 60.307257 114.406374 0 ] (Code/Settings/:__span-0-325) [ 2062 0 R /XYZ 60.307257 101.006022 0 ] (Code/Settings/:__span-0-326) [ 2062 0 R /XYZ 60.307257 87.605670 0 ] (Code/Settings/:__span-0-327) [ 2064 0 R /XYZ 60.307257 771.023622 0 ] (Code/Settings/:__span-0-328) [ 2064 0 R /XYZ 60.307257 757.623270 0 ] (Code/Settings/:__span-0-329) [ 2064 0 R /XYZ 60.307257 744.222918 0 ] (Code/Settings/:__span-0-33) [ 2050 0 R /XYZ 60.307257 278.824158 0 ] (Code/Settings/:__span-0-330) [ 2064 0 R /XYZ 60.307257 730.822566 0 ] (Code/Settings/:__span-0-331) [ 2064 0 R /XYZ 60.307257 717.422214 0 ] (Code/Settings/:__span-0-332) [ 2064 0 R /XYZ 60.307257 704.021862 0 ] (Code/Settings/:__span-0-333) [ 2064 0 R /XYZ 60.307257 690.621510 0 ] (Code/Settings/:__span-0-334) [ 2064 0 R /XYZ 60.307257 677.221158 0 ] (Code/Settings/:__span-0-335) [ 2064 0 R /XYZ 60.307257 663.820806 0 ] (Code/Settings/:__span-0-336) [ 2064 0 R /XYZ 60.307257 650.420454 0 ] (Code/Settings/:__span-0-337) [ 2064 0 R /XYZ 60.307257 637.020102 0 ] (Code/Settings/:__span-0-338) [ 2064 0 R /XYZ 60.307257 623.619750 0 ] (Code/Settings/:__span-0-339) [ 2064 0 R /XYZ 60.307257 610.219398 0 ] (Code/Settings/:__span-0-34) [ 2050 0 R /XYZ 60.307257 265.423806 0 ] (Code/Settings/:__span-0-340) [ 2064 0 R /XYZ 60.307257 596.819046 0 ] (Code/Settings/:__span-0-341) [ 2064 0 R /XYZ 60.307257 583.418694 0 ] (Code/Settings/:__span-0-342) [ 2064 0 R /XYZ 60.307257 570.018342 0 ] (Code/Settings/:__span-0-343) [ 2064 0 R /XYZ 60.307257 543.217638 0 ] (Code/Settings/:__span-0-344) [ 2064 0 R /XYZ 60.307257 529.817286 0 ] (Code/Settings/:__span-0-345) [ 2064 0 R /XYZ 60.307257 516.416934 0 ] (Code/Settings/:__span-0-346) [ 2064 0 R /XYZ 60.307257 503.016582 0 ] (Code/Settings/:__span-0-347) [ 2064 0 R /XYZ 60.307257 489.616230 0 ] (Code/Settings/:__span-0-348) [ 2064 0 R /XYZ 60.307257 476.215878 0 ] (Code/Settings/:__span-0-349) [ 2064 0 R /XYZ 60.307257 462.815526 0 ] (Code/Settings/:__span-0-35) [ 2050 0 R /XYZ 60.307257 252.023454 0 ] (Code/Settings/:__span-0-350) [ 2064 0 R /XYZ 60.307257 449.415174 0 ] (Code/Settings/:__span-0-351) [ 2064 0 R /XYZ 60.307257 436.014822 0 ] (Code/Settings/:__span-0-352) [ 2064 0 R /XYZ 60.307257 422.614470 0 ] (Code/Settings/:__span-0-353) [ 2064 0 R /XYZ 60.307257 409.214118 0 ] (Code/Settings/:__span-0-354) [ 2064 0 R /XYZ 60.307257 395.813766 0 ] (Code/Settings/:__span-0-355) [ 2064 0 R /XYZ 60.307257 382.413414 0 ] (Code/Settings/:__span-0-356) [ 2064 0 R /XYZ 60.307257 369.013062 0 ] (Code/Settings/:__span-0-357) [ 2064 0 R /XYZ 60.307257 355.612710 0 ] (Code/Settings/:__span-0-358) [ 2064 0 R /XYZ 60.307257 342.212358 0 ] (Code/Settings/:__span-0-359) [ 2064 0 R /XYZ 60.307257 328.812006 0 ] (Code/Settings/:__span-0-36) [ 2050 0 R /XYZ 60.307257 238.623102 0 ] (Code/Settings/:__span-0-360) [ 2064 0 R /XYZ 60.307257 315.411654 0 ] (Code/Settings/:__span-0-361) [ 2064 0 R /XYZ 60.307257 302.011302 0 ] (Code/Settings/:__span-0-362) [ 2064 0 R /XYZ 60.307257 288.610950 0 ] (Code/Settings/:__span-0-363) [ 2064 0 R /XYZ 60.307257 275.210598 0 ] (Code/Settings/:__span-0-364) [ 2064 0 R /XYZ 60.307257 261.810246 0 ] (Code/Settings/:__span-0-365) [ 2064 0 R /XYZ 60.307257 235.009542 0 ] (Code/Settings/:__span-0-366) [ 2064 0 R /XYZ 60.307257 221.609190 0 ] (Code/Settings/:__span-0-367) [ 2064 0 R /XYZ 60.307257 208.208838 0 ] (Code/Settings/:__span-0-368) [ 2064 0 R /XYZ 60.307257 194.808486 0 ] (Code/Settings/:__span-0-369) [ 2064 0 R /XYZ 60.307257 181.408134 0 ] (Code/Settings/:__span-0-37) [ 2050 0 R /XYZ 60.307257 225.222750 0 ] (Code/Settings/:__span-0-370) [ 2064 0 R /XYZ 60.307257 168.007782 0 ] (Code/Settings/:__span-0-371) [ 2064 0 R /XYZ 60.307257 154.607430 0 ] (Code/Settings/:__span-0-372) [ 2064 0 R /XYZ 60.307257 141.207078 0 ] (Code/Settings/:__span-0-373) [ 2064 0 R /XYZ 60.307257 127.806726 0 ] (Code/Settings/:__span-0-374) [ 2064 0 R /XYZ 60.307257 114.406374 0 ] (Code/Settings/:__span-0-375) [ 2064 0 R /XYZ 60.307257 101.006022 0 ] (Code/Settings/:__span-0-376) [ 2064 0 R /XYZ 60.307257 87.605670 0 ] (Code/Settings/:__span-0-377) [ 2066 0 R /XYZ 60.307257 771.023622 0 ] (Code/Settings/:__span-0-378) [ 2066 0 R /XYZ 60.307257 757.623270 0 ] (Code/Settings/:__span-0-379) [ 2066 0 R /XYZ 60.307257 744.222918 0 ] (Code/Settings/:__span-0-38) [ 2050 0 R /XYZ 60.307257 211.822398 0 ] (Code/Settings/:__span-0-380) [ 2066 0 R /XYZ 60.307257 730.822566 0 ] (Code/Settings/:__span-0-381) [ 2066 0 R /XYZ 60.307257 717.422214 0 ] (Code/Settings/:__span-0-382) [ 2066 0 R /XYZ 60.307257 704.021862 0 ] (Code/Settings/:__span-0-383) [ 2066 0 R /XYZ 60.307257 690.621510 0 ] (Code/Settings/:__span-0-384) [ 2066 0 R /XYZ 60.307257 677.221158 0 ] (Code/Settings/:__span-0-385) [ 2066 0 R /XYZ 60.307257 663.820806 0 ] (Code/Settings/:__span-0-386) [ 2066 0 R /XYZ 60.307257 650.420454 0 ] (Code/Settings/:__span-0-387) [ 2066 0 R /XYZ 60.307257 637.020102 0 ] (Code/Settings/:__span-0-388) [ 2066 0 R /XYZ 60.307257 623.619750 0 ] (Code/Settings/:__span-0-389) [ 2066 0 R /XYZ 60.307257 610.219398 0 ] (Code/Settings/:__span-0-39) [ 2050 0 R /XYZ 60.307257 198.422046 0 ] (Code/Settings/:__span-0-390) [ 2066 0 R /XYZ 60.307257 596.819046 0 ] (Code/Settings/:__span-0-391) [ 2066 0 R /XYZ 60.307257 583.418694 0 ] (Code/Settings/:__span-0-392) [ 2066 0 R /XYZ 60.307257 570.018342 0 ] (Code/Settings/:__span-0-393) [ 2066 0 R /XYZ 60.307257 529.817286 0 ] (Code/Settings/:__span-0-394) [ 2066 0 R /XYZ 60.307257 516.416934 0 ] (Code/Settings/:__span-0-395) [ 2066 0 R /XYZ 60.307257 503.016582 0 ] (Code/Settings/:__span-0-396) [ 2066 0 R /XYZ 60.307257 462.815526 0 ] (Code/Settings/:__span-0-397) [ 2066 0 R /XYZ 60.307257 449.415174 0 ] (Code/Settings/:__span-0-398) [ 2066 0 R /XYZ 60.307257 436.014822 0 ] (Code/Settings/:__span-0-399) [ 2066 0 R /XYZ 60.307257 395.813766 0 ] (Code/Settings/:__span-0-4) [ 2050 0 R /XYZ 60.307257 667.434366 0 ] (Code/Settings/:__span-0-40) [ 2050 0 R /XYZ 60.307257 185.021694 0 ] (Code/Settings/:__span-0-400) [ 2066 0 R /XYZ 60.307257 382.413414 0 ] (Code/Settings/:__span-0-401) [ 2066 0 R /XYZ 60.307257 369.013062 0 ] (Code/Settings/:__span-0-402) [ 2066 0 R /XYZ 60.307257 342.212358 0 ] (Code/Settings/:__span-0-403) [ 2066 0 R /XYZ 60.307257 328.812006 0 ] (Code/Settings/:__span-0-404) [ 2066 0 R /XYZ 60.307257 315.411654 0 ] (Code/Settings/:__span-0-405) [ 2066 0 R /XYZ 60.307257 288.610950 0 ] (Code/Settings/:__span-0-406) [ 2066 0 R /XYZ 60.307257 275.210598 0 ] (Code/Settings/:__span-0-407) [ 2066 0 R /XYZ 60.307257 261.810246 0 ] (Code/Settings/:__span-0-408) [ 2066 0 R /XYZ 60.307257 235.009542 0 ] (Code/Settings/:__span-0-409) [ 2066 0 R /XYZ 60.307257 221.609190 0 ] (Code/Settings/:__span-0-41) [ 2050 0 R /XYZ 60.307257 158.220990 0 ] (Code/Settings/:__span-0-410) [ 2066 0 R /XYZ 60.307257 208.208838 0 ] (Code/Settings/:__span-0-411) [ 2066 0 R /XYZ 60.307257 181.408134 0 ] (Code/Settings/:__span-0-412) [ 2066 0 R /XYZ 60.307257 168.007782 0 ] (Code/Settings/:__span-0-413) [ 2066 0 R /XYZ 60.307257 154.607430 0 ] (Code/Settings/:__span-0-414) [ 2066 0 R /XYZ 60.307257 127.806726 0 ] (Code/Settings/:__span-0-415) [ 2066 0 R /XYZ 60.307257 114.406374 0 ] (Code/Settings/:__span-0-416) [ 2066 0 R /XYZ 60.307257 101.006022 0 ] (Code/Settings/:__span-0-417) [ 2066 0 R /XYZ 60.307257 87.605670 0 ] (Code/Settings/:__span-0-418) [ 2068 0 R /XYZ 60.307257 771.023622 0 ] (Code/Settings/:__span-0-419) [ 2068 0 R /XYZ 60.307257 757.623270 0 ] (Code/Settings/:__span-0-42) [ 2050 0 R /XYZ 60.307257 131.420286 0 ] (Code/Settings/:__span-0-420) [ 2068 0 R /XYZ 60.307257 744.222918 0 ] (Code/Settings/:__span-0-421) [ 2068 0 R /XYZ 60.307257 730.822566 0 ] (Code/Settings/:__span-0-422) [ 2068 0 R /XYZ 60.307257 717.422214 0 ] (Code/Settings/:__span-0-423) [ 2068 0 R /XYZ 60.307257 704.021862 0 ] (Code/Settings/:__span-0-424) [ 2068 0 R /XYZ 60.307257 690.621510 0 ] (Code/Settings/:__span-0-425) [ 2068 0 R /XYZ 60.307257 677.221158 0 ] (Code/Settings/:__span-0-426) [ 2068 0 R /XYZ 60.307257 663.820806 0 ] (Code/Settings/:__span-0-427) [ 2068 0 R /XYZ 60.307257 650.420454 0 ] (Code/Settings/:__span-0-428) [ 2068 0 R /XYZ 60.307257 637.020102 0 ] (Code/Settings/:__span-0-429) [ 2068 0 R /XYZ 60.307257 623.619750 0 ] (Code/Settings/:__span-0-43) [ 2050 0 R /XYZ 60.307257 104.619582 0 ] (Code/Settings/:__span-0-430) [ 2068 0 R /XYZ 60.307257 610.219398 0 ] (Code/Settings/:__span-0-431) [ 2068 0 R /XYZ 60.307257 596.819046 0 ] (Code/Settings/:__span-0-432) [ 2068 0 R /XYZ 60.307257 583.418694 0 ] (Code/Settings/:__span-0-433) [ 2068 0 R /XYZ 60.307257 570.018342 0 ] (Code/Settings/:__span-0-434) [ 2068 0 R /XYZ 60.307257 556.617990 0 ] (Code/Settings/:__span-0-435) [ 2068 0 R /XYZ 60.307257 543.217638 0 ] (Code/Settings/:__span-0-436) [ 2068 0 R /XYZ 60.307257 529.817286 0 ] (Code/Settings/:__span-0-437) [ 2068 0 R /XYZ 60.307257 516.416934 0 ] (Code/Settings/:__span-0-438) [ 2068 0 R /XYZ 60.307257 503.016582 0 ] (Code/Settings/:__span-0-439) [ 2068 0 R /XYZ 60.307257 489.616230 0 ] (Code/Settings/:__span-0-44) [ 2050 0 R /XYZ 60.307257 91.219230 0 ] (Code/Settings/:__span-0-440) [ 2068 0 R /XYZ 60.307257 476.215878 0 ] (Code/Settings/:__span-0-441) [ 2068 0 R /XYZ 60.307257 462.815526 0 ] (Code/Settings/:__span-0-442) [ 2068 0 R /XYZ 60.307257 422.614470 0 ] (Code/Settings/:__span-0-443) [ 2068 0 R /XYZ 60.307257 409.214118 0 ] (Code/Settings/:__span-0-444) [ 2068 0 R /XYZ 60.307257 395.813766 0 ] (Code/Settings/:__span-0-445) [ 2068 0 R /XYZ 60.307257 382.413414 0 ] (Code/Settings/:__span-0-446) [ 2068 0 R /XYZ 60.307257 369.013062 0 ] (Code/Settings/:__span-0-447) [ 2068 0 R /XYZ 60.307257 355.612710 0 ] (Code/Settings/:__span-0-448) [ 2068 0 R /XYZ 60.307257 342.212358 0 ] (Code/Settings/:__span-0-449) [ 2068 0 R /XYZ 60.307257 328.812006 0 ] (Code/Settings/:__span-0-45) [ 2052 0 R /XYZ 60.307257 771.023622 0 ] (Code/Settings/:__span-0-450) [ 2068 0 R /XYZ 60.307257 315.411654 0 ] (Code/Settings/:__span-0-451) [ 2068 0 R /XYZ 60.307257 302.011302 0 ] (Code/Settings/:__span-0-452) [ 2068 0 R /XYZ 60.307257 288.610950 0 ] (Code/Settings/:__span-0-453) [ 2068 0 R /XYZ 60.307257 261.810246 0 ] (Code/Settings/:__span-0-454) [ 2068 0 R /XYZ 60.307257 248.409894 0 ] (Code/Settings/:__span-0-455) [ 2068 0 R /XYZ 60.307257 235.009542 0 ] (Code/Settings/:__span-0-456) [ 2068 0 R /XYZ 60.307257 221.609190 0 ] (Code/Settings/:__span-0-457) [ 2068 0 R /XYZ 60.307257 208.208838 0 ] (Code/Settings/:__span-0-458) [ 2068 0 R /XYZ 60.307257 194.808486 0 ] (Code/Settings/:__span-0-459) [ 2068 0 R /XYZ 60.307257 181.408134 0 ] (Code/Settings/:__span-0-46) [ 2052 0 R /XYZ 60.307257 757.623270 0 ] (Code/Settings/:__span-0-460) [ 2068 0 R /XYZ 60.307257 168.007782 0 ] (Code/Settings/:__span-0-461) [ 2068 0 R /XYZ 60.307257 154.607430 0 ] (Code/Settings/:__span-0-462) [ 2068 0 R /XYZ 60.307257 141.207078 0 ] (Code/Settings/:__span-0-463) [ 2068 0 R /XYZ 60.307257 127.806726 0 ] (Code/Settings/:__span-0-464) [ 2068 0 R /XYZ 60.307257 114.406374 0 ] (Code/Settings/:__span-0-465) [ 2068 0 R /XYZ 60.307257 101.006022 0 ] (Code/Settings/:__span-0-466) [ 2068 0 R /XYZ 60.307257 87.605670 0 ] (Code/Settings/:__span-0-467) [ 2070 0 R /XYZ 60.307257 771.023622 0 ] (Code/Settings/:__span-0-468) [ 2070 0 R /XYZ 60.307257 757.623270 0 ] (Code/Settings/:__span-0-469) [ 2070 0 R /XYZ 60.307257 744.222918 0 ] (Code/Settings/:__span-0-47) [ 2052 0 R /XYZ 60.307257 744.222918 0 ] (Code/Settings/:__span-0-470) [ 2070 0 R /XYZ 60.307257 730.822566 0 ] (Code/Settings/:__span-0-471) [ 2070 0 R /XYZ 60.307257 717.422214 0 ] (Code/Settings/:__span-0-472) [ 2070 0 R /XYZ 60.307257 704.021862 0 ] (Code/Settings/:__span-0-473) [ 2070 0 R /XYZ 60.307257 690.621510 0 ] (Code/Settings/:__span-0-474) [ 2070 0 R /XYZ 60.307257 677.221158 0 ] (Code/Settings/:__span-0-475) [ 2070 0 R /XYZ 60.307257 663.820806 0 ] (Code/Settings/:__span-0-476) [ 2070 0 R /XYZ 60.307257 650.420454 0 ] (Code/Settings/:__span-0-477) [ 2070 0 R /XYZ 60.307257 637.020102 0 ] (Code/Settings/:__span-0-478) [ 2070 0 R /XYZ 60.307257 623.619750 0 ] (Code/Settings/:__span-0-479) [ 2070 0 R /XYZ 60.307257 610.219398 0 ] (Code/Settings/:__span-0-48) [ 2052 0 R /XYZ 60.307257 730.822566 0 ] (Code/Settings/:__span-0-480) [ 2070 0 R /XYZ 60.307257 596.819046 0 ] (Code/Settings/:__span-0-481) [ 2070 0 R /XYZ 60.307257 583.418694 0 ] (Code/Settings/:__span-0-482) [ 2070 0 R /XYZ 60.307257 570.018342 0 ] (Code/Settings/:__span-0-483) [ 2070 0 R /XYZ 60.307257 556.617990 0 ] (Code/Settings/:__span-0-484) [ 2070 0 R /XYZ 60.307257 543.217638 0 ] (Code/Settings/:__span-0-485) [ 2070 0 R /XYZ 60.307257 529.817286 0 ] (Code/Settings/:__span-0-486) [ 2070 0 R /XYZ 60.307257 516.416934 0 ] (Code/Settings/:__span-0-487) [ 2070 0 R /XYZ 60.307257 503.016582 0 ] (Code/Settings/:__span-0-488) [ 2070 0 R /XYZ 60.307257 489.616230 0 ] (Code/Settings/:__span-0-489) [ 2070 0 R /XYZ 60.307257 476.215878 0 ] (Code/Settings/:__span-0-49) [ 2052 0 R /XYZ 60.307257 717.422214 0 ] (Code/Settings/:__span-0-490) [ 2070 0 R /XYZ 60.307257 462.815526 0 ] (Code/Settings/:__span-0-491) [ 2070 0 R /XYZ 60.307257 449.415174 0 ] (Code/Settings/:__span-0-492) [ 2070 0 R /XYZ 60.307257 436.014822 0 ] (Code/Settings/:__span-0-493) [ 2070 0 R /XYZ 60.307257 409.214118 0 ] (Code/Settings/:__span-0-494) [ 2070 0 R /XYZ 60.307257 395.813766 0 ] (Code/Settings/:__span-0-495) [ 2070 0 R /XYZ 60.307257 382.413414 0 ] (Code/Settings/:__span-0-496) [ 2070 0 R /XYZ 60.307257 369.013062 0 ] (Code/Settings/:__span-0-497) [ 2070 0 R /XYZ 60.307257 355.612710 0 ] (Code/Settings/:__span-0-498) [ 2070 0 R /XYZ 60.307257 342.212358 0 ] (Code/Settings/:__span-0-499) [ 2070 0 R /XYZ 60.307257 328.812006 0 ] (Code/Settings/:__span-0-5) [ 2050 0 R /XYZ 60.307257 654.034014 0 ] (Code/Settings/:__span-0-50) [ 2052 0 R /XYZ 60.307257 704.021862 0 ] (Code/Settings/:__span-0-500) [ 2070 0 R /XYZ 60.307257 302.011302 0 ] (Code/Settings/:__span-0-501) [ 2070 0 R /XYZ 60.307257 288.610950 0 ] (Code/Settings/:__span-0-502) [ 2070 0 R /XYZ 60.307257 275.210598 0 ] (Code/Settings/:__span-0-503) [ 2070 0 R /XYZ 60.307257 261.810246 0 ] (Code/Settings/:__span-0-504) [ 2070 0 R /XYZ 60.307257 248.409894 0 ] (Code/Settings/:__span-0-505) [ 2070 0 R /XYZ 60.307257 235.009542 0 ] (Code/Settings/:__span-0-506) [ 2070 0 R /XYZ 60.307257 221.609190 0 ] (Code/Settings/:__span-0-507) [ 2070 0 R /XYZ 60.307257 208.208838 0 ] (Code/Settings/:__span-0-508) [ 2070 0 R /XYZ 60.307257 194.808486 0 ] (Code/Settings/:__span-0-509) [ 2070 0 R /XYZ 60.307257 181.408134 0 ] (Code/Settings/:__span-0-51) [ 2052 0 R /XYZ 60.307257 690.621510 0 ] (Code/Settings/:__span-0-510) [ 2070 0 R /XYZ 60.307257 168.007782 0 ] (Code/Settings/:__span-0-511) [ 2070 0 R /XYZ 60.307257 154.607430 0 ] (Code/Settings/:__span-0-512) [ 2070 0 R /XYZ 60.307257 141.207078 0 ] (Code/Settings/:__span-0-513) [ 2070 0 R /XYZ 60.307257 127.806726 0 ] (Code/Settings/:__span-0-514) [ 2070 0 R /XYZ 60.307257 101.006022 0 ] (Code/Settings/:__span-0-515) [ 2072 0 R /XYZ 60.307257 771.023622 0 ] (Code/Settings/:__span-0-516) [ 2072 0 R /XYZ 60.307257 757.623270 0 ] (Code/Settings/:__span-0-517) [ 2072 0 R /XYZ 60.307257 730.822566 0 ] (Code/Settings/:__span-0-518) [ 2072 0 R /XYZ 60.307257 717.422214 0 ] (Code/Settings/:__span-0-519) [ 2072 0 R /XYZ 60.307257 704.021862 0 ] (Code/Settings/:__span-0-52) [ 2052 0 R /XYZ 60.307257 677.221158 0 ] (Code/Settings/:__span-0-520) [ 2072 0 R /XYZ 60.307257 690.621510 0 ] (Code/Settings/:__span-0-521) [ 2072 0 R /XYZ 60.307257 677.221158 0 ] (Code/Settings/:__span-0-522) [ 2072 0 R /XYZ 60.307257 663.820806 0 ] (Code/Settings/:__span-0-523) [ 2072 0 R /XYZ 60.307257 650.420454 0 ] (Code/Settings/:__span-0-524) [ 2072 0 R /XYZ 60.307257 637.020102 0 ] (Code/Settings/:__span-0-525) [ 2072 0 R /XYZ 60.307257 623.619750 0 ] (Code/Settings/:__span-0-526) [ 2072 0 R /XYZ 60.307257 610.219398 0 ] (Code/Settings/:__span-0-527) [ 2072 0 R /XYZ 60.307257 596.819046 0 ] (Code/Settings/:__span-0-528) [ 2072 0 R /XYZ 60.307257 583.418694 0 ] (Code/Settings/:__span-0-529) [ 2072 0 R /XYZ 60.307257 570.018342 0 ] (Code/Settings/:__span-0-53) [ 2052 0 R /XYZ 60.307257 663.820806 0 ] (Code/Settings/:__span-0-530) [ 2072 0 R /XYZ 60.307257 543.217638 0 ] (Code/Settings/:__span-0-531) [ 2072 0 R /XYZ 60.307257 529.817286 0 ] (Code/Settings/:__span-0-532) [ 2072 0 R /XYZ 60.307257 516.416934 0 ] (Code/Settings/:__span-0-533) [ 2072 0 R /XYZ 60.307257 503.016582 0 ] (Code/Settings/:__span-0-534) [ 2072 0 R /XYZ 60.307257 489.616230 0 ] (Code/Settings/:__span-0-535) [ 2072 0 R /XYZ 60.307257 476.215878 0 ] (Code/Settings/:__span-0-536) [ 2072 0 R /XYZ 60.307257 462.815526 0 ] (Code/Settings/:__span-0-537) [ 2072 0 R /XYZ 60.307257 449.415174 0 ] (Code/Settings/:__span-0-538) [ 2072 0 R /XYZ 60.307257 436.014822 0 ] (Code/Settings/:__span-0-539) [ 2072 0 R /XYZ 60.307257 409.214118 0 ] (Code/Settings/:__span-0-54) [ 2052 0 R /XYZ 60.307257 650.420454 0 ] (Code/Settings/:__span-0-540) [ 2072 0 R /XYZ 60.307257 382.413414 0 ] (Code/Settings/:__span-0-541) [ 2072 0 R /XYZ 60.307257 355.612710 0 ] (Code/Settings/:__span-0-542) [ 2072 0 R /XYZ 60.307257 328.812006 0 ] (Code/Settings/:__span-0-543) [ 2072 0 R /XYZ 60.307257 315.411654 0 ] (Code/Settings/:__span-0-544) [ 2072 0 R /XYZ 60.307257 302.011302 0 ] (Code/Settings/:__span-0-545) [ 2072 0 R /XYZ 60.307257 288.610950 0 ] (Code/Settings/:__span-0-546) [ 2072 0 R /XYZ 60.307257 275.210598 0 ] (Code/Settings/:__span-0-547) [ 2072 0 R /XYZ 60.307257 261.810246 0 ] (Code/Settings/:__span-0-548) [ 2072 0 R /XYZ 60.307257 248.409894 0 ] (Code/Settings/:__span-0-549) [ 2072 0 R /XYZ 60.307257 235.009542 0 ] (Code/Settings/:__span-0-55) [ 2052 0 R /XYZ 60.307257 637.020102 0 ] (Code/Settings/:__span-0-550) [ 2072 0 R /XYZ 60.307257 221.609190 0 ] (Code/Settings/:__span-0-551) [ 2072 0 R /XYZ 60.307257 208.208838 0 ] (Code/Settings/:__span-0-552) [ 2072 0 R /XYZ 60.307257 194.808486 0 ] (Code/Settings/:__span-0-553) [ 2072 0 R /XYZ 60.307257 181.408134 0 ] (Code/Settings/:__span-0-554) [ 2072 0 R /XYZ 60.307257 168.007782 0 ] (Code/Settings/:__span-0-555) [ 2072 0 R /XYZ 60.307257 154.607430 0 ] (Code/Settings/:__span-0-556) [ 2072 0 R /XYZ 60.307257 141.207078 0 ] (Code/Settings/:__span-0-557) [ 2072 0 R /XYZ 60.307257 127.806726 0 ] (Code/Settings/:__span-0-558) [ 2072 0 R /XYZ 60.307257 114.406374 0 ] (Code/Settings/:__span-0-559) [ 2072 0 R /XYZ 60.307257 101.006022 0 ] (Code/Settings/:__span-0-56) [ 2052 0 R /XYZ 60.307257 623.619750 0 ] (Code/Settings/:__span-0-560) [ 2072 0 R /XYZ 60.307257 87.605670 0 ] (Code/Settings/:__span-0-561) [ 2074 0 R /XYZ 60.307257 771.023622 0 ] (Code/Settings/:__span-0-562) [ 2074 0 R /XYZ 60.307257 744.222918 0 ] (Code/Settings/:__span-0-563) [ 2074 0 R /XYZ 60.307257 730.822566 0 ] (Code/Settings/:__span-0-564) [ 2074 0 R /XYZ 60.307257 717.422214 0 ] (Code/Settings/:__span-0-565) [ 2074 0 R /XYZ 60.307257 704.021862 0 ] (Code/Settings/:__span-0-566) [ 2074 0 R /XYZ 60.307257 690.621510 0 ] (Code/Settings/:__span-0-567) [ 2074 0 R /XYZ 60.307257 663.820806 0 ] (Code/Settings/:__span-0-568) [ 2074 0 R /XYZ 60.307257 650.420454 0 ] (Code/Settings/:__span-0-569) [ 2074 0 R /XYZ 60.307257 637.020102 0 ] (Code/Settings/:__span-0-57) [ 2052 0 R /XYZ 60.307257 610.219398 0 ] (Code/Settings/:__span-0-570) [ 2074 0 R /XYZ 60.307257 623.619750 0 ] (Code/Settings/:__span-0-571) [ 2074 0 R /XYZ 60.307257 610.219398 0 ] (Code/Settings/:__span-0-572) [ 2074 0 R /XYZ 60.307257 596.819046 0 ] (Code/Settings/:__span-0-573) [ 2074 0 R /XYZ 60.307257 583.418694 0 ] (Code/Settings/:__span-0-574) [ 2074 0 R /XYZ 60.307257 570.018342 0 ] (Code/Settings/:__span-0-575) [ 2074 0 R /XYZ 60.307257 556.617990 0 ] (Code/Settings/:__span-0-576) [ 2074 0 R /XYZ 60.307257 543.217638 0 ] (Code/Settings/:__span-0-577) [ 2074 0 R /XYZ 60.307257 516.416934 0 ] (Code/Settings/:__span-0-578) [ 2074 0 R /XYZ 60.307257 489.616230 0 ] (Code/Settings/:__span-0-579) [ 2074 0 R /XYZ 60.307257 476.215878 0 ] (Code/Settings/:__span-0-58) [ 2052 0 R /XYZ 60.307257 596.819046 0 ] (Code/Settings/:__span-0-580) [ 2074 0 R /XYZ 60.307257 462.815526 0 ] (Code/Settings/:__span-0-581) [ 2074 0 R /XYZ 60.307257 449.415174 0 ] (Code/Settings/:__span-0-582) [ 2074 0 R /XYZ 60.307257 436.014822 0 ] (Code/Settings/:__span-0-583) [ 2074 0 R /XYZ 60.307257 409.214118 0 ] (Code/Settings/:__span-0-584) [ 2074 0 R /XYZ 60.307257 395.813766 0 ] (Code/Settings/:__span-0-585) [ 2074 0 R /XYZ 60.307257 382.413414 0 ] (Code/Settings/:__span-0-586) [ 2074 0 R /XYZ 60.307257 369.013062 0 ] (Code/Settings/:__span-0-587) [ 2074 0 R /XYZ 60.307257 355.612710 0 ] (Code/Settings/:__span-0-59) [ 2052 0 R /XYZ 60.307257 570.018342 0 ] (Code/Settings/:__span-0-6) [ 2050 0 R /XYZ 60.307257 640.633662 0 ] (Code/Settings/:__span-0-60) [ 2052 0 R /XYZ 60.307257 556.617990 0 ] (Code/Settings/:__span-0-61) [ 2052 0 R /XYZ 60.307257 543.217638 0 ] (Code/Settings/:__span-0-62) [ 2052 0 R /XYZ 60.307257 529.817286 0 ] (Code/Settings/:__span-0-63) [ 2052 0 R /XYZ 60.307257 516.416934 0 ] (Code/Settings/:__span-0-64) [ 2052 0 R /XYZ 60.307257 503.016582 0 ] (Code/Settings/:__span-0-65) [ 2052 0 R /XYZ 60.307257 489.616230 0 ] (Code/Settings/:__span-0-66) [ 2052 0 R /XYZ 60.307257 476.215878 0 ] (Code/Settings/:__span-0-67) [ 2052 0 R /XYZ 60.307257 462.815526 0 ] (Code/Settings/:__span-0-68) [ 2052 0 R /XYZ 60.307257 449.415174 0 ] (Code/Settings/:__span-0-69) [ 2052 0 R /XYZ 60.307257 436.014822 0 ] (Code/Settings/:__span-0-7) [ 2050 0 R /XYZ 60.307257 627.233310 0 ] (Code/Settings/:__span-0-70) [ 2052 0 R /XYZ 60.307257 422.614470 0 ] (Code/Settings/:__span-0-71) [ 2052 0 R /XYZ 60.307257 409.214118 0 ] (Code/Settings/:__span-0-72) [ 2052 0 R /XYZ 60.307257 395.813766 0 ] (Code/Settings/:__span-0-73) [ 2052 0 R /XYZ 60.307257 382.413414 0 ] (Code/Settings/:__span-0-74) [ 2052 0 R /XYZ 60.307257 342.212358 0 ] (Code/Settings/:__span-0-75) [ 2052 0 R /XYZ 60.307257 315.411654 0 ] (Code/Settings/:__span-0-76) [ 2052 0 R /XYZ 60.307257 275.210598 0 ] (Code/Settings/:__span-0-77) [ 2052 0 R /XYZ 60.307257 248.409894 0 ] (Code/Settings/:__span-0-78) [ 2052 0 R /XYZ 60.307257 221.609190 0 ] (Code/Settings/:__span-0-79) [ 2052 0 R /XYZ 60.307257 194.808486 0 ] (Code/Settings/:__span-0-8) [ 2050 0 R /XYZ 60.307257 613.832958 0 ] (Code/Settings/:__span-0-80) [ 2052 0 R /XYZ 60.307257 168.007782 0 ] (Code/Settings/:__span-0-81) [ 2052 0 R /XYZ 60.307257 154.607430 0 ] (Code/Settings/:__span-0-82) [ 2052 0 R /XYZ 60.307257 127.806726 0 ] (Code/Settings/:__span-0-83) [ 2052 0 R /XYZ 60.307257 114.406374 0 ] (Code/Settings/:__span-0-84) [ 2052 0 R /XYZ 60.307257 101.006022 0 ] (Code/Settings/:__span-0-85) [ 2054 0 R /XYZ 60.307257 771.023622 0 ] (Code/Settings/:__span-0-86) [ 2054 0 R /XYZ 60.307257 744.222918 0 ] (Code/Settings/:__span-0-87) [ 2054 0 R /XYZ 60.307257 730.822566 0 ] (Code/Settings/:__span-0-88) [ 2054 0 R /XYZ 60.307257 717.422214 0 ] (Code/Settings/:__span-0-89) [ 2054 0 R /XYZ 60.307257 704.021862 0 ] (Code/Settings/:__span-0-9) [ 2050 0 R /XYZ 60.307257 600.432606 0 ] (Code/Settings/:__span-0-90) [ 2054 0 R /XYZ 60.307257 690.621510 0 ] (Code/Settings/:__span-0-91) [ 2054 0 R /XYZ 60.307257 677.221158 0 ] (Code/Settings/:__span-0-92) [ 2054 0 R /XYZ 60.307257 663.820806 0 ] (Code/Settings/:__span-0-93) [ 2054 0 R /XYZ 60.307257 650.420454 0 ] (Code/Settings/:__span-0-94) [ 2054 0 R /XYZ 60.307257 637.020102 0 ] (Code/Settings/:__span-0-95) [ 2054 0 R /XYZ 60.307257 623.619750 0 ] (Code/Settings/:__span-0-96) [ 2054 0 R /XYZ 60.307257 596.819046 0 ] (Code/Settings/:__span-0-97) [ 2054 0 R /XYZ 60.307257 583.418694 0 ] (Code/Settings/:__span-0-98) [ 2054 0 R /XYZ 60.307257 570.018342 0 ] (Code/Settings/:__span-0-99) [ 2054 0 R /XYZ 60.307257 556.617990 0 ] (Code/Settings/:settingscs) [ 2050 0 R /XYZ 39.386457 747.563622 0 ] (Code/SqliteStorage/:) [ 1944 0 R /XYZ 39.386457 747.563622 0 ] (Code/SqliteStorage/:__span-0-1) [ 1944 0 R /XYZ 60.307257 707.635422 0 ] (Code/SqliteStorage/:__span-0-10) [ 1944 0 R /XYZ 60.307257 587.032254 0 ] (Code/SqliteStorage/:__span-0-100) [ 1948 0 R /XYZ 60.307257 704.021862 0 ] (Code/SqliteStorage/:__span-0-101) [ 1948 0 R /XYZ 60.307257 690.621510 0 ] (Code/SqliteStorage/:__span-0-102) [ 1948 0 R /XYZ 60.307257 677.221158 0 ] (Code/SqliteStorage/:__span-0-103) [ 1948 0 R /XYZ 60.307257 663.820806 0 ] (Code/SqliteStorage/:__span-0-104) [ 1948 0 R /XYZ 60.307257 650.420454 0 ] (Code/SqliteStorage/:__span-0-105) [ 1948 0 R /XYZ 60.307257 637.020102 0 ] (Code/SqliteStorage/:__span-0-106) [ 1948 0 R /XYZ 60.307257 623.619750 0 ] (Code/SqliteStorage/:__span-0-107) [ 1948 0 R /XYZ 60.307257 610.219398 0 ] (Code/SqliteStorage/:__span-0-108) [ 1948 0 R /XYZ 60.307257 596.819046 0 ] (Code/SqliteStorage/:__span-0-109) [ 1948 0 R /XYZ 60.307257 570.018342 0 ] (Code/SqliteStorage/:__span-0-11) [ 1944 0 R /XYZ 60.307257 573.631902 0 ] (Code/SqliteStorage/:__span-0-110) [ 1948 0 R /XYZ 60.307257 556.617990 0 ] (Code/SqliteStorage/:__span-0-111) [ 1948 0 R /XYZ 60.307257 543.217638 0 ] (Code/SqliteStorage/:__span-0-112) [ 1948 0 R /XYZ 60.307257 529.817286 0 ] (Code/SqliteStorage/:__span-0-113) [ 1948 0 R /XYZ 60.307257 516.416934 0 ] (Code/SqliteStorage/:__span-0-114) [ 1948 0 R /XYZ 60.307257 503.016582 0 ] (Code/SqliteStorage/:__span-0-115) [ 1948 0 R /XYZ 60.307257 489.616230 0 ] (Code/SqliteStorage/:__span-0-116) [ 1948 0 R /XYZ 60.307257 476.215878 0 ] (Code/SqliteStorage/:__span-0-117) [ 1948 0 R /XYZ 60.307257 462.815526 0 ] (Code/SqliteStorage/:__span-0-118) [ 1948 0 R /XYZ 60.307257 449.415174 0 ] (Code/SqliteStorage/:__span-0-119) [ 1948 0 R /XYZ 60.307257 436.014822 0 ] (Code/SqliteStorage/:__span-0-12) [ 1944 0 R /XYZ 60.307257 560.231550 0 ] (Code/SqliteStorage/:__span-0-120) [ 1948 0 R /XYZ 60.307257 409.214118 0 ] (Code/SqliteStorage/:__span-0-121) [ 1948 0 R /XYZ 60.307257 395.813766 0 ] (Code/SqliteStorage/:__span-0-122) [ 1948 0 R /XYZ 60.307257 382.413414 0 ] (Code/SqliteStorage/:__span-0-123) [ 1948 0 R /XYZ 60.307257 369.013062 0 ] (Code/SqliteStorage/:__span-0-124) [ 1948 0 R /XYZ 60.307257 355.612710 0 ] (Code/SqliteStorage/:__span-0-125) [ 1948 0 R /XYZ 60.307257 342.212358 0 ] (Code/SqliteStorage/:__span-0-126) [ 1948 0 R /XYZ 60.307257 328.812006 0 ] (Code/SqliteStorage/:__span-0-127) [ 1948 0 R /XYZ 60.307257 315.411654 0 ] (Code/SqliteStorage/:__span-0-128) [ 1948 0 R /XYZ 60.307257 302.011302 0 ] (Code/SqliteStorage/:__span-0-129) [ 1948 0 R /XYZ 60.307257 288.610950 0 ] (Code/SqliteStorage/:__span-0-13) [ 1944 0 R /XYZ 60.307257 546.831198 0 ] (Code/SqliteStorage/:__span-0-130) [ 1948 0 R /XYZ 60.307257 275.210598 0 ] (Code/SqliteStorage/:__span-0-131) [ 1948 0 R /XYZ 60.307257 261.810246 0 ] (Code/SqliteStorage/:__span-0-132) [ 1948 0 R /XYZ 60.307257 248.409894 0 ] (Code/SqliteStorage/:__span-0-133) [ 1948 0 R /XYZ 60.307257 235.009542 0 ] (Code/SqliteStorage/:__span-0-134) [ 1948 0 R /XYZ 60.307257 221.609190 0 ] (Code/SqliteStorage/:__span-0-135) [ 1948 0 R /XYZ 60.307257 208.208838 0 ] (Code/SqliteStorage/:__span-0-136) [ 1948 0 R /XYZ 60.307257 194.808486 0 ] (Code/SqliteStorage/:__span-0-137) [ 1948 0 R /XYZ 60.307257 168.007782 0 ] (Code/SqliteStorage/:__span-0-138) [ 1948 0 R /XYZ 60.307257 154.607430 0 ] (Code/SqliteStorage/:__span-0-139) [ 1948 0 R /XYZ 60.307257 141.207078 0 ] (Code/SqliteStorage/:__span-0-14) [ 1944 0 R /XYZ 60.307257 533.430846 0 ] (Code/SqliteStorage/:__span-0-140) [ 1948 0 R /XYZ 60.307257 127.806726 0 ] (Code/SqliteStorage/:__span-0-141) [ 1948 0 R /XYZ 60.307257 114.406374 0 ] (Code/SqliteStorage/:__span-0-142) [ 1948 0 R /XYZ 60.307257 101.006022 0 ] (Code/SqliteStorage/:__span-0-143) [ 1950 0 R /XYZ 60.307257 771.023622 0 ] (Code/SqliteStorage/:__span-0-144) [ 1950 0 R /XYZ 60.307257 757.623270 0 ] (Code/SqliteStorage/:__span-0-145) [ 1950 0 R /XYZ 60.307257 730.822566 0 ] (Code/SqliteStorage/:__span-0-146) [ 1950 0 R /XYZ 60.307257 717.422214 0 ] (Code/SqliteStorage/:__span-0-147) [ 1950 0 R /XYZ 60.307257 704.021862 0 ] (Code/SqliteStorage/:__span-0-148) [ 1950 0 R /XYZ 60.307257 690.621510 0 ] (Code/SqliteStorage/:__span-0-149) [ 1950 0 R /XYZ 60.307257 677.221158 0 ] (Code/SqliteStorage/:__span-0-15) [ 1944 0 R /XYZ 60.307257 520.030494 0 ] (Code/SqliteStorage/:__span-0-150) [ 1950 0 R /XYZ 60.307257 663.820806 0 ] (Code/SqliteStorage/:__span-0-151) [ 1950 0 R /XYZ 60.307257 637.020102 0 ] (Code/SqliteStorage/:__span-0-152) [ 1950 0 R /XYZ 60.307257 623.619750 0 ] (Code/SqliteStorage/:__span-0-153) [ 1950 0 R /XYZ 60.307257 610.219398 0 ] (Code/SqliteStorage/:__span-0-154) [ 1950 0 R /XYZ 60.307257 596.819046 0 ] (Code/SqliteStorage/:__span-0-155) [ 1950 0 R /XYZ 60.307257 583.418694 0 ] (Code/SqliteStorage/:__span-0-156) [ 1950 0 R /XYZ 60.307257 570.018342 0 ] (Code/SqliteStorage/:__span-0-157) [ 1950 0 R /XYZ 60.307257 556.617990 0 ] (Code/SqliteStorage/:__span-0-158) [ 1950 0 R /XYZ 60.307257 543.217638 0 ] (Code/SqliteStorage/:__span-0-159) [ 1950 0 R /XYZ 60.307257 529.817286 0 ] (Code/SqliteStorage/:__span-0-16) [ 1944 0 R /XYZ 60.307257 506.630142 0 ] (Code/SqliteStorage/:__span-0-160) [ 1950 0 R /XYZ 60.307257 516.416934 0 ] (Code/SqliteStorage/:__span-0-161) [ 1950 0 R /XYZ 60.307257 503.016582 0 ] (Code/SqliteStorage/:__span-0-162) [ 1950 0 R /XYZ 60.307257 489.616230 0 ] (Code/SqliteStorage/:__span-0-163) [ 1950 0 R /XYZ 60.307257 476.215878 0 ] (Code/SqliteStorage/:__span-0-164) [ 1950 0 R /XYZ 60.307257 462.815526 0 ] (Code/SqliteStorage/:__span-0-165) [ 1950 0 R /XYZ 60.307257 449.415174 0 ] (Code/SqliteStorage/:__span-0-166) [ 1950 0 R /XYZ 60.307257 436.014822 0 ] (Code/SqliteStorage/:__span-0-167) [ 1950 0 R /XYZ 60.307257 422.614470 0 ] (Code/SqliteStorage/:__span-0-168) [ 1950 0 R /XYZ 60.307257 409.214118 0 ] (Code/SqliteStorage/:__span-0-169) [ 1950 0 R /XYZ 60.307257 382.413414 0 ] (Code/SqliteStorage/:__span-0-17) [ 1944 0 R /XYZ 60.307257 493.229790 0 ] (Code/SqliteStorage/:__span-0-170) [ 1950 0 R /XYZ 60.307257 369.013062 0 ] (Code/SqliteStorage/:__span-0-171) [ 1950 0 R /XYZ 60.307257 355.612710 0 ] (Code/SqliteStorage/:__span-0-172) [ 1950 0 R /XYZ 60.307257 342.212358 0 ] (Code/SqliteStorage/:__span-0-173) [ 1950 0 R /XYZ 60.307257 328.812006 0 ] (Code/SqliteStorage/:__span-0-174) [ 1950 0 R /XYZ 60.307257 315.411654 0 ] (Code/SqliteStorage/:__span-0-175) [ 1950 0 R /XYZ 60.307257 302.011302 0 ] (Code/SqliteStorage/:__span-0-176) [ 1950 0 R /XYZ 60.307257 288.610950 0 ] (Code/SqliteStorage/:__span-0-177) [ 1950 0 R /XYZ 60.307257 275.210598 0 ] (Code/SqliteStorage/:__span-0-178) [ 1950 0 R /XYZ 60.307257 261.810246 0 ] (Code/SqliteStorage/:__span-0-179) [ 1950 0 R /XYZ 60.307257 221.609190 0 ] (Code/SqliteStorage/:__span-0-18) [ 1944 0 R /XYZ 60.307257 479.829438 0 ] (Code/SqliteStorage/:__span-0-180) [ 1950 0 R /XYZ 60.307257 194.808486 0 ] (Code/SqliteStorage/:__span-0-181) [ 1950 0 R /XYZ 60.307257 181.408134 0 ] (Code/SqliteStorage/:__span-0-182) [ 1950 0 R /XYZ 60.307257 168.007782 0 ] (Code/SqliteStorage/:__span-0-183) [ 1950 0 R /XYZ 60.307257 141.207078 0 ] (Code/SqliteStorage/:__span-0-184) [ 1950 0 R /XYZ 60.307257 114.406374 0 ] (Code/SqliteStorage/:__span-0-185) [ 1950 0 R /XYZ 60.307257 101.006022 0 ] (Code/SqliteStorage/:__span-0-186) [ 1950 0 R /XYZ 60.307257 87.605670 0 ] (Code/SqliteStorage/:__span-0-187) [ 1952 0 R /XYZ 60.307257 771.023622 0 ] (Code/SqliteStorage/:__span-0-188) [ 1952 0 R /XYZ 60.307257 757.623270 0 ] (Code/SqliteStorage/:__span-0-189) [ 1952 0 R /XYZ 60.307257 744.222918 0 ] (Code/SqliteStorage/:__span-0-19) [ 1944 0 R /XYZ 60.307257 466.429086 0 ] (Code/SqliteStorage/:__span-0-190) [ 1952 0 R /XYZ 60.307257 730.822566 0 ] (Code/SqliteStorage/:__span-0-191) [ 1952 0 R /XYZ 60.307257 717.422214 0 ] (Code/SqliteStorage/:__span-0-192) [ 1952 0 R /XYZ 60.307257 704.021862 0 ] (Code/SqliteStorage/:__span-0-193) [ 1952 0 R /XYZ 60.307257 690.621510 0 ] (Code/SqliteStorage/:__span-0-194) [ 1952 0 R /XYZ 60.307257 677.221158 0 ] (Code/SqliteStorage/:__span-0-195) [ 1952 0 R /XYZ 60.307257 663.820806 0 ] (Code/SqliteStorage/:__span-0-196) [ 1952 0 R /XYZ 60.307257 650.420454 0 ] (Code/SqliteStorage/:__span-0-197) [ 1952 0 R /XYZ 60.307257 637.020102 0 ] (Code/SqliteStorage/:__span-0-198) [ 1952 0 R /XYZ 60.307257 623.619750 0 ] (Code/SqliteStorage/:__span-0-199) [ 1952 0 R /XYZ 60.307257 610.219398 0 ] (Code/SqliteStorage/:__span-0-2) [ 1944 0 R /XYZ 60.307257 694.235070 0 ] (Code/SqliteStorage/:__span-0-20) [ 1944 0 R /XYZ 60.307257 453.028734 0 ] (Code/SqliteStorage/:__span-0-200) [ 1952 0 R /XYZ 60.307257 596.819046 0 ] (Code/SqliteStorage/:__span-0-201) [ 1952 0 R /XYZ 60.307257 570.018342 0 ] (Code/SqliteStorage/:__span-0-202) [ 1952 0 R /XYZ 60.307257 556.617990 0 ] (Code/SqliteStorage/:__span-0-203) [ 1952 0 R /XYZ 60.307257 543.217638 0 ] (Code/SqliteStorage/:__span-0-204) [ 1952 0 R /XYZ 60.307257 529.817286 0 ] (Code/SqliteStorage/:__span-0-205) [ 1952 0 R /XYZ 60.307257 516.416934 0 ] (Code/SqliteStorage/:__span-0-206) [ 1952 0 R /XYZ 60.307257 503.016582 0 ] (Code/SqliteStorage/:__span-0-207) [ 1952 0 R /XYZ 60.307257 489.616230 0 ] (Code/SqliteStorage/:__span-0-208) [ 1952 0 R /XYZ 60.307257 476.215878 0 ] (Code/SqliteStorage/:__span-0-209) [ 1952 0 R /XYZ 60.307257 449.415174 0 ] (Code/SqliteStorage/:__span-0-21) [ 1944 0 R /XYZ 60.307257 439.628382 0 ] (Code/SqliteStorage/:__span-0-210) [ 1952 0 R /XYZ 60.307257 436.014822 0 ] (Code/SqliteStorage/:__span-0-211) [ 1952 0 R /XYZ 60.307257 422.614470 0 ] (Code/SqliteStorage/:__span-0-212) [ 1952 0 R /XYZ 60.307257 409.214118 0 ] (Code/SqliteStorage/:__span-0-213) [ 1952 0 R /XYZ 60.307257 395.813766 0 ] (Code/SqliteStorage/:__span-0-214) [ 1952 0 R /XYZ 60.307257 369.013062 0 ] (Code/SqliteStorage/:__span-0-215) [ 1952 0 R /XYZ 60.307257 355.612710 0 ] (Code/SqliteStorage/:__span-0-216) [ 1952 0 R /XYZ 60.307257 342.212358 0 ] (Code/SqliteStorage/:__span-0-217) [ 1952 0 R /XYZ 60.307257 328.812006 0 ] (Code/SqliteStorage/:__span-0-218) [ 1952 0 R /XYZ 60.307257 315.411654 0 ] (Code/SqliteStorage/:__span-0-219) [ 1952 0 R /XYZ 60.307257 288.610950 0 ] (Code/SqliteStorage/:__span-0-22) [ 1944 0 R /XYZ 60.307257 426.228030 0 ] (Code/SqliteStorage/:__span-0-220) [ 1952 0 R /XYZ 60.307257 275.210598 0 ] (Code/SqliteStorage/:__span-0-221) [ 1952 0 R /XYZ 60.307257 261.810246 0 ] (Code/SqliteStorage/:__span-0-222) [ 1952 0 R /XYZ 60.307257 248.409894 0 ] (Code/SqliteStorage/:__span-0-223) [ 1952 0 R /XYZ 60.307257 235.009542 0 ] (Code/SqliteStorage/:__span-0-224) [ 1952 0 R /XYZ 60.307257 221.609190 0 ] (Code/SqliteStorage/:__span-0-225) [ 1952 0 R /XYZ 60.307257 208.208838 0 ] (Code/SqliteStorage/:__span-0-226) [ 1952 0 R /XYZ 60.307257 194.808486 0 ] (Code/SqliteStorage/:__span-0-227) [ 1952 0 R /XYZ 60.307257 168.007782 0 ] (Code/SqliteStorage/:__span-0-228) [ 1952 0 R /XYZ 60.307257 154.607430 0 ] (Code/SqliteStorage/:__span-0-229) [ 1952 0 R /XYZ 60.307257 141.207078 0 ] (Code/SqliteStorage/:__span-0-23) [ 1944 0 R /XYZ 60.307257 399.427326 0 ] (Code/SqliteStorage/:__span-0-230) [ 1952 0 R /XYZ 60.307257 127.806726 0 ] (Code/SqliteStorage/:__span-0-231) [ 1952 0 R /XYZ 60.307257 114.406374 0 ] (Code/SqliteStorage/:__span-0-232) [ 1952 0 R /XYZ 60.307257 101.006022 0 ] (Code/SqliteStorage/:__span-0-233) [ 1952 0 R /XYZ 60.307257 87.605670 0 ] (Code/SqliteStorage/:__span-0-234) [ 1954 0 R /XYZ 60.307257 771.023622 0 ] (Code/SqliteStorage/:__span-0-235) [ 1954 0 R /XYZ 60.307257 757.623270 0 ] (Code/SqliteStorage/:__span-0-236) [ 1954 0 R /XYZ 60.307257 744.222918 0 ] (Code/SqliteStorage/:__span-0-237) [ 1954 0 R /XYZ 60.307257 730.822566 0 ] (Code/SqliteStorage/:__span-0-238) [ 1954 0 R /XYZ 60.307257 690.621510 0 ] (Code/SqliteStorage/:__span-0-239) [ 1954 0 R /XYZ 60.307257 677.221158 0 ] (Code/SqliteStorage/:__span-0-24) [ 1944 0 R /XYZ 60.307257 386.026974 0 ] (Code/SqliteStorage/:__span-0-240) [ 1954 0 R /XYZ 60.307257 663.820806 0 ] (Code/SqliteStorage/:__span-0-241) [ 1954 0 R /XYZ 60.307257 650.420454 0 ] (Code/SqliteStorage/:__span-0-242) [ 1954 0 R /XYZ 60.307257 637.020102 0 ] (Code/SqliteStorage/:__span-0-243) [ 1954 0 R /XYZ 60.307257 623.619750 0 ] (Code/SqliteStorage/:__span-0-244) [ 1954 0 R /XYZ 60.307257 596.819046 0 ] (Code/SqliteStorage/:__span-0-245) [ 1954 0 R /XYZ 60.307257 583.418694 0 ] (Code/SqliteStorage/:__span-0-246) [ 1954 0 R /XYZ 60.307257 570.018342 0 ] (Code/SqliteStorage/:__span-0-247) [ 1954 0 R /XYZ 60.307257 556.617990 0 ] (Code/SqliteStorage/:__span-0-248) [ 1954 0 R /XYZ 60.307257 543.217638 0 ] (Code/SqliteStorage/:__span-0-249) [ 1954 0 R /XYZ 60.307257 529.817286 0 ] (Code/SqliteStorage/:__span-0-25) [ 1944 0 R /XYZ 60.307257 372.626622 0 ] (Code/SqliteStorage/:__span-0-250) [ 1954 0 R /XYZ 60.307257 516.416934 0 ] (Code/SqliteStorage/:__span-0-251) [ 1954 0 R /XYZ 60.307257 503.016582 0 ] (Code/SqliteStorage/:__span-0-252) [ 1954 0 R /XYZ 60.307257 489.616230 0 ] (Code/SqliteStorage/:__span-0-253) [ 1954 0 R /XYZ 60.307257 476.215878 0 ] (Code/SqliteStorage/:__span-0-254) [ 1954 0 R /XYZ 60.307257 462.815526 0 ] (Code/SqliteStorage/:__span-0-255) [ 1954 0 R /XYZ 60.307257 449.415174 0 ] (Code/SqliteStorage/:__span-0-256) [ 1954 0 R /XYZ 60.307257 436.014822 0 ] (Code/SqliteStorage/:__span-0-257) [ 1954 0 R /XYZ 60.307257 422.614470 0 ] (Code/SqliteStorage/:__span-0-258) [ 1954 0 R /XYZ 60.307257 395.813766 0 ] (Code/SqliteStorage/:__span-0-259) [ 1954 0 R /XYZ 60.307257 382.413414 0 ] (Code/SqliteStorage/:__span-0-26) [ 1944 0 R /XYZ 60.307257 359.226270 0 ] (Code/SqliteStorage/:__span-0-260) [ 1954 0 R /XYZ 60.307257 369.013062 0 ] (Code/SqliteStorage/:__span-0-261) [ 1954 0 R /XYZ 60.307257 355.612710 0 ] (Code/SqliteStorage/:__span-0-262) [ 1954 0 R /XYZ 60.307257 342.212358 0 ] (Code/SqliteStorage/:__span-0-27) [ 1944 0 R /XYZ 60.307257 345.825918 0 ] (Code/SqliteStorage/:__span-0-28) [ 1944 0 R /XYZ 60.307257 332.425566 0 ] (Code/SqliteStorage/:__span-0-29) [ 1944 0 R /XYZ 60.307257 319.025214 0 ] (Code/SqliteStorage/:__span-0-3) [ 1944 0 R /XYZ 60.307257 680.834718 0 ] (Code/SqliteStorage/:__span-0-30) [ 1944 0 R /XYZ 60.307257 305.624862 0 ] (Code/SqliteStorage/:__span-0-31) [ 1944 0 R /XYZ 60.307257 292.224510 0 ] (Code/SqliteStorage/:__span-0-32) [ 1944 0 R /XYZ 60.307257 278.824158 0 ] (Code/SqliteStorage/:__span-0-33) [ 1944 0 R /XYZ 60.307257 265.423806 0 ] (Code/SqliteStorage/:__span-0-34) [ 1944 0 R /XYZ 60.307257 252.023454 0 ] (Code/SqliteStorage/:__span-0-35) [ 1944 0 R /XYZ 60.307257 238.623102 0 ] (Code/SqliteStorage/:__span-0-36) [ 1944 0 R /XYZ 60.307257 225.222750 0 ] (Code/SqliteStorage/:__span-0-37) [ 1944 0 R /XYZ 60.307257 211.822398 0 ] (Code/SqliteStorage/:__span-0-38) [ 1944 0 R /XYZ 60.307257 198.422046 0 ] (Code/SqliteStorage/:__span-0-39) [ 1944 0 R /XYZ 60.307257 185.021694 0 ] (Code/SqliteStorage/:__span-0-4) [ 1944 0 R /XYZ 60.307257 667.434366 0 ] (Code/SqliteStorage/:__span-0-40) [ 1944 0 R /XYZ 60.307257 171.621342 0 ] (Code/SqliteStorage/:__span-0-41) [ 1944 0 R /XYZ 60.307257 158.220990 0 ] (Code/SqliteStorage/:__span-0-42) [ 1944 0 R /XYZ 60.307257 144.820638 0 ] (Code/SqliteStorage/:__span-0-43) [ 1944 0 R /XYZ 60.307257 131.420286 0 ] (Code/SqliteStorage/:__span-0-44) [ 1944 0 R /XYZ 60.307257 118.019934 0 ] (Code/SqliteStorage/:__span-0-45) [ 1944 0 R /XYZ 60.307257 104.619582 0 ] (Code/SqliteStorage/:__span-0-46) [ 1944 0 R /XYZ 60.307257 91.219230 0 ] (Code/SqliteStorage/:__span-0-47) [ 1946 0 R /XYZ 60.307257 771.023622 0 ] (Code/SqliteStorage/:__span-0-48) [ 1946 0 R /XYZ 60.307257 757.623270 0 ] (Code/SqliteStorage/:__span-0-49) [ 1946 0 R /XYZ 60.307257 744.222918 0 ] (Code/SqliteStorage/:__span-0-5) [ 1944 0 R /XYZ 60.307257 654.034014 0 ] (Code/SqliteStorage/:__span-0-50) [ 1946 0 R /XYZ 60.307257 730.822566 0 ] (Code/SqliteStorage/:__span-0-51) [ 1946 0 R /XYZ 60.307257 717.422214 0 ] (Code/SqliteStorage/:__span-0-52) [ 1946 0 R /XYZ 60.307257 704.021862 0 ] (Code/SqliteStorage/:__span-0-53) [ 1946 0 R /XYZ 60.307257 690.621510 0 ] (Code/SqliteStorage/:__span-0-54) [ 1946 0 R /XYZ 60.307257 677.221158 0 ] (Code/SqliteStorage/:__span-0-55) [ 1946 0 R /XYZ 60.307257 663.820806 0 ] (Code/SqliteStorage/:__span-0-56) [ 1946 0 R /XYZ 60.307257 650.420454 0 ] (Code/SqliteStorage/:__span-0-57) [ 1946 0 R /XYZ 60.307257 637.020102 0 ] (Code/SqliteStorage/:__span-0-58) [ 1946 0 R /XYZ 60.307257 610.219398 0 ] (Code/SqliteStorage/:__span-0-59) [ 1946 0 R /XYZ 60.307257 596.819046 0 ] (Code/SqliteStorage/:__span-0-6) [ 1944 0 R /XYZ 60.307257 640.633662 0 ] (Code/SqliteStorage/:__span-0-60) [ 1946 0 R /XYZ 60.307257 583.418694 0 ] (Code/SqliteStorage/:__span-0-61) [ 1946 0 R /XYZ 60.307257 570.018342 0 ] (Code/SqliteStorage/:__span-0-62) [ 1946 0 R /XYZ 60.307257 556.617990 0 ] (Code/SqliteStorage/:__span-0-63) [ 1946 0 R /XYZ 60.307257 543.217638 0 ] (Code/SqliteStorage/:__span-0-64) [ 1946 0 R /XYZ 60.307257 529.817286 0 ] (Code/SqliteStorage/:__span-0-65) [ 1946 0 R /XYZ 60.307257 516.416934 0 ] (Code/SqliteStorage/:__span-0-66) [ 1946 0 R /XYZ 60.307257 503.016582 0 ] (Code/SqliteStorage/:__span-0-67) [ 1946 0 R /XYZ 60.307257 489.616230 0 ] (Code/SqliteStorage/:__span-0-68) [ 1946 0 R /XYZ 60.307257 476.215878 0 ] (Code/SqliteStorage/:__span-0-69) [ 1946 0 R /XYZ 60.307257 449.415174 0 ] (Code/SqliteStorage/:__span-0-7) [ 1944 0 R /XYZ 60.307257 627.233310 0 ] (Code/SqliteStorage/:__span-0-70) [ 1946 0 R /XYZ 60.307257 436.014822 0 ] (Code/SqliteStorage/:__span-0-71) [ 1946 0 R /XYZ 60.307257 422.614470 0 ] (Code/SqliteStorage/:__span-0-72) [ 1946 0 R /XYZ 60.307257 409.214118 0 ] (Code/SqliteStorage/:__span-0-73) [ 1946 0 R /XYZ 60.307257 395.813766 0 ] (Code/SqliteStorage/:__span-0-74) [ 1946 0 R /XYZ 60.307257 382.413414 0 ] (Code/SqliteStorage/:__span-0-75) [ 1946 0 R /XYZ 60.307257 369.013062 0 ] (Code/SqliteStorage/:__span-0-76) [ 1946 0 R /XYZ 60.307257 355.612710 0 ] (Code/SqliteStorage/:__span-0-77) [ 1946 0 R /XYZ 60.307257 342.212358 0 ] (Code/SqliteStorage/:__span-0-78) [ 1946 0 R /XYZ 60.307257 328.812006 0 ] (Code/SqliteStorage/:__span-0-79) [ 1946 0 R /XYZ 60.307257 315.411654 0 ] (Code/SqliteStorage/:__span-0-8) [ 1944 0 R /XYZ 60.307257 613.832958 0 ] (Code/SqliteStorage/:__span-0-80) [ 1946 0 R /XYZ 60.307257 302.011302 0 ] (Code/SqliteStorage/:__span-0-81) [ 1946 0 R /XYZ 60.307257 288.610950 0 ] (Code/SqliteStorage/:__span-0-82) [ 1946 0 R /XYZ 60.307257 275.210598 0 ] (Code/SqliteStorage/:__span-0-83) [ 1946 0 R /XYZ 60.307257 261.810246 0 ] (Code/SqliteStorage/:__span-0-84) [ 1946 0 R /XYZ 60.307257 248.409894 0 ] (Code/SqliteStorage/:__span-0-85) [ 1946 0 R /XYZ 60.307257 235.009542 0 ] (Code/SqliteStorage/:__span-0-86) [ 1946 0 R /XYZ 60.307257 208.208838 0 ] (Code/SqliteStorage/:__span-0-87) [ 1946 0 R /XYZ 60.307257 194.808486 0 ] (Code/SqliteStorage/:__span-0-88) [ 1946 0 R /XYZ 60.307257 181.408134 0 ] (Code/SqliteStorage/:__span-0-89) [ 1946 0 R /XYZ 60.307257 168.007782 0 ] (Code/SqliteStorage/:__span-0-9) [ 1944 0 R /XYZ 60.307257 600.432606 0 ] (Code/SqliteStorage/:__span-0-90) [ 1946 0 R /XYZ 60.307257 154.607430 0 ] (Code/SqliteStorage/:__span-0-91) [ 1946 0 R /XYZ 60.307257 141.207078 0 ] (Code/SqliteStorage/:__span-0-92) [ 1946 0 R /XYZ 60.307257 114.406374 0 ] (Code/SqliteStorage/:__span-0-93) [ 1946 0 R /XYZ 60.307257 101.006022 0 ] (Code/SqliteStorage/:__span-0-94) [ 1946 0 R /XYZ 60.307257 87.605670 0 ] (Code/SqliteStorage/:__span-0-95) [ 1948 0 R /XYZ 60.307257 771.023622 0 ] (Code/SqliteStorage/:__span-0-96) [ 1948 0 R /XYZ 60.307257 757.623270 0 ] (Code/SqliteStorage/:__span-0-97) [ 1948 0 R /XYZ 60.307257 744.222918 0 ] (Code/SqliteStorage/:__span-0-98) [ 1948 0 R /XYZ 60.307257 730.822566 0 ] (Code/SqliteStorage/:__span-0-99) [ 1948 0 R /XYZ 60.307257 717.422214 0 ] (Code/SqliteStorage/:sqlitestoragecs) [ 1944 0 R /XYZ 39.386457 747.563622 0 ] (Code/Window/:) [ 2076 0 R /XYZ 39.386457 747.563622 0 ] (Code/Window/:__span-0-1) [ 2076 0 R /XYZ 60.307257 707.635422 0 ] (Code/Window/:__span-0-10) [ 2076 0 R /XYZ 60.307257 587.032254 0 ] (Code/Window/:__span-0-100) [ 2080 0 R /XYZ 60.307257 677.221158 0 ] (Code/Window/:__span-0-101) [ 2080 0 R /XYZ 60.307257 663.820806 0 ] (Code/Window/:__span-0-102) [ 2080 0 R /XYZ 60.307257 637.020102 0 ] (Code/Window/:__span-0-103) [ 2080 0 R /XYZ 60.307257 610.219398 0 ] (Code/Window/:__span-0-104) [ 2080 0 R /XYZ 60.307257 596.819046 0 ] (Code/Window/:__span-0-105) [ 2080 0 R /XYZ 60.307257 583.418694 0 ] (Code/Window/:__span-0-106) [ 2080 0 R /XYZ 60.307257 570.018342 0 ] (Code/Window/:__span-0-107) [ 2080 0 R /XYZ 60.307257 556.617990 0 ] (Code/Window/:__span-0-108) [ 2080 0 R /XYZ 60.307257 543.217638 0 ] (Code/Window/:__span-0-109) [ 2080 0 R /XYZ 60.307257 516.416934 0 ] (Code/Window/:__span-0-11) [ 2076 0 R /XYZ 60.307257 573.631902 0 ] (Code/Window/:__span-0-110) [ 2080 0 R /XYZ 60.307257 503.016582 0 ] (Code/Window/:__span-0-111) [ 2080 0 R /XYZ 60.307257 489.616230 0 ] (Code/Window/:__span-0-112) [ 2080 0 R /XYZ 60.307257 476.215878 0 ] (Code/Window/:__span-0-113) [ 2080 0 R /XYZ 60.307257 462.815526 0 ] (Code/Window/:__span-0-114) [ 2080 0 R /XYZ 60.307257 449.415174 0 ] (Code/Window/:__span-0-115) [ 2080 0 R /XYZ 60.307257 436.014822 0 ] (Code/Window/:__span-0-116) [ 2080 0 R /XYZ 60.307257 422.614470 0 ] (Code/Window/:__span-0-117) [ 2080 0 R /XYZ 60.307257 409.214118 0 ] (Code/Window/:__span-0-118) [ 2080 0 R /XYZ 60.307257 395.813766 0 ] (Code/Window/:__span-0-119) [ 2080 0 R /XYZ 60.307257 382.413414 0 ] (Code/Window/:__span-0-12) [ 2076 0 R /XYZ 60.307257 560.231550 0 ] (Code/Window/:__span-0-120) [ 2080 0 R /XYZ 60.307257 369.013062 0 ] (Code/Window/:__span-0-121) [ 2080 0 R /XYZ 60.307257 355.612710 0 ] (Code/Window/:__span-0-122) [ 2080 0 R /XYZ 60.307257 342.212358 0 ] (Code/Window/:__span-0-123) [ 2080 0 R /XYZ 60.307257 328.812006 0 ] (Code/Window/:__span-0-124) [ 2080 0 R /XYZ 60.307257 315.411654 0 ] (Code/Window/:__span-0-125) [ 2080 0 R /XYZ 60.307257 302.011302 0 ] (Code/Window/:__span-0-126) [ 2080 0 R /XYZ 60.307257 288.610950 0 ] (Code/Window/:__span-0-127) [ 2080 0 R /XYZ 60.307257 275.210598 0 ] (Code/Window/:__span-0-128) [ 2080 0 R /XYZ 60.307257 248.409894 0 ] (Code/Window/:__span-0-129) [ 2080 0 R /XYZ 60.307257 235.009542 0 ] (Code/Window/:__span-0-13) [ 2076 0 R /XYZ 60.307257 546.831198 0 ] (Code/Window/:__span-0-130) [ 2080 0 R /XYZ 60.307257 208.208838 0 ] (Code/Window/:__span-0-131) [ 2080 0 R /XYZ 60.307257 194.808486 0 ] (Code/Window/:__span-0-132) [ 2080 0 R /XYZ 60.307257 181.408134 0 ] (Code/Window/:__span-0-133) [ 2080 0 R /XYZ 60.307257 168.007782 0 ] (Code/Window/:__span-0-134) [ 2080 0 R /XYZ 60.307257 154.607430 0 ] (Code/Window/:__span-0-135) [ 2080 0 R /XYZ 60.307257 141.207078 0 ] (Code/Window/:__span-0-136) [ 2080 0 R /XYZ 60.307257 127.806726 0 ] (Code/Window/:__span-0-137) [ 2080 0 R /XYZ 60.307257 114.406374 0 ] (Code/Window/:__span-0-138) [ 2080 0 R /XYZ 60.307257 101.006022 0 ] (Code/Window/:__span-0-139) [ 2080 0 R /XYZ 60.307257 87.605670 0 ] (Code/Window/:__span-0-14) [ 2076 0 R /XYZ 60.307257 533.430846 0 ] (Code/Window/:__span-0-140) [ 2082 0 R /XYZ 60.307257 771.023622 0 ] (Code/Window/:__span-0-141) [ 2082 0 R /XYZ 60.307257 757.623270 0 ] (Code/Window/:__span-0-142) [ 2082 0 R /XYZ 60.307257 744.222918 0 ] (Code/Window/:__span-0-143) [ 2082 0 R /XYZ 60.307257 730.822566 0 ] (Code/Window/:__span-0-144) [ 2082 0 R /XYZ 60.307257 717.422214 0 ] (Code/Window/:__span-0-145) [ 2082 0 R /XYZ 60.307257 704.021862 0 ] (Code/Window/:__span-0-146) [ 2082 0 R /XYZ 60.307257 690.621510 0 ] (Code/Window/:__span-0-147) [ 2082 0 R /XYZ 60.307257 677.221158 0 ] (Code/Window/:__span-0-148) [ 2082 0 R /XYZ 60.307257 663.820806 0 ] (Code/Window/:__span-0-149) [ 2082 0 R /XYZ 60.307257 650.420454 0 ] (Code/Window/:__span-0-15) [ 2076 0 R /XYZ 60.307257 520.030494 0 ] (Code/Window/:__span-0-150) [ 2082 0 R /XYZ 60.307257 637.020102 0 ] (Code/Window/:__span-0-151) [ 2082 0 R /XYZ 60.307257 623.619750 0 ] (Code/Window/:__span-0-152) [ 2082 0 R /XYZ 60.307257 610.219398 0 ] (Code/Window/:__span-0-153) [ 2082 0 R /XYZ 60.307257 596.819046 0 ] (Code/Window/:__span-0-154) [ 2082 0 R /XYZ 60.307257 583.418694 0 ] (Code/Window/:__span-0-155) [ 2082 0 R /XYZ 60.307257 570.018342 0 ] (Code/Window/:__span-0-156) [ 2082 0 R /XYZ 60.307257 556.617990 0 ] (Code/Window/:__span-0-157) [ 2082 0 R /XYZ 60.307257 543.217638 0 ] (Code/Window/:__span-0-158) [ 2082 0 R /XYZ 60.307257 529.817286 0 ] (Code/Window/:__span-0-159) [ 2082 0 R /XYZ 60.307257 516.416934 0 ] (Code/Window/:__span-0-16) [ 2076 0 R /XYZ 60.307257 506.630142 0 ] (Code/Window/:__span-0-160) [ 2082 0 R /XYZ 60.307257 503.016582 0 ] (Code/Window/:__span-0-161) [ 2082 0 R /XYZ 60.307257 489.616230 0 ] (Code/Window/:__span-0-162) [ 2082 0 R /XYZ 60.307257 476.215878 0 ] (Code/Window/:__span-0-163) [ 2082 0 R /XYZ 60.307257 462.815526 0 ] (Code/Window/:__span-0-164) [ 2082 0 R /XYZ 60.307257 449.415174 0 ] (Code/Window/:__span-0-165) [ 2082 0 R /XYZ 60.307257 436.014822 0 ] (Code/Window/:__span-0-166) [ 2082 0 R /XYZ 60.307257 422.614470 0 ] (Code/Window/:__span-0-167) [ 2082 0 R /XYZ 60.307257 409.214118 0 ] (Code/Window/:__span-0-168) [ 2082 0 R /XYZ 60.307257 395.813766 0 ] (Code/Window/:__span-0-169) [ 2082 0 R /XYZ 60.307257 382.413414 0 ] (Code/Window/:__span-0-17) [ 2076 0 R /XYZ 60.307257 493.229790 0 ] (Code/Window/:__span-0-170) [ 2082 0 R /XYZ 60.307257 369.013062 0 ] (Code/Window/:__span-0-171) [ 2082 0 R /XYZ 60.307257 355.612710 0 ] (Code/Window/:__span-0-172) [ 2082 0 R /XYZ 60.307257 342.212358 0 ] (Code/Window/:__span-0-173) [ 2082 0 R /XYZ 60.307257 328.812006 0 ] (Code/Window/:__span-0-174) [ 2082 0 R /XYZ 60.307257 315.411654 0 ] (Code/Window/:__span-0-175) [ 2082 0 R /XYZ 60.307257 302.011302 0 ] (Code/Window/:__span-0-176) [ 2082 0 R /XYZ 60.307257 288.610950 0 ] (Code/Window/:__span-0-177) [ 2082 0 R /XYZ 60.307257 275.210598 0 ] (Code/Window/:__span-0-178) [ 2082 0 R /XYZ 60.307257 261.810246 0 ] (Code/Window/:__span-0-179) [ 2082 0 R /XYZ 60.307257 248.409894 0 ] (Code/Window/:__span-0-18) [ 2076 0 R /XYZ 60.307257 479.829438 0 ] (Code/Window/:__span-0-180) [ 2082 0 R /XYZ 60.307257 235.009542 0 ] (Code/Window/:__span-0-181) [ 2082 0 R /XYZ 60.307257 221.609190 0 ] (Code/Window/:__span-0-182) [ 2082 0 R /XYZ 60.307257 208.208838 0 ] (Code/Window/:__span-0-183) [ 2082 0 R /XYZ 60.307257 194.808486 0 ] (Code/Window/:__span-0-184) [ 2082 0 R /XYZ 60.307257 168.007782 0 ] (Code/Window/:__span-0-185) [ 2082 0 R /XYZ 60.307257 154.607430 0 ] (Code/Window/:__span-0-186) [ 2082 0 R /XYZ 60.307257 141.207078 0 ] (Code/Window/:__span-0-187) [ 2082 0 R /XYZ 60.307257 127.806726 0 ] (Code/Window/:__span-0-188) [ 2082 0 R /XYZ 60.307257 114.406374 0 ] (Code/Window/:__span-0-189) [ 2082 0 R /XYZ 60.307257 101.006022 0 ] (Code/Window/:__span-0-19) [ 2076 0 R /XYZ 60.307257 466.429086 0 ] (Code/Window/:__span-0-190) [ 2084 0 R /XYZ 60.307257 771.023622 0 ] (Code/Window/:__span-0-191) [ 2084 0 R /XYZ 60.307257 757.623270 0 ] (Code/Window/:__span-0-192) [ 2084 0 R /XYZ 60.307257 744.222918 0 ] (Code/Window/:__span-0-193) [ 2084 0 R /XYZ 60.307257 730.822566 0 ] (Code/Window/:__span-0-194) [ 2084 0 R /XYZ 60.307257 717.422214 0 ] (Code/Window/:__span-0-195) [ 2084 0 R /XYZ 60.307257 704.021862 0 ] (Code/Window/:__span-0-196) [ 2084 0 R /XYZ 60.307257 690.621510 0 ] (Code/Window/:__span-0-197) [ 2084 0 R /XYZ 60.307257 677.221158 0 ] (Code/Window/:__span-0-198) [ 2084 0 R /XYZ 60.307257 663.820806 0 ] (Code/Window/:__span-0-199) [ 2084 0 R /XYZ 60.307257 650.420454 0 ] (Code/Window/:__span-0-2) [ 2076 0 R /XYZ 60.307257 694.235070 0 ] (Code/Window/:__span-0-20) [ 2076 0 R /XYZ 60.307257 453.028734 0 ] (Code/Window/:__span-0-200) [ 2084 0 R /XYZ 60.307257 637.020102 0 ] (Code/Window/:__span-0-201) [ 2084 0 R /XYZ 60.307257 623.619750 0 ] (Code/Window/:__span-0-202) [ 2084 0 R /XYZ 60.307257 610.219398 0 ] (Code/Window/:__span-0-203) [ 2084 0 R /XYZ 60.307257 596.819046 0 ] (Code/Window/:__span-0-204) [ 2084 0 R /XYZ 60.307257 583.418694 0 ] (Code/Window/:__span-0-205) [ 2084 0 R /XYZ 60.307257 570.018342 0 ] (Code/Window/:__span-0-206) [ 2084 0 R /XYZ 60.307257 556.617990 0 ] (Code/Window/:__span-0-207) [ 2084 0 R /XYZ 60.307257 543.217638 0 ] (Code/Window/:__span-0-208) [ 2084 0 R /XYZ 60.307257 529.817286 0 ] (Code/Window/:__span-0-209) [ 2084 0 R /XYZ 60.307257 516.416934 0 ] (Code/Window/:__span-0-21) [ 2076 0 R /XYZ 60.307257 439.628382 0 ] (Code/Window/:__span-0-210) [ 2084 0 R /XYZ 60.307257 503.016582 0 ] (Code/Window/:__span-0-211) [ 2084 0 R /XYZ 60.307257 489.616230 0 ] (Code/Window/:__span-0-212) [ 2084 0 R /XYZ 60.307257 476.215878 0 ] (Code/Window/:__span-0-213) [ 2084 0 R /XYZ 60.307257 462.815526 0 ] (Code/Window/:__span-0-214) [ 2084 0 R /XYZ 60.307257 449.415174 0 ] (Code/Window/:__span-0-215) [ 2084 0 R /XYZ 60.307257 436.014822 0 ] (Code/Window/:__span-0-216) [ 2084 0 R /XYZ 60.307257 422.614470 0 ] (Code/Window/:__span-0-217) [ 2084 0 R /XYZ 60.307257 395.813766 0 ] (Code/Window/:__span-0-218) [ 2084 0 R /XYZ 60.307257 382.413414 0 ] (Code/Window/:__span-0-219) [ 2084 0 R /XYZ 60.307257 369.013062 0 ] (Code/Window/:__span-0-22) [ 2076 0 R /XYZ 60.307257 426.228030 0 ] (Code/Window/:__span-0-220) [ 2084 0 R /XYZ 60.307257 355.612710 0 ] (Code/Window/:__span-0-221) [ 2084 0 R /XYZ 60.307257 342.212358 0 ] (Code/Window/:__span-0-222) [ 2084 0 R /XYZ 60.307257 328.812006 0 ] (Code/Window/:__span-0-223) [ 2084 0 R /XYZ 60.307257 315.411654 0 ] (Code/Window/:__span-0-224) [ 2084 0 R /XYZ 60.307257 288.610950 0 ] (Code/Window/:__span-0-225) [ 2084 0 R /XYZ 60.307257 261.810246 0 ] (Code/Window/:__span-0-226) [ 2084 0 R /XYZ 60.307257 248.409894 0 ] (Code/Window/:__span-0-227) [ 2084 0 R /XYZ 60.307257 235.009542 0 ] (Code/Window/:__span-0-228) [ 2084 0 R /XYZ 60.307257 221.609190 0 ] (Code/Window/:__span-0-229) [ 2084 0 R /XYZ 60.307257 194.808486 0 ] (Code/Window/:__span-0-23) [ 2076 0 R /XYZ 60.307257 412.827678 0 ] (Code/Window/:__span-0-230) [ 2084 0 R /XYZ 60.307257 181.408134 0 ] (Code/Window/:__span-0-231) [ 2084 0 R /XYZ 60.307257 168.007782 0 ] (Code/Window/:__span-0-232) [ 2084 0 R /XYZ 60.307257 154.607430 0 ] (Code/Window/:__span-0-233) [ 2084 0 R /XYZ 60.307257 141.207078 0 ] (Code/Window/:__span-0-234) [ 2084 0 R /XYZ 60.307257 127.806726 0 ] (Code/Window/:__span-0-235) [ 2084 0 R /XYZ 60.307257 114.406374 0 ] (Code/Window/:__span-0-236) [ 2084 0 R /XYZ 60.307257 101.006022 0 ] (Code/Window/:__span-0-237) [ 2084 0 R /XYZ 60.307257 87.605670 0 ] (Code/Window/:__span-0-238) [ 2086 0 R /XYZ 60.307257 771.023622 0 ] (Code/Window/:__span-0-239) [ 2086 0 R /XYZ 60.307257 744.222918 0 ] (Code/Window/:__span-0-24) [ 2076 0 R /XYZ 60.307257 399.427326 0 ] (Code/Window/:__span-0-240) [ 2086 0 R /XYZ 60.307257 717.422214 0 ] (Code/Window/:__span-0-241) [ 2086 0 R /XYZ 60.307257 704.021862 0 ] (Code/Window/:__span-0-242) [ 2086 0 R /XYZ 60.307257 690.621510 0 ] (Code/Window/:__span-0-243) [ 2086 0 R /XYZ 60.307257 677.221158 0 ] (Code/Window/:__span-0-244) [ 2086 0 R /XYZ 60.307257 650.420454 0 ] (Code/Window/:__span-0-245) [ 2086 0 R /XYZ 60.307257 637.020102 0 ] (Code/Window/:__span-0-246) [ 2086 0 R /XYZ 60.307257 623.619750 0 ] (Code/Window/:__span-0-247) [ 2086 0 R /XYZ 60.307257 610.219398 0 ] (Code/Window/:__span-0-248) [ 2086 0 R /XYZ 60.307257 596.819046 0 ] (Code/Window/:__span-0-249) [ 2086 0 R /XYZ 60.307257 570.018342 0 ] (Code/Window/:__span-0-25) [ 2076 0 R /XYZ 60.307257 386.026974 0 ] (Code/Window/:__span-0-250) [ 2086 0 R /XYZ 60.307257 556.617990 0 ] (Code/Window/:__span-0-251) [ 2086 0 R /XYZ 60.307257 543.217638 0 ] (Code/Window/:__span-0-252) [ 2086 0 R /XYZ 60.307257 529.817286 0 ] (Code/Window/:__span-0-253) [ 2086 0 R /XYZ 60.307257 516.416934 0 ] (Code/Window/:__span-0-254) [ 2086 0 R /XYZ 60.307257 503.016582 0 ] (Code/Window/:__span-0-255) [ 2086 0 R /XYZ 60.307257 476.215878 0 ] (Code/Window/:__span-0-256) [ 2086 0 R /XYZ 60.307257 462.815526 0 ] (Code/Window/:__span-0-257) [ 2086 0 R /XYZ 60.307257 449.415174 0 ] (Code/Window/:__span-0-258) [ 2086 0 R /XYZ 60.307257 436.014822 0 ] (Code/Window/:__span-0-259) [ 2086 0 R /XYZ 60.307257 422.614470 0 ] (Code/Window/:__span-0-26) [ 2076 0 R /XYZ 60.307257 372.626622 0 ] (Code/Window/:__span-0-260) [ 2086 0 R /XYZ 60.307257 409.214118 0 ] (Code/Window/:__span-0-261) [ 2086 0 R /XYZ 60.307257 395.813766 0 ] (Code/Window/:__span-0-262) [ 2086 0 R /XYZ 60.307257 382.413414 0 ] (Code/Window/:__span-0-263) [ 2086 0 R /XYZ 60.307257 369.013062 0 ] (Code/Window/:__span-0-264) [ 2086 0 R /XYZ 60.307257 355.612710 0 ] (Code/Window/:__span-0-265) [ 2086 0 R /XYZ 60.307257 342.212358 0 ] (Code/Window/:__span-0-266) [ 2086 0 R /XYZ 60.307257 328.812006 0 ] (Code/Window/:__span-0-267) [ 2086 0 R /XYZ 60.307257 315.411654 0 ] (Code/Window/:__span-0-268) [ 2086 0 R /XYZ 60.307257 302.011302 0 ] (Code/Window/:__span-0-269) [ 2086 0 R /XYZ 60.307257 288.610950 0 ] (Code/Window/:__span-0-27) [ 2076 0 R /XYZ 60.307257 359.226270 0 ] (Code/Window/:__span-0-270) [ 2086 0 R /XYZ 60.307257 275.210598 0 ] (Code/Window/:__span-0-271) [ 2086 0 R /XYZ 60.307257 261.810246 0 ] (Code/Window/:__span-0-272) [ 2086 0 R /XYZ 60.307257 248.409894 0 ] (Code/Window/:__span-0-273) [ 2086 0 R /XYZ 60.307257 235.009542 0 ] (Code/Window/:__span-0-274) [ 2086 0 R /XYZ 60.307257 221.609190 0 ] (Code/Window/:__span-0-275) [ 2086 0 R /XYZ 60.307257 208.208838 0 ] (Code/Window/:__span-0-276) [ 2086 0 R /XYZ 60.307257 194.808486 0 ] (Code/Window/:__span-0-277) [ 2086 0 R /XYZ 60.307257 181.408134 0 ] (Code/Window/:__span-0-278) [ 2086 0 R /XYZ 60.307257 168.007782 0 ] (Code/Window/:__span-0-279) [ 2086 0 R /XYZ 60.307257 154.607430 0 ] (Code/Window/:__span-0-28) [ 2076 0 R /XYZ 60.307257 345.825918 0 ] (Code/Window/:__span-0-280) [ 2086 0 R /XYZ 60.307257 141.207078 0 ] (Code/Window/:__span-0-281) [ 2086 0 R /XYZ 60.307257 127.806726 0 ] (Code/Window/:__span-0-282) [ 2086 0 R /XYZ 60.307257 114.406374 0 ] (Code/Window/:__span-0-283) [ 2086 0 R /XYZ 60.307257 101.006022 0 ] (Code/Window/:__span-0-284) [ 2086 0 R /XYZ 60.307257 87.605670 0 ] (Code/Window/:__span-0-285) [ 2088 0 R /XYZ 60.307257 771.023622 0 ] (Code/Window/:__span-0-286) [ 2088 0 R /XYZ 60.307257 757.623270 0 ] (Code/Window/:__span-0-287) [ 2088 0 R /XYZ 60.307257 744.222918 0 ] (Code/Window/:__span-0-288) [ 2088 0 R /XYZ 60.307257 730.822566 0 ] (Code/Window/:__span-0-289) [ 2088 0 R /XYZ 60.307257 717.422214 0 ] (Code/Window/:__span-0-29) [ 2076 0 R /XYZ 60.307257 332.425566 0 ] (Code/Window/:__span-0-290) [ 2088 0 R /XYZ 60.307257 704.021862 0 ] (Code/Window/:__span-0-291) [ 2088 0 R /XYZ 60.307257 690.621510 0 ] (Code/Window/:__span-0-292) [ 2088 0 R /XYZ 60.307257 677.221158 0 ] (Code/Window/:__span-0-293) [ 2088 0 R /XYZ 60.307257 650.420454 0 ] (Code/Window/:__span-0-294) [ 2088 0 R /XYZ 60.307257 623.619750 0 ] (Code/Window/:__span-0-295) [ 2088 0 R /XYZ 60.307257 596.819046 0 ] (Code/Window/:__span-0-296) [ 2088 0 R /XYZ 60.307257 583.418694 0 ] (Code/Window/:__span-0-297) [ 2088 0 R /XYZ 60.307257 570.018342 0 ] (Code/Window/:__span-0-298) [ 2088 0 R /XYZ 60.307257 556.617990 0 ] (Code/Window/:__span-0-299) [ 2088 0 R /XYZ 60.307257 529.817286 0 ] (Code/Window/:__span-0-3) [ 2076 0 R /XYZ 60.307257 680.834718 0 ] (Code/Window/:__span-0-30) [ 2076 0 R /XYZ 60.307257 319.025214 0 ] (Code/Window/:__span-0-300) [ 2088 0 R /XYZ 60.307257 516.416934 0 ] (Code/Window/:__span-0-301) [ 2088 0 R /XYZ 60.307257 503.016582 0 ] (Code/Window/:__span-0-302) [ 2088 0 R /XYZ 60.307257 489.616230 0 ] (Code/Window/:__span-0-303) [ 2088 0 R /XYZ 60.307257 476.215878 0 ] (Code/Window/:__span-0-304) [ 2088 0 R /XYZ 60.307257 462.815526 0 ] (Code/Window/:__span-0-305) [ 2088 0 R /XYZ 60.307257 449.415174 0 ] (Code/Window/:__span-0-306) [ 2088 0 R /XYZ 60.307257 436.014822 0 ] (Code/Window/:__span-0-307) [ 2088 0 R /XYZ 60.307257 422.614470 0 ] (Code/Window/:__span-0-308) [ 2088 0 R /XYZ 60.307257 409.214118 0 ] (Code/Window/:__span-0-309) [ 2088 0 R /XYZ 60.307257 395.813766 0 ] (Code/Window/:__span-0-31) [ 2076 0 R /XYZ 60.307257 305.624862 0 ] (Code/Window/:__span-0-310) [ 2088 0 R /XYZ 60.307257 369.013062 0 ] (Code/Window/:__span-0-311) [ 2088 0 R /XYZ 60.307257 342.212358 0 ] (Code/Window/:__span-0-312) [ 2088 0 R /XYZ 60.307257 315.411654 0 ] (Code/Window/:__span-0-313) [ 2088 0 R /XYZ 60.307257 302.011302 0 ] (Code/Window/:__span-0-314) [ 2088 0 R /XYZ 60.307257 288.610950 0 ] (Code/Window/:__span-0-315) [ 2088 0 R /XYZ 60.307257 275.210598 0 ] (Code/Window/:__span-0-316) [ 2088 0 R /XYZ 60.307257 248.409894 0 ] (Code/Window/:__span-0-317) [ 2088 0 R /XYZ 60.307257 235.009542 0 ] (Code/Window/:__span-0-318) [ 2088 0 R /XYZ 60.307257 221.609190 0 ] (Code/Window/:__span-0-319) [ 2088 0 R /XYZ 60.307257 208.208838 0 ] (Code/Window/:__span-0-32) [ 2076 0 R /XYZ 60.307257 292.224510 0 ] (Code/Window/:__span-0-320) [ 2088 0 R /XYZ 60.307257 194.808486 0 ] (Code/Window/:__span-0-321) [ 2088 0 R /XYZ 60.307257 168.007782 0 ] (Code/Window/:__span-0-322) [ 2088 0 R /XYZ 60.307257 141.207078 0 ] (Code/Window/:__span-0-323) [ 2088 0 R /XYZ 60.307257 127.806726 0 ] (Code/Window/:__span-0-324) [ 2088 0 R /XYZ 60.307257 114.406374 0 ] (Code/Window/:__span-0-325) [ 2088 0 R /XYZ 60.307257 101.006022 0 ] (Code/Window/:__span-0-326) [ 2088 0 R /XYZ 60.307257 87.605670 0 ] (Code/Window/:__span-0-327) [ 2090 0 R /XYZ 60.307257 771.023622 0 ] (Code/Window/:__span-0-328) [ 2090 0 R /XYZ 60.307257 757.623270 0 ] (Code/Window/:__span-0-329) [ 2090 0 R /XYZ 60.307257 744.222918 0 ] (Code/Window/:__span-0-33) [ 2076 0 R /XYZ 60.307257 278.824158 0 ] (Code/Window/:__span-0-330) [ 2090 0 R /XYZ 60.307257 730.822566 0 ] (Code/Window/:__span-0-331) [ 2090 0 R /XYZ 60.307257 717.422214 0 ] (Code/Window/:__span-0-332) [ 2090 0 R /XYZ 60.307257 690.621510 0 ] (Code/Window/:__span-0-333) [ 2090 0 R /XYZ 60.307257 663.820806 0 ] (Code/Window/:__span-0-334) [ 2090 0 R /XYZ 60.307257 637.020102 0 ] (Code/Window/:__span-0-335) [ 2090 0 R /XYZ 60.307257 623.619750 0 ] (Code/Window/:__span-0-336) [ 2090 0 R /XYZ 60.307257 610.219398 0 ] (Code/Window/:__span-0-337) [ 2090 0 R /XYZ 60.307257 596.819046 0 ] (Code/Window/:__span-0-338) [ 2090 0 R /XYZ 60.307257 583.418694 0 ] (Code/Window/:__span-0-339) [ 2090 0 R /XYZ 60.307257 570.018342 0 ] (Code/Window/:__span-0-34) [ 2076 0 R /XYZ 60.307257 265.423806 0 ] (Code/Window/:__span-0-340) [ 2090 0 R /XYZ 60.307257 556.617990 0 ] (Code/Window/:__span-0-341) [ 2090 0 R /XYZ 60.307257 543.217638 0 ] (Code/Window/:__span-0-342) [ 2090 0 R /XYZ 60.307257 529.817286 0 ] (Code/Window/:__span-0-343) [ 2090 0 R /XYZ 60.307257 503.016582 0 ] (Code/Window/:__span-0-344) [ 2090 0 R /XYZ 60.307257 476.215878 0 ] (Code/Window/:__span-0-345) [ 2090 0 R /XYZ 60.307257 436.014822 0 ] (Code/Window/:__span-0-346) [ 2090 0 R /XYZ 60.307257 422.614470 0 ] (Code/Window/:__span-0-347) [ 2090 0 R /XYZ 60.307257 409.214118 0 ] (Code/Window/:__span-0-348) [ 2090 0 R /XYZ 60.307257 395.813766 0 ] (Code/Window/:__span-0-349) [ 2090 0 R /XYZ 60.307257 369.013062 0 ] (Code/Window/:__span-0-35) [ 2076 0 R /XYZ 60.307257 252.023454 0 ] (Code/Window/:__span-0-350) [ 2090 0 R /XYZ 60.307257 355.612710 0 ] (Code/Window/:__span-0-351) [ 2090 0 R /XYZ 60.307257 342.212358 0 ] (Code/Window/:__span-0-352) [ 2090 0 R /XYZ 60.307257 328.812006 0 ] (Code/Window/:__span-0-353) [ 2090 0 R /XYZ 60.307257 315.411654 0 ] (Code/Window/:__span-0-354) [ 2090 0 R /XYZ 60.307257 288.610950 0 ] (Code/Window/:__span-0-355) [ 2090 0 R /XYZ 60.307257 275.210598 0 ] (Code/Window/:__span-0-356) [ 2090 0 R /XYZ 60.307257 261.810246 0 ] (Code/Window/:__span-0-357) [ 2090 0 R /XYZ 60.307257 248.409894 0 ] (Code/Window/:__span-0-358) [ 2090 0 R /XYZ 60.307257 235.009542 0 ] (Code/Window/:__span-0-359) [ 2090 0 R /XYZ 60.307257 221.609190 0 ] (Code/Window/:__span-0-36) [ 2076 0 R /XYZ 60.307257 238.623102 0 ] (Code/Window/:__span-0-360) [ 2090 0 R /XYZ 60.307257 208.208838 0 ] (Code/Window/:__span-0-361) [ 2090 0 R /XYZ 60.307257 194.808486 0 ] (Code/Window/:__span-0-362) [ 2090 0 R /XYZ 60.307257 181.408134 0 ] (Code/Window/:__span-0-363) [ 2090 0 R /XYZ 60.307257 168.007782 0 ] (Code/Window/:__span-0-364) [ 2090 0 R /XYZ 60.307257 154.607430 0 ] (Code/Window/:__span-0-365) [ 2090 0 R /XYZ 60.307257 141.207078 0 ] (Code/Window/:__span-0-366) [ 2090 0 R /XYZ 60.307257 127.806726 0 ] (Code/Window/:__span-0-367) [ 2090 0 R /XYZ 60.307257 114.406374 0 ] (Code/Window/:__span-0-368) [ 2090 0 R /XYZ 60.307257 101.006022 0 ] (Code/Window/:__span-0-369) [ 2092 0 R /XYZ 60.307257 771.023622 0 ] (Code/Window/:__span-0-37) [ 2076 0 R /XYZ 60.307257 225.222750 0 ] (Code/Window/:__span-0-370) [ 2092 0 R /XYZ 60.307257 744.222918 0 ] (Code/Window/:__span-0-371) [ 2092 0 R /XYZ 60.307257 717.422214 0 ] (Code/Window/:__span-0-372) [ 2092 0 R /XYZ 60.307257 704.021862 0 ] (Code/Window/:__span-0-373) [ 2092 0 R /XYZ 60.307257 690.621510 0 ] (Code/Window/:__span-0-374) [ 2092 0 R /XYZ 60.307257 677.221158 0 ] (Code/Window/:__span-0-375) [ 2092 0 R /XYZ 60.307257 650.420454 0 ] (Code/Window/:__span-0-376) [ 2092 0 R /XYZ 60.307257 637.020102 0 ] (Code/Window/:__span-0-377) [ 2092 0 R /XYZ 60.307257 623.619750 0 ] (Code/Window/:__span-0-378) [ 2092 0 R /XYZ 60.307257 610.219398 0 ] (Code/Window/:__span-0-379) [ 2092 0 R /XYZ 60.307257 596.819046 0 ] (Code/Window/:__span-0-38) [ 2076 0 R /XYZ 60.307257 211.822398 0 ] (Code/Window/:__span-0-380) [ 2092 0 R /XYZ 60.307257 583.418694 0 ] (Code/Window/:__span-0-381) [ 2092 0 R /XYZ 60.307257 570.018342 0 ] (Code/Window/:__span-0-382) [ 2092 0 R /XYZ 60.307257 543.217638 0 ] (Code/Window/:__span-0-383) [ 2092 0 R /XYZ 60.307257 529.817286 0 ] (Code/Window/:__span-0-384) [ 2092 0 R /XYZ 60.307257 516.416934 0 ] (Code/Window/:__span-0-385) [ 2092 0 R /XYZ 60.307257 489.616230 0 ] (Code/Window/:__span-0-386) [ 2092 0 R /XYZ 60.307257 462.815526 0 ] (Code/Window/:__span-0-387) [ 2092 0 R /XYZ 60.307257 422.614470 0 ] (Code/Window/:__span-0-388) [ 2092 0 R /XYZ 60.307257 409.214118 0 ] (Code/Window/:__span-0-389) [ 2092 0 R /XYZ 60.307257 395.813766 0 ] (Code/Window/:__span-0-39) [ 2076 0 R /XYZ 60.307257 198.422046 0 ] (Code/Window/:__span-0-390) [ 2092 0 R /XYZ 60.307257 382.413414 0 ] (Code/Window/:__span-0-391) [ 2092 0 R /XYZ 60.307257 355.612710 0 ] (Code/Window/:__span-0-392) [ 2092 0 R /XYZ 60.307257 342.212358 0 ] (Code/Window/:__span-0-393) [ 2092 0 R /XYZ 60.307257 328.812006 0 ] (Code/Window/:__span-0-394) [ 2092 0 R /XYZ 60.307257 315.411654 0 ] (Code/Window/:__span-0-395) [ 2092 0 R /XYZ 60.307257 302.011302 0 ] (Code/Window/:__span-0-396) [ 2092 0 R /XYZ 60.307257 288.610950 0 ] (Code/Window/:__span-0-397) [ 2092 0 R /XYZ 60.307257 275.210598 0 ] (Code/Window/:__span-0-398) [ 2092 0 R /XYZ 60.307257 261.810246 0 ] (Code/Window/:__span-0-399) [ 2092 0 R /XYZ 60.307257 248.409894 0 ] (Code/Window/:__span-0-4) [ 2076 0 R /XYZ 60.307257 667.434366 0 ] (Code/Window/:__span-0-40) [ 2076 0 R /XYZ 60.307257 171.621342 0 ] (Code/Window/:__span-0-400) [ 2092 0 R /XYZ 60.307257 235.009542 0 ] (Code/Window/:__span-0-401) [ 2092 0 R /XYZ 60.307257 208.208838 0 ] (Code/Window/:__span-0-402) [ 2092 0 R /XYZ 60.307257 181.408134 0 ] (Code/Window/:__span-0-403) [ 2092 0 R /XYZ 60.307257 141.207078 0 ] (Code/Window/:__span-0-404) [ 2092 0 R /XYZ 60.307257 127.806726 0 ] (Code/Window/:__span-0-405) [ 2092 0 R /XYZ 60.307257 114.406374 0 ] (Code/Window/:__span-0-406) [ 2092 0 R /XYZ 60.307257 101.006022 0 ] (Code/Window/:__span-0-407) [ 2094 0 R /XYZ 60.307257 771.023622 0 ] (Code/Window/:__span-0-408) [ 2094 0 R /XYZ 60.307257 757.623270 0 ] (Code/Window/:__span-0-409) [ 2094 0 R /XYZ 60.307257 744.222918 0 ] (Code/Window/:__span-0-41) [ 2076 0 R /XYZ 60.307257 158.220990 0 ] (Code/Window/:__span-0-410) [ 2094 0 R /XYZ 60.307257 730.822566 0 ] (Code/Window/:__span-0-411) [ 2094 0 R /XYZ 60.307257 717.422214 0 ] (Code/Window/:__span-0-412) [ 2094 0 R /XYZ 60.307257 704.021862 0 ] (Code/Window/:__span-0-413) [ 2094 0 R /XYZ 60.307257 677.221158 0 ] (Code/Window/:__span-0-414) [ 2094 0 R /XYZ 60.307257 663.820806 0 ] (Code/Window/:__span-0-415) [ 2094 0 R /XYZ 60.307257 650.420454 0 ] (Code/Window/:__span-0-416) [ 2094 0 R /XYZ 60.307257 637.020102 0 ] (Code/Window/:__span-0-417) [ 2094 0 R /XYZ 60.307257 623.619750 0 ] (Code/Window/:__span-0-418) [ 2094 0 R /XYZ 60.307257 610.219398 0 ] (Code/Window/:__span-0-419) [ 2094 0 R /XYZ 60.307257 596.819046 0 ] (Code/Window/:__span-0-42) [ 2076 0 R /XYZ 60.307257 144.820638 0 ] (Code/Window/:__span-0-420) [ 2094 0 R /XYZ 60.307257 583.418694 0 ] (Code/Window/:__span-0-421) [ 2094 0 R /XYZ 60.307257 570.018342 0 ] (Code/Window/:__span-0-422) [ 2094 0 R /XYZ 60.307257 556.617990 0 ] (Code/Window/:__span-0-423) [ 2094 0 R /XYZ 60.307257 543.217638 0 ] (Code/Window/:__span-0-424) [ 2094 0 R /XYZ 60.307257 529.817286 0 ] (Code/Window/:__span-0-425) [ 2094 0 R /XYZ 60.307257 516.416934 0 ] (Code/Window/:__span-0-426) [ 2094 0 R /XYZ 60.307257 503.016582 0 ] (Code/Window/:__span-0-427) [ 2094 0 R /XYZ 60.307257 489.616230 0 ] (Code/Window/:__span-0-428) [ 2094 0 R /XYZ 60.307257 476.215878 0 ] (Code/Window/:__span-0-429) [ 2094 0 R /XYZ 60.307257 462.815526 0 ] (Code/Window/:__span-0-43) [ 2076 0 R /XYZ 60.307257 131.420286 0 ] (Code/Window/:__span-0-430) [ 2094 0 R /XYZ 60.307257 449.415174 0 ] (Code/Window/:__span-0-431) [ 2094 0 R /XYZ 60.307257 436.014822 0 ] (Code/Window/:__span-0-432) [ 2094 0 R /XYZ 60.307257 422.614470 0 ] (Code/Window/:__span-0-433) [ 2094 0 R /XYZ 60.307257 409.214118 0 ] (Code/Window/:__span-0-434) [ 2094 0 R /XYZ 60.307257 395.813766 0 ] (Code/Window/:__span-0-435) [ 2094 0 R /XYZ 60.307257 382.413414 0 ] (Code/Window/:__span-0-436) [ 2094 0 R /XYZ 60.307257 369.013062 0 ] (Code/Window/:__span-0-437) [ 2094 0 R /XYZ 60.307257 355.612710 0 ] (Code/Window/:__span-0-438) [ 2094 0 R /XYZ 60.307257 342.212358 0 ] (Code/Window/:__span-0-439) [ 2094 0 R /XYZ 60.307257 328.812006 0 ] (Code/Window/:__span-0-44) [ 2076 0 R /XYZ 60.307257 118.019934 0 ] (Code/Window/:__span-0-440) [ 2094 0 R /XYZ 60.307257 315.411654 0 ] (Code/Window/:__span-0-441) [ 2094 0 R /XYZ 60.307257 302.011302 0 ] (Code/Window/:__span-0-442) [ 2094 0 R /XYZ 60.307257 288.610950 0 ] (Code/Window/:__span-0-443) [ 2094 0 R /XYZ 60.307257 261.810246 0 ] (Code/Window/:__span-0-444) [ 2094 0 R /XYZ 60.307257 235.009542 0 ] (Code/Window/:__span-0-445) [ 2094 0 R /XYZ 60.307257 221.609190 0 ] (Code/Window/:__span-0-446) [ 2094 0 R /XYZ 60.307257 208.208838 0 ] (Code/Window/:__span-0-447) [ 2094 0 R /XYZ 60.307257 194.808486 0 ] (Code/Window/:__span-0-448) [ 2094 0 R /XYZ 60.307257 181.408134 0 ] (Code/Window/:__span-0-449) [ 2094 0 R /XYZ 60.307257 154.607430 0 ] (Code/Window/:__span-0-45) [ 2076 0 R /XYZ 60.307257 104.619582 0 ] (Code/Window/:__span-0-450) [ 2094 0 R /XYZ 60.307257 141.207078 0 ] (Code/Window/:__span-0-451) [ 2094 0 R /XYZ 60.307257 127.806726 0 ] (Code/Window/:__span-0-452) [ 2094 0 R /XYZ 60.307257 114.406374 0 ] (Code/Window/:__span-0-453) [ 2094 0 R /XYZ 60.307257 101.006022 0 ] (Code/Window/:__span-0-454) [ 2094 0 R /XYZ 60.307257 87.605670 0 ] (Code/Window/:__span-0-455) [ 2096 0 R /XYZ 60.307257 771.023622 0 ] (Code/Window/:__span-0-456) [ 2096 0 R /XYZ 60.307257 757.623270 0 ] (Code/Window/:__span-0-457) [ 2096 0 R /XYZ 60.307257 744.222918 0 ] (Code/Window/:__span-0-458) [ 2096 0 R /XYZ 60.307257 730.822566 0 ] (Code/Window/:__span-0-459) [ 2096 0 R /XYZ 60.307257 704.021862 0 ] (Code/Window/:__span-0-46) [ 2076 0 R /XYZ 60.307257 91.219230 0 ] (Code/Window/:__span-0-460) [ 2096 0 R /XYZ 60.307257 677.221158 0 ] (Code/Window/:__span-0-461) [ 2096 0 R /XYZ 60.307257 650.420454 0 ] (Code/Window/:__span-0-462) [ 2096 0 R /XYZ 60.307257 637.020102 0 ] (Code/Window/:__span-0-463) [ 2096 0 R /XYZ 60.307257 623.619750 0 ] (Code/Window/:__span-0-464) [ 2096 0 R /XYZ 60.307257 610.219398 0 ] (Code/Window/:__span-0-465) [ 2096 0 R /XYZ 60.307257 583.418694 0 ] (Code/Window/:__span-0-466) [ 2096 0 R /XYZ 60.307257 570.018342 0 ] (Code/Window/:__span-0-467) [ 2096 0 R /XYZ 60.307257 556.617990 0 ] (Code/Window/:__span-0-468) [ 2096 0 R /XYZ 60.307257 543.217638 0 ] (Code/Window/:__span-0-469) [ 2096 0 R /XYZ 60.307257 529.817286 0 ] (Code/Window/:__span-0-47) [ 2078 0 R /XYZ 60.307257 771.023622 0 ] (Code/Window/:__span-0-470) [ 2096 0 R /XYZ 60.307257 503.016582 0 ] (Code/Window/:__span-0-471) [ 2096 0 R /XYZ 60.307257 489.616230 0 ] (Code/Window/:__span-0-472) [ 2096 0 R /XYZ 60.307257 476.215878 0 ] (Code/Window/:__span-0-473) [ 2096 0 R /XYZ 60.307257 462.815526 0 ] (Code/Window/:__span-0-474) [ 2096 0 R /XYZ 60.307257 449.415174 0 ] (Code/Window/:__span-0-475) [ 2096 0 R /XYZ 60.307257 436.014822 0 ] (Code/Window/:__span-0-476) [ 2096 0 R /XYZ 60.307257 422.614470 0 ] (Code/Window/:__span-0-477) [ 2096 0 R /XYZ 60.307257 409.214118 0 ] (Code/Window/:__span-0-478) [ 2096 0 R /XYZ 60.307257 395.813766 0 ] (Code/Window/:__span-0-479) [ 2096 0 R /XYZ 60.307257 382.413414 0 ] (Code/Window/:__span-0-48) [ 2078 0 R /XYZ 60.307257 757.623270 0 ] (Code/Window/:__span-0-480) [ 2096 0 R /XYZ 60.307257 369.013062 0 ] (Code/Window/:__span-0-481) [ 2096 0 R /XYZ 60.307257 342.212358 0 ] (Code/Window/:__span-0-482) [ 2096 0 R /XYZ 60.307257 328.812006 0 ] (Code/Window/:__span-0-483) [ 2096 0 R /XYZ 60.307257 315.411654 0 ] (Code/Window/:__span-0-484) [ 2096 0 R /XYZ 60.307257 302.011302 0 ] (Code/Window/:__span-0-485) [ 2096 0 R /XYZ 60.307257 275.210598 0 ] (Code/Window/:__span-0-486) [ 2096 0 R /XYZ 60.307257 261.810246 0 ] (Code/Window/:__span-0-487) [ 2096 0 R /XYZ 60.307257 248.409894 0 ] (Code/Window/:__span-0-488) [ 2096 0 R /XYZ 60.307257 235.009542 0 ] (Code/Window/:__span-0-489) [ 2096 0 R /XYZ 60.307257 221.609190 0 ] (Code/Window/:__span-0-49) [ 2078 0 R /XYZ 60.307257 744.222918 0 ] (Code/Window/:__span-0-490) [ 2096 0 R /XYZ 60.307257 208.208838 0 ] (Code/Window/:__span-0-491) [ 2096 0 R /XYZ 60.307257 194.808486 0 ] (Code/Window/:__span-0-492) [ 2096 0 R /XYZ 60.307257 181.408134 0 ] (Code/Window/:__span-0-493) [ 2096 0 R /XYZ 60.307257 168.007782 0 ] (Code/Window/:__span-0-494) [ 2096 0 R /XYZ 60.307257 154.607430 0 ] (Code/Window/:__span-0-495) [ 2096 0 R /XYZ 60.307257 141.207078 0 ] (Code/Window/:__span-0-496) [ 2096 0 R /XYZ 60.307257 127.806726 0 ] (Code/Window/:__span-0-497) [ 2096 0 R /XYZ 60.307257 114.406374 0 ] (Code/Window/:__span-0-498) [ 2096 0 R /XYZ 60.307257 101.006022 0 ] (Code/Window/:__span-0-499) [ 2098 0 R /XYZ 60.307257 771.023622 0 ] (Code/Window/:__span-0-5) [ 2076 0 R /XYZ 60.307257 654.034014 0 ] (Code/Window/:__span-0-50) [ 2078 0 R /XYZ 60.307257 730.822566 0 ] (Code/Window/:__span-0-500) [ 2098 0 R /XYZ 60.307257 744.222918 0 ] (Code/Window/:__span-0-501) [ 2098 0 R /XYZ 60.307257 730.822566 0 ] (Code/Window/:__span-0-502) [ 2098 0 R /XYZ 60.307257 717.422214 0 ] (Code/Window/:__span-0-503) [ 2098 0 R /XYZ 60.307257 704.021862 0 ] (Code/Window/:__span-0-504) [ 2098 0 R /XYZ 60.307257 677.221158 0 ] (Code/Window/:__span-0-505) [ 2098 0 R /XYZ 60.307257 663.820806 0 ] (Code/Window/:__span-0-506) [ 2098 0 R /XYZ 60.307257 650.420454 0 ] (Code/Window/:__span-0-507) [ 2098 0 R /XYZ 60.307257 637.020102 0 ] (Code/Window/:__span-0-508) [ 2098 0 R /XYZ 60.307257 623.619750 0 ] (Code/Window/:__span-0-509) [ 2098 0 R /XYZ 60.307257 610.219398 0 ] (Code/Window/:__span-0-51) [ 2078 0 R /XYZ 60.307257 704.021862 0 ] (Code/Window/:__span-0-510) [ 2098 0 R /XYZ 60.307257 596.819046 0 ] (Code/Window/:__span-0-511) [ 2098 0 R /XYZ 60.307257 583.418694 0 ] (Code/Window/:__span-0-512) [ 2098 0 R /XYZ 60.307257 570.018342 0 ] (Code/Window/:__span-0-513) [ 2098 0 R /XYZ 60.307257 556.617990 0 ] (Code/Window/:__span-0-514) [ 2098 0 R /XYZ 60.307257 529.817286 0 ] (Code/Window/:__span-0-515) [ 2098 0 R /XYZ 60.307257 503.016582 0 ] (Code/Window/:__span-0-516) [ 2098 0 R /XYZ 60.307257 489.616230 0 ] (Code/Window/:__span-0-517) [ 2098 0 R /XYZ 60.307257 476.215878 0 ] (Code/Window/:__span-0-518) [ 2098 0 R /XYZ 60.307257 462.815526 0 ] (Code/Window/:__span-0-519) [ 2098 0 R /XYZ 60.307257 436.014822 0 ] (Code/Window/:__span-0-52) [ 2078 0 R /XYZ 60.307257 690.621510 0 ] (Code/Window/:__span-0-520) [ 2098 0 R /XYZ 60.307257 422.614470 0 ] (Code/Window/:__span-0-521) [ 2098 0 R /XYZ 60.307257 409.214118 0 ] (Code/Window/:__span-0-522) [ 2098 0 R /XYZ 60.307257 369.013062 0 ] (Code/Window/:__span-0-523) [ 2098 0 R /XYZ 60.307257 342.212358 0 ] (Code/Window/:__span-0-524) [ 2098 0 R /XYZ 60.307257 328.812006 0 ] (Code/Window/:__span-0-525) [ 2098 0 R /XYZ 60.307257 315.411654 0 ] (Code/Window/:__span-0-526) [ 2098 0 R /XYZ 60.307257 302.011302 0 ] (Code/Window/:__span-0-527) [ 2098 0 R /XYZ 60.307257 288.610950 0 ] (Code/Window/:__span-0-528) [ 2098 0 R /XYZ 60.307257 275.210598 0 ] (Code/Window/:__span-0-529) [ 2098 0 R /XYZ 60.307257 261.810246 0 ] (Code/Window/:__span-0-53) [ 2078 0 R /XYZ 60.307257 677.221158 0 ] (Code/Window/:__span-0-530) [ 2098 0 R /XYZ 60.307257 248.409894 0 ] (Code/Window/:__span-0-531) [ 2098 0 R /XYZ 60.307257 235.009542 0 ] (Code/Window/:__span-0-532) [ 2098 0 R /XYZ 60.307257 221.609190 0 ] (Code/Window/:__span-0-533) [ 2098 0 R /XYZ 60.307257 194.808486 0 ] (Code/Window/:__span-0-534) [ 2098 0 R /XYZ 60.307257 181.408134 0 ] (Code/Window/:__span-0-535) [ 2098 0 R /XYZ 60.307257 154.607430 0 ] (Code/Window/:__span-0-536) [ 2098 0 R /XYZ 60.307257 141.207078 0 ] (Code/Window/:__span-0-537) [ 2098 0 R /XYZ 60.307257 114.406374 0 ] (Code/Window/:__span-0-538) [ 2098 0 R /XYZ 60.307257 87.605670 0 ] (Code/Window/:__span-0-539) [ 2100 0 R /XYZ 60.307257 757.623270 0 ] (Code/Window/:__span-0-54) [ 2078 0 R /XYZ 60.307257 663.820806 0 ] (Code/Window/:__span-0-540) [ 2100 0 R /XYZ 60.307257 744.222918 0 ] (Code/Window/:__span-0-541) [ 2100 0 R /XYZ 60.307257 730.822566 0 ] (Code/Window/:__span-0-542) [ 2100 0 R /XYZ 60.307257 717.422214 0 ] (Code/Window/:__span-0-543) [ 2100 0 R /XYZ 60.307257 690.621510 0 ] (Code/Window/:__span-0-544) [ 2100 0 R /XYZ 60.307257 677.221158 0 ] (Code/Window/:__span-0-545) [ 2100 0 R /XYZ 60.307257 663.820806 0 ] (Code/Window/:__span-0-546) [ 2100 0 R /XYZ 60.307257 650.420454 0 ] (Code/Window/:__span-0-547) [ 2100 0 R /XYZ 60.307257 637.020102 0 ] (Code/Window/:__span-0-548) [ 2100 0 R /XYZ 60.307257 623.619750 0 ] (Code/Window/:__span-0-549) [ 2100 0 R /XYZ 60.307257 610.219398 0 ] (Code/Window/:__span-0-55) [ 2078 0 R /XYZ 60.307257 650.420454 0 ] (Code/Window/:__span-0-550) [ 2100 0 R /XYZ 60.307257 596.819046 0 ] (Code/Window/:__span-0-551) [ 2100 0 R /XYZ 60.307257 583.418694 0 ] (Code/Window/:__span-0-552) [ 2100 0 R /XYZ 60.307257 570.018342 0 ] (Code/Window/:__span-0-553) [ 2100 0 R /XYZ 60.307257 556.617990 0 ] (Code/Window/:__span-0-554) [ 2100 0 R /XYZ 60.307257 543.217638 0 ] (Code/Window/:__span-0-555) [ 2100 0 R /XYZ 60.307257 529.817286 0 ] (Code/Window/:__span-0-556) [ 2100 0 R /XYZ 60.307257 516.416934 0 ] (Code/Window/:__span-0-557) [ 2100 0 R /XYZ 60.307257 503.016582 0 ] (Code/Window/:__span-0-558) [ 2100 0 R /XYZ 60.307257 489.616230 0 ] (Code/Window/:__span-0-559) [ 2100 0 R /XYZ 60.307257 476.215878 0 ] (Code/Window/:__span-0-56) [ 2078 0 R /XYZ 60.307257 637.020102 0 ] (Code/Window/:__span-0-560) [ 2100 0 R /XYZ 60.307257 462.815526 0 ] (Code/Window/:__span-0-561) [ 2100 0 R /XYZ 60.307257 449.415174 0 ] (Code/Window/:__span-0-562) [ 2100 0 R /XYZ 60.307257 436.014822 0 ] (Code/Window/:__span-0-563) [ 2100 0 R /XYZ 60.307257 422.614470 0 ] (Code/Window/:__span-0-564) [ 2100 0 R /XYZ 60.307257 409.214118 0 ] (Code/Window/:__span-0-565) [ 2100 0 R /XYZ 60.307257 395.813766 0 ] (Code/Window/:__span-0-566) [ 2100 0 R /XYZ 60.307257 382.413414 0 ] (Code/Window/:__span-0-567) [ 2100 0 R /XYZ 60.307257 369.013062 0 ] (Code/Window/:__span-0-568) [ 2100 0 R /XYZ 60.307257 355.612710 0 ] (Code/Window/:__span-0-569) [ 2100 0 R /XYZ 60.307257 342.212358 0 ] (Code/Window/:__span-0-57) [ 2078 0 R /XYZ 60.307257 623.619750 0 ] (Code/Window/:__span-0-570) [ 2100 0 R /XYZ 60.307257 328.812006 0 ] (Code/Window/:__span-0-571) [ 2100 0 R /XYZ 60.307257 302.011302 0 ] (Code/Window/:__span-0-572) [ 2100 0 R /XYZ 60.307257 288.610950 0 ] (Code/Window/:__span-0-573) [ 2100 0 R /XYZ 60.307257 275.210598 0 ] (Code/Window/:__span-0-574) [ 2100 0 R /XYZ 60.307257 248.409894 0 ] (Code/Window/:__span-0-575) [ 2100 0 R /XYZ 60.307257 235.009542 0 ] (Code/Window/:__span-0-576) [ 2100 0 R /XYZ 60.307257 208.208838 0 ] (Code/Window/:__span-0-577) [ 2100 0 R /XYZ 60.307257 194.808486 0 ] (Code/Window/:__span-0-578) [ 2100 0 R /XYZ 60.307257 181.408134 0 ] (Code/Window/:__span-0-579) [ 2100 0 R /XYZ 60.307257 168.007782 0 ] (Code/Window/:__span-0-58) [ 2078 0 R /XYZ 60.307257 610.219398 0 ] (Code/Window/:__span-0-580) [ 2100 0 R /XYZ 60.307257 154.607430 0 ] (Code/Window/:__span-0-581) [ 2100 0 R /XYZ 60.307257 141.207078 0 ] (Code/Window/:__span-0-582) [ 2100 0 R /XYZ 60.307257 127.806726 0 ] (Code/Window/:__span-0-583) [ 2100 0 R /XYZ 60.307257 114.406374 0 ] (Code/Window/:__span-0-584) [ 2100 0 R /XYZ 60.307257 101.006022 0 ] (Code/Window/:__span-0-585) [ 2100 0 R /XYZ 60.307257 87.605670 0 ] (Code/Window/:__span-0-586) [ 2102 0 R /XYZ 60.307257 771.023622 0 ] (Code/Window/:__span-0-587) [ 2102 0 R /XYZ 60.307257 757.623270 0 ] (Code/Window/:__span-0-588) [ 2102 0 R /XYZ 60.307257 744.222918 0 ] (Code/Window/:__span-0-589) [ 2102 0 R /XYZ 60.307257 730.822566 0 ] (Code/Window/:__span-0-59) [ 2078 0 R /XYZ 60.307257 596.819046 0 ] (Code/Window/:__span-0-590) [ 2102 0 R /XYZ 60.307257 717.422214 0 ] (Code/Window/:__span-0-591) [ 2102 0 R /XYZ 60.307257 704.021862 0 ] (Code/Window/:__span-0-592) [ 2102 0 R /XYZ 60.307257 690.621510 0 ] (Code/Window/:__span-0-593) [ 2102 0 R /XYZ 60.307257 677.221158 0 ] (Code/Window/:__span-0-594) [ 2102 0 R /XYZ 60.307257 663.820806 0 ] (Code/Window/:__span-0-595) [ 2102 0 R /XYZ 60.307257 650.420454 0 ] (Code/Window/:__span-0-596) [ 2102 0 R /XYZ 60.307257 637.020102 0 ] (Code/Window/:__span-0-597) [ 2102 0 R /XYZ 60.307257 623.619750 0 ] (Code/Window/:__span-0-598) [ 2102 0 R /XYZ 60.307257 610.219398 0 ] (Code/Window/:__span-0-599) [ 2102 0 R /XYZ 60.307257 596.819046 0 ] (Code/Window/:__span-0-6) [ 2076 0 R /XYZ 60.307257 640.633662 0 ] (Code/Window/:__span-0-60) [ 2078 0 R /XYZ 60.307257 570.018342 0 ] (Code/Window/:__span-0-600) [ 2102 0 R /XYZ 60.307257 583.418694 0 ] (Code/Window/:__span-0-601) [ 2102 0 R /XYZ 60.307257 570.018342 0 ] (Code/Window/:__span-0-602) [ 2102 0 R /XYZ 60.307257 556.617990 0 ] (Code/Window/:__span-0-603) [ 2102 0 R /XYZ 60.307257 529.817286 0 ] (Code/Window/:__span-0-604) [ 2102 0 R /XYZ 60.307257 503.016582 0 ] (Code/Window/:__span-0-605) [ 2102 0 R /XYZ 60.307257 489.616230 0 ] (Code/Window/:__span-0-606) [ 2102 0 R /XYZ 60.307257 462.815526 0 ] (Code/Window/:__span-0-607) [ 2102 0 R /XYZ 60.307257 449.415174 0 ] (Code/Window/:__span-0-608) [ 2102 0 R /XYZ 60.307257 422.614470 0 ] (Code/Window/:__span-0-609) [ 2102 0 R /XYZ 60.307257 409.214118 0 ] (Code/Window/:__span-0-61) [ 2078 0 R /XYZ 60.307257 556.617990 0 ] (Code/Window/:__span-0-610) [ 2102 0 R /XYZ 60.307257 382.413414 0 ] (Code/Window/:__span-0-611) [ 2102 0 R /XYZ 60.307257 369.013062 0 ] (Code/Window/:__span-0-612) [ 2102 0 R /XYZ 60.307257 355.612710 0 ] (Code/Window/:__span-0-613) [ 2102 0 R /XYZ 60.307257 342.212358 0 ] (Code/Window/:__span-0-614) [ 2102 0 R /XYZ 60.307257 328.812006 0 ] (Code/Window/:__span-0-615) [ 2102 0 R /XYZ 60.307257 315.411654 0 ] (Code/Window/:__span-0-616) [ 2102 0 R /XYZ 60.307257 302.011302 0 ] (Code/Window/:__span-0-617) [ 2102 0 R /XYZ 60.307257 288.610950 0 ] (Code/Window/:__span-0-618) [ 2102 0 R /XYZ 60.307257 275.210598 0 ] (Code/Window/:__span-0-619) [ 2102 0 R /XYZ 60.307257 248.409894 0 ] (Code/Window/:__span-0-62) [ 2078 0 R /XYZ 60.307257 543.217638 0 ] (Code/Window/:__span-0-620) [ 2102 0 R /XYZ 60.307257 235.009542 0 ] (Code/Window/:__span-0-621) [ 2102 0 R /XYZ 60.307257 221.609190 0 ] (Code/Window/:__span-0-622) [ 2102 0 R /XYZ 60.307257 208.208838 0 ] (Code/Window/:__span-0-623) [ 2102 0 R /XYZ 60.307257 194.808486 0 ] (Code/Window/:__span-0-624) [ 2102 0 R /XYZ 60.307257 181.408134 0 ] (Code/Window/:__span-0-625) [ 2102 0 R /XYZ 60.307257 168.007782 0 ] (Code/Window/:__span-0-626) [ 2102 0 R /XYZ 60.307257 154.607430 0 ] (Code/Window/:__span-0-627) [ 2102 0 R /XYZ 60.307257 141.207078 0 ] (Code/Window/:__span-0-628) [ 2102 0 R /XYZ 60.307257 127.806726 0 ] (Code/Window/:__span-0-629) [ 2102 0 R /XYZ 60.307257 114.406374 0 ] (Code/Window/:__span-0-63) [ 2078 0 R /XYZ 60.307257 529.817286 0 ] (Code/Window/:__span-0-630) [ 2102 0 R /XYZ 60.307257 101.006022 0 ] (Code/Window/:__span-0-631) [ 2102 0 R /XYZ 60.307257 87.605670 0 ] (Code/Window/:__span-0-632) [ 2104 0 R /XYZ 60.307257 771.023622 0 ] (Code/Window/:__span-0-633) [ 2104 0 R /XYZ 60.307257 757.623270 0 ] (Code/Window/:__span-0-634) [ 2104 0 R /XYZ 60.307257 744.222918 0 ] (Code/Window/:__span-0-635) [ 2104 0 R /XYZ 60.307257 730.822566 0 ] (Code/Window/:__span-0-636) [ 2104 0 R /XYZ 60.307257 717.422214 0 ] (Code/Window/:__span-0-637) [ 2104 0 R /XYZ 60.307257 704.021862 0 ] (Code/Window/:__span-0-638) [ 2104 0 R /XYZ 60.307257 690.621510 0 ] (Code/Window/:__span-0-639) [ 2104 0 R /XYZ 60.307257 677.221158 0 ] (Code/Window/:__span-0-64) [ 2078 0 R /XYZ 60.307257 516.416934 0 ] (Code/Window/:__span-0-640) [ 2104 0 R /XYZ 60.307257 663.820806 0 ] (Code/Window/:__span-0-641) [ 2104 0 R /XYZ 60.307257 650.420454 0 ] (Code/Window/:__span-0-642) [ 2104 0 R /XYZ 60.307257 637.020102 0 ] (Code/Window/:__span-0-643) [ 2104 0 R /XYZ 60.307257 623.619750 0 ] (Code/Window/:__span-0-644) [ 2104 0 R /XYZ 60.307257 610.219398 0 ] (Code/Window/:__span-0-645) [ 2104 0 R /XYZ 60.307257 596.819046 0 ] (Code/Window/:__span-0-646) [ 2104 0 R /XYZ 60.307257 583.418694 0 ] (Code/Window/:__span-0-647) [ 2104 0 R /XYZ 60.307257 570.018342 0 ] (Code/Window/:__span-0-648) [ 2104 0 R /XYZ 60.307257 556.617990 0 ] (Code/Window/:__span-0-649) [ 2104 0 R /XYZ 60.307257 543.217638 0 ] (Code/Window/:__span-0-65) [ 2078 0 R /XYZ 60.307257 503.016582 0 ] (Code/Window/:__span-0-650) [ 2104 0 R /XYZ 60.307257 529.817286 0 ] (Code/Window/:__span-0-651) [ 2104 0 R /XYZ 60.307257 516.416934 0 ] (Code/Window/:__span-0-652) [ 2104 0 R /XYZ 60.307257 503.016582 0 ] (Code/Window/:__span-0-653) [ 2104 0 R /XYZ 60.307257 489.616230 0 ] (Code/Window/:__span-0-654) [ 2104 0 R /XYZ 60.307257 476.215878 0 ] (Code/Window/:__span-0-655) [ 2104 0 R /XYZ 60.307257 462.815526 0 ] (Code/Window/:__span-0-656) [ 2104 0 R /XYZ 60.307257 449.415174 0 ] (Code/Window/:__span-0-657) [ 2104 0 R /XYZ 60.307257 436.014822 0 ] (Code/Window/:__span-0-658) [ 2104 0 R /XYZ 60.307257 422.614470 0 ] (Code/Window/:__span-0-659) [ 2104 0 R /XYZ 60.307257 409.214118 0 ] (Code/Window/:__span-0-66) [ 2078 0 R /XYZ 60.307257 489.616230 0 ] (Code/Window/:__span-0-660) [ 2104 0 R /XYZ 60.307257 395.813766 0 ] (Code/Window/:__span-0-661) [ 2104 0 R /XYZ 60.307257 382.413414 0 ] (Code/Window/:__span-0-662) [ 2104 0 R /XYZ 60.307257 369.013062 0 ] (Code/Window/:__span-0-663) [ 2104 0 R /XYZ 60.307257 355.612710 0 ] (Code/Window/:__span-0-664) [ 2104 0 R /XYZ 60.307257 342.212358 0 ] (Code/Window/:__span-0-665) [ 2104 0 R /XYZ 60.307257 328.812006 0 ] (Code/Window/:__span-0-666) [ 2104 0 R /XYZ 60.307257 315.411654 0 ] (Code/Window/:__span-0-667) [ 2104 0 R /XYZ 60.307257 302.011302 0 ] (Code/Window/:__span-0-668) [ 2104 0 R /XYZ 60.307257 288.610950 0 ] (Code/Window/:__span-0-669) [ 2104 0 R /XYZ 60.307257 275.210598 0 ] (Code/Window/:__span-0-67) [ 2078 0 R /XYZ 60.307257 462.815526 0 ] (Code/Window/:__span-0-670) [ 2104 0 R /XYZ 60.307257 248.409894 0 ] (Code/Window/:__span-0-671) [ 2104 0 R /XYZ 60.307257 235.009542 0 ] (Code/Window/:__span-0-672) [ 2104 0 R /XYZ 60.307257 221.609190 0 ] (Code/Window/:__span-0-673) [ 2104 0 R /XYZ 60.307257 208.208838 0 ] (Code/Window/:__span-0-674) [ 2104 0 R /XYZ 60.307257 194.808486 0 ] (Code/Window/:__span-0-675) [ 2104 0 R /XYZ 60.307257 181.408134 0 ] (Code/Window/:__span-0-676) [ 2104 0 R /XYZ 60.307257 168.007782 0 ] (Code/Window/:__span-0-68) [ 2078 0 R /XYZ 60.307257 449.415174 0 ] (Code/Window/:__span-0-69) [ 2078 0 R /XYZ 60.307257 436.014822 0 ] (Code/Window/:__span-0-7) [ 2076 0 R /XYZ 60.307257 627.233310 0 ] (Code/Window/:__span-0-70) [ 2078 0 R /XYZ 60.307257 422.614470 0 ] (Code/Window/:__span-0-71) [ 2078 0 R /XYZ 60.307257 409.214118 0 ] (Code/Window/:__span-0-72) [ 2078 0 R /XYZ 60.307257 395.813766 0 ] (Code/Window/:__span-0-73) [ 2078 0 R /XYZ 60.307257 382.413414 0 ] (Code/Window/:__span-0-74) [ 2078 0 R /XYZ 60.307257 369.013062 0 ] (Code/Window/:__span-0-75) [ 2078 0 R /XYZ 60.307257 355.612710 0 ] (Code/Window/:__span-0-76) [ 2078 0 R /XYZ 60.307257 342.212358 0 ] (Code/Window/:__span-0-77) [ 2078 0 R /XYZ 60.307257 328.812006 0 ] (Code/Window/:__span-0-78) [ 2078 0 R /XYZ 60.307257 315.411654 0 ] (Code/Window/:__span-0-79) [ 2078 0 R /XYZ 60.307257 302.011302 0 ] (Code/Window/:__span-0-8) [ 2076 0 R /XYZ 60.307257 613.832958 0 ] (Code/Window/:__span-0-80) [ 2078 0 R /XYZ 60.307257 288.610950 0 ] (Code/Window/:__span-0-81) [ 2078 0 R /XYZ 60.307257 275.210598 0 ] (Code/Window/:__span-0-82) [ 2078 0 R /XYZ 60.307257 261.810246 0 ] (Code/Window/:__span-0-83) [ 2078 0 R /XYZ 60.307257 248.409894 0 ] (Code/Window/:__span-0-84) [ 2078 0 R /XYZ 60.307257 235.009542 0 ] (Code/Window/:__span-0-85) [ 2078 0 R /XYZ 60.307257 221.609190 0 ] (Code/Window/:__span-0-86) [ 2078 0 R /XYZ 60.307257 208.208838 0 ] (Code/Window/:__span-0-87) [ 2078 0 R /XYZ 60.307257 194.808486 0 ] (Code/Window/:__span-0-88) [ 2078 0 R /XYZ 60.307257 181.408134 0 ] (Code/Window/:__span-0-89) [ 2078 0 R /XYZ 60.307257 168.007782 0 ] (Code/Window/:__span-0-9) [ 2076 0 R /XYZ 60.307257 600.432606 0 ] (Code/Window/:__span-0-90) [ 2078 0 R /XYZ 60.307257 154.607430 0 ] (Code/Window/:__span-0-91) [ 2078 0 R /XYZ 60.307257 141.207078 0 ] (Code/Window/:__span-0-92) [ 2078 0 R /XYZ 60.307257 114.406374 0 ] (Code/Window/:__span-0-93) [ 2078 0 R /XYZ 60.307257 101.006022 0 ] (Code/Window/:__span-0-94) [ 2080 0 R /XYZ 60.307257 771.023622 0 ] (Code/Window/:__span-0-95) [ 2080 0 R /XYZ 60.307257 757.623270 0 ] (Code/Window/:__span-0-96) [ 2080 0 R /XYZ 60.307257 744.222918 0 ] (Code/Window/:__span-0-97) [ 2080 0 R /XYZ 60.307257 730.822566 0 ] (Code/Window/:__span-0-98) [ 2080 0 R /XYZ 60.307257 717.422214 0 ] (Code/Window/:__span-0-99) [ 2080 0 R /XYZ 60.307257 704.021862 0 ] (Code/Window/:windowcs) [ 2076 0 R /XYZ 39.386457 747.563622 0 ] (Code/Zone/:) [ 1956 0 R /XYZ 39.386457 747.563622 0 ] (Code/Zone/:__span-0-1) [ 1956 0 R /XYZ 60.307257 707.635422 0 ] (Code/Zone/:__span-0-10) [ 1956 0 R /XYZ 60.307257 573.631902 0 ] (Code/Zone/:__span-0-100) [ 1960 0 R /XYZ 60.307257 623.619750 0 ] (Code/Zone/:__span-0-101) [ 1960 0 R /XYZ 60.307257 610.219398 0 ] (Code/Zone/:__span-0-102) [ 1960 0 R /XYZ 60.307257 583.418694 0 ] (Code/Zone/:__span-0-103) [ 1960 0 R /XYZ 60.307257 570.018342 0 ] (Code/Zone/:__span-0-104) [ 1960 0 R /XYZ 60.307257 556.617990 0 ] (Code/Zone/:__span-0-105) [ 1960 0 R /XYZ 60.307257 543.217638 0 ] (Code/Zone/:__span-0-106) [ 1960 0 R /XYZ 60.307257 516.416934 0 ] (Code/Zone/:__span-0-107) [ 1960 0 R /XYZ 60.307257 503.016582 0 ] (Code/Zone/:__span-0-108) [ 1960 0 R /XYZ 60.307257 489.616230 0 ] (Code/Zone/:__span-0-109) [ 1960 0 R /XYZ 60.307257 476.215878 0 ] (Code/Zone/:__span-0-11) [ 1956 0 R /XYZ 60.307257 560.231550 0 ] (Code/Zone/:__span-0-110) [ 1960 0 R /XYZ 60.307257 462.815526 0 ] (Code/Zone/:__span-0-111) [ 1960 0 R /XYZ 60.307257 449.415174 0 ] (Code/Zone/:__span-0-112) [ 1960 0 R /XYZ 60.307257 436.014822 0 ] (Code/Zone/:__span-0-113) [ 1960 0 R /XYZ 60.307257 422.614470 0 ] (Code/Zone/:__span-0-114) [ 1960 0 R /XYZ 60.307257 409.214118 0 ] (Code/Zone/:__span-0-115) [ 1960 0 R /XYZ 60.307257 395.813766 0 ] (Code/Zone/:__span-0-116) [ 1960 0 R /XYZ 60.307257 382.413414 0 ] (Code/Zone/:__span-0-117) [ 1960 0 R /XYZ 60.307257 369.013062 0 ] (Code/Zone/:__span-0-118) [ 1960 0 R /XYZ 60.307257 355.612710 0 ] (Code/Zone/:__span-0-119) [ 1960 0 R /XYZ 60.307257 342.212358 0 ] (Code/Zone/:__span-0-12) [ 1956 0 R /XYZ 60.307257 546.831198 0 ] (Code/Zone/:__span-0-120) [ 1960 0 R /XYZ 60.307257 328.812006 0 ] (Code/Zone/:__span-0-121) [ 1960 0 R /XYZ 60.307257 315.411654 0 ] (Code/Zone/:__span-0-122) [ 1960 0 R /XYZ 60.307257 302.011302 0 ] (Code/Zone/:__span-0-123) [ 1960 0 R /XYZ 60.307257 288.610950 0 ] (Code/Zone/:__span-0-124) [ 1960 0 R /XYZ 60.307257 275.210598 0 ] (Code/Zone/:__span-0-125) [ 1960 0 R /XYZ 60.307257 261.810246 0 ] (Code/Zone/:__span-0-126) [ 1960 0 R /XYZ 60.307257 248.409894 0 ] (Code/Zone/:__span-0-127) [ 1960 0 R /XYZ 60.307257 235.009542 0 ] (Code/Zone/:__span-0-128) [ 1960 0 R /XYZ 60.307257 221.609190 0 ] (Code/Zone/:__span-0-129) [ 1960 0 R /XYZ 60.307257 208.208838 0 ] (Code/Zone/:__span-0-13) [ 1956 0 R /XYZ 60.307257 533.430846 0 ] (Code/Zone/:__span-0-130) [ 1960 0 R /XYZ 60.307257 194.808486 0 ] (Code/Zone/:__span-0-131) [ 1960 0 R /XYZ 60.307257 181.408134 0 ] (Code/Zone/:__span-0-132) [ 1960 0 R /XYZ 60.307257 168.007782 0 ] (Code/Zone/:__span-0-133) [ 1960 0 R /XYZ 60.307257 154.607430 0 ] (Code/Zone/:__span-0-134) [ 1960 0 R /XYZ 60.307257 141.207078 0 ] (Code/Zone/:__span-0-135) [ 1960 0 R /XYZ 60.307257 127.806726 0 ] (Code/Zone/:__span-0-136) [ 1960 0 R /XYZ 60.307257 114.406374 0 ] (Code/Zone/:__span-0-137) [ 1960 0 R /XYZ 60.307257 101.006022 0 ] (Code/Zone/:__span-0-138) [ 1960 0 R /XYZ 60.307257 87.605670 0 ] (Code/Zone/:__span-0-139) [ 1962 0 R /XYZ 60.307257 771.023622 0 ] (Code/Zone/:__span-0-14) [ 1956 0 R /XYZ 60.307257 520.030494 0 ] (Code/Zone/:__span-0-140) [ 1962 0 R /XYZ 60.307257 757.623270 0 ] (Code/Zone/:__span-0-141) [ 1962 0 R /XYZ 60.307257 744.222918 0 ] (Code/Zone/:__span-0-142) [ 1962 0 R /XYZ 60.307257 730.822566 0 ] (Code/Zone/:__span-0-143) [ 1962 0 R /XYZ 60.307257 717.422214 0 ] (Code/Zone/:__span-0-144) [ 1962 0 R /XYZ 60.307257 690.621510 0 ] (Code/Zone/:__span-0-145) [ 1962 0 R /XYZ 60.307257 677.221158 0 ] (Code/Zone/:__span-0-146) [ 1962 0 R /XYZ 60.307257 663.820806 0 ] (Code/Zone/:__span-0-147) [ 1962 0 R /XYZ 60.307257 650.420454 0 ] (Code/Zone/:__span-0-148) [ 1962 0 R /XYZ 60.307257 623.619750 0 ] (Code/Zone/:__span-0-149) [ 1962 0 R /XYZ 60.307257 596.819046 0 ] (Code/Zone/:__span-0-15) [ 1956 0 R /XYZ 60.307257 506.630142 0 ] (Code/Zone/:__span-0-150) [ 1962 0 R /XYZ 60.307257 583.418694 0 ] (Code/Zone/:__span-0-151) [ 1962 0 R /XYZ 60.307257 570.018342 0 ] (Code/Zone/:__span-0-152) [ 1962 0 R /XYZ 60.307257 556.617990 0 ] (Code/Zone/:__span-0-153) [ 1962 0 R /XYZ 60.307257 529.817286 0 ] (Code/Zone/:__span-0-154) [ 1962 0 R /XYZ 60.307257 516.416934 0 ] (Code/Zone/:__span-0-155) [ 1962 0 R /XYZ 60.307257 503.016582 0 ] (Code/Zone/:__span-0-156) [ 1962 0 R /XYZ 60.307257 489.616230 0 ] (Code/Zone/:__span-0-157) [ 1962 0 R /XYZ 60.307257 476.215878 0 ] (Code/Zone/:__span-0-158) [ 1962 0 R /XYZ 60.307257 462.815526 0 ] (Code/Zone/:__span-0-159) [ 1962 0 R /XYZ 60.307257 449.415174 0 ] (Code/Zone/:__span-0-16) [ 1956 0 R /XYZ 60.307257 493.229790 0 ] (Code/Zone/:__span-0-160) [ 1962 0 R /XYZ 60.307257 436.014822 0 ] (Code/Zone/:__span-0-161) [ 1962 0 R /XYZ 60.307257 422.614470 0 ] (Code/Zone/:__span-0-162) [ 1962 0 R /XYZ 60.307257 409.214118 0 ] (Code/Zone/:__span-0-163) [ 1962 0 R /XYZ 60.307257 395.813766 0 ] (Code/Zone/:__span-0-164) [ 1962 0 R /XYZ 60.307257 382.413414 0 ] (Code/Zone/:__span-0-165) [ 1962 0 R /XYZ 60.307257 369.013062 0 ] (Code/Zone/:__span-0-166) [ 1962 0 R /XYZ 60.307257 355.612710 0 ] (Code/Zone/:__span-0-167) [ 1962 0 R /XYZ 60.307257 342.212358 0 ] (Code/Zone/:__span-0-168) [ 1962 0 R /XYZ 60.307257 328.812006 0 ] (Code/Zone/:__span-0-169) [ 1962 0 R /XYZ 60.307257 315.411654 0 ] (Code/Zone/:__span-0-17) [ 1956 0 R /XYZ 60.307257 479.829438 0 ] (Code/Zone/:__span-0-170) [ 1962 0 R /XYZ 60.307257 302.011302 0 ] (Code/Zone/:__span-0-171) [ 1962 0 R /XYZ 60.307257 288.610950 0 ] (Code/Zone/:__span-0-172) [ 1962 0 R /XYZ 60.307257 261.810246 0 ] (Code/Zone/:__span-0-173) [ 1962 0 R /XYZ 60.307257 248.409894 0 ] (Code/Zone/:__span-0-174) [ 1962 0 R /XYZ 60.307257 235.009542 0 ] (Code/Zone/:__span-0-175) [ 1962 0 R /XYZ 60.307257 221.609190 0 ] (Code/Zone/:__span-0-176) [ 1962 0 R /XYZ 60.307257 181.408134 0 ] (Code/Zone/:__span-0-177) [ 1962 0 R /XYZ 60.307257 168.007782 0 ] (Code/Zone/:__span-0-178) [ 1962 0 R /XYZ 60.307257 154.607430 0 ] (Code/Zone/:__span-0-179) [ 1962 0 R /XYZ 60.307257 141.207078 0 ] (Code/Zone/:__span-0-18) [ 1956 0 R /XYZ 60.307257 466.429086 0 ] (Code/Zone/:__span-0-180) [ 1962 0 R /XYZ 60.307257 127.806726 0 ] (Code/Zone/:__span-0-181) [ 1962 0 R /XYZ 60.307257 114.406374 0 ] (Code/Zone/:__span-0-182) [ 1962 0 R /XYZ 60.307257 101.006022 0 ] (Code/Zone/:__span-0-183) [ 1962 0 R /XYZ 60.307257 87.605670 0 ] (Code/Zone/:__span-0-184) [ 1964 0 R /XYZ 60.307257 771.023622 0 ] (Code/Zone/:__span-0-185) [ 1964 0 R /XYZ 60.307257 757.623270 0 ] (Code/Zone/:__span-0-19) [ 1956 0 R /XYZ 60.307257 453.028734 0 ] (Code/Zone/:__span-0-2) [ 1956 0 R /XYZ 60.307257 694.235070 0 ] (Code/Zone/:__span-0-20) [ 1956 0 R /XYZ 60.307257 439.628382 0 ] (Code/Zone/:__span-0-21) [ 1956 0 R /XYZ 60.307257 426.228030 0 ] (Code/Zone/:__span-0-22) [ 1956 0 R /XYZ 60.307257 412.827678 0 ] (Code/Zone/:__span-0-23) [ 1956 0 R /XYZ 60.307257 399.427326 0 ] (Code/Zone/:__span-0-24) [ 1956 0 R /XYZ 60.307257 386.026974 0 ] (Code/Zone/:__span-0-25) [ 1956 0 R /XYZ 60.307257 372.626622 0 ] (Code/Zone/:__span-0-26) [ 1956 0 R /XYZ 60.307257 359.226270 0 ] (Code/Zone/:__span-0-27) [ 1956 0 R /XYZ 60.307257 345.825918 0 ] (Code/Zone/:__span-0-28) [ 1956 0 R /XYZ 60.307257 332.425566 0 ] (Code/Zone/:__span-0-29) [ 1956 0 R /XYZ 60.307257 319.025214 0 ] (Code/Zone/:__span-0-3) [ 1956 0 R /XYZ 60.307257 680.834718 0 ] (Code/Zone/:__span-0-30) [ 1956 0 R /XYZ 60.307257 305.624862 0 ] (Code/Zone/:__span-0-31) [ 1956 0 R /XYZ 60.307257 292.224510 0 ] (Code/Zone/:__span-0-32) [ 1956 0 R /XYZ 60.307257 265.423806 0 ] (Code/Zone/:__span-0-33) [ 1956 0 R /XYZ 60.307257 252.023454 0 ] (Code/Zone/:__span-0-34) [ 1956 0 R /XYZ 60.307257 238.623102 0 ] (Code/Zone/:__span-0-35) [ 1956 0 R /XYZ 60.307257 225.222750 0 ] (Code/Zone/:__span-0-36) [ 1956 0 R /XYZ 60.307257 211.822398 0 ] (Code/Zone/:__span-0-37) [ 1956 0 R /XYZ 60.307257 198.422046 0 ] (Code/Zone/:__span-0-38) [ 1956 0 R /XYZ 60.307257 185.021694 0 ] (Code/Zone/:__span-0-39) [ 1956 0 R /XYZ 60.307257 171.621342 0 ] (Code/Zone/:__span-0-4) [ 1956 0 R /XYZ 60.307257 667.434366 0 ] (Code/Zone/:__span-0-40) [ 1956 0 R /XYZ 60.307257 158.220990 0 ] (Code/Zone/:__span-0-41) [ 1956 0 R /XYZ 60.307257 131.420286 0 ] (Code/Zone/:__span-0-42) [ 1956 0 R /XYZ 60.307257 118.019934 0 ] (Code/Zone/:__span-0-43) [ 1956 0 R /XYZ 60.307257 104.619582 0 ] (Code/Zone/:__span-0-44) [ 1956 0 R /XYZ 60.307257 91.219230 0 ] (Code/Zone/:__span-0-45) [ 1958 0 R /XYZ 60.307257 771.023622 0 ] (Code/Zone/:__span-0-46) [ 1958 0 R /XYZ 60.307257 757.623270 0 ] (Code/Zone/:__span-0-47) [ 1958 0 R /XYZ 60.307257 744.222918 0 ] (Code/Zone/:__span-0-48) [ 1958 0 R /XYZ 60.307257 730.822566 0 ] (Code/Zone/:__span-0-49) [ 1958 0 R /XYZ 60.307257 717.422214 0 ] (Code/Zone/:__span-0-5) [ 1956 0 R /XYZ 60.307257 640.633662 0 ] (Code/Zone/:__span-0-50) [ 1958 0 R /XYZ 60.307257 704.021862 0 ] (Code/Zone/:__span-0-51) [ 1958 0 R /XYZ 60.307257 690.621510 0 ] (Code/Zone/:__span-0-52) [ 1958 0 R /XYZ 60.307257 677.221158 0 ] (Code/Zone/:__span-0-53) [ 1958 0 R /XYZ 60.307257 650.420454 0 ] (Code/Zone/:__span-0-54) [ 1958 0 R /XYZ 60.307257 637.020102 0 ] (Code/Zone/:__span-0-55) [ 1958 0 R /XYZ 60.307257 610.219398 0 ] (Code/Zone/:__span-0-56) [ 1958 0 R /XYZ 60.307257 596.819046 0 ] (Code/Zone/:__span-0-57) [ 1958 0 R /XYZ 60.307257 583.418694 0 ] (Code/Zone/:__span-0-58) [ 1958 0 R /XYZ 60.307257 570.018342 0 ] (Code/Zone/:__span-0-59) [ 1958 0 R /XYZ 60.307257 556.617990 0 ] (Code/Zone/:__span-0-6) [ 1956 0 R /XYZ 60.307257 627.233310 0 ] (Code/Zone/:__span-0-60) [ 1958 0 R /XYZ 60.307257 543.217638 0 ] (Code/Zone/:__span-0-61) [ 1958 0 R /XYZ 60.307257 529.817286 0 ] (Code/Zone/:__span-0-62) [ 1958 0 R /XYZ 60.307257 503.016582 0 ] (Code/Zone/:__span-0-63) [ 1958 0 R /XYZ 60.307257 489.616230 0 ] (Code/Zone/:__span-0-64) [ 1958 0 R /XYZ 60.307257 476.215878 0 ] (Code/Zone/:__span-0-65) [ 1958 0 R /XYZ 60.307257 462.815526 0 ] (Code/Zone/:__span-0-66) [ 1958 0 R /XYZ 60.307257 449.415174 0 ] (Code/Zone/:__span-0-67) [ 1958 0 R /XYZ 60.307257 436.014822 0 ] (Code/Zone/:__span-0-68) [ 1958 0 R /XYZ 60.307257 422.614470 0 ] (Code/Zone/:__span-0-69) [ 1958 0 R /XYZ 60.307257 395.813766 0 ] (Code/Zone/:__span-0-7) [ 1956 0 R /XYZ 60.307257 613.832958 0 ] (Code/Zone/:__span-0-70) [ 1958 0 R /XYZ 60.307257 382.413414 0 ] (Code/Zone/:__span-0-71) [ 1958 0 R /XYZ 60.307257 369.013062 0 ] (Code/Zone/:__span-0-72) [ 1958 0 R /XYZ 60.307257 355.612710 0 ] (Code/Zone/:__span-0-73) [ 1958 0 R /XYZ 60.307257 342.212358 0 ] (Code/Zone/:__span-0-74) [ 1958 0 R /XYZ 60.307257 328.812006 0 ] (Code/Zone/:__span-0-75) [ 1958 0 R /XYZ 60.307257 315.411654 0 ] (Code/Zone/:__span-0-76) [ 1958 0 R /XYZ 60.307257 302.011302 0 ] (Code/Zone/:__span-0-77) [ 1958 0 R /XYZ 60.307257 288.610950 0 ] (Code/Zone/:__span-0-78) [ 1958 0 R /XYZ 60.307257 275.210598 0 ] (Code/Zone/:__span-0-79) [ 1958 0 R /XYZ 60.307257 261.810246 0 ] (Code/Zone/:__span-0-8) [ 1956 0 R /XYZ 60.307257 600.432606 0 ] (Code/Zone/:__span-0-80) [ 1958 0 R /XYZ 60.307257 248.409894 0 ] (Code/Zone/:__span-0-81) [ 1958 0 R /XYZ 60.307257 235.009542 0 ] (Code/Zone/:__span-0-82) [ 1958 0 R /XYZ 60.307257 221.609190 0 ] (Code/Zone/:__span-0-83) [ 1958 0 R /XYZ 60.307257 208.208838 0 ] (Code/Zone/:__span-0-84) [ 1958 0 R /XYZ 60.307257 194.808486 0 ] (Code/Zone/:__span-0-85) [ 1958 0 R /XYZ 60.307257 181.408134 0 ] (Code/Zone/:__span-0-86) [ 1958 0 R /XYZ 60.307257 168.007782 0 ] (Code/Zone/:__span-0-87) [ 1958 0 R /XYZ 60.307257 154.607430 0 ] (Code/Zone/:__span-0-88) [ 1958 0 R /XYZ 60.307257 141.207078 0 ] (Code/Zone/:__span-0-89) [ 1958 0 R /XYZ 60.307257 127.806726 0 ] (Code/Zone/:__span-0-9) [ 1956 0 R /XYZ 60.307257 587.032254 0 ] (Code/Zone/:__span-0-90) [ 1958 0 R /XYZ 60.307257 101.006022 0 ] (Code/Zone/:__span-0-91) [ 1958 0 R /XYZ 60.307257 87.605670 0 ] (Code/Zone/:__span-0-92) [ 1960 0 R /XYZ 60.307257 757.623270 0 ] (Code/Zone/:__span-0-93) [ 1960 0 R /XYZ 60.307257 730.822566 0 ] (Code/Zone/:__span-0-94) [ 1960 0 R /XYZ 60.307257 717.422214 0 ] (Code/Zone/:__span-0-95) [ 1960 0 R /XYZ 60.307257 704.021862 0 ] (Code/Zone/:__span-0-96) [ 1960 0 R /XYZ 60.307257 690.621510 0 ] (Code/Zone/:__span-0-97) [ 1960 0 R /XYZ 60.307257 677.221158 0 ] (Code/Zone/:__span-0-98) [ 1960 0 R /XYZ 60.307257 663.820806 0 ] (Code/Zone/:__span-0-99) [ 1960 0 R /XYZ 60.307257 650.420454 0 ] (Code/Zone/:zonecs) [ 1956 0 R /XYZ 39.386457 747.563622 0 ] (Code/recoverCookiesCSV/:) [ 2106 0 R /XYZ 39.386457 747.563622 0 ] (Code/recoverCookiesCSV/:__span-0-1) [ 2106 0 R /XYZ 60.307257 707.635422 0 ] (Code/recoverCookiesCSV/:__span-0-10) [ 2106 0 R /XYZ 60.307257 546.831198 0 ] (Code/recoverCookiesCSV/:__span-0-11) [ 2106 0 R /XYZ 60.307257 533.430846 0 ] (Code/recoverCookiesCSV/:__span-0-12) [ 2106 0 R /XYZ 60.307257 520.030494 0 ] (Code/recoverCookiesCSV/:__span-0-13) [ 2106 0 R /XYZ 60.307257 506.630142 0 ] (Code/recoverCookiesCSV/:__span-0-14) [ 2106 0 R /XYZ 60.307257 493.229790 0 ] (Code/recoverCookiesCSV/:__span-0-15) [ 2106 0 R /XYZ 60.307257 479.829438 0 ] (Code/recoverCookiesCSV/:__span-0-16) [ 2106 0 R /XYZ 60.307257 466.429086 0 ] (Code/recoverCookiesCSV/:__span-0-17) [ 2106 0 R /XYZ 60.307257 453.028734 0 ] (Code/recoverCookiesCSV/:__span-0-18) [ 2106 0 R /XYZ 60.307257 439.628382 0 ] (Code/recoverCookiesCSV/:__span-0-19) [ 2106 0 R /XYZ 60.307257 426.228030 0 ] (Code/recoverCookiesCSV/:__span-0-2) [ 2106 0 R /XYZ 60.307257 694.235070 0 ] (Code/recoverCookiesCSV/:__span-0-20) [ 2106 0 R /XYZ 60.307257 412.827678 0 ] (Code/recoverCookiesCSV/:__span-0-21) [ 2106 0 R /XYZ 60.307257 399.427326 0 ] (Code/recoverCookiesCSV/:__span-0-22) [ 2106 0 R /XYZ 60.307257 386.026974 0 ] (Code/recoverCookiesCSV/:__span-0-23) [ 2106 0 R /XYZ 60.307257 372.626622 0 ] (Code/recoverCookiesCSV/:__span-0-24) [ 2106 0 R /XYZ 60.307257 359.226270 0 ] (Code/recoverCookiesCSV/:__span-0-25) [ 2106 0 R /XYZ 60.307257 345.825918 0 ] (Code/recoverCookiesCSV/:__span-0-26) [ 2106 0 R /XYZ 60.307257 332.425566 0 ] (Code/recoverCookiesCSV/:__span-0-27) [ 2106 0 R /XYZ 60.307257 319.025214 0 ] (Code/recoverCookiesCSV/:__span-0-28) [ 2106 0 R /XYZ 60.307257 305.624862 0 ] (Code/recoverCookiesCSV/:__span-0-29) [ 2106 0 R /XYZ 60.307257 292.224510 0 ] (Code/recoverCookiesCSV/:__span-0-3) [ 2106 0 R /XYZ 60.307257 680.834718 0 ] (Code/recoverCookiesCSV/:__span-0-30) [ 2106 0 R /XYZ 60.307257 278.824158 0 ] (Code/recoverCookiesCSV/:__span-0-31) [ 2106 0 R /XYZ 60.307257 265.423806 0 ] (Code/recoverCookiesCSV/:__span-0-32) [ 2106 0 R /XYZ 60.307257 252.023454 0 ] (Code/recoverCookiesCSV/:__span-0-33) [ 2106 0 R /XYZ 60.307257 238.623102 0 ] (Code/recoverCookiesCSV/:__span-0-34) [ 2106 0 R /XYZ 60.307257 225.222750 0 ] (Code/recoverCookiesCSV/:__span-0-35) [ 2106 0 R /XYZ 60.307257 211.822398 0 ] (Code/recoverCookiesCSV/:__span-0-36) [ 2106 0 R /XYZ 60.307257 198.422046 0 ] (Code/recoverCookiesCSV/:__span-0-37) [ 2106 0 R /XYZ 60.307257 185.021694 0 ] (Code/recoverCookiesCSV/:__span-0-38) [ 2106 0 R /XYZ 60.307257 171.621342 0 ] (Code/recoverCookiesCSV/:__span-0-39) [ 2106 0 R /XYZ 60.307257 158.220990 0 ] (Code/recoverCookiesCSV/:__span-0-4) [ 2106 0 R /XYZ 60.307257 654.034014 0 ] (Code/recoverCookiesCSV/:__span-0-40) [ 2106 0 R /XYZ 60.307257 144.820638 0 ] (Code/recoverCookiesCSV/:__span-0-41) [ 2106 0 R /XYZ 60.307257 131.420286 0 ] (Code/recoverCookiesCSV/:__span-0-42) [ 2106 0 R /XYZ 60.307257 118.019934 0 ] (Code/recoverCookiesCSV/:__span-0-43) [ 2106 0 R /XYZ 60.307257 104.619582 0 ] (Code/recoverCookiesCSV/:__span-0-44) [ 2106 0 R /XYZ 60.307257 91.219230 0 ] (Code/recoverCookiesCSV/:__span-0-45) [ 2108 0 R /XYZ 60.307257 771.023622 0 ] (Code/recoverCookiesCSV/:__span-0-46) [ 2108 0 R /XYZ 60.307257 757.623270 0 ] (Code/recoverCookiesCSV/:__span-0-47) [ 2108 0 R /XYZ 60.307257 744.222918 0 ] (Code/recoverCookiesCSV/:__span-0-48) [ 2108 0 R /XYZ 60.307257 730.822566 0 ] (Code/recoverCookiesCSV/:__span-0-49) [ 2108 0 R /XYZ 60.307257 717.422214 0 ] (Code/recoverCookiesCSV/:__span-0-5) [ 2106 0 R /XYZ 60.307257 613.832958 0 ] (Code/recoverCookiesCSV/:__span-0-50) [ 2108 0 R /XYZ 60.307257 704.021862 0 ] (Code/recoverCookiesCSV/:__span-0-51) [ 2108 0 R /XYZ 60.307257 690.621510 0 ] (Code/recoverCookiesCSV/:__span-0-52) [ 2108 0 R /XYZ 60.307257 677.221158 0 ] (Code/recoverCookiesCSV/:__span-0-53) [ 2108 0 R /XYZ 60.307257 663.820806 0 ] (Code/recoverCookiesCSV/:__span-0-54) [ 2108 0 R /XYZ 60.307257 637.020102 0 ] (Code/recoverCookiesCSV/:__span-0-55) [ 2108 0 R /XYZ 60.307257 623.619750 0 ] (Code/recoverCookiesCSV/:__span-0-56) [ 2108 0 R /XYZ 60.307257 610.219398 0 ] (Code/recoverCookiesCSV/:__span-0-57) [ 2108 0 R /XYZ 60.307257 596.819046 0 ] (Code/recoverCookiesCSV/:__span-0-58) [ 2108 0 R /XYZ 60.307257 583.418694 0 ] (Code/recoverCookiesCSV/:__span-0-59) [ 2108 0 R /XYZ 60.307257 570.018342 0 ] (Code/recoverCookiesCSV/:__span-0-6) [ 2106 0 R /XYZ 60.307257 600.432606 0 ] (Code/recoverCookiesCSV/:__span-0-60) [ 2108 0 R /XYZ 60.307257 556.617990 0 ] (Code/recoverCookiesCSV/:__span-0-61) [ 2108 0 R /XYZ 60.307257 543.217638 0 ] (Code/recoverCookiesCSV/:__span-0-62) [ 2108 0 R /XYZ 60.307257 529.817286 0 ] (Code/recoverCookiesCSV/:__span-0-63) [ 2108 0 R /XYZ 60.307257 516.416934 0 ] (Code/recoverCookiesCSV/:__span-0-64) [ 2108 0 R /XYZ 60.307257 503.016582 0 ] (Code/recoverCookiesCSV/:__span-0-65) [ 2108 0 R /XYZ 60.307257 489.616230 0 ] (Code/recoverCookiesCSV/:__span-0-66) [ 2108 0 R /XYZ 60.307257 462.815526 0 ] (Code/recoverCookiesCSV/:__span-0-67) [ 2108 0 R /XYZ 60.307257 449.415174 0 ] (Code/recoverCookiesCSV/:__span-0-68) [ 2108 0 R /XYZ 60.307257 436.014822 0 ] (Code/recoverCookiesCSV/:__span-0-69) [ 2108 0 R /XYZ 60.307257 422.614470 0 ] (Code/recoverCookiesCSV/:__span-0-7) [ 2106 0 R /XYZ 60.307257 587.032254 0 ] (Code/recoverCookiesCSV/:__span-0-70) [ 2108 0 R /XYZ 60.307257 409.214118 0 ] (Code/recoverCookiesCSV/:__span-0-71) [ 2108 0 R /XYZ 60.307257 395.813766 0 ] (Code/recoverCookiesCSV/:__span-0-72) [ 2108 0 R /XYZ 60.307257 382.413414 0 ] (Code/recoverCookiesCSV/:__span-0-73) [ 2108 0 R /XYZ 60.307257 369.013062 0 ] (Code/recoverCookiesCSV/:__span-0-74) [ 2108 0 R /XYZ 60.307257 355.612710 0 ] (Code/recoverCookiesCSV/:__span-0-75) [ 2108 0 R /XYZ 60.307257 342.212358 0 ] (Code/recoverCookiesCSV/:__span-0-76) [ 2108 0 R /XYZ 60.307257 328.812006 0 ] (Code/recoverCookiesCSV/:__span-0-77) [ 2108 0 R /XYZ 60.307257 315.411654 0 ] (Code/recoverCookiesCSV/:__span-0-78) [ 2108 0 R /XYZ 60.307257 302.011302 0 ] (Code/recoverCookiesCSV/:__span-0-79) [ 2108 0 R /XYZ 60.307257 288.610950 0 ] (Code/recoverCookiesCSV/:__span-0-8) [ 2106 0 R /XYZ 60.307257 573.631902 0 ] (Code/recoverCookiesCSV/:__span-0-80) [ 2108 0 R /XYZ 60.307257 275.210598 0 ] (Code/recoverCookiesCSV/:__span-0-81) [ 2108 0 R /XYZ 60.307257 261.810246 0 ] (Code/recoverCookiesCSV/:__span-0-82) [ 2108 0 R /XYZ 60.307257 248.409894 0 ] (Code/recoverCookiesCSV/:__span-0-83) [ 2108 0 R /XYZ 60.307257 235.009542 0 ] (Code/recoverCookiesCSV/:__span-0-9) [ 2106 0 R /XYZ 60.307257 560.231550 0 ] (Code/recoverCookiesCSV/:recovercookiescsvpy) [ 2106 0 R /XYZ 39.386457 747.563622 0 ] (INXWIZI/) [ 1880 0 R /XYZ 39.386457 757.223622 0 ] (INXWIZI/:) [ 1880 0 R /XYZ 39.386457 771.023622 0 ] (ManuelUtilisateur/:) [ 1118 0 R /XYZ 39.386457 771.023622 0 ] (ManuelUtilisateur/:a-quoi-sert-lapp) [ 1118 0 R /XYZ 39.386457 608.700522 0 ] (ManuelUtilisateur/:ajout-du-nom-des-pilotes) [ 1196 0 R /XYZ 42.836457 166.651302 0 ] (ManuelUtilisateur/:battles) [ 1225 0 R /XYZ 39.386457 234.880422 0 ] (ManuelUtilisateur/:boutons) [ 1138 0 R /XYZ 39.386457 309.260718 0 ] (ManuelUtilisateur/:calibration) [ 1157 0 R /XYZ 39.386457 771.023622 0 ] (ManuelUtilisateur/:comment-creer-son-preset) [ 1157 0 R /XYZ 39.386457 269.144922 0 ] (ManuelUtilisateur/:comprendre-les-donnees) [ 1215 0 R /XYZ 39.386457 322.349771 0 ] (ManuelUtilisateur/:creation-des-zones-et-des-windows) [ 1173 0 R /XYZ 42.836457 587.042022 0 ] (ManuelUtilisateur/:driver-infos) [ 1230 0 R /XYZ 39.386457 294.880422 0 ] (ManuelUtilisateur/:erreurs) [ 1248 0 R /XYZ 39.386457 634.955622 0 ] (ManuelUtilisateur/:installation) [ 1118 0 R /XYZ 39.386457 707.865222 0 ] (ManuelUtilisateur/:last-five-laps) [ 1220 0 R /XYZ 39.386457 206.972850 0 ] (ManuelUtilisateur/:live-ranking) [ 1242 0 R /XYZ 39.386457 771.023622 0 ] (ManuelUtilisateur/:load-un-preset-existant) [ 1210 0 R /XYZ 39.386457 189.089256 0 ] (ManuelUtilisateur/:manuel-utilisateur) [ 1118 0 R /XYZ 39.386457 757.223622 0 ] (ManuelUtilisateur/:overtakes) [ 1220 0 R /XYZ 39.386457 307.522050 0 ] (ManuelUtilisateur/:pourquoi-calibrer-lapplication-et-creer-un-preset) [ 1157 0 R /XYZ 39.386457 661.536522 0 ] (ManuelUtilisateur/:recuperer-le-lien-vers-le-flux) [ 1127 0 R /XYZ 39.386457 347.470422 0 ] (ManuelUtilisateur/:sauvegarder-le-nouveau-preset) [ 1210 0 R /XYZ 42.836457 341.110056 0 ] (ManuelUtilisateur/:utilisation-simple) [ 1118 0 R /XYZ 39.386457 391.297422 0 ] (__codelineno-0-1) [ 722 0 R /XYZ 60.307257 407.980122 0 ] (__codelineno-0-10) [ 1251 0 R /XYZ 60.307257 384.489054 0 ] (__codelineno-0-100) [ 1884 0 R /XYZ 60.307257 637.020102 0 ] (__codelineno-0-101) [ 1884 0 R /XYZ 60.307257 623.619750 0 ] (__codelineno-0-102) [ 1884 0 R /XYZ 60.307257 610.219398 0 ] (__codelineno-0-103) [ 1884 0 R /XYZ 60.307257 596.819046 0 ] (__codelineno-0-104) [ 1884 0 R /XYZ 60.307257 583.418694 0 ] (__codelineno-0-105) [ 1884 0 R /XYZ 60.307257 570.018342 0 ] (__codelineno-0-106) [ 1884 0 R /XYZ 60.307257 556.617990 0 ] (__codelineno-0-107) [ 1884 0 R /XYZ 60.307257 543.217638 0 ] (__codelineno-0-108) [ 1884 0 R /XYZ 60.307257 529.817286 0 ] (__codelineno-0-109) [ 1884 0 R /XYZ 60.307257 516.416934 0 ] (__codelineno-0-11) [ 1251 0 R /XYZ 60.307257 371.088702 0 ] (__codelineno-0-110) [ 1884 0 R /XYZ 60.307257 503.016582 0 ] (__codelineno-0-111) [ 1884 0 R /XYZ 60.307257 489.616230 0 ] (__codelineno-0-112) [ 1884 0 R /XYZ 60.307257 476.215878 0 ] (__codelineno-0-113) [ 1884 0 R /XYZ 60.307257 462.815526 0 ] (__codelineno-0-114) [ 1884 0 R /XYZ 60.307257 449.415174 0 ] (__codelineno-0-115) [ 1884 0 R /XYZ 60.307257 436.014822 0 ] (__codelineno-0-116) [ 1884 0 R /XYZ 60.307257 422.614470 0 ] (__codelineno-0-117) [ 1884 0 R /XYZ 60.307257 409.214118 0 ] (__codelineno-0-118) [ 1884 0 R /XYZ 60.307257 395.813766 0 ] (__codelineno-0-119) [ 1884 0 R /XYZ 60.307257 382.413414 0 ] (__codelineno-0-12) [ 1251 0 R /XYZ 60.307257 357.688350 0 ] (__codelineno-0-120) [ 1884 0 R /XYZ 60.307257 369.013062 0 ] (__codelineno-0-121) [ 1884 0 R /XYZ 60.307257 355.612710 0 ] (__codelineno-0-122) [ 1884 0 R /XYZ 60.307257 342.212358 0 ] (__codelineno-0-123) [ 1884 0 R /XYZ 60.307257 328.812006 0 ] (__codelineno-0-124) [ 1884 0 R /XYZ 60.307257 315.411654 0 ] (__codelineno-0-125) [ 1884 0 R /XYZ 60.307257 302.011302 0 ] (__codelineno-0-126) [ 1884 0 R /XYZ 60.307257 288.610950 0 ] (__codelineno-0-127) [ 1884 0 R /XYZ 60.307257 275.210598 0 ] (__codelineno-0-128) [ 1884 0 R /XYZ 60.307257 261.810246 0 ] (__codelineno-0-129) [ 1884 0 R /XYZ 60.307257 248.409894 0 ] (__codelineno-0-13) [ 1251 0 R /XYZ 60.307257 344.287998 0 ] (__codelineno-0-130) [ 1884 0 R /XYZ 60.307257 235.009542 0 ] (__codelineno-0-131) [ 1884 0 R /XYZ 60.307257 221.609190 0 ] (__codelineno-0-132) [ 1884 0 R /XYZ 60.307257 208.208838 0 ] (__codelineno-0-133) [ 1884 0 R /XYZ 60.307257 194.808486 0 ] (__codelineno-0-134) [ 1884 0 R /XYZ 60.307257 181.408134 0 ] (__codelineno-0-135) [ 1884 0 R /XYZ 60.307257 168.007782 0 ] (__codelineno-0-136) [ 1884 0 R /XYZ 60.307257 154.607430 0 ] (__codelineno-0-137) [ 1884 0 R /XYZ 60.307257 141.207078 0 ] (__codelineno-0-138) [ 1884 0 R /XYZ 60.307257 127.806726 0 ] (__codelineno-0-139) [ 1884 0 R /XYZ 60.307257 114.406374 0 ] (__codelineno-0-14) [ 1251 0 R /XYZ 60.307257 330.887646 0 ] (__codelineno-0-140) [ 1884 0 R /XYZ 60.307257 101.006022 0 ] (__codelineno-0-141) [ 1884 0 R /XYZ 60.307257 87.605670 0 ] (__codelineno-0-142) [ 1886 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-0-143) [ 1886 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-0-144) [ 1886 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-0-145) [ 1886 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-0-146) [ 1886 0 R /XYZ 60.307257 704.021862 0 ] (__codelineno-0-147) [ 1886 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-0-148) [ 1886 0 R /XYZ 60.307257 677.221158 0 ] (__codelineno-0-149) [ 1886 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-0-15) [ 1251 0 R /XYZ 60.307257 317.487294 0 ] (__codelineno-0-150) [ 1886 0 R /XYZ 60.307257 650.420454 0 ] (__codelineno-0-151) [ 1886 0 R /XYZ 60.307257 637.020102 0 ] (__codelineno-0-152) [ 1886 0 R /XYZ 60.307257 623.619750 0 ] (__codelineno-0-153) [ 1886 0 R /XYZ 60.307257 610.219398 0 ] (__codelineno-0-154) [ 1886 0 R /XYZ 60.307257 596.819046 0 ] (__codelineno-0-155) [ 1886 0 R /XYZ 60.307257 583.418694 0 ] (__codelineno-0-156) [ 1886 0 R /XYZ 60.307257 570.018342 0 ] (__codelineno-0-157) [ 1886 0 R /XYZ 60.307257 543.217638 0 ] (__codelineno-0-158) [ 1886 0 R /XYZ 60.307257 529.817286 0 ] (__codelineno-0-159) [ 1886 0 R /XYZ 60.307257 516.416934 0 ] (__codelineno-0-16) [ 1251 0 R /XYZ 60.307257 304.086942 0 ] (__codelineno-0-160) [ 1886 0 R /XYZ 60.307257 503.016582 0 ] (__codelineno-0-161) [ 1886 0 R /XYZ 60.307257 476.215878 0 ] (__codelineno-0-162) [ 1886 0 R /XYZ 60.307257 462.815526 0 ] (__codelineno-0-163) [ 1886 0 R /XYZ 60.307257 449.415174 0 ] (__codelineno-0-164) [ 1886 0 R /XYZ 60.307257 436.014822 0 ] (__codelineno-0-165) [ 1886 0 R /XYZ 60.307257 409.214118 0 ] (__codelineno-0-166) [ 1886 0 R /XYZ 60.307257 395.813766 0 ] (__codelineno-0-167) [ 1886 0 R /XYZ 60.307257 382.413414 0 ] (__codelineno-0-168) [ 1886 0 R /XYZ 60.307257 369.013062 0 ] (__codelineno-0-169) [ 1886 0 R /XYZ 60.307257 342.212358 0 ] (__codelineno-0-17) [ 1251 0 R /XYZ 60.307257 290.686590 0 ] (__codelineno-0-170) [ 1886 0 R /XYZ 60.307257 328.812006 0 ] (__codelineno-0-171) [ 1886 0 R /XYZ 60.307257 315.411654 0 ] (__codelineno-0-172) [ 1886 0 R /XYZ 60.307257 302.011302 0 ] (__codelineno-0-173) [ 1886 0 R /XYZ 60.307257 275.210598 0 ] (__codelineno-0-174) [ 1886 0 R /XYZ 60.307257 261.810246 0 ] (__codelineno-0-175) [ 1886 0 R /XYZ 60.307257 248.409894 0 ] (__codelineno-0-176) [ 1886 0 R /XYZ 60.307257 235.009542 0 ] (__codelineno-0-177) [ 1886 0 R /XYZ 60.307257 208.208838 0 ] (__codelineno-0-178) [ 1886 0 R /XYZ 60.307257 194.808486 0 ] (__codelineno-0-179) [ 1886 0 R /XYZ 60.307257 181.408134 0 ] (__codelineno-0-18) [ 1251 0 R /XYZ 60.307257 277.286238 0 ] (__codelineno-0-180) [ 1886 0 R /XYZ 60.307257 168.007782 0 ] (__codelineno-0-181) [ 1886 0 R /XYZ 60.307257 141.207078 0 ] (__codelineno-0-182) [ 1886 0 R /XYZ 60.307257 127.806726 0 ] (__codelineno-0-183) [ 1886 0 R /XYZ 60.307257 114.406374 0 ] (__codelineno-0-184) [ 1886 0 R /XYZ 60.307257 101.006022 0 ] (__codelineno-0-185) [ 1888 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-0-186) [ 1888 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-0-187) [ 1888 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-0-188) [ 1888 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-0-189) [ 1888 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-0-19) [ 1251 0 R /XYZ 60.307257 263.885886 0 ] (__codelineno-0-190) [ 1888 0 R /XYZ 60.307257 677.221158 0 ] (__codelineno-0-191) [ 1888 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-0-192) [ 1888 0 R /XYZ 60.307257 650.420454 0 ] (__codelineno-0-193) [ 1888 0 R /XYZ 60.307257 637.020102 0 ] (__codelineno-0-194) [ 1888 0 R /XYZ 60.307257 623.619750 0 ] (__codelineno-0-195) [ 1888 0 R /XYZ 60.307257 610.219398 0 ] (__codelineno-0-196) [ 1888 0 R /XYZ 60.307257 583.418694 0 ] (__codelineno-0-197) [ 1888 0 R /XYZ 60.307257 556.617990 0 ] (__codelineno-0-198) [ 1888 0 R /XYZ 60.307257 543.217638 0 ] (__codelineno-0-199) [ 1888 0 R /XYZ 60.307257 529.817286 0 ] (__codelineno-0-2) [ 722 0 R /XYZ 60.307257 381.179418 0 ] (__codelineno-0-20) [ 1251 0 R /XYZ 60.307257 250.485534 0 ] (__codelineno-0-200) [ 1888 0 R /XYZ 60.307257 516.416934 0 ] (__codelineno-0-201) [ 1888 0 R /XYZ 60.307257 503.016582 0 ] (__codelineno-0-202) [ 1888 0 R /XYZ 60.307257 489.616230 0 ] (__codelineno-0-203) [ 1888 0 R /XYZ 60.307257 476.215878 0 ] (__codelineno-0-204) [ 1888 0 R /XYZ 60.307257 449.415174 0 ] (__codelineno-0-205) [ 1888 0 R /XYZ 60.307257 436.014822 0 ] (__codelineno-0-206) [ 1888 0 R /XYZ 60.307257 422.614470 0 ] (__codelineno-0-207) [ 1888 0 R /XYZ 60.307257 409.214118 0 ] (__codelineno-0-208) [ 1888 0 R /XYZ 60.307257 395.813766 0 ] (__codelineno-0-209) [ 1888 0 R /XYZ 60.307257 369.013062 0 ] (__codelineno-0-21) [ 1251 0 R /XYZ 60.307257 237.085182 0 ] (__codelineno-0-210) [ 1888 0 R /XYZ 60.307257 342.212358 0 ] (__codelineno-0-211) [ 1888 0 R /XYZ 60.307257 328.812006 0 ] (__codelineno-0-212) [ 1888 0 R /XYZ 60.307257 315.411654 0 ] (__codelineno-0-213) [ 1888 0 R /XYZ 60.307257 302.011302 0 ] (__codelineno-0-214) [ 1888 0 R /XYZ 60.307257 288.610950 0 ] (__codelineno-0-215) [ 1888 0 R /XYZ 60.307257 275.210598 0 ] (__codelineno-0-216) [ 1888 0 R /XYZ 60.307257 261.810246 0 ] (__codelineno-0-217) [ 1888 0 R /XYZ 60.307257 235.009542 0 ] (__codelineno-0-218) [ 1888 0 R /XYZ 60.307257 221.609190 0 ] (__codelineno-0-219) [ 1888 0 R /XYZ 60.307257 208.208838 0 ] (__codelineno-0-22) [ 1251 0 R /XYZ 60.307257 223.684830 0 ] (__codelineno-0-220) [ 1888 0 R /XYZ 60.307257 194.808486 0 ] (__codelineno-0-221) [ 1888 0 R /XYZ 60.307257 181.408134 0 ] (__codelineno-0-222) [ 1888 0 R /XYZ 60.307257 154.607430 0 ] (__codelineno-0-223) [ 1888 0 R /XYZ 60.307257 141.207078 0 ] (__codelineno-0-224) [ 1888 0 R /XYZ 60.307257 127.806726 0 ] (__codelineno-0-225) [ 1888 0 R /XYZ 60.307257 101.006022 0 ] (__codelineno-0-226) [ 1888 0 R /XYZ 60.307257 87.605670 0 ] (__codelineno-0-227) [ 1890 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-0-228) [ 1890 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-0-229) [ 1890 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-0-23) [ 1251 0 R /XYZ 60.307257 210.284478 0 ] (__codelineno-0-230) [ 1890 0 R /XYZ 60.307257 704.021862 0 ] (__codelineno-0-231) [ 1890 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-0-232) [ 1890 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-0-233) [ 1890 0 R /XYZ 60.307257 650.420454 0 ] (__codelineno-0-234) [ 1890 0 R /XYZ 60.307257 637.020102 0 ] (__codelineno-0-235) [ 1890 0 R /XYZ 60.307257 623.619750 0 ] (__codelineno-0-236) [ 1890 0 R /XYZ 60.307257 610.219398 0 ] (__codelineno-0-237) [ 1890 0 R /XYZ 60.307257 596.819046 0 ] (__codelineno-0-238) [ 1890 0 R /XYZ 60.307257 583.418694 0 ] (__codelineno-0-239) [ 1890 0 R /XYZ 60.307257 570.018342 0 ] (__codelineno-0-24) [ 1880 0 R /XYZ 60.307257 346.328574 0 ] (__codelineno-0-240) [ 1890 0 R /XYZ 60.307257 543.217638 0 ] (__codelineno-0-241) [ 1890 0 R /XYZ 60.307257 529.817286 0 ] (__codelineno-0-242) [ 1890 0 R /XYZ 60.307257 516.416934 0 ] (__codelineno-0-243) [ 1890 0 R /XYZ 60.307257 503.016582 0 ] (__codelineno-0-244) [ 1890 0 R /XYZ 60.307257 489.616230 0 ] (__codelineno-0-245) [ 1890 0 R /XYZ 60.307257 476.215878 0 ] (__codelineno-0-246) [ 1890 0 R /XYZ 60.307257 462.815526 0 ] (__codelineno-0-247) [ 1890 0 R /XYZ 60.307257 449.415174 0 ] (__codelineno-0-248) [ 1890 0 R /XYZ 60.307257 436.014822 0 ] (__codelineno-0-249) [ 1890 0 R /XYZ 60.307257 422.614470 0 ] (__codelineno-0-25) [ 1880 0 R /XYZ 60.307257 332.928222 0 ] (__codelineno-0-250) [ 1890 0 R /XYZ 60.307257 409.214118 0 ] (__codelineno-0-251) [ 1890 0 R /XYZ 60.307257 382.413414 0 ] (__codelineno-0-252) [ 1890 0 R /XYZ 60.307257 355.612710 0 ] (__codelineno-0-253) [ 1890 0 R /XYZ 60.307257 342.212358 0 ] (__codelineno-0-254) [ 1890 0 R /XYZ 60.307257 328.812006 0 ] (__codelineno-0-255) [ 1890 0 R /XYZ 60.307257 302.011302 0 ] (__codelineno-0-256) [ 1890 0 R /XYZ 60.307257 288.610950 0 ] (__codelineno-0-257) [ 1890 0 R /XYZ 60.307257 275.210598 0 ] (__codelineno-0-258) [ 1890 0 R /XYZ 60.307257 261.810246 0 ] (__codelineno-0-259) [ 1890 0 R /XYZ 60.307257 248.409894 0 ] (__codelineno-0-26) [ 1880 0 R /XYZ 60.307257 319.527870 0 ] (__codelineno-0-260) [ 1890 0 R /XYZ 60.307257 235.009542 0 ] (__codelineno-0-261) [ 1890 0 R /XYZ 60.307257 221.609190 0 ] (__codelineno-0-262) [ 1916 0 R /XYZ 60.307257 355.612710 0 ] (__codelineno-0-263) [ 1916 0 R /XYZ 60.307257 328.812006 0 ] (__codelineno-0-264) [ 1916 0 R /XYZ 60.307257 315.411654 0 ] (__codelineno-0-265) [ 1916 0 R /XYZ 60.307257 302.011302 0 ] (__codelineno-0-266) [ 1916 0 R /XYZ 60.307257 288.610950 0 ] (__codelineno-0-267) [ 1916 0 R /XYZ 60.307257 275.210598 0 ] (__codelineno-0-268) [ 1916 0 R /XYZ 60.307257 261.810246 0 ] (__codelineno-0-269) [ 1916 0 R /XYZ 60.307257 235.009542 0 ] (__codelineno-0-27) [ 1880 0 R /XYZ 60.307257 306.127518 0 ] (__codelineno-0-270) [ 1916 0 R /XYZ 60.307257 221.609190 0 ] (__codelineno-0-271) [ 1916 0 R /XYZ 60.307257 208.208838 0 ] (__codelineno-0-272) [ 1916 0 R /XYZ 60.307257 194.808486 0 ] (__codelineno-0-273) [ 1916 0 R /XYZ 60.307257 181.408134 0 ] (__codelineno-0-274) [ 1916 0 R /XYZ 60.307257 168.007782 0 ] (__codelineno-0-275) [ 1916 0 R /XYZ 60.307257 154.607430 0 ] (__codelineno-0-276) [ 1916 0 R /XYZ 60.307257 141.207078 0 ] (__codelineno-0-277) [ 1916 0 R /XYZ 60.307257 127.806726 0 ] (__codelineno-0-278) [ 1916 0 R /XYZ 60.307257 114.406374 0 ] (__codelineno-0-279) [ 1916 0 R /XYZ 60.307257 101.006022 0 ] (__codelineno-0-28) [ 1880 0 R /XYZ 60.307257 279.326814 0 ] (__codelineno-0-280) [ 1916 0 R /XYZ 60.307257 87.605670 0 ] (__codelineno-0-281) [ 1918 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-0-282) [ 1918 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-0-283) [ 1918 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-0-284) [ 1918 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-0-285) [ 1918 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-0-286) [ 1918 0 R /XYZ 60.307257 704.021862 0 ] (__codelineno-0-287) [ 1918 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-0-288) [ 1918 0 R /XYZ 60.307257 677.221158 0 ] (__codelineno-0-289) [ 1918 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-0-29) [ 1880 0 R /XYZ 60.307257 265.926462 0 ] (__codelineno-0-290) [ 1918 0 R /XYZ 60.307257 650.420454 0 ] (__codelineno-0-291) [ 1918 0 R /XYZ 60.307257 637.020102 0 ] (__codelineno-0-292) [ 1918 0 R /XYZ 60.307257 623.619750 0 ] (__codelineno-0-293) [ 1918 0 R /XYZ 60.307257 610.219398 0 ] (__codelineno-0-294) [ 1918 0 R /XYZ 60.307257 596.819046 0 ] (__codelineno-0-295) [ 1918 0 R /XYZ 60.307257 583.418694 0 ] (__codelineno-0-296) [ 1918 0 R /XYZ 60.307257 556.617990 0 ] (__codelineno-0-297) [ 1918 0 R /XYZ 60.307257 543.217638 0 ] (__codelineno-0-298) [ 1918 0 R /XYZ 60.307257 529.817286 0 ] (__codelineno-0-299) [ 1918 0 R /XYZ 60.307257 516.416934 0 ] (__codelineno-0-3) [ 1251 0 R /XYZ 60.307257 478.291518 0 ] (__codelineno-0-30) [ 1880 0 R /XYZ 60.307257 239.125758 0 ] (__codelineno-0-300) [ 1918 0 R /XYZ 60.307257 503.016582 0 ] (__codelineno-0-301) [ 1918 0 R /XYZ 60.307257 489.616230 0 ] (__codelineno-0-302) [ 1918 0 R /XYZ 60.307257 476.215878 0 ] (__codelineno-0-303) [ 1918 0 R /XYZ 60.307257 462.815526 0 ] (__codelineno-0-304) [ 1918 0 R /XYZ 60.307257 436.014822 0 ] (__codelineno-0-305) [ 1918 0 R /XYZ 60.307257 422.614470 0 ] (__codelineno-0-306) [ 1918 0 R /XYZ 60.307257 409.214118 0 ] (__codelineno-0-307) [ 1918 0 R /XYZ 60.307257 395.813766 0 ] (__codelineno-0-308) [ 1918 0 R /XYZ 60.307257 382.413414 0 ] (__codelineno-0-309) [ 1918 0 R /XYZ 60.307257 355.612710 0 ] (__codelineno-0-31) [ 1880 0 R /XYZ 60.307257 212.325054 0 ] (__codelineno-0-310) [ 1918 0 R /XYZ 60.307257 342.212358 0 ] (__codelineno-0-311) [ 1918 0 R /XYZ 60.307257 328.812006 0 ] (__codelineno-0-312) [ 1918 0 R /XYZ 60.307257 315.411654 0 ] (__codelineno-0-313) [ 1918 0 R /XYZ 60.307257 302.011302 0 ] (__codelineno-0-314) [ 1918 0 R /XYZ 60.307257 288.610950 0 ] (__codelineno-0-315) [ 1918 0 R /XYZ 60.307257 275.210598 0 ] (__codelineno-0-316) [ 1918 0 R /XYZ 60.307257 261.810246 0 ] (__codelineno-0-317) [ 1918 0 R /XYZ 60.307257 248.409894 0 ] (__codelineno-0-318) [ 1918 0 R /XYZ 60.307257 235.009542 0 ] (__codelineno-0-319) [ 1918 0 R /XYZ 60.307257 221.609190 0 ] (__codelineno-0-32) [ 1880 0 R /XYZ 60.307257 198.924702 0 ] (__codelineno-0-320) [ 1918 0 R /XYZ 60.307257 208.208838 0 ] (__codelineno-0-321) [ 1918 0 R /XYZ 60.307257 194.808486 0 ] (__codelineno-0-322) [ 1918 0 R /XYZ 60.307257 181.408134 0 ] (__codelineno-0-323) [ 1918 0 R /XYZ 60.307257 154.607430 0 ] (__codelineno-0-324) [ 1918 0 R /XYZ 60.307257 141.207078 0 ] (__codelineno-0-325) [ 1918 0 R /XYZ 60.307257 127.806726 0 ] (__codelineno-0-326) [ 1918 0 R /XYZ 60.307257 114.406374 0 ] (__codelineno-0-327) [ 1918 0 R /XYZ 60.307257 101.006022 0 ] (__codelineno-0-328) [ 1918 0 R /XYZ 60.307257 87.605670 0 ] (__codelineno-0-329) [ 1920 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-0-33) [ 1880 0 R /XYZ 60.307257 185.524350 0 ] (__codelineno-0-330) [ 1920 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-0-331) [ 1920 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-0-332) [ 1920 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-0-333) [ 1920 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-0-334) [ 1920 0 R /XYZ 60.307257 704.021862 0 ] (__codelineno-0-335) [ 1920 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-0-336) [ 1920 0 R /XYZ 60.307257 677.221158 0 ] (__codelineno-0-337) [ 1920 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-0-338) [ 1920 0 R /XYZ 60.307257 650.420454 0 ] (__codelineno-0-339) [ 1920 0 R /XYZ 60.307257 637.020102 0 ] (__codelineno-0-34) [ 1880 0 R /XYZ 60.307257 172.123998 0 ] (__codelineno-0-340) [ 1920 0 R /XYZ 60.307257 623.619750 0 ] (__codelineno-0-341) [ 1920 0 R /XYZ 60.307257 610.219398 0 ] (__codelineno-0-342) [ 1936 0 R /XYZ 60.307257 570.018342 0 ] (__codelineno-0-343) [ 1936 0 R /XYZ 60.307257 556.617990 0 ] (__codelineno-0-344) [ 1936 0 R /XYZ 60.307257 543.217638 0 ] (__codelineno-0-345) [ 1936 0 R /XYZ 60.307257 529.817286 0 ] (__codelineno-0-346) [ 1936 0 R /XYZ 60.307257 516.416934 0 ] (__codelineno-0-347) [ 1936 0 R /XYZ 60.307257 503.016582 0 ] (__codelineno-0-348) [ 1936 0 R /XYZ 60.307257 489.616230 0 ] (__codelineno-0-349) [ 1936 0 R /XYZ 60.307257 476.215878 0 ] (__codelineno-0-35) [ 1880 0 R /XYZ 60.307257 158.723646 0 ] (__codelineno-0-350) [ 1936 0 R /XYZ 60.307257 462.815526 0 ] (__codelineno-0-351) [ 1936 0 R /XYZ 60.307257 449.415174 0 ] (__codelineno-0-352) [ 1936 0 R /XYZ 60.307257 436.014822 0 ] (__codelineno-0-353) [ 1936 0 R /XYZ 60.307257 422.614470 0 ] (__codelineno-0-354) [ 1936 0 R /XYZ 60.307257 409.214118 0 ] (__codelineno-0-355) [ 1936 0 R /XYZ 60.307257 395.813766 0 ] (__codelineno-0-356) [ 1936 0 R /XYZ 60.307257 382.413414 0 ] (__codelineno-0-357) [ 1936 0 R /XYZ 60.307257 369.013062 0 ] (__codelineno-0-358) [ 1936 0 R /XYZ 60.307257 355.612710 0 ] (__codelineno-0-359) [ 1936 0 R /XYZ 60.307257 342.212358 0 ] (__codelineno-0-36) [ 1880 0 R /XYZ 60.307257 145.323294 0 ] (__codelineno-0-360) [ 1936 0 R /XYZ 60.307257 315.411654 0 ] (__codelineno-0-361) [ 1936 0 R /XYZ 60.307257 302.011302 0 ] (__codelineno-0-362) [ 1936 0 R /XYZ 60.307257 288.610950 0 ] (__codelineno-0-363) [ 1936 0 R /XYZ 60.307257 275.210598 0 ] (__codelineno-0-364) [ 1936 0 R /XYZ 60.307257 261.810246 0 ] (__codelineno-0-365) [ 1936 0 R /XYZ 60.307257 248.409894 0 ] (__codelineno-0-366) [ 1936 0 R /XYZ 60.307257 235.009542 0 ] (__codelineno-0-367) [ 1936 0 R /XYZ 60.307257 221.609190 0 ] (__codelineno-0-368) [ 1936 0 R /XYZ 60.307257 208.208838 0 ] (__codelineno-0-369) [ 1936 0 R /XYZ 60.307257 194.808486 0 ] (__codelineno-0-37) [ 1880 0 R /XYZ 60.307257 131.922942 0 ] (__codelineno-0-370) [ 1936 0 R /XYZ 60.307257 168.007782 0 ] (__codelineno-0-371) [ 1936 0 R /XYZ 60.307257 141.207078 0 ] (__codelineno-0-372) [ 1936 0 R /XYZ 60.307257 127.806726 0 ] (__codelineno-0-373) [ 1936 0 R /XYZ 60.307257 114.406374 0 ] (__codelineno-0-374) [ 1936 0 R /XYZ 60.307257 101.006022 0 ] (__codelineno-0-375) [ 1936 0 R /XYZ 60.307257 87.605670 0 ] (__codelineno-0-376) [ 1938 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-0-377) [ 1938 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-0-378) [ 1938 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-0-379) [ 1938 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-0-38) [ 1880 0 R /XYZ 60.307257 118.522590 0 ] (__codelineno-0-380) [ 1938 0 R /XYZ 60.307257 704.021862 0 ] (__codelineno-0-381) [ 1938 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-0-382) [ 1938 0 R /XYZ 60.307257 677.221158 0 ] (__codelineno-0-383) [ 1938 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-0-384) [ 1938 0 R /XYZ 60.307257 650.420454 0 ] (__codelineno-0-385) [ 1938 0 R /XYZ 60.307257 637.020102 0 ] (__codelineno-0-386) [ 1938 0 R /XYZ 60.307257 623.619750 0 ] (__codelineno-0-387) [ 1938 0 R /XYZ 60.307257 610.219398 0 ] (__codelineno-0-388) [ 1938 0 R /XYZ 60.307257 596.819046 0 ] (__codelineno-0-389) [ 1938 0 R /XYZ 60.307257 583.418694 0 ] (__codelineno-0-39) [ 1880 0 R /XYZ 60.307257 105.122238 0 ] (__codelineno-0-390) [ 1938 0 R /XYZ 60.307257 570.018342 0 ] (__codelineno-0-391) [ 1938 0 R /XYZ 60.307257 556.617990 0 ] (__codelineno-0-392) [ 1938 0 R /XYZ 60.307257 543.217638 0 ] (__codelineno-0-393) [ 1938 0 R /XYZ 60.307257 529.817286 0 ] (__codelineno-0-394) [ 1938 0 R /XYZ 60.307257 516.416934 0 ] (__codelineno-0-395) [ 1938 0 R /XYZ 60.307257 503.016582 0 ] (__codelineno-0-396) [ 1938 0 R /XYZ 60.307257 489.616230 0 ] (__codelineno-0-397) [ 1938 0 R /XYZ 60.307257 476.215878 0 ] (__codelineno-0-398) [ 1938 0 R /XYZ 60.307257 462.815526 0 ] (__codelineno-0-399) [ 1938 0 R /XYZ 60.307257 449.415174 0 ] (__codelineno-0-4) [ 1251 0 R /XYZ 60.307257 464.891166 0 ] (__codelineno-0-40) [ 1880 0 R /XYZ 60.307257 91.721886 0 ] (__codelineno-0-400) [ 1938 0 R /XYZ 60.307257 436.014822 0 ] (__codelineno-0-401) [ 1938 0 R /XYZ 60.307257 395.813766 0 ] (__codelineno-0-402) [ 1938 0 R /XYZ 60.307257 382.413414 0 ] (__codelineno-0-403) [ 1938 0 R /XYZ 60.307257 369.013062 0 ] (__codelineno-0-404) [ 1938 0 R /XYZ 60.307257 355.612710 0 ] (__codelineno-0-405) [ 1938 0 R /XYZ 60.307257 342.212358 0 ] (__codelineno-0-406) [ 1938 0 R /XYZ 60.307257 328.812006 0 ] (__codelineno-0-407) [ 1938 0 R /XYZ 60.307257 315.411654 0 ] (__codelineno-0-408) [ 1938 0 R /XYZ 60.307257 302.011302 0 ] (__codelineno-0-409) [ 1938 0 R /XYZ 60.307257 288.610950 0 ] (__codelineno-0-41) [ 1882 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-0-410) [ 1938 0 R /XYZ 60.307257 275.210598 0 ] (__codelineno-0-411) [ 1938 0 R /XYZ 60.307257 261.810246 0 ] (__codelineno-0-412) [ 1938 0 R /XYZ 60.307257 248.409894 0 ] (__codelineno-0-413) [ 1938 0 R /XYZ 60.307257 235.009542 0 ] (__codelineno-0-414) [ 1938 0 R /XYZ 60.307257 208.208838 0 ] (__codelineno-0-415) [ 1938 0 R /XYZ 60.307257 194.808486 0 ] (__codelineno-0-416) [ 1938 0 R /XYZ 60.307257 181.408134 0 ] (__codelineno-0-417) [ 1938 0 R /XYZ 60.307257 154.607430 0 ] (__codelineno-0-418) [ 1938 0 R /XYZ 60.307257 141.207078 0 ] (__codelineno-0-419) [ 1938 0 R /XYZ 60.307257 114.406374 0 ] (__codelineno-0-42) [ 1882 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-0-420) [ 1938 0 R /XYZ 60.307257 101.006022 0 ] (__codelineno-0-421) [ 1938 0 R /XYZ 60.307257 87.605670 0 ] (__codelineno-0-422) [ 1940 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-0-423) [ 1940 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-0-424) [ 1940 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-0-425) [ 1940 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-0-426) [ 1940 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-0-427) [ 1940 0 R /XYZ 60.307257 704.021862 0 ] (__codelineno-0-428) [ 1940 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-0-429) [ 1940 0 R /XYZ 60.307257 677.221158 0 ] (__codelineno-0-43) [ 1882 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-0-430) [ 1940 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-0-431) [ 1940 0 R /XYZ 60.307257 650.420454 0 ] (__codelineno-0-432) [ 1940 0 R /XYZ 60.307257 637.020102 0 ] (__codelineno-0-433) [ 1940 0 R /XYZ 60.307257 623.619750 0 ] (__codelineno-0-434) [ 1940 0 R /XYZ 60.307257 610.219398 0 ] (__codelineno-0-435) [ 1940 0 R /XYZ 60.307257 596.819046 0 ] (__codelineno-0-436) [ 1940 0 R /XYZ 60.307257 583.418694 0 ] (__codelineno-0-437) [ 1940 0 R /XYZ 60.307257 570.018342 0 ] (__codelineno-0-438) [ 1940 0 R /XYZ 60.307257 543.217638 0 ] (__codelineno-0-439) [ 1940 0 R /XYZ 60.307257 529.817286 0 ] (__codelineno-0-44) [ 1882 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-0-440) [ 1940 0 R /XYZ 60.307257 516.416934 0 ] (__codelineno-0-441) [ 1940 0 R /XYZ 60.307257 503.016582 0 ] (__codelineno-0-442) [ 1940 0 R /XYZ 60.307257 476.215878 0 ] (__codelineno-0-443) [ 1940 0 R /XYZ 60.307257 462.815526 0 ] (__codelineno-0-444) [ 1940 0 R /XYZ 60.307257 449.415174 0 ] (__codelineno-0-445) [ 1940 0 R /XYZ 60.307257 436.014822 0 ] (__codelineno-0-446) [ 1940 0 R /XYZ 60.307257 422.614470 0 ] (__codelineno-0-447) [ 1940 0 R /XYZ 60.307257 409.214118 0 ] (__codelineno-0-448) [ 1940 0 R /XYZ 60.307257 395.813766 0 ] (__codelineno-0-449) [ 1940 0 R /XYZ 60.307257 382.413414 0 ] (__codelineno-0-45) [ 1882 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-0-450) [ 1940 0 R /XYZ 60.307257 369.013062 0 ] (__codelineno-0-451) [ 1940 0 R /XYZ 60.307257 355.612710 0 ] (__codelineno-0-452) [ 1940 0 R /XYZ 60.307257 342.212358 0 ] (__codelineno-0-453) [ 1940 0 R /XYZ 60.307257 328.812006 0 ] (__codelineno-0-454) [ 1940 0 R /XYZ 60.307257 302.011302 0 ] (__codelineno-0-455) [ 1940 0 R /XYZ 60.307257 288.610950 0 ] (__codelineno-0-456) [ 1940 0 R /XYZ 60.307257 275.210598 0 ] (__codelineno-0-457) [ 1940 0 R /XYZ 60.307257 261.810246 0 ] (__codelineno-0-458) [ 1940 0 R /XYZ 60.307257 248.409894 0 ] (__codelineno-0-459) [ 1940 0 R /XYZ 60.307257 221.609190 0 ] (__codelineno-0-46) [ 1882 0 R /XYZ 60.307257 704.021862 0 ] (__codelineno-0-460) [ 1940 0 R /XYZ 60.307257 208.208838 0 ] (__codelineno-0-461) [ 1940 0 R /XYZ 60.307257 194.808486 0 ] (__codelineno-0-462) [ 1940 0 R /XYZ 60.307257 181.408134 0 ] (__codelineno-0-463) [ 1940 0 R /XYZ 60.307257 168.007782 0 ] (__codelineno-0-464) [ 1940 0 R /XYZ 60.307257 154.607430 0 ] (__codelineno-0-465) [ 1940 0 R /XYZ 60.307257 141.207078 0 ] (__codelineno-0-466) [ 1940 0 R /XYZ 60.307257 127.806726 0 ] (__codelineno-0-467) [ 1940 0 R /XYZ 60.307257 114.406374 0 ] (__codelineno-0-468) [ 1940 0 R /XYZ 60.307257 87.605670 0 ] (__codelineno-0-469) [ 1942 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-0-47) [ 1882 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-0-470) [ 1942 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-0-471) [ 1942 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-0-472) [ 1942 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-0-473) [ 1942 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-0-474) [ 1942 0 R /XYZ 60.307257 704.021862 0 ] (__codelineno-0-475) [ 1942 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-0-476) [ 1942 0 R /XYZ 60.307257 677.221158 0 ] (__codelineno-0-477) [ 1942 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-0-478) [ 1942 0 R /XYZ 60.307257 650.420454 0 ] (__codelineno-0-479) [ 1942 0 R /XYZ 60.307257 637.020102 0 ] (__codelineno-0-48) [ 1882 0 R /XYZ 60.307257 677.221158 0 ] (__codelineno-0-480) [ 1942 0 R /XYZ 60.307257 623.619750 0 ] (__codelineno-0-481) [ 1942 0 R /XYZ 60.307257 596.819046 0 ] (__codelineno-0-482) [ 1942 0 R /XYZ 60.307257 570.018342 0 ] (__codelineno-0-483) [ 1942 0 R /XYZ 60.307257 556.617990 0 ] (__codelineno-0-484) [ 1942 0 R /XYZ 60.307257 529.817286 0 ] (__codelineno-0-485) [ 1942 0 R /XYZ 60.307257 516.416934 0 ] (__codelineno-0-486) [ 1942 0 R /XYZ 60.307257 489.616230 0 ] (__codelineno-0-487) [ 1942 0 R /XYZ 60.307257 462.815526 0 ] (__codelineno-0-488) [ 1942 0 R /XYZ 60.307257 449.415174 0 ] (__codelineno-0-489) [ 1942 0 R /XYZ 60.307257 422.614470 0 ] (__codelineno-0-49) [ 1882 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-0-490) [ 1942 0 R /XYZ 60.307257 395.813766 0 ] (__codelineno-0-491) [ 1942 0 R /XYZ 60.307257 382.413414 0 ] (__codelineno-0-492) [ 1942 0 R /XYZ 60.307257 355.612710 0 ] (__codelineno-0-493) [ 1942 0 R /XYZ 60.307257 342.212358 0 ] (__codelineno-0-494) [ 1942 0 R /XYZ 60.307257 315.411654 0 ] (__codelineno-0-495) [ 1942 0 R /XYZ 60.307257 288.610950 0 ] (__codelineno-0-496) [ 1942 0 R /XYZ 60.307257 275.210598 0 ] (__codelineno-0-497) [ 1942 0 R /XYZ 60.307257 248.409894 0 ] (__codelineno-0-498) [ 1942 0 R /XYZ 60.307257 221.609190 0 ] (__codelineno-0-499) [ 1942 0 R /XYZ 60.307257 208.208838 0 ] (__codelineno-0-5) [ 1251 0 R /XYZ 60.307257 451.490814 0 ] (__codelineno-0-50) [ 1882 0 R /XYZ 60.307257 650.420454 0 ] (__codelineno-0-500) [ 1942 0 R /XYZ 60.307257 181.408134 0 ] (__codelineno-0-501) [ 1942 0 R /XYZ 60.307257 168.007782 0 ] (__codelineno-0-502) [ 1942 0 R /XYZ 60.307257 141.207078 0 ] (__codelineno-0-503) [ 1942 0 R /XYZ 60.307257 127.806726 0 ] (__codelineno-0-504) [ 1942 0 R /XYZ 60.307257 114.406374 0 ] (__codelineno-0-505) [ 2024 0 R /XYZ 60.307257 596.819046 0 ] (__codelineno-0-506) [ 2024 0 R /XYZ 60.307257 583.418694 0 ] (__codelineno-0-507) [ 2024 0 R /XYZ 60.307257 570.018342 0 ] (__codelineno-0-508) [ 2024 0 R /XYZ 60.307257 556.617990 0 ] (__codelineno-0-509) [ 2024 0 R /XYZ 60.307257 543.217638 0 ] (__codelineno-0-51) [ 1882 0 R /XYZ 60.307257 637.020102 0 ] (__codelineno-0-510) [ 2024 0 R /XYZ 60.307257 516.416934 0 ] (__codelineno-0-511) [ 2024 0 R /XYZ 60.307257 503.016582 0 ] (__codelineno-0-512) [ 2024 0 R /XYZ 60.307257 489.616230 0 ] (__codelineno-0-513) [ 2024 0 R /XYZ 60.307257 462.815526 0 ] (__codelineno-0-514) [ 2024 0 R /XYZ 60.307257 449.415174 0 ] (__codelineno-0-515) [ 2024 0 R /XYZ 60.307257 436.014822 0 ] (__codelineno-0-516) [ 2024 0 R /XYZ 60.307257 422.614470 0 ] (__codelineno-0-517) [ 2024 0 R /XYZ 60.307257 395.813766 0 ] (__codelineno-0-518) [ 2024 0 R /XYZ 60.307257 382.413414 0 ] (__codelineno-0-519) [ 2024 0 R /XYZ 60.307257 369.013062 0 ] (__codelineno-0-52) [ 1882 0 R /XYZ 60.307257 623.619750 0 ] (__codelineno-0-520) [ 2024 0 R /XYZ 60.307257 355.612710 0 ] (__codelineno-0-521) [ 2024 0 R /XYZ 60.307257 342.212358 0 ] (__codelineno-0-522) [ 2024 0 R /XYZ 60.307257 315.411654 0 ] (__codelineno-0-523) [ 2024 0 R /XYZ 60.307257 302.011302 0 ] (__codelineno-0-524) [ 2024 0 R /XYZ 60.307257 288.610950 0 ] (__codelineno-0-525) [ 2024 0 R /XYZ 60.307257 275.210598 0 ] (__codelineno-0-526) [ 2024 0 R /XYZ 60.307257 261.810246 0 ] (__codelineno-0-527) [ 2024 0 R /XYZ 60.307257 248.409894 0 ] (__codelineno-0-528) [ 2024 0 R /XYZ 60.307257 235.009542 0 ] (__codelineno-0-529) [ 2024 0 R /XYZ 60.307257 221.609190 0 ] (__codelineno-0-53) [ 1882 0 R /XYZ 60.307257 610.219398 0 ] (__codelineno-0-530) [ 2024 0 R /XYZ 60.307257 194.808486 0 ] (__codelineno-0-531) [ 2024 0 R /XYZ 60.307257 181.408134 0 ] (__codelineno-0-532) [ 2024 0 R /XYZ 60.307257 168.007782 0 ] (__codelineno-0-533) [ 2024 0 R /XYZ 60.307257 154.607430 0 ] (__codelineno-0-534) [ 2024 0 R /XYZ 60.307257 141.207078 0 ] (__codelineno-0-535) [ 2024 0 R /XYZ 60.307257 127.806726 0 ] (__codelineno-0-536) [ 2024 0 R /XYZ 60.307257 114.406374 0 ] (__codelineno-0-537) [ 2024 0 R /XYZ 60.307257 101.006022 0 ] (__codelineno-0-538) [ 2024 0 R /XYZ 60.307257 87.605670 0 ] (__codelineno-0-539) [ 2026 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-0-54) [ 1882 0 R /XYZ 60.307257 570.018342 0 ] (__codelineno-0-540) [ 2026 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-0-541) [ 2026 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-0-542) [ 2026 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-0-543) [ 2026 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-0-544) [ 2026 0 R /XYZ 60.307257 704.021862 0 ] (__codelineno-0-545) [ 2026 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-0-546) [ 2026 0 R /XYZ 60.307257 677.221158 0 ] (__codelineno-0-547) [ 2026 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-0-548) [ 2026 0 R /XYZ 60.307257 650.420454 0 ] (__codelineno-0-549) [ 2026 0 R /XYZ 60.307257 623.619750 0 ] (__codelineno-0-55) [ 1882 0 R /XYZ 60.307257 556.617990 0 ] (__codelineno-0-550) [ 2026 0 R /XYZ 60.307257 610.219398 0 ] (__codelineno-0-551) [ 2026 0 R /XYZ 60.307257 596.819046 0 ] (__codelineno-0-552) [ 2026 0 R /XYZ 60.307257 583.418694 0 ] (__codelineno-0-553) [ 2026 0 R /XYZ 60.307257 570.018342 0 ] (__codelineno-0-554) [ 2026 0 R /XYZ 60.307257 556.617990 0 ] (__codelineno-0-555) [ 2026 0 R /XYZ 60.307257 543.217638 0 ] (__codelineno-0-556) [ 2026 0 R /XYZ 60.307257 529.817286 0 ] (__codelineno-0-557) [ 2026 0 R /XYZ 60.307257 516.416934 0 ] (__codelineno-0-558) [ 2026 0 R /XYZ 60.307257 503.016582 0 ] (__codelineno-0-559) [ 2026 0 R /XYZ 60.307257 489.616230 0 ] (__codelineno-0-56) [ 1882 0 R /XYZ 60.307257 543.217638 0 ] (__codelineno-0-560) [ 2026 0 R /XYZ 60.307257 476.215878 0 ] (__codelineno-0-561) [ 2026 0 R /XYZ 60.307257 462.815526 0 ] (__codelineno-0-562) [ 2026 0 R /XYZ 60.307257 449.415174 0 ] (__codelineno-0-563) [ 2026 0 R /XYZ 60.307257 436.014822 0 ] (__codelineno-0-564) [ 2026 0 R /XYZ 60.307257 422.614470 0 ] (__codelineno-0-565) [ 2026 0 R /XYZ 60.307257 409.214118 0 ] (__codelineno-0-566) [ 2026 0 R /XYZ 60.307257 395.813766 0 ] (__codelineno-0-567) [ 2026 0 R /XYZ 60.307257 382.413414 0 ] (__codelineno-0-568) [ 2026 0 R /XYZ 60.307257 369.013062 0 ] (__codelineno-0-569) [ 2026 0 R /XYZ 60.307257 355.612710 0 ] (__codelineno-0-57) [ 1882 0 R /XYZ 60.307257 529.817286 0 ] (__codelineno-0-570) [ 2026 0 R /XYZ 60.307257 342.212358 0 ] (__codelineno-0-571) [ 2026 0 R /XYZ 60.307257 328.812006 0 ] (__codelineno-0-572) [ 2026 0 R /XYZ 60.307257 315.411654 0 ] (__codelineno-0-573) [ 2026 0 R /XYZ 60.307257 288.610950 0 ] (__codelineno-0-574) [ 2026 0 R /XYZ 60.307257 275.210598 0 ] (__codelineno-0-575) [ 2026 0 R /XYZ 60.307257 261.810246 0 ] (__codelineno-0-576) [ 2026 0 R /XYZ 60.307257 248.409894 0 ] (__codelineno-0-577) [ 2026 0 R /XYZ 60.307257 235.009542 0 ] (__codelineno-0-578) [ 2026 0 R /XYZ 60.307257 221.609190 0 ] (__codelineno-0-579) [ 2026 0 R /XYZ 60.307257 208.208838 0 ] (__codelineno-0-58) [ 1882 0 R /XYZ 60.307257 516.416934 0 ] (__codelineno-0-580) [ 2026 0 R /XYZ 60.307257 194.808486 0 ] (__codelineno-0-581) [ 2026 0 R /XYZ 60.307257 181.408134 0 ] (__codelineno-0-582) [ 2026 0 R /XYZ 60.307257 168.007782 0 ] (__codelineno-0-583) [ 2026 0 R /XYZ 60.307257 154.607430 0 ] (__codelineno-0-584) [ 2026 0 R /XYZ 60.307257 141.207078 0 ] (__codelineno-0-585) [ 2026 0 R /XYZ 60.307257 127.806726 0 ] (__codelineno-0-586) [ 2026 0 R /XYZ 60.307257 114.406374 0 ] (__codelineno-0-587) [ 2026 0 R /XYZ 60.307257 101.006022 0 ] (__codelineno-0-588) [ 2026 0 R /XYZ 60.307257 87.605670 0 ] (__codelineno-0-589) [ 2028 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-0-59) [ 1882 0 R /XYZ 60.307257 503.016582 0 ] (__codelineno-0-590) [ 2028 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-0-591) [ 2028 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-0-592) [ 2028 0 R /XYZ 60.307257 704.021862 0 ] (__codelineno-0-593) [ 2028 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-0-594) [ 2028 0 R /XYZ 60.307257 677.221158 0 ] (__codelineno-0-595) [ 2028 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-0-596) [ 2028 0 R /XYZ 60.307257 650.420454 0 ] (__codelineno-0-597) [ 2028 0 R /XYZ 60.307257 637.020102 0 ] (__codelineno-0-598) [ 2028 0 R /XYZ 60.307257 623.619750 0 ] (__codelineno-0-599) [ 2028 0 R /XYZ 60.307257 610.219398 0 ] (__codelineno-0-6) [ 1251 0 R /XYZ 60.307257 438.090462 0 ] (__codelineno-0-60) [ 1882 0 R /XYZ 60.307257 489.616230 0 ] (__codelineno-0-600) [ 2028 0 R /XYZ 60.307257 583.418694 0 ] (__codelineno-0-601) [ 2028 0 R /XYZ 60.307257 570.018342 0 ] (__codelineno-0-602) [ 2028 0 R /XYZ 60.307257 543.217638 0 ] (__codelineno-0-603) [ 2028 0 R /XYZ 60.307257 529.817286 0 ] (__codelineno-0-604) [ 2028 0 R /XYZ 60.307257 516.416934 0 ] (__codelineno-0-605) [ 2028 0 R /XYZ 60.307257 503.016582 0 ] (__codelineno-0-606) [ 2028 0 R /XYZ 60.307257 489.616230 0 ] (__codelineno-0-607) [ 2028 0 R /XYZ 60.307257 476.215878 0 ] (__codelineno-0-608) [ 2028 0 R /XYZ 60.307257 462.815526 0 ] (__codelineno-0-609) [ 2028 0 R /XYZ 60.307257 449.415174 0 ] (__codelineno-0-61) [ 1882 0 R /XYZ 60.307257 476.215878 0 ] (__codelineno-0-610) [ 2028 0 R /XYZ 60.307257 436.014822 0 ] (__codelineno-0-611) [ 2028 0 R /XYZ 60.307257 422.614470 0 ] (__codelineno-0-612) [ 2028 0 R /XYZ 60.307257 409.214118 0 ] (__codelineno-0-613) [ 2028 0 R /XYZ 60.307257 395.813766 0 ] (__codelineno-0-614) [ 2028 0 R /XYZ 60.307257 382.413414 0 ] (__codelineno-0-615) [ 2028 0 R /XYZ 60.307257 369.013062 0 ] (__codelineno-0-616) [ 2028 0 R /XYZ 60.307257 355.612710 0 ] (__codelineno-0-617) [ 2028 0 R /XYZ 60.307257 342.212358 0 ] (__codelineno-0-618) [ 2028 0 R /XYZ 60.307257 328.812006 0 ] (__codelineno-0-619) [ 2028 0 R /XYZ 60.307257 315.411654 0 ] (__codelineno-0-62) [ 1882 0 R /XYZ 60.307257 462.815526 0 ] (__codelineno-0-620) [ 2028 0 R /XYZ 60.307257 302.011302 0 ] (__codelineno-0-621) [ 2028 0 R /XYZ 60.307257 288.610950 0 ] (__codelineno-0-622) [ 2028 0 R /XYZ 60.307257 275.210598 0 ] (__codelineno-0-623) [ 2028 0 R /XYZ 60.307257 261.810246 0 ] (__codelineno-0-624) [ 2028 0 R /XYZ 60.307257 248.409894 0 ] (__codelineno-0-625) [ 2028 0 R /XYZ 60.307257 235.009542 0 ] (__codelineno-0-626) [ 2028 0 R /XYZ 60.307257 221.609190 0 ] (__codelineno-0-627) [ 2028 0 R /XYZ 60.307257 208.208838 0 ] (__codelineno-0-628) [ 2028 0 R /XYZ 60.307257 194.808486 0 ] (__codelineno-0-629) [ 2028 0 R /XYZ 60.307257 181.408134 0 ] (__codelineno-0-63) [ 1882 0 R /XYZ 60.307257 449.415174 0 ] (__codelineno-0-630) [ 2028 0 R /XYZ 60.307257 168.007782 0 ] (__codelineno-0-631) [ 2028 0 R /XYZ 60.307257 141.207078 0 ] (__codelineno-0-632) [ 2028 0 R /XYZ 60.307257 114.406374 0 ] (__codelineno-0-633) [ 2028 0 R /XYZ 60.307257 101.006022 0 ] (__codelineno-0-634) [ 2028 0 R /XYZ 60.307257 87.605670 0 ] (__codelineno-0-635) [ 2030 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-0-636) [ 2030 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-0-637) [ 2030 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-0-638) [ 2030 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-0-639) [ 2030 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-0-64) [ 1882 0 R /XYZ 60.307257 436.014822 0 ] (__codelineno-0-640) [ 2030 0 R /XYZ 60.307257 704.021862 0 ] (__codelineno-0-641) [ 2030 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-0-642) [ 2030 0 R /XYZ 60.307257 677.221158 0 ] (__codelineno-0-643) [ 2030 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-0-644) [ 2030 0 R /XYZ 60.307257 650.420454 0 ] (__codelineno-0-645) [ 2030 0 R /XYZ 60.307257 637.020102 0 ] (__codelineno-0-646) [ 2030 0 R /XYZ 60.307257 623.619750 0 ] (__codelineno-0-647) [ 2030 0 R /XYZ 60.307257 610.219398 0 ] (__codelineno-0-648) [ 2030 0 R /XYZ 60.307257 583.418694 0 ] (__codelineno-0-649) [ 2030 0 R /XYZ 60.307257 570.018342 0 ] (__codelineno-0-65) [ 1882 0 R /XYZ 60.307257 422.614470 0 ] (__codelineno-0-650) [ 2030 0 R /XYZ 60.307257 543.217638 0 ] (__codelineno-0-651) [ 2030 0 R /XYZ 60.307257 529.817286 0 ] (__codelineno-0-652) [ 2030 0 R /XYZ 60.307257 516.416934 0 ] (__codelineno-0-653) [ 2030 0 R /XYZ 60.307257 503.016582 0 ] (__codelineno-0-654) [ 2030 0 R /XYZ 60.307257 489.616230 0 ] (__codelineno-0-655) [ 2030 0 R /XYZ 60.307257 476.215878 0 ] (__codelineno-0-656) [ 2030 0 R /XYZ 60.307257 462.815526 0 ] (__codelineno-0-657) [ 2030 0 R /XYZ 60.307257 449.415174 0 ] (__codelineno-0-658) [ 2030 0 R /XYZ 60.307257 436.014822 0 ] (__codelineno-0-659) [ 2030 0 R /XYZ 60.307257 409.214118 0 ] (__codelineno-0-66) [ 1882 0 R /XYZ 60.307257 409.214118 0 ] (__codelineno-0-660) [ 2030 0 R /XYZ 60.307257 395.813766 0 ] (__codelineno-0-661) [ 2030 0 R /XYZ 60.307257 369.013062 0 ] (__codelineno-0-662) [ 2030 0 R /XYZ 60.307257 355.612710 0 ] (__codelineno-0-663) [ 2030 0 R /XYZ 60.307257 342.212358 0 ] (__codelineno-0-664) [ 2030 0 R /XYZ 60.307257 328.812006 0 ] (__codelineno-0-665) [ 2030 0 R /XYZ 60.307257 315.411654 0 ] (__codelineno-0-666) [ 2030 0 R /XYZ 60.307257 302.011302 0 ] (__codelineno-0-667) [ 2030 0 R /XYZ 60.307257 288.610950 0 ] (__codelineno-0-668) [ 2030 0 R /XYZ 60.307257 275.210598 0 ] (__codelineno-0-669) [ 2030 0 R /XYZ 60.307257 261.810246 0 ] (__codelineno-0-67) [ 1882 0 R /XYZ 60.307257 395.813766 0 ] (__codelineno-0-670) [ 2030 0 R /XYZ 60.307257 248.409894 0 ] (__codelineno-0-671) [ 2030 0 R /XYZ 60.307257 235.009542 0 ] (__codelineno-0-672) [ 2030 0 R /XYZ 60.307257 221.609190 0 ] (__codelineno-0-673) [ 2030 0 R /XYZ 60.307257 208.208838 0 ] (__codelineno-0-674) [ 2030 0 R /XYZ 60.307257 194.808486 0 ] (__codelineno-0-675) [ 2030 0 R /XYZ 60.307257 181.408134 0 ] (__codelineno-0-676) [ 2030 0 R /XYZ 60.307257 168.007782 0 ] (__codelineno-0-677) [ 2030 0 R /XYZ 60.307257 154.607430 0 ] (__codelineno-0-678) [ 2030 0 R /XYZ 60.307257 141.207078 0 ] (__codelineno-0-679) [ 2030 0 R /XYZ 60.307257 127.806726 0 ] (__codelineno-0-68) [ 1882 0 R /XYZ 60.307257 382.413414 0 ] (__codelineno-0-680) [ 2030 0 R /XYZ 60.307257 114.406374 0 ] (__codelineno-0-681) [ 2030 0 R /XYZ 60.307257 101.006022 0 ] (__codelineno-0-682) [ 2030 0 R /XYZ 60.307257 87.605670 0 ] (__codelineno-0-683) [ 2032 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-0-684) [ 2032 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-0-685) [ 2032 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-0-686) [ 2032 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-0-687) [ 2032 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-0-69) [ 1882 0 R /XYZ 60.307257 369.013062 0 ] (__codelineno-0-7) [ 1251 0 R /XYZ 60.307257 424.690110 0 ] (__codelineno-0-70) [ 1882 0 R /XYZ 60.307257 355.612710 0 ] (__codelineno-0-71) [ 1882 0 R /XYZ 60.307257 342.212358 0 ] (__codelineno-0-72) [ 1882 0 R /XYZ 60.307257 328.812006 0 ] (__codelineno-0-73) [ 1882 0 R /XYZ 60.307257 315.411654 0 ] (__codelineno-0-74) [ 1882 0 R /XYZ 60.307257 302.011302 0 ] (__codelineno-0-75) [ 1882 0 R /XYZ 60.307257 288.610950 0 ] (__codelineno-0-76) [ 1882 0 R /XYZ 60.307257 275.210598 0 ] (__codelineno-0-77) [ 1882 0 R /XYZ 60.307257 261.810246 0 ] (__codelineno-0-78) [ 1882 0 R /XYZ 60.307257 248.409894 0 ] (__codelineno-0-79) [ 1882 0 R /XYZ 60.307257 235.009542 0 ] (__codelineno-0-8) [ 1251 0 R /XYZ 60.307257 411.289758 0 ] (__codelineno-0-80) [ 1882 0 R /XYZ 60.307257 221.609190 0 ] (__codelineno-0-81) [ 1882 0 R /XYZ 60.307257 208.208838 0 ] (__codelineno-0-82) [ 1882 0 R /XYZ 60.307257 194.808486 0 ] (__codelineno-0-83) [ 1882 0 R /XYZ 60.307257 181.408134 0 ] (__codelineno-0-84) [ 1882 0 R /XYZ 60.307257 168.007782 0 ] (__codelineno-0-85) [ 1882 0 R /XYZ 60.307257 154.607430 0 ] (__codelineno-0-86) [ 1882 0 R /XYZ 60.307257 141.207078 0 ] (__codelineno-0-87) [ 1882 0 R /XYZ 60.307257 127.806726 0 ] (__codelineno-0-88) [ 1882 0 R /XYZ 60.307257 101.006022 0 ] (__codelineno-0-89) [ 1882 0 R /XYZ 60.307257 87.605670 0 ] (__codelineno-0-9) [ 1251 0 R /XYZ 60.307257 397.889406 0 ] (__codelineno-0-90) [ 1884 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-0-91) [ 1884 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-0-92) [ 1884 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-0-93) [ 1884 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-0-94) [ 1884 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-0-95) [ 1884 0 R /XYZ 60.307257 704.021862 0 ] (__codelineno-0-96) [ 1884 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-0-97) [ 1884 0 R /XYZ 60.307257 677.221158 0 ] (__codelineno-0-98) [ 1884 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-0-99) [ 1884 0 R /XYZ 60.307257 650.420454 0 ] (__codelineno-1-1) [ 726 0 R /XYZ 60.307257 187.456122 0 ] (__codelineno-1-10) [ 728 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-1-11) [ 728 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-1-12) [ 728 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-1-13) [ 728 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-1-2) [ 726 0 R /XYZ 60.307257 174.055770 0 ] (__codelineno-1-3) [ 726 0 R /XYZ 60.307257 160.655418 0 ] (__codelineno-1-4) [ 726 0 R /XYZ 60.307257 147.255066 0 ] (__codelineno-1-5) [ 726 0 R /XYZ 60.307257 133.854714 0 ] (__codelineno-1-6) [ 726 0 R /XYZ 60.307257 120.454362 0 ] (__codelineno-1-7) [ 726 0 R /XYZ 60.307257 107.054010 0 ] (__codelineno-1-8) [ 726 0 R /XYZ 60.307257 93.653658 0 ] (__codelineno-1-9) [ 728 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-10-1) [ 1009 0 R /XYZ 60.307257 443.734906 0 ] (__codelineno-10-10) [ 1009 0 R /XYZ 60.307257 296.331034 0 ] (__codelineno-10-11) [ 1009 0 R /XYZ 60.307257 282.930682 0 ] (__codelineno-10-12) [ 1009 0 R /XYZ 60.307257 269.530330 0 ] (__codelineno-10-13) [ 1009 0 R /XYZ 60.307257 256.129978 0 ] (__codelineno-10-14) [ 1009 0 R /XYZ 60.307257 242.729626 0 ] (__codelineno-10-15) [ 1009 0 R /XYZ 60.307257 229.329274 0 ] (__codelineno-10-16) [ 1009 0 R /XYZ 60.307257 215.928922 0 ] (__codelineno-10-17) [ 1009 0 R /XYZ 60.307257 202.528570 0 ] (__codelineno-10-18) [ 1009 0 R /XYZ 60.307257 189.128218 0 ] (__codelineno-10-19) [ 1009 0 R /XYZ 60.307257 175.727866 0 ] (__codelineno-10-2) [ 1009 0 R /XYZ 60.307257 416.934202 0 ] (__codelineno-10-20) [ 1009 0 R /XYZ 60.307257 162.327514 0 ] (__codelineno-10-21) [ 1009 0 R /XYZ 60.307257 148.927162 0 ] (__codelineno-10-22) [ 1009 0 R /XYZ 60.307257 135.526810 0 ] (__codelineno-10-23) [ 1009 0 R /XYZ 60.307257 122.126458 0 ] (__codelineno-10-24) [ 1009 0 R /XYZ 60.307257 108.726106 0 ] (__codelineno-10-25) [ 1009 0 R /XYZ 60.307257 95.325754 0 ] (__codelineno-10-26) [ 1013 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-10-27) [ 1013 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-10-28) [ 1013 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-10-29) [ 1013 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-10-3) [ 1009 0 R /XYZ 60.307257 403.533850 0 ] (__codelineno-10-4) [ 1009 0 R /XYZ 60.307257 390.133498 0 ] (__codelineno-10-5) [ 1009 0 R /XYZ 60.307257 376.733146 0 ] (__codelineno-10-6) [ 1009 0 R /XYZ 60.307257 349.932442 0 ] (__codelineno-10-7) [ 1009 0 R /XYZ 60.307257 336.532090 0 ] (__codelineno-10-8) [ 1009 0 R /XYZ 60.307257 323.131738 0 ] (__codelineno-10-9) [ 1009 0 R /XYZ 60.307257 309.731386 0 ] (__codelineno-11-1) [ 1026 0 R /XYZ 60.307257 583.460922 0 ] (__codelineno-11-10) [ 1026 0 R /XYZ 60.307257 422.656698 0 ] (__codelineno-11-11) [ 1026 0 R /XYZ 60.307257 409.256346 0 ] (__codelineno-11-12) [ 1026 0 R /XYZ 60.307257 395.855994 0 ] (__codelineno-11-13) [ 1026 0 R /XYZ 60.307257 382.455642 0 ] (__codelineno-11-14) [ 1026 0 R /XYZ 60.307257 369.055290 0 ] (__codelineno-11-15) [ 1026 0 R /XYZ 60.307257 355.654938 0 ] (__codelineno-11-16) [ 1026 0 R /XYZ 60.307257 342.254586 0 ] (__codelineno-11-17) [ 1457 0 R /XYZ 60.307257 610.219398 0 ] (__codelineno-11-18) [ 1457 0 R /XYZ 60.307257 596.819046 0 ] (__codelineno-11-19) [ 1457 0 R /XYZ 60.307257 583.418694 0 ] (__codelineno-11-2) [ 1026 0 R /XYZ 60.307257 556.660218 0 ] (__codelineno-11-20) [ 1457 0 R /XYZ 60.307257 570.018342 0 ] (__codelineno-11-21) [ 1457 0 R /XYZ 60.307257 556.617990 0 ] (__codelineno-11-22) [ 1457 0 R /XYZ 60.307257 543.217638 0 ] (__codelineno-11-3) [ 1026 0 R /XYZ 60.307257 529.859514 0 ] (__codelineno-11-4) [ 1026 0 R /XYZ 60.307257 516.459162 0 ] (__codelineno-11-5) [ 1026 0 R /XYZ 60.307257 503.058810 0 ] (__codelineno-11-6) [ 1026 0 R /XYZ 60.307257 476.258106 0 ] (__codelineno-11-7) [ 1026 0 R /XYZ 60.307257 462.857754 0 ] (__codelineno-11-8) [ 1026 0 R /XYZ 60.307257 449.457402 0 ] (__codelineno-11-9) [ 1026 0 R /XYZ 60.307257 436.057050 0 ] (__codelineno-12-1) [ 1030 0 R /XYZ 60.307257 455.838522 0 ] (__codelineno-12-10) [ 1030 0 R /XYZ 60.307257 321.835002 0 ] (__codelineno-12-11) [ 1030 0 R /XYZ 60.307257 308.434650 0 ] (__codelineno-12-12) [ 1030 0 R /XYZ 60.307257 295.034298 0 ] (__codelineno-12-13) [ 1030 0 R /XYZ 60.307257 281.633946 0 ] (__codelineno-12-14) [ 1030 0 R /XYZ 60.307257 268.233594 0 ] (__codelineno-12-15) [ 1030 0 R /XYZ 60.307257 254.833242 0 ] (__codelineno-12-16) [ 1030 0 R /XYZ 60.307257 241.432890 0 ] (__codelineno-12-17) [ 1030 0 R /XYZ 60.307257 228.032538 0 ] (__codelineno-12-18) [ 1030 0 R /XYZ 60.307257 214.632186 0 ] (__codelineno-12-19) [ 1030 0 R /XYZ 60.307257 201.231834 0 ] (__codelineno-12-2) [ 1030 0 R /XYZ 60.307257 442.438170 0 ] (__codelineno-12-20) [ 1030 0 R /XYZ 60.307257 187.831482 0 ] (__codelineno-12-21) [ 1030 0 R /XYZ 60.307257 174.431130 0 ] (__codelineno-12-22) [ 1030 0 R /XYZ 60.307257 161.030778 0 ] (__codelineno-12-23) [ 1030 0 R /XYZ 60.307257 147.630426 0 ] (__codelineno-12-24) [ 1030 0 R /XYZ 60.307257 134.230074 0 ] (__codelineno-12-25) [ 1030 0 R /XYZ 60.307257 120.829722 0 ] (__codelineno-12-26) [ 1030 0 R /XYZ 60.307257 94.029018 0 ] (__codelineno-12-27) [ 1032 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-12-28) [ 1032 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-12-29) [ 1032 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-12-3) [ 1030 0 R /XYZ 60.307257 429.037818 0 ] (__codelineno-12-30) [ 1032 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-12-31) [ 1032 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-12-32) [ 1032 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-12-33) [ 1032 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-12-34) [ 1032 0 R /XYZ 60.307257 650.420454 0 ] (__codelineno-12-35) [ 1032 0 R /XYZ 60.307257 637.020102 0 ] (__codelineno-12-36) [ 1032 0 R /XYZ 60.307257 623.619750 0 ] (__codelineno-12-4) [ 1030 0 R /XYZ 60.307257 415.637466 0 ] (__codelineno-12-5) [ 1030 0 R /XYZ 60.307257 402.237114 0 ] (__codelineno-12-6) [ 1030 0 R /XYZ 60.307257 388.836762 0 ] (__codelineno-12-7) [ 1030 0 R /XYZ 60.307257 375.436410 0 ] (__codelineno-12-8) [ 1030 0 R /XYZ 60.307257 362.036058 0 ] (__codelineno-12-9) [ 1030 0 R /XYZ 60.307257 335.235354 0 ] (__codelineno-13-1) [ 1461 0 R /XYZ 60.307257 722.344122 0 ] (__codelineno-13-2) [ 1461 0 R /XYZ 60.307257 708.943770 0 ] (__codelineno-13-3) [ 1461 0 R /XYZ 60.307257 695.543418 0 ] (__codelineno-13-4) [ 1461 0 R /XYZ 60.307257 682.143066 0 ] (__codelineno-13-5) [ 1461 0 R /XYZ 60.307257 668.742714 0 ] (__codelineno-13-6) [ 1461 0 R /XYZ 60.307257 655.342362 0 ] (__codelineno-13-7) [ 1461 0 R /XYZ 60.307257 641.942010 0 ] (__codelineno-13-8) [ 1461 0 R /XYZ 60.307257 628.541658 0 ] (__codelineno-13-9) [ 1461 0 R /XYZ 60.307257 615.141306 0 ] (__codelineno-14-1) [ 1461 0 R /XYZ 60.307257 510.012354 0 ] (__codelineno-14-2) [ 1461 0 R /XYZ 60.307257 496.612002 0 ] (__codelineno-14-3) [ 1461 0 R /XYZ 60.307257 483.211650 0 ] (__codelineno-14-4) [ 1461 0 R /XYZ 60.307257 469.811298 0 ] (__codelineno-14-5) [ 1461 0 R /XYZ 60.307257 456.410946 0 ] (__codelineno-14-6) [ 1461 0 R /XYZ 60.307257 443.010594 0 ] (__codelineno-14-7) [ 1461 0 R /XYZ 60.307257 429.610242 0 ] (__codelineno-14-8) [ 1461 0 R /XYZ 60.307257 416.209890 0 ] (__codelineno-14-9) [ 1461 0 R /XYZ 60.307257 402.809538 0 ] (__codelineno-15-1) [ 1499 0 R /XYZ 60.307257 512.569722 0 ] (__codelineno-15-10) [ 1499 0 R /XYZ 60.307257 391.966554 0 ] (__codelineno-15-11) [ 1499 0 R /XYZ 60.307257 378.566202 0 ] (__codelineno-15-12) [ 1499 0 R /XYZ 60.307257 365.165850 0 ] (__codelineno-15-13) [ 1499 0 R /XYZ 60.307257 351.765498 0 ] (__codelineno-15-14) [ 1499 0 R /XYZ 60.307257 338.365146 0 ] (__codelineno-15-15) [ 1499 0 R /XYZ 60.307257 324.964794 0 ] (__codelineno-15-16) [ 1499 0 R /XYZ 60.307257 311.564442 0 ] (__codelineno-15-17) [ 1499 0 R /XYZ 60.307257 298.164090 0 ] (__codelineno-15-18) [ 1499 0 R /XYZ 60.307257 284.763738 0 ] (__codelineno-15-2) [ 1499 0 R /XYZ 60.307257 499.169370 0 ] (__codelineno-15-3) [ 1499 0 R /XYZ 60.307257 485.769018 0 ] (__codelineno-15-4) [ 1499 0 R /XYZ 60.307257 472.368666 0 ] (__codelineno-15-5) [ 1499 0 R /XYZ 60.307257 458.968314 0 ] (__codelineno-15-6) [ 1499 0 R /XYZ 60.307257 445.567962 0 ] (__codelineno-15-7) [ 1499 0 R /XYZ 60.307257 432.167610 0 ] (__codelineno-15-8) [ 1499 0 R /XYZ 60.307257 418.767258 0 ] (__codelineno-15-9) [ 1499 0 R /XYZ 60.307257 405.366906 0 ] (__codelineno-16-1) [ 1504 0 R /XYZ 60.307257 422.361822 0 ] (__codelineno-16-10) [ 1504 0 R /XYZ 60.307257 301.758654 0 ] (__codelineno-16-11) [ 1504 0 R /XYZ 60.307257 288.358302 0 ] (__codelineno-16-12) [ 1504 0 R /XYZ 60.307257 274.957950 0 ] (__codelineno-16-13) [ 1504 0 R /XYZ 60.307257 261.557598 0 ] (__codelineno-16-14) [ 1504 0 R /XYZ 60.307257 248.157246 0 ] (__codelineno-16-15) [ 1504 0 R /XYZ 60.307257 234.756894 0 ] (__codelineno-16-16) [ 1504 0 R /XYZ 60.307257 221.356542 0 ] (__codelineno-16-17) [ 1504 0 R /XYZ 60.307257 207.956190 0 ] (__codelineno-16-18) [ 1504 0 R /XYZ 60.307257 194.555838 0 ] (__codelineno-16-2) [ 1504 0 R /XYZ 60.307257 408.961470 0 ] (__codelineno-16-3) [ 1504 0 R /XYZ 60.307257 395.561118 0 ] (__codelineno-16-4) [ 1504 0 R /XYZ 60.307257 382.160766 0 ] (__codelineno-16-5) [ 1504 0 R /XYZ 60.307257 368.760414 0 ] (__codelineno-16-6) [ 1504 0 R /XYZ 60.307257 355.360062 0 ] (__codelineno-16-7) [ 1504 0 R /XYZ 60.307257 341.959710 0 ] (__codelineno-16-8) [ 1504 0 R /XYZ 60.307257 328.559358 0 ] (__codelineno-16-9) [ 1504 0 R /XYZ 60.307257 315.159006 0 ] (__codelineno-17-1) [ 1515 0 R /XYZ 60.307257 363.601105 0 ] (__codelineno-17-10) [ 1515 0 R /XYZ 60.307257 242.997937 0 ] (__codelineno-17-11) [ 1515 0 R /XYZ 60.307257 229.597585 0 ] (__codelineno-17-12) [ 1515 0 R /XYZ 60.307257 202.796881 0 ] (__codelineno-17-13) [ 1515 0 R /XYZ 60.307257 189.396529 0 ] (__codelineno-17-14) [ 1515 0 R /XYZ 60.307257 175.996177 0 ] (__codelineno-17-15) [ 1515 0 R /XYZ 60.307257 162.595825 0 ] (__codelineno-17-16) [ 1515 0 R /XYZ 60.307257 149.195473 0 ] (__codelineno-17-17) [ 1515 0 R /XYZ 60.307257 135.795121 0 ] (__codelineno-17-18) [ 1515 0 R /XYZ 60.307257 122.394769 0 ] (__codelineno-17-19) [ 1515 0 R /XYZ 60.307257 108.994417 0 ] (__codelineno-17-2) [ 1515 0 R /XYZ 60.307257 350.200753 0 ] (__codelineno-17-20) [ 1515 0 R /XYZ 60.307257 95.594065 0 ] (__codelineno-17-21) [ 1519 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-17-22) [ 1519 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-17-23) [ 1519 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-17-24) [ 1519 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-17-3) [ 1515 0 R /XYZ 60.307257 336.800401 0 ] (__codelineno-17-4) [ 1515 0 R /XYZ 60.307257 323.400049 0 ] (__codelineno-17-5) [ 1515 0 R /XYZ 60.307257 309.999697 0 ] (__codelineno-17-6) [ 1515 0 R /XYZ 60.307257 296.599345 0 ] (__codelineno-17-7) [ 1515 0 R /XYZ 60.307257 283.198993 0 ] (__codelineno-17-8) [ 1515 0 R /XYZ 60.307257 269.798641 0 ] (__codelineno-17-9) [ 1515 0 R /XYZ 60.307257 256.398289 0 ] (__codelineno-18-1) [ 1550 0 R /XYZ 60.307257 236.252922 0 ] (__codelineno-18-10) [ 1552 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-18-11) [ 1552 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-18-12) [ 1552 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-18-13) [ 1552 0 R /XYZ 60.307257 637.020102 0 ] (__codelineno-18-14) [ 1552 0 R /XYZ 60.307257 610.219398 0 ] (__codelineno-18-15) [ 1552 0 R /XYZ 60.307257 583.418694 0 ] (__codelineno-18-16) [ 1552 0 R /XYZ 60.307257 556.617990 0 ] (__codelineno-18-17) [ 1552 0 R /XYZ 60.307257 543.217638 0 ] (__codelineno-18-18) [ 1552 0 R /XYZ 60.307257 529.817286 0 ] (__codelineno-18-2) [ 1550 0 R /XYZ 60.307257 222.852570 0 ] (__codelineno-18-3) [ 1550 0 R /XYZ 60.307257 209.452218 0 ] (__codelineno-18-4) [ 1550 0 R /XYZ 60.307257 169.251162 0 ] (__codelineno-18-5) [ 1550 0 R /XYZ 60.307257 142.450458 0 ] (__codelineno-18-6) [ 1550 0 R /XYZ 60.307257 129.050106 0 ] (__codelineno-18-7) [ 1550 0 R /XYZ 60.307257 115.649754 0 ] (__codelineno-18-8) [ 1550 0 R /XYZ 60.307257 88.849050 0 ] (__codelineno-18-9) [ 1552 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-19-1) [ 1552 0 R /XYZ 60.307257 464.101134 0 ] (__codelineno-19-2) [ 1552 0 R /XYZ 60.307257 450.700782 0 ] (__codelineno-19-3) [ 1552 0 R /XYZ 60.307257 437.300430 0 ] (__codelineno-19-4) [ 1552 0 R /XYZ 60.307257 423.900078 0 ] (__codelineno-2-1) [ 728 0 R /XYZ 60.307257 409.598862 0 ] (__codelineno-2-10) [ 728 0 R /XYZ 60.307257 288.995694 0 ] (__codelineno-2-11) [ 728 0 R /XYZ 60.307257 262.194990 0 ] (__codelineno-2-12) [ 728 0 R /XYZ 60.307257 248.794638 0 ] (__codelineno-2-13) [ 728 0 R /XYZ 60.307257 235.394286 0 ] (__codelineno-2-14) [ 728 0 R /XYZ 60.307257 221.993934 0 ] (__codelineno-2-15) [ 728 0 R /XYZ 60.307257 208.593582 0 ] (__codelineno-2-16) [ 728 0 R /XYZ 60.307257 195.193230 0 ] (__codelineno-2-17) [ 728 0 R /XYZ 60.307257 181.792878 0 ] (__codelineno-2-18) [ 728 0 R /XYZ 60.307257 168.392526 0 ] (__codelineno-2-19) [ 728 0 R /XYZ 60.307257 154.992174 0 ] (__codelineno-2-2) [ 728 0 R /XYZ 60.307257 396.198510 0 ] (__codelineno-2-20) [ 728 0 R /XYZ 60.307257 141.591822 0 ] (__codelineno-2-21) [ 728 0 R /XYZ 60.307257 128.191470 0 ] (__codelineno-2-22) [ 728 0 R /XYZ 60.307257 114.791118 0 ] (__codelineno-2-23) [ 728 0 R /XYZ 60.307257 101.390766 0 ] (__codelineno-2-24) [ 728 0 R /XYZ 60.307257 87.990414 0 ] (__codelineno-2-25) [ 730 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-2-26) [ 730 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-2-27) [ 730 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-2-28) [ 730 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-2-3) [ 728 0 R /XYZ 60.307257 382.798158 0 ] (__codelineno-2-4) [ 728 0 R /XYZ 60.307257 369.397806 0 ] (__codelineno-2-5) [ 728 0 R /XYZ 60.307257 355.997454 0 ] (__codelineno-2-6) [ 728 0 R /XYZ 60.307257 342.597102 0 ] (__codelineno-2-7) [ 728 0 R /XYZ 60.307257 329.196750 0 ] (__codelineno-2-8) [ 728 0 R /XYZ 60.307257 315.796398 0 ] (__codelineno-2-9) [ 728 0 R /XYZ 60.307257 302.396046 0 ] (__codelineno-20-1) [ 1552 0 R /XYZ 60.307257 333.785526 0 ] (__codelineno-20-2) [ 1552 0 R /XYZ 60.307257 320.385174 0 ] (__codelineno-20-3) [ 1552 0 R /XYZ 60.307257 306.984822 0 ] (__codelineno-20-4) [ 1552 0 R /XYZ 60.307257 293.584470 0 ] (__codelineno-21-1) [ 1552 0 R /XYZ 60.307257 227.868318 0 ] (__codelineno-21-2) [ 1552 0 R /XYZ 60.307257 214.467966 0 ] (__codelineno-21-3) [ 1552 0 R /XYZ 60.307257 201.067614 0 ] (__codelineno-21-4) [ 1552 0 R /XYZ 60.307257 187.667262 0 ] (__codelineno-21-5) [ 1552 0 R /XYZ 60.307257 174.266910 0 ] (__codelineno-21-6) [ 1552 0 R /XYZ 60.307257 160.866558 0 ] (__codelineno-21-7) [ 1552 0 R /XYZ 60.307257 134.065854 0 ] (__codelineno-21-8) [ 1552 0 R /XYZ 60.307257 120.665502 0 ] (__codelineno-22-1) [ 1554 0 R /XYZ 60.307257 697.945722 0 ] (__codelineno-22-2) [ 1554 0 R /XYZ 60.307257 684.545370 0 ] (__codelineno-22-3) [ 1554 0 R /XYZ 60.307257 671.145018 0 ] (__codelineno-22-4) [ 1554 0 R /XYZ 60.307257 644.344314 0 ] (__codelineno-22-5) [ 1554 0 R /XYZ 60.307257 630.943962 0 ] (__codelineno-23-1) [ 1571 0 R /XYZ 60.307257 422.056122 0 ] (__codelineno-23-2) [ 1571 0 R /XYZ 60.307257 381.855066 0 ] (__codelineno-23-3) [ 1571 0 R /XYZ 60.307257 368.454714 0 ] (__codelineno-23-4) [ 1571 0 R /XYZ 60.307257 355.054362 0 ] (__codelineno-23-5) [ 1571 0 R /XYZ 60.307257 341.654010 0 ] (__codelineno-24-1) [ 1576 0 R /XYZ 60.307257 520.588122 0 ] (__codelineno-24-10) [ 1576 0 R /XYZ 60.307257 373.184250 0 ] (__codelineno-24-2) [ 1576 0 R /XYZ 60.307257 480.387066 0 ] (__codelineno-24-3) [ 1576 0 R /XYZ 60.307257 466.986714 0 ] (__codelineno-24-4) [ 1576 0 R /XYZ 60.307257 453.586362 0 ] (__codelineno-24-5) [ 1576 0 R /XYZ 60.307257 440.186010 0 ] (__codelineno-24-6) [ 1576 0 R /XYZ 60.307257 426.785658 0 ] (__codelineno-24-7) [ 1576 0 R /XYZ 60.307257 413.385306 0 ] (__codelineno-24-8) [ 1576 0 R /XYZ 60.307257 399.984954 0 ] (__codelineno-24-9) [ 1576 0 R /XYZ 60.307257 386.584602 0 ] (__codelineno-25-1) [ 1578 0 R /XYZ 60.307257 342.292122 0 ] (__codelineno-25-10) [ 1578 0 R /XYZ 60.307257 221.688954 0 ] (__codelineno-25-11) [ 1578 0 R /XYZ 60.307257 208.288602 0 ] (__codelineno-25-12) [ 1578 0 R /XYZ 60.307257 194.888250 0 ] (__codelineno-25-13) [ 1578 0 R /XYZ 60.307257 181.487898 0 ] (__codelineno-25-14) [ 1578 0 R /XYZ 60.307257 168.087546 0 ] (__codelineno-25-15) [ 1578 0 R /XYZ 60.307257 154.687194 0 ] (__codelineno-25-16) [ 1578 0 R /XYZ 60.307257 141.286842 0 ] (__codelineno-25-17) [ 1578 0 R /XYZ 60.307257 127.886490 0 ] (__codelineno-25-18) [ 1578 0 R /XYZ 60.307257 114.486138 0 ] (__codelineno-25-19) [ 1578 0 R /XYZ 60.307257 101.085786 0 ] (__codelineno-25-2) [ 1578 0 R /XYZ 60.307257 328.891770 0 ] (__codelineno-25-20) [ 1578 0 R /XYZ 60.307257 87.685434 0 ] (__codelineno-25-21) [ 1580 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-25-22) [ 1580 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-25-23) [ 1580 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-25-24) [ 1580 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-25-25) [ 1580 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-25-26) [ 1580 0 R /XYZ 60.307257 704.021862 0 ] (__codelineno-25-27) [ 1580 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-25-28) [ 1580 0 R /XYZ 60.307257 677.221158 0 ] (__codelineno-25-29) [ 1580 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-25-3) [ 1578 0 R /XYZ 60.307257 315.491418 0 ] (__codelineno-25-30) [ 1580 0 R /XYZ 60.307257 650.420454 0 ] (__codelineno-25-31) [ 1580 0 R /XYZ 60.307257 637.020102 0 ] (__codelineno-25-32) [ 1580 0 R /XYZ 60.307257 623.619750 0 ] (__codelineno-25-33) [ 1580 0 R /XYZ 60.307257 610.219398 0 ] (__codelineno-25-34) [ 1580 0 R /XYZ 60.307257 596.819046 0 ] (__codelineno-25-35) [ 1580 0 R /XYZ 60.307257 583.418694 0 ] (__codelineno-25-36) [ 1580 0 R /XYZ 60.307257 570.018342 0 ] (__codelineno-25-37) [ 1580 0 R /XYZ 60.307257 556.617990 0 ] (__codelineno-25-38) [ 1580 0 R /XYZ 60.307257 543.217638 0 ] (__codelineno-25-39) [ 1580 0 R /XYZ 60.307257 516.416934 0 ] (__codelineno-25-4) [ 1578 0 R /XYZ 60.307257 302.091066 0 ] (__codelineno-25-40) [ 1580 0 R /XYZ 60.307257 503.016582 0 ] (__codelineno-25-41) [ 1580 0 R /XYZ 60.307257 489.616230 0 ] (__codelineno-25-42) [ 1580 0 R /XYZ 60.307257 476.215878 0 ] (__codelineno-25-43) [ 1580 0 R /XYZ 60.307257 462.815526 0 ] (__codelineno-25-44) [ 1580 0 R /XYZ 60.307257 449.415174 0 ] (__codelineno-25-45) [ 1580 0 R /XYZ 60.307257 436.014822 0 ] (__codelineno-25-46) [ 1580 0 R /XYZ 60.307257 422.614470 0 ] (__codelineno-25-47) [ 1580 0 R /XYZ 60.307257 409.214118 0 ] (__codelineno-25-48) [ 1580 0 R /XYZ 60.307257 395.813766 0 ] (__codelineno-25-49) [ 1580 0 R /XYZ 60.307257 382.413414 0 ] (__codelineno-25-5) [ 1578 0 R /XYZ 60.307257 288.690714 0 ] (__codelineno-25-50) [ 1580 0 R /XYZ 60.307257 369.013062 0 ] (__codelineno-25-51) [ 1580 0 R /XYZ 60.307257 342.212358 0 ] (__codelineno-25-52) [ 1580 0 R /XYZ 60.307257 328.812006 0 ] (__codelineno-25-53) [ 1580 0 R /XYZ 60.307257 315.411654 0 ] (__codelineno-25-54) [ 1580 0 R /XYZ 60.307257 302.011302 0 ] (__codelineno-25-55) [ 1580 0 R /XYZ 60.307257 288.610950 0 ] (__codelineno-25-56) [ 1580 0 R /XYZ 60.307257 275.210598 0 ] (__codelineno-25-57) [ 1580 0 R /XYZ 60.307257 261.810246 0 ] (__codelineno-25-58) [ 1580 0 R /XYZ 60.307257 248.409894 0 ] (__codelineno-25-59) [ 1580 0 R /XYZ 60.307257 235.009542 0 ] (__codelineno-25-6) [ 1578 0 R /XYZ 60.307257 275.290362 0 ] (__codelineno-25-60) [ 1580 0 R /XYZ 60.307257 221.609190 0 ] (__codelineno-25-61) [ 1580 0 R /XYZ 60.307257 208.208838 0 ] (__codelineno-25-62) [ 1580 0 R /XYZ 60.307257 194.808486 0 ] (__codelineno-25-63) [ 1580 0 R /XYZ 60.307257 181.408134 0 ] (__codelineno-25-64) [ 1580 0 R /XYZ 60.307257 168.007782 0 ] (__codelineno-25-65) [ 1580 0 R /XYZ 60.307257 154.607430 0 ] (__codelineno-25-66) [ 1580 0 R /XYZ 60.307257 141.207078 0 ] (__codelineno-25-67) [ 1580 0 R /XYZ 60.307257 127.806726 0 ] (__codelineno-25-68) [ 1580 0 R /XYZ 60.307257 114.406374 0 ] (__codelineno-25-7) [ 1578 0 R /XYZ 60.307257 261.890010 0 ] (__codelineno-25-8) [ 1578 0 R /XYZ 60.307257 248.489658 0 ] (__codelineno-25-9) [ 1578 0 R /XYZ 60.307257 235.089306 0 ] (__codelineno-26-1) [ 1582 0 R /XYZ 60.307257 412.672122 0 ] (__codelineno-26-2) [ 1582 0 R /XYZ 60.307257 385.871418 0 ] (__codelineno-26-3) [ 1582 0 R /XYZ 60.307257 372.471066 0 ] (__codelineno-26-4) [ 1582 0 R /XYZ 60.307257 345.670362 0 ] (__codelineno-26-5) [ 1582 0 R /XYZ 60.307257 332.270010 0 ] (__codelineno-26-6) [ 1582 0 R /XYZ 60.307257 305.469306 0 ] (__codelineno-27-1) [ 1622 0 R /XYZ 60.307257 292.862622 0 ] (__codelineno-27-10) [ 1622 0 R /XYZ 60.307257 158.859102 0 ] (__codelineno-27-2) [ 1622 0 R /XYZ 60.307257 279.462270 0 ] (__codelineno-27-3) [ 1622 0 R /XYZ 60.307257 266.061918 0 ] (__codelineno-27-4) [ 1622 0 R /XYZ 60.307257 252.661566 0 ] (__codelineno-27-5) [ 1622 0 R /XYZ 60.307257 239.261214 0 ] (__codelineno-27-6) [ 1622 0 R /XYZ 60.307257 225.860862 0 ] (__codelineno-27-7) [ 1622 0 R /XYZ 60.307257 212.460510 0 ] (__codelineno-27-8) [ 1622 0 R /XYZ 60.307257 185.659806 0 ] (__codelineno-27-9) [ 1622 0 R /XYZ 60.307257 172.259454 0 ] (__codelineno-28-1) [ 1626 0 R /XYZ 60.307257 722.344122 0 ] (__codelineno-28-10) [ 1626 0 R /XYZ 60.307257 548.139546 0 ] (__codelineno-28-11) [ 1626 0 R /XYZ 60.307257 534.739194 0 ] (__codelineno-28-12) [ 1626 0 R /XYZ 60.307257 521.338842 0 ] (__codelineno-28-13) [ 1626 0 R /XYZ 60.307257 507.938490 0 ] (__codelineno-28-14) [ 1626 0 R /XYZ 60.307257 467.737434 0 ] (__codelineno-28-15) [ 1626 0 R /XYZ 60.307257 454.337082 0 ] (__codelineno-28-16) [ 1626 0 R /XYZ 60.307257 440.936730 0 ] (__codelineno-28-17) [ 1626 0 R /XYZ 60.307257 427.536378 0 ] (__codelineno-28-2) [ 1626 0 R /XYZ 60.307257 708.943770 0 ] (__codelineno-28-3) [ 1626 0 R /XYZ 60.307257 668.742714 0 ] (__codelineno-28-4) [ 1626 0 R /XYZ 60.307257 655.342362 0 ] (__codelineno-28-5) [ 1626 0 R /XYZ 60.307257 641.942010 0 ] (__codelineno-28-6) [ 1626 0 R /XYZ 60.307257 628.541658 0 ] (__codelineno-28-7) [ 1626 0 R /XYZ 60.307257 601.740954 0 ] (__codelineno-28-8) [ 1626 0 R /XYZ 60.307257 588.340602 0 ] (__codelineno-28-9) [ 1626 0 R /XYZ 60.307257 574.940250 0 ] (__codelineno-29-1) [ 1626 0 R /XYZ 60.307257 361.820226 0 ] (__codelineno-29-2) [ 1626 0 R /XYZ 60.307257 348.419874 0 ] (__codelineno-29-3) [ 1626 0 R /XYZ 60.307257 335.019522 0 ] (__codelineno-29-4) [ 1626 0 R /XYZ 60.307257 321.619170 0 ] (__codelineno-29-5) [ 1626 0 R /XYZ 60.307257 308.218818 0 ] (__codelineno-3-1) [ 730 0 R /XYZ 60.307257 665.106414 0 ] (__codelineno-3-10) [ 730 0 R /XYZ 60.307257 544.503246 0 ] (__codelineno-3-11) [ 730 0 R /XYZ 60.307257 531.102894 0 ] (__codelineno-3-12) [ 730 0 R /XYZ 60.307257 517.702542 0 ] (__codelineno-3-13) [ 1279 0 R /XYZ 60.307257 504.302190 0 ] (__codelineno-3-14) [ 1279 0 R /XYZ 60.307257 477.501486 0 ] (__codelineno-3-15) [ 1279 0 R /XYZ 60.307257 464.101134 0 ] (__codelineno-3-16) [ 1279 0 R /XYZ 60.307257 437.300430 0 ] (__codelineno-3-17) [ 1279 0 R /XYZ 60.307257 423.900078 0 ] (__codelineno-3-18) [ 1279 0 R /XYZ 60.307257 410.499726 0 ] (__codelineno-3-19) [ 1279 0 R /XYZ 60.307257 397.099374 0 ] (__codelineno-3-2) [ 730 0 R /XYZ 60.307257 651.706062 0 ] (__codelineno-3-20) [ 1279 0 R /XYZ 60.307257 383.699022 0 ] (__codelineno-3-21) [ 1279 0 R /XYZ 60.307257 370.298670 0 ] (__codelineno-3-22) [ 1279 0 R /XYZ 60.307257 356.898318 0 ] (__codelineno-3-3) [ 730 0 R /XYZ 60.307257 638.305710 0 ] (__codelineno-3-4) [ 730 0 R /XYZ 60.307257 624.905358 0 ] (__codelineno-3-5) [ 730 0 R /XYZ 60.307257 611.505006 0 ] (__codelineno-3-6) [ 730 0 R /XYZ 60.307257 598.104654 0 ] (__codelineno-3-7) [ 730 0 R /XYZ 60.307257 584.704302 0 ] (__codelineno-3-8) [ 730 0 R /XYZ 60.307257 571.303950 0 ] (__codelineno-3-9) [ 730 0 R /XYZ 60.307257 557.903598 0 ] (__codelineno-30-1) [ 1630 0 R /XYZ 60.307257 763.633722 0 ] (__codelineno-30-2) [ 1630 0 R /XYZ 60.307257 750.233370 0 ] (__codelineno-31-1) [ 1695 0 R /XYZ 60.307257 525.280122 0 ] (__codelineno-31-10) [ 1695 0 R /XYZ 60.307257 404.676954 0 ] (__codelineno-31-11) [ 1695 0 R /XYZ 60.307257 391.276602 0 ] (__codelineno-31-12) [ 1695 0 R /XYZ 60.307257 377.876250 0 ] (__codelineno-31-13) [ 1695 0 R /XYZ 60.307257 364.475898 0 ] (__codelineno-31-14) [ 1695 0 R /XYZ 60.307257 351.075546 0 ] (__codelineno-31-15) [ 1695 0 R /XYZ 60.307257 337.675194 0 ] (__codelineno-31-16) [ 1695 0 R /XYZ 60.307257 324.274842 0 ] (__codelineno-31-17) [ 1695 0 R /XYZ 60.307257 310.874490 0 ] (__codelineno-31-18) [ 1695 0 R /XYZ 60.307257 297.474138 0 ] (__codelineno-31-19) [ 1695 0 R /XYZ 60.307257 284.073786 0 ] (__codelineno-31-2) [ 1695 0 R /XYZ 60.307257 511.879770 0 ] (__codelineno-31-20) [ 1695 0 R /XYZ 60.307257 270.673434 0 ] (__codelineno-31-21) [ 1695 0 R /XYZ 60.307257 257.273082 0 ] (__codelineno-31-22) [ 1695 0 R /XYZ 60.307257 243.872730 0 ] (__codelineno-31-23) [ 1695 0 R /XYZ 60.307257 230.472378 0 ] (__codelineno-31-24) [ 1695 0 R /XYZ 60.307257 217.072026 0 ] (__codelineno-31-25) [ 1695 0 R /XYZ 60.307257 203.671674 0 ] (__codelineno-31-26) [ 1695 0 R /XYZ 60.307257 190.271322 0 ] (__codelineno-31-27) [ 1695 0 R /XYZ 60.307257 176.870970 0 ] (__codelineno-31-28) [ 1695 0 R /XYZ 60.307257 163.470618 0 ] (__codelineno-31-29) [ 1695 0 R /XYZ 60.307257 150.070266 0 ] (__codelineno-31-3) [ 1695 0 R /XYZ 60.307257 498.479418 0 ] (__codelineno-31-30) [ 1695 0 R /XYZ 60.307257 136.669914 0 ] (__codelineno-31-31) [ 1695 0 R /XYZ 60.307257 123.269562 0 ] (__codelineno-31-32) [ 1695 0 R /XYZ 60.307257 109.869210 0 ] (__codelineno-31-33) [ 1695 0 R /XYZ 60.307257 96.468858 0 ] (__codelineno-31-34) [ 1697 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-31-35) [ 1697 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-31-36) [ 1697 0 R /XYZ 60.307257 704.021862 0 ] (__codelineno-31-37) [ 1697 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-31-38) [ 1697 0 R /XYZ 60.307257 677.221158 0 ] (__codelineno-31-39) [ 1697 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-31-4) [ 1695 0 R /XYZ 60.307257 485.079066 0 ] (__codelineno-31-40) [ 1697 0 R /XYZ 60.307257 650.420454 0 ] (__codelineno-31-41) [ 1697 0 R /XYZ 60.307257 623.619750 0 ] (__codelineno-31-42) [ 1697 0 R /XYZ 60.307257 596.819046 0 ] (__codelineno-31-43) [ 1697 0 R /XYZ 60.307257 583.418694 0 ] (__codelineno-31-44) [ 1697 0 R /XYZ 60.307257 570.018342 0 ] (__codelineno-31-45) [ 1697 0 R /XYZ 60.307257 556.617990 0 ] (__codelineno-31-46) [ 1697 0 R /XYZ 60.307257 529.817286 0 ] (__codelineno-31-47) [ 1697 0 R /XYZ 60.307257 503.016582 0 ] (__codelineno-31-48) [ 1697 0 R /XYZ 60.307257 476.215878 0 ] (__codelineno-31-49) [ 1697 0 R /XYZ 60.307257 462.815526 0 ] (__codelineno-31-5) [ 1695 0 R /XYZ 60.307257 471.678714 0 ] (__codelineno-31-50) [ 1697 0 R /XYZ 60.307257 449.415174 0 ] (__codelineno-31-6) [ 1695 0 R /XYZ 60.307257 458.278362 0 ] (__codelineno-31-7) [ 1695 0 R /XYZ 60.307257 444.878010 0 ] (__codelineno-31-8) [ 1695 0 R /XYZ 60.307257 431.477658 0 ] (__codelineno-31-9) [ 1695 0 R /XYZ 60.307257 418.077306 0 ] (__codelineno-32-1) [ 1716 0 R /XYZ 60.307257 737.358522 0 ] (__codelineno-32-10) [ 1716 0 R /XYZ 60.307257 603.355002 0 ] (__codelineno-32-11) [ 1716 0 R /XYZ 60.307257 589.954650 0 ] (__codelineno-32-12) [ 1716 0 R /XYZ 60.307257 576.554298 0 ] (__codelineno-32-13) [ 1716 0 R /XYZ 60.307257 563.153946 0 ] (__codelineno-32-14) [ 1716 0 R /XYZ 60.307257 549.753594 0 ] (__codelineno-32-15) [ 1716 0 R /XYZ 60.307257 536.353242 0 ] (__codelineno-32-16) [ 1716 0 R /XYZ 60.307257 522.952890 0 ] (__codelineno-32-17) [ 1716 0 R /XYZ 60.307257 509.552538 0 ] (__codelineno-32-18) [ 1716 0 R /XYZ 60.307257 482.751834 0 ] (__codelineno-32-19) [ 1716 0 R /XYZ 60.307257 455.951130 0 ] (__codelineno-32-2) [ 1716 0 R /XYZ 60.307257 723.958170 0 ] (__codelineno-32-20) [ 1716 0 R /XYZ 60.307257 442.550778 0 ] (__codelineno-32-21) [ 1716 0 R /XYZ 60.307257 429.150426 0 ] (__codelineno-32-22) [ 1716 0 R /XYZ 60.307257 415.750074 0 ] (__codelineno-32-23) [ 1716 0 R /XYZ 60.307257 402.349722 0 ] (__codelineno-32-24) [ 1716 0 R /XYZ 60.307257 388.949370 0 ] (__codelineno-32-25) [ 1716 0 R /XYZ 60.307257 362.148666 0 ] (__codelineno-32-26) [ 1716 0 R /XYZ 60.307257 335.347962 0 ] (__codelineno-32-27) [ 1716 0 R /XYZ 60.307257 321.947610 0 ] (__codelineno-32-28) [ 1716 0 R /XYZ 60.307257 308.547258 0 ] (__codelineno-32-29) [ 1716 0 R /XYZ 60.307257 295.146906 0 ] (__codelineno-32-3) [ 1716 0 R /XYZ 60.307257 710.557818 0 ] (__codelineno-32-30) [ 1716 0 R /XYZ 60.307257 281.746554 0 ] (__codelineno-32-31) [ 1716 0 R /XYZ 60.307257 268.346202 0 ] (__codelineno-32-32) [ 1716 0 R /XYZ 60.307257 254.945850 0 ] (__codelineno-32-33) [ 1716 0 R /XYZ 60.307257 241.545498 0 ] (__codelineno-32-34) [ 1716 0 R /XYZ 60.307257 214.744794 0 ] (__codelineno-32-35) [ 1716 0 R /XYZ 60.307257 201.344442 0 ] (__codelineno-32-36) [ 1716 0 R /XYZ 60.307257 174.543738 0 ] (__codelineno-32-37) [ 1716 0 R /XYZ 60.307257 147.743034 0 ] (__codelineno-32-38) [ 1716 0 R /XYZ 60.307257 120.942330 0 ] (__codelineno-32-39) [ 1716 0 R /XYZ 60.307257 107.541978 0 ] (__codelineno-32-4) [ 1716 0 R /XYZ 60.307257 697.157466 0 ] (__codelineno-32-40) [ 1716 0 R /XYZ 60.307257 94.141626 0 ] (__codelineno-32-41) [ 1718 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-32-42) [ 1718 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-32-43) [ 1718 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-32-44) [ 1718 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-32-45) [ 1718 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-32-46) [ 1718 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-32-47) [ 1718 0 R /XYZ 60.307257 637.020102 0 ] (__codelineno-32-48) [ 1718 0 R /XYZ 60.307257 623.619750 0 ] (__codelineno-32-49) [ 1718 0 R /XYZ 60.307257 610.219398 0 ] (__codelineno-32-5) [ 1716 0 R /XYZ 60.307257 670.356762 0 ] (__codelineno-32-50) [ 1718 0 R /XYZ 60.307257 596.819046 0 ] (__codelineno-32-51) [ 1718 0 R /XYZ 60.307257 583.418694 0 ] (__codelineno-32-52) [ 1718 0 R /XYZ 60.307257 570.018342 0 ] (__codelineno-32-53) [ 1718 0 R /XYZ 60.307257 556.617990 0 ] (__codelineno-32-54) [ 1718 0 R /XYZ 60.307257 543.217638 0 ] (__codelineno-32-55) [ 1718 0 R /XYZ 60.307257 516.416934 0 ] (__codelineno-32-56) [ 1718 0 R /XYZ 60.307257 489.616230 0 ] (__codelineno-32-57) [ 1718 0 R /XYZ 60.307257 476.215878 0 ] (__codelineno-32-58) [ 1718 0 R /XYZ 60.307257 462.815526 0 ] (__codelineno-32-59) [ 1718 0 R /XYZ 60.307257 449.415174 0 ] (__codelineno-32-6) [ 1716 0 R /XYZ 60.307257 656.956410 0 ] (__codelineno-32-60) [ 1718 0 R /XYZ 60.307257 436.014822 0 ] (__codelineno-32-61) [ 1718 0 R /XYZ 60.307257 422.614470 0 ] (__codelineno-32-62) [ 1718 0 R /XYZ 60.307257 409.214118 0 ] (__codelineno-32-63) [ 1718 0 R /XYZ 60.307257 395.813766 0 ] (__codelineno-32-64) [ 1718 0 R /XYZ 60.307257 382.413414 0 ] (__codelineno-32-65) [ 1718 0 R /XYZ 60.307257 369.013062 0 ] (__codelineno-32-66) [ 1718 0 R /XYZ 60.307257 355.612710 0 ] (__codelineno-32-67) [ 1718 0 R /XYZ 60.307257 328.812006 0 ] (__codelineno-32-68) [ 1718 0 R /XYZ 60.307257 315.411654 0 ] (__codelineno-32-69) [ 1718 0 R /XYZ 60.307257 302.011302 0 ] (__codelineno-32-7) [ 1716 0 R /XYZ 60.307257 643.556058 0 ] (__codelineno-32-70) [ 1718 0 R /XYZ 60.307257 288.610950 0 ] (__codelineno-32-71) [ 1718 0 R /XYZ 60.307257 275.210598 0 ] (__codelineno-32-72) [ 1718 0 R /XYZ 60.307257 261.810246 0 ] (__codelineno-32-73) [ 1718 0 R /XYZ 60.307257 248.409894 0 ] (__codelineno-32-74) [ 1718 0 R /XYZ 60.307257 235.009542 0 ] (__codelineno-32-8) [ 1716 0 R /XYZ 60.307257 630.155706 0 ] (__codelineno-32-9) [ 1716 0 R /XYZ 60.307257 616.755354 0 ] (__codelineno-33-1) [ 1718 0 R /XYZ 60.307257 195.568590 0 ] (__codelineno-33-2) [ 1718 0 R /XYZ 60.307257 182.168238 0 ] (__codelineno-34-1) [ 1720 0 R /XYZ 60.307257 682.931322 0 ] (__codelineno-34-10) [ 1720 0 R /XYZ 60.307257 535.527450 0 ] (__codelineno-34-11) [ 1720 0 R /XYZ 60.307257 522.127098 0 ] (__codelineno-34-12) [ 1720 0 R /XYZ 60.307257 508.726746 0 ] (__codelineno-34-13) [ 1720 0 R /XYZ 60.307257 495.326394 0 ] (__codelineno-34-14) [ 1720 0 R /XYZ 60.307257 468.525690 0 ] (__codelineno-34-15) [ 1720 0 R /XYZ 60.307257 455.125338 0 ] (__codelineno-34-16) [ 1720 0 R /XYZ 60.307257 428.324634 0 ] (__codelineno-34-17) [ 1720 0 R /XYZ 60.307257 414.924282 0 ] (__codelineno-34-18) [ 1720 0 R /XYZ 60.307257 388.123578 0 ] (__codelineno-34-19) [ 1720 0 R /XYZ 60.307257 374.723226 0 ] (__codelineno-34-2) [ 1720 0 R /XYZ 60.307257 669.530970 0 ] (__codelineno-34-20) [ 1720 0 R /XYZ 60.307257 361.322874 0 ] (__codelineno-34-21) [ 1720 0 R /XYZ 60.307257 347.922522 0 ] (__codelineno-34-22) [ 1720 0 R /XYZ 60.307257 334.522170 0 ] (__codelineno-34-23) [ 1720 0 R /XYZ 60.307257 307.721466 0 ] (__codelineno-34-24) [ 1720 0 R /XYZ 60.307257 294.321114 0 ] (__codelineno-34-25) [ 1720 0 R /XYZ 60.307257 267.520410 0 ] (__codelineno-34-26) [ 1720 0 R /XYZ 60.307257 254.120058 0 ] (__codelineno-34-27) [ 1720 0 R /XYZ 60.307257 227.319354 0 ] (__codelineno-34-28) [ 1720 0 R /XYZ 60.307257 213.919002 0 ] (__codelineno-34-29) [ 1720 0 R /XYZ 60.307257 200.518650 0 ] (__codelineno-34-3) [ 1720 0 R /XYZ 60.307257 656.130618 0 ] (__codelineno-34-30) [ 1720 0 R /XYZ 60.307257 173.717946 0 ] (__codelineno-34-31) [ 1720 0 R /XYZ 60.307257 160.317594 0 ] (__codelineno-34-32) [ 1720 0 R /XYZ 60.307257 146.917242 0 ] (__codelineno-34-4) [ 1720 0 R /XYZ 60.307257 642.730266 0 ] (__codelineno-34-5) [ 1720 0 R /XYZ 60.307257 629.329914 0 ] (__codelineno-34-6) [ 1720 0 R /XYZ 60.307257 615.929562 0 ] (__codelineno-34-7) [ 1720 0 R /XYZ 60.307257 602.529210 0 ] (__codelineno-34-8) [ 1720 0 R /XYZ 60.307257 575.728506 0 ] (__codelineno-34-9) [ 1720 0 R /XYZ 60.307257 562.328154 0 ] (__codelineno-35-1) [ 1722 0 R /XYZ 60.307257 519.649722 0 ] (__codelineno-35-10) [ 1722 0 R /XYZ 60.307257 385.646202 0 ] (__codelineno-35-11) [ 1722 0 R /XYZ 60.307257 372.245850 0 ] (__codelineno-35-12) [ 1722 0 R /XYZ 60.307257 358.845498 0 ] (__codelineno-35-13) [ 1722 0 R /XYZ 60.307257 332.044794 0 ] (__codelineno-35-14) [ 1722 0 R /XYZ 60.307257 318.644442 0 ] (__codelineno-35-15) [ 1722 0 R /XYZ 60.307257 305.244090 0 ] (__codelineno-35-16) [ 1722 0 R /XYZ 60.307257 291.843738 0 ] (__codelineno-35-17) [ 1722 0 R /XYZ 60.307257 278.443386 0 ] (__codelineno-35-18) [ 1722 0 R /XYZ 60.307257 265.043034 0 ] (__codelineno-35-19) [ 1722 0 R /XYZ 60.307257 251.642682 0 ] (__codelineno-35-2) [ 1722 0 R /XYZ 60.307257 506.249370 0 ] (__codelineno-35-20) [ 1722 0 R /XYZ 60.307257 238.242330 0 ] (__codelineno-35-21) [ 1722 0 R /XYZ 60.307257 224.841978 0 ] (__codelineno-35-22) [ 1722 0 R /XYZ 60.307257 198.041274 0 ] (__codelineno-35-23) [ 1722 0 R /XYZ 60.307257 171.240570 0 ] (__codelineno-35-24) [ 1722 0 R /XYZ 60.307257 157.840218 0 ] (__codelineno-35-25) [ 1722 0 R /XYZ 60.307257 144.439866 0 ] (__codelineno-35-26) [ 1722 0 R /XYZ 60.307257 131.039514 0 ] (__codelineno-35-27) [ 1722 0 R /XYZ 60.307257 104.238810 0 ] (__codelineno-35-28) [ 1722 0 R /XYZ 60.307257 90.838458 0 ] (__codelineno-35-29) [ 1724 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-35-3) [ 1722 0 R /XYZ 60.307257 492.849018 0 ] (__codelineno-35-30) [ 1724 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-35-31) [ 1724 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-35-32) [ 1724 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-35-4) [ 1722 0 R /XYZ 60.307257 479.448666 0 ] (__codelineno-35-5) [ 1722 0 R /XYZ 60.307257 452.647962 0 ] (__codelineno-35-6) [ 1722 0 R /XYZ 60.307257 439.247610 0 ] (__codelineno-35-7) [ 1722 0 R /XYZ 60.307257 425.847258 0 ] (__codelineno-35-8) [ 1722 0 R /XYZ 60.307257 412.446906 0 ] (__codelineno-35-9) [ 1722 0 R /XYZ 60.307257 399.046554 0 ] (__codelineno-36-1) [ 1729 0 R /XYZ 60.307257 619.120122 0 ] (__codelineno-36-10) [ 1729 0 R /XYZ 60.307257 498.516954 0 ] (__codelineno-36-11) [ 1729 0 R /XYZ 60.307257 485.116602 0 ] (__codelineno-36-12) [ 1729 0 R /XYZ 60.307257 471.716250 0 ] (__codelineno-36-13) [ 1729 0 R /XYZ 60.307257 458.315898 0 ] (__codelineno-36-14) [ 1729 0 R /XYZ 60.307257 444.915546 0 ] (__codelineno-36-15) [ 1729 0 R /XYZ 60.307257 431.515194 0 ] (__codelineno-36-16) [ 1729 0 R /XYZ 60.307257 418.114842 0 ] (__codelineno-36-17) [ 1729 0 R /XYZ 60.307257 404.714490 0 ] (__codelineno-36-18) [ 1729 0 R /XYZ 60.307257 391.314138 0 ] (__codelineno-36-19) [ 1729 0 R /XYZ 60.307257 377.913786 0 ] (__codelineno-36-2) [ 1729 0 R /XYZ 60.307257 605.719770 0 ] (__codelineno-36-20) [ 1729 0 R /XYZ 60.307257 364.513434 0 ] (__codelineno-36-21) [ 1729 0 R /XYZ 60.307257 351.113082 0 ] (__codelineno-36-22) [ 1729 0 R /XYZ 60.307257 337.712730 0 ] (__codelineno-36-23) [ 1729 0 R /XYZ 60.307257 324.312378 0 ] (__codelineno-36-24) [ 1729 0 R /XYZ 60.307257 310.912026 0 ] (__codelineno-36-25) [ 1729 0 R /XYZ 60.307257 297.511674 0 ] (__codelineno-36-26) [ 1729 0 R /XYZ 60.307257 284.111322 0 ] (__codelineno-36-27) [ 1729 0 R /XYZ 60.307257 270.710970 0 ] (__codelineno-36-28) [ 1729 0 R /XYZ 60.307257 257.310618 0 ] (__codelineno-36-29) [ 1729 0 R /XYZ 60.307257 243.910266 0 ] (__codelineno-36-3) [ 1729 0 R /XYZ 60.307257 592.319418 0 ] (__codelineno-36-30) [ 1729 0 R /XYZ 60.307257 230.509914 0 ] (__codelineno-36-31) [ 1729 0 R /XYZ 60.307257 217.109562 0 ] (__codelineno-36-32) [ 1729 0 R /XYZ 60.307257 203.709210 0 ] (__codelineno-36-33) [ 1729 0 R /XYZ 60.307257 190.308858 0 ] (__codelineno-36-34) [ 1729 0 R /XYZ 60.307257 176.908506 0 ] (__codelineno-36-35) [ 1729 0 R /XYZ 60.307257 163.508154 0 ] (__codelineno-36-36) [ 1729 0 R /XYZ 60.307257 150.107802 0 ] (__codelineno-36-37) [ 1729 0 R /XYZ 60.307257 136.707450 0 ] (__codelineno-36-38) [ 1729 0 R /XYZ 60.307257 123.307098 0 ] (__codelineno-36-39) [ 1729 0 R /XYZ 60.307257 109.906746 0 ] (__codelineno-36-4) [ 1729 0 R /XYZ 60.307257 578.919066 0 ] (__codelineno-36-40) [ 1729 0 R /XYZ 60.307257 96.506394 0 ] (__codelineno-36-41) [ 1731 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-36-42) [ 1731 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-36-43) [ 1731 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-36-44) [ 1731 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-36-45) [ 1731 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-36-46) [ 1731 0 R /XYZ 60.307257 704.021862 0 ] (__codelineno-36-47) [ 1731 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-36-48) [ 1731 0 R /XYZ 60.307257 677.221158 0 ] (__codelineno-36-49) [ 1731 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-36-5) [ 1729 0 R /XYZ 60.307257 565.518714 0 ] (__codelineno-36-50) [ 1731 0 R /XYZ 60.307257 650.420454 0 ] (__codelineno-36-51) [ 1731 0 R /XYZ 60.307257 637.020102 0 ] (__codelineno-36-52) [ 1731 0 R /XYZ 60.307257 623.619750 0 ] (__codelineno-36-53) [ 1731 0 R /XYZ 60.307257 610.219398 0 ] (__codelineno-36-54) [ 1731 0 R /XYZ 60.307257 596.819046 0 ] (__codelineno-36-55) [ 1731 0 R /XYZ 60.307257 583.418694 0 ] (__codelineno-36-56) [ 1731 0 R /XYZ 60.307257 570.018342 0 ] (__codelineno-36-57) [ 1731 0 R /XYZ 60.307257 556.617990 0 ] (__codelineno-36-58) [ 1731 0 R /XYZ 60.307257 543.217638 0 ] (__codelineno-36-59) [ 1731 0 R /XYZ 60.307257 529.817286 0 ] (__codelineno-36-6) [ 1729 0 R /XYZ 60.307257 552.118362 0 ] (__codelineno-36-60) [ 1731 0 R /XYZ 60.307257 516.416934 0 ] (__codelineno-36-61) [ 1731 0 R /XYZ 60.307257 503.016582 0 ] (__codelineno-36-62) [ 1731 0 R /XYZ 60.307257 489.616230 0 ] (__codelineno-36-63) [ 1731 0 R /XYZ 60.307257 476.215878 0 ] (__codelineno-36-64) [ 1731 0 R /XYZ 60.307257 462.815526 0 ] (__codelineno-36-65) [ 1731 0 R /XYZ 60.307257 449.415174 0 ] (__codelineno-36-66) [ 1731 0 R /XYZ 60.307257 436.014822 0 ] (__codelineno-36-67) [ 1731 0 R /XYZ 60.307257 422.614470 0 ] (__codelineno-36-68) [ 1731 0 R /XYZ 60.307257 409.214118 0 ] (__codelineno-36-69) [ 1731 0 R /XYZ 60.307257 395.813766 0 ] (__codelineno-36-7) [ 1729 0 R /XYZ 60.307257 538.718010 0 ] (__codelineno-36-70) [ 1731 0 R /XYZ 60.307257 382.413414 0 ] (__codelineno-36-71) [ 1731 0 R /XYZ 60.307257 369.013062 0 ] (__codelineno-36-72) [ 1731 0 R /XYZ 60.307257 355.612710 0 ] (__codelineno-36-73) [ 1731 0 R /XYZ 60.307257 342.212358 0 ] (__codelineno-36-74) [ 1731 0 R /XYZ 60.307257 328.812006 0 ] (__codelineno-36-75) [ 1731 0 R /XYZ 60.307257 315.411654 0 ] (__codelineno-36-76) [ 1731 0 R /XYZ 60.307257 302.011302 0 ] (__codelineno-36-77) [ 1731 0 R /XYZ 60.307257 288.610950 0 ] (__codelineno-36-78) [ 1731 0 R /XYZ 60.307257 275.210598 0 ] (__codelineno-36-79) [ 1731 0 R /XYZ 60.307257 261.810246 0 ] (__codelineno-36-8) [ 1729 0 R /XYZ 60.307257 525.317658 0 ] (__codelineno-36-80) [ 1731 0 R /XYZ 60.307257 248.409894 0 ] (__codelineno-36-81) [ 1731 0 R /XYZ 60.307257 235.009542 0 ] (__codelineno-36-82) [ 1731 0 R /XYZ 60.307257 221.609190 0 ] (__codelineno-36-83) [ 1731 0 R /XYZ 60.307257 208.208838 0 ] (__codelineno-36-84) [ 1731 0 R /XYZ 60.307257 194.808486 0 ] (__codelineno-36-85) [ 1731 0 R /XYZ 60.307257 181.408134 0 ] (__codelineno-36-86) [ 1731 0 R /XYZ 60.307257 168.007782 0 ] (__codelineno-36-87) [ 1731 0 R /XYZ 60.307257 154.607430 0 ] (__codelineno-36-88) [ 1731 0 R /XYZ 60.307257 141.207078 0 ] (__codelineno-36-89) [ 1731 0 R /XYZ 60.307257 127.806726 0 ] (__codelineno-36-9) [ 1729 0 R /XYZ 60.307257 511.917306 0 ] (__codelineno-37-1) [ 1733 0 R /XYZ 60.307257 658.532922 0 ] (__codelineno-37-10) [ 1733 0 R /XYZ 60.307257 537.929754 0 ] (__codelineno-37-11) [ 1733 0 R /XYZ 60.307257 524.529402 0 ] (__codelineno-37-12) [ 1733 0 R /XYZ 60.307257 511.129050 0 ] (__codelineno-37-13) [ 1733 0 R /XYZ 60.307257 497.728698 0 ] (__codelineno-37-14) [ 1733 0 R /XYZ 60.307257 484.328346 0 ] (__codelineno-37-15) [ 1733 0 R /XYZ 60.307257 470.927994 0 ] (__codelineno-37-16) [ 1733 0 R /XYZ 60.307257 457.527642 0 ] (__codelineno-37-17) [ 1733 0 R /XYZ 60.307257 444.127290 0 ] (__codelineno-37-18) [ 1733 0 R /XYZ 60.307257 430.726938 0 ] (__codelineno-37-19) [ 1733 0 R /XYZ 60.307257 417.326586 0 ] (__codelineno-37-2) [ 1733 0 R /XYZ 60.307257 645.132570 0 ] (__codelineno-37-20) [ 1733 0 R /XYZ 60.307257 403.926234 0 ] (__codelineno-37-21) [ 1733 0 R /XYZ 60.307257 390.525882 0 ] (__codelineno-37-22) [ 1733 0 R /XYZ 60.307257 377.125530 0 ] (__codelineno-37-23) [ 1733 0 R /XYZ 60.307257 363.725178 0 ] (__codelineno-37-24) [ 1733 0 R /XYZ 60.307257 350.324826 0 ] (__codelineno-37-25) [ 1733 0 R /XYZ 60.307257 336.924474 0 ] (__codelineno-37-26) [ 1733 0 R /XYZ 60.307257 323.524122 0 ] (__codelineno-37-27) [ 1733 0 R /XYZ 60.307257 310.123770 0 ] (__codelineno-37-28) [ 1733 0 R /XYZ 60.307257 296.723418 0 ] (__codelineno-37-29) [ 1733 0 R /XYZ 60.307257 283.323066 0 ] (__codelineno-37-3) [ 1733 0 R /XYZ 60.307257 631.732218 0 ] (__codelineno-37-30) [ 1733 0 R /XYZ 60.307257 269.922714 0 ] (__codelineno-37-31) [ 1733 0 R /XYZ 60.307257 256.522362 0 ] (__codelineno-37-32) [ 1733 0 R /XYZ 60.307257 243.122010 0 ] (__codelineno-37-33) [ 1733 0 R /XYZ 60.307257 229.721658 0 ] (__codelineno-37-34) [ 1733 0 R /XYZ 60.307257 216.321306 0 ] (__codelineno-37-35) [ 1733 0 R /XYZ 60.307257 202.920954 0 ] (__codelineno-37-36) [ 1733 0 R /XYZ 60.307257 189.520602 0 ] (__codelineno-37-37) [ 1733 0 R /XYZ 60.307257 176.120250 0 ] (__codelineno-37-38) [ 1733 0 R /XYZ 60.307257 162.719898 0 ] (__codelineno-37-39) [ 1733 0 R /XYZ 60.307257 149.319546 0 ] (__codelineno-37-4) [ 1733 0 R /XYZ 60.307257 618.331866 0 ] (__codelineno-37-40) [ 1733 0 R /XYZ 60.307257 135.919194 0 ] (__codelineno-37-41) [ 1733 0 R /XYZ 60.307257 122.518842 0 ] (__codelineno-37-42) [ 1733 0 R /XYZ 60.307257 109.118490 0 ] (__codelineno-37-43) [ 1733 0 R /XYZ 60.307257 95.718138 0 ] (__codelineno-37-44) [ 1735 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-37-45) [ 1735 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-37-46) [ 1735 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-37-47) [ 1735 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-37-48) [ 1735 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-37-49) [ 1735 0 R /XYZ 60.307257 704.021862 0 ] (__codelineno-37-5) [ 1733 0 R /XYZ 60.307257 604.931514 0 ] (__codelineno-37-50) [ 1735 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-37-51) [ 1735 0 R /XYZ 60.307257 677.221158 0 ] (__codelineno-37-52) [ 1735 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-37-53) [ 1735 0 R /XYZ 60.307257 650.420454 0 ] (__codelineno-37-54) [ 1735 0 R /XYZ 60.307257 637.020102 0 ] (__codelineno-37-55) [ 1735 0 R /XYZ 60.307257 623.619750 0 ] (__codelineno-37-56) [ 1735 0 R /XYZ 60.307257 610.219398 0 ] (__codelineno-37-57) [ 1735 0 R /XYZ 60.307257 596.819046 0 ] (__codelineno-37-58) [ 1735 0 R /XYZ 60.307257 583.418694 0 ] (__codelineno-37-59) [ 1735 0 R /XYZ 60.307257 570.018342 0 ] (__codelineno-37-6) [ 1733 0 R /XYZ 60.307257 591.531162 0 ] (__codelineno-37-60) [ 1735 0 R /XYZ 60.307257 556.617990 0 ] (__codelineno-37-61) [ 1735 0 R /XYZ 60.307257 543.217638 0 ] (__codelineno-37-62) [ 1735 0 R /XYZ 60.307257 529.817286 0 ] (__codelineno-37-63) [ 1735 0 R /XYZ 60.307257 516.416934 0 ] (__codelineno-37-64) [ 1735 0 R /XYZ 60.307257 503.016582 0 ] (__codelineno-37-65) [ 1735 0 R /XYZ 60.307257 489.616230 0 ] (__codelineno-37-66) [ 1735 0 R /XYZ 60.307257 476.215878 0 ] (__codelineno-37-67) [ 1735 0 R /XYZ 60.307257 462.815526 0 ] (__codelineno-37-68) [ 1735 0 R /XYZ 60.307257 449.415174 0 ] (__codelineno-37-69) [ 1735 0 R /XYZ 60.307257 436.014822 0 ] (__codelineno-37-7) [ 1733 0 R /XYZ 60.307257 578.130810 0 ] (__codelineno-37-70) [ 1735 0 R /XYZ 60.307257 422.614470 0 ] (__codelineno-37-71) [ 1735 0 R /XYZ 60.307257 409.214118 0 ] (__codelineno-37-72) [ 1735 0 R /XYZ 60.307257 395.813766 0 ] (__codelineno-37-73) [ 1735 0 R /XYZ 60.307257 382.413414 0 ] (__codelineno-37-74) [ 1735 0 R /XYZ 60.307257 369.013062 0 ] (__codelineno-37-75) [ 1735 0 R /XYZ 60.307257 355.612710 0 ] (__codelineno-37-76) [ 1735 0 R /XYZ 60.307257 342.212358 0 ] (__codelineno-37-77) [ 1735 0 R /XYZ 60.307257 328.812006 0 ] (__codelineno-37-78) [ 1735 0 R /XYZ 60.307257 315.411654 0 ] (__codelineno-37-79) [ 1735 0 R /XYZ 60.307257 302.011302 0 ] (__codelineno-37-8) [ 1733 0 R /XYZ 60.307257 564.730458 0 ] (__codelineno-37-80) [ 1735 0 R /XYZ 60.307257 288.610950 0 ] (__codelineno-37-81) [ 1735 0 R /XYZ 60.307257 275.210598 0 ] (__codelineno-37-9) [ 1733 0 R /XYZ 60.307257 551.330106 0 ] (__codelineno-38-1) [ 1737 0 R /XYZ 60.307257 174.624222 0 ] (__codelineno-38-10) [ 1739 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-38-11) [ 1739 0 R /XYZ 60.307257 704.021862 0 ] (__codelineno-38-12) [ 1739 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-38-13) [ 1739 0 R /XYZ 60.307257 677.221158 0 ] (__codelineno-38-14) [ 1739 0 R /XYZ 60.307257 650.420454 0 ] (__codelineno-38-15) [ 1739 0 R /XYZ 60.307257 637.020102 0 ] (__codelineno-38-16) [ 1739 0 R /XYZ 60.307257 623.619750 0 ] (__codelineno-38-17) [ 1739 0 R /XYZ 60.307257 596.819046 0 ] (__codelineno-38-18) [ 1739 0 R /XYZ 60.307257 583.418694 0 ] (__codelineno-38-19) [ 1739 0 R /XYZ 60.307257 570.018342 0 ] (__codelineno-38-2) [ 1737 0 R /XYZ 60.307257 161.223870 0 ] (__codelineno-38-20) [ 1739 0 R /XYZ 60.307257 543.217638 0 ] (__codelineno-38-21) [ 1739 0 R /XYZ 60.307257 529.817286 0 ] (__codelineno-38-22) [ 1739 0 R /XYZ 60.307257 516.416934 0 ] (__codelineno-38-23) [ 1739 0 R /XYZ 60.307257 503.016582 0 ] (__codelineno-38-24) [ 1739 0 R /XYZ 60.307257 489.616230 0 ] (__codelineno-38-25) [ 1739 0 R /XYZ 60.307257 476.215878 0 ] (__codelineno-38-26) [ 1739 0 R /XYZ 60.307257 449.415174 0 ] (__codelineno-38-27) [ 1739 0 R /XYZ 60.307257 436.014822 0 ] (__codelineno-38-28) [ 1739 0 R /XYZ 60.307257 422.614470 0 ] (__codelineno-38-29) [ 1739 0 R /XYZ 60.307257 395.813766 0 ] (__codelineno-38-3) [ 1737 0 R /XYZ 60.307257 147.823518 0 ] (__codelineno-38-30) [ 1739 0 R /XYZ 60.307257 382.413414 0 ] (__codelineno-38-31) [ 1739 0 R /XYZ 60.307257 369.013062 0 ] (__codelineno-38-32) [ 1739 0 R /XYZ 60.307257 342.212358 0 ] (__codelineno-38-33) [ 1739 0 R /XYZ 60.307257 328.812006 0 ] (__codelineno-38-34) [ 1739 0 R /XYZ 60.307257 315.411654 0 ] (__codelineno-38-35) [ 1739 0 R /XYZ 60.307257 302.011302 0 ] (__codelineno-38-36) [ 1739 0 R /XYZ 60.307257 275.210598 0 ] (__codelineno-38-37) [ 1739 0 R /XYZ 60.307257 261.810246 0 ] (__codelineno-38-38) [ 1739 0 R /XYZ 60.307257 248.409894 0 ] (__codelineno-38-4) [ 1737 0 R /XYZ 60.307257 134.423166 0 ] (__codelineno-38-5) [ 1737 0 R /XYZ 60.307257 121.022814 0 ] (__codelineno-38-6) [ 1737 0 R /XYZ 60.307257 94.222110 0 ] (__codelineno-38-7) [ 1739 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-38-8) [ 1739 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-38-9) [ 1739 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-39-1) [ 1874 0 R /XYZ 60.307257 504.941022 0 ] (__codelineno-39-10) [ 1874 0 R /XYZ 60.307257 344.136798 0 ] (__codelineno-39-11) [ 1874 0 R /XYZ 60.307257 330.736446 0 ] (__codelineno-39-12) [ 1874 0 R /XYZ 60.307257 317.336094 0 ] (__codelineno-39-13) [ 1874 0 R /XYZ 60.307257 303.935742 0 ] (__codelineno-39-14) [ 1874 0 R /XYZ 60.307257 290.535390 0 ] (__codelineno-39-15) [ 1874 0 R /XYZ 60.307257 277.135038 0 ] (__codelineno-39-16) [ 1874 0 R /XYZ 60.307257 263.734686 0 ] (__codelineno-39-17) [ 1874 0 R /XYZ 60.307257 250.334334 0 ] (__codelineno-39-18) [ 1874 0 R /XYZ 60.307257 236.933982 0 ] (__codelineno-39-19) [ 1874 0 R /XYZ 60.307257 223.533630 0 ] (__codelineno-39-2) [ 1874 0 R /XYZ 60.307257 491.540670 0 ] (__codelineno-39-20) [ 1874 0 R /XYZ 60.307257 210.133278 0 ] (__codelineno-39-21) [ 1874 0 R /XYZ 60.307257 196.732926 0 ] (__codelineno-39-22) [ 1874 0 R /XYZ 60.307257 183.332574 0 ] (__codelineno-39-23) [ 1874 0 R /XYZ 60.307257 169.932222 0 ] (__codelineno-39-24) [ 1874 0 R /XYZ 60.307257 156.531870 0 ] (__codelineno-39-25) [ 1874 0 R /XYZ 60.307257 143.131518 0 ] (__codelineno-39-26) [ 1874 0 R /XYZ 60.307257 129.731166 0 ] (__codelineno-39-27) [ 1874 0 R /XYZ 60.307257 116.330814 0 ] (__codelineno-39-28) [ 1874 0 R /XYZ 60.307257 102.930462 0 ] (__codelineno-39-29) [ 1874 0 R /XYZ 60.307257 89.530110 0 ] (__codelineno-39-3) [ 1874 0 R /XYZ 60.307257 478.140318 0 ] (__codelineno-39-30) [ 1876 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-39-31) [ 1876 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-39-32) [ 1876 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-39-33) [ 1876 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-39-4) [ 1874 0 R /XYZ 60.307257 451.339614 0 ] (__codelineno-39-5) [ 1874 0 R /XYZ 60.307257 424.538910 0 ] (__codelineno-39-6) [ 1874 0 R /XYZ 60.307257 397.738206 0 ] (__codelineno-39-7) [ 1874 0 R /XYZ 60.307257 384.337854 0 ] (__codelineno-39-8) [ 1874 0 R /XYZ 60.307257 370.937502 0 ] (__codelineno-39-9) [ 1874 0 R /XYZ 60.307257 357.537150 0 ] (__codelineno-4-1) [ 730 0 R /XYZ 60.307257 478.261590 0 ] (__codelineno-4-10) [ 730 0 R /XYZ 60.307257 357.658422 0 ] (__codelineno-4-11) [ 730 0 R /XYZ 60.307257 330.857718 0 ] (__codelineno-4-12) [ 730 0 R /XYZ 60.307257 317.457366 0 ] (__codelineno-4-13) [ 730 0 R /XYZ 60.307257 304.057014 0 ] (__codelineno-4-14) [ 730 0 R /XYZ 60.307257 290.656662 0 ] (__codelineno-4-15) [ 730 0 R /XYZ 60.307257 277.256310 0 ] (__codelineno-4-16) [ 730 0 R /XYZ 60.307257 263.855958 0 ] (__codelineno-4-17) [ 730 0 R /XYZ 60.307257 237.055254 0 ] (__codelineno-4-18) [ 730 0 R /XYZ 60.307257 223.654902 0 ] (__codelineno-4-19) [ 730 0 R /XYZ 60.307257 210.254550 0 ] (__codelineno-4-2) [ 730 0 R /XYZ 60.307257 464.861238 0 ] (__codelineno-4-20) [ 730 0 R /XYZ 60.307257 196.854198 0 ] (__codelineno-4-21) [ 730 0 R /XYZ 60.307257 183.453846 0 ] (__codelineno-4-22) [ 730 0 R /XYZ 60.307257 170.053494 0 ] (__codelineno-4-23) [ 730 0 R /XYZ 60.307257 156.653142 0 ] (__codelineno-4-24) [ 730 0 R /XYZ 60.307257 143.252790 0 ] (__codelineno-4-25) [ 730 0 R /XYZ 60.307257 129.852438 0 ] (__codelineno-4-26) [ 730 0 R /XYZ 60.307257 116.452086 0 ] (__codelineno-4-27) [ 730 0 R /XYZ 60.307257 103.051734 0 ] (__codelineno-4-28) [ 730 0 R /XYZ 60.307257 89.651382 0 ] (__codelineno-4-29) [ 732 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-4-3) [ 730 0 R /XYZ 60.307257 451.460886 0 ] (__codelineno-4-30) [ 732 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-4-31) [ 732 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-4-32) [ 732 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-4-33) [ 732 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-4-34) [ 732 0 R /XYZ 60.307257 704.021862 0 ] (__codelineno-4-35) [ 732 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-4-36) [ 732 0 R /XYZ 60.307257 677.221158 0 ] (__codelineno-4-37) [ 732 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-4-4) [ 730 0 R /XYZ 60.307257 438.060534 0 ] (__codelineno-4-5) [ 730 0 R /XYZ 60.307257 424.660182 0 ] (__codelineno-4-6) [ 730 0 R /XYZ 60.307257 411.259830 0 ] (__codelineno-4-7) [ 730 0 R /XYZ 60.307257 397.859478 0 ] (__codelineno-4-8) [ 730 0 R /XYZ 60.307257 384.459126 0 ] (__codelineno-4-9) [ 730 0 R /XYZ 60.307257 371.058774 0 ] (__codelineno-40-1) [ 1876 0 R /XYZ 60.307257 665.106414 0 ] (__codelineno-40-10) [ 1876 0 R /XYZ 60.307257 504.302190 0 ] (__codelineno-40-11) [ 1876 0 R /XYZ 60.307257 490.901838 0 ] (__codelineno-40-12) [ 1876 0 R /XYZ 60.307257 477.501486 0 ] (__codelineno-40-13) [ 1876 0 R /XYZ 60.307257 464.101134 0 ] (__codelineno-40-14) [ 1876 0 R /XYZ 60.307257 450.700782 0 ] (__codelineno-40-15) [ 1876 0 R /XYZ 60.307257 437.300430 0 ] (__codelineno-40-16) [ 1876 0 R /XYZ 60.307257 423.900078 0 ] (__codelineno-40-17) [ 1876 0 R /XYZ 60.307257 410.499726 0 ] (__codelineno-40-18) [ 1876 0 R /XYZ 60.307257 397.099374 0 ] (__codelineno-40-19) [ 1876 0 R /XYZ 60.307257 383.699022 0 ] (__codelineno-40-2) [ 1876 0 R /XYZ 60.307257 651.706062 0 ] (__codelineno-40-20) [ 1876 0 R /XYZ 60.307257 370.298670 0 ] (__codelineno-40-21) [ 1876 0 R /XYZ 60.307257 356.898318 0 ] (__codelineno-40-22) [ 1876 0 R /XYZ 60.307257 343.497966 0 ] (__codelineno-40-23) [ 1876 0 R /XYZ 60.307257 330.097614 0 ] (__codelineno-40-24) [ 1876 0 R /XYZ 60.307257 316.697262 0 ] (__codelineno-40-25) [ 1876 0 R /XYZ 60.307257 303.296910 0 ] (__codelineno-40-26) [ 1876 0 R /XYZ 60.307257 289.896558 0 ] (__codelineno-40-27) [ 1876 0 R /XYZ 60.307257 263.095854 0 ] (__codelineno-40-28) [ 1876 0 R /XYZ 60.307257 249.695502 0 ] (__codelineno-40-29) [ 1876 0 R /XYZ 60.307257 236.295150 0 ] (__codelineno-40-3) [ 1876 0 R /XYZ 60.307257 638.305710 0 ] (__codelineno-40-30) [ 1876 0 R /XYZ 60.307257 222.894798 0 ] (__codelineno-40-31) [ 1876 0 R /XYZ 60.307257 209.494446 0 ] (__codelineno-40-32) [ 1876 0 R /XYZ 60.307257 196.094094 0 ] (__codelineno-40-4) [ 1876 0 R /XYZ 60.307257 624.905358 0 ] (__codelineno-40-5) [ 1876 0 R /XYZ 60.307257 611.505006 0 ] (__codelineno-40-6) [ 1876 0 R /XYZ 60.307257 571.303950 0 ] (__codelineno-40-7) [ 1876 0 R /XYZ 60.307257 557.903598 0 ] (__codelineno-40-8) [ 1876 0 R /XYZ 60.307257 531.102894 0 ] (__codelineno-40-9) [ 1876 0 R /XYZ 60.307257 517.702542 0 ] (__codelineno-5-1) [ 740 0 R /XYZ 60.307257 671.460194 0 ] (__codelineno-5-10) [ 740 0 R /XYZ 60.307257 537.456674 0 ] (__codelineno-5-11) [ 740 0 R /XYZ 60.307257 524.056322 0 ] (__codelineno-5-12) [ 740 0 R /XYZ 60.307257 510.655970 0 ] (__codelineno-5-13) [ 740 0 R /XYZ 60.307257 497.255618 0 ] (__codelineno-5-14) [ 740 0 R /XYZ 60.307257 483.855266 0 ] (__codelineno-5-15) [ 740 0 R /XYZ 60.307257 470.454914 0 ] (__codelineno-5-16) [ 740 0 R /XYZ 60.307257 457.054562 0 ] (__codelineno-5-17) [ 740 0 R /XYZ 60.307257 443.654210 0 ] (__codelineno-5-18) [ 740 0 R /XYZ 60.307257 416.853506 0 ] (__codelineno-5-19) [ 740 0 R /XYZ 60.307257 403.453154 0 ] (__codelineno-5-2) [ 740 0 R /XYZ 60.307257 658.059842 0 ] (__codelineno-5-20) [ 740 0 R /XYZ 60.307257 390.052802 0 ] (__codelineno-5-21) [ 740 0 R /XYZ 60.307257 376.652450 0 ] (__codelineno-5-22) [ 740 0 R /XYZ 60.307257 363.252098 0 ] (__codelineno-5-23) [ 740 0 R /XYZ 60.307257 349.851746 0 ] (__codelineno-5-24) [ 740 0 R /XYZ 60.307257 323.051042 0 ] (__codelineno-5-25) [ 740 0 R /XYZ 60.307257 309.650690 0 ] (__codelineno-5-26) [ 740 0 R /XYZ 60.307257 296.250338 0 ] (__codelineno-5-27) [ 740 0 R /XYZ 60.307257 269.449634 0 ] (__codelineno-5-28) [ 740 0 R /XYZ 60.307257 256.049282 0 ] (__codelineno-5-29) [ 740 0 R /XYZ 60.307257 229.248578 0 ] (__codelineno-5-3) [ 740 0 R /XYZ 60.307257 644.659490 0 ] (__codelineno-5-30) [ 740 0 R /XYZ 60.307257 202.447874 0 ] (__codelineno-5-31) [ 740 0 R /XYZ 60.307257 189.047522 0 ] (__codelineno-5-32) [ 740 0 R /XYZ 60.307257 175.647170 0 ] (__codelineno-5-33) [ 740 0 R /XYZ 60.307257 162.246818 0 ] (__codelineno-5-34) [ 740 0 R /XYZ 60.307257 135.446114 0 ] (__codelineno-5-35) [ 740 0 R /XYZ 60.307257 122.045762 0 ] (__codelineno-5-36) [ 740 0 R /XYZ 60.307257 108.645410 0 ] (__codelineno-5-37) [ 740 0 R /XYZ 60.307257 95.245058 0 ] (__codelineno-5-38) [ 744 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-5-39) [ 744 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-5-4) [ 740 0 R /XYZ 60.307257 631.259138 0 ] (__codelineno-5-40) [ 744 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-5-41) [ 744 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-5-42) [ 744 0 R /XYZ 60.307257 704.021862 0 ] (__codelineno-5-43) [ 744 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-5-44) [ 744 0 R /XYZ 60.307257 677.221158 0 ] (__codelineno-5-45) [ 744 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-5-46) [ 744 0 R /XYZ 60.307257 650.420454 0 ] (__codelineno-5-47) [ 744 0 R /XYZ 60.307257 637.020102 0 ] (__codelineno-5-48) [ 744 0 R /XYZ 60.307257 623.619750 0 ] (__codelineno-5-49) [ 744 0 R /XYZ 60.307257 610.219398 0 ] (__codelineno-5-5) [ 740 0 R /XYZ 60.307257 617.858786 0 ] (__codelineno-5-50) [ 744 0 R /XYZ 60.307257 596.819046 0 ] (__codelineno-5-51) [ 744 0 R /XYZ 60.307257 583.418694 0 ] (__codelineno-5-52) [ 744 0 R /XYZ 60.307257 570.018342 0 ] (__codelineno-5-53) [ 744 0 R /XYZ 60.307257 543.217638 0 ] (__codelineno-5-54) [ 744 0 R /XYZ 60.307257 516.416934 0 ] (__codelineno-5-55) [ 744 0 R /XYZ 60.307257 503.016582 0 ] (__codelineno-5-56) [ 744 0 R /XYZ 60.307257 489.616230 0 ] (__codelineno-5-57) [ 744 0 R /XYZ 60.307257 462.815526 0 ] (__codelineno-5-58) [ 744 0 R /XYZ 60.307257 449.415174 0 ] (__codelineno-5-59) [ 744 0 R /XYZ 60.307257 436.014822 0 ] (__codelineno-5-6) [ 740 0 R /XYZ 60.307257 604.458434 0 ] (__codelineno-5-60) [ 744 0 R /XYZ 60.307257 422.614470 0 ] (__codelineno-5-61) [ 744 0 R /XYZ 60.307257 409.214118 0 ] (__codelineno-5-62) [ 744 0 R /XYZ 60.307257 395.813766 0 ] (__codelineno-5-7) [ 740 0 R /XYZ 60.307257 577.657730 0 ] (__codelineno-5-8) [ 740 0 R /XYZ 60.307257 564.257378 0 ] (__codelineno-5-9) [ 740 0 R /XYZ 60.307257 550.857026 0 ] (__codelineno-6-1) [ 753 0 R /XYZ 60.307257 458.116602 0 ] (__codelineno-6-10) [ 753 0 R /XYZ 60.307257 337.513434 0 ] (__codelineno-6-100) [ 759 0 R /XYZ 60.307257 516.416934 0 ] (__codelineno-6-101) [ 759 0 R /XYZ 60.307257 503.016582 0 ] (__codelineno-6-102) [ 759 0 R /XYZ 60.307257 489.616230 0 ] (__codelineno-6-103) [ 759 0 R /XYZ 60.307257 476.215878 0 ] (__codelineno-6-104) [ 759 0 R /XYZ 60.307257 462.815526 0 ] (__codelineno-6-105) [ 759 0 R /XYZ 60.307257 449.415174 0 ] (__codelineno-6-106) [ 759 0 R /XYZ 60.307257 436.014822 0 ] (__codelineno-6-107) [ 759 0 R /XYZ 60.307257 422.614470 0 ] (__codelineno-6-108) [ 759 0 R /XYZ 60.307257 409.214118 0 ] (__codelineno-6-109) [ 759 0 R /XYZ 60.307257 395.813766 0 ] (__codelineno-6-11) [ 753 0 R /XYZ 60.307257 324.113082 0 ] (__codelineno-6-110) [ 759 0 R /XYZ 60.307257 382.413414 0 ] (__codelineno-6-111) [ 759 0 R /XYZ 60.307257 369.013062 0 ] (__codelineno-6-112) [ 759 0 R /XYZ 60.307257 355.612710 0 ] (__codelineno-6-113) [ 759 0 R /XYZ 60.307257 342.212358 0 ] (__codelineno-6-114) [ 759 0 R /XYZ 60.307257 328.812006 0 ] (__codelineno-6-115) [ 759 0 R /XYZ 60.307257 315.411654 0 ] (__codelineno-6-116) [ 759 0 R /XYZ 60.307257 302.011302 0 ] (__codelineno-6-117) [ 759 0 R /XYZ 60.307257 288.610950 0 ] (__codelineno-6-118) [ 759 0 R /XYZ 60.307257 275.210598 0 ] (__codelineno-6-119) [ 759 0 R /XYZ 60.307257 261.810246 0 ] (__codelineno-6-12) [ 753 0 R /XYZ 60.307257 310.712730 0 ] (__codelineno-6-120) [ 759 0 R /XYZ 60.307257 248.409894 0 ] (__codelineno-6-121) [ 759 0 R /XYZ 60.307257 235.009542 0 ] (__codelineno-6-122) [ 759 0 R /XYZ 60.307257 221.609190 0 ] (__codelineno-6-123) [ 759 0 R /XYZ 60.307257 208.208838 0 ] (__codelineno-6-124) [ 759 0 R /XYZ 60.307257 194.808486 0 ] (__codelineno-6-125) [ 759 0 R /XYZ 60.307257 181.408134 0 ] (__codelineno-6-126) [ 759 0 R /XYZ 60.307257 168.007782 0 ] (__codelineno-6-127) [ 759 0 R /XYZ 60.307257 154.607430 0 ] (__codelineno-6-128) [ 759 0 R /XYZ 60.307257 141.207078 0 ] (__codelineno-6-129) [ 759 0 R /XYZ 60.307257 127.806726 0 ] (__codelineno-6-13) [ 753 0 R /XYZ 60.307257 297.312378 0 ] (__codelineno-6-130) [ 759 0 R /XYZ 60.307257 114.406374 0 ] (__codelineno-6-131) [ 759 0 R /XYZ 60.307257 101.006022 0 ] (__codelineno-6-132) [ 759 0 R /XYZ 60.307257 87.605670 0 ] (__codelineno-6-133) [ 761 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-6-134) [ 761 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-6-135) [ 761 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-6-136) [ 761 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-6-137) [ 761 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-6-138) [ 761 0 R /XYZ 60.307257 704.021862 0 ] (__codelineno-6-139) [ 761 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-6-14) [ 753 0 R /XYZ 60.307257 283.912026 0 ] (__codelineno-6-140) [ 761 0 R /XYZ 60.307257 677.221158 0 ] (__codelineno-6-141) [ 761 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-6-142) [ 761 0 R /XYZ 60.307257 650.420454 0 ] (__codelineno-6-143) [ 761 0 R /XYZ 60.307257 637.020102 0 ] (__codelineno-6-144) [ 761 0 R /XYZ 60.307257 623.619750 0 ] (__codelineno-6-145) [ 761 0 R /XYZ 60.307257 610.219398 0 ] (__codelineno-6-146) [ 761 0 R /XYZ 60.307257 596.819046 0 ] (__codelineno-6-147) [ 761 0 R /XYZ 60.307257 583.418694 0 ] (__codelineno-6-148) [ 761 0 R /XYZ 60.307257 570.018342 0 ] (__codelineno-6-149) [ 761 0 R /XYZ 60.307257 556.617990 0 ] (__codelineno-6-15) [ 753 0 R /XYZ 60.307257 270.511674 0 ] (__codelineno-6-150) [ 761 0 R /XYZ 60.307257 543.217638 0 ] (__codelineno-6-151) [ 761 0 R /XYZ 60.307257 529.817286 0 ] (__codelineno-6-152) [ 761 0 R /XYZ 60.307257 516.416934 0 ] (__codelineno-6-153) [ 761 0 R /XYZ 60.307257 503.016582 0 ] (__codelineno-6-154) [ 761 0 R /XYZ 60.307257 489.616230 0 ] (__codelineno-6-155) [ 761 0 R /XYZ 60.307257 476.215878 0 ] (__codelineno-6-156) [ 761 0 R /XYZ 60.307257 462.815526 0 ] (__codelineno-6-157) [ 761 0 R /XYZ 60.307257 449.415174 0 ] (__codelineno-6-158) [ 761 0 R /XYZ 60.307257 436.014822 0 ] (__codelineno-6-159) [ 761 0 R /XYZ 60.307257 422.614470 0 ] (__codelineno-6-16) [ 753 0 R /XYZ 60.307257 257.111322 0 ] (__codelineno-6-160) [ 761 0 R /XYZ 60.307257 409.214118 0 ] (__codelineno-6-161) [ 761 0 R /XYZ 60.307257 395.813766 0 ] (__codelineno-6-162) [ 761 0 R /XYZ 60.307257 382.413414 0 ] (__codelineno-6-163) [ 761 0 R /XYZ 60.307257 369.013062 0 ] (__codelineno-6-17) [ 753 0 R /XYZ 60.307257 243.710970 0 ] (__codelineno-6-18) [ 753 0 R /XYZ 60.307257 230.310618 0 ] (__codelineno-6-19) [ 753 0 R /XYZ 60.307257 216.910266 0 ] (__codelineno-6-2) [ 753 0 R /XYZ 60.307257 444.716250 0 ] (__codelineno-6-20) [ 753 0 R /XYZ 60.307257 203.509914 0 ] (__codelineno-6-21) [ 753 0 R /XYZ 60.307257 190.109562 0 ] (__codelineno-6-22) [ 753 0 R /XYZ 60.307257 176.709210 0 ] (__codelineno-6-23) [ 753 0 R /XYZ 60.307257 163.308858 0 ] (__codelineno-6-24) [ 753 0 R /XYZ 60.307257 149.908506 0 ] (__codelineno-6-25) [ 753 0 R /XYZ 60.307257 136.508154 0 ] (__codelineno-6-26) [ 753 0 R /XYZ 60.307257 123.107802 0 ] (__codelineno-6-27) [ 753 0 R /XYZ 60.307257 109.707450 0 ] (__codelineno-6-28) [ 753 0 R /XYZ 60.307257 96.307098 0 ] (__codelineno-6-29) [ 757 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-6-3) [ 753 0 R /XYZ 60.307257 431.315898 0 ] (__codelineno-6-30) [ 757 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-6-31) [ 757 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-6-32) [ 757 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-6-33) [ 757 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-6-34) [ 757 0 R /XYZ 60.307257 704.021862 0 ] (__codelineno-6-35) [ 757 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-6-36) [ 757 0 R /XYZ 60.307257 677.221158 0 ] (__codelineno-6-37) [ 757 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-6-38) [ 757 0 R /XYZ 60.307257 650.420454 0 ] (__codelineno-6-39) [ 757 0 R /XYZ 60.307257 637.020102 0 ] (__codelineno-6-4) [ 753 0 R /XYZ 60.307257 417.915546 0 ] (__codelineno-6-40) [ 757 0 R /XYZ 60.307257 623.619750 0 ] (__codelineno-6-41) [ 757 0 R /XYZ 60.307257 610.219398 0 ] (__codelineno-6-42) [ 757 0 R /XYZ 60.307257 596.819046 0 ] (__codelineno-6-43) [ 757 0 R /XYZ 60.307257 583.418694 0 ] (__codelineno-6-44) [ 757 0 R /XYZ 60.307257 570.018342 0 ] (__codelineno-6-45) [ 757 0 R /XYZ 60.307257 556.617990 0 ] (__codelineno-6-46) [ 757 0 R /XYZ 60.307257 543.217638 0 ] (__codelineno-6-47) [ 757 0 R /XYZ 60.307257 529.817286 0 ] (__codelineno-6-48) [ 757 0 R /XYZ 60.307257 516.416934 0 ] (__codelineno-6-49) [ 757 0 R /XYZ 60.307257 503.016582 0 ] (__codelineno-6-5) [ 753 0 R /XYZ 60.307257 404.515194 0 ] (__codelineno-6-50) [ 757 0 R /XYZ 60.307257 489.616230 0 ] (__codelineno-6-51) [ 757 0 R /XYZ 60.307257 476.215878 0 ] (__codelineno-6-52) [ 757 0 R /XYZ 60.307257 462.815526 0 ] (__codelineno-6-53) [ 757 0 R /XYZ 60.307257 449.415174 0 ] (__codelineno-6-54) [ 757 0 R /XYZ 60.307257 436.014822 0 ] (__codelineno-6-55) [ 757 0 R /XYZ 60.307257 422.614470 0 ] (__codelineno-6-56) [ 757 0 R /XYZ 60.307257 409.214118 0 ] (__codelineno-6-57) [ 757 0 R /XYZ 60.307257 395.813766 0 ] (__codelineno-6-58) [ 757 0 R /XYZ 60.307257 382.413414 0 ] (__codelineno-6-59) [ 757 0 R /XYZ 60.307257 369.013062 0 ] (__codelineno-6-6) [ 753 0 R /XYZ 60.307257 391.114842 0 ] (__codelineno-6-60) [ 757 0 R /XYZ 60.307257 355.612710 0 ] (__codelineno-6-61) [ 757 0 R /XYZ 60.307257 342.212358 0 ] (__codelineno-6-62) [ 757 0 R /XYZ 60.307257 328.812006 0 ] (__codelineno-6-63) [ 757 0 R /XYZ 60.307257 315.411654 0 ] (__codelineno-6-64) [ 757 0 R /XYZ 60.307257 302.011302 0 ] (__codelineno-6-65) [ 757 0 R /XYZ 60.307257 288.610950 0 ] (__codelineno-6-66) [ 757 0 R /XYZ 60.307257 275.210598 0 ] (__codelineno-6-67) [ 757 0 R /XYZ 60.307257 261.810246 0 ] (__codelineno-6-68) [ 757 0 R /XYZ 60.307257 248.409894 0 ] (__codelineno-6-69) [ 757 0 R /XYZ 60.307257 235.009542 0 ] (__codelineno-6-7) [ 753 0 R /XYZ 60.307257 377.714490 0 ] (__codelineno-6-70) [ 757 0 R /XYZ 60.307257 221.609190 0 ] (__codelineno-6-71) [ 757 0 R /XYZ 60.307257 208.208838 0 ] (__codelineno-6-72) [ 757 0 R /XYZ 60.307257 194.808486 0 ] (__codelineno-6-73) [ 757 0 R /XYZ 60.307257 181.408134 0 ] (__codelineno-6-74) [ 757 0 R /XYZ 60.307257 168.007782 0 ] (__codelineno-6-75) [ 757 0 R /XYZ 60.307257 154.607430 0 ] (__codelineno-6-76) [ 757 0 R /XYZ 60.307257 141.207078 0 ] (__codelineno-6-77) [ 757 0 R /XYZ 60.307257 127.806726 0 ] (__codelineno-6-78) [ 757 0 R /XYZ 60.307257 114.406374 0 ] (__codelineno-6-79) [ 757 0 R /XYZ 60.307257 101.006022 0 ] (__codelineno-6-8) [ 753 0 R /XYZ 60.307257 364.314138 0 ] (__codelineno-6-80) [ 757 0 R /XYZ 60.307257 87.605670 0 ] (__codelineno-6-81) [ 759 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-6-82) [ 759 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-6-83) [ 759 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-6-84) [ 759 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-6-85) [ 759 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-6-86) [ 759 0 R /XYZ 60.307257 704.021862 0 ] (__codelineno-6-87) [ 759 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-6-88) [ 759 0 R /XYZ 60.307257 677.221158 0 ] (__codelineno-6-89) [ 759 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-6-9) [ 753 0 R /XYZ 60.307257 350.913786 0 ] (__codelineno-6-90) [ 759 0 R /XYZ 60.307257 650.420454 0 ] (__codelineno-6-91) [ 759 0 R /XYZ 60.307257 637.020102 0 ] (__codelineno-6-92) [ 759 0 R /XYZ 60.307257 623.619750 0 ] (__codelineno-6-93) [ 759 0 R /XYZ 60.307257 610.219398 0 ] (__codelineno-6-94) [ 759 0 R /XYZ 60.307257 596.819046 0 ] (__codelineno-6-95) [ 759 0 R /XYZ 60.307257 583.418694 0 ] (__codelineno-6-96) [ 759 0 R /XYZ 60.307257 570.018342 0 ] (__codelineno-6-97) [ 759 0 R /XYZ 60.307257 556.617990 0 ] (__codelineno-6-98) [ 759 0 R /XYZ 60.307257 543.217638 0 ] (__codelineno-6-99) [ 759 0 R /XYZ 60.307257 529.817286 0 ] (__codelineno-7-1) [ 994 0 R /XYZ 60.307257 389.399802 0 ] (__codelineno-7-10) [ 1387 0 R /XYZ 60.307257 240.520223 0 ] (__codelineno-7-11) [ 1387 0 R /XYZ 60.307257 227.119871 0 ] (__codelineno-7-12) [ 1387 0 R /XYZ 60.307257 213.719519 0 ] (__codelineno-7-13) [ 1387 0 R /XYZ 60.307257 200.319167 0 ] (__codelineno-7-14) [ 1387 0 R /XYZ 60.307257 186.918815 0 ] (__codelineno-7-15) [ 1387 0 R /XYZ 60.307257 173.518463 0 ] (__codelineno-7-16) [ 1387 0 R /XYZ 60.307257 160.118111 0 ] (__codelineno-7-17) [ 1387 0 R /XYZ 60.307257 146.717759 0 ] (__codelineno-7-18) [ 1387 0 R /XYZ 60.307257 119.917055 0 ] (__codelineno-7-19) [ 1387 0 R /XYZ 60.307257 106.516703 0 ] (__codelineno-7-2) [ 994 0 R /XYZ 60.307257 375.999450 0 ] (__codelineno-7-20) [ 1387 0 R /XYZ 60.307257 93.116351 0 ] (__codelineno-7-21) [ 1394 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-7-22) [ 1394 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-7-23) [ 1394 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-7-24) [ 1394 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-7-25) [ 1394 0 R /XYZ 60.307257 704.021862 0 ] (__codelineno-7-26) [ 1394 0 R /XYZ 60.307257 677.221158 0 ] (__codelineno-7-27) [ 1394 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-7-28) [ 1394 0 R /XYZ 60.307257 637.020102 0 ] (__codelineno-7-29) [ 1394 0 R /XYZ 60.307257 610.219398 0 ] (__codelineno-7-3) [ 994 0 R /XYZ 60.307257 362.599098 0 ] (__codelineno-7-30) [ 1394 0 R /XYZ 60.307257 596.819046 0 ] (__codelineno-7-31) [ 1394 0 R /XYZ 60.307257 583.418694 0 ] (__codelineno-7-32) [ 1394 0 R /XYZ 60.307257 570.018342 0 ] (__codelineno-7-33) [ 1394 0 R /XYZ 60.307257 543.217638 0 ] (__codelineno-7-34) [ 1394 0 R /XYZ 60.307257 529.817286 0 ] (__codelineno-7-35) [ 1394 0 R /XYZ 60.307257 516.416934 0 ] (__codelineno-7-36) [ 1394 0 R /XYZ 60.307257 503.016582 0 ] (__codelineno-7-37) [ 1394 0 R /XYZ 60.307257 489.616230 0 ] (__codelineno-7-38) [ 1394 0 R /XYZ 60.307257 476.215878 0 ] (__codelineno-7-39) [ 1394 0 R /XYZ 60.307257 462.815526 0 ] (__codelineno-7-4) [ 994 0 R /XYZ 60.307257 349.198746 0 ] (__codelineno-7-40) [ 1394 0 R /XYZ 60.307257 449.415174 0 ] (__codelineno-7-41) [ 1394 0 R /XYZ 60.307257 422.614470 0 ] (__codelineno-7-42) [ 1394 0 R /XYZ 60.307257 409.214118 0 ] (__codelineno-7-43) [ 1394 0 R /XYZ 60.307257 395.813766 0 ] (__codelineno-7-44) [ 1394 0 R /XYZ 60.307257 382.413414 0 ] (__codelineno-7-45) [ 1394 0 R /XYZ 60.307257 369.013062 0 ] (__codelineno-7-46) [ 1394 0 R /XYZ 60.307257 355.612710 0 ] (__codelineno-7-47) [ 1394 0 R /XYZ 60.307257 342.212358 0 ] (__codelineno-7-48) [ 1394 0 R /XYZ 60.307257 328.812006 0 ] (__codelineno-7-49) [ 1394 0 R /XYZ 60.307257 315.411654 0 ] (__codelineno-7-5) [ 994 0 R /XYZ 60.307257 335.798394 0 ] (__codelineno-7-50) [ 1394 0 R /XYZ 60.307257 288.610950 0 ] (__codelineno-7-51) [ 1394 0 R /XYZ 60.307257 261.810246 0 ] (__codelineno-7-52) [ 1394 0 R /XYZ 60.307257 248.409894 0 ] (__codelineno-7-53) [ 1394 0 R /XYZ 60.307257 235.009542 0 ] (__codelineno-7-54) [ 1394 0 R /XYZ 60.307257 221.609190 0 ] (__codelineno-7-55) [ 1394 0 R /XYZ 60.307257 208.208838 0 ] (__codelineno-7-6) [ 994 0 R /XYZ 60.307257 322.398042 0 ] (__codelineno-7-7) [ 994 0 R /XYZ 60.307257 308.997690 0 ] (__codelineno-7-8) [ 1387 0 R /XYZ 60.307257 267.320927 0 ] (__codelineno-7-9) [ 1387 0 R /XYZ 60.307257 253.920575 0 ] (__codelineno-8-1) [ 996 0 R /XYZ 60.307257 342.189402 0 ] (__codelineno-8-10) [ 1425 0 R /XYZ 60.307257 757.623270 0 ] (__codelineno-8-11) [ 1425 0 R /XYZ 60.307257 744.222918 0 ] (__codelineno-8-12) [ 1425 0 R /XYZ 60.307257 730.822566 0 ] (__codelineno-8-13) [ 1425 0 R /XYZ 60.307257 717.422214 0 ] (__codelineno-8-14) [ 1425 0 R /XYZ 60.307257 704.021862 0 ] (__codelineno-8-15) [ 1425 0 R /XYZ 60.307257 690.621510 0 ] (__codelineno-8-16) [ 1425 0 R /XYZ 60.307257 677.221158 0 ] (__codelineno-8-17) [ 1425 0 R /XYZ 60.307257 663.820806 0 ] (__codelineno-8-18) [ 1425 0 R /XYZ 60.307257 650.420454 0 ] (__codelineno-8-19) [ 1425 0 R /XYZ 60.307257 637.020102 0 ] (__codelineno-8-2) [ 996 0 R /XYZ 60.307257 328.789050 0 ] (__codelineno-8-20) [ 1425 0 R /XYZ 60.307257 623.619750 0 ] (__codelineno-8-21) [ 1425 0 R /XYZ 60.307257 610.219398 0 ] (__codelineno-8-22) [ 1425 0 R /XYZ 60.307257 596.819046 0 ] (__codelineno-8-23) [ 1425 0 R /XYZ 60.307257 583.418694 0 ] (__codelineno-8-24) [ 1425 0 R /XYZ 60.307257 570.018342 0 ] (__codelineno-8-25) [ 1425 0 R /XYZ 60.307257 556.617990 0 ] (__codelineno-8-26) [ 1425 0 R /XYZ 60.307257 543.217638 0 ] (__codelineno-8-27) [ 1425 0 R /XYZ 60.307257 529.817286 0 ] (__codelineno-8-28) [ 1425 0 R /XYZ 60.307257 516.416934 0 ] (__codelineno-8-29) [ 1425 0 R /XYZ 60.307257 503.016582 0 ] (__codelineno-8-3) [ 996 0 R /XYZ 60.307257 315.388698 0 ] (__codelineno-8-4) [ 996 0 R /XYZ 60.307257 301.988346 0 ] (__codelineno-8-5) [ 996 0 R /XYZ 60.307257 288.587994 0 ] (__codelineno-8-6) [ 996 0 R /XYZ 60.307257 275.187642 0 ] (__codelineno-8-7) [ 1420 0 R /XYZ 60.307257 97.879717 0 ] (__codelineno-8-8) [ 1420 0 R /XYZ 60.307257 84.479365 0 ] (__codelineno-8-9) [ 1425 0 R /XYZ 60.307257 771.023622 0 ] (__codelineno-9-1) [ 1001 0 R /XYZ 60.307257 413.414922 0 ] (__codelineno-9-10) [ 1432 0 R /XYZ 60.307257 643.030554 0 ] (__codelineno-9-11) [ 1432 0 R /XYZ 60.307257 629.630202 0 ] (__codelineno-9-12) [ 1432 0 R /XYZ 60.307257 616.229850 0 ] (__codelineno-9-13) [ 1432 0 R /XYZ 60.307257 602.829498 0 ] (__codelineno-9-14) [ 1432 0 R /XYZ 60.307257 589.429146 0 ] (__codelineno-9-15) [ 1432 0 R /XYZ 60.307257 576.028794 0 ] (__codelineno-9-16) [ 1432 0 R /XYZ 60.307257 562.628442 0 ] (__codelineno-9-17) [ 1432 0 R /XYZ 60.307257 549.228090 0 ] (__codelineno-9-18) [ 1432 0 R /XYZ 60.307257 535.827738 0 ] (__codelineno-9-19) [ 1432 0 R /XYZ 60.307257 522.427386 0 ] (__codelineno-9-2) [ 1001 0 R /XYZ 60.307257 400.014570 0 ] (__codelineno-9-20) [ 1432 0 R /XYZ 60.307257 509.027034 0 ] (__codelineno-9-21) [ 1432 0 R /XYZ 60.307257 495.626682 0 ] (__codelineno-9-22) [ 1432 0 R /XYZ 60.307257 482.226330 0 ] (__codelineno-9-23) [ 1432 0 R /XYZ 60.307257 468.825978 0 ] (__codelineno-9-24) [ 1432 0 R /XYZ 60.307257 455.425626 0 ] (__codelineno-9-25) [ 1432 0 R /XYZ 60.307257 442.025274 0 ] (__codelineno-9-26) [ 1432 0 R /XYZ 60.307257 428.624922 0 ] (__codelineno-9-27) [ 1432 0 R /XYZ 60.307257 415.224570 0 ] (__codelineno-9-28) [ 1432 0 R /XYZ 60.307257 401.824218 0 ] (__codelineno-9-29) [ 1432 0 R /XYZ 60.307257 388.423866 0 ] (__codelineno-9-3) [ 1001 0 R /XYZ 60.307257 386.614218 0 ] (__codelineno-9-30) [ 1432 0 R /XYZ 60.307257 375.023514 0 ] (__codelineno-9-31) [ 1432 0 R /XYZ 60.307257 361.623162 0 ] (__codelineno-9-32) [ 1432 0 R /XYZ 60.307257 348.222810 0 ] (__codelineno-9-33) [ 1432 0 R /XYZ 60.307257 334.822458 0 ] (__codelineno-9-34) [ 1432 0 R /XYZ 60.307257 321.422106 0 ] (__codelineno-9-35) [ 1432 0 R /XYZ 60.307257 308.021754 0 ] (__codelineno-9-36) [ 1432 0 R /XYZ 60.307257 294.621402 0 ] (__codelineno-9-37) [ 1432 0 R /XYZ 60.307257 281.221050 0 ] (__codelineno-9-38) [ 1432 0 R /XYZ 60.307257 267.820698 0 ] (__codelineno-9-39) [ 1432 0 R /XYZ 60.307257 254.420346 0 ] (__codelineno-9-4) [ 1001 0 R /XYZ 60.307257 373.213866 0 ] (__codelineno-9-40) [ 1432 0 R /XYZ 60.307257 241.019994 0 ] (__codelineno-9-41) [ 1432 0 R /XYZ 60.307257 227.619642 0 ] (__codelineno-9-42) [ 1432 0 R /XYZ 60.307257 214.219290 0 ] (__codelineno-9-43) [ 1432 0 R /XYZ 60.307257 200.818938 0 ] (__codelineno-9-5) [ 1001 0 R /XYZ 60.307257 359.813514 0 ] (__codelineno-9-6) [ 1001 0 R /XYZ 60.307257 346.413162 0 ] (__codelineno-9-7) [ 1001 0 R /XYZ 60.307257 333.012810 0 ] (__codelineno-9-8) [ 1432 0 R /XYZ 60.307257 669.831258 0 ] (__codelineno-9-9) [ 1432 0 R /XYZ 60.307257 656.430906 0 ] (author) [ 6 0 R /XYZ 55.946457 113.701342 0 ] (copyright) [ 6 0 R /XYZ 55.946457 84.997342 0 ] (doc-cover) [ 6 0 R /XYZ 28.346457 771.023622 0 ] (doc-toc) [ 8 0 R /XYZ 39.386457 771.023622 0 ] (jdb/:) [ 1251 0 R /XYZ 39.386457 771.023622 0 ] (jdb/:26-avril-2023) [ 1603 0 R /XYZ 39.386457 222.365322 0 ] (jdb/:__span-0-1) [ 1251 0 R /XYZ 60.307257 505.092222 0 ] (jdb/:__span-0-10) [ 1251 0 R /XYZ 60.307257 384.489054 0 ] (jdb/:__span-0-11) [ 1251 0 R /XYZ 60.307257 371.088702 0 ] (jdb/:__span-0-12) [ 1251 0 R /XYZ 60.307257 357.688350 0 ] (jdb/:__span-0-13) [ 1251 0 R /XYZ 60.307257 344.287998 0 ] (jdb/:__span-0-14) [ 1251 0 R /XYZ 60.307257 330.887646 0 ] (jdb/:__span-0-15) [ 1251 0 R /XYZ 60.307257 317.487294 0 ] (jdb/:__span-0-16) [ 1251 0 R /XYZ 60.307257 304.086942 0 ] (jdb/:__span-0-17) [ 1251 0 R /XYZ 60.307257 290.686590 0 ] (jdb/:__span-0-18) [ 1251 0 R /XYZ 60.307257 277.286238 0 ] (jdb/:__span-0-19) [ 1251 0 R /XYZ 60.307257 263.885886 0 ] (jdb/:__span-0-2) [ 1251 0 R /XYZ 60.307257 491.691870 0 ] (jdb/:__span-0-20) [ 1251 0 R /XYZ 60.307257 250.485534 0 ] (jdb/:__span-0-21) [ 1251 0 R /XYZ 60.307257 237.085182 0 ] (jdb/:__span-0-22) [ 1251 0 R /XYZ 60.307257 223.684830 0 ] (jdb/:__span-0-23) [ 1251 0 R /XYZ 60.307257 210.284478 0 ] (jdb/:__span-0-3) [ 1251 0 R /XYZ 60.307257 478.291518 0 ] (jdb/:__span-0-4) [ 1251 0 R /XYZ 60.307257 464.891166 0 ] (jdb/:__span-0-5) [ 1251 0 R /XYZ 60.307257 451.490814 0 ] (jdb/:__span-0-6) [ 1251 0 R /XYZ 60.307257 438.090462 0 ] (jdb/:__span-0-7) [ 1251 0 R /XYZ 60.307257 424.690110 0 ] (jdb/:__span-0-8) [ 1251 0 R /XYZ 60.307257 411.289758 0 ] (jdb/:__span-0-9) [ 1251 0 R /XYZ 60.307257 397.889406 0 ] (jdb/:__span-1-1) [ 1269 0 R /XYZ 60.307257 292.693722 0 ] (jdb/:__span-1-2) [ 1269 0 R /XYZ 60.307257 265.893018 0 ] (jdb/:__span-1-3) [ 1269 0 R /XYZ 60.307257 252.492666 0 ] (jdb/:__span-1-4) [ 1269 0 R /XYZ 60.307257 239.092314 0 ] (jdb/:__span-1-5) [ 1269 0 R /XYZ 60.307257 225.691962 0 ] (jdb/:__span-1-6) [ 1269 0 R /XYZ 60.307257 212.291610 0 ] (jdb/:__span-10-1) [ 1434 0 R /XYZ 60.307257 697.945722 0 ] (jdb/:__span-10-10) [ 1434 0 R /XYZ 60.307257 577.342554 0 ] (jdb/:__span-10-11) [ 1434 0 R /XYZ 60.307257 563.942202 0 ] (jdb/:__span-10-12) [ 1434 0 R /XYZ 60.307257 550.541850 0 ] (jdb/:__span-10-13) [ 1434 0 R /XYZ 60.307257 537.141498 0 ] (jdb/:__span-10-14) [ 1434 0 R /XYZ 60.307257 523.741146 0 ] (jdb/:__span-10-15) [ 1434 0 R /XYZ 60.307257 510.340794 0 ] (jdb/:__span-10-16) [ 1434 0 R /XYZ 60.307257 496.940442 0 ] (jdb/:__span-10-17) [ 1434 0 R /XYZ 60.307257 483.540090 0 ] (jdb/:__span-10-18) [ 1434 0 R /XYZ 60.307257 470.139738 0 ] (jdb/:__span-10-19) [ 1434 0 R /XYZ 60.307257 456.739386 0 ] (jdb/:__span-10-2) [ 1434 0 R /XYZ 60.307257 684.545370 0 ] (jdb/:__span-10-20) [ 1434 0 R /XYZ 60.307257 443.339034 0 ] (jdb/:__span-10-21) [ 1434 0 R /XYZ 60.307257 429.938682 0 ] (jdb/:__span-10-22) [ 1434 0 R /XYZ 60.307257 416.538330 0 ] (jdb/:__span-10-23) [ 1434 0 R /XYZ 60.307257 403.137978 0 ] (jdb/:__span-10-3) [ 1434 0 R /XYZ 60.307257 671.145018 0 ] (jdb/:__span-10-4) [ 1434 0 R /XYZ 60.307257 657.744666 0 ] (jdb/:__span-10-5) [ 1434 0 R /XYZ 60.307257 644.344314 0 ] (jdb/:__span-10-6) [ 1434 0 R /XYZ 60.307257 630.943962 0 ] (jdb/:__span-10-7) [ 1434 0 R /XYZ 60.307257 617.543610 0 ] (jdb/:__span-10-8) [ 1434 0 R /XYZ 60.307257 604.143258 0 ] (jdb/:__span-10-9) [ 1434 0 R /XYZ 60.307257 590.742906 0 ] (jdb/:__span-11-1) [ 1453 0 R /XYZ 60.307257 129.981873 0 ] (jdb/:__span-11-10) [ 1457 0 R /XYZ 60.307257 704.021862 0 ] (jdb/:__span-11-11) [ 1457 0 R /XYZ 60.307257 690.621510 0 ] (jdb/:__span-11-12) [ 1457 0 R /XYZ 60.307257 677.221158 0 ] (jdb/:__span-11-13) [ 1457 0 R /XYZ 60.307257 663.820806 0 ] (jdb/:__span-11-14) [ 1457 0 R /XYZ 60.307257 650.420454 0 ] (jdb/:__span-11-15) [ 1457 0 R /XYZ 60.307257 637.020102 0 ] (jdb/:__span-11-16) [ 1457 0 R /XYZ 60.307257 623.619750 0 ] (jdb/:__span-11-17) [ 1457 0 R /XYZ 60.307257 610.219398 0 ] (jdb/:__span-11-18) [ 1457 0 R /XYZ 60.307257 596.819046 0 ] (jdb/:__span-11-19) [ 1457 0 R /XYZ 60.307257 583.418694 0 ] (jdb/:__span-11-2) [ 1453 0 R /XYZ 60.307257 116.581521 0 ] (jdb/:__span-11-20) [ 1457 0 R /XYZ 60.307257 570.018342 0 ] (jdb/:__span-11-21) [ 1457 0 R /XYZ 60.307257 556.617990 0 ] (jdb/:__span-11-22) [ 1457 0 R /XYZ 60.307257 543.217638 0 ] (jdb/:__span-11-3) [ 1453 0 R /XYZ 60.307257 103.181169 0 ] (jdb/:__span-11-4) [ 1453 0 R /XYZ 60.307257 89.780817 0 ] (jdb/:__span-11-5) [ 1457 0 R /XYZ 60.307257 771.023622 0 ] (jdb/:__span-11-6) [ 1457 0 R /XYZ 60.307257 757.623270 0 ] (jdb/:__span-11-7) [ 1457 0 R /XYZ 60.307257 744.222918 0 ] (jdb/:__span-11-8) [ 1457 0 R /XYZ 60.307257 730.822566 0 ] (jdb/:__span-11-9) [ 1457 0 R /XYZ 60.307257 717.422214 0 ] (jdb/:__span-12-1) [ 1457 0 R /XYZ 60.307257 477.501486 0 ] (jdb/:__span-12-10) [ 1457 0 R /XYZ 60.307257 356.898318 0 ] (jdb/:__span-12-11) [ 1457 0 R /XYZ 60.307257 343.497966 0 ] (jdb/:__span-12-12) [ 1457 0 R /XYZ 60.307257 330.097614 0 ] (jdb/:__span-12-13) [ 1457 0 R /XYZ 60.307257 316.697262 0 ] (jdb/:__span-12-14) [ 1457 0 R /XYZ 60.307257 303.296910 0 ] (jdb/:__span-12-15) [ 1457 0 R /XYZ 60.307257 289.896558 0 ] (jdb/:__span-12-16) [ 1457 0 R /XYZ 60.307257 276.496206 0 ] (jdb/:__span-12-17) [ 1457 0 R /XYZ 60.307257 263.095854 0 ] (jdb/:__span-12-18) [ 1457 0 R /XYZ 60.307257 249.695502 0 ] (jdb/:__span-12-19) [ 1457 0 R /XYZ 60.307257 236.295150 0 ] (jdb/:__span-12-2) [ 1457 0 R /XYZ 60.307257 464.101134 0 ] (jdb/:__span-12-20) [ 1457 0 R /XYZ 60.307257 222.894798 0 ] (jdb/:__span-12-21) [ 1457 0 R /XYZ 60.307257 209.494446 0 ] (jdb/:__span-12-22) [ 1457 0 R /XYZ 60.307257 196.094094 0 ] (jdb/:__span-12-3) [ 1457 0 R /XYZ 60.307257 450.700782 0 ] (jdb/:__span-12-4) [ 1457 0 R /XYZ 60.307257 437.300430 0 ] (jdb/:__span-12-5) [ 1457 0 R /XYZ 60.307257 423.900078 0 ] (jdb/:__span-12-6) [ 1457 0 R /XYZ 60.307257 410.499726 0 ] (jdb/:__span-12-7) [ 1457 0 R /XYZ 60.307257 397.099374 0 ] (jdb/:__span-12-8) [ 1457 0 R /XYZ 60.307257 383.699022 0 ] (jdb/:__span-12-9) [ 1457 0 R /XYZ 60.307257 370.298670 0 ] (jdb/:__span-13-1) [ 1461 0 R /XYZ 60.307257 722.344122 0 ] (jdb/:__span-13-2) [ 1461 0 R /XYZ 60.307257 708.943770 0 ] (jdb/:__span-13-3) [ 1461 0 R /XYZ 60.307257 695.543418 0 ] (jdb/:__span-13-4) [ 1461 0 R /XYZ 60.307257 682.143066 0 ] (jdb/:__span-13-5) [ 1461 0 R /XYZ 60.307257 668.742714 0 ] (jdb/:__span-13-6) [ 1461 0 R /XYZ 60.307257 655.342362 0 ] (jdb/:__span-13-7) [ 1461 0 R /XYZ 60.307257 641.942010 0 ] (jdb/:__span-13-8) [ 1461 0 R /XYZ 60.307257 628.541658 0 ] (jdb/:__span-13-9) [ 1461 0 R /XYZ 60.307257 615.141306 0 ] (jdb/:__span-14-1) [ 1461 0 R /XYZ 60.307257 510.012354 0 ] (jdb/:__span-14-2) [ 1461 0 R /XYZ 60.307257 496.612002 0 ] (jdb/:__span-14-3) [ 1461 0 R /XYZ 60.307257 483.211650 0 ] (jdb/:__span-14-4) [ 1461 0 R /XYZ 60.307257 469.811298 0 ] (jdb/:__span-14-5) [ 1461 0 R /XYZ 60.307257 456.410946 0 ] (jdb/:__span-14-6) [ 1461 0 R /XYZ 60.307257 443.010594 0 ] (jdb/:__span-14-7) [ 1461 0 R /XYZ 60.307257 429.610242 0 ] (jdb/:__span-14-8) [ 1461 0 R /XYZ 60.307257 416.209890 0 ] (jdb/:__span-14-9) [ 1461 0 R /XYZ 60.307257 402.809538 0 ] (jdb/:__span-15-1) [ 1499 0 R /XYZ 60.307257 512.569722 0 ] (jdb/:__span-15-10) [ 1499 0 R /XYZ 60.307257 391.966554 0 ] (jdb/:__span-15-11) [ 1499 0 R /XYZ 60.307257 378.566202 0 ] (jdb/:__span-15-12) [ 1499 0 R /XYZ 60.307257 365.165850 0 ] (jdb/:__span-15-13) [ 1499 0 R /XYZ 60.307257 351.765498 0 ] (jdb/:__span-15-14) [ 1499 0 R /XYZ 60.307257 338.365146 0 ] (jdb/:__span-15-15) [ 1499 0 R /XYZ 60.307257 324.964794 0 ] (jdb/:__span-15-16) [ 1499 0 R /XYZ 60.307257 311.564442 0 ] (jdb/:__span-15-17) [ 1499 0 R /XYZ 60.307257 298.164090 0 ] (jdb/:__span-15-18) [ 1499 0 R /XYZ 60.307257 284.763738 0 ] (jdb/:__span-15-2) [ 1499 0 R /XYZ 60.307257 499.169370 0 ] (jdb/:__span-15-3) [ 1499 0 R /XYZ 60.307257 485.769018 0 ] (jdb/:__span-15-4) [ 1499 0 R /XYZ 60.307257 472.368666 0 ] (jdb/:__span-15-5) [ 1499 0 R /XYZ 60.307257 458.968314 0 ] (jdb/:__span-15-6) [ 1499 0 R /XYZ 60.307257 445.567962 0 ] (jdb/:__span-15-7) [ 1499 0 R /XYZ 60.307257 432.167610 0 ] (jdb/:__span-15-8) [ 1499 0 R /XYZ 60.307257 418.767258 0 ] (jdb/:__span-15-9) [ 1499 0 R /XYZ 60.307257 405.366906 0 ] (jdb/:__span-16-1) [ 1504 0 R /XYZ 60.307257 422.361822 0 ] (jdb/:__span-16-10) [ 1504 0 R /XYZ 60.307257 301.758654 0 ] (jdb/:__span-16-11) [ 1504 0 R /XYZ 60.307257 288.358302 0 ] (jdb/:__span-16-12) [ 1504 0 R /XYZ 60.307257 274.957950 0 ] (jdb/:__span-16-13) [ 1504 0 R /XYZ 60.307257 261.557598 0 ] (jdb/:__span-16-14) [ 1504 0 R /XYZ 60.307257 248.157246 0 ] (jdb/:__span-16-15) [ 1504 0 R /XYZ 60.307257 234.756894 0 ] (jdb/:__span-16-16) [ 1504 0 R /XYZ 60.307257 221.356542 0 ] (jdb/:__span-16-17) [ 1504 0 R /XYZ 60.307257 207.956190 0 ] (jdb/:__span-16-18) [ 1504 0 R /XYZ 60.307257 194.555838 0 ] (jdb/:__span-16-2) [ 1504 0 R /XYZ 60.307257 408.961470 0 ] (jdb/:__span-16-3) [ 1504 0 R /XYZ 60.307257 395.561118 0 ] (jdb/:__span-16-4) [ 1504 0 R /XYZ 60.307257 382.160766 0 ] (jdb/:__span-16-5) [ 1504 0 R /XYZ 60.307257 368.760414 0 ] (jdb/:__span-16-6) [ 1504 0 R /XYZ 60.307257 355.360062 0 ] (jdb/:__span-16-7) [ 1504 0 R /XYZ 60.307257 341.959710 0 ] (jdb/:__span-16-8) [ 1504 0 R /XYZ 60.307257 328.559358 0 ] (jdb/:__span-16-9) [ 1504 0 R /XYZ 60.307257 315.159006 0 ] (jdb/:__span-17-1) [ 1515 0 R /XYZ 60.307257 363.601105 0 ] (jdb/:__span-17-10) [ 1515 0 R /XYZ 60.307257 242.997937 0 ] (jdb/:__span-17-11) [ 1515 0 R /XYZ 60.307257 229.597585 0 ] (jdb/:__span-17-12) [ 1515 0 R /XYZ 60.307257 202.796881 0 ] (jdb/:__span-17-13) [ 1515 0 R /XYZ 60.307257 189.396529 0 ] (jdb/:__span-17-14) [ 1515 0 R /XYZ 60.307257 175.996177 0 ] (jdb/:__span-17-15) [ 1515 0 R /XYZ 60.307257 162.595825 0 ] (jdb/:__span-17-16) [ 1515 0 R /XYZ 60.307257 149.195473 0 ] (jdb/:__span-17-17) [ 1515 0 R /XYZ 60.307257 135.795121 0 ] (jdb/:__span-17-18) [ 1515 0 R /XYZ 60.307257 122.394769 0 ] (jdb/:__span-17-19) [ 1515 0 R /XYZ 60.307257 108.994417 0 ] (jdb/:__span-17-2) [ 1515 0 R /XYZ 60.307257 350.200753 0 ] (jdb/:__span-17-20) [ 1515 0 R /XYZ 60.307257 95.594065 0 ] (jdb/:__span-17-21) [ 1519 0 R /XYZ 60.307257 771.023622 0 ] (jdb/:__span-17-22) [ 1519 0 R /XYZ 60.307257 757.623270 0 ] (jdb/:__span-17-23) [ 1519 0 R /XYZ 60.307257 744.222918 0 ] (jdb/:__span-17-24) [ 1519 0 R /XYZ 60.307257 717.422214 0 ] (jdb/:__span-17-3) [ 1515 0 R /XYZ 60.307257 336.800401 0 ] (jdb/:__span-17-4) [ 1515 0 R /XYZ 60.307257 323.400049 0 ] (jdb/:__span-17-5) [ 1515 0 R /XYZ 60.307257 309.999697 0 ] (jdb/:__span-17-6) [ 1515 0 R /XYZ 60.307257 296.599345 0 ] (jdb/:__span-17-7) [ 1515 0 R /XYZ 60.307257 283.198993 0 ] (jdb/:__span-17-8) [ 1515 0 R /XYZ 60.307257 269.798641 0 ] (jdb/:__span-17-9) [ 1515 0 R /XYZ 60.307257 256.398289 0 ] (jdb/:__span-18-1) [ 1550 0 R /XYZ 60.307257 236.252922 0 ] (jdb/:__span-18-10) [ 1552 0 R /XYZ 60.307257 717.422214 0 ] (jdb/:__span-18-11) [ 1552 0 R /XYZ 60.307257 690.621510 0 ] (jdb/:__span-18-12) [ 1552 0 R /XYZ 60.307257 663.820806 0 ] (jdb/:__span-18-13) [ 1552 0 R /XYZ 60.307257 637.020102 0 ] (jdb/:__span-18-14) [ 1552 0 R /XYZ 60.307257 610.219398 0 ] (jdb/:__span-18-15) [ 1552 0 R /XYZ 60.307257 583.418694 0 ] (jdb/:__span-18-16) [ 1552 0 R /XYZ 60.307257 556.617990 0 ] (jdb/:__span-18-17) [ 1552 0 R /XYZ 60.307257 543.217638 0 ] (jdb/:__span-18-18) [ 1552 0 R /XYZ 60.307257 529.817286 0 ] (jdb/:__span-18-2) [ 1550 0 R /XYZ 60.307257 222.852570 0 ] (jdb/:__span-18-3) [ 1550 0 R /XYZ 60.307257 209.452218 0 ] (jdb/:__span-18-4) [ 1550 0 R /XYZ 60.307257 169.251162 0 ] (jdb/:__span-18-5) [ 1550 0 R /XYZ 60.307257 142.450458 0 ] (jdb/:__span-18-6) [ 1550 0 R /XYZ 60.307257 129.050106 0 ] (jdb/:__span-18-7) [ 1550 0 R /XYZ 60.307257 115.649754 0 ] (jdb/:__span-18-8) [ 1550 0 R /XYZ 60.307257 88.849050 0 ] (jdb/:__span-18-9) [ 1552 0 R /XYZ 60.307257 744.222918 0 ] (jdb/:__span-19-1) [ 1552 0 R /XYZ 60.307257 464.101134 0 ] (jdb/:__span-19-2) [ 1552 0 R /XYZ 60.307257 450.700782 0 ] (jdb/:__span-19-3) [ 1552 0 R /XYZ 60.307257 437.300430 0 ] (jdb/:__span-19-4) [ 1552 0 R /XYZ 60.307257 423.900078 0 ] (jdb/:__span-2-1) [ 1269 0 R /XYZ 60.307257 131.561058 0 ] (jdb/:__span-2-2) [ 1269 0 R /XYZ 60.307257 118.160706 0 ] (jdb/:__span-2-3) [ 1269 0 R /XYZ 60.307257 104.760354 0 ] (jdb/:__span-2-4) [ 1269 0 R /XYZ 60.307257 91.360002 0 ] (jdb/:__span-2-5) [ 1279 0 R /XYZ 60.307257 771.023622 0 ] (jdb/:__span-2-6) [ 1279 0 R /XYZ 60.307257 757.623270 0 ] (jdb/:__span-2-7) [ 1279 0 R /XYZ 60.307257 744.222918 0 ] (jdb/:__span-2-8) [ 1279 0 R /XYZ 60.307257 730.822566 0 ] (jdb/:__span-20-1) [ 1552 0 R /XYZ 60.307257 333.785526 0 ] (jdb/:__span-20-2) [ 1552 0 R /XYZ 60.307257 320.385174 0 ] (jdb/:__span-20-3) [ 1552 0 R /XYZ 60.307257 306.984822 0 ] (jdb/:__span-20-4) [ 1552 0 R /XYZ 60.307257 293.584470 0 ] (jdb/:__span-21-1) [ 1552 0 R /XYZ 60.307257 227.868318 0 ] (jdb/:__span-21-2) [ 1552 0 R /XYZ 60.307257 214.467966 0 ] (jdb/:__span-21-3) [ 1552 0 R /XYZ 60.307257 201.067614 0 ] (jdb/:__span-21-4) [ 1552 0 R /XYZ 60.307257 187.667262 0 ] (jdb/:__span-21-5) [ 1552 0 R /XYZ 60.307257 174.266910 0 ] (jdb/:__span-21-6) [ 1552 0 R /XYZ 60.307257 160.866558 0 ] (jdb/:__span-21-7) [ 1552 0 R /XYZ 60.307257 134.065854 0 ] (jdb/:__span-21-8) [ 1552 0 R /XYZ 60.307257 120.665502 0 ] (jdb/:__span-22-1) [ 1554 0 R /XYZ 60.307257 697.945722 0 ] (jdb/:__span-22-2) [ 1554 0 R /XYZ 60.307257 684.545370 0 ] (jdb/:__span-22-3) [ 1554 0 R /XYZ 60.307257 671.145018 0 ] (jdb/:__span-22-4) [ 1554 0 R /XYZ 60.307257 644.344314 0 ] (jdb/:__span-22-5) [ 1554 0 R /XYZ 60.307257 630.943962 0 ] (jdb/:__span-23-1) [ 1571 0 R /XYZ 60.307257 422.056122 0 ] (jdb/:__span-23-2) [ 1571 0 R /XYZ 60.307257 381.855066 0 ] (jdb/:__span-23-3) [ 1571 0 R /XYZ 60.307257 368.454714 0 ] (jdb/:__span-23-4) [ 1571 0 R /XYZ 60.307257 355.054362 0 ] (jdb/:__span-23-5) [ 1571 0 R /XYZ 60.307257 341.654010 0 ] (jdb/:__span-24-1) [ 1576 0 R /XYZ 60.307257 520.588122 0 ] (jdb/:__span-24-10) [ 1576 0 R /XYZ 60.307257 373.184250 0 ] (jdb/:__span-24-2) [ 1576 0 R /XYZ 60.307257 480.387066 0 ] (jdb/:__span-24-3) [ 1576 0 R /XYZ 60.307257 466.986714 0 ] (jdb/:__span-24-4) [ 1576 0 R /XYZ 60.307257 453.586362 0 ] (jdb/:__span-24-5) [ 1576 0 R /XYZ 60.307257 440.186010 0 ] (jdb/:__span-24-6) [ 1576 0 R /XYZ 60.307257 426.785658 0 ] (jdb/:__span-24-7) [ 1576 0 R /XYZ 60.307257 413.385306 0 ] (jdb/:__span-24-8) [ 1576 0 R /XYZ 60.307257 399.984954 0 ] (jdb/:__span-24-9) [ 1576 0 R /XYZ 60.307257 386.584602 0 ] (jdb/:__span-25-1) [ 1578 0 R /XYZ 60.307257 342.292122 0 ] (jdb/:__span-25-10) [ 1578 0 R /XYZ 60.307257 221.688954 0 ] (jdb/:__span-25-11) [ 1578 0 R /XYZ 60.307257 208.288602 0 ] (jdb/:__span-25-12) [ 1578 0 R /XYZ 60.307257 194.888250 0 ] (jdb/:__span-25-13) [ 1578 0 R /XYZ 60.307257 181.487898 0 ] (jdb/:__span-25-14) [ 1578 0 R /XYZ 60.307257 168.087546 0 ] (jdb/:__span-25-15) [ 1578 0 R /XYZ 60.307257 154.687194 0 ] (jdb/:__span-25-16) [ 1578 0 R /XYZ 60.307257 141.286842 0 ] (jdb/:__span-25-17) [ 1578 0 R /XYZ 60.307257 127.886490 0 ] (jdb/:__span-25-18) [ 1578 0 R /XYZ 60.307257 114.486138 0 ] (jdb/:__span-25-19) [ 1578 0 R /XYZ 60.307257 101.085786 0 ] (jdb/:__span-25-2) [ 1578 0 R /XYZ 60.307257 328.891770 0 ] (jdb/:__span-25-20) [ 1578 0 R /XYZ 60.307257 87.685434 0 ] (jdb/:__span-25-21) [ 1580 0 R /XYZ 60.307257 771.023622 0 ] (jdb/:__span-25-22) [ 1580 0 R /XYZ 60.307257 757.623270 0 ] (jdb/:__span-25-23) [ 1580 0 R /XYZ 60.307257 744.222918 0 ] (jdb/:__span-25-24) [ 1580 0 R /XYZ 60.307257 730.822566 0 ] (jdb/:__span-25-25) [ 1580 0 R /XYZ 60.307257 717.422214 0 ] (jdb/:__span-25-26) [ 1580 0 R /XYZ 60.307257 704.021862 0 ] (jdb/:__span-25-27) [ 1580 0 R /XYZ 60.307257 690.621510 0 ] (jdb/:__span-25-28) [ 1580 0 R /XYZ 60.307257 677.221158 0 ] (jdb/:__span-25-29) [ 1580 0 R /XYZ 60.307257 663.820806 0 ] (jdb/:__span-25-3) [ 1578 0 R /XYZ 60.307257 315.491418 0 ] (jdb/:__span-25-30) [ 1580 0 R /XYZ 60.307257 650.420454 0 ] (jdb/:__span-25-31) [ 1580 0 R /XYZ 60.307257 637.020102 0 ] (jdb/:__span-25-32) [ 1580 0 R /XYZ 60.307257 623.619750 0 ] (jdb/:__span-25-33) [ 1580 0 R /XYZ 60.307257 610.219398 0 ] (jdb/:__span-25-34) [ 1580 0 R /XYZ 60.307257 596.819046 0 ] (jdb/:__span-25-35) [ 1580 0 R /XYZ 60.307257 583.418694 0 ] (jdb/:__span-25-36) [ 1580 0 R /XYZ 60.307257 570.018342 0 ] (jdb/:__span-25-37) [ 1580 0 R /XYZ 60.307257 556.617990 0 ] (jdb/:__span-25-38) [ 1580 0 R /XYZ 60.307257 543.217638 0 ] (jdb/:__span-25-39) [ 1580 0 R /XYZ 60.307257 516.416934 0 ] (jdb/:__span-25-4) [ 1578 0 R /XYZ 60.307257 302.091066 0 ] (jdb/:__span-25-40) [ 1580 0 R /XYZ 60.307257 503.016582 0 ] (jdb/:__span-25-41) [ 1580 0 R /XYZ 60.307257 489.616230 0 ] (jdb/:__span-25-42) [ 1580 0 R /XYZ 60.307257 476.215878 0 ] (jdb/:__span-25-43) [ 1580 0 R /XYZ 60.307257 462.815526 0 ] (jdb/:__span-25-44) [ 1580 0 R /XYZ 60.307257 449.415174 0 ] (jdb/:__span-25-45) [ 1580 0 R /XYZ 60.307257 436.014822 0 ] (jdb/:__span-25-46) [ 1580 0 R /XYZ 60.307257 422.614470 0 ] (jdb/:__span-25-47) [ 1580 0 R /XYZ 60.307257 409.214118 0 ] (jdb/:__span-25-48) [ 1580 0 R /XYZ 60.307257 395.813766 0 ] (jdb/:__span-25-49) [ 1580 0 R /XYZ 60.307257 382.413414 0 ] (jdb/:__span-25-5) [ 1578 0 R /XYZ 60.307257 288.690714 0 ] (jdb/:__span-25-50) [ 1580 0 R /XYZ 60.307257 369.013062 0 ] (jdb/:__span-25-51) [ 1580 0 R /XYZ 60.307257 342.212358 0 ] (jdb/:__span-25-52) [ 1580 0 R /XYZ 60.307257 328.812006 0 ] (jdb/:__span-25-53) [ 1580 0 R /XYZ 60.307257 315.411654 0 ] (jdb/:__span-25-54) [ 1580 0 R /XYZ 60.307257 302.011302 0 ] (jdb/:__span-25-55) [ 1580 0 R /XYZ 60.307257 288.610950 0 ] (jdb/:__span-25-56) [ 1580 0 R /XYZ 60.307257 275.210598 0 ] (jdb/:__span-25-57) [ 1580 0 R /XYZ 60.307257 261.810246 0 ] (jdb/:__span-25-58) [ 1580 0 R /XYZ 60.307257 248.409894 0 ] (jdb/:__span-25-59) [ 1580 0 R /XYZ 60.307257 235.009542 0 ] (jdb/:__span-25-6) [ 1578 0 R /XYZ 60.307257 275.290362 0 ] (jdb/:__span-25-60) [ 1580 0 R /XYZ 60.307257 221.609190 0 ] (jdb/:__span-25-61) [ 1580 0 R /XYZ 60.307257 208.208838 0 ] (jdb/:__span-25-62) [ 1580 0 R /XYZ 60.307257 194.808486 0 ] (jdb/:__span-25-63) [ 1580 0 R /XYZ 60.307257 181.408134 0 ] (jdb/:__span-25-64) [ 1580 0 R /XYZ 60.307257 168.007782 0 ] (jdb/:__span-25-65) [ 1580 0 R /XYZ 60.307257 154.607430 0 ] (jdb/:__span-25-66) [ 1580 0 R /XYZ 60.307257 141.207078 0 ] (jdb/:__span-25-67) [ 1580 0 R /XYZ 60.307257 127.806726 0 ] (jdb/:__span-25-68) [ 1580 0 R /XYZ 60.307257 114.406374 0 ] (jdb/:__span-25-7) [ 1578 0 R /XYZ 60.307257 261.890010 0 ] (jdb/:__span-25-8) [ 1578 0 R /XYZ 60.307257 248.489658 0 ] (jdb/:__span-25-9) [ 1578 0 R /XYZ 60.307257 235.089306 0 ] (jdb/:__span-26-1) [ 1582 0 R /XYZ 60.307257 412.672122 0 ] (jdb/:__span-26-2) [ 1582 0 R /XYZ 60.307257 385.871418 0 ] (jdb/:__span-26-3) [ 1582 0 R /XYZ 60.307257 372.471066 0 ] (jdb/:__span-26-4) [ 1582 0 R /XYZ 60.307257 345.670362 0 ] (jdb/:__span-26-5) [ 1582 0 R /XYZ 60.307257 332.270010 0 ] (jdb/:__span-26-6) [ 1582 0 R /XYZ 60.307257 305.469306 0 ] (jdb/:__span-27-1) [ 1622 0 R /XYZ 60.307257 292.862622 0 ] (jdb/:__span-27-10) [ 1622 0 R /XYZ 60.307257 158.859102 0 ] (jdb/:__span-27-2) [ 1622 0 R /XYZ 60.307257 279.462270 0 ] (jdb/:__span-27-3) [ 1622 0 R /XYZ 60.307257 266.061918 0 ] (jdb/:__span-27-4) [ 1622 0 R /XYZ 60.307257 252.661566 0 ] (jdb/:__span-27-5) [ 1622 0 R /XYZ 60.307257 239.261214 0 ] (jdb/:__span-27-6) [ 1622 0 R /XYZ 60.307257 225.860862 0 ] (jdb/:__span-27-7) [ 1622 0 R /XYZ 60.307257 212.460510 0 ] (jdb/:__span-27-8) [ 1622 0 R /XYZ 60.307257 185.659806 0 ] (jdb/:__span-27-9) [ 1622 0 R /XYZ 60.307257 172.259454 0 ] (jdb/:__span-28-1) [ 1626 0 R /XYZ 60.307257 722.344122 0 ] (jdb/:__span-28-10) [ 1626 0 R /XYZ 60.307257 548.139546 0 ] (jdb/:__span-28-11) [ 1626 0 R /XYZ 60.307257 534.739194 0 ] (jdb/:__span-28-12) [ 1626 0 R /XYZ 60.307257 521.338842 0 ] (jdb/:__span-28-13) [ 1626 0 R /XYZ 60.307257 507.938490 0 ] (jdb/:__span-28-14) [ 1626 0 R /XYZ 60.307257 467.737434 0 ] (jdb/:__span-28-15) [ 1626 0 R /XYZ 60.307257 454.337082 0 ] (jdb/:__span-28-16) [ 1626 0 R /XYZ 60.307257 440.936730 0 ] (jdb/:__span-28-17) [ 1626 0 R /XYZ 60.307257 427.536378 0 ] (jdb/:__span-28-2) [ 1626 0 R /XYZ 60.307257 708.943770 0 ] (jdb/:__span-28-3) [ 1626 0 R /XYZ 60.307257 668.742714 0 ] (jdb/:__span-28-4) [ 1626 0 R /XYZ 60.307257 655.342362 0 ] (jdb/:__span-28-5) [ 1626 0 R /XYZ 60.307257 641.942010 0 ] (jdb/:__span-28-6) [ 1626 0 R /XYZ 60.307257 628.541658 0 ] (jdb/:__span-28-7) [ 1626 0 R /XYZ 60.307257 601.740954 0 ] (jdb/:__span-28-8) [ 1626 0 R /XYZ 60.307257 588.340602 0 ] (jdb/:__span-28-9) [ 1626 0 R /XYZ 60.307257 574.940250 0 ] (jdb/:__span-29-1) [ 1626 0 R /XYZ 60.307257 361.820226 0 ] (jdb/:__span-29-2) [ 1626 0 R /XYZ 60.307257 348.419874 0 ] (jdb/:__span-29-3) [ 1626 0 R /XYZ 60.307257 335.019522 0 ] (jdb/:__span-29-4) [ 1626 0 R /XYZ 60.307257 321.619170 0 ] (jdb/:__span-29-5) [ 1626 0 R /XYZ 60.307257 308.218818 0 ] (jdb/:__span-3-1) [ 1279 0 R /XYZ 60.307257 665.106414 0 ] (jdb/:__span-3-10) [ 1279 0 R /XYZ 60.307257 544.503246 0 ] (jdb/:__span-3-11) [ 1279 0 R /XYZ 60.307257 531.102894 0 ] (jdb/:__span-3-12) [ 1279 0 R /XYZ 60.307257 517.702542 0 ] (jdb/:__span-3-13) [ 1279 0 R /XYZ 60.307257 504.302190 0 ] (jdb/:__span-3-14) [ 1279 0 R /XYZ 60.307257 477.501486 0 ] (jdb/:__span-3-15) [ 1279 0 R /XYZ 60.307257 464.101134 0 ] (jdb/:__span-3-16) [ 1279 0 R /XYZ 60.307257 437.300430 0 ] (jdb/:__span-3-17) [ 1279 0 R /XYZ 60.307257 423.900078 0 ] (jdb/:__span-3-18) [ 1279 0 R /XYZ 60.307257 410.499726 0 ] (jdb/:__span-3-19) [ 1279 0 R /XYZ 60.307257 397.099374 0 ] (jdb/:__span-3-2) [ 1279 0 R /XYZ 60.307257 651.706062 0 ] (jdb/:__span-3-20) [ 1279 0 R /XYZ 60.307257 383.699022 0 ] (jdb/:__span-3-21) [ 1279 0 R /XYZ 60.307257 370.298670 0 ] (jdb/:__span-3-22) [ 1279 0 R /XYZ 60.307257 356.898318 0 ] (jdb/:__span-3-3) [ 1279 0 R /XYZ 60.307257 638.305710 0 ] (jdb/:__span-3-4) [ 1279 0 R /XYZ 60.307257 624.905358 0 ] (jdb/:__span-3-5) [ 1279 0 R /XYZ 60.307257 611.505006 0 ] (jdb/:__span-3-6) [ 1279 0 R /XYZ 60.307257 598.104654 0 ] (jdb/:__span-3-7) [ 1279 0 R /XYZ 60.307257 584.704302 0 ] (jdb/:__span-3-8) [ 1279 0 R /XYZ 60.307257 571.303950 0 ] (jdb/:__span-3-9) [ 1279 0 R /XYZ 60.307257 557.903598 0 ] (jdb/:__span-30-1) [ 1630 0 R /XYZ 60.307257 763.633722 0 ] (jdb/:__span-30-2) [ 1630 0 R /XYZ 60.307257 750.233370 0 ] (jdb/:__span-31-1) [ 1695 0 R /XYZ 60.307257 525.280122 0 ] (jdb/:__span-31-10) [ 1695 0 R /XYZ 60.307257 404.676954 0 ] (jdb/:__span-31-11) [ 1695 0 R /XYZ 60.307257 391.276602 0 ] (jdb/:__span-31-12) [ 1695 0 R /XYZ 60.307257 377.876250 0 ] (jdb/:__span-31-13) [ 1695 0 R /XYZ 60.307257 364.475898 0 ] (jdb/:__span-31-14) [ 1695 0 R /XYZ 60.307257 351.075546 0 ] (jdb/:__span-31-15) [ 1695 0 R /XYZ 60.307257 337.675194 0 ] (jdb/:__span-31-16) [ 1695 0 R /XYZ 60.307257 324.274842 0 ] (jdb/:__span-31-17) [ 1695 0 R /XYZ 60.307257 310.874490 0 ] (jdb/:__span-31-18) [ 1695 0 R /XYZ 60.307257 297.474138 0 ] (jdb/:__span-31-19) [ 1695 0 R /XYZ 60.307257 284.073786 0 ] (jdb/:__span-31-2) [ 1695 0 R /XYZ 60.307257 511.879770 0 ] (jdb/:__span-31-20) [ 1695 0 R /XYZ 60.307257 270.673434 0 ] (jdb/:__span-31-21) [ 1695 0 R /XYZ 60.307257 257.273082 0 ] (jdb/:__span-31-22) [ 1695 0 R /XYZ 60.307257 243.872730 0 ] (jdb/:__span-31-23) [ 1695 0 R /XYZ 60.307257 230.472378 0 ] (jdb/:__span-31-24) [ 1695 0 R /XYZ 60.307257 217.072026 0 ] (jdb/:__span-31-25) [ 1695 0 R /XYZ 60.307257 203.671674 0 ] (jdb/:__span-31-26) [ 1695 0 R /XYZ 60.307257 190.271322 0 ] (jdb/:__span-31-27) [ 1695 0 R /XYZ 60.307257 176.870970 0 ] (jdb/:__span-31-28) [ 1695 0 R /XYZ 60.307257 163.470618 0 ] (jdb/:__span-31-29) [ 1695 0 R /XYZ 60.307257 150.070266 0 ] (jdb/:__span-31-3) [ 1695 0 R /XYZ 60.307257 498.479418 0 ] (jdb/:__span-31-30) [ 1695 0 R /XYZ 60.307257 136.669914 0 ] (jdb/:__span-31-31) [ 1695 0 R /XYZ 60.307257 123.269562 0 ] (jdb/:__span-31-32) [ 1695 0 R /XYZ 60.307257 109.869210 0 ] (jdb/:__span-31-33) [ 1695 0 R /XYZ 60.307257 96.468858 0 ] (jdb/:__span-31-34) [ 1697 0 R /XYZ 60.307257 757.623270 0 ] (jdb/:__span-31-35) [ 1697 0 R /XYZ 60.307257 730.822566 0 ] (jdb/:__span-31-36) [ 1697 0 R /XYZ 60.307257 704.021862 0 ] (jdb/:__span-31-37) [ 1697 0 R /XYZ 60.307257 690.621510 0 ] (jdb/:__span-31-38) [ 1697 0 R /XYZ 60.307257 677.221158 0 ] (jdb/:__span-31-39) [ 1697 0 R /XYZ 60.307257 663.820806 0 ] (jdb/:__span-31-4) [ 1695 0 R /XYZ 60.307257 485.079066 0 ] (jdb/:__span-31-40) [ 1697 0 R /XYZ 60.307257 650.420454 0 ] (jdb/:__span-31-41) [ 1697 0 R /XYZ 60.307257 623.619750 0 ] (jdb/:__span-31-42) [ 1697 0 R /XYZ 60.307257 596.819046 0 ] (jdb/:__span-31-43) [ 1697 0 R /XYZ 60.307257 583.418694 0 ] (jdb/:__span-31-44) [ 1697 0 R /XYZ 60.307257 570.018342 0 ] (jdb/:__span-31-45) [ 1697 0 R /XYZ 60.307257 556.617990 0 ] (jdb/:__span-31-46) [ 1697 0 R /XYZ 60.307257 529.817286 0 ] (jdb/:__span-31-47) [ 1697 0 R /XYZ 60.307257 503.016582 0 ] (jdb/:__span-31-48) [ 1697 0 R /XYZ 60.307257 476.215878 0 ] (jdb/:__span-31-49) [ 1697 0 R /XYZ 60.307257 462.815526 0 ] (jdb/:__span-31-5) [ 1695 0 R /XYZ 60.307257 471.678714 0 ] (jdb/:__span-31-50) [ 1697 0 R /XYZ 60.307257 449.415174 0 ] (jdb/:__span-31-6) [ 1695 0 R /XYZ 60.307257 458.278362 0 ] (jdb/:__span-31-7) [ 1695 0 R /XYZ 60.307257 444.878010 0 ] (jdb/:__span-31-8) [ 1695 0 R /XYZ 60.307257 431.477658 0 ] (jdb/:__span-31-9) [ 1695 0 R /XYZ 60.307257 418.077306 0 ] (jdb/:__span-32-1) [ 1716 0 R /XYZ 60.307257 737.358522 0 ] (jdb/:__span-32-10) [ 1716 0 R /XYZ 60.307257 603.355002 0 ] (jdb/:__span-32-11) [ 1716 0 R /XYZ 60.307257 589.954650 0 ] (jdb/:__span-32-12) [ 1716 0 R /XYZ 60.307257 576.554298 0 ] (jdb/:__span-32-13) [ 1716 0 R /XYZ 60.307257 563.153946 0 ] (jdb/:__span-32-14) [ 1716 0 R /XYZ 60.307257 549.753594 0 ] (jdb/:__span-32-15) [ 1716 0 R /XYZ 60.307257 536.353242 0 ] (jdb/:__span-32-16) [ 1716 0 R /XYZ 60.307257 522.952890 0 ] (jdb/:__span-32-17) [ 1716 0 R /XYZ 60.307257 509.552538 0 ] (jdb/:__span-32-18) [ 1716 0 R /XYZ 60.307257 482.751834 0 ] (jdb/:__span-32-19) [ 1716 0 R /XYZ 60.307257 455.951130 0 ] (jdb/:__span-32-2) [ 1716 0 R /XYZ 60.307257 723.958170 0 ] (jdb/:__span-32-20) [ 1716 0 R /XYZ 60.307257 442.550778 0 ] (jdb/:__span-32-21) [ 1716 0 R /XYZ 60.307257 429.150426 0 ] (jdb/:__span-32-22) [ 1716 0 R /XYZ 60.307257 415.750074 0 ] (jdb/:__span-32-23) [ 1716 0 R /XYZ 60.307257 402.349722 0 ] (jdb/:__span-32-24) [ 1716 0 R /XYZ 60.307257 388.949370 0 ] (jdb/:__span-32-25) [ 1716 0 R /XYZ 60.307257 362.148666 0 ] (jdb/:__span-32-26) [ 1716 0 R /XYZ 60.307257 335.347962 0 ] (jdb/:__span-32-27) [ 1716 0 R /XYZ 60.307257 321.947610 0 ] (jdb/:__span-32-28) [ 1716 0 R /XYZ 60.307257 308.547258 0 ] (jdb/:__span-32-29) [ 1716 0 R /XYZ 60.307257 295.146906 0 ] (jdb/:__span-32-3) [ 1716 0 R /XYZ 60.307257 710.557818 0 ] (jdb/:__span-32-30) [ 1716 0 R /XYZ 60.307257 281.746554 0 ] (jdb/:__span-32-31) [ 1716 0 R /XYZ 60.307257 268.346202 0 ] (jdb/:__span-32-32) [ 1716 0 R /XYZ 60.307257 254.945850 0 ] (jdb/:__span-32-33) [ 1716 0 R /XYZ 60.307257 241.545498 0 ] (jdb/:__span-32-34) [ 1716 0 R /XYZ 60.307257 214.744794 0 ] (jdb/:__span-32-35) [ 1716 0 R /XYZ 60.307257 201.344442 0 ] (jdb/:__span-32-36) [ 1716 0 R /XYZ 60.307257 174.543738 0 ] (jdb/:__span-32-37) [ 1716 0 R /XYZ 60.307257 147.743034 0 ] (jdb/:__span-32-38) [ 1716 0 R /XYZ 60.307257 120.942330 0 ] (jdb/:__span-32-39) [ 1716 0 R /XYZ 60.307257 107.541978 0 ] (jdb/:__span-32-4) [ 1716 0 R /XYZ 60.307257 697.157466 0 ] (jdb/:__span-32-40) [ 1716 0 R /XYZ 60.307257 94.141626 0 ] (jdb/:__span-32-41) [ 1718 0 R /XYZ 60.307257 771.023622 0 ] (jdb/:__span-32-42) [ 1718 0 R /XYZ 60.307257 757.623270 0 ] (jdb/:__span-32-43) [ 1718 0 R /XYZ 60.307257 730.822566 0 ] (jdb/:__span-32-44) [ 1718 0 R /XYZ 60.307257 717.422214 0 ] (jdb/:__span-32-45) [ 1718 0 R /XYZ 60.307257 690.621510 0 ] (jdb/:__span-32-46) [ 1718 0 R /XYZ 60.307257 663.820806 0 ] (jdb/:__span-32-47) [ 1718 0 R /XYZ 60.307257 637.020102 0 ] (jdb/:__span-32-48) [ 1718 0 R /XYZ 60.307257 623.619750 0 ] (jdb/:__span-32-49) [ 1718 0 R /XYZ 60.307257 610.219398 0 ] (jdb/:__span-32-5) [ 1716 0 R /XYZ 60.307257 670.356762 0 ] (jdb/:__span-32-50) [ 1718 0 R /XYZ 60.307257 596.819046 0 ] (jdb/:__span-32-51) [ 1718 0 R /XYZ 60.307257 583.418694 0 ] (jdb/:__span-32-52) [ 1718 0 R /XYZ 60.307257 570.018342 0 ] (jdb/:__span-32-53) [ 1718 0 R /XYZ 60.307257 556.617990 0 ] (jdb/:__span-32-54) [ 1718 0 R /XYZ 60.307257 543.217638 0 ] (jdb/:__span-32-55) [ 1718 0 R /XYZ 60.307257 516.416934 0 ] (jdb/:__span-32-56) [ 1718 0 R /XYZ 60.307257 489.616230 0 ] (jdb/:__span-32-57) [ 1718 0 R /XYZ 60.307257 476.215878 0 ] (jdb/:__span-32-58) [ 1718 0 R /XYZ 60.307257 462.815526 0 ] (jdb/:__span-32-59) [ 1718 0 R /XYZ 60.307257 449.415174 0 ] (jdb/:__span-32-6) [ 1716 0 R /XYZ 60.307257 656.956410 0 ] (jdb/:__span-32-60) [ 1718 0 R /XYZ 60.307257 436.014822 0 ] (jdb/:__span-32-61) [ 1718 0 R /XYZ 60.307257 422.614470 0 ] (jdb/:__span-32-62) [ 1718 0 R /XYZ 60.307257 409.214118 0 ] (jdb/:__span-32-63) [ 1718 0 R /XYZ 60.307257 395.813766 0 ] (jdb/:__span-32-64) [ 1718 0 R /XYZ 60.307257 382.413414 0 ] (jdb/:__span-32-65) [ 1718 0 R /XYZ 60.307257 369.013062 0 ] (jdb/:__span-32-66) [ 1718 0 R /XYZ 60.307257 355.612710 0 ] (jdb/:__span-32-67) [ 1718 0 R /XYZ 60.307257 328.812006 0 ] (jdb/:__span-32-68) [ 1718 0 R /XYZ 60.307257 315.411654 0 ] (jdb/:__span-32-69) [ 1718 0 R /XYZ 60.307257 302.011302 0 ] (jdb/:__span-32-7) [ 1716 0 R /XYZ 60.307257 643.556058 0 ] (jdb/:__span-32-70) [ 1718 0 R /XYZ 60.307257 288.610950 0 ] (jdb/:__span-32-71) [ 1718 0 R /XYZ 60.307257 275.210598 0 ] (jdb/:__span-32-72) [ 1718 0 R /XYZ 60.307257 261.810246 0 ] (jdb/:__span-32-73) [ 1718 0 R /XYZ 60.307257 248.409894 0 ] (jdb/:__span-32-74) [ 1718 0 R /XYZ 60.307257 235.009542 0 ] (jdb/:__span-32-8) [ 1716 0 R /XYZ 60.307257 630.155706 0 ] (jdb/:__span-32-9) [ 1716 0 R /XYZ 60.307257 616.755354 0 ] (jdb/:__span-33-1) [ 1718 0 R /XYZ 60.307257 195.568590 0 ] (jdb/:__span-33-2) [ 1718 0 R /XYZ 60.307257 182.168238 0 ] (jdb/:__span-34-1) [ 1720 0 R /XYZ 60.307257 682.931322 0 ] (jdb/:__span-34-10) [ 1720 0 R /XYZ 60.307257 535.527450 0 ] (jdb/:__span-34-11) [ 1720 0 R /XYZ 60.307257 522.127098 0 ] (jdb/:__span-34-12) [ 1720 0 R /XYZ 60.307257 508.726746 0 ] (jdb/:__span-34-13) [ 1720 0 R /XYZ 60.307257 495.326394 0 ] (jdb/:__span-34-14) [ 1720 0 R /XYZ 60.307257 468.525690 0 ] (jdb/:__span-34-15) [ 1720 0 R /XYZ 60.307257 455.125338 0 ] (jdb/:__span-34-16) [ 1720 0 R /XYZ 60.307257 428.324634 0 ] (jdb/:__span-34-17) [ 1720 0 R /XYZ 60.307257 414.924282 0 ] (jdb/:__span-34-18) [ 1720 0 R /XYZ 60.307257 388.123578 0 ] (jdb/:__span-34-19) [ 1720 0 R /XYZ 60.307257 374.723226 0 ] (jdb/:__span-34-2) [ 1720 0 R /XYZ 60.307257 669.530970 0 ] (jdb/:__span-34-20) [ 1720 0 R /XYZ 60.307257 361.322874 0 ] (jdb/:__span-34-21) [ 1720 0 R /XYZ 60.307257 347.922522 0 ] (jdb/:__span-34-22) [ 1720 0 R /XYZ 60.307257 334.522170 0 ] (jdb/:__span-34-23) [ 1720 0 R /XYZ 60.307257 307.721466 0 ] (jdb/:__span-34-24) [ 1720 0 R /XYZ 60.307257 294.321114 0 ] (jdb/:__span-34-25) [ 1720 0 R /XYZ 60.307257 267.520410 0 ] (jdb/:__span-34-26) [ 1720 0 R /XYZ 60.307257 254.120058 0 ] (jdb/:__span-34-27) [ 1720 0 R /XYZ 60.307257 227.319354 0 ] (jdb/:__span-34-28) [ 1720 0 R /XYZ 60.307257 213.919002 0 ] (jdb/:__span-34-29) [ 1720 0 R /XYZ 60.307257 200.518650 0 ] (jdb/:__span-34-3) [ 1720 0 R /XYZ 60.307257 656.130618 0 ] (jdb/:__span-34-30) [ 1720 0 R /XYZ 60.307257 173.717946 0 ] (jdb/:__span-34-31) [ 1720 0 R /XYZ 60.307257 160.317594 0 ] (jdb/:__span-34-32) [ 1720 0 R /XYZ 60.307257 146.917242 0 ] (jdb/:__span-34-4) [ 1720 0 R /XYZ 60.307257 642.730266 0 ] (jdb/:__span-34-5) [ 1720 0 R /XYZ 60.307257 629.329914 0 ] (jdb/:__span-34-6) [ 1720 0 R /XYZ 60.307257 615.929562 0 ] (jdb/:__span-34-7) [ 1720 0 R /XYZ 60.307257 602.529210 0 ] (jdb/:__span-34-8) [ 1720 0 R /XYZ 60.307257 575.728506 0 ] (jdb/:__span-34-9) [ 1720 0 R /XYZ 60.307257 562.328154 0 ] (jdb/:__span-35-1) [ 1722 0 R /XYZ 60.307257 519.649722 0 ] (jdb/:__span-35-10) [ 1722 0 R /XYZ 60.307257 385.646202 0 ] (jdb/:__span-35-11) [ 1722 0 R /XYZ 60.307257 372.245850 0 ] (jdb/:__span-35-12) [ 1722 0 R /XYZ 60.307257 358.845498 0 ] (jdb/:__span-35-13) [ 1722 0 R /XYZ 60.307257 332.044794 0 ] (jdb/:__span-35-14) [ 1722 0 R /XYZ 60.307257 318.644442 0 ] (jdb/:__span-35-15) [ 1722 0 R /XYZ 60.307257 305.244090 0 ] (jdb/:__span-35-16) [ 1722 0 R /XYZ 60.307257 291.843738 0 ] (jdb/:__span-35-17) [ 1722 0 R /XYZ 60.307257 278.443386 0 ] (jdb/:__span-35-18) [ 1722 0 R /XYZ 60.307257 265.043034 0 ] (jdb/:__span-35-19) [ 1722 0 R /XYZ 60.307257 251.642682 0 ] (jdb/:__span-35-2) [ 1722 0 R /XYZ 60.307257 506.249370 0 ] (jdb/:__span-35-20) [ 1722 0 R /XYZ 60.307257 238.242330 0 ] (jdb/:__span-35-21) [ 1722 0 R /XYZ 60.307257 224.841978 0 ] (jdb/:__span-35-22) [ 1722 0 R /XYZ 60.307257 198.041274 0 ] (jdb/:__span-35-23) [ 1722 0 R /XYZ 60.307257 171.240570 0 ] (jdb/:__span-35-24) [ 1722 0 R /XYZ 60.307257 157.840218 0 ] (jdb/:__span-35-25) [ 1722 0 R /XYZ 60.307257 144.439866 0 ] (jdb/:__span-35-26) [ 1722 0 R /XYZ 60.307257 131.039514 0 ] (jdb/:__span-35-27) [ 1722 0 R /XYZ 60.307257 104.238810 0 ] (jdb/:__span-35-28) [ 1722 0 R /XYZ 60.307257 90.838458 0 ] (jdb/:__span-35-29) [ 1724 0 R /XYZ 60.307257 757.623270 0 ] (jdb/:__span-35-3) [ 1722 0 R /XYZ 60.307257 492.849018 0 ] (jdb/:__span-35-30) [ 1724 0 R /XYZ 60.307257 744.222918 0 ] (jdb/:__span-35-31) [ 1724 0 R /XYZ 60.307257 730.822566 0 ] (jdb/:__span-35-32) [ 1724 0 R /XYZ 60.307257 717.422214 0 ] (jdb/:__span-35-4) [ 1722 0 R /XYZ 60.307257 479.448666 0 ] (jdb/:__span-35-5) [ 1722 0 R /XYZ 60.307257 452.647962 0 ] (jdb/:__span-35-6) [ 1722 0 R /XYZ 60.307257 439.247610 0 ] (jdb/:__span-35-7) [ 1722 0 R /XYZ 60.307257 425.847258 0 ] (jdb/:__span-35-8) [ 1722 0 R /XYZ 60.307257 412.446906 0 ] (jdb/:__span-35-9) [ 1722 0 R /XYZ 60.307257 399.046554 0 ] (jdb/:__span-36-1) [ 1729 0 R /XYZ 60.307257 619.120122 0 ] (jdb/:__span-36-10) [ 1729 0 R /XYZ 60.307257 498.516954 0 ] (jdb/:__span-36-11) [ 1729 0 R /XYZ 60.307257 485.116602 0 ] (jdb/:__span-36-12) [ 1729 0 R /XYZ 60.307257 471.716250 0 ] (jdb/:__span-36-13) [ 1729 0 R /XYZ 60.307257 458.315898 0 ] (jdb/:__span-36-14) [ 1729 0 R /XYZ 60.307257 444.915546 0 ] (jdb/:__span-36-15) [ 1729 0 R /XYZ 60.307257 431.515194 0 ] (jdb/:__span-36-16) [ 1729 0 R /XYZ 60.307257 418.114842 0 ] (jdb/:__span-36-17) [ 1729 0 R /XYZ 60.307257 404.714490 0 ] (jdb/:__span-36-18) [ 1729 0 R /XYZ 60.307257 391.314138 0 ] (jdb/:__span-36-19) [ 1729 0 R /XYZ 60.307257 377.913786 0 ] (jdb/:__span-36-2) [ 1729 0 R /XYZ 60.307257 605.719770 0 ] (jdb/:__span-36-20) [ 1729 0 R /XYZ 60.307257 364.513434 0 ] (jdb/:__span-36-21) [ 1729 0 R /XYZ 60.307257 351.113082 0 ] (jdb/:__span-36-22) [ 1729 0 R /XYZ 60.307257 337.712730 0 ] (jdb/:__span-36-23) [ 1729 0 R /XYZ 60.307257 324.312378 0 ] (jdb/:__span-36-24) [ 1729 0 R /XYZ 60.307257 310.912026 0 ] (jdb/:__span-36-25) [ 1729 0 R /XYZ 60.307257 297.511674 0 ] (jdb/:__span-36-26) [ 1729 0 R /XYZ 60.307257 284.111322 0 ] (jdb/:__span-36-27) [ 1729 0 R /XYZ 60.307257 270.710970 0 ] (jdb/:__span-36-28) [ 1729 0 R /XYZ 60.307257 257.310618 0 ] (jdb/:__span-36-29) [ 1729 0 R /XYZ 60.307257 243.910266 0 ] (jdb/:__span-36-3) [ 1729 0 R /XYZ 60.307257 592.319418 0 ] (jdb/:__span-36-30) [ 1729 0 R /XYZ 60.307257 230.509914 0 ] (jdb/:__span-36-31) [ 1729 0 R /XYZ 60.307257 217.109562 0 ] (jdb/:__span-36-32) [ 1729 0 R /XYZ 60.307257 203.709210 0 ] (jdb/:__span-36-33) [ 1729 0 R /XYZ 60.307257 190.308858 0 ] (jdb/:__span-36-34) [ 1729 0 R /XYZ 60.307257 176.908506 0 ] (jdb/:__span-36-35) [ 1729 0 R /XYZ 60.307257 163.508154 0 ] (jdb/:__span-36-36) [ 1729 0 R /XYZ 60.307257 150.107802 0 ] (jdb/:__span-36-37) [ 1729 0 R /XYZ 60.307257 136.707450 0 ] (jdb/:__span-36-38) [ 1729 0 R /XYZ 60.307257 123.307098 0 ] (jdb/:__span-36-39) [ 1729 0 R /XYZ 60.307257 109.906746 0 ] (jdb/:__span-36-4) [ 1729 0 R /XYZ 60.307257 578.919066 0 ] (jdb/:__span-36-40) [ 1729 0 R /XYZ 60.307257 96.506394 0 ] (jdb/:__span-36-41) [ 1731 0 R /XYZ 60.307257 771.023622 0 ] (jdb/:__span-36-42) [ 1731 0 R /XYZ 60.307257 757.623270 0 ] (jdb/:__span-36-43) [ 1731 0 R /XYZ 60.307257 744.222918 0 ] (jdb/:__span-36-44) [ 1731 0 R /XYZ 60.307257 730.822566 0 ] (jdb/:__span-36-45) [ 1731 0 R /XYZ 60.307257 717.422214 0 ] (jdb/:__span-36-46) [ 1731 0 R /XYZ 60.307257 704.021862 0 ] (jdb/:__span-36-47) [ 1731 0 R /XYZ 60.307257 690.621510 0 ] (jdb/:__span-36-48) [ 1731 0 R /XYZ 60.307257 677.221158 0 ] (jdb/:__span-36-49) [ 1731 0 R /XYZ 60.307257 663.820806 0 ] (jdb/:__span-36-5) [ 1729 0 R /XYZ 60.307257 565.518714 0 ] (jdb/:__span-36-50) [ 1731 0 R /XYZ 60.307257 650.420454 0 ] (jdb/:__span-36-51) [ 1731 0 R /XYZ 60.307257 637.020102 0 ] (jdb/:__span-36-52) [ 1731 0 R /XYZ 60.307257 623.619750 0 ] (jdb/:__span-36-53) [ 1731 0 R /XYZ 60.307257 610.219398 0 ] (jdb/:__span-36-54) [ 1731 0 R /XYZ 60.307257 596.819046 0 ] (jdb/:__span-36-55) [ 1731 0 R /XYZ 60.307257 583.418694 0 ] (jdb/:__span-36-56) [ 1731 0 R /XYZ 60.307257 570.018342 0 ] (jdb/:__span-36-57) [ 1731 0 R /XYZ 60.307257 556.617990 0 ] (jdb/:__span-36-58) [ 1731 0 R /XYZ 60.307257 543.217638 0 ] (jdb/:__span-36-59) [ 1731 0 R /XYZ 60.307257 529.817286 0 ] (jdb/:__span-36-6) [ 1729 0 R /XYZ 60.307257 552.118362 0 ] (jdb/:__span-36-60) [ 1731 0 R /XYZ 60.307257 516.416934 0 ] (jdb/:__span-36-61) [ 1731 0 R /XYZ 60.307257 503.016582 0 ] (jdb/:__span-36-62) [ 1731 0 R /XYZ 60.307257 489.616230 0 ] (jdb/:__span-36-63) [ 1731 0 R /XYZ 60.307257 476.215878 0 ] (jdb/:__span-36-64) [ 1731 0 R /XYZ 60.307257 462.815526 0 ] (jdb/:__span-36-65) [ 1731 0 R /XYZ 60.307257 449.415174 0 ] (jdb/:__span-36-66) [ 1731 0 R /XYZ 60.307257 436.014822 0 ] (jdb/:__span-36-67) [ 1731 0 R /XYZ 60.307257 422.614470 0 ] (jdb/:__span-36-68) [ 1731 0 R /XYZ 60.307257 409.214118 0 ] (jdb/:__span-36-69) [ 1731 0 R /XYZ 60.307257 395.813766 0 ] (jdb/:__span-36-7) [ 1729 0 R /XYZ 60.307257 538.718010 0 ] (jdb/:__span-36-70) [ 1731 0 R /XYZ 60.307257 382.413414 0 ] (jdb/:__span-36-71) [ 1731 0 R /XYZ 60.307257 369.013062 0 ] (jdb/:__span-36-72) [ 1731 0 R /XYZ 60.307257 355.612710 0 ] (jdb/:__span-36-73) [ 1731 0 R /XYZ 60.307257 342.212358 0 ] (jdb/:__span-36-74) [ 1731 0 R /XYZ 60.307257 328.812006 0 ] (jdb/:__span-36-75) [ 1731 0 R /XYZ 60.307257 315.411654 0 ] (jdb/:__span-36-76) [ 1731 0 R /XYZ 60.307257 302.011302 0 ] (jdb/:__span-36-77) [ 1731 0 R /XYZ 60.307257 288.610950 0 ] (jdb/:__span-36-78) [ 1731 0 R /XYZ 60.307257 275.210598 0 ] (jdb/:__span-36-79) [ 1731 0 R /XYZ 60.307257 261.810246 0 ] (jdb/:__span-36-8) [ 1729 0 R /XYZ 60.307257 525.317658 0 ] (jdb/:__span-36-80) [ 1731 0 R /XYZ 60.307257 248.409894 0 ] (jdb/:__span-36-81) [ 1731 0 R /XYZ 60.307257 235.009542 0 ] (jdb/:__span-36-82) [ 1731 0 R /XYZ 60.307257 221.609190 0 ] (jdb/:__span-36-83) [ 1731 0 R /XYZ 60.307257 208.208838 0 ] (jdb/:__span-36-84) [ 1731 0 R /XYZ 60.307257 194.808486 0 ] (jdb/:__span-36-85) [ 1731 0 R /XYZ 60.307257 181.408134 0 ] (jdb/:__span-36-86) [ 1731 0 R /XYZ 60.307257 168.007782 0 ] (jdb/:__span-36-87) [ 1731 0 R /XYZ 60.307257 154.607430 0 ] (jdb/:__span-36-88) [ 1731 0 R /XYZ 60.307257 141.207078 0 ] (jdb/:__span-36-89) [ 1731 0 R /XYZ 60.307257 127.806726 0 ] (jdb/:__span-36-9) [ 1729 0 R /XYZ 60.307257 511.917306 0 ] (jdb/:__span-37-1) [ 1733 0 R /XYZ 60.307257 658.532922 0 ] (jdb/:__span-37-10) [ 1733 0 R /XYZ 60.307257 537.929754 0 ] (jdb/:__span-37-11) [ 1733 0 R /XYZ 60.307257 524.529402 0 ] (jdb/:__span-37-12) [ 1733 0 R /XYZ 60.307257 511.129050 0 ] (jdb/:__span-37-13) [ 1733 0 R /XYZ 60.307257 497.728698 0 ] (jdb/:__span-37-14) [ 1733 0 R /XYZ 60.307257 484.328346 0 ] (jdb/:__span-37-15) [ 1733 0 R /XYZ 60.307257 470.927994 0 ] (jdb/:__span-37-16) [ 1733 0 R /XYZ 60.307257 457.527642 0 ] (jdb/:__span-37-17) [ 1733 0 R /XYZ 60.307257 444.127290 0 ] (jdb/:__span-37-18) [ 1733 0 R /XYZ 60.307257 430.726938 0 ] (jdb/:__span-37-19) [ 1733 0 R /XYZ 60.307257 417.326586 0 ] (jdb/:__span-37-2) [ 1733 0 R /XYZ 60.307257 645.132570 0 ] (jdb/:__span-37-20) [ 1733 0 R /XYZ 60.307257 403.926234 0 ] (jdb/:__span-37-21) [ 1733 0 R /XYZ 60.307257 390.525882 0 ] (jdb/:__span-37-22) [ 1733 0 R /XYZ 60.307257 377.125530 0 ] (jdb/:__span-37-23) [ 1733 0 R /XYZ 60.307257 363.725178 0 ] (jdb/:__span-37-24) [ 1733 0 R /XYZ 60.307257 350.324826 0 ] (jdb/:__span-37-25) [ 1733 0 R /XYZ 60.307257 336.924474 0 ] (jdb/:__span-37-26) [ 1733 0 R /XYZ 60.307257 323.524122 0 ] (jdb/:__span-37-27) [ 1733 0 R /XYZ 60.307257 310.123770 0 ] (jdb/:__span-37-28) [ 1733 0 R /XYZ 60.307257 296.723418 0 ] (jdb/:__span-37-29) [ 1733 0 R /XYZ 60.307257 283.323066 0 ] (jdb/:__span-37-3) [ 1733 0 R /XYZ 60.307257 631.732218 0 ] (jdb/:__span-37-30) [ 1733 0 R /XYZ 60.307257 269.922714 0 ] (jdb/:__span-37-31) [ 1733 0 R /XYZ 60.307257 256.522362 0 ] (jdb/:__span-37-32) [ 1733 0 R /XYZ 60.307257 243.122010 0 ] (jdb/:__span-37-33) [ 1733 0 R /XYZ 60.307257 229.721658 0 ] (jdb/:__span-37-34) [ 1733 0 R /XYZ 60.307257 216.321306 0 ] (jdb/:__span-37-35) [ 1733 0 R /XYZ 60.307257 202.920954 0 ] (jdb/:__span-37-36) [ 1733 0 R /XYZ 60.307257 189.520602 0 ] (jdb/:__span-37-37) [ 1733 0 R /XYZ 60.307257 176.120250 0 ] (jdb/:__span-37-38) [ 1733 0 R /XYZ 60.307257 162.719898 0 ] (jdb/:__span-37-39) [ 1733 0 R /XYZ 60.307257 149.319546 0 ] (jdb/:__span-37-4) [ 1733 0 R /XYZ 60.307257 618.331866 0 ] (jdb/:__span-37-40) [ 1733 0 R /XYZ 60.307257 135.919194 0 ] (jdb/:__span-37-41) [ 1733 0 R /XYZ 60.307257 122.518842 0 ] (jdb/:__span-37-42) [ 1733 0 R /XYZ 60.307257 109.118490 0 ] (jdb/:__span-37-43) [ 1733 0 R /XYZ 60.307257 95.718138 0 ] (jdb/:__span-37-44) [ 1735 0 R /XYZ 60.307257 771.023622 0 ] (jdb/:__span-37-45) [ 1735 0 R /XYZ 60.307257 757.623270 0 ] (jdb/:__span-37-46) [ 1735 0 R /XYZ 60.307257 744.222918 0 ] (jdb/:__span-37-47) [ 1735 0 R /XYZ 60.307257 730.822566 0 ] (jdb/:__span-37-48) [ 1735 0 R /XYZ 60.307257 717.422214 0 ] (jdb/:__span-37-49) [ 1735 0 R /XYZ 60.307257 704.021862 0 ] (jdb/:__span-37-5) [ 1733 0 R /XYZ 60.307257 604.931514 0 ] (jdb/:__span-37-50) [ 1735 0 R /XYZ 60.307257 690.621510 0 ] (jdb/:__span-37-51) [ 1735 0 R /XYZ 60.307257 677.221158 0 ] (jdb/:__span-37-52) [ 1735 0 R /XYZ 60.307257 663.820806 0 ] (jdb/:__span-37-53) [ 1735 0 R /XYZ 60.307257 650.420454 0 ] (jdb/:__span-37-54) [ 1735 0 R /XYZ 60.307257 637.020102 0 ] (jdb/:__span-37-55) [ 1735 0 R /XYZ 60.307257 623.619750 0 ] (jdb/:__span-37-56) [ 1735 0 R /XYZ 60.307257 610.219398 0 ] (jdb/:__span-37-57) [ 1735 0 R /XYZ 60.307257 596.819046 0 ] (jdb/:__span-37-58) [ 1735 0 R /XYZ 60.307257 583.418694 0 ] (jdb/:__span-37-59) [ 1735 0 R /XYZ 60.307257 570.018342 0 ] (jdb/:__span-37-6) [ 1733 0 R /XYZ 60.307257 591.531162 0 ] (jdb/:__span-37-60) [ 1735 0 R /XYZ 60.307257 556.617990 0 ] (jdb/:__span-37-61) [ 1735 0 R /XYZ 60.307257 543.217638 0 ] (jdb/:__span-37-62) [ 1735 0 R /XYZ 60.307257 529.817286 0 ] (jdb/:__span-37-63) [ 1735 0 R /XYZ 60.307257 516.416934 0 ] (jdb/:__span-37-64) [ 1735 0 R /XYZ 60.307257 503.016582 0 ] (jdb/:__span-37-65) [ 1735 0 R /XYZ 60.307257 489.616230 0 ] (jdb/:__span-37-66) [ 1735 0 R /XYZ 60.307257 476.215878 0 ] (jdb/:__span-37-67) [ 1735 0 R /XYZ 60.307257 462.815526 0 ] (jdb/:__span-37-68) [ 1735 0 R /XYZ 60.307257 449.415174 0 ] (jdb/:__span-37-69) [ 1735 0 R /XYZ 60.307257 436.014822 0 ] (jdb/:__span-37-7) [ 1733 0 R /XYZ 60.307257 578.130810 0 ] (jdb/:__span-37-70) [ 1735 0 R /XYZ 60.307257 422.614470 0 ] (jdb/:__span-37-71) [ 1735 0 R /XYZ 60.307257 409.214118 0 ] (jdb/:__span-37-72) [ 1735 0 R /XYZ 60.307257 395.813766 0 ] (jdb/:__span-37-73) [ 1735 0 R /XYZ 60.307257 382.413414 0 ] (jdb/:__span-37-74) [ 1735 0 R /XYZ 60.307257 369.013062 0 ] (jdb/:__span-37-75) [ 1735 0 R /XYZ 60.307257 355.612710 0 ] (jdb/:__span-37-76) [ 1735 0 R /XYZ 60.307257 342.212358 0 ] (jdb/:__span-37-77) [ 1735 0 R /XYZ 60.307257 328.812006 0 ] (jdb/:__span-37-78) [ 1735 0 R /XYZ 60.307257 315.411654 0 ] (jdb/:__span-37-79) [ 1735 0 R /XYZ 60.307257 302.011302 0 ] (jdb/:__span-37-8) [ 1733 0 R /XYZ 60.307257 564.730458 0 ] (jdb/:__span-37-80) [ 1735 0 R /XYZ 60.307257 288.610950 0 ] (jdb/:__span-37-81) [ 1735 0 R /XYZ 60.307257 275.210598 0 ] (jdb/:__span-37-9) [ 1733 0 R /XYZ 60.307257 551.330106 0 ] (jdb/:__span-38-1) [ 1737 0 R /XYZ 60.307257 174.624222 0 ] (jdb/:__span-38-10) [ 1739 0 R /XYZ 60.307257 717.422214 0 ] (jdb/:__span-38-11) [ 1739 0 R /XYZ 60.307257 704.021862 0 ] (jdb/:__span-38-12) [ 1739 0 R /XYZ 60.307257 690.621510 0 ] (jdb/:__span-38-13) [ 1739 0 R /XYZ 60.307257 677.221158 0 ] (jdb/:__span-38-14) [ 1739 0 R /XYZ 60.307257 650.420454 0 ] (jdb/:__span-38-15) [ 1739 0 R /XYZ 60.307257 637.020102 0 ] (jdb/:__span-38-16) [ 1739 0 R /XYZ 60.307257 623.619750 0 ] (jdb/:__span-38-17) [ 1739 0 R /XYZ 60.307257 596.819046 0 ] (jdb/:__span-38-18) [ 1739 0 R /XYZ 60.307257 583.418694 0 ] (jdb/:__span-38-19) [ 1739 0 R /XYZ 60.307257 570.018342 0 ] (jdb/:__span-38-2) [ 1737 0 R /XYZ 60.307257 161.223870 0 ] (jdb/:__span-38-20) [ 1739 0 R /XYZ 60.307257 543.217638 0 ] (jdb/:__span-38-21) [ 1739 0 R /XYZ 60.307257 529.817286 0 ] (jdb/:__span-38-22) [ 1739 0 R /XYZ 60.307257 516.416934 0 ] (jdb/:__span-38-23) [ 1739 0 R /XYZ 60.307257 503.016582 0 ] (jdb/:__span-38-24) [ 1739 0 R /XYZ 60.307257 489.616230 0 ] (jdb/:__span-38-25) [ 1739 0 R /XYZ 60.307257 476.215878 0 ] (jdb/:__span-38-26) [ 1739 0 R /XYZ 60.307257 449.415174 0 ] (jdb/:__span-38-27) [ 1739 0 R /XYZ 60.307257 436.014822 0 ] (jdb/:__span-38-28) [ 1739 0 R /XYZ 60.307257 422.614470 0 ] (jdb/:__span-38-29) [ 1739 0 R /XYZ 60.307257 395.813766 0 ] (jdb/:__span-38-3) [ 1737 0 R /XYZ 60.307257 147.823518 0 ] (jdb/:__span-38-30) [ 1739 0 R /XYZ 60.307257 382.413414 0 ] (jdb/:__span-38-31) [ 1739 0 R /XYZ 60.307257 369.013062 0 ] (jdb/:__span-38-32) [ 1739 0 R /XYZ 60.307257 342.212358 0 ] (jdb/:__span-38-33) [ 1739 0 R /XYZ 60.307257 328.812006 0 ] (jdb/:__span-38-34) [ 1739 0 R /XYZ 60.307257 315.411654 0 ] (jdb/:__span-38-35) [ 1739 0 R /XYZ 60.307257 302.011302 0 ] (jdb/:__span-38-36) [ 1739 0 R /XYZ 60.307257 275.210598 0 ] (jdb/:__span-38-37) [ 1739 0 R /XYZ 60.307257 261.810246 0 ] (jdb/:__span-38-38) [ 1739 0 R /XYZ 60.307257 248.409894 0 ] (jdb/:__span-38-4) [ 1737 0 R /XYZ 60.307257 134.423166 0 ] (jdb/:__span-38-5) [ 1737 0 R /XYZ 60.307257 121.022814 0 ] (jdb/:__span-38-6) [ 1737 0 R /XYZ 60.307257 94.222110 0 ] (jdb/:__span-38-7) [ 1739 0 R /XYZ 60.307257 771.023622 0 ] (jdb/:__span-38-8) [ 1739 0 R /XYZ 60.307257 744.222918 0 ] (jdb/:__span-38-9) [ 1739 0 R /XYZ 60.307257 730.822566 0 ] (jdb/:__span-39-1) [ 1874 0 R /XYZ 60.307257 504.941022 0 ] (jdb/:__span-39-10) [ 1874 0 R /XYZ 60.307257 344.136798 0 ] (jdb/:__span-39-11) [ 1874 0 R /XYZ 60.307257 330.736446 0 ] (jdb/:__span-39-12) [ 1874 0 R /XYZ 60.307257 317.336094 0 ] (jdb/:__span-39-13) [ 1874 0 R /XYZ 60.307257 303.935742 0 ] (jdb/:__span-39-14) [ 1874 0 R /XYZ 60.307257 290.535390 0 ] (jdb/:__span-39-15) [ 1874 0 R /XYZ 60.307257 277.135038 0 ] (jdb/:__span-39-16) [ 1874 0 R /XYZ 60.307257 263.734686 0 ] (jdb/:__span-39-17) [ 1874 0 R /XYZ 60.307257 250.334334 0 ] (jdb/:__span-39-18) [ 1874 0 R /XYZ 60.307257 236.933982 0 ] (jdb/:__span-39-19) [ 1874 0 R /XYZ 60.307257 223.533630 0 ] (jdb/:__span-39-2) [ 1874 0 R /XYZ 60.307257 491.540670 0 ] (jdb/:__span-39-20) [ 1874 0 R /XYZ 60.307257 210.133278 0 ] (jdb/:__span-39-21) [ 1874 0 R /XYZ 60.307257 196.732926 0 ] (jdb/:__span-39-22) [ 1874 0 R /XYZ 60.307257 183.332574 0 ] (jdb/:__span-39-23) [ 1874 0 R /XYZ 60.307257 169.932222 0 ] (jdb/:__span-39-24) [ 1874 0 R /XYZ 60.307257 156.531870 0 ] (jdb/:__span-39-25) [ 1874 0 R /XYZ 60.307257 143.131518 0 ] (jdb/:__span-39-26) [ 1874 0 R /XYZ 60.307257 129.731166 0 ] (jdb/:__span-39-27) [ 1874 0 R /XYZ 60.307257 116.330814 0 ] (jdb/:__span-39-28) [ 1874 0 R /XYZ 60.307257 102.930462 0 ] (jdb/:__span-39-29) [ 1874 0 R /XYZ 60.307257 89.530110 0 ] (jdb/:__span-39-3) [ 1874 0 R /XYZ 60.307257 478.140318 0 ] (jdb/:__span-39-30) [ 1876 0 R /XYZ 60.307257 771.023622 0 ] (jdb/:__span-39-31) [ 1876 0 R /XYZ 60.307257 757.623270 0 ] (jdb/:__span-39-32) [ 1876 0 R /XYZ 60.307257 744.222918 0 ] (jdb/:__span-39-33) [ 1876 0 R /XYZ 60.307257 730.822566 0 ] (jdb/:__span-39-4) [ 1874 0 R /XYZ 60.307257 451.339614 0 ] (jdb/:__span-39-5) [ 1874 0 R /XYZ 60.307257 424.538910 0 ] (jdb/:__span-39-6) [ 1874 0 R /XYZ 60.307257 397.738206 0 ] (jdb/:__span-39-7) [ 1874 0 R /XYZ 60.307257 384.337854 0 ] (jdb/:__span-39-8) [ 1874 0 R /XYZ 60.307257 370.937502 0 ] (jdb/:__span-39-9) [ 1874 0 R /XYZ 60.307257 357.537150 0 ] (jdb/:__span-4-1) [ 1309 0 R /XYZ 60.307257 763.633722 0 ] (jdb/:__span-4-10) [ 1309 0 R /XYZ 60.307257 643.030554 0 ] (jdb/:__span-4-11) [ 1309 0 R /XYZ 60.307257 629.630202 0 ] (jdb/:__span-4-12) [ 1309 0 R /XYZ 60.307257 602.829498 0 ] (jdb/:__span-4-13) [ 1309 0 R /XYZ 60.307257 589.429146 0 ] (jdb/:__span-4-14) [ 1309 0 R /XYZ 60.307257 576.028794 0 ] (jdb/:__span-4-15) [ 1309 0 R /XYZ 60.307257 562.628442 0 ] (jdb/:__span-4-16) [ 1309 0 R /XYZ 60.307257 549.228090 0 ] (jdb/:__span-4-17) [ 1309 0 R /XYZ 60.307257 535.827738 0 ] (jdb/:__span-4-18) [ 1309 0 R /XYZ 60.307257 522.427386 0 ] (jdb/:__span-4-19) [ 1309 0 R /XYZ 60.307257 509.027034 0 ] (jdb/:__span-4-2) [ 1309 0 R /XYZ 60.307257 750.233370 0 ] (jdb/:__span-4-20) [ 1309 0 R /XYZ 60.307257 495.626682 0 ] (jdb/:__span-4-21) [ 1309 0 R /XYZ 60.307257 482.226330 0 ] (jdb/:__span-4-22) [ 1309 0 R /XYZ 60.307257 468.825978 0 ] (jdb/:__span-4-23) [ 1309 0 R /XYZ 60.307257 455.425626 0 ] (jdb/:__span-4-3) [ 1309 0 R /XYZ 60.307257 736.833018 0 ] (jdb/:__span-4-4) [ 1309 0 R /XYZ 60.307257 723.432666 0 ] (jdb/:__span-4-5) [ 1309 0 R /XYZ 60.307257 710.032314 0 ] (jdb/:__span-4-6) [ 1309 0 R /XYZ 60.307257 696.631962 0 ] (jdb/:__span-4-7) [ 1309 0 R /XYZ 60.307257 683.231610 0 ] (jdb/:__span-4-8) [ 1309 0 R /XYZ 60.307257 669.831258 0 ] (jdb/:__span-4-9) [ 1309 0 R /XYZ 60.307257 656.430906 0 ] (jdb/:__span-40-1) [ 1876 0 R /XYZ 60.307257 665.106414 0 ] (jdb/:__span-40-10) [ 1876 0 R /XYZ 60.307257 504.302190 0 ] (jdb/:__span-40-11) [ 1876 0 R /XYZ 60.307257 490.901838 0 ] (jdb/:__span-40-12) [ 1876 0 R /XYZ 60.307257 477.501486 0 ] (jdb/:__span-40-13) [ 1876 0 R /XYZ 60.307257 464.101134 0 ] (jdb/:__span-40-14) [ 1876 0 R /XYZ 60.307257 450.700782 0 ] (jdb/:__span-40-15) [ 1876 0 R /XYZ 60.307257 437.300430 0 ] (jdb/:__span-40-16) [ 1876 0 R /XYZ 60.307257 423.900078 0 ] (jdb/:__span-40-17) [ 1876 0 R /XYZ 60.307257 410.499726 0 ] (jdb/:__span-40-18) [ 1876 0 R /XYZ 60.307257 397.099374 0 ] (jdb/:__span-40-19) [ 1876 0 R /XYZ 60.307257 383.699022 0 ] (jdb/:__span-40-2) [ 1876 0 R /XYZ 60.307257 651.706062 0 ] (jdb/:__span-40-20) [ 1876 0 R /XYZ 60.307257 370.298670 0 ] (jdb/:__span-40-21) [ 1876 0 R /XYZ 60.307257 356.898318 0 ] (jdb/:__span-40-22) [ 1876 0 R /XYZ 60.307257 343.497966 0 ] (jdb/:__span-40-23) [ 1876 0 R /XYZ 60.307257 330.097614 0 ] (jdb/:__span-40-24) [ 1876 0 R /XYZ 60.307257 316.697262 0 ] (jdb/:__span-40-25) [ 1876 0 R /XYZ 60.307257 303.296910 0 ] (jdb/:__span-40-26) [ 1876 0 R /XYZ 60.307257 289.896558 0 ] (jdb/:__span-40-27) [ 1876 0 R /XYZ 60.307257 263.095854 0 ] (jdb/:__span-40-28) [ 1876 0 R /XYZ 60.307257 249.695502 0 ] (jdb/:__span-40-29) [ 1876 0 R /XYZ 60.307257 236.295150 0 ] (jdb/:__span-40-3) [ 1876 0 R /XYZ 60.307257 638.305710 0 ] (jdb/:__span-40-30) [ 1876 0 R /XYZ 60.307257 222.894798 0 ] (jdb/:__span-40-31) [ 1876 0 R /XYZ 60.307257 209.494446 0 ] (jdb/:__span-40-32) [ 1876 0 R /XYZ 60.307257 196.094094 0 ] (jdb/:__span-40-4) [ 1876 0 R /XYZ 60.307257 624.905358 0 ] (jdb/:__span-40-5) [ 1876 0 R /XYZ 60.307257 611.505006 0 ] (jdb/:__span-40-6) [ 1876 0 R /XYZ 60.307257 571.303950 0 ] (jdb/:__span-40-7) [ 1876 0 R /XYZ 60.307257 557.903598 0 ] (jdb/:__span-40-8) [ 1876 0 R /XYZ 60.307257 531.102894 0 ] (jdb/:__span-40-9) [ 1876 0 R /XYZ 60.307257 517.702542 0 ] (jdb/:__span-5-1) [ 1361 0 R /XYZ 60.307257 763.633722 0 ] (jdb/:__span-5-10) [ 1361 0 R /XYZ 60.307257 643.030554 0 ] (jdb/:__span-5-11) [ 1361 0 R /XYZ 60.307257 629.630202 0 ] (jdb/:__span-5-12) [ 1361 0 R /XYZ 60.307257 616.229850 0 ] (jdb/:__span-5-13) [ 1361 0 R /XYZ 60.307257 602.829498 0 ] (jdb/:__span-5-14) [ 1361 0 R /XYZ 60.307257 589.429146 0 ] (jdb/:__span-5-15) [ 1361 0 R /XYZ 60.307257 576.028794 0 ] (jdb/:__span-5-16) [ 1361 0 R /XYZ 60.307257 562.628442 0 ] (jdb/:__span-5-17) [ 1361 0 R /XYZ 60.307257 535.827738 0 ] (jdb/:__span-5-18) [ 1361 0 R /XYZ 60.307257 522.427386 0 ] (jdb/:__span-5-19) [ 1361 0 R /XYZ 60.307257 509.027034 0 ] (jdb/:__span-5-2) [ 1361 0 R /XYZ 60.307257 750.233370 0 ] (jdb/:__span-5-20) [ 1361 0 R /XYZ 60.307257 495.626682 0 ] (jdb/:__span-5-21) [ 1361 0 R /XYZ 60.307257 482.226330 0 ] (jdb/:__span-5-22) [ 1361 0 R /XYZ 60.307257 468.825978 0 ] (jdb/:__span-5-23) [ 1361 0 R /XYZ 60.307257 455.425626 0 ] (jdb/:__span-5-24) [ 1361 0 R /XYZ 60.307257 442.025274 0 ] (jdb/:__span-5-25) [ 1361 0 R /XYZ 60.307257 428.624922 0 ] (jdb/:__span-5-26) [ 1361 0 R /XYZ 60.307257 415.224570 0 ] (jdb/:__span-5-27) [ 1361 0 R /XYZ 60.307257 401.824218 0 ] (jdb/:__span-5-28) [ 1361 0 R /XYZ 60.307257 388.423866 0 ] (jdb/:__span-5-29) [ 1361 0 R /XYZ 60.307257 375.023514 0 ] (jdb/:__span-5-3) [ 1361 0 R /XYZ 60.307257 736.833018 0 ] (jdb/:__span-5-30) [ 1361 0 R /XYZ 60.307257 361.623162 0 ] (jdb/:__span-5-31) [ 1361 0 R /XYZ 60.307257 348.222810 0 ] (jdb/:__span-5-32) [ 1361 0 R /XYZ 60.307257 334.822458 0 ] (jdb/:__span-5-33) [ 1361 0 R /XYZ 60.307257 321.422106 0 ] (jdb/:__span-5-34) [ 1361 0 R /XYZ 60.307257 308.021754 0 ] (jdb/:__span-5-35) [ 1361 0 R /XYZ 60.307257 294.621402 0 ] (jdb/:__span-5-36) [ 1361 0 R /XYZ 60.307257 281.221050 0 ] (jdb/:__span-5-37) [ 1361 0 R /XYZ 60.307257 267.820698 0 ] (jdb/:__span-5-38) [ 1361 0 R /XYZ 60.307257 254.420346 0 ] (jdb/:__span-5-39) [ 1361 0 R /XYZ 60.307257 241.019994 0 ] (jdb/:__span-5-4) [ 1361 0 R /XYZ 60.307257 723.432666 0 ] (jdb/:__span-5-40) [ 1361 0 R /XYZ 60.307257 227.619642 0 ] (jdb/:__span-5-41) [ 1361 0 R /XYZ 60.307257 214.219290 0 ] (jdb/:__span-5-42) [ 1361 0 R /XYZ 60.307257 200.818938 0 ] (jdb/:__span-5-43) [ 1361 0 R /XYZ 60.307257 187.418586 0 ] (jdb/:__span-5-44) [ 1361 0 R /XYZ 60.307257 174.018234 0 ] (jdb/:__span-5-45) [ 1361 0 R /XYZ 60.307257 160.617882 0 ] (jdb/:__span-5-46) [ 1361 0 R /XYZ 60.307257 147.217530 0 ] (jdb/:__span-5-47) [ 1361 0 R /XYZ 60.307257 133.817178 0 ] (jdb/:__span-5-48) [ 1361 0 R /XYZ 60.307257 120.416826 0 ] (jdb/:__span-5-49) [ 1361 0 R /XYZ 60.307257 107.016474 0 ] (jdb/:__span-5-5) [ 1361 0 R /XYZ 60.307257 710.032314 0 ] (jdb/:__span-5-50) [ 1363 0 R /XYZ 60.307257 757.623270 0 ] (jdb/:__span-5-51) [ 1363 0 R /XYZ 60.307257 744.222918 0 ] (jdb/:__span-5-52) [ 1363 0 R /XYZ 60.307257 730.822566 0 ] (jdb/:__span-5-53) [ 1363 0 R /XYZ 60.307257 717.422214 0 ] (jdb/:__span-5-54) [ 1363 0 R /XYZ 60.307257 704.021862 0 ] (jdb/:__span-5-55) [ 1363 0 R /XYZ 60.307257 690.621510 0 ] (jdb/:__span-5-56) [ 1363 0 R /XYZ 60.307257 677.221158 0 ] (jdb/:__span-5-57) [ 1363 0 R /XYZ 60.307257 663.820806 0 ] (jdb/:__span-5-58) [ 1363 0 R /XYZ 60.307257 650.420454 0 ] (jdb/:__span-5-6) [ 1361 0 R /XYZ 60.307257 696.631962 0 ] (jdb/:__span-5-7) [ 1361 0 R /XYZ 60.307257 683.231610 0 ] (jdb/:__span-5-8) [ 1361 0 R /XYZ 60.307257 669.831258 0 ] (jdb/:__span-5-9) [ 1361 0 R /XYZ 60.307257 656.430906 0 ] (jdb/:__span-6-1) [ 1363 0 R /XYZ 60.307257 466.465902 0 ] (jdb/:__span-6-10) [ 1363 0 R /XYZ 60.307257 345.862734 0 ] (jdb/:__span-6-11) [ 1363 0 R /XYZ 60.307257 332.462382 0 ] (jdb/:__span-6-12) [ 1363 0 R /XYZ 60.307257 319.062030 0 ] (jdb/:__span-6-13) [ 1363 0 R /XYZ 60.307257 305.661678 0 ] (jdb/:__span-6-14) [ 1363 0 R /XYZ 60.307257 292.261326 0 ] (jdb/:__span-6-15) [ 1363 0 R /XYZ 60.307257 278.860974 0 ] (jdb/:__span-6-16) [ 1363 0 R /XYZ 60.307257 265.460622 0 ] (jdb/:__span-6-17) [ 1363 0 R /XYZ 60.307257 252.060270 0 ] (jdb/:__span-6-18) [ 1363 0 R /XYZ 60.307257 238.659918 0 ] (jdb/:__span-6-19) [ 1363 0 R /XYZ 60.307257 225.259566 0 ] (jdb/:__span-6-2) [ 1363 0 R /XYZ 60.307257 453.065550 0 ] (jdb/:__span-6-20) [ 1363 0 R /XYZ 60.307257 211.859214 0 ] (jdb/:__span-6-21) [ 1363 0 R /XYZ 60.307257 198.458862 0 ] (jdb/:__span-6-22) [ 1363 0 R /XYZ 60.307257 185.058510 0 ] (jdb/:__span-6-23) [ 1363 0 R /XYZ 60.307257 171.658158 0 ] (jdb/:__span-6-24) [ 1363 0 R /XYZ 60.307257 144.857454 0 ] (jdb/:__span-6-25) [ 1363 0 R /XYZ 60.307257 131.457102 0 ] (jdb/:__span-6-26) [ 1363 0 R /XYZ 60.307257 118.056750 0 ] (jdb/:__span-6-27) [ 1363 0 R /XYZ 60.307257 104.656398 0 ] (jdb/:__span-6-28) [ 1363 0 R /XYZ 60.307257 91.256046 0 ] (jdb/:__span-6-29) [ 1365 0 R /XYZ 60.307257 771.023622 0 ] (jdb/:__span-6-3) [ 1363 0 R /XYZ 60.307257 439.665198 0 ] (jdb/:__span-6-30) [ 1365 0 R /XYZ 60.307257 757.623270 0 ] (jdb/:__span-6-31) [ 1365 0 R /XYZ 60.307257 744.222918 0 ] (jdb/:__span-6-32) [ 1365 0 R /XYZ 60.307257 730.822566 0 ] (jdb/:__span-6-33) [ 1365 0 R /XYZ 60.307257 717.422214 0 ] (jdb/:__span-6-34) [ 1365 0 R /XYZ 60.307257 704.021862 0 ] (jdb/:__span-6-35) [ 1365 0 R /XYZ 60.307257 677.221158 0 ] (jdb/:__span-6-36) [ 1365 0 R /XYZ 60.307257 663.820806 0 ] (jdb/:__span-6-37) [ 1365 0 R /XYZ 60.307257 650.420454 0 ] (jdb/:__span-6-4) [ 1363 0 R /XYZ 60.307257 426.264846 0 ] (jdb/:__span-6-5) [ 1363 0 R /XYZ 60.307257 412.864494 0 ] (jdb/:__span-6-6) [ 1363 0 R /XYZ 60.307257 399.464142 0 ] (jdb/:__span-6-7) [ 1363 0 R /XYZ 60.307257 386.063790 0 ] (jdb/:__span-6-8) [ 1363 0 R /XYZ 60.307257 372.663438 0 ] (jdb/:__span-6-9) [ 1363 0 R /XYZ 60.307257 359.263086 0 ] (jdb/:__span-7-1) [ 1387 0 R /XYZ 60.307257 374.523743 0 ] (jdb/:__span-7-10) [ 1387 0 R /XYZ 60.307257 240.520223 0 ] (jdb/:__span-7-11) [ 1387 0 R /XYZ 60.307257 227.119871 0 ] (jdb/:__span-7-12) [ 1387 0 R /XYZ 60.307257 213.719519 0 ] (jdb/:__span-7-13) [ 1387 0 R /XYZ 60.307257 200.319167 0 ] (jdb/:__span-7-14) [ 1387 0 R /XYZ 60.307257 186.918815 0 ] (jdb/:__span-7-15) [ 1387 0 R /XYZ 60.307257 173.518463 0 ] (jdb/:__span-7-16) [ 1387 0 R /XYZ 60.307257 160.118111 0 ] (jdb/:__span-7-17) [ 1387 0 R /XYZ 60.307257 146.717759 0 ] (jdb/:__span-7-18) [ 1387 0 R /XYZ 60.307257 119.917055 0 ] (jdb/:__span-7-19) [ 1387 0 R /XYZ 60.307257 106.516703 0 ] (jdb/:__span-7-2) [ 1387 0 R /XYZ 60.307257 361.123391 0 ] (jdb/:__span-7-20) [ 1387 0 R /XYZ 60.307257 93.116351 0 ] (jdb/:__span-7-21) [ 1394 0 R /XYZ 60.307257 771.023622 0 ] (jdb/:__span-7-22) [ 1394 0 R /XYZ 60.307257 757.623270 0 ] (jdb/:__span-7-23) [ 1394 0 R /XYZ 60.307257 730.822566 0 ] (jdb/:__span-7-24) [ 1394 0 R /XYZ 60.307257 717.422214 0 ] (jdb/:__span-7-25) [ 1394 0 R /XYZ 60.307257 704.021862 0 ] (jdb/:__span-7-26) [ 1394 0 R /XYZ 60.307257 677.221158 0 ] (jdb/:__span-7-27) [ 1394 0 R /XYZ 60.307257 663.820806 0 ] (jdb/:__span-7-28) [ 1394 0 R /XYZ 60.307257 637.020102 0 ] (jdb/:__span-7-29) [ 1394 0 R /XYZ 60.307257 610.219398 0 ] (jdb/:__span-7-3) [ 1387 0 R /XYZ 60.307257 347.723039 0 ] (jdb/:__span-7-30) [ 1394 0 R /XYZ 60.307257 596.819046 0 ] (jdb/:__span-7-31) [ 1394 0 R /XYZ 60.307257 583.418694 0 ] (jdb/:__span-7-32) [ 1394 0 R /XYZ 60.307257 570.018342 0 ] (jdb/:__span-7-33) [ 1394 0 R /XYZ 60.307257 543.217638 0 ] (jdb/:__span-7-34) [ 1394 0 R /XYZ 60.307257 529.817286 0 ] (jdb/:__span-7-35) [ 1394 0 R /XYZ 60.307257 516.416934 0 ] (jdb/:__span-7-36) [ 1394 0 R /XYZ 60.307257 503.016582 0 ] (jdb/:__span-7-37) [ 1394 0 R /XYZ 60.307257 489.616230 0 ] (jdb/:__span-7-38) [ 1394 0 R /XYZ 60.307257 476.215878 0 ] (jdb/:__span-7-39) [ 1394 0 R /XYZ 60.307257 462.815526 0 ] (jdb/:__span-7-4) [ 1387 0 R /XYZ 60.307257 334.322687 0 ] (jdb/:__span-7-40) [ 1394 0 R /XYZ 60.307257 449.415174 0 ] (jdb/:__span-7-41) [ 1394 0 R /XYZ 60.307257 422.614470 0 ] (jdb/:__span-7-42) [ 1394 0 R /XYZ 60.307257 409.214118 0 ] (jdb/:__span-7-43) [ 1394 0 R /XYZ 60.307257 395.813766 0 ] (jdb/:__span-7-44) [ 1394 0 R /XYZ 60.307257 382.413414 0 ] (jdb/:__span-7-45) [ 1394 0 R /XYZ 60.307257 369.013062 0 ] (jdb/:__span-7-46) [ 1394 0 R /XYZ 60.307257 355.612710 0 ] (jdb/:__span-7-47) [ 1394 0 R /XYZ 60.307257 342.212358 0 ] (jdb/:__span-7-48) [ 1394 0 R /XYZ 60.307257 328.812006 0 ] (jdb/:__span-7-49) [ 1394 0 R /XYZ 60.307257 315.411654 0 ] (jdb/:__span-7-5) [ 1387 0 R /XYZ 60.307257 320.922335 0 ] (jdb/:__span-7-50) [ 1394 0 R /XYZ 60.307257 288.610950 0 ] (jdb/:__span-7-51) [ 1394 0 R /XYZ 60.307257 261.810246 0 ] (jdb/:__span-7-52) [ 1394 0 R /XYZ 60.307257 248.409894 0 ] (jdb/:__span-7-53) [ 1394 0 R /XYZ 60.307257 235.009542 0 ] (jdb/:__span-7-54) [ 1394 0 R /XYZ 60.307257 221.609190 0 ] (jdb/:__span-7-55) [ 1394 0 R /XYZ 60.307257 208.208838 0 ] (jdb/:__span-7-6) [ 1387 0 R /XYZ 60.307257 307.521983 0 ] (jdb/:__span-7-7) [ 1387 0 R /XYZ 60.307257 280.721279 0 ] (jdb/:__span-7-8) [ 1387 0 R /XYZ 60.307257 267.320927 0 ] (jdb/:__span-7-9) [ 1387 0 R /XYZ 60.307257 253.920575 0 ] (jdb/:__span-8-1) [ 1420 0 R /XYZ 60.307257 178.281829 0 ] (jdb/:__span-8-10) [ 1425 0 R /XYZ 60.307257 757.623270 0 ] (jdb/:__span-8-11) [ 1425 0 R /XYZ 60.307257 744.222918 0 ] (jdb/:__span-8-12) [ 1425 0 R /XYZ 60.307257 730.822566 0 ] (jdb/:__span-8-13) [ 1425 0 R /XYZ 60.307257 717.422214 0 ] (jdb/:__span-8-14) [ 1425 0 R /XYZ 60.307257 704.021862 0 ] (jdb/:__span-8-15) [ 1425 0 R /XYZ 60.307257 690.621510 0 ] (jdb/:__span-8-16) [ 1425 0 R /XYZ 60.307257 677.221158 0 ] (jdb/:__span-8-17) [ 1425 0 R /XYZ 60.307257 663.820806 0 ] (jdb/:__span-8-18) [ 1425 0 R /XYZ 60.307257 650.420454 0 ] (jdb/:__span-8-19) [ 1425 0 R /XYZ 60.307257 637.020102 0 ] (jdb/:__span-8-2) [ 1420 0 R /XYZ 60.307257 164.881477 0 ] (jdb/:__span-8-20) [ 1425 0 R /XYZ 60.307257 623.619750 0 ] (jdb/:__span-8-21) [ 1425 0 R /XYZ 60.307257 610.219398 0 ] (jdb/:__span-8-22) [ 1425 0 R /XYZ 60.307257 596.819046 0 ] (jdb/:__span-8-23) [ 1425 0 R /XYZ 60.307257 583.418694 0 ] (jdb/:__span-8-24) [ 1425 0 R /XYZ 60.307257 570.018342 0 ] (jdb/:__span-8-25) [ 1425 0 R /XYZ 60.307257 556.617990 0 ] (jdb/:__span-8-26) [ 1425 0 R /XYZ 60.307257 543.217638 0 ] (jdb/:__span-8-27) [ 1425 0 R /XYZ 60.307257 529.817286 0 ] (jdb/:__span-8-28) [ 1425 0 R /XYZ 60.307257 516.416934 0 ] (jdb/:__span-8-29) [ 1425 0 R /XYZ 60.307257 503.016582 0 ] (jdb/:__span-8-3) [ 1420 0 R /XYZ 60.307257 151.481125 0 ] (jdb/:__span-8-4) [ 1420 0 R /XYZ 60.307257 138.080773 0 ] (jdb/:__span-8-5) [ 1420 0 R /XYZ 60.307257 124.680421 0 ] (jdb/:__span-8-6) [ 1420 0 R /XYZ 60.307257 111.280069 0 ] (jdb/:__span-8-7) [ 1420 0 R /XYZ 60.307257 97.879717 0 ] (jdb/:__span-8-8) [ 1420 0 R /XYZ 60.307257 84.479365 0 ] (jdb/:__span-8-9) [ 1425 0 R /XYZ 60.307257 771.023622 0 ] (jdb/:__span-9-1) [ 1432 0 R /XYZ 60.307257 763.633722 0 ] (jdb/:__span-9-10) [ 1432 0 R /XYZ 60.307257 643.030554 0 ] (jdb/:__span-9-11) [ 1432 0 R /XYZ 60.307257 629.630202 0 ] (jdb/:__span-9-12) [ 1432 0 R /XYZ 60.307257 616.229850 0 ] (jdb/:__span-9-13) [ 1432 0 R /XYZ 60.307257 602.829498 0 ] (jdb/:__span-9-14) [ 1432 0 R /XYZ 60.307257 589.429146 0 ] (jdb/:__span-9-15) [ 1432 0 R /XYZ 60.307257 576.028794 0 ] (jdb/:__span-9-16) [ 1432 0 R /XYZ 60.307257 562.628442 0 ] (jdb/:__span-9-17) [ 1432 0 R /XYZ 60.307257 549.228090 0 ] (jdb/:__span-9-18) [ 1432 0 R /XYZ 60.307257 535.827738 0 ] (jdb/:__span-9-19) [ 1432 0 R /XYZ 60.307257 522.427386 0 ] (jdb/:__span-9-2) [ 1432 0 R /XYZ 60.307257 750.233370 0 ] (jdb/:__span-9-20) [ 1432 0 R /XYZ 60.307257 509.027034 0 ] (jdb/:__span-9-21) [ 1432 0 R /XYZ 60.307257 495.626682 0 ] (jdb/:__span-9-22) [ 1432 0 R /XYZ 60.307257 482.226330 0 ] (jdb/:__span-9-23) [ 1432 0 R /XYZ 60.307257 468.825978 0 ] (jdb/:__span-9-24) [ 1432 0 R /XYZ 60.307257 455.425626 0 ] (jdb/:__span-9-25) [ 1432 0 R /XYZ 60.307257 442.025274 0 ] (jdb/:__span-9-26) [ 1432 0 R /XYZ 60.307257 428.624922 0 ] (jdb/:__span-9-27) [ 1432 0 R /XYZ 60.307257 415.224570 0 ] (jdb/:__span-9-28) [ 1432 0 R /XYZ 60.307257 401.824218 0 ] (jdb/:__span-9-29) [ 1432 0 R /XYZ 60.307257 388.423866 0 ] (jdb/:__span-9-3) [ 1432 0 R /XYZ 60.307257 736.833018 0 ] (jdb/:__span-9-30) [ 1432 0 R /XYZ 60.307257 375.023514 0 ] (jdb/:__span-9-31) [ 1432 0 R /XYZ 60.307257 361.623162 0 ] (jdb/:__span-9-32) [ 1432 0 R /XYZ 60.307257 348.222810 0 ] (jdb/:__span-9-33) [ 1432 0 R /XYZ 60.307257 334.822458 0 ] (jdb/:__span-9-34) [ 1432 0 R /XYZ 60.307257 321.422106 0 ] (jdb/:__span-9-35) [ 1432 0 R /XYZ 60.307257 308.021754 0 ] (jdb/:__span-9-36) [ 1432 0 R /XYZ 60.307257 294.621402 0 ] (jdb/:__span-9-37) [ 1432 0 R /XYZ 60.307257 281.221050 0 ] (jdb/:__span-9-38) [ 1432 0 R /XYZ 60.307257 267.820698 0 ] (jdb/:__span-9-39) [ 1432 0 R /XYZ 60.307257 254.420346 0 ] (jdb/:__span-9-4) [ 1432 0 R /XYZ 60.307257 723.432666 0 ] (jdb/:__span-9-40) [ 1432 0 R /XYZ 60.307257 241.019994 0 ] (jdb/:__span-9-41) [ 1432 0 R /XYZ 60.307257 227.619642 0 ] (jdb/:__span-9-42) [ 1432 0 R /XYZ 60.307257 214.219290 0 ] (jdb/:__span-9-43) [ 1432 0 R /XYZ 60.307257 200.818938 0 ] (jdb/:__span-9-5) [ 1432 0 R /XYZ 60.307257 710.032314 0 ] (jdb/:__span-9-6) [ 1432 0 R /XYZ 60.307257 696.631962 0 ] (jdb/:__span-9-7) [ 1432 0 R /XYZ 60.307257 683.231610 0 ] (jdb/:__span-9-8) [ 1432 0 R /XYZ 60.307257 669.831258 0 ] (jdb/:__span-9-9) [ 1432 0 R /XYZ 60.307257 656.430906 0 ] (jdb/:grand-prix-de-monaco) [ 1812 0 R /XYZ 39.386457 164.992922 0 ] (jdb/:jeudi-1-juin-2023) [ 1816 0 R /XYZ 39.386457 270.835122 0 ] (jdb/:jeudi-11-mai-2023) [ 1724 0 R /XYZ 39.386457 562.440762 0 ] (jdb/:jeudi-18-mai-2023) [ 1763 0 R /XYZ 39.386457 459.588513 0 ] (jdb/:jeudi-25-mai-2023) [ 1804 0 R /XYZ 39.386457 446.337222 0 ] (jdb/:jeudi-27-avril-2023) [ 1610 0 R /XYZ 39.386457 584.282022 0 ] (jdb/:jeudi-30-mars-2023) [ 1254 0 R /XYZ 39.386457 263.492343 0 ] (jdb/:jeudi-6-avril) [ 1461 0 R /XYZ 39.386457 238.444086 0 ] (jdb/:jeudi-8-juin-2023) [ 1878 0 R /XYZ 39.386457 771.023622 0 ] (jdb/:journal-de-bord) [ 1251 0 R /XYZ 39.386457 757.223622 0 ] (jdb/:lundi-1-mai-2023) [ 1624 0 R /XYZ 39.386457 501.702822 0 ] (jdb/:lundi-15-mai-2023) [ 1746 0 R /XYZ 39.386457 584.282022 0 ] (jdb/:lundi-22-mai-2023) [ 1770 0 R /XYZ 39.386457 649.970022 0 ] (jdb/:lundi-24-avril-2023) [ 1584 0 R /XYZ 39.386457 266.404302 0 ] (jdb/:lundi-29-mai-2023) [ 1816 0 R /XYZ 39.386457 771.023622 0 ] (jdb/:lundi-3-avril) [ 1341 0 R /XYZ 39.386457 717.534822 0 ] (jdb/:lundi-5-juin-2023) [ 1860 0 R /XYZ 39.386457 229.986499 0 ] (jdb/:lundi-8-mai-2023) [ 1653 0 R /XYZ 39.386457 314.866514 0 ] (jdb/:mardi-16-mai-2023) [ 1746 0 R /XYZ 39.386457 273.038922 0 ] (jdb/:mardi-2-mai-2023) [ 1630 0 R /XYZ 39.386457 595.251918 0 ] (jdb/:mardi-23-mai-2023) [ 1797 0 R /XYZ 39.386457 234.994819 0 ] (jdb/:mardi-25-avril-2023) [ 1603 0 R /XYZ 39.386457 693.136422 0 ] (jdb/:mardi-30-mai-2023) [ 1816 0 R /XYZ 39.386457 547.990122 0 ] (jdb/:mardi-4-avril) [ 1407 0 R /XYZ 39.386457 305.202822 0 ] (jdb/:mardi-6-juin-2023) [ 1870 0 R /XYZ 39.386457 150.125803 0 ] (jdb/:mardi-9-mai-2023) [ 1689 0 R /XYZ 39.386457 146.799010 0 ] (jdb/:mercredi-10-mai-2023) [ 1710 0 R /XYZ 39.386457 659.354022 0 ] (jdb/:mercredi-17-mai-2023) [ 1755 0 R /XYZ 39.386457 771.023622 0 ] (jdb/:mercredi-24-mai-2023) [ 1802 0 R /XYZ 39.386457 629.325222 0 ] (jdb/:mercredi-29-mars-2023) [ 1251 0 R /XYZ 39.386457 707.865222 0 ] (jdb/:mercredi-31-mai-2023) [ 1816 0 R /XYZ 39.386457 339.971022 0 ] (jdb/:mercredi-5-avril) [ 1434 0 R /XYZ 39.386457 293.199726 0 ] (jdb/:mercredi-7-juin) [ 1874 0 R /XYZ 39.386457 648.093222 0 ] (jdb/:recrutement-payerne-mai-2023) [ 1650 0 R /XYZ 39.386457 526.101222 0 ] (jdb/:vacances) [ 1529 0 R /XYZ 39.386457 355.144422 0 ] (jdb/:vendredi-12-mai-2023) [ 1737 0 R /XYZ 39.386457 623.694822 0 ] (jdb/:vendredi-2-juin-2023) [ 1842 0 R /XYZ 39.386457 608.680422 0 ] (jdb/:vendredi-26-mai-2023) [ 1812 0 R /XYZ 39.386457 249.143222 0 ] (jdb/:vendredi-28-avril-2023) [ 1622 0 R /XYZ 39.386457 717.534822 0 ] (jdb/:vendredi-31032023) [ 1266 0 R /XYZ 39.386457 347.805222 0 ] (jdb/:vendredi-5-mai-2023) [ 1650 0 R /XYZ 39.386457 426.936522 0 ] (jdb/:vendredi-6-avril-2023) [ 1504 0 R /XYZ 39.386457 565.514022 0 ] ] >> >> >> @@ -41,226 +41,231 @@ endobj >> >> /XObject << -/i83e8d47bdf7867037eaedcf9b3ba91c5 2232 0 R -/i3b497ccb2cc72102529af416dabfdc79 2234 0 R -/i6d29f3061def42a6d984946e7bf957bb 2236 0 R -/i862acd95fd3b7c98ae07759a85e97bb4 2238 0 R -/i27abfd0303e0141dccb979fac23a574e 2240 0 R -/i5aebc9b808f7515e2e4825807e68944c 2242 0 R -/i46916a757dec6b77593d8d242edd9466 2244 0 R -/i321a69e82376330c7a8c37d5fc1babd8 2246 0 R -/ic99a8bf88abf9e8e86b2daef9015e919 2248 0 R -/i7e859d27407165aac821175cb74264a6 2250 0 R -/i74ee81867abd69ec488abb7ef10985ae 2252 0 R -/ib7ba3e880fd0e12a34ed481fb6f9ce5c 2254 0 R -/i23b03f0d6de89592a85131d5cc5f53d5 2256 0 R -/i47dd0e4f8ad5e2db299605011ff1f791 2258 0 R -/ibc4ec9ddd67180f1dff7f3a2a7496013 2260 0 R -/i57b2d7c51196448691e0fde3678a24b6 2262 0 R -/ibdba7ecb0da824c6b03d5f4bc7d9a6fc 2264 0 R -/ia236b62eb8d6175949bee2bc38f50b0f 2266 0 R -/i12200a7e1b7cc677f13d4cf3967fd977 2268 0 R -/ieb9f461ea42dd450637413a739caf3e2 2270 0 R -/i95354e0ced090a84ad5029bc54cfca25 2271 0 R -/if03219818b9488dfcaa735c637892233 2272 0 R -/i483b48f68c365836d5538b7b2428e26c 2273 0 R -/idfec847ea3aa6025b1e2952efcd456c5 2275 0 R -/i864ecd1f04e13a5e2e05b34e05efb5e8 2277 0 R -/idf8fc4e68ed1a33ad823ad667a0f68b2 2279 0 R -/i697f03ebf6060d61aee540142fbc9866 2281 0 R -/i456fc3b8c9506626329986ad2a6165cb 2283 0 R -/i4bffedf109758ad04d67bde2f542c422 2285 0 R -/i4e5041030b7abb6f99d9953487f6523d 2287 0 R -/ibbad9b91af3faa229b8648d050a4979f 2289 0 R -/id64e468e5c9063255b0cbcd967af36fb 2291 0 R -/ifeb68a942f3d59c6d6c0492b04369c72 2293 0 R -/ifd045f27144497870f6754b815faf42d 2295 0 R -/id9ea2680132a7ada299a6ccd6eb4721d 2297 0 R -/idbbed2f6cd12f34d2e6d79fc9264704e 2299 0 R -/i5753d0cb39836c974aeb4d3e181c73f9 2301 0 R -/i4df9917b14b40c6938ccbe418deb9311 2303 0 R -/i56ebb8aaf4dabde9b21e2f3c398d3d2a 2305 0 R -/ieabc84d1373def37e713cb81d92ead72 2307 0 R -/i1864b403764fce5ca0f52759b1d746da 2309 0 R -/i0b08055253198904c9e5e3d17751a27b 2311 0 R -/id05b28f6c40c771eaa05a88211e94946 2313 0 R -/i9709e3d755f4e3e4b72cba138dd67a33 2315 0 R -/i9ce7d04a1a468903e102e54b467a8794 2317 0 R -/i5c81c682a716b2574c0d25abb24f2299 2319 0 R -/i415d130bf16a4f457995458e1fd54a24 2321 0 R -/i980b0c2608fcb02021172158435b33d0 2323 0 R -/ide208052fad45aa250cfb9ff02c56a24 2325 0 R -/i4578e049f08c54f0b208221322d4af40 2327 0 R -/i1490d2d06018026d86032b98446daac4 2329 0 R -/i118a90245cba588084cf533bb078c9ba 2331 0 R -/i46fb1d6ec7ef17435e8c70cddf76e1e8 2333 0 R -/i592319d66ce72d58b8fbcd4fcd595090 2335 0 R -/ib6da13f7cbd6ea9cfb728bbe653974fe 2337 0 R -/ie88d0360fc428391dccbfb474e640d0f 2339 0 R -/i28bfe17ffb6c7dc803ab5f0c8a765947 2341 0 R -/i537e253324baa41ff1b737c064429ade 2343 0 R -/i2a382b5b92ab4a00fce5007637b78832 2345 0 R -/i91be234c88e16692309a3cd72c739d08 2347 0 R -/i67da3ed2201c45af09c71bdb7ba05f4d 2349 0 R -/i269c5dad91493a1dc1d485a1196a8250 2351 0 R -/ie434869461a294629a802947e9cde65e 2353 0 R -/i48c3a07e2c82d5cbd8423c214a04b083 2355 0 R -/ibc8c79593eebf4502cc03c8ed510cc7e 2357 0 R -/i8aca4212570ed49b69bf0d61cbecb6d4 2359 0 R -/i01572a2fb14977d7bba1a9a5cc853862 2361 0 R -/i20ce8e4546d289f37dc98ac5683994c0 2363 0 R -/icb9a987068776512d1cd8c31d9940aef 2364 0 R -/i9632cb825142a03f242e3843f07417a3 2365 0 R -/ic04167c903cb799760037987b6953254 2366 0 R -/i1728bb6fe8b5e256820f39a8fccf896f 2367 0 R -/i7a6f9b89d58c4fec179ba918c226e361 2368 0 R -/i808299d0a4329db339a1104fac2fb606 2370 0 R -/i2ed673ddfa0469c0a69c11b733250254 2372 0 R -/i3e2b42479801ec6a20b405a84becb4ad 2374 0 R -/i20df846d588849cbe396d64f8ca7b963 2376 0 R -/ic51bc7c2fdb169027209668212e9cebc 2378 0 R -/iba7c7eb6e996b2d9ec38553fe62f0c0e 2380 0 R -/ibaae51bd69d9821c6ff16fcce238a791 2382 0 R -/i2041e55dce885f95d00a60cc00eab449 2384 0 R -/i0922cc635b0c76ca2b0c4aad2027b3b4 2386 0 R -/ib0a8953323de770ca31a57a01177b649 2388 0 R -/iaed4b4c279cff1018ba52a2e46296de7 2390 0 R -/id206e1a26dabce4e53ebebccdc2a441f 2392 0 R -/i4ffdcf687ebb4c2e10d91e48bca55ea3 2394 0 R -/ibbc23b7a94f1a271e1b12c9f95760dcc 2396 0 R -/i274c74455d786244597d823a9a5a533f 2398 0 R -/i4a5444515cf7bd52270ad2584e4c8de0 2400 0 R -/i1646202a5d28980f8d400607061a89d4 2402 0 R -/i6c3e8d1203f65ec1a9fc90d5b05d8fe1 2404 0 R -/ieec8bf67d15d883938065d4272a2acaf 2406 0 R -/ib633e06dc1ea72624e9c0f4814c5e3cf 2408 0 R -/i73bce7ce5054ede41f7800fda5d4108b 2410 0 R -/ice8bbdff965da0ada1e4438b50112394 2412 0 R -/i24e80b7dbef9643edb92f56f64127a32 2414 0 R -/i225cdd0b25500d1e4935a6db59c95c67 2416 0 R -/if1f78de152482b62b26deb08cbc22601 2418 0 R -/i7af0c5a971f95c822ce42184565706a9 2420 0 R -/i729cf5d1bcd3923b626627334bd13c80 2422 0 R -/ib6ec25664f40d60cdb3715e1e648ccbd 2424 0 R -/i44484ef29c184b2ade063992d78d895c 2426 0 R -/i6931910c9154eb60eff4634e0d52e721 2428 0 R -/i8e3543cfd5ad1aca0a38f5227c9eca96 2430 0 R -/i3b67f948ed22f9ef5aa525f61e25fdb7 2432 0 R -/i5f3a2a6833875acc60d05412d2072241 2434 0 R -/ide1f3da74f05f5edd597d46e9014af6a 2436 0 R -/ib40baa213d4ae8b6935a9710738a03d6 2438 0 R -/id92d7e79cfbae48ca2044a5fcaacf2e6 2440 0 R -/iaf287c0ce18656c5ad30fdc1831f345a 2442 0 R -/i333ca0847cd43bf04fab1eaa3021f55a 2444 0 R -/id54c72b68043111c244e60aee9b0b407 2446 0 R -/icb89dd755780b1b3b5609f88231866a4 2448 0 R -/id5a65e7a228d493a9e30536122432a38 2450 0 R -/i69a3d2e2aa39a9aa89691865bfe087b7 2452 0 R -/i16e63abf761e5e49028def0764d5fc01 2454 0 R -/i28e63526d9b0dab84592ba43edec1bbc 2455 0 R -/idf92a68daa3cb2352d343132c5327258 2456 0 R -/ie47e3ccc7158c83f627c5fdbacca0b01 2458 0 R -/i016f5a1345314db3ad10eae1790b4f1c 2460 0 R -/ic6f361c3184e5ab67e17e3506d5d80d8 2462 0 R -/ia64748b5466fee915378fccf5c7a1b47 2464 0 R -/i1f75ecd3cdea65c723059e748dfb4d86 2466 0 R -/i93aa95fe267034962c6a8cf1c6e1a97c 2468 0 R -/i38d424149caf0ede6ac6f1785736db7b 2470 0 R -/if977c8a66a7b56abf4971466d44c94ad 2472 0 R -/i271db94350f76791c3ea696f9e1e2071 2474 0 R -/ib36bfe1d2070f0d8e1278878549c85a9 2476 0 R -/i0cdd3aa0068844a5910435ea46c7ebab 2478 0 R -/ib1f594f771c011faa047b1fc33398489 2480 0 R -/i29c1e0a342594acb8a37494fb09aaeac 2482 0 R -/i49a427ed1e41991b547dd37f3a5a968a 2484 0 R -/ib6c959bc47025eb9e97c7ffe143b83e0 2486 0 R -/i5c1fba789549d426899a38b1df2bf165 2488 0 R -/i1b87f5817ee048a6e58ae68c7c648590 2490 0 R -/i144d9afaad5db5ba25a482aa868b5309 2492 0 R -/ie2bc4160dd648fa132f79285a13ddbf6 2494 0 R -/i49558b02479b930cc9f0044ee5ae5854 2496 0 R -/i1466d35bb8bb81058e39171cf3f175e7 2498 0 R -/ib770143957879744018ff6c0742d739f 2500 0 R -/i44b99004acfb76f0f80ced0851d1fa22 2502 0 R -/ie98cebf629d52cedf854f75ccd8a3948 2504 0 R -/iebd158e6cffc746d0fea2fe798c40b0a 2506 0 R -/i3380ccf226f8f9ac934d4b4bbd547ebb 2508 0 R -/ie828749a19dddf3ea0dba96ddcaa47fc 2510 0 R -/i59d462a4ebc54ddc0dc1d694d8b152cf 2512 0 R -/i1ffc17e32362c2641f0d85f333cc69ed 2514 0 R -/ic2456a56e464f0d1acb55f84beaee6d3 2516 0 R -/i28fa2200dc4e7542a868e4a9da99aca9 2518 0 R -/i8a3b58d053c54439cdc19422af794da3 2520 0 R -/i17b8b9937f6e4599ff6db9f73f823096 2522 0 R -/i7c71fef6e7f50ada1dc3021f9bac6bba 2524 0 R -/i65221d140fd8ba236765a749aa48f9b6 2526 0 R -/i127689757da4e743ab7a9b9b9e0ccf8f 2528 0 R -/i21577e8bc1d8d0af76417ee7724edb84 2530 0 R -/ie38f9dbb3359324964f4e9171fb664b1 2532 0 R -/i5ff01cda45d74112993c7d72fb873f01 2534 0 R -/ibb0d13191f889a5aeb4134aa1b6935d2 2536 0 R -/i3accb128fcf1262e5b20f23a21d5bc61 2538 0 R -/icfed19ccda34e8dc2e3905610222faa9 2540 0 R -/i85c62db712f20b31b81ad2e6413309da 2542 0 R -/ic2a9a88bbf715284567f72f381668df2 2544 0 R -/ib9f9f07787c80c06641932388c3bdb74 2546 0 R -/i8a6f2d2f5a28c0af2c38024ae0081658 2548 0 R -/i225d8b520d32dd86767c2dcc61d0fba4 2550 0 R -/ia54d20fa729a8068718b8c7d510ad027 2552 0 R -/iad2faaa5ca488113e9074ac5402d7efe 2554 0 R -/ifd92504eb5e8bf7df66b70cf4ce57dd5 2556 0 R -/id109e171ec05f9ad15797b8d83229356 2558 0 R -/iab5e53595722b1f5258144979d9f2ac3 2560 0 R -/i05f15b48a6e23194831c567df021af3f 2561 0 R -/i6c02b2a0d8bd39c599dd34ae7158267c 2563 0 R -/ib904c5ff40856935e447b3ddd76306c8 2565 0 R -/i69c3f44e5bd21a489ea8fcf335f7c44f 2567 0 R -/i2718fd348fdb22b641539ca636a9ed06 2569 0 R -/ief51d1e924220581210ee50401220d6b 2571 0 R -/i2e64122b51e48609e16d295e21626056 2573 0 R -/i3de64d04d5d6ec0507edeb9881576677 2575 0 R -/i0c483fc6885782fea1d33432172fcc18 2577 0 R -/if6b2541f2fea69bec681b5326e2cb236 2579 0 R -/i8646a456c3049dc41308c7715ce69f8b 2581 0 R -/i9a58a9c98de07135b36b09a7194fa17d 2583 0 R -/if49ae9e180658fe14ee6ba818d9aa65a 2585 0 R -/i9df4cb3e557d5ca5fa480b1257d28838 2587 0 R -/i307658129ace4da16ce8e4d3bc2182c4 2589 0 R -/i5bc9aa345ebaa493ffa10f273970179e 2591 0 R -/i8705a48d8dbb4086afc34aaf93e995b9 2593 0 R -/i95fc521c77451596e6cea9e4878808f3 2595 0 R -/ic63e75e4660311e5e6282859b1220ffd 2597 0 R -/i3cb63d24a6d374f2471e18ca1df497c5 2599 0 R -/i65752d24f4a428052ecdb19d1f8d0c19 2601 0 R -/iac56279099050bf3f6660dc50d5fae15 2603 0 R -/i57f5883427bd603b0769e87f2691de4b 2605 0 R -/i93e09802d69c40bc9e388d83c59814c0 2607 0 R -/i7ad22ed2e653a4178ce918640f691141 2609 0 R -/i22107632178e4640c254f12ebf16a74a 2611 0 R -/i47e10b9ff132a8ff72e3a61e313922d6 2613 0 R -/i0b6a51cbf995f68a09d7c74358aa0366 2615 0 R -/i165c54a14c2eb6fee597a70aa4b725c6 2617 0 R -/i3fcec7c62958d6070e26e01727739aab 2619 0 R -/id5e97f26b06893171d21db14a843fdba 2621 0 R -/idccad07c8f0fb3f5b30bb5c66c13f82b 2623 0 R -/i1cd7847ff916665780fdb47a11af1ac1 2625 0 R -/id36e505104ea8e40d130f1988753b751 2627 0 R -/i5fd79da729d211f9b270c3e1b62369d5 2629 0 R -/i645b5b03a88bc339133adf2fd95da424 2631 0 R -/i5ebfc514d255c194c6861dbe09487844 2633 0 R -/i4b07f0f347ca4297bf221493ede2113d 2635 0 R -/ic5acaf2e398777f4bb397031135c857d 2637 0 R -/i262682edb16dc603780595daf5706aa7 2639 0 R -/i7ceb8b76dd6d5960359e35b3ef6bf94d 2641 0 R -/i7023f54b4ed46bf526f2392363e81d21 2643 0 R -/i7896b4f5fdd3988876d2dbcb141ce241 2645 0 R -/i7677843b9dcb81c59a103c0b338ea62e 2647 0 R +/i83e8d47bdf7867037eaedcf9b3ba91c5 2358 0 R +/i3b497ccb2cc72102529af416dabfdc79 2360 0 R +/i6d29f3061def42a6d984946e7bf957bb 2362 0 R +/i862acd95fd3b7c98ae07759a85e97bb4 2364 0 R +/i27abfd0303e0141dccb979fac23a574e 2366 0 R +/i5aebc9b808f7515e2e4825807e68944c 2368 0 R +/i46916a757dec6b77593d8d242edd9466 2370 0 R +/i321a69e82376330c7a8c37d5fc1babd8 2372 0 R +/ic99a8bf88abf9e8e86b2daef9015e919 2374 0 R +/i7e859d27407165aac821175cb74264a6 2376 0 R +/i74ee81867abd69ec488abb7ef10985ae 2378 0 R +/ib7ba3e880fd0e12a34ed481fb6f9ce5c 2380 0 R +/i23b03f0d6de89592a85131d5cc5f53d5 2382 0 R +/i47dd0e4f8ad5e2db299605011ff1f791 2384 0 R +/ibc4ec9ddd67180f1dff7f3a2a7496013 2386 0 R +/i57b2d7c51196448691e0fde3678a24b6 2388 0 R +/ibdba7ecb0da824c6b03d5f4bc7d9a6fc 2390 0 R +/ia236b62eb8d6175949bee2bc38f50b0f 2392 0 R +/i12200a7e1b7cc677f13d4cf3967fd977 2394 0 R +/ieb9f461ea42dd450637413a739caf3e2 2396 0 R +/i95354e0ced090a84ad5029bc54cfca25 2397 0 R +/if03219818b9488dfcaa735c637892233 2398 0 R +/i483b48f68c365836d5538b7b2428e26c 2399 0 R +/idfec847ea3aa6025b1e2952efcd456c5 2401 0 R +/i864ecd1f04e13a5e2e05b34e05efb5e8 2403 0 R +/idf8fc4e68ed1a33ad823ad667a0f68b2 2405 0 R +/i697f03ebf6060d61aee540142fbc9866 2407 0 R +/i456fc3b8c9506626329986ad2a6165cb 2409 0 R +/i4bffedf109758ad04d67bde2f542c422 2411 0 R +/i4e5041030b7abb6f99d9953487f6523d 2413 0 R +/ibbad9b91af3faa229b8648d050a4979f 2415 0 R +/id64e468e5c9063255b0cbcd967af36fb 2417 0 R +/ifeb68a942f3d59c6d6c0492b04369c72 2419 0 R +/ifd045f27144497870f6754b815faf42d 2421 0 R +/id9ea2680132a7ada299a6ccd6eb4721d 2423 0 R +/idbbed2f6cd12f34d2e6d79fc9264704e 2425 0 R +/i5753d0cb39836c974aeb4d3e181c73f9 2427 0 R +/i4df9917b14b40c6938ccbe418deb9311 2429 0 R +/i56ebb8aaf4dabde9b21e2f3c398d3d2a 2431 0 R +/ieabc84d1373def37e713cb81d92ead72 2433 0 R +/i1864b403764fce5ca0f52759b1d746da 2435 0 R +/i0b08055253198904c9e5e3d17751a27b 2437 0 R +/id05b28f6c40c771eaa05a88211e94946 2439 0 R +/i9709e3d755f4e3e4b72cba138dd67a33 2441 0 R +/i9ce7d04a1a468903e102e54b467a8794 2443 0 R +/i5c81c682a716b2574c0d25abb24f2299 2445 0 R +/i415d130bf16a4f457995458e1fd54a24 2447 0 R +/i980b0c2608fcb02021172158435b33d0 2449 0 R +/ide208052fad45aa250cfb9ff02c56a24 2451 0 R +/i4578e049f08c54f0b208221322d4af40 2453 0 R +/i1490d2d06018026d86032b98446daac4 2455 0 R +/i118a90245cba588084cf533bb078c9ba 2457 0 R +/i46fb1d6ec7ef17435e8c70cddf76e1e8 2459 0 R +/i592319d66ce72d58b8fbcd4fcd595090 2461 0 R +/ib6da13f7cbd6ea9cfb728bbe653974fe 2463 0 R +/ie88d0360fc428391dccbfb474e640d0f 2465 0 R +/i28bfe17ffb6c7dc803ab5f0c8a765947 2467 0 R +/i537e253324baa41ff1b737c064429ade 2469 0 R +/i2a382b5b92ab4a00fce5007637b78832 2471 0 R +/i91be234c88e16692309a3cd72c739d08 2473 0 R +/i67da3ed2201c45af09c71bdb7ba05f4d 2475 0 R +/i269c5dad91493a1dc1d485a1196a8250 2477 0 R +/ie434869461a294629a802947e9cde65e 2479 0 R +/i48c3a07e2c82d5cbd8423c214a04b083 2481 0 R +/ibc8c79593eebf4502cc03c8ed510cc7e 2483 0 R +/i8aca4212570ed49b69bf0d61cbecb6d4 2485 0 R +/i01572a2fb14977d7bba1a9a5cc853862 2487 0 R +/i20ce8e4546d289f37dc98ac5683994c0 2489 0 R +/icb9a987068776512d1cd8c31d9940aef 2490 0 R +/i9632cb825142a03f242e3843f07417a3 2491 0 R +/ic04167c903cb799760037987b6953254 2492 0 R +/i1728bb6fe8b5e256820f39a8fccf896f 2493 0 R +/i7a6f9b89d58c4fec179ba918c226e361 2494 0 R +/i808299d0a4329db339a1104fac2fb606 2496 0 R +/i2ed673ddfa0469c0a69c11b733250254 2498 0 R +/i3e2b42479801ec6a20b405a84becb4ad 2500 0 R +/i20df846d588849cbe396d64f8ca7b963 2502 0 R +/ic51bc7c2fdb169027209668212e9cebc 2504 0 R +/iba7c7eb6e996b2d9ec38553fe62f0c0e 2506 0 R +/ibaae51bd69d9821c6ff16fcce238a791 2508 0 R +/i2041e55dce885f95d00a60cc00eab449 2510 0 R +/i0922cc635b0c76ca2b0c4aad2027b3b4 2512 0 R +/ib0a8953323de770ca31a57a01177b649 2514 0 R +/iaed4b4c279cff1018ba52a2e46296de7 2516 0 R +/id206e1a26dabce4e53ebebccdc2a441f 2518 0 R +/i4ffdcf687ebb4c2e10d91e48bca55ea3 2520 0 R +/ibbc23b7a94f1a271e1b12c9f95760dcc 2522 0 R +/i0a8a7ca4da8970f2fc1ffd1347949dd0 2524 0 R +/i8e2214001cbd9e9f447ab20f64d2d7f7 2526 0 R +/i933e93938d17cdffebf7f1831652829a 2528 0 R +/ia0a748b71393080bd3f841680f723778 2530 0 R +/i0e6a917d52b1181d119e67f5d857fb6c 2531 0 R +/i274c74455d786244597d823a9a5a533f 2533 0 R +/i4a5444515cf7bd52270ad2584e4c8de0 2535 0 R +/i1646202a5d28980f8d400607061a89d4 2537 0 R +/i6c3e8d1203f65ec1a9fc90d5b05d8fe1 2539 0 R +/ieec8bf67d15d883938065d4272a2acaf 2541 0 R +/ib633e06dc1ea72624e9c0f4814c5e3cf 2543 0 R +/i73bce7ce5054ede41f7800fda5d4108b 2545 0 R +/ice8bbdff965da0ada1e4438b50112394 2547 0 R +/i24e80b7dbef9643edb92f56f64127a32 2549 0 R +/i225cdd0b25500d1e4935a6db59c95c67 2551 0 R +/if1f78de152482b62b26deb08cbc22601 2553 0 R +/i7af0c5a971f95c822ce42184565706a9 2555 0 R +/i729cf5d1bcd3923b626627334bd13c80 2557 0 R +/ib6ec25664f40d60cdb3715e1e648ccbd 2559 0 R +/i44484ef29c184b2ade063992d78d895c 2561 0 R +/i6931910c9154eb60eff4634e0d52e721 2563 0 R +/i8e3543cfd5ad1aca0a38f5227c9eca96 2565 0 R +/i3b67f948ed22f9ef5aa525f61e25fdb7 2567 0 R +/i5f3a2a6833875acc60d05412d2072241 2569 0 R +/ide1f3da74f05f5edd597d46e9014af6a 2571 0 R +/ib40baa213d4ae8b6935a9710738a03d6 2573 0 R +/id92d7e79cfbae48ca2044a5fcaacf2e6 2575 0 R +/iaf287c0ce18656c5ad30fdc1831f345a 2577 0 R +/i333ca0847cd43bf04fab1eaa3021f55a 2579 0 R +/id54c72b68043111c244e60aee9b0b407 2581 0 R +/icb89dd755780b1b3b5609f88231866a4 2583 0 R +/id5a65e7a228d493a9e30536122432a38 2585 0 R +/i69a3d2e2aa39a9aa89691865bfe087b7 2587 0 R +/i16e63abf761e5e49028def0764d5fc01 2589 0 R +/i28e63526d9b0dab84592ba43edec1bbc 2590 0 R +/idf92a68daa3cb2352d343132c5327258 2591 0 R +/ie47e3ccc7158c83f627c5fdbacca0b01 2593 0 R +/i016f5a1345314db3ad10eae1790b4f1c 2595 0 R +/ic6f361c3184e5ab67e17e3506d5d80d8 2597 0 R +/ia64748b5466fee915378fccf5c7a1b47 2599 0 R +/i1f75ecd3cdea65c723059e748dfb4d86 2601 0 R +/i93aa95fe267034962c6a8cf1c6e1a97c 2603 0 R +/i38d424149caf0ede6ac6f1785736db7b 2605 0 R +/if977c8a66a7b56abf4971466d44c94ad 2607 0 R +/i271db94350f76791c3ea696f9e1e2071 2609 0 R +/ib36bfe1d2070f0d8e1278878549c85a9 2611 0 R +/i0cdd3aa0068844a5910435ea46c7ebab 2613 0 R +/ib1f594f771c011faa047b1fc33398489 2615 0 R +/i29c1e0a342594acb8a37494fb09aaeac 2617 0 R +/i49a427ed1e41991b547dd37f3a5a968a 2619 0 R +/ib6c959bc47025eb9e97c7ffe143b83e0 2621 0 R +/i5c1fba789549d426899a38b1df2bf165 2623 0 R +/i1b87f5817ee048a6e58ae68c7c648590 2625 0 R +/i144d9afaad5db5ba25a482aa868b5309 2627 0 R +/ie2bc4160dd648fa132f79285a13ddbf6 2629 0 R +/i49558b02479b930cc9f0044ee5ae5854 2631 0 R +/i1466d35bb8bb81058e39171cf3f175e7 2633 0 R +/ib770143957879744018ff6c0742d739f 2635 0 R +/i44b99004acfb76f0f80ced0851d1fa22 2637 0 R +/ie98cebf629d52cedf854f75ccd8a3948 2639 0 R +/iebd158e6cffc746d0fea2fe798c40b0a 2641 0 R +/i3380ccf226f8f9ac934d4b4bbd547ebb 2643 0 R +/ie828749a19dddf3ea0dba96ddcaa47fc 2645 0 R +/i59d462a4ebc54ddc0dc1d694d8b152cf 2647 0 R +/i1ffc17e32362c2641f0d85f333cc69ed 2649 0 R +/ic2456a56e464f0d1acb55f84beaee6d3 2651 0 R +/i28fa2200dc4e7542a868e4a9da99aca9 2653 0 R +/i8a3b58d053c54439cdc19422af794da3 2655 0 R +/i17b8b9937f6e4599ff6db9f73f823096 2657 0 R +/i7c71fef6e7f50ada1dc3021f9bac6bba 2659 0 R +/i65221d140fd8ba236765a749aa48f9b6 2661 0 R +/i127689757da4e743ab7a9b9b9e0ccf8f 2663 0 R +/i21577e8bc1d8d0af76417ee7724edb84 2665 0 R +/ie38f9dbb3359324964f4e9171fb664b1 2667 0 R +/i5ff01cda45d74112993c7d72fb873f01 2669 0 R +/ibb0d13191f889a5aeb4134aa1b6935d2 2671 0 R +/i3accb128fcf1262e5b20f23a21d5bc61 2673 0 R +/icfed19ccda34e8dc2e3905610222faa9 2675 0 R +/i85c62db712f20b31b81ad2e6413309da 2677 0 R +/ic2a9a88bbf715284567f72f381668df2 2679 0 R +/ib9f9f07787c80c06641932388c3bdb74 2681 0 R +/i8a6f2d2f5a28c0af2c38024ae0081658 2683 0 R +/i225d8b520d32dd86767c2dcc61d0fba4 2685 0 R +/ia54d20fa729a8068718b8c7d510ad027 2687 0 R +/iad2faaa5ca488113e9074ac5402d7efe 2689 0 R +/ifd92504eb5e8bf7df66b70cf4ce57dd5 2691 0 R +/id109e171ec05f9ad15797b8d83229356 2693 0 R +/iab5e53595722b1f5258144979d9f2ac3 2695 0 R +/i05f15b48a6e23194831c567df021af3f 2696 0 R +/i6c02b2a0d8bd39c599dd34ae7158267c 2698 0 R +/ib904c5ff40856935e447b3ddd76306c8 2700 0 R +/i69c3f44e5bd21a489ea8fcf335f7c44f 2702 0 R +/i2718fd348fdb22b641539ca636a9ed06 2704 0 R +/ief51d1e924220581210ee50401220d6b 2706 0 R +/i2e64122b51e48609e16d295e21626056 2708 0 R +/i3de64d04d5d6ec0507edeb9881576677 2710 0 R +/i0c483fc6885782fea1d33432172fcc18 2712 0 R +/if6b2541f2fea69bec681b5326e2cb236 2714 0 R +/i8646a456c3049dc41308c7715ce69f8b 2716 0 R +/i9a58a9c98de07135b36b09a7194fa17d 2718 0 R +/if49ae9e180658fe14ee6ba818d9aa65a 2720 0 R +/i9df4cb3e557d5ca5fa480b1257d28838 2722 0 R +/i307658129ace4da16ce8e4d3bc2182c4 2724 0 R +/i5bc9aa345ebaa493ffa10f273970179e 2726 0 R +/i8705a48d8dbb4086afc34aaf93e995b9 2728 0 R +/i95fc521c77451596e6cea9e4878808f3 2730 0 R +/ic63e75e4660311e5e6282859b1220ffd 2732 0 R +/i3cb63d24a6d374f2471e18ca1df497c5 2734 0 R +/i65752d24f4a428052ecdb19d1f8d0c19 2736 0 R +/iac56279099050bf3f6660dc50d5fae15 2738 0 R +/i57f5883427bd603b0769e87f2691de4b 2740 0 R +/i93e09802d69c40bc9e388d83c59814c0 2742 0 R +/i7ad22ed2e653a4178ce918640f691141 2744 0 R +/i22107632178e4640c254f12ebf16a74a 2746 0 R +/i47e10b9ff132a8ff72e3a61e313922d6 2748 0 R +/i0b6a51cbf995f68a09d7c74358aa0366 2750 0 R +/i165c54a14c2eb6fee597a70aa4b725c6 2752 0 R +/i3fcec7c62958d6070e26e01727739aab 2754 0 R +/id5e97f26b06893171d21db14a843fdba 2756 0 R +/idccad07c8f0fb3f5b30bb5c66c13f82b 2758 0 R +/i1cd7847ff916665780fdb47a11af1ac1 2760 0 R +/id36e505104ea8e40d130f1988753b751 2762 0 R +/i5fd79da729d211f9b270c3e1b62369d5 2764 0 R +/i645b5b03a88bc339133adf2fd95da424 2766 0 R +/i5ebfc514d255c194c6861dbe09487844 2768 0 R +/i4b07f0f347ca4297bf221493ede2113d 2770 0 R +/ic5acaf2e398777f4bb397031135c857d 2772 0 R +/i262682edb16dc603780595daf5706aa7 2774 0 R +/i7ceb8b76dd6d5960359e35b3ef6bf94d 2776 0 R +/i7023f54b4ed46bf526f2392363e81d21 2778 0 R +/i7896b4f5fdd3988876d2dbcb141ce241 2780 0 R +/i7677843b9dcb81c59a103c0b338ea62e 2782 0 R >> /Pattern << >> /Shading << >> -/Font 2231 0 R +/Font 2357 0 R >> endobj 5 0 obj @@ -287,149 +292,162 @@ endobj 7 0 obj << /Filter /FlateDecode -/Length 49459 +/Length 49457 >> stream xͮe;ϧȶ񟋀 X (C 7R*u2 H~c9'O^KYY;x"X_YQ5~]ڳ^{]_̶S]ZKx9z/~~K}}z3I?_~wO6ZZ9k}뙋7Voc/{/;g}^y~1z{yѿƮJ\~8oq%)H??3,{yRU&޳10O/dqԻ!#[ mnnߙU@~翨~ jGg_/3o/|ۻ\gi𻅖>`kdvr)O7ӟR 枵2{]𡕶{dU4T j yܻL>tkMi4at 41̻໹5{4R7g/]jA{ӶyZQTcz;M.>h,h3~-ױjE*Ot0]1hBO6q\ m^4G ]Ǿڼ3{=Ն6ﳷ駵ý홻Ag>iN;uuW;|*}-Ξ˽_)`ؘ`8 fe{Y:.cmN>A[m}fBnU&61hs_:mƬmꮯ"Dܾhˆw} UD`_Av|?}}5]_E Wu}1|OüOC1} =UfAAž|<_QM_mQF;}&s8]k86{@'j}f\kA~MW1ɰ{9*>ULgA98|lC*rpL|+AžD*rp,|AךӾڼδ} 98vA|!986.}r DceAmAYcsǠ͘=oWʽr#!gyr}981讯"'&ǾڌI\11h3UWg\{\n0]30}b0{W>h(U98vE:rpr"98!k0s>3k.T}s޽rpjr}#Q}u\lǠ͍D W1hsC0AC1hscl}\s$91h3V:IGYa;rpM2W[' 4Nґka6nmFI:rpu\VN >B>h3f!S['A]N2հ(<1^_8['o ?>ujXgAr:@nĻ['A ,W஘!>6b:o*<0t$9+WâR3cv0{uԂ_6s(Airuh['AVհ) ]CnL: >a0busWWâګǐ_"b;m^q5@bf|lCb>nd ޏ['հqj؁ܘmunufy3,W"l<˭VzJnd 2['jX_RnW f"ísaQ|=eN2Oͭ.ʼjXLYjw07}u"['gjX|Y1_I01z86t5,>MI['VN̲w'rD1!I&rsuLU<D>>|0q$9Andr ).Dy>du|n] Š?hr} 9}n۾3~frp$խL "ӎ׏^uz+nS 0Vt}92ž\IP6|>mn_m6shs O{ 36w$`%em_m,6cIDndM6}ft4ڌʭ6+ܭ6j6հͭ]uٹ{k(\ o0uӪ['l̴Qty~\ZWN,{{/LN|::h3ͭ{6:.hs/^j^?&`t}lWcbhh^h^FV.>N3L 1pt>I6rIPֽriar:FV.cyO{ o&(Z*?_ ԿP7<|l_H^<Uo__ r? 0Ʒ+;?8?_cOo25Z;o82g8*'+q-oہݎgq/z~a/|f艓M:HO25Ut; #{8]apApq6TpūDUh,Pwn/pnm6y2l Hp1_O2lT˰٠-ÅE|-p14-Å,ˠ{<2l|b46xyC)yCߛaibh92\ $U2δ ,qeP ی6daϻW3\-Y іA0,.:2-EQenx Caw9&l(K<(\QxXXf~1]Qժ.8:\r C1vFYpU2l.(Kp[bh,Ki.(KT.(K* q\ E92]Qq%cXmƼd -e2wGYvGYý,qf.(Kvq%~2i,@.(K82ġ`e^82,qz.(K\Qq%ee?7462E˰ͼftGY,+2},qPF,q)˰yҍ(K ex(Kx.{Sp -}n -7(Ky.(K8g[Qq%P:(Kz.(Kz.(Kz.(Kn ۼmGYsGYsGYSH[Q8ܕi|m,n888(dlGY8888:w[QUueZeeZeel[Q8c89,qNue 2,q%pEmGY t]Q8ey:.(Kt q%> q7 kn&jzu\MAn8 7 [aR?z,6/[m޶m~lϻqpDyoh fQm7 -ڌZe(lu(lu(luܨlcQcQi:nps j=qcPBeL] niqcP빌qsl79[ nsB,nux7t[Ǎws̰u\uqc%2nps j=qcP빌2nps ˸1.7઻2nps R`y:nps %a|6!2nps j=q9Ze`s7\ j=q9Ze`iq9Ze`q9Ze`s7lƝw&s˸Dw,6O[M I˰q9Zeds7\M j=q9Zedn@e2e2uds7ۻq9Zeds7\M j=q9Zeds7\nuds7\M j=q9x&s˸~'pbuds7\MYAz.&s˸r˴/nq7qsseu&ܔi8|C\/5_.ooſSxpkF@<|02 "&oU uA\SgW.|LǠ]if4&MQ魹6Wf>|`p!Dy5(\VDY) 0w4ʹsj]iaG=6ۂ%f|Dqڙsf8~(#;ڌ7)`q<7N{ci(s״͘6wH3x>v/~qqڑۍӎ|;6k3}>ffzh6md1 w9iOЎS ~m)r8"ޞێ6stmF6okf˶9ȩAGg)r/"o;N<ώӇmˎӇmˎӇmnˎ6 یq998Ej>ˍS})u /7Nt>1ǵuqJ/ˍSqJ8N nR')uۍS^nR'?q ܖ :tה9 )uMnR'@νgJhct:A35eCqJ=8N;M7N^^A>=]S`Ô]S`ӎS 6m1aǴ9'3kl$luqleqDn)s,psssi)si)si)s[ӵ9X۰9X9X˰9X0wה9Xa)s)u)u )uל2u~)uԟÍS|,ͰeqJHnR'hlg7NnR'p:w6qJ>8NNnR'h7N4>]S 8NM:nR')ut|DͰͣqJ=s46)und)9mާql8EATݎS q8]l3:mnݎ6nfK9%a;N Վv9v"1%v>lv>l3fd>lsvv;N\ЎS``)r3)u)uL `8N[ۦ SmV:ACqJ&8N8]j01Av:Aoaa#Q'h(8Nt:8NАL͵9؏ݏDia#Q'/n#Q'h}H P^H Z8NGNz^~$H x -AR;NmH y~$ ̎S > ;NH T;NH xE8eGN)qGN߼qD8en#Q'hH @H pה9HO]S ]f`v?u|iH Zv?uVݏDn#Q'Tq:jq:A+Gzus~W'8ݏgHNpݏg7N_犻χ:a>| bwMq:)n~tq ݏ ݏ|?Sߖ':3F~{_ -? {>1\30~|>/xۻ\|g{ɥH$\DRHI}@"(4fRLI}@2>4fRLͤ>4fR̥h&ͤ>4d.}@3h&ͤ>$sI}@3h&ͤ> KLI}@3h&\fRLI}@3H4fRLI}@2>4fRLͤ>4fR̥h&ͤ>4d.}@3h&ͤ>$sI}@3h&ͤ> KLI}@3h&\fRLI}@3H4fRLI}@2>4fRLͤ>4fR̥h&ͤ>4bn}@3h&ͤ>$sI}@3h&ͤ> KLI}@3h&\fRLI}@3H4fRLI}@2>4fRLͤ>4fR̥h&ͤ>4d.}@3h&ͤ>$sI}@3h&ͤ>[LI}@3h&\fRLI}@3H4fRLI}@2>4fRLͤ>4fR̥h&ͤ>4d.}@3h&ͤ>$sI}@3h&ͤ> KLI}@3h&\fRLI}@3(4fRLI}@2>4fRLͤ>4fR̥h&ͤ>4d.}@3h&ͤ>$sI}@3h&ͤ> KLI}@3h&\fRLI}@3H4fRLI}@2>4fRLͤ>4fR̥h&ͤ>4d.}@3h&ͤ>$sI}@3h&ͤ> KLI}@3h&\fRLI}@3H4fRLI}@2>4fRLͤ>4fR̥h&ͤ>4bn}@3h&ͤ>$sI}@3h&ͤ> KLI}@3h&\fRLI}@3HWϟG}Ῑ>tn[?Q-}WoJ0BCq2s}N$pA[򟾽orS/~F$FB#Hh @#H aB#0Lh @3&4ÄF` fR#0Lh 0&4ͤF` aB#0LhI0&4ÄF`4aB#0Lh 0h&5ÄF` aB#Lj 0&4ÄF aB#0Lh @3&4ÄF` d.0&4ÄF`4aB#0Lh 0h&5ÄF` aB#Lj 0&4ÄF aB#0Lh @3&4ÄF` fR#0Lh 0&4ͤF` aB#0LhI0&4ÄF`4aB#0Lh 0H aB#0F`4aB#0Lh 0h&5ÄF` aB#Lj 0&4ÄF aB#0Lh @3&4ÄF` fR#0Lh 0&4ͤF` aB#0LhI0&4ÄF`4aB#0Lh 0H aB#0Lh @3&4ÄF` fR#0Lh 0&4ͤF` aB#0LhI0&4ÄF`4aB#0Lh 0h&5ÄF` aB#Lj 0&4ÄF aB#0Lh @3&4ÄF` d.0&4ÄF`4aB#0Lh 0h&5ÄF` aB#Lj 0&4ÄF aB#0Lh @3&4ÄF` fR#0Lh 0&4ͤF` aB#0LhI0&4ÄF`4aB#0Lh 0H aB#0Lh @3&4ÄF` fR#0Lh 0&4ͤF` aB#0LhI0&4ÄF`4aB#0Lh 0h&5ÄF` aB#Lj 0&4ÄF aB#0Lh @3&4ÄF` d.0&4ÄF`4aB#0Lh 0h&5ÄF` aB#Lj 0&4ÄF$WϡG῕F//)oz[#X^#~Fo|4WF?F|gyN+xVTFzВrq|s~W -G/@KnwgE#OZ!h +R v; -9l664w殺Gr4x,n$ 2lnǰ4ˠ͘uˠ0ZVigYmܶ یв ۼنl3-6Hq{&21h3'<4,iwymy2l~l.*r >ꂭ"pK6T`P9wJ.*+\! O0x+`0waw0CE0LAu\ơ-5Nd8~`8t ی1m~8`0W L'2h3e\Cvq`zw3˸Ƃ25yuq(fZsapO5˸<q 9x1ӹM1h3~2 -9\Ƶ62 yOqmͨ,62g!v˸<.rWe<.2Satۼm6ڭm1Quˠͨ\5 JCeE \Q[Q(\Q(\QlGQ_(-.(JzlGQsGQ]q% - -5q%P:(J6mGQe8RuE .(JvlGQ6j88mGQWeE2D82DA2DUwGQ઻ :DUwGQջ8궎(QP빌(Q`Ym޶(.(Jz.(JO(رuEZeE Tﶎ(\Q(s:DA2DA2&Q(QP빌(QP빌(QPٌcsGQջ(JХ8a(Jz.(Jz.(J`"j8e[Q(\Q(\Q(܇ j=q%P:z(Jz.(Jz.(J`2o8]Q.q% -j=q%0ʹuEZeE T(Qe8u,6?(QP빌(QNuE sGQp[Q(\Q@n8궎(QβuEZeEZeE >eEϳC3T[Q@)c8?q%P:Dn!)%*eEgXm~lGQq%*29XQˠͨl!+j=q%*j=q%P:z(JTz.(J.(J`Pa[Q\Ql \Qei8TD\Q\Q4 MP\Q\Q@WuEJo1 ( -q%3lGQsGQsGQ_ζ(Q3\Q|ef q%*z88]Q`pGQg(Q l:Bq%*&.(JTLH]Qת(J9lGQ(Jg:DE2DE2DE2&(mGQֳD2D`uGQbp(Q]Q|ƕefMasGQ1[ǽj=q(^Q˸Wq(Ze+Js\ƽDuGy{>Ϡ4.J*7%2%_A3yf<ͬ8A3yd41h&cLǠ>6\/ɗo}~竟?K.}@"($DRHI}@!>4fRLͤ>4fR̥h&ͤ>4d.}@3h&ͤ>$sI}@3h&ͤ> KLI}@3h&\fRLI}@3H4fRLI}@2>4fRLͤ>4fRP̭h&ͤ>4d.}@3h&ͤ>$sI}@3h&ͤ> KLI}@3h&\fRLI}@3H4fRLI}@2>4fRLͤ>4fR̥h&ͤ>4d.}@3h&ͤ>sI}@3h&ͤ> KLI}@3h&\fRLI}@3H4fRLI}@2>4fRLͤ>4fR̥h&ͤ>4d.}@3h&ͤ>$sI}@3h&ͤ> KLI}@3h&fRLI}@3H4fRLI}@2>4fRLͤ>4fR̥h&ͤ>4d.}@3h&ͤ>$sI}@3h&ͤ> KLI}@3h&\fRLI}@3H4fRLI}@1>4fRLͤ>4fR̥h&ͤ>4d.}@3h&ͤ>$sI}@3h&ͤ> KLI}@3h&\fRLI}@3H4fRLI}@2>4fRLͤ>4fRP̭h&ͤ>4d.}@3h&ͤ>$sI}@3h&ͤ> KLI}@3h&\fRLI}@3H4fRLI}@2>4fRLͤ>4fR̥h&ͤ>4d.}@3h&ͤ>sI}@3h&ͤ> KLI}@3h&\fRLI}@3H4fRLI}@2>z|<7 ӿ5>[~K~>'X0`0?cj|%ʗO=JFB)H* @#h$R K)0L( 0&ͤR`P - JaB)0L(I0&ÄR`P -4JaB)0L( 0h&ÄR`P - JaB)L* 0&ÄRT - JaB)0L( @3&ÄR`P - JfR)0L( 0&ͤR`P - JaB)0L(ÄR`P - JaB)L* 0&ÄRT - JaB)0L( @3&ÄR`P - JfR)0L( 0&ͤR`P - JaB)0L(I0&ÄR`P -4JaB)0L( 0h&ÄR`P - JaB)L* 0&ÄR K)0L( 0&ͤR`P - JaB)0L(I0&ÄR`P -4JaB)0L( 0h&ÄR`P - JaB)L* 0&ÄRT - JaB)0L( @3&ÄR`P - JfR)0L( 0&ͤR`P - JaB)0L(ÄR`P - JaB)L* 0&ÄRT - JaB)0L( @3&ÄR`P - JfR)0L( 0&ͤR`P - JaB)0L(I0&ÄR`P -4JaB)0L( 0h&ÄR`P - JaB)L* 0&ÄR K)0L( 0&ͤR`P - JaB)0L(I0&ÄR`P -4JaB)0L( 0h&ÄR`P - JaB)L* 0&ÄRT - JaB)0L( @3&ÄR`P - JfR)0L( 0&ͤR`P - JaB)0L(ÄR`P - JaB)L* 0&ÄRT - JaB)0L( @3&ÄR`P - JfR)0L( 0&ͤR`P - JaB)0L(I0&ÄR`P -4JaB)0L( 0h&ÄR`P - JaB)L* 0&ÄR K)0L( 0&ͤR`P - JaB)0L(I0&ÄR`P -4JaB)0L( 0h&<oJVJh;)o`y_oǷO#RC5Sz^oAM5//{{J{TjK5HI@"H$UܪfR5LI@3HR 4fR5LI@2jT 4fR5LTͤjT 4fR5̥h&UͤjT 4d.@3h&UͤjT $sI@3h&Uͤj K5LI@3h&U\fR5LI@3HR 4fR5LI@1jT 4fR5LTͤjT 4fR5̥h&UͤjT 4d.@3h&UͤjT $sI@3h&Uͤj K5LI@3h&U\fR5LI@3HR 4fR5LI@2jT 4fR5LTͤjT 4fR5P̭h&UͤjT 4d.@3h&UͤjT $sI@3h&Uͤj K5LI@3h&U\fR5LI@3HR 4fR5LI@2jT 4fR5LTͤjT 4fR5̥h&UͤjT 4d.@3h&UͤjT sI@3h&Uͤj K5LI@3h&U\fR5LI@3HR 4fR5LI@2jT 4fR5LTͤjT 4fR5̥h&UͤjT 4d.@3h&UͤjT $sI@3h&Uͤj K5LI@3h&UܪfR5LI@3HR 4fFI@3HR 4fFI@3HR 4fFI@3HR 4fFI@3HR 4fFI@3HR 4fFI@3HR 4fFI@3HR 4fFI@3HR 4fjT 4bn@3h?I@3HR 4fFI@3HR 4fFI@3HR 4fFI@3HR 4fFI@3HR 4fFI@3HR 4fFI@3HR 4fFI@3HR 4fFI@3HR 4fFI@3(V 4fFI@3HR 4fR5LI@2jT 4fR5LTͤjT 4fR5̥(毞U /3_?Q5-}WTom -G3^@'ECx ^(ߡzxx{%/z~EE{ '쯇rcyuEr;{J"hT(ΡB1 >:=9]ew4fg~ok ^}/ˠk 4&Xm^tTy?2lYc4ˠHn 9a~DA2hoǰy,6wd:ۼO 1l92h3z2h2 ָiZm~YA-6#,6sa&ی/{˰4R6sbˠ͘8q&`6-6NP56ϲ-6Xmޯ 6#-6r >ꂭ"pK6T`P9?8Wm.`fu醉'U]0;Os;\¡Pb"E L\ ׺ _Lo.PJ薚y'eJ?0A:mFy6?e~0Zmao2!qE8\p0[e\cfwۼ˸fTl39ǰg'Śe\C^˸e\C"v˸<.rWe\C\Qq`t )˰kkm޶tkm~l6|l֘(efTx.s%˸D21\csטs1Q繌kAz.s˸D21Qٌcsי:3Q빌Az.:sp-[uڶAz.:sp[u j=q9Ze\gsי\u j=q9:sp/[u j=q9Ze\gsי\uSmי\u j=q9Ze\gsי϶u\gsי\L ڌ"e\gje\gb23ϰu\g"0\u \u ˸Drי\Q8\/vGQpGQWq% -j=q%z,6/[Q@guEZeEZeE >`XmF22(Jz.(Jz.(JlGQ_(-.(JzlGQsGQ]q% - -5q%P:(J6mGQe8RuE .(JvlGQ6j88mGQWeE2D8Nq% +hnd!^?.'\~?j^խ,n,u_ m>\IP6|>mn_m6shs O{ 36w$`%em_m,6cIDndM6}ft4ڌʭ6+ܭ6j6հͭ]uٹ{k(\ o0uӪ['l̴Qty~\ZWN,{{/LN|::h3ͭ{6:.hs/^j^?&`t}lWcbhh^h^FV.>N3L 1pt>I6rIPֽriar:FV.cyO{ o&(Z*?_ ԿP7<|l_H^<Uo__ a9~P\?o1xxu?~ {Lf3•~7@·nϳ8̗~|{~ﰗa>3ŦUu'plk:͝]׽aszB J8}vu{iDU^[E"h{4P](̻HeH7 ]Q8(#]Q8efq ۼmFYn%M[Y2VmFYWo%j7m ޛp%\ nUw79˸D2n0Q빌Az.s˸D2n0u`eD2n0cD2n0Q빌Az6λq9Zed;a&sƤemD2n2Q빌Az.&s˸D2n2wudR22{:n2Q빌TgD2n2Q빌Az.&s˸D2n2Q빌Az.x7:n2Q빌Az.&s˸m2lueZee |:DE2DE2(Kx.(KN8mGY]Q\Q\Qgq%*z8=ee nvGYg,QQ빌, +ee q%*z8=eeee (KTL]Q.c|:DLP@oW@2%P빌{e z.^Y˸W@2%4#pC|u+Ks.^Ye+K3{e \|q,e+Ksx3q,Ze+KsT5 sp[ǽj=q,Ze+Ksc\ƽSl\ƽďiDuGy{>h> ,\Y^ _0qj45Lއ}yC0G?jD+P~WN/{7)S85c#D>p}BAx l.)\0S[ 3+ tc43y aG(E\+Z3>_0j<\N~|.lzy֔d^f9͈qVǰͣwMml3>wM;1lsy{͠ϩnxr#7uw vtY 9nbW]S`\yǵ>F3l3O=4dt͘k4S`'h)rն9vrombQɹkf]6#\7یϵyeqTˎS ϣ9jwMAg6e6e6ea?imFktuqD]v"Dg5u)u>r:Ar ܗ :\8N)uN8N nR'v7NPhv:AG)u|G/7N8mnˍSkąu:&7N 3%41{qJu2ѡ8NnR't ܦ zӎS`/ӎS )saJ)si)sԎS`Ͱcq5eyba:8e28e|9XQχ9ȇχ9X״9X9XǴ9Xmquqeq,k,ϰ9Xp:ώv:p:kNχ:O?q:)u^> +f28Ne$7N4Z A P7NklqJ;8NNnR'h 7NS c)rKqnR'&7NPp:An:f`{>jf8NОϹIa[w:A{jt68E6Tv"ݎS n)rq8]lv.g6nfktͥq䒰jǎS`[qlku;Nt;Nyt;N32wMu;N\m.͎S`h)r9hs:ACu:u͍S _0nR'mf )u6݋D!8N[nR'hin.{Pa qJ70ǰ4jnR'` +qJinR'hHGN~$(/~$VnR'l#Q'hH Zv?u|H pA~$<ЎS F~$O]S| 8cwM_7N?:S8GGyy>)oƓoWῙNyz?Npji| =~J. +T G|y?o@Mt]$B.}@"H$> rI}@3h&ͤ> KLI}@3h&\fRLI}@3H4fRLI}@2>4fRLͤ>4fR̥h&ͤ>4d.}@3h&ͤ>$sI}@3h&ͤ> KLI}@3h&fRLI}@3H4fRLI}@2>4fRLͤ>4fR̥h&ͤ>4d.}@3h&ͤ>$sI}@3h&ͤ> KLI}@3h&\fRLI}@3H4fRLI}@1>4fRLͤ>4fR̥h&ͤ>4d.}@3h&ͤ>$sI}@3h&ͤ> KLI}@3h&\fRLI}@3H4fRLI}@2>4fRLͤ>4fRP̭h&ͤ>4d.}@3h&ͤ>$sI}@3h&ͤ> KLI}@3h&\fRLI}@3H4fRLI}@2>4fRLͤ>4fR̥h&ͤ>4d.}@3h&ͤ>sI}@3h&ͤ> KLI}@3h&\fRLI}@3H4fRLI}@2>4fRLͤ>4fR̥h&ͤ>4d.}@3h&ͤ>$sI}@3h&ͤ> KLI}@3h&fRLI}@3H4fRLI}@2>4fRLͤ>4fR̥h&ͤ>4d.}@3h&ͤ>$sI}@3h&ͤ> KLI}@3h&\fRLI}@3H4fRLI}@1>4fRLͤ>4fR̥h&ͤ>4d.}@3h&ͤ>$sǣ>Lx:v-+{O%\8>'8ͭzozO^^w^\?[R#HhI@#h$4F$ri 0&4ÄF aB#0Lh @3&4ÄF` fR#0Lh 0&4ͤF` aB#0LhI0&4ÄF`4aB#0Lh 0h&5ÄF` aB#Lj 0&4ÄF aB#0Lh @2F` aB#0LhI0&4ÄF`4aB#0Lh 0h&5ÄF` aB#Lj 0&4ÄF aB#0Lh @3&4ÄF` fR#0Lh 0&4ͤF` aB#0LhI0&4ÄF`$si 0fE#0LhI0&4ÄF`4aB#0Lh 0h&5ÄF` aB#Lj 0&4ÄF aB#0Lh @3&4ÄF` fR#0Lh 0&4ͤF` aB#0LhI0&4ÄF`$si 0&4ÄF aB#0Lh @3&4ÄF` fR#0Lh 0&4ͤF` aB#0LhI0&4ÄF`4aB#0Lh 0h&5ÄF` aB#Lj 0&4ÄF aB#0Lh @2F` aB#0LhI0&4ÄF`4aB#0Lh 0h&5ÄF` aB#Lj 0&4ÄF aB#0Lh @3&4ÄF` fR#0Lh 0&4ͤF` aB#0LhI0&4ÄF`$si 0&4ÄF aB#0Lh @3&4ÄF` fR#0Lh 0&4ͤF` aB#0LhI0&4ÄF`4aB#0Lh 0h&5ÄF` aB#Lj 0&4ÄF aB#0Lh @2F` aB#0LhI0&4ÄF`4aB#0Lh 0h&5ÄF` aB#Lj#FJ#z7,|W#x>P#{ +vV3?̿KeUĿ^?|=hI9^z9wTN %_7;]A-4wD]asQt;]C6wc}vu{vsAsWݣi9L ^Ax7hM ۼ醩l~e4ǰiA2h3r 44-6#e=ߎaXm^3tybwcsefeSe|qӴ ,6 n[mFhYm^lL_ai8=pIdڌ ش |;A <˶ ۼcyd6TkwNu + suV~Z%y0(;Wm.`fu醉'U]0;Os;\¡Pb"E L\ ׺ _Lo.PJ薚y'eJ?0A:mFy6?e~0Zmao2!qE8\p0[e\cfwۼ˸fTl39ǰg'Śe\C^˸uSmGQ(JTL\Q@n8LPq%*`uE \P[Q|T`G-6ֳ\Q\Q@o8(QQ빌(S(AчeVlGQsGQ7sGQ;a(JPqGQsGQ҈s 7N4BQsGQsGQ]q%*1p(~2*|[Q@ϰuEZeEZeE |9:DEpGQA3\Q.(JTz.(JwGQ=eE2D.c8A[Q (Q1!uGQ_(QuE T(a8888H:^uEZfs8eE2DEgtGQWaQ699_eE Ll\ƽn{E z.^Qb[ǽj=q(Ze+Js`I0Q빌{E z.>DuGhqQb:6?(LG D~|Gl|]s}^Ab8W?Wxx#CEx~pÌ?V@|evC<]ory uD<\1H$cH cL3y95W-C3˹ pM8'_~{/>KHI}@"H$fRLI}@3H4fRLI}@2>4fRLͤ>4fR̥h&ͤ>4d.}@3h&ͤ>$sI}@3h&ͤ> KLI}@3h&\fRLI}@3H4fRLI}@1>4fRLͤ>4fR̥h&ͤ>4d.}@3h&ͤ>$sI}@3h&ͤ> KLI}@3h&\fRLI}@3H4fRLI}@2>4fRLͤ>4fRP̭h&ͤ>4d.}@3h&ͤ>$sI}@3h&ͤ> KLI}@3h&\fRLI}@3H4fRLI}@2>4fRLͤ>4fR̥h&ͤ>4d.}@3h&ͤ>sI}@3h&ͤ> KLI}@3h&\fRLI}@3H4fRLI}@2>4fRLͤ>4fR̥h&ͤ>4d.}@3h&ͤ>$sI}@3h&ͤ> KLI}@3h&fRLI}@3H4fRLI}@2>4fRLͤ>4fR̥h&ͤ>4d.}@3h&ͤ>$sI}@3h&ͤ> KLI}@3h&\fRLI}@3H4fRLI}@1>4fRLͤ>4fR̥h&ͤ>4d.}@3h&ͤ>$sI}@3h&ͤ> KLI}@3h&\fRLI}@3H4fRLI}@2>4fRLͤ>4fRP̭h&ͤ>4d.}@3h&ͤ>$sI}@3h&ͤ> KLI}@3h&\b(ߠ27N׌oy[ +.}@0sbq?Q;U +i돗R/+_.?g{N* @"h$RP +4JD.0&ÄR`P +4JaB)0L( 0h&ÄR`P + JaB)L* 0&ÄRT + JaB)0L( @3&ÄR`P + JfR)0L( 0&ͤR`P + JaB)0L(I0&ÄR`P +4JaB)0L( 0HR + JaB)0L( @3&ÄR`P + JfR)0L( 0&ͤR`P + JaB)0L(I0&ÄR`P +4JaB)0L( 0h&ÄR`P + JaB)L* 0&ÄRT + JaB)0L( @3&ÄR`P + Jd.0&ÄR`P +4JaB)0L( 0h&ÄR`P + JaB)L* 0&ÄRT + JaB)0L( @3&ÄR`P + JfR)0L( 0&ͤR`P + JaB)0L(I0&ÄR`P +4JaB)0L( 0HR + JaB)0L( @3&ÄR`P + JfR)0L( 0&ͤR`P + JaB)0L(I0&ÄR`P +4JaB)0L( 0h&ÄR`P + JaB)L* 0&ÄRT + JaB)0L( @3&ÄR`P + Jd.0&ÄR`P +4JaB)0L( 0h&ÄR`P + JaB)L* 0&ÄRT + JaB)0L( @3&ÄR`P + JfR)0L( 0&ͤR`P + JaB)0L(I0&ÄR`P +4JaB)0L( 0HR + JaB)0L( @3&ÄR`P + JfR)0L( 0&ͤR`P + JaB)0L(I0&ÄR`P +4JaB)0L( 0h&ÄR`P + JaB)L* 0&ÄRT + JaB)0L( @3&ÄR`P + Jd.0&ÄR`P +4JaB)0L( 0h&ÄR`P + JaB)L* 0&ÄRT +$|+[)UNOS +~{JJ;oGIj0'4T|jI_^.?uI@!j T $DR5H +UͤjT 4fR5̥h&UͤjT 4d.@3h&UͤjT $sI@3h&Uͤj K5LI@3h&U\fR5LI@3HR 4fR5LI@2jT 4fR5LTͤjT 4fR5̥h&UͤjT 4bn@3h&UͤjT $sI@3h&Uͤj K5LI@3h&U\fR5LI@3HR 4fR5LI@2jT 4fR5LTͤjT 4fR5̥h&UͤjT 4d.@3h&UͤjT $sI@3h&Uͤj[5LI@3h&U\fR5LI@3HR 4fR5LI@2jT 4fR5LTͤjT 4fR5̥h&UͤjT 4d.@3h&UͤjT $sI@3h&Uͤj K5LI@3h&U\fR5LI@3(V 4fR5LI@2jT 4fR5LTͤjT 4fR5̥h&UͤjT 4d.@3h&UͤjT $sI@3h&Uͤj K5LI@3h&U\fR5LI@3HR 4fR5LI@2jT 4fR5LUͤjT 4fR5̥h&U͌P 4fR5̥h&U͌P 4fR5̥h&U͌P 4fR5̥h&U͌P 4fR5̥h&U͌P 4fR5̥h&U͌P 4fR5̥h&U͌P 4fR5̥h&U͌P 4fR5̥h&U@3h&UܪfR5 Q 4fR5̥h&U͌P 4fR5̥h&U͌P 4fR5̥h&U͌P 4fR5̥h&U͌P 4fR5̥h&U͌P 4fR5̥h&U͌P 4fR5̥h&U͌P 4fR5̥h&U͌P 4fR5̥h&U͌P 4fR5P̭h&U͌P 4fR5̥h&UͤjT 4d.@3h&UͤjT $sI@3h&Uͤj K5P_=>{T_fbU+{U6~hP/R !a_?POXV=@<xkAx2h3*d -E0pGQa[QuEGLAV>q2h3j=qZeEZeE T(a88|<8}Xmnq%*j=q%1:nq(j=q%*jcy:q%*j=q%*8p(D)%*j=q%*j=q%UmGQs 7sGQ(Jg:DE2DE2mGQg(Q|Sˠ.(JT q%*j=q%XỌ(2DEpGQluE (JTL]Q(U[Qs:*|[Q@ϰuEZeEZeEZeE L$lGQ:DEg39ZeE2DpGQ3(Q+˰(/2&c{E z.^Qb7[ǽj=q(^Q˸W@2%P빌{Eyd\ƽj=qQ:#J4[}Dn븏(1mv|hZAi]Uo&J$S~,|Gl|]s}~$^bG!Oym9 '^`Exɱ{˷\Rzzzzn B#!WH#Wh$ -\+4rDRH B#!Wh$ -\raB0L 0!Wh& +j=qAz.(JzuE 2luEZeEZeE LDmGQc888pD2*|[Q@ϰuEZeEZeE LmGQڼ82DA2(QP빌( +q%ʳlGQpeq% +j=q%)(t.(J`n88mGQWq%Y(QP빌(QP빌(G(:J[Q(q%*Rj2DE(Q˰͏(J:DB] +8j8`E2DE2*|[Q@ϰuEZeE >eE >,6b88mA8ޱ DuGy{>Ϡ4.J*7%\)J\oyoy#69g>?  1J#H'ȼ6hqsExu"W[@{|OO=7 +\+$a+4rFBH B")Wh$ +\+4rD.0!W& +Ä\a+4raB0L 0!Wh& +Ä\a+ raBL 0!W& +Ä\+ raB0L B3)W& +Ä\a+ rfR0L 0!W& +ͤ\a+ raB0LyB0L 0!W& +ͤ\a+ raB0L Ä\a+ raBL 0!W& Ä\+ raB0L B3)W& Ä\a+ rfR0L 0!W& ͤ\a+ raB0LI0!W& -Ä\a+4\a+ raB0LI0!W& +Ä\a+4raB0L 0!Wh 0!W& +Ä\a+4raB0L 0!WH+ raB0L B3)W& +Ä\a+ rfR0L 0!W& +ͤ\a+ raB0LI0!W& +Ä\a+4raB0L 0!Wh& +Ä\a+ raBL 0!W& +ͤ\a+ raB0LI0!W& Ä\a+$s 0!W& Ä\+ raB0L B3)W& Ä\a+ rfR0L 0!W& ͤ\a+ raB0LI0!W& Ä\a+4raB0L 0!Wh& -Ä\a+ raBraB0L 0!Wh& -Ä\a+ raB%W& -Ä\a+ rfR0L 0!W& -ͤ\a+ raB0LI0!W& -Ä\a+4raB0L 0!Wh& Ä\a+ raBL 0!W& -Ä\+ raB0LI0!W& -Ä\a+4raB0L 0!WH+ raB0L B3)W& -Ä\a+ rfR0L 0!W& -ͤ\a+ raB0LI0!W& -Ä\a+4raB0L 0!Wh& -Ä\a+ raBL 0!W& -Ä\+ raB0L B3)W& -Ä\a+ rd.0!W& +Ä\+ raB0L B2\a+ raB0LI0!W& Ä\a+4raB0L 0!Wh& Ä\a+ raBL 0!W& Ä\+ raB0L B3)W& Ä\a+ rfR0L 0!W& ͤ\a+ raB0LI0!W& -Ä\a+4raB0L 0!WH+ raB0L B3)W& +Ä\a+$s 0!W& +Ä\+ raB0L B3)W& Ä\a+ rfR0L 0!W& ͤ\a+ raB0LI0!W& Ä\a+4raB0L 0!Wh& Ä\a+ raBL 0!W& -Ä\+ raB0L B3)W& -Ä\a+ rd.0!W& +Ä\+ raB0L B2\a+ raB0LI0!W& Ä\a+4raB0L 0!Wh& -Ä\a+ raBL 0!W& -Ä\+$Wg ıAeo%WLކ"@?MM-OHoHj%Gzx -!_?_?o{j$T%u~򟾽orӹ%Ͼo ?6 JyڜD#Aʳ454pGA\hAsAQ2>5Zsʨ6y9ð͝i cf\s5QB)6jdKاqRjp(ՎSRe)JyT;Nc V8lsvn6cza)J)n~-8;N1G;NE<܋mnŎ6baK1q)nbf7Nŕ7Nrp`*)B(n6) =ǰ͵qo0B0%ic \1״1q8mA6ڵ9ik3spic"N8mAQqژF8m9ƍV6cV)sicv8mB_6O c)sklqҮA> fv2y"A)srêcfl)sC;Ny;NZ3l3gac)sh;N<ٵ9g63 6,c)sǍD*qڙe>nv }7N;sǍ>t RǍ,kڑzv#~k3rߘǍfT6?n6ckfH];M&Aė|@7N;r?{qڑp9 6qmlG یoEwM'ی -]6c)r;N'l;N}ɶ9v.m5]l3R̵yͨ\7}A%#Ǡv"BQ)r9mF>mo>mnˎ6#5=l3]S ˎS 9':|`l,7N \S*ˍS*?uASu\!>|>T8r)TS*)JnR9(8r)>ǰmqJpgqJeTs63)dtAGv{qJ8rtAuqeqf5e6Li5e=8ebql:-wsOopה9ڴ99ʴ9ݎS`EY>`ӎS`]ӎS`ӎS`EOsה9Xmquqeq,k,ϰ9X02הAO`LCpqJ൫CTP7Nߧ镏 7NpɍS*|)ÍS*nR9G7NӇTiÍS*)gkR7qJbTwܹ6#ݍS*܉) 5lsnR9hOvNc}jَS`ۻqD8E"Nmݎ6sc8lsvnt;N\9Pqlkw;Nmn)rSn6n6cF6nakͥql8E6|v"1mnR9hnR9qJ ƍS*+:mnv+6݋D!8r[nR9hpq%qJn#Q9`#Q9hA7N4jnR9` -qJinR9hHGr~$*(/~$*VnR9l#Q9hHTZv?|HTpA~$* k)sԎS`[v?tAC'9ȎS zBŵ9؊ݏDWԎS`}~$* ~$*ͫA؎S`v?VݏDݏDGr[v263˶KGrʴ2~$*tTUTZ)v?ҫc#y~W98Gz~W98q*gHrMrgkJ倏*vהyG9x`H`H?o χ3%m *7Sz[L>*D97{_/|Io?߫?:oXXۨ姽2o/|ۻ\=ᷧ+t$ro+Gf:uI O3{zfLgNޟdAooz8h|?Bk:f3L1vuw{̥ǠHs3ݵHYZkfqע֏kQzvVY_p#һgF33ylw-{\Z3._'H2^j{6#ykr|Z}kG;fъ|Ws-{E3s/|?/-Jv`9>p=rkb] &6G9cozL] >Z G# `rKյ98x޵98x‘A\馫|,ݵ@Yt ^_C3CuU>p] *?nGnG>Bѵ98nGAnGӽrU>,9Z rp#t{t (0sϺ*OWkGOy0ׂ|v|?fWWItumF"7_#1nGOĩWLVk3rp| rpq98s|G/,nG] *OsU>+W;rp1f G)*nyjGy$f9:N3h3 - 7_E] prpQxv9w-nӮ*|i`nڥՁeULl:::yx;W'GU]yxv}up /7_<W'iZ|upW'ۮ&:ݮoW'_ˮ||u9B2<ǟk1>ǖ|ov}u~=뫓G=NۮmW'|+ŮNV]_ǵGiWkW'>ծN}櫓GmW{Ǒq\ѧˮN}:]_ѧ|>]v}uG櫋3z6iW>EqU$ 뫋G"0|uS>U?GE6f}N櫋GmWߞ[| =w-{]_~RpU]yMmv}Gܵo1|u7_]o=N@3vѵGnW߾9HZȷs{Ͳ#in>6>N>⟛͵xO\m|iӴ}?~a>|\wv}oϣ8Lyˮo?]_}c~{>]`WruwYَu~=~oo_g}?gƉHW~{aes~_yo>o3x(??rx@ﯷ|\W/+B~.+?opHKI'h7GOw eKͼ2cT56W xq یwỔ}\Jr) upỔ[,%-KI!͜wr)im!ֳm?RC.%!m?RC.%^l?R;m?RҞ6jd>6?6s!1\+%;|spqɮM7auAl?lܶnvw ۼ9>l33| -AGY 3<\G ۼ퇼rx#1l3|je<3VSr[OiCn5r9u9Hr9&Cn5?)r9!syCn5?\?l5_p ztӻ!g=m?w5gemyyo]ippټ="k!r4L~g8fT3lw~[*szfԏ.>CR\JoCR}~[*}L{{b~[*G;mCRc{K<(CRSFgR,i潥Rm?|oj!obTOϐTm?->CRAmh!op ՜pt[yCn5?|" Py0!}\?V310!9E3uUj~Vr96Cn5?ܦ>C@aWw[>Czj~ ,:޶9c!sp`1ǼAr!sp?C>C Oq!sCӺ%ۚC SgB ,bgDf!sŃAg>ފ}l?dr>C }A~ѻϐ9/)29gD9xN?a>\6gxxOhw>C>\(|;w~G<;gGn]6!^*!΃]?Q5hwvv/|r >C>ڽ|%í|v E|{ȱZЗւm?|p1lzl?ւac!@`rk&nrkA(9r3K{b60i@*z &/:VX[IOĈ$@ d:װӂ:aL K_N '^yiAkx G|=ݷ_Oi5촠yi_yiA}N :)I_N w|={H=>;-?K8} ߝ<)=q|޿wYypzJO+={}+Kz{fvlvksj񌯧v[z{]Sz};zJO%@zv)=W|=ݷm=zJOo3Zy[gksSzwo?:*} yݹ_Oi΃ -azʺ=nS'Pa'v#>;v)=xlv<v+zJO?Ѣl: )=:yuvrqSN>+ҩ5`">a_O<%kx+r^wj^N͏#r᝚;=)wj~>)wj~>)wj~)wj~;5?W|=Nig|=#5S>R=C!_Rܗͪ.cOQoWݷ~QWQ[v=>?c]חQ/T5i}Gpnŏϭ~>mx6ފF[h+>mx6ފF[h+>mx6ފF[h+>mx6ފF[h+>mx6ފF[h+>mx6ފF[h+>mx6ފF[h+>mx6ފF[h+>mx6ފF[h+>mx4c+>m`x+>m`x+>m`x+>m`x+>m`x+>m`x+>m`x+>m`x+>m`x+>m`ь`V|0ڊg`V|0ڊg`V|0ڊg`V|0ڊg`V|0ڊg`V|0ڊg`V|0V<o`⃹>x+>m`[h+>m`ϭx4c+>m`[h+>m`ϭx6ފF[h+>mx6ފF[h+>mx6ފF[h+>mx6ފF[h+>mx6ފF[h+>mx6ފF[h+>mx6ފF[h+>mx6ފF[h+>mx4c+>m`x+>m`x+>m`x+>m`x+>m`x+>m`x+>m`x+>m`x+>m`x+>m`ь`V|0ڊg`V|0ڊg`V<o܊F[h+>mųV|0ϭ`V<o܊F[h+>mųV|0ϭ`V<o܊F[h+>mųV|0ϭ`V<o`V<V|0ڊF[lV|0ڊF[lV|0ڊF[lV|0ڊF[l[^2[Uk϶wV~ǿ|߿bb?~_؊F[lV|0ڊF[lV|0ڊF[lV|0ڊF[lV|0ڊF[lV|0ڊF[lV|0ڊF[lV|0ڊF[lV|0ڊF[lV|0ڊF[hV|0ڊF[h+>mųV|0ڊF[h+>mųV|0ڊF[h+>mųV|0ڊF[h+>mųV|0ڊF[h+>mųV|0ڊF[h+>mųV|0ڊF[h+>mųV|0ڊF[h+>mųV|0ڊF[h+>mųV|0ڊF[h+>mţ[h+>m`[h+>m`[h+>m`[h+>m`[h+>m`[h+>m`[h+>m`[h+>m`[h+>m`x8>V<LV|0ڊg`[h+>mx6ފV|0ڊg`[h+>mx6ފV|0ڊg`[h+>mx6ފV|0ڊg`[h+>mx6ފV|0ڊg`z_O[h+>mţ[1)c+>mx6ފV|0ڊg`[h+>mx6ފV|0ڊg`V|0ڊg`V|0ڊg`V|0ڊg`V|0ڊg`V|0ڊg`V|0ڊG3V|0ڊF[h+V|0ڊF[h+V|0ڊF[h+V|0ڊF[h+V|0ڊF[h+V|0ڊF[h+V|0ڊF[h+V|0ڊF[h+V|0ڊF[h+V|0ڊF[h+؊F[h+>mx6ފF[h+>mx6ފF[h+>mx6ފF[h+>mx6ފGC??jM[j kwޟ75{/g|'3gl\5;l\q5;Qq5;l\5;l\q5;Qq5;l\5;l\q5;Qq5;l\5;l\q5;Qq5;l\5;l\q5;Yq5;l\5;l\q5;Qq5;l\5;l\q5;Qq5;l\5;l\q5;Qq5;l\5;l\q5;Qq5;l\5;l\q5;Yq5;l\5;l\q5;Qq5;l\5;l\q5;Qq5;l\5;l\q5;Qq5;l\5;l\q5;Qq5;l\5;l\qNfl\q5;hF5;l\q͎fl\q5;hF5;l\q͎fl\q5;hF5;l\q͎fl\q5;hF5;l\q͎fl\q5;hF5;l\qNfl\q5;hF5;l\q͎fl\q5;hF5;l\q͎fl\q5;hF5;l\q͎fl\q5;hF5;l\q͎fl\q5;hF5;l\qNfl\q5;hF5;l\q͎fl\q5;hF5;l\q͎fl\q5;hF5;l\q͎fl\q5;hF5;l\q͎fl\q5;hF5;l\qNfl\q5;hF5;l\q͎fl\q5;hF5;l\q͎fd~֮X=f'W@:}:{^?ܵ:_g_~yswE|]~)Ojg(QE|0*Q`Tijq`T">l\">FE<FE|0*QE|0*Q`Tijq`T">l\">FE<FE|0*QE|0*Q`TģE|0*Q`Tijq`T">l\">FE<FE|0*QE|0*Q`Tijq`T">l\">FE<FE|0*QE|0*Q`Tijq`T">hF`T">l\">FE<FE|0*QE|0*Q`Tijq`T">l\">FE<FE|0*QE|0*Q`Tijq`T">l\">G3`T">g">FE|0*ٸFE|0*Qx6.Q`T"`T">g">FE|0*ٸFE|0*Qx6.Q`T"`T">g">FE|0*ь">FE|0*ٸFE|0*Qx6.Q`T"`T">g">FE|0*ٸFE|0*Qx6.Q`T"`T">g">FE|0*ٸFE|0*Qx4FE|0*Qx6.Q`T"`T">g">FE|0*ٸFE|0*Qx6.Q`T"`T">g">FE|0*ٸFE|0*Qx6.Q`T"(Q`T"`T">g">FE|0*ٸFE|0*Qx6.8m?SeE|'Wadoϱ{>]_u?b_ xky(_mg(ٸg x6.ь x6.ٸg(ٸg x6.ь x6.ٸg(ٸg x6.ь x6.ٸg(ٸg x6.ь x6.ٸg(ٸg x6. x6.ٸg(ٸg x6.ь x6.ٸg(ٸg x6.ь x6.ٸg(ٸg x6.ь x6.ٸg(ٸg x6.ь x6.ٸg(ٸg x6. x6.ٸg(ٸg x6.ь x6.ٸg(ٸg x6.ь x6.ٸg(ٸg x6.ь x6.ٸg(ٸg x6.ь x6.ٸg(ٸg x2g x6.ٸG3 +Ä\a+ raBLX W2+&ow#@O+~;}"ÿ"IPt%O*?|q~|{VxS!ʗO\?~ d,(HisALi@*Ϛ[xԜFuAsQ\0 F9 Zk)f 6w467|Ȏaq!D 9ìq3AsA`~σ Ӿ6#Bƙϧ̓mat9ð,~64g9 P$`F((wӹ12̬n1lsAsl3|&\m.ՎSRcj)J\{W;NQJn(7cQ8]l37f[t͵qfn~p ڌ(юSR8Ŵw8Ev>l(v>ls/v;N\m.ŎS +b)rp̧qI +]8W8m0q +܋06)y ė9/ sMs\ąw1hf ю98u1oX8mFicu1>n6 7NsZu یYޏ9q1g ff|e63_p >%f涏Ar)sc)sK63y2|=q䉴2y AA8e"8ejͰ͜i:mAL8eff ,ps<7N;sigqڙ87N;sәH7N;s`ciGٍӎ²c0iA|c>n +37N{cQkqیQig1#uml378m~_88iGv>{]S`3 \یǵyG3l35l3*wM'یiAN8|ʳ8Ev &ێS`sqfTr.qtH16sml3Y8m^6gq EAێS`_(f\||-;NیvwM.;NˎS`r8r' sM`.7NtԍS*OqmSpP9rnR97NpT(=qJ堣vTO6)S*Ȟ)MnR9@TӍS*ڍS*)7r +ӍS*i)si)sOqה90uה99aj)swff}>A>]S`kӎS`ӎS`+ӎS w;Ne|uO;NuM;NuN;N=]S`ŷk3sa)sa)sa)s`)s<ÎS`d\S*>i3 )׮2^R9@98}W>f28re$7N4 ATP7NklqJ倻8rNnR9h 7NSTu)rKqn)nR9hqڌDt7Np'TڃvtͭqJ=q:fJ|Av"e;Nmn)rUn98v.yt;N=a[t͵q8ErI؎S`Cc)r8EALI<یܺmݎ6f)r9qLqJ堡úqJӺ)/7N`Ɔ٭HTڬv/woMqJabb)ݏDݏD!8rPqJ))4qJ!k3sGr_Gr[qJݏDf#Q9hHTc#Q94AR;NmHTy~$* ̎S > ;Nv2 +f`+v?^Q;N4|v27v2b;NHTZmv?v? doq,Gr/ A+Grʰ~$**nR9@W-nR9hHrpݏ*^lUβ^a#7}χ9)>]S*|䱻rp)n~m#}e#<ϔ%rL9[or0G{#wzɇC{8~5\~+ȗ~PN\~{ٯBI"RQqԨ;js\wjx4i{O*Z +t)Lf+fvmsKGc.ԏsn0s\il]w7\} d0H0?]YE9f[w-a8Uggumj̓g!\xp=,w-fNZ5||146p p6w-V{U3k> L>]|k:\.rw-v}LP3]ޭZ87y*+{f4yYZ] h{*?:M54s>T7_#Zݵ@ѻc|?|#]c|?T|?+7_#BrpZ 1NwIp*o*?P* +*?x^?gy|||s-ggkGc&|(|DWf /rU>|D*?18|`*o6#g_W|,W9VqU>R*?8%͠9|? c͠p 'w-cWrS6:|5cWr!c3*櫈ɯ]]_]]_t̶9ȃJ|1A9[뫨QmW1@v*/|6#1Ӳ9'*9ߣՁ|u x@nLX|u v}5mWrp/w-x +̲_{smFǵ9 7_M] W7_E}fՁcW9_(^Y3h3 |Sg0]_ﱸv}uQѧan:yv}uG~Iɜǵk}ѧ}ڋeW{in/LYsTdsmѧdnxv}uW߾sעGU/WյGfWo_o]n<WPwV4#߆]_]oۮr=ߺ*cJkWe]_~Irs$fv}-fW߾cW߾fW߾Z⿜#k##\̵x߆]_}gٙ6(>MGZw̵x?]_}ۏnWFU3lzp)ǰ͈xKI(gȥ$p!Pg KIRrỔ Pa?yp!޶r)i=C.%!m?RC.%!m?RC.%C.%Ym?lN_j3\lm?\l3B%2l?\\7 ڴpV6mflwǰac6c~>Çˌ|U͠>åяz.~Ͱͫ~[*76#gȭ\\v[OAc>Cn5?.]?Vs1!Ss[1!cz\?VS!*r9]?VNZs[Ol Gw[1r|}mCN_yW}]6߶.֕fl^c!r"O}mF5>6j|퇼>'iK3-u!o6l?-އ퇼Ǵp'퇼ycm?-<Tc!orl?->e}-f[*ʬ +*fyK yKe~]2뽭9l?dr1}A.ϐ9"}A`2Q<~q3C '3d2,g r!s}At4v:l?<\l}tv_]?!rp~Gs|{)!^||{eIAk/^svnh'gϐ[ ]?K펒#7$ *fj/ν`R㩮n匵DAHDLs*} ;-||vZp tZ 5~}2} ǝpSz}v9K_N Է<촠5`Szڽӂ# zJOo~a׊{ݷROÞv곤aOozJOo_Oi?=zJOoǾaOEx|=ݷ㈯{_aOo;qSz}yv>)==u6}3>><)=W|=ݷK_>zJOץh|=ݷ_Oi)l#}g0><ثkk{]=Szڽ<`}J:} ߝmvZ?><ءp|y~`;)NV|=UvbW8_Oi(_Oi_Oi-ʦ==^_OiG/aO?W|=Į~LÞvnrvb|S:5<_N=ҩ)?Ozvj?1} ;?$} ;y؉]hؽNg|=SktcxzJ_OԼ<\}zJK__OԼooa3ҩy'yxtS:5+ҩc?)U|=Sc)?O_:-<`]|ypNsa_OSuSԼNyuS)wj^ߤσQwj~)wj5kx(=8)wj^~zީy}N-r#r3r+r_OSsSԼ~|O;5?zʝzʝW|=N[|=c_OvS>RW|=#5)? ?zu/}iYl^߬B16m?}}]/oegam=?_{}կolHE|_ַ~V܊7K̏ w9x+⑌`V|0ڊg`V|0ڊg`V|0ڊg`V|0ڊg`V|0ڊg`V|0ڊg`V|0ڊg`V|0ڊg`V|0ڊg`V|0ڊG3V|0ڊF[h+V|0ڊF[h+V|0ڊF[h+V|0ڊF[h+V|0ڊF[h+V|0ڊF[h+V|0ڊF[h+V|0ڊF[h+V|0ڊF[h+V|0ڊF[h+؊F[h+>mx6ފF[h+>mx6ފF[h+>mx6ފF[h+>mx6ފF[h+>mx6ފF[h+>mx6ފF[h+>ms}nųV|0ڊF[h+>s+V|0ڊF[\[lV|0ڊ܊G3V|0ڊF[\[lV|0ڊ܊g`V|0ڊg`V|0ڊg`V|0ڊg`V|0ڊg`V|0ڊg`V|0ڊg`V|0ڊg`V|0ڊG3V|0ڊF[h+V|0ڊF[h+V|0ڊF[h+V|0ڊF[h+V|0ڊF[h+V|0ڊF[h+V|0ڊF[h+V|0ڊF[h+V|0ڊF[h+V|0ڊF[h+؊F[h+>mx6ފF[h+>mx6ފF[h+>mųV|0ϭ`V<o܊F[h+>mųV|0ϭ`V<o܊F[h+>mųV|0ϭ`V<o܊F[h+>mųV|0ڊF[h+>mţ[h+>m`[h+>m`[h+>m`[h+>m`[h~%?W{/Ͽf+gyl+~yqlŏO-/e`[h+>m`[h+>m`[h+>m`[h+>m`[h+>m`[h+>m`[h+>m`[h+>m`[h+>m`fl`V<o`V<o`V<o`V<o`V<o`V<o`V<o`V<o`V<o`V<V|0ڊF[lV|0ڊF[lV|0ڊF[lV|0ڊF[lV|0ڊF[lV|0ڊF[lV|0ڊF[lV|0ڊF[lV|0ڊF[l[h+>mţ[1[h+>mx6ފV|0ڊg`[h+>mx6ފV|0ڊg`[h+>mx6ފV|0ڊg`[h+>mx6ފV|0ڊg`[h+>mx6ފ^V<L;2V|0ڊg`[h+>mx6ފV|0ڊg`[h+>mx6ފF[h+>mx6ފF[h+>mx6ފF[h+>mx6ފF[h+>mx6ފF[h+>mx6ފF[h+>mx4c+>m`x+>m`x+>m`x+>m`x+>m`x+>m`x+>m`x+>m`x+>m`x+>m`ь`V|0ڊg`V|0ڊg`V|0ڊg`V|0ڊgx4? [Yl!h+g6ߴ [v|^;y{O[ךZ9KyxB>sf5;Qq5;l\5;l\q5;Qq5;l\5;l\q5;Qq5;l\5;l\q5;Qq5;l\5;l\q5;Qq5;l\5;l\q5;Qq5;l\5;l\q5;Qq5;l\5;l\q5;Qq5;l\5;l\q5;Qq5;l\5;l\q5;Qq5;l\5;l\q5;Qq5;l\5;l\q5;Qq5;l\5;l\q5;Qq5;l\5;l\q5;Qq5;l\5;l\q5;Qq5;df5;l\q͎fl\q5;hF5;l\q͎fl\q5;hF5;l\q͎fl\q5;hF5;l\q͎fl\q5;hF5;l\q͎fl\q5;df5;l\q͎fl\q5;hF5;l\q͎fl\q5;hF5;l\q͎fl\q5;hF5;l\q͎fl\q5;hF5;l\q͎fl\q5;df5;l\q͎fl\q5;hF5;l\q͎fl\q5;hF5;l\q͎fl\q5;hF5;l\q͎fl\q5;hF5;l\q͎fl\q5;df5;l\q͎fl\q5;hF5;l\q͎fl\q5;hFN)nz/ُj|r ӻL߾#]C?}gu~?1>>XEWޏ"~|__?ǿ|?/~}">l\">FE<FE|0*QE|0*Q`Tijq`T">l\">FE<FE|0*QE|0*Q`Tijq`T">l\">FEFE<FE|0*QE|0*Q`Tijq`T">l\">FE<FE|0*QE|0*Q`Tijq`T">l\">FE<FE|0*QfFE|0*QE|0*Q`Tijq`T">l\">FE<FE|0*QE|0*Q`Tijq`T">l\">FE<FE|0*QE|0*Qx4FE|0*Qx6.Q`T"`T">g">FE|0*ٸFE|0*Qx6.Q`T"`T">g">FE|0*ٸFE|0*Qx6.Q`T"(Q`T"`T">g">FE|0*ٸFE|0*Qx6.Q`T"`T">g">FE|0*ٸFE|0*Qx6.Q`T"`T">G3`T">g">FE|0*ٸFE|0*Qx6.Q`T"`T">g">FE|0*ٸFE|0*Qx6.Q`T"`T">g">FE|0*ь">FE|0*ٸFE|0*Qx6.Q`T"`T">g"͏s3E_Vo|rOǿ|u.y^#ǿg~޿6 x6.ь x6.ٸg(ٸg x6.ь x6.ٸg(ٸg x6.ь x6.ٸg(ٸg x6.ь x6.ٸg(ٸg x6.ь x6.ٸg,ٸg x6.ь x6.ٸg(ٸg x6.ь x6.ٸg(ٸg x6.ь x6.ٸg(ٸg x6.ь x6.ٸg(ٸg x6.ь x6.ٸg,ٸg x6.ь x6.ٸg(ٸg x6.ь x6.ٸg(ٸg x6.ь x6.ٸg(ٸg x6.ь x6.ٸg(ٸg x6.ь x6.ٸ'3 x6.ٸg x4g x6.ٸG3 x6.ٸg x4g x6.ٸG3 x6.ٸg x4g x6.ٸG3 x6.ٸg x4g x6.ٸG3 -x6.ٸg x4g x6.ٸG3 -x6.ٸg x2g x6.ٸG3 +x6.ٸg x4g x6.ٸ'3 x6.ٸg x4g x6.ٸG3 x6.ٸg x4g x6.ٸG3 x6.ٸg x4g x6.ٸG3 x6.ٸg x4g x6.ٸG3 -x6.ٸg x4g x6.ٸG3 -x6.ٸg x2g x6.ٸG3 +x6.ٸg x4g x6.ٸ'3 x6.ٸg x4g x6.ٸG3 x6.ٸg x4g x6.ٸG3 x6.ٸg x4g x6.ٸG3 x6.ٸg x4g x6.ٸG3 +x6.ٸg x4g x6.ٸ'3 x6.ٸg x4g x6.ٸG3 x6.ٸg x4g x6.ٸG3 -x6.ٸg x2g x6.ٸG3 -x6.ٸg x4g x6.ٸG3 -x6.ٸg x4'|DW?)'W}/ۄq7oy~܏"ZįyxR>fϦEfU;QqU;Wl\U;Wl\qU;QqU;Wl\U;Wl\qU;QqU;Wl\U;Wl\qU;QqU;Wl\U;Wl\qU;QqU;Wl\U;Wl\qU;QqU;Wl\U;Wl\qU;QqU;Wl\U;Wl\qU;QqU;Wl\U;Wl\qU;QqU;Wl\U;Wl\qU;QqU;Wl\U;Wl\qU;QqU;Wl\U;Wl\qU;QqU;Wl\U;Wl\qU;QqU;Wl\U;Wl\qU;QqU;Wl\U;Wl\qU;QqU;WdfU;Wl\qՎfTl\qU;WhFU;Wl\qՎfTl\qU;WhFU;Wl\qՎfTl\qU;WhFU;Wl\qՎfTl\qU;WhFU;Wl\qՎfTl\qU;WdfU;Wl\qՎfTl\qU;WhFU;Wl\qՎfTl\qU;WhFU;Wl\qՎfTl\qU;WhFU;Wl\qՎfTl\qU;WhFU;Wl\qՎfTl\qU;WdfU;Wl\qՎfTl\qU;WhFU;Wl\qՎfTl\qU;WhFU;Wl\qՎfTl\qU;WhFU;Wl\qՎfTl\qU;WhFU;Wl\qՎfTl\qU;WdfU;Wl\qՎfTl\qU;WhFU;Wl\qՎfTl\qU;WhFNIn{/zUUO>kUki+:V?{|,S~ x\g#n Ww}cR?}kNUf][2u׹G2W2W[<e~*Wگdַy(:-vc~1;<?+=:`KE{>A0u̯~*:1_ccXY&SܱRz,^uklwU]EM0u̫.1u̫Ӎd맸.X:}b1;=VyG1hKŪc~eqz,:^W1sOQ|m:阏:.cq>U.cqֹv;̛YZX)U{:ws=h+󻎹x1?;t2uwsǭ鱸_#=:׾?1_}MsWz,4HEv -E~Ex,:흤$S\-W8F6<׏]<: Ec=<'_}2:~9s_umNE_G]%SޟXy`z,]v_)W::H׫w'1D1ny2ukM=]c>x\^dW:@Z?ս΃G 8sk(yuv;cQsպ/s{~D::b;1y~4W:-_Qʼպ.s{1 XO`q lt=LROtz0I}j`zm;~7M:~#v_v߭Z^=7d?~CW W^{݁y0F=_{j۾%m7Ek^zXxxS5_;tv֏_hW;w~=j{W;k;R[~ /]v_W{wo3]~?Vz#l^#_~|3x_gzW?;;_xB;];?+_J׫w>Vj ߴx#ՏK/DOu]_{𩌯o>>/g|oW1ރ;o`ރ;o`ރ;o`ރ;o`ރ;o`ރ;o`ރ;o`ރ;o`ރ;o`ރ;ރ{0zF[lރ{0zF[lރ{0zF[lރ{0zF[lރ{0zF[lރ{0zF[lރ{0zF[lރ{0zF[lރ{0zF[lރ{0zF[h{0zF[h=m{0zF[h=m{0zF[h=m{0zF[h=m{0zF[h=m{0zF[h=m{0zF[h=m{0zF[h=m{0zF[h=m{0zF[hzF[h=mw6zF[h=mw6zF[h=mw6zF[h=mw6 [h=m`[h=m`[h=m`[h=m`[h=m`[h=m`fl`ރ;o`ރ;o`ރ;o`ރ;`ރ{0zg`ރ{0zg`ރ{0zg`ރ{0zg`ރ{0zg`ރ{0zG3ރ{0zF[h띍ރ{0zF[h띍ރ{0zF[h띍ރ{0zF[hͮ`ރ{0zg`ރ{0zg`ރ{0zg`ރ{0zg`ރ{0zg`ރ{0zG3ރ{0zF[h띍ރ{0zF[h띍ރ{0zF[h띍ރ{0zF[hͮw4? [Yl^_:q5[?f{_{>6_>_κ.Gk-{_>O.g,ٸG3x6.ٸg2x4g2x6.ٸG3x6.ٸg2x4g2x6.ٸG3x6.ٸg2x4g2x6.ٸG3x6.ٸg2x4g2x6.ٸG3x6.ٸg2x2g2x6.ٸG3x6.ٸg2x4g2x6.ٸG3x6.ٸg2x4g2x6.ٸG3x6.ٸg2x4g2x6.ٸG3x6.ٸg2x4g2x6.ٸG3x6.ٸg2x2g2x6.ٸG3x6.ٸg2x4g2x6.ٸG3x6.ٸg2x4g2x6.ٸG3x6.ٸg2x4g2x6.ٸG3x6.ٸg2x4g2x6.ٸG3x6.ٸg2,ٸg2x6.ь2x6.ٸg2(ٸg2x6.ь2x6.ٸg2Mg2x6.ٸG3x6.ٸg2x4g2x6.ٸG3x6.ٸg2x4g2x6.ٸG3x6.ٸg2x2g2x6.ٸG3x6.ٸg2x4g2x6.ٸG3x6.ٸg2x4g2x6.ٸG3x6.ٸg2x4g2x6.ٸG3x6.ٸg2x4g2x6.ٸG3x6.ٸg2x2g2x6.ٸG3x6.ٸg2x4g2x6.ٸG3x6.ٸg2x4g2x6.ٸG3x6.ٸg2x4g2x6.ٸG3x6.ٸg2x4g2x6.ٸG3x6.ٸg2x2g2x6.ٸG3x6.ٸg2x4g2x6.ٸG3x6.ٸg2x4'33e_VI2'\e|'2W5%{I^+dǿǿ| ůϚYqɎfl\q%;hF%;l\qɎfl\q%;hF%;l\qɎfl\q%;hF%;l\qɎfl\q%;hF%;l\qɎfl\q%;df%;l\qɎfl\q%;hF%;l\qɎfl\q%;hF%;l\qɎfl\q%;hF%;l\qɎfl\q%;hF%;l\qɎfl\q%;df%;l\qɎfl\q%;hF%;l\qɎfl\q%;hF%;l\qɎfl\q%;hF%;l\qɎfl\q%;hF%;l\qɎfl\q%;Yq%;l\%;l\q%;Qq%;l\%;l\q%;Qq%;l\%;l\q%;Qq%;l\%;l\q%;Qq%;l\%;l\q%;Yq%;l\%;l\q%;Qq%;l\%;l\q%;Qq%;l\%;l\q%;Qq%;l\%;l\q%;Qq%;l\%;l\q%;Yq%;l\%;l\q%;Qq%;l\%;l\q%;Qq%;l\%;l\q%;Qq%;l\%;l\q%;Qq%;l\%;l\q%;Yq%;l\%;l\q%;Qq%;l\%;l\q%;Qq[dcJ<'\%-d?_׽{an}ݟ+GK ?>_>L>F Jx6.Q J`TK`T>g>F%|0*ٸF%|0*Q Jx6.Q J`TK`T>g>F%|0*ٸF%|0*Q Jx6.Q J`T(Q J`TK`T>g>F%|0*ٸF%|0*Q Jx6.Q J`TK`T>g>F%|0*ٸF%|0*Q Jx6.Q J`TK`T>G3J`T>g>F%|0*ٸF%|0*Q Jx6.Q J`TK`T>g>F%|0*ٸF%|0*Q Jx6.Q J`TK`T>g>F%F%<F%|0*Q %|0*Q J`T³q J`T>l\>F%<F%|0*Q %|0*Q J`T³q J`T>l\>F%<F%|0*Q fF%|0*Q %|0*Q J`T³q J`T>l\>F%<F%|0*Q %|0*Q J`T³q J`T>l\>F%<F%|0*Q %|0*Q J`T£%|0*Q J`T³q J`T>l\>F%<F%|0*Q %|0*Q J`T³q J`T>l\>F%<F%|0*Q %|0*Q J`T³q J`T>hF J`T>l\>F%<F%|0*Q %|0*Q J`T³q om*Yο'W N7ݯ|ӎsu>SG?,}-{]_>Żkl\;l\q;Qq;l\;l\q;Qq;l\;l\q;Qq;l\;l\q;Qq;l\;l\q;Yq;l\;l\q;Qq;l\;l\q;Qq;l\;l\q;Qq;l\;l\q;Qq;l\;l\q;Yq;l\;l\q;Qq;l\;l\q;Qq;l\;l\q;Qq;l\;l\q;Qq;l\;l\qNfl\q;hF;l\qfl\q;hF;l\qfl\q;hw6.ٸxg❍w4xg❍w6.ٸxG3w6.ٸxg❍w4xg❍w6.ٸxG3w6.ٸxg❍w2xg❍w6.ٸxG3w6.ٸxg❍w4xg❍w6.ٸxG3w6.ٸxg❍w4xg❍w6.ٸxG\q;l\;l\q;Qq;l\;l\q;Qq;l\;l\q;Qq;l\;l\q;Qq;l\;l\q;❍w6.ٸxg(ٸxg❍w6.ь❍w6.ٸxg(ٸxg❍w6.ь❍w6.ٸxg,ٸxg❍w6.ь❍w6.ٸxg(ٸxg❍w6.ь❍w6.ٸxg(8׭?Qe{_U䓫x^kw;okw_\9}ݏǵwç?峌O?gU'u׏\EI;Wum_ɜ}<^\ejmx9ؼ\~%jë(~əQ\Pt>XogаǢ~>6u̯~U+:1_ccGXy3'SASz,^ukorUu|_c^uyc^w$S\?Xuu}b1׷3=|>ϏMs]oXutNQj6:y8꘯cq1_['Q|e]z,Ƿ~l`*oJ۱?cQPWjK=󻎹]\X똟:: NŻX\?Wkߟ阯9+=u|`Ǣ΃}KgǢ#W7#<Vc^ȇcHhcё~h_ŃxXt:cё~:]Hu~ܤdSܯOckXy~ԅX2uHE_: Ǣ΃ua#ﳧc`}occQ}{鱨ྭJE|]r%?I\cjGhtڑ܏tڑ:֕VyoBz~3zuYtyi^#^#_]= ϟ#^#sxVzīp#^lN׫Gg^]=՝qz,~7_2gGﯮ{kWt#_]u#^<1W=Sﯮz?#^ﯮI׫G=sx]{z:owbB7mogM]c7m?^7m?xuMMoJ׫ߴ]$]9:{>Woڮ -K/W=^rߴ]WWԗ9]/YWz.7A.]=^rQ2=|pv=Gx:q'Gxx#3sԓ,]=^R_tڑ~Xz#~^Hێx#q߬xo+_=7m?~WMW^H{}Dl{ڑ:Վ}W;үKx#ͻoVtڑ~]wx#m]jGW;үjڑvz#1vx#zDՎv_?ov#~^^H~oޑWH;;߮g^#:u;xGtzGGzG=_#g4_g8;x-_#ޑ~w_?|?1wׅv^#uw<;?VzGWH|ޑ~;=G+_}m"F%mz_~_s>!&:?7H|@^OH3 i'>s(>!-:?\|@ދOH i1>s2>!mf:?wp|@^OH i;>s<>!3 &|BOH+ 3 iGOHK iJ>!m'1&Ҟ|BOHyR>!m'Q*f|BOH iZ>!mq.Ҿ|B ib>!m'2g|BOHK ij> o'6|@OH ir>!m':f|BOH|BڞOH i}>!4@}Bڠ# i>!'4D}BڢOHc i> '=4H$}@ޤOH i>!']!'}4PD}BڨOH# i>!4TT=UZ}BOH{y>!-'YFj}BOH i>!-]z}B i>!-' a҈}BZOH3 i>! %4eҘ}BZs i>! 'E4i7Ҩ}BZOH i> 'e4mҸ=nҾ}BOH y>!m'rf}BOHK i>!mv}Bȋ i>!m'zg}BOH i> o'~}@OH i?!m'f~BOHKy -?!m'1=4$~Bȣ i?!']44~BOH i? '}4D~@OH# i%?!'<T~BOHcy-?!'4d~BOH i5?!4t~B i=?!'4h,' FҊ~@OH; iH?!-')Қ~BOH{yP?!-'IF>fgfXf%]~/4};ߋ޿b_Jڼu_ok{W7Zߺϵq73>xׯ9O>o~m~x¿q:*&zz]uJ;}<>@qp]_˪w"󀎿???!g&Izނ) +x2?wk OUO~> +&e?~Y|~"~3>Óʿ7x6(ь"x6.ٸgsvE<l\ijqRfl\ijqEÿ4v6ьv6ٸjgͨٸjg㪝v6ьv6ٸjgͨٸjg㪝v6ьv6ٸjgͨٸjg㪝v6ьv6ٸjgͨٸjg㪝v6ьv6ٸjg㪝̬ٸjg㪝v6ьv6ٸjgͨٸjg㪝v6ьv6ٸjgͨٸjg㪝v6ьv6ٸjgͨٸjg㪝v6ьv6ٸjgͨٸjg㪝v6ьv6ٸjg㪝̬ٸjg㪝v6ьv6ٸjgͨٸjg㪝v6ьv6ٸjgͨٸjg㪝v6ьv6ٸjgͨٸjg㪝v6ьv6ٸjgͨٸjg㪝v6ьv6ٸj'3v6ٸjg㪝v4jg㪝v6ٸjG3v6ٸjg㪝v4jg㪝v6ٸjG3v6ٸjg㪝v4jg㪝v6ٸjG3v6ٸjg㪝v4jg㪝v6ٸjG3v6ٸjg㪝v4jg㪝v6ٸj'3v6ٸjg㪝v4jg㪝v6ٸjG3v6ٸjg㪝v4jg㪝v6ٸjG3v6ٸjg㪝v4jg㪝v6ٸjG3v6ٸjg㪝v4jg㪝v6ٸjG3v6ٸjg㪝v4jg㪝v6ٸj'3v6ٸjg㪝v4jg㪝v6ٸjG3v6ٸjg㪝v4jg㪝v6ٸjG3v6ٸjg㪝v4jg㪝v6ٸjG3v6ٸjg㪝v4jg㪝v6ٸjG3v6ٸjg㪝v4jg㪝v6ٸj'3v6ٸjg㪝v4jg㪝v6ٸjG3v6ٸjg㪝v4jg㪝v6ٸjG3v2?NrkTY~^믪U_j__N{]QޏǵSƇOgSN S:q[][?w22ڒ#ε=9Wxԕ +(s V\~%u@1o3󣎹wY?X\x1[z,c~+V1U:W^?NǢ7B]7:掕cc^[fS꒸/jc^uiyc^n$S\?ŭXuui}b1׷3=|>;jNG[z,V.cq1RM}{z,:k{XuWI|1_uɖgX2uεQgd2zǢNq,1A[uHŻߡc`X;nMUs1kscQ^Fz,<طkVx,:.ck$%:n1w7~lyuEuW|Wr㝮Wu<7a^ߎzպN/{bK׫u-8; ΃iLyu_W:%[y.u<]x~V_zSҊW:M(]:z!]u<_W:u6M׫{Ϻ`M׫{ϵ3S3_6o >w>{vo_:wuA?_xksWyxr> geF%|0*ٸF%|0*Q Jx6.Q J`TK`T>g>F%|0*ٸF%|0*Q Jx6.Q J`TK`T>g>F%|0*ь>F%|0*ٸF%|0*Q Jx6.Q J`TK`T>g>F%|0*ٸF%|0*Q Jx6.Q J`TK`T>g>F%|0*ٸF%|0*Q Jx4F%|0*Q Jx6.Q J`TK`T>g>F%|0*ٸF%|0*Q Jx6.Q J`TK`T>g>F%|0*ٸF%|0*Q Jx6.Q J`T£%|0*Q J`T³q J`T>l\>F%<F%|0*Q %|0*Q J`T³q J`T>l\>F%<F%|0*Q %|0*Q J`T³q J`T>hF J`T>l\>F%<F%|0*Q %|0*Q J`T³q J`T>l\>F%<F%|0*Q %|0*Q J`T³q J`T>l\>F%F%<F%|0*Q %|0*Q J`T³q J`T>l\>F%<F%|0*Q %|0*Q J`T³q J`T>l\>F%<F%|0*Q fF%|0*Q %|0*Q J`T³q J`T>l\>F%<h~&)XzJ}r{W?z?_w-[;zҏZu>P>f;Qq;l\;l\q;Qq;l\;l\q;Qq;l\;l\q;Qq;l\;l\q;Qq;l\;l\q;Qq;l\;l\q;Qq;l\;l\q;Qq;l\;l\q;Qq;l\;l\q;Qq;l\;l\q;Qq;l\;l\q;Qq;l\;l\q;Qq;l\;l\q;Qq;l\;l\q;Qq;df;l\qfl\q;hF;l\qfl\q;hF;l\qfxg❍w6.ٸxG3w6.ٸxg❍w4xg❍w6.ٸxG3w6.ٸxg❍w4xg❍w6.ٸx'3w6.ٸxg❍w4xg❍w6.ٸxG3w6.ٸxg❍w4xg❍w6.ٸxG3w6.ٸxg❍w4;l\q;Qq;l\;l\q;Qq;l\;l\q;Yq;l\;l\q;Qq;l\;l\q;Qq;l\Y.ٸxg❍w6.ь❍w6.ٸxg(ٸxg❍w6.ь❍w6.ٸxg(ٸxg❍w6.❍w6.ٸxg(ٸxg❍w6.ь❍w6.ٸxg(ٸxg❍w6.ь̏s;_V }UO>e[߿;~{ ?vW{c(\__>|_>^u9>^xU] xyy_זLuUV0G~QͫuW26ꀒ97uuMEGJE [z,h`SWc~=u^+=:~NE};s2u4UǼ&7]U:U:yG2uJ^\Gz,Vs}{?c㝞?15UKXuョfc~+=GUu1uW]֥||62vd|#= u8ot1A[uHŻߡc`X;Mos1scQ^Fz,<طtVx,:{3cёkl%:U|86<׏]<: EGc=<_MJ6ut::κFOE_G]%SޟXy`z,{::wF :~9=uܷ:ۺXy%W2otu(:i(]v_JH׫L׫흮W;ǖ΃m㑮W;ү?z#}x:jGV^HW;;NE~Վ6W;ߏH׫׷g^H?tڑ~J\H\<պ/s{-_x~F)Wue^j\UWWbL]c_8~ }{3_ʬxu`wzN9{9!:nWҹ;_{d{{l{xI=5%]Tc^=^x{8UWW3_]=<#^~Y=U?`=1kG 7X=Utzīq#^w%sXzkGxu}J׫:ux]G^]=u>3sx35]:3_]=^:tzī~1׵G3_]~Wiz,= ﯮ~vߴ݅y:~ﯮ~Wqߴ]tME:3]K{p%_]0]{ﯮxu%gM>]/YxuxI}uKr#]/%GO%c +|lCzxW/n^=pBzxW=B=1xI=%J׫wW;ՎW;7jgڑ~mڑ~3_=7mxߴ~ՎGΦLo3_H۷x#W;ҿ߼?fhM׫Uoڑ~}W;vx#zoW;+sY\jGW;үG4_H{jGQڑvmGj ;7Վ{ڑv]ox#_#z;үSw^#NJWH~M׫w|w;OHU?|c#ޑWH;_GzG3sGޑ~]h;_WzG3_#cw_zJmcX~D[^+l}!}mY_ߦ<xEu V}Y/|T~ފ]c>!Mm4:?>|@OH i">s#>!4v:?R|@OH[ i,>s->!4:?'f|@OH i6>s7>! 4:?z|@OH i@>> iB> o'"P=#v!$Җ|Bk iN>!'A('Ҧ|BOH iV> 'a,Ҷ|@OH i^>!'0&|BOH+yf>!'4|BOHk in>!8&|Bȫ iv>!'|@ޟOH i>!M' !M'-4F}BڣOH i>!MM4JV,}Bڥ i>!M'm4N<}BڧOH i> O'4RVL}@ީOHC i>!M3[ i>!'Wb}BOH i> '[r}@OH i>!'_҂}BOH-'4cvҐ}@^OHS i>!'5!'U4kv}BZOH i>!3 i>!'p'}BOH+ i> 't}@OHk i>!'x&}BOHy>!'|}BOH i>!&~B+ i?!'!~BOHk iOH i?!M'M> stream xMlI]7_Qc|W==|99z{=Y}}8rύ5އ#|އ#|/އ3|kǁ5p暯ÙkއWx^}xŚc}xŚ,>bOx/X3.\>s׃kWvz\}'ƫ4=Om'އO9Vk~G07|u\=>|sѝ9lGt{E|E|v}آQ>+x>lgyt3|t3t30~Ia>f}m ݇`zE @\tk&݇a5Grs}Ě}}0vއXއbzg:>p暟Ùks}qs}0^;އ6=0>>1>r5_އw>sѽ9saw=zxF|8>>8`s䚯kއoxs}0;؅w><=݇=?<<=7݇={yt3vq}س^Aa>xE0gzF'gfgNa>x݃Þ}7=f w9>xǫ=}}7d5q0xfcwCa8>> Oxf|s}f =z!q0`>>7އcӆaps}0%=󅞞"Ea,0źa}w>އ;vO>>;#-tG5kC<݇ǚL{+==<އ#לokG~>pĚ{<@5 kއ3pE5GpsS ̕k =W96^h^?OW9^`>cSb?hyʸcq3}xǚx>s?OOSƳ>SƓk~Ě灟0?Ooy68_}ny>xI>x?O ?O?O?Ow}}=}=}mއcׂaw)3;}}0xf%އxq)' 5Ɓ?O}'~`.;Z<>x?O6St̅\gS3)יk~+=8V}xE)W5<>xVhJ o>M}0 -;u)wtɦ>xyʝ}>;?O?O?O;})wS?O>'~rg|~rg|:~rg|~kyYfޯ|0<)|o/+oczO{to-_??cI/8gu]/?Yo7|Fl>qZ/pfƈg?}eYO~IE*_w1EsI'!R"/G-6B cHc'l\n YFy/,=^UY:Y6z"Kf_kǒDI̒ %72Kfd~s@% ސ%?cR odR υL#?1h kwA~drp3mȤ~ w\R{'2)B&eO3h:䚯Kf?d~Ȥ~ { :Z&oEL㸐5F&?B&|/4t-txߓZi>e!I-o~bNL-G?eO35ϓ[pR{;Sl9bNL -Өe!xptx3̽xq)xQˠ{F=nѨǭCܩǭC:ǭC܌V!.>t'z -:z -:/uq+LLqD&<;thW-DĤٞA=nZۑI1VС^ļKq+Wz -:qEǭC'ta%&לqabR ?&t+J=nR[AVaI=nF5_z -:qEǭCǭC:2)x|[A8Q[A8Q[A8Q[A8Q[AynG=nG=nG=nG=n⬇=]>V!zV!zV!zV=1\Ff x[A8Q[A8Q[A8Q[AY>Vq֣q֣) 2tttt7D5O<ǭs9nG=nq+x[A@S[AQ[AظP[AhV!tHz -:DR[AǭCAqËtttttN=ns -: qÍOs'9nS[AV!:tN=nG=n2=ePn<}>Aq+0<ǭCǭCǭCǭCǭÜx.<}7>AqCIs -:Y{\8Q[A8Q[A8Ȭ>A qÍOs'9nG=nq+p7<ǭCǭC}qÅOs'9txq֣q֣q֣Os -:Yz'p9t :AqËt'z -:Yz -:+d24 :F=tx.<}7tx :} tt2xF5O<}>AqÃOs +;u)wtɦ>xyʝ}>;?O?O?O;})wS?O>'~rg|~rg|:~rg|~kyYfޯ|0<)|o/+oczO{to-_??cI/8gu]/?Yo7|Fl>qZ/pfƈg?}eYO~IE*_w1EsI'!R"/G-6B cHc'l\n YFy/,=^UY:Y6z"Kf_kǒDI̒ %72Kfd~s@% ސ%?cR odR υL#?1h kwA~drp3mȤ~ w\R{'2)B&eO3h:䚯Kf?dÏ!s/#bx[\dѳI}2yGfE{R_ˠC<'5 ::eỎI' :i&2yRwˠCNjog-GlՉIx5 :O.o=.ϳ5qtxިǭ9t;tS'tz +:ŧdS[AQ[AeVСN=nZ I=gVСő<3ǭCs;2)z +:|ۋwVСA=nR[AV!(t=#3.LLǤqEǭC\Qq+Wz +:1ǭÈ2kR[AV!(tt^G&eo+GAqÃOs -:Ćz -:z' :t<}qs'p9t :AOС9tx&>A qÍAz=A<}:<=A<}:9{|xts#@=txuft=0k?#?ϿcKow\={VBA/翴O`b|L$%??[???'t!Η_BzK"Z=_UٯP(,EpBQ" +:Yz +:\V!߻'\>V!,q+g=q+g=q+g=q+>2Ks +:V!zV!zV!EdRf?q֣q֣q֣(2txn<ǭCǭ9nq+hq+?q+q+Mz +:DàwBOYA(Bq+7t'z\O%zz-)@)Yz\O3zz +q֣SދLs\O3zz +q֣ :x[A8 dRf?q֣q֣q֣q֣tHg=q+g=q+gs'p9t :AqËtx<ǭCBfq֣q֣ :L<}>AqÃOs\Υ3Vz\( : : <}qÅOs'9txQ[A8Q[AvL:>AѨ}qÅOsܵ>AdR?q֣>@&CqÈ>1Os'p9tx :x[A8Q[A8Q[A8Q:>AOa9t :x<}/V! q+wOС9tx>AOs'p9tx :x[AذS[A S>AOa9tx.<}7>AqËtOs' :t<}qs'p9t=Pts=Az=A<}:Oq߃xts~}q5 :݂gv'{^wly펗gJH8{5߲=gpN1ˁy-&1H $ 8`rgH,7{H\`h gKĊ[DG8[5O21p5Lrqxv^0O;1.hhilhKO5kr}–xz\sv5K9Zxޓ -4 <'UhiҞcA0"-0yV!&Ikc\s5Ӹ4N#-qt}b)?:Ӹ\8N\s?N\s;N\s ;ל1N`)eG8:e 4NI#i4F'<'77|Xo8N :>8bAu`4^;T:&8Nۑki4`bg ״Uig9!=?Ee -`\Ӗ}0.5g-(9h/i>47zN[8Pq:mRq:m{T5Ǯi_Ӗ}ee3xɤ5gl192{&4`^mXcu}4`잱N5>آ5>xJL9:>CN3ikiDcf] i8ܴGl}xPѕN{8Sq֧:PӳFס:5GoyFk>iio85mPk*ksͱ#5\sJ%Ěh_D -:sT=`YtM@k8КGL9^\s \slFmi iSX}X=o+'9W9C5G5߹8њ\szĚ k4`PM4`o 5 '2z~\sN\s4oo9]胱]NzaF3nVx~2bqQfĠπf :͈AqfĠZk>/ӌEuSf %ӌNu 9SfĠ4#}QfĠǡ4#.ӌxN3b:͈AN3b}nJu詓4#=nhӌDT1N3b{Iuωu}4`Nk}ŖivOQX\grͱrz~[X9Ncbf;i3dxu}<iX5>x<4-15g JpPf`ɈA?5͈A?iF ey&| ӌHT1hT'`{Au8ӌؠ:͈AڎT1hoT1hoT1h9N3br]ViF 4#:͈AKÎ[uG:}rͱ#k[:}sg:}sG:>:> :Mif31hqRf u4#-^`N3b;57T2b.RF Z4pӌGT1h:͈A]iF GʈA6Hu5ӌd:͈A,QfĠEgjE)#-GʈAGʈAH1H1WՓ4#$H1xA)#qAGʈAu}04`GʈA<#eĠMu}0~u}0B-*@)#yENH1h,cf }_ Ο]"^-~"9e߽E oE &oXQXXq3{ ʿc cuIs32G"9Zdn}Z>5bA"GEW[x>Lp-rM9`ϯ5G>t-'ytI"` ҵ>|_s`+=13k}0ՇEq̕!LxƓ}p#EZ9tKGoگs1wfV3of#Nگҵ>8F_͑c\9?I?r"9j_͑͢jWrZD9!Eqr3=}zNگWsWs@_گ@گ~5Ggޗ94v9"GϜ "GNjqj>iˌh#cC{~5Gh_͑39?9?^UCk>dH?~5G%~5Gq_͑3.WsWLyƟE9A/9~w=kίk}p9XSZsگ3Ws|Yk}p>נjϔWs|-}pfE>/Ws܅Wsuŵ~5G_@}:xhs/W_-c̴_n-_io~GgDgbUr5=  $ҵ>xe E+2е>ۍf໫#`N1jT+n گ>=﯎Wh{|~uD_|sĚ3">[6|uDWL̋﯎cFLj\o9&lj﯎1s#`~q Wk3=k>o|uDہ[jm_u0:W-ӚN _sW _~uDǃ﯎wlXi:sqf -WG; -E-jոۿwhsXKk>xǂh:k}0S_Y0_W|:{&_s0:_WG~#x~K]J_9<>JWg~%xk̯o:+h:+uҚ+Wg~%xWg~%xʹ_t-+Ǎ;$گJX1Wg~%|uu̯.|uWKWg~% Wסӵ1\_ Jp|uՙ_ AkչWg~q3̯;n|uW|Zs~yPWg~3.M_U~uWhj5Wg}M.:Plj*Ըh:PǍU e_Jb}*s}j?h:W^굾 -m_>aױ_P_MW~j4 گ^U9|ud5WMF+ -SʢjGfZjW֜_}s6|5}jO2h>~:WpzW |Z_w㧞KcKﯦn|5}#6_My2vǫ>1_|5}jjGؠk_}sQJL~SڷW_M|5}j3@ﯦXFZs~񏜓D"}5?ϑ _]#~u?F_]#SNkFg8F;X k^#s8\5?X#ǁ.t|up,?3Ӛǟ _]>~li|WJעW/_]>ߝML~M9-\>=7|w|׶fïΖ㫏SwS9-}:>)_~=ݬ󳵮hקq']ϥ__o}]ݮzȮzȮf{Fvgd{Fvgd[f=#3=#3-]]zȮzȮzlvgd{Fvgd{Fve63=#3=#2]]]oͮzȮzȮf{Fvgd{Fvgd;f=#3=#3-]]zȮzȮzlvgd{Fvgd{Fve63=#3=#2]]]oͮzȮzȮf{Fvgd{Fvgd[f=#3=#3-]]zȮzȮzlvgd{Fvgd{Fve63=#3=#2]]]oͮzȮzȮf{Fvgd{Fvgd[f=#3=#3-]]zȮzȮzlvgd{Fvgd{Fvcv3=#3=#2]]]oͮzȮzȮf{Fvgd{Fvgd[f=#3=#3-]]zȮzȮzlvgd{Fvgd{Fve63=#3=#2]]]ݮzȮzȮf{Fvgd{Fvgd[f=#3=#3-]]zȮzȮzlvgd{Fvgd{Fve63=#3=#2]]]oͮzȮzȮf{Fvgd{Fvgd;f=#3=#3-]]zȮzȮf{Fvgd{Fvgd[f=#3=#3-]]zȮzȮzlvgd{Fvgd{Fve63=#3=#2]]]ݮzȮzȮf{Fvgd{Fvgd[f=#3=#3-]]z, nv},O_iwCv}~E}^p_~z]oͮz`ʮz`ʮz`ʮz`ʮzȮz`ʮz`ʮz`ʮz`ʮzȮz`ʮz`ʮz`ʮz`ʮzȮz`ʮz`ʮz`ʮz`ʮzȮz`ʮz`ʮz`ʮz`ʮzlv=0eSv=0eSvgdSv=0eSv=0e{Fv=0eSv=0eSvgdSv=0eSv=0e{Fv=0eSv=0eSvgdSv=0eSv=0e{Fv=0eSv=0eSvgdSv=0eSv=0e{Fv=0eSv=0eSvgdSv=0eSv=0e[f))=#))3))=#))3))=#))3))=#))3))=#))2]L]L]]L]L]L]L]]L]L]L]L]]L]L]L]L]]L]L]L]L]]L]Lz`ʮz`ʮzȮz`ʮz`ʮz`ʮz`ʮzȮz`ʮz`ʮz`ʮz`ʮzȮz`ʮz`ʮz`)=#îz`ʮzȮ))3?z`ʮz`ʮf]L]v=0eSv=0e{Fv=0eSv=0e{Fv=0eSv=0eSvgdSv=0eSv=0e{Fv=0eSv=0eSvgdSv=0eSv=0e{Fv=0eSv=0eSvgdSv=0eSv=0e{Fv=0eSv=0eSve6))3))=#))3))=#27˼Ƣvoÿ]ߣ_{=ŸϏ~`ǒ=N\y`:68rcK4HAܢؓQ NN[15&8Nۑki4xvV5 bӖ}0_Ycf!ihXTT5N\sNeƮ4`znZs#^6y׷=X:Ti*zN{#vа}i3DuڳFס::7iGPM=`'`OQio85mPk*ks͙ &[Hz~FN]@}?Muڣ纩NsCjoT}3DLT}U5 56i&`FGj̓A4`4`uz$G5^bXAU;Gz~V 4`:>د8T5>4` iOvL9~Lϓk ]7͛kIČ :_X~NfgWd:L@pM3.N.Gs^Tg &샱:sQ#&[&`<=T#`NG84Rq(:: :RqRќ^Zsxa::ㆦ:Sk}0~>ۤ:s=?G"Lűi[Z=NFbflsI5>:>:>2OLXu}c=?{bfx4y GlfxAu:>\ә}0CpMgT3q ӸHTnyi9phPqTQ4Au:[y F䐤Au:[ s:=| }0ߊ:Q0Ϡ:s}ŶtFVЩN5Nu۾`{5援ek>;54`ߎu}i4`u}0N4`ӎuzG:rͱ+5_ֱN\sjd䚏u}0:>ⴃu}0dz`FlձNƖc>ѱN\s>ֱN\ٱN\ѰNNxNNQ^[ܰT`f:\hTqh+L\sC)("]g@>8^iTW%P^cLu#rf]qP:M? i-cњ'Zs}:M?#>Rq@)xU=Nx'}[N'`?GJ?^}GJ?.(H)hX[>.R}[dX :>w!iZsv^Q>RcfR>R#24vtR4UqEi>}%HKAuw N#-y%?AnIF#_#Z jSw)?.w`?u3?W{3a??}8C{ >.?~pAȹPc]/AZ-㿎g_#&۠~hPCAѠ~hPg43omPg43 [f {F=A{F=AѠ~hPe{F=AѠ~hPeAѠ~hPg43omPg43 [f {F=A{F=AѠ~hPeAѠ~hPg43}Pg43 [f {F=A{F=AѠ~hPeAѠ~hPg43oAѠ~hPg43omPg43 [f {F=A{F=AѠ~hPeAѠ~hPg43omPg43 ;f {F=A{F=AѠ~hPeAѠ~hPg43omPg43 [&'t|w=AѠ~hPg42۠~hPg43 63 {F- {F=AѠ~l=AѠ~hPg42۠~hPg43 w>3 {F- {F=AѠ~l=AѠ~hPg42۠~hPg43 Р~hPg43 63 {F- {F=AѠ~l=AѠ~hPg42۠~hPg43 63 {F{F=AѠ~l=AѠ~hPg42۠~hPg43 63 {F- {F=AѠ~l=AѠ~hPg42۠~hPg43 63 {F- {F=AѠ~l=AѠ~hPg41~hPg43 63 {F- {F=A{F=AѠ~hPeAѠ~hPg43omPg43 [f {F=A{F=AѠ~hPeAѠ~hPg43omPg43 ;f {F=A{F=AѠ~hPeAѠ~hPg43omPg43 [f_֚ mwԠ-}:ݯ_[ws>A|Qߎ_<<߲=k뵖12-1L1L1L1L11L1L1L1L11L1L1L1L11L1L1L1L11L1L1L1L1o͘y`ʘy`ʘy`ʘy`ʘyȘy`ʘy`ʘy`ʘy`ʘyȘy`ʘy`ʘy`ʘy`ʘyȘy`ʘy`ʘy`ʘy`ʘyȘy`ʘy`ʘy`ʘy`ʘyl<0eS<0eSƼgdS<0eS<0e{F<0eS<0eSƼgdS<0eS<0e{F<0eS<0eSƼgdS<0eS<0e{F<0eS<0eSƼgdS<0eS<0e{F<0eS<0eSƼgdS<0eS<0e[f3)c2)c2=#c2)c2)c32)c2)c2=#c2)c2)c32)c2)c2=#c2)c2)c32)c2)c2=#c2)c2)c32)c2)c2=#c2)c2)c21L1L11L1L1L1L11L1L1L1L11L1L1L1L11L1L1L1L11L1Lٌy`ʘy`ʘyȘy`ʘy`ʘy`ʘy`ʘy`ʘy`ʘyȘy`ʘy`ʘy`ʘy`ʘyȘy`ʘy`ʘy`ʘy`ʘyȘy`ʘy`ʘy`ʘy`ʘyl<0eS<0eSƼgdS<0eS<0e{F<0eS<0eSƼgdS<0eS<0e{FƼen>y:߆/c>d3ݚϹ2:Ѽk=Y_Ly=ŔϷ~q0bSW?ݽYǖ3_5ێly`ʖly`ʖa[f)[)[--L-Öly`ʖly`ʖa{F<0eS<0eSgdS<0eS<0e{F<0eS<0eSgdS<0eS<0e{F<0eS<0eSgdS<0eS<0e{F<0eS<0eSe6[)[)[3)[)[=#[)[)[3)[)[=#[)[)[3)[)[=#[)[)[3)[)[=#[)[)[3)[)[--L-L-L-L--L-L-L-L--L-L-L-L--L-L-L-L--L-L-L-L-o͖ly`ʖly`ʖly`ʖly`ʖlyȖly`ʖly`ʖly`ʖly`ʖlyȖly`ʖly`ʖly`ʖly`ʖlyȖly`ʖly`ʖly`ʖly`ʖlyȖly`ʖly`ʖly`ʖly`ʖlyl<0eS<0eSgdS<0eS<0e{F<0eS<0e{F<0eS<0eSgdS<0eS<0e{F<0eS<0eSgdS<0eS<0e{F<0eS<0eSgdS<0eS<0e{F<0eS<0eSe6[)[)[3)[)[=#[)[)[3)[)[=#[25l|kfΖ??}L_뿧=?|Fs𲞼/3*"7#z_zo_7#QJK޷p=/К=e/5kڞ%tM{9=]{<kTпgTQ)`Tgr3O*h~NZ5-F5KtC49q?N3buq8IXqwbk'k'kn'k|皏49#vXqq:Ĉirby`Fq:}r:}r:}%b:}sǁumpfiEO:oP#;Ti;r:RAu\sܪ3"Nuڲ \Ӗ}0i>eEӚ\s{N[hT-rk?Kuڲ:mRzN[>_Ӗ}Ǯi_Ӗ}e- i"&~>!OĚ[~4F̓4`wtMbf:i_샱{:>bG4`C4Xa샱;:>M4*1ikiȱLص`fCMk>x=?:>xi>xGLˠCuڳٟg[-胱4`PM4\4`iOL9d<5}sѼ难Au}0 4`i{&zE/K4z`0:~4z{0:}D0Eu{`H >[~ӑ}p<>8>eCu:tdC#>"ӑ}0@ӑ}0ӑ}0.,>7,>5gVӑ}0n1ӑ}0nhӑ}0Q샽Mӑ}0\}2Ě[+flk}4`)i6\s샭O샭M-䚏u}0X8}'iX9Nq5>x~$:>x4y GlfxAu:O~Sk:f>xtfcFlqZ:>cFSn:>c^ѱN\sJhWu;לj1cF̷N8`F̑-Xuu胱%XOyt';2Ou7|v7|4-@-胱mTW7,i,7٨N#<irX -{&PEJ0'Hיk>PFm+x}0v TW Sf 2 r]qP:0@vA Ek>h>Rri>RZG0@/G0@TiAƓ>RZN"'`?G0@a#eE:>2bLvayG0@ 4`Bk>2 W4aϱNH?u}0Vu}0X}l#e 2 >RZs`f -/H+ >#0{> -:]awoGiކ> -mHu> -uR*m~>_eS۬:G[?W-h=zLd2>T8T,1*CO]9PlW:?~PS~:?;"Iǡgt*_ђCeCO}fK^m[:?'fǞCuxPikp6hފqxV>c[C;5n<k|MphvڇC|85zL}Vtbuȧ}4{ i1;8c}?q41qxVb>Yq>i1M} -ǡ+i1q8c1ӌǡӨ P&Lǡu=~JǡG}|(>TԟP3'ןt*_,l8l]q|95fKǡGcڇ׋h=(8Tj}qZxj>CW }qxjY2c'x}qxj5Oڇuǡ{qq{*|88)ijԍ5ClڇX<5ևxj i^;uA ij}ڇ&A`ij#gy$G#fڇI#n^w\qtj8xPͫJǡ_Nǡ_T}aje$N6CM7qޖCM7Z<n~li*WX=n~Y?S Q>TPq:sq -7W8xn'm>x*WxMF|?8Ti*W x*W5a]2J,Uڇjǡrw]`+uAOF|x*WriohXM7h+C -PBP2+w|5{<+h}o,k|"s<5=>Ot˨,Cc)n^W:5RW8tKtj:M7K|sS4rny_cIǡOt3Se<5Chy_4_ڇ+>Otu)h~yOow)n~7x*[Ot󫦄Pͯhy}Lǡ_5sڇ->OQn{||}ݎ~)וphPOykS|:7_F|=o~]yʛ_w|)<3|=>OG|SO6}]ohˀKƝW'^u?V+?_rs}/=O(`\gr=.׃r=.׃r`\`\u6.׃r=.׃r=.ٸ\`\`\gr=.׃r=.׃r`\`\u6.׃r=.׃r=.ٸ\`\`\gr=.׃r=.׃rTz0]z0]qLtLtz0]z0]:tLtLl\z0]z0]qLtLtz0]z0]:tLtLl\z0]z0]qLtLtf*׃r=.׃r=.ٸ\`\`\gr=.׃r=.׃r`\`\u6.׃r=.׃r=.ٸ\`\`\gr=.׃r=.׃r`\`\u6.׃r=.׃r=.ٸ\`\u4SLtLtz0]z0]:tLtLl\z0]z0]qLtLtz0]z0]:tLtLl\z0]z0]qLtLtz0]z0]:\`\`\gr=.׃r=.׃r`\`\u6.׃r=.׃r=.ٸ\`\`\gr=.׃r=.׃r`\`\u6.׃r=.׃r=.ٸ\`\`\gr=.׃r=.׃rTz0]z0]qLtLtz0]z0]:tLtLl\z0]z0]qLtLtz0]z0]:tLtLl\z0]z0]qLtLtf*׃r=.׃r=.ٸ\`\`\gr=.׃r=.׃r`\`\u6.T{Ruu$b,MO%?Z5G~Sq?9h✍s6.ٸ8gTqq9l\s6.ٸ8g✍s4Sq9l\qqf*ٸ8g✍s6.L9l\qq98g✍s6.ٸ8G3l\qq9h✍s6.ٸ8g\qq9l\s6.ٸ8g✍s4Sq9l\qqf*ٸ8g✍s6.L9l\qq98g✍s6.ٸ8G3l\qq9h✍s6.ٸ8gTqq9l\s6.ٸ8g✍s2sq9l\qqf*ٸ8g✍s6.L9l\qq98g✍s6.ٸ8G3l\qq9h✍s6.ٸ8gTqq9l\s6.ٸ8g✍s4Sq9l\qqf*ٸ8g✍s2sq9l\qqf*ٸ8g✍s6.L9l\qq98g✍s6.ٸ8G3l\qq9h✍s6.ٸ8gTqq9l\s6.ٸ8g✍s4Sq9l\qqf*ٸ8g✍s6.9l\qq98g✍s6.ٸ8G3l\qq9h✍s6.ٸ8gTqq9l\s6.ٸ8g✍s4Sq9l\qqf*ٸ8g✍s6.L9l\qq98g✍s6.ٸ8'3l\qq9h✍s6.ٸ8gTqq9l\s6.ٸ8g✍s4Sq9l\qqf*ٸ8g✍s6.L9l\qq98g✍s6.ٸ8G3l\qq9h✍s6.ٸ8g\qq9l\s6.ٸ8g✍s4Sq9l\qqf*ٸ8g✍s6.L9Bq+v8-y߹ϯs/;G=c?FL{3tx&5X?׻x05g]B~qB^2Gx-f#f=gN\~յvz-j.֒mmME]`z-j cǏb{ݿ968XP 6s]鵨qXNE2'5֛|]r%;zE68xMms}IWrU}]ݟzU]W^Ul˝WƱmq6tؾ>*lzUq|τ鵨qH׫tP^qzUQoczUq5]*-]*?uO׫8FzU}}<UYI׫gYbttؾ=]*KPl_`Ug]սVj2L׫{u4_zuq.7tZexwq0]֙(]uz#_=j<-]ֵR&dLL\yj]yգdW _exq7~68x>#_W0R^Wr5^rDkXδ5Gxqږx>պ.sG9[:胩qգބj}QUtz8xhW`M׫G8TWkԉWʧ2gZG7}0]ZM\UWWg߮{WY5M׫5|mwtZex$$d9CԡWMB22l$$~aGzCOq]Z MƵmd\Mƥ5gh2md\W&gk14Wzuh2zL׫CqN;;X:4׸NƵd\zuqx'zt:4׵]WfMUGj^աɸ-_d\5zuh2}md\M\ЗZw"xu}Zxf}zա/_g:wxuoJ׫C_.WNrNBR?O|C_zuLB﯎w+_u٧աIHMBR9]MB2xuhH׫CtzjSS -%I}m>w҆x$$ﯞt :0IH+_=w2eK۬IH K׫&!W+J׫t~YxUoΤm֗-_Ul_*_'_=/_o~z{O׫їxU_bXUuI*}.ZbW׻X~O~9xU}bEWf}`xU}b>U(_Ul<˙B]^Ul_{~yx=_}cW~yt5t7_G6]ol_W~Oa~a~?7߯x%_}ccW87[fcWؾ.ۏ'_}csW۟WZGj ^_N~A _KxgG6],_[_,!^I/~>et|/oM}~,9Oy-ޟS(3zB/zuEO?>u Ǐ"{fDSB{,1};Gr7}:"mMĦ6.֨QX$"MoBD)gS\WA`s(*yg`M>=lhmKۼjw16z!«e[˹֠q<;s0&Sƕ%ms 5hԕ{Xn%=5ݵ 665ݵMm$STLgh](|3tIkMZ{$2ǚ6H<",ms}xOk</ᩮkxxԧxcmޗx>6KAmtf'gmޞtnk8Mq=IqptnIqp?tnt8UIzM5M=<4%I\8~Nq i'\8-#-c|iqtM[/U2=O]Ӟk.1#1=@sRZ0)983O*gbrk[k;5K;]8:=N4آkGq'i-8:;_15555Bks);kiRv:SްN蔟4bFqh:}r:}r:}s:}su暏4`#Ti >N[@uh~PF &vpMۙk[|暣}0^ĩN[|kڲf5mS샹hZs܂ҚRNNsei>OӖ}/i>Ӗ}gJ\sJf:m{{N[QF=kLZskn#gb~N:>u}0vX[N4`]-]g +Ěa샱;:>M4Q=kΝ&1`fM4iص`fCMk>x=?:>xi>]gg}Ӟ}i>>د8К\sPyr'5 5Gk暣5> 4`ܯi>f'#QiF iF /ӌW iF zNѡ5:͈A\T1-?iF Rb:͈AJT1Ȑ3iF zN3biF zN3b:͈A'4#{.ӌ䱉4#Kk>/T1:N3bㆦ:͈AIu4#WT1X1ND[lifl:>eu}ͥx&+'`Nkk}u}4`;&i8cfxƝF4gXs`foQf ~0N3bAӌ4h#eO\3ѩN3bОtM+:iF svәk1X[NX۱NF;XWyt+לN-1ֱN\ٱN\ѱN[X[vNXuu胱%XOyt';2Ou7|v7|4-@-tff<7,iF b[רN3b4#c[\sC)#m"eĠE:͈A~4Au.ӌ%Pf ;H1}hT1hqP:͈AvAӌbiF ZtFk>_2b}}~8^xU=N3bO2H1h!H1W2b}hXJN }̓>RF ZdXX.:>Bk>2bW42iB)#'?NƊN} GʈA2H1ȏjNf֜}GʈAhvL2bЎ>RF GʈA@T1[:͈A;V}GZAiE }1x/V}1ȹd g5͈A&kqLtE ރ1xOF1G@%2׈O+bSVo1h?[`}V nۯ~_%x7>1_?>;F r:Xo9?,𣇿u?a31^w{GyfXgz7? "^{|7i\{ҵh=n숙61wmwOb|;Zkg3:Ͻt-qеg|Ont-+lt-lpc}뙞.33}&]ߋ|е||Z=?7 1s}qҵoK-kq98ZD5i#GNk}pj=isga9̬jq~5G8~5G jϯj|-Ws}i#GNck#g:p-rYp-r$.گ,گ}0̈9?6'WsvJ?8h#c 0h#Uu>M_͑Ws]WsA?R~5Gz%ĚgZD_͑b8i#w73Z sˉ5q<5Go +jq;~5G'%s گL9~5GϷ-O2gKZD~5G]x~5G_GZ\jWs/ _s}0'~5%2L&/xŎ7'WG57L9 +p-b̋﯎胱eWGL~5>M0nĚ߉Uhm}>x_~07:~5|63WGjQF]s#^|51 ;9`}0'~5:}!WG{<>xdž#=g`n|uDZD߂ƹ* _}Q}0%w,#Qy3K83}~|5Zη8譬gbjH:#8Ց_~ |u7ѵȯ?Iՙ_ a3s^̯?_|uWJv33<X'9O|uWGy~uWLՙ_ ߾I"|I̯~uW_=zWg__JWg~%xD~uWߟL~%x~:]sگ _WJ_q湾^_+o|uW:+ +Wg~\ϧ5W_ +e|uW/:+Dՙ_Wg~j;|}^Zs~j|3 +u̯B;3 +u\_PZt-W^̯B/:Ws}^PFx)̯|+:+ +5گ^UtizWFà_1WG6Zs~jd_P_M?,گdE[_iﯦqUi7gWǏﯦ/>~Z_M?,ǿ~Z_wL~Wp7>~깴_M?jqW?bJՔ'ch>~W?ﯦ 7WW9} L~=WǏ+ﯦ<_M?DjGe5W_M9It-+_]#Z5xWk95?dk#Zmkκ5=5?cX#s8\5GW_s839}Fyt-:|uJ__]>}W?>~Wm[k6l9?7?U߭s'k!kp1>?[v}zz]\zoϾ]ozȮzȮzlvgd{Fvgd{Fve63=#3=#2]]]oͮzȮzȮf{Fvgd{Fvgd[f=#3=#3-]]zȮzȮzlvgd{Fvgd{Fvcv3=#3=#2]]]oͮzȮzȮf{Fvgd{Fvgd[f=#3=#3-]]zȮzȮzlvgd{Fvgd{Fve63=#3=#2]]]ݮzȮzȮf{Fvgd{Fvgd[f=#3=#3-]]zȮzȮzlvgd{Fvgd{Fve63=#3=#2]]]oͮzȮzȮf{Fvgd{Fvgd;f=#3=#3-]]zȮzȮzlvgd{Fvgd{Fve63=#3=#2]]]oͮzȮzȮf{Fvgd{Fvgd[f=#3=#3-]]zȮzȮzlvgd{Fvgd{Fve63=#3=#2]]]oͮzȮzȮf{Fvgd{Fvgd[f=#3=#3-]]zȮzȮzlvgd{Fvgd{Fvcv3=#3=#2]]]oͮzȮzlvgd{Fvgd{Fve63=#3=#2]]]oͮzȮzȮf{Fvgd{Fvgd[f=#3=#3-]]zȮzȮzlvgd{Fvgd{Fve63=#3=#2]]]oͮw2]f{ĮvO~]߮_?dWu>]=/w=lzo?z_ȮHz`ʮz`ʮzȮz`ʮz`ʮz`ʮz`ʮzȮz`ʮz`ʮz`ʮz`ʮzȮz`ʮz`ʮz`ʮz`ʮzȮz`ʮz`ʮz`ʮz`ʮzȮz`ʮz`ʮfSv=0eSv=0e{Fv=0eSv=0eSvgdSv=0eSv=0e{Fv=0eSv=0eSvgdSv=0eSv=0e{Fv=0eSv=0eSvgdSv=0eSv=0e{Fv=0eSv=0eSvgdSv=0eSv=0e{Fv=0eSv=0eSve6))3))=#))3))=#))3))=#))3))=#))3))-]L]L]L]L]]L]L]L]L]]L]L]L]L]]L]L]L]L]]L]L]L]L]oͮz`ʮz`ʮz`ʮz`ʮzȮz`ʮz`ʮz`ʮz`ʮzȮz`ʮz`ʮz`ʮz`ʮzȮ))3?z`ʮz`ʮz`)=#îz`ʮzlv=0]L]L]LaSv=0eSvgdSv=0eSvgdSv=0eSv=0e{Fv=0eSv=0eSvgdSv=0eSv=0e{Fv=0eSv=0eSvgdSv=0eSv=0e{Fv=0eSv=0eSvgdSv=0eSv=0e[f))=#))3))=#))3-wk,?`6{=c?s1q0c/ۘD>6.qŸ__~{뽲qݸ{ȸ{ȸf{Fƽgd{Fƽgd[f3=#32=#32-qqٌ{ȸ{ȸ{lƽgd{Fƽgd{Fƽe632=#32=#2qqqo͸{ȸ{ȸf{Fƽgd{Fƽgd;f7=#32=#32-qqٌ{ȸ{ȸ{lƽgd{Fƽgd{Fƽe632=#32=#2qqqo͸{ȸ{ȸf{Fƽgd{Fƽgd[f3=#32=#32-qqٍ{ȸ{ȸ{lƽgd{Fƽgd{Fƽe632=#32=#2qqqow32=#32=#2qqqo͸{ȸ{ȸf{Fƽgd{Fƽgd[f3=#32=#32-qqٍ{ȸ{ȸ{lƽgd{Fƽgd{Fƽe632=#32=#2qqqo!32=#32=#2qqqo͸{ȸ{ȸf{Fƽgd{Fƽgd[f3=#32=#32-qqٍ{ȸ{ȸ{lƽgd{Fƽgd{Fƽe632=#32=#2qqqo!32=#32=#2qqqo͸{ȸ{ȸf{Fƽgd{Fƽgd[f3=#32=#32-qqٍ{ȸ{ȸ{lƽgd{Fƽgd{Fƽe632=#32-qqٌ{ȸ{ȸ{lƽgd{Fƽgd{Fƽe632=#32=#2qqqo͸{ȸ{ȸf{Fƽgd{Fƽgd;f7=#32=#32-qqٌ{ȸ{ȸ{lƽgd{Fƽgd{Fƽe617߼Fܸ7fvdwaђϦ'oċ?7zqT߲?o3G1lyk'x1PY"ؼr<ʧeȓbEB>F3ؙF3#E/T%ag78Ӛ\sk x~ W޷p=Y/ZК<Ŝ/ѽכ5kڞ% +tM{9=]Ӟk>ևN5{ PFRFluRqN8ЌcƁfĉ44#NbXqu p4k{,5k>h#7tM4`-=i0KE3\h~PFI:mg9nUZko"J:mi>״e OuڲiGLT-`SӖ}pD5>ߗeKuڲ:mT-`/i>cWB4`/i>KuڲƖ4JKkn@gb-?#u}0%;|NN4`/i=cflk}Eۡk}|_0ibf&u}LE\s454 X&`ZNơ5gi>T> fz~k]Ӗkio2=ל brͱ'`4U +:sT=`4G0FuG9@MuG9^\s \slFmi~6<ļNN{XW9NrtM\sk.FkT:sq'`nNƚnC5]翱N?a<5}sѼ难AȠu}0 4`i{&zE/K4z`0:~A4z{0:}D0Eu{`H >[~ӑ}p<>8>beCu:tdC#>"ӑ}0@ӑ}0ӑ}0.,>7,>5gVӑ}0n1ӑ}0nhӑ}0EQ샽Mӑ}0'Z}$2Ě[+flk}4`)i6\s샭O샭M-䚏u}0X8}'iX9Nq5>x~>L 9N:>xĦiXl5]PT3 )53ttfgAuETǠ:mDIT۠:=|sǠ:8 }=:[l[Nght\T &7]ӑkH[c\ѱNX[NX۱NF;XWyt+Zkn5FFLX-a-N;Xs< iv]4`lI:k5ǎkn55 4` 4`'4`D} Ku f65FuL57T̉.uE>8Fuze]}06T)>R-g5>5 Rr:9`5g/H)>R_# RWՓ4xGJAz~}}アu}eB)yGJMu}0 qbflqP5glH):>x>#9iB)XcXsf%=?φ>RA2H)GX:>x#/#ߎ>R->pMSoGG)x:NS[:MHK_>#-GZ{wTKHK;HKHKېt>:]o>>үrMl.H?7ks}#"O~Wְ>S!߇=^||ϟO?8 \.ٗAzˠxa_GGmPE4!~hPg43 63 {F- {F=AѠ~l=AѠ~hPg42C=AѠ~hPg42۠~hPg43 63 {F- {F=AѠ~l=AѠ~hPg42۠~hPg43 w>3 {F- {F=AѠ~l=AѠ~hPg42۠~hPg43 Р~hPg43 63 {F- {F=AѠ~l=AѠ~hPg42۠~hPg43 63 {F{F=AѠ~l=AѠ~hPg42۠~hPg43 63 {F-:˞Ѡ~hPg43omPg43 [f {F=A{F=AѠ~hPeAѠ~hPg43omPg43 ;f {F=A{F=AѠ~hPeAѠ~hPg43omPg43 [fhPg43 [f {F=A{F=AѠ~hPeAѠ~hPg43omPg43 [f {F=A{F=AѠ~hPeAѠ~hPg43omPg43 [f {F=A{F=AѠ~hPeAѠ~hPg43omPg43 [f {F=A{F=AѠ~hPeAѠ~hPg43}Pg43 [f {F=A{F=AѠ~l=AѠ~hPg42۠~hPg43 63 {F- {F=AѠ~l=AѠ~hPg42۠~hPg43 63 {F{F=AѠ~l=AѠ~hPg42۠~hPg43 63 {F- w̯mk͎6ojnw/-9 c>ߨozvc~{_zo5~Z˘Hٌy`ʘy`ʘyȘy`ʘy`ʘy`ʘy`ʘyȘy`ʘy`ʘy`ʘy`ʘyȘy`ʘy`ʘy`ʘy`ʘyȘy`ʘy`ʘy`ʘy`ʘyȘy`ʘy`ʘfS<0eS<0e{F<0eS<0eSƼgdS<0eS<0e{F<0eS<0eSƼgdS<0eS<0e{F<0eS<0eSƼgdS<0eS<0e{F<0eS<0eSƼgdS<0eS<0e{F<0eS<0eSƼe6c2)c2)c32)c2)c2=#c2)c2)c32)c2)c2=#c2)c2)c32)c2)c2=#c2)c2)c32)c2)c2=#c2)c2)c32)c2)c2-1L1L1L1L11L1L1L1L11L1L1L1L11L1L1L1L11L1L1L1L1o͘y`ʘy`ʘy`ʘy`ʘyȘy`ʘy`ʘy`ʘy`ʘyȘy`ʘy`ʘy`ʘy`ʘyȘy`ʘy`ʘy`ʘy`ʘyȘy`ʘy`ʘy`ʘy`ʘyl<0eS<0eSƼgdS<0eS<0e{F<0eS<0e{F<0eS<0eSƼgdS<0eS<0e{F<0eS<0eSƼgdS<0eS<0e{F<0eS<0eSƼgdS<0eS<0e{F<0eS<0eSƼe6c2)c2)c32)c2)c2=#c2)c2)c32)c2)c2=#c27Foÿ1_2{_?11ݮ|ΕGqє}_b/|/e{צ~oEd;d7=#S32=#S32-))LyȔLyȔLylgd{Fgd{Fe6S32=#S32=#S2)))o͔LyȔLyȔf{Fgd{Fgd[f3=#S32=#S32-))MyȔLyȔLylgd{Fgd{Fe6S32=#S32=#S2)))o͔LyȔLyȔf{Fgd{Fgd[f3=#S32=#S32-))LyȔLyȔLylgd{Fgd{FcvS32=#S32=#S2)))o͔LyȔLyȔf{Fgd{Fgd[f3=#S32=#S32-3e{Fgd{Fgd[f3=#S32=#S32-))LyȔLyȔLylgd{Fgd{FcvS32=#S32=#S2)))o͔LyȔLyȔf{Fgd{Fgd[f3=#S32=#S32-?n{Fgd{Fgd[f3=#S32=#S32-))LyȔLyȔLylgd{Fgd{FcvS32=#S32=#S2)))o͔LyȔLyȔf{Fgd{Fgd[f3=#S32=#S32-3e{Fgd{Fgd[f3=#S32=#S32-))LyȔLyȔLylgd{Fgd{FcvS32=#S32=#S2)))o͔LyȔLylgd{Fgd{Fe6S32=#S32=#S2)))o͔LyȔLyȔf{Fgd{Fgd[f3=#S32=#S32-))MyȔLyȔLylgd{Fgd{Fe6S32=#S32=#S2)))o͔w%?7 Ҕ8fΒ?lko x1O1߲?k}֛1oٍyȘyȘylƼgd{FƼgd{FƼe6c32=#c32=#c2111o͘yȘyȘ̔111o͘yȘyȘf{FƼgd{FƼgd[f3=#c32=#c32-11ٍyȘyȘylƼgd{FƼgd{FƼe6c32=#c32=#c2111o͘yȘyȘ̔111o͘yȘyȘf{FƼgd{FƼgd[f3=#c32=#c32-11ٍyȘyȘylƼgd{FƼgd{FƼe6c32=#c32=#c2111o͘yȘyȘ̔111o͘yȘyȘf{FƼgd{FƼgd[f3=#c32=#c32-11ٍyȘyȘylƼgd{FƼgd{FƼe6c32=#c32=#c2111o͘yȘyȘL~ݘyȘyȘf{FƼgd{FƼgd[f3=#c32=#c32-11ٌyȘyȘyƼgd{FƼgd{FƼe6c32=#c32=#c2111o͘yȘyȘf{FƼgd{FƼgd[f3=#c32=#c32-11ٌyȘyȘylƼgd{FƼgd{FƼe6c32=#c32=#c1111o͘yȘyȘf{FƼgd{FƼe6c32=#c32=#c2111o͘yȘyȘf{FƼgd{FƼgd[f3=#c32=#c32-11ٌyȘyȘyƼgd{FƼgd{FƼe6c32=#c32=#c2111o͘yȘyȘf;רmw3(GP618)?nlϳݖ뗇/=lm?ze{lyl<0eS<0eSgdS<0eS<0e{F<0eS<0eSgdS<0eS<0e{F<0eS<0eSgdS<0eS<0e{F<0eS<0eSgdS<0eS<0[3)[)[϶k![)[yly`ʖly`ʖa{F<0eS<0e=#[)[y-L-L--L-L-L-L--L-L-L-L--L-L-L-L-o͖ly`ʖly`ʖly`ʖly`ʖlyȖly`ʖly`ʖly`ʖly`ʖlyȖly`ʖly`ʖly`ʖly`ʖlyȖly`ʖly`ʖly`ʖly`ʖlyȖly`ʖly`ʖly`ʖly`ʖlyl<0eS<0eSgdS<0eS<0e{F<0eS<0eSgdS<0eS<0e{F<0eS<0eSgdS<0eS<0e{F<0eS<0eSgdS<0eS<0e{F<0eS<0eSgdS<0eS<0e[f)[)[=#[)[)[3)[)[=#[)[)[3)[)[=#[)[)[3)[)[=#[)[)[3)[)[=#[)[)[2-L-L--L-L-L-L-L-L--L-L-L-L--L-L-L-L--L-L-L-L-o͖ly`ʖly`ʖly`ʖly`ʖlyȖly`ʖly`ʖly`ʖly`ʖlyȖ̯my9l߆/[>ߚ'u~wc6Z=c7=xaQ_~Rz><^9ˮE@zSC>Vre~C`\nl`%ղ٢勅CxqgXpVrsG/G5|[kL\k>  4|xq/)xqLy/],yks5xc}Xs~GOx +-? "O=3yRFfT5sҚg9n1z~f9X3qȉu}8;P8I:Cθ\8N\s?N\s;N\s ;|Xq:CΈS il&FΰN44kk{,5k>h#7tM6`-}i0KEݡ:&8Nۑki4zvV5hdqӖ}0_YeKuڲR=v%tMR샽T-`lIN1 yz&1b XSk}4`ԱNbf3i[?[:>cf!ihXV5N\sN@eƮ4`znZs#^6>x<i~N{#]gny2ycFucFN\s^]+]|+uz(COjaF5XjuX{~pHk~r͟gr'5kM5bF/q^XL3+2}QF_ +& i _Tۃii#9/سGjx~FS㹨NG-}0ӑ}0T#`NG8QRPqaNGaNGhN/9`RqQqCS)5>tdmR9傞#y&XI4`--]XLNVcdl}bflmbfl'&|Lq|:>xƱ=N:>xΉu};i#x&iXc`fSΑk4}Dk:r23|vәk>:iv4`2iv4`r;ih5uzcWBkrͭc޹Tˈ54`%u}i4`l:>خcF-I:}rͣc>ؑ5}rͭccaFlbFl`Fh:aNcFuzѨNА +W3*RP9E\2ҕ}ph#]ӨN샱K:4asfi Rf,ZsEk>_2 N3 p2 >Rx>RU:M 2d2 r!=?>R} E)-.i{` } ̓>RZdX :>w!iZsvaX} u}G0@O샱b9ǒgC)Aa(d2 bf<4qax@)#eeiG0@@T[:0@;V}GZaAi}x/V +}x;H+ 6V nCxVyx>3 {F- {F=~l=~hxg42~hxg43 63 {F- {F=~l=~hxg42~hxg43 63 {F- {F=~=~hxg42~hxg43 63 {F- {F=~l=~hxg42~hxg43 63 {F- {F=~l=~hxg42~hxg43 w>3 {F- {F=~l=~hxg42~hxg43 63 {F- {F=~l=~hxg42~hxg43 63 {F- {F=~=~hxg42~hxg43 63 {F- {F=~l=~hxg42~hxg43 63 {FmYn#}? 'Eu{9/QJݥnUK G&gx~6'G3MƓluR*m~>_eS۬:G[?W-h=zLd2>T8T,1*CO]9PlW:?~PS~:?;"Iǡgt*_ђCeCO}fK^m[:?'fǞCuxPikp6hފqxV>c[C;5n<k|MphvڇC|85zL}Vtbuȧ}4{ i1;8c}?q41qxVb>Yq>i1M} +ǡ+i1q8c1ӌǡӨ P&Lǡu=~JǡG}|(>TԟP3'ןt*_,l8l]q|95fKǡGcڇ׋h=(8Tj}qZxj>CW }qxjY2c'x}qxj5Oڇuǡ{qq{*|88)ijԍ5ClڇX<5ևxj i^;uA ij}ڇ&A`ij#gy$G#fڇI#n^w\q뿞8tqJǡW CM7,CM7J P/ʡ>t˪Im^%n^P'-n^x:58>T{:5~F\Ai}\>4P/u3op\8|s8NF|8TY~q\A+>TPn8TkºdXԇ+ C +(W,C='{ß8T +><,$>Ot˱)n~ki*W1ǡrzǡre*i*W8OtHǡ_;>Ot)n~"n~8x]y_]5^O|5{g<5֧xj#>#>Ot=M7hn5W|R4>Ot)o/,y_5>Ot3Ci?ChzS4ݼxj88:[ hy} 5*>a1>Oow)F|2lS4Zo8TyDy_%>Ot)nhM7~_R#>Ot5|mr|WM _'>OtXCM7j.m[||}OQUqxi|:qz8|8|kS|Z7_<ׯ=>OyS|yʛtu)o~yʛ_O||_t[|<哯yO'?5>_vm//w^yWysǿϗo\\_{K>_~_~?~=Jr=.ٸ\`\`\gr=.׃r=.׃r`\`\u6.׃r=.׃r=.ٸ\`\`\gr=.׃r=.׃r`\`\u6.׃r=.׃r=.ٸ\`\`\G3tLtLl\z0]z0]qLtLtz0]z0]:tLtLl\z0]z0]qLtLtz0]z0]:tLtLl\z0]z0]`\`\u6.׃r=.׃r=.ٸ\`\`\gr=.׃r=.׃r`\`\u6.׃r=.׃r=.ٸ\`\`\gr=.׃r=.׃r`\`\u6.׃r=.׃rTz0]z0]qLtLtz0]z0]:tLtLl\z0]z0]qLtLtz0]z0]:tLtLl\z0]z0]qLtLtf*׃r=.׃r=.ٸ\`\`\gr=.׃r=.׃r`\`\u6.׃r=.׃r=.ٸ\`\`\gr=.׃r=.׃r`\`\u6.׃r=.׃r=.ٸ\`\`\G3tLtLl\z0]z0]qLtLtz0]z0]:tLtLl\z0]z0]qLtLtz0]z0]:tLtLl\z0]z0]`\`\u6.׃r=.׃r=.ٸ\`\`\gr=.׃r=.׃ru4?r]+hXo'zc|{ cq-뚣L?8~}u✍s4Sq9l\qqf*ٸ8g✍s6.L9l\qq98g✍s6.ٸ8G3l\qq9h✍s6.ٸ8gTqq9l\s6.ٸ8g✍s4Sq9l\qqNf.ٸ8g✍s6.L9l\qq98g✍s6.ٸ8G3l\qq9h✍s6.ٸ8gTqq9l\s6.ٸ8g✍s4Sq9l\qqf*ٸ8g✍s6.L9l\qq98g✍s6.ٸ8G3l\qq9h✍s6.ٸ8gTqq9l\s6.ٸ8g✍s4Sq9l\qqf*ٸ8g✍s6.L9l\qq98g✍s6.ٸ8G3l\qq98g✍s6.ٸ8G3l\qq9h✍s6.ٸ8gTqq9l\s6.ٸ8g✍s4Sq9l\qqf*ٸ8g✍s6.L9l\qq98g✍s6.ٸ8G3l\qq9d✍s6.ٸ8gTqq9l\s6.ٸ8g✍s4Sq9l\qqf*ٸ8g✍s6.L9l\qq98g✍s6.ٸ8G3l\qq9h✍s6.ٸ8gTqq9l\s6.ٸ8g✍s4Sq9l\qqf*ٸ8g✍s6.L9l\qq98g✍s6.ٸ8G3l\qq9h✍s6.ٸ8gTqq9l\s6.ٸ8g✍s4Sq9l\qqNf.ٸ8g✍s6.L9l\qq98g✍s6.ٸ8G3l\qq9he8m;~Qw_:|{^w~~Α~OX~<ǿ9c~E G/?/eFI 0y.l OӘou]w2{cdjk,k2׷'S/qf]˜)6 +ԧIf|kڠdjk$6um{BV"ZluעNmߋ6ͻN%Sۼymޯgbב^kQCamV^ cyoV. 6ͣ.6CF2mm3ަZk[t0mk%KZQW6um~{m~I|6?uy^kVM6{XJUrkz-3Z\Ϸ.wmsh#m]\ogz-M6 vmVȚ^ywt769skQ~uLm}lkz-jkQ`]{8~͑zzom~JEDzwz-j<<鵨q+۱+cĜljSMZUl_HL׫bc_t7%msUQaK׫6G}&LEF^Ul5U"Z8xN׫zK׫szU}nzUq{^Ul\168x\H׫᙮W $]*ϪO^Ul<˒W5UG]eU5|zUX$ b9b8b~nyFLctؾ.ht~Bx-ۏ:9b8bzW}m3]*ףt~UB^Ul?}C;GzUv1o^Ǹtؾ G^Ul?0]*zF^]tؾNeO\+t~'mmug<zUxkI\xpNE㹟tؾ%]*?UrozUYo zUǝ.b*t^zUU{3:ϴ5#]*?8]5WWg^kJ׫{uqպ/sĻGgzog@zQYWlz忝`4!UgbWz5%[z8Xj}&(G񛶹j +exoZ8x-GZexqҗ#68Xrmq>G׶u3_=j'_1jALu5^&W7MǐWգFtz8xk^=jg2Wz8XNZW>ex>W9:ڿ{z.oڠtz8x]OZ?v[ZʌxqP}n^!΀Lmsպt.s&!Yx$$tzha&!Y]MB2xuhzuhCF^>ȥSR(Mڰ#l󹼓6&!x$$5UMԀWOMBr_깾 ,[fMBRY^=5 It^QV^UlUr}s&mtnbbe}ﯞGz_t~?19})W/*_%_Ul_bKї5]*xU}sWס*_\4}!>~m֗ήW+*_#_Ul_U˳-Tl/ܥUuW~7_xgK׫ol_Cw^}cuol_aok'z4#_}cWX7?x3_}cmVl?xB;]x7?xﯾyzuZOl~WX[{wdӅ%ReԾu_[J~ײo:oM}~,9Oy-ޟS(3zB/zuEO?>u Ǐ"{fDSB{,1};Gr7}:"mMĦ6.֨QX$"MoBD)gS\WA`s(*yg`M>=lhmKۼjw16z!«e[˹֠q<;s0&Sƕ%ms 5hԕ{Xn%=5ݵ 665ݵMm$STLgh](|3tIkMZ{$2ǚ6H<",ms}xOk</ᩮkxxԧxcmޗx>6KAmtf'gmޞtnk8Mq=IqptnIqp?tnt8UIzM5M=<4%IOdjqPg`:Oy8ӽA%v<mzyyfM6kdu^u&TyZ`gB,/jo=wUO}]AV;|ˏo~ljk{&]#j`k`k{6>>ٸk`k`g>>ڞk`k`k{6>>ٸk`k`g>>ڞk`k`k{6>>L}0]ӵ}0]ӵ=tmLtmLl\ӵ}0]ӵ}0]۳qmLtmLtmƵ}0]ӵ}0]ӵ=tmLtmLl\ӵ}0]ӵ}0]۳qmLtmLtmƵ}0]ӵ}0]ӵ=tmLtmLh>>ڞk`k`k{6>>ٸk`k`g>>ڞk`k`k{6>>ٸk`k`g>>ڞk`k`k{4SmLtmLtmƵ}0]ӵ}0]ӵ=tmLtmLl\ӵ}0]ӵ}0]۳qmLtmLtmƵ}0]ӵ}0]ӵ=tmLtmLl\ӵ}0]ӵ}0]۳qmLtmLtmƵ}0]ӵ}0]ӵ=k`k`g>>ڞk`k`k{6>>ٸk`k`g>>ڞk`k`k{6>>ٸk`k`g>>Tӵ}0]ӵ}0]۳qmLtmLtmƵ}0]ӵ}0]۳qmLtmLtmƵ}0]ӵ}0]ӵ=tmLtmLl\ӵ}0]ӵ}0]۳qmLtmLtmƵ}0]ӵ}0]ӵ=tmLtmLh>>ڞڵ}0]ӵ}0]ӵ=tmLtmLl\ӵ}0]ӵ}0]۳qm槹{P9j&ѣ\Tۿ8W{ojwWӟz_j{Km_2q2H\k{6ٸgڞk{4SmƵ=l\۳qmfٸgڞk{6L=l\۳qmƵ=gڞk{6ٸG3l\۳qmƵ=hڞk{6ٸgT۳qmƵ=l\ۣj{6ٸgڞk{4SmƵ=l\۳qmOfٸgڞk{6L=l\۳qmƵ=gڞk{6ٸG3l\۳qmƵ=hڞk{6ٸgT۳qmƵ=l\ۣj{6ٸgڞk{4SmƵ=l\۳qmfٸgڞk{6L=l\۳qmƵ=gڞk{6ٸG3l\۳qmƵ=hڞk{6ٸgT۳qmƵ=l\ۣj{6ٸgڞk{4SmƵ=l\۳qmfٸgڞS۳qmfٸgڞյ=hڞk{6\]۳qmfٸgڞյ=dڞk{6\]۳qmfٸgڞյ=hڞk{6\]۳qmfٸgڞk{6L=l\۳qmƵ=gڞk{6ٸG3l\۳qmƵ=hڞk{6ٸgT۳qmƵ=l\ۣj{6ٸgڞk{2smƵ=l\۳qmfٸgڞk{6L=l\۳qmƵ=gڞk{6ٸG3l\۳qmƵ=hڞk{6ٸgT۳qmƵ=l\ۣj{6ٸgڞk{4SmƵ=l\۳qmfٸgڞk{6̵=l\۳qmƵ=gڞk{6ٸG3l\۳qmƵ=gڞk{6ٸG3l\۳qmƵ=hڞk{6ٸgT۳qmƵ=l\ۣj{6ٸgڞk{4SmƵ=l\۳qmfٸgڞk{6̵=l\۳qmƵ=gڞk{6ٸG3l\۳qmƵ=hڞk{6ٸgTۓinG?Vkw/~׼oMb~|/Uc=|w]B=|_~^K>SC<Y.ݡ^ϖL}<'[76ﭛGmla -Fu+Rm~5wm*>=xmP]=lLF\S؇u:џ>}Y -:Cϲ]8TԈCO]P9m>T^O:?˽P9zt*G-t*G3X:lqY?0ݦ>t*GK#]ӧ}k]\eڇ{k[xnw<Zx88q5ámOimX8c(C=vOP]r>cvڇzG<e?F<C=v3z_W<e;sP]zHP]=NF]>ؼ]x]FڇzRq.eڇzr{<娿}ڇz2#z좊3C5,t*Gt*GJǡrG_P93;џq=8TP9sv2z.8T5|}q5*eLPmP9z}2?q9CYFڇǡ>8xջPڇǡK8$>F|qqPVڇ{ǡn>8x/k<5޺yLm88=}Gs>xj͔5F@ڇ!6C,C<5>}\{P.8>82CzOPޤ>8,CupP"91G<ʹ=bG:e;8<m8qx,Jh+ǢmtFY؇Ǫ˓ccmI6cm^뷥}Q~}$JPzn8<hvCԇtCs:u3o~p\8|8NF|8T~P8sǡpǡPǡ>\}x*?uQ.>T~~'?m=qqxG|r(?8T~P09i*?K|RWeO%>O5>O->OcIX(>O3>O Cy)C)C`85>O->O}phTZk)Cu)Cu)C㠾[S7P`}ǡ:qq>qy8xy8x_y8xy8x?y8,y8y8lg<5UK<5>G|24>#>Oכ)C`}ǡAiJږOow)C^qPr)C)2uSNex˛)2uSNexI oS^]aT>yʩ >V1>OQn[|}OQ[|}xJG|}OQ֡u(qq6qq.qqpyʛ+>OysxqqpOys{S^7G<哣y'G?eO$~jMKkcE~w_}/W} __s׼o^-chjw~-zϿ?ïG\qf*ٸTgRKu6.L:l\qƥ:TgRKu6.ٸTG3l\qƥ:hRKu6.ٸTgRTqƥ:l\Ju6.ٸTgRKu4Sƥ:l\qf*ٸTgRKu6.̥:l\qƥ:TgRKu6.ٸTG3l\qƥ:hRKu6.ٸTgRTqƥ:l\Ju6.ٸTgRKu4Sƥ:l\qf*ٸTgRKu6.L:l\qƥ:TgRKu6.ٸT'3l\qƥ:hRKu6.ٸTgRTqƥ:l\Ju6.ٸTgRKu4Sƥ:l\qf*ٸTgRKu6.L:l\qƥ:TgRKu6.ٸTG3l\qƥ:hl\qƥ:TgRKu6.ٸTG3l\qƥ:hRKu6.ٸTgRTqƥ:l\Ju6.ٸTgRKu4Sƥ:l\qf*ٸTgRKu6.L:l\qƥ:TgRKu6.ٸTG3l\qƥ:dRKu6.ٸTgRTqƥ:l\Ju6.ٸTgRKu4Sƥ:l\qf*ٸTgRKu6.L:l\qƥ:TgRKu6.ٸTG3l\qƥ:hRKu6.ٸTgRTqƥ:l\Ku6.ٸTgRKu4Sƥ:l\qf*ٸTgRKu6.L:l\qƥ:TgRKu6.ٸTG3l\qƥ:hRKu6.ٸTgRTqƥ:l\Ju6.ٸTgRKu4Sƥ:l\qNf.ٸTgRKu6.L:l\qƥ:TgRKu6.ٸTG3l\qƥ:hRlTs.7J_[ύJ]U;~~4 -g[/="Oh -`PgB=.ԃB=.ԃB `P `P u6.ԃB=.ԃB=.ٸP `P `PgB=.ԃB=.ԃB `P `P u6.ԃB=.ԃB=.ٸP `P `PgB=.ԃB=.ԃBTӅz0]Ӆz0]qLtLtƅz0]Ӆz0]Ӆ:tLtLl\Ӆz0]Ӆz0]qLtLtƅz0]Ӆz0]Ӆ:tLtLl\Ӆz0]Ӆz0]qLtLtf*ԃB=.ԃB=.ٸP `P `PgB=.ԃB=.ԃB `P `P u6.ԃB=.ԃB=.ٸP `P `PgB=.ԃB=.ԃB `P `P u6.ԃB=.ԃB=.<]Ӆz0]Ӆ:P `P `PgB=.ԃB=.ԃBօz0]Ӆz0]Ӆ:tLtLl\Ӆz0]Ӆz0]qLtLtƅz0]Ӆz0]Ӆ:tLtLl\Ӆz0]Ӆz0]qLtLtf*ԃB=.ԃB=.ٸP `P `PguLtLtƅz0]Ӆz0]Ӆ:tLtLl\Ӆz0]Ӆz0]qLtLtƅz0]Ӆz0]Ӆ:tLtLl\Ӆz0]Ӆz0] -`P `P u6.ԃB=.ԃB=.l]Ӆz0]Ӆz0]qLtLtƅz0]Ӆz0]Ӆ:tLtLl\Ӆz0]Ӆz0]qLtLtƅz0]Ӆz0]Ӆ:tLtLhB=.ԃB=.ԃB `P `P u6[tLtLl\Ӆz0]Ӆz0]q{R -z')X͝^kO~-e?{Tse:Lg2t6.ٸLG3l\qe:h2t6.ٸLg2Tqe:l\t6.ٸLg2t4Se:l\qf*ٸLg2t6.Le:l\qe:Lg2t6.ٸL'3l\qe:h2t6.ٸLg2Tqe:l\t6.ٸLg2t4Se:l\qf*ٸLg2t6.Le:l\qe:Lg2t6.ٸLG3l\qe:h2t6.ٸLg2\qe:l\t6.ٸLg2t4Se:l\qf*ٸLg2t6.Le:l\qe:Lg2t6.ٸLG3l\qe:h2t6.ٸLg2Tqe:l\t6.ٸLg2\qe:l\t6.ٸLg2t4t6.ٸLg2t4Se:l\qf*ٸLg2t6.Le:l\qe:Lg2t6.ٸLG3l\qe:h2t6.ٸLg2Tqe:l\t6.ٸLg2t4Se:l\qf*ٸLg2t6.Le:l\qe:Lg2t6.ٸLG3l\qe:h2t6.ٸLg2Tqe:l\t6.ٸLg2t4Se:l\qNf.ٸLg2t6.Le:l\qe:Lg2t6.ٸLG3l\qe:h2t6.ٸLg2Tqe:l\t6.ٸLg2t4Se:l\qf*ٸLg2t6.Le:l\qe:Lg2t6.ٸLG3l\qe:h2t6.ٸLg2Tqe:l\t2?Ost2?V ~,([zizxKߖJƍcyJ?Z_?{Bsƕ:RgJ+u6WWl\*u6ٸRgsuƕ:RgJ+u6WWl\*u6ٸRgsuƕ:RgJ+u6WWl\*u6ٸRgsuƕ:RgJ+u6WWl\*u6ٸRgsuƕ:RgJ+u6WWl\+u6ٸRgJ+u4Sƕ:Wl\qfٸRgJ+u6L:Wl\qƕ:RgJ+u6ٸRG3Ul\qƕ:WhJ+u6ٸRgJTqƕ:Wl\*u6ٸRgJ+u4Sƕ:Wl\qNfٸRgJ+u6L:Wl\qƕ:RgJ+u6ٸRG3Ul\qƕ:WhJ+u6ٸRgJTqƕ:Wl\*u6ٸRgJ+u4Sƕ:Wl\qfٸRgJ+u6L:Wl\qNfٸRgJ+u6L:Wl\qƕ:RgJ+u6ٸRG3Ul\qƕ:WhJ+u6ٸRgJTqƕ:Wl\*u6ٸRgJ+u4Sƕ:Wl\qfٸRgJ+u6L:Wl\qƕ:RgJ+u6ٸRG3Ul\qƕ:WhJ+u6ٸRgJTqƕ:Wl\*u6ٸRgJ+u4Sƕ:Wl\qfٸRgJ+u6L:Wl\qƕ:RgJ+u6ٸRG3Ul\qƕ:WdJ+u6ٸRgJTqƕ:Wl\*u6ٸRgJ+u4Sƕ:Wl\qfٸRgJ+u6L:Wl\qƕ:RgJ+u6ٸRG3Ul\qƕ:WhJ+u6ٸRgJTqƕ:Wl\+u6ٸRgJ+u4Sƕ:Wl\qfٸRgJ+u6L:Wl\qƕ:R'=__\c>hΕw+_{~?O˿vFmYƟ˼?W;_W 59oS;^5ȫ=lǽ-F㮷nvO CsDxݖ.zң1=|a3Ava{ް.lNrL +ƋӋӋӋӋB,/jfms^ΟW+ڪwϵ-O8qmϤk{$SmLtmLtmƵ}0]ӵ}0]ӵ=tmLtmLl\ӵ}0]ӵ}0]۳qmLtmLtmƵ}0]ӵ}0]ӵ=tmLtmLl\ӵ}0]ӵ}0]۳qmLtmLtmƵ}0]ӵ}0]ӵ=k`k`g>>ڞk`k`k{6>>ٸk`k`g>>ڞk`k`k{6>>ٸk`k`g>>Tӵ}0]ӵ}0]۳qmLtmLtmƵ}0]ӵ}0]ӵ=tmLtmLl\ӵ}0]ӵ}0]۳qmLtmLtmƵ}0]ӵ}0]ӵ=tmLtmLl\ӵ}0]ӵ}0]۳qmLtmLtmf>>ٸk`k`g>>ڞk`k`k{6>>ٸk`k`g>>ڞk`k`k{6>>ٸk`k`G3tmLtmLl\ӵ}0]ӵ}0]۳qmLtmLtmƵ}0]ӵ}0]ӵ=tmLtmLl\ӵ}0]ӵ}0]۳qmLtmLtmƵ}0]ӵ}0]ӵ=tmLtmLl\ӵ}0]ӵ}0]ۣj`k`k{6>>ٸk`k{6>>ٸk`k`g>>ڞk`k`k{6>>ٸk`k`g>>Tӵ}0]ӵ}0]۳Yk`k`g>>ڞk`k`k{64yOj?Tm_$zTk^m߭O%kY{%*?=|?s˻ÿ~/ek{d푸'2l\۳qmƵ=hڞk{6ٸgT۳qmƵ=l\ۣj{6ٸgڞk{4SmƵ=l\۳qmfٸgڞk{6L=l\۳qmƵ=gڞk{6ٸG3l\۳qmƵ=hڞk{6ٸgڞ\۳qmƵ=l\ۣj{6ٸgڞk{4SmƵ=l\۳qmfٸgڞk{6L=l\۳qmƵ=gڞk{6ٸG3l\۳qmƵ=hڞk{6ٸgT۳qmƵ=l\ۣj{6ٸgڞk{2smƵ=l\۳qmfٸgڞk{6L=l\۳qmƵ=gڞk{6ٸG3l\۳qmƵ=hڞk{6ٸgT۳qmƵ=gT۳qmƵ=k{6L=l\۳gT۳qmƵ=k{6̵=l\۳gT۳qmƵ=k{6L=l\۳gT۳qmƵ=l\ۣj{6ٸgڞk{4SmƵ=l\۳qmfٸgڞk{6L=l\۳qmƵ=gڞk{6ٸG3l\۳qmƵ=dڞk{6ٸgT۳qmƵ=l\ۣj{6ٸgڞk{4SmƵ=l\۳qmfٸgڞk{6L=l\۳qmƵ=gڞk{6ٸG3l\۳qmƵ=hڞk{6ٸgT۳qmƵ=l\ۓk{6ٸgڞk{4SmƵ=l\۳qmfٸgڞk{4SmƵ=l\۳qmfٸgڞk{6L=l\۳qmƵ=gڞk{6ٸG3l\۳qmƵ=hڞk{6ٸgT۳qmƵ=l\ۓk{6ٸgڞk{4SmƵ=l\۳qmfٸgڞk{6L=l\۳qmƵ='*׵=>Cm?߬5kz{ic}S-?{~^z6rn7zdΰ=ݺyo&ivS}9>|o7m 6Mgڇ&ERh{y#Cn:+tW<uxvS8qM~Cnxv5xms}0Lph/S\Zif,IF#n0zۈU\qx6꒓6+.>[|?8u [zLm8kUI}P]W'h=zac2>T8T,(CO]P9lW:?5P9SC8ThuE퓎Cr/8T^%u :џ ,۶t*GOF=HǡrGikp6hZqx>b[Cַ;5Fm<k|`MphsڇC|8V<e-JP]:>cܴeC=vُ}qP]ǡC=vkN}8c6>cCϳcm"6c5cԧx걋bC=v9oǡ P9z #8)k4q">TNǡrg\O:?&>ToK:?g _ij<9CJ>8x~.F|8T^̏t*G{P9s֫k9qq5^.kqq4ɼxjT^qq𪫛5Cn'S|o{<5~Oќ#u3%CA}MP`}ǡCrz88 5jLP>875KP`88(T~[:]#C뽧P~$)C!>МCA98|W<@76w<x<ܥ.~q@k}.q.q`Wi*?A>v]` OF|x*?7xo5>O9ef<CPAPǡmNڇԕa5>O9)[|rh{|rhu}qpOJ=C`tSsSsSsSXq87SSH8xy8x>y8XE:kSkSk8}qy8xy8x]y8}qzqM88X*qqxjK|24>k|24>CuC ψS&my8XqqP%uڇ%>O5>O78q>0)OQnG|}F|}t*G_Iǡr:4kP^}4ǡ2}S(G_r5(G_3>OQ4C|)WPV)u{#5(GWS)(G_(G_3>OQ^OyszǡAcᛣoIᛣkNt9y)o^/~:vv:Z7G<ѯ->OyskS:7GF|=o~]yʛ_w|9)o~yʛ[|<哣yO'?5{&Gǂt͏"H;Aw/߾zݯk^X/T45ʻgRK_~^lףb.ٸTG3l\qƥ:hRKu6.ٸTgRTqƥ:l\Ju6.ٸTgRKu4Sƥ:l\qf*ٸTgRKu6.L:l\qƥ:TgRKu6.ٸTG3l\qƥ:dRKu6.ٸTgRTqƥ:l\Ju6.ٸTgRKu4Sƥ:l\qf*ٸTgRKu6.L:l\qƥ:TgRKu6.ٸTG3l\qƥ:hRKu6.ٸTgRTqƥ:l\Ku6.ٸTgRKu4Sƥ:l\qf*ٸTgRKu6.L:l\qƥ:TgRKu6.ٸTG3l\qƥ:hRKu6.ٸTgRTqƥ:l\Ju6.ٸTgRKu4Ku6.ٸTgR\qƥ:l\Ju6.ٸTgRKu4Sƥ:l\qf*ٸTgRKu6.L:l\qƥ:TgRKu6.ٸTG3l\qƥ:hRKu6.ٸTgRTqƥ:l\Ju6.ٸTgRKu2sƥ:l\qf*ٸTgRKu6.L:l\qƥ:TgRKu6.ٸTG3l\qƥ:hRKu6.ٸTgRTqƥ:l\Ju6.ٸTgRKu4Sƥ:l\qf*ٸTgRKu6.̥:l\qƥ:TgRKu6.ٸTG3l\qƥ:hRKu6.ٸTgRTqƥ:l\Ju6.ٸTgRKu4Sƥ:l\qf*ٸTgRKu6.L:l\qƥ:TgRKu6.ٸT'3l\qƥ:hRKu6.ٸTgRTqƥ:l\Ju6.ٸTgRKu4SNi{RJVC/~-Fw*???}gNo}B}|Ͽ|?z4Lz0]qLtLtƅz0]Ӆz0]Ӆ:tLtLl\Ӆz0]Ӆz0]qLtLtƅz0]Ӆz0]Ӆ:tLtLl\Ӆz0]Ӆz0]qLtLtf*ԃB=.ԃB=.ٸP `P `PgB=.ԃB=.ԃB `P `P u6.ԃB=.ԃB=.ٸP `P `PgB=.ԃB=.ԃB `P `P u6.ԃB=.ԃB=.ٸP `P `PG3tLtLl\Ӆz0]Ӆz0]qLtLtƅz0]Ӆz0]Ӆ:tLtLl\Ӆz0]Ӆz0]qLtLtƅz0]Ӆz0]Ӆ:tLtLl.ԃB=.ԃBTӅz0]Ӆz0]qLtLtfB=.ԃB=.ԃB `P `P u6.ԃB=.ԃB=.ٸP `P `PgB=.ԃB=.ԃB `P `P u6.ԃB=.ԃB=.ٸP `P `PG3tLtLl\Ӆz0]Ӆz0]ٺP `P `PgB=.ԃB=.ԃB `P `P u6.ԃB=.ԃB=.ٸP `P `PgB=.ԃB=.ԃB `P `P u6.ԃB=.ԃB=.Lz0]Ӆz0]Ӆ:tLtLl.ԃB=.ԃB=.ٸP `P `PgB=.ԃB=.ԃB `P `P u6.ԃB=.ԃB=.ٸP `P `PgB=.ԃB=.ԃB `P `P u4SLtLtƅz0]Ӆz0]Ӆ: `P `P u6.ԃB=.ԃB=.ٸPG=W_)\SSm,N]'2]폟=*_Lg2Tqe:l\t6.ٸLg2t4Se:l\qf*ٸLg2t6.Le:l\qe:Lg2t6.ٸLG3l\qe:h2t6.ٸLg2Tqe:l\t6.ٸLg2t4Se:l\qf*ٸLg2t6.Le:l\qe:Lg2t6.ٸLG3l\qe:h2t6.ٸLg2Tqe:l\t6.ٸLg2t4Se:l\qNf.ٸLg2t6.Le:l\qe:Lg2t6.ٸLG3l\qe:h2t6.ٸLg2Tqe:l\t6.ٸLg2t4Se:l\qf*ٸLg2t6.Le:l\qNf.ٸLg2t6.Le:l\qe:e:l\qe:Lg2t6.ٸLG3l\qe:h2t6.ٸLg2Tqe:l\t6.ٸLg2t4Se:l\qf*ٸLg2t6.e:l\qe:Lg2t6.ٸLG3l\qe:h2t6.ٸLg2Tqe:l\t6.ٸLg2t4Se:l\qf*ٸLg2t6.Le:l\qe:Lg2t6.ٸL'3l\qe:h2t6.ٸLg2Tqe:l\t6.ٸLg2t4Se:l\qf*ٸLg2t6.Le:l\qe:Lg2t6.ٸLG3l\qe:h2t6.ٸLg2\qe:l\t6.ٸLg2t4Se:l\qf*ٸLg2t6.Le:9B+k?_-c4Oz}%om^Ʊ{kԯ=z_RgJTqƕ:+u6L:Wl\RgJTqƕ:+u6L:Wl\RgJTqƕ:+u6L:Wl\RgJTqƕ:+u6L:Wl\RgJTqƕ:+u6̕:Wl\qƕ:RgJ+u6ٸRG3Ul\qƕ:WhJ+u6ٸRgJTqƕ:Wl\*u6ٸRgJ+u4Sƕ:Wl\qfٸRgJ+u6L:Wl\qƕ:RgJ+u6ٸR'3Wl\qƕ:WhJ+u6ٸRgJTqƕ:Wl\*u6ٸRgJ+u4Sƕ:Wl\qfٸRgJ+u6L:Wl\qƕ:RgJ+u6ٸRG3Ul\qƕ:WhJ+u6ٸR'3Wl\qƕ:WhJ+u6ٸRgJTqƕ:Wl\*u6ٸRgJ+u4Sƕ:Wl\qfٸRgJ+u6L:Wl\qƕ:RgJ+u6ٸRG3Ul\qƕ:WhJ+u6ٸRgJ\qƕ:Wl\*u6ٸRgJ+u4Sƕ:Wl\qfٸRgJ+u6L:Wl\qƕ:RgJ+u6ٸRG3Ul\qƕ:WhJ+u6ٸRgJTqƕ:Wl\*u6ٸRgJ+u2sƕ:Wl\qfٸRgJ+u6L:Wl\qƕ:RgJ+u6ٸRG3Ul\qƕ:WhJ+u6ٸRgJTqƕ:Wl\*u6ٸRgJ+u4Sƕ:Wl\qfٸRgJ+u6̕:Wl\qƕ:RgJ+u6ٸRG3Ul\qƕ:WhJ+u6ٸRgJTy힯TJ|4J[W꟣M%e}71oƾzѽJ8Qye\o?F^mIf{_>_l5Rwlwk{j:l#|6NuQԛײ?ϗv>YjV l"꟧`>gszߏiS>M endstream endobj 83 0 obj @@ -2273,202 +2270,184 @@ endobj 155 0 obj << /Filter /FlateDecode -/Length 58783 +/Length 61741 >> stream -xO%Gz f!@Z`fS%`F9qh?v5lN޴t7cnv,\TQ5~~?=F|Cg~>k\Wϻ^_a_s^??ӿv)?׬g]ӈK*?刺Qlל/(5e9?=3e#k 2nm]9AZӲQm6#siD斫Cje1 #jF&Mɵ\ms"6k#`7kͥUZ8UϪ/Z [!V< -1ZfG=6zhOmОv۬=M6w|JZu?(B׮ -raVY)HͣRa=Y.F3mƩy̓qjTqjl`=cR?S`ОA}qjTvqjc`3M~aDc`udyAc,ׅqj9ⴛAZAٴ1NŃ}PM{*callN>mߌJhOmyӞ,=*]]A8)gWũxI`OŁtN۬= ũa8U"԰> yqjlub[A1N̓UZ`-g9gFOdr ۺr)e!^V-mGf-W'"{ncFF%,.M6zhOmОv۬=Y+@{msl:~(Q!])D¬J1ZRaG(6w=z3m\gfy,ͥbNټO8y_t+{U%ͣb.+ͭbn,ټms[6S0Nl^W8dkSXb6qzfe>6qzlI*T48)1BqăcBq0P6b9S0Pb{8 +iYJ6W,"1!Nq̃~6<ס8m>i3ve%i3v(NyP) ƩyI6? ln85}0N̓mS`AQܦ8AG iko.]<د)N:6MqڇmSt1NmVN{*tq*ZAS~q*{mS`sc.۬tfټmN|d:jae8C5xP?8 |fPi}.۬JhOmyӞ,=*]]A8)gWũxI`OŁtN۬= ũa8U"԰> yqjlub[A1N̓UZ` -,PӢ0 H4$ZBy,o=~aץ?&nڿ(OurZL_JJǵ~_T0O?{ߪ_YfV; Yoz``{әX~}{h3J޺9ҺVQC7aB,0O9sԽ)V1ݬt܍1L*ofds=4[VED] :f;SG3kͽ:?w>ʢӧ;1>ڋ~|ZBQӫ>MF6ӽٮ6( s\8bVWlʦ$a+Zw"lWFh/Vu1k^Yd:r+̮+R P:Byw%*_PbwmtUE29u-ڋkv6ŵ3sܩ'R̩BNhdXНN{!t{^^(C@a 炽jrf0j=#ݖӭƹ9fZ&NZi"0h/ărFiE\~i/ăJlFZxwsLROzL+<Zqz^GD@i/ă.VY<8ܜ'Ń*j&M<8Xۭߔ*J|GLgIJjWVi/ăcNrO WxPIO,Wxp̹)_m1U*O~UWxPF(Ǔq&{ܝ3=98)_UIEj@(_U2ICOWxӲ*w)_mAW|ʏ(_9V|U$ ̩vaFoF{!v.?9F6}QŃsCj*(J'ŃS:~M31*^r/,Qź+pUQ#.\ul.ƔP2b/?)_U^e;]<,/#ZLf.\.^Ǜi/ă˯W*ݸ(_U..Om^(ҿU RFry'C<9F6{b.V|ua}u=GHPadX_.sa}U4K2t_!ܵW_T1nn:|YFkaWxpUcrzia}uBGnR:ă[ +C=odWQP?b5rJc\6)ۿN1.OͺO#NzszۼalZûC9F6[UMkx\n [?96~6qs0Ykh 䇖+%X䇖R맴M~h)}Z~Z~t&?|]I!?|Z?Z5Gg6vqZ~G6c\u3a{v,5w)~1. p.C ӔN۬6ͻλ}PݦirryZCi(m4Ciny,CiZnݦboZûMs.CiF9n=%wSV1wm0h ݦ)mdM3~6o5tf~6U䇖D~h;a -_?5|uZ~>䇖l>j!?|,yp)}54ZHkh\cW'?|ߴuMCnwY<54~_@x̓xU̓TC54^̓?)fݭҁ~ht15\A -ݯ#%:\Z G?\0+t%d+3D?\ [4ZCAZG/ -^w)~9_Ŏ~ho#5,eO}2ypve*h ̓sb?/7}E:__-~9)~9|Y)~9|Y)~9|Y )~9|YJ±×; ?˺×u__v~__v~__v~9|<'Sr˧h ̓{c?//E54D?4T~hǣ/=i ̓~__.>ZC൱+~__ޕACߋOkh<)~9gVuG?4ZyMkxYW{P-u/g#Ln)d/s!o]N9_CdnM989D"=j -\/r]M 0"Smss0Y09fU(8NlՔl ֧ዜsݯ<67s%`lsENů]lh}VoP*(D~hU.̬Tdr1Zik8Z}*ƩD::TSTg"*ƩDcI<*;06qms6qDd|H3D:S|u=ƩP'ςqzQ0N/ )1Nm(8 vҞ_Q67݅T/yԉP -Dq*ƅ ^(NE8~u8m6Bq'00˯.<i3:x`OyPOq̃6l6倱P6ⴙ<ϡ8m~fP6)<8m<8mi3InƢ8@sQzv@q(N=;pKaO=;_辟dzz,S88쀞eԳ}ܯ1A-ũg3zQzv/إ8`Qzvoۢ8쀯ۣ8쀏MYWԳݣ~0yLSt}ũg+LStHckT#ۙF6=1N̓ -SS` m>'Ʃyڕcl0LS`T1a'Ʃyqjsb<G6HhƩyB9B=g^{=oտϊA}781 qiuo׷Aoy}w/{? )$RH? 9&rL?H19&rL?H19&rL?H19&rL?H19&rL?H19&rL?H19&rL?H19&rL?H19&rL?H19&rL?09&rL?H19&rL?H19&rL?H19&rL?H19&rL?H19&rL?H19&rL?H19&rL?H19&rL?H19&rL?09&rL?H19&rL?H19&rL?H19&rL?H19&rL?H19&rL?H19&rL?H19&rL?H19&rL?H19&rL?09&rL?H19&rL?H19&rL?H19&rL?H19&rL?H19&rL?H19&rL?H19&rL?H19&rL?H19&rL?09&rL?H19&rL?H19&rL?H19&rL?H19&rL?H19&rL?H19&rL?H19&rL?H19&rL?H19&rL?09&rL?H19&rL?H19&rL?H19&rL?H19&rL?H19&rL?H19&rL?H19&rL?H19&rL?H19&rL?09&rL?H19&rL?H19&rL?H19&rL?H1 w^ ?|]Fmw֏ 1gq`_mOg ߘ>o=|{ez]+"{:YO!iJgNp9~v߽Sdnn;ii>Aw~z Bڋ֝ω 3_3l绻(q} Ϥgh/Λs̾x9}=oQT +}&_l5Qak -BP΢ui/fwJC]1uQh/F{Lz1uk^Yd:+S̮Dtf޽J{-7ǽsUnM]՝M{qm;;9s:<|ݟAxЗQN jbt{5:uX#"(a5+zFź/~mڿ vc\dxp)5|UȗG)_| N/)_u_J٬^dxpAj. ^i/ăCҴ4^n\*f`uuga/_KDtaWxp)c|U!#={|_!Tʆ!D :s:ă"Angb}U ̅U.C<}a6Wxpr(_CqslC<[(_QZ!`}U/-0AeZX_:|Ѱ:ă[ C<ŦVJ930C<(2a:Wufa}Uzdxpoedxp Wxp{|Bfb}uua}U=cd*uy_WX_ -3*KX_YeR:ŃWkS>V|[^zog}।O! o%} %} %} %} %}y)sL(sL(sL(sL(SKIcBIcBIcBIcBIb^JJJJJRPPPPҧ>DŽ>DŽ>DŽ>DŽ>ż9&9&9&9&)楤1111O1/%} %} %} %} %}y)sL(sL(sL(sL(3[IcBIcBIcBIcBIb^JJJJJRPPPPҧ>DŽ>DŽ>DŽ>DŽ>ż9&9&9&9&)楤1111O1/%} %} %} %} %}y)sL(sL(sL(sL(SKIcBIcBIcBIcBIb^JJJJJ VPPPPҧ>DŽ>DŽ>DŽ>DŽ>ż9&9&9&9&)楤1111O1/%} %} %} %} %}y)sL(sL(sL(sL(SKIcBIcBIcBIcBIb^JJJJJRPPPPҧ>DŽ>DŽ>DŽ>DŽ>ü9&9&9&9&)楤1111O1/%} %} %} %} %}y)sL(sL(sL(sL(SKIcBIcBIcBIcBIb^JJJJJRPPPPҧ>DŽ>DŽ>DŽ>DŽ>ż9&9&9&9&)楤11110o%} %} %} %} %}y)sL(sL(sL(sL(SKIcBIcBIcBIcBIb^JJJJJRPPPPҧ>DŽ>DŽ>DŽ>DŽ>ż9&9&9&9&)楤1111O1/%} %} %} %} %}y)sL(sL(sL(sL(3[IcBIcBIcBIcBIb^JJJJJRPPPҧ>DŽ>DŽ>DŽ>DŽ>ż9&9&9&9&)楤1111O1/%} %} %} %} %}y)sL(sL(sL(sL(SKIcBIcBIcBIcBIb^JJJJJ VPPPPҧ>DŽ>DŽ>DŽ>DŽ>ż9&9&9&9&)楤1111O1/%}?@W()X=odW_~\k1(a\6)[1.OͺO#Nz0wG~.rS_Jh ٴ.OY@k..O53)O-ZûǬU:̓.]54Kkh <y~~htAkh4Y54!Ekhtc`Χ%~xܒFl%'(SQl\䇣G{bP~-o5mrGuW F6^GUFkבr\o5\^pX`  -r -[-W+pLۼ.COr2h -WP~hBuB+ZCD臖+t'\+!5\'m& -z[a¨O+(D?\AΈ~hr=z-WLrqa?eX`sh -W) ORa)<8e92-~4*S'?A} 4΃i\)<*Syp5Lp[2i\ )<pׅi\)< ?]2̓a?ew-_b]rw~-_ )|}w=r~-_[/}rׯ[~Ua?#_OS~-^~x|m~]yl#`_-/OU{y?nWN3۽wu_m/n~=DŽ=ż9&9&9&9&)n1n1n1n1nO1/u{ u{ u{ u{ u{ysLsLsLsLSKݞcBݞcBݞcBݞcBݞb^RPPPP=DŽ=DŽ=DŽ=DŽ=ż9&9&9&9&n1QPPP=GݞcBݞcBݞcBݞb^u{ u{ u{ u{ysL9&9&9&)n1QPPP=GݞcBݞcBݞcBݞb^u{ u{ u{ u{ysL9&9&9&)n1QPPP=GݞcBݞcBݞcBݞau{ u{ u{ u{ysL9&9&9&)n1.|9&9&9&)n1n1n1n1nO1/u{鏺=DŽ=DŽ=DŽ=ż9?RsLsLsLSKݞcn1n1n1nO1/u{鏺=DŽ=DŽ=DŽ=ż9&9&9&n1n1n1n1nO1/u{ u{ u{ u{ u{ysLsLsLsLSKݞcBݞcBݞcBݞcBݞb^RPPPP=DŽ=DŽ=DŽ=DŽ=ż9&9&9&9&)n1n1n1n1nO1/u{ u{ u{ u{ u{ysLsLsLsLSKݞcBݞcBݞcBݞcBݞb^RPPPP=DŽ=DŽ=DŽ=DŽ=ż9&9&9&9&)n1n1n1n1nO1/u{ u{ u{ u{ u{ysLsLsLsLSKݞcBݞcBݞcBݞcBݞaRPPPP=DŽ=DŽ=DŽ=DŽ=ż9&9&9&9&)n1n1n1n1nO1/u{ u{ u{ u{ u{ysLsLsLsLSKݞcBݞcBݞcBݞcBݞb^RPPPPg=DŽ=DŽ=DŽ=DŽ=ż9&9&9&9&)n1n1n1n1nO1/u{ u{ u{ u{ u{y3߿yBݞ0u{nVu|jzL~ 3~O?~/{B5τ׽{Iܠ}x-owS&s:zXf*u +cdA04A+\,T -vC)ܗ3Fe0|!9& y\ms{96k#`7u -۩ܗR[c.a|+ `/qt!/CɡiyC{l$6sm -Оv\|Q1`d/XB3ė -U TqJA^Yau&mL,=`}*ƩY:TSVG6뜥Z89kl?1 cG8]Wm[8ݶYyR1Nu.I5<@{sT笡/ƩPقqr(mV0NmR0NE×!ўS%BBq0P6PZDq*^(NE8´Bqڪm649F6!Nq̃~6i7e`s7~QzO7u(Nyԕ#?)Nx8~f񠞘ũN̋7۬i86+hOmVFJ6wl5ad%:)Nx_{Sv`֦857iY'y)NnLffW cӞ&`=ъq*jcB>8]yleb1yfmu:8ʦq*KjST<}4|0N/۬\Y ua,=*]]A8)gu9ߎZ9fea#l,킭ʡstt"ALsywA63SE>Wݹs9^sޝ911]'fn $q,ڋY])bvעD;]ϗck^Zݧ1ݵ[ߑckפX۵fqS~t^OPbCy7*_btUݏ69?v-ڋk_w6ŵcssgR̩Chdw^3Aeb^ހ"`/|o@~&au;7~7 4FU}N6XN#C!Ob}u~SSX_Gn~f+SSj)_OuNߧtTu|u>ۑ '[`*X_]Ou_X_]OUK]X_]OկY~WU-Ȣ|:}UKYX_NԆUKZ_kX_]=rGꔯZ_9 Z_fX_N_)-Wӿ#9JZ)_RY/WS yj~Y {,+M 㻕_'W/uQZ_Uu uůk$}X_NIGހzPN|76ԉa/{<4{qW{<7 6~i}o(X_uc}鏅[6φ[D[^XWo:uuWoNw^~t~ٜ:a:cN:Tߟw!{Qߊ񈏿}_g}!9Qԧ0000>DŽ0000>DŽ0000>DŽ0000>DŽ0000>DŽ0000>DŽ0000>DŽ0000>DŽ0000>DŽ0000>żyyyy9&yyyy9&yyyy9&yyyy9&yyyy9&yyyy9&yyyy9&yyyy9&yyyy9&yyyy)楨̣̣̣̣1̣̣̣̣1̣̣̣̣1̣̣̣̣1̣̣̣̣1̣̣̣̣1̣̣̣̣1̣̣̣̣1̣̣̣̣1̣̣̣̣O1/E=`E=`E=`E=`E} E=`E=`E=`E=`E} E=`E=`E=`E=`E} E=`E=`E=`E=`E} E=`E=`E=`E=`E} E=`E=`E=`E=`E} E=`E=`E=`E=`E} E=`E=`E=`E=`E} E=`E=`E=`E=`E} E=`E=`E=`E=`E}y)((((sL(((((sL(((((sL(((((sL(((((sL(((((sL(((((sL(((((sL(((((sL(((((SKQGQGQGQGQcBQGQGQGQGQcBQGQGQGQcBQGQGQGQGQcBQGQGQGQGQcBQGQGQGQGQcBQGQGQGQGQcBQGQGQGQGQcBQGQGQGQGQcBQGQGQGQGQb^zSVOU g"ݎ9nB6` -Swa2St\5Leְ6eGB~hQF@~hY2u%2SB~hB~hK䇖۝F~hypqztCԕCԏs}ZnD?YlIkF?.c\rpɽ]ApŃ͂~8mNҴ6~86AE?t;"ZCc\.ʥ5t;~vL>&[ 혾1}oCc؛nǜ 혡1+n|G9nTû1:mKZCcݎ3@?t;NXCE˓2u-SnCԏ%` -S?s]䇖eg*5L,M~hYZ~V䇖+i䇖Ki ̓3Fcl䇖d>-S?䇖ݠ54̓[Y=yp)DkhB?4*G?w{54ZCU*yrQ0jOAIA*̓xC52̓~4^ )U-¯(_"YδP%߯j<wr"|]_ѝ"u"*a|];wVp3]w"cWE߯Ҙl&i.O|.?~]~]{u"|\8߯~/g߯zڍM6MDk.;ғXN?Y??q1//yE`?>>LO]5{x_7)" z/! Fˣ4!ڟ}_ 7?daDí,!.Bw?kIȻ&Mn& dyۊW̼32^%f޽;2^dw/yy|"K~̻EF0+KFdjm_3y5-BF0Y"yFFc~-2zXu`=~潽ƌ *-HM^a%|hU^^w/e^aVDz#}ٷw - T15"v}eFc\hy _"Rƽ}bLjhϞ23PqoĘ%)>۾{ h[hcO=eg`b(1_yqo*h_HصDbwqo}?Rƽ}HuFSƽ}ꌦ{ M323p#egUd4s{ M3235WL˹GF{ɯ|{ T2NXd+@Uy)>5g@k~w*3 62{ T3*ougjqoRƽ}K8Xǽ}<1}>wXǽ}KZ/egjqo+Xǽ}3qoRƽ}K>^K>U륌{ T237׼G>U륌{ W>U륌{ O>U{ :eg&)>5qIMH!S>븷@]@)> J<&oU^z)v}W^ʸ]_U2nWyU=y:nU륌۵rz)>}Xǽ};"Xǽ}KZ/egjqoRƽ}3qomޱxbZ/egjqo*Rƽ}0JB$eg&)>-"2O;q>O>U륌{ T23o{ T23Pg=eg`{ g㎷O;q>O>uSƽ}꬧{ YO23p{ ]\Ȕ@q>W>}X} <{ %qoRƽ}'F9X^ʸ@z)>c:guܧO;q>5;-{ ȩbZ/egj'2XiֆyuܧO'qoRƽ}5qokugjqo -30b3p:guܧO'qOZ/egjqo{ugjq>g>}X} ܱxbxXǽ}G:2{ T23P^ʸOO3q>W>}X} #q>g>}X} ܱxbXXǽ}KPhiOcK30b3p:guܧOg?"K>븷πc3pOd4O3q>W>}X} <{ T23{ T2g`uܧOO3q>W>}X} <{ ԕ23PWFʸO-q>{>}X} X} b3p:gug&)>5AN3:g`uܧOO3q>W>}X} <{R} b3:guܧuܧO+q}q}bg q}bg q}q}bg q}bg q}#1>3>3? (#q.wyi6a{$U?_15,ؾzdk8'0(:W%:c|Te=,VP+a|/C.d4 `k# 6|ܔhU8VTխ~_}r=EHb>6235*+ S-!\eg11јDY`1UYev p>+F`@Bܒ\QXKsEwgf4c}9w7']cԒ'0h˻335f퀖~?G=ZϪ/mnѺɵ#њ3tT јu1.s]YMSc5ާUZiDu>[xVIt\zb&Fc>xҘ5ާ\H1kCbjR~?UicO$* bO+*}zk[cޗx>˻#vOy]}hӊCo:v c*_}UR. -b%ݧۢ1KO+pm՘RMc^5eIxO7@nAݔtrnόƼ=>ݔ>ݔxHL*tn*})O:%ݧrp}f%*Iܷ'ݧrp,eFcVKԘO+fjۧfV'ާADΩrpOO5Srp۟x*kSVStN[N:y}}aO>U%h̚i&Fc~[DFct(AF9i*z4fRQ.Sr>ݕ+N̦+wOw`>ݕ~tWj^JtIOA=}Wh_Tڅ'~*w&iUsi}Ә.Ktטb"1$|W|Ot}]>+w!iN~hꙒ01Wy`ƬƲјki堦 >ܯοVurp+ާWOO}zj霞sXݼ}ziZ/)Y(1]>*9n;yrpNji̷Œ\51WxshjgCxVzrpuo>:9:PS3Ωԁ]1zT@=_tJД?ݧR8!ݧRX=ݧR$/T^wO3LSgOhCtJPGtJPٔSsIcVk|(Kԁ.tJصf::POྍtJ3~g]fj)&SVStN5}4ާmK`јk. *mT9ab4eT9X{Ok\Szx*1}\JKT9~vEdFcގx*rp]x*s\#ާ&[JPtJ[Hԁג -v4T|JؗnŌƼ>:H>:@H}\GOT T@=ƎtJ*tJ؞HԁَtJ؞HԁM{sZ9Wq>:9>: A#ݧR6Kc(}*u@+J}*u`+9=4ζ y}:4fx1_xVn׵r=ާ=ާ|>=5fMƼ>4fy}Z9W>ܪډizrp;=ާ5%}zk[cY:Ƽ>}4u1/[O+}Z9/ ާ5}*u`T@MtJS5c{;21oq)ԁmq-ԁ<ݧRDOlǽTVtJPtJ( G:U TVZO(}*u`S 4f:d1+'G:>:PIq=ԁ*/z$T]}*u~q=ԁmz$۾HR#I#I*t}s00둤#I"r~A>UUSVJrp[z$:>Uw\$u@T9q=ԁ>Uֈ}\Inq=ԁ"z$u#HRUmOsӘ#IF\$u`[F\$u`S;pNl#IԒSu.>:-K\#sH:\q=ҫ>LW3urNikB[|i0rTM/. [pB4GýN {_kB4R=kOH nccV835sԈ]\~d4zu/ј'ј{LwLD\2"Sc'u%Fc|!k׳DFc52l1לmL?S5-Y1sF\+2xh\s=#1,ILYԘ5qL&@l!s֘k"5"Sc~wɌ<+2ܑјWB@Ҙ5ڪ{5ZU_k^S~u֔lUSsT=˾l[+C -bƚҭ&Ŝk'ј-\M‹yp5R"bjZ2r;}KW%A1myl)㪄+FhUf$f՘=e\|325f1RmuFqu‹qub=e\/)Mc>qۦ1Wi]c9RoKgʸr#eV9hDb*]ˍSc32-Ō#evh2n;4kۆ\@d4g*+vFʸr32nMU>uFS%X1RUSL"1#evjW,ݶKcc]M9XsUx)6`x)6`x)68b)K)kM9Xu^ʸM9X^ʸM9X^ʸM9X^ʸM9X^8`z)v:nWV2nWV2nWgvy:nWORuܮZ/eܮZ/eܮZ/eܮZ/eܮZ/eܮFvu:nWV2nWV2nWV2nWV2nWkv`z)v`z)v`z)v`z)v}:nWV2nWpdjUە5N+k2nW%eܮ|X -qrv)v`݄)v`]@)v`RIxX827RIx38 Kz)$<߮Od43qbujqRIx6GdjU륌PRIx38 Kz)$<,U륌g$<!qU8 :NR^8 u:NRZ8 U:NCXIxX8 v:NC=Tc'Af8 :NNLy_c'aZ/ec'Ag=ez8 K=SIx̔qRIxX꬧YO'YO'A{8 uc'aZ/eE.Ud4+qj8 Kz)$<:NCN$<,U륌P{$c'aтhw$<,U륌D"Z/e+븏0brwo&<|^ODzN\ּqOuN˧W$,;?ӇgZޞ pY8ݻởQ?~TGO'?>q_{2g?՛'"@ԓd@=qODܓ'3{20 ̸'2SOfܓd`=qOd ̸'3{20 L=qOfܓd`=z20 ̸'3{2 3d`=qOfܓd@f{20 ̸'3ɀԓd`=qOfܓ'3{20 ̸'2SOfܓd`=qOb ̸'3{20 L=qOfܓd`=z20 ̸'3{2 3d`=qOfܓd@f{20 ̸'3ɀԓd`=qOfܓ'3{20 ̸'2SOfܓd`=qOd ̸'3{20 L=qOfܓd`={20 ̸'3{2 3d`=qOfܓd@f{20 ̸'3ɀԓd`=qOfܓ'3{20 ̸'2SOfܓd`=qOd ̸'3{20 L=qOfܓd`=z20 ̸'3{2 3d`=qOfܓd f{20 ̸'3ɀԓd`=qOfܓ'3{20 ̸'2SOfܓd`=qOd ̸'3{20 L=qOfܓd`=z20 ̸'3{2 3d`=qOfܓd@f{20 ̸'3ɀԓd`=qOfܓ'3{20 ̸'2SOfܓd`=qOd lݓd`=qOd lݓd`=qOd lݓd`=qOd lݓd`=qOd lݓd`=qOd lݓd`=qOd lݓd`=qOd lݓd`=qOb lݓd`=qOd lݓd`=qOd #G{20 ̸'2SOfOOfܓd`=z20uOfܓd`=z20uOfܓd`=z20uOfܓd`=z20uOfܓd`=z20uOfܓd`=z20uOfܓd`={20uOfܓd`=z20uOfܓd`=z20 ̸'3{2 3d`=qOfܓd@f@̯ Ƚ_doS*;Vh/?>U_5X5 dR jUD bՀY5`ƪ3V jUd&ՀX5`ƪ3V Tf0cՀX5@fR jUf0cI5`ƪ3V jUd&ՀX5`ƪ3V Tf0cՀX5@fR jUf0cI5`ƪ3V jUd&ՀX5`ƪ3V Uf0cՀX5@fR jUf0cI5`ƪ3V jUd&ՀX5`ƪ3V Tf0cՀX5@fR jUf0cI5`ƪ3V jUd&ՀX5`ƪ3V Tf0cՀX5@fR jUf0cՀY5`ƪ3V jUd&ՀX5`ƪ3V Tf0cՀX5@fR jUf0cI5`ƪ3V jUd&ՀX5`ƪ3V Tf0cՀX5@fR jUf0cI5`ƪ3V jUd&ՀX5`ƪ3V Uf0cՀX5@fR jUf0cI5`ƪ3V jUd&ՀX5`ƪ3V Tf0cՀX5@fR jUf0cI5`ƪ3V jUd&ՀX5`ƪ3V Tf0cՀX5@fR jUf0cՀY5`ƪ3V jUd&ՀX5`ƪ3V TfV jUf 3X5`ƪ3V j̤0cՀX5`ƪ2jUf0cՀL3V jUf 3X5`ƪ3V j̤0cՀX5`ƪ2jUf0cՀ̪3V jUf 3X5`ƪ3V j̤0cՀX5`ƪ2jUf0cՀL3V jUf 3X5`ƪ3V j̤0cՀX5`ƪ2jUf0cՀL3V jUf 3X5`ƪ3V j@̬0cՀX5`ƪ2jUf0cՀL3V jUf 3X5`ƪ3V j̤/{9zUtjp/U9P ~튰ia#Dm@Ce>am6Hk6Hk6Ȥ 63@`ZLkimkim 0 66@`Z`@`ZLkim 0 0cm 0 66@`ZLkXLkim 0 f 63@`ZLkimILkim 0 f 63@`ZLkimkim 0 66@`Z`@`ZLkim 0 0cm 0 66@`ZLkXLkim 0 f 626@`ZLkXLkim 0 f 63@`ZLkimkim 0 66@`Z`@`ZLkim 0 0cm 0 66@`ZLkXLkim 0 d&m 0 66@`ZLkXLkim 0 f 63@`ZLkimkim 0 66@`Z`@`ZLkim 0 0cm 0 66@`ZLkL@`ZLkim 0 0cm 0 66@`ZLkXLkim 0 f 63@`ZLkimkim 0 66@`Z`@`ZLkim 0 0cm 0 66@`Z`@`ZLkim 0 0cm 0 66@`ZLkXLkim 0 f 63@`ZLkimkim 0 66@`Z`@`ZLkim 0 3iim 0 66@`Z`@`ZLkim 0 0cm 0 66̯ Ƚ_k]@Mߧ gmڀ: \Z xNQ%<1}<eTc\U5 -y5!׭E yXBKH wPpVDí":!~Hȣ^uGDý5!sm ˵'{ױ1R r_gdj. `FC?2y={`Vhwͺ1?s%s=#0uߕ0#25z1_G_b4qߑјw!2|=Kd4Y#1?sԘ30Xҥ?gdj"1玌|>1YIbj̚xDƬ Ldj5Ҥ \sNf4\ј厌|22|)VE)תb_m𫳵d꼘$Y5eZRU3֔n5,\S'=1|o)j2^̳JqUdSӫ)]@[ʸ* hcKW\1 &Fcr#1|)㪈/村tqSmO,eV9XgtO}OW{ʸ:_2CSm|)Mc)1, .1s̗jДq[೯GʸrʉT>%\g4e\[GʸИ#evhH hH32n|ꌦ*uFSmOєqu sqUShHKҘXmmSVG\^ʸM9X%^ʸM9X5^ʸM98XmRmqnSV2nSV2nSV2nSV2nSV3N9X^ʸ]9xەU륌ەU륌ە]9x^ەU륌ە]9X^ʸ]9X^ʸ]9X^ʸ]9X^ʸ]9X^ʸ]9xXuܮZ/eܮZ/eܮZ/eܮZ/eܮXRRRRuܮZ/eܮԘI+k2nW/eܮKʸ]9ە)v`=R SRrd/M'ApPg4qRI|]hg$>8Kz)$>,U륌ԘK'A{Pg4qRI|XK'aYXI|B$>+qućjqRuć -qzuć:뱎l#qućz:N\̔quć] :NR^8U:Nz8KqzHe)$>,U륌YO'a2NC=2c'a2N⃪q:NR^8hW$> qRI|ućXI|XK'XI|~8Kz)$>,U륌PXI|XK'aZ/ećjqRI|=qF<јG$>,U륌T2NCMDc'a9XI|XK'aZ/ećEjZ/ećc'񡮌XI|XK'aZ/eć:N4q&+ećjqj8Kz)$>T8}:Nâ7јXI|XK'ayXI|qj8Kz)$>T8uc'ayXI|XK'aZ/em]2NgŬPL$>5K'XI|Xr(dć ećU{DFcc'Nh$>3eJD#ScZ/f\Z^8kz)$>T8ue:NZ^8n2eć)#25mućjq8kz)$>U=јG$>HH'aZ/ećU[bSakz)$>U륌Pj$>U륌P~$>ԕ8kz)$>U륌PXI|XH'a~1ו2NZWF8kz)$>O'AWF8k])$>ڰ"1:NC`$>5AN'a i8XućuP~$>ԕ8kz)$>U륌V2NCM$b'aZ/ećjqRi!Z7k8k)$>u1jϪhU6%F9Xqj2W|Z/e+>\[^jqp{ŇRƽCz)^jqp}6DF9X^ʸW|Z/eG|XcX}ć=qa:ބ3G~ŭ:z$v|~.QBceq}_ CЮ|_$엫"'8A$N bqX@!8 D,N bq3'8 f,N 3X`3'8$N0cqX`28 f,N0cqL3'8 f,N 3X`3'8$N0cqX`28 f,N0cqL3'8 f,N 3X`3'8A,N0cqX`28 f,N0cqL3'8 f,N 3X`3'8$N0cqX`28 f,N0cqL3'8 f,N 3X`3'8$N0cqX`28 f,N0cq3'8 f,N 3X`3'8$N0cqX`28 f,N0cqL3'8 f,N 3X`3'8$N0cqX`28 f,N0cqI`3'8 d&qX`3' f,N0cqX@f'8 f,N0cqI`3'8 d&qX`3' f,N0cqX@f'8 f,N0cqI`3'8 d&qX`3' f,N0cqX@f'8 f,N0cqY`3'8 d&qX`3' f,N0cqX@f'8 f,N0cqI`3'8 d&qX`3' f,N0cqX@f'8 f,N0cqI`3'8 d&qX`3' f,N0cqX@f'8 f,N0cqI`3'8 d&qX`3' f,N0cqX@f'8 f,N0cqI`3'8 d&qX`3' f,N0cqX@f'8 f,N0cqY`3'8 d&qX`3' f,N0cqX@f'8 f,N0cqI _tˁ'ĉ+8;C8X{-HHzU.Y?̸q^{b?|LG>J~Ub#-F0b"#i1#i1#HH$Fň#b3#bD`ZLi1i1"0-Fňň#bD`Z`bD`ZLi1"0-F0c1"0-Fň##bD`ZLXLi1"0-Ff,Fň#b3#bD`ZLi1ILi1"0-Ff,Fň#b3#bD`ZLi1i1"0-Fňň#bD`Z`bD`ZLi1"0-F0c1"0-Fň##bD`ZLXLi1"0-Ff,Fň#b2#bD`ZLXLi1"0-Ff,Fň#b3#bD`ZLi1i1"0-Fňň#bD`Z`bD`ZLi1"0-F0c1"0-Fňň#bD`Z`bD`ZLi1"0-F 3i1"0-Fň~#bD`ZLi1i1"0-Fňň#bD`Z`bD`ZLi1"0-F0c1"0-Fň##bD`ZLXLi1"0-Ff,Fň#b3#bD`ZLi1ILi1"0-Ff#bD`ZLXLi1"0-Ff,Fň#b3#bD`ZLi1i1"0-Fňň#bD`Z`bD`ZLi1"0-F0c1"0-Fň##bD`ZLLbD`ZLi1"0-F0#bD`ZLXLi1"0-Ff,Fň#b3#bD`ZLi1i1"0-Fňň#bD`Z`bD`ZLi1"0-F0c1"0-Fň##bD`ZLLbD`ZLi1"0-F0#bD`ZLXLi1"0-Ff,Fň#b3#>R7Ĉ?.1۬61ⷎ&Ayb_{$&[fQ (LeSk„?!L|_ 엫"&0A$L ba X@!0 D,L ba 3&0 f,L 3 X`3&0$L0ca X`20 f,L0ca L3&0 f,L 3 X`3&0$L0ca X`20 f,L0ca L3&0 f,L 3 X`3&0A,L0ca X`20 f,L0ca L3&0 f,L 3 X`3&0$L0ca X`20 f,L0ca L3&0 f,L 3 X`3&0$L0ca X`20 f,L0ca 3&0 f,L 3 X`3&0$L0ca X`20 f,L0ca L3&0 f,L 3 X`3&0$L0ca X`20 f,L0caI`3&0 d&a X`3& f,L0ca X@F| X`3&0$L0ca X`20 f,L0ca L3&0 f,L 3 X`3&0$L0ca X`20 f,L0ca L3&0 f,L 3 X`3&0A,L0ca X`20 f,L0ca L3&0 f,L 3 X`3&0$L0ca X`20 f,L0ca L3&0 f,L 3 X`3&0$L0ca X`20 f,L0ca 3&0 f,L 3 X`3&0$L0ca X`20 f,L0ca L3&0 f,L 3 X`3&0$L0ca X`20 f,L0ca L3&0 f,L 3 X`3&0A,L0ca X`20 f,L0ca L3&0 f,L 3 X`3&0$L/?Ċ&ۄ 0;CП8 ?vP?c&$H?&ߩĉ*Ƿl,qFQBy(>2}rZ@Ģ"%D D,J bQX d%(E D,J bQY`Ƣ3%(E d&QX`Ƣ3%D f,J0cQX@f%(E f,J0cQI`Ƣ3%(E d&QX`Ƣ3%D f,J0cQX@f%(E f,J0cQI`Ƣ3%(E d&QX`Ƣ3%E f,J0cQX@f%(E f,J0cQI`Ƣ3%(E d&QX`Ƣ3%D f,J0cQX@f%(E f,J0cQI`Ƣ3%(E d&QX`Ƣ3%D f,J0cQX@f%(E f,J0cQY`Ƣ3%(E d&QX`Ƣ3%D f,J0cQX@f%(E f,J0cQI`Ƣ3%(E d&QX`Ƣ3%D f,J0cQX@f%(E f,J 3X`Ƣ3%($J0cQX`Ƣ1(E f,J0cQL3%(E f,J 3X`Ƣ3%($J0cQX`Ƣ2(E f,J0cQL3%(E f,J 3X`Ƣ3%($J0cQX`Ƣ2(E f,J0cQL3%(E f,J3X`Ƣ3%($J0cQX`Ƣ2(E f,J0cQL3%(E f,J 3X`Ƣ3%($J0cQX`Ƣ2(E f,J0cQL3%(E f,J 3X`Ƣ3%($J0cQX`Ƣ1(E f,J0cQL3%(E f,J 3X`Ƣ3%($J0cQX`Ƣ2(E f,J0cQL3%(E f,J 3X`Ƣ3%($J0cQX`Ƣ2(E f,J0cQL3%(E f,J3X`Ƣ3%($J0cQX`Ƣ2(E f,J0cQL3%(E f,J 3K_n1ğ(1L}QDzE!AGxŇs$uC~?z(^ /WD,? bI~@"B&X~@"f,?0cX~@ff,?0cI~`3d&X~`3f,?0cX~@ff,?0cI~`3d&X~`3f,?0cX~@ff,?0cY~`3d&X~`3f,?0cX~@ff,?0cI~`3d&X~`3f,?0cX~@ff,?0cI~`3d&X~`3f,?0cX~@ff,?0cI~`3d&X~`3f,?0cX~@ff,?0cI~`3d&X~`2f,?0cL3f,?3X~`3$?0cX~`2f,?0cL3f,? 3X~`3$?0cX~`2f,?0cL3f,? 3X~`3$?0cX~`1f,?0cL3f,? 3X~`3$?0cX~`2f,?0cL3f,? 3X~`3$?0cX~`2f,?0cL3f,?3X~`3$?0cX~`2f,?0cL3f,? 3X~`3$?0cX~`2f,?0cL3f,? 3X~`3$?0cX~`1f,?0cL3f,? 3X~`3$?0cX~`2@̿m~C~soo_s?{ÏcAG-H|>K"ijuT"?|LG>ʘ~U"#-B0""!i!i!HH$BE!"3!"D`ZLii"0-BEE!"D`Z`"D`ZLi"0-B0c"0-BE!!"D`ZLXLi"0-BEf,BE!"3!"D`ZLiILi"0-BEf,BE!"3!"D`ZLii"0-BEE!"D`Z`"D`ZLi"0-B0c"0-BE!!"D`ZLXLi"0-BEf,BE!"2!"D`ZLXLi"0-BEf,BE!"3!"D`ZLii"0-BEE!"D`Z`"D`ZLi"0-B0c"0-BEE!"D`Z`"D`ZLi"0-B 3i"0-BEE!"D`Z`fk"0-BE!!"D`ZLXLi"0-BEf,BE!"3!"D`ZLii"0-BEE!"D`Z`"D`ZLi"0-B 3i"0-BEE!"D`Z`fk"0-BE!!"D`ZLXLi"0-BEf,BE!"3!"D`ZLii"0-BEE!"D`Z`"D`ZLi"0-B 3i"0-BEE!"D`Z`fk"0-BE!!"D`ZLXLi"0-BEf,BE!"3!"D`ZLii"0-BEE!"D`Z`"D`ZLi"0-B 3i"0-BEE!"D`Z`fk"0-BE!!"D`ZLX@_!B9wO]!~U&. u _5aW5'z/eS13(n+ W!}<_;pRS1{|֗ r}mV)BS#D*BǓ2 -9HG֣Q%DjZ|0p7MRURݞ]3IDjU)U[{aiTὥJvuSC>*qjCߢf1+]X4p}qj5~qjKv4)\4O85 -Sc;]`4K+sKb7g1ZqB^c~j&ս璎SO᭦g:αU~xup^Ry:X:5#]Ƭqjۺ85 -t5z Ԙ}LyחՉy'A1Zko?4OHL3"1?1yǢvً9'gS]&$rPE5V9xukrTǩ1=Z#^cUeV+ptSczL%|=1kHV+-Nǩ<$Ԙs[ҵZ9xJjt֎8c3]f{V+GM6xsM:R*OJԘzkrpl}LYoqjzkLƨ+ת]c&=I9b5հUx}]kr0]xy?=*kfkrҚtV^u$Gu/wa-fR {T^5HI~KSc~jSc'ozOrhe=ɡۖc$6p[jC;6/1O1ޓMҥhS {h6n{CmE 㶯[aqvƆq WzO2[ozO2۱/8t vnڰ*G=1VIޓ yd^]!o{]ޓ yb\^TCjט"{!od]=q{-=ɐ_zzO2Mj=ɸ}wCws=55[|{_]+}U]5ڿ欙]Vw_ޓ _sk3~jFN_soGzOr.~Sw5X.\cvwqg$x/\e鯇zI:!h43nΓ<ϯyZ4Ne3g;VR?yiVp~>ENcWvNQr>n9^_ii)gbIGk_fVO~<4O#$X=} :*\+/<4G'Yi9:cW*;O:nIVqzuWqڶ'Ye?X]UN~ԛjY_vdu3ΓNc5vdutGx}$GqzdzWkGqy8_v_iO}4fOGfouMy{d[ӇlW<-~M8gW]7خXÒ7[o]iAݮ@eI+ -$ݮ@ -$[+tخ@ -$ݮ@eI+ -6ݮ` -6[+tخ` -6ݮ`eM+Ќ -6ݮ` -6[+tخ` -6ݮ`eM+Ќ -6ݮ` -6[+tخ` -6ݮ`eM+Ќ -6ݮ` -6[+tخ` -6ݮ` -6ݮ@3+tM+tM+Ќ -6ݮ` -6ݮ` -2sM+tM+tخ` -6ݮ` -6ݮ@3+tM+tM+Ќ -6ݮ` -6ݮ` -4cM+tM+tخ` -6ݮ` -6ݮ@3+tM+tM+Ќ -6ݮ` -6ݮ` -4cM+tM+tخ` -6ݮ` -6ݮ 3+tM+tM+Ќ -6ݮ` -6ݮ` -4cM+tM+tخ` -6ݮ` -6ݮ@3+tM+tM+Ќ -6ݮ` -6ݮ` -4cM+tM+tخ` -6ݮ` -4cM+tM+tخ` -6ݮ` -6ݮ 3+tM+tM+Ќ -6ݮ` -6ݮ` -4nWvnWvnWl]l]hvnWvnWv]l]l]flWvnWvnWl]l]hvnWvnWv]l]l]AfnWvnWvnWl]l]hvnWvnWv]l]l]flWvnWvnWl]l]hvnWvnWv]l]l]flWvnWvnWl]l]dvnWvnWv]l]l]flWvnWvnWl]l]hvnWvnWv]l]l]flWvnWvnWl]l]hvnWvnWv]l]l]AfnWvnWvnWl]l]hvnWvnWv]l]l]flW?~/k"wDn8uӇy#͊OC￷a:9|?2;>Tb=Iიb>I &b?I &lFa( DRAJ!RBJ -a(-RCJa(=ZDJa(MDREja(]RFJ!mRGJa(}RHJ"a(DZIJ&a(RJj*a(RKJ.!RLJ2a(MJ5a(لtNj9a(鄡OJ=!PJAa( 6QJEa(tRJIa()SjMa(9TJQ!I4UJUa(YvVJYa(iWJ]a(yXjaa(4YJehdYJha(ZJla([jpa(Ņ$\Jt!Յd]Jxa(兠^J|a(_Ja($`ja(daJ!%bJ!5cJa(E&dJa(UdFa(afJ!qgJa(hJa(TiJa(jja(kJ!lJa(цVmJa(ᆡnJa(oja(pJ!TqJa(!QrJa(-Rsja(=RtJ!MDRuJa(]RvJa(mZwJa(}Rxja(DRyJ!RzJa(R{Ja(Z|Ja(͇DR}ja(݇R~JhJa(Jb( 4 jb(t J ") J b(9 Jb(I4!Jb(Yt!jb(i!J"y!J!b(6"J%b(t"J)b("0"ҋJ0b(ň&#ҌJ4b(Ոd#ڍJ8b(刡#Ҏj^lS !Gk?۶mc-xyhc}\_bmE!|ݏsZ{8~;c ___^?Wkkܱ;[,ty}_tyw~z +,PӢ0 H4$ZBy,=~aץ?&nڿS/שi2u~))?~Ο/?oDO?{ߪK?:No>Co󛅿G^t>>o3ڌRl2@CpwM(f2K%SNg/?uh,p)rL7+wr4 7\3vV8C{Ѻ31Qa3C΄TwQdsϤݧh/ixs̾OgGPTaOӫct8a +BW?΢i/fwIdA]1Qh/qo6ڋU]9"z2rtkb|ټ1Ttwf]J{-]sUwnLj]M{qmw9w* s;:;,tg^>EЭPFne¹`/t򰚢Y;%̱DOqjw%tq.mV {VZdxx}. `fZ*x_A ĥV0ӭԓ0 +Ͻi/ăV^Q=băçr l7fJ%h/ăڭIj6v7Jҿ(_m?9xҡRăÕU SS'&`Ra.&vX_]W :ăCK;9F6׍!ܭ`}Ug/(_Uv-vs̗PN2-CUuhX_!bSWxp+a|uX_ՙI!`}U0:W *o[G=Y<_YVZ]Sju}ulyfO[^ 7WؖUb}zju}QJŐzjubX_̃UjX_K6/9 #ٲyOZ]_U9W/:a},͗l>V`}Z:Wea}ZN|ZWub}j1գV6ju}fkl󐔯Z]_ P꭮뫷~,zjl~6z%ڔz}հzp|VׯSzw-{`}VՏ`}X_:~3]^?L_c׿U9o-/_ƟK-?[?/gR_PmC [q~@{[|>=]EB8)Aq٤l:Ÿ<5>0:;";a\K2s]_ĚclkRS_Jh ٴ.OY@k..Oc>Ekx,"m(ǜ;SkoCֵ]<%E?tyJ SCݦcݦkMF?ti 6͹ݦMmOY)m~xit5tFpCiEkh)~9|, +yp~&yPJC<h ̓sa?喯ύ[.E?4΃[ +SnA𖯯[7u-__ )|]O~x׵䇷|}]rw~-_)|}=ru|'?{c?喯 )|}`?rS>|}`?Ms뿏zHؿɸ_ʭJVG?}MWo>뷏{|[^^}?@0E6">)4w9[|S6˯lm0)`dpY 0ï:t06y"'rLJfm^_WAZK0O;Y\WSY\0JZf/ru*Оv̕96v 0ٯXA|o>UubTy0R*fTRSyp6h}mtfwk #:P1Nu&{WSt:'&al6^l*͵bn\*Ʃ!Dã:W0Nu&"@< eG8ls/ܯ;8=S_ˣ,T48l/ m&"`mvŗ0Yi8xiƩxӧATT<ح=7cc.۬hOmͻW5an۬ xЩƩxP6mS`_:TӞoS`k6=6'l c8=wUfq*.S`~{bcQzvϹ(N=;8\%ɰP/StO=_ũgSzv@ϲEqف>Ws󠖇Գ]oS(N=;Rzv@|(N=;mQzvQzv&S+u_GqفQNS`<&ũgԳ&ũgt15LS`}#۞A)ƩyM6rZ`v8Գz S&alXln SSũg)Գ.Qzv]נ8쀥hJ[(N=;7Qzv]Szv]Szv]kKs̴͵cN\:Ʃx61NŃmq*)cEt1Nmt1NmT cK8$q*l:`}A)Ʃx1NŃJI:eG8l226qzls6q*lbT-o?1ȷw?^ȱ׵r(±;aL?f~VGg[M1KnMFVcD}lJ`+DΟh0;v;x `Lڋ})O9wh/E 0g1]#ff $q ,ڋY])bvסD9ݵ]BO/Qlˤ7m鮫ڎ3]&ڮ;E6Z2UڽILw/AI aۨ{rSڋ}ё0Wu/صh/^ٴvοsq#J1agN{!t|^}儽Po=&L\:XQجS5"X8`ă}gc5=w7Lkք9<-Yx_N3kBK{!wW#xvePăLWGxgQăcMjy]*׸(_Vy~Răz6WE9딯6IrC.WxpBYϋWxƵPă|U=Lj:]<8P~Ij*XvU9gERxpOM'f&ʳU0SŃJń0E/_NjwHY]<8*9U=lU'y WxPIjz#}+3xpr(_AEdxp*|Uׯ)w|U90SŃ]י*#9sW~ ]<Q*jZz$PŃqԘU%_m|Ul'8ʋ,|}+adz]<<$D{!\R.I^_@{!TqQ\!\P-9ӅX_UnLWxP_sksl}aWxP)WxL F6U0WE_T.JX_]ˡ|Ua_1nn:|YFkaWxpUcrzia}uBGnR:ă[ +C:s :ŃN): :ŃJ\֤t.z:ŃJ3:ŃV4S:ŃɃfAW(_Չ˯h|uŦX_U%:Ńg~*SxP:WxP1Wx̃)fk=UI5/쁽F_Uѱzk fkgWM;Li/_ 뫷F_WWo:嫷FI[WoX_h W?_}79)5 4”DVw/OkE}G%E^oJZoy}뽍/%} + %}y+sL(sL(sL(sL(SKIcBIcBIcBIcBIb^JJJJJRPPPPҧ>DŽ>DŽ>DŽ>DŽ>ż9&9&9&9&)楤1111O1/%} %} %} %} %}y)sL(sL(sL(sL(SKIcBIcBIcBIcBIaJJJJJRPPPPҧ>DŽ>DŽ>DŽ>DŽ>ż9&9&9&9&)楤1111O1/%} %} %} %} %}y)sL(sL(sL(sL(SKIcBIcBIcBIcBIb^JJJJJRPPPPg>DŽ>DŽ>DŽ>DŽ>ż9&9&9&9&)楤1111O1/%} %} %} %} %}y)sL(sL(sL(sL(SKIcBIcBIcBIcBIb^JJJJJRPPPPҧ>DŽ>DŽ>DŽ>DŽ>ż9&9&9&9&此1111O1/%} %} %} %} %}y)sL(sL(sL(sL(SKIcBIcBIcBIcBIb^JJJJJRPPPPҧ>DŽ>DŽ>DŽ>DŽ>ż9&9&9&9&)楤1111O1/%} %} %} %} %}y+sL(sL(sL(sL(SKIcBIcBIcBIcBIb^JJJJJRPPPPҧ>DŽ>DŽ>DŽ>DŽ>ż9&9&9&9&)楤1111O1/%} %} %} %} %}y)sL(sL(sL(sL(SKIcBIcBIcBIcBIaJJJJJRPPPPҧ>DŽ>DŽ>DŽ>ż9&9&9&9&)楤1111O1/%} %} %} %} %}y)sL(sL(sL(sL(SKIcBIcBIcBIcBIb^JJJJJRPPPPg>DŽ>DŽ>DŽ>DŽ>ż9&9&9&9&)楤1111O1/%} %} %} %} %}y)3߽yBI?LIY_F%|3sx~9݂/?o[# [qW"?y}~{o!~qׯqĠq٤l:Ǹ<5>0:;";a\G#ܥ c/1.O}6+m5S:dݦcݦkMF?ti 6͹ݦzlM{Ci 6]VݦwF ZCit +G?t#nӌM3M3@?tƪOXCE˓u-_nC׏(` -_?s]䇖SGgiCϪu+JmGZCNjcW'?|]'A~h~cZ~v֯>+weܿ婂^j~/]?Ɵv3;]Wfy}w^VP=DŽ=DŽ=DŽ=DŽ=ż9&9&9&9&)l1l1l1l1lO1/e{ e{ e{ e{ e{y)sL(sL(sL(sL(SKٞcBٞcBٞcBٞcBٞb^RPPPP=DŽ=DŽ=DŽ=DŽ=ü9?R(sL(sL(sL(SKٞcl1l1l1lO1/e{鏲=DŽ=DŽ=DŽ=ż9?R(sL(sL(sL(SKٞcl1l1l1lO1/e{鏲=DŽ=DŽ=DŽ=ż9?R(sL(sL(sL(3[ٞcl1l1l1lO1/e{鏲=DŽ=DŽ=DŽ=ż9嘏=DŽ=DŽ=DŽ=ż969&9&9&)l1QPPP=GٞcBٞcBٞcBٞb^e{ e{ e{ e{y)sL9&9&9&)l1QPPP=DŽ=DŽ=DŽ=ü9&9&9&9&)l1l1l1l1lO1/e{ e{ e{ e{ e{y)sL(sL(sL(sL(SKٞcBٞcBٞcBٞcBٞb^RPPPP=DŽ=DŽ=DŽ=DŽ=ż9&9&9&9&)l1l1l1l1l0oe{ e{ e{ e{ e{y)sL(sL(sL(sL(SKٞcBٞcBٞcBٞcBٞb^RPPPP=DŽ=DŽ=DŽ=DŽ=ż9&9&9&9&)l1l1l1l1lO1/e{ e{ e{ e{ e{y)sL(sL(sL(sL(3[ٞcBٞcBٞcBٞcBٞb^RPPPP=DŽ=DŽ=DŽ=DŽ=ż9&9&9&9&)l1l1l1l1lO1/e{ e{ e{ e{ e{y)sL(sL(sL(sL(SKٞcBٞcBٞcBٞcBٞb^ VPPPP=DŽ=DŽ=DŽ=DŽ=ż9&9&9&9&)l1l1l1l1lO1/e{r?W(l!׿U;_l/~o|//?3 >^'q'>u?7Lqvba7\"Zѓ*ssE0|R)D]NѦs_\WS"@f ƩoY`^c[8=cK8 _D{*JK(N ũ¬BqăCiũH@;c{8 +iYJ6WX٬8i3{̃fS6&̓N=fhⴙE<8~i3P6`߇ⴙ<8m<8mi3*%85$qjl0df_fG{jl`<AeƩyP3Ʃy)=5r0N̓F6cSCSH<8 y}0)<8521N̓ՓʄUZ`u9ߎZ9fea#l,킭ʡD19{_lg3i/z9,ڋ>}ssޡ;)FQs=c嫑cN : vBAH:YS6Ev3]9fVw/gXյ̻Ock#LzI{kg"袽9Ć0oTڋn)>X ukmrLwZtlڋkx9yS݃a0=3u g>h/ă~ĄE^ހ>&ML2}ojo Ч/hxvmrLio"Ń+f`\~9#̴U `DA%6bA3ݛ[z^GlAi/ă.AVY<89f[=([ڭI P.(_M \ހ?s9xfR{k1>WA `R{|C嫾7`}1U-W}oXR{mrCBsc}uS:{W}YN+=KbﻞX_W|_X_WܯoⲆ{ud?{|ż4=rec}u9l=rc}u:}.WD=rP:}o|usywb}u9 +)_}s*W}=r3[b|X_OUL}`}u>UNߧ.ߎL?W}}"]WWr}~eϪ{rX_]OlZoAZ_uŗ;?6Z_b}:RW}\X_]=rW|:?1l`}:7W׸7uJij}QJEzjbX_ÑUjX_N?gYiJ߭dU.`R=j~W׎b}:r ZW/~]#{NuO=r`}7tހra}7NX {q ؋ހ6zw]O7/̀ K{`/{F뫷N,:}lN6:}%ڔ:}ǔ:հzp|鯫Szw-ukw`}/X_;WwD|.ˠ=uo9?l/'E ܋VԿ>뷏G|[^j_BQCE} +y)((((sL(((((sL(((((sL(((((sL(((((sL(((((sL(((((sL(((((sL(((((sL(((((SKQGQGQGQGQcBQGQGQGQGQcBQGQGQGQGQcBQGQGQGQGQcBQGQGQGQGQcBQGQGQGQGQcBQGQGQGQGQcBQGQGQGQGQcBQGQGQGQGQcBQGQGQGQGQb^zDŽ0000>DŽ0000>DŽ0000>DŽ0000>DŽ0000>DŽ0000>DŽ0000>DŽ0000>DŽ0000>żyyyy9&yyyy9&yyy9&yyyy9&yyyy9&yyyy9&yyyy9&yyyy9&yyyy9&yyyy)楨̣̣̣̣1̣̣̣̣1̣̣̣̣1̣̣̣̣1O1U +Eo(E/wjE_~Ou/ne%CU_^oCv %_,Sqyl?SPc#%~1wI81y2alZû 4PV 3ʠ5Pn[Oje(c s.C]ZF?tJ܎~2e(?P׎ƥQ]ڳNۼ*z .|ue]D!}e.D6l|-S?䇖ݠ54̓[Y=yp)DkhB?4*G?w{54ZCU*yrQ0jOAMA*̓xC52̓~4^ )2L}`?J-st꿏Ä"=w_Tolg?R]|R=>T'>^VPR=DŽR=DŽR=DŽR=DŽR=ż9&9&9&9&)T1T1T1T1TO1/z z z z zT1T1T1T1TO1/z z z z zy)sL(sL(sL(sL(SKcBcBcBcBb^JJJJJ VPPPPR=DŽR=DŽR=DŽR=DŽR=ż9&9&9&9&)T1T1T1T1TO1/z z z z zT1T1T1T1TO1/z z z z zy)sL(sL(sL(sL(SKcBcBcBcBb^JJJJJ VPPPPR=DŽR=DŽR=DŽR=DŽR=ż9&9&9&9&)T1T1T1T1TO1/z z z z zT1T1T1T1TO1/z z z z zy)-[=x\TuTmwSYՒA؞Iu褺gtR3:ngtR3:TN[f;TN{F'TN{F'=Iul'=Iu褺gtR2Iu褺gtR3:TvR3:TN{F'-TN{F'=Iul'=Iu褺gtR2Iu褺gtR3:TvR3:TN{F'-TN{F'=Iul'=Iu褺gtR1Iu褺gtR3:TvR3:TN{F'-TN{F'=Iul'=Iu褺gtR2Iu褺gtR3:TvR3:TN{F'-TN{F'=Iul'=Iu褺gtR2Iu褺gtR3:TvR3:TN{F'TN{F'=Iul'=Iu褺gtR2Iu褺gtR3:TvR3:TN{F'-TN{F'=Iul'=Iu褺gtR2Iu褺gtR3:TvR3:TN{F'-TN{F'=Iul'=Iu褺gtR1Iu褺gtR3:TvR3:TN{F'-TN{F'=Iul'=Iu褺gtR2Iu1?sR:ay 'Տ=ϞVGU!?~?}?|/e{go_[H.A=6'C98"0F>p5霼ZU`:!3>p2D`P3RJ5WԌ}.74O 51(ZPRi7\%5!ӵW5_wy90xQɻ9Q}pn`P}qn`PS8y70霼`떮U?KO^:'[NN `wjQ3.H5ߨg7jnN jӵ͓Ń{~pn`FO1\t-m3µAN"\ $5ɻA<+}ǧx`l|N jF:µA~At9/ӵ@rn`P}r'5?w=佝#Ռ'o5?uk8J9<*BHU0~<*<r<eiʃ9jگ >>z[گ"r>_A:8y70Fگ >3Wy@<IU?Ԍ(HU?LUG|_A;WyHUNLUuޔ ] GKگ >65Wy N~Gگ >Gگ >>UK~iʃgگ .!Wyiʃc#_Usɏf@*`x@^'RAE9SAZWѣ*v`x@^W|7}`'l~@^JU:|TCگ _=4W kگk*z&0Wz :*v>`z +Wrt ~50 +JUx@^wWџݴ_E|\A4LUl|@I9Ճ([#W>&C̓( i:.%Nb>^bu+_A]%_J1uc>9~uA]WT3ԅwjگ>u-_|P=u_|P#u=G:WlZxuP.W:(fybvꠘ]xu5ꠘRگ@~u\A0WگjCUA1Maگ﯎%(A1i:ǜ(O:l7~u%h~JN>n(1|C#|@xJ;_=nگu>!_=W:4PZ(,WO>?_A|JUħן<_ ~UjV[ʃxK}s-_==swOU/}4 #_AүxQUǖ6_A)4lZ~Wyb*<_ >ު*◓_I eE_f +i׈Wy\wʃ*Wy Qʃ)g:[ȃ~U/΃ ~9y<-WA|Dwگ΃u >Zش_[WAv ~C7j;P<ߏxuW:%_΃΃h[GWA|l~uO:-_΃~uĿHg A|Z)Aﯾ{i3ٸ)_Uyk8~Oӧϊdǟc_^l/c{y.{5!C7R >ly Jgy"s,a2*r3)G_5!WK|<"OE}|| oa"KFdxk[Ƌ k>on,[ȼkdXv 6@|-̻X *HM oa0;21'_JdK oa"{"sgmn-YhFdmYϰQȰܑaWyBY]SYSSQqlT޽ iBC[=>O)ܨ8`!הnTaNVy `,wKGŁOO GŁwRQqscf}9oRY_"3oɷqsތ) k~zʸ9kqs@{{ϓo=eܜ5zO7g aͣSY Pbv)欁 2|6{9RYOH3]2nH7g H7g k>qs@Fʸ9ksTbX3RY)\єqshʸ9kW4eܜ5p#eܜ5p?|qshʸ9kW4eܜ53ᯘ#ؾYhRQq -vn@2ngUNU9k*md3c7g ׋7b7g K7g K7g K7g g?OL}ܜ5a}ܜ5^/eܜ5^/eܜ5^/eܜ5gGf4qsu>n@2n@2n#ɗYRYRY3}ܜ5^/eܜ5p_륌'qsqs6)lRYظ)Fʸ9kX2g 5>n@2n@2n@2n@c2n@#2n?eܜ5ED5_{g ܱ{g <륌륌z}ܜ5^/eܜ52n#qs@?cwYWYwYO\qszʸ9kW=eܜ52n8Y2e25p>5p>5>n%qszqs0륌륌ƈ};k};k};k};k;S}ܜ5@22|~}ܜ5^/eܜ5^<81(oǽǽYRYW}ܜ5pYRY<250b8cbcxb/)z)z)欁>n@25p>5p>5p>5>nxJΒ|nz)z)Y#qfi3qfi+qfi;qfi'q5Py)d +g HYhebYqfi#qfiwwww9kYRY7챏{g -e;k`>5p>5p>5p>5#25p>5p>5p>5>n;#eܜ5wFʸw@};k>5p>50b8cbcxb7g `Þ2n9e;k>5c8b{g {g \{g ܱ{g <zqfiw@};k>5p>50b8cb9kN9k qb9k qb9kN9k qb9k qb9k9}笁}}笁9k eܫ8}{]Ϧ?뻣~2š= ~8Gqx?/iq#/߇fu18p>_耏\[H/妗|yVS;0>YA ZHS",S(Y3 cÒCh;R͕57F kƅW rB[ ->#0 +q%Ռ(IjFϘO k>ꓮiTtM;kn&61'sy5 h(81V(>>pDDښ(`FM[y0AÚ{K?MtfO j)Z'5EKt\W_o:EKt\L k>j\'k5Ӌ5Ś/C A͜T~>hx1SD:EK u< uzuz^:}|"v\k%Ӈ5)b)rS,C 9x`{)>?uڐ@ʅksN[aͽuSKZfUS͕5icC<P9ic§uژ,:<ާ{5'DuژԌN&DWicO1ѧuژibX3v%2{:mޞNsGA=Ú9R&1S< +{攅'S D)s'S vq2[:eb)sa뗮)s!v5e9:ebw)s!)sG=ÚL kcÚ %are9J53 >6χ9X;S`N;syʼniruڙ:N;sϧ3:iv iG9ӎ`\ ;“~>ΧɇkkFgicN7֌Uig1"A7+|\iv`+ӎ|@A>8~fLI k~ϰf+`.֌mxAn:E}gnN:E:5NO|\q/]ӓ5#RWӼ:X3K$5sr)rh5v9$T͚߉ a͚Ú>Lsp)r3S`|g`miRPTϴN+)ՁΧ㤚+kgZTruJu[NpBZTxX=S::xuJugZT N δNliRDƴNmJrn:el5:)iR<::0-:DpMtN ה@/n\N6RZT Hz#S;::SiRhO?::ОvuJu=H@35EV\ZTx 'S4::xr.ՌDNDiZTڍN`m-3XsqL/1zz\n9S`)r]n_@NO|NO̳aͭuzf>k71N%)rۉ9q"yNؒNo|No֌Y7kn=Ӈ5ÚK9uluNuJuiRuJu&Sر͉a-E:Fg4xZTNniRh%uJusw:: G:iRhh::L@T3sSHT83SHTZ?y$h/y$TiR9G:z瑨^y$瑨HTB7S`0#Q'G:&9P\A :e64*f`+<^ѸN瑨q2#QuDq2k瑨y$ y$X<6S T3s\<|hHTZ<Ձq(RhHTU::jI@+%GHSxxi#Mu9y;4]S|pTtM:N_uvW<g<r=t)OKWu/SOg:0z|O!{.ᤋ/oW6(r*A}UU}n23#d_EAoAwڦ XD +C6"R,""R,"!))`MAHAHA̦ xF +g xF +g XfS<#3R<#3R,)))HAHAl +g xF +g xF +e63R<#3R<#2))`MAHAHAp̮ xF +g xF +g XfS<#3R<#3R,)))HAHAl +g xF +g xF +e63R<#3R<#2))`MAHAHA̦ xF +g xF +g XfS<#3R<#3R+))HAHAl +g xF +g xF +e63R<#3R<#2))`MAHAHA̦ xF +g xF +g XfS<#3R<#3R,)))HAHA +g xF +g xF +e63R<#3R<#2))`MAHAHA̦ xF +g xF +g XfS<#3R<#3R,)))HAHAl +g xF +g xF +e63R<#3R<#1))`MAHAHA̦ xF +g xF +g XfS<#3R<#3R,)))HAHAl +g xF +g xF +e63R<#3R<#2))`MAHAHAp̮ xF +g xF +g XfS<#3R<#3R,)))HAHAl +g xF +g xF +e63R<#3R<#2))`MAHAHA̦ xF +g xF +g XfS<#3R<#3R+))HAHAl +g xF +g xF +e63R<#3R<#2<~='ÿLA0 +70~ |~? |jT MS_?:~ {'?|/e{wB YzE'xd YzG'Xd,=!0KO<#=!0KO,=3,=!0KO<#=!0KO,=3,=!0KO<#=!0KO,=3,=!0KO<#=!0KO,=3,=!0KO<#=!0KO,=2'f YzB` YzB`'f 'f YzB` YzB`'f 'f YzB` YzB`'f 'f YzB` YzB`'f 'f YzB` YzB`'f ,=!0KOHO,=!0KO,=!0KOHO,=!0KO,=!0KOHO,=!0KO,=!0KOHO,=!0KO,=!0KOHO,=!0KO̦'f YzB`'xFzB`'f Yzg'f YzB`'xFzB`'f Yzg'f YzB`'xFzB`'f Yzg'f YzB`'xFzB`'f Yzg'f YzB`'xFzB`'f Yze6=!0KO,=3,=!0KO<#=!0KO,=3,=!0KO<#=!0KO,=3,=!0KO<#=!0KO,=3,=!0KO<#=!0KO,=3,=!0KO, YzB`'f 'f YzB` YzB`'f 'f YzB` YzB`'f 'f YzB` YzB`'f 'f YzB` YzB`'f 'f YzB``MO,=!0KO,=!0KOHO,=!0KO,=!0KOHO̷zz_'~c₩'3 _~jSSpFG/>n|/c{y.|7 Yr}{k#e\C><1y(1W4e+`Ƒ23q9x>Az):s^ʸD23륌Az):s}\gKיRu zq9^/e\g5q9^/e\gKיRu zq9x_Az):s7#фAlSu 6):sq9AFʸć]ʸ"LיxARQx(q|SQx7RQx}^/ec}"ÚQx9q +zq +zq#2^8 +|J8 +P륌P륌P8 +@}?eRQx(RQx[5q +qн>z(<6bGᡴ3q8 +t0SQx(}2O'58 +^8 +cGW=e2Ct8 +<2CA2CUOGધQx()(<{OGW=q +zq +]Ȱ+q}^/eS(< vbGᡠKG{(<ટ)(<1bGᡠKGᡠKGQx(RQx(RQx(b1륌=qDP륌P륌Px61Az)(<Ï}3bGᡠKGᡠKGQx2bP륌mf(<z)(<Ï}rPx&2}^/eQx๸q }^/etﱏ8 +9cGᡠKGᡠKG၏,JG}hb05q>C/etﱏPyZ(d|* eJ?2}>C#?S +Ԍ^/frKGᡢKG~(<8 +^8 +|d8 +X jn%q*zqc}8 +CD2: xg>CE2CE2>cG❑2CsJ#HG❑2CE2;qHG❑2C*s'qPANGbC2>VcGᡎ#q>P륌;RQxRQxF"q*zq*zqAz)(n +RM^ʸ)o}ov\QY Psœpn;w˜3>]2_>97 +R^/3 4|w^v&Uf2XD3df2XD3, L3< Lh&g42Lh&g43d63df2xF3,df2xF3< Ll3< Lh&g42Lh&g43d63df2xF3,df2xF3< Ll3< Lh&g42Lh&g43dp>3df2xF3,df2xF3< Ll3< Lh&g42Lh&g43d63df2xF3,df2xF3< Ll3< Lh&g42Lh&g43d63df2xF3,df2xF3< L3< Lh&g42Lh&g43d63df2xF3,df2xF3< Ll3< Lh&g42Lh&g43d63df2xF3,df2xF3< Ll3< Lh&g42Lh&g43dp>3df2xF3,df2xF3< Ll3< Lh&g42Lh&g43d63df2xF3,df2xF3< Ll3< Lh&g42Lh&g43d63df2xF3,df2xF3< L3< Lh&g42Lh&g43d63mdf2xF3< f2x Lh&g42Lϴ53df2Xff2xF3< Ll33mdf2xF3< f2x Lh&g42L #Gg2xF3< f2x_xg2xF3< Ll3G +]BPPALrD'7yX{_5!,ZBPY{hA99| *>y03,-dXy==05_w kJ k~ԌAD:`HԌO32:a#Úy25_O k<-2{|#cGFdPݟ32pWdXxȰy |L$1Ƞfn`"2'jƆjD5?pz5rE5 k`55Ze=OM?暂"pjJ6t`I )l?!̨)ݰsox yXRa3i)`˗"MlR ޻ + @`zK̫Oz52Ún$滧CpXzʸ|R5 hOqSj~ Mk>{ʸX3ZtL .19R'4e\C>)rɉ cGA͸)_3q`2)`"Ú2MאhʸMאh8#e0OE5#e\;Y[v;nbOls ^ jF21⥌kAx)spkAty)spkAy)s^ʸD21ꥌkAz1㘃RucיRu zq9x}\gKיD23륌Az):s^ʸD23u zq9^/e\gKיRu]cיRu zq9^/e\gKיD23ys82MHʸ:e\gb23qIיD`A|إA,”q97Pʸ(eŇȑ9?x7e>#e\Q|(RQ|?'2}cGKGKG8"륌g+8^8^8Q|SQ|(}Ň^/eUcGQKG{(>>Ci#qJ;cG@3eŇҞQ|(4pbPsP륌=qxSQ|()(>|Hc)(>z)(>\q +z8Ȍ}Ň2qpcGKGЩ kbGQ|(RQ|?>b'q +zqн>2C#q +zq +zq}Ň^/eŇ^/eŇ^/fs^8cGnLV8^8f>CA2:Q|(8o"ÚQ|(RQ|(O}KGQ|(RQ|@8걏P3q +zq +zq袔q~&ScGL(>TlRQ|@8'BP|q*|>.h(>T>3e +r Ab!+zq*zq>P륌MEяȠVbGKG?Q|RQ|Ȱ8T>RQ|RQ|4 CP|RQ|RQ|[5q*='zq>P륌P륌Q|xgPȠf3RQ|xgP륌?e3RQ|xgP\}`(>TlSQ|ؐQ|}twF(>Tz)(>Tz)(>Tz)(>`#8^8^8 zq<]XSQ|X)(>TSQ||fUdX3ڦ0KGM^ʸ)>\-qS|@2n)>K7z)^/eAaK7z)^>Z^>F=ɠ5*>eaaUz!o7/Y NO'_W~XgJ)JW>W'>~#N/^޿$}w H lE$NXDE$NXDC6q"',"q"',"q!888aM H H&NxFg$NxFg$NXf'<#q3'<#q3',88 H H lg$NxFg$NxFe6q3'<#q3'<#q2888aM H Hp.NxFg$NxFg$NXf'<#q3'<#q3',88 H H lg$NxFg$NxFe6q3'<#q3'<#q2888aM H H&NxFg$NxFg$NXf'<#q3'<#q3'88 H H lg$NxFg$NxFe6q3'<#q3'<#q2888aM H H&NxFg$NxFg$NXf'<#q3'<#q2888aM H Hp.NxFg$NxFg$NXf'<#q3'<#q3',88 H H lg$NxFg$NxFe6q3'<#q3'<#q2888aM H H&NxFg$NxFg$NXf'<#q3'<#q3'88 H H lg$NxFg$NxFe6q3'<#q3'<#q2888aM H H&NxFg$NxFg$NXf'<#q3'<#q3',88 H H g$NxFg$NxFe6q3'<#q3'<#q2888aM H H&NxFg$NxFg$NXf'<#q3'<#q3',88 H H lg$NxFg$NxFe6q3'<#q3'<#q1888aM H H&NxFg$NxFg$NXf'<#q3'<#q3',˜5r'ĉÿL.޲b'~Ww8{nwy| +n6%K2Jb]+o{kǗ^]׿-} x z9"_ci@*y-8 .0sg*kn!'5BL0p\`n07yс}=uap9Oc5wLg͍Ú&5 j(Zi U")F5-RlgI kK?ktR:E u\O-[隢:u-q31qsV:Xsq^-=u[\#xyfGfͽuV:}Xs-q>NhK\[NAsN;i6-OZ0GIKZ0<\KZ L? >:mA~kژ\<6 .|Z9ȢSA:fўNsqicEEbP3:Ns]hZ9د'D_icvڪaؕkI1{{:m>5#3l|!190]O\AN"Oה9)sSAN/N? vq2956]S 'k<Ԍ:ebw)s!)s#Ձai&5;S 6q29K9Ds,)s\wZ9TN3uڙJZ9Xig\_t R',kڑxN#CQ917nf >1NwZf|%]ƚiDtM;kƎ4Y3$5߈AruڑN[Y_g?֌'|5S1]1o]q֌mxAn:Ev:EOuuyu׸:=Y3:tMO֌ɚb5K5_+OE9+ӋAS)r+S`?̤o֌5|n֌?Yܬq>ᝮÚ<"]=:EzuojquJՠ@R5:<:jXT :jiR5˙)Un:j iR5NPvN딪AG)U|FiR5h:j<8:jH딪L딪ۦN Ɠjf5Sԑ)U7tZT #S(S+N^G\^F\A>Y&]S`Ö6]S`F\A,ӸNmL`X3*O? ڐ)s)s)s)s{\ |q29:e1:eV5eV|jq2k=:eru,k,)s`)UN LKH딪χA/HpM<:jԳÚˑ)UFJ딪A~>siR5@uJcGZT x1SGZT ӎNiR5h|QAފK딪uJՀBGZT Oڥ)U@M딪ANNk|==S`C)r]W9.uDNO|NO̳aͭuz:Xsq"yK8S`C)rW9γuĖuzuzf5Ysq>N\Z\0S` S v-S oشN`[:j)UVL kn(U6j<U\xACu*9x<<U7Y\A:e])sQI53[瑨uw-_U¿J5̰-j0`;L3S *u>7sjS9'Oi8xg&ǯ?_<=ou_k- +xa+EW_t~/e{[]A_tHWpȦ+XDE+XDE+8d<#]3<#]3,S+xFg+xFg+Xf<#]3<#]3, + + +tHWtHWtlg+xFg+xFe6]3<#]3<#]2 + +`MWtHWtHW̦+xFg+xFg+8f<#]3<#]3,S+xFg+xFg+Xf<#]3<#]3, + + +tHWtHWtlg+xFg+xFe6]3<#]3<#]2 + +`MWtHWtHW̦+xFg+xFg+8f<#]3<#]3,S+xFg+xFg+Xf<#]3<#]3, + + +tHWtHWtlg+xFg+xFe6]3<#]3<#]2 + +`MWtHWtHW̦+xFg+xFg+8f<#]3<#]3,S+xFg+xFg+Xf<#]3<#]3, + + +tHWtHWtlg+xFg+xFe6]3<#]3<#]2 + +`MWtHWtHW̦+xFg+xFg+8f<#]3<#]3, + + +tHWtHWtlg+xFg+xFe6]3<#]3<#]2 + +`MWtHWtHW̦+xFg+xFg+Xf<#]3<#]3, + + +uHWtHWtlg+xFg+xFe6]3<#]3<#]2 + +`MWtHWtHW̦+xFg+xFg+Xf<#]3<#]3, + + +tHWtHWtlg+xFg+xFcv]3<#]3<#]2 + +`MWtHWtHW̦+xFg+xFg+XfݯGXW0/>|ou]8TϜ`]I8?Ʃ =| oMB{(Ə4?>p9*fkl/屽ofzl_f>pG@B>G +qGPfAbr.y7yXqKa7-y>{Z=u4`_{cd K|^OLeG-5pR`P3v =2#2 tF5_G-5Z + k>7t|qR`XQKaG-5c#ʑZȠsR`P}ða̓ÚOZ`7G-5ӈI jF)2ȠflܸỈA17Ȟa̓#sÚO k3k#e\C><yL*1W4e+`Ƒ2/e\cKטR5 Zq9^/fs^ʸ<{:s^ʸD233q9x^Az):s|bיRu zq9^/e\gKיRu5bיD23륌Az):s^ʸk:s^ʸD23륌Az):sbיRu ofG5?%q9 tʸ/e\gb23#q9HיKיX):soq9P82S熤+8^8D57s(jz)(jz)(jGdP3zq5 q5pEcGQKGQKGQ3q58<2FO(jz)(j8Z8cGQW=q5JQ8P}E )(j>F{}E^/eE tﱏ2FUOGQC:eE +MGQKGQધQpSQGf(j\q5ؽ8^8XdX8>FA2)q5;Q륌=q5pϔq5Q륌Q륌MT(jz)(jz)(jz1㘃RQ@8t9Ȱ8^8^8؈>F9Q(RQ(RQ(< zq5>Q륌Q륌|(jPOGQgRQ(RQ63q5 +zq5>FQ(<(|>FA2FL jF2ᱏQ륌=q5pcGQB0q5*6)(jTlHSQj(jq>:Q;#q5*zq5*zq5*zq5}E^/eE^/fs^85eEő2Fś1eEglE5mJ sq5}5륌b7E z)㦨qzqS@2nRMQzli zqS@25j^Q>5z^Qc>p쫨CǢgw:JwS1˄ &~)L9Ao7s a&Z9fMs;"OKm6_^.zw^f&S(=4H$; Nuc[8#(d]@P..Cі"F10,!vᇜ֌ &ZI0Cs~!vb|| ˜b̨O4|p]`Xsbt8.0MpbXsi5s״BtMRT]Zh)Z0aÚ;yffgZ:ԸNRS:EKu$Whqo:EKu\L k>j\'k\ոN/\k\k!Ġfl3:EKCq )Z*2Sf2ӛ5%ӛ5Ú[a͵uR:E /q"lA:U:uڐ:i"%VXs/i"pH k%S|ޚԌNs@6 O9 icT3s[T3shOZ98M1"1PZ94דicI1;İfJ5euژ=i6`GIÚjf6f+ܮ'S 'kl9թf .sNv)sZ5eV\M jq2;99Xf4Ú)sNjfRa9X;D*uڙ:Aiv`wZ9s~әHN;s`iG9ӎ`|bi 3N{c 5miƚ5;TsgX3:T֌OtMǼwu:X3"M99?)r_)r_vn˱U}p_dEIWg6x.:i@` ,LOMjM^^&9׬^^R|{͚hͷh͗e#bs>UKC5]S~rp^fhY*=>Y?=>y\OYMV7.ڧV)ËՃy5z0:fo\On}jiZ=LM^/ڧV"ڧVSSSʞMO(· +SԓՃ'4SՃoDNڧVOܧO~[ZqOڦO`fŁspsp'SNܧAOz|}>u׉9'Sg]SWMZspSOv>unk>Sছ-VXmՃײܔpMh> +SڧV2v>zSOgOgOg?hZ=~#A*}}jS'hAE}j'RiZ=7]kՃ'kG|?rphZ}=q*5NܧA}zy}zy>kK<&k'k&S%T984>U랸O&SnI&ӏ|LܧYwdtM?^OyOyOC ST9;A ڧV^`hZ=x"Y=gsHV ڧVnhZ=K}j@瑬HVbՃA SZ̠}j`(98<ՃkFK=lOԃ#}GN Z*HU^||?|/r|E=}=/U4 o 6jn1>{)oj3秿}ϠE-H YԂZV "jADZ-HȪdՂ̴ZV 2jAd 3dՂ̴ZV "3Z-Li 3dՂ,jAfZ-Li 3DfQ 2jAfZ-Li 2ZV 2jAfZ-LYԂ̴ZV 2jAfZ-̢dՂ̴ZV 2jAd 3dՂ̴ZV "i 3dՂ̴ZU-Li 3dՂ,jAfZ-Li 3DfZV 2jAfZ-LYԂ̴ZV 2jAfZ-̢dՂ̴ZV 2jAd 3dՂ̴ZV "i 3dՂ̴ZE-Li 3dՂ,jAfZ-Li 3DfQ 2jAfZ-Li 1ZV 2jAfZ-LYԂ̴ZV 2jAfZ-h 3dՂ̴ZV "i 3dՂ̴ZE-Li 3dՂ,jAfZ-Li 3DfQ 2jAfZ-Li 2ZV 2jAfZ-LYԂ̴ZV 2jAfZ-̢dՂ̴ZV 2jAbV 3dՂ̴ZV "i 3dՂ̴ZjAfZ-Li 3DfQ 2jAfZ-Li 2ZV 2jAfZ-LYԂ̴ZV 2jAfZ-̢dՂ̴ZV 2jAd 3dՂ̴ZV "i 3dՂ̴ZE-Li 3dՂĬjAfZ-Li 3DfQ 2jAfZ-Li 2ZV 2jAfZ-LYԂ̴ZV 2jAfZ-̢dՂ̴ZV 2jAd 3dՂ̴ZV "i 3dՂ̴ZE-Li 3dՂ,jAfZ-Li 3DfQ 2jAfZ-Li 1ZV 2jAfZ-LYԂ̴ZV 2jAfZ-̢dՂ̴ZV 2jAd 3dՂ̴ZV "i 3dՂ̴ZE-Li 3dՂ,jAfZ-Li 3DfQ 2jAfZ-Li 2ZV 2jAfZ-LYԂ̴ZV 2jAfZ-H̪dՂ̴ZV 2jAd 3dՂ̴ZV "i 3dՂ̴ZE-Li 3dՂ,jAb~6/S |gj/|Z_\p_ +x//˧,b/uD y~4e "ʈ{QrO8=]D/z*˽]C/xK2^;2^}(Ōт +"`x dK>]A|foW5\AYi<њt9њ~!5߇+OW5_Lv0^Dx͏+њu7њ?d35c:њ?Dh͟=ht0^ +̜^DxͶMњ}df,2֬9ޛxͧd/W5߯kkyv5M?0lOWkdӤ.fm!̝mWonz1N馛J1Nψ图ϠӍgPi"N}`) @b栌Ә Ǩ|8ubt_W=)L8 bIg@qC9I72N\̜qbIÖ(e^5)2NO@16񚟃2NϣqC9ǧ(Q>GњuE)_sq𚯃2n^}Rƍkqb2n(;'eP>qC9+J7(eb2N|qo5pv6&2Z&<ʸԈG7(sq 6Akg bӬGg b{6,Ae%݆g bӬGg B;q tq=q 6zq 6zq 6Fq sqQ8Kn(,Ahz9SD) ve%9.(q v (erp"5kÌS(,A(,Ah98Y5QY[ORYЦ2Zpk֣8Kf=8Kf98Kf=8Km7b|!d%]e%]e%=Uq #Ƈ?5QYЄs%=3pk֣k֣g,AzfPYޥhzfPY̠k֣ 2q v=3(,A~ +bn9B8Kn),A!U,As%M8Y38Kf=8Kf=8Kf=8K9ĮY2ĮY39Y2ĮJg b栌Hg bW!5kl"92np{%zqq^ Be+AqY2 4Qƽf=ʸW422AzqY2Kq q_9K8q{!u~kf%?2 zo |ۊob{}U?~~7_KG7Z~? +TBfZVv`^!3KAU@P5,T U@]@P,T5 UAUP7-TU UAU@P-u UAU@P5.T uAU@P.T U@]@P5/T UAUP/T UAU@P50 UAU@P0T5 uAU@P51TU U@]@P1Tu UAUȐd :Re zbfrg h :i zj kl :m zn o p@P8T-UAP9TMUA@P9mUA@P:TuA@P:TU@@P;TUAP;TUA@P< UA@P<T-uA@P=TMU@@P=TmUAP>TUA@P>dhi} jj~j j * j j n . j >j *!Nj j!^j !nn !~ j+"$j j"2DTEUSAUAPuEeU[AUAPETucAUAPuFTUk@]APFTUsAUPwGTU{AUAPGUAU!APuHT%uAU#APHTEU@]%APuITeUAU'PITUAU)APuJԥUAU+APJTZ%j [* %z _* & c* Z& g. & k*& o* ' s* Z' w* ' {. ' *( + +* Z( +* (* -]UAFAPQT}u!AHAPURTU)@JAPRTU1ALPWSTU9ANAPS[ DAenƣ,3o7XP{b_|?>Xq<~yk%>곽ڌ b~g M}:Gz~\_OeZ{Ao{l &mxA/ \~+Xk9x~3tK3J4 endstream endobj 156 0 obj @@ -2678,7 +2657,7 @@ endobj /BS << /W 0 >> -/Dest (.:quand-un-pilote-a-finit-un-tour) +/Dest (.:quand-un-pilote-a-fini-un-tour) >> endobj 175 0 obj @@ -2689,7 +2668,7 @@ endobj /BS << /W 0 >> -/Dest (.:quand-un-pilote-a-finit-un-tour) +/Dest (.:quand-un-pilote-a-fini-un-tour) >> endobj 176 0 obj @@ -2828,7 +2807,7 @@ endobj << /Type /Annot /Subtype /Link -/Rect [ 544.436985 496.793622 555.889134 482.393622 ] +/Rect [ 538.710911 496.793622 555.889134 482.393622 ] /BS << /W 0 >> @@ -2931,7 +2910,7 @@ endobj /BS << /W 0 >> -/Dest (.:comment-ca-aurait-du-se-passer) +/Dest (.:comment-caurait-du-se-passer) >> endobj 198 0 obj @@ -2942,7 +2921,7 @@ endobj /BS << /W 0 >> -/Dest (.:comment-ca-aurait-du-se-passer) +/Dest (.:comment-caurait-du-se-passer) >> endobj 199 0 obj @@ -2953,7 +2932,7 @@ endobj /BS << /W 0 >> -/Dest (.:comment-ca-aurait-du-se-passer) +/Dest (.:comment-caurait-du-se-passer) >> endobj 200 0 obj @@ -3191,22 +3170,22 @@ endobj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 254.273622 555.889134 233.603622 ] +/Rect [ 63.386457 254.273622 555.889134 233.603622 ] /BS << /W 0 >> -/Dest (.:utilisation-de-chat-gpt) +/Dest (.:utilisation-abusive-de-la-f1tv) >> endobj 222 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 248.753622 82.786359 234.353622 ] +/Rect [ 63.386457 248.753622 99.373273 234.353622 ] /BS << /W 0 >> -/Dest (.:utilisation-de-chat-gpt) +/Dest (.:utilisation-abusive-de-la-f1tv) >> endobj 223 0 obj @@ -3217,29 +3196,29 @@ endobj /BS << /W 0 >> -/Dest (.:utilisation-de-chat-gpt) +/Dest (.:utilisation-abusive-de-la-f1tv) >> endobj 224 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 233.603622 555.889134 212.933622 ] +/Rect [ 63.386457 233.603622 555.889134 212.933622 ] /BS << /W 0 >> -/Dest (.:ameliorations-futures) +/Dest (.:recuperation-de-cookies-a-linsu-de-lutilisateur) >> endobj 225 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 228.083622 82.786359 213.683622 ] +/Rect [ 63.386457 228.083622 99.373273 213.683622 ] /BS << /W 0 >> -/Dest (.:ameliorations-futures) +/Dest (.:recuperation-de-cookies-a-linsu-de-lutilisateur) >> endobj 226 0 obj @@ -3250,7 +3229,7 @@ endobj /BS << /W 0 >> -/Dest (.:ameliorations-futures) +/Dest (.:recuperation-de-cookies-a-linsu-de-lutilisateur) >> endobj 227 0 obj @@ -3261,7 +3240,7 @@ endobj /BS << /W 0 >> -/Dest (.:conclusion) +/Dest (.:utilisation-de-chat-gpt) >> endobj 228 0 obj @@ -3272,7 +3251,7 @@ endobj /BS << /W 0 >> -/Dest (.:conclusion) +/Dest (.:utilisation-de-chat-gpt) >> endobj 229 0 obj @@ -3283,7 +3262,7 @@ endobj /BS << /W 0 >> -/Dest (.:conclusion) +/Dest (.:utilisation-de-chat-gpt) >> endobj 230 0 obj @@ -3294,7 +3273,7 @@ endobj /BS << /W 0 >> -/Dest (.:notes-de-code) +/Dest (.:ameliorations-futures) >> endobj 231 0 obj @@ -3305,7 +3284,7 @@ endobj /BS << /W 0 >> -/Dest (.:notes-de-code) +/Dest (.:ameliorations-futures) >> endobj 232 0 obj @@ -3316,29 +3295,29 @@ endobj /BS << /W 0 >> -/Dest (.:notes-de-code) +/Dest (.:ameliorations-futures) >> endobj 233 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 171.593622 555.889134 150.923622 ] +/Rect [ 63.386457 171.593622 555.889134 150.923622 ] /BS << /W 0 >> -/Dest (.:glossaire) +/Dest (.:court-terme) >> endobj 234 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 166.073622 82.786359 151.673622 ] +/Rect [ 63.386457 166.073622 99.373273 151.673622 ] /BS << /W 0 >> -/Dest (.:glossaire) +/Dest (.:court-terme) >> endobj 235 0 obj @@ -3349,29 +3328,29 @@ endobj /BS << /W 0 >> -/Dest (.:glossaire) +/Dest (.:court-terme) >> endobj 236 0 obj << /Type /Annot /Subtype /Link -/Rect [ 47.386457 150.923622 555.889134 130.253622 ] +/Rect [ 63.386457 150.923622 555.889134 130.253622 ] /BS << /W 0 >> -/Dest (CahierDesCharges/:cahier-des-charges) +/Dest (.:long-terme) >> endobj 237 0 obj << /Type /Annot /Subtype /Link -/Rect [ 47.386457 145.403622 63.334211 131.003622 ] +/Rect [ 63.386457 145.403622 99.373273 131.003622 ] /BS << /W 0 >> -/Dest (CahierDesCharges/:cahier-des-charges) +/Dest (.:long-terme) >> endobj 238 0 obj @@ -3382,7 +3361,7 @@ endobj /BS << /W 0 >> -/Dest (CahierDesCharges/:cahier-des-charges) +/Dest (.:long-terme) >> endobj 239 0 obj @@ -3393,18 +3372,18 @@ endobj /BS << /W 0 >> -/Dest (CahierDesCharges/:contexte) +/Dest (.:conclusion) >> endobj 240 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 124.733622 77.060285 110.333622 ] +/Rect [ 55.386457 124.733622 82.786359 110.333622 ] /BS << /W 0 >> -/Dest (CahierDesCharges/:contexte) +/Dest (.:conclusion) >> endobj 241 0 obj @@ -3415,29 +3394,29 @@ endobj /BS << /W 0 >> -/Dest (CahierDesCharges/:contexte) +/Dest (.:conclusion) >> endobj 242 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 109.583622 555.889134 88.913622 ] +/Rect [ 63.386457 109.583622 555.889134 88.913622 ] /BS << /W 0 >> -/Dest (CahierDesCharges/:projet) +/Dest (.:bilan) >> endobj 243 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 104.063622 77.060285 89.663622 ] +/Rect [ 63.386457 104.063622 99.373273 89.663622 ] /BS << /W 0 >> -/Dest (CahierDesCharges/:projet) +/Dest (.:bilan) >> endobj 244 0 obj @@ -3448,172 +3427,121 @@ endobj /BS << /W 0 >> -/Dest (CahierDesCharges/:projet) +/Dest (.:bilan) >> endobj 245 0 obj << /Filter /FlateDecode -/Length 53024 +/Length 52943 >> stream -xM&Y_Qk -/w -(m@5#67H@fndYȚf"|f8{_8q~sq__q=]g|>?h_cޏ~?_O㺯_ϳy>$_ǯ/}\Xyy_x_/ۗWپqcrky֙j ykqef[3!Xk%˝c] ry:י.ZBu\=!X:"5cOFk~:p&k:~ywdu?30k#2\᚟EkGkgo홑`x"5 ׼ -oBb8#5?"5?ёfaO?fdg+2\D&k^:65g)rWtkA #e~`H 9RƵ52 uTb&׌z 2\3`͸)rMא)rM[̘)P*2\)⚯Xkc.[cQ᥌kAx)s5^ʸD21Q奌kb טR5 -q9J/e\cKטb1Q륌Az):s^ʸD23׊u\gKיRu jq9Z/e\gKיRu jq9Z/e\gKי׊u\gKיRu jq9Z/e\gKיRu jq9Z/e\gKיD23QȥA!):sq9_ʸ%e\g"tSu #e\g.e\gbA@):s?q8ϔqZ3q-q>=qn8|"5Xkbu\'qQ`ͨRkF2nX3jqQ륌XDE>XDE>8dS,""R,""RH}H}4H}H}lg>xFg>xFe63R<#3R<#2`M}H}H}̦>xFg>xFg>XfS<#3R<#3RH}H}4H}H}lg>xFg>xFe63R<#3R<#2`M}H}H}̦>xFg>xFg>XfS<#3R<#3RH}H}4H}H}lg>xFg>xFe63R<#3R<#2`M}H}lg>xFg>xFe63R<#3R<#1`M}H}H}̦>xFg>xFg>XfS<#3R<#3R,H}H}lg>xFg>xFe63R<#3R<#2`M}H}H}p̮>xFg>xFg>XfS<#3R<#3R,H}H}lg>xFg>xFe63R<#3R<#2`M}H}H}̦>xFg>xFg>XfS<#3R<#3RH}H}lg>xFg>xFe63R<#3R<#2`M}H}H}̦>xFg>xFg>XfS<#3R<#3R,H}H}g>xFg>xFe63R<#3R<#2`M}H}H}̦>8w_C~>OF^(?|y]tx |Q)EЗH *K8IaI٤HHlRE$EXDRE$EXDRCv)3"<#)3"<#)2IIaMHH&ExFRg$ExFRg$EXf"<#)3"<#)3",III٤HHlRg$ExFRg$ExFRe6)3"<#)3"<#)2II]HH&ExFRg$ExFRg$EXf"<#)3"<#)3",III٤HHlRg$ExFRg$ExFRe6)3"<#)3"<#)2IIaMHH&ExFRg$ExFRg$E8f"<#)3"<#)3",III٤HHlRg$ExFRg$ExFRe6)3"<#)3"<#)2IIaMHH&ExFRg$ExFRe6)3"<#)3"<#)2II]HH&ExFRg$ExFRg$EXf"<#)3"<#)3",III٤HHlRg$ExFRg$ExFRe6)3"<#)3"<#)2IIaMHH&ExFRg$ExFRg$E8f"<#)3"<#)3",III٤HHlRg$ExFRg$ExFRe6)3"<#)3"<#)2IIaMHH&ExFRg$ExfI٤HϬ"<#)2IURg$E8f"<#)3"Q=^E5UD`_8Avuk{)دk^E ,"31XCXN VkWWtI_k~疁{N8/1hO| _|cࠞ1:{NLZ|gt *K :7x!U:5J&A$c1J*rpL+-rpjJT_==1:x{n1qLy3="ӁLHtLΩ1raq$t:5?|c|l>C i$t:_ga!;1Xs10xI uPI s39萦AQ]zNґk5m5='5j؎\,ݫA{zN6$9NufM9IG3='Av֦$G_kƉ6cuӰ *05I5,<0gk~;=' NuTâ>uD\9@^5gv 'p u8UyT-sTâR7H߸FzNZ(`ufq{ 9sd jEM 1CvzN0q$;\gaQx}\8=vUE]>ּ'հ91t"sn6Y&kj؁pHIr+='Aq1R`Nuf$v3='cdގkvN~_b0}$K|;jO|C,$fKI? -3olő8=6o8p$MI&?m#հ6֑|ϑL~6uI#f3P8{l3pOIf{?[NI&?󍟓_\g+='g͕|7=~ۘ9|?9gí3ߞ>=|C$<#='\I=ct+sIǟG:U1: sIǿ3='tۊt?9HGzN2@OI&?ZzN23'?fW`ƎC㌿t:Ƒi;ctӜtc;oc?P?ͭ8dPx͹13* qs}_|n__e=LDTs. -EZoE7L rpͽkn!'kƅW%$r<p=Q.(:0fD;fDxOkڸat?tM;71\4J |?gڠ(IgڡxOEfi%1\s[O`&׌[,|&׌;6]5#B5E)5`W(uqo>E)5.c&kgܧkgܧθO/HZ5!1X3qbcܧbZpqo>Eq̵5#ӇknGܧ|q>\q}DA}>>u}7>HDʅk3O5#Szq5\30|xO1icrkژi6 598ړic"N>wՓicJ1Q}ژz>mA7i6`tM?i6`oOڧ9pxLkf6~!1Xs{K`z>e}D)s'O?q2qz9pKה9;2O6&kƗ>et)s!)s|[5q2q9SKܧA=WZ3sF<;Sqiv R9PXN [Z3rwڧ;޸fT6i5ckڹfHӚ;&`7+|܁iv`+ӎtMEb&Q5o~>7Vܧ׌N<"q\]q"qO}f ?*+S*} -הJAb") ?*xYiR9?S*ljH>r@9S*wڧT>rQ}Jy>rHg}JeSڧTsIkf5S*ԙ):S*)J -3S*3S`?fܧA~L#mv͸Oئq2dL`f<|tM͸Oq21>e|9x,H?y͸Oq29>e5exLkfm}<)se8lkJ'kr-8>rUCHpMiR9ǫik>FڧT)S*BFڧTPÏOml}JݏiR9hOiR9hOiR9h9>rYG"(.S*lIŎO4vܥ5~/k=S*Fzk:>r}:fJ|}l>Eq"QOGtqM zܧ|O/q"H8S`C)r}lkO8OoyOo'tMoOq>\>E6q"~q"qmiR9ha>rc]KALڧTpbíV$*mAC}J倿HAÁ+S* O c?AC }J堡PKS0S*XLKAC2f`b?EGrxGrHTP^~$*xW=>rrGrzHTZ?c?~$*AC}.9VGr'#Q9h>e)swaܧB%9؎؏DW4Sy~$* ?OHT7?>ebq2~$* b?l؏D倿9H79x\4b?v؏D##Q9hGHTu}J)vU'#s~W9x؏*ϊHr#W9xFGz~eP9gkJU)~qri~*rp~O`~ȷgJAU9)g)9N?W~([3^Sz{x8~`#;3g1|pzA~0mݟ|QOhr~/z`}˫l_QOޅ` HOHOzg'xFzg'xFze6=3<#=3<#=2  `MOHOHO̦'xFzg'xFzg'Xf<#=3<#=3,   HOHOlzg'xFzg'xFze6=3<#=3<#=1  `MOHOHO̦'xFzg'xFzg'Xf<#=3<#=3,   HOHOlzg'xFzg'xFze6=3<#=3<#=2  `MOHOHOp̮'xFzg'xFzg'Xf<#=3<#=3,   HOHOlzg'xFzg'xFze6=3<#=3<#=2  `MOHOHO̦'xFzg'xFzg'Xf<#=3<#=3   HOHOlzg'xFzg'xFze6=3<#=3<#=2  `MOHOHO̦'xFzg'xFzg'Xf<#=3<#=3,   HOHOzg'xFzg'xFze6=3<#=3<#=2  `MOHOHO̦'xFzg'xFzg'Xf<#=3<#=3,   HOHOlzg'xFzg'xFze6=3<#=3<#=1  `MOHOHO̦'xFzg'xFzg'Xf<#=3<#=3,   HOHOlzg'xFzg'xFze6=3<#=3<#=2  `MOHOHOp̮'xFzg'xFzg'Xf<#=3<#=3,   HOHOlzc~Q? COQO?_oMH>apͧؾپblaptG y>}<'ƹErgd,w4 \"p-C."p7'y}8#X:8#X:S9SZLv"pΔl3EjF0Lv"nz0LC$uxW\-^R i)p`"R > - B`zĶ:yq($)sq22~)p~IאOp`͍ riK=eДqqͫkkF8܀`h%k~F8d>XkTʸ|5rW4e-`H׼Fʸ6kkkg8\r0Lא2!\єq+2!\єq29SƵ52-[;n⚟X5 -^ʸD21Q㥌k9bטRp5\cKט(R5 *q9R/e\c֋D23Wu\gKיRuZu:3Q륌P'q9Z/e\gKיRu jq9Z/e\g^3q9xXu jq9Z/e\gKיRu}:3Q륌N\Xu jq9Z/e\gW:s^ʸ`(BRu ):sq9Kʸ|F:s23f23 Snq9P8J3e>MG遟2h(=RQz?Od8JcG@2ÁZ/e~ ֌Z/e~J8JpKG@2qXQzB(=)(=8Jjqp:ÁB-eTﱎ8JGp8JxSuz)(=uN XQz8P륌=qxSQz8pSQz8&2[4SQz8P륌pધpધXQz8pSQz`2z(=RQz8SEkbGXQz8P륌uN(=RQz@8J+ecXQz8P륌pKGXQz8P륌pKG@39Z/eTﱎ@/ eco78J8f:ÁZ/eTp+q6DkcG@2~dbfz)(=8JjqP:z(=ϊu^8JjqE)(=|6$f9cGL(=8=qNv Lp" RQz8GkcG4qN~gO ֌Z/frD2ÉZ/eT;#qNz)(=&SQz#2Xs;bGD2~̱pKGDDk@#e^8J'İٓaJ'jqNz)(=VuXbZ/eT;#qNz)(=RQzs(=3RQz8YqgpHGD2+qxgpHGU$⚟XQz@:Ér8J')(=m5q9bG~(=Έu^8J'jqNz)(= 8J'jqNz1㘃RQz8YSQz89RQz8q3p"5lJ sqpu+=KJWu+=KJ׈u+=KJRƽjqp}~HeRƽjqO:Sz豎f~lwudP}~ -i,=LJ ao{޲s:? -(?kD PЗPd}˫l_Q2 hC - hE4C"}g4C3Pf(XfPf(xF3< -f(xF3< - he - hg4C3`mg4C3Pf(XfPf(xF3< -f(xF3< - he - hg4C3`mg4C3Pf(XfPf(xF3< -g(xF3< - he - hg4C3`mg4C3Pf(XfPf(xF3< -f(xF3< - he - hg4C3`mg4C3Pf(XfPf(xF3< -f(xF3< - he - hg4C3}g4C3Pf(XfPf(xF3< -f(xF3< - he - hg4C3`mg4C3Pf(XfPf(xF3< -f(xF3< - he - hg4C3`mg4C3Pf(XfPf(xF3< -g(xF3< - he - hg4C3`mg4C3Pf(XfPf(xF3< -f(xF3< - he - hg4C3`mg4C3Pf(XfPf(xF3< -f(xF3< - he - hg4C3}g4C3Pf(XfPf(xF3< -f(xF3< - he - hg4C3`mg4C3Pf(XfPf(xF3< -f(xF3< - he - hg4C3`mg4C3Pf(XfPf(xF3< -g(xF3< - he - hg4C3`mg4C3Pf(XfPf(xF3< -f(xF3< - he - hg4C3`mg4C3Pf(XfPf(xF3< -f(xF3< - he - hg4C3}g4C3Pf(XfPf(xF3< -f(xF3< - he - hg4C3`mc~l 3to?yM'xGZ6Czqá9 - -Ʒ}j8۟y|훒?[#U۟6?}w=޷[KhoӼ]va_|y_^eww`)#?x`ML)!0?HL)!0?HL)!0?HL)!0?HL)!0?HL)!0?HL)!0?HL)!0?HL)!0?HL)!0?lC`JL)!0?xFC`JL)!0?xFC`JL)!0?xFC`JL)!0?xFC`JL)!0?xFC`JL)!0?xFC`JL)!0?xFC`JL)!0?xFC`JL)!0?xFC`JL)!0?XfSC`JL)3SC`JL)3SC`JL)3SC`JL)3SC`JL)3SC`JL)3SC`JL)3SC`JL)3SC`JL)3SC`JL)2SC`JLSC`JLSC`JLSC`JLSC`JLSC`JLSC`JLSC`JLSC`JLSC`JLSC`J]L)3SC`w!0?HL<#!0?f|SC`J]L)3SC`w!0?HL<#!0?f|SC`J]L)23)!0?xFC`J?)!0Sg?C`JL3)!0?xFC`J?)!0Sg?C`JL3)!0?xFC`J ~ML~c~MLSC`JLSC`JLSC`JL`}~~}ߡ?1g|~O_Gaf}7:0U%^w~/y;N>Y~841G@ZAlp?OLCL_LOTuy~2'ix33%z WZ p)xOPL\<_==8LI'kgk;ck',t-:tZ`W.gZWKk 01<+] |wk1;M!3}♋Ƒ| kN>|ogog&3]uYҚ8:<;51_A'1}Ǚu}-Z\2;0O7}ٽҵ'\Z=w[ddQ$wģ5#;랮bCZ  k?{ pLLgsk}֌J}#@AvZ7dњZ~VZ3r_;>0~]ϝr< -&f׮Z L9A7]g:{5NJ9^;] 8X98Xk#398kf #VrWkj7P`t^EJUjC}xCqjC>M98F鼊3}Ϋ 9`*}V:6JՆygJU\*:eg:6t-wKkFk̤8yg:+WrpIUf>鼊s #Wrn:zڐΫ98;Gg:v N+W;rpJU$) rpy<5#0y,0*y#q鼊>fk*k`;W;%ᔐΫ98:y!9yrsΫk,] HՎěLՎz=5NՎjGbS=98qHUTs: ?t-^#Wq#ІJUC?~r '=t-t^YwΫ9Z qt^E,%jGs;9p4NUK>;*鼊s[y#,WZ3rpHՎ\ҵ@r n:%̕Ϋ9 ZY: Wq3Ձ\õNXyt0#>_[:,_ t^AۗZC8yՁđ->_AZ鼊 BG`όWq>80=Wq9x#>_quO:39zk>|u v竨Q>Ϋ8]Y@^WQ|>0H::Ϋu>Ձt^k@^8@^s竨\@"uU|7V|P5# ߴf@^Tӵ@ҞMUg`f|:}竈z鼊3;>_Eqg| 3UcDg_#y"s竨_+W'rݜΫx33ՉDEN 0t^EDM#>_A{|LWq!>_oQ鼊ՖAb9x_w|疮rg|c(;>_H`ψWQsՉ|#>_*r0W|:y:U`V|:9cf|:rNՉ|fw'9ȧu鼊ېΫ94Wq3Չ|N3?]K qTW'r|u"9ฑΫx 0+>_]AZ:z5/  *t`| ty).ÏB|ZZ3rMΫ 9E=Wٷs\ikǝomʾ}iUWٷКΫlĩ7>_e>UWٷogqkN |K70k?;>_e>h|ʾ*Q?i7|}?O)]k~|}UNJWٷOKUgWٷ3>_e&p-طRׂ}g*O~&^X3ώ3}4-y}'?'\ M5>_}GW߾շo̾շot^}Zo|Ǜk:}_Lo5շoϾ#>_ 7x9*5}_'z7R7a׿ ^^/їWٿ}|;!{wgԝu{FQwe|Ϩ;3=|lQwgԝu{Fٺ=|Ϩ;3-u{FQwgԝu[f;3=|Ϩ;2[wgԝu{FQwe|Ϩ;3=|lQwgԝu{Fٺ=|Ϩ;3w{FQwgԝu[f=|Ϩ;3η֝u{FQwgԝo;3=|Ϩ;2[wgԝu{FQwe=|Ϩ;3-u{FQwgԝu[f=|Ϩ;3η֝u{FQwgԝo;3=|Ϩ;1{wgԝu{FQwe|Ϩ;3=|lQwgԝu{Fٺ=|Ϩ;3-u{FQwgԝu[f;3=|Ϩ;2[wgԝu{FQwe|Ϩ;3=|lQwgԝu{Fٺ=|Ϩ;3w{FQwgԝu[f=|Ϩ;3η֝u{FQwgԝo;3=|Ϩ;2[wgԝu{FQwe+oQwgԝu{Fٺ=|Ϩ;3-u{FQwgԝu[f=|Ϩ;3η֝u{FQwgԝ;3=|Ϩ;2[wgԝu{FQwe|Ϩ;3=|lQwgԝu{Fٺ=|Ϩ;3-u{FQwgԝu[f=|Ϩ;3η֝u{FQwgԝo;3=|Ϩ;2[wgԝu{FQwc|Ϩ;3=|lQwgԝu{Fٺ=|Ϩ;3η֝u{FQwgԝo;3=|Ϩ;2[wgԝu{FQwe|Ϩ;3=|lQwgԝu{Fٺ=|Ϩ;3-u{FQwgԝu;f=|Ϩ;3η֝u{FQwgԝo;3=|Ϩ;2[wgԝu{FQwe|c?|"(Asw>? ?w]~?Q]/߸~~߾/_^Wپ}}{T׽ET}`>0uS]T}`3LuS]{Ϩ>0uLu=T}`>0uS]T}`3LuS]{Ϩ>0uLuuuS]|_t-uLu|ﺷuLu|S]T}`]Q}`>0u3LuS]{Ϩ>0uLu=T}`>0uS]T}`3LuS]{Ϩ>0uLu=T}`>0u꺷uLuS]Q}`>0uLu{F]T}`>0uuS]T׽guLuS]Q}`>0uLu{F]T}`>0uuS]T׽guLuS]Q}`>0uLu[fLuS]{Ϩ>0uLu=T}`>0uS]T}`3LuS]{Ϩ>0uLu=T}`>0uS]T}`3LuS]{Ϩ>0uLu-uS]T׽guLuS]Q}`>0uLu{F]T}`>0uuS]T׽guLuS]Q}`>0uLu{F]T}`>0uuS]T׽guLuS]ٺS]T}`3LuS]{Ϩ>0uLu{F]T}`>0uuS]T׽guLuS]Q}`>0uLu{F]T}`>0uuS]T׽guLuS]ٺS]T}`3LuS]{Ϩ>0uLu=T}`>0u-c׽>.c磙1o%|vˏ߾}mn[_>K7g{:??3?vw6мo~bp/˗UXlBdsoƪ! f~LbX.[1-ry!`>qa3$oGa5ҚO~:W<棝r<  O`i 6i ˞kI״skڹf57Ŗgf1|i[N[ ]gڣ'q3mR"3spi͓k-~>k隢hs}ipEӸp$KkFфEӸyq.q^\s;>f i|qh>E4P}@)&gOyܧ7P5Gܧ|q""@šqsi-i6'Sq}i"p$|}NjZ5s:RbOso@6 7O9 icri=i6 4y>m~?i6`Os'I1;N%2{>mޞOsGO|}JՖ)s|2|>e)s'S Nq2~2b']Sa)sEϕ<~>>eםiglKLt}ڙ>iv~>9I3N#iG>)0·l״7I״qN7,]5H ׌#d+ӎL#}]iv`וiG.>f*Gi\35\3*tM'׌cxA>Eq37e+S`)r_tqͨ5]\3⚑biʰq^\3JA)rk>E:]S>^9ȴkj<5o~>7׌P׌Ni WܧAܯ+S` rJP@0c}l>Ei+S#+SY?đ?Jt0ge}:(>Ai Os`ڧ9@ڧ9 `Mt0NOZ3soi nOs7tڧ9ftMxOs`S3χ9?<57225>eb}lm ׌s)s)s53S O'ʂa׌9x)s3S;-]STO9>eLj9xП)sGܧpM'sqds}:χl t2)k:9>icO`/k}:Gڧ4`Ht6yOq1OgHtvi5#S~>=>MHt"-iN }:]\q.55U-1\>Epܧj'S ?&S`[}đ}zsͣ}zs8kzsͭ}pgᚏ)r99hKt!nشO\0}yOQ4_a3\sH(Pi\sp<i1>]A>]A>\ #Q.h\tM(>\LrA'p53Si~$lO)/(b?rUϴOUrG\ɆgG\w؏D4#Q.hݸO~`m~$yb?傆,S ~@q2q}l(TҚH xE>ewG\~OH 7?>ebq2<[G\"#Q.FH ڸO}}<؏DorA;fG\hkJ=#Q.ԑ)ܪGڧ q~W.x؏^b?+<+#r3O_ ^i_oȕY RujԥͩaIė176kk<mq?t%9=aqn:.x#}y?@ΩJwZHX\p_W}yL?k?~>|{s(s\Bпvxr֧;CuE=|[gYwџw:eoǏ;(y^.L#k&RG&U'T˭ x"}F>}%H_uK>IOdT3>Uq~M_zG|u%O\W[h;Z4}͟-ZI ׳S'tD'>kSy}:M_>q\:M_sM^R/+L7=NO\yLusyGtɨO\K4}]$'ZͫOw9_ kQMͳO_hSbnG4};2y5iY ֵЇ('2|DzxMK[Od\NtsvPiu '\e2}}K \Od\>D.%'2W׸>quJ'5'2|~n[Zz"گ$kJ2}J>M_sfO>|D{Zz"v5'2|n{Zz"CWi ָ*{_st5i Mk\OdܯDO"GYJx5'2(k~>>בָ~ ϑָPΑָhZz"CE>Mk\Od<GZz"CָP/~DO}E>]FPKM]s+o=<+>wp=SD> ,qWΓqw;Om\OdɫiM9O}Kk\Odq>}Z~2^/q=}\Od^i Dڻ}\Odyoi 5'2|^GD}\Od^/q=S{Dq=S{Dzq=vq>}L4}*#z"çzi }lZz"çzi ~c9ڄ5'2tָP; <>'2|jHk\Od7DB}\Od ָߠu4QMk\GqZ:3<D}E>KDybau4Q7su4QqM\zI4}b5>O%qMW4:^/qM\jָ&.gu4Q>@Z:\?qĥzihnոhRu4Qhqv}\GnM_+:3qM\nhr~8y*fZ:3D>qyqg=5KĥihR_u4Q2>K}DD}>Kĥ{h_qD&.Kk\GwqD-;qĥ'&`D}՟ihǥ5Kĥzih^D}\G5KĥG@E`>ڽ}\GU|9O&.Kk\G5>6qM\hR{u4qy]>K&7^kָ&.}0mXS:;#:^/qM\jָ&|u4 }Z*yu4Q}\G23:^/qM?:qĥ?M_;:ٱih}\Gٺu4qA%Ѽd㸏hvqwB&.Kk\G5>(qMDHk\G&/qM=:'šĵu4qk~}qD&}lhZSΓqw'Q>8O}\G5}\Gug}\G5>2qM#>=qM\o׸h~>kĵzhhsu4q^Z:vLXKŰt4q^Z:ޯqDݪqĵdâKk\GÏ&Έ&Kk\G5qM\Hk\G>4>YqM ihZ{u4;u4qM_+:aɼ?qD-qĵ^ 5k Mk\Gm5:hvqDqx}9zi;'2^/qD5P{Ɲj׸^kָs"CaMk9Ds"CwM_smuǬ5POָ3^Zhu3:z}M^/qg4Q{ƝDwFC&:X{ƝDM\>+}W4qh?竏y_ߢ_,8B4&ֿޯh✢s,Q'^-_7}{3ȡ1Wbׯxs_}Cw,AX=_?ýϏt̅+9Wz`=ox۳֯}k LNN&'p29 9A039A039r`&'fr`&'fr7LNLNn ܐ39A039A0!'fr`&'fr`&'pCNLNLN 9A039A03939A039A0!'fr`&'fr`&'pCNLNLN 9A039A039r`&'fr`&'fr7LNLNn ܐ39A039A0!'fr`&'fr`&'Pr`&'fr`&'fr7LNLNn ܐ39A039A0!'fr`&'fr`&'pCNLNLN 9A039A039r`&'fr`&'fr7LNLNjVNLNLN 9A039A039r`&'fr`&'fr7LNLNn ܐ39A039A0!'fr`&'fr`&'pCNLNLN @ ܐ39A039A0!'fr`&'fr`&'pCNLNLN 9A039A039r`&'fr`&'fr7LNLNn ܐ39A039A0Y9A039A039r`&'fr`&'fr7LNLNn ܐ39A039A0!'fr`&'fr`&'pCNLNLN 9A039A039r`&'fr`&'fr5+'fr`&'fr`&'pCNLNLN 9A039A039r5?mr?TN^o{|s#ߟh__@~uJГ -nO2%Ġ^ߞe=sb}VbJ (!1PBbN ܐ!1pCb@J ܐ!1pCb@J ܐ!1pCb@J ܐ!1pCb@J ܐ!1pCb@J ܐ!1pCb@J ܐ!1pCb@J ܐ!1pCb@J ܐ!1pCb@J ܐ!1pCbN ܐ!1pCb@J ܐ!1pCb@J ܐ!1pCb@J ܐ!1pCb@J ܐ!1pCb@J ܐ!1pCb@J ܐ!1pCb@J ܐ!1pCb@J ܐ!1pCb@J ܐ!1pCbN ܐ!1pCb@J ܐ!1pCb@J ܐ!1pCb@J ܐ!1pCb@J ܐ!1pCb@J ܐ!1pCb@J ܐ!1pCb@J ܐ!1pCb@J ܐ!1pCb@J ܐ!1pCbN ܐ!1pCb@J ܐ!1pCb@J ܐ!1pCb@J ܐ!1pCb@J ܐ!1pCb@J ܐ!1pCb@J ܐ!1pCb@J ܐ!1pCb@J ܐ!1pCb@J ܐ!1pCbN ܐ!1pCb@J ܐ!1pCb@J ܐ!1pCb@J ܐ!1pCb@J ܐ!1pCb@J ܐ!1pCb@J ܐ!1pCb@J ܐ!1pCb@J ܐ!1pCb@J ܐ!1pCbN ܐ!1pCb@J ܐ!1pCb@J ܐ!1pCb@J ܐ!1pCb@J ܐ!1pCb@J ܐ!1pCb@J ܐ!1pCb@J ܐ!1pCb@J ܐ!1pCb@J ܐ!1pCbN ܐ!1pCb@J ܐ!1pCb@J ܐ!1pCb@J ܐ!1pCb@J 9׉,1˯L ~?'_$ߞL ǴK -^~9ڿ2bߞe=]}[VF(!#PBFܐ!#pCF@ܐ!#pCF@ܐ!#pCF@ܐ!#pCF@ܐ!#pCF@ܐ!#pCF@ܐ!#pCF@ܐ!#pCF@ܐ!#pCF@ܐ!#pCFܐ!#pCF@ܐ!#pCF@ܐ!#pCF@ܐ!#pCF@ܐ!#pCF@ܐ!#pCF@ܐ!#pCF@ܐ!#pCF@ܐ!#pCF@ܐ!#pCFܐ!#pCF@ܐ!#pCF@ܐ!#pCF@ܐ!#pCF@ܐ!#pCF@ܐ!#pCF@ܐ!#pCF@ܐ!#pCF@ܐ!#pCF@ܐ!#pCFܐ!#pCF@ܐ!#pCF@ܐ!#pCF@ܐ!#pCF@ܐ!#pCF@ܐ!#pCF@ܐ!#pCF@ܐ!#pCF@ܐ!#pCF@ܐ!#pCFܐ!#pCF@ܐ!#pCF@&#pCF MF 25+#ps 27djVF627dnԬm27dnܐYdnܐ!#P27ܐ!#pCFfenn!#pCF&#pCF MF 25+#pӿp# 25+#pӿ!#pCF@&#pCF MF 25+#ps 27djVF627dnԬm27dnܐYdnܐ!#037ܐ!#pCFfenn!#pCF@ܐ!#pCF@ܐ!#pCF@9/dMuFA5|Q˔_}9;-XK >i~;_~@ i(!-PBZ@ i!-pCZ i!-pCZ i!-pCZ i!-pCZ i!-pCZ i!-pCZ i!-pCZ i!-pCZ i!-pCZ i!-pCZ i!-pCZ i!-pCZ i!-pCZ i!-pCZ i!-pCZ i!-pCZ i!-pCZ i!-pCZ i!-pCZ i!-pCZ i!-pCZ i!-pCZ i!-pCZ i!-pCZ i!-pCZ i!-pCZ i!-pCZ i!-pCZ i!-pCZ i!-pCZ i!-pCZ i!-pCZ i!-pCZ i!-pCZ i!-pCZ i!-pCZ i!-pCZ i!-pCZ i!-pCZ i!-pCZ i!-pCZ i!-pCZ iMZ i5+-pCZ i5+-pCZ i5+-pCZ i5+-pCZ i5+-pCZ i5+-pCZ i5+-pCZ i3;-pCZ i5+-pCZ i5+-pCZ i5+-pCZ i5+-pCZ i5+-pCZ i5+-pCZ i5+-pCZ i5+-pCZ i5+-pCZ i3;-pCZ i5+-pCZ i5+-pCZ i5+-pCZ i5+-09҂~҂ii} -:)nn ~y~=O uzx?z=S_V;|D^M/.N"K.O@rkgH_<ӗ?_Dr?7uO.y}=nNj1bL]zFSW|K>^h=k_}]/Œko5ײ|M=M]s}FSz%|5?en}ͯ%M_5 {4uZԷ<M]yFS\^5w4}͵9k5dH4u&zuT0-q(SҚR -oiB 5we%b2}͵I5veh4u^DS\Oָ[5eSyW_:Mk5vk}S2Nk<W34qZ?#qZ?qdjH5W4qO)s<w{5?i=_GZnG_ski:XΑָ[5V`EwuS_Ѵ-Xq568eM_Hk[۫nW_'nnM]swuxi:X{z<qwuvyi:x<`wu6zi:X;z^Zn^/q^/q^:X{{^Z>qwu{Kkܽ'^/q^kָ{Kkܽ5`wuu}ܽ3^/q^kָ{Kkܽ5q^kָ{Kkܽ5`wu{Kkܽ~8ڄ5`Nkܽzָ{%q^?:X FZ7{?i:X7PZoPZ㺆5k~C8q]Ciq5ĥziq]Cq]C\jָ!.Kk\}#5k>(%q]CW4㺆^/q]C\jָ!.gu Q>k@Z㺆\?q5ĥzinոRu Qq5v}\3㺆oq5Dir}\#5߯q5ĥzivq5D5ĥiRߤ5Dv3q]C\jָ!.UOk\5kq]C\꫞ָ!zָ!q]C\jָ!.ZE!@u q^Z㺆!jى!.Kk\{!Lk\!.Kk\5kzq]C\jָ!.Kk\55kڽ}\L|k>>kK5ĥzi^}\'㺆^/q]C\jָ!.adz^Z㺆~u QwFu q^Z㺆^/q]Cԋu Jk\5kzq]C\jָ!jq]C\ϸҟƉq]C\jָ!.Fk^Z㺆q5ĥzivq5D}>kq]C\jָ!.Kk\}QZ㺆O5kkmB5Dme>kkKk\{!}iXSbָ!}0@4}️q5ĵMkJ>V45k5ĵzivq5Dq5ĵziϠLk\v!Kk\q]C\kָ!D|}\݁5kk5ĵdS 5kk5ĵzinոqX2)5k}\ug}\5kk5D}s!ug5kkbM]siZwFZ㺆^/q]C?q]Cָ!ug5kkb̫q]C"q]C\rZ㺆 Ҵu QV>k!jq]Cԝq]C\kָ!Kk\5kz!qk5ĵzquziZX5ĵp5kk݌iYE\ۦdzu Q/>!jָx>!jָx=>!jָ^Zzi;kyz^kָ^Zjk}!qUCq9|35^CS5(/jW^CD}xշu~1PǙ6z|{~gY_?]RkWE+W9}OB}h׵ۥwtJRˮs SЬV@>ݽQVN],GGǑѯ|:|7g#k8{}{{zTܜ)t|g6Wxn3N7U]_½mFyO'A|mY/=mƭ^C}rD6OsI+GzO~y]}3cWS[d>}R󒞧 <{dt{q'+}ҽx'==|Γnykuq`>)~n<>IOv;_#Isn>`>]}/twoQtwS}JէF |'ݫ'yj->O]s>^} u{zۧ5:O/ ާ>t*xt2Xej̧O>y͸GǺ]+ܫf?y)n>}j=cf<.N]2>Us)}M0>un3h|½mFzuQ7->ѧ_=mF;½mYI5wzZ{Cj pv/+>ϧ'pnj|#\+ݫ>Yj̧<=V`n=M9zqy#c/{8:xԿ`VէY$i^kWk4<>:s|M_KjzJjG0=OGV<ӽZQ$^u|k^ɼ~=V೏fIj]IxezL]_d'S:ݟim|=l'6yo5s0>MS`U':|$S\V$ZZG)Kj|OԿv-OruCejKj>ɽlzLe0>O]<),w2nj_UCn'ak׃?o'2wzQz=l~z,cZkIyIjyOZ_>#7qIj['}GUNZ˼} _}Gyu0u3c'y:z5)y`Evz~<}wy]6^zij|t:=>O]I{GZ_9t:z}G-s=WJj'}o^R5`=One9On-On}vzK{أn;z'9Zx$G_Kǎ>G{M|>mqJg@pwz<}Fg!Uy>V>g}>>8??տxu_*$G_byO=qF=֭~>ѭ~MߞgGOY<3Ink'9̚ڨIy6PYg?5j{gּo>r3kgYӇɅ{y=˸I}fmƥy5cf+kzیKGfyL[Y]Y{ی|p>VII5ی͸^>Iw݉^V}?6ǻ~sMtQ+5OmFw}n3.wYf\ӽz6Ozl3.W;Or'9ی~0>Owhͨ[>cgq{=$gqğm=5cgq}x6qğmF8>fԷ>fԋʹ=یzёͨ*Or*OrOYfd7ݓ;ܫgoc6f<.L5832zfcmFڌM~?2?),]$'Ǹ~ͤxTџ"}hE qW6jSt+mFQQkgYk}JQF֌ -%̨PŒ -%̨PŒ -#kFfT(aFfT(aF= 3*0 3*0B͚QnQnQfͨpÌ -7̨pÌ -7̨PfTaFfTaFfTY3*0 3*0 3*ԬnQnQj֌ -7̨pÌ -7̨pÌ -5kFfTaFfTaF5 3*0 3*0B͚QnQnQafϨpÌ -7̨pÌ -7̨PfTaFfTaFfTY3*0 3*0 3*ԬnQnQj֌ -7̨pÌ -7̨pÌ -5kFfTaFfTaF5 3*0 3*0B͚QnQnQfͨpÌ -7̨pÌ -7̨PfTaFfTaFfT3*0 3*0 3*ԬnQnQj֌ -7̨pÌ -7̨pÌ -5kFfTaFfTaF5 3*0 3*0B͚QnQnQfͨpÌ -7̨pÌ -7̨PfTaFfTaF5 3*0 3*0B͚QnQnQafϨpÌ -7̨pÌ -7̨PfTaFfTaFfTY3*0 3*0 3*ԬnQnQj֌ -7̨pÌ -7̨pÌ -5kFfTaFfTaF5 3*0 3*0B͚QnQnQfͨpÌ -7̨pÌ -7̨PfTaFfTaFfT3*0 3*0 3*ԬnQnQj֌ -7̨pÌ -7̨pÌ -5kFfTaFfTaF5 3*0 3*0B͚QnQnQfͨpÌ -7̨pÌ -7̨PfTaFfTaFfTY3*0 3*0 3*ԬnQnQf -7̨pÌ -7̨pÌ -5kFfTaFfTaF5 3*0 3*0B͚QnQnQfͨpÌ -7̨pÌ -7̨PfTaFfTaFfTY3*0 3*0 3*ԬnQnQj֌ -7̨pÌ -7̨pÌ -5kFfTaFfTaF= 3*0 3*0B͚QnQnQfͨpÌ -7̨pÌ -7̨PfTaFfTaFfTY3*qw,;A?'Ψ<߼_~̦yYg?/'rOc~/ӎ$e=e=]~;p" 'I8HB $L$d" 'I(!p2$L$d" %+f"`&f"`&pC$DL$DL$H"$H"$H D0I3D0I3"`&f"`&f" 7DL$DL$Dn$H"$H"$I3D0I3D0I!f"`&f"`&pC$DL$DL$fEL$DL$Dn$H"$H"$I3D0I3D0I!f"`&f"`&pC$DL$DL$H"$H"$H D0I3D0I3"`&f"`&f" 7DL$DL$Dn$H"$H"$ԬH"$H"$H D0I3D0I3"`&f"`&f" 7DL$DL$Dn$H"$H"$I3D0I3D0I!f"`&f"`&pC$DL$Dn$H"$H"$I3D0I3D0IYD0I3D0I3H"$H"$H D0I3D0I3"`&f"`&f" 7DL$DL$Dn$H"$H"$I3D0I3D0I!f"`&f"`&pC$DL$DL$H"$H"$HB͊$H"$H"$/|EL$DL$Dn$H"$H"$I3D0I3D0I!f"`&f"`&pC$DL$DL$H"$H"$H D0I3D0I3"`&f"`&f" 7DL$DL$DjV$DL$DL$:D0I3D0I3"`&f"`&f" 7DL$DL$Dn$H"$H"$I3D0I3D0I!f"`&f"`&pC$DL$DL$H"$H"$H D0I3D0I3I3D0I3D0IN$DL$DL$H"$H"$H D0I3D0I3" 5 0B$$Ǭ^:8^$=I|'Fa+|o#F0ZgYFk?uJ#FYa%J#FYa%J#Fa7n#FYa7n#FYa7n#FYa7n#FYa7n#FYa7n#FYa7n#FYa7n#FYa7n#FYa7n#Fa7n#FYa7n#FYa7n#FYa7n#FYa7n#FYa7n#FYa7n#FYa7n#FYa7n#FYa7n#Fa7n#FYa7n#FYa7n#FYa7n#FYa7n#FYa7n#FYa7n#FYa7n#Ԭ0 a7n#Ԭ0 a7n#0 a7n#Ov~n#F!pCfn#F!pCfn#F!pCfn#F!pCfn#F!pCfn#F!pCfn#F!pCfn#F!pCfn#F!pCafn#F!pCfn#F!pCfn#F!pCfn#F!pCfn#F!pCfn#F!pCfn#F!pCfn#F!pCfn#F!pCfn#F!pCafn#F!pCfn#F!pCfn#F!pCfn#F!pCfn#F!pCfn#F!pCfn#F!pCfn#F!pCfn#F!pCfn#F!pCafn#F!pCfn#F!pCfn#F!pCfn#F!pCff0{@0B?Fo/aį0By\Ǐ8Gۏ ?@%H@yc> %J$@B  %J$@B  %J$@  7n$Ԭ@  7n$Ԭ@  7n$Ԭ@  7n$Ԭ@  7n$Ԭ@  7n$Ԭ@  7n$Ԭ@  7n$Ԭ@  7n$Ԭ@  7n$@  7n$Ԭ@  7n$Ԭ@  7n$Ԭ@  7n$Ԭ@  7n$Ԭ@  7n$Ԭ@  7n$Ԭ@  7n$Ԭ@  7n$Ԭ@  7n$@  7n$Ԭ@  7n$Ԭ@  7n$Ԭ@  7n$Ԭ@  7n$Ԭ@  7n$Ԭ@  7n$Ԭ@  7jV @  7jV @  7fv @  7jV @  7jV @  7jV @  7jV @  7jV @  7jV @  7jV @  7jV @  7jV @  7fv @  7jV @  7jV @  7jV @  7jV @  7jV @  7jV @  7jV @  7jV @  7jV @  7fv @  7jV @  7jV @  7jV @  7jV @  7jV @  7jV @  7jV @  7jV @  7jV @  7fv @  7jV @  7jV @  7jV @  7jV af_$cnH|?LH_c yu9FG z{R6_Db?R| !x[Qxyx?z;_.#PB -!B(!PB -!B(!PB!B!pCB -!B!pCB -!B!pCB -!B!pCB -!B!pCB -!B!pCB -!B!pCB -!B!pCB -!B!pCB -!B!pC!B!pCB -!B!pCB -!B!pCB -!B!pCB -!B!pCB -!B!pCB -!B!pCB -!B!pCB -!B!pCB -!B!pC!B!pCB -!B!pCB -!B!pCB -!B!pCB -!B!pCB -!B!pCB -!B!pCB -!B!pCfn!B!pCfn!B!pCafn!B!pCfn!B!pCfn!B!pCfn!B!pCfn!B!pCfn!B!pCfn!B!pCfn!B!pCfn!B!pCfn!B!pCafn!B!pCfn!B!pCfn!B!pCfn!B!pCfn!B!pCfn!B!pCfn!B!pCfn!B!pCfn!B!pCfn!B!pCafn!B!pCfn!B!pCfn!B!pCfn!B!pCfn!B!pCfn!B!pCfn!B!pCfn!B!pCfn!B!pCfn!B!pCafn!B!pCfn!B!pCfn!B!pCfn!B!pCffp !ğ,x?"W -3B/9<礈/k3/!e=e=ӝ~lB'B8B ! !LdB'B(!p2! !LdB%+fB`&fB`&pC̄L̄L" !" ! !D0B3!D0B3!B`&fB`&fB7L̄L̄n!" !" !B3!D0B3!D0B!fB`&fB`&pC̄L̄LfL̄L̄n!" !" !B3!D0B3!D0B!fB`&fB`&pC̄L̄L" !" ! !D0B3!D0B3!B`&fB`&fB7L̄L̄n!" !" !Ԭ" !" ! !D0B3!D0B3!B`&fB`&fB7L̄L̄n!" !" !B3!D0B3!D0B!fB`&fB`&pC̄L̄n!" !" !B3!D0B3!D0BY!D0B3!D0B3!B`&fB`&fB7 !" !" !B3!D0B3!D0B!fB`&fB`&pC̄L̄L" !" ! !D0B3!D0B3!B`&fB`&fB7L̄L̄jV̄L̄L" !" !mB`&fB`&fB7L̄L̄n!" !" !B3!D0B3!D0B!fB`&fB`&pC̄L̄L" !" ! !D0B3!D0B3!B3!D0B3!D0B!fB`&fB`&ps" !" ! !D0B3!D0B3!B`&fB`&fB7L̄L̄n!" !" !B3!D0B3!D0B!fB`&fB`&pC̄L̄LfL̄L̄n!" !" !&fB`&fB`&pC̄L̄LB!sOeߏ_?{!/)<BD?)x_nQ/7_,ߢEx,~;(B Q#+PB(B Q#+PB(B Q#;pC( Q5+pC( Q5+pC( Q5+pC( Q5+pC( Q5+pC( Q5+pC( Q5+pC( Q5+pC( Q5+pC( Q3;pC( Q5+pC( Q5+pC( Q5+pC( Q5+pC( Q5+pC( Q5+pC( Q5+pC( Q5+pC( Q5+pC( Q3;pC( Q5+pC( Q5+pC( Q5+pC( Q5+pC( Q5+pC( Q5+pC( Q5+pC( QE!pC( QE!pC( QE!pC( QE!pC( QQ7Dn"EYQ7Dn"EYQ7Dn"EYQ7Dn"EYQ7Dn"EYQ7Dn"EYQ7Dn"EYQ7Dn"EQ7Dn"EYQ7Dn"EYQ7Dn"EYQ7Dn"EYQ7Dn"EYQ7Dn"EYQ7Dn"EYQ7Dn"EYQ7Dn"EYQ7Dn"EQ7Dn"EYQ7Dn"EYQ7Dn"EYQ7Dn"EYQ7Dn"EYQ7Dn"EYQ7Dn"EYQ7Dn"EYQ7Dn"EYQ7Dn"EQ7Dn"EYQ7Dn"EYQ7Dn"EYQ7Dn"EYQ?q"cQD-_">3E뒣oEB|.76Bu32B% !BY!B%J^B(!0B%J!&PBadn!ByMB -!B!p !B!pC5!B5+pCkB7jV !ׄn!Ԭ !B7 !BY!B7n^B!PB7n!B!PB7n!B!PB7n!B!0C7n!B!PB7n!B!PB7n!B!PB7n!B!PB7n!B!PB7n!B!PB7n!B!PB7n!B!PB7n!B!PB7n!B!0C7n!B!PB7n!B!PB7n!B!PB7n!B!PB7n!B!PB7n!B!PB7n!B!PB7n!BY!B7n!BY!B7n!B!B7n!BY!B7n!BY!B7n!BY!B7n!BY!B7n!BY!B7n!BY!B7n!BY!B7n!BY!B7n!BY!B7n!B!B7n!BY!B7n!BY!B7n!BY!B7n!BY!B7n!BY!B7n!BY!B7n!BY!B7n!BY!B7n!BY!B7n!B!B7n!BY!B7n!BY!B7n!BY!B7n!BY!B7n!BY!B7n!BY!B7n!BY!B7n!BY!B7n!BY!B7n!B!B7n!BY!B7n!BY!B7n!BY!B7n!BY!??#B !s?3B%ߞ!_1ğNasO~bgί׮%m=/t_vb"I&f D0SM3D0M3ʉ`&fډ`&f 7+Hh&Hh -&"("(" BHhRHhb)")")*"Hh&Hh&" +"I+" ⊄Hh򊄦Hh(,"i,","Hh:&HhJ&"-"- -."I.".HhHh‹"i/"/" &Hh -&Hh0 -#0# 1HhRHhb#1 #)2$# &Hh&Hh32#I36#3Hh򌄦HhpHh"Hh24P#)5T#i5"Hhj&Hhz&b#I6f#6j# HhHhҍh7x#7|#7"Hh -&Hh&#8# 9HhRHhb#9#):j:#:#:"Hhʎ&Hhڎ&#;# <# Hh"Hh2<#)=#i="Hhj&Hhz&#I>#># HhHhҏh?#?#?"Ih -&Ih&q*&Ih:&IhJHA$A$AIhIh ($B,$B0$ ʐ& Ihڐ&IhꐀC>$ DB$IDIh"Ih2 P$)ET$iEX$ j&Ihz&IhHFf$Fj$Fn$ Gr$IGv$ ⑄Ih򑄦Ih(H$iH$H"#Ih:&$IhJ&% $I$I$ (Ih)IhJ$J$)K"-Ihڒ&.Ihꒄ&/ $ L$IL$ "2Ih23IhBG4IhR5Ihb6 $M$)N$ &:Ih&;IhO$IO$O>qi 3/'S_O_=|O -ϯG=#ߞߎz?a^`[ٽ]%U_7W?^߯ -]:v9 -~D3eB1߸飃v^iŏϯ[/6__Ws>~︰^߯ ߫c {~ARg?1䂀 +xM,ɵe7_QnAKOh|T'n@gG{%׾]UQv6\vlu{cx:~_ol{_~~}_ϯmzqΏsݯ}ܟu?q~/j]c_繏_Qo_/ﲼC 3< /c# B^<[!cΈ>}\[@4maO w{9R^xٷvLL xƱ'Fcމѐ1ÐMcc191s]p5]c._=\Ͻ*fc+[s}ɏ[|34c5ܟtM\OScO ]ө1oGc[Gc9]SMBmuZ1xr8_[Q9xn\[Q9xrVslNǦ1-iN1cKu:vi̻\A>`Sn@堊'\ӡ t(54fqlNrOӡ8Mu:G{j:1ݱN+UtM+:W-fҘ_sPҘO>\tM;]GcI״rW^N+Y_TVs]N+)(\b:O\W,\bƕWӚSK:=Juz(Juz(Iuz(kP֢1EQC9X`C9X@C9X6/lC9X1+ƚPW,/tC9X#7Juz(8SNs;c*G-+5UҦkT9XeT98HcVy|.*8c*~:Uu{S^˂(uܯ3֩rp?Xi*k1+q:UT9oGSVtMujHuz*Huz*3Tn᚞mNOV5\S9mGr}1Rӊb^G"sNZNh/1fb4J41#95HuzNy;Rz괦GżTgxGӳrpԴ%Y9XQ0S|T5+;]Cc3yjuzjیuZ98g:ZuZ98{:UuZ9Xq:c^1c^sJҘ/yXƼXƼXz$rpj'irp\׌uZ9XS13KcY/yXƼXƼXX>X5NQ_T5bΑ4c:EC15 c6yD(Evy2ҥIK9XTrf N/`MS^JTrb0ZK9X)R:diDRW.`S^yER֝7;fK98g.Gs>ҥ_S`b*+tc*Jc*}K98#]:UT9XXQ 4fآt)'HrpER֧T9_G{Ә5X}FR#Hrpߣt)-Hrp{t)T9G}[9G}[9#FƬ0ܶ#ݕDaFsGܟ+Hw`TTGxD,GXK)vx}EZzWݯ~~Ԥx]_?__}?,*oy_o[翯"=.?۶3Φ7oz~Sz>sZ2>ߙ/7O{ߗxg}/_^~-/ﲼ.Ys ?^R|W>6F^{!LH _W!R=Dí%wB4{CB h=Rý{&{1.fL u5f4~EFcgfטbј׈LzF\wLݧ_Ggdju"SchzkgL~h̯g<#25Ԙ_51A6:&35|Ԙ_[EeFc>Wd4QH sjuƬ(1k;1״IS4dsMԘ==eFc>;2s(2޺̭1kykyOWSZ$枲mo+RUs)jY̵xW~b5RԽge‡)jIR>bU>z3GʸZHْ)jWL͋BҸZ$fט_3e\-yfʸ~h2nT>f)F`]љ2.x1s()j~hiʸ14kCcUbƬ=sј#e\}2Z܏qrggJRJLhʸs)ơ1_Gʸqh2ns"1kwbjuESƍhʸQ9+2nT>uESWLW b_:SƍKcm+ƭ1?q61 +/eP/eP/ePG\ `R y5P:/ePB/ePJ/ePR/ePZ/frz)rq7K7K7qS9xq7K7qS9XkqS9XkqS9XkqS9XkqS9XkqS9xq7qS9XkqS9XkqS9XkqS9XkqS9:n*k2n*k2n*k2n*k2n*_w\M`RM%G\qS9XqS9XqS9XqS9q7)rnv)r0eT(eT2N$q&)MB];RiD]Ѹ6z)Mv"1_qme8mj2N$Z륌6 5'8"Sc^8mPq&QW4Mb^8mj2N$8mB\iq&O\iVkq&Q_ո6j)MVqmu:N$quIl8mj\ivn6mMBSi q&QuI43Mb^8m~\i:N$6i:ј_qm[RiASc^8mix\iVkq&Q6qmsuIlKm[Ri6O'1G1{\iD-e:N$6ZuIU8m+ RiĮј_qmuA:N$Ԝ5eI7sb=j;:N$Z륌6ZuI7#Mb^ʸzC)SiD<"Sc[\i^kq&Qs\i^kq&Z|uIhH8mk2N$vKPM m{Ri^kq&Q_ո6]#=z)MVqm͈8mk2N$Z륌69uIHmF\ߌq&7#eIKmZ᧌6 }3Ri^ߌq&Ebn8m8mk2N$6uIq&Q+6fuIKm{Ri^kq&Q6z)Mb^8`Ri^Ś2N$*q&ח1eIpMQ.eId,$j2Mq&QkqmqmK&QkqmK&qDF9XkqmKMbm#>I̸&qu܏[_׭34OQ*o?%V7l-^-{7H?Y˖a3}}2ō[.ŗL_.?}hO` d9O`@'0 YO``'00 d f|3>f|3>O`@f9O``'00YN``'00 d f|3>f|3>O`@f9O``'00YN``'00 d f|3>f|3>O`@f9O``'00YN``'00 d f|3>f|3>O`@f9O``'00YN``'00 d f|3>f|3>O`@f9O``'00YO``'00 d f|3>f|3>O`@f9O``'00YN``'00 d f|3>f|3>O`@f9O``'00YN``'00 d f|3>f|3>O`@f9O``'00YN``'00 d f|3>f|3>O`@f9O``'00YN``'00 d f|3>f|3>O`@f9O``'00YO``'00 d f|3>f|3>O`@f9O``'00YN``'00 d f|3>f|3>O`@f9O``'00YN``'00 d f|3>f|3>O`@f9O``'00YN``'00 d f|3>f|3>O`@f9O``'00YN``'00 d f|3>f|3>O`@f9O``'00YO``'00 d f>r3>'00YN``'00f|2 ()Ϗ`wZP2oxek`-Yy +??KA +^}]UK_iVJߟAMU~4_U+C]õP+SCjGfj_3+WVY=rPZׄvOU?+N|U*4_U+iVuW=_i̕:0W+WYBy\[Y"W<&|֟,]|iVu3<|UO805fEyybjw-OӘ+uHY_4_U+UR:|U)W|".05Z`']Kӵ9]K ҵ+Wk^NUW}|Q9xՌ-Wk.g6Scvp-L\G`MգrP|__iZ1qo{|zTt;>_=*u Iq1w|zTcWk!m-Wkv]?գrO|Z똏KiG:ju>cG]4_=*wMX|#>_5S1w|zT:+]z|U\j}?zi̕j1W54_=*omOעrP^|gŜQ9x^jEG-905jMy竇|A:[kLSG}oY?xW|zWO=F|zq竧Ys-4f=|QU^iz6ꩣuf:SG}ׇ櫧ꩣ;>_=u|:SG}-*WO}`FG}t-||=||WO]#||n:mꩣݶ;>_=u1h}>9>_=u竧vS:ⴐ4_=uoP>.Gbt#N=>_=ui}|#N{$y˚+>_=uӹ>WHպy1_|IKGV#N+0|j}?y$Hc%KKG>w|*^Vʷߴw/]>0>_omuUӘu>U|mU|UHU/izvSsh#>_G|{i*߾|{MU[MZ|UrdzUuWoʷ߮ʷC#] is^i*~eFGg|*~_||ukAʷv1YG=3>_oR:yw+ӘH+>_}ߞVW߭3>_}|Ż6?kn?|_˜߭g->Ø߭"\w+5 շo|ȍyj,۷v}{#MB5[}\|_:;1:~`?[#>_}~[||zN6MDOͷ۹!k^gc~ \f٠fCb//y z_ zDlؠg=36虱Ab3cؠg=2Aό zfl3c,=36虱Aό zfl#ؠg=36虱Ab3cؠg=2Aό zfl3c,=36虱Aό zfl#ؠg=36虱Ab3cؠg=1Aό zfl3c,=36虱Aό zfl#ؠg=36虱Ab3cؠg=2Aό zfl3c,=36虱Aό zfl#ؠg=36虱Ab3cؠg=2Aό zfl3c,=36虱Aό zflؠg=36虱Ab3cؠg=2Aό zfl3c,=36虱Aό zfl#ؠg=36虱Ab3cؠg=2Aό zfl3c,=36虱Aό zfl#ؠg=36虱Ab3cؠg=1Aό zfl3c,=36虱Aό zfl#ؠg=36虱A̴Alؠg=2Aό~4ՠg=36Y zffؠg=36Y zffؠg=36Y zffؠg=36Y zffؠg=36Y zfl3cؠ'f5虱Aό zfl3cŠg=36虱Aό zdؠg=36葙6虱Aό zfl3cŠg=36虱Aό zdؠg=36Y zfl3cؠGf1虱Aό zfl3cŠg=36虱Aό zdؠg=36Y zfl3cؠGf1虱Aό zfl3cŠg=36虱Ab3cؠg=2Aό zfl3c,=36虱Aό zfl#ؠg=36虱Ab3cؠg=2Aό zfl3c,=36虱Aό zflؠg=36虱Ab3cؠg=2Aό zfl3c,=36虱Aό zfl#Mn}sˠ:~AACGV)7?.,//]8}`S +ȫ3|@GF127(F4MF1RíP#l1t .J1ofj5[䀙C򇎋 +|踨hSE1kc[L]p5]ct\T`.1:.*0b'0usKc-liusD?fFc>t\T`^oyItjCEFcu\T`4(fj_|~:Uhi>TUT{-r׹"/S`Sn@堊'\ӡ t(54f)s31'PV:W=Nrp>Oӡ'PIu:zR=:U\tM:1]SWY98iHz>)y:\94ICcTshUeNY;*12}>qwY9 +Lu:+STrP*\yh"yީN1]1]ScD\tM+5MuZ98Oэ6gޱN+}ݱN+}ޱN/Vr^s']KcKcX\KTjrt:W-5?rpi/s 3sҘk1WxkhޑCX}bVS;3ڌ}:\*pM+9T~:l/f\NkQ~:9K1ϡ)C9xTrQǓP;EcC9XTrTr>Tr.lC9X_TrIcV֍5XC9X_TrPGzTrp3T(XLyԲ2]S)mqNUN|h5(fӚS靮G8SƼXƼX~fQXq3i`rgҘҘkV|ic:5feјrPcVZ:T˖XfX/N_s5}ic:}4}:}4m::X Z6U98 괆[9R^|ThP{f4UZG5-Hrxt)Huz)kR9թ6}$m#rjN@)T:f1+*Y98#i3zA:fGIƼ>6]uOu* >#i3P'(}$mO.h`T:Umrp\GfDIF}b*uoaSਅJrplGf]X}$mT9_GfN5XALrpGf"UGf6֩rp{mN}$mF`lg`hO 0}$mԖT꫺:fmGzox#7<#7{3@} S7<[ޛ^ϖ܍m>ҏ+%n9-h Sw ?z3*߿kG[~z$_`֘Ԩߚm5[ Կq{_/M/yg_,MqS~B̸֦)?3nό3,MqS~fܔ7gMY3̸)?3nό#Lߚ3̸)?3nό#4gMqS~fܔ7Gfiό3̸)?3nʏҔ7gMqS~fܔ)?3nό3̸)?2KS~fܔ7gMqS~d̸)?3nό3ĬMqS~fܔ7gMY3̸)?3nό#4gMqS~fܔ7Gf)?3nό3̸)?2KS~fܔ7gMqS~d̸)?3nό3,MqS~fܔ7gMY3̸)?3nό#4gMqS~fܔ7Gfiό3̸)?3nOڔ7gMqS~fܔ)?3nό3̸)?2KS~fܔ7gMqS~d3̸)?3nό#4gMqS~fܔ7Gfiό3̸)?3nʏҔ7gMqS~fܔ)?3nό3̸)?2KS~fܔ7gMqS~d̸)?3nό3ĬMqS~fܔ7gMY3̸)?3nό#4gMqS~fܔ7Gf)?3nό3̸)?2KS~fܔ7gMqS~d̸)?3nό3,MqS~fܔ7gMY3̸)?3nό#4gMqS~fܔ7Gfiό3̸)?3nOڔ7gMqS~fܔ)?3nό3̸)?2KS~fܔ7gMqS~d̸)?3nό3,MqS~fܔ7gMY3̸)?3nό#4gMqS~fܔ7Gfiό3̸)?3nʏҔ7gMqS~fܔ)?3nό3̸)?1kS~fܔ7gMqS~d̸)?3nό3,MqS~fܔ7Gfiό3̸)?3nʏҔ7gMqS~fܔ)?3nό3̸)?2KS~fܔ7gMqS~d̸)?3nό3,MqS~fܔ7gMY3̸)?3nό6gMqS~fܔ7Gfiό3̸)?3nʏҔ7gMqS~fܔ)?3nό3̸)?2KS~b~74mMA?M5?ٲ{ijWm}Ыe//O]Ͼ~?l3Җ="eӖ}`ڲL[زL[i>0m-{fl-eӖ=3Ӗ}`ڲL[i˞[i>0m-eό-eӖ}`ڲgƖ}`ڲL[i>0m3c>0m-e왱eӖ}`ڲL[زL[i>0m-{d>0m-e왱eӖ}`ڲL[زL[i>0m-{fl-eӖ=3Ӗ}`ڲL[i˞[i>0m-eό-eӖ}`ڲgƖ}`ڲL[i>0m3c>0m-e왱eӖ}`ڲL[,}`ڲL[i>0m3c>0m-e왱eӖ}`ڲL[زL[i>0m-{fl-eӖ=3Ӗ}`ڲL[i˞[i>0m-eό-eӖ}`ڲgƖ}`ڲL[i>0m3c>0m-eY,eӖ}`ڲgƖ}`ڲL[i>0m3c>0m-e왱eӖ}`ڲL[زL[i>0m-{fl-eӖ=3Ӗ}`ڲL[i˞[i>0m-eό-eӖ}`ڲgƖ}`ڲL[i>0m#Xi>0m-eό-eӖ}`ڲgƖ}`ڲL[i>0m3c>0m-e왱eӖ}`ڲL[زL[i>0m-{flf~Ӗ}`ڲL[زn-e왱eݲL[i>0m3c>0eӖ}`ڲGf3[i>0m-{flf~Ӗ}`ڲL[زL[i>0m3c>0m-e왱eӖ}`ڲL[زL[i>0m-{fl-eӖ=3Ӗ}`ڲL[i˞[i>0m-eό-eӖ}`ڲGfӖ}`ڲL[i˞[i>0m-eό-eӖ}`ڲgƖ}`ڲL[i>0m3cie˲aY?{q/6}u/e??YtokvRG}_zEx]_EGZ=!Vόzf3ck,Z=3꙱Vόzf#hXgZ=3꙱V̢3ckXgZ=2Vόzf3ck,Z=3꙱Vόzf#hXgZ=3꙱V̢3ckXgZ=2Vόzf3ck,Z=3꙱VόzfjXgZ=3꙱V̢3ckXgZ=2Vόzf3ck,Z=3꙱Vόzf#hXgZ=3꙱V̢3ckXgZ=2Vόzf3ck,Z=3꙱Vόzf#hXgZ=3꙱V̢3ckXgZ=1Vόzf3ck,Z=3꙱Vόzf#hXgZ=3꙱V̢3ckXgZ=27kXgZ=3Yzf3ckXGf꙱Vόzf3cEgZ=3꙱VόzdkXgZ=3Yzf3ckX'f꙱Vόzf3cEgZ=3꙱VόzdkXgZ=3Yzf3ckXGVόzf3ck,Z=3꙱Vόzf#hXgZ=3꙱V̢3ckXgZ=2Vόzf3ck,Z=3꙱VόzfjXgZ=3꙱V̢3ckXgZ=2Vόzf3ck,Z=3꙱Vόzf#sXgZ=3꙱VόzdkXgZ=3Yzf3ckXGf꙱Vόzf3cEgZ=3꙱VόzdkXgZ=3Yzf3ckXGf꙱Vόzf3cEgZ=3꙱V̢3ckXgZ=2Vόzf3ck,Z=3꙱Vόzf#hXgZ=3꙱V̢3ckXgZ=2Vόzf3ck,Z=3꙱VόzfjXgZ=3꙱V̢3ckXgZ=2Vόzf3ck,Z=3꙱Vόzf#hMsMtVwj?yLK?>4z?/__^e} }>yBV}Xg<3Yyf3c}XGf癱>όyf3c}Eg<3癱>όydXg<3癱>̢3c}Xg<2>όyf3c},<3癱>όyf#Xg<3癱>̢3c}Xg<1>όyf3c},<3癱>όyf#Xg<3癱>̢3c}Xg<2yf3c}XGf癱>όyf3c}Eg<3癱>όyd}Xg<3Yyf3c}XGf癱>όyf3c}Ug<3癱>όyd}Xg<3Yyf3c}XGf癱>όyf3c}=73c}Xg<2>όyf3c},<3癱>όyf#Xg<3癱>̢3c}Xg<2>όyf3c}Ĭ<3癱>όyf#Xg<3癱>̢3c}Xg<2>όyf3c}癱>όyf3c}Eg<3癱>όyd}Xg<3Yyf3c}XGf癱>όyf3c}Eg<3癱>όybV}Xg<3Yyf3c}XGf癱>όyf3c}Eg<3癱>όyd}Xg<3Yyf3c}XGf癱>όyf3c}Eg<3癱>όyd}Xg<3Yyf3c}X'f癱>όyf3c}Eg<3癱>όyd}Xg<2>όyf3c},<3癱>όyf#Xg<3癱>̢3c}Xg<2>όyf3c},<3癱>όyf#Xg<3癱>O̪3c}Xg<2>όyf3c},<3癱>όyf#Xg<3癱>̢7ʻo>|Z埦mo4 !U |y_ey} ?|Jy~vȫ9z!n5"C^н &razP +#d1t .J1nfj5KѤCM 3 yY[-Әwy>| k~<,FO{S7u4溩KҘ^I~̌|OtM\OScO ]ө1o_@1Sc/S7ҩB"xkqs=i}1Ǟt?4湟i̧\_s}c5=5溱kZZNkqs?i-nNi̵7ǭ;fb4cuzisuzkcuzk̅1:QX9j7Gb[ +VѱN_:}isulo31[Gc޶XCtM+a5Q)R֍CJQ9xrVslNǦ1-id-51sa|uOu:k:*pMr.|ӡԠӘǧ͌uWөܤ%fh+Tֺ?TnTgiSөIu:Ju~=:yRH? +LTNIΡ1O5|:Cc*KtjIS9*0Nu:+SATИ5(1SCcb\+tMOVjrpޟ3/mʼcVcVc^s54O\)|oMNo2T+i`uZ98ZTkZ9X;i/ Ә_f41(]GcNјյ#16=_N}bVS;3ڄ}:\*pM+9T~:l/f\NkQ~:9K1ϡ)C9xTrQǓP;EcC9XTrTr>Tr.lC9X?Muz(+4f`XS:=Nuz(%}k7Juz(8SAuHrp~ +eԘG-+5UҦkT9XeT98ηʌ\#Orp3֩rp3֩rphb4u{S^˂(uܯ3֩rp?Xi*_31#֩rpߏX};b*k^GSVpMO`ES9GS9՝!|>rP^rP5=~:=v:/ׇ#:-u:=K>R?RVsNϡ1GӚFaґ8RScޏTԘ#Y9GqNkzTHuzN5mIuzVVT13iMNИ?.dNyNOyN+XV˱N+}XʝN++NgKc>fKcYI1֘%FcfA=uZ98jrPZbV뚱N+kJ2c4c:}i5#K1јјrp~0uZ9X3ёMuZ-NMc>FZ4I{c=3*R-P٣teK9x6 KT9X TLuMCҘjƬO @= Rj@Mc^G&Z^DIꮺ:Xr.:G98#i@}MuAMB7֩rphk}`>6ԗ'H0KT9XPS`} c*G-TҘc>6:U#iX>6ԟ|u:Ue|>6}$mB>6WNku#i@4Mc;MC~5&#i@ݠTP_-թ6m>{D yE ๣\Gzox-{sD GzoxFޛk ٢zTMϦnh}MW~ݽ])Qw +ү~ +nBGoXe~Ooߗ6|yVs+?Oѯ/y,?m,qtttt}f|?0|?0|?0|?0|7L7L7L7L7gqtttt}f|?0|?0|?0|?0|7L7L7L7L7gqtttt}d̸~`~`~`~`>3nnnnnό3̸~`~`~`~`>3nnnnnό3̸~`~`~`~`>2Ktttt}f|?0|?0|?0|?0|7L7L7L7L7gqtttt}f|?0|?0|?0|?0|7L7L7L7L7gqtttt}f|?0|?0|?0|?0|~`~`~`~`>3nnnnnό3̸~`~`~`~`>3nnnnnό3̸~`~`~`~`>3nnnnn|?0|?0|?0|?0|7L7L7L7L7gqtttt}f|?0|?0|?0|?0|7L7L7L7L7gqtttt}f|?0|?0|?0|?0|7L7L7L7L7Gfinnnnό3̸~`~`~`~`>3nnnnnό3̸~`~`~`~`>3nnnnnό#4L7L7L7L7gqtttt}f|?0|?0|?0|?0|7G}yg͖?>?|cOݰ^_oد,h~f_.?j/Ȣ#b͞Ugƚ=3왱fό5{d͞kXgƚ=3Y4{f3c͞kXGf왱fό5{f3cEgƚ=3왱fό5{d͞kXgƚ=3Y4{f3c͞kXGf왱fό5{f3cEgƚ=3왱fό5{d͞kXgƚ=3Y5{f3c͞kXGf왱fό5{f3cEgƚ=3왱fό5{d͞kXgƚ=3Y4{f3c͞kXGf왱fό5{f3cEgƚ=3왱fό5{d͞kXgƚ=3Y4{f3c͞kXGf왱fό5{f3c͞Ugƚ=3왱fό5{d͞kXgƚ=3Y4{f3c͞kXGf왱fό5{f3cEgƚ=3왱fό5{dNkXgƚ=3왱f̢3c͞kXgƚ=2fό5{f3c͞k,=3왱fό5{f#hXgƚ=3왱fO̪3c͞kXgƚ=2fό5{f3c͞k,=3왱fό5{f#hXgƚ=3왱f̢3c͞kXgƚ=27͞kXgƚ=3Y4{f3c͞kXGf왱fό5{f3cEgƚ=3왱fό5{d͞kXgƚ=3Y5{f3c͞kXGf왱fό5{f3cEgƚ=3왱fό5{d͞kXgƚ=3Y4{f3c͞kXGfό5{f3c͞k,=3왱fό5{f#hXgƚ=3왱f̢3c͞kXgƚ=2fό5{f3c͞kĬ=3왱fό5{f#hXgƚ=3왱f̢3c͞kXGf왱fό5{f3cEgƚ=3왱fό5{d͞kXgƚ=3Y4{f3c͞kXGf왱fό5{f3cEgƚ=3왱fό5{d͞kXgƚ=3Y5{f3c͞kXGf왱fό5{f3cEgƚ=3왱fό5{d͞kXgƚ=3Y4{byGf4ߩQWw>4{[zLwP_T|Eſ_hQOȪ3cXg*>2όU|f3c,*>3V񙱊όU|f#Xg*>3V񙱊̢3cXg*>2U|f3cXGfQ񙱊όU|f3cEg*>3V񙱊όU|dXg*>3VYT|f3cX'fU񙱊όU|f3cEg*>3V񙱊όU|dXg*>3VYT|f3cXGfQ񙱊όU|f3c*>3V񙱊όU|f#Xg*>3V񙱊̢3cXg*>2όU|f3c,*>3V񙱊όU|fXg*>3V񙱊̢3cXg*>2όU|f3c,*>3V񙱊όU|f#Xg*>3V񙱊iXg*>3VYT|f3cXGfQ񙱊όU|f3cEg*>3V񙱊όU|dXg*>3VYU|f3cXGfQ񙱊όU|f3cEg*>3V񙱊όU|dXg*>3VYT|f3cXGF?3cXg*>2όU|f3c,*>3V񙱊όU|f#Xg*>3V񙱊̢3cXg*>1όU|f3c,*>3V񙱊όU|f#Xg*>3V񙱊̢3cXg*>2όU|f3c,*>3V񙱊όU|f#Xg*>3V񙱊̢3cXg*>2όU|f3c,*>3V񙱊όU|fXg*>3V񙱊̢3cXg*>2όU|f3cEg*>3V񙱊όU|dXg*>3VYT|f3cXGfQ񙱊όU|f3cEg*>3V񙱊όU|dXg*>3VYT|f3cX'fU񙱊όU|f3cEg*>3V񙱊όU|dXg*>3VYT|f3cXGfQC7TZQv~Rzv//_~˻,EX~ c힑Yv}`Zg}`ZLki>03c>0vv}`ZLkXLki>0{fv=3}`ZLkiki>0<ߵ{fv9yҵv}`Z]Gf}`ZLkykXLki>03c>0vvόv}`Zg}`ZLki>03c>0vv}`ZLkXLki>0{fv=3}`ZLkiELki>0{fv=3}`ZLkiki>0vόv}`Zg}`ZLki>03c>0vv}`ZLkXLki>0{fv=2v}`ZLkXLki>0{fv=3}`ZLkiki>0vόv}`Zg}`ZLki>03c>0vv}`ZLkXLki>0{d>0vv}`ZLkXLki>0{fv=3}`ZLkiki>0vόv}`Zg}`ZLki>03c>0vv}`ZLk,}`ZLki>03c>0vv}`Zg}`ZLki>03c>0vv}`ZLkXLki>0{fv=3}`ZLkiki>0v̢v=3}`ZLkiki>0vόv}`Zg=2?j^ڽ?Ov?o?X2dޟ/Q{/yU{dQjOȪ3c՞Xgƪ=2jόU{f3c՞,=3V홱jόU{f#Xgƪ=3V홱j̢3c՞Xgƪ=2jόU{f3c՞,=3V홱jόU{f#Xgƪ=3V홱j̢3c՞Xgƪ=2jόU{f3c՞Ĭ=3V홱jόU{f#Xgƪ=3V홱j̢3c՞Xgƪ=2jόU{f3c՞,=3V홱jόU{f#Xgƪ=3V홱j̢3c՞Xgƪ=2jόU{f3c՞,=3V홱jόU{f#Xgƪ=3V홱jO̪3c՞Xgƪ=2jόU{f3c՞,=3V홱jόU{f#Xgƪ=3V홱j̢3c՞Xgƪ=2jόU{f3c՞,=3V홱jόU{f#Xgƪ=3V홱j̢3c՞Xgƪ=2jόU{f3c՞Ĭ=3V홱jόU{f#Xgƪ=3V홱j̢3c՞Xgƪ=2jόU{f3c՞,=3V홱jόU{f#Xgƪ=3V홱j̢3c՞Xgƪ=2jόU{f3c՞,=3V홱jόU{f#Xgƪ=3V홱jO̪3c՞Xgƪ=2jόU{f3c՞,=3V홱jόU{f#Xgƪ=3V홱j̢3c՞Xgƪ=2jόU{f3c՞,=3V홱jόU{f#Xgƪ=3V홱j̢3c՞Xgƪ=2jόU{f3c՞Ĭ=3V홱jόU{f#Xgƪ=3V홱j̢3c՞XGfQ홱jόU{f3cEgƪ=3V홱jόU{d՞Xgƪ=3VYT{f3c՞XGfQ홱jόU{f3cEgƪ=3V홱jόU{d՞Xgƪ=3VYU{f3c՞XGfQ홱jόU{f3cEgƪ=3V홱jόU{d՞Xgƪ=3VYT{byHjW<'ñ7ǧnkg{EW˻,Ͼ~q=3~ό{f#Xg=3~̢3cXg=2~ό{f3c,=3~ό{f#Xg=3~̢3cXg=2~ό{f3c,=3~ό{f#Xg=3~O̪3cXg=2~ό{f3c,=3~ό{f#Xg=3~̢3cXg=2~ό{f3c,=3~ό{f#Xg=3~̢3cXg=2~ό{f3cĬ=3~ό{f#Xg=3~̢3cXg=2~ό{f3c,=3~ό{f#Xg=3~̢3cXg=2~ό{f3c,=3~ό{f#Xg=3~O̪3cXg=2~ό{f3c,=3~ό{f#Xg=3~̢3cXg=2~ό{f3c,=3~ό{f#Xg=3~̢3cXg=2~ό{f3cĬ=3~ό{f#Xg=3~̢3cXg=2~ό{f3c,=3~ό{f#Xg=3~̢3cXg=2~ό{f3c,=3~ό{f#Xg=3~O̪3cXg=2~ό{f3c,=3~ό{d=3~ό{d=3~ό{d=3~ό{d=3~ό{d=3~ό{d=3~ό{dXg=3Y{f3cXGf~ό{f3cEg=3~ό{dXg=3Y{byM ߇7԰OZSZ }_{E=~y}/ˢ#b垐Ug=3Vrό{d+Xg=3VY{f3c+XGfQrό{f3cEg=3Vrό{d+Xg=3VY{f3c+XGfQrό{f3cEg=3Vrό{d+Xg=3VY{f3c+XGfQrό{f3cEg=3Vrό{d+Xg=3VY{f3c+XGfQrό{f3cEg=3Vrό{d+Xg=3VY{f3c+XGfQrό{f3c垘Ug=3Vrό{d+Xg=3VY{f3c+XGfQrό{f3|*,=3Vrό{fVY{f3c+<#(Xg=3Vr̢3c+Xg=2rό{f3c+,=3Vrό{f*Xg=3Vr̢3c+Xg=2rό{f3c+,=3Vrό{f#(Xg=3Vr̢3c+Xg=2rό{f3c+,=3Vrό{f#(Xg=3Vr̢3c+Xg=1rό{f3c+,=3Vrό{f#(Xg=3Vr̢3c+Xg=2rό{f3c+,=3Vrό{f#(Xg=3Vr̢3c+Xg=2rό{f[%Ǒlߣ@Rs!y_<~Е(6 +g!y{Xif,ό%$>3gƒXrYrK3c}f,ό%$>3gƒXrIrK3c}f,$ό%>3gƒLXrK3c}f,$ό%>3gƒLXrK3c}f,$ό%>3gƒLXrK3c}f,$ό%>3gƒ̒XrK3c}f,$ό%>3gƒLXrK3c}f,$ό%>3gƒLz e'$)?Ǐ=!իkYn?}oUϾO3"}D&=0#=0#}f,Fr{`$Fr{`$όHnHn큑큑>3#=0#=0gr{`$Fr{`$FrXnHnHn큑큑3c=0#=0#}f,Fr{`$Fr{`$$Fr{`$Fr{`$όHnHn큑큑>3#=0#=0gr{`$Fr{`$FrXnHnHn큑큑3c=0#=0#}f,Fr{`$Fr{`$όHnHnHnHn%όHnHn%όHnHn%όHnHnL }f,Fr{`$Fr{`/}f,Fr{`$Fr{`/}f,Fr{`$Fr{`$όHnHn큑큑>3#=0#=0Gf#=0#=0gr{`$Fr{`$FrXnHnHn큑큑3c=0#=0#}f,Fr{`$Fr{`$όHnHn큑큑>3#=0#=0gr{`$Fr{`$FrLr{`$Fr{`$FrXnHnHn큑큑3c=0#=0#}f,Fr{`$Fr{`$όHnHn큑큑>3#=0#=0gr{`$Fr{`$FrXnHnHnInHnHn큑큑3c=0#=0gr{`$Fr{`$FrXnHnHn큑큑3c=0#=0#}f,Fr{`$Fr{`$όHnHn큑큑>2큑큑>3#=0#=0gr{`$Fr{`$FrXnHnHn#}Jnߏw}3ߒwV=q,Uycp_u]bs>ve 1#bY}BfY}f,όe>3GfgƲXV3cY}d&Y}f,όe>3GfgƲXV3cY}d&Y}f,όe>3GfgƲXV3cY}d&Y}f,όe>3GfgƲXV3cY}d&Y}f,όe>3GfgƲXV3cY}bfY}f,όe>3GfgƲXV3cY}d&Y}f,όe>3GfgƲXV3cY}d&Y}f,όe>3GfgƲXV3cY}d&Y}f,όe>3GfgƲXV3cY}d&Y}f,όe>3GfgƲXV3cY}bfY}f,όe>3GfgƲXV3cY}d&Y}f,όe>3GfgƲXV3cY}d&Y}f,όe>3GfgƲXV3cY}d&Y}f,όe>3GfgƲXV3cY}d&Y}f,όe>3GfgƲXV3cY}bfY}f,όe>3GfgƲXV3cY}d&Y}f,όe>3GfgƲXV3cY}d&Y}f,όe>3GfgƲXV3cY}d&Y}f,όe>3GfgƲXV3cY}d&Y}f,όe>3GfgƲXV3cY}bfY}f,όe>3GfgƲXV3cY}d&Y}f,όe>3GfgƲXV3cY}d&Y}f,όe>3GfgƲXV3cY}d&Y}f,όe>3GfgƲXV3cY}d&Y}f,όe>3GfgƲXV3cY}bfY}f,όe>3GfgƲXV3cY}d&Y}f,όe>2>3gƲXV#33cY}f,όe>2>3gƲXV#33cY}f,όe>2>3gƲXV#33cY}f,όe>2>3gƲXV33cY}f,όe>2>3gƲXV#33cY}f,όe>2>3gƲXV#3&kY}2Y}aEY/o?Էۧ{T- o +zMA_Iߩ>!>3Vg +XA+#3)3c}fό>2>3Vg +XA+#3)3c}fό>2>3Vg +XA+#3)3c}fό>2>3Vg +XA+#3)3c}fό>2>3Vg +XA+#3)3c}fό>1>3Vg +XA+#3)3c}fό>2>3Vg +XA+#3)3c}fό>2>3Vg +XA+#3)3c}fό>2>3Vg +XA+#3)3c}fό>2>3Vg +XA+#3)3c}fό>1>3Vg +XA+#3)3c}fό>2>3Vg +XA+#3)3c}fό>2>3Vg +XA+#3)3c}fό>2>3Vg +XA+#3)3c}fό>2>3Vg +XA+#3)3c}fό>1>3Vg +XA+#3)3c}fό>2>3Vg +XA+#3)3c}fό>2>3Vg +XA+#3)3c}fό>2>3Vg +XA+#3)3c}fό>2>3Vg +XA+#3)3c}fό>1>3Vg +XA+#3)3c}fό>2>3Vg +XA+#3)3c}fό>2>3Vg +XA+#3)3c}fό>2>3Vg +XA+#3)3c}fό>2>3Vg +XA+#3)3c}fό>1>3Vg +XA+#3)3c}fό>2>3Vg +XAIA+3c}fό>3Vg +XAIA+3c}fό>3Vg +XAIA+3c}fό>3Vg +XAIA+3c}fό>3Vg +XAIA+3c}fό>3Vg +XAIA+3c}fό]r> +?2}g~M/:ф&!Q}UT}񬪟?{ϾχIU23cU}fόU>2>3VgƪXU#33cU}fόU>2>3VgƪXU#33cU}fόU>2>3VgƪXU#33cU}fόU>2>3VgƪXU#33cU}fόU>2>3VgƪXU33cU}fόU>2>3VgƪXU#33cU}fόU>2>3VgƪXU#33cU}fόU>2>3VgƪXU#33cU}fόU>2>3VgƪXU#33cU}fόU>2>3VgƪXU33cU}fόU>2>3VgƪXU#33cU}fόU>2>3VgƪXU#33cU}fόU>2>3VgƪXU#33cU}fόU>2>3VgƪXU#33cU}fόU>2>3VgƪXU33cU}fόU>2>3VgƪXU#33cU}fόU>2>3VgƪXU#33cU}fόU>2>3VgƪXU#33cU}fόU>2>3VgƪXU#33cU}fόU>2>3VgƪXUW̪XU3cU}f^#33cU}fόUy̤όU>3Vg敪>2>3VgƪXUWLXU3cU}f^#33cU}fόU>2>3VgƪXU#33cU}fόU>2>3VgƪXU#33cU}fόU>1>3VgƪXU#33cU}fόU>2>3VgƪXUIU3cU}fόUT>3VgƪXUIU3cU}fόUT>3VgƪXUIU3cU}fόUT>3VgƪXUIU3cU}fόUU>3VgƪXUIU3cU}fόUT>3VgƪXUIU3cU}fόUT]sC?2U}ZzV)9 };}Ҩ}߮2}>?gz5|ןߌ<[mg"RwVO[ZU1H`uUYӪ/L [)U [ŀ!C^siky_21="\uu?޷Éy`.߅`1]U; UDnP=w7@c^05~GK+nsKaZ[]ksV\Wy_q=muz 1=euZqn MuZz]pVqvevs~?]uupN\]c^N\]kZt\i:qv\if}]סǼNN.Oi9pv\a ӳ` ZgNϮH:ӳNkrHNN~Kӳ`Zh9ZcMbzUh[y;h{y=h{y9hU(i=NϽA:c ӳ`yi=S՛ӣ<]9{1/;ӪNn[uZupiNV9q^=cuz멄|cn1=euZuqVj`nuZupiz$q>=cu뉌ӧǼN:}{ˆV Ӫ[pV'эUup K봆[̹::MCw-l=0= HA)fE-ҵ#]]HW-<#ӫ`= :mW@GjW ;:X5Z +*H][΢1wP4殃zvtSZ +?8P #++ӖC/H +غ%!~+Pw#+P#+`^{`nPH +j::X \]k::Fup[PԮFqv\#+NPi1ӮВ~?] H +(H +zZ\]guupQԮi]r][ۀ;mWGjW@ݠZ +:mW,GE=pꑆ+Q4\z +xυpꑆ+Q4\z +iHtH +xF7`p +PܻJݲ +wW/Pmb+f1裿mtɏkc_Vpv :}߮2}WdwO;gD#2uFQg~`ԙuό;3?0:gƝQg~`ԙuF33?0:qg~`ԙuFQg̸3?0:3fܙuFQg~`ԙ?3:_Qg̸3?0:suF33?0ՙuԙuF:qg~`ԙu:gƝQg~`ԙ3?0̟wFQg~`ԙuό;3?0:gƝQg~`ԙuF33?0:qg~`ԙuFQg̸3?0:3fܙuFQg~`ԙ?2Sg~`ԙuFQg̸3?0:3fܙuFQg~`ԙ?3:3?0̟wFQg~`ԙuό;3?0:gƝQg~`ԙuF33?0:qg~`ԙuFQg̸3?0:3d3?0:qg~`ԙuFQg̸3?0:3fܙuFQg~`ԙ?3:3?0̟wFQg~`ԙuό;3?0:gƝQg~`ԙuF33?0:qg~`ԙuFQgLQg~`ԙuF33?0:qg~`ԙuFQg̸3?0:3fܙuFQg~`ԙ?3:3?0̟wFQg~`ԙuό;3?0:gƝQg~`ԙuF33?0::3?0:gƝQg~`ԙuF33?0:gƝQg~`ԙuF33?0:qg~`ԙuFQg̸3?0:3fܙuFQg~`ԙ?3:3?0̟wFQg~`ԙuԙuFQg~`ԙ?3:3?0̟wFQg~`ԙuό;3?0:gƝ#ݙ?%5Z?~qr~tdo<Կ'?׷*@=%?ImZ etH1!W{!5~OHtf@z#{Z y{}n 鳝 2VQnfq}!Q8FLdz̵݁zZ1O1φLjL>{߉L<35斋"s1_=kdϱߊL}7dدFc^Q峍Sb-33*sn` 2=m *sfnQ=2Wˉ8^a3c>TP yV~0QRQlT6*\[J\[ڰQ% }dN5 Pk[8zߨƵTjSk+CƵ>R̼*` ?Sk+û;ո2tո2۵Sk+ûզ2߃j\[M5 Tv?Bb~<1A5 ŁL:Ƶj\[޽ߓj\[T7J5 Rk+[(ո2qRk+CVz9Ƶoj\[\B歭 UsƵQܿmϏ_wpmexkG5 j6^ݸ+wqxe6 oKWv+n}>^k+[{=qmexkG5 2-3'`Ƶ^ǵݰTũƵk+CƵ᭽ո22t7qmexkG5 oƵ_ǵ᭽ո2ԣ:PwǵXdu2ףVkQk+[{=qmex +25ڄPk+CVڙ> > {> o qmexfG5 E> oM qmexD5Wq''T:N-u@}8zT:Nv}qq5qqKu. dU2f\{=q'IT:NQuR{=q'^j\ ,:NQ8e}qqKu@MUuR5q'Pwu@}븏8e;qqKw@|>:j\ ,ۋXFmb!'q-q{}1+!]9qw ʅT:N`ոX[qK}T:Nn8uq'лwq'P::N`ոX:uR{=q'PXjOLQ8/q'Ўkq'^juzT:NpqKuR{=q'w%T8ڽ>:qEfHpqKuR{=q'В.q'\/:N`ոXq'tjb^j\ ,肚q53pqKuR{=q'P8qj\ ,ףqXjG5jX q't;Kdz:NP8]pqݹju><- }\ q'P::N`y/uR{=q'^j\ t 0ոXv_P8>zq{}\ ԷXP81?;}\ sH8WǝC¹>q'^j\ q'P3q'vIdq'Pb?iXq'PfuZ{=q'^E|> j\[Qk+ڹ1Ĵ3|aո22T}\[NW!%ףV> 53pεzTʰ^j\[253ƵaA5 qV6Sk+Z{=qme>ո2 42=qmeX;> UqVƵaRqme*ʰP;|ǵfʰ7㆕zT㆕zT㆕zT㆕zT㆕zX^jܰ2b7 C|>nX: sm:I +C]jܰ2^jܰ2㆕{ku>p7 ף7 ף7 ף7 w:X{=qP{=q8q8 q+Î}rwCZ(K/2wY \+NXGtoFՆKo]1bkk}1}o/ULgچO锁*o'o)"w OUt@ tVU8 "O < #vjH IWptԍ:"oG C2 ,puZfF:XI2#+F-#+P{KJ4 iFGѤjFG-07GQ3bj:bX#r΀5EXx8^\#r$#r'N +݆ `#rne09QSt89;9֑7jGNǵu:r/ѱm:'1/^1]Xm9vvQ}t=x,ͱk~^c:ČPƼ؎tDݢv9qs15mt4W;rgz9Qt>^cާX}\ȉA:9Qӑw7#'xkڑҭE1w0Έx؈ suDNU :5wEQNs}ҧvۋ9;BX6c8r03UDQo1׳ͱi]섹>cT<&uu9w0WGD}7^|q8g.17Վ8뮈ש19^jGAs#'a|BQs#':ɘjGNqu:r⮯ Sc~n-LG!Uz>-ڑ-tD:9XhvD==4W- <PgQr\:x0Bػ 0P{[QoUb: +ipY$0<{mƹ7ͱ9Q3쀹:"'0xѪb: +ahȉ֫\s9QDÎȉͱ9q>ȉvtmD!촇C؈GFĽot>2"'k=순'Hc#rV:"OQJ{9ѩJ4:rqiv1}ELG! 1ЇTlW:OxB +1w%tN>Ksi\[?w\E{9ivDwڑ{/f`:r}t8HLG!1mIFĹ촇g29qo05dDN\4ש1׶IFtN2"'us9ѿBNtBf23"'>1?K{9>&tB]Sc~鏮ӑ#'IFs#'tNґww:'ȉ_uvȉ\ȉO9IGNaGDmiȉ>dDNԘ{)uju9֑dDNhdDNF{9qtmb]XdDNJ$#rWÎȉkYpuDivD[:𼴇wO C$#r:'O '1?M{9QOtN2"'s9% E{9Qw^:'9}۲tNґrtNґO`p9IGNsx)]N{9QeIFvntN2"':#rb_7ÎȉzЦ9vvzs9QIFDuq-4F.tN2"'3ͱ9QtN2"'ꁕIFD>؈"G$#r>/:'9?} Ccq9Ɉ9ɈUtαVIFNՅo;rk~ +:'ȉiE$#rb=]XG̴o:'[gZ ȉw#rb:')NsFIFDoS:sgx;C$#rx]EO{ӿs9qvJbʊGu9qՓwU9dDN;G]̱9lȉw#ry]r0FDU&:'ۧv=X4I}sOĻ9ɈX7|?"'z296"'gs9uzbڷ9Q8FD=dDN'DNt&M$q\tN򉜸]pcW:'DN7w#r&α+ֿI>TiGDݝi7:'ODv|]'r]dDNJ$ȉ"'|?|K+/|"'.|x]iC$ȉsOăOc[]'rv0>#bw-9OuDN'|"'6|8]'r6!0džO#GI="'Ꮾ3"'n|?|As9otN򉜸6:'DN91v0W?J$Ɗ?>c9:J8w?%W4Zf|k'>ɩ?gm8O/;?#wnhᨙq-[+{xOfg=&c+2슌(""ήȈ+2슌("#ʮ+2슌("#ʮȈ+"2eW +`]+QvEf]+Qv0ʮFqv0ʮF(eWd(eW +`]gW +`]+QvEf]+Qv0ʮFqv0ʮF(eWd(eW +`]gW +`]+QvEf]+Qv0ʮF+Qv0ʮF("3ήF(eW8eW +`]+2 +`]+Qv0ʮȌ+Qv0ʮF("3ήF(eW8eW +`]+2 +`]+Qv0ʮȌ+Qv0ʮF("3ήF(eWL(eW +`]gW +`]+QvEf]+Qv0ʮFqv0ʮF(eWd(eW +`]gW +`]+QvEf]+Qv0ʮFqv0ʮF("3ήF(eW8eW +`]+"3eW +`]+QvEf'eW +`]+2 +`]+Qv0ʮȌ+Qv0ʮF("3ήF(eW8eW +`]+2 +`]+Qv0ʮȌ+Qv0ʮF("3ήF(eW8eW +`]+"3eW +`]+QvEf~+Qv0ʮF("3ήF(eW8eW +`]+2 +`]+Qv0ʮȌ+Qv0ʮF("3ήF(eW8eW +`]+2 +`]+Qv0ʮȌ+Qv0ʮF("2Sv0ʮF(eWdfUv0ʮF(eWd(eW +`]gW +`]+QvEf]+Qv0ʮFqv0ʮF(eWd(eW +`]gW +`]+QvEf]+Qv0ʮFqv0ʮF(eWDfʮF(eW̬ʮF(eW8eW +`]+2 +`]+Qv0ʮȌ+"ή__D_\'=ϭ]4_12+>k42} ~M6?Gm_l~>׷*?͆g?,2"CFd~!#2?dD懌2"CFd~Ȉ!"!36?#02?#02?d`d~F`d~F2c02?#02?#Cfl~F`d~F`d~Ȍ!36?#02?#02?Df2?#02?#02?d`d~F`d~F2c02?#02?#Cfl~F`d~F`d~Ȍ!36?#02?#02?d`d~F`d~FL`d~F`d~F2c02?#02?#Cfl~F`d~F`d~Ȍ!36?#02?#Cfl~F`d~F`d~Ȍ!3!36?#02?#02?d`d~F`d~F2c02?#02?#Cfl~F`d~F`d~d~F`d~F`d~Ȍd~F`d~F`d~Ȍ!36?#02?#02?d`d~F`d~F2c02?#02?#Cd&02?#02?#Cfl~F`d~F`d~&02?#02?#Cfl~F`d~F`d~Ȍ!36?#02?#02?d`d~F`d~F"32c02?#02?#Cf62c02?#02?#Cfl~z+6OoM̿g~u ?}m1?0EFkfL-U6Eg?8""bSDDlHdM)""6EDĦL""bSDDlHlȌM)"36EdƦL"2cSDfldȌM)"36EdƦL"2cSDfldȌM)"36EdƦL"2cSDfldȌM)"36EdƦL"2cSDfldȌM)"36EdƦL"2cSDflHlȌM)"36EdƦL"2cSDfldȌM)"36EdƦL"2cSDfldȌM)"36EdƦL"2cSDfldȌM)"36EdƦL"2cSDfldȌM)"36EdƦL"2cSDflHlȌM)"36EdƦL"2cSDfldȌM)"36EdƦL"2cSDfldȌM)"36EdƦL"2cSDfldȌM)"36EdƦL"2cSDd&SDflȌM)"36EDf2EdƦ"2cSDbfSDflȌM)"36EDf2EdƦ"2cSDd6"2cSDflȌM)"2)"36EdƦ""3"2cSDflȌM)"2)"36EdƦ""3"2cSDflȌM)"2)"36EdƦ""3"2cSDflȌM)"2)"36EdƦ"3"2cSDflȌM)"2)"36EdƦ""3"2cSDflȌM)"2)"36EdƦ""3"2cSDflȌM)"2)"36EdƦ""3"2cSDflȌM)"2)"36EdƦ""3"2cSDflȌM)"2)"36EdƦ"3"2cSDflȌM)"2)"36EdƦ""3"2cSDflȌM)"2)"36EdƦ""3"2cSDflȌM)"2)"36EdƦ""3"2cSDflȌM)"2)"36EdƦ""3"2cSDflȌM)"2)"36EdƦ"3"2cSDflȌM)"2)"36EdƦ""3"2cSDflȌM)"2)"36EdƦ""3" Q%X)7M)Y:18D mhCE|&0G0G?6R\h2T;}oUǬgW)Z7 w!sUjpOWȈp* 5E۶lUqy 9CBZ8u?WDjzt<*5ܺUDju>2p~[J w{~H ]"Rk +WiOǶ? iOGm7T؎objGUFN75cjOV g{:5^\O/^|/MtlW=RmOGScvujkOvkVm:{/^wko=u\ko:u]js8Ǿ83UȗubO9q5?'ճ:5mNyM/ͱƼ"35}疙1bTԘ4WuiVۏzZԘ:5sywU4WbT:54Wy4WW=uu:UNUVUY6Ԙ<:؟̱tn톹ڞJש1sԘg9֞c>bxA:oG=kOQEㅹڞn']QhYX{:.v\mODZ}4:xMT<sQ +s=G}7^|--9Vu8Zu8뮈ש1^|֎X235vxu'^|'α]QUpt]_^~u"Uz1j%tG:UzziV<[DHש:xSu\墹Zu'j6_N:hڞNV5 \wՇjs;ǹefj}ש1Ms=gͰj{:*+^|BsilmtstK=l{:ͱtsH{:ΫvtUwzNvM4QGqF#F{tIs=糭tDҞ+L{t:Xbcto/N/b߮myC`IqYLoT1MLyD`^~=VSc޺ScHLy L=t}TG${:?ԘJ${\vUVժK霤żU:569^utNWle-ԞujDs&3*^)35|i[b>=O2Sc~ׇIO]L=u^gQuJM$G;=Qu^ Qu^qj~k%UĊS.8hUa/>蜤{m:5^xs8qU/ks]s`6֞*4ǪM$.X霤+ak}- αwiV.ש1_K{أ`=8ǪޭߦZuI<=n1M{أ]OtNrTsvwIԘzԘK$Gz[֓I'mOmv|ļu=[e:'9vntNrtϷ(=u==A=ꁋIVIv av\ ͱ{B$g|G=jDsoO$6z=tNrvϷ׹Ms=߶I|7g|Ccq99z'[uۻ8Ǻ[U:'9[Ho/s=*l?buѷ9Mm8_Io?㿽FIIuS5:'9S2yIusn6|~ztNr^7ᒘ{\?UOv4Wуs{;?}{mͳtNr-7뿺{t:c:lltNruwXzJs=9I{:6u†ѪCcD퇮3<;oOR8Gx:'ww&M$tNҞ=K=koc=,9I{:p9I{:> Osst,u st,QcIӱ<5i]{:n i9I{:RtNҞ9I{:wӱio9t,>F|?<9tC$LJxx:jdx:OǾ騝0ͱߓI]t'>96<z9tmI6i;<Aslx:@9tԍIz]t/sfڇRoxt8c?0L]F_-'?sm8Oh_~Vdc7~s`Npԅ{09b_?ߦϿ]hO=&'..QEfw/Q0W0ʼȌC/Q0ʽF/RAʾ + H9 _  30RAJ H99 %a( , 0RA + H9 ebP T s1R0AJ H9 cx A2rBA H)$ d A2RRAДA2RZA Hy90 %f AB3rjA H)8 %g A3RzA)@ %h C4RA H9)H 'i( A4R@ Hy)P %jH AB5RA H9X %kh A524kx A6R@ H)d l A6RA HY9l m A7rA H)t n A7RA)| o 8RA H9 pA8rA HY) qdh Hy) %rHAB9R*A H9 %shA9r:A H) %tAB:RJA9) %u:RZA Hy) 'vAB;Rj@ H) %wA;RzA H<RA H) xA<R@ HY)̃ y8A=RA H9ԃ zXA=rA H)܃ {xA>RA) |>RA HY) }A?RGAB?RAȹ) %?RA H) 'BB@R +@!H9 ) %(B@RA!Hy 9 %H BBAr*A!H ) %h BAR:A ) %)$ BBrRA +!HY!), BCRbA ș!)4 C2sr$Drd4OL?ޯeLv'4#[?'KI3[sF\ژCSŶnkةOl[V?~}#<p$,uGnF_1}D=|ѷ*5,]%-65O?1ܟ}];޿όX=eŬg|nTE endstream endobj 246 0 obj @@ -3623,7 +3551,7 @@ endobj /MediaBox [ 0 0 595.275591 841.889764 ] /Contents 245 0 R /Resources 4 0 R -/Annots [ 247 0 R 248 0 R 249 0 R 250 0 R 251 0 R 252 0 R 253 0 R 254 0 R 255 0 R 256 0 R 257 0 R 258 0 R 259 0 R 260 0 R 261 0 R 262 0 R 263 0 R 264 0 R 265 0 R 266 0 R 267 0 R 268 0 R 269 0 R 270 0 R 271 0 R 272 0 R 273 0 R 274 0 R 275 0 R 276 0 R 277 0 R 278 0 R 279 0 R 280 0 R 281 0 R 282 0 R 283 0 R 284 0 R 285 0 R 286 0 R 287 0 R 288 0 R 289 0 R 290 0 R 291 0 R 292 0 R 293 0 R 294 0 R 295 0 R 296 0 R 297 0 R 298 0 R 299 0 R 300 0 R 301 0 R 302 0 R 303 0 R 304 0 R 305 0 R 306 0 R 307 0 R 308 0 R 309 0 R 310 0 R 311 0 R 312 0 R 313 0 R 314 0 R 315 0 R 316 0 R 317 0 R 318 0 R 319 0 R 320 0 R 321 0 R 322 0 R 323 0 R 324 0 R 325 0 R 326 0 R 327 0 R 328 0 R 329 0 R 330 0 R 331 0 R 332 0 R 333 0 R 334 0 R 335 0 R 336 0 R 337 0 R 338 0 R 339 0 R 340 0 R 341 0 R 342 0 R ] +/Annots [ 247 0 R 248 0 R 249 0 R 250 0 R 251 0 R 252 0 R 253 0 R 254 0 R 255 0 R 256 0 R 257 0 R 258 0 R 259 0 R 260 0 R 261 0 R 262 0 R 263 0 R 264 0 R 265 0 R 266 0 R 267 0 R 268 0 R 269 0 R 270 0 R 271 0 R 272 0 R 273 0 R 274 0 R 275 0 R 276 0 R 277 0 R 278 0 R 279 0 R 280 0 R 281 0 R 282 0 R 283 0 R 284 0 R 285 0 R 286 0 R 287 0 R 288 0 R 289 0 R 290 0 R 291 0 R 292 0 R 293 0 R 294 0 R 295 0 R 296 0 R 297 0 R 298 0 R 299 0 R 300 0 R 301 0 R 302 0 R 303 0 R 304 0 R 305 0 R 306 0 R 307 0 R 308 0 R 309 0 R 310 0 R 311 0 R 312 0 R 313 0 R 314 0 R 315 0 R 316 0 R 317 0 R 318 0 R 319 0 R 320 0 R 321 0 R 322 0 R 323 0 R 324 0 R 325 0 R 326 0 R 327 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> @@ -3632,22 +3560,22 @@ endobj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 771.023622 555.889134 750.353622 ] +/Rect [ 63.386457 771.023622 555.889134 750.353622 ] /BS << /W 0 >> -/Dest (CahierDesCharges/:realisation) +/Dest (.:resume-des-epreuves) >> endobj 248 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 765.503622 77.060285 751.103622 ] +/Rect [ 63.386457 765.503622 99.373273 751.103622 ] /BS << /W 0 >> -/Dest (CahierDesCharges/:realisation) +/Dest (.:resume-des-epreuves) >> endobj 249 0 obj @@ -3658,7 +3586,7 @@ endobj /BS << /W 0 >> -/Dest (CahierDesCharges/:realisation) +/Dest (.:resume-des-epreuves) >> endobj 250 0 obj @@ -3669,18 +3597,18 @@ endobj /BS << /W 0 >> -/Dest (CahierDesCharges/:cas-dutilisation) +/Dest (.:notes-de-code) >> endobj 251 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 744.833622 77.060285 730.433622 ] +/Rect [ 55.386457 744.833622 82.786359 730.433622 ] /BS << /W 0 >> -/Dest (CahierDesCharges/:cas-dutilisation) +/Dest (.:notes-de-code) >> endobj 252 0 obj @@ -3691,29 +3619,29 @@ endobj /BS << /W 0 >> -/Dest (CahierDesCharges/:cas-dutilisation) +/Dest (.:notes-de-code) >> endobj 253 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 729.683622 555.889134 709.013622 ] +/Rect [ 63.386457 729.683622 555.889134 709.013622 ] /BS << /W 0 >> -/Dest (CahierDesCharges/:difficultes-techniques) +/Dest (.:vues) >> endobj 254 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 724.163622 77.060285 709.763622 ] +/Rect [ 63.386457 724.163622 99.373273 709.763622 ] /BS << /W 0 >> -/Dest (CahierDesCharges/:difficultes-techniques) +/Dest (.:vues) >> endobj 255 0 obj @@ -3724,131 +3652,98 @@ endobj /BS << /W 0 >> -/Dest (CahierDesCharges/:difficultes-techniques) +/Dest (.:vues) >> endobj 256 0 obj << /Type /Annot /Subtype /Link -/Rect [ 47.386457 709.013622 555.889134 688.343622 ] +/Rect [ 71.386457 709.013622 555.889134 688.343622 ] /BS << /W 0 >> -/Dest (ManuelUtilisateur/:manuel-utilisateur) +/Dest (.:settingscs) >> endobj 257 0 obj << /Type /Annot /Subtype /Link -/Rect [ 47.386457 703.493622 63.334211 689.093622 ] -/BS << -/W 0 ->> -/Dest (ManuelUtilisateur/:manuel-utilisateur) ->> -endobj -258 0 obj -<< -/Type /Annot -/Subtype /Link /Rect [ 538.710911 703.493622 555.889134 689.093622 ] /BS << /W 0 >> -/Dest (ManuelUtilisateur/:manuel-utilisateur) +/Dest (.:settingscs) +>> +endobj +258 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 71.386457 688.343622 555.889134 667.673622 ] +/BS << +/W 0 +>> +/Dest (.:form1cs) >> endobj 259 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 688.343622 555.889134 667.673622 ] -/BS << -/W 0 ->> -/Dest (ManuelUtilisateur/:installation) ->> -endobj -260 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 682.823622 77.060285 668.423622 ] -/BS << -/W 0 ->> -/Dest (ManuelUtilisateur/:installation) ->> -endobj -261 0 obj -<< -/Type /Annot -/Subtype /Link /Rect [ 538.710911 682.823622 555.889134 668.423622 ] /BS << /W 0 >> -/Dest (ManuelUtilisateur/:installation) +/Dest (.:form1cs) +>> +endobj +260 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 63.386457 667.673622 555.889134 647.003622 ] +/BS << +/W 0 +>> +/Dest (.:controleurs) +>> +endobj +261 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 63.386457 662.153622 99.373273 647.753622 ] +/BS << +/W 0 +>> +/Dest (.:controleurs) >> endobj 262 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 667.673622 555.889134 647.003622 ] -/BS << -/W 0 ->> -/Dest (ManuelUtilisateur/:a-quoi-sert-lapp) ->> -endobj -263 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 662.153622 77.060285 647.753622 ] -/BS << -/W 0 ->> -/Dest (ManuelUtilisateur/:a-quoi-sert-lapp) ->> -endobj -264 0 obj -<< -/Type /Annot -/Subtype /Link /Rect [ 538.710911 662.153622 555.889134 647.753622 ] /BS << /W 0 >> -/Dest (ManuelUtilisateur/:a-quoi-sert-lapp) +/Dest (.:controleurs) >> endobj -265 0 obj +263 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 647.003622 555.889134 626.333622 ] +/Rect [ 71.386457 647.003622 555.889134 626.333622 ] /BS << /W 0 >> -/Dest (ManuelUtilisateur/:utilisation-simple) +/Dest (.:configurationtoolcs) >> endobj -266 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 641.483622 77.060285 627.083622 ] -/BS << -/W 0 ->> -/Dest (ManuelUtilisateur/:utilisation-simple) ->> -endobj -267 0 obj +264 0 obj << /Type /Annot /Subtype /Link @@ -3856,32 +3751,21 @@ endobj /BS << /W 0 >> -/Dest (ManuelUtilisateur/:utilisation-simple) +/Dest (.:configurationtoolcs) >> endobj -268 0 obj +265 0 obj << /Type /Annot /Subtype /Link -/Rect [ 63.386457 626.333622 555.889134 605.663622 ] +/Rect [ 71.386457 626.333622 555.889134 605.663622 ] /BS << /W 0 >> -/Dest (ManuelUtilisateur/:recuperer-le-lien-vers-le-flux) +/Dest (.:datawrappercs) >> endobj -269 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 63.386457 620.813622 93.647199 606.413622 ] -/BS << -/W 0 ->> -/Dest (ManuelUtilisateur/:recuperer-le-lien-vers-le-flux) ->> -endobj -270 0 obj +266 0 obj << /Type /Annot /Subtype /Link @@ -3889,32 +3773,21 @@ endobj /BS << /W 0 >> -/Dest (ManuelUtilisateur/:recuperer-le-lien-vers-le-flux) +/Dest (.:datawrappercs) >> endobj -271 0 obj +267 0 obj << /Type /Annot /Subtype /Link -/Rect [ 63.386457 605.663622 555.889134 584.993622 ] +/Rect [ 71.386457 605.663622 555.889134 584.993622 ] /BS << /W 0 >> -/Dest (ManuelUtilisateur/:boutons) +/Dest (.:readercs) >> endobj -272 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 63.386457 600.143622 93.647199 585.743622 ] -/BS << -/W 0 ->> -/Dest (ManuelUtilisateur/:boutons) ->> -endobj -273 0 obj +268 0 obj << /Type /Annot /Subtype /Link @@ -3922,32 +3795,21 @@ endobj /BS << /W 0 >> -/Dest (ManuelUtilisateur/:boutons) +/Dest (.:readercs) >> endobj -274 0 obj +269 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 584.993622 555.889134 564.323622 ] +/Rect [ 71.386457 584.993622 555.889134 564.323622 ] /BS << /W 0 >> -/Dest (ManuelUtilisateur/:calibration) +/Dest (.:zonecs) >> endobj -275 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 579.473622 77.060285 565.073622 ] -/BS << -/W 0 ->> -/Dest (ManuelUtilisateur/:calibration) ->> -endobj -276 0 obj +270 0 obj << /Type /Annot /Subtype /Link @@ -3955,10 +3817,10 @@ endobj /BS << /W 0 >> -/Dest (ManuelUtilisateur/:calibration) +/Dest (.:zonecs) >> endobj -277 0 obj +271 0 obj << /Type /Annot /Subtype /Link @@ -3966,21 +3828,21 @@ endobj /BS << /W 0 >> -/Dest (ManuelUtilisateur/:pourquoi-calibrer-lapplication-et-creer-un-preset) +/Dest (.:modeles) >> endobj -278 0 obj +272 0 obj << /Type /Annot /Subtype /Link -/Rect [ 63.386457 558.803622 93.647199 544.403622 ] +/Rect [ 63.386457 558.803622 99.373273 544.403622 ] /BS << /W 0 >> -/Dest (ManuelUtilisateur/:pourquoi-calibrer-lapplication-et-creer-un-preset) +/Dest (.:modeles) >> endobj -279 0 obj +273 0 obj << /Type /Annot /Subtype /Link @@ -3988,32 +3850,21 @@ endobj /BS << /W 0 >> -/Dest (ManuelUtilisateur/:pourquoi-calibrer-lapplication-et-creer-un-preset) +/Dest (.:modeles) >> endobj -280 0 obj +274 0 obj << /Type /Annot /Subtype /Link -/Rect [ 63.386457 543.653622 555.889134 522.983622 ] +/Rect [ 71.386457 543.653622 555.889134 522.983622 ] /BS << /W 0 >> -/Dest (ManuelUtilisateur/:comment-creer-son-preset) +/Dest (.:driverdrswindowcs) >> endobj -281 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 63.386457 538.133622 93.647199 523.733622 ] -/BS << -/W 0 ->> -/Dest (ManuelUtilisateur/:comment-creer-son-preset) ->> -endobj -282 0 obj +275 0 obj << /Type /Annot /Subtype /Link @@ -4021,10 +3872,10 @@ endobj /BS << /W 0 >> -/Dest (ManuelUtilisateur/:comment-creer-son-preset) +/Dest (.:driverdrswindowcs) >> endobj -283 0 obj +276 0 obj << /Type /Annot /Subtype /Link @@ -4032,10 +3883,10 @@ endobj /BS << /W 0 >> -/Dest (ManuelUtilisateur/:creation-des-zones-et-des-windows) +/Dest (.:drivergaptoleaderwindowcs) >> endobj -284 0 obj +277 0 obj << /Type /Annot /Subtype /Link @@ -4043,10 +3894,10 @@ endobj /BS << /W 0 >> -/Dest (ManuelUtilisateur/:creation-des-zones-et-des-windows) +/Dest (.:drivergaptoleaderwindowcs) >> endobj -285 0 obj +278 0 obj << /Type /Annot /Subtype /Link @@ -4054,10 +3905,10 @@ endobj /BS << /W 0 >> -/Dest (ManuelUtilisateur/:ajout-du-nom-des-pilotes) +/Dest (.:driverlaptimewindowcs) >> endobj -286 0 obj +279 0 obj << /Type /Annot /Subtype /Link @@ -4065,10 +3916,10 @@ endobj /BS << /W 0 >> -/Dest (ManuelUtilisateur/:ajout-du-nom-des-pilotes) +/Dest (.:driverlaptimewindowcs) >> endobj -287 0 obj +280 0 obj << /Type /Annot /Subtype /Link @@ -4076,1480 +3927,252 @@ endobj /BS << /W 0 >> -/Dest (ManuelUtilisateur/:sauvegarder-le-nouveau-preset) +/Dest (.:drivernamewindowcs) +>> +endobj +281 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 476.123622 555.889134 461.723622 ] +/BS << +/W 0 +>> +/Dest (.:drivernamewindowcs) +>> +endobj +282 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 71.386457 460.973622 555.889134 440.303622 ] +/BS << +/W 0 +>> +/Dest (.:driverpositionwindowcs) +>> +endobj +283 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 455.453622 555.889134 441.053622 ] +/BS << +/W 0 +>> +/Dest (.:driverpositionwindowcs) +>> +endobj +284 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 71.386457 440.303622 555.889134 419.633622 ] +/BS << +/W 0 +>> +/Dest (.:driversectorwindowcs) +>> +endobj +285 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 434.783622 555.889134 420.383622 ] +/BS << +/W 0 +>> +/Dest (.:driversectorwindowcs) +>> +endobj +286 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 71.386457 419.633622 555.889134 398.963622 ] +/BS << +/W 0 +>> +/Dest (.:drivertyreswindowcs) +>> +endobj +287 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 414.113622 555.889134 399.713622 ] +/BS << +/W 0 +>> +/Dest (.:drivertyreswindowcs) >> endobj 288 0 obj << /Type /Annot /Subtype /Link -/Rect [ 538.710911 476.123622 555.889134 461.723622 ] +/Rect [ 71.386457 398.963622 555.889134 378.293622 ] /BS << /W 0 >> -/Dest (ManuelUtilisateur/:sauvegarder-le-nouveau-preset) +/Dest (.:f1tvemulatorcs) >> endobj 289 0 obj << /Type /Annot /Subtype /Link -/Rect [ 63.386457 460.973622 555.889134 440.303622 ] +/Rect [ 538.710911 393.443622 555.889134 379.043622 ] /BS << /W 0 >> -/Dest (ManuelUtilisateur/:load-un-preset-existant) +/Dest (.:f1tvemulatorcs) >> endobj 290 0 obj << /Type /Annot /Subtype /Link -/Rect [ 63.386457 455.453622 93.647199 441.053622 ] +/Rect [ 71.386457 378.293622 555.889134 357.623622 ] /BS << /W 0 >> -/Dest (ManuelUtilisateur/:load-un-preset-existant) +/Dest (.:ocrimagecs) >> endobj 291 0 obj << /Type /Annot /Subtype /Link -/Rect [ 538.710911 455.453622 555.889134 441.053622 ] +/Rect [ 538.710911 372.773622 555.889134 358.373622 ] /BS << /W 0 >> -/Dest (ManuelUtilisateur/:load-un-preset-existant) +/Dest (.:ocrimagecs) >> endobj 292 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 440.303622 555.889134 419.633622 ] +/Rect [ 71.386457 357.623622 555.889134 336.953622 ] /BS << /W 0 >> -/Dest (ManuelUtilisateur/:comprendre-les-donnees) +/Dest (.:sqlitestoragecs) >> endobj 293 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 434.783622 77.060285 420.383622 ] +/Rect [ 538.710911 352.103622 555.889134 337.703622 ] /BS << /W 0 >> -/Dest (ManuelUtilisateur/:comprendre-les-donnees) +/Dest (.:sqlitestoragecs) >> endobj 294 0 obj << /Type /Annot /Subtype /Link -/Rect [ 538.710911 434.783622 555.889134 420.383622 ] +/Rect [ 71.386457 336.953622 555.889134 316.283622 ] /BS << /W 0 >> -/Dest (ManuelUtilisateur/:comprendre-les-donnees) +/Dest (.:windowcs) >> endobj 295 0 obj << /Type /Annot /Subtype /Link -/Rect [ 63.386457 419.633622 555.889134 398.963622 ] +/Rect [ 538.710911 331.433622 555.889134 317.033622 ] /BS << /W 0 >> -/Dest (ManuelUtilisateur/:overtakes) +/Dest (.:windowcs) >> endobj 296 0 obj << /Type /Annot /Subtype /Link -/Rect [ 63.386457 414.113622 93.647199 399.713622 ] +/Rect [ 63.386457 316.283622 555.889134 295.613622 ] /BS << /W 0 >> -/Dest (ManuelUtilisateur/:overtakes) +/Dest (.:structures) >> endobj 297 0 obj << /Type /Annot /Subtype /Link -/Rect [ 538.710911 414.113622 555.889134 399.713622 ] +/Rect [ 63.386457 310.763622 99.373273 296.363622 ] /BS << /W 0 >> -/Dest (ManuelUtilisateur/:overtakes) +/Dest (.:structures) >> endobj 298 0 obj << /Type /Annot /Subtype /Link -/Rect [ 63.386457 398.963622 555.889134 378.293622 ] +/Rect [ 538.710911 310.763622 555.889134 296.363622 ] /BS << /W 0 >> -/Dest (ManuelUtilisateur/:last-five-laps) +/Dest (.:structures) >> endobj 299 0 obj << /Type /Annot /Subtype /Link -/Rect [ 63.386457 393.443622 93.647199 379.043622 ] +/Rect [ 71.386457 295.613622 555.889134 274.943622 ] /BS << /W 0 >> -/Dest (ManuelUtilisateur/:last-five-laps) +/Dest (.:driverdatacs) >> endobj 300 0 obj << /Type /Annot /Subtype /Link -/Rect [ 538.710911 393.443622 555.889134 379.043622 ] +/Rect [ 538.710911 290.093622 555.889134 275.693622 ] /BS << /W 0 >> -/Dest (ManuelUtilisateur/:last-five-laps) +/Dest (.:driverdatacs) >> endobj 301 0 obj << /Type /Annot /Subtype /Link -/Rect [ 63.386457 378.293622 555.889134 357.623622 ] +/Rect [ 55.386457 274.943622 555.889134 254.273622 ] /BS << /W 0 >> -/Dest (ManuelUtilisateur/:battles) +/Dest (.:glossaire) >> endobj 302 0 obj << /Type /Annot /Subtype /Link -/Rect [ 63.386457 372.773622 93.647199 358.373622 ] -/BS << -/W 0 ->> -/Dest (ManuelUtilisateur/:battles) ->> -endobj -303 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 538.710911 372.773622 555.889134 358.373622 ] -/BS << -/W 0 ->> -/Dest (ManuelUtilisateur/:battles) ->> -endobj -304 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 63.386457 357.623622 555.889134 336.953622 ] -/BS << -/W 0 ->> -/Dest (ManuelUtilisateur/:driver-infos) ->> -endobj -305 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 63.386457 352.103622 93.647199 337.703622 ] -/BS << -/W 0 ->> -/Dest (ManuelUtilisateur/:driver-infos) ->> -endobj -306 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 538.710911 352.103622 555.889134 337.703622 ] -/BS << -/W 0 ->> -/Dest (ManuelUtilisateur/:driver-infos) ->> -endobj -307 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 63.386457 336.953622 555.889134 316.283622 ] -/BS << -/W 0 ->> -/Dest (ManuelUtilisateur/:live-ranking) ->> -endobj -308 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 63.386457 331.433622 93.647199 317.033622 ] -/BS << -/W 0 ->> -/Dest (ManuelUtilisateur/:live-ranking) ->> -endobj -309 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 538.710911 331.433622 555.889134 317.033622 ] -/BS << -/W 0 ->> -/Dest (ManuelUtilisateur/:live-ranking) ->> -endobj -310 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 316.283622 555.889134 295.613622 ] -/BS << -/W 0 ->> -/Dest (ManuelUtilisateur/:erreurs) ->> -endobj -311 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 310.763622 77.060285 296.363622 ] -/BS << -/W 0 ->> -/Dest (ManuelUtilisateur/:erreurs) ->> -endobj -312 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 538.710911 310.763622 555.889134 296.363622 ] -/BS << -/W 0 ->> -/Dest (ManuelUtilisateur/:erreurs) ->> -endobj -313 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 47.386457 295.613622 555.889134 274.943622 ] -/BS << -/W 0 ->> -/Dest (jdb/:journal-de-bord) ->> -endobj -314 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 47.386457 290.093622 63.334211 275.693622 ] -/BS << -/W 0 ->> -/Dest (jdb/:journal-de-bord) ->> -endobj -315 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 538.710911 290.093622 555.889134 275.693622 ] -/BS << -/W 0 ->> -/Dest (jdb/:journal-de-bord) ->> -endobj -316 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 274.943622 555.889134 254.273622 ] -/BS << -/W 0 ->> -/Dest (jdb/:mercredi-29-mars-2023) ->> -endobj -317 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 269.423622 77.060285 255.023622 ] -/BS << -/W 0 ->> -/Dest (jdb/:mercredi-29-mars-2023) ->> -endobj -318 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 538.710911 269.423622 555.889134 255.023622 ] -/BS << -/W 0 ->> -/Dest (jdb/:mercredi-29-mars-2023) ->> -endobj -319 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 254.273622 555.889134 233.603622 ] -/BS << -/W 0 ->> -/Dest (jdb/:jeudi-30-mars-2023) ->> -endobj -320 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 248.753622 77.060285 234.353622 ] -/BS << -/W 0 ->> -/Dest (jdb/:jeudi-30-mars-2023) ->> -endobj -321 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 538.710911 248.753622 555.889134 234.353622 ] -/BS << -/W 0 ->> -/Dest (jdb/:jeudi-30-mars-2023) ->> -endobj -322 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 233.603622 555.889134 212.933622 ] -/BS << -/W 0 ->> -/Dest (jdb/:vendredi-31032023) ->> -endobj -323 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 228.083622 77.060285 213.683622 ] -/BS << -/W 0 ->> -/Dest (jdb/:vendredi-31032023) ->> -endobj -324 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 538.710911 228.083622 555.889134 213.683622 ] -/BS << -/W 0 ->> -/Dest (jdb/:vendredi-31032023) ->> -endobj -325 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 212.933622 555.889134 192.263622 ] -/BS << -/W 0 ->> -/Dest (jdb/:lundi-3-avril) ->> -endobj -326 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 207.413622 77.060285 193.013622 ] -/BS << -/W 0 ->> -/Dest (jdb/:lundi-3-avril) ->> -endobj -327 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 538.710911 207.413622 555.889134 193.013622 ] -/BS << -/W 0 ->> -/Dest (jdb/:lundi-3-avril) ->> -endobj -328 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 192.263622 555.889134 171.593622 ] -/BS << -/W 0 ->> -/Dest (jdb/:mardi-4-avril) ->> -endobj -329 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 186.743622 77.060285 172.343622 ] -/BS << -/W 0 ->> -/Dest (jdb/:mardi-4-avril) ->> -endobj -330 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 538.710911 186.743622 555.889134 172.343622 ] -/BS << -/W 0 ->> -/Dest (jdb/:mardi-4-avril) ->> -endobj -331 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 171.593622 555.889134 150.923622 ] -/BS << -/W 0 ->> -/Dest (jdb/:mercredi-5-avril) ->> -endobj -332 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 166.073622 77.060285 151.673622 ] -/BS << -/W 0 ->> -/Dest (jdb/:mercredi-5-avril) ->> -endobj -333 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 538.710911 166.073622 555.889134 151.673622 ] -/BS << -/W 0 ->> -/Dest (jdb/:mercredi-5-avril) ->> -endobj -334 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 150.923622 555.889134 130.253622 ] -/BS << -/W 0 ->> -/Dest (jdb/:jeudi-6-avril) ->> -endobj -335 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 145.403622 77.060285 131.003622 ] -/BS << -/W 0 ->> -/Dest (jdb/:jeudi-6-avril) ->> -endobj -336 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 538.710911 145.403622 555.889134 131.003622 ] -/BS << -/W 0 ->> -/Dest (jdb/:jeudi-6-avril) ->> -endobj -337 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 130.253622 555.889134 109.583622 ] -/BS << -/W 0 ->> -/Dest (jdb/:vendredi-6-avril-2023) ->> -endobj -338 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 124.733622 77.060285 110.333622 ] -/BS << -/W 0 ->> -/Dest (jdb/:vendredi-6-avril-2023) ->> -endobj -339 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 538.710911 124.733622 555.889134 110.333622 ] -/BS << -/W 0 ->> -/Dest (jdb/:vendredi-6-avril-2023) ->> -endobj -340 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 109.583622 555.889134 88.913622 ] -/BS << -/W 0 ->> -/Dest (jdb/:vacances) ->> -endobj -341 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 104.063622 77.060285 89.663622 ] -/BS << -/W 0 ->> -/Dest (jdb/:vacances) ->> -endobj -342 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 538.710911 104.063622 555.889134 89.663622 ] -/BS << -/W 0 ->> -/Dest (jdb/:vacances) ->> -endobj -343 0 obj -<< -/Filter /FlateDecode -/Length 39429 ->> -stream -xMdW^92k@!uOHA=ȬRj%?8wmzdH^[qDoI?z|?O/ixox|yn~>//_O//C?vop}q|y^k^qye\a?ft;!OJ^sK_ҒJɓzfn%븷~o:zdvd~=y>>O%z|Z_ڬߏǽ6Q}Y}]R>y>=Y}Ruyfyƿ^Kx>.5ؚuDZ~[f|f|Js3?^3?_3^ڬ3?O6z/'Vufy}{fzfz=Jsg~К}\ut:k:+}unYg~]O3>*g~X;z\;ٷ~m[ֹM~Fy8v^up[~5sn>e+y\|[7X w^S𵿖:Bθ5_k6Oh5ǥ͸˚f|w93LGqx5ϣ͸yu^_o͸˚u6.kgh3n=96-Vs=ڌ[jnGq>h3rg~\ی[/լ6̯kqWym38_ی9kq5rm3nzm3n}ܮm]kq>ڣZsg^@m՚uwYs6.kg͸˚^ڌ[ jև>feYg^^q=׊fewsp-ym]\[^q=o]\{^q=עfewspzm]\^q{]͸cw9v6=׮fܱ^cw9v6=׮fܱڌ;\^qǞkk3spzm{]͸cw9=spzm{]͸cw9v6=׮fܱڌ;\^qǞkk3spzm{>u;\^qǞkk3sp-!m{/ی;\_w9pi3sp 6=h3sp}k3sp&l3spڌ;\@mƭ/B?ی;KiQyY|{x>qsQ{g~=x3]Zuw֙׮fμv6㮧uw=3w=3w=3?w=3?w=3w=3]͸yyzmƭWj.u^֙bfuw3w3<w=u̯]uw=֙׮fYͥq:ڌ^י׳f|{ ^QV{{{μ6/z\my=m]Yo3zZ}Vu[zQcYcU랃kk3ڌ9v6{]͸랃kk3V랃kk3ڌ9v6{]͸랃kk3spzm\^q=׮>q=׮fmwspzm\^q=׮fmwspzm\^q=׮fmǭq=׮fmwspzm\^q=׮fmwspzm\^q=׮fmq=׮fmwspzm\^q=׮fmwspzm\^q=׮fm׽q=׮fmwspzmq>q>q>qks_ͫq5kk3yzm\/պ<]͸͸uVu^uQuYXUh3y2ڌ9~=n}9qkY͵q>q>q>q<ռwsp}f}rq=m\_wsv{}wspzm\^q=׮f}wspzm\^q=׮Wgܞkk3fc͸Ǟfcspbspڌ{9nfcspzmƽ}ڌ{9=ڌ{9v6{]͸Ǟk׻fspzm=\^q=׮fcsy{܇owǗc^:~^/ў2o}wb \c?7_]We}Q?㿮O?m15,Oߟ_/~}?c'|qrcl`^G_sa}b?]qS?~OjJf/o>HpX_pye\H$x" DB%Hh" DB%Hh" DB%Hx" D6Hx" D67 o @$Hh37 o @$Hh37 o @$Hh37 o @$Hh37 o @$Hh37 o @$Hh37 o @$Hh37 o @$HX37 o @$Hh37 o @$HhsHx" D6Hx" D6Hx" D6Hx" D6Hx" D6Hx" D6Hx" D6Hx" D5Hx" D6Hx" D67 o @$Hh37 o @$Hh37 o @$Hh37 o @$Hh37 o @$Hh37 o @$D7 o @$D7 o @$D7 o @$D7 o @$D7 o @$D7 o @$D7 o @$D7 o @$D7 o @$D7 o @$D7 o @$D7 o @$D7 o @$D7 o @$D7 o @$D7 o @$D7 o @$D7 o @$D7 o @$D7 o @$D7 o @$D7 o @$D7 o @$D7 o @$D7 o @$D7 o @$D7 o @$D7 o @$D7 o @$D7 o @$D7 o @$D7 o @$D7 o @$D7 o @$D7 o @$D7 o @$Dš o.𹑐!$I|v$֟I[U\׏zo$id?M!=rye\@& M@ $ HB& M@ $ HB& M@L$ H7 o@ $ H7 o@ $ H7 o@ $ H7 o@ $ H7 o@ $ H7 o@ $ H7 o@ $ H7 o@ $ H7 o@ $ H7 o@L$ H7 o@ $ H7 o@ $ H7 o@ $ H7 o@ $ H7 o@ $ H7 o@ $ H7 o@ $ H7 o@ $ H7 o@ $ H7 o@L$ H7 o@ $ H7 o@ $ H7 o@ $ H7 o@ $ H7 o@ $ H7 o@ $ H7 o@ $ H7 m$ H7 m$ H7 k&$ H7 m$ H7 m$ H7 m$ H7 m$ H7 m$ H7 m$ H7 m$ H7 m$ H7 m$ H7 k&$ H7 m$ H7 m$ H7 m$ H7 m$ H7 m$ H7 m$ H7 m$ H›{7 m$ H›{7 m$ H›{7 k&$ H›{7 m$ H›{7 m$ H›{7 m$ H›{7 m$ H›{7 m$ H›{7 m$ H›{7 m$ H›{7 m$ H›{7 m$ H›qIX37 o@uHB$Ix$ HB$Ix$ HB$Ix$ HB$=߁$0$>ɿIUĻ{tӿ!O;를!忿|.Wx+-“`O!4Cx I0'Ch$“`O!< d`C&4  Q`C&4ހ!J Q`C&0Di!J Q`Cx(M0Di!J Q`o (M0Di!J 4 (M0Di!C&4 (M07`C&4  Q`C&4 Q`C&4ހ!J Q`C&0Di!J Q`Cx(M0Di!J Q`o (M0Di!J 4 (M0Di!C&4 (M07`C&4  Q`C&4ހ!J Q`C&B!J Q`C&0Di!J Q`Cx(M0Di!J Q`o (M0Di!J 4 (M0Di!C&4 (M07`C&4  Q`C&0Di!J Q`Cx(M0Di!J Q`m(M0Di!J Q`o (M0Di!J 4 (M0Di!C&4 (M07`C&4  Q`C&4ހ!J Q`C&0Di!J Q`Cx(M0Di!J Q`o (M0Di!J  (M0Di!J 4 (M0Di!C&4 (M07`C&4  Q`C&4ހ!J Q`C&0Di!J Q`Cx(M0Di!J Q`o (M0Di!J 4 (M0Di!4 (M0Di!C&4 (M07`C&4  Q`C&4ހ!J Q`C&0Di!J Q`Cx(M0Di!J Q`o (M0Di!J 4 (M0Di!C&4 (M06C&4 (M07`C&4  Q`C&4ހ!J Q`C&06_|v0kw`N '?!k?v=oc_NHb,o4C\~$<2D<$ H’$4Ih$ H’$4Ih$ H’$Ix$ HB$Ix$ HB$Ix$ HB$Ix$ HB$Ix$ HB$Ix$ HB$Ix$ HB$Ix$ HB$Ix$ HB$Ix$ Hš$Ix$ HB$Ix$ HB$Ix$ HB$Ix$ HB$Ix$ HB$Ix$ HB$Ix$ HB$Ix$ HB$Ix$ HB$Ix$ Hš$Ix$ HB$Ix$ HB$Ix$ HB$ H7 o@ $ H7 o@ $ H7 o@ $ H7 o@ $ H7 m$ H7 m$ H7 k&$ H7 m$ H7 m$ H7 m$ H7 m$ H7 m$ H7 m$ H7 m$ H7 m$ H7 m$ H7 k&$ H7 m$ H7 m$ H7 m$ H7 m$ H7 m$ H7 m$ H7 m$ H7 m$ H7 m$ H7 k&$ H7 m$ H7 m$ H7 m$ H7 m$ H7 m$ H7 m$ H7 m$ H7 m$ H7 m$ H7 k&$ H7 m$ H7 m$ H7 m$ H7 m |$$QHb xI|z$7$^G?+8% ķ_Ohb{i{&M/<2|؇W$hBЄ& K4 hBЄ& K4 hBЄ& K&4 hЄ7 m4 hЄ7 m4 hЄ7 mЄ7 o@ހ&Mh3Є7 o@ހ&Mh3Є7 o@ހ&Mh3Є7 o@ހ&Mh3Є7 o@ހ&Mh3Є7 o@ހ&Mh3Є7 o@ހ&MX3ф7 o@ހ&Mh3Є7 o@ހ&Mh3Є7 o@ހ&Mhs&Mx4 hB&Mx4 hB&Mx4 hB&Mx4 hB&Mx4 hB&Mx4 hB&Mx4 hš&Mx4 hB&Mx4 hB&Mx4 hB4 hЄ7 o@ 4 hЄ7 o@ 4 hЄ7 o@ 4 hЄ7 o@ 4 hЄ7 m4 hЄ7 m4 hЄ7 k&4 hЄ7 m4 hЄ7 m4 hЄ7 m4 hЄ7 m4 hЄ7 m4 hЄ7 m4 hЄ7 m4 hЄ7 m4 hЄ7 m4 hЄ7 k&4 hЄ7 m4 hЄ7 m4 hЄ7 m4 hЄ7 m4 hЄ7 m4 hЄ7 m4 hЄ7 m4 hЄ7 m4 hЄ7 m4 hЄ7 k&4 hЄ7 m4 hЄ7 m4 hЄ7 m4 hЄ7 m4 hЄ7 m4 hЄ7 m4 hЄ7 m4 hЄ7 m4 hЄ7 m4 hЄ7 k&4 hЄ7 m4 hЄ7 m4 hЄ7 m4 hЄ7 m |vr=}N4'x:xww]%~A_{^?CXoO;w(b}˸Uc^qM@",(BP&M@",(BP&M@",(P7o@ހ"(P7o@ހ"(P7o@ހ"(P7o@ހ"(P7o@ހ"(P7o@ހ"(P7o@ހ"(P7o@ހ"(P7o@ހ"(P7o@ހ"(P7o@ހ"(P7o@ހ"(P7o@ހ"(P7o@ހ"(P7o@ހ"(P7o@ހ"(P7o@ހ"(P7o@ހ"(P7o@ހ"(P7o@ހ"(P7o@ހ"(P7o@ހ"(P7o@ހ"(P7o@ހ"(P7o@ހ"(P7o@ހ"(P7o@ހ"(P7o@  (P7o@  (P7o@L (P7o@  (P7o@  (P7o@  (P7o@  (P7o@  (P7o@  (P7o@  (P7o@  (P7o@  (P7o@L (P7o@  (P7o@  (P7o@  (P7o@  (P7o@  (P7o@  (P7o@  (P7o@  (P7o@  (P7o@L (P7o@  (P7o@  (P7o@  (P7o@  (P7o@  (P7o@  (P7o@  (P7o@  (P7o@  (P7o@L (P7o@  (P7o@  (P7o@  (P7o@ aWiu(Oӊ"$Nw Eeq.˸U2 $(“M@ExIP'A"< $(“O"4(4A (MPDi"E&(4A (MP7E&(4A QE&(4Aހ"JQE&(PDi"JQEx(MPDi"JQo@ (MPDi"J (4A (MPDi"E&(4A (MP6E&(4A (MP7E&(4A QE&(4Aހ"JQE&(PDi"JQEx(MPDi"JQo@ (MPDi"J (4A (MPDi"E&(4A (MP7E&(4A QqE&(4Aހ"Jx=nE&(PDiPDi"JQo@9~C (MPDi"E E&(4A Q7QE&(PDiPDi"JQo@ (MPDi"E&(4A (MP7E&(4A fE&(4A QE&(4Aހ"JQE&(PDi"JQEx(MPDi"JQo@ (MPDi"J (4A (MPDi"E&(4A (MP7E&(4A QE&(4A QE&(4Aހ"JQE&(PDi"JQEx(MPDi"JQo@ (MPDi"J (4A (MPDi"E&(4A (MP7E&(4A QE&(4Aހ"JQE&(B"JQE&(PDi"JQEx(MPDi"JQo@ (MPDi"J (4A (MPDi"E&(4A (MP7E&(4A QE&(4Aހ"JQE&(PDi"JQEh3PDi"JQEx(MPDi"JQo@ (MPDi"J (4A (MPDi"Eh{E|;Q(X=n@}(OSE"6x?ׯՆov_Eb_{CǟR㯏~iˡ|)Ryq#R &@ -M H B &@ -M H B &@ -MLH  7@ -o H  7@ -o H  7@ -o H  7@ -o H  7@ -o H  7@ -o H  7@ -o H  7@ -o HH  7@ -mH  5RxsRxH B)9)RxH̀)Rxf@ -o@ -o)Rh3 7G 7@ -o)›# 7@ -o HH  7@ -mH  6RxsRxH B)9)RxHä́UZ )Rxf@ -o_u 7@ -mH  6RxsRxH B+›# 7@ -o HH  7@ -mH  6RxH B)RxH B)RxH š )RxH B)RxH B)RxH B)RxH B)RxH B)RxH B)RxH B)RxH B)RxH B)RxH š )RxH B)RxH B)RxH B)RxH B)RxH B)RxH B)RxH B)RxH B)RxH B)RxH š )RxH B)RxH B)RxH B)RxH B)RxH B)RxH B)RxH B)RxH B)RxH B)RxH š )RxH B)RxH B)RxH B)RxH B)}C -x[!g⯧) R:`b7\1m#=ߞwH5._5<$ H’$4Ih$ H’$4Ih$ H’$Ix$ HB$Ix$ HB$Ix$ HB$Ix$ HB+H7 o@ހ$H7 o@ހ$H7 o@ހ$H7 o@ހ$H7 o@ހ$H7 o@ހ$H7 o@ހ$H7 o@ހ$H7 o@ހ$H7 o@ހ$$Ix$ HB$Ix$ HB$Ix$ HB$Ix$ HB$Ix$ HB$Ix$ Hš$Ix$ HB$Ix$ HB$Ix$ HB$Ix$ HB+H7 o@ހ$H7 o@ހ$H7 o@ހ$H7 o@ $ H7 o@ $ H7 o@L$ H7 o@ $ H7 o@ $ H7 o@ $ H7 o@ $ H7 o@ $ H7 o@ $ H7 o@ $ H7 o@ $ H7 o@ $ H7 o@L$ H7 o@ $ H7 o@ $ H7 o@ $ H7 o@ $ H7 o@ $ H7 o@ $ H7 o@ $ H7 o@ $ H7 o@ $ H7 o@L$ H7 o@ $ H7 o@ $ H7 o@ $ H7 o@ $ H7 o@ $ H7 o@ $ H7 o@ $ H7 o@ $ H7 o@ $ H7 o@L$ H7 o@ $ H7 o@ $ H7 o@ $ H7 o@ $aW $!eϑ?N$'x Iї~yEXoO;w(b}˸Uc^qM@",(BP&M@",(BP&M@",(P7o@ހ"(P7o@ހ"(P7o@ހ"(P7o@ހ"(P7o@ހ"(P7o@ހ"(P7o@ހ"(P7o@ހ"(P7o@ހ"(P7o@ހ"(P7o@ހ"(P7o@ހ"(P7o@ހ"(P7o@ހ"(P7o@ހ"(P7o@ހ"(P7o@ހ"(P7o@ހ"(P7o@ހ"(P7o@ހ"(P7o@ހ"(P7o@ހ"(P7o@ހ"(P7o@ހ"(P7o@ހ"(P7o@ހ"(P7o@ހ"(P7o@  (P7o@  (P7o@L (P7o@  (P7o@  (P7o@  (P7o@  (P7o@  (P7o@  (P7o@  (P7o@  (P7o@  (P7o@L (P7o@  (P7o@  (P7o@  (P7o@  (P7o@  (P7o@  (P7o@  (P7o@  (P7o@  (P7o@L (P7o@  (P7o@  (P7o@  (P7o@  (P7o@  (P7o@  (P7o@  (P7o@  (P7o@  (P7o@L (P7o@  (P7o@  (P7o@  (P7o@ aowE|;a(ur9}"E|vPį\wz{/"&Eɾ>2Qĸw˸U2 $(“M@ExIP'A"< $(“O"4(4A (MPDi"E&(4A (MP7E&(4A QE&(4Aހ"JQE&(PDi"JQEx(MPDi"JQo@ (MPDi"J (4A (MPDi"E&(4A (MP6E&(4A (MP7E&(4A QE&(4Aހ"JQE&(PDi"JQEx(MPDi"JQo@ (MPDi"J (4A (MPDi"E&(4A (MP7E&(4A fE&(4A QE&(4Aހ"JQE&(PDi"JQEx(MPDi"JQo@ (MPDi"J (4A (MPDi"E&(4A QE&(4Aހ"JQE&(B"JQE&(PDi"JQEx(MPDi"JQo@ (MPDi"J (4A (MPDi"E&(4A (MP7E&(4A QE&(4Aހ"JQE&(PDi"JQEh3PDi"JQEx(MPDi"JQo@ (MPDi"J (4A (MPDi"E&(4A (MP7E&(4A QE&(4Aހ"JQE&(PDi"JQEx(MPDi"JQm(MPDi"JQo@ (MPDi"J (4A (MPDi"E&(4A (MP7E&(4A QE&(4Aހ"JQE&(PDi"JQEx(MPDi"JQo@ (MPDi"J@ (MPDi"J (4A (MPDi"E&(4A (MP7E&(4A WG?El}(Oq=U^A"6 q[!$lxߞwH<.ϻ}x$4Ihd M@$4Ihd M@$4Ihd" o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf" o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf" o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ix$ H7 m$ H7 m$ H6Ix$ H6Ix$ H5Ix$ H6Ix$ H6Ix$ H6Ix$ H6Ix$ H6Ix$ H6Ix$ H6Ix$ H6Ix$ H6Ix$ H5Ix$ H6Ix$ H6Ix$ H6Ix$ H6Ix$ H6Ix$ H6Ix$ H6Ix$ H6Ix$ H6Ix$ H5Ix$ H6Ix$ H6Ix$ H6Ix$ H6Ix$ H6Ix$ H6Ix$ H6Ix$ H6Ix$ H6Ix$ H5Ix$ H6Ix$ H6Ix$ H6Ix$ H6IX{>G0$FqIDxw#~C`Gaq[y#F%]0>#4FX2`&M#4FX2`&M#4FX2a7o#Fh3`7o#Fh3`7o#Fh3`7o#Fh3`7o#Fh3`7o#Fh3`7o#Fh3`7o#Fh3`7o#Fh3`7o#FX3a7o#Fh3`7o#Fh3`7o#Fh3`7o#Fh3`7o#Fh3`7o#Fh3`7o#Fh3`7o#Fh3`7o#Fh3`7o#FX3a7o#Fh3`7o#Fh3`7o#Fh3`7o#Fh3`7o#Fh3`7o#Fh3`7o#Fh3`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0š o)9kTag02^G5#x(=5`˸c^uM#,0B`&M#,0B`&M#,0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o ~Z #FxfoM 0`5Fxs  0`6Fxs  0`6Fxs  0`6Fxs  0`6Fxs  0`6Fxs  0`6Fxs  0`6Fxs  0`6Fxs  0`6Fxs  0`5Fxs  0`6Fxs  0`6Fxs  0`6Fxs  0`6Fxs  0`6Fxs  0`6Fxs  0`6Fx 0`6Fx 0`6Fx 0`5Fx 0`6Fx 0`6Fx 0`6Fx 0`6Fx 0`6Fx 0`6Fx 0`6Fx 0`6Fx 0`6Fx 0`5Fx 0`6Fx 0`6Fx 0`6Fx 0`6FX-F|;a0ⶏ ߧx0OF -xwFH/?$֧~! .C׸<2|؇W HB& K$ HB& K$ HB& K&$ H7 m$ H7 m$ H7 m$ H7 m$ H7 m$ H7 m$ H7 m$ H7 m$ H7 m$ H7 k&$ H7 m$ H7 m$ H7 m$ H7 m$ H7 m$ H7 m$ H7 m$ H7 m$ H7 m$ H7 k&$ H7 m$ H7 m$ H7 m$ H7 m$ H7 m$ H7 m$ H7 m$ H6Ixk&$ HB$g~=n" o@ހ$H›K7 o@ހ$H›K7 o@ހ$H›K7 o@ހ$H›K7 o@ހ$H›K7 o@ހ$H›K7 o@ހ$H›K7 o@ހ$H›K7 o@ހ$H›K7 o@ހ$H›K7 o@ހ$H›K7 o@ހ$H›K7 o@ހ$H›K7 o@ހ$H7 o@ހ$H7 o@ހ$H7 o@ހ$H7 o@ހ$H7 o@ހ$H7 o@ހ$H7 o@ހ$H7 o@ހ$H7 o@ހ$H7 o@ހ$H7 o@ހ$H7 o@ހ$H7 o@ހ$H7 o@ހ$H7 o@ހ$H7 o@ހ$H7 o@ހ$H7 o@ހ$H7 o@ހ$H7 o@ހ$H7 o@ހ$Hš o/HC;w"?e(HݽӯH[0⯧?#~r0b\ˏqye\J}xFxI`&O#< $0“MFxI`' QF&04#JQF&0`Di#JQFx(M`Di#JQo (M`Di#J 04 (M`Di#F&04 (M`7F&04 QF&04#JQF&0B#JQF&0`Di#JQFx(M`Di#JQo (M`Di#J 04 (M`Di#F&04 (M`7F&04 QF&04#JQF&0`Di#JQFh3`Di#JQFx(M`Di#JQo (M`Di#J 04 (M`Di#F&04 (M`7F&04 QF&04#JQFx(M`Di#JQo (M`Di#J̀ (M`Di#J 04 (M`Di#F&04 (M`7F&04 QF&04#JQF&0`Di#JQFx(M`Di#JQo (M`Di#J 04 (M`Di#04 (M`Di#F&04 (M`7F&04 QF&04#JQF&0`Di#JQFx(M`Di#JQo (M`Di#J 04 (M`Di#F&04 (M`6F&04 (M`7F&04 QF&04#JQF&0`Di#JQFx(M`Di#JQo (M`Di#J 04 (M`Di#F&04 (M`7F&04 fF&04 QF&04#JQF&0`Di#JQFx#-F|;Q0~>Y>#>oa{PF~ˆw0b}yq#:`&M  0B`&M  0B`&ML 0`7o  0`7o  0`7o  0`7o  0`7o  0`7o  0`7o  0`7o  0`7o  0`7oL 0`7o  0`7o  0`7o  0`7o  0`7o  0`7o  0`7o  0`7o  0`7o  0`7oL 0`7o  0`7o  0`7o  0`7o  0`7o  0`7o  0`7o  0`7m 0`7m 0`7k& 0`7m 0`7m 0`7m 0`7m 0`7m 0`7m 0`7m 0`7m 0`7m 0`7k& 0`7m 0`7m 0`7m 0`7m 0`7m 0`7m 0`7m 0`7m 0`7m 0`7k& 0`7m 0`7m 0`7m 0`7m 0`7m 0`7m 0`7m 0`7m 0`7m 0`7k& 0`7m 0`7m 0`7m 0`7m[ -|#$a0x}\?wˆ?a](0ݽ =/A맱>~j.kqye\J:`&M  0B`&M  0B`&ML 0`7o  0`7o  0`7o  0`7o  0`7o  0`7o  0`7o  0`7o  0`7o  0`7oL 0`7o  0`7o  0`7o  0`7o  0`7o  0`7o  0`7o  0`7o  0`7o  0`7oL 0`7o  0`7o  0`7o  0`7o  0`7o  0`7o  0`7o  0`7m 0`7m 0`7k& 0`7m 0`7m 0`7m 0`7m 0`7m 0`7m 0`7m 0`7m 0`7m 0`7k& 0`7m 0`7m 0`7m 0`7m 0`7m 0`7m 0`7m 0`7m 0`7m 0`7k& 0`7m 0`7m 0`7m 0`7m 0`7m 0`7m 0`7m 0`7m 0`7m 0`7k& 0`7m 0`7m 0`7m 0`7m[ -|v` kF\'/\ˆw -a׿>$?$iHb\~$7@W }x$4Ihd M@$4Ihd M@$4Ihd" o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf" o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf" o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ih37 ;Z*-+ 4 E8/9'$ NܳvN*&$&$&$f! 7! 7! 7! 7! 5I I I I IYHMHMHMHMHBnBnBnBnBlpppp`$܄$܄$܄$܄$,$&$&$&$&$f! 7! 7! 7! 7! 6 I I I I IYHMHMHMHMHBFnBnBnBnBlpppp`$܄$܄$܄$܄$,$&$&$&$&$f! 7! 7! 7! 7! 6 I I I I IYHMHMHMHMHBnBnBnBnBlppppP$܄$܄$܄$܄$,$&$&$&$&$f! 7! 7! 7! 7! 6 I I I I IYHMHMHMHMHBnBnBnBnBlpppp`$܄$܄$܄$܄$l$&$&$&$&$f! 7! 7! 7! 7! 6 I I I I IYHMHMHMHMHBj`$OCO_~ HD?#n$j[߯HG0F<-?\W0~X{5fcoV'#<~LNF8d`o0I0'# p F0Y0hFq4`` 8G30h7q4#f`<~nG30hFy##f` 8G F Fq4#p8G30hF7&q4#f` 8nG30hF&q4#f` 8l8G30hF7q4#f` p8G30hF7q4#f` p8G30hF7q4#f` p8G30hF7q4#f` p8G30hF7q4#f` `` 8G30hF Fq4#f`` 8G30hF Fq4#f`` 8G30hF Fq4#f`` 8G30hF Fq4##f` 8G30M0hFq4#,q4#f` 8nG30hF&q4#f` 8nG30hF&q4#f` 8nG30hF&q4#f` 8nG30hF&q4#f` 8nG30hFfq4#f` p8G30hF7q4#f` p8G30hF7q4#f` p8G30hF7q4#f` p8G30hF7q4#f` p8G30hF6 Fq4#f`` 8G30hF Fq4#f`` 8G30hF Fq4#f`` 8G30hF Fq4#f`` 8G30hF Fq4#f`` 8G30hFY0hFq4##f` 8G30M0hFq4##f` 8G30M0_woKxxU_ Ft #z=o+ ](/hxze]9{ -LLJ````P %%%%%,(&(&(&(&(fA 7A 7A 7A 7A 6 J J J J JYPMPMPMPMP͂nnnnlpppp`%%%%%,(&(&(&(&(fC 7A 7A 7A 7A 6 J J J J JYPMPMPMPMP͂nnnnlpppp`%%%%%,(&(&(&(&(fA 7A 7A 7A 7A 6 J J J J JPMPMPMPMP͂nnnnlpppp`%%%%%,(&(&(&(&(fA 7A 7A 7A 7A 6 J J J JYPMPMPMPMP͂nnnnj6pppp`%%%%%,(&(&(&(&(fA 7A 7A 7A 7A 6 J J J J JYPMPMPMPMP͂nnnnlpppp` %%%%%,(&(&(&(&(fA 7A 7A 7A 7A 6 J J J J JYPMPMPMPMP͂nnnnlpppp`%%%%%,(&(&(&(&(fC 7A 7A 7A 7A 6 J J J J JYPMPMPMPMP͂nnnnlpppp`%%%%%,(&(&(&(&(fA 7A 7A 7A 7A 6 J J J J JPMPMPMPMP͂nnnnlpppp`%|/l1 P%><"Jt/hxFe]5{CLBLBJ````P$܄$܄$܄$܄$,$&$&$&$&$f! 7! 7! 7! 7! 6 I I I I IYHMHMHMHMHBnBnBnBnBlpppp`$܄$܄$܄$܄$,$&$&$&$&$f# 7! 7! 7! 7! 6 I I I I IYHMHMHMHMHBnBnBnBnBlpppp`$܄$܄$܄$܄$,$&$&$&$&$f! 7! 7! 7! 7! 6 I I I I IHMHMHMHMHBnBnBnBnBlpppp`$܄$܄$܄$܄$,$&$&$&$&$f! 7! 7! 7! 7! 6 I I I IYHMHMHMHMHBnBnBnBnBj6pppp`$܄$܄$܄$܄$,$&$&$&$&$f! 7! 7! 7! 7! 6 I I I I IYHMHMHMHMHBnBnBnBnBlpppp`$܄$܄$܄$܄$,$&$&$&$&$f! 7! 7! 7! 7! 6 I I I I IYHMHMHMHMHBnBnBnBnBlpppp`$܄$܄$܄$܄$,$&$&$&$&$f# 7! 7! 7! 7! 6 I I I I IYHMHMHMHMHBnBnBnBnBlpppp`$܄$܄$܄$܄$,$&$&$&$&$f! 7! 7! 7! 7! 6 I I I I IHMHMHMHMHBnBnBnBnBlpppp`$|'l/ H$HD?#p Ws >]ī"~wo|i6Xz5n YYu# p20I0'# p20I0'# p20ɂG30hF&q4#f` 8nG30hF&q4#f` 8nG30hF&q4#f` 8nG30hF&q4#f` 8nG30hF&q4#f` 8l8G30hF7q4#f` p8G30hF7q4#f` p8G30hF7q4#f` p8G30hF7q4#f` p8G30hF7q4#f` `` 8G30hF Fq4#f`` 8G30hF Fq4#f`` 8G30hF Fq4#f`` 8G30hF Fq4##f` 8G30M0hFq4#,q4#f` 8n|G30hF&q4#f` 8nG30hF&q4#f` 8nG30hF&q4#f` 8nG30hF&q4#f` 8nG30hFfq4#f` p| 8G30hF7q4#f` p8G30hF7q4#f` p8G30hF7q4#f` p8G30hF7q4#f` p8G30hF6 Fq4#f`Fq4#f`` 8G30hF Fq4#f`` 8G30hF Fq4#f`` 8G30hF Fq4#f`` 8G30hF Fq4#f`#f` 8G30o#f` 8G30M0hFq4##f` 8G30M0w̖#~Y0_57x0\Ϸ^v0oˆ2Ҽ ?= #:f###,$$$$d&&&&%F F F F FY0M0M0M0M0͂nnnnlpppp``````#####,&&&&f77776 F F F F FY0M0M0M0M0B͆nnnnlpppp``````#####,&&&&f77776 F F F F FY0M0M0M0M0͂nnnnlppppPa````#####,&&&&f77776 F F F F FY0M0M0M0M0͂nnnnlppp``````#####l&&&&';_a````#####,&&&&f77776 F F F F FY0M0M0M0M0͂nnnnlpppp`````` #####,&&&&f77776 F F F F FY0M0M0M0M0͂nnnnlpppp``````#####,&&&&f77776 F F F F FY0M0M0M0M0͂nnnnlpppp``````#####,&&&&f77776 F F F F F0M0M0M0M0͂nnnnlpppp``````#|oa? F}\{5vt - I0 I0 I(YHIHIHIHIHBBLBLBLBLBJ6pppp`$܄$܄$܄$܄$,$&$&$&$&$f! 7! 7! 7! 7! 6 I I I I IYHMHMHMHMHBnBnBnBnBlpppp`$܄$܄$܄$܄$,$&$&$&$&$f! 7! 7! 7! 7! 6 I I I I IYHMHMHMHMHBnBnBnBnBlpppp`$܄$܄$܄$܄$,$&$&$&$&$f# 7! 7! 7! 7! 6 I I I I IYHMHMHMHMHBnBnBnBnBlpppp`$܄$܄$܄$܄$,$&$&$&$f! 7! 7! 7! 7! 6 I I I I IHMHMHMHMHBnBnBnBnBlpppp`$܄$܄$܄$܄$,$&$&$&$&$f! 7! 7! 7! 7! 6 I I I I IYHMHMHMHMHBnBnBnBnBj6pppp`$܄$܄$܄$܄$,$&$&$&$&$f! 7! 7! 7! 7! 6 I I I I IYHMHMHMHMHBnBnBnBnBlpppp`$܄$܄$܄$܄$,$&$&$&$&$f! 7! 7! 7! 7! 6 I I I I IYHMHMHMHMHBnBnBnBnBlpppp`$܄$܄$܄$܄$,$&$&$&$&$f# 7! 7! 7! 7! 6 I I I I IYHMHMHMHMHBnBnBnBnBlPݞ/ eC?#9īo"0+x>rio0{4`Dï`,kJ؛U``P`````#####l&&&&f77776 F F F F FY0M0M0M0M0͂nnnnlpppp``````#####,&&&&f77775F F F F FY0M0M0M0M0͂nnnnlpppp``````#####,&&&&f77776 F F F F FY0M0M0M0M0B͆nnnnlpppp``````#####,&&&&f77776 F F F F FY0M0M0M0͂nnnnlppppPa````#####,&&&&f77776 F F F F FY0M0M0M0M0͂nnnnlpppp``````#####l&&&&f77776 F F F F FY0M0M0M0M0͂nnnnlpppp``````#####,&&&&f77775F F F F FY0M0M0M0M0͂nnnnlpppp``````#####,&&&&f77776 F F F F FY0M0M0M0M0B͆nnnnlpppp``````#####,}fK_?4_a0nj#_߾ J<_.Նk_߭=rֱ7pNJ0 J8(dNJ0 J8(dNJ0YPhJ@(q4%%f 8G3PMPhJ@(q4%%f 8G3PMPhJ@(q4%%f 8G3PMPhJ@(q4%%f 8G3PMPhJ@(q4%%f 8G3P͂G3PhJ@(&(q4%f 8nG3PhJ@(&(q4%f 8nG3PhJ@(&(q4%f 8nG3PhJ@(&(q4%f 8nG3PhJ@(&(q4%f 8l8G3PhJ@ 7A(q4%f p8G3PhJ@ 7A(q4%f p8G3PhJ@ 7A(q4%f p8G3PhJ@ 7A(q4%f 8G3PhJ J@(q4%f%f 8G3PMPhJ@(q4%ܼ(q4%f 8nG3PhJ@(&(q4%f 8nG3PhJ@(&(q4%f 8nG3PhJ@(&(q4%f 8nG3PhJ@(fA(q4%f p8G3PhJ@ 7J@(q4%f 8G3PhJ J@(q4%f 8G3PhJ J@(q4%f 8G3PhJ J@(q4%f 8G3PhJYPhJ@(q4%%f 8G3PG3PhJ@(&(q4%f 8nG3PhJ@(&(q4%f 8nG3PhJ@(&(q4%f 8nG3PhJ@(&(q4%f 8l8G3PhJ@ 7A(q4%f p~ 8G3PhJ J@(q4%f-~J8Ӓ'P_?C`(z$>|C#>OOҼ Ͽ;{5Ftͪ F0 F0 F(Y0I0I0I0I0BɂLLLLJ6pppp``````#####,&&&&f77776 F F F F FY0M0M0M0M0͂nnnnlpppp`````` #####,&&&&f77776 F F F F FY0M0M0M0M0͂nnnnlpppp``````#####,&&&&f77776 F F F F FY0M0M0M0M0͂nnnnlpppp``````#####,&&&f77776 F F F F F0M0M0M0M0͂nnnnl#####,&&&&f77776 F F F F FY0M0M0M0M0͂nnnnlpppp`````` #####,&&&&f77776 F F F F FY0M0M0M0M0͂nnnnlpppp``````#####,&&&&f77776 F F F F FY0M0M0M0M0͂nnnnlpppp``````#####,&&&&f77776 F F F F F0M0M0M0M0͂nnnnlpppp``````#|l)sOO?ˆ F<| -'x5O7ݗ]#6x|Ozޠ>_W0W0޳+coV]0&% F0 F0 F0y$d&&&##l&&a``###< p````nlppp00M0͂nnnF FY0M0M076 F F Fy&f77776 F F F F FY0M0M0M0M0B͆nnnnlpppp``````#####,&&&&f77776 F F F F FY0M0M0M0M0͂nnnnlppppPa````#####,&&&&f77776 F F F F FY0M0M0M0M0͂nnnnlppp``````#####l&&&&f77776 F F F F FY0M0M0M0M0͂nnnnlpppp``````#####,&&&&f77775F F F F FY0M0M0M0M0͂nnnnlpppp``````#####,&&&&f77776 F F F F FY0M0M0M0M0B͆nnnnlpppp``````#####,&&&&f77776 F F F F FY0M0M0M0M0͂nnnnlppppPa````#####,&&&&f77776 FnR`ď? F|zqa?Ènj;F<ÈO_?~~$HգSO~}%ȇu~?ǧ߷t|x>~9|9G˟?J?>G{!/A|/E{n{x_dĉ}z!֗{z@>o<=gs0/z -hAW -endstream -endobj -344 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 343 0 R -/Resources 4 0 R -/Annots [ 345 0 R 346 0 R 347 0 R 348 0 R 349 0 R 350 0 R 351 0 R 352 0 R 353 0 R 354 0 R 355 0 R 356 0 R 357 0 R 358 0 R 359 0 R 360 0 R 361 0 R 362 0 R 363 0 R 364 0 R 365 0 R 366 0 R 367 0 R 368 0 R 369 0 R 370 0 R 371 0 R 372 0 R 373 0 R 374 0 R 375 0 R 376 0 R 377 0 R 378 0 R 379 0 R 380 0 R 381 0 R 382 0 R 383 0 R 384 0 R 385 0 R 386 0 R 387 0 R 388 0 R 389 0 R 390 0 R 391 0 R 392 0 R 393 0 R 394 0 R 395 0 R 396 0 R 397 0 R 398 0 R 399 0 R 400 0 R 401 0 R 402 0 R 403 0 R 404 0 R 405 0 R 406 0 R 407 0 R 408 0 R 409 0 R 410 0 R 411 0 R 412 0 R 413 0 R 414 0 R 415 0 R 416 0 R 417 0 R 418 0 R 419 0 R 420 0 R 421 0 R 422 0 R 423 0 R 424 0 R 425 0 R 426 0 R 427 0 R 428 0 R 429 0 R 430 0 R 431 0 R 432 0 R 433 0 R 434 0 R 435 0 R 436 0 R 437 0 R 438 0 R 439 0 R 440 0 R ] -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -345 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 771.023622 555.889134 750.353622 ] -/BS << -/W 0 ->> -/Dest (jdb/:lundi-24-avril-2023) ->> -endobj -346 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 765.503622 82.786359 751.103622 ] -/BS << -/W 0 ->> -/Dest (jdb/:lundi-24-avril-2023) ->> -endobj -347 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 538.710911 765.503622 555.889134 751.103622 ] -/BS << -/W 0 ->> -/Dest (jdb/:lundi-24-avril-2023) ->> -endobj -348 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 750.353622 555.889134 729.683622 ] -/BS << -/W 0 ->> -/Dest (jdb/:mardi-25-avril-2023) ->> -endobj -349 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 744.833622 82.786359 730.433622 ] -/BS << -/W 0 ->> -/Dest (jdb/:mardi-25-avril-2023) ->> -endobj -350 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 538.710911 744.833622 555.889134 730.433622 ] -/BS << -/W 0 ->> -/Dest (jdb/:mardi-25-avril-2023) ->> -endobj -351 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 729.683622 555.889134 709.013622 ] -/BS << -/W 0 ->> -/Dest (jdb/:26-avril-2023) ->> -endobj -352 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 724.163622 82.786359 709.763622 ] -/BS << -/W 0 ->> -/Dest (jdb/:26-avril-2023) ->> -endobj -353 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 538.710911 724.163622 555.889134 709.763622 ] -/BS << -/W 0 ->> -/Dest (jdb/:26-avril-2023) ->> -endobj -354 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 709.013622 555.889134 688.343622 ] -/BS << -/W 0 ->> -/Dest (jdb/:jeudi-27-avril-2023) ->> -endobj -355 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 703.493622 82.786359 689.093622 ] -/BS << -/W 0 ->> -/Dest (jdb/:jeudi-27-avril-2023) ->> -endobj -356 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 538.710911 703.493622 555.889134 689.093622 ] -/BS << -/W 0 ->> -/Dest (jdb/:jeudi-27-avril-2023) ->> -endobj -357 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 688.343622 555.889134 667.673622 ] -/BS << -/W 0 ->> -/Dest (jdb/:vendredi-28-avril-2023) ->> -endobj -358 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 682.823622 82.786359 668.423622 ] -/BS << -/W 0 ->> -/Dest (jdb/:vendredi-28-avril-2023) ->> -endobj -359 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 538.710911 682.823622 555.889134 668.423622 ] -/BS << -/W 0 ->> -/Dest (jdb/:vendredi-28-avril-2023) ->> -endobj -360 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 667.673622 555.889134 647.003622 ] -/BS << -/W 0 ->> -/Dest (jdb/:lundi-1-mai-2023) ->> -endobj -361 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 662.153622 82.786359 647.753622 ] -/BS << -/W 0 ->> -/Dest (jdb/:lundi-1-mai-2023) ->> -endobj -362 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 538.710911 662.153622 555.889134 647.753622 ] -/BS << -/W 0 ->> -/Dest (jdb/:lundi-1-mai-2023) ->> -endobj -363 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 647.003622 555.889134 626.333622 ] -/BS << -/W 0 ->> -/Dest (jdb/:mardi-2-mai-2023) ->> -endobj -364 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 641.483622 82.786359 627.083622 ] -/BS << -/W 0 ->> -/Dest (jdb/:mardi-2-mai-2023) ->> -endobj -365 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 538.710911 641.483622 555.889134 627.083622 ] -/BS << -/W 0 ->> -/Dest (jdb/:mardi-2-mai-2023) ->> -endobj -366 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 626.333622 555.889134 605.663622 ] -/BS << -/W 0 ->> -/Dest (jdb/:recrutement-payerne-mai-2023) ->> -endobj -367 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 620.813622 82.786359 606.413622 ] -/BS << -/W 0 ->> -/Dest (jdb/:recrutement-payerne-mai-2023) ->> -endobj -368 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 538.710911 620.813622 555.889134 606.413622 ] -/BS << -/W 0 ->> -/Dest (jdb/:recrutement-payerne-mai-2023) ->> -endobj -369 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 605.663622 555.889134 584.993622 ] -/BS << -/W 0 ->> -/Dest (jdb/:vendredi-5-mai-2023) ->> -endobj -370 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 600.143622 82.786359 585.743622 ] -/BS << -/W 0 ->> -/Dest (jdb/:vendredi-5-mai-2023) ->> -endobj -371 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 538.710911 600.143622 555.889134 585.743622 ] -/BS << -/W 0 ->> -/Dest (jdb/:vendredi-5-mai-2023) ->> -endobj -372 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 584.993622 555.889134 564.323622 ] -/BS << -/W 0 ->> -/Dest (jdb/:lundi-8-mai-2023) ->> -endobj -373 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 579.473622 82.786359 565.073622 ] -/BS << -/W 0 ->> -/Dest (jdb/:lundi-8-mai-2023) ->> -endobj -374 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 538.710911 579.473622 555.889134 565.073622 ] -/BS << -/W 0 ->> -/Dest (jdb/:lundi-8-mai-2023) ->> -endobj -375 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 564.323622 555.889134 543.653622 ] -/BS << -/W 0 ->> -/Dest (jdb/:mardi-9-mai-2023) ->> -endobj -376 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 558.803622 82.786359 544.403622 ] -/BS << -/W 0 ->> -/Dest (jdb/:mardi-9-mai-2023) ->> -endobj -377 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 538.710911 558.803622 555.889134 544.403622 ] -/BS << -/W 0 ->> -/Dest (jdb/:mardi-9-mai-2023) ->> -endobj -378 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 543.653622 555.889134 522.983622 ] -/BS << -/W 0 ->> -/Dest (jdb/:mercredi-10-mai-2023) ->> -endobj -379 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 538.133622 82.786359 523.733622 ] -/BS << -/W 0 ->> -/Dest (jdb/:mercredi-10-mai-2023) ->> -endobj -380 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 538.710911 538.133622 555.889134 523.733622 ] -/BS << -/W 0 ->> -/Dest (jdb/:mercredi-10-mai-2023) ->> -endobj -381 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 522.983622 555.889134 502.313622 ] -/BS << -/W 0 ->> -/Dest (jdb/:jeudi-11-mai-2023) ->> -endobj -382 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 517.463622 82.786359 503.063622 ] -/BS << -/W 0 ->> -/Dest (jdb/:jeudi-11-mai-2023) ->> -endobj -383 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 538.710911 517.463622 555.889134 503.063622 ] -/BS << -/W 0 ->> -/Dest (jdb/:jeudi-11-mai-2023) ->> -endobj -384 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 502.313622 555.889134 481.643622 ] -/BS << -/W 0 ->> -/Dest (jdb/:vendredi-12-mai-2023) ->> -endobj -385 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 496.793622 82.786359 482.393622 ] -/BS << -/W 0 ->> -/Dest (jdb/:vendredi-12-mai-2023) ->> -endobj -386 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 538.710911 496.793622 555.889134 482.393622 ] -/BS << -/W 0 ->> -/Dest (jdb/:vendredi-12-mai-2023) ->> -endobj -387 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 481.643622 555.889134 460.973622 ] -/BS << -/W 0 ->> -/Dest (jdb/:lundi-15-mai-2023) ->> -endobj -388 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 476.123622 82.786359 461.723622 ] -/BS << -/W 0 ->> -/Dest (jdb/:lundi-15-mai-2023) ->> -endobj -389 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 538.710911 476.123622 555.889134 461.723622 ] -/BS << -/W 0 ->> -/Dest (jdb/:lundi-15-mai-2023) ->> -endobj -390 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 460.973622 555.889134 440.303622 ] -/BS << -/W 0 ->> -/Dest (jdb/:mardi-16-mai-2023) ->> -endobj -391 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 455.453622 82.786359 441.053622 ] -/BS << -/W 0 ->> -/Dest (jdb/:mardi-16-mai-2023) ->> -endobj -392 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 538.710911 455.453622 555.889134 441.053622 ] -/BS << -/W 0 ->> -/Dest (jdb/:mardi-16-mai-2023) ->> -endobj -393 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 440.303622 555.889134 419.633622 ] -/BS << -/W 0 ->> -/Dest (jdb/:mercredi-17-mai-2023) ->> -endobj -394 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 434.783622 82.786359 420.383622 ] -/BS << -/W 0 ->> -/Dest (jdb/:mercredi-17-mai-2023) ->> -endobj -395 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 538.710911 434.783622 555.889134 420.383622 ] -/BS << -/W 0 ->> -/Dest (jdb/:mercredi-17-mai-2023) ->> -endobj -396 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 419.633622 555.889134 398.963622 ] -/BS << -/W 0 ->> -/Dest (jdb/:jeudi-18-mai-2023) ->> -endobj -397 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 414.113622 82.786359 399.713622 ] -/BS << -/W 0 ->> -/Dest (jdb/:jeudi-18-mai-2023) ->> -endobj -398 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 538.710911 414.113622 555.889134 399.713622 ] -/BS << -/W 0 ->> -/Dest (jdb/:jeudi-18-mai-2023) ->> -endobj -399 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 398.963622 555.889134 378.293622 ] -/BS << -/W 0 ->> -/Dest (jdb/:lundi-22-mai-2023) ->> -endobj -400 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 393.443622 82.786359 379.043622 ] -/BS << -/W 0 ->> -/Dest (jdb/:lundi-22-mai-2023) ->> -endobj -401 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 538.710911 393.443622 555.889134 379.043622 ] -/BS << -/W 0 ->> -/Dest (jdb/:lundi-22-mai-2023) ->> -endobj -402 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 378.293622 555.889134 357.623622 ] -/BS << -/W 0 ->> -/Dest (jdb/:mardi-23-mai-2023) ->> -endobj -403 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 372.773622 82.786359 358.373622 ] -/BS << -/W 0 ->> -/Dest (jdb/:mardi-23-mai-2023) ->> -endobj -404 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 538.710911 372.773622 555.889134 358.373622 ] -/BS << -/W 0 ->> -/Dest (jdb/:mardi-23-mai-2023) ->> -endobj -405 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 357.623622 555.889134 336.953622 ] -/BS << -/W 0 ->> -/Dest (jdb/:mercredi-24-mai-2023) ->> -endobj -406 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 352.103622 82.786359 337.703622 ] -/BS << -/W 0 ->> -/Dest (jdb/:mercredi-24-mai-2023) ->> -endobj -407 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 538.710911 352.103622 555.889134 337.703622 ] -/BS << -/W 0 ->> -/Dest (jdb/:mercredi-24-mai-2023) ->> -endobj -408 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 336.953622 555.889134 316.283622 ] -/BS << -/W 0 ->> -/Dest (jdb/:jeudi-25-mai-2023) ->> -endobj -409 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 331.433622 82.786359 317.033622 ] -/BS << -/W 0 ->> -/Dest (jdb/:jeudi-25-mai-2023) ->> -endobj -410 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 538.710911 331.433622 555.889134 317.033622 ] -/BS << -/W 0 ->> -/Dest (jdb/:jeudi-25-mai-2023) ->> -endobj -411 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 316.283622 555.889134 295.613622 ] -/BS << -/W 0 ->> -/Dest (jdb/:vendredi-26-mai-2023) ->> -endobj -412 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 310.763622 82.786359 296.363622 ] -/BS << -/W 0 ->> -/Dest (jdb/:vendredi-26-mai-2023) ->> -endobj -413 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 538.710911 310.763622 555.889134 296.363622 ] -/BS << -/W 0 ->> -/Dest (jdb/:vendredi-26-mai-2023) ->> -endobj -414 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 295.613622 555.889134 274.943622 ] -/BS << -/W 0 ->> -/Dest (jdb/:grand-prix-de-monaco) ->> -endobj -415 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 290.093622 82.786359 275.693622 ] -/BS << -/W 0 ->> -/Dest (jdb/:grand-prix-de-monaco) ->> -endobj -416 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 538.710911 290.093622 555.889134 275.693622 ] -/BS << -/W 0 ->> -/Dest (jdb/:grand-prix-de-monaco) ->> -endobj -417 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 274.943622 555.889134 254.273622 ] -/BS << -/W 0 ->> -/Dest (jdb/:lundi-29-mai-2023) ->> -endobj -418 0 obj -<< -/Type /Annot -/Subtype /Link /Rect [ 55.386457 269.423622 82.786359 255.023622 ] /BS << /W 0 >> -/Dest (jdb/:lundi-29-mai-2023) +/Dest (.:glossaire) >> endobj -419 0 obj +303 0 obj << /Type /Annot /Subtype /Link @@ -5557,32 +4180,32 @@ endobj /BS << /W 0 >> -/Dest (jdb/:lundi-29-mai-2023) +/Dest (.:glossaire) >> endobj -420 0 obj +304 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 254.273622 555.889134 233.603622 ] +/Rect [ 47.386457 254.273622 555.889134 233.603622 ] /BS << /W 0 >> -/Dest (jdb/:mardi-30-mai-2023) +/Dest (CahierDesCharges/:cahier-des-charges) >> endobj -421 0 obj +305 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 248.753622 82.786359 234.353622 ] +/Rect [ 47.386457 248.753622 63.334211 234.353622 ] /BS << /W 0 >> -/Dest (jdb/:mardi-30-mai-2023) +/Dest (CahierDesCharges/:cahier-des-charges) >> endobj -422 0 obj +306 0 obj << /Type /Annot /Subtype /Link @@ -5590,10 +4213,10 @@ endobj /BS << /W 0 >> -/Dest (jdb/:mardi-30-mai-2023) +/Dest (CahierDesCharges/:cahier-des-charges) >> endobj -423 0 obj +307 0 obj << /Type /Annot /Subtype /Link @@ -5601,21 +4224,21 @@ endobj /BS << /W 0 >> -/Dest (jdb/:mercredi-31-mai-2023) +/Dest (CahierDesCharges/:contexte) >> endobj -424 0 obj +308 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 228.083622 82.786359 213.683622 ] +/Rect [ 55.386457 228.083622 77.060285 213.683622 ] /BS << /W 0 >> -/Dest (jdb/:mercredi-31-mai-2023) +/Dest (CahierDesCharges/:contexte) >> endobj -425 0 obj +309 0 obj << /Type /Annot /Subtype /Link @@ -5623,10 +4246,10 @@ endobj /BS << /W 0 >> -/Dest (jdb/:mercredi-31-mai-2023) +/Dest (CahierDesCharges/:contexte) >> endobj -426 0 obj +310 0 obj << /Type /Annot /Subtype /Link @@ -5634,21 +4257,21 @@ endobj /BS << /W 0 >> -/Dest (jdb/:jeudi-1-juin-2023) +/Dest (CahierDesCharges/:projet) >> endobj -427 0 obj +311 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 207.413622 82.786359 193.013622 ] +/Rect [ 55.386457 207.413622 77.060285 193.013622 ] /BS << /W 0 >> -/Dest (jdb/:jeudi-1-juin-2023) +/Dest (CahierDesCharges/:projet) >> endobj -428 0 obj +312 0 obj << /Type /Annot /Subtype /Link @@ -5656,10 +4279,10 @@ endobj /BS << /W 0 >> -/Dest (jdb/:jeudi-1-juin-2023) +/Dest (CahierDesCharges/:projet) >> endobj -429 0 obj +313 0 obj << /Type /Annot /Subtype /Link @@ -5667,21 +4290,21 @@ endobj /BS << /W 0 >> -/Dest (jdb/:vendredi-2-juin-2023) +/Dest (CahierDesCharges/:realisation) >> endobj -430 0 obj +314 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 186.743622 82.786359 172.343622 ] +/Rect [ 55.386457 186.743622 77.060285 172.343622 ] /BS << /W 0 >> -/Dest (jdb/:vendredi-2-juin-2023) +/Dest (CahierDesCharges/:realisation) >> endobj -431 0 obj +315 0 obj << /Type /Annot /Subtype /Link @@ -5689,10 +4312,10 @@ endobj /BS << /W 0 >> -/Dest (jdb/:vendredi-2-juin-2023) +/Dest (CahierDesCharges/:realisation) >> endobj -432 0 obj +316 0 obj << /Type /Annot /Subtype /Link @@ -5700,21 +4323,21 @@ endobj /BS << /W 0 >> -/Dest (jdb/:lundi-5-juin-2023) +/Dest (CahierDesCharges/:cas-dutilisation) >> endobj -433 0 obj +317 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 166.073622 82.786359 151.673622 ] +/Rect [ 55.386457 166.073622 77.060285 151.673622 ] /BS << /W 0 >> -/Dest (jdb/:lundi-5-juin-2023) +/Dest (CahierDesCharges/:cas-dutilisation) >> endobj -434 0 obj +318 0 obj << /Type /Annot /Subtype /Link @@ -5722,10 +4345,10 @@ endobj /BS << /W 0 >> -/Dest (jdb/:lundi-5-juin-2023) +/Dest (CahierDesCharges/:cas-dutilisation) >> endobj -435 0 obj +319 0 obj << /Type /Annot /Subtype /Link @@ -5733,21 +4356,21 @@ endobj /BS << /W 0 >> -/Dest (jdb/:mardi-6-juin-2023) +/Dest (CahierDesCharges/:difficultes-techniques) >> endobj -436 0 obj +320 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 145.403622 82.786359 131.003622 ] +/Rect [ 55.386457 145.403622 77.060285 131.003622 ] /BS << /W 0 >> -/Dest (jdb/:mardi-6-juin-2023) +/Dest (CahierDesCharges/:difficultes-techniques) >> endobj -437 0 obj +321 0 obj << /Type /Annot /Subtype /Link @@ -5755,32 +4378,32 @@ endobj /BS << /W 0 >> -/Dest (jdb/:mardi-6-juin-2023) +/Dest (CahierDesCharges/:difficultes-techniques) >> endobj -438 0 obj +322 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 130.253622 555.889134 109.583622 ] +/Rect [ 47.386457 130.253622 555.889134 109.583622 ] /BS << /W 0 >> -/Dest (jdb/:mercredi-7-juin) +/Dest (ManuelUtilisateur/:manuel-utilisateur) >> endobj -439 0 obj +323 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 124.733622 82.786359 110.333622 ] +/Rect [ 47.386457 124.733622 63.334211 110.333622 ] /BS << /W 0 >> -/Dest (jdb/:mercredi-7-juin) +/Dest (ManuelUtilisateur/:manuel-utilisateur) >> endobj -440 0 obj +324 0 obj << /Type /Annot /Subtype /Link @@ -5788,127 +4411,188 @@ endobj /BS << /W 0 >> -/Dest (jdb/:mercredi-7-juin) +/Dest (ManuelUtilisateur/:manuel-utilisateur) >> endobj -441 0 obj +325 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 109.583622 555.889134 88.913622 ] +/BS << +/W 0 +>> +/Dest (ManuelUtilisateur/:installation) +>> +endobj +326 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 104.063622 77.060285 89.663622 ] +/BS << +/W 0 +>> +/Dest (ManuelUtilisateur/:installation) +>> +endobj +327 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 104.063622 555.889134 89.663622 ] +/BS << +/W 0 +>> +/Dest (ManuelUtilisateur/:installation) +>> +endobj +328 0 obj << /Filter /FlateDecode -/Length 29602 +/Length 51275 >> stream -xM#gg>|dj`=1p6`x*wna*'ϴ\-V\ %p_u=OO~Oyu>cطOO^v{?qױ?~~/O_/5}ym඿z𧭌W;L}=NΣ9OԿhqn-lYym=$<ϐ^sK[y~qǑR{G={r>}[8{Jڞn+m!ݎrn3l~tPo^wjj۩}>n-m^\Zkvj:DSS|֑S|W:y=1Z۩}~n#nyv>?3=mޓy۩}~x{㺟[:Vk?oi;.Ǚovcl?+s?vj?mlc}wc}GNx>?Gcy^;#kcf>&aNu췸뵥cy>[8V5vj5R4<c{ +zb7#m^#n19ŎpYV5u2Ssp7WNZ\9+zjdUsq;ϵ{N}?^935vja}>jE5G:Vkg>q>LXhhj~ܟr>6^'5ϯZc`-4ϴRS|[:VkuLjVTi;5'Vu;ӱZs3-5:ټvj#\|v]izW}c8^GNsm&^k|:]fXj{N~; -v9xb:mLEG-uQi [G:귯מ.8ZeYi;5Z5cl9X-]jG>RVs>Nӫ5.l5hk$[紆qq\[o945ϭĴR]N<}td9x-aQ?eX9X[NR\td9xu6S\˦td9x{N<{NRkj0nh1Vs|n:Iy\:^s|WZ"וZ{}+]'j/my=_i [%kHy${gtp\gZ^gk>u:ZU:ubְRf1V瞮Z;ny(>g_WZ5X|${JIְƭf{5^sYg:^s:I?k?=m53]'>^5_HIHkZOԛꞮԫYMIc`M=]'5w5זְxXNIHIj]^MUa;xmGZ)K5=cvñz|MI}5lTs1Vi{NR'ujS\ϴMT1v:OI:aMIj[??jD!cu|jȥ$G8u:U??ja:j']'9jjucݗrGzs1VspMt9=]'C`뾏tVC:ŎyVL#c5*u:Yf$G)gu~\㖮ԩF5՚5L۩}޷WNRo՜t9xW9nJkZLWsjpGL1v>j[NRˆۣ~v??:5V.9c~h>nۺ+'4{vϽy[;5ϵOIǸ7??: Q\' :y>HIΣy]۩}-cgsR:y>[xNr{k=]'jY-:ye?X}lWNr^՜UsQct~jWNr^aN?jOVx:Vg[DH^ՙK8V?k#~9x_`1]:I9WS'i;5'~9xt=kk@$ϚuHIj!X?\"c5M:ɳ}]Ǝy;gϚI7woLk~|{s?J%|!'+}gUqoc{om[O㿽w~:oKt۾l7Qo>f\C֥z5>ط9wGxV9!ïxR?:8~=lue輧d]r&Ϻɺy<#%zɺHϔ=WJo-YW/kzK󞒵Ruy%dɆ:~_}Eyf]Q۟ج]>ج}>ki\ֻ-6k'6k'>׈b{uFup{}~gl>&ެ}u[o>_#6b\gڼE:bSڮ36j~=cx:|X\"6kެ5?bOtlj%Bs+ͺBج}>w'yy듚͒ Zdk-Hbs|o= %պɶdõ.f]4ۖl%ج}>i-ٰv_W.o_jk\^4ljI&ܒ By\9͸%օ4lXWӌ[Z7OfsdUcqK6\dUi-P?[qK6\4lWtK3nɆQKجO<-͸%jli-p=-͸%sO3nɆkAج}%Alj۞fܒ vӌ[atfܒ ׶i-p+fܒ 54l/ xydõ49Mjޟ,i-p+fܒ M3nɆkߎ4ljfܒ ^Tl>oRnK6\+ݖl[4vnYmɆzEmɆxi=ޟq ^\=ޟq dU4lXdu\qdCuܒ %%ZdUk4ljfܒ ׺ #6kqdUk4ljfܒ u -qK6\جOJqdCqdUk4ljfܒ %sO3nɆzi-pZ/͸%ZdCuܒ z%U%ZdUk4l^ϸ[z:nɆuuܒ W-BҌ[2qdC:nɆzE:nɆnqK6\ج}>:nɆz!:nɆ4l7(͸m}Wk4 ^ҌqOYqW'3g\mW\mnۮu7n{\m׺[qu~}^qmqmqm3W\W\u-u'KҌם,PK3n_w(͸}R 4u'K;Yg\NZdyu}ɲ:n_w?#6;Y:nɲue}Rzqޤӌ_g\NZ;YUO3n_wԫfܾdW=͸}Rzq^4u'#b}ɲDol1fܾdW=͸}Rk45kfܾ`Ҍ^qK3n_szikG\kg\kZ/͸}qK3n_szikZ/θ}gV\kZ/͸cZ]Y|uܱ⍱YcZw9Xk45kfܱ`Ҍ;^qǚ-5v -3Xsyuܱ`Ҍ;;:XszikZ/͸cZw9Xk45kfܱ`Ҍ;^qk/5kfܱ`Ҍ;^qǚ-5kfܱ9)6N-5kfܱ`Ҍ;θ;^qǚK3Xsp -}OPjwGu\wG>:N"qWqw>qw<:x}G+/wtuq{\;:qw;:[\ǝZw;:G\ǝZw;:kfܹ謵^q纣z{l];MsҌ[^k4lZ#l?66kqdýzi-Po,qdýzi-p^qK6ԡqK6?.͸%'i-P+[aYfܒ Zdýzi-ٰPN3nɆ{i-p##͸%֝i-p##͸%K3nɆO3nɆuddý4l':nɆ{- Ҍ[`\-p4l iqz[%O 3eɆZu[6Z/͸l^qoPk4޲ziƽeCҌ{ˆGfݽ븷l^qoP?iƽeCp u0  f[6Կ\qoPK3-jf[6Z/͸lx?44k>{ˆZ K3-jf[6ZoO͚K3-^{ˆZ B,ٰupuܷ?Ofiw?6ۆywm[Pz~7LpoV _֎'J֎M-|׿_0_~}m@\o!%$xX[{7G@B& K @B& K @B& K& @7 m @7 m @7 m @7 m @7 m @7 m @7 m @7 m @7 m @7 k& @7 m @7 m @7 m @7 m @7 m @7 m @7 m @7 m @7 m @7 k& @7 m @7 m @7 m @7 m @7 m @7 m @7 m @6Hx @6Hx @5Hx @6Hx @6Hx @6Hx @6Hx @6Hx @6Hx @6Hx @6Hx @6Hx @5Hx @6Hx @6Hx @6Hx @6Hx @6Hx @6Hx @6Hx @6Hx @6Hx @5Hx @6Hx @6Hx @6Hx @6Hx @6Hx @6Hx @6Hx @6Hx @6Hx zqHX37 oެ'q76Hx @6Hx @6Hx @6HX $ꭼ $^= u"7w7X⽰"G!^ 6[sT9Ax“F zOCew=|o_n=|';x|fo>x|fo>x|fo>x|fo>x|fo>x|fo>x|fo>x|fo>x|fo>x|f>x| 6>x| 6>x| 6>x| 6>x| 6>x| 5>x| 6>x| 6>x| 6>x| 6;7o7o7o7o 7o 7oL 7o 7o 7o 7o 7o 7o 7o 7o 7o 7oL 7o 7o 7o 7o 7o 7o 7o 7o 7o 7oL 7o 7o 7o 7o 7o 7o 7o 7o 7o 7oL 7o 7o 7o 7o `oʀi>j>‡m+|-ÇOyÇs-fUx~k-_es_;Zk铒OJMyxne '֊[{87&zB& K= zB& K= zB& K= z7 m= z7 m= z7 m= z7 m= z7 m= z7 m= z7 m= z7 m= z7 m= z7 k= z7 m= z7 m= z7 m= z7 m= z7 m= z7 m= z7 m= z7 m= z7 m= z7 k= z7 m= z7 m= z7 m= z7 m= z7 m= z7 m= z7 m= z6COx:n oޠ'z›qSOx=a<͡- Z’%4AKh- Z’%4AKh- Z’%AKx- ZB%AKx- ZB%AKx- ZB%AKx- ZB%AKx- ZB%AKx- ZB%AKx- ZB%AKx- ZB%AKx- ZB%AKx- Zš%AKx- ZB%AKx- ZB%AKx- ZB%AKx- ZB%AKx- ZB%AKx- ZB%AKx- ZB%AKx- ZB%AKx- ZB%AKx- Zš%AKx- ZB%AKx- ZB%AKx- ZB%AKx- ZB%AKx- ZB%AKx- ZB%AKx- ZB%AKx-ެ{\M- Z6CKx븩%AKxfj o%AKx-mkWPc)^[$~ @|9|@xxne<1jIO@h' ~B@|?qz Q@W@n:x:C{ϟ՗vOx_) ~;Խxzy7c׼\޼/GͶ{:Ynzpxqu8_!t#o;t +xO$ɕ巯OQ^#m0-HNs6}@˼^I61]CQ(8vݟNq~<Ϻ_/lygzy?}sz}s]$qq__jύϜgOp__:_<|nϲ= "{Yי8ps=ᚯLA($k^yG ּ#5šW?fd5+2\D&k'2\}65?gѷ֙rDe>S?\3%ۉ[G;Su3eۉ[8S!3p͈)xR <-ܹRHųTdfb!D)[ʸ\h)5ϖ2\3E!S5=e^`0OONyqx~`q 9d)rW{8<Sj=e\k\SƵ5#eހ`P"Dk^#e^|dq 99R5 Hא(@F8`H 9RƵ5_#e\\3L@dfV]qES5Mא)rpኦ[̘)P*2\5SƵkcn[D#5Kט(R5 jq9"/e\cKט5\cKט(R5 *q9R/e\c֋D23Q륌Az):s^ʸXu jq9Z/e\gKיRu jq9Z/e\gKיRu jq9x_Az):s^ʸD23Q륌Az):s^ʸD23Q륌Az):scיRu +q9"$e\g23qKי8AnʸD`A|إAl”q97Pʸ 2PL >cnρ?X#q8\ᚯXkc:/y:/ވ ֌Z/e\_X3jqQ륌֌Z/e8qpW5߱':n\u8fz)Ɖ5Kw ѰfF)UB$eh\uh\8\M0wF皟XǍ5XǍ5K7:֌Z/e^0-qc`ͨRƍ5㪧k_8[ܱk~b7&׼b7&֌2/0~p:nLW=eܸf\qF5XWPw5?7׼b7R jq9Z/e`K7R Az)s^ʸD2n0Q륌Az)s^8 jq9Z/ed[g&s^ʸD2n2Q륌Az)&s^ʸD2n2Q륌Az)&s^ʸg&s^ʸD2n2Q륌Az)&s^ʸD2n2Q륌Az)&s^ʸ|XM jq9Z/edK7RM jq9Z/edK7RM jq9XM jq9Z/edK7' +q9xI7(ebC8|91\3.D(!Xz3\Pu`$ixbב֌k+>kJ״qmLkڹf֌:EImi3 ?]SRK{eyM kpi͓k[,>k;6]5#F5E)5u}Rj+]SRϸOQJ]q7?153Ӌkgܧ7θOoHZ5!1X3qbcܧ(h}Ry8PD}p#S8E}DA}9>}}~3iC !fikGڧ05㭚|r0!ic(\ ״1q>mA.:9#jZ3spic"N>m_X$kFicM1>mA7i6`tMOsicRpLkf6>}О۽>ek}ls}I=S`+S Nq2~2b']SɆ`x8S Nq2Ogkgf45'S q2qj9NkfHsxO}ڙHO;sOڧ9z?9I35A~<}ڑ}QXN~ZZ3rOڧ'޸fT6?i5ckڹfHӚ;&`+>AO;r?iGv{ ]S`= Қ׌'yp͟*gf|*k:tr8k1!S`+)r;S`;S`5KtM/)|sͨҚo}/JF9/">E LZ5BM5o^knWܧkƏ5]\3']S WܧA_O}^*WڧT)+S*}⊅kJ:i'|^iR9˕)>rO=S*>rQx}JWڧT:O OtiR9@\iR9`ٔ)\iA|}J:>rN{}J>rLA9؏)swIה9pMה9)s4S`ogf<>A޽!]S`k3S`;gܧv̸O(>e( <)sfܧsθO'i2O|j536>e9x#SCq25r5S9iR9xP9 \S*?GڧTiyk>FڧT5RڧTͅ`#S*GڧT16>rǴOGڧTj#S*m#S*:J9ȯ>rFOPHAc]Z3rQ>rNԴO靮[OA{)%kW9P-}l>Eq"=Ӌk=Ӌkfmb>}zsG9ȯ>O{ܧv]=S $=Ӈk=ӇkƉ,]Ӈkn=5=5-S`)r9hKA6S*8ֵO4|}J'65؊D3"Q9hOWiR9h8p}Jᔐ){Gr #Q9hO4jiR9` +}JiiR9hH+#Q9@Z~$*~$*_ʋ؏DgڧT"~$*؏D3#Q9OGr 4nܧAҸO_~%kn3#Q9hx} )s¸O JZ3shܧHT^Oo~}Ċ>e=#Q9hgHT@~$*ȱU)s^oZ3sc?|h~$*혱A;FGrЎHުGڧTq~W9X+#zb?ҫ;#b?ҫy}*k~W9}.CMהoU)8]W9XGڧs}ܱS9b?ҏ Y?SүOM9G9&?WֿE9؛r-QUqFw.C3g1|pzA06O>IO`{/'l]y]Ͼ 'xHOH )=#'xlzB`JOL )=!0'xFzB`JOL )=!0'xFzB`JOL )=!0'xFzB`JOL )=!0'xFzB`JOL )=!0'xFzB`JOL )=!0'xFzB`JOL )=!0'xFzB`JOL )=!0'xFzB`JOL )=!0'xFzB`JOL )=!0'XfSzB`JOL )=3SzB`JOL )=3SzB`JOL )=3SzB`JOL )=3SzB`JOL )=3SzB`JOL )=3SzB`JOL )=3SzB`JOL )=3SzB`JOL )=3SzB`JOL )=2SzB`JOL SzB`JOL SzB`JOL SzB`JOL SzB`JOL SzB`JOL SzB`JOL SzB`JOL SzB`JOL SzB`JOL SzB`JOSzB`JOSzB`JOSzB`JOSzB`JOSzB`JOSzB`JOSzB`JOSzB`JOSzB`JO̦'Szg'Szg'Szg'Szg'Szg'Szg'Szg'Szg'Szg'Sze6=!0'<#=!0'<#=!0'<#=!0'<#=!0'<#=!0'<#=!0'<#=!0'<#=!0'<#=!0', )=!0' )=!0' )=!0' )=!0' ׭=MOXoys=QO?<oMH>a^Q#qy_n)s{xbl?a8#Æv# qnG_>Y˝0 ;9#\!˽9#\ÉEry˽+{hAMb3X9(0X5ަpɓ5_95?Wyq\Q`fo ֌O1Ӱf|`4"5߃5O+ + |Md\qE+ + ׼8(0X3m=2XsrgƶWpwdqE/++ + L$1X3yx ֌C\ffd5ægɱ/ |"en9SΔk?2)x :S2m3eۉR!3`3sox0OK8Rr/E + 08ZLA.~o2'M <[8q`xL |qx<=e +x0;5Oʸ\E57>0zO3z8\Z)Z㚯25)h%k^#e^֟)rpskŮ WgQbf\єq#e\\5RƵ53e\\3SᒃY3e\C"vfʸ\)rW4e\C.\єqx 3e +0sk|͔qXk~bny1Q`ͨR5 Jq9/e\c+D21kD21Q襌kATz)s^ʸD39Z/e\g^=q9Z/e\gKיXu jq9xXu jq9Z/e\gKיRu jq9xXu}:3Q륌Az):s^ʸD233q9Z/e\gKיRu jq9ܱAz):s_ GkF23qNי8A\RuAFʸć]ʸ&LיxA@)(=g8J7eރ#e\XQz8P륌?+2\8Jx3:ÁZ/e^8J ֌Z/e%e\XQz8P륌pKG8XQzB(=)(=u^8Jx:ÁB-eTﱎ8JGp+q8J0SQz8ڊuN XQz8P륌=qxSQz8pSQz8!2[4SQz8P륌pધpધXQz8pSQz`2z(=RQz8SEkcGXQz8P륌?:b'qz)(=zu\+ecXQz8P륌pKGXQz8P륌pKG@39Z/eTﱎ@/bEkpKG@2p\+qz)(=RQz8S jqP:pKG@2󱎣@>ecpKGXQz8P륌 +?quM7᚟XQz8P륌pL ֌Z/ecG@2XQzUuc]pKG@2o[2gNb3qP:É_8JcGdPJ' ed'qpAcGm?S O=42X3jq^8J'jqP:pKG遷LG`u^8JxcGD2ÉZoEk@#e^8J'İٓaJ'jqNz)(=8J'İ^8JcGXQz8Q륌pKGαp❑2{Fk;#eqNz)(=OGqN3RQz8y\u`(=8 p@2>VcG#qP:pKGD2ÉZ/e$bGD2ÉZ/fs^8J'6k8J'6G8J'ތ)(=_UdfMa/2c{z)^^ʸWz@2Wz@2P륌{z)^IeRƽjqO:Sz豎f~lw dw.=@='z"=l=w9q#/'yښ@a~>F} +Q~`x_/3 +z˳l8CA?l3, +f(XD3, + hC + hg4C3`mg4C3Pf(XfPf(xF3< +f(xF3< + he + hg4C3`mg4C3Pf(XfPf(xF3< +f(xF3< + he + hg4C3`mg4C3Pf(8fPf(xF3< +f(xF3< + he + hg4C3`mg4C3Pf(XfPf(xF3< +f(xF3< + he + hg4C3`mg4C3Pf(XfPf(xF3< +f(xF3< + hc + hg4C3`mg4C3Pf(XfPf(xF3< +f(xF3< + he + hg4C3`mg4C3Pf(XfPf(xF3< +f(xF3< + he + hg4C3`mg4C3Pf(8fPf(xF3< +f(xF3< + he + hg4C3`mg4C3Pf(XfPf(xF3< +f(xF3< + he + hg4C3`mg4C3Pf(XfPf(xF3< +f(xF3< + hc + hg4C3`mg4C3Pf(XfPf(xF3< +f(xF3< + he + hg4C3`mg4C3Pf(XfPf(xF3< +f(xF3< + he + hg4C3`mg4C3Pf(8fPf(xF3< +f(xF3< + he + hg4C3`mg4C3Pf(XfPf(xF3< +f(xF3< + he + hg4C3`mg4C3Pf(XfPf(xF3< +f(xF3< + hc + hg4C3`mg4C3Pf(XfPf(xF3< +f(xF3< + he +\7 n:``oo:㷴P||ythnZor~y7%Toܷ =|?s|kQxnqE__e{w~]MHHpȮ?xFg?xFg?Xf<#3<#3,HHlg?xFg?xFe63<#3<#2`MHH̦?xFg?xFg?Xf<#3<#3HHlg?xFg?xFe63<#3<#2`MHH̦?xFg?xFg?Xf<#3<#3,HHg?xFg<#2`MHH̦?xFg?xFg?Xf<#3<#3,HHlg?xFg?xFe63<#3<#2]HH̦?xFg?xFg?Xf<#3<#3,HHlg?xFg?xFe63<#3<#2`MHH̦?xFg?xFg?8f<#3<#3,HHlg?xFg?xFe63<#3<#2`MHH̦?xFg?xFg?Xf<#3<#3,HHlg?xFg?xFe63<#3<#2`MHH̦?xFg?xFg?Xf<#3<#3,HHlg?xFg?xFcv3<#3<#2`MHH̦?xFg?xFg?Xf7ϯ[oÿu;?{}7:Uam%!lX{˚|y/ϲ=~,u#>. 6Q'#1W8sU]b?VϜ'};lLf4=3i=R`LWPL<c41grN G{t-zg]s\Z:goݷҵu8ҵB]tWKk s{ l,~ϫ̓w)Pb&+!8ҵ@!fKXV{fgkq.z]i8>}>vjb:Nb3]x[Pӵ2;0O&0/{t-:173y`J3dQ$wģ5#;랮bCZ k?{ pLLgzµ@M>c5a,S<0P >70}G u5#=t-Q01vL9`AlFPw'}b&{G;]N3x98XkWgZ3rpiq(rWkjC6t^}v鼊#t^m_#0řΫ 98m1zOU賌t^mA3WqsjC9t^m1'Wqxt^ťSvjCL98{fI'q+?ǕΫ 98P*tHW:\CHՆΫ8^p:6 ⫧jGNNk=Ϋ9ĕΫ98Q`*= ~Ϋ8g-W`Ϋ9#HU5#gt^y zy$y#縎t^EYg:Scym0kڑ0ڑ90Xu?ڑ>V:v 6Ӛ't^E1vNU1UJ98k*yЏ=Pҵ@t^Y#W;r:Pk*GB:vu5#/y鼊4'x:\Vt^#Kbfl+9xHՎ(k(.k(Nkxt-8n<鼊38]>x@鼊s:_ 't^Y:xk`V~u qd߯ -t^EMfWr![b5 +Ϋɏ89x#~>;~:yt^Eeb߯ݎ*j*N`@mWQ|ě>0A9ȡ鼊Z-~:7:x9xΫ9x_E߯ R'~_E]߯q(ҚoZ3rƂyu o*Z iϦ*303~:W9(DkƧa: ߯x3~ 3X ;~Z9Ϋ9a9W~"_DT_EM ft^LkF>}W'rJyg~`F~u"QW'r+WQ~p:Ј߯N =~L߯ fD>JUs7՞AbW'r*>?-] *`D∄xN ּF~57;~:89_E]߯N:3W'rp=~_uD_Av9DwPZ3rpg5#m]:myu"UDqW'rp׵ rGD`_5W~u"鼊*> +?3B_ő_E~,n:43[hυ|ZZ3rpMΫrp;~ʾ}6c*:Z ?\մ~|g߯o߯o8W~}OU8*/ʾ8p$kǝ_e>xy}8Wٷ;~ʾt^e%NUS,~ʾc*Wٷ^Z\X{d'k٥kg~}Wٷ+_e*QWٷiּz~}UkWٷ=~ʾ?y}?_e&p-طRׂ}gU퟼'^X3ώ3}4-y}'o_}G߯}߯}sZ3g߯}8h۷kW߾}|۷==W߾ۿG~ۿg_{ȿƃoշw?'z7V7a_/~gOߞ qۚKwҝ_˳l؝}}_mQwC|Ϩ;3=|lQwgԝu{Fٺ=|Ϩ;3-u{FQwgԝu[f=|Ϩ;3η֝u{FQwgԝo;3=|Ϩ;2[wgԝu{FQwe|Ϩ;3=|lQwgԝu{Fٻ=|Ϩ;3-u{FQwgԝu[f=|Ϩ;3η֝u{FQwgԝo;3=|Ϩ;2[wgԝu{FQwe|Ϩ;3=|lQwgԝu{Fٺ=|Ϩ;3-u{FQwgԝu;f=|Ϩ;3η֝u{FQwgԝo;3=|Ϩ;2[wgԝu{FQweoQwgԝu{Fٺ=|Ϩ;3-u{FQwgԝu[f=|Ϩ;3η֝u{FQwgԝo;3=|Ϩ;1{wgԝu{FQwe|Ϩ;3=|lQwgԝu{Fٺ=|Ϩ;3-3ԝu{FQwgԝo;3=|Ϩ;2[wgԝu{FQwe|Ϩ;3=|lQwgԝu{Fٺ=|Ϩ;3w{FQwgԝu[f=|Ϩ;3η֝u{FQwgԝo;3=|Ϩ;2CQwgԝu{Fٺ=|Ϩ;3-u{FQwgԝu[f=|Ϩ;3η֝u{FQwgԝo;3=|Ϩ;1{wgԝu{FQwe|Ϩ;3=|lQwgԝu[f=|Ϩ;3η֝u{FQwgԝo;3=|Ϩ;2[wgԝu{FQwe|Ϩ;3=|lQwgԝu{Fٺ=|Ϩ;3w{FQwgԝu[f=|Ϩ;3η֝u{FQwgԝo;3=|Ϩ;2[wc^u[wwq;v|~y?g7~b_Q>Ͼ_{!{׽guu{F]Q׽e{Ϩ3={l]Q׽guu{F]ٺ={Ϩ3-3uu{F]Q׽guo3={Ϩ2[׽guu{F]Q׽e{Ϩ3={l]Q׽guu{F]ٺ={Ϩ3w{F]Q׽guu[f={Ϩ3꺷uu{F]Q׽guo3={Ϩ2C]Q׽guu{F]ٺ={Ϩ3-u{F]Q׽guu[f={Ϩ3꺷uu{F]Q׽guo3={Ϩ1{׽guu{F]Q׽e{Ϩ3={l]Q׽guu{F]ٺ={Ϩ3-ï۾u{F]Q׽guu[f={Ϩ3꺷uu{F]Q׽guo3={Ϩ2[׽guu{F]Q׽e{Ϩ3={]Q׽guu{F]ٺ={Ϩ3-u{F]Q׽guu[f={Ϩ3꺷P׽guu{F]Q׽e{Ϩ3={l]Q׽guu{F]ٺ={Ϩ3-u{F]Q׽guu[f={Ϩ3wuu{F]Q׽guo3={Ϩ2[׽guu{F]Q׽e{Ϩ3={l]Q׽guu{F]ٺ={Ϩ3-u{F]Q׽guu[f={Ϩ3꺷uu{F]Q׽guo3={Ϩ1{׽guu{F]Q׽e{Ϩ3={l]Q׽guu[f={Ϩ3꺷uu{F]Q׽guo3={Ϩ2[׽guu{F]Q׽e{Ϩ3={l]Q׽guu{F]ٺ={Ϩ3w{F]Q׽guu[f={Ϩ3꺷uu{F]Q׽guo3={Ϩ2[׽cu߭Ubv/|vɯnoͭ~~矿tP~ߞ[=c'>3ދ_A?x𥇿<9[|!29ޏq<@zcUVxhHcDcX1,c6E6o4~8a3X0N?_lyk/냰O;rڢl:=Q4gifikLk\3b\3ޱNA)q3SMCܧ(ƍ#YZ3&Tgܧ(Op53ӛk|s)!SMUQܧ(OQ4<{}>}q}ptoCiܧk>O|qtMM a8ĀOޖOrpȓ)B8>m܏O8l>>m'׌jZ5s:Rb.6-i6 ?5mAnpMs>Ӛ93\s[i6 42Zi6`Vڧ9ic\J1\i6`ǩ$]S`Ǐ5e>mAI>eFVb)zknU[bJ ++S 5e>e)s)sO GtM )s\+S 9aܧA|ܧmyL ܟOc N-q2Qia)s𸟴O;s`_bť'DigI(R}ڙHO;s8Oy~<}ڑ}=Oڧ9ۚ;>fpM{tMܟO{㚱5\3 p8B9>">wڧ9؟N_.>f*Gi\3>5\3*tM'׌cxA>Eq3e;S`;S`5KtM/)| 5IrGOX)r_(5E}EdZ5 +57K5.wI̠L}}z}AVP>E.)2̸>ER6>EiWڧ8G9Oqf:>9#ڧ98+ϖaIt0Qx}:(>AEi Os/@ڧ9 `i i53`-` `$]S (m}:kFz}Q3XsCY)sH)s3S iܧ6FYpXyz}ϸO͸OwH |̸O(>e( <)sfܧsθO'i2Ϧpm}<)se8lk:O's#<^dC`9H=\<ΑdHo~)3>eGڧ9~}MfOgHވi}:FڧsHtviN K#0Htv6U#Ӊl8}:\i靮?,3}:}lq"O{ܧAT=S }zqͣ}zq85_\sq\3[5=S 9P}-`>Eq"q$q>\q>\3Nd>\sq.q.hq"O S N- 9M3[ڧ5)=5؊{k>b3+v#]O/ N i^A>\ #Q.h/]AjiR.` +}J\iA`*9WG\{K}J؏D+#Q.@y(SL]xc? gG\O؏D4#Q.hݸO~`H H dq2}Ļ0S`ClGG\+)s|b?}<؏D3S V)sLslr؏D9#Q.j>e)sc?|h~$혱rAM)v؏DPGڧ V=>\Ў##rZ ^`ݱ ^`#W.X##r VH\aڧ\؏:>}fq\p~OH?6L |Z"H?7`傽'Ϗ% 8?|W={-"_ +Fo?~a㛶5އl?/Ywo3TYq9#'u #{X9.L[&7`j@\ r/"˽>.wlޢ{BG'2M_潫}Ewl* <'2\uq#2\3>"5EkFzN %q`xӌ wyבp<;:"y32\Be޽X=2{ W`xǕEK G#; 6z"5_k݁W?"5NI ︂,ͻ(pͳDu$Jbx|42\3ά2V{;qȰZ)8aSq"ҔqȰSq"j(ӹftHlj _Sq"Hlj ]S[5w.1\)8aኦD2VG=y͔qȀؙ)8aኦD^єqȰpESq"cDP-e'23Sq"Mlj fid7Nd@tc%kF2pEcƉ ]"ûxXq"B2x7qyU\{"ûg4q3q&2:ĉZ/eފ ;~.M4Ke |N%cňS}o?o,?~y%ptRSytg_kHk5x5x5x5x5XdkLkLkLkLk55555xFSSSS!05!053}^C`j^C`j^g4!05!0ԼԼh^C`j^C`y y y ѼԼSS,kLk>!05!053}^C`j^C`j^g4!05!0ԼԼh^C`j^C`y y y ѼԼSS!05!053L؏kLk6!05!0\HۼԼh^C`j^C`j^C`j^C`j^g4!05!05!05!053k̏ i5wSUl;ԃԃo)5|}>>CB _._/:,?M'tl:EXD:EXD:Cv3 <#3 <#2NNN`M'tH'tH'̦xF:gxF:gXf <#3 <#3 ,NNtH'tH'tl:gxF:gxF:e63 <#3 <#2NNN]'tH'tH'̦xF:gxF:gXf <#3 <#3 ,NNtH'tH'tl:gxF:gxF:e63 <#3 <#2NNN`M'tH'tH'̦xF:gxF:g8f <#3 <#3 ,NNtH'tH'tl:gxF:gxF:e63 <#3 <#2NNN`M'tH'tH'̦xF:gxF:gXf <#3 <#3 ,NNuH'tH'tl:gxF:gxF:e63 <#3 <#2NNN`M'tH'tH'̦xF:gxF:gXf <#3 <#3 ,NNtH'tH'tl:gxF:gxF:cv3 <#3 <#2NNN`M'tH'tH'̦xF:gxF:gXf <#3 <#3 ,NNtH'tH'tl:gxF:gxF:e63 <#3 <#2NNN]'tH'tH'̦xF:gxF:gXf <#3 <#3 ,NNtH'tH'tl:gxF:gxF:e63 <#3 <#2NNN`M'tH'tH'̦xF:gxF:g8f <#3 <#3 ,NNtH'tH'tl:gxF:gxF:e61s?ߡ6:;?{u JIz}ywdW Ky!ϾxH1H))#xlA`J1L)) 0xFA`J1L)) 0xFA`J1L)) 0xFA`J1L)) 0xFA`J1L)) 0xFA`J1L)) 0xFA`J1L)) 0xFA`J1L)) 0xFA`J1L)) 0xFA`J1L)) 0XfS SA`J1L))3R SA`J1L))3R SA`J1L))3R SA`J1L))3R SA`J1L))3R SA`J1L))3R SA`J1L))3R SA`J1L))3R SA`J1L))3R SA`J1L))2bR SA`J1L)bR SA`J1L)bR SA`J1L)bR SA`J1L)bR SA`J1L)bR SA`J1L)bR SA`J1L)bR SA`J1L)bR SA`J1L)bR SA`J1L)bR SA`J1bR SA`J1bR SA`J1bR SA`J1bR SA`J1bR SA`J1bR SA`J1bR SA`J1bR SA`J1bR SA`J1̦bR SgbR SgbR SgbR SgbR SgbR SgbR SgbR SgbR SgbR Se6 0bR <# 0bR <# 0bR <# 0bR <# 0bR <# 0bR <# 0bR <# 0bR <# 0bR <# 0bR ,)) 0b)) 0b)) 0b)) 0b)Q1K1+?T |}W1ԁ۴?= +PT/@ؘ/ϲ=F}}lE8d,"",""kFiFi4H#4H#4lgxFgxFe63<#3<#2FiFiF`M#4H#4H#̦xFgxFgXf<#3<#3,iFiFi4H#4H#4gxFgxFe63<#3<#2FiFiF`M#4H#4H#̦xFgxFgXf<#3<#3,iFiFi4H#4H#4lgxFgxFe63<#3<#1FixFgXf<#3<#3,iFiFi4H#4H#4lgxFgxFe63<#3<#2FiFiF`M#4H#4H#̦xFgxFgXf<#3<#3kFiFi4H#4H#4lgxFgxFe63<#3<#2FiFiF`M#4H#4H#̦xFgxFgXf<#3<#3,iFiFi4H#4H#4gxFgxFe63<#3<#2FiFiF`M#4H#4H#̦xFgxFgXf<#3<#3,iFiFi4H#4H#4lgxFgxFe63<#3<#1FiFiF`M#4H#4H#̦xFgxFgXf<#3<#3,iFiFi4H#4H#4lgxFgxFe63<#3<#2FiFiF`M#4H#4H#p̮xFgxFgXf<#3<#3,iFiFi4H#4H#4lc>uKk4>b\#xAgFpD#|F@}`~L0t1<8L-:_=E-@(_e{w~ZM-H-H-pȮxFjgxFjgXfS <#3R <#3R ,ZQjgxFje63R <3J-H-̦xFjgFZH-(3R <#2ZxFjgXfS <#3H-ljgxfZZ`M-όR <#3R ZQjgxFje63R <3J-H-̦xFjgX|ZH-(3R <#2ZxFjgXfS <#3H-ljgxfZZ`M-όR <#3R ,ZQjgxFje63R <3J-H-p̮xFjgFZH-H-ljgxFj%d& ?fz.}O$:ڤJ-`: i5#-pCZ i5#-pCZ i5#-pCZ i5#-pCZ i5#-pCZ i5#-pCZ i5#-pCZ i33-pCZ i5#-pCZ i5#-pCZ i5#-pCZ i5#-pCZ i5#-pCZ i5#-pCZ i5#-pCZ i5#-pCZ i5#-pCZ i33-pCZ i5#-pCZ i5#-pCZ i5#-pCZ i5#-pCZ i5#-pCZ i5#-pCZ i5#-pCZ i5#-pCZ i5#-pCZ i33-pCZ i5#-pCZ i5#-pCZ i5#-pCZ i5#-pCZ i5#-pCZ i5#-pCZ i5#-pCZ i5#-pCZ i5#-pCZ i33-pCZ i5#-pCZ i5#-pCZ i5#-pCZ i5#-0ýsH ~XZp1-?_N 1+I\ sNxxe><~gnvF_'y}?|;9yYFRJGO ٧~}ǃF^ti!ts#t_K#tǵuvq}?1wN~}ܫYg|Z>fsx\/Śz^Y编k5׷ۭ:լs^լs~kf|V25}Ώש}׹}ίץ^j9?/f}[?tTy}ݫY缾=|s^b}k5fNY_Tyfzu_s^j9nWn9G5g5BAcܖ^^s[62v^zme[[e f:]mm;o(/s^].s?m=z=k +}ץpk7evˬ\mMYkU -s5nT|\w었s^{f׶ƭ2h5wxQ:u]:k[ָuen׶ƭgEws_ws^fw>׭q+eoLwYz5qf:EjfzF+]nﷶ]nG[.>fhkek9wYk=mup?muѶƭKpָYf|?ws~ԭYn>Wݼ]:6xj9^[.{\[]:xmuekָ^{]:ymupmw5kkekW׸^[{_>kkukָ^u^^q׽_uw5kkukָ^^q׽^[{\{]:}ukָ^^q׽^[{\{]:<}ukָ^^q׽^[{\{]:|}ukָ^;լs^]:^@5⯭q׽.muu^ָׂ^7]:5u5jkܮ!?kp[v oָ]Cgv qZ{bU>{b]uk5nkkܮ!=nլs^{b(qXhzm5ik^qX>nkUq8^[v .պ5imk{]Cgv quk^qXT>n;lkܮ!NWf9_uk5nk^qz[v qZz[v qZߤkm5ikzkzk-v qZz[v wm5z>nkkܮ!N;fv ^}ܮ!Nkָ]C]Cev qZ{b>nY5n]C^q8^[v ^D}ܮ!Nkָ]C^q8^]:zm5ڽ}ܮ!v0fQq8^[v qZ{b]C5ik5nöupkï]C+v qZ{zm5z1_qm|[v Pq8^[v ^f}ܮ!Nkָ]C~}ܮ!Nq]C^q8`ukָ(exzm5ڽ}Ǐ^q8uk55n~Fm56!m5}ܮ!_[v vukiYSv q^A[v q7f'v qmkZլs^{ƭuzm5ykï]C+v q^{b߃qX(j9_Nuk5n\q8^[v q^{W55@k5n睽5 +t'eM5yk5nR]Cw)еkkܮ!v 5yk5ns⼮obZ:ue5nue5nkkܮ!qWF[v q^WF[v qwhUqX`^ 5nqXV>nVqX;5ĺ2>nkkܮ!kָ]C^qX/$>nkkܮ!kW׸^[v q^Xkָ]Cָ]C缶Mupkb55]C<.u!^qqw zm{kָw zm{wTkkܻX{}!u}Zq_k>;w3kk%c5vv75_{ ?Vc}~nyW*,uח/^ޗ?e<~dY`_Z]{;Zy9]Gެ.GVziYk{i1}Ѯյ +^]k\ef׾q+my?5یzkuZ q.b^v6v5swq}}כbv6WVwozu.K=αjn3w\͸]?+f{³g{CvپsVwq[O'p컷Y=¥.vuv8=qyi1zupb{9tyiCG:RV:!܎v}׿b=jծǞf^{ܮյ4vvTs|֮յ֫GV:xlYVЎ<۵ckuzY^tn3ܹKV:xvub9_v:Ѯf +kuZ8o'mY缾!klku~Evqy]c8筽5یv8k<;};Zkjn3m^#Xߞ/mیcln3"mƺ=f=uί^ck<|ڵ㵖zuίW3/[}ߚ]k%z{d~=αި4_d7ykY_4r=n3 {{d:\ZmY~Or]:mOr]8]ku|m2K{ri{صZfrZ]>u'd$kϴs~V:.eܬ}2χY<^m6y˼]R:׾7W3_g{l{ص?v:G{~᱖>-=mGn3'Y/;l:߱j{صS^vkZؗy$k/q=$>]y}Zדum:s6y%g=uEv{d}$k߹k'kl]k|gj{Z+W:?ݮյ>g{sd3뜟G:ڵh}^Rq9"8w>m߲t>$}϶hMNaomӭOe>m߷m߈g߸=m߹m-}۾u帴Inmq}huvƎ}Or{Or{ݮ=nSƎ}=b\Ǿw~iSwmkԮc߻m.qy#'9q=^v{]}}'9޻~¿/5wh{=>ɱݶoRՎ5ݶV>ɱz$}I[qnן>ɱ[TQzV>٦]lI_cWgtj_>ɱY6j}7P{b}v>ɱYs{=k.=k}}Ϛ}fTc߳~5ǽOrR9$ǾgZ??=kY}߳汞r=k[{~z~y>g}Ϛ}3re\$}Ϛף~ֿی.8\mz~n6#z}OKjn3?X?$w6^kl7-}_[g{nYջݐ}f|mv*^cQ\/$X>n3Nmzw|nOی'mq6c]fK{d۵[~ֿیӾ[=W_>n3Jyn6cw}f^Y8kQ$6t߿6w~On3dzOn3ۇ8'w.vی'ySf\w'kf\_G{f.wq;g6c[wqo}wmImz6chػX T{foT}wqm${.oc6\?fNc;^FOی_?fw^o3=7m,~qb?t?twߧ]cΤTЊcoQSLx6GvƯ h@Q$3*dFfT8Ɍ +'Q$3*dFfT8Ɍ +'Q$3*dF1̨(&3*Ɍb2 3*Ɍb2̨(&3*0̨(&3*Ɍb2 3*Ɍb2̨(&3*0̨(&3*Ɍb2 3*Ɍb2̨(&3*0̨(&3*Ɍb2 3*Ɍb2̨(&3*0̨(&3*Ɍb2 3*Ɍb2̨(&3*ԌdFE1QQLfTnQQLfTdFE1QdFE1QQLfTnQQLfTdFE1QdFE1QQLfTnQQLfTdFE1QdFE1QQLfTnQQLfTdFE1QdFE1QQLfTnQQLfTdFE1Qf̨(&3*Ɍb2̨pÌb2̨(&3*Ɍ +7̨(&3*Ɍb2̨pÌb2̨(&3*Ɍ +7̨(&3*Ɍb2̨pÌb2̨(&3*Ɍ +7̨(&3*Ɍb2̨pÌb2̨(&3*0̨(&3*Ɍb2 3*Ɍb2̨(&3*ԌdFE1QQLfTnQQLfTdFE1QdFE1QQLfTnQQLfTdFE1QdFE1QQLfTnQQLfTdFE1QdFE1QQLfTnQQLfTdFE1QdFE1QQLfTnQQLfTdFE1Qf̨(&3*Ɍb2̨pÌb2̨(&3*Ɍ +7̨(&3*Ɍb2̨pÌb2̨(&3*Ɍ +7̨(&3*Ɍb2̨pÌb2̨(&3*Ɍ +7̨(&3*Ɍb2̨pÌb2̨(&3*Ɍ +7̨(&3*Ɍb2̨pÌb2̨(&3*Ɍ +5cFE1QQLfTdFfTdFE1QQLfTaFE1QQLfTdFfTdFE1QQLfTaFE1QQLfTdFfTdFE1QQLfTaFE1QQLfTdFfTdFE1QQLfTaFE1QQLfTdFfTdFE1QQLfT3*Ɍb2̨(&3*0̨(&3*Ɍb2 3*Ɍb2̨(&3*0̨(&3*Ɍb2 3*|qwzF?Aۂ:i3*>gӷ;p2Ak:NX_>o~>D9H@qޓ#uzOG brL| '֯UCQT|!xC^$=)b uva_ !x?BBłQ㟯 ~UFB !B(!PBB !B(!PBB !B!pC !B!pC !B!pC !B!pC !B!pC !B!pC !B!pC !B!pC !B!pC !B!pC !B!pC !B!pC !B!pC !B!pC !B!pC !B!pC !B!pC !B!pC !B!pC !B!pC !B!pC !B!pC !B!pC !B!pC !B!pC !B!pC !B!pC !B!pCB!B!pCB!B!pC !B!pCB!B!pCB!B!pCB!B!pCB!B!pCB!B!pCB!B!pCB!B!pCB!B!pCB!B!pC !B!pCB!B!pCB!B!pCB!B!pCB!B!pCB!B!pCB!B!pCB!B!pCB!B!pCB!B!pC !B!pCB!B!pCB!B!pCB!B!pCB!B!pCB!B!pCB!B!pCB!B!pCB!B!pCB!B!pC !B!pCB!B!pCB!B!pCB!B!pCB!p~!?b!ִbOؑ_/Fy幟Exxe<*K$QDJ"$p(I'"E8I$QDNE(QD1"IQLbE!(&QD1"IQL7D$(&QD1"I(D$(&QD1"E(D$(&QbE(D$pCQLbE(Dn"IQLbE( QD1"IQLbE!(&QD1"IQL5#(&QD1"IQL7D$(&QD1"I(D$(&QD1"E(D$(&QbE(D$pCQLbE(Dn"IQLbE( QD1"IQLbE!(&QD1"IQL7D$(&QD1"IfD$(&QD1"I(D$(&QD1"E(D$(&QbE(D$pCQLbE(Dn"IQLbE( QD1"IQLbE!(&QD1"I(D$(&QD1"E(D$(&QE(D$(&Q _bE(D$pCQLbE(Dn"IQLbE( QD1"IQLbE!(&QD1"IQL7D$(&QD1"I(D$(&QD1"E(D$(&QbE(D$P3bE(D$pkQLbE(Dn"IQLbE( QD1"IQLbE!(&QD1"IQL7D$(&QD1"I(D$(&QD1"E(D$(&QbE(D$pCQLbE(DjFQLbE(DnΉ"IQLbE( QD1"IQLbE!(&QD1"IQL7D$(&QD1"I(D$(&QD1"E(D$(&QbE(D$pCQLbE(Dn"IQLbE(B͈"IQLbE(9QD1"IQLbE!(&QD1"IQL7D$(&QD1"I(B32N7?E<ԣcnEߣj8߼(s:b]e~*>(!*#PB!B(!PB!B(!PB !B!pCB!B!pCB!B!pCB!B!pCB!B!pCB!B!pCB!B!pCB!B!pCB!B!pCB!B!pC !B!pCB!B!pCB!B!pCB!B!pCB!B!pCB!B!pCB!B!pCB!B!pCB!B!pCB!B!pC !B!pCB!B!pCB!B!pCB!B!pCB!B!pCB!B!pCB!B!pCB!B!pCfn!B!pCfn!B!pCafn!B!pCf-pC !B5#pC !B5#pC !B5#pC !B5#pC !B5#pC !B5#pC !B5#pC !B5#pC !B33pC !B5#pC !B5#pC !B5#pC !B5#pC !B5#pC !B5#pC !B5#pC !B5#pC !B5#pC !B33pC !B5#pC !B5#pC !B5#pC !B5#pC !B5#pC !B5#pC !B5#pC !B5#pC !B5#pC !B33pC !B5#pC !B5#pC !B5#pC !B5#0}߃_X_{B/:B|8{:o}!_cNa7=Xb/!ϣ?_=ڧ+XB b ##PB,XB b ##PB,XB b #3pC,X b 5#pC,X b 5#pC,X b 5#pC,X b 5#pC,X b 5#pC,X b 5#pC,X b 5#pC,X b 5#pC,X b 5#pC,X b 33pC,X b 5#pC,X b 5#pC,X b 5#pC,X b 5#pC,X b 5#pC,X b 5#pC,X b 5#pC,X b 5#pC,X b 5#pC,X b 33pC,X b 5#pC,X b 5#pC,X b 5#pC,X b 5#pC,X b 5#pC,X b 5#pC,X b 5#pC,X K!pC,X K!pC,X K!pC,X K!pC,X K!pC,X K!pC,X K!pC,X K!pC,X K!pC,X K!pC,X K!pC,X K!pC,X K!pC,X K!pC,X K!pC,X K!pC,X K!pC,X K!pC,X K!pC,X K!pC,X K!pC,X K!pC,X K!pC,X K!pC,X K!pC,X K!pC,X K!pC,X K!pC,X K!pC,X K!pC,X K!pC,X K!pC,X K!pC,X K!pC,X K!pC,X K!pC,X Ka6@ F,sbe]&%Ԉ_{,NJ,8buv׿G:!z&(W"zPBȈ=(!zPBȈ=(!zPBȌ=!zpCA͈=!zpCA͈=!zpCA͈=!zpCA͈=!zpCA͈=!zpCA͈=!zpCA͈=!zpCA͈=!zpCA͈=!zpČ=!zpCA͈=!zpCA͈=!zpCA͈=!zpCA͈=!zpCA͈=!zpCA͈=!zpCA͈=!zpCA͈=!zpCA͈=!zpČ=!zpCA͈=!zpCA͈=!zpCA͈=!zpCA͈=!zpCA͈=!zpCA͈=!zpCA͈=!zpCfDn=!zpCfDn=!zpC`fFn=!zpCfDn=!zpCfDn=!zpCfDn=!zpCfDn=!zpCfDn=!zpCfDn=!zpCfDn=!zpCfDn=!zpCfDn=!zpC`fFn=!zpCfDn=!zpCfDn=!zpCfDn=!zpCfDn=!zpCfDn=!zpCfDn=!zpCfDn=!zpCfDn=!zpCfDn=!zpC`fFn=!zpCfDn=!zpCfDn=!zpCfDn=!zpCfDn=!zpCfDn=!zpCfDn=!zpCfDn=!zpCfDn=!zpCfDn=!zpC`fFn=!zpCfDn=!zpCfDn=!zpCfDn=!zpCfDf~FsǢc/_~u댆Çg<;1po_1!"S!GMx]~f$1Oyfڧ+0DNI(!pHI" '$$PB$$DNI8I$dD$(&D1$I$HD$(&D1$IHD$(&"bIHD$pC$QL"bIHDn$I$QL"bIH D1$I$QL"bI!(&D1$I$QL" 7D$(&D1$I$HD$(&D1$ԌHD$(&D1$IHD$(&"bIHD$pC$QL"bIHDn$I$QL"bIH D1$I$QL"bI!(&D1$I$QL" 7D$(&D1$I$HD$(&D1$IHD$(&IHD$(&"bIHD$pC$QL"bIHDn$I$QL"bIH D1$I$QL"bI!(&D1$I$QL" 7D$(&D1$I$HD$(&"bIHD$pC$QL"bIHDjF$QL"bIHDn$I$QL"bIH%D1$I$QL"bI!(&D1$I$QL" 7D$(&D1$I$HD$(&D1$IHD$(&"bIHD$pC$QL"bIHDn$I$QL"bIHB͈$I$QL"bIH D1$I$QL"bI$(&D1$I$QL" 7D$(&D1$I$HD$(&D1$IHD$(&"bIHD$pC$QL"bIHDn$I$QL"bIH D1$I$QL"bID1$I$QL"bI!(&D1$I$QL" 7D$(&D1$I$HD$(&D1$IHD$(&"bIHD$pC$QL"bIHDn$I$QL"bIH D1$I$QL"bI!(&D1$I$QL" 5#(&D1$I$QL" 7D$(&D1$I$HD$(&D1$IHD$(&" 5?x߈$~T$ZE<$ocCM8~IJPh>JP}4 R~4 %p4ꏆ4 )4 %i(HC@ +i(!HC)AJ +PZAJ Pr҃4 4&D! +),t! % i(eHCIC + i(qHCCJPDJ!P҈4H *4N" )T" %i(HCE^# i(HCiF +"i(HCFJ7P‘(GJ:Pڑ4z ҏ4$ %!)D$ "i(ICH +"$i(%ICIIJKPbIJNPz4 Ҕ4T% %+)% ,i(iICiK +".i(uICKJ_PG0i(ICiLJdP*LJgPBR4Ԥ Z4ڤ& 7)ड' %9i(ICN +:qÔ le'_FvϿ3;Y_';-YK_/6ǿOz}+zIs{k2"}\{Zٿ8^<'Vk2O?oWHY}?^k endstream endobj -442 0 obj +329 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 441 0 R +/Contents 328 0 R /Resources 4 0 R -/Annots [ 443 0 R 444 0 R 445 0 R 446 0 R 447 0 R 448 0 R 449 0 R 450 0 R 451 0 R 452 0 R 453 0 R 454 0 R 455 0 R 456 0 R 457 0 R 458 0 R 459 0 R 460 0 R 461 0 R 462 0 R 463 0 R 464 0 R 465 0 R 466 0 R 467 0 R 468 0 R 469 0 R 470 0 R 471 0 R 472 0 R 473 0 R 474 0 R 475 0 R 476 0 R 477 0 R 478 0 R 479 0 R 480 0 R 481 0 R 482 0 R 483 0 R 484 0 R 485 0 R 486 0 R 487 0 R 488 0 R 489 0 R 490 0 R 491 0 R 492 0 R 493 0 R 494 0 R 495 0 R 496 0 R 497 0 R 498 0 R 499 0 R 500 0 R 501 0 R 502 0 R 503 0 R 504 0 R 505 0 R 506 0 R 507 0 R 508 0 R ] +/Annots [ 330 0 R 331 0 R 332 0 R 333 0 R 334 0 R 335 0 R 336 0 R 337 0 R 338 0 R 339 0 R 340 0 R 341 0 R 342 0 R 343 0 R 344 0 R 345 0 R 346 0 R 347 0 R 348 0 R 349 0 R 350 0 R 351 0 R 352 0 R 353 0 R 354 0 R 355 0 R 356 0 R 357 0 R 358 0 R 359 0 R 360 0 R 361 0 R 362 0 R 363 0 R 364 0 R 365 0 R 366 0 R 367 0 R 368 0 R 369 0 R 370 0 R 371 0 R 372 0 R 373 0 R 374 0 R 375 0 R 376 0 R 377 0 R 378 0 R 379 0 R 380 0 R 381 0 R 382 0 R 383 0 R 384 0 R 385 0 R 386 0 R 387 0 R 388 0 R 389 0 R 390 0 R 391 0 R 392 0 R 393 0 R 394 0 R 395 0 R 396 0 R 397 0 R 398 0 R 399 0 R 400 0 R 401 0 R 402 0 R 403 0 R 404 0 R 405 0 R 406 0 R 407 0 R 408 0 R 409 0 R 410 0 R 411 0 R 412 0 R 413 0 R 414 0 R 415 0 R 416 0 R 417 0 R 418 0 R 419 0 R 420 0 R 421 0 R 422 0 R 423 0 R 424 0 R 425 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -443 0 obj +330 0 obj << /Type /Annot /Subtype /Link -/Rect [ 47.386457 771.023622 555.889134 750.353622 ] +/Rect [ 55.386457 771.023622 555.889134 750.353622 ] /BS << /W 0 >> -/Dest (INXWIZI/) +/Dest (ManuelUtilisateur/:a-quoi-sert-lapp) >> endobj -444 0 obj +331 0 obj << /Type /Annot /Subtype /Link -/Rect [ 47.386457 765.503622 63.334211 751.103622 ] +/Rect [ 55.386457 765.503622 77.060285 751.103622 ] /BS << /W 0 >> -/Dest (INXWIZI/) +/Dest (ManuelUtilisateur/:a-quoi-sert-lapp) >> endobj -445 0 obj +332 0 obj << /Type /Annot /Subtype /Link @@ -5916,10 +4600,10 @@ endobj /BS << /W 0 >> -/Dest (INXWIZI/) +/Dest (ManuelUtilisateur/:a-quoi-sert-lapp) >> endobj -446 0 obj +333 0 obj << /Type /Annot /Subtype /Link @@ -5927,10 +4611,10 @@ endobj /BS << /W 0 >> -/Dest (Code/ConfigurationTool/:configurationtoolcs) +/Dest (ManuelUtilisateur/:utilisation-simple) >> endobj -447 0 obj +334 0 obj << /Type /Annot /Subtype /Link @@ -5938,10 +4622,10 @@ endobj /BS << /W 0 >> -/Dest (Code/ConfigurationTool/:configurationtoolcs) +/Dest (ManuelUtilisateur/:utilisation-simple) >> endobj -448 0 obj +335 0 obj << /Type /Annot /Subtype /Link @@ -5949,32 +4633,32 @@ endobj /BS << /W 0 >> -/Dest (Code/ConfigurationTool/:configurationtoolcs) +/Dest (ManuelUtilisateur/:utilisation-simple) >> endobj -449 0 obj +336 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 729.683622 555.889134 709.013622 ] +/Rect [ 63.386457 729.683622 555.889134 709.013622 ] /BS << /W 0 >> -/Dest (Code/DriverData/:driverdatacs) +/Dest (ManuelUtilisateur/:recuperer-le-lien-vers-le-flux) >> endobj -450 0 obj +337 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 724.163622 77.060285 709.763622 ] +/Rect [ 63.386457 724.163622 93.647199 709.763622 ] /BS << /W 0 >> -/Dest (Code/DriverData/:driverdatacs) +/Dest (ManuelUtilisateur/:recuperer-le-lien-vers-le-flux) >> endobj -451 0 obj +338 0 obj << /Type /Annot /Subtype /Link @@ -5982,32 +4666,32 @@ endobj /BS << /W 0 >> -/Dest (Code/DriverData/:driverdatacs) +/Dest (ManuelUtilisateur/:recuperer-le-lien-vers-le-flux) >> endobj -452 0 obj +339 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 709.013622 555.889134 688.343622 ] +/Rect [ 63.386457 709.013622 555.889134 688.343622 ] /BS << /W 0 >> -/Dest (Code/DriverGapToLeaderWindow/:drivergaptoleaderwindowcs) +/Dest (ManuelUtilisateur/:boutons) >> endobj -453 0 obj +340 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 703.493622 77.060285 689.093622 ] +/Rect [ 63.386457 703.493622 93.647199 689.093622 ] /BS << /W 0 >> -/Dest (Code/DriverGapToLeaderWindow/:drivergaptoleaderwindowcs) +/Dest (ManuelUtilisateur/:boutons) >> endobj -454 0 obj +341 0 obj << /Type /Annot /Subtype /Link @@ -6015,10 +4699,10 @@ endobj /BS << /W 0 >> -/Dest (Code/DriverGapToLeaderWindow/:drivergaptoleaderwindowcs) +/Dest (ManuelUtilisateur/:boutons) >> endobj -455 0 obj +342 0 obj << /Type /Annot /Subtype /Link @@ -6026,10 +4710,10 @@ endobj /BS << /W 0 >> -/Dest (Code/DriverNameWindow/:drivernamewindowcs) +/Dest (ManuelUtilisateur/:calibration) >> endobj -456 0 obj +343 0 obj << /Type /Annot /Subtype /Link @@ -6037,10 +4721,10 @@ endobj /BS << /W 0 >> -/Dest (Code/DriverNameWindow/:drivernamewindowcs) +/Dest (ManuelUtilisateur/:calibration) >> endobj -457 0 obj +344 0 obj << /Type /Annot /Subtype /Link @@ -6048,32 +4732,32 @@ endobj /BS << /W 0 >> -/Dest (Code/DriverNameWindow/:drivernamewindowcs) +/Dest (ManuelUtilisateur/:calibration) >> endobj -458 0 obj +345 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 667.673622 555.889134 647.003622 ] +/Rect [ 63.386457 667.673622 555.889134 647.003622 ] /BS << /W 0 >> -/Dest (Code/DriverSectorWindow/:driversectorwindowcs) +/Dest (ManuelUtilisateur/:pourquoi-calibrer-lapplication-et-creer-un-preset) >> endobj -459 0 obj +346 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 662.153622 77.060285 647.753622 ] +/Rect [ 63.386457 662.153622 93.647199 647.753622 ] /BS << /W 0 >> -/Dest (Code/DriverSectorWindow/:driversectorwindowcs) +/Dest (ManuelUtilisateur/:pourquoi-calibrer-lapplication-et-creer-un-preset) >> endobj -460 0 obj +347 0 obj << /Type /Annot /Subtype /Link @@ -6081,32 +4765,32 @@ endobj /BS << /W 0 >> -/Dest (Code/DriverSectorWindow/:driversectorwindowcs) +/Dest (ManuelUtilisateur/:pourquoi-calibrer-lapplication-et-creer-un-preset) >> endobj -461 0 obj +348 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 647.003622 555.889134 626.333622 ] +/Rect [ 63.386457 647.003622 555.889134 626.333622 ] /BS << /W 0 >> -/Dest (Code/F1TVEmulator/:f1tvemulatorcs) +/Dest (ManuelUtilisateur/:comment-creer-son-preset) >> endobj -462 0 obj +349 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 641.483622 77.060285 627.083622 ] +/Rect [ 63.386457 641.483622 93.647199 627.083622 ] /BS << /W 0 >> -/Dest (Code/F1TVEmulator/:f1tvemulatorcs) +/Dest (ManuelUtilisateur/:comment-creer-son-preset) >> endobj -463 0 obj +350 0 obj << /Type /Annot /Subtype /Link @@ -6114,32 +4798,21 @@ endobj /BS << /W 0 >> -/Dest (Code/F1TVEmulator/:f1tvemulatorcs) +/Dest (ManuelUtilisateur/:comment-creer-son-preset) >> endobj -464 0 obj +351 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 626.333622 555.889134 605.663622 ] +/Rect [ 71.386457 626.333622 555.889134 605.663622 ] /BS << /W 0 >> -/Dest (Code/Form1/:form1cs) +/Dest (ManuelUtilisateur/:creation-des-zones-et-des-windows) >> endobj -465 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 620.813622 77.060285 606.413622 ] -/BS << -/W 0 ->> -/Dest (Code/Form1/:form1cs) ->> -endobj -466 0 obj +352 0 obj << /Type /Annot /Subtype /Link @@ -6147,32 +4820,21 @@ endobj /BS << /W 0 >> -/Dest (Code/Form1/:form1cs) +/Dest (ManuelUtilisateur/:creation-des-zones-et-des-windows) >> endobj -467 0 obj +353 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 605.663622 555.889134 584.993622 ] +/Rect [ 71.386457 605.663622 555.889134 584.993622 ] /BS << /W 0 >> -/Dest (Code/Program/:programcs) +/Dest (ManuelUtilisateur/:ajout-du-nom-des-pilotes) >> endobj -468 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 600.143622 77.060285 585.743622 ] -/BS << -/W 0 ->> -/Dest (Code/Program/:programcs) ->> -endobj -469 0 obj +354 0 obj << /Type /Annot /Subtype /Link @@ -6180,32 +4842,21 @@ endobj /BS << /W 0 >> -/Dest (Code/Program/:programcs) +/Dest (ManuelUtilisateur/:ajout-du-nom-des-pilotes) >> endobj -470 0 obj +355 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 584.993622 555.889134 564.323622 ] +/Rect [ 71.386457 584.993622 555.889134 564.323622 ] /BS << /W 0 >> -/Dest (Code/Settings.Designer/:settingsdesignercs) +/Dest (ManuelUtilisateur/:sauvegarder-le-nouveau-preset) >> endobj -471 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 55.386457 579.473622 77.060285 565.073622 ] -/BS << -/W 0 ->> -/Dest (Code/Settings.Designer/:settingsdesignercs) ->> -endobj -472 0 obj +356 0 obj << /Type /Annot /Subtype /Link @@ -6213,32 +4864,32 @@ endobj /BS << /W 0 >> -/Dest (Code/Settings.Designer/:settingsdesignercs) +/Dest (ManuelUtilisateur/:sauvegarder-le-nouveau-preset) >> endobj -473 0 obj +357 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 564.323622 555.889134 543.653622 ] +/Rect [ 63.386457 564.323622 555.889134 543.653622 ] /BS << /W 0 >> -/Dest (Code/SqliteStorage/:sqlitestoragecs) +/Dest (ManuelUtilisateur/:load-un-preset-existant) >> endobj -474 0 obj +358 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 558.803622 82.786359 544.403622 ] +/Rect [ 63.386457 558.803622 93.647199 544.403622 ] /BS << /W 0 >> -/Dest (Code/SqliteStorage/:sqlitestoragecs) +/Dest (ManuelUtilisateur/:load-un-preset-existant) >> endobj -475 0 obj +359 0 obj << /Type /Annot /Subtype /Link @@ -6246,10 +4897,10 @@ endobj /BS << /W 0 >> -/Dest (Code/SqliteStorage/:sqlitestoragecs) +/Dest (ManuelUtilisateur/:load-un-preset-existant) >> endobj -476 0 obj +360 0 obj << /Type /Annot /Subtype /Link @@ -6257,21 +4908,21 @@ endobj /BS << /W 0 >> -/Dest (Code/Zone/:zonecs) +/Dest (ManuelUtilisateur/:comprendre-les-donnees) >> endobj -477 0 obj +361 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 538.133622 82.786359 523.733622 ] +/Rect [ 55.386457 538.133622 77.060285 523.733622 ] /BS << /W 0 >> -/Dest (Code/Zone/:zonecs) +/Dest (ManuelUtilisateur/:comprendre-les-donnees) >> endobj -478 0 obj +362 0 obj << /Type /Annot /Subtype /Link @@ -6279,32 +4930,32 @@ endobj /BS << /W 0 >> -/Dest (Code/Zone/:zonecs) +/Dest (ManuelUtilisateur/:comprendre-les-donnees) >> endobj -479 0 obj +363 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 522.983622 555.889134 502.313622 ] +/Rect [ 63.386457 522.983622 555.889134 502.313622 ] /BS << /W 0 >> -/Dest (Code/DataWrapper/:datawrappercs) +/Dest (ManuelUtilisateur/:overtakes) >> endobj -480 0 obj +364 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 517.463622 82.786359 503.063622 ] +/Rect [ 63.386457 517.463622 93.647199 503.063622 ] /BS << /W 0 >> -/Dest (Code/DataWrapper/:datawrappercs) +/Dest (ManuelUtilisateur/:overtakes) >> endobj -481 0 obj +365 0 obj << /Type /Annot /Subtype /Link @@ -6312,32 +4963,32 @@ endobj /BS << /W 0 >> -/Dest (Code/DataWrapper/:datawrappercs) +/Dest (ManuelUtilisateur/:overtakes) >> endobj -482 0 obj +366 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 502.313622 555.889134 481.643622 ] +/Rect [ 63.386457 502.313622 555.889134 481.643622 ] /BS << /W 0 >> -/Dest (Code/DriverDrsWindow/:driverdrswindowcs) +/Dest (ManuelUtilisateur/:last-five-laps) >> endobj -483 0 obj +367 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 496.793622 82.786359 482.393622 ] +/Rect [ 63.386457 496.793622 93.647199 482.393622 ] /BS << /W 0 >> -/Dest (Code/DriverDrsWindow/:driverdrswindowcs) +/Dest (ManuelUtilisateur/:last-five-laps) >> endobj -484 0 obj +368 0 obj << /Type /Annot /Subtype /Link @@ -6345,32 +4996,32 @@ endobj /BS << /W 0 >> -/Dest (Code/DriverDrsWindow/:driverdrswindowcs) +/Dest (ManuelUtilisateur/:last-five-laps) >> endobj -485 0 obj +369 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 481.643622 555.889134 460.973622 ] +/Rect [ 63.386457 481.643622 555.889134 460.973622 ] /BS << /W 0 >> -/Dest (Code/DriverLapTimeWindow/:driverlaptimewindowcs) +/Dest (ManuelUtilisateur/:battles) >> endobj -486 0 obj +370 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 476.123622 82.786359 461.723622 ] +/Rect [ 63.386457 476.123622 93.647199 461.723622 ] /BS << /W 0 >> -/Dest (Code/DriverLapTimeWindow/:driverlaptimewindowcs) +/Dest (ManuelUtilisateur/:battles) >> endobj -487 0 obj +371 0 obj << /Type /Annot /Subtype /Link @@ -6378,32 +5029,32 @@ endobj /BS << /W 0 >> -/Dest (Code/DriverLapTimeWindow/:driverlaptimewindowcs) +/Dest (ManuelUtilisateur/:battles) >> endobj -488 0 obj +372 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 460.973622 555.889134 440.303622 ] +/Rect [ 63.386457 460.973622 555.889134 440.303622 ] /BS << /W 0 >> -/Dest (Code/DriverPositionWindow/:driverpositionwindowcs) +/Dest (ManuelUtilisateur/:driver-infos) >> endobj -489 0 obj +373 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 455.453622 82.786359 441.053622 ] +/Rect [ 63.386457 455.453622 93.647199 441.053622 ] /BS << /W 0 >> -/Dest (Code/DriverPositionWindow/:driverpositionwindowcs) +/Dest (ManuelUtilisateur/:driver-infos) >> endobj -490 0 obj +374 0 obj << /Type /Annot /Subtype /Link @@ -6411,32 +5062,32 @@ endobj /BS << /W 0 >> -/Dest (Code/DriverPositionWindow/:driverpositionwindowcs) +/Dest (ManuelUtilisateur/:driver-infos) >> endobj -491 0 obj +375 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 440.303622 555.889134 419.633622 ] +/Rect [ 63.386457 440.303622 555.889134 419.633622 ] /BS << /W 0 >> -/Dest (Code/DriverTyresWindow/:drivertyreswindowcs) +/Dest (ManuelUtilisateur/:live-ranking) >> endobj -492 0 obj +376 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 434.783622 82.786359 420.383622 ] +/Rect [ 63.386457 434.783622 93.647199 420.383622 ] /BS << /W 0 >> -/Dest (Code/DriverTyresWindow/:drivertyreswindowcs) +/Dest (ManuelUtilisateur/:live-ranking) >> endobj -493 0 obj +377 0 obj << /Type /Annot /Subtype /Link @@ -6444,10 +5095,10 @@ endobj /BS << /W 0 >> -/Dest (Code/DriverTyresWindow/:drivertyreswindowcs) +/Dest (ManuelUtilisateur/:live-ranking) >> endobj -494 0 obj +378 0 obj << /Type /Annot /Subtype /Link @@ -6455,21 +5106,21 @@ endobj /BS << /W 0 >> -/Dest (Code/OcrImage/:ocrimagecs) +/Dest (ManuelUtilisateur/:erreurs) >> endobj -495 0 obj +379 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 414.113622 82.786359 399.713622 ] +/Rect [ 55.386457 414.113622 77.060285 399.713622 ] /BS << /W 0 >> -/Dest (Code/OcrImage/:ocrimagecs) +/Dest (ManuelUtilisateur/:erreurs) >> endobj -496 0 obj +380 0 obj << /Type /Annot /Subtype /Link @@ -6477,32 +5128,32 @@ endobj /BS << /W 0 >> -/Dest (Code/OcrImage/:ocrimagecs) +/Dest (ManuelUtilisateur/:erreurs) >> endobj -497 0 obj +381 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 398.963622 555.889134 378.293622 ] +/Rect [ 47.386457 398.963622 555.889134 378.293622 ] /BS << /W 0 >> -/Dest (Code/Reader/:readercs) +/Dest (jdb/:journal-de-bord) >> endobj -498 0 obj +382 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 393.443622 82.786359 379.043622 ] +/Rect [ 47.386457 393.443622 63.334211 379.043622 ] /BS << /W 0 >> -/Dest (Code/Reader/:readercs) +/Dest (jdb/:journal-de-bord) >> endobj -499 0 obj +383 0 obj << /Type /Annot /Subtype /Link @@ -6510,10 +5161,10 @@ endobj /BS << /W 0 >> -/Dest (Code/Reader/:readercs) +/Dest (jdb/:journal-de-bord) >> endobj -500 0 obj +384 0 obj << /Type /Annot /Subtype /Link @@ -6521,21 +5172,21 @@ endobj /BS << /W 0 >> -/Dest (Code/Settings/:settingscs) +/Dest (jdb/:mercredi-29-mars-2023) >> endobj -501 0 obj +385 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 372.773622 82.786359 358.373622 ] +/Rect [ 55.386457 372.773622 77.060285 358.373622 ] /BS << /W 0 >> -/Dest (Code/Settings/:settingscs) +/Dest (jdb/:mercredi-29-mars-2023) >> endobj -502 0 obj +386 0 obj << /Type /Annot /Subtype /Link @@ -6543,10 +5194,10 @@ endobj /BS << /W 0 >> -/Dest (Code/Settings/:settingscs) +/Dest (jdb/:mercredi-29-mars-2023) >> endobj -503 0 obj +387 0 obj << /Type /Annot /Subtype /Link @@ -6554,21 +5205,21 @@ endobj /BS << /W 0 >> -/Dest (Code/Window/:windowcs) +/Dest (jdb/:jeudi-30-mars-2023) >> endobj -504 0 obj +388 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 352.103622 82.786359 337.703622 ] +/Rect [ 55.386457 352.103622 77.060285 337.703622 ] /BS << /W 0 >> -/Dest (Code/Window/:windowcs) +/Dest (jdb/:jeudi-30-mars-2023) >> endobj -505 0 obj +389 0 obj << /Type /Annot /Subtype /Link @@ -6576,10 +5227,10 @@ endobj /BS << /W 0 >> -/Dest (Code/Window/:windowcs) +/Dest (jdb/:jeudi-30-mars-2023) >> endobj -506 0 obj +390 0 obj << /Type /Annot /Subtype /Link @@ -6587,21 +5238,21 @@ endobj /BS << /W 0 >> -/Dest (Code/recoverCookiesCSV/:recovercookiescsvpy) +/Dest (jdb/:vendredi-31032023) >> endobj -507 0 obj +391 0 obj << /Type /Annot /Subtype /Link -/Rect [ 55.386457 331.433622 82.786359 317.033622 ] +/Rect [ 55.386457 331.433622 77.060285 317.033622 ] /BS << /W 0 >> -/Dest (Code/recoverCookiesCSV/:recovercookiescsvpy) +/Dest (jdb/:vendredi-31032023) >> endobj -508 0 obj +392 0 obj << /Type /Annot /Subtype /Link @@ -6609,13 +5260,2056 @@ endobj /BS << /W 0 >> -/Dest (Code/recoverCookiesCSV/:recovercookiescsvpy) +/Dest (jdb/:vendredi-31032023) +>> +endobj +393 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 316.283622 555.889134 295.613622 ] +/BS << +/W 0 +>> +/Dest (jdb/:lundi-3-avril) +>> +endobj +394 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 310.763622 77.060285 296.363622 ] +/BS << +/W 0 +>> +/Dest (jdb/:lundi-3-avril) +>> +endobj +395 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 310.763622 555.889134 296.363622 ] +/BS << +/W 0 +>> +/Dest (jdb/:lundi-3-avril) +>> +endobj +396 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 295.613622 555.889134 274.943622 ] +/BS << +/W 0 +>> +/Dest (jdb/:mardi-4-avril) +>> +endobj +397 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 290.093622 77.060285 275.693622 ] +/BS << +/W 0 +>> +/Dest (jdb/:mardi-4-avril) +>> +endobj +398 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 290.093622 555.889134 275.693622 ] +/BS << +/W 0 +>> +/Dest (jdb/:mardi-4-avril) +>> +endobj +399 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 274.943622 555.889134 254.273622 ] +/BS << +/W 0 +>> +/Dest (jdb/:mercredi-5-avril) +>> +endobj +400 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 269.423622 77.060285 255.023622 ] +/BS << +/W 0 +>> +/Dest (jdb/:mercredi-5-avril) +>> +endobj +401 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 269.423622 555.889134 255.023622 ] +/BS << +/W 0 +>> +/Dest (jdb/:mercredi-5-avril) +>> +endobj +402 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 254.273622 555.889134 233.603622 ] +/BS << +/W 0 +>> +/Dest (jdb/:jeudi-6-avril) +>> +endobj +403 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 248.753622 77.060285 234.353622 ] +/BS << +/W 0 +>> +/Dest (jdb/:jeudi-6-avril) +>> +endobj +404 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 248.753622 555.889134 234.353622 ] +/BS << +/W 0 +>> +/Dest (jdb/:jeudi-6-avril) +>> +endobj +405 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 233.603622 555.889134 212.933622 ] +/BS << +/W 0 +>> +/Dest (jdb/:vendredi-6-avril-2023) +>> +endobj +406 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 228.083622 77.060285 213.683622 ] +/BS << +/W 0 +>> +/Dest (jdb/:vendredi-6-avril-2023) +>> +endobj +407 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 228.083622 555.889134 213.683622 ] +/BS << +/W 0 +>> +/Dest (jdb/:vendredi-6-avril-2023) +>> +endobj +408 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 212.933622 555.889134 192.263622 ] +/BS << +/W 0 +>> +/Dest (jdb/:vacances) +>> +endobj +409 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 207.413622 77.060285 193.013622 ] +/BS << +/W 0 +>> +/Dest (jdb/:vacances) +>> +endobj +410 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 207.413622 555.889134 193.013622 ] +/BS << +/W 0 +>> +/Dest (jdb/:vacances) +>> +endobj +411 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 192.263622 555.889134 171.593622 ] +/BS << +/W 0 +>> +/Dest (jdb/:lundi-24-avril-2023) +>> +endobj +412 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 186.743622 82.786359 172.343622 ] +/BS << +/W 0 +>> +/Dest (jdb/:lundi-24-avril-2023) +>> +endobj +413 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 186.743622 555.889134 172.343622 ] +/BS << +/W 0 +>> +/Dest (jdb/:lundi-24-avril-2023) +>> +endobj +414 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 171.593622 555.889134 150.923622 ] +/BS << +/W 0 +>> +/Dest (jdb/:mardi-25-avril-2023) +>> +endobj +415 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 166.073622 82.786359 151.673622 ] +/BS << +/W 0 +>> +/Dest (jdb/:mardi-25-avril-2023) +>> +endobj +416 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 166.073622 555.889134 151.673622 ] +/BS << +/W 0 +>> +/Dest (jdb/:mardi-25-avril-2023) +>> +endobj +417 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 150.923622 555.889134 130.253622 ] +/BS << +/W 0 +>> +/Dest (jdb/:26-avril-2023) +>> +endobj +418 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 145.403622 82.786359 131.003622 ] +/BS << +/W 0 +>> +/Dest (jdb/:26-avril-2023) +>> +endobj +419 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 145.403622 555.889134 131.003622 ] +/BS << +/W 0 +>> +/Dest (jdb/:26-avril-2023) +>> +endobj +420 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 130.253622 555.889134 109.583622 ] +/BS << +/W 0 +>> +/Dest (jdb/:jeudi-27-avril-2023) +>> +endobj +421 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 124.733622 82.786359 110.333622 ] +/BS << +/W 0 +>> +/Dest (jdb/:jeudi-27-avril-2023) +>> +endobj +422 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 124.733622 555.889134 110.333622 ] +/BS << +/W 0 +>> +/Dest (jdb/:jeudi-27-avril-2023) +>> +endobj +423 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 109.583622 555.889134 88.913622 ] +/BS << +/W 0 +>> +/Dest (jdb/:vendredi-28-avril-2023) +>> +endobj +424 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 104.063622 82.786359 89.663622 ] +/BS << +/W 0 +>> +/Dest (jdb/:vendredi-28-avril-2023) +>> +endobj +425 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 104.063622 555.889134 89.663622 ] +/BS << +/W 0 +>> +/Dest (jdb/:vendredi-28-avril-2023) +>> +endobj +426 0 obj +<< +/Filter /FlateDecode +/Length 42610 +>> +stream +x͎Yv^y]E@==1І tԚ H$ڑz(BV_,~yݕa?{\v˿rtފ=?__Oxz?>>y]5{_g=>}/q;<忾\>.?:7zC/JcKԒJzf۵%֒uvo>h>g=ҜCmcmSm֙6̏r+'Zuy:w>>XC5ñ6Tu]ui=V:|fy9j|]5̷ã6ó }qlcGylsfm>v\o=[6َk=cm5Ͷ؆t;>H/#e]Yۺj6}M㚂Tm֙Ruƭ9\_~A9ڌ;9<^NmƝSq>̔a~n3nqn3tg~ی[O͸Ӛu6NkgfzWs>n˹͸lzn3tgی;6 p5kE>f>e^ڌ;9</mƝ\͸Ӛk~Ws>j6N}ۥ͸eyQ3}6{j:zFی;9\hq53fizFی[/\mƭg5Cfvm3tgtg~tg~ZεYg^^q=׊fiwsp-ymƝ\[^q=Ý\{^q=עfiwspzmƝ\^q{]͸kk3ڌ;9v6{nu;9v6{]͸kk3ڌ;9v6{]͸kk3ڌ;9v6{ou;9v6{]͸kk3ڌ;9v6{]͸kk3ڌ;9v6{>u;9v6{E͸k i3͸닿6{/\ڌ;9nq=h3dfy͸fyf"tf~[?>=|w~֏u;?NǗǭ/׏gmou;?u;?u;?u;?י׮w:ڌ;?י׮fμv6.uw93_w93w93w93?w93?w93]͸qyzmƭWjNu֙bfew93_w93w93?w93?w93]͸yyzmƭߙ՜w3]͸ey=m].׺ǭ_jnu[e5]̏]Ϻ]Yo3nu\י׳fμ6..uu[OzVuuu9v6.{]͸˞kk3ڌ9v6.{^u9v6.{]͸˞kk3ڌ9v6.{]θ=׮fuwspz3_wspzm]\^q=׮fuwspzm]\^q=׮fuwspzm]_wspzm]\^q=׮fuwspzm]\^q=׮fuwspzm]|wspzm]\^q=׮fuwspzm]\^q=׮fuwspzm]|wspzm]\^q=׮fuZڌ9x\KHq5*SEju[QWs{|{|{|{f5ǭNy=6k׮fu=Tu=crj3vg=vg=vg=vg~=nY|:Pۚ\u{[^q5k{fZiVi^iQYۚǵw[sv6nkjnk׮fڂ?Sf|{|{|{{Z,V{mzew[s^m\]͹qkYͥq>q>q>q<<wsp}fmrq=m\_wsz{mwspzm\^q=׮fmwspzm\^q=׮Wgܞkk3f}͸f}wspfwspڌ9nf}wspzmƽ}ڌ9x=ڌ9v6{]͸k׻fwspzm\^q=׮f}wsq{ܻowotuO??po=oe^?|?Wzߏ?r8^?/J__?_/޶s?/o7t}-]_ VO۳˽>e=g]'pW﷗_{qy. ]$޽ @"4DX2H&M @"4DX2H&M @"4DX2I7o @"Dh3H7o @"DhsDx $H6Dx $H6Dx $H6Dx $H6Dx $H6Dx $H6Dx $H6Dx $H5Dx $H6Dx $H6'H7o @"Dh3H7o @"Dh3H7o @"Dh3H7o @"Dh3H7o @"Dh3H7o @"Dh3H7o @"Dh3H7o @"DX3I7o @"Dh3H7o @"DhsDx $H6Dx $H6Dx $H6Dx $H6Dx $H6Dx $BA"Dx $BA"Dx $šI"Dx $BA"Dx $BA"Dx $BA"Dx $BA"Dx $BA"Dx $BA"Dx $BA"Dx $BA"Dx $BA"Dx $šI"Dx $BA"Dx $BA"Dx $BA"Dx $BA"Dx $BA"Dx $BA"Dx $BA"Dx $BA"Dx $BA"Dx $šI"Dx $BA"Dx $BA"Dx $BA"Dx $BA"Dx $BA"Dx $BA"Dx $BA"Dx $BA"Dx $BA"Dx $šI"Dx $BA"Dx $BA"Dx $BA"Dx $BA"fQw?QZO+x_E\?"ic?-/(/(b\w߿Jx+ (BP%Eh (BP%Eh (BP%Ex (P6Ex (P6Ex (P6Ex (P6Ex (P6Ex (P6Ex (P6Ex (P6Ex (P6Ex (P5Ex (P6Ex (P6Ex (P6Ex (P6Ex (P6Ex (P6Ex (P6Ex (P6Ex (P6Ex (P5Ex (P6Ex (P6Ex (P6Ex (P6Ex (P6Ex (P6Ex (P6Ex (B"Ex (B"Ex (š"Ex (B"Ex (B"Ex (B"Ex (B"Ex (B"Ex (B"Ex (B"Ex (B"Ex (B"Ex (š"Ex (B"Ex (B"Ex (B"Ex (B"Ex (B"Ex (B"Ex (B"Ex (B"Ex (B"Ex (š"Ex (B"Ex (B"Ex (B"Ex (B"Ex (B"Ex (B"Ex (B"Ex (B"Ex (B"Exf?p{DL (P7{&fo@ހ"Exfo@ހ"Exfo@ހ"Exfkzwo? EOe1D?:xZWFk".ľ$oϿ=~\)k1O__.yq+kF,$q$߇$>Dot>&Pğ?"^ޞ=]{Eha@"4Eha@"4EhaDހ"Ex@ހ"Ex@ހ"Ex (P7o@  (P7o@  (P7o@  (P7o@  (P7o@  (P7o@  (P7o@L (P7o@  (P7o@  (P7o@ڜAހ"Ex@ހ"Ex@ހ"Ex@ހ"Ex@ހ"Ex@ހ"Ex@ހ"ExaDހ"Ex@ހ"Ex@ހ"Ex (P7o@  (P7o@  (P7o@  (P7o@  (P7m (P7m (P7k& (P7m (P7m (P7m (P7m (P7m (P7m (P7m (P7m (P7m (P7k& (P7m (P7m (P7m (P7m (P7m (P7m (P7m (P7m (P7m (P7k& (P7m (P7m (P7m (P7m (P7m (P7m (P7m (P7m (P7m (P7k& (P7m (P7m (P7m (P7m |vPrE<~E|t/(7PQ˽9=[DP>""'|.ϻ_%< (’"4Eh (’"4Eh (’"Ex (B"Ex (B"Ex (B"Ex (B"Ex (B"Ex (B"Ex (B"Ex (B"Ex (B"Ex (š"Ex (B"Ex (B"Ex (B"Ex (B"Ex (B"Ex (B"Ex (B"Ex (B"Ex (B"Ex (š"Ex (B"Ex (B"Ex (B"Ex (B"Ex (B"Ex (B"Ex (B"Ex@ހ"Ex@ހ"ExaDހ"Ex@ހ"Ex@ހ"Ex@ހ"Ex@ހ"Ex@ހ"Ex@ހ"Ex@ހ"Ex@ހ"Ex@ހ"ExaDހ"Ex@ހ"Ex@ހ"Ex@ހ"Ex@ހ"Ex@ހ"Ex@ހ"Ex@ހ"Ex@ހ"Ex@ހ"ExaDހ"Ex@ހ"Ex@ހ"Ex@ހ"Ex@ހ"Ex@ހ"Ex@ހ"Ex@ހ"Ex@ހ"Ex@ހ"ExaDހ"Ex@ހ"Ex@ހ"Ex@ހ"Ex@|y;@ߎXP>Dˡ{Ew( $$忾\>.Wx+0H“ O$4Ix$I'AIh$H“ O$< d I&H4A $Q I&H4Aހ$J$Q I&HDi$J$Q Ix(MDi$J$Q o@ (MDi$J$ H4A (MDi$I&H4A (M7 I&H4A $Q I&H4A $Q I&H4Aހ$J$Q I&HDi$J$Q Ix(MDi$J$Q o@ (MDi$J$ H4A (MDi$I&H4A (M7 I&H4A $Q I&H4Aހ$Js$J$Q Ih3Di $Q Ix(~Y$J$Q o@9A (MDi$II&H4A $Q$Q I&HDi_Di$J$Q o@9A (MDi$I&H4A $Q I&H4Aހ$J$Q I&HB$J$Q I&HDi$J$Q Ix(MDi$J$Q o@ (MDi$J$ H4A (MDi$I&H4A (M7 I&H4A $Q I&H4Aހ$J$Q I&HDi$J$Q Ih3Di$J$Q Ix(MDi$J$Q o@ (MDi$J$ H4A (MDi$I&H4A (M7 I&H4A $Q I&H4Aހ$J$Q I&HDi$J$Q Ix(MDi$J$Q m(MDi$J$Q o@ (MDi$J$ H4A (MDi$I&H4A (M7 I&H4A $Q I&H4Aހ$J$Q I&HDi$J$Q Ix(MDi$J$Q o@ (MDi$J$@ (MDi$J$ H4A (MDi$I&H4A (M7 I&H4A $W $g!q=}C"WC?O!oGazz{j^`_`\w{Fhaɀ#4Fhaɀ#4FhaɄ#Fx̀#Fx̀#Fx̀#Fx̀#Fx̀#Fx̀#Fx̀#Fx̀ޜ#Fx̀ޜ#Fxä́ޜ#Fx̀ޜ#Fx̀ޜ#Fx̀ޜ#Fx̀ޜ#Fx̀ޜ#Fx̀ޜ#Fx̀ޜ#Fx̀ޜ#Fx̀ޜ#Fxä́R #Fxfou0`7m 0`7m 0`7m.o΁#Fxfo΁#Fxfo΁#Fxfo#Fh3`7o#Fh3`7o#FX3a7o#Fh3`7o#Fh3`7o#Fh3`7o#Fh3`7o#Fh3`7o#Fh3`7o#Fh3`7o#Fh3`7o#Fh3`7o#FX3a7o#Fh3`7o#Fh3`7o#Fh3`7o#Fh3`7o#Fh3`7o#Fh3`7o#Fh3`7o#Fh3`7o#Fh3`7o#FX3a7o#Fh3`7o#Fh3`7o#Fh3`7o#Fh3`7o#Fh3`7o#Fh3`7o#Fh3`7o#Fh3`7o#Fh3`7o#FX3a7o#Fh3`7o#Fh3`7o#Fh3`7o#Fh3`5_@Rc!Ook0⏿#>W`˽Ͼ>0B=zQ$W$$nqye^w@& M@ $ HB& M@ $ HB& M@L$ H7 o@ $ H7 o@ $ H7 o@ $ H7 o@\@ހ$Ix$@ހ$Ix$@ހ$Ix$@ހ$Ix$@ހ$Ix$@ހ$Ix$aDހ$Ix$@ހ$Ix$@ހ$Ix$@ހ$Ix$$ H7 o@ $ H7 o@ $ H7 o@ $ H7 o@ $ H7 o@ $ H7 o@L$ H7 o@ $ H7 o@ $ H7 o@ $ H7 o@\@ހ$Ix$@ހ$Ix$@ހ$Ix$@ހ$Ixf o@ހ$Ixf o@ހ$Ixf" o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf" o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf" o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf" o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf kzOw o? IΟIw"?$^9s$#xoO X@<2ػW0B`&K 0B`&K 0B`&K& 0`7m 0`7m 0`7m 0`7m 0`7m 0`7m 0`7m 0`7m 0`7m 0`7k& 0`7m 0`7m 0`7m 0`7m 0`7m 0`7m 0`7m 0`7m 0`7m 0`7k& 0`7m 0`7m 0`7m 0`7m 0`7m 0`7m 0`7m 0`6Fx 0`6Fx 0`5Fx 0`6Fx 0`6Fx 0`6Fx 0`6Fx 0`6Fx 0`6Fx 0`6Fx 0`6Fx 0`6Fx 0`5Fx 0`6Fx 0`6Fx 0`6Fx 0`6Fx 0`6Fx 0`6Fx 0`6Fx 0`6Fx 0`6Fx 0`5Fx 0`6Fx 0`6Fx 0`6Fx 0`6Fx 0`6Fx 0`6Fx 0`6Fx 0`6Fx 0`6Fx 0`5Fx 0`6Fx 0`6Fx 0`6Fx 0`6FXyKߎx?0OF +x_ۻFˆ5{{j&r2.ϻ^)wO#< I`'Fx 0“O#< $0B#JQF&0`Di#JQFx(M`Di#JQo (M`Di#J 04 (M`Di#F&04 (M`7F&04 QF&04#JQF&0`Di#JQFh3`Di#JQFx(M`Di#JQo (M`Di#J 04 (M`Di#F&04 (M`7F&04 QF&04#JQF&0`Di#JQFx(M`Di#JQm(M`Di#JQo (M`Di#J 04 (M`Di#F&04 (M`7F&04 QF&04#JQF&0`Di#JQo (M`Di#J 04 (M`Di#04 (M`Di#F&04 (M`7F&04 QF&04#JQF&0`Di#JQFx(M`Di#JQo (M`Di#J 04 (M`Di#F&04 (M`6F&04 (M`7F&04 QF&04#JQF&0`Di#JQFx(M`Di#JQo (M`Di#J 04 (M`Di#F&04 (M`7F&04 fF&04 QF&04#JQF&0`Di#JQFx(M`Di#JQo (M`Di#J 04 (M`Di#F&04 (M`7F&04 QF&04 QF&04#JQF&0`Di#JQFx(M`Di#JQo|>yKߎağ}0OFF+0bcĆG~{{^_8.ϻ{$4Ihd M@$4Ihd M@$4Ihd" o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf" o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf" o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ix +$ H7 m$ H7 m$ H6Ix$ H6Ix$ H5Ix$ H6Ix$ H6Ix$ H6Ix$ H6Ix$ H6Ix$ H6Ix$ H6Ix$ H6Ix$ H6Ix$ H5Ix$ H6Ix$ H6Ix$ H6Ix$ H6Ix$ H6Ix$ H6Ix$ H6Ix$ H6Ix$ H6Ix$ H5Ix$ H6Ix$ H6Ix$ H6Ix$ H6Ix$ H6Ix$ H6Ix$ H6Ix$ H6Ix$ H6Ix$ H5Ix$ H6Ix$ H6Ix$ H6Ix$ H6IX{>F4$FH;GH2$rOGaԼ.s\w߿Rxݫ 0B`%Fh 0B`%Fh 0B`%Fx 0`6Fx 0`6Fx 0`6Fx 0`6Fx 0`6W`7o#Fh3`7o#Fh3`7o#Fh3`7o#Fh3`7o#FX3a7o#Fh3`7o#Fh3`7o#Fh3`7o#Fh3`7o#FhsFx 0`6Fx 0`6Fx 0`6Fx 0`6Fx 0`5Fx 0`6Fx 0`6Fx 0`6Fx 0`6Fx 0`6W`7o#Fh3`7o#Fh3`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0š o)0O$ #>o{PF\?c0⺿L1.m\w߽Rc^uFx 0“O#< $0B`'FxI`&F&04 (M`7F&04 QF&04#JQF&0`Di#JQFx(M`Di#JQo (M`Di#J 04 (M`Di#F&04 (M`7F&04 fF&04 QF&04#JQF&0`Di#JQFx(M`Di#JQo (M`Di#J 04 (M`Di#F&04 (M`7F&04 QF&04 QF&04#JQF&0`Di#JQFx(M`Di#JQo (M`Di#J 04 (M`Di#F&04 (M`7F&04#JQF&0`Di#JQFh3`Di#JQFx(M`Di#JQo (M`Di#J 04 (M`Di#F&04 (M`7F&04 QF&04#JQF&0`Di#JQFx(M`Di#JQm(M`Di#JQo (M`Di#J 04 (M`Di#F&04 (M`7F&04 QF&04#JQF&0`Di#JQFx(M`Di#JQo (M`Di#J̀ (M`Di#J 04 (M`Di#F&04 (M`7F&04 QF&04#JQF&0`Di#JQFx(M`Di#JQo (M`Di#J 04 (M`Di#04 (M`Di#F&04 (M`7F&04 QF&04#y#xKߎ.}0OFFk/a} 5~F=5/0/0b(<2yKa? FwWF|t/0+TrF~H~Q$q;4 . ˸Uc^ M@$,HB& M@$,HB& M@$,H7 o@ހ$H7 o@ހ$H7 o@ހ$H7 o@ހ$H7 o@ހ$H7 o@ހ$H7 o@ހ$H7 o@ހ$H7 o@ހ$H7 o@ހ$H7 o@ހ$H7 o@ހ$H7 o@ހ$H7 o@ހ$H7 o@ހ$H7 o@ހ$H7 o@ހ$H7 o@ހ$H7 o@ހ$H7 o@ހ$H7 o@ހ$H7 o@ހ$H7 o@ހ$H7 o@ހ$H7 o@ހ$H7 o@ހ$H7 o@ހ$H7 o@ $~R$Ixf oϺM$ H5Ixs +$ H6Ixs +$ H6Ixs +$ H6Ixs +$ H6Ixs +$ H6Ixs +$ H6Ixs +$ H6Ixs +$ H6Ixs +$ H6Ixs +$ H5Ixs +$ H6Ixs +$ H6Ixs +$ H6Ixs +$ H6Ixs +$ H6Ixs +$ H6Ixs +$ H6Ix$ H6Ix$ H6Ix$ H5Ix$ H6Ix$ H6Ix$ H6Ix$ H6Ix$ H6Ix$ H6Ix$ H6Ix$ H6Ix$ H6Ix$ H5Ix$ H6Ix$ H6Ix$ H6Ix$ H6IX{I|;iH⺏H;GHrH^g7$-8(X~y\~<2ػW0B`&K 0B`&K 0B`&K& 0`7m 0`7m 0`7m 0`7m 0`7m 0`7m 0`7m 0`7m 0`7m 0`7k& 0`7m 0`7m 0`7m 0`7m 0`7m 0`7m 0`7m 0`7m 0`7m 0`7k& 0`7m 0`7m 0`7m 0`7m 0`7m 0`7m 0`7m 0`6FxK& 0B#g~=no#0›S`7o#0›S`7o#0›S`7o#0›S`7o#0›S`7o#0›S`7o#0›S`7o#0›S`7o#0›S`7o#0›S`7o#0›S`7o#0›S`7o#0›S`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0š o)0O;`wˆ?aXF#yTM(1.}\w߽rc^Jx( P“@ O%< $PB'Jx(I&J&P4 (M7@J&P4 (Q@J&P4%J(Q@J&PDi%J(Q@Jx(MDi%J(Q@ o (MDi%J( P4 (MDi%J&P4 (M7@J&P4 f@J&P4 (Q@J&P4%J(Q@J&PDi%J(Q@Jx(MDi%J(Q@ o (MDi%J( P4 (MDi%J&P4 (M7@J&P4 (Q@J&P4 (Q@J&P4%J(Q@J&PDi%J(Q@Jx(MDi%J(Q@ o (MDi%J( P4 (MDi%J&P4 (M7@J&P4%J(Q@J&PDi%J(Q@Jh3Di%J(Q@Jx(MDi%J(Q@ o (MDi%J( P4 (MDi%J&P4 (M7@J&P4 (Q@J&P4%J(Q@J&PDi%J(Q@Jx(MDi%J(Q@ m(MDi%J(Q@ o (MDi%J( P4 (MDi%J&P4 (M7@J&P4 (Q@J&P4%J(Q@J&PDi%J(Q@Jx(MDi%J(Q@ o (MDi%J(̀ (MDi%J( P4 (MDi%J&P4 (M7@J&P4 (Q@J&P4%J(Q@J&PDi%J(Q@Jx(MDi%J(Q@ o (MDi%J( P4 (MDi%P4 (MDi%J&P4 (M7@J&P4 (Q@J&P4%y%xߎ0('ؿ%^<|C8v}xW|9M+\?C\~A.ϻ{$4Ihd M@$4Ihd M@$4Ihd" o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf" o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf" o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ixf o@ހ$Ih37 o@ހ$Ih37 o@ހ$IX37 o@ހ$Ih37 o@ހ$Ih37 o@ހ$Ih37 o@ހ$Ih37 o@ހ$Ih37 o@ހ$Ih37 o@ހ$Ih37 o@ހ$Ih37 o@ހ$Ih37 o@ހ$IX37 o@ހ$Ih37 o@ހ$Ih37 o@ހ$Ih37 o@ހ$Ih37 o@ހ$Ih37 o@ހ$Ih37 o@ހ$Ih37 o@ހ$Ih37 o@ހ$Ih37 o@ހ$IX37 o@ހ$Ih37 o@ހ$Ih37 o@ހ$Ih37 o@ހ$Ih37 o@ހ$Ih37 o@ހ$Ih37 o@ހ$Ih37 o@ހ$Ih37 o@ހ$Ih37 o@ހ$IX37 o@ހ$Ih37 o@ހ$Ih37 o@ހ$Ih37 o@ހ$Ih35_'@^c$!OC;w"?q(H^oH/Y${e]{Fhaɀ#4Fhaɀ#4FhaɄ#Fx̀#Fx̀#Fx̀#Fx̀#Fx̀#Fx̀#Fx̀#Fx̀#Fx̀#Fxä́#Fx̀#Fx̀#Fx̀#Fx̀#Fx̀#Fx̀#Fx̀#Fx̀#Fx̀#Fxä́#Fx̀#Fx̀#Fx̀#Fx̀#Fx̀#Fx̀#Fx̀#Fxfo#Fxfo#Fxfo#Fxfo#Fxfo#Fxfo#Fxfo#Fxfo#Fxfo#Fxfo#Fxfo#Fxfo#Fxfo#Fxfo#Fxfo#Fxfo#Fxfo#Fxfo#Fxfo#Fxfo#Fxfo#Fxfo#Fxfo#Fxfo#Fxfo#Fxfo#Fxfo#Fxfo#Fxfo#Fxfo#Fxfo#Fxfo#Fxfo#Fxfo#Fxfo#Fxfo#Fxfkzwo? F8'x{o#^NF>SL1.<`ļc^uM#,0B`&M#,0B`&M#,0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o#0`7o  0`7ooufYx*=y\4kkg[Mɪ$>:=K`Ofn#F!pCafn#F!pCfn#F!pCfn#F!pCfn#F!pCfn#F!pCfn#F!pCfn#F!pCfn#F!pCfn#F!pCfn#F!pCafn#F!pCfn#F!pCfn#F!pCfn#F!pCfn#F!pCfn#F!pCfn#F!pCfn#F!pCfn#F!pCfn#F!pCafn#F!pCfn#F!pCfn#F!pCfn#F!pCfn#F!pCfn#F!pCfn#F!pCfn#F!pCfn#F!pCfn#F!pCafn#F!pCfn#F!pCfn#F!pCfn#F!pCff4 #~#9ˆp #~FF|Vˆ=1bI$q;Fky_ӧHxyneeՌ}Y$$pI(!pHI" '$~DJ$$pHI" 'IHD$(#pC$QL"bIH׏H D1$I$QL"b^?" 7D$(&D1$y$IHD$(#pC$QL"bIH׏H D1$I$QL"b^?" 7D$(&D1$I$HD$(&D1$IHD$(&IHD$(&"bIHD$pC$QL"bIHDn$I$QL"bIH D1$I$QL"bI!(&D1$I$QL" 7D$(&D1$I$HD$(&D1$IHD$(&"bIHD$P3"bIHD$pC$QL"bIHDn$I$QL"bIH D1$I$QL"bI!(&D1$I$QL" 7D$(&D1$I$HD$(&D1$IHD$pC$QL"bIHDn$I$QL"bIHB͈$I$QL"bIH D1$I$QL"bI!(&D1$I$QL" 7D$(&D1$I$HD$(&D1$IHD$(&"bIHD$pC$QL"bIHDn$I$QL"bIH D1$I$QL"bID1$I$QL"bI!(&D1$I$QL" 7D$(&D1$I$HD$(&D1$IHD$(&"bIHD$pC$QL"bIHDn$I$QL"bIH D1$I$QL"bI!(&D1$I$QL" 5#(&D1$I$QL" 7D$(&D1$I$HD$(&D1$IHD$(&"bIHD$pC$QL"bIHDn$I$QL"bIH D1$I$QL"bI!(&D1$I$QL" 7D$(&D1$I$fD$(&D1$I$HD$(&D1$IHD$(&"bIHD$pC$믻3^ב+x_$HS$>ok՗=F|"_[4}^?Oa/ +#I/ϭ׿eF(!PBadJ#F(!PBadJ#F(!PBadn#F!pCfn#F!pCfn#F!pCfn#F!pCfn#F!pCfn#F!pCfn#F!pCfn#F!pCfn#F!pCfn#F!pCafn#F!pCfn#F!pCfn#F!pCfn#F!pCfn#F!pCfn#F!pCfn#F!pCfn#F!pCfn#F!pCfn#F!pCafn#F!pCfn#F!pCfn#F!pCfn#F!pCfn#F!pCfn#F!pCfn#F!pCfn#F!P37n#F!P37n#F!037n#F!P37n#F!P37n#F!P37n#F!P37n#F!P37n#F!P37n#F!P37n#F!P37n#F!P37n#F!037n#F!P37n#F!P37n#F!P37n#F!P37n#F!P37n#F!P37n#F!P37n#F!P37n#F!P37n#F!037n#F!P37n#F!P37n#F!P37n#F!P37n#F!P37n#F!P37n#F!P37n#F!P37n#F!P37n#F!037n#F!P37n#F!P37n#F!P37n#F!P33Fma01gS#>m==8$"x^JPbLxyneu/PB B ##PB(PB B ##PB(PB B #3pC(P B 5#pC(P B 5#pC(P B 5#pC(P B 5#pC(P B 5#pC(P B 5#pC(P B 5#pC(P B 5#pC(P B 5#pC(P B 33pC(P B 5#pC(P B 5#pC(P B 5#pC(P B 5#pC(P B 5#pC(P B 5#pC(P B 5#pC(P B 5#pC(P B 5#pC(P B 33pC(P B 5#pC(P B 5#pC(P B 5#pC(P B 5#pC(P B 5#pC(P B 5#pC(P B 5#pC(P J!pC(P J!pC(P J!pC(P J!pC(P J!pC(P J!pC(P J!pC(P J!pC(P J!pC(P J!pC(P J!pC(P J!pC(P J!pC(P J!pC(P J!pC(P J!pC(P J!pC(P J!pC(P J!pC(P J!pC(P J!pC(P J!pC(P J!pC(P J!pC(P J!pC(P J!pC(P J!pC(P J!pC(P J!pC(P J!pC(P J!pC(P J!pC(P J!pC(P J!pC(P J!pC(P J!pC(P J\Po %}C/ %YC %>m=A_w#H<ˆo{ #i<2^R׾NF8I0I' #$p0B aNF8I$aF0$(&aˆbF0$pCQLˆbF0n#IQLˆbF0 aD1 #IQLˆbF!(&aD1 #IQL7$(&aD1 #I0$(&aD1 #F0$(&aˆbF0$P3ˆbF0$pCQLˆbF0n#IQLˆbF0 aD1 #IQLˆbF!(&aD1 #IQL7$(&aD1 #I0$(&aD1 #F0$(&aˆbF0$pCQLˆbF0jFQLˆbF0n#IQLˆbF0 aD1 #IQLˆbF!(&aD1 #IQL7$(&aD1 #I0$(&aD1 #F0$(&aˆbF0n#IQLˆbF0 aD1 #IQLˆbFaD1 #IQLˆbF_#IQLˆbF0 aD1 #IQLˆbF!(&aD1 #IQL7$(&aD1 #I0$(&aD1 #F0$(&aˆbF0$pCQLˆbF0n#IQLˆbF0B#IQLˆbF0GQLˆbF0n#IQLˆbF0 aD1 #IQLˆbF!(&aD1 #IQL7$(&aD1 #I0$(&aD1 #F0$(&aˆbF0$pCQLˆbF0jFQLˆbF0n #IQLˆbF0 aD1 #IQLˆbF!(&aD1 #IQL7$(&aD1 #I0$(&aD1 #F0$(&aˆbF0$pCQLˆbF0n#IQLˆbF0B#IQLˆbF09aD1 #IQLˆbF!(&aD1 #IQL7$(&aD1 #I0B͟do?W\_Fr?ˆߧ 15b"XcFͧ0?xyne5k_Va%FF0B a%FF0B a%Ff0 a7jF0 a7jF0 a7jF0 a7jF0 a7jF0 a7jF0 a7jF0 a7jF0 a7jF0 a7ff0 a7jF0 a7jF0 a7jF0 a7jF0 a7jF0 a7jF0 a7jF0 a7jF0 a7jF0 a7ff0 a7jF0 a7jF0 a7jF0 a7jF0 a7jF0 a7jF0 a7jF0 a5#pC0 a5#pC0 a33pC0 a5a7n#Fa7n#Fa7n#Fa7n#Fa7n#Fa7n#Fa7n#Fa7n#Fa7n#Fa7n#Fa7n#Fa7n#Fa7n#Fa7n#Fa7n#Fa7n#Fa7n#Fa7n#Fa7n#Fa7n#Fa7n#Fa7n#Fa7n#Fa7n#Fa7n#Fa7n#Fa7n#Fa7n#Fa7n#Fa7n#Fa7n#Fa7n#Fa7n#Fa?8(~FˆFaį?È۩0bOa>D~I b&ɧ ?c<2^BڗF B AD(!PB B AD(!PB B AD!pC AD!pC AD!pC AD!pC AD!pC AD!pC AD!pC AD!pC AD!pC AD!pC AD!pC AD!pC AD!pC AD!pC AD!pC AD!pC AD!pC AD!pC AD!pC AD!pC AD!pC AD!pC AD!pC AD!pC AD!pC AD!pC AD!pC AD!pC B"D!pC B"D!pC "D!pC B"D!pC B"D!pC B"D!pC B"D!pC B"D!pC B"D!pC B"D!pC B"D!pC B"D!pC "D!pC B"D!pC B"D!pC B"D!pC B"D!pC B"D!pC B"D!pC B"D!pC B"D!pC B"D!pC "D!pC B"D!pC B"D!pC B"D!pC B"D!pC B"D!pC B"D!pC B"D!pC B"D!pC B"D!pC "D!pC B"D!pC B"D!pC B"D!pC B"%ADok:/ "w9?OI4g3?me^)?kZˏ3E?܏B<׷u<~}TTvB>~DtYGB^3#"~Rr.RWʱ8V}6d曓>.d i[Y{y]rp䔬ݽkϲq\ˣlfw8.y7vu;k)k18.^8.k\v>3W8.uU8.|YyĎϏu* lw͝bkҸ\>?ǩngyk4Z}~.|Y:uݎeka7}ZWu;eqv]?Ǝmkgu;k/˳nge]5v_|y'ܬ}*ݬ}y$ӂf>_ѳu仮k[wȲϷ^8mz{~Z][ung{8Z]}cu?vAݏVQxm:Yͬ}~^[8lq+GY㸾֑ng^ϯ絭qN^3enWα̺y|Ovq[WY㸭7mgok]v>svDZŎVwq|^u7g:P]c8x[?sY㸭ngm%Ŭuqv{>mXu;k}Ǻhkl}zY|Gklou:7Ѷq}~T3kuifuVqMmgo;Y_Nmm=?Z]c`:mgtokuu&qmkuuYN:ڕ8:4y>Z]rUY|ٕs3kG[c8 +;cu;korYDZqDZvwW[c8q_Wm;8x;}:목qk=;q#Xoϗv ;cA5;y9[$XX˹]xOu:XmquY7Oٷmy-o:ZoIvq f>Iv3k/u_v ;ev>_Aunmgv于W3kjOr]qk:ޏOY[8vdy]}:lngljI8'mvd]3-u;km]c8xͺZ$7kǫ]îe>sflI֟zu׶ٮaٷ]5v[uHy$u|{Oy5mu\mu:_v䶎U]W [[c$Z.v>v>7κqp>mko}:?ե]îkeu|vd}}uݹܮaׅ׷tklu|Dngjװu\gƯqgu|<v䶎ٮa52Gcm$u|<_vd]{CJ:Yy}~|$|hInoѮao ois3ev䶟Z׶v~]5m?m}~帴$Re;~|iװ~:nky['\>ɱ>ɱv5챟v;snSOrS[dy[Nm9o뤿'9.=}c?m?ng?Ohkx?hIsގ{Or|<~öy>~hI@V~:$~ukIY^cwZ?>ɱ}]x?]Sv׿DOrr=$}?^??vyGv]@oI|usg~rs$~U??Ϸ<}|TfsWc?~6ufܕ'9mYo6(k쾟o}8NMλ5{jIvqZo>8Nswkwqz<.>8NϵZ]Z?i? +ngsO;u<$MhO;Y?wV=;ӽ~g|y$|<}wDZof\?wkɷ58.{O8Y^gc] 58'ywKq܎Yط`{w;;uٮa:hkqTOzjIU?w~nOwYcƮǹ~qNm}|& ߙa%: 8?8W_gNO6{loƳwwΨ/˧xK32IfT8Ɍ +%̨pN2IfT8Ɍ +%̨pN2IfT8Ɍ +%cFE1QQLfTdFfTdFE1QQLfTaFE1QQLfTdFfTdFE1QQLfTaFE1QQLfTdFfTdFE1QQLfTaFE1QQLfTdFfTdFE1QQLfTaFE1QQLfTdFfTdFE1QQLfT3*Ɍb2̨(&3*0̨(&3*Ɍb2 3*Ɍb2̨(&3*0̨(&3*Ɍb2 3*Ɍb2̨(&3*0̨(&3*Ɍb2 3*Ɍb2̨(&3*0̨(&3*Ɍb2 3*Ɍb2̨(&3*0̨(&3*Ɍb2B͘QQLfTdFE1QdFE1QQLfTnQQLfTdFE1QdFE1QQLfTnQQLfTdFE1QdFE1QQLfTnQQLfTdFE1QdFE1QQLfTaFE1QQLfTdFfTdFE1QQLfT3*Ɍb2̨(&3*0̨(&3*Ɍb2%3*Ɍb2̨(&3*0̨(&3*Ɍb2 3*Ɍb2̨(&3*0̨(&3*Ɍb2 3*Ɍb2̨(&3*0̨(&3*Ɍb2 3*Ɍb2̨(&3*0̨(&3*Ɍb2B͘QQLfTdFE1QdFE1QQLfTn.QQLfTdFE1QdFE1QQLfTnQQLfTdFE1QdFE1QQLfTnQQLfTdFE1QdFE1QQLfTnQQLfTdFE1QdFE1QQLfTjƌb2̨(&3*Ɍ +7̨(&3*Ɍb2̨psɌb2̨(&3*Ɍ +7̨(&3*Ɍb2̨pÌb2̨(&3*Ɍ +7̨(&3*Ɍb2̨pÌb2̨(&3*Ɍ +7̨(&3*Ɍb2̨pÌb2̨(&3*Ɍ +7̨(&3*Ɍb2̨P3fTdFE1QQLfTaFE1QQLfTdFKfTdFE1QQLfTaFE1QQLfTdFfT:!1j^k>oamX̧Xϛ>mgZ{xGqgJgV|7};SgU֩ѧ@?zxk ׾> %J$@B  %J$@B  %J$@  7n$Ԍ@  7n$Ԍ@  7n$Ԍ@  7n$Ԍ@  7n$Ԍ@  7n$Ԍ@  7n$Ԍ@  7n$Ԍ@  7n$Ԍ@  7n$@  7n$Ԍ@  7n$Ԍ@  7n$Ԍ@  7n$Ԍ@  7n$Ԍ@  7n$Ԍ@  7n$Ԍ@  7n$Ԍ@  7n$Ԍ@  7n$@  7n$Ԍ@  7n$Ԍ@  7n$Ԍ@  7n$Ԍ@  7n$Ԍ@  7n$Ԍ@  7n$Ԍ@  7jF @  7jF @  7ff @  7jF @  7j.n$H!pC fn$H!pC fn$H!pC fn$H!pC fn$H!pC fn$H!pC fn$H!pC fn$H!pC afn$H!pC fn$H!pC fn$H!pC fn$H!pC fn$H!pC fn$H!pC fn$H!pC fn$H!pC fn$H!pC fn$H!pC afn$H!pC fn$H!pC fn$H!pC fn$H!pC fn$H!pC fn$H!pC fn$H!pC fn$H!pC fn$H!pC fn$H!pC afn$H!pC fn$H!pC fn$H!pC fn$H!pC ff4 ~Hu~H=b $w$;;H~;Xu1 "^A큿6?$^??w+=bAΌbϯ_64ei/~YI)IKQLb +7$(&=E1 *IQᆤ4$(&UE1*܌ h(iECi+ +"h(uEC+J_P(,JbPY4ʢ 2Y4Т %(֢ h(EC- +"h(ECI.JsP.JvP^4 ҋ^4 %( h( FCi0 +"h(FC0JPB Gh()FCi1JPj1JPRd4$ e4*d (0 %h(mFC3 +h(yFC3JP +H4JP"Ri4L :j4R (X %h(FC 6 +h(FCi6JP6JPRn4th7JPꍆo4~ Rp44 %(d h(!GC)9 +"h(-GC9JPr9JPt4 Ru4t %( h(qGC; +"h(}GC <JQGCi<JP*yDPBRz4ԣFPj{4ޣQ|4䣡4 %h(GAd h(GC)?JQGC?JPDP +4D Q4 t %i(%HA i(1HCAJR=HC BJP҄DP4.!Q44! %i(u4>" i(HA4" %i(HCDJ'RHC)EJ*PZD-Prҋ4`#4fD# i(HAt# %i(HCIGJ;RHCGJ>PDAPҐ4T$4$ $i()IA$ %&i(5ICIJOh% (i(IICiJJTRUICJJWP’RDZPڒ4%ї4& %1i(IAD& 2i(ICLJhRICIMJkPbRDnPz4⤡$'ќ4褡T' %;i(IA' vߏ1ve?cm<[߫uQ2wc^&{vٟҿ3cw~~oܻ!Wx +endstream +endobj +427 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 426 0 R +/Resources 4 0 R +/Annots [ 428 0 R 429 0 R 430 0 R 431 0 R 432 0 R 433 0 R 434 0 R 435 0 R 436 0 R 437 0 R 438 0 R 439 0 R 440 0 R 441 0 R 442 0 R 443 0 R 444 0 R 445 0 R 446 0 R 447 0 R 448 0 R 449 0 R 450 0 R 451 0 R 452 0 R 453 0 R 454 0 R 455 0 R 456 0 R 457 0 R 458 0 R 459 0 R 460 0 R 461 0 R 462 0 R 463 0 R 464 0 R 465 0 R 466 0 R 467 0 R 468 0 R 469 0 R 470 0 R 471 0 R 472 0 R 473 0 R 474 0 R 475 0 R 476 0 R 477 0 R 478 0 R 479 0 R 480 0 R 481 0 R 482 0 R 483 0 R 484 0 R 485 0 R 486 0 R 487 0 R 488 0 R 489 0 R 490 0 R 491 0 R 492 0 R 493 0 R 494 0 R 495 0 R 496 0 R 497 0 R 498 0 R 499 0 R 500 0 R 501 0 R 502 0 R 503 0 R 504 0 R 505 0 R 506 0 R 507 0 R 508 0 R 509 0 R 510 0 R 511 0 R 512 0 R 513 0 R 514 0 R 515 0 R 516 0 R 517 0 R 518 0 R 519 0 R 520 0 R 521 0 R 522 0 R 523 0 R 524 0 R 525 0 R 526 0 R ] +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +428 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 771.023622 555.889134 750.353622 ] +/BS << +/W 0 +>> +/Dest (jdb/:lundi-1-mai-2023) +>> +endobj +429 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 765.503622 82.786359 751.103622 ] +/BS << +/W 0 +>> +/Dest (jdb/:lundi-1-mai-2023) +>> +endobj +430 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 765.503622 555.889134 751.103622 ] +/BS << +/W 0 +>> +/Dest (jdb/:lundi-1-mai-2023) +>> +endobj +431 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 750.353622 555.889134 729.683622 ] +/BS << +/W 0 +>> +/Dest (jdb/:mardi-2-mai-2023) +>> +endobj +432 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 744.833622 82.786359 730.433622 ] +/BS << +/W 0 +>> +/Dest (jdb/:mardi-2-mai-2023) +>> +endobj +433 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 744.833622 555.889134 730.433622 ] +/BS << +/W 0 +>> +/Dest (jdb/:mardi-2-mai-2023) +>> +endobj +434 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 729.683622 555.889134 709.013622 ] +/BS << +/W 0 +>> +/Dest (jdb/:recrutement-payerne-mai-2023) +>> +endobj +435 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 724.163622 82.786359 709.763622 ] +/BS << +/W 0 +>> +/Dest (jdb/:recrutement-payerne-mai-2023) +>> +endobj +436 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 724.163622 555.889134 709.763622 ] +/BS << +/W 0 +>> +/Dest (jdb/:recrutement-payerne-mai-2023) +>> +endobj +437 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 709.013622 555.889134 688.343622 ] +/BS << +/W 0 +>> +/Dest (jdb/:vendredi-5-mai-2023) +>> +endobj +438 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 703.493622 82.786359 689.093622 ] +/BS << +/W 0 +>> +/Dest (jdb/:vendredi-5-mai-2023) +>> +endobj +439 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 703.493622 555.889134 689.093622 ] +/BS << +/W 0 +>> +/Dest (jdb/:vendredi-5-mai-2023) +>> +endobj +440 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 688.343622 555.889134 667.673622 ] +/BS << +/W 0 +>> +/Dest (jdb/:lundi-8-mai-2023) +>> +endobj +441 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 682.823622 82.786359 668.423622 ] +/BS << +/W 0 +>> +/Dest (jdb/:lundi-8-mai-2023) +>> +endobj +442 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 682.823622 555.889134 668.423622 ] +/BS << +/W 0 +>> +/Dest (jdb/:lundi-8-mai-2023) +>> +endobj +443 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 667.673622 555.889134 647.003622 ] +/BS << +/W 0 +>> +/Dest (jdb/:mardi-9-mai-2023) +>> +endobj +444 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 662.153622 82.786359 647.753622 ] +/BS << +/W 0 +>> +/Dest (jdb/:mardi-9-mai-2023) +>> +endobj +445 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 662.153622 555.889134 647.753622 ] +/BS << +/W 0 +>> +/Dest (jdb/:mardi-9-mai-2023) +>> +endobj +446 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 647.003622 555.889134 626.333622 ] +/BS << +/W 0 +>> +/Dest (jdb/:mercredi-10-mai-2023) +>> +endobj +447 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 641.483622 82.786359 627.083622 ] +/BS << +/W 0 +>> +/Dest (jdb/:mercredi-10-mai-2023) +>> +endobj +448 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 641.483622 555.889134 627.083622 ] +/BS << +/W 0 +>> +/Dest (jdb/:mercredi-10-mai-2023) +>> +endobj +449 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 626.333622 555.889134 605.663622 ] +/BS << +/W 0 +>> +/Dest (jdb/:jeudi-11-mai-2023) +>> +endobj +450 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 620.813622 82.786359 606.413622 ] +/BS << +/W 0 +>> +/Dest (jdb/:jeudi-11-mai-2023) +>> +endobj +451 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 620.813622 555.889134 606.413622 ] +/BS << +/W 0 +>> +/Dest (jdb/:jeudi-11-mai-2023) +>> +endobj +452 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 605.663622 555.889134 584.993622 ] +/BS << +/W 0 +>> +/Dest (jdb/:vendredi-12-mai-2023) +>> +endobj +453 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 600.143622 82.786359 585.743622 ] +/BS << +/W 0 +>> +/Dest (jdb/:vendredi-12-mai-2023) +>> +endobj +454 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 600.143622 555.889134 585.743622 ] +/BS << +/W 0 +>> +/Dest (jdb/:vendredi-12-mai-2023) +>> +endobj +455 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 584.993622 555.889134 564.323622 ] +/BS << +/W 0 +>> +/Dest (jdb/:lundi-15-mai-2023) +>> +endobj +456 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 579.473622 82.786359 565.073622 ] +/BS << +/W 0 +>> +/Dest (jdb/:lundi-15-mai-2023) +>> +endobj +457 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 579.473622 555.889134 565.073622 ] +/BS << +/W 0 +>> +/Dest (jdb/:lundi-15-mai-2023) +>> +endobj +458 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 564.323622 555.889134 543.653622 ] +/BS << +/W 0 +>> +/Dest (jdb/:mardi-16-mai-2023) +>> +endobj +459 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 558.803622 82.786359 544.403622 ] +/BS << +/W 0 +>> +/Dest (jdb/:mardi-16-mai-2023) +>> +endobj +460 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 558.803622 555.889134 544.403622 ] +/BS << +/W 0 +>> +/Dest (jdb/:mardi-16-mai-2023) +>> +endobj +461 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 543.653622 555.889134 522.983622 ] +/BS << +/W 0 +>> +/Dest (jdb/:mercredi-17-mai-2023) +>> +endobj +462 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 538.133622 82.786359 523.733622 ] +/BS << +/W 0 +>> +/Dest (jdb/:mercredi-17-mai-2023) +>> +endobj +463 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 538.133622 555.889134 523.733622 ] +/BS << +/W 0 +>> +/Dest (jdb/:mercredi-17-mai-2023) +>> +endobj +464 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 522.983622 555.889134 502.313622 ] +/BS << +/W 0 +>> +/Dest (jdb/:jeudi-18-mai-2023) +>> +endobj +465 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 517.463622 82.786359 503.063622 ] +/BS << +/W 0 +>> +/Dest (jdb/:jeudi-18-mai-2023) +>> +endobj +466 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 517.463622 555.889134 503.063622 ] +/BS << +/W 0 +>> +/Dest (jdb/:jeudi-18-mai-2023) +>> +endobj +467 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 502.313622 555.889134 481.643622 ] +/BS << +/W 0 +>> +/Dest (jdb/:lundi-22-mai-2023) +>> +endobj +468 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 496.793622 82.786359 482.393622 ] +/BS << +/W 0 +>> +/Dest (jdb/:lundi-22-mai-2023) +>> +endobj +469 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 496.793622 555.889134 482.393622 ] +/BS << +/W 0 +>> +/Dest (jdb/:lundi-22-mai-2023) +>> +endobj +470 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 481.643622 555.889134 460.973622 ] +/BS << +/W 0 +>> +/Dest (jdb/:mardi-23-mai-2023) +>> +endobj +471 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 476.123622 82.786359 461.723622 ] +/BS << +/W 0 +>> +/Dest (jdb/:mardi-23-mai-2023) +>> +endobj +472 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 476.123622 555.889134 461.723622 ] +/BS << +/W 0 +>> +/Dest (jdb/:mardi-23-mai-2023) +>> +endobj +473 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 460.973622 555.889134 440.303622 ] +/BS << +/W 0 +>> +/Dest (jdb/:mercredi-24-mai-2023) +>> +endobj +474 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 455.453622 82.786359 441.053622 ] +/BS << +/W 0 +>> +/Dest (jdb/:mercredi-24-mai-2023) +>> +endobj +475 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 455.453622 555.889134 441.053622 ] +/BS << +/W 0 +>> +/Dest (jdb/:mercredi-24-mai-2023) +>> +endobj +476 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 440.303622 555.889134 419.633622 ] +/BS << +/W 0 +>> +/Dest (jdb/:jeudi-25-mai-2023) +>> +endobj +477 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 434.783622 82.786359 420.383622 ] +/BS << +/W 0 +>> +/Dest (jdb/:jeudi-25-mai-2023) +>> +endobj +478 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 434.783622 555.889134 420.383622 ] +/BS << +/W 0 +>> +/Dest (jdb/:jeudi-25-mai-2023) +>> +endobj +479 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 419.633622 555.889134 398.963622 ] +/BS << +/W 0 +>> +/Dest (jdb/:vendredi-26-mai-2023) +>> +endobj +480 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 414.113622 82.786359 399.713622 ] +/BS << +/W 0 +>> +/Dest (jdb/:vendredi-26-mai-2023) +>> +endobj +481 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 414.113622 555.889134 399.713622 ] +/BS << +/W 0 +>> +/Dest (jdb/:vendredi-26-mai-2023) +>> +endobj +482 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 398.963622 555.889134 378.293622 ] +/BS << +/W 0 +>> +/Dest (jdb/:grand-prix-de-monaco) +>> +endobj +483 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 393.443622 82.786359 379.043622 ] +/BS << +/W 0 +>> +/Dest (jdb/:grand-prix-de-monaco) +>> +endobj +484 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 393.443622 555.889134 379.043622 ] +/BS << +/W 0 +>> +/Dest (jdb/:grand-prix-de-monaco) +>> +endobj +485 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 378.293622 555.889134 357.623622 ] +/BS << +/W 0 +>> +/Dest (jdb/:lundi-29-mai-2023) +>> +endobj +486 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 372.773622 82.786359 358.373622 ] +/BS << +/W 0 +>> +/Dest (jdb/:lundi-29-mai-2023) +>> +endobj +487 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 372.773622 555.889134 358.373622 ] +/BS << +/W 0 +>> +/Dest (jdb/:lundi-29-mai-2023) +>> +endobj +488 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 357.623622 555.889134 336.953622 ] +/BS << +/W 0 +>> +/Dest (jdb/:mardi-30-mai-2023) +>> +endobj +489 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 352.103622 82.786359 337.703622 ] +/BS << +/W 0 +>> +/Dest (jdb/:mardi-30-mai-2023) +>> +endobj +490 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 352.103622 555.889134 337.703622 ] +/BS << +/W 0 +>> +/Dest (jdb/:mardi-30-mai-2023) +>> +endobj +491 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 336.953622 555.889134 316.283622 ] +/BS << +/W 0 +>> +/Dest (jdb/:mercredi-31-mai-2023) +>> +endobj +492 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 331.433622 82.786359 317.033622 ] +/BS << +/W 0 +>> +/Dest (jdb/:mercredi-31-mai-2023) +>> +endobj +493 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 331.433622 555.889134 317.033622 ] +/BS << +/W 0 +>> +/Dest (jdb/:mercredi-31-mai-2023) +>> +endobj +494 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 316.283622 555.889134 295.613622 ] +/BS << +/W 0 +>> +/Dest (jdb/:jeudi-1-juin-2023) +>> +endobj +495 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 310.763622 82.786359 296.363622 ] +/BS << +/W 0 +>> +/Dest (jdb/:jeudi-1-juin-2023) +>> +endobj +496 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 310.763622 555.889134 296.363622 ] +/BS << +/W 0 +>> +/Dest (jdb/:jeudi-1-juin-2023) +>> +endobj +497 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 295.613622 555.889134 274.943622 ] +/BS << +/W 0 +>> +/Dest (jdb/:vendredi-2-juin-2023) +>> +endobj +498 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 290.093622 82.786359 275.693622 ] +/BS << +/W 0 +>> +/Dest (jdb/:vendredi-2-juin-2023) +>> +endobj +499 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 290.093622 555.889134 275.693622 ] +/BS << +/W 0 +>> +/Dest (jdb/:vendredi-2-juin-2023) +>> +endobj +500 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 274.943622 555.889134 254.273622 ] +/BS << +/W 0 +>> +/Dest (jdb/:lundi-5-juin-2023) +>> +endobj +501 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 269.423622 82.786359 255.023622 ] +/BS << +/W 0 +>> +/Dest (jdb/:lundi-5-juin-2023) +>> +endobj +502 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 269.423622 555.889134 255.023622 ] +/BS << +/W 0 +>> +/Dest (jdb/:lundi-5-juin-2023) +>> +endobj +503 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 254.273622 555.889134 233.603622 ] +/BS << +/W 0 +>> +/Dest (jdb/:mardi-6-juin-2023) +>> +endobj +504 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 248.753622 82.786359 234.353622 ] +/BS << +/W 0 +>> +/Dest (jdb/:mardi-6-juin-2023) +>> +endobj +505 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 248.753622 555.889134 234.353622 ] +/BS << +/W 0 +>> +/Dest (jdb/:mardi-6-juin-2023) +>> +endobj +506 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 233.603622 555.889134 212.933622 ] +/BS << +/W 0 +>> +/Dest (jdb/:mercredi-7-juin) +>> +endobj +507 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 228.083622 82.786359 213.683622 ] +/BS << +/W 0 +>> +/Dest (jdb/:mercredi-7-juin) +>> +endobj +508 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 228.083622 555.889134 213.683622 ] +/BS << +/W 0 +>> +/Dest (jdb/:mercredi-7-juin) >> endobj 509 0 obj << +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 212.933622 555.889134 192.263622 ] +/BS << +/W 0 +>> +/Dest (jdb/:jeudi-8-juin-2023) +>> +endobj +510 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 207.413622 82.786359 193.013622 ] +/BS << +/W 0 +>> +/Dest (jdb/:jeudi-8-juin-2023) +>> +endobj +511 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 207.413622 555.889134 193.013622 ] +/BS << +/W 0 +>> +/Dest (jdb/:jeudi-8-juin-2023) +>> +endobj +512 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 47.386457 192.263622 555.889134 171.593622 ] +/BS << +/W 0 +>> +/Dest (INXWIZI/) +>> +endobj +513 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 47.386457 186.743622 63.334211 172.343622 ] +/BS << +/W 0 +>> +/Dest (INXWIZI/) +>> +endobj +514 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 186.743622 555.889134 172.343622 ] +/BS << +/W 0 +>> +/Dest (INXWIZI/) +>> +endobj +515 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 171.593622 555.889134 150.923622 ] +/BS << +/W 0 +>> +/Dest (Code/ConfigurationTool/:configurationtoolcs) +>> +endobj +516 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 166.073622 77.060285 151.673622 ] +/BS << +/W 0 +>> +/Dest (Code/ConfigurationTool/:configurationtoolcs) +>> +endobj +517 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 166.073622 555.889134 151.673622 ] +/BS << +/W 0 +>> +/Dest (Code/ConfigurationTool/:configurationtoolcs) +>> +endobj +518 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 150.923622 555.889134 130.253622 ] +/BS << +/W 0 +>> +/Dest (Code/DriverData/:driverdatacs) +>> +endobj +519 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 145.403622 77.060285 131.003622 ] +/BS << +/W 0 +>> +/Dest (Code/DriverData/:driverdatacs) +>> +endobj +520 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 145.403622 555.889134 131.003622 ] +/BS << +/W 0 +>> +/Dest (Code/DriverData/:driverdatacs) +>> +endobj +521 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 130.253622 555.889134 109.583622 ] +/BS << +/W 0 +>> +/Dest (Code/DriverGapToLeaderWindow/:drivergaptoleaderwindowcs) +>> +endobj +522 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 124.733622 77.060285 110.333622 ] +/BS << +/W 0 +>> +/Dest (Code/DriverGapToLeaderWindow/:drivergaptoleaderwindowcs) +>> +endobj +523 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 124.733622 555.889134 110.333622 ] +/BS << +/W 0 +>> +/Dest (Code/DriverGapToLeaderWindow/:drivergaptoleaderwindowcs) +>> +endobj +524 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 109.583622 555.889134 88.913622 ] +/BS << +/W 0 +>> +/Dest (Code/DriverNameWindow/:drivernamewindowcs) +>> +endobj +525 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 104.063622 77.060285 89.663622 ] +/BS << +/W 0 +>> +/Dest (Code/DriverNameWindow/:drivernamewindowcs) +>> +endobj +526 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 104.063622 555.889134 89.663622 ] +/BS << +/W 0 +>> +/Dest (Code/DriverNameWindow/:drivernamewindowcs) +>> +endobj +527 0 obj +<< /Filter /FlateDecode -/Length 2865 +/Length 19725 +>> +stream +xOgv>BW[M  BV<ތ@I閮0Ќeo],>Sg?8?=/ÿpފw?x]_O|8??ϧ˱.ǧ8N?^ǧx>~/[mց^u>>}}xjϼ>'kz^j8=ڬ3O4㲞Yg~ؚuu_kogm׭4>u>u>u::j<Ҽ}!nYg~{m֙Gmogmף4} +g~εYg~Nڬ3gtm֙_u[i̯t:zfakgmW6>yy;a>v^o=Z6kNsm5^fyͿznmmkqimj6ί}ץM󚂯Z6Tqkk6oh5ǥ͸˚f|w93Ee\N̏͸^h3rg~mƭg~wYs͸˚=ڌ[j͸umƭGs5͸e~w3?mƭ'j֊P}׵͸d^ی9:6.kGfe\ی[\mƭ_e5kq>fϼ>P}ufy=m]|G͸˚m3k=mƭj6ւKf~k3rg~g~g~Zڬ3 ͸˞kk3ڌ96.{-͸˞{.{=͸˞kk3ڌ9V6.{]θ=׮fܱڌ;\^qǞkk3s~{ܱڌ;\^qǞkk3spzm{]͸cw9v6=׮fܱڌ;|w9v6=׮fܱڌ;\^qǞkk3spzm{]͸cw9v6={]͸cȵw96= 6=׋6= 6=m3sp 6=6='aqǞ fܱ^ی;ssRyZ?>wqkUμvkm֙׮fZg^^q:ڌ֙׮f|{|{{{{μv6u=zYg^QqGki3zg=zg=n=y=z3?w=_ukk3z3]͸Yͥq:ڌ^יףf|{ ^QmYmUmy=mƭ\my=m]Qo3zv{|{z ǭMg{{{uwspzm]\^q=׮fuwsv{uwspzm]\^q=׮fuwspzu9v6n{]͸۞k{fV۞kk3ڌ9v6n{]͸۞kk3ڌ9v6n{]͸۞kk3V۞kk3ڌ9v6n{]͸۞kk3ڌ9v6n{]͸۞kk3^۞kk3ڌ9v6n{]͸۞kk3ڌ9v6n{]͸۞kk3^۞kk3ڌ9v6nk"fmZBڌ9Vǭ9ZsVs^sQf5ϺǭNy=6nk׮fm=Tuƽcu[髹^ڌouuuu[5yڬ3_Nu9n{}a{}ڌ9x^ޫ6̷//̏/Ϻǭ}5<]͸w_sp=Uw_sv6iImq>q>q>q>qkXͫq5f}zfw_sp}=n]QZ}V}^}Qz5Ϻǭk5\/ی9^ wsp m3zf}۵q=׮f}wspzm\^q=׮f}wspzm\^q{]͸Ǟ듵͸Ǟ듣͸Ǟfcsp}ی{9~sm=\wfcspzmƽ}ڌ{9=ڌ{9v6{]͸Ǟk׻fspzm=\^q=׮fcsy{܇owǧc]:~\|/hO[׍?}?Wط?p +8>bo|~? ߺ#?}5r7_53/zq~qn._/_o[?}>O~:JpXYu~>n5߇.zD_]>y/g3*O4=xIЃ'A=hz$O< zd=&4A zP=&4AހJP=&CiJP=xz(MCiJPo@ z(MCiJ 4A z(MCi=&4A z(MЃ7=&4A zP=&4A P=&4AހJP=&CiJP=xz(MCiJPo@ z(MCiJ 4A z(MCi=&4A z(MЃ7=&4A zP=&4AހJP=&AJP=&CiJP=xz(MCiJPo@ z(MCiJ 4A z(MCi=&4A z(MЃ7=&4A zP=&CiJP=xz(MCiJPmz(MCiJPo@ z(MCiJ 4A z(MCi=&4A z(MЃ7=&4A zP=&4AހJP=&CiJP=xz(MCiJPo@ z(MCiJ@ z(MCiJ 4A z(MCi=&4A z(MЃ7=&4A zP=&4AހJP=&CiJP=xz(MCiJPo@ z(MCiJ 4A z(MCi4A z(MCi=&4A z(MЃ7=&4A zP=&4AހJP=&CiJP=xz(MCiJPo@ z(MCiJ 4A z(MCi=&4A z(MЃ6=&4A z(MЃ7=&4A zP=&4AހJP=&Ѓ6w=vo߉u_?:zxw?g6\/|X_v>_?|~;ϟoNt?$@߁<.{?nlDha"4Dha"4Dha"Dx"Dx"Dx"Dx"Dx"Dx"Dx"Dx"Dx"Dxa"Dx"Dx"Dx"Dx"Dx"Dx"Dx"Dx"Dx"Dxa"Dx"Dx"Dx @7m @7m @7m @7m @6Dx @6Dx @5Dx @6Dx @6Dx @6Dx @6Dx @6Dx @6Dx @6Dx @6Dx @6Dx @5Dx @6Dx @6Dx @6Dx @6Dx @6Dx @6Dx @6Dx @6Dx @6Dx @5Dx @6Dx @6Dx @6Dx @6Dx @6Dx @6Dx @6Dx @6Dx @6Dx @5Dx @6Dx @6Dx @6Dx @6DXJ B? +Doz^D~*x?o >vߖz}p\~qmI`M,A&`M,A&`M,7`oހ7`oހ7`oހ9ހ;xvހ;xvހ;xvހ;xvހ;xvހ;xvހ;xv`ހ;xvހ;xvހ;xvv 7`mv 7`mv 7`mv 7`mv 7`mv 7`mv 7`k&v 7`mv 7`mv 7`m7`oހ;h37`oހ;h37`oހ;h37`oހ;h37`oހ7`oހ7`oހ7`oހ7`oހ7`oހ7`oހ7`oހ7`oހ7`oހ7`oހ7`oހ7`oހ7`oހ7`oހ7`oހ7`oހ7`oހ7`oހ7`oހ7`oހ7`oހ7`oހ7`oހ7`oހ7`oހ7`oހ7`oހ7`oހ7`oހ7`oހ7`oހ7`oހ7`oހ7`oހ7`oހ7`oހ_6߁~;ðt=};lJp[;\~om qv?}x>/S\~"W|.{?>MS *BT%CEh *BT%CEh *BT%SEx *T6CEx *T6CEx *T6CEx *T6CEx *T6CEx *T6CEx *T6CEx *T6CEx *T6CEx *T5SEx *T6CEx *T6CEx *T6CEx *T6CEx *T6CEx *T6CEx *T6CEx *T6CEx *T6CEx *T5SEx *T6CEx *T6CEx *T6CEx *T6CEx *T6CEx *T6CEx *T6CEx *B"AEx *B"AEx *š"AEx *B"AEx *B"AEx *B"AEx *B"AEx *B"AEx *B"AEx *B"AEx *B"AEx *B"AEx *š"AEx *B"AEx *B"AEx *B"AEx *B"AEx *B"AEx *B"AEx *B"AEx *B"AEx *B"AEx *š"AEx *B"AEx *B"AEx *B"AEx *B"AEx *B"AEx *B"AEx *B"AEx *B"AEx *B"AEx *š"AEx *B"AEx *B"AEx *B"AEx *B"՛CEveuߧxN*bUUĻ"/ﯯcx/Jb$忾|^Oqۇ`'QDIh$J“( O$<%I'QDIx%P(MDi$J% J4Q(MDi$AI&J4Q(M7(DI&J4Q%Q(DI&J4Qޠ$J%Q(DI&JDi$J%Q(DIx(MDi$J%Q( oP(MDi$J% J4Q(MDi$J4Q(MDi$AI&J4Q(M7(DI&J4Q%Q(DI&J4Qޠ$J%Q(DI&JDi$J%Q(DIx(MDi$J%Q( oP(MDi$J% J4Q(MDi$AI$J%Q(DIh3Di ׺ %Q(DIx(;U$J%Q( oP9*DI&J4Qޠ$Js|U(MDi$AI$J%Q(DIx(UI&J4Q%Q㫒(MDi$J% J4Q(M7(DI&J4Q%Q(DI&J4Q %Q(DI&J4Qޠ$J%Q(DI&JDi$J%Q(DIx(MDi$J%Q( oP(MDi$J% J4Q(MDi$AI&J4Q(M7(DI&J4Q%Q(DI&J4Qޠ$J%Q(DI&JB$J%Q(DI&JDi$J%Q(DIx(MDi$J%Q( oP(MDi$J% J4Q(MDi$AI&J4Q(M7(DI&J4Q%Q(DI&J4Qޠ$J%Q(DI&JDi$J%Q(DIh3Di$J%Q(DIx(MDi$J%Q( oP(MDi$J% J4Q(MDi$AI&J4Q(M7(DI&J4Q%Q(DI&J4Qޠ$J%Q(DI&JDi$J%Q(DIx(MDi$J%Q( m(MDi$J%Q( oP(MDi$J% J4Q(MDi$AI&J4Q(M7( m~yPQJXw(S߼$G)U_xVjb]wj\2T)5 j’&4AMh5 j’&4AMh5 j’&AMx5 jB&AMx5 jB&AMx5 jB&AMx5 jB&AMx5 jB&AMx5 jB&AMx5 jB&AMx5 jB&9&AMx5PQޠ&AMxf o oPޠ&AMh3Ԅ7GԄ7 oPޠ&j›#jԄ7 oP 55 jԄ7 m戚5 jԄ6CMxsDMx5 jB&9&AMx5PQޠ&AMxf o oPޠ&AMh3Ԅ7GԄ7 oPޠ&j›?A]7Մ7 oP 5>qSMx5PQޠ&AMxf o oPޠ&AMhsEMxsDMx5 jB&9&AMx5PQޠ&AMxf oPޠ&AMh3Ԅ7 oPޠ&AMh3Ԅ7 oPޠ&AMX3Մ7 oPޠ&AMh3Ԅ7 oPޠ&AMh3Ԅ7 oPޠ&AMh3Ԅ7 oPޠ&AMh3Ԅ7 oPޠ&AMh3Ԅ7 oPޠ&AMh3Ԅ7 oPޠ&AMh3Ԅ7 oPޠ&AMh3Ԅ7 oPޠ&AMh3Ԅ7 oPޠ&AMX3Մ7 oPޠ&AMh3Ԅ7 oPޠ&AMh3Ԅ7 oPޠ&AMh3Ԅ7 oPޠ&AMh3Ԅ7 oPޠ&AMh3Ԅ7 oPޠ&AMh3Ԅ7 oPޠ&AMh3Ԅ7 oPޠ&AMh3Ԅ7 oPޠ&AMh3Ԅ7 oPޠ&AMX3Մ7 oPޠ&AMh3Ԅ7 oPޠ&AMh3Ԅ7 oPޠ&AMh3Ԅ7 oPޠ&AMh3Ԅ7 oPޠ&AMh3Ԅ7 oPޠ&AMh3Ԅ7 oPޠ&AMh3Ԅ7 oPޠ&AMh3Ԅ7 oPޠ&AMh3Ԅ7 oPޠ&AMX3Մ7 oPޠ&AMh3Ԅ7 oPޠ&AMh3Ԅ7 oPޠ&AMh3Ԅ7 oPޠ&AMh3Ԅ5zՄx[CM<~O5MM&i!_n'NO\~'qy˼m M',zB& M',zB& M',z7 oޠ'z7 oޠ'z7 oޠ'z7 oޠ''AOx= zB'AOx= zB'AOx= zB'AOx= zB'AOx= zB'AOx= zš'AOx= zB'AOx= zB'AOx= zB'AOx= zB+z7 oޠ'z7 oޠ'z7 oޠ'z7 oޠ'z7 oޠ'z7 oޠ'z7 oޠ'z7 oޠ'z7 oޠ'z7 oޠ''AOx= zB'AOx= zB'AOx= zB'AOx=ޠ'AOx=ޠ'AOx=aޠ'AOx=ޠ'AOx=ޠ'AOx=ޠ'AOx=ޠ'AOx=ޠ'AOx=ޠ'AOx=ޠ'AOx=ޠ'AOx=ޠ'AOx=aޠ'AOx=ޠ'AOx=ޠ'AOx=ޠ'AOx=ޠ'AOx=ޠ'AOx=ޠ'AOx=ޠ'AOx=ޠ'AOx=ޠ'AOx=aޠ'AOx=ޠ'AOx=ޠ'AOx=ޠ'AOx=ޠ'AOx=ޠ'AOx=ޠ'AOx=ޠ'AOx=ޠ'AOx=ޠ'AOx=aޠ'AOx=ޠ'AOx=ޠ'AOx=ޠ'AOx=ߡ'~;wokG}/kx=!wZy/ǧ}x*%4AKhdh M%4AKhdh M%4AKhdj oޠ%AKxfh oޠ%AKxfh oޠ%AKxfh oޠ%AKxfh oޠ%AKxfh oޠ%AKxfh oޠ%AKxfh oޠ%AKxfh oޠ%AKxfh oޠ%AKxfj oޠ%AKxfh oޠ%AKxfh oޠ%AKxfh oޠ%AKxfh oޠ%AKxfh oޠ%AKxfh oޠ%AKxfh oޠ%AKxfh oޠ%AKxfh oޠ%AKxfj oޠ%AKxfh oޠ%AKxfh oޠ%AKxfh oޠ%AKxfh oޠ%AKxfh oޠ%AKxfh oޠ%AKxfh oޠ%AKh37h oޠ%AKh37h oޠ%AKX37h oޠ%AKh37h oޠ%AKh37h oޠ%AKh37h oޠ%AKh37h oޠ%AKh37h oޠ%AKh37h oޠ%AKh37h oޠ%AKh37h oޠ%AKh37h oޠ%AKX37h oޠ%AKh37h oޠ%AKh37h oޠ%AKh37h oޠ%AKh37h oޠ%AKh37h oޠ%AKh37h oޠ%AKh37h oޠ%AKh37h oޠ%AKh37h oޠ%AKX37h oޠ%AKh37h oޠ%AKh37h oޠ%AKh37h oޠ%AKh37h oޠ%AKh37h oޠ%AKh37h oޠ%AKh37h oޠ%AKh37h oޠ%AKh37h oޠ%AKX37h oޠ%AKh37h oޠ%AKh37h oޠ%AKh37h oޠ%AKh35ݝ-%^Owh_~O-jwqs +buJĚ~ 忾|罌ϮO < I'@x “O < $B JQ@&Di JQ@x(MDi JQo (MDi J 4 (MDi @&4 (M7@&4 Q@&4 JQ@&Di JQ@h3Di JQ@x(MDi JQo (MDi J 4 (MDi @&4 (M7@&4 Q@&4 JQ@&Di JQ@x(MDi JQm(MDi JQo (MDi J 4 (MDi @&4 (M7@&4 Q@&4 JQ@&Di JQo (MDi J 4 (MDi 4 (MDi @&4 (M7@&4 Q@&4 JQ@&Di JQ@x(MDi JQo (MDi J 4 (MDi @&4 (M6@&4 (M7@&4 Q@&4 JQ@&Di JQ@x(MDi JQo (MDi J 4 (MDi @&4 (M7@&4 f@&4 Q@&4 JQ@&Di JQ@x(MDi JQo (MDi J 4 (MDi @&4 (M7@&4 Q@&4 Q@&4 JQ@&Di JQ@x(MDi JQo vtO"y@ zx|}oN?p~y/GmZM,A&M,A&M,7oޠ7oޠ7oޠ7oޠ7oޠ7oޠ7oޠ7oޠ7oޠ7oޠ7oޠ7oޠ7oޠ7oޠ7oޠ7oޠ7oޠ7oޠ7oޠ7oޠ7oޠ7oޠ7oޠ7oޠ7oޠA?x~ AA?x~ AA?x~ޠA?x~ޠA?x~`ޠA?x~ޠA?x~ޠA?x~ޠA?x~ޠA?x~ޠA?x~ޠA?x~ޠA?x~ޠA?x~ޠA?x~`ޠA?x~ޠA?x~ޠA?x~ޠA?x~ޠA?x~ޠA?x~ޠA?x~ޠA?x~ޠA?x~ޠA?x~`ޠA?x~ޠA?x~ޠA?x~ޠA?x~ޠA?x~ޠA?x~ޠA?x~ޠA?x~ޠA?x~ޠA?x~`ޠA?x~ޠA?x~ޠA?x~ޠA?x~_ ~ko_~Ow__o?~ hX/C@pxq/g}xv 4@hdM 4@hdM 4@hdo @xfo @xfo @xfo @xfo @x 7m 7m 7m 7m 7k& 7m 7m 7m 7m 7mno @xfo @xfo @xfo @xfo @xfo @xfo @xfo @xfo @xfo @x 7m 7m 6@x 6@x 5@x 6@x 6@x 6@x 6@x 6@x 6@x 6@x 6@x 6@x 5@x 6@x 6@x 6@x 6@x 6@x 6@x 6@x 6@x 6@x 5@x 6@x 6@x 6@x 6@x 6@x 6@x 6@x 6@x 6@x 5@x 6@x 6@x 6@x 6@X:;o'ynߚwot}:?4Æ׺~~~[@?) 忾|罌OO" <I'D@x “O" <$B! JQD@&Di" JQD@x(MDi" JQo(MDi" J 4(MDi" A@&4(M7D@&4QD@&4 JQD@&Di" JQD@h3Di" JQD@x(MDi" JQo(MDi" J 4(MDi" A@&4(M7D@&4QD@&4 JQD@&Di" JQD@x(MDi" JQm(MDi" JQo(MDi" J 4(MDi" A@&4(M7D@&4QD@&4 JQD@&Di" JQo(MDi" J 4(MDi" 4(MDi" A@&4(M7D@&4QD@&4 JQD@&Di" JQD@x(MDi" JQo(MDi" J 4(MDi" A@&4(M6C@&4(M7D@&4QD@&4 JQD@&Di" JQD@x(MDi" JQo(MDi" J 4(MDi" A@&4(M7D@&4fD@&4QD@&4 JQD@&Di" JQD@x(MDi" JQo(MDi" J 4(MDi" A@&4(M7D@&4QD@&4 QD@&4 JQD@&Di" JQD@x(MDi" JQo|wwߎ(q;?]-~O˩ +zoaˇחX/_YIv|~"%wͯ}~ZZ4?Ga~]_~|>2? p|`oc}0G>qߺ||8~{?napq-uy<}>ܶ,kisr8u^<ׇ`c6y?}~/Ϲ1^)tǾzƑG +endstream +endobj +528 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 527 0 R +/Resources 4 0 R +/Annots [ 529 0 R 530 0 R 531 0 R 532 0 R 533 0 R 534 0 R 535 0 R 536 0 R 537 0 R 538 0 R 539 0 R 540 0 R 541 0 R 542 0 R 543 0 R 544 0 R 545 0 R 546 0 R 547 0 R 548 0 R 549 0 R 550 0 R 551 0 R 552 0 R 553 0 R 554 0 R 555 0 R 556 0 R 557 0 R 558 0 R 559 0 R 560 0 R 561 0 R 562 0 R 563 0 R 564 0 R 565 0 R 566 0 R 567 0 R 568 0 R 569 0 R 570 0 R 571 0 R 572 0 R 573 0 R ] +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +529 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 771.023622 555.889134 750.353622 ] +/BS << +/W 0 +>> +/Dest (Code/DriverSectorWindow/:driversectorwindowcs) +>> +endobj +530 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 765.503622 77.060285 751.103622 ] +/BS << +/W 0 +>> +/Dest (Code/DriverSectorWindow/:driversectorwindowcs) +>> +endobj +531 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 765.503622 555.889134 751.103622 ] +/BS << +/W 0 +>> +/Dest (Code/DriverSectorWindow/:driversectorwindowcs) +>> +endobj +532 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 750.353622 555.889134 729.683622 ] +/BS << +/W 0 +>> +/Dest (Code/F1TVEmulator/:f1tvemulatorcs) +>> +endobj +533 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 744.833622 77.060285 730.433622 ] +/BS << +/W 0 +>> +/Dest (Code/F1TVEmulator/:f1tvemulatorcs) +>> +endobj +534 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 744.833622 555.889134 730.433622 ] +/BS << +/W 0 +>> +/Dest (Code/F1TVEmulator/:f1tvemulatorcs) +>> +endobj +535 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 729.683622 555.889134 709.013622 ] +/BS << +/W 0 +>> +/Dest (Code/Form1/:form1cs) +>> +endobj +536 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 724.163622 77.060285 709.763622 ] +/BS << +/W 0 +>> +/Dest (Code/Form1/:form1cs) +>> +endobj +537 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 724.163622 555.889134 709.763622 ] +/BS << +/W 0 +>> +/Dest (Code/Form1/:form1cs) +>> +endobj +538 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 709.013622 555.889134 688.343622 ] +/BS << +/W 0 +>> +/Dest (Code/SqliteStorage/:sqlitestoragecs) +>> +endobj +539 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 703.493622 77.060285 689.093622 ] +/BS << +/W 0 +>> +/Dest (Code/SqliteStorage/:sqlitestoragecs) +>> +endobj +540 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 703.493622 555.889134 689.093622 ] +/BS << +/W 0 +>> +/Dest (Code/SqliteStorage/:sqlitestoragecs) +>> +endobj +541 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 688.343622 555.889134 667.673622 ] +/BS << +/W 0 +>> +/Dest (Code/Zone/:zonecs) +>> +endobj +542 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 682.823622 77.060285 668.423622 ] +/BS << +/W 0 +>> +/Dest (Code/Zone/:zonecs) +>> +endobj +543 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 682.823622 555.889134 668.423622 ] +/BS << +/W 0 +>> +/Dest (Code/Zone/:zonecs) +>> +endobj +544 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 667.673622 555.889134 647.003622 ] +/BS << +/W 0 +>> +/Dest (Code/DataWrapper/:datawrappercs) +>> +endobj +545 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 662.153622 82.786359 647.753622 ] +/BS << +/W 0 +>> +/Dest (Code/DataWrapper/:datawrappercs) +>> +endobj +546 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 662.153622 555.889134 647.753622 ] +/BS << +/W 0 +>> +/Dest (Code/DataWrapper/:datawrappercs) +>> +endobj +547 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 647.003622 555.889134 626.333622 ] +/BS << +/W 0 +>> +/Dest (Code/DriverDrsWindow/:driverdrswindowcs) +>> +endobj +548 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 641.483622 82.786359 627.083622 ] +/BS << +/W 0 +>> +/Dest (Code/DriverDrsWindow/:driverdrswindowcs) +>> +endobj +549 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 641.483622 555.889134 627.083622 ] +/BS << +/W 0 +>> +/Dest (Code/DriverDrsWindow/:driverdrswindowcs) +>> +endobj +550 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 626.333622 555.889134 605.663622 ] +/BS << +/W 0 +>> +/Dest (Code/DriverLapTimeWindow/:driverlaptimewindowcs) +>> +endobj +551 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 620.813622 82.786359 606.413622 ] +/BS << +/W 0 +>> +/Dest (Code/DriverLapTimeWindow/:driverlaptimewindowcs) +>> +endobj +552 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 620.813622 555.889134 606.413622 ] +/BS << +/W 0 +>> +/Dest (Code/DriverLapTimeWindow/:driverlaptimewindowcs) +>> +endobj +553 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 605.663622 555.889134 584.993622 ] +/BS << +/W 0 +>> +/Dest (Code/DriverPositionWindow/:driverpositionwindowcs) +>> +endobj +554 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 600.143622 82.786359 585.743622 ] +/BS << +/W 0 +>> +/Dest (Code/DriverPositionWindow/:driverpositionwindowcs) +>> +endobj +555 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 600.143622 555.889134 585.743622 ] +/BS << +/W 0 +>> +/Dest (Code/DriverPositionWindow/:driverpositionwindowcs) +>> +endobj +556 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 584.993622 555.889134 564.323622 ] +/BS << +/W 0 +>> +/Dest (Code/DriverTyresWindow/:drivertyreswindowcs) +>> +endobj +557 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 579.473622 82.786359 565.073622 ] +/BS << +/W 0 +>> +/Dest (Code/DriverTyresWindow/:drivertyreswindowcs) +>> +endobj +558 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 579.473622 555.889134 565.073622 ] +/BS << +/W 0 +>> +/Dest (Code/DriverTyresWindow/:drivertyreswindowcs) +>> +endobj +559 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 564.323622 555.889134 543.653622 ] +/BS << +/W 0 +>> +/Dest (Code/OcrImage/:ocrimagecs) +>> +endobj +560 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 558.803622 82.786359 544.403622 ] +/BS << +/W 0 +>> +/Dest (Code/OcrImage/:ocrimagecs) +>> +endobj +561 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 558.803622 555.889134 544.403622 ] +/BS << +/W 0 +>> +/Dest (Code/OcrImage/:ocrimagecs) +>> +endobj +562 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 543.653622 555.889134 522.983622 ] +/BS << +/W 0 +>> +/Dest (Code/Reader/:readercs) +>> +endobj +563 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 538.133622 82.786359 523.733622 ] +/BS << +/W 0 +>> +/Dest (Code/Reader/:readercs) +>> +endobj +564 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 538.133622 555.889134 523.733622 ] +/BS << +/W 0 +>> +/Dest (Code/Reader/:readercs) +>> +endobj +565 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 522.983622 555.889134 502.313622 ] +/BS << +/W 0 +>> +/Dest (Code/Settings/:settingscs) +>> +endobj +566 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 517.463622 82.786359 503.063622 ] +/BS << +/W 0 +>> +/Dest (Code/Settings/:settingscs) +>> +endobj +567 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 517.463622 555.889134 503.063622 ] +/BS << +/W 0 +>> +/Dest (Code/Settings/:settingscs) +>> +endobj +568 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 502.313622 555.889134 481.643622 ] +/BS << +/W 0 +>> +/Dest (Code/Window/:windowcs) +>> +endobj +569 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 496.793622 82.786359 482.393622 ] +/BS << +/W 0 +>> +/Dest (Code/Window/:windowcs) +>> +endobj +570 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 496.793622 555.889134 482.393622 ] +/BS << +/W 0 +>> +/Dest (Code/Window/:windowcs) +>> +endobj +571 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 481.643622 555.889134 460.973622 ] +/BS << +/W 0 +>> +/Dest (Code/recoverCookiesCSV/:recovercookiescsvpy) +>> +endobj +572 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 55.386457 476.123622 82.786359 461.723622 ] +/BS << +/W 0 +>> +/Dest (Code/recoverCookiesCSV/:recovercookiescsvpy) +>> +endobj +573 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 538.710911 476.123622 555.889134 461.723622 ] +/BS << +/W 0 +>> +/Dest (Code/recoverCookiesCSV/:recovercookiescsvpy) +>> +endobj +574 0 obj +<< +/Filter /FlateDecode +/Length 2866 >> stream xA+l@*V >9Drɗ(余vV<Fv-nw{,6"9' Vi:G<|}|>zuyZ}6#֧O~|_;6'1dׇoN=.twC9}~.72o^r6Vkgc տ7~ng9;ճptOoٱ7RxnxxV%B @@ -6629,22 +7323,22 @@ M EbДA;9ΪՋD2ԞBR{ E;980T \9k="N:Z@y'W 3Y rУwrБ.d"?K͘\PwrЖI䠵u"L)49hӕ&-]yorS K?1dr<ԞBf78{^ݩOlT;8ȏ9HԺzjR{ ==[zj6࠯Ժ:.ԞBzK/;8ȏu8XGs͓x8?VMeQ'+ ;P__x -a~O?}w0;xc|NZ{cwx}?]u)'Ϯ D{̼'Jg;ֽWs*"{{o7|/ryܹԾqW޺n{G:_;_^o_*5 *( nyU_7JL On)jx9ƹ|t|/q1r|}\ο/o-~}\c+܁Dg}nW0܅6ۑY3 {m=0|}pޯb>io\kwWlyBϬA^0 #FXό(~gvm7WQq=naQwJ( ㌏g՛Gqx{k/ԧ) +a~O?}w0;xc|NZ{cwx}?]u)'Ϯ D{̼'Jg;ֽWs*"{{o7|/ryܹԾqW޺n{G:_;_^o_*5 *( nyU_7JL On)jx9ƹ|t|/q1r|}\ο/o-~}\c+܁Dg}nW0܅6ۑY3 {m=0|}pޯb>io\kwWlyBϬA^0 #FXό(~gvm׶؋;%q3a#?F8]pߵp}M^- endstream endobj -510 0 obj +575 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 509 0 R +/Contents 574 0 R /Resources 4 0 R -/Annots [ 511 0 R ] +/Annots [ 576 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -511 0 obj +576 0 obj << /Type /Annot /Subtype /Link @@ -6659,32 +7353,31 @@ endobj >> >> endobj -512 0 obj +577 0 obj << /Filter /FlateDecode -/Length 391 +/Length 392 >> stream -xRn0 +UHQ) ȡX{vab v؊zDӶ(R||$z0y@{i Z$'?t'Al5M;lzr$A -GɾTQԀH8辺_K c %+WUGa|sK4 -אY5d -TQ%)6 l,+`y9~(OD2p(= ENLҮgYc7cdLAsNxwO/[_廃d#711ihj]ddWM;.LurM{L -Ah#lR)!O0ԊBAl,) ^~chEfps#l<o 6 r +xRN1 +;cGB{@mJ8΢jKu20 AVW>wi4ٞu> endobj -514 0 obj +579 0 obj << /Type /Annot /Subtype /Link @@ -6699,40 +7392,45 @@ endobj >> >> endobj -515 0 obj +580 0 obj << /Filter /FlateDecode -/Length 4017 +/Length 4015 >> stream -x\]$|_1ϖ+KzNuU6c\!.npǛz*᜝{C'7Sh¤$IItcb0 U90\kfaV"]JQ+Z zuJ*ҕpcSVZ 3 BS1-7SZ&%$&" ף" 7,xc2C؄"ܰxpEϨw#H¦[PhĜ,8h;N +_P!*Q"ȄS9w Q::?"#uГ+:1+<"|n%_D`EqԊNLERE"%D:!ܩ)uɝ:/)|AL^w`2ܩ/ҭ|A5AUɝ:0ܩ#l9|AC$w MrFCl9/C N4 `5*_P* -ɝ:Mr ` 0C-$wuܩo*`u08"|$w!w%R3fu-S Gq!'zCGlljN"Δ"lrQܓ3Q=YV6 P)\"AqP(`U$w lLrB-+_DbΘʆ]w$DPgD@/1V NԞ$ĵɖ$w K|LV6\sܝ(N̩E&f E&PLV%w`*V `B/,tɰKTr 1{ŕ/*1# J̨J!fCul-8Ėܡ*^8|\v{Jml_7+bGFvoV\߼Y󹭇o2rwcØL{RN?Q_֙۹U{2mQiO7.gOO/?S 0?ϯ^_|@;shO9ϯ -W=s@UzBz~|F-:~8LgN/y;woTa|R>_c}{t]< ¡}CZ77#g|x&>pK3AӐDY_|rI:o?;r?f9.q/|ߛlpݗ~m?8N -=Z؆;/3>='o8e|dsw=mm6pp詄y?Ξ9fnAL7~{2,F6 \AخaqrO_l|?mw||J T./csW SQs9v 塯~>9l5FQz}^sR:Q9n7(+ѷbc.Ec[1^g7}ZR^p{ U=J}{xcg<_Z)U+Vyd흽_e^cQd m6@pfv_*-E͵MjոA-ıs:ūsXOλi7] -}8X.b VV#fM29pfu;jb3ϯ:6 H%렺[ȕȬwn<6vocc0Ԯ[W{{ֆ6T@9Re ({7>ȷckӼ.d,{"B&6־y\bD*rC퐱3.oR7жT>/V& y:gۻ'pmU^F)P\}ϵF3nw^< +x\]$|_1ϖϽJP>ϭv H3j$>{%fi/1'*)9Nd%S@JT2!*TANfŝ2@TbEH{z̊;OF_D[ :zQ#u0"SS.|&|H Qab%w`J]r"f ` ++_Pŝ:$w`d `t+_PcA!uiUr" %w`H+bN)_Pɝ:@ܩ()`=g :Ǯ:$-S!>M:r +H:Grpܩ(Hu0:}eP ɝ:h$w5!|AD:*ɝ:hhŝ:h T6ČY|ArKACQܡwH*C3%EqG\dČjT"DOh 1Ǫ#}&T=bF +HAElp57q:ܡn3&!fdŝ|-=3Y"3:PDƅUa'=qm%:&)_@S-h 0ל%w'fts*|C|90U:JU:D â|D2;t0%B޻E!fdqJCŽ3hŽs@lP(`F*,%w OHA>t( 1S;1#N̨ܔ/9|AVC;u[Uܝ:赪tUA4̊StQQ{ND!6:JA@;u⭖ԝ:9a̘;uYr"XղS1j30R NKA&;u0YVNDv:Wrܩ#(_P#dY!u0rQ6Scj]ݩѺSp`4ܩN ԺSC jO.UqHDg%SZ| `@$*_PCLjOͰNDfܩ];uZV{ +N4;u]N4Aה/d:hJAdy=S&2tgW!۰]qƇ"lM)@\V6eCI%@\ 6l j:Be̍͌B.\)d He=˽l#l4 1cˇK2X 0WJ#av:F% 131=*2|c 1Ց-acQ)d`= eD$Q|QU^]ވ9fv6(cNlEr܋DPպ:8 /d2t0"%N%N̩ub (A$rŽP!P{rg΀ԞBR{ +: +IrhܩZW/AG"|Qh$w ,$w [ Su +u0"SS{I:JU:3jOP*d!1&SQmuBD3 +ur:BSrܩx^PH;u^r"XպzjOPa +u+S#ZO uB -=B 5KPܩ*|A d/!Uɝ:.ŝ:ȲE>Khߕ/{TqH%w5ܩVMS{ +:h9(:hJD++uz :h!=J4K{ޓ ZWЫ=LCًZWSQ{ +53gD81*'b6Tqش*t0%w`h;tu2>ߩxl*> +Xݛ7oV|n᛫ D0=#^T{wTuvnopeT~~z'Ͼ|zw!=%;_/to?;~kCB~wPUP^x&>31iw.vxXC?sph M;03-ܒL4-QW&$*s>s bc\b3q/~[>SM6|6Ϳ8N +=Z؆;/3>='=ݿ F2k>9Ş6xV8B8T<@gOMNw =g{.AخaqrO_l|?mw|| z{gg)wNxύLG>{v_{ŹZ2Ɋq×gdW'¡(jIмknזB1z_\ws,\I-Yk:t?f5 m[P;a(G~L9ESu%rlƲD{k޲n˚^^G^':&@Ç񚰾viد:8=\֊e*,,8D6lNcR̨=kS'2.tTg0 uON`TI'N/qCR7i葋Is+¿w16cٹX[z뇽~ck^vS?76>e%vGLzxl+Z׫yCu9k7~R^z<^ء|HWVLwUU4[{fr؀DsYcQ1=ݗJjKsmꮗZnk+qNh8~."AZnfm_>5o>UtÌ})|쎚e+Mɹ:r:2k݄ۮ ] 15]7qM:P}|> endobj -517 0 obj +582 0 obj << /Type /Annot /Subtype /Link @@ -6747,7 +7445,7 @@ endobj >> >> endobj -518 0 obj +583 0 obj << /Type /Annot /Subtype /Link @@ -6762,7 +7460,7 @@ endobj >> >> endobj -519 0 obj +584 0 obj << /Type /Annot /Subtype /Link @@ -6777,7 +7475,7 @@ endobj >> >> endobj -520 0 obj +585 0 obj << /Type /Annot /Subtype /Link @@ -6792,50 +7490,47 @@ endobj >> >> endobj -521 0 obj +586 0 obj << /Filter /FlateDecode -/Length 2916 +/Length 2919 >> stream -x[[,~_1φua q 0;_|v?DRO5RƘ2;-UI#O"A?-9]"6oE)O ߧ//o>Z)̈́ CCkkZ6'֓uPi*ZoA+K|*B<-~|%\ҳ7qq<^@2mܳ^1 ;{*NeW|;el¤,)Jk'FxՌj~B6W1cRpr`&q{X!z)z&ؽj6w)SG$Y2tv -weLZW9/]p`mW>~~3_n@ +_' $ ]UVR*%M -/bIp{Q[4xBug<NEwQN+WjMԸB@KgT -(?CGO)Jix-Ə&&襸i\,O֗hU0YAϣ)؉'hJeAu9Y2JPҔm3/»dBj ~ 9h.e"rrZ0Pk!5&cٖL 0]qi -{QqSޔ,4)3CY[PG>#\وE>RdWGdAyX@,J-x)X5:jmu6qh޻Bu7&lc->CV+|W.x}.XJQ -J)#l+-߬yF:)568 L -7!6>BF?{/ggF򴀉s˳'̧:lz9ZI\Ŭf[KZXsz D/sɦ&91n\^YL7$?K;y2Lx-+DOTC,-n,\bR|V{x\e؞ͻ -NX^- m TM]-IU@o1`bDq>Mk010wN]š@4g! yRM gUjt,Y/)zS,цc'& r)Bq (Ag]B@ A#uCu - mrPlfّ#PY*6Qs"C<\3gfGbHڟuvFm _l^Arrsu9RbEMj?2G4p|q@0jXİs -D%*;VORvW%<'#w||$oEOt?ׯ'bB! BtQ?z:Gx!|g)Z. y^U.OжTR*1y'N˿tr7 \Dfr!,g^HD?~6gŒD~_eDZj(\]6tR3FK|1ӇfWXYxd64 ź:|{vq&~!Њ49zGMg-Ba%WM6ɝ0.jМ?%!0] Id=wgڏ=l +,ƬkzHra%~gnl*^Y)R۸5V43s׬oFs|j6W[ִlN⣮'|Ьg?UʹĽ_Vb&܋E(xf]Ե;xsMR9ۼm2cPP/_6ZXљ&LZ˒DyRjX/[iV3WpL +NLZw .4#EoWQe<|*Ȁd\_ zE<&9Mp`mS>~he~Wǹ:2OH*H29gT*%U +bIp{Q[yBWg|%Ɋ|x]9SBW< /TyBPQ  +SX "wZF\i &t8dE#B'CUЦ]NIPSQa8m/җ<]B3 y.^7yx b4FaH!TلEDto! Z ,?VDT#_%xIC PX2 8. +01ZkNccEM +%Q1gŸJPc]L- +[=@`:&_1"*DY,!yp&_nf\$zJ蝵2x_jWfpdbQ t {;éE02ɐ d1DP8!0NL wLijB#&gֈ.VIa0<>ج;h1vAծd:l#u,,.G.DFVCDsƤP#xR1 PvaUӧg{f+Tñ~e9ċ蠜]V0aԔaT]Up ƴ}?`k5VbA6*,e33-" +jGZ 󭚹!8]_Bˑx]RV,V,ucRcW*ςW,ܙeS )/Q1`+\쑠mx!b|5vBR _7V%sŹu`6mΞI z UN=ps-vDys k)Q9(lī1WhH +UX69EDqq; Yì[ v1 ?\룤HjXsEbg7i ++-`1nOF +r/2MRfj%4!'U>,weHz$u!S-MpXN 6A] :,Q-mC*1e][qI4#ϼdJCMSdYpGQLzQ(tW] Wf bPlA ,02#VFN;Ȃ,(hˤCe[IkWb% T^kn7C\n;7xCϋ+ʺ7(SZ1Ӵ1^ "uRlAU<]jـ{:=}:ڹ䲮G90ݳ?8' L1K88H0=`>M1fglLl0-(f6\:œ騩gzixpC 60Yeb.)Yu\ca+̈́+\9CtƂ!U`&WY[]a^"pmt~f BvhAuyU0vtfMpdЛts3Qǽ .z [COn +@ rxܩ~xdKI/"fԈX +sưg5FTԶ[8| cѧ 0vR#z ?LwMQ%{U@W|h}B.Oviu;x X]Q._lÜ(u<5\RKF5җ{ռv,փ 4 oDC'90c6q^!gya +4}1|Kv~hox`ր ++Q M6ڌa|,_ +*`dIP2ßL|w(/g,OI24~ _.rJXqKR2,N](xRj0&wQ}M1RhlX!jOY>S1(~\1!\K#.QRڹѹh iwMsn endstream endobj -522 0 obj +587 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 521 0 R +/Contents 586 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -523 0 obj +588 0 obj << /Filter /FlateDecode -/Length 6254 +/Length 6255 >> stream x[$ɕWԳ`S~pz^$CuZ/i?Ydqp3tupKXv<$[VKz~OV?+qOjˡniYҞ_n޻bbt}>[u.nٷdoO~7{ //9|-??e~/[+?^zumD& 0Vܽ- jwcc,÷ rsPе ,I/>F!4GSa.9p]1%,jQIWJQIWruQ 7$ @@ -6848,46 +7543,50 @@ Pn QBb!;woQ6^//s׀;6P95^w_zͥ'` ]ߑ׷ϸy޸|Lrb XzkyZ&7[u^=Ʊ0+Wk;^o! !y䴱ֳW>=.sg.j~[?7~zڹFh kl42\zyR9s sX3&ޚz;? ]Rȸ㽽ۨ~Y8NL or x}?wWסbXd[^MtO/[NЈCn6cCo a 8V~.qF}W+~;|ܶ8w{:5gƩIDy ;=ޅ"^^nS5E(b -lü}zv׽C=Хs{1[@rwxuQӶa kˮmSw}sǙ׼ݪ+ÔmrW5pLA_4i Xf6M{l5ƞ|vSmqz05bmyot}fpR𗭘=i!@K 㺜MKm(װ26ϙ_#՝1&=!jm<^^{>jK4va}qXh.;TTD&sXҿ?Ghxn 3>ut arXI 9Nߠ_`䗔|ٗʧ9Q}0/M:/vgqn~哯YM?c<ܡ#Ý:+s欍m!8hl<jd8aOFv6EXE٫-GVcgͽ_jEݷ.fv^xP=l]* luu,]wL1}I8cgt[O.7>?o|xu?aw3v6>ilq~ A%o}q]X r[j#탙I@pj_a?cVFy ôɊY8hfIC37tPwe1vgqtOoLg!tvg|0#/׽6;g Bv[?aE|A4}Jr8GYhSBu5r 9:vq\LǁjI5.??pb^nY fϞاv˩ц|묲?)ƥB}^*G`7z?PGXF|gƇ)뵡_}3Ο!r>N>zl7t͊'l%-%)Cێ6?^.yI)egcgۛ5?< /|_0wq/X~iaN/|a稩=\b}+gv/9dB'a0^[؏}ߘ -Q/{4ԚߔIx%!QrŻ[?Ւqۢ)b;>nEpeHzS -{P˧}Z-ӰmQ" +Q/{4ԚߔIx%!QrŻ[?ՒqۢIq5vܞwJː4 ,@>[ʗO?5[a?SۢvoOzÏ% endstream endobj -524 0 obj +589 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 523 0 R +/Contents 588 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -525 0 obj +590 0 obj << /Filter /FlateDecode -/Length 1830 +/Length 1828 >> stream -xYYF~_@} $$~paB4HQ-x4RU}ui^ }pV/ӇgpK#/8>c.4 '<K7bF+)wA1ǹnBJfDbN/V 6[I7FHi'Jv x[4̺TLd L+P:; l}< D`*o~|Efuvsal}0Bsku>_rߗWM`2(?Uly>S ιΞGMWa*pɹ:_jՁeÐk[y9;|9q4WkF'qN\{ dUrڲ\&cG=m̕LF֊cMqΖ{'e׾#]r$;Q2׎(Xomd}S -Ppv6"31d3 SeuL!Y/y$J%DTd2{!qAJpSn >keMag -KdYM/Eq[xz'丧Tۭ9ʘƻ H BtB<eK@oĭ>/ZMr զ'\Z7BL** 4r"JxK(hz0TY@(߅hQ)Dr:EHAnWBQc8n1=,xxO/ǙL3 PVd%$?\8@}j~17"|+kBr@ -S,\, *箅/E*-x81]X%0P:8(as\끂 FIq-Vr)I|5(,/%|HSThSp#52/)bc.ʬ+yj-]qA}^$ӓjd N/Wn[q}ik:h.`|wj4]qC`,ify4d̥]c GQ7 Ҕ2Ë &] -X%uF4`DoJGV%'*Jcנm χ3Q:"UsśA]٫ ww\ gv"ζ&!%|$i%=COZ8&~ZIWa:#zt@Wm:Cc)k k ;fԓf๽a*7 {]k$LvO=띡4~g;b<ڴ<;(ki81j`$iE(aw|O}jh-6"b50ʑ$,UJ Ub4X|"x&pMcaUl#I;UX~x6tPCR}e7bT6вbC \Bto*1yc܅&B;з] /y+yv5689M(Q&A q)w8EdD A.@c lJT ݯ0S%~瘝)rp3h0",@܂3\gA6(+Uyƿp6f7(pCiGTv/nr +xYYF~_@} $$~paB4HQ-xRU}ui?^ }pV/Ӈgp?8>c.4 '<K7bF+)wA1ǹnBJfDbߏN/V 6[I7FHi'Jv x[4̺TLd Lei(ns>"f|SK0cry|z7?" :x;0gp6>:DN/9㫦CKt*{6 +ZIGj,d^R$\YCW\?BZ&+\(o5 +,/t)G3SI'._a2tru]ne(>3)h8i  3W4`uY%iɨK36-Aܣn@9)3e9euLJ7d-X+'i\KO.U ߯Azykgt}E7 W[ud " ׭X=EVm7L̥;2 +iCJZI\IK{, 3qL tD9hF]AĻnuPW5$Rd7)Rvz's{!$Ļf I:@p5+{;C if$wJ#yiEyH-vT_QpbHҊPT*%ZzImE^wRka#IY|o#ګ5[6hD2Pyk=Ij%syD=ǔ464c%JTd' awC]SX8.`;fʪ|> endobj -527 0 obj +592 0 obj << /Type /Annot /Subtype /Link @@ -6902,7 +7601,7 @@ endobj >> >> endobj -528 0 obj +593 0 obj << /Type /Annot /Subtype /Link @@ -6917,7 +7616,7 @@ endobj >> >> endobj -529 0 obj +594 0 obj << /Type /Annot /Subtype /Link @@ -6932,42 +7631,35 @@ endobj >> >> endobj -530 0 obj +595 0 obj << /Filter /FlateDecode -/Length 1861 +/Length 1862 >> stream -xZ͎6)eHX@{H{ E =JS -$}CCP-o6^kK8o^?)!Dqrz[ y;ȗ?A{ᣝ;F#L*ģWA(%' 'h-ۧß~RJM*`uLoNJעC#L~~9(\B/)DB0~GMi)/ORN1RZo4|8o&3/ca =uY"/,26I2\0kE<XOzq-I@7i^v,sqv̝b] #01b \(B/^#˱X, hy,z|/~4clw&۾2{'# :U -*we&}dA m,1$[a'ʔ[I-*D -56ޭ۾Q}d0eDžjOu:GK 6%{FՕ$Aڛ8i5ؙ6B)oQI-r 4[mh]Ӿw+rV N -yzo4e7ykS6[&~MBŽk,u N;n GAwNZ”Q}ƝHP6W_oĵzjz -rk{rZ…smƕFb;~͙UpkUVRXP->pq>q3\?@<۹xx?^</:LJ=ų.y;xD?^<Hszqx|jM -+Ut0 }̍=TC{ %`[jٲT5 | -x*Sz·sqLo|U\j -%Lg:| \'r@4Ĕ ;?}XؤBف>e7?q` +xZ͎6)e8?C`(z8H@R-o6^k[8oGy >__R8#/~pL{ 9)<0Z)><{׻yw&a Xo8׷χw'-HSࠟ_@ FE#^{/__z(oKy~rBU-P;7xy?O'C_Qyr.=dy~FIN2Li&˺7}:oϏKk:9LƬw\OV=i\ձÖAzk9ZnBrH+e(@9Zi'0mL-<:_;KBs?H&05 y|<~NӎP~{|ÈhČ؂;g#o) 6H>y.5Zkf ߋoG*0}emye~8NUpŰ fe@@JEb^M96I(a\;{voV &>|n"{ɢd1 +0RAڃ[Jʟc M0PV i29Z Dg7+,Yi:={b)t>1póO*ܚdRu,-4)f_РmUIɽSTn ^sa(^|Yx-cNi "9z̀*&Y1#q:Z1]flDF8ChiDC>)EPk YezHri],z (e+bXDS)ۢV7[LI]ʷ +}r dj¨0O4*1-{-T.?ԆVf:5m-rb)wwvC[yMJNX&i7ŗI_bnfѼ(]d<%u"`XfѯK 8ƛVU5^30 DGPtM,9$A3@Xl +eZ]󻕻!6:Bũ·QXC^Ȫ[G6AVurdk)c>h{[׫m%N=poyNVndl5V @ +8+Ȋ녂Z2=@3ŋ:|Xrm` +kP7*x.L~BӾ->CmU + +w'}cTĂ+ y*ÃS|xZJo@O(.s˞[\^H^ȷPd=i|0*DJ9OJsgM*TiʄHg+orZ endstream endobj -531 0 obj +596 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 530 0 R +/Contents 595 0 R /Resources 4 0 R -/Annots [ 532 0 R ] +/Annots [ 597 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -532 0 obj +597 0 obj << /Type /Annot /Subtype /Link @@ -6982,38 +7674,41 @@ endobj >> >> endobj -533 0 obj +598 0 obj << /Filter /FlateDecode /Length 3757 >> stream -x\ю#|߯sM& ?88A]`'@F35s!{ؓvSnv5Iﳄc#N?<`Ǩ1FÏ{S\pcR,?}?x}r qH)cMJt࿟{1ݿqHS5C8R#?=]sd=j!l:1%NŪC -`&SY(@5/(L;UYq 2/!|q^\qAUqAHA/2ug`MrҢ _d RBqBɝ:XʐܩȪU:XEq3ɝ:Y:!98"JANieC̥t "Sh;u0&JӨU:PqHDܩ|AL5u0Rܩ($w -ҡ|AL6uj!SmNfȻ)_PC Gr"ZqZ- 1c+_Pܒ;uА~w`Ҭll:fʦ&jq4w(,¦6Ž1(FeeC9woؤPK"fp,S$ōf"Cac;tmU"s`V6Č좸gb.Ir/ uV(ČE!fErT$;tMQh+`Z%w'f w'L3PsjCa%f :XڈPLwtaS":XZ{#fC3E3PqbF1'Lw 1e̘2C Kl:Xj:rK3f` fD>uj8hSAP+NDի:+NĄYqw &j5ݩ=WN %w - ɝ:VKN,.f Vɝ:,SjYݩhAB%w -ɝ:Xuubv:Wrܩۈ3(_P3dY!u0rQ6ĜSsj]ݩنSp`6ܩiNLԺSS$8bf%SHT\ԞS&Ê;uErpAU)8uP)Ar%wꠡLTԞBP͊4FܡitWL#\), d*:ȏ9Hu\SL('‰9^^R@S]&])t0;t0u:ȏub7=.KG+^M,+OV\[>25\zp?\I˳/څ13>T35as{0pSFޮoG<=\|9?qcͻgM^Q'TYDû燿ow_^X>7Mp"Jعź+Fdz/,Ix |O6x [=Ϳ8嶋!6}g[_ym[*>*47gG\Θ8Q-ތ%R^[k߅t>~>|L| rsfϒ|!Cmϯ\<! t&˰y|:M0چ2D:uXv~1٬ؖ['^ktqZy 7t"ze%5 īwsG_%,t?al> L_tJ~ Dr6o3s}WyPYDh) P_?!U_f[;ۭ.:gSEqz]Úv3v}.;~m|S-j;ymk`Pϟ֨;Me;s_;zԱ-M/C%jJSohܥx{5.In"휇i5z&юz~/zw>}'ݍþeҷogi[Y:.6=ڿti~ 2)qIN[bhMx%-fVr,dm\cN{e^q/vU7'n82a/d9rGzn_;]|߉%q xJn1+9S03<=6s󼳟JK[>u/3iz&;1}~EX{̷\{Tg}$Lph̉^͹:eA5 lu %y=vq/9pmnwo7wlD!)Xɹ777%MqoS}C7'm~NFC/kω@ɨۏc9=϶\X\_5ooy[?>ЏbSUE?Dܝvl ![t\jwY\'CI\@o}b+vD?0E +x\]#|_g7pX Ab;zv;HhFf5uurV]MRp0 ~~Hu=Z'o-~M!XL8Ҕ=%_4U!zi1Lv_/h_r{zO .~55L=JkS3&/sGM^L{YBr[o᛻ 7Ts7q:L<&L"T0i0noR & +5G0\kfaV"]JQ+Z zuJ*ҕpcSVZ &&HctxoHwI&#LJHKt'\t'p@0ɄaCpƒ [wEnҴ:>:=ZhE/}7o_]oh`| YTQS-f PLce|z/Ρ<^Gن~>=x M g{$gnZhy7O_m{S@%zC{ᙸ{ᚺw|CN懇n9nm|H޽Mݭ}mi +p|yl,b8 ݎQF*;=.$K&n+m1cA$ϷOu3w˯%.7:"lw:qUıʙw$Ցk>*s}'!ގK0+9 y a4O/q齕XlRr/8sLx{-^~>7I V6d؝6 ![tc\qTRo(C \[Aw>e1xz];F endstream endobj -534 0 obj +599 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 533 0 R +/Contents 598 0 R /Resources 4 0 R -/Annots [ 535 0 R 536 0 R ] +/Annots [ 600 0 R 601 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -535 0 obj +600 0 obj << /Type /Annot /Subtype /Link @@ -7028,7 +7723,7 @@ endobj >> >> endobj -536 0 obj +601 0 obj << /Type /Annot /Subtype /Link @@ -7043,74 +7738,71 @@ endobj >> >> endobj -537 0 obj +602 0 obj << /Filter /FlateDecode -/Length 6460 +/Length 6465 >> stream -x]MƑ賁}b^`uhazZ_FYE6+C&㑙Ɋ,ƴt<$[VKz|Vßqa=뭶jyl閖/ coչGCeʒ퓿ǿ~_~هǀ.FK :U3Twkn=WVXTo77=}Ϯ:N*95p}~H HH.!SBs]9]1uKY@`E9hgWr\BsSM"ƪ47,,45/A H!)t8tsTHQR^9hn -Fsc"fE`|L"&/-)ǽ[8#*ih`J{H=mN%HxOcYD(|͡Fd*}-k[Ex4E͵6{͵4{Lĸbi3.H*m(mX$ڌVHӗE=D;/8bKbKx,6,}/9EŢPE;T6*}ܪ̗R$ p_( G^i3B`ڜWXhstY! 0'}'Q*@JP rBT0+ILD X < =S@LxE,y0E,y0|;y0֚D,yE"1%V;y#\w .m]ł7iHKAEq`E)T_jC"BpoʉHx)nȂb7ZYQr#QY1pxWe]ܨ T| `~k5_|OUg|W!CL=2tb9$9#sGCL=2]=2zd1#sGS!CL=2tb9#sGSL!zD`L="0SG昮SG#c9G#c1zd1zD`L="0czD`L="0SG昮SG#c9G#c1zd1zD`L="0czD`L="0SG昮SG#c)fPG#c1#c1zD`L=2tzD`L="0S1]="0SG#sLWG#c1#c1zD`L=2tzD`L="0S1]="0SG#sLWG#c1#c1zD`L=2 1zD`L="0czD`L="0SG昮SG#c9G#c1zd1zD`L="0czD`L="0SG昮SG#c9G#c1zd1zD`L="0czD`L="0SGA="0SG#sLWG#c1#c1zD`L=2tzD`L="0S1]="0SG#sLWG#c1#c1zD`L=2tzD`L="0S1]="0SG#sLWG#c13G#c1zd1zD`L="0czD`L="0SG昮SG#c9G#c1zd1zD`L="0czD`L="0SG昮SG#c9G#c1zd1zD`L="0bzD`L="0S1]="0SG#sLWG#c1#c1zD`L=2tzD`L="0S1]="0SG#sLWG#c1#c1zD`L=2tzD`L="0S1]="0SG#S̠SG#c9G#c1zd1zD`L="0czD`L="0SG昮b^*NW#؏Ge=nKR)-ߢ^O=oD8Ko -=@ __`zkbv\vo?|߽E$ \opxS:A >cUү H>tp5~?:9Ł5}5瞗JQ\<=r;Zq;ܯKv}!QްilY[?mXy>O"o`>1'zzǷtIrs|f΃7g6@Km -Zj5><c?X<ɳ~>~+~k -#3 $j8L@3g~.L*geXܲ@Nۼ"ាhDv/:F&v+fϜ4g2d0 ΂F}8X&SWI= uXsO>|+ <ͧУΘhgLgwfl -ч5O2陧٭ř3Mϸԟ3uvC~O>jl^ fJ n|wN߸?'CŴMg c- -iԲv_О]5"!3>aNjj>\u9)LZC4rnC`vE_.jwC{UgK4&@˥ % -w$үwR4~y#P|1ó 뤽PM{|x΃ub!v=sz=]lU{'}m6ea[kL,~}gHRPosn9ɠ2cr} j/A3`۔%jװ0UC}X˱"5Yy/+([F1 dg!`ˉ'|wsA/|,y SC2ǥ{/sxD0G>?{fCvQ;4 ǖwp_^l=5Eu}zn_i=2P<=y^ʎi͉֛&J|e]_}^mI;O/N 7WN.=}mwwC 9Q`z8M>̯&F'O3a92A@#1Hgp>n*?ȡs~7Rz:p$~+Z.fAiO;+=@oR㰯{{Kش=N;.30)*ΰQgC}qJzaT?U/g#zQ;luh[,rә6E޺49&o  -ۻ> gOL }ً˱;;2Cj\_Ͼػ;cRڒbtD8}nSؖwevC̲gA<5y6 %^cW{j\o'b%[u|eh5ٲk{:?k7 :qІaЯ{eN'SNYqQ??[JnvD\/jц9ZFHc}Jj_k}ϰ):tFz_b`^ە_޾>bzgxꩫ`="t2 eaV)z#h䏫T6rB7<{[L4mS:U-Dܯ0o[ -c(+:eȢm3 {Qk<0qRBh~~ ySj$ Blo__B9*gǩ~Զ̿пm|^?voz?{wp+Vk[ߌ⢃(+b0s5/7VcUVk_\{ŶIV>KH~:$O!b<ޫ,E?ܫu縝sqlXb[q`i-Qm5+{/Ou51E| ! +x]M%賁}70Xl/`Z؆i{?bZ]$dŴt<$[VKz|Vßqa뭶jyl閖/ coչGCeʒ퓿ǿ4toWa_r1٥Ԉf~|jp_>=Ů70sLu{eYnxKeXp30_~s7ۃ[p/2\?:܃M q]qݧ)X,R >* 4%\Cpݵ\Zӈvv(+u( 47$PinJsâ^h_Bs]" &:~.N@ +!N9ّR" GK-{t)(͍!xG{Ct"X1q o`Ғrܻ+r" +Xً0`dꟋT9Ej_6E`smKVSөXD\kG\KD *6cR9ya͠{!8D*6cRH`*3l.KR*`TJ*i!}ϴ9e{1/*6T, +mqXhw_ʭJ|)/XЁKRTIKX}6-fy6G8$d@f2wR XłR *$A.w '4ȁbAD5@1y0Ť|=fE &WE V<"}'ZE bX a  נbAȀT,ȃHpA$nw ҦbAE BNtIɃn~Sa`3ݩXf5Ƀ>wÈV]D +C1U,ȃ`n;yaQYa +0 v +Ss܍|f\fd"ͲPXU=m.bQa` Q،H8;xEYah3V{K#m;XDڌE͎U͵E;x0"#D `a5g{(mũXdڌ.TȴٗaͮJZU,۝bdzXT,X ԚEXU,*m0TWڌ,Z^ivWahCv0[Ƥ!x)<sw bUk0f6cT+mFbA>7 `v%qHL(y0-UȃVUIOAd S^< =!TDFE!$ quȃhPND$}'UI=zJ'0UNd1XUY=0!R <qWN.z"bNyɯ<^N 7iH^J+~*XVVb|~TV :\^S'G,y7B*_x:/ؿn>v~1#sGSL!]=2zdIzd1b)GS!iW!CL=2tb9#sGSL!]=2zd1b9#SȠSG#c9G#c1zd1zD`L="0czD`L="0SG昮SG#c9G#c1zd1zD`L="0czD`L="0SG昮SG#c9G#c1zd#c1zD`L=2tzD`L="0S1]="0SG#sLWG#c1#c1zD`L=2tzD`L="0S1]="0SG#sLWG#c1#c1zD`L=2tzD`L="0SL1zD`L="0SG昮SG#c9G#c1zd1zD`L="0czD`L="0SG昮SG#c9G#c1zd1zD`L="0czD`L="0SG昮SG#c)fPG#c1#c1zD`L=2tzD`L="0S1]="0SG#sLWG#c1#c1zD`L=2tzD`L="0S1]="0SG#sLWG#c1#c1zD`L=2 1zD`L="0czD`L="0SG昮SG#c9G#c1zd1zD`L="0czD`L="0SG昮SG#c9G#c1zd1zD`L="0czD`L="0SGA="0SG#sLWG#c1#c1zD`L=2tzD`L="0S1]="0SG#sLWG#c1#c1zD`L=2tzD`L="0S1]="0SG#sLWG#c13G#c1zd1zD`L="0czD`L="0SG昮SG#c9G+U5AY/Ry߿(TJ<[ ~_Yl/39l \SN_ܿ_;מ/8>\gl?~ tDl"yv|hct~=}>Ǯ?c\{;tp5~?:9Ł5}5瞗JQ\v>=r[qܟ_KFݾ0^ްilY[?mXy󽝧lvݙϽC̉mh==[pIrs3͛3yϥbwn U``6v_cWAKmxg7i< [{y)SfHpX@[;i7C`잕aqw Ecٽ\ܫjd}䤡30҆ݞ_N(xoǑ~t=ޯJA\@KdJ[In9?o>et +D+w>hF:̖`}X)_?&04kZܙ?>=-OL?SgwЕn'{'OGVwf_0̽]-pd9}j|e_>Ӷ o3n/Rͧϯ,vzAcྒ{&7=b?Â=5VBkCG` >o27[ː$F`޲1AR~/(KvvQF]ѵ_t-OFF;>lxwd͇gn?^H}$ M r8oBJPw#[rj{1^)zHۍ; mۘX=N;.Ћ)e7tCφV39cv^ p/"rq?Ro3E_my7Il=÷syeK~OüF̀O'Oa;򭝮P7W/N 8@m1te8}x5#r P;ZecGy)\aBbddOۤw6{\/1ɉ1 ݭ:2l++JP؇0zqaS|^YY̵vigw܁ԏ2۞6o@~@^9pe֗ƫBUϤS8j&_;c^;i~ >bzg|x>լ`0.'CԆ:n5p_bNe:rHF*e ʧxyď= Cy|޵$O,^Ktgny Ws#%l[j֥ )mpº=3pamGiW;xow~ƾ6>6qV(~~ ySj$ RnoZ_[_YB9A5x֎yJ\şjx~3xwn+p{θL{Rt +)Ar[m37812ma"+RŞZN; b {@wI{?ƔRƏ?+oލU{j[Ϳ _+_;_kWoJWox,? hVJ7 0 +JPTo +,+kk/궀[Rˡ%SȻXq%v+ Y{O5'ݝ\ޒV~ +Ķ`LƁ}8Fϟ]!S)XRX?5#կ endstream endobj -538 0 obj +603 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 537 0 R +/Contents 602 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -539 0 obj +604 0 obj << /Filter /FlateDecode -/Length 1470 +/Length 1485 >> stream -xYn6 )% ȡh{@(zxöR~(ٞd &I>>qgykԸ|`VK|?σz-b9hcxSJ`/Oï_Cod:;r.>O3?3hSߛ q 0{x^Lnqp >0OT/9m^°0%z)8$X*:#Q8=Wոb2ƹsrΠN*A]3EtW4 Rվ޶lKyynxsyσb,3R J46Ff4@Q%8IOqh9Y!r92vMrh#5y+:t|Ymj{(' DyuT ')#99; Nz-.^#RJB7QyaV"(q Վy+\*E5JɐXRtBJ 1 -M*dB=+mz/ -+u˶:W-kg1p^$r )f'8w]VYN)A3aХ*IŜ!H6TfsZDu@ j>o!Yd2}W`p!]2? nj'-Rr͙6 %E՞w؜=ab E" :V+o&2Sƚ*kvg_ji۪ MR6N -8VLSK4<ʁݕ͸]@P)et-Qi=2:87ҝu9aٹ?< CM:,N336Iw-Jrl MWdf<#c q?(gx7=ON?y;jxvMzÜiq d1s G83+uAoyCAƒ? -z=5"U3-2LjB:^9ݙso972UQgnTv0qx2Lhs74isM0&s|`7(wA ?˖b<ǁ'[/w4ܭWC2R3aO2lWlWy$4*;?sii-NͰ4&Č=485rw`VS\4ƹlREEid ^[{ -zTv{O +xYn6)@Ce-P ;mRrHI7ȶ69Pr|')Bޙyz@x #GM)`tAE*z61 Pa䈳BI">O0ˤO%W.w `.xA`~;VYNe޳v8&T%W]'I2eXt*:]$;}weoÇ5RzH$k`h6+X V-x$*i<2TZ@x3 oMWgN +XO6;GelGs=+\{Vmb17Pm{GkXS8k$sHcrO 9%sǶ:Rf+G= |uRv-#eT3T'8}М,OspԈL%.9-԰BdG1PdrZȱW&)M̼ +ADBEK!NS"C8,o3bBr,G[K~T[v9얥3['cbr6 R jLn˧; +fYJ"˪[I6 "۬wLճep;N +=Ow([K/Jr+u5G֖{X*ɑ12*0ުrҾ@&c̱fիpL QTN5@~(]#AW+ nS8*QfWq8An(0Ez"6+g3fwv5+d-O9֧ZDZhV44'%^YZ;%GMo5'X^GJۃT2l5qjzT8bQ8 >.F'bbEjb\3X` +F(}'M-ޫ76^eDQ! +l +lx#Gڦ$SmVBG(?W=J +t̶愗163߱9}Lp8Q9 q )^8щ`AG3G@ V]==`L B 9)Ɲ=!\}+tnN}]wjM'zkLzI{'#{tw\e N{k[!^";`~# MZcܮ t‚o NgJ> endobj -541 0 obj +606 0 obj << /Type /Annot /Subtype /Link @@ -7125,7 +7817,7 @@ endobj >> >> endobj -542 0 obj +607 0 obj << /Type /Annot /Subtype /Link @@ -7140,7 +7832,7 @@ endobj >> >> endobj -543 0 obj +608 0 obj << /Type /Annot /Subtype /Link @@ -7155,7 +7847,7 @@ endobj >> >> endobj -544 0 obj +609 0 obj << /Type /Annot /Subtype /Link @@ -7170,33 +7862,34 @@ endobj >> >> endobj -545 0 obj +610 0 obj << /Filter /FlateDecode -/Length 1403 +/Length 1407 >> stream -xX͎6)e8XP=آdyI(Iq!%F5$37?"L2~#8-^\pFƿ<ȏ?v -|x 7nv%wA 'nPJ֛4n!O\(h>&-ZuY(:yHB! l [`[H_rmK-܂ (=oX)њ_.qFꀓZ(iskO?ۇ *^~}czжP^,ᴇm<;:L8L_kM4D&%~6ݶG^5i-۾y^(kA֧uZ&=,F_FF'4- -0SR\/ ->0ʼ \Q2)?ߘ2ӜI\E`>#+$o.{c\ҳ4om paR638ClW Bv20ٜTtlp30C39N1J츗((Lט,b,)4F7~F3}™ KI6A28(JXYHyi~GHaH@Lδ*4g2YdSL+ Rd飃ox?tn%lTc7]hXHmJ)VCP:Pa)q OTCFevDrԮVoDDx3`2ym HaӟNT,+%?OIAuyRޮ*Zo*iC﻾ fǪug +xX͎6)e8'H{H{ E =*ȡ-?!!Amx͕I70I|'!D̴yr[<'?_. nF CRi|Fk駯o_/]zR'M3`Jﯟ.freEAi ԅ B7BڐPjt0Vg<}V~w~`,:/J֛Y lh+Zkщ`fA %]~zE } i뇶2A+mg4~ 8Ə'",5 ~¶άmy֤bY rܶ>Kdڢ +9 :\Q٢,PZ` +PH!Y&36͙˘G}؀@>#+m똳$o.{;#6/ΝAY ,XwgkϪq@N^ʜ*eegUaa*lϠzeE0HjaHpV̘<. +7~Y1`rcGO-k;_.b~¡+lWk^Z$HaNf#X)!sgtS9: 3*Y#k`}e8cWG0г"?#DԂ5#֚THlEt]nX28#ϩ.-?֣sXE.Wѕcӡ.轳FRv m7PΝyȺb(4OPTx&ҝ{T٩t@KO!LSIū+tuҎY#UO*C~v̓ՃJ yїzԿX@ jOJ3emʰCs( m )$NX},ipqX;Ҡ#-$TJ]sJ.> 5_нVBtn/Րu۔VCP:b(հD\!IjLB.44UCFR&ؑG0)\z +,nI* |xr.Zt >3)T\ ZnR{2| O;V}gwF endstream endobj -546 0 obj +611 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 545 0 R +/Contents 610 0 R /Resources 4 0 R -/Annots [ 547 0 R 548 0 R 549 0 R ] +/Annots [ 612 0 R 613 0 R 614 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -547 0 obj +612 0 obj << /Type /Annot /Subtype /Link @@ -7211,7 +7904,7 @@ endobj >> >> endobj -548 0 obj +613 0 obj << /Type /Annot /Subtype /Link @@ -7226,7 +7919,7 @@ endobj >> >> endobj -549 0 obj +614 0 obj << /Type /Annot /Subtype /Link @@ -7241,44 +7934,41 @@ endobj >> >> endobj -550 0 obj +615 0 obj << /Filter /FlateDecode -/Length 4360 +/Length 4367 >> stream -x\Mqϯ賀 ذu|5$wvG0 "fL#*2p}/{][1[,v,vmV/#_sK ń)]KNׯ/z^F6%% -….ߗ7~"j!rKaS wa;ko]S5\ZB,kjK73FW^vuzHǑ;޵8sv]f&9.L*LRAtlܤLBMeع () -^Z&k* pVEfInnY8njt#N7N6p@ՄI)ytSYΣ$4JPHM#ޘLx6!ewnXRrY֙s^@~M+A6HiT=sYx"bN WH̱%C#1[#0ыz4̭ =sCrO6/1#u)_$b!8Ĝ䞉9FSČVČ|b*kO;/WWZsQe ɽs.{%TE%XE%PJ$w_.IP\z>t`о\P#)#7bZNقE'dE!DܩdwJ XQA&Dŝ*SAtAq9e=Rs,{fDHVEQHLJZT[A(0Rх;u0!SUu01/ ՋNLf;u0u0B/Š:*S;u0 1ԕ/pNDIh()`|Aq8"IKAOWҢu0Rܩ($w -ҡ|A 6uj!SmNfȻ)_PC Gr"ZqZ- 1c+_Pܒ;uА~w`Ҭl*l:fʦæ$iJIQ1YM{2bF5*|&ʆcSܑa1# _$`_$ &(n 0:ܡn+ !fdŝ|==3Y"3f H{dO;tMRV1V6J31cfgbNՔ/ -1 / -1:Tb&CS)_@;Q:*_@ L ɽsC3E#fވUވ9`lP(`Ɣ18Ėܡ$CБ{`SPn)b LqČV1rSPuXM*yT=Sso{JzU:KW3uf=S1!T:CAj!SqCɝ:HrBՒze{N3N`ܩVh0R :ܩ(L$w`3ue(~%w zɝ:l9u0BUR#+eCQn!e` Cg`2u0I0Lrnj]=SC jO!S\:N +_P"Q:bR{ -:0Vܩ,;uFV:h=L4;u\ɝ:h(/)_P N!ubܩ{7 N n* n) -6u|ԞBneC\Q6Ĝ^R 2a;ʆ0l2O$:;';'3:jO$@'br/$bx+bLLʆ'0%;ZsBrDa#ژZW/=$+w%J1HCP%a=PLPܡ t0֚Ժ: B/1 -R1cVwbEc1'b*CcUrHhj]8 /d -t0"%AyHPՈ*'|QH{BJ0Ϝ3h=JD*OBܩ(Z%w`.IW`lER11ܩܩn^LuAPQS;u05T6^ C:P!˧ 9uɝ:jC׼<4:ԞBR.TRQhJA@;u+u£*uISrbKAZWA8C)T ԞBBr%w`S:j]RC/jORC+;u0w`+_PfN pNd"%fLߕ/6FTqH>$wuܩLWUS{ -:h%(:h9(:ZWoA~1dꠅu,) 'IrѳZWo0ZV{ -;Jqh#1[$T՞BČY>N̡IM%5`裫uu6= ::F"j] [fsIپBYl]JX^z g.x -4[ۃoܾ~~Ư(/1i_+zY^yjko$X~ n:9_ ] w?K Zv|?/~5Ar? )}̆H3KClx |M_->@y}ѱ$qHzB$v)(U\G?:0.>s\916&;999Ů}༹:w 7 -3f}DA -tF}Ȟ`K:mfavnsܟt)eHqAۚx9=8nI Ňc_]vv]`u6;D{IqҮƷu/wfwM3W2#>z[f}z,|x,Gnjȥ3=-QΈ*'HQ}ݟ;ֳ(_#c:kSW;{g/{mLEWTN, Ҷ^\YrQw箺$OO=YE'S)W+Jاq/ϩG3<栰C#ڽxx!&CҞ_fnrBAIméď5[ ̵?;:k χ} TRs 0H26̵7SoQe?g}G* -oM"y}]* Տ4;G-:9!)å1 CKҵ)JyfcLN;sV?v-j99JqW]5ϗ}?P-:XYWw{17nHoON=΋k~4.)[QaMkO!lUiscS}5A&3=@/AIYni~"Q+ۣ¾F ~/“aYz8i luk)'Ca}R:cD>ONkx8a}睭c>+Vޏu٤cyw [)е}6kykN״Y?3ޥeZFO1/?P߿cP՚Gg׼Q~1=%e;A.ijk/?q3 1秾T8O\~D ЯLf$IO9\{?dV ?_O]({B`1`JגSvӟ׷ͬv !k Bp?/jnt"j!rSaS wqxӊ;_kL˹XlԖwgƽn}9?lb=Gwqxӊ;u 8tqe00Iaasj0 97aB`&k(LziEH7ZV%aBeF)ҍpcW;ބ:#W&&HcXMf]8;p(A"=7"xc2C؄E!acI}dE]:J +H:Grpܩ(Hu0HANa;u:!|AD:,*ɝ:hhŝ:h T6ČQ|ArKACQܡi H*VC+%Eqd6*ɈըE2bN,+bMqGMh{ +Č.|c*#|䢸Q6V$w lLrB(_Db.ʆ]w$DPgD̘*_$b6. +`n#Ik=IA6I:ZtXs+ErČ➉9US(Č.T(PqXٚLu|LD ê|D2;t02$Jy J{#fTъ{#鮲!fCulSƬ:[rҒZ@GMAl30}3ZqČM:XBb58QL̽):[S+:Wd`.]qALLĄPg &*j!SQML %w + ɝ:VK:9a;uYr"XղzfBH&d \r0ܩɊZWALՎBܩ(%w`8YVqH\ 1G1 цSh&S0ɝ:uL -=L pC fV;u0`|A D `I)d`dXq"HAYg2uP)Ar%wꠡ +t0{ԞBƊ2Aq"zZW/XkRj`QhČ*HqoČYމ9"lPǜ٪eT:"uuL`WS(`1!bNCW#fE"+:R+uT>s̠*uES< +Irhܩ$^JHrBrBպz2)_PC=sGLJ^RԺz&d `B,6$%w ^P{ +:HPqHD)SQIAZWASA$Mɝ:/Sj]R P0R{ +:ɕܩSO uJ =J HPܩ*|A *_PCj;u0];ue|1}WQ!uܩMrZ3^VM)4ꠕ7堸7 2j]QYǐShA7c$:Fj]AhY), d*:ErĜZWoSU{ +-3gD81&'b6Ԡqt06$w`;tuw/nν'Kw*m}Bz0FeϷWVK] +),o<0ԭ54%~Ay)HRQ%owy͂߮?ޱ.ܤur9#_oK Zv_?Cz=X#kK#b]p0+(,'3FDyV6f/v,߂qkrl,iqM{3}}౲Z <֏NH9~#, ̝9ߎ/7}r/j{[%;;OjvVn?9#Ow҉qts~Љq1yiu.06t s'r0c6pҹZXliN[la361;F9@R\s<#ǭR;յi/ܡ#fgh4v58~!7[4-3v|nKg=zߓm̨:~팪r҉TmEa3G;qwNlpbN6 XDIqED# m۞ZnU#]ǒ_ar}?dŪ>"j͙S .1uYn~c8ϗToYsQR"ٽxX~|?$KeT ~OnqMG@ڕm OԷs @q]wTUaAMKM%gvp6yWe>\k5sG|m]o (}O >y^_Hۦ䵃ŴK, +s9Zf ʟ}5QD&3)ލD/FɥY.j>W[K˽¶f 齞/p`=Q︗lS꣝Ca>]pm>2Scc^1f}yg[Jhj]C;({ T=\2:*#@T>ꛓ5} wrҙzSo/+룡<B>JVkgs99ϮxԝnP^Ϯ9??5YkgsHǧT8&}gyW=f#=lSpL2\Ld1/s &GXE\?j?5gfTwmכ[+G_yWomU{M?wKiS+';hYU\z)"jP=7vB쮂XSКs5$mg~\9H_RWgy_ksn=~ f\}۱ΰmyTڹRyFn}Mljb17gre}~y#~&x~F+Wo/3?ۺgu*of?*5W;_L]+ݻ,[Zr$1\ZPC臸'Op4}uY+Y?P= endstream endobj -551 0 obj +616 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 550 0 R +/Contents 615 0 R /Resources 4 0 R -/Annots [ 552 0 R 553 0 R ] +/Annots [ 617 0 R 618 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -552 0 obj +617 0 obj << /Type /Annot /Subtype /Link @@ -7293,7 +7983,7 @@ endobj >> >> endobj -553 0 obj +618 0 obj << /Type /Annot /Subtype /Link @@ -7308,174 +7998,164 @@ endobj >> >> endobj -554 0 obj +619 0 obj << /Filter /FlateDecode -/Length 2393 +/Length 2396 >> stream -x[]s55!ҨHe5] 7"_ɇ:Z.Qgړql~S>^>~;p ԣo F:{ iG'<KbF+xs;BHɌ֛C>; ƏqxگN7FHiڏI%fu qG= ƴuYui]R1m<ڗ3 oU^s_<DјmY|珇~04'΅9駓[-lw!붆`2(?!995vdd@7k S o9Z'ͷ_룈 >a9*^]ϥMu?D4*K?c->sW+?gw H#yy^DJ[ssy4!9֗OAh:Ǽ|l ޻xI2lĥ˄}&% 8Sh7ɹ$2K,5jJG]kzJ7_>Cl'Ac.Y/|?g;S3:׭;`-}-Z">h%zP)Qo)ox suk[\q(E@Hkc -"3xj,+kmf{ncerLB_\ǽ梗N -Bo?Y_)T)~˷zܲӋm--_?stZ8 cxfq6M_x3hRD; %BIb4L*ϐ$ZX#ӋŘy ԄZ1Yr٠$JN^IH(_r n[ĠIVņd˖S!+)n% Nn#a:k!G btpIhA:U4msL*BZh.zEj>X KFAOk~ `B;l78h-Gl!(o] ]rCwyU=,y&W׾_U<3l2S>뼁ԯ _*Op?F^D+1XǪD,(1]@ %v]e\/ ,LGF7I el κ#QwRhLaZDeyW`UTE%M~Va'̛[\ڲE+N% [#dς4WE61Q8v/=+<o"0]պS!mUb;I`,l-c%C%FVnK7ڑu+{n~?yd_\RهTZؼV{޽),\ l)Xk>O%<5Yc! 9pG8Wg=%.u c;'*sǔ -m-e`\%ڸ҇x ,7 -gnMG( }}-S)DC!ݻA ѷN^~pf/bsJ( !]T|)T>f -Ɲ -1(d0EWo͇kqY-:+ i1C\S* -F˗Te=n0mA~'|QY,wdIO`,o /t^X4ig@阅mAyߗivz;..Ae3γ`=NT2 -qQ0̴^>6l=c)Rxro2_(2fbM +x[]su ?`1PҔ6eCB.v*h欏\dGh43yf$#kg{trA9悑f{ τRŇJ1χ9.(8w78~9|q'Zj.r*1Bit0Tf=wر;*E6ۘ.=.K*mGd,$oU;?,*>AƌoX<~:|×_aVy_o_8_N&pZljd` 9ק_5˸Aa ]O̩#[.'CŸ_kZ]suw}}$8N*vyMu? hTyo~,}s[z.4̛W+?w D#yytOЖ\\AkH}κb,ڤ1$_$-A!0C|y0@dN6Iʾ,DwW)i7ɹ,2K,VIDt%w죮5=~es绕/иIkИKs#YԌmu.k0nEkXDoJ[J"\wkjt <)&IXyհ^k۸5#v{F, Lc{%/cU 1||*M^HA:v=+>emc./~isXMR78&m&x3hRDJ ׌^j1Z&pygb2ZX#ӋŘyKD5!_~m |vjyHTKK6BQMbJ-}Sy||4$)x; `ϣw~3CmHMg(p5ϐq=JcF!V>EyNH+l} #lGWD ⧘mדNHD#;-22:BvGvÎ # + J*Po'w-^(pFU]#](lLtE ez#vhyeӍu\e _G%uu +|Dg&06`,!GU.|Dszփ _Zw@*/f`zdWC1p Un4o)[*ƕ>l1@f\[uIx3$TGЖ)XGF?``݆'oIh?@3Mɗ1Vp9m`>*>#]<@W\xz!#łp=b~t0Qsh{ `b!`fh+j@} `|QeJDL19E_Tt|{4 Yn,) T$F7 7#p\H/?δ3Q阅A•eF/wC\*)G<< GՉǬ"(_ZKL´Y^?9nP7s 1)v*T[ (@¬4UN endstream endobj -555 0 obj +620 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 554 0 R +/Contents 619 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -556 0 obj +621 0 obj << /Filter /FlateDecode -/Length 2734 +/Length 2746 >> stream -x[kt >b@N|2BBI Ral'RHe>-d=3eYGY?N9o:~=j~RMj^]šWr;-3!ÇR.ZI~8[/˘uȹ8{c×g>\DT%zqę[pN//߾#󉸔/̘^ɘRᕟ6} m|[>W x|ylYng_5lǻ5W3t|fMoڌΗ\&Т%1u1Ix[Ɉl8Zgs@텣eU (> -4ዴ^TA V Z\B:^lxk+ҲsyD{[zh<h1Ǥ9R<3F^d P:Hj,x^@V:+ @YpZ*$LvnAA M.Htk.EvV-P -Tꃊ!%waX -*z.1oPPq'e^Nza>0F nUh-la-q"bIOp=F'`$AOMb-qk@ zE vmo'.&KʁTdMg'd&ѶoyFlZ!w[fW(Al7 -1S4Cs T`ka[#u~S~ -FD׌Bwk$0AV l -ѱ@ -&Dw`:.Pna0݂W 'UUum,m2K`obkL9'F|%s”ctgbREkZKaIGYtgEsu~]3~/+2Z/7$+55Y]U3Ay"mTǤ@u% -փֵllI-?%[ Zdrqj䠧8=ŕpZM9ų] 7][C_…q˛&ҸG݀ܬ:4PP[*PAцtJjeMu8Vx&`01ę}L `NJapCjM\X(KQ}lj[5hU - $8IT3fx;h*᥶4ZA3)1Jf1K\/V --~yk4B=vH=g9y"JW)@3x߮_NXiͭ(N]mKjYI 9 8\,mF{닭-x~i.rYE P_t J̋DW -I2xТX6.PMhvUIKUNpAD2:,xddO+ezŮ:KF+U*1.R+#[X;w@F1b(oPF1o%znֽ3l -w0?7v=V?ı7ӧ׎lҚ -fG]nd|lrh륜#rIc:ӥq/O QDer@W ?L5(Iq&#Cn{fOwK=0Qrq+jQRn!R2U/=kR,";DfwilvLKW, ږV&<OQq Qy {T +7UW0(D9F85)^J)6art]1f{`PςB\ꄆnM|fG";fܶ"2|7-b*#,=\YX ށ*%;|}o~~E -eQ &(k'#S ᢑa!t`zG( `/Og{WO}wlO+EJlzFu|%EuTK0B9~.0҆ةpÜ׃1-b jTv琄8vMSME^4vKM&ͅ5[A` ~ -3^Oe'hU|̺Ňg>9 !1(:3-2Y6#LEÜ唃kz;ڗ iC +x[[,~_1m/ $`@8amBfz3~HjTR4wݞnG~S|q[χ_l4y?ׯi뵰բ-w L𡔋VR2{_2f=r.Ģ7N/ӿQ%z ы8-N8#Q/̘^ɘRᕯZW xJsM  M!Ht2]<ՠ@ jkJ,ZEېՒQɉp[J,?=1oPbq'e^Nza>0F nU#a#As$y%'$irVx{\ =bdnMq}EKDN\1b1dI=Ƙt&{BwߚogVjr5i{J!n{vhL<%H31 imê*3о +a5xi$y69 ^]$tq#FQvݯ +k]- D1c7[*7b +X>6b;Zл{/+<ػӲ6沴yQƲ/z)\Ҙtv@H&A|l?DO?$srUJWϔ8LS!=)hjYx3M}6h~9H5LA)'`vKϚVm^)K_irh-n&:*cnw3i(ϋZ\SF%~Фq1O(jܼJ{ N0A9|4p3l6quIi|6R^/ to$r]GKic`La߹M`e0KB5j(kgQph[ +M[,];7:H՜lôfNh 29p( +;XHsFshJJ=H o|<2<b僱Wo (CQOrNqZk&Q*:~pA= 5 +gjS:6^{Q^ m%+oE4d(XpЕ-K1Gy}e(ޱV5uGo ceu|#ib@-60\qq>xJN}E8X-ѱ=*.S3&o +70@mL)Jy rfC3 ~lamq_"3ߧ1#A\EÜl)z~<ڗY^ endstream endobj -557 0 obj +622 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 556 0 R +/Contents 621 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -558 0 obj +623 0 obj << /Filter /FlateDecode -/Length 2548 +/Length 2555 >> stream -x[[,~_1u@Bp yOjJ*U=ӓ]|gݙiuKR4()9^~:|~͇~>h?hwh& eJE'k{QO^QJ&+ vC_~<|s8-C"CG@M|;H0xH -;EuǷpu":!y5/vJ\*^E:E-m\:MYNj-'v&^sZq-5kG\YOoɇat>줗U%ai0ɇ׿or^3JTV&a7zy2yn?g dm>{R޹xƥzK|/-{!rr-}o*\Oy?[-}72z<'rߧ!+Ϻ:t N/Wd@ye.<X}deZڃRg6d8T"@qJ! -Dak{Q#7^s#򢣈ڎ;-5Peչ`Wz2PыLn ,Ug"q+c-ߋ/DF\E<|VW({Va:,.АusQB%9_=UCW[*:)U3#%;yS8yu]:Q߈đgpVAɪ[xŒ*}Yi XC[{'-1zr(BY!\MʳDZ:^dkΨj\6jT.o{0EI9_n CC㫶/ոq]#茿': r!-IdQ ZM+M#0YЧ7d KtHU/]$mNJ7l=R'F"l4ɜ2/7#*O86'Ht(z!s$α'YZMvXR}֑%WGRa53\DEz* Tֈ~j0[[@(%NEIn/u `pI@:!# -Q@" -nJ!78QzrZ:167KMbM; -Qfakws>TJ;eP5*`ޡS 7*R4%7|}S! HB!KT,g8 8@qؖ :seAS$^γά7 ;n\ -3yzPU΢T^Pm;݄54A]JEI"m;ɘM+Wޫ6#f^l+R痉6h$5Nf=BF? IVRB(ZhMT@I7oH4.6\Q92˺j(*:8JV W.~sg3"íHđognρxFY:3Zy -*wvQ:WnVl~l\($$B۳ bT*z4e=⍴nCJ"|F=|e V.g?.4uOZ:swr⌛vRWWepvF5On|6z۲*Ro~Cqr|z: ķ&q1i`B!Q{)qfWٳ/'\9 Ǡ\z ~rla>BsbwL`Uil]8{[Mp9AeZ<%T^[YS9FϭMh6D(gco`CXS4T^lVQN͑g ]:zJֈ\=VJ2&Bw*gCm>.5H -(ަ^<#lG܊nx\=@+FiLtK']`?3\_6y`Q*[sme -KwK\ܜJFgR\o9VP=;0Q'탪A1\?28%nY\;4;QVw| xEX;bxy؋KϜoqdTS -W' <]6v\L Mi0wq=%)0k@3* El RI -zFc&!ȱ`8~M)\vDW%!nm겵km('#wxALފh>Vywf2!^IJt:dÿ> ?JdetgˏNrs-E|H7OADOIa(?yK:: ]!y5/vJ\*<^xD:nDwG;u~nrRkM~3kN]VȎy5?G\YwoهSt>줗)uJ~r%VVɟMo~/dy?t$eykO;#]k2fnZrn3<[/| 5˱ٖ{\r>0s7gܻ),~g] +8NκMNp/?@r\y>~)ii<Q$cġɐ4+-*H7î־Jg hi* r'^pWB +ֹJj->dCֹɲ1=x" \C9`raQQt)p`CddzJ7(}^1/ +6~'’ +ځSbx$ak&\;(tA0zq!]+9ΩU@HN^8|?.PӽBRqp M*([u]%12x]=+?<*RnkV y "nAhghָ&-f5*W@9O墤/7զU۽qݦbƁ1:oI΅HoF-rc6FЦmx./h@ AQ7QaJa^YR1N. !Y@xFKRqKX%$ vUk>Տ^A>-|aB=GhwH冰%#>y/P(A,U9"m@XG`Ρ/o :Dly5%IdM'қwm=R'FtB!0M͈'^Z@J'Hr(z9slI#;VS;8T0F~_tdAQx#dĐJjgπR.bEzЀvG1ޏy"Yp/JPhӼh"ap!{!c+@$A I=CpR&݀/5'ӇŖvTaôLj+>yT ;51UTwjȫQGh`Qi5N4ɐ&FH5B;lg=@qSPÎ|8_zЉ+ ",n Ky֙Uap_+Xa&/Uj +wrY3 3jCMZޠ w]EdB>Zvc gr%6'3N^yOXyPI_&b*^!-Nf=B}I?,+4_=E Mwq38ʈ i!!f/~R΀5x7J; +N4β庚({?ovWE!` C&H^‹q`ny;EgA^O!E +ѲQ\Sq<å*`qHB۳bTzU hvo-ܨQ=KqO+M"qΪvƝWqMQ;W7upvF; 5O.||vvz۳*7R~A0wukX !omMRѠQ{mqW .}̵y^EށXr1Th6\>3X_HgUб}uHX哚KQLTpD q+/= '2*in͠B=[{ej ||p[ݗӝ|L " +u~ma|=GGΊsxb=/%m)L>?m7%mOa3)ePMs]#g*nUP`\IOGrt ogRJH(w~-iK9Yz[(Jѡ/:vcXu endstream endobj -559 0 obj +624 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 558 0 R +/Contents 623 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -560 0 obj +625 0 obj << /Filter /FlateDecode -/Length 4893 +/Length 4920 >> stream -x]]%q}_ςd0^3B==zVsVVE:E3vUdDƉ^Kz~'wbqa#)[9-[ݼw!o9z<[u}{i߾{>AG+ϩ[S0/羿lb_oӼ'+˵ڭԅXX/7cẃo]÷?p_>plnpqná,#ӄII \6)UaB.!M0\rp]-t\W"]0!Tp@%XJ)ҍp}p] 3?'L -M"izst5`R|`B+ҝpSP;Ɛ#!l|L"ܰqQ[Ow8UgaSs=1''XpjH9Ab{ f$̵|05EZHt=&ڸ|K"s^a"%D!8DmDH_ &➁(CRy (^*%e H^´31,H)17B̡B̾T]!|Kծ||K5K>{%fiĜWh]VqHIT@V2;%z|A  NdV) D  _ 8 )d=PfE&:{Qu0"ScI"PcM"P@JNDVAtF]:Q(N |A n `8"JAN ieC16 "Sh;u084J}Y:α8"IKAOS\uУRܩ($w -Ү|AG Br$wk7 0Cޝu08"|$wCD+AHeC̘A(NtH?;t0|#T6 65GHs7Jf6(3Q9YV6 _)\"BcC+#|hrQ(`]$w lt|9c2+bFvQܹע#1C/"1U츰*l(GM(CYD `暳䞈➈9|C|ٗ0;t0^t0 AE:d%w`,KSŕ/*1# J̨J!fF3ZƤXbKkܡ}T =( 1S;1#N̨ܔ/|A̮Dԋ➨U=QSj%=QQDL):YqOA4j5=QѨ=DD!6uܩ($w [-'`\ 0cJALfɝ:`U:V L0R :ܩ(L$w`tY' e(~%w zɝ:l9u0@UR+eCAn!%`]'`p])p6Nr$woN'꠯^)$ꠇKURYIA_:ASHAfXq"HAדZWOAײSHAOq˕ܩukAd:Bܩ{:n:+p [&ʦv=CaԺzvjO!{bb!f(br/){b eC\P6T+*`nlf trԞBT#1'#1S 1SxM"f&MeC̘p 0WʁV6\i$l.CQȽ$x6NLɩ=$w%BKWȖqA)d`=  eDDQ|QU^]ވ9dv6(1'bvEr܋DPպ:8 /d2t0 %N̩KcW3TNPB@):i*Ϝ3h=BD -uND*SSj]PBDc$Sa!S!j]P/ Pɝ:K*XZW/|A,Osl;uՆZW/A43jOP)*(4%w - ɝ:W:Q{ -:xV3&NDuB3ԞBH) $WrAV՞B%w(AWztANpNd"3w =8%wkNru*ueWK^qA2j]RYcASA^x=JA[R:{MjOaAGRܡ< bNE@̱=<N̾JKAzSxlZS{ -:[;t7:ȣ"j]}A ڙI-3>~O,/[|>Cmy>[??@l?;֘o~fnkz6knF{CD߸7߳3z~mm^Nwl :({0YCz7`ɩ \= 4 @ZA0`󫣃q`y펳x@+;횙,kgm3yc2f2M64EFS_^.Qcv-__D } lz7?x#Ƃ2Oux5L_6=3 61@w3LpߑVbœ3ĭLP`t&JxdRwwuզ}:45\+=5/+\]q%o]/WW|7Ń%ϗBFwM5nwχ R5rZg~XF0rMC)6"jOC^Mm}@^-cD3{=xUy{xCyV:{8iµd ^ǭ?)\TA;RpN)Y9+WkF|枿,͡-ˣmX}99OKMU2xIi]L&} X{x?]`q\ZF'',` ?Ǥ>OY 5x񮭎aWB#)0}_/~w|Ek=*E+JIJW'W{ ~9Zx3]= \_I====/|%p {^#wkLҟ%:|.=$v,gJC+_uޭ_s|5wNVs7Ei-vfO҇mnܺе9>&~P@_t1_[n4r73vڬa{ӟ m0m:g~ǚ<{RgH99B! -vbd?}`#- ȯKIVn_AY.~ p[߱ 8pm*^Kgn!z~?7H7 +x]]o$I}36!,BpˢAm{ %Ω:̮`FɈOKZ%=|Ãg0]~xR{sQ J]0޲ztk;D#%hE$f.H{1/1c/1#})_$`.{ҢK/x/ y BrĜ"ܔ/ +1/ +1RUbvUr;/Vؒ/eH;/!H¦sr^stY!0'SY(@5/(L;UYq 2/.|#0PSL{@L:P _`Eq؊N&@6@DJ"uC(Sc;uY5+_Pu `DSs;u0u0@/:*S;u0p 1ؔ/pNDI()`=g :Ǯ:$-S!>M:s A +H:Grpܩ(Huл/P ɝ:躓ܩT6 ywAì:ܩS]# 1c+_Pܒ;u!(׳tP4E"]();E䢸GG̨F/#fYs;7l|Uܣ'fp EEqlwܡq;tE ɬlEq:_^r uVČT"ªڣ6٢di/kΒ{"ft{"XE&f E&f_L̮JXzv'(_@Y aܡ.bN+_bFWČ0T+1V+1{ʆehC\`-CcQrQ-#&R6ČLqČV;1rSfu0URS/{VDLDDիu0妸' f=QDDuDHAS2Xnl~߯GOX|緇~ؾ:֘W|ik G3z5\^oyhtr{==y]_kϨkY :>~`?cmfukWsx}V{zs7ґ8`yPx`3K)OHfȫS7_ z(x~ @A0`󳣃q?ay[=ϭx@3嚙,sgm3yc_2f4&<"oЅH#C̟^}wԘ]׺ti7(ۈ`9%̻:`eIc &uٳHG1c{[/&zxȟ0:%truf2)d HQ GԻ :k66ـ?]b`tk4}?[ 3pIJ:d;-g8.iw>;1xn&54 ;J͹9]*͸ į>OUN*Wɨr˫_~(.W=}>=\+=5.+]q)/]Ogg|7Ƀ) ѝ}9r۝GuDFN+OF?nmr L߸?U*Z܈˭<Lj}g^5T2Ӈ4tp*sf 6}YF:bp*z~ya65ӠcۈMNY`K6URؼ?M箚;w*C ˭sA?LN6ہ[@GH&+"Q ~iq~2,Xϝi Xw7KZJ8{͒-+F7)aq9֡r:-u8p$}m":)@4pB[ +n5%=zy&w6;iϻH?9op>ὦ̪M8OOE}UqZF',` ߶ۤ>{.Ԝ ƻ:] vzh~}Oڦz/G/ˋz[UV5ԟɕzpJ}t4.hϤdwOs~%~{==z/_|zJ} )ӯ@-r +q=Sә{]߼λsnΩ\j( l 㮝Yfd_7n]Zet?UG)O8gΪ(\;QK5ڸ}AWţ='&ikUٞwkG2۹mAkѮԾĉK`9G<_G]&;?s` +3e62 Z~vK;u8{fv) zڶzQS/Sx7T*K /f6O2~ݿ׮ 珙22þuޛTK-lk +~>|v/ffty7%}>rfsrl,-)pr7ufG\ +b,S!-xLXϝXmL~8Cl>"wɛ)s're͙KIf-MB-*:.f+>5}yKkbbnq&KLeio ig疙kfind +sfj?M*A|G8^ޔv^3%q|Px&ܹ Aj GF:t7S*W|icۜ s/pt϶s j.<=WvvC۹'<,r iv]FgL?9> endobj -562 0 obj +627 0 obj << /Filter /FlateDecode -/Length 6462 +/Length 6470 >> stream -x]ێq|W̳րCaɠ - ? Eh H}NeU_2f_3q3+2;fZz-n5;!vl/![9-[ݼw!o9>_{UjOއp˾OgsO_F[X[>.ܭw , $E$ $$lHq)U.!Lz@\r"ZUu0$"T @2+ 9`o\= @.G ǜi!1Hu˄G=sƐI!: -}L$$";1J Y05{͂)Qs{؜J"6H(|͡F|=͵b!u=t,QlSߣ\Kb,"='cHYF"f)_,Il.2 Yl.-R߅RY,R))X% Ssc(9bQ`/aͮR߅R.̗rBO% ᾔGb %> -`srŢ2C`D'|Y,B*$| b23AHD P'A!y)&{0﮲?;.̇zĆzĆzĄL Q Q Q Q 2#6D#6D#6D#6D#&dGlGlGlGlGLȢ!UGF#3#Qz`T=bcz`T=B0!UGlTGF#QQz`T=B01S=B0!UGF#6fGF#QzLz`T=B0!Uؘ!UGF#3#Qz`T=bbz`T=B0!Uؘ!UGF#3#Qz`T=bcz`T=B0!UGlTGF#QQz`T=B01S=B0!UGF#6fGF#QzLz`T=B0!Uؘ!UGF#GF#QzLz`T=B0!Uؘ!UGF#3#Qz`T=bcz`T=B0!UGlTGF#QQz`T=B01S=B0!UGF#6fGF#QzLz`T=B0!UE=B0!UGF#6fGF#QzLz`T=B0!Uؘ!UGF#3#Qz`T=bcz`T=B0!UGlTGF#QQz`T=B01S=B0!UGF#6fGF#Qz, C=B0!UGlTLQz`T=bcz`PGF#3#z`T=B0!Uؘ!0#QzL!UGF#6fG& z`T=B01S=B0aGF#Q C=B0!UGlTLQz`T=bb!UGF#6fG& z`T=B01S=B0aGF#Q C=B0!UGlTLQz`T=bcz`'ؾ!UGlT NlQz`T=bcz`PGF#3#z`T=B0!Uؘ!0#Qz, C=B0!UGlTGF#QQz`T=B01S=B0!UGF#6fGLIpeܛkQ2KNYû,Ǐ+r8"^<{j{?O/NvZ Ŕ7p_0ް>o_?y؅1~~/_'h\Euz:>ǿR褃r_Ǟ,üݾewzx>mP\鿞>zz/\_= pq|7ba᜿_iq8s/wx~v1i=7=q=6czq,/ǎAXׯacy\~};=082j`{dcSa5~`Gз7`gA?]3,y$s|ۮ#c%z-70cbl?6xpLiD1vxͨ1χsl5l>&iV mDz3T8prwe 2[82 tۛ3`l779-n;qℹ²6]X+>qԸCVEehguh(?/[1uN]#Ck56MyLF=-#e;r{:՗*;"sy:pxG I~0133hnvs v Lo>3uMqv oiTa_8%[2AԼ#1)k3smu$Luee^%([1Vy~7u9lpw2$B1~Jy>yFevVft2qX5}١Cq=, ET4m[]E-8-EO&vt[mv$:ѴV+om<ݽ.ևc̺sx>ʤVܱY:>% dv?bejwq0eq_^vg4룐ei>r[3,ǻco޾y]>%۴}gw5xCOYC(W5o-UPrƲ=jEufU7bؤ$w&"gZ3sM?[25jm8<+KO<ϊQ);$(iN/ 1';1+/ T̾Hxh+'sZz1a *ȯba-Iq>4 Ţ-rza(ٛvRN?xu\k#XHZ i8I2S[fU $9E}%kJ 5Nƺ؂ԅ^dqru.\6l#МY\s\{7z>D\vվZ|ZKjaˮN+JzwvYg"1s^n.'|mQ+_HZg*ɻo|ƴυ|\uѥJ9/A-[r(oٜL.*aMĶJތ7|汍/?~ܓKx,|yyqkV7wVSX5;@,B?b ?pfQ㽸Ka:MmY?۠uUM]m^~(:Vcndxw8>JMra3N;0|x/pDZy:6X 3 5 +x]ێq}W̳~k!ɰdPC^$?8՝Y83\/˙]q"3''oZOjvgC^ۇXoPSOԚovޅ(cO?~xV>y-^Z?῿/=>ʍUԷ}x.ޒO]nӇڌY.uw9˻OYb|OZiVXX,C}+>㋝ÿ] &yq^⼼5w]Amc`<(vP Ai4AiA!x^BwʊyyVݧ,׏+r8"<{j{?O/NvZ Ŕ'p_<0ް>o_?y؅1~??䗯xq.âx:޿/k:\/kua~ݾeyO{xAq~?`O{:um7hCϏۿ0HN^zr8ι/wx2cPto}~l۵׃kyv :ŽqO.vsapdaO}!mU#7/s@gAN?]v f>.I`n\ge>oϑ^Av116ߟyZ8cip_>f4 1؇܌|4qnfe?zn˘{3p5nOdLC`vzf'GLPo}q_CZ?k[Ύa {k9׶x!J#-)miUg!|$t-+m5":cpJo(w^"w7vREC0[0-|j\j%9-P{wxZG Ϯft7;2֭}נר歵,2gH0 +j 2y%iZe|,>l8;ټw҉9̩}$0d_ +mV+$W^҆gŽS>^9-% q⃹3ò>]+^qԶ]zϛVˇ#|P^^>oAh9}fR"P_rG<&vO]3Uv@4qCeIyA:&`R8TzصXƑ(a 87I7 fk5xK)njݒj敐h|AK5X fv?"W;.[NC/v4w=&Y6ߚc0IJ9k{sXMGٸ +{]",0XsWuo-WPvz=E/NG@Nm,^0XslX];jx5o#9KN;)Gy} ǗoYЬsXr4_=5m|ϰf|UIjxRp^4Ŝnck +H!k3jjݰ_kF-ͣڕ9mOҮ1mi㴕ò|ѸMU{xlWOOKvI3Cm=lIv[I.3{2 as;F$E +W+7FcZBsH:R-\gb7ld&]sH0ʦcbwpjoћyI~ I% <~TJY}I^y{tkVG$wV7[XE ;A,B? ?f惘Q}?Bc1m˺,OOK9؟Ur'rjSau?Usw%ӜfG0{\،θ6*_>}?'{}sgoڄƎ endstream endobj -563 0 obj +628 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 562 0 R +/Contents 627 0 R /Resources 4 0 R -/Annots [ 564 0 R ] +/Annots [ 629 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -564 0 obj +629 0 obj << /Type /Annot /Subtype /Link @@ -7490,29 +8170,32 @@ endobj >> >> endobj -565 0 obj +630 0 obj << /Filter /FlateDecode -/Length 1007 +/Length 1018 >> stream -xW6 SذC7`萡]8ɟbQ'Kq_&pHH8|A,ͧ cO_q2N9"ч١W 7zLMq F9݌b s9~?^,`~tCTr\1j,{ ~M+/$.dq0g֤@ )(qD~w(f%&XLW^{O4o?#0#zLv`̇W -0U*AYElD-F% {t"K'.e>2\у=f7,+d Űd \$p2. +Edx1c* ctnzl]^.Әo8Ϋ>ۏ2+Ռce1]1i8]tS^[^%s-d 219+.2*W( I'4%&`b*6|:nDr]sȁ:RE:FVvZ:Ŭƌ+gP+?8[B94ET) !Z] 3OٶzjCV.7^o=}+z,-:vesWfl2Fﰳg3ḃsE#Y m>~w0fO+gˆ=_,v:svu,rW?0YL*{<ݫVMtMv]WQj=DI0U_ ə2t&(ئԏpw{Fk)؈G33ak`441nd`yQq܆` 9?IA18XaCПEF H^aXLT!RT~6zaB I+?:݉3^tAS'u >EpRJ׃=w ]0ߥ=Ʒ|Ä Q +xW6 SذC7`萡]8ɟbQZ5cGOGJYB|0}5dk>N+x7GT8{ +@˃*Bk?=Mo4G>E]s~z?X@?ӅWKiƩu:_ d0Sn^zyH=(v:N%+;6_Kw3}te4lQlh9tޝE-#**Yٲ?;Hɕ:n&YoUs]:K]g[>bKثֳj^n*o۾`iq {;z + QzhՏsv{JtK%qhsHq$~`yQq܆`%?[cqẗ?Ee,SB~!ʣ#ayCޱ6;e4ٺ/\#r]/Q_]rׅ?US(סr6nq=+^.(wnBvf{Lh- Z O endstream endobj -566 0 obj +631 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 565 0 R +/Contents 630 0 R /Resources 4 0 R -/Annots [ 567 0 R 568 0 R 569 0 R ] +/Annots [ 632 0 R 633 0 R 634 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -567 0 obj +632 0 obj << /Type /Annot /Subtype /Link @@ -7527,7 +8210,7 @@ endobj >> >> endobj -568 0 obj +633 0 obj << /Type /Annot /Subtype /Link @@ -7542,7 +8225,7 @@ endobj >> >> endobj -569 0 obj +634 0 obj << /Type /Annot /Subtype /Link @@ -7557,32 +8240,33 @@ endobj >> >> endobj -570 0 obj +635 0 obj << /Filter /FlateDecode -/Length 1265 +/Length 1262 >> stream -xXˮ6 +E=,i7h fE[R2)ъ}sgmYyͤJ)ӧV4~EN.0e|J&)s -s:N_N:1;)NX䐠0S~xz7nѺUBY2l?TfڛZᗹU?5s/ɺ紸 \s"Z-Qj o/-hQdS~?LfE/oOxοOBFۙ~Wu6aox@~^9է峉8/xWC*we,xy$`@Jl6_kC& $cYU.7+ۋeI-w>I'=&7"ѦN.`|u`i CW#iraլ;FlܐXǫeQ8&,#aي "6uT*icZJt<{ū9KǸ1-iFdUCU}|a2&5AG$;Qd Y3?lBF-_eQwgӫI<{vXVR;$&QTMG-)ޘ-k=&NVz G*EkZTyXG wt?veбv]l -O<&O!Q8`H9v8A2/faa"Wa$3_wZZHo+cr93n^orNJgYI7zP'A2&58A69@DE/0^ZQ6.]/K]GI6s|{}x:(lrO!F71|{2wXܺX\oHƀchzߝmB^Y,/r_3ӑ΃[4!l4J-\1 -TɇFP>)YDR= Tp9wRV]c7 -38cނ;O/ +xXˮ6+e> /.ZBֽHtH͐#Z6lI9s)I;ROӗV4~E_N.0e|J&)s +s:N_N:1;)NX䐠0S~tz7On(hտP BGbLj~[U_O?Y3q/qNp[u>DE*PXhQdS~_~>LB#w"rAu:aox-sէ峉8/xWC*;FXHhhotǻkg;,*F@EsBWW<>⑀uyM7heV1]Y=u2tDLÿx"(zU9~w'cGq_6fѭiL`.ftl`hf`/ItV u51nc׽ L5NX5r^'Hvcy5t#Vǂݘc#`&B7 eYgq&I ;q͓f:C+hX0a,5{ Q՜ap_O|6%'ƍhhS7.U|u`^2F*)xn^BXi@8Ywظ1rc#FYGnt` (ȍ!{R&Я˵&<;xHY#WsqCɖi$wcU>e>0ƏI3 e#(,GY6N!gQyMW@Yԝxl(&vA#&5 +'+,=Z(^uszlGc7> kkE Vt1&);@;'f"虶$)$ʚ; +u{ ~aH¯+cbֱSϷH9'R=( Qڃ! ͛@^ZQ68.]7uhmlu^ +{=4 ¦rKw{ã[GAcrNcmp#twR @PCQ+A"LB!+W?>A03> endobj -572 0 obj +637 0 obj << /Type /Annot /Subtype /Link @@ -7597,7 +8281,7 @@ endobj >> >> endobj -573 0 obj +638 0 obj << /Type /Annot /Subtype /Link @@ -7612,40 +8296,31 @@ endobj >> >> endobj -574 0 obj +639 0 obj << /Filter /FlateDecode -/Length 1703 +/Length 1715 >> stream -xYێ#5}W["" -LxX./Qv첻ɬ6L:[US$ଙNObv z4?R;|b)7'IœDR9#NNo~d\OEUӟBhy3QFXkgs~bh6u%G-h,GMCUaq1Ö{lpMoO="i!ncrA 'FadQs*;WE} a岆gE=-k ӷ&7zut4m$&ί?o#cBX9M)Ro !j[Hhy~6L$p>s5N" "1U CLfAvI*m$SGX0?'!; -\~kBnU5(mLo|&3 pr6l'2r\7 -z!w -J@f@D\lɐ2HE:l (~o`YԗրM?cgh= ]Jtw+O cgfbKe} !#/ s"<ܤ&Q -78|ɿLRFMJHc[oc% ,j=cv nk@t?C<vAE9Pq!Zrw8O!xX;Z )^$2B6<]mŰ#B3vCz}]K&u -i81&E@b`Ż1kexxza0/^Ân/qc࿐E<Ϣ_2}sHq]ʨe!O8 -HZf-Qxo@^C30Kq8<2; -EIwyC8рx 7 -ZT^&v5^zEľ~/2'4؅3JPOyX“TDz0=X1y,bQ@dt`]yPM[߶Iw3X|CG,ŌѪD -}cJ(W2`mL0{Ck׼NڣdEg{%{FGaA[F(Qe{7EdyTr^E; -Qi=ݱkkJw^>wGÝAD䠚 -m)g9#hhQaAcpX{j{9v{tWC(MՄ8Gyb}&Ig;hͦ וs N2+^(DDTyW)[ [֕`(;'*]t -8aYlQnDi/4? (iMv,n@,lrL(НudS ctc -]yxFlvJGCI.XxѐZ>M]~']3,ʿ>8+l  ~uz(Ddrߙ$VSmYB;x񜟃6zH_("6ж2tYǧQ8DOF8OB9mB ER);;G)(=z +xYێ5}["FB -xݎx(%n]ggd=m]sT-'$獜Κipx?G%5ߏ'f@9;3~R(7h-S|=;!wJ {)~>?Y,6h> qIB")윑`7?׏L2ΧRӟBhy3ħ -ńh`< G[ F-RZpy5 +É>3l,;..CG$-DTn2h da͡S|7Ŝ~o^CXe~l?{{QO )^A`&b-Ĥǟu!,Ɯr&T7Jڢgpe+tK~y~6L$p<̖AgY +eP6Vxȃlٯ$8[O {~[Ē Z3O2tFCK~&_<[osEcu,38q/(w$ `+@-ŠK6`ݝvh#P4_l]XD~iέږ+h a .7_;-?g@K >Vр{@JtO//<];3K_b.ckA E&5ATb+vp'S|m7b+j!=ۺ}F\ @:%Wd1]Lyh 5<wPrck{Q8t-vP< ,dZ{< 2h~p5$%/w缃oyDy"5`JםL529HdW[ +hP:As6} qѳ_kB!NYIŋ;|uUbg-撾.+JMn<.O:B*N\V5Z`}J^h Bp al:8-keDad o^8`3ݍCH򾭉ذHO}up䂅^3^_zEOz6W?ge@C<Қ?N?B4"\߬VNoR\vx3`A_9?m!wqe!b7}+d;L)q6luf4ѓ1ΓQr,BߨwH&ڝg$  endstream endobj -575 0 obj +640 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 574 0 R +/Contents 639 0 R /Resources 4 0 R -/Annots [ 576 0 R 577 0 R 578 0 R 579 0 R ] +/Annots [ 641 0 R 642 0 R 643 0 R 644 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -576 0 obj +641 0 obj << /Type /Annot /Subtype /Link @@ -7660,7 +8335,7 @@ endobj >> >> endobj -577 0 obj +642 0 obj << /Type /Annot /Subtype /Link @@ -7675,7 +8350,7 @@ endobj >> >> endobj -578 0 obj +643 0 obj << /Type /Annot /Subtype /Link @@ -7690,7 +8365,7 @@ endobj >> >> endobj -579 0 obj +644 0 obj << /Type /Annot /Subtype /Link @@ -7705,33 +8380,30 @@ endobj >> >> endobj -580 0 obj +645 0 obj << /Filter /FlateDecode -/Length 900 +/Length 905 >> stream -xV0 +dĉiJ@B:; %iEIK -]d}]_4+IZ8J"1]"OVu=~PTdQ٩N݆y=vdNEOa$,S>ՓN@g^i6Lӳ&Xn f*F4q 7^*_JՈlQz -˭''1ld-xXE#VR)RF q7?Eϩt4ܼkpeWdx!ŷ27c +xV͎0 )dĉiJ@B:; %i1πI)Su1XCJ\L[<Q3L R &ƟPSD#s&@) jcϿ3Mo([VFcJ&R5b0nm-O!9BK4p:S_|N``X99Ȁm-{Շ#o]p>^| +d !D䭱޺YEfܙzLe=/!}++1?s(KM~6"H'B>ûY+rUf<(DOEzyTYX,G ]w{E'΂KcOcY?lZ@}2]E5; A5|R!,1D!Wcg\Gg5)LSGh+8dTCT=Rp#Pg-bi-ۃdcébADiN_0>ͷD&DUBGqT(r(LBOr˸ R׺Q!vd peWYUӵa7Suh Oڒ1^V]ftRa_[ʤe]d}__4+ASK\ظJ$3]2oVysTˍT٩ Y2߻%Z*߻54 =: 46Qe޸w=<Ʃu|˭!`[DTňa!58Se맵TrMo[UH1 +O1㌥d=xXˇ@SPid.p.r}N{/qoMv.5Fe9.99An{.ƒL U endstream endobj -581 0 obj +646 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 580 0 R +/Contents 645 0 R /Resources 4 0 R -/Annots [ 582 0 R 583 0 R ] +/Annots [ 647 0 R 648 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -582 0 obj +647 0 obj << /Type /Annot /Subtype /Link @@ -7746,7 +8418,7 @@ endobj >> >> endobj -583 0 obj +648 0 obj << /Type /Annot /Subtype /Link @@ -7761,30 +8433,32 @@ endobj >> >> endobj -584 0 obj +649 0 obj << /Filter /FlateDecode -/Length 1045 +/Length 1055 >> stream -xWm6 _ʶd˰ \irnr=J?L3G۲&Nf]IzȒe=_iaԊ9x0<<\c'yW>n Ysf5+*Bk_!`GQczA+?3dbiot=%ߛ{<w-G" ɑ2O6o?~x1UuZꐕ,!'f̶)>H*FLh0ӭdNE, mdN|!ۗxyTy9뼰ȗ8V=nng;z*CUy{h'a H8#c [u+AHz}U~ \SvUі 9e%}Yy2eQ +o2H %]@VLˊ_FU>,yUVhu>27 T %&MLY|sI4f&c_ JPB:aC[4/ f+WnP:s +,HE +8jæ< i/oJ]@MMvn2[:r.ʰϋH>n] |56K?~rS2MEkҊoҢ/=fæ)Y׃AKz38l#ZB|ǣt[iB`:7M L#C=R9pSt"sHh;Vӂގ t:(|᡼Kzy|^s\2zi + Ğ֭DP.^(d1[|ioa r2Q5V2Qnڕ^GK50 w1v]f: endstream endobj -585 0 obj +650 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 584 0 R +/Contents 649 0 R /Resources 4 0 R -/Annots [ 586 0 R 587 0 R 588 0 R ] +/Annots [ 651 0 R 652 0 R 653 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -586 0 obj +651 0 obj << /Type /Annot /Subtype /Link @@ -7799,7 +8473,7 @@ endobj >> >> endobj -587 0 obj +652 0 obj << /Type /Annot /Subtype /Link @@ -7814,7 +8488,7 @@ endobj >> >> endobj -588 0 obj +653 0 obj << /Type /Annot /Subtype /Link @@ -7829,39 +8503,41 @@ endobj >> >> endobj -589 0 obj +654 0 obj << /Filter /FlateDecode -/Length 2264 +/Length 2286 >> stream -xZn,5We `b1ܹ+.mOw½D:UYN9o:_?yb,͇ϓZXsjQqϖs&d8(墕̞x)o\,c3B,{tOO0:61l ~:qZ:nSg."sJ~?}p4L(Zn_›2q /ᠺLFڬm}<^ëKf1ܘE:V+rb2иlP:7 :)<"`xZT<&yv,ZjCvL6VDZK#N9j5:ϙd`X}@'|vt4gŤ%8\@W@1'7IW@h8GvY i<:\Q w2oY+9'XN*p*_ fbM.EHh+q03&b!{.9!9:\# [^&<Ȳ>1`Qx *n*@DF"&^(Re*l /G8]"ޯua- -W&9ehZ<Ԟ  D! -9]:+<Asy-ӹ\!-a0t4@A*m䴜vѹ%2qX$sBmڨkG0# -@!H1HeXc* tKA4.-  T"XТH"Qe<+#~,*VȦ*hM+~2$aHp^L.Xwt^]=He -G ->ڳbhd%F] Me|> ܣ h@(u=®E"~V3Uhi4d_e4J"7I -ZGlFfQ53lY -Ϲuch؄:$o`?^d#I9 UӢzb'™[Xrk - G1lᣨlJqEGՍe6cwn[ Ys{~ jp j6-e>xEWjZ"~#f|F7}wM_o?}ӷ~4 soµ7okM01Ezx:R_G‘۸{|U9MיW3g1Y'g?,:kXHp93^/FzƅEc#c~/p)=1z)? ϶ +xZn35SX#U@ $E@_zcݖh&sfYN9o:8ub,3_'i뵰բΟ-w LpPE+)=ӟxrYgϜ h ~~v= E [z>q:nSg."sJ8}whPĹW[xujы\ÍYSl"(zxyflP6\:)|U*kSϓ<;&-^W[j!;}&jszo5{9j=:d|OG=c+9h,IQAKpc<, %2Tq:-h&(@t<`ZmlɘMV^-58 @ +7ÌG0A@ +FsMv$sa8Yot,272lAc{\l J +8@ +Id jy"UB;Z(q7ou=ô[:Lr@vh$P Mφ +}c +z׀]J+\cy.ӱk3dDO ]h7qJFp 9-^t.鉌`ʜX6>!Phetݤ5k)F5-xDFTuGJKORRxrhh/;g5Yu{^&okB$ DL#yG24A% +/T|KH*qKОaۢ|gC,d$ +_O148]T@U-􅶧IMԯwF: +~ h}PܥK;1rʣS1xM;- H) `ŰHE]~m5q:@g-rejfb qbyNو=4&"ٯa`!QUy Kp{v &w:r^ ߀lH'ZfJ0ͬxuLEbQ.dFmu^Yah|Ҏ/aHVO5+"4{6*\(q=ݳIJ(&KB9ϩ_}=Q1EEs#1|=VgI$?vzħseXbet[]isQߊR4y=9JMf&YV;n1r7`@&"kmoADEBOf]8>X{9{8Q3wGuy?Ks6B٪LM;)UV`D{ZMuM+[ I#G66+ *{w\I6o`?'g⃆aE5Y8?ur`TZi۝)e…3Ě{ʵ)6 Ű_sTӍ8rΣ0Js +iܡPڍ|ϫgM#͊obP:J8վsH/p#Pca ߇oS@ZRK5?.C7+.Ycجu~?H/Py jVne:V<>qBSj$fnD@x#Gh@ +KߩD9MAt,.wz3-}CQTyk1sDR6GA$y d,i`:(ܑ5JH#:{$I:@RuMT[ʂ8tB5M3ϭ>[6S0 +#4B|]Ga<!\4=Hl3dD)>Vl|vl +|Moof|M >C f9FՁ]qxCObǵ@j^+X7#=qHѸPChsdyc!r]7ÿa endstream endobj -590 0 obj +655 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 589 0 R +/Contents 654 0 R /Resources 4 0 R -/Annots [ 591 0 R ] +/Annots [ 656 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -591 0 obj +656 0 obj << /Type /Annot /Subtype /Link @@ -7876,31 +8552,36 @@ endobj >> >> endobj -592 0 obj +657 0 obj << /Filter /FlateDecode -/Length 1812 +/Length 1834 >> stream -xZn6߯^mi7\@хl]EPym'Ajù"*bx-Yl]>^8sǟ<ǿ F:ʹ‡ τRśJ1nt%=bs"̈`I3Ē~?}]ˇ/{TD&=B-%YQfPy4]W=Oڋj=mQy:kYHT*6S˼*Ũ8Az%?nI1,_~ZBim-*,e<;zC#.Uvվ\Gs*LɛHL=\C|<6L=q:'졔AJ|mܶ=z^,to__:VI~E5sEd'_h- SuHX^oa#6)%(gD{pЧnma=@~t|8&>ڴ`@$I4lgBoc" 0ȢfLwYg@hqqG#a f,R)ff=bXQfh`&8͑Ufpt/xCу a!Os>E٨Z7 ӼpX F]T0xco$ҠR'%΀TogQ2uټ^?j"N)BM *i;,\l%Nm-&]ڴ enk%-7T}۔lĬF|܁&:0h}h2@,G `[.AN={4J % Lzf(kk -zQoy- 9?Gj0\`A(\j!fR ҇Lȩ5^pc݈Xe{TRG !F :$L&; Y%0wmKr'Ș"dƞ9!9wLrO{I`̓1RkHϞx@pRWm98l9QI&vPΏLсɞ zBӱ$"gGƅBn'rU>Isg -gMh>wV?t+Z;3܍6^Qފ>|L QB o7[,bg0(;{GoZc#f4yUzMit.x%Qcx#ﷸ&rF]fځnFp0Ahʴf}MgFoz[M,yjOUE4?Tc?<פL2Jg{3Eq~[iP;δ31pTwũ1Kh' ک' `G(E;fڥrfQ.γ`>g6Q^n:n@z]_C9 *r󠔽tOMv/faN??ܸ +xZn6߯^mi7\@хl]EPym'Aj"*bx-Yl]>^8sǟ<# F:ʹ‡ τRśJ1nt%=bs"̈`I3Ē~?}]ˇ/{TD&=B-%YQfPy4]W=Oڋj=mQy:kYHT*6S˼*Ũ8Az%?nI1,_~ZBim-*,e<;zC+.Uvվ\Gs*LɛHL=\C|<6L=?[q:'졔AJ|mܶӼњU^atocV:VIE7sEd+_h- SuH=5nmNݷsPYA+it>"/ݿMn1\qtu( Jpe=D[/S;KGgia !! *Sd5R/\,8 m`M  ڇAƸ)8N<./6mpw8 ʱzE@c|RpZFB! z^({ 0(>(2(E*<MHezv=9yNFԑ3p>$6)x$#`«IWC(NS"f@;="XPh "I"c=5rd|;VLfQT35`z:s@ͷpH;8" uhiRA@&(bE 2Z΋{QnyW GPPEjJmHVژ1_g@Ϧ#4JT%G + H?Fh MI~ASy[lD%D7;@ +5dȝ)Q@-݇||%O-]  [xFW^!7%Sh1kQDCFq<[@"@ 澣{ec- } ՎOPŀ]9 +w?1؍Ⱥ5[&GU S9!K;0g eِ23r|~`n㽢io0|u:|̾ ^o٣8,HLpl};:ѳIVvXΏ{<'1'7fwpޟrV=fWyS4wƦ^sPm:]=I + 0Fpfb.DvPw-iX G^aPl?>{GZ>cjd*Ai}0*?ƧzF5:KyN1[w=!ķkN;Џة#.x=S:.j=5;i*<,IJ"+=+8}#S) }DpӅͯ/cھF0esj≵~Cv9Ic$Jjx]<1gRx3YL)Y^n3~\(/ + +[6| \k(gaVSCR.r +ީyV| )R endstream endobj -593 0 obj +658 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 592 0 R +/Contents 657 0 R /Resources 4 0 R -/Annots [ 594 0 R 595 0 R ] +/Annots [ 659 0 R 660 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -594 0 obj +659 0 obj << /Type /Annot /Subtype /Link @@ -7915,7 +8596,7 @@ endobj >> >> endobj -595 0 obj +660 0 obj << /Type /Annot /Subtype /Link @@ -7930,30 +8611,31 @@ endobj >> >> endobj -596 0 obj +661 0 obj << /Filter /FlateDecode -/Length 1939 +/Length 1943 >> stream -xY#5 S 0A*!@B~q1X./8IeO;$?۟3s5NOl_|ï$lL^9d9gBM)gdvSxz9[ƬB̚{tj3}` qa ˉ"F2IępNO}/N<'*/3cR^;(*j=դ1eས{9Ƿ Kٴ~u³ʒuxOw*[:L:wQvd(2t]ip-u6*}kf/Խ\si݂>|{ṄxWYژ*`7vyB =و*,*]8 8c- j)\u7rk2gwk {slֺGH6WCL꼸Ve 2ZZVcV&ZC)"ikx'ۅIp>E{e_ڸ ݢTzUunU L/1K y:I[$tdWp>*·-Z\kkdA9D80h1z:@L19!+K7Hd6$m]eQ4U2(_b4tiK@-qd^SCzr4 {xp,I=> ˹6>巼-=Je=LG:GBDBC5h(eҽ<Y|+rCRO.|u8pW$9y<*$UWtT=єz墰ZѦcq_-^C%&-5:/;JZrsFnN @Z^ͽI1p]U[-_|o)QU󼓋T,*綏uGe#gڦYДkL;(6GgQ02߰&<[wwI;p]E9ԝG9Jo 7ASMVi,2NМb,xC̷95@h|!QjgWV UaRv+_[iCKT6+kde. l50vGL(H<8 ˁ!;i)PHgGR o{H+F3rP3fm a`9ቌTQ-5c͹F}J,l7E3|+tȂ[UK^$XP?uҤlyU ~p>)Bo%IdSFX.gMM@ N<.ail6EYdxndcpHOA8 . -es.:=͇X5c y" +xY4S|J @hAB~q %ƇNo.>)>;Qf͗8NkaլOs&$ܔrJJfoO?8筗e:;q.Ĭ7N| +N>_ JK+D/^N 1zI#sJM/O~~=l_όIyQ nj`% +WƔigx37.u^r9r³9᳴^TOW1ađ]qE,3IΒn5\Fg5kh5Jb$m;`| P|F୳.GAt=0X9ŷP_Oe;gҳWGNvͱwQFFVHGY %jAϊC]-A'PD? \ a,ݸ#);ڐTU>( 2AP1::\]!xE:cSSDrXA)i{!DE_co{-^Ӽʎgs)nL 4,M=e,فӎ)Wi)4crGIXOcG~># dNB$q,DYZ4H}֎k6EĮ*&KC&bʎB,So;An98=V k"N!.ё.9+T{8,yLiAɿ3 A64E.i*++$+UGgYl3̑"U&yw1éJUU~ V3Fu7(Z(2Ċ,/ƞwpKm *)[CMVΜ'E-g\x|0W؋:_tx9b(o.xD=<3}rpAfjZK'ad,z47Cd<߅2XM˛3?81NCp ?79]t~0;A97X@CeM6Pe/D1*y`Sw=uڵ`.SvW2:oymQ)3o+=iY2FtGUPr;8 0 iq9G +`);br,E9׋m#8 cC*HuBأ1YJoumGWYnif\)ܪ6Gݷ\ӗҊg!GBdžAS& u`4ÓU4Ƕ{e7E!hFV3ද8Ј哻gR6xM|RBWw֌{}7? (р)jp> endobj -598 0 obj +663 0 obj << /Type /Annot /Subtype /Link @@ -7968,7 +8650,7 @@ endobj >> >> endobj -599 0 obj +664 0 obj << /Type /Annot /Subtype /Link @@ -7983,7 +8665,7 @@ endobj >> >> endobj -600 0 obj +665 0 obj << /Type /Annot /Subtype /Link @@ -7998,983 +8680,19 @@ endobj >> >> endobj -601 0 obj -<< -/Filter /FlateDecode -/Length 1465 ->> -stream -xXێ7 }u -ڢH )H:CZ$FP3w^3EG,J`!zgˇ$,ȏdws†B -B) 4F5FngJ}4K郟Z.@Pszz?^NNEՆ,#@o&E8fH ~7Jm$RcoES׀6,d^kWyw26Ex~u2َ[Vm#U>>L%&ֳeF[tK6𦋜FPϊ\);29tUj9a7s[,re-ɒ%x3Xjnv# 3XDye,5UApҔ)P*>Gh qgcÃKjx -rڰE"O -<(Ҟc[NE&ߡ&I>[)@9SBd!J[5vXLzMی`اwmȀ3ؓl{\LnYc2y30"0WZ!l --y.7Y ֝#' hY't3>9ڥ<#1uJ y{FUVt_E{>e{KgMhNOˎvW(+F$__zqoڰ6DsSk1-@_ۭ-<#[{/ʁH)+.GNL_]sVDb3!q CO6#&"zO+<룎!*uj|4qN&9BhJЀ8mPET‡&ݞ_Yjߖw>Zt8႟62Zz;htz_cR{:@(+jNhg{x"7~hѲY']uJ -^:*W+t@(5s31d.nJ72=OO1PLy? -endstream -endobj -602 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 601 0 R -/Resources 4 0 R -/Annots [ 603 0 R 604 0 R 605 0 R ] -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -603 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 493.202022 39.386457 478.187622 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Photos/Python_Logo.png) ->> ->> -endobj -604 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 493.202022 399.386457 133.202022 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Photos/Python_Logo.png) ->> ->> -endobj -605 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 133.202022 297.637795 118.187622 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Photos/Python_Logo.png) ->> ->> -endobj -606 0 obj -<< -/Filter /FlateDecode -/Length 1665 ->> -stream -xY[7~ft`hҔ҇:O)$PIFZIvJlα7ܴ dhy>>`1 -+~ߧ0q}vr2Άم1_bQR0~?s -0֜|QivNoVÿh -߻ q ,~ ?뉡"Z-b],Vo?gA ET|c?o麟'enUlf֔5bӔߌ]:_vADPZBr%mQ*xM8†靖44'*qo@J଻Q29g\'xt#,(-ypX8^q#Qљ"CJ(mm 7裱DPyF@Guo]Wr-1*Or̀a1r>Jde 2hz]($y^\W{gIq= ș7"w.L+,Oĥ^KDC5YpB TH(Clw+QFױ.q]f#25X@Th] -UHʵL;+8!I \^ϕsccz2'=O֌{CnEŹ3$s9uD35Jja,7˾!#Z[ ޖY1Z{6LAo*؛"O4Ԗ )umܓ8ΒVg\klD卨n7vTAߓT4C=zI/1[o9d'TD-9NdN*[ -锎O~ovrQaX}"w-˭p93X0և/Y[# -iǐ>Fs/ [nM\It>meɂ驛\֜=Jeyf.<- gJ]`e BR;O| SΆǤA8)WYJ.9w{^$mԁ))W -endstream -endobj -607 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 606 0 R -/Resources 4 0 R -/Annots [ 608 0 R ] -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -608 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 365.579622 39.386457 350.565222 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Photos/Firefox_logo_dev.png) ->> ->> -endobj -609 0 obj -<< -/Filter /FlateDecode -/Length 938 ->> -stream -xW͎6 )UHK%`!%-PAIP53$ <$A.1ˇ S%vVOgǙ&c.)!e{G{Ps88M0DE~x1aC`4"W ED -ԍb㭍aT'/=/ݒ/KOa˺i#ndUg˓b}.ƄB/pNb7TH?O -̎ybbHMEMDEe/2mκ~ )mL]@o9$7E6̪My|5V _U82^Ubn g%cٜ6TJP!Ub auua+dR}+ψw IP6"Uyz|sV4k:] ,(gWBӼlv^ yKJ|h2 N<أ=Ey1Hig|oqtfyXz=gҳL $899᫣bIB8h! p1>/L?\زWy'+ -endstream -endobj -610 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 609 0 R -/Resources 4 0 R -/Annots [ 611 0 R 612 0 R ] -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -611 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 771.023622 555.889134 241.064963 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Photos/Firefox_logo_dev.png) ->> ->> -endobj -612 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 241.064963 297.637795 226.050563 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Photos/Firefox_logo_dev.png) ->> ->> -endobj -613 0 obj -<< -/Filter /FlateDecode -/Length 2224 ->> -stream -xZۊ7}eJX C1!3;*uIջ;.;ݭK]OI2POJ×d)-]|9/|1ZaCP! -B)MikǯrRJi-@E PI y&Z~}TLPEr6Q%1I A8_FXW ~BK~/%gsR$k,Imf+D!X{|xOo_樲\:{=y'NVtE|_:.ޏcgck0S9:ީ^yj[;_v,PdMO%X2>EF_ xgdp\~ʍ2yt^d/z~ڂdgPB㦿o6SٱYiF%qD5pw]A)~2Q/i1j%'u$9wt\-J}e9%<ЏsK[&ǙDq*VvȦ'.k!yr5}4YIILgh<!!9-&8hN{jfAUM+c& wyj[tir8M2VM| 0hё hT -='s?hz2MJƤXyަQz [E!FZ ׼M-*%>ǻ[@UFp$, V r.nTŒTpc'{!qiXulI ٷR=9Hٚבsd$Q6mPmy(eށi 2>0F/ A17WΫѸ՗@3`U>{֠duf z[b#n+LF O$A<bxgIo|1?`|ZV"ql0535anMŭtF.Nddg47tv8^PgaSv­÷®a촍%ޏ a9 #?ySLp¹8m94]>0‚qTX~3Cƶt#U \e37\D6̀[F5s̀ -5B|ߖD%YɧtY`'(@rcMJIo-ҋX8I1>%.0Bb53["˴V7:C2ˊL& -]BAi$EEC%_x;!_ k(dAteE lY 5hmT| ɱ[W^&\?!P2"xEҔmq1 N5tKq`w[QtCN7 BHh} IisPxZ(05  /{^bF*@1FbQa ༌p~~rd6NX&4|CJ;H(0P4)yjUKo`G6FZBNVUaeOS -X5b`W &SDžKiK8ƺ -F(XKY] -]מýe {_szN%kCc$E!O.ia׎Ťs̸m t!e_c`8 W5+3yVچY-T=ZTb46Yжt'̆f 'ST2c'F6dDchӫ12 -u,{90J֌o!Cl̶@+s֏qτFC(Sw$̆ᾼv|t0"RH_%jiRSEpGܓ˅3L:Nd'{"Yt`oMM/U7n5׻REBlnֽV - uf~_ T쌍TW> -endobj -615 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 241.702902 39.386457 226.688502 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Figma/DiagrammeRecupImages.png) ->> ->> -endobj -616 0 obj -<< -/Filter /FlateDecode -/Length 1346 ->> -stream -xXێ4}\VK @hAB-Nx4KSq'=3Qf\˩mMD0*A5 -|~ -ۀC1`2F[G/SaxxwT:0c&a f4J9\iyyJ(ƨ0E=}uQS6Ģ]!Xhɏž7$6@dG =(J|ufY.^Q6% 0i_&KkoG„R0@̑lJƙE&Y23Lt#ϟ5̕8ӕ <]i<^}汮|<ϓJP!<.s@H=X3+{QdhAeZUj*Ĥ`(brva ʼnEČŌf߄J[dlZؔӲF+XLXE6-uX -װ%Ns)ڔX`ߋ| Q%caq܋]#CƦgG8 6|{B´89YP8?O3o`PcYt -DŽ4;qlY٢;L@gPpfYbH+шrdH4b -ƯKx+GH~.k5ftFZQ93Ȩ 3@TZSxܫpQ+vU4j,ʺd#h&#DUOɦu9h;ʓErȕ(jhjyCKg4 Hde ̑saZ'e" =Hw^lѥěvC8 rzg b{=Q6MZ @^,ouluWdF_WDNAi':n6%.|b]BFw]3W٘|:o-loS/@Xl*`ajY|7vYۛn+>ۥV$ P(گWmjԅ̭}Q;Dq氤ŽGo@C2Q`rݏ~y^+.*y~> -endobj -618 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 771.023622 555.889134 356.670499 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Figma/DiagrammeRecupImages.png) ->> ->> -endobj -619 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 356.670499 297.637795 341.656099 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Figma/DiagrammeRecupImages.png) ->> ->> -endobj -620 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 74.399779 39.386457 59.385379 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Figma/DiagrammeOCR.png) ->> ->> -endobj -621 0 obj -<< -/Filter /FlateDecode -/Length 1221 ->> -stream -xXۊ6}V*]`0$$K„!vO/yȆ?t.mdnK:uJ1q hN/' r͏0DIfJ' MFX&^*f|zt)f87LBHP8m>g>wnN]mijh֡cۏ)Uak2)悕;Hԁv_2TU.\niTXc(K"oX˷2Yy'kK6%Kq0if *>Qǿ}p$m-4`NiMsۑZTۣK/qMSjlҗTF^2ĩ[UNN@U]O`]thV0PsYʥoťKPֹ*{̗ ķp`@ hX4/ - ?Ipƹ张쌏32H5JaJp<"q$#/冊"%&e,5pGW7oye GA #M2)7D͛^W HJ DYv>Ҷ%JRzI 4i Ss:}(y0 0˴rGO8Ktq˨gWf6|xÔmo -endstream -endobj -622 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 621 0 R -/Resources 4 0 R -/Annots [ 623 0 R 624 0 R 625 0 R ] -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -623 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 771.023622 555.889134 329.046958 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Figma/DiagrammeOCR.png) ->> ->> -endobj -624 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 329.046958 297.637795 314.032558 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Figma/DiagrammeOCR.png) ->> ->> -endobj -625 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 101.203438 39.386457 86.189038 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Figma/DiagrammeTraitement.png) ->> ->> -endobj -626 0 obj -<< -/Filter /FlateDecode -/Length 1050 ->> -stream -xWo4 ~O/@Ήc'I @@B!^m'^K8ڴ]vԭccIBˏZya'X=$;>)8U{WZAy">^>D}P9ݠ1t`OqÛV0pG򥨲q+v):թNpO1h'>ړoȰu/ՌLV -*|u.Xq <;0keB`gx#ZI?O 緋 @&X8>H%aFh\V|OY Gry\z/_2x*}ҋ\.PTE$$[\>F-"W06R .t3l\KHhcIazG^f1&ê!'X~IP0+u^h$tDǴfJ1:Ѕ&mZ^VcrVJZ2eypO*hc*(R=Dn`]~DIB"!z&5bJq$B{NL̉pREXma[ҷə6mLۢh:$2H"QU3l{qꍺ}[Edejw-Ԡ8~(d`1@-A6]! ^Rǣv'yw WP> -endobj -628 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 771.023622 555.889134 356.670499 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Figma/DiagrammeTraitement.png) ->> ->> -endobj -629 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 356.670499 297.637795 341.656099 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Figma/DiagrammeTraitement.png) ->> ->> -endobj -630 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 163.304899 39.386457 148.290499 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Figma/DiagrammeG-C3-A9n-C3-A9ral.png) ->> ->> -endobj -631 0 obj -<< -/Filter /FlateDecode -/Length 519 ->> -stream -xT͎0 )xĎi4.+  qlWO) DϟR@_? ̊fqBPAmzCa`3 0&W)mZ(AdjAO͑ÏiD=[lY[R3G3aYRMO+U7_2QUJgT.^}o;YիyyXqLCR؉ 7oU~XO;s8^B pT3;g}ҷu9wo^_ROF _Ց/k5W<֐qĦkYYsKb!A6'p=tmʔ q$A؏KR&#G:*#Udtg5]:al**IR?ӈ륿 - w2ﶇ\.9 -iϘ+ߎ!$'^u׹m> -endobj -633 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 771.023622 555.889134 110.449041 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Figma/DiagrammeG-C3-A9n-C3-A9ral.png) ->> ->> -endobj -634 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 110.449041 297.637795 95.434641 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Figma/DiagrammeG-C3-A9n-C3-A9ral.png) ->> ->> -endobj -635 0 obj -<< -/Filter /FlateDecode -/Length 2859 ->> -stream -x[[+~Bzu0@a,L؄s/9V?UKm9g}JuR[ELK;s}>v"+IG;Gdg/"P:zFkϿ:r)^>J-VFlB￞E&Z~}Tk:\6MdPE8pXF|.Җs.|YҋqE!I'.b$MҲWubIJvd3g*_1ϧ~ǏgRy޷_/B$ N&Z߶|>fj{Ҹ֯mX+|urz_cRu*G7sSב~ 7v棹i6ֵvuƲk8JM׬ƣHnT*r/e9Du>LX5EO'ȹ}2b%RtQHsЈIa$ߏE0C 뺎6N`&% -hqBQ@ixFBƹUO5\pqlx%Π&cEۦqfw:[-[7t4&0#6JJwt'BQA(MNƐףSP%P w? Fv.l\ }U -a&]P B_XԆ`NBcn@ h9)hgEǾ PV5!Q -ŒCD61Hq<(_A(r6L#m2ύp7 "@Q0-0~^iVao7"_k *܀.0h W -c`V62$-IGa gyIVtpA}9E&0b8YCT-tzd_GX~+_ -߭C%ӗlbMkA&~9ʖd}DRCמt:/:)[V> W|׭SZA¹jCC:`.Y_N@Bk#cli24gv)?_gD -endstream -endobj -636 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 635 0 R -/Resources 4 0 R -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -637 0 obj -<< -/Filter /FlateDecode -/Length 1257 ->> -stream -xXK4[~-怀eA !tg,_訧\ջs[IP/섆U"FTI@dƢ]!XGx~<C贝Ѧe^L]@Wce@ͷ YܦրL$hM6z=ؗߧI^yT --BeQa&Z!/ yl릾tƽ8 voh{xmC5><#Єd*{$Ĺo2B!C{kR/W}SfEc)X2} tmF7#BBt:bWVfNkLMugm!܍nAYJ#`zj_ ]j<[ڞ|"d`8oalسx+LJ]Nd9!l"3P6e8.!;QN]Yan9pZ4ӷldLus6V|_tpʖRG{fVZ5Yf< kGQpT˶AD9Idd-s[YtI "Kiˢ+GtYrٕ(Џ(cZG|Ŧlw+C EfkzrMxsƉ|훰2)W㻭?pߪl(2O(+CS `+t<@2,Uֻ',$BxlOW1Eڨn+Cs,,xGU` '/,p?.&!Pr/Ӗ;|c]:V&FݳCY[wY[aخr0@'f{'gY )T0h?yPTa> -endobj -639 0 obj -<< -/Filter /FlateDecode -/Length 2033 ->> -stream -xZێ4}"J@B<$zÂ_v\t`f{{&府:U=|b+sykԴ}|j/tv^ k&fw~͜3!E)gdvϗ?/qrYg'΅5.>?[hߊw3l"C_^8Yqf'Sjzxy?~xƘ 2;5m=_OVkQgD&OZiOCrQ2ҳko>OY$ -iQ-K^G:uKmg{In+̾OVd}#г"x6<{6:1R&)D=<qʨ7PF"'(`rp(]p04bI:uE:973A&r Sr/y?9vɎh qdsgLcEu!cD|`dj5vcC/H%vee2i=C<)t>Ӷg3i3Qՙ=ܔȡe ,|hr8?U@0>+XQ@o`&v{I=: k+Q> iմ,RFlY6Shc[TΝ&Ӥq5|Vt(nTL -AUTH& ˃i©!:I9Mg3_U/ʫ'LS] dk%I}H,3 6:7=0F/DYi_+]X>S{k!pRz녿p<&0f5TB%- DacI sWL(#ȡ1` +n,*+xW@,!>-<8ͫ:dwE8TBn'slY!1ZfzQqܤÕ39Vu5Ƀׄ2zm7ʑ:>rOtvTNtL)ނz(QP)} }n<)fM셍s҆»4\lX\2 - Cm[ŶYo-rSܼ-m~L?h7!dCZx.d輍73+."=sI& %~ 4fNTe4÷ {\-NN"2ep -ffw`IhzdesD2b! 9,2KMf zYZBk ;T*cC*N&{MU'@ -4k,h2s+S/,ڮ{H+«ܖen9شIFuX,5A Fn=ŚZa]yMj`Y6O"ĽQ\4a;01 -,(+ѩ+C[pM5()X6 #RX"j֠qE"y?U;nݤ84 mVW^Ʊ2+=P}N0kƽ g?)HYvghC]w,H=YBV"7=_xJ U.Du7Nvfl9(. J`FsB9lwOUr!hsY/yR3WQJ\$\"klG -endstream -endobj -640 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 639 0 R -/Resources 4 0 R -/Annots [ 641 0 R 642 0 R 643 0 R ] -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -641 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 592.727622 39.386457 577.713222 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/ScreenF1TvData.png) ->> ->> -endobj -642 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 592.727622 555.889134 302.194866 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/ScreenF1TvData.png) ->> ->> -endobj -643 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 302.194866 297.637795 287.180466 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/ScreenF1TvData.png) ->> ->> -endobj -644 0 obj -<< -/Filter /FlateDecode -/Length 2745 ->> -stream -x[]}BR @"-Pآ)>8O)%%u۽^[93gF>;VO1闓S2Y.9a -əN6F98i̜?yV돧s*4OAYkc&Oo.zR{֥ga 8_sĝZoـ)0xHba^Cx>Cp$|_z:()q!L!aQSrOo -?gyt6j`l?(W0P!3-YXhy\$!֥2pCk?­,na3:35!xDtv}eMrQ5 O`;㳆!)pX'j:a-Aђ #S`>W6E)ʋhVUJPEF DO!ߗQmz=!R"TPa -j1V.{lia]w]oxt6U)ήk%3R -Ish.`wkհh GwjSUQW0'X .dFVJ|Ns(ñ1C2FOAG'50.VG)=ځ^yJ652c,EFOyrvEgVlI 9`GU~>XH}oY4!\-jR%m& T {CX;xsC֞N"]I6DkAЌk$]jNBRAbdʩ"u4LtdLKbq -CC^# -}ԬBfg;#' PVub޳ɯUlݹQVn}-Јf=Qv{N!l|\g{xH r?Mf`0MxQ*A<4/?P*N~dC=QOsav;%V~HKD}o<;c˻)9JO./@+++d(q(}LMN?Khe*Mx٩aEHӼQ_+QF zG/fZ8'S _hUkkQ\'79"\B0" 寯˹,*QS} -endstream -endobj -645 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 644 0 R -/Resources 4 0 R -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -646 0 obj -<< -/Filter /FlateDecode -/Length 1493 ->> -stream -xXK4Xi5.#  qH2+fe*.;InuqzW}Ih1oE$|ʊ<~O -i -* -60ip/_/_R&N%]^qVBN_\Qeվ.oA "1UEl5m,ʰ`?h`u`MIkc)BWce]API^D'M.:==_~>O*Kџ?<1=}n$t"(UV-`$jpQRZ ~3ރ665czsϯן\W8g*ym4yz'LQ&U,Ghc!PT=93Ei ]T?+ sR嵱 c5"z(3Kz*MHE 队L[ʷ{{x)植BgE1s42)E 9%f(b`rgF@29Tڢ]s;9;Z{Cg1ńΟ:+#:(3r٧ɹ3EaٞlVY eZ{v7LuK>b9c~x-L*AEϿSpbk :)u h>ƻhs&.aV(X/MwZ(3S5{j[ q|"Q@MV^9XezK]*p>t݌);/sj5ǒeCk/Th6-f tjCZ4Nd[QλƻdEmӓGtr&)P;) XtQD!(U"8CKm9B YY ;C'eǂ^xLAvhGޡ9+&YY-YEJwrWʼlXS8fz*PIاe\$ƱoXҁ_H +qAUvXu)Θ{ z>[nd;dQ%>D!\z!~VjX}'Iiٝp1Ӟ9uF`}͔#q'fڳt@~+yn{Bu|Ё*†Xʬ%?u|:w^Ee  9R㸞40AvqCNx+(sx]Y c{ >˃7=/~d}G^pNTKX@fGNn_YZIhz8):͔64P3^ ءX@+}Ub>^Ybo:MQK`2YgM -?aS;`9hz)!ONxb~ÛP.P~ysϘZI݄>a.bWn)$ -endstream -endobj -647 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 646 0 R -/Resources 4 0 R -/Annots [ 648 0 R 649 0 R 650 0 R ] -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -648 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 367.882866 39.386457 352.868466 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/ChromiumLogo.png) ->> ->> -endobj -649 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 367.882866 114.386457 292.882866 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/ChromiumLogo.png) ->> ->> -endobj -650 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 292.882866 297.637795 277.868466 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/ChromiumLogo.png) ->> ->> -endobj -651 0 obj -<< -/Filter /FlateDecode -/Length 1927 ->> -stream -xYۊ7}@B;c;)UZ ev[:u8kit|?iFI9悑NA3ar3!TR)fRM_nOq 9ΝwR2#&SzO=(]iHs8-`ҷ@FajHpϼ^w~ 3snQ>>޹B#`>18&3&S{m<=u\>|Oa|tL۝qg9˭tsJB%VzW<ϛkA@HcNd\#~c0^3ÅVҚyd8~d jlDoHiFu- A-ZF4(YZ7WIKc=-`D -о>Z^ nڟbtǽJt`q}eR^~!Ӊ+Ӆp^&R(dT9EoP2蛢%!*(yK|ؤZ딬HPqnk̪S _8>hRӈbhXf9 cZG_F}πג٩͇`PZz^#fi,0fa4r0kơ ď.D0 Yo< بUdGߕ-N`+ /ُ`+9PMY۠Հpe3M܇2XnK-b -"jz@Qឲbmo6&+@!9H{ƉB6v] -DFnR,ޡZKy"B#P~ cAtx{ĊaPEle*11uzIU\zmVl4Wq }y.fT=({T |}PpՀT`69vH`, LTPdVj-%DWJD霍'ܺV -C05yRx~<1း?ĩu -R-#m(+E;/yԕuc4F /, 6FcW<)Nr>tjxNSFCؘmof0B˛qH{ -z92](69Y07|06~/ֈ;7gW'3`ւc֩#r8#,e·#:_݆,B0pp:"z1B"=,xMZs+m:"m Kr[ײes?3q9?-VIuQ=ꔽcu'B4@ӤF̯hM`uމURL%()g Z&n[U  -X51-a6I 4xh]^ü6Ui򌲡-A J f_jU@٩T3+ZRv,g6(_  ì ->G Y({=/ֵڥM7`4#f)T> -endstream -endobj -652 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 651 0 R -/Resources 4 0 R -/Annots [ 653 0 R 654 0 R 655 0 R ] -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -653 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 598.358022 39.386457 583.343622 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/FirefoxLogo.png) ->> ->> -endobj -654 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 598.358022 114.386457 521.108022 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/FirefoxLogo.png) ->> ->> -endobj -655 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 521.108022 297.637795 506.093622 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/FirefoxLogo.png) ->> ->> -endobj -656 0 obj -<< -/Filter /FlateDecode -/Length 2949 ->> -stream -xɎ} -u IT ִR&#)RVu9 nO8s>/_Oo'Μ/h?sHgA3gBp3Z)ο|9S|λR2#&ϧOnк810/'XԊy痯OgדO+ L{j\.p*s?rcLr1 -dMp5|.3me\*0?/+L!d$EfH" GzDhdBD.1Nv, 뻉8]NWe)3Lf {;;" ΙbH”(d]ː#^,Ӿ?ԢN82:dY_njRd̡mpsf)3ftPblKUa$UO3D[_2a3{ıJ\DdHȸ“9;Ezy>ab9eaN[*;Ġk5u}JHKLuye} zHT5H۶ xq\]7ﺋdb?WL\]MEG( F/&z27 % S)sTEUwʹ4 -^c(hfn_݈-9c,V%>JXf/^ -{ɂrā`9sd!_19֮mU0РRaS֨@#dUfUYH$mm -"!*iWv JHeTb[Si^ֈRp-p8"OdJx2sMń>9ٛ7j4!mWi;T['23J(ŴH4w}L&Bh <*5qȰN-$;`fl\@`ж܈⢋2o7Xf Hgxdzu vB Nb\bLI^Ȕ{*+>*#ZO5(WIč7JA,4fzg*A -{L3hIi\D!2ʄQ"8{bzFrl'^(4zadlW;ił42.qD\nъά spg΅NKi/HhLUߪp1m9}f^h{qAl9Pf-MV\LdL`NYuZדU #z3aUhϤ7h`2ˉAlV< i i4ůB -gNnceZsWx絅銕Sc~/i쭝MW>RW qVЊ_. -Keķ(Vp%bEC>i_d&(ÚcF`wu:5"xri^J )_lD]0j,vt Maf@iW4_ĎQoi{tab &\cx ME#}T+G;A=z3ommSZ;oK7KAJ2M(9z(<)䁊p0 {Y}( 9V3+X}YXt 4-ݤ Rj,LOUR0!IoU٫aY<)LRm <:6,,6-᝵lzbFka;S`;qK~>w=hq[~f|+H0P 'SzrDa\wI<3DksNF8Yj7GaCaCd.G7ڰ!І .FX4aӼa 7N1ŝ@m9<8[/nfMX)uqVsCŝ]  +Z`hHc`t*q[W4د8d0 ^TÕgtHEs׹/8%]oc%@ʖru69sp&և]oVܐx;w}c`0ކ~f <6>(a9L , #CՐq&wDQZ ky ~&Z*vtQٚ|=qۘ«wsxV:x؊?[UfVLw A笴Rq;u}"w_ht'繚6'rTJ3]!ڶ;Q -|E*}Xs =9 U#"NjG9k`tNu垝Mfl, Ӡr -endstream -endobj -657 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 656 0 R -/Resources 4 0 R -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -658 0 obj -<< -/Filter /FlateDecode -/Length 2438 ->> -stream -x[[k,7~_1 /`˒BC|8IY5g6wl8gBRnZION=筗e:{\Mso39+N~wWIx>qZћ9mN8ӗ?~~#=|?1hn7| {Z&]ח~|gzӻwN37~D?y(s~/%L^]}Sg3i,c_/w,~~E^tZ@\[wE -$ᮉ1Pbf(jQ3&yx[!.yѵτn:8`E0x{b_`D ߨr!,$Dtڀ4E9U&kb~MX-@ϽQ  -VW\0c5zr 3(cZ`!f'uc){yQs#swv`1Y|\zΠ1՟z :3h1 lW0&5Im7-kx2 hq<f&HE D: 09@y/7@sH *Y9I/P[Q(!BDp-ø>&"mP41kL_\ܰxI&4Qyj|{XEV~PAu>W+B&0ɦIbf o -mFJmPI>¢'|`9ނNC-;eeU%tFk%ˠdg!M5Ean(z{ QŚBL4*UNvϳb - -\1X z,Wi٦(s"`h]]T{kj}P={Mu{]}m'DX8ʼUʳAy+>v5 ^8OwJ{WK|YV -FlspзA>ri%W֠T -)J(T,+ bk!6o4Pg,aE*մV.e:٫DtN*&TO~N}(Vr8^ݾn8Rfײ Pʝ\umZ{M_zaҿ3t)MQv5E/FԒ^\5!aK4[.uMg)5rc#Fȍ+aPIޫ)V﫧4]6B:4i$DwZ*h`,k)1B7?$}{~%UjRI,l{|j*lJV- qN`3AyNA.%5Y%w3|rxYM\%3d$_Tp(#Iûmke &k<{@i h>vhA-v3ש J۬Tjbz#ƚFA$ J^){9wD&ZML(Cwƺ*QIwO᪩RC <(s3"?)}5A):ǿ27t*#:w.AF7ǛW)aS1+Ѓ:OׅNoJFdK7Eozhm1p=bM"̰LD5hN,CvZA CU lY?}~j`>"kIIpA+%<􈥈D XZ}nV[3c.&0[|)9ޤ t >#sx-Bo9!)}8 p[#++>^~;M ޺5MѕVTPn"SfEa9BV( 51KBRl~Dg!Lñҝ3Eѳ}zFr@Xv9kn kKoR ^—-74)Es>s|1i: @H䪣h}b@9cN=䛣O9l#N=tmqo» <Dg~3( yC \Df-uא{sv0A* 7}H y{6o2:9Lelg*.-"_GX\l]p0)rɵf<"~P,^}bZR CM -endstream -endobj -659 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 658 0 R -/Resources 4 0 R -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -660 0 obj -<< -/Filter /FlateDecode -/Length 4309 ->> -stream -x]I#W$`Aꚑ/=@Y\YdU8>dm*[ȒٕoJFuFBQ+?߯aq}uHkuW,arB%/Pj29Qi~ݍz?;,.~V5po?^XbD+"Vrk~rg)wF\Ⱥ1* f[Iea/_?Ƥc,o㘉kx z=>zijv7 ]u\qF>~ާkM׵o^>Ǯ9hY5JķU ſP26 "^ʊTNJgQ ##y|rOӼR*!1'h+S2HȊ'`b{ȲN{bPFfR3>CؘY-@Sfk$f$X`_e ,k[@y#)a2ܣjKV4%AQyKۣ=H#kn Ӎ7)#A,I-bd1 La aĐ%o#@l@-4$/x^2m " qs:D~`ŏ7KP6V"% -m]x|R{#F#z*[cR2Gjj4oixúoƬlA]jG!?cxqC^*碨=Ncus!3c -щ_*CVPk!3cq9XDio(ucFFM.ah-~ƴ;Ӓ<8+ -)5k:@S?:jS:5,Z - [6C<YR(P,PQ22Nܪ82tO9%ѕ&ncPBBtTc1V6f^5u2ٹÁ )~}kj3VIi,Qچ`~r<_hMK$JH:ܨ%\Y0Y$*[Gh#(`iJ7qFб~C|j1U ̛514.}>2 ώfAiRP ڬ;)MEXNaIh.E@iY7NI\_9m<NjQZ2G ;;X.&IsDFו&qP1#͝뢏\&ZZL6^~&v':-9ӃPZ;g4,TL]$<'\`*ًXaR/FY_yq=70om|X=£6_nWbk/M+T.=/thW腹)łGKsØݣ#:: -0`dWx3ƼߒQ *ƈa8ʘg":1Y`w SAѼKnAgiדR[^ -R^&|4TII@ksOLp ryw=+cgj{'! e'12ӕ2jm$Cq>+PuU&7B7]9u6qeTxB]/*I-m̩VЬ*Oòta[Z-b-(VIaDԕ|]=!ib|VV6Y\gI+2Kh.?e54R)c+V>?w/{bT_K8_)%B;vehi;B -%1\Í7b|`E*ϮI*>?oћN XF?xq┷kcK.׭ѡZS9uDUdMC^AQJ]!⁢W@]Nm/oEGmZ2pyt4BY'w07pQ@W`!ZmsqX^ -f)+[i:Z+KOy3G_Gho{=+Iб) -*4KBŮ>Ǵs!#ե,`5Vmp!+Ń3%Th!+ьQkՠt+6`"N!jjEe;ΒVu:Z+ f Uj¹h6` -Åj8+"9:&hA,$L08:CCk`D']f1%Dˣhxn{i14e>|T-T3ˊv-'fbRƞ Ӓ88*Ii BP5ϼzl3P1#P]OIyfǖYK\ѯ[Lfd)^^vmZ\t6M璂n3P@ 3L8?p? ->T:%`"ay\J0G%y.u.Vts F+ SG"yA03xtk?"d4.ܟ; |K&)N ;bۺDeb-LlAURu/: -G1יT1ƅ]f8rԫ&)֯z8Q CqJoS,TӧǛē -9W\0 `.әumj16ssK!pʺ< Y]b+ %^ۘҎ{.:|Ý~{ )zQUӿ́6s9_@qGKC+B)@ -ج$X@(ʵ Կp>f -E9^<,NܟԓxDPn׃j ppW['/lwϮ(\#EYB1C}=pu/G #=;%d32Ȭ\wSBKV8Gm|睏ip] J|Ch<'gҶOSFXZ4v&nW -,}4R:S”YV_*JOk^g]XDʴF:\zvpkB2iMktm.4؍} ؝vj2u 7>|REMhIA0!W&l2_u -:-qRԄE > -endobj -662 0 obj -<< -/Filter /FlateDecode -/Length 4137 ->> -stream -xɎ#9H 8!$1L2`\L. *ŌV_.wA1ǹ*̈`Gk77^^*M8c8)L5LMIn:x囿d$_8츹 P/?+}1s:]k4f|q}C3ӯ8nfx gpz@A89 xtL>s/3-B|wIBQr&|/~{P0eAx-1 &t ̿ BLTǙN!B^+!$TFN\w=kJB󸯚X~VF1Ninn6yY+oIΕq- 猖PB'N?┭>BkQ[S&0U"C|>hlB Jd]ʖbk!c ).dG,dnMW-КH+KUIWAa*´!abf/a&[*l!7b,+yp|,$j2~ÈYB oF$ߞ#{yL-h}̸A-n  }je6Sylg[H5e_hf9 -Eohg͜|;fR>&HC+} Įn+ - 3'sU)$,]Tv+}%Yp}xgN~B.\xŚf Un;֘dq%SܺGte}4z - Y`n &07x]$J15I)4o33s`Hzl8/n\.):cޅ)AQ,ɴd!iÝ2%%37/TY}!kr(/Mhʪfmd*/ RG?u^*w6hFT@6k-i %zm%6,ͭ@آ=j-%M`KKzH߾Q+fI%sfFlF@ prolGOqi*1ism)kXp9w>1[K)hr<>l,]"k鳯73sJ_-Wrk+Njӂ oh0}'N`CPX8͂qiΔqӨa -Li_cR%J׋LJT#pxvQ=DyoIR $i]T(ø?lV/%xΤ"b]{ -=gPۈ!wk.No?mlo;+.hUQB9!B7 -Ph(PY2w=P@ EHMx,JYQ ay`OǶl+vQqN=3F$Am(v "VM=.Ztq z3q[b@ &A pp}'qŴ8)m~y _z數NE+"(kDԒ$gY4-A56E_DZ&":-i/S&ڭC`@&I4,ZdJeKj Ipz&D0*/~ -QdΗR)HPwKB8@ x]DKГǔyc 'bJNT'vfa}R@ޱ3"ȵy v(Bkd -u2c>u&𚍈v4F {Ja챗SRqmKtuD dLSۻ(IMZGn - LyS6G{A#twVbM(t3 -+:=(aU!+Im-eÆ=vEza$CJDK>2C@KwrRB) -JHF:] *: S+^+_Uh3˞#tDΑR-dv7RGymޝ$0Y(}Iv.-Dxt`z (Vw ;c\MiHtFt0!S+Mhum ቂC VL`A]]Txf&>oIy6&?4ts%'$Ѓ $7[y}pSxv^*lw}1*e(<-JضgSۃ-ד2#MlYouC vPߢu[v -TܑnM>mHȹwH.a VP֡:G14(7Q$A}Vj_鵝y{fXvVw),zQLjHLr^s4YvNjsRsG"݃&LKmdV_r͝R;O t(ٺ46BZ[E7d#lXZ(&+5TƇ^s5 U DY&\s8tBDIvvs1tDts{ -^sIcUZ2<ʶ65yed4~_ mhu^Jƅvi,QN Yhh8M _UNܧc9mC - s$$xF7S;Ogbn}V#5]wNh}81c;pأa7*P(+F]|۾-CPpuށ - ҀK~ۼϿ˭E6ﲛe QBXFS,, -2}VzMm+R1`8FyiN@S]![Em*28b?c+i!jp9B :]sCΧ.)۳q}\xܲFye 6}'bΗs$9WA@]B/S̏,BZ@2ѩJ;ű0'9>A!HUD ١ p/hD6D}mDxvWd,^Nq'a4 "̆魯Zjg1pilgDwaݧ5d(T1,m6)htmפRp^f﬷D'@w^|A|h4΋D 4x/AXwݶ팈_EI".c6dZi8X!a4XP9`:O[D\δx\fS~ 2F`x.mVwqFA&`e.Ĺv YI$fU!sZKh?v.TNd&N8>Ƞ (>yKCw J+(Gyň>kFxCI͏GOgE{T⣏|16t?WR"ް-ˉĀٍ -~r6qR{G88$ 3R?>Q㠔܇ ӠpX -endstream -endobj -663 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 662 0 R -/Resources 4 0 R -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -664 0 obj -<< -/Filter /FlateDecode -/Length 4515 ->> -stream -x]ˮ#+i /"81`dqG8Rd?Xn]&),<4*VzȖgA"`BΜ/~?[AAO>Z9 C<{)tQ?O> ?K`et;9W/r_wzƮ=b&覿?əg=H?UYT"篅PAKZJ/3~zl+)Gn/ajԆqcwXظ6}Nmil:79w{UNAK\b?_/^xҺ$GnXZOcuoĠF:ث㬗˟N JLBJw2.>^E]yK5X)MNx1()4?+jV-Jh߽]B42 %_ :՚aH' -%:RD!)O+b,7&7:L GV+Ќ%>0d#iQFZgMҤrRGtXhɀ| 1_i3 IFo ΢D(F(7bv4id篯!h1*2NyPNuj>2GcT|].sa $el|)VKgE|Z/ӓ$Sh |nn,l<3H}6\$VFqrje W`D2@" vڛԮI!ɭ©$ʬ_CY5ԦxemShnBdY%$v@q -_%6/%4 4̒WFL҆ v:aڏ$̈Ǹ1džd'%\)<:IPnݔ&ȉG믚kUZhmnZKK L@iSE4 )Z^j -f+gx -kB&^M_PI]ƤN.!S~?O%ߘ#F{IU@nI=_:C7ZtW]U]u7OP6j I*ie`%*m>ūyV@@ T `X7rk`WkMAP.jC8,x<B 0; ԙcpXw'9H-cHEa)ZƂyy NSJKDV'V2 $lKByoura3x7N -u)LI&嚒xxipNƣN?:aC'Ǡ3h&˸9Ҝq8lBGچP :PdJ%{zq !Zw@f!Yu`0j cri/>|lPg -du Vސz x @S,_NW}XY6B)|ص:\L0\&t`nV!%!PbK,{#S&^ x9?jaC--jL6L9F5?X"+07n/oEK¦425[c]Y_]{ZSLͣ -ۙx@7$$[U^?η -3?`;KQv+JOS-InoAj[?2 ˔YWS9,QVȀ`oQ~~$_Wĭ^﷫MJu(eyg`7WJAhiڻ8vWy߿~*oiuyV{[ERELHa0 OY̲TMLV{eh{v-ߌpٶ , -bXo xE1 ) v^ʦJb1I"ƹګsX\yDkdăҬ J(S(H4Ϟdm sH8G7K4φ9qͤd˂:Ne&Ɩte۫ J7yBuwyGE9JR'̍ - -Y&/ _-]Anͯ.ܚBY&jƂwv+SlJsv]ЎC"iR)j(l>2_7_-0+4Y67綆wڶrQm5eAsKvӶ)JI,(x)V`bzHld6> ܙ{ ݖa~&h[:)C -Pvߪ<1غQmZ1 mpvYYP"3[r]< %sr%PJM"㝋=әGs; P(_.R`B1+3F8zĜHRpϔX-X+-ϗ[L q4ww*߰/ӽ.(ϒ$ 4l͉]#F*2I6Z3ⳉ _ -0wn -&u#¶*WP;l)QBGpte%%ւ=D,t\Pΰ 1J Kt -%mOٺ_Srj+f̰5k35xӻƕ \ʾރ=FBIcYxDc3WI.G2؞!4(*T[-͞NC%?o/8FB]Oac9lqF6n=i=8 VN4Qa3a qWʡH/{F/3d#sR h9.vJ,;Et,MfŊh5$8"`1'v8ǻ <`e{*Y etS+Ï{x;ns v y>v! [4l) ,ش^uBHgj~7p,gUT,i+Foz;6/_;@ g2,ωͲi&^Va_mU/YI@<榦: v̪qpw3ts lj򖹞ElڦSt|ʇkW-`Ȫ&+6Wll-V܈m_S)S)ScV0cJ,X?y6*mM [zj%}q[s#4"]ӫSlq8wNkq*>RDgx~]kVb[5̝ hMp CpTg98&/\^+emzD9vDK2 -`Ŗ>E.R0hb>-efvg7\z<ԥgXjfr0V,5%%…9WS_]N3 -=o`7q{U$A]KY[P1Ȣ/bTQZ%]Q}ePctR$:UrBeDm^&>v^tNͿKٲ?'eX/>lo"?NIr%kv>%L]y 5-2:PBtp\``)fzv6`㺷ge|51ۯ2_%_ߩzKsYsA5M5kMף{ul!2!᪲1˺̙ $SFecⰂ>bYS HcV7) Q9`XWELOM ?ӊoߞ^ sk佬U}X{JͲ -XbUZHwKy#Җ<38F-gN{{t:ՋʧSC, xXN0C9i)`Z'Kn\5vYJ-R҈gHjޕbwQ5V]u'TjKEKY*RQ`KEY -GO,vԺ!blqPnꭚ+ӽwrRTb4Jr 3,/ѭߪ⼷lst0' `88Ay7atuRTKmy+L5J$'M煵V̞]|,cQnW#̹CSIv]J gZj=XyN˷ÀgadJ &#WwA]exNy<|X νՉ~sR̀!T -endstream -endobj -665 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 664 0 R -/Resources 4 0 R -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj 666 0 obj << /Filter /FlateDecode -/Length 2521 +/Length 1515 >> stream -x[Yo$~_1 4 qIؐsèee7"lrԣo a::JI -o%3/oxޝ#Ax*68h`_~RZ 6PO.JO>FVѰΑI}:)bYa6#1ӧWOJ) ^g* i4NciMv?}W{1[8^~\#_uy96?\YZ1gl`4/q{.;`DExPWV˂N cω2tO2ap<ZvsA{jBM:@y¤Z~љȄo9*1LIi<2bT5d@isa]1lM;UQT"S*Tb VDđғ`.UABKwS: nf %4@|WPMɝG@@ 0?~n?ãMO-2Dbgw>2㦫Go&!N5;znBAkC =֚vj9n6_` -6P.#`ȍk;Z6[RHDdaa -2Y2*1"s! -y,<&^vʦz\K(&rfjgƵp^yG& `pa)񶆏g޺ιzJ^_$EP|JX K"Hzwn2^y0tQB`1Ofx%kW2SWQHX;Hc]r6ٹRBbJYF5du^W-'E}ׇL#Wp:EQAQE!qȰF?5!Oh%*HÔkxaw46F\ 9_̋y_IRRVAVɄJDB2 S+QmCuJl;ԥ -0vXxƠϭ엽aI,0uo@A@ R=ƻuq O,+3 Ʊ}x@ -6vhx PL)#H XQZACKwSy &i7lז(n:5@Ŵ{FU ݷ.2릲b$O'wtks<^k^ѤSIó8#j5%| x!fP ea39H h.Z\}jgjB5{|9T`k]&]C..Qx-8͝(j -w,j R-vE*\JdLG̬IKTzIXٱphP?UWHAu"EjnYA*R]=ų+ ~OeO·j?\7]庌nB6Xvz}ַEcOzeN AR7._72=K6hӕR^L JbaJvT5=%ˉ6\celNBB|!6pg;xo -|XZLLJԤleVɉÎr.; MIAڣv﫚!":M'k?z˲:7oLMz)\R>w,j3*Ԧm0vYAKڠ9cUxP u}SP]ij8kM,"E͡so -&YX+۾hSiPGN B kܜ -~^rɃ*X48>>4X&@Ӹ)(1& -]NXieO M7ν`mJpزy+|\Oya\/C8v+$85ҼZ),G{@ ht(~"bJz@j5ß7錄wZC9#!=?>Sz2 bQ:uFX2fc9rXzNzz~=H́@E}zEyoJokA1!q5#䏮QA8$NF75dJXG4&8mKpl1!B둮^L>!] 4=K[Ǎ5eh^.XzǑ)p_Q,ŀbu71xLd6Q GVN Q:ŶVVtqqI IP^w29.Dj&haD7ܨfbŒ[*9 {m\ޗ bwhQHŠX8oY{vjGՈn۷/}^7M['[@ÔXCڻ8]ls#SΤa6ٮdwpi<F@R10Cn,K?0*7Tj:!UIUqh™R$'tC\(TH+t^ߨS2boRk +xXێ#5}/R -HhP C'xX,/Q]ad:n3;s5_>N[f#3|^'i뵰fjQqg9nJh%%)̷^.1̹8F9?}Vÿ JK;ǰDOǍȤgnq9~3뉰mpi7$|G;3U + \O[q*ƫ5]oW)reEe,}uIc,$}UCW.ZAfYKDWm,y CxkiΧ] rb uDY]#غ e >)<7GR=q%F:l84VDr-0Q,wb +eܸ>%6mL`+9d330DgOSqv#Ks0VqpP +n(<9+VՆ)OwBF(r u`!Q$:7C4Y13eniL ÷k7oB4S0(ɪKmB`JrF6~_$V#u$"bLw_>Q~֧膶!z*/̥ OWu_uk')jlE8&E&@ +-3^\D׺Tj:`ﰠ2٧HYd'PBnEҌtI4`=pWa Ȣ#NVL+d+ș?TlaFA$^ KbڍB\UH7_\-;jM`W2!ǘ K=}F-~Ӳo\WkIJn:-'ϹC3YM~:ꅿicQ tf笫ѫ^ܦF/ĵd3-7Hhy_9<$y>: FiHJl+Z` -ڈלd C Y2SsӳeM^zNe㒡39zoܓnI^Б/L8S,+),[εp<3K0Z ndFyG02UIAIR\,B$A ?f.?TmwdD(mWT=sf@X~Z3:dZS(Ć5wH!g0#V7љi5j`v֬z--w3XDfixs$i%W0#MI)97,}o 73g֮ixj I߭ [OVg8ͱW0@9Px,*9UK7=n۳YD0!RߢeaK78;zԠ= ܘZ7)+a:-&[i8S ZFB(ul05) %aYhDrQ 'y4ߠhΡoP[pW[ovpֵ{4N3U{j8g7j^iks}#rIX˘^j8P}{tk{"*.G_+(QGXJav|U^^襺)+FM7UYgj^ 8d!k[)`E!3XNl2%V?m$=> +/A << +/Type /Action +/S /URI +/URI (./Images/Photos/Python_Logo.png) +>> >> endobj 670 0 obj << /Type /Annot /Subtype /Link -/Rect [ 39.386457 579.965382 39.386457 564.950982 ] +/Rect [ 297.637795 166.984422 297.637795 151.970022 ] /BS << /W 0 >> /A << /Type /Action /S /URI -/URI (./Images/Screens/MainZoneExample.png) +/URI (./Images/Photos/Python_Logo.png) >> >> endobj 671 0 obj << -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 579.965382 555.889134 374.334001 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/MainZoneExample.png) ->> +/Filter /FlateDecode +/Length 1633 >> +stream +xYۊ7}] $@pތIJjgcl϶RUS75,<~S֨extj~Ҍ4.|>]ekaS΁ᦔL+)]>}%>ods q,˛_>{w!,,&}|Th&w;sJ-/o~޿] '*˟OKyU<\u]DEeZr=|\8GӼ{5\Ulu4-ϵu]k}/L|dY)kZPMW|gZ#:}SyIWT,k~v9;,j$F= ν^:ckP>a2>@ vb4 +@6꺒{Pi~̸^㾴 ƣ>ڍAMՏu!Me~/3 (ʳ#?(K\pW +Q!D)V#_MN$@2/!t!,x THeD(= +&V Di /saA4ϙp*B['M&Ns`Dn6~fEq[EA֣=G>}( dʹyrzOE`\ I=$r}"bmױ4=,!D:C67$ZWzhɫX+ih:k>e +,Õ39(?QBQrA(;EMjFM߳[22 Mы{%sHh=7k<.F sFRY\1o2G)xSmB+.Ƿ :|T"6^yy\utU꺝ӄ9x +x@[a +%]ˢ&cS ;W;q0|g_yװ}֣lF'Bkք6 9Ңw1R |ﭚWR"/jќ)+)dA!v|jm,d=ky_elWAuL'pf-]@ cmP0* kgwc.x F8B5h~/dIls @?Z +endstream endobj 672 0 obj << -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 374.334001 297.637795 359.319601 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/MainZoneExample.png) ->> +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 671 0 R +/Resources 4 0 R +/Annots [ 673 0 R ] +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] >> endobj 673 0 obj << /Type /Annot /Subtype /Link -/Rect [ 39.386457 92.063281 39.386457 77.048881 ] +/Rect [ 39.386457 389.978022 39.386457 374.963622 ] /BS << /W 0 >> /A << /Type /Action /S /URI -/URI (./Images/Screens/DriverZoneExample.png) +/URI (./Images/Photos/Firefox_logo_dev.png) >> >> endobj 674 0 obj << /Filter /FlateDecode -/Length 4152 +/Length 824 >> stream -x]_o$ /PE=m\҇6@HZ\Riͮ9#y9÷Q(GҊ?kׇ/9_cGsHgOA3gBpRh;~ϻywBJfD;)W}xBc#+{f]"*8s5\=SnKzx9s}97O $@=˟uk٠d%‡ H5^A{s>w0w8\ILL%i6M܏j!{$?ZǤJb1孔S)m@c_L` L -\ .ūt&g\ 7?w4i=Wqۈ_gJ$e z€ILăn4Yp]7[&w]x7>& 0`Z TtIҙaVll Hۏ_=;-6i;[ -,}]8?WtfJ2}_# =2ՠXrL`Z҇naM`s' |G0d! 滿m3`lG9wq" rcqNFO-Bn2_0gBk*NJwuS5a0cBIu3mᆻi@ i2X )(,+8cNxkRhu֊{qku S5wuJ NB1`I. o5,^Vze/KAoߖ-ޭ)lNuǢt <鲚9.-x2">U'N愎 HЖ<裵*%)._|͌4D_Ce_SbnJŅ79y3Y1]'^/t_%rwy7r~PąG:6kY `mmf'1KɪމqvpM\ -b9r> a,MeWDFO2tsWGuԄ2d߾EX4i]2ńT Bˋ&RVf ɦK_G刢s+̙l6j~أN!-^K2WS%]p\Jm,z4{k' kдqx15 c#mr4zנJÂN7T.c1UVVzqtl:f'7~ۻM:u:]9\;Pq\s^w/kBu:--dAc!}ʖQخ בJtOXN#|lۨ }&JnljTŪ{ln.e(Fh1D5N й(V -o++BհUꏵ P. Oá<9 Ldyf!8ǧ= ˀ18yz)c ,Ҍ3Q:#4z(@‡:ZEtonϘWW](+S2{03#cɣIدQX95$u/^'[:5sޭΜ 8f!JyD7ZΎt1Ӻv6>\MyVMmi=]lqD:x"=U^_VhvdF.cTY,}E3U(Kӧ(NcS 6 4Rd6=`VdsdǬ"\j˓YP|%5$usW1b?XPZׄĄ2[s`Z<%Ab0YiY4YJLV湈'_E%Tgټι}fG^)vE-9sAd1HRq䥶+&CwjKhZ= - n"Kʚ m<5m|4_3}VO'&4 cPѷA.=-ǫbP]+hC{^ R7uuI vPٖ}F]ҔBE4[vrb3W \njݝYI_3.N5~NqFBy=o0[unG2@4ojU,ۨ,Զ -j_EA.IE 4Z0-Mkvb -ѩh+#Cܔ-2s[߬ 'T蛰+0T;H;Z$1 -drfo%FFi|@X3\1a3,Pi1/\6sdKn x`f_ZPo^"230?穧"3fK0c8JܖB])"Ku]]+Z6LYzFhȆ+ΣM`']A#k%4ܵ^=Hkڢ_}Ȕ1~wfՕ]}Ǽ\@?W(jӜ9=5J_0;- -6 =} "e}.dEu9&:B5s@N9}ImZ LHi KHPb_֢$U~dgB37&[C{dx7KG=Ķ%Bèlk~jۃgWC3BcqNDl^F`I"K^{4Q[AGfPoIb{m~D{qJg6z'J֩m >5|;u6iKZ|#̮st\0DDF%i_u3{5 $|:CTj۝ވHoBSsHDzr}bOέ||uZRnh!(zM+U6`tPa:ZGCY𘰦:M K@8ŷΘ[`Ran&_i: 0^DzE_9JaǑ=+ewmd@8JמP X%[(B֍ SeToN.(9h׆} Z0Ԟ -󌁧գ{,CA aaS (73 -bh|o/jJ&UWunYA! z/أ -yB/QzczP42w֯%rG&_:վPU/Q}s5zYi0'z 4D?~7?}#IEV3wP,k;T. Ut]`?WSLe乀 =CFvS r9?ϏhmA5r+ O +xV͎0 )d&Ώ4 8t:@8;;#TDZ?`BM)xO߻L _t &$3.F " 5䬅?w]^5 #!L>R>?O͈_̨̆P#f l/-,ΨՅ>vNgOa<َ\󳀮dg`am&dpl>}q[ a8zTUi0U~X}wT(Gwr\ t“5"Ѕp(jlU^<8%Ed}"xRrZ71E&+zLZL@d6䦊-Ij/DRR> +/A << +/Type /Action +/S /URI +/URI (./Images/Photos/Firefox_logo_dev.png) +>> +>> +endobj +677 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 241.064963 297.637795 226.050563 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Photos/Firefox_logo_dev.png) +>> +>> +endobj +678 0 obj +<< +/Filter /FlateDecode +/Length 2351 +>> +stream +xZێ#}Wـۼ/@c8Ic%`RdEvWK]d+uɺ:E>*Z?);^?>@O})?ߧ SH`?&7uLǠ㤵2/Z;V~:琟NAQkc&G#1ᛳnмPR9B +pُSawaJt]+=r8P3vr~`pjՄFCWlrYMh-׃&yl|M_??|: c򺯷//JP6Cge3JfrW~<.i:a,n^Gk>yA<f^<˜U ^Ϥ˙0U>kO^8qԵM/"檓Ȁ9*O^^}rD\M!4]A+I,`NԹ2sG膜gZ^gC7]Fʸ;N,Άe:7*AEt\Qv)gޘzq^ ګl4 jX5 +E',9MqlֵqpX3apKrHΤȦ'rR5[Y=!e717ҭ!$FQ8(5:rs>.0yec_wtjږ-(C_Zo_nlGfVZdtڈw.O<#C %JtOZVdFUzM$OH#L^@=#&Fo"˔l(3q B@CtJeIl~C ,:zhIezOG/270f[#svA.؛}8©ȍuwӞ0Gå\Al/"l3q22lܲ :n}{FtN4RFgF#@`6ԟ_˛k7N:ejR*3RT'`tpxz ē#fP6z#QB&\MTE+hi(ЂCT^W[}UvOO( GP I;Mv~1V܌\sfE=϶5{pN'/&RaZ]pU`Yl>rO} б)WptE_N8+cΨְc? +endstream +endobj +679 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 678 0 R +/Resources 4 0 R +/Annots [ 680 0 R ] +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +680 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 226.688502 39.386457 211.674102 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Figma/DiagrammeRecupImages.png) +>> +>> +endobj +681 0 obj +<< +/Filter /FlateDecode +/Length 1337 +>> +stream +xXێ4}uj -HhP#@tvzY_씝; eI府0hT)xO+ *$g*bD*0|zލÕZ.teQG1hu]0lM,ʈݟ.\̇09 Oq4xgce"]I, Y&6=(8i_5# ~a!'qfQǎHHK7ĵ:. |}G9rT4pR_E mR :ub#:iFa ,ؒ6=NRa.؃dZjqOk%V'ХLҷ!™Ԑ8 ByYTFVOUrݏ}y^+_VxrJ'Z z +Jg `iXx멜QEOc-),mHUy-*my#5C: .5jQd+F.ו2$?o}K+)'+$P> |o-#*oS'Y8m`V*747$h)Rswzf +endstream +endobj +682 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 681 0 R +/Resources 4 0 R +/Annots [ 683 0 R 684 0 R 685 0 R ] +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +683 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 771.023622 555.889134 356.670499 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Figma/DiagrammeRecupImages.png) +>> +>> +endobj +684 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 356.670499 297.637795 341.656099 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Figma/DiagrammeRecupImages.png) +>> +>> +endobj +685 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 74.399779 39.386457 59.385379 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Figma/DiagrammeOCR.png) +>> +>> +endobj +686 0 obj +<< +/Filter /FlateDecode +/Length 1228 +>> +stream +xXۊF }T%CB&&t؄=! rzati_tt$'?a$FC?Ax=)3Gւu;R#R ^NNqj4Bk)G-y ӻF1|tcCTW֎dݨQnp^\ټVte5W7:|Op:#|}I0ђP1B~~}?Vz/g>Q}YB2J8%FKiNdqsZ*(5zyI2)A>LZ;NC¬ӑ΃e_IS5*b2+l9ɺ{+aʖ%}p4{K%QG$>p~l޿fdŵ.R&lzQ Et\ACe~$'Ȗ<@$% SE#*.v$ s*L_j!/39d"QJbG;x&kJ95ɹb;>!'gGIE1;M-i4-X5;Iϲ}R0,yG*ɋ %?h29ItVeX3.LMmы&\)e:TϤL:& UlH)Pgv}XR/V՚`ӢлĜUWKsOmZ>yll~2G$6Uðqf? {c0밓XMn` +{度!nH-mgmrA5^@]ۘєk{E si^ f2ĩ{\SABnoS.,w-0x|N[\ ץAϭ)+N.DXUֆΓVTd>O"Fо~@WD#xP8|o_]~@B8]6NthYHWz'z::,5Āu )ב %BoZ'׮}NO,-ʤ|NO{gjޝԻԨPr) wC7 {%D(Ps9;:mQ7q߰lgGx&sQ+g?`s@6^sl}Fe< 01gS +endstream +endobj +687 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 686 0 R +/Resources 4 0 R +/Annots [ 688 0 R 689 0 R 690 0 R ] +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +688 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 771.023622 555.889134 329.046958 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Figma/DiagrammeOCR.png) +>> +>> +endobj +689 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 329.046958 297.637795 314.032558 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Figma/DiagrammeOCR.png) +>> +>> +endobj +690 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 101.203438 39.386457 86.189038 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Figma/DiagrammeTraitement.png) +>> +>> +endobj +691 0 obj +<< +/Filter /FlateDecode +/Length 1046 +>> +stream +xWݮ4S؞-U@Ђ-q4+.IVT9u37?oQya_x0N@ޣCAyi"k !`p Z+ ӇÛ *>se[WҢ$rb=LhL@kO&"Fѿ0: +6׫'gLVr*|u.XqXyJgYF:~e`N緫 N&l $"()hUƜ429SI/Cy\]P5Kqy8Fǭ"7knǐX4oX+%Yf]ƕvVY+^aU,¤P(k˕J4TJ}XU?1EBo,B!zv[y;YRc4U@mL( &56w+`~L D"!{!5IbJ$Z*&yR I;69;W Wۤ-&v=d@5TnSA^ NxX wOU6"Y d.@1Ӷ }_=>>㉢@hɵ+EONԑ`O_lO"g#x`ҵfݵgھ&؞>0~~<*A.oS_&w3hk mC\Hh/8AW T@ /廴-a'[ɽ8G獧Ozi VP dO-B.cOk@MI݂cߴicʁb;9w\!dʻ(_ +endstream +endobj +692 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 691 0 R +/Resources 4 0 R +/Annots [ 693 0 R 694 0 R 695 0 R ] +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +693 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 771.023622 555.889134 356.670499 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Figma/DiagrammeTraitement.png) +>> +>> +endobj +694 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 356.670499 297.637795 341.656099 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Figma/DiagrammeTraitement.png) +>> +>> +endobj +695 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 163.304899 39.386457 148.290499 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Figma/DiagrammeG-C3-A9n-C3-A9ral.png) +>> +>> +endobj +696 0 obj +<< +/Filter /FlateDecode +/Length 523 +>> +stream +xTn@ +pyyF DY6@B,rsE-/qބ +hǏc'b#yFoqUݦc=NIsMSJ"J(xXyxfGʬI$r<7_ÂD-古1%Z1 +5TbXxW>6!x7y9}˝ezxw !mh$6JQ1 &BC;fJXȱU=~{TRO&4墯~E'Xcw8kP_b_]>Svo3mW=^Mcm:?L1h JܶEQ9o<>}2z  L+!-C̪tʎũ-ʮ)Hcq?L\Z(7`hV=.@T&\ZAO @8=uNդi +endstream +endobj +697 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 696 0 R +/Resources 4 0 R +/Annots [ 698 0 R 699 0 R ] +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +698 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 771.023622 555.889134 110.449041 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Figma/DiagrammeG-C3-A9n-C3-A9ral.png) +>> +>> +endobj +699 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 110.449041 297.637795 95.434641 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Figma/DiagrammeG-C3-A9n-C3-A9ral.png) +>> +>> +endobj +700 0 obj +<< +/Filter /FlateDecode +/Length 2861 +>> +stream +x[ۊ$}~z ^h6US1RI*RTѧi?l](pt 1_b\QHc{X,I)y[wi٫e$mz;I^/EX"1ϧ~ǏgRy޷_/B$ NMv2}m?Iz=Ϸ󧍓IZl:^˟k}b揪cT9ʼ޳u<I6Mk\w֟m][[˭n{k#o?N-\2gVf`$P, eց~>U!Ȥdz1Rl +be*?1E4YHaqSյ'cpv#3p+070ټMXo,-xwA7FQnыLj+MQm39*24 4Z`hEz/z~Q13Q6t rكف)׶eݿ$ 4XmRq=FXP;YztyÅ;+AgMՇq0gD捨 I"Bm@~rY&5Yq<sь^AYib"`e!>gY {`.T\+~0$3d]}ˆ.YLؼ2rG@BHF,] N + s%4%~,@Yuq*=5)D.hҏ)dd[k$d[Tͅ +M1$ 2M΢*Mc H(*+a=۵JӘB뙔 xCGCV491O`6g<eG("J0vf"\Iʑ=vJ+\58u-ϱsyXg7Zb$Ȼ5ɠ*IQ#$i6(%/ANӘʬ$gG^n\r1aWf^3/(DuiRޛ1vcy8t9 &VLUs,ޠ:T#1P[x]z_"{k"bjiAۂ::5 r6&Ġ޿ x Eވ6юdE3k@mo)o0LX`!a!@1F7#b J (M9rnЙx\S՗oQsp ~mЃ M Xb5(z-ڬ[ɰv6GKϘBտ q~Ý(xMw\T%cX MM(CpsYc9M4>7w4,,8%N<)V[.V>]&Iʇ|dݸnR,.mK?o[)N[b*u pRu]_롁?2fj. jIK +endstream +endobj +701 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 700 0 R +/Resources 4 0 R +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +702 0 obj +<< +/Filter /FlateDecode +/Length 1265 +>> +stream +xXK$5 ?@y:Vs@ H@BV4pN\fXDj:U8ϏhV1& nZ>_^/}ʌMyLŢ )9b1M*/?_B8im: =OwV0}Fuyn +X6E ¢X]!DG~}ݜ`i;M˼ڻ>Y@Wce@ͷ/ YܦhhGo~hM6z= o!$׀HE(a&r x =t6&ylM}dڙF>?yHN`@ T{MJ(#2V6eyy*@6+Xr_sC( :7= M. +lӗ޻[[L0d;[K= +Fʎb"#6%7wj 6m$34CH}PfkX^+ 'FS32 XNNwfxb5do9:/;;ABDAI66 G4w2i}:1h(D,Ñ@ٸ9ŜdĞe)K1L[&RS-*SNj6E,u{qmYT9("07ڝdAdڢH0{0 [9H*9EtSk9eoEr$_qjig+6E˞i;_;Г,'m_0&ҚrEn8uv G^պ*˦ +h'͖.0i -2@ +,Vֻ;,$os][e6뻭rm_mYYȀTJWZ2a=N Ԣ95uВCNz罳-i- o,,ElnY}*6:<.vzڕqogd٤0'Nk>FA(rhl]cG'!@|0n]0Xϣ1s۷;crs[v[88|Yi5)?ȇIuo5.4|YA7#hMgZVq%s:Q@ev$`~(U(-΍FK헛1?j.&^6A{n|거?ji&G[U +хTB0W2*,l"ŧ6pAS;>gNtb H̹=s +endstream +endobj +703 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 702 0 R +/Resources 4 0 R +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +704 0 obj +<< +/Filter /FlateDecode +/Length 2028 +>> +stream +xZێ4}"J@BvU>W;dU0hM|_XIʝ,NiFYdPWq +^Xdq]lM>VWIֹ5' Zrev5jj ÃyV"o}XӈSoTB+CVR-?.I8I#Yy8<#ye$]~7Cd8be4C" ^ҵn2w`jY\tO(R̓QoƗ}X̃fcS5+l/y{8(X(;xX!X V9Uq*Zt2z1̚qow?@4|( +Fp=iGY/x;Ma,!+Ξ?qs/< ]*hL;qb_e]otg# E#r}ɣrQڈ~T"z)|L +endstream +endobj +705 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 704 0 R +/Resources 4 0 R +/Annots [ 706 0 R 707 0 R 708 0 R ] +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +706 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 592.727622 39.386457 577.713222 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/ScreenF1TvData.png) +>> +>> +endobj +707 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 592.727622 555.889134 302.194866 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/ScreenF1TvData.png) +>> +>> +endobj +708 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 302.194866 297.637795 287.180466 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/ScreenF1TvData.png) +>> +>> +endobj +709 0 obj +<< +/Filter /FlateDecode +/Length 2693 +>> +stream +x[n+S!  H )\E YrI(pr$>\r8?|3\?hc +ޞ~=%8MC%$g?'uL㢵2kp]gUo?yҺB gYN>2Bo?EږM:F-y<ۗxDZ%=rYLR&*8jU<|~7nc__=zOcek&GskvW?œa1YFϥ/q!fӎYQ|Ο?}l]KUʚ>z&#+JWE+oYK73`.py7p9Hwbp, IXȇ`{imu> 97.vZ&s=HN +dk5Lwq@3.;h]*Tպ?> }ͫH$,Z_ېEPm m#BMFjcm3zvY-e،ϔOzݜ `Gx$[ph&-J|ٍfy $^ IILf\UO7PKi[ߒ^gv`"h!h~6 H;0h]V781si|ڦ<߬90cfxh{k+nt'!l=S _(5v1V (t "eIQ:PgS4 !l@X5XLc[ gMiF(`RL2#%I|h!a8sFxa*Aq暄_$ ˶q<#{h N[eN/<#x@q@ʰzkf J3aĽ^q߄c=: + +iTLVD#fJd*Z!Rxxr̀}/zUs&jA˭YY,;$q +I]ߠ{fqfMo&b1JOYpHkͲE]~cl(H?Y h]#9L&ƺT:#R30YoRm3Icj:]!6%TŽU]|px +CTmH~Leߪu #zETOAwz3/C Ӭ Qq|4Ʌf =eXy5tѿ٣@P(Vb޳j[Cϖ4y+ǟe4hn?ƾ{i#v>9BÃHO6JbT現˳>uy$K M9ĝJ",",",Bz"V!NE)|ľc7ڝZlpwPR e.א?LҖRC8U/F?BSi[/!Onk;dEaEʿ>7RŭϻeL,< +QrNJ +endstream +endobj +710 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 709 0 R +/Resources 4 0 R +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +711 0 obj +<< +/Filter /FlateDecode +/Length 1561 +>> +stream +xXۊ6}F $M L !g{&!%YeV̲xmIS%I!z$G~xMB +B) >4FX0Fӻ?G#>I)Uf)}>8J nmEMlHH g AHs晭Y^Stz=ud٘JLm߬wh a$A2 mV<^LBL{͸3H'[D[um[ʸcJ,ۗpCX})١F*0xC ! +i +.cv@&9'U9;vwz N R>`&hLr:kBar}2>vdV(67W(U7M@gqO֚E[__ءW#Z(5SPJm1z /o`kY%daz^J^CxŶ(+ X +sdmʜuފcyO {A!8M\/Wu .8HWqNƞ j|V59+&ֹ A"E]zy#dRfʱbscދt)GvT xp$Ƙ*e'e\!r,_ |jzt0=P2(R\Cs{k{!>ZD!AQR ST%_RY{[r@VwSk¹"l#?`lRZ?4έ no6SAw@hՁ;3^A68&34r&$͋l Fq@ԙ2Ԩ5G٦+\ryrJ}Jg&^'љ=r4+۷?Z};A&שq/h^ +B¹t(|-@*q݋r0Hw;ϡf҃Szֿ_O&W}fڽS І#*N'U OC׻Jyu #C]vZJllwB?: rBzؽts!V-pWMcZi<>ڡ$]מp(R-nW_C9p&J?)SW.Rn9rN3fk/kB^eB} +endstream +endobj +712 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 711 0 R +/Resources 4 0 R +/Annots [ 713 0 R 714 0 R 715 0 R ] +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +713 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 343.484466 39.386457 328.470066 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/ChromiumLogo.png) +>> +>> +endobj +714 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 343.484466 114.386457 268.484466 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/ChromiumLogo.png) +>> +>> +endobj +715 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 268.484466 297.637795 253.470066 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/ChromiumLogo.png) +>> +>> +endobj +716 0 obj +<< +/Filter /FlateDecode +/Length 1869 +>> +stream +xYۊ7}8'&$!䡧w vRR%Գ6ޥwuSWIL~_ `g|8}Tsֲèee\DÈ͚24j!Gs]mmG"iP#vZftΑf"qL6nc;gl~/wOggC0Bsk>"9{uIfѠ믹jChs!y8ys}6B"=,xM#O_p{Q7N<Ôv&n7w1!ru@]T'h>N> +endobj +718 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 598.358022 39.386457 583.343622 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/FirefoxLogo.png) +>> +>> +endobj +719 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 598.358022 114.386457 521.108022 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/FirefoxLogo.png) +>> +>> +endobj +720 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 521.108022 297.637795 506.093622 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/FirefoxLogo.png) +>> +>> +endobj +721 0 obj +<< +/Filter /FlateDecode +/Length 2999 +>> +stream +xɎ} +u IT ִR&#)RVu9 nO8s>/_Oo'Μ/h?sHgA3gBp3Z)ο|9S|λR2#&ϧOnк810/'XԊy痯OgדO+ L{j\.p*s?rcLr18\'ΛǹVk\g:&{UXa_>WȁC rH̐.#&"Ȅ\b혉Ywq22*SftA`8wwD3:f)Q?ɺ!G2)"tddLP:-Ksx5f|IE2 +͙\M&C-qT8T>ERJ΄7EnGɄNJ*5s#)#:K OdP5|Ės&j` xI#BE"\et'o_sdՊg[jl$+FW&!xmמDB`(!=i YohS$4LzeM-opQc~@Jc|'1"{He3V؏I .PpSMS]qxL J@0jPȁvIFG֫gߣO sۜ1o=A X*iۖ!<+ͨ{Pc^X^1eruɿv6Y"F/&z27 $8S\ms],ӀzሣGR#'3'Xf?J~$̠!_*E%ω-I,zPgBcr]sܪzŁa!١A?p,Tzew{U* ٕٕz#*R,I_z-9{em$4Re6UYo8u] +~>VtNG=), A7z]L, +["x6 [gDINƃ( +pǬ\@]큋z L P7'|-|X +](9 HՁQ` Jk.t*|F3ӔZ+7LP>5njtjD5ZҠ=@ҿg40`*%dZ\ 3JǾjߨR4ܛ 뛒M3/@RZpߔX5:.w*JJD^TVHMA 67+m۷.hjh%Yܦٟ֞ PY*Z\!݈\C& )2䁲r}1(*dh}מSiF1+B#su0{m+G: ݸgfJ)iZ5% CFY%{l&5иn#HpPT!6ͱǝ֛Ue֦ɑ5p=S g$ὦȽ86oƒ4MHyKetq9yru}f #u+7,@-1M&c~(4ǵ(`B{i{ +9 +(4Gz(ʙpy +푛9 +zCA*XA~#"I=>whBqS~>wh1oZ[JzdT`J_ON(")883*]Nna: .Mpdq;;A+~J[?L[?LvrXpB +mbEC>o[?~Sy + +Tp3cl`>x)tӀlJC X)J,<֮>HY]NGCcL.SŌ޺:W=ҭ$a'-D{F*@.}~)(z+UKV R} 7@]Rs޹OvO{6#4kAYuhaz\`XpjU /2 j@v.Xwc|3 +WܙmƼw^&4ŃstC9ti +Л3!7ė(ኌ]{ě ^WףS+at` ґVԴ_2Zf:gœ {~0;xطN )>*`<yྲྀ&zB(_Ju_|oOzƿrr/GD + 9Hs9C=;\A1s +endstream +endobj +722 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 721 0 R +/Resources 4 0 R +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +723 0 obj +<< +/Filter /FlateDecode +/Length 2456 +>> +stream +x[n,}Hl A( ?9BY#8X&UB_Yqoyku˅mV/hH?/i7뵰զ_-wLPM+)˿/}f^9b ~?t7v?{ t4ma0黗 Ƀ#sJ]_~|??~呞[y_Ę h;| g~&uxy~*zIkV37~DAQCtwh:˅Ic;>6{ǂ t@țNu0p[qB{Ik݌c 1Rff*j`tM;L"͵`ZU41(hC8]gNt"|uڀ4ճbOsƵjLDjkl;%iQѩЁbw8Z'iGlKՊ/67S=۞K@FO'pCMTN6@Ɇfڼ?rsRM8^\G 2Q 1 GtLv8ro&5Im7-:[XV`83$"F1@2,́NlG 'P!2f$AcPwBmFq^"X$et$P Y+ vD&/@('n7@MDhͳw4UԵP!➍Vy}\ +PaV!1Isfa@-J*4X'aM#OqNWd!QeA|Ǥˎ{YyW`#eP̦uQ;r@ًS1g59t3^iT2 g(4&;pGL{WA9WfbE%냉'wZ +wSV{ScݷZ36iQFW2ҐnBmPjBKfϜ'0uJ9}(yM€gno}|^0),AsI&Pv, t,IBlby4{RY¤"jjWj^eR&p`0#uR7^KG !X95WZq*(cD̮mA3XA(yri6ǿۗNzyY==s^0c&|Y(Y/FڎXX2dAVtBX9/G>g?B.mqEjJ*)#D"EI-ehgxgYY_ZڴФ5ifS.xXkRM&.a!3fQXCR'(JƦWT!}ucM7b+YI0 9)cNV s +r ^.& zdh>xYޜQ`r Ʀ !")3K[%Cm* xkp[qHx Gv *c}֫-YԤFRجQ -7i(h!&՛`=Pstkc~;b%{hEᘙj6 ХX6 6djV[KPSVYk19*5J0 v@6e=ݠXi.>RN 2Y5)MKp;ոr>% ftؗE%]Ug0:&Zn Sq?#P-3xžGV |i Һ˻p$ݞhM0ѕVTPnړy +YYl%q0[WzJRG6ݾ=K@9}@,ICN7 WoŽՍ/[QhS|I>&cDt[ՕU|sa7W&?|{7?|s7?|{A#:4ބ/xf\_ yʉ--uרpA㽹 bj҆>Nu7Nfm&e`*nƢw}|-W#3Bd.\49bʼ>3aQ> +endobj +725 0 obj +<< +/Filter /FlateDecode +/Length 4076 +>> +stream +x\)᰸ `8  \ \lEI9?dIl6ھZ9 +?9Qϧ'ά/hדz-9{Ŕsقc\Hli%%}9Sz,3L7Np? 'ڦbp'Ȅ"9R?~ۿx0|=_.+pYOMnnߵ—Kl6eR]ji^Y֞6_?ϝ@ʯ7Y mmq 7̡~ƹP +XAJ9[]숱hGT2'rm׈Ủu +jV&"Q׭_`X46௃:~)W"xn5h3)[ƚm/[hGhs +i5U΅'800dUcT5q1[TZH ej&< +' +^А ʼd) ILe ӵ $z`2ͅ(P8"D_^9xMwmj##bFPU1 ޱH J78)[c6\NtfJDd'xƧ +i:29:|n-<bl]t&$FV 2iܜ+wɉQ!wS5JoȤ3,Ӄ(ahv!&O>l-뀦lӐl5IaL:XY=aù!N[PR- w̥ D'4R):aYo!Δ]%uLE$P)%&05CWET->" +Rs`% MQ>D)EE3g=>iBPSމ1L[d^4J%)G¾TV4DY#,^$>arҨלBhP&RU6xR$GzPpR$胄=9ذ lfKs"2ߕ1dN&WiLW5!F2ͣT088I- u~{"'=7rMm?<]W(*Jxu P֏;qy˹05 +4N&3ϤD1 9%!iyT0! aLA;{?q%5Nͷ ;K"˥Sv%DB\3q +KqMJ[h4mWopOdAhTiq|;,Q/P:3ʼYesDZjf:Vbﲈ̀X}G dp2n\s|hI9,έzJ'+ya|pT+ńY$ꮂws%iς (p+0k|ߙKI3E9 f rLJYQKZ-n(sii$gh!ίLF`h'LrblخZf_2AQpnӎX[Oؤ2ۯy\ ء]I*Klp9Zp m[H$7:8KYݘ󛏧'Yf9m`ai ڍhchVBD!d?mln af)-ֺzmo.е+#wi- cJ[^3VN}O#Br&%~3p7zάpu?™Fcaj-~5N4e 㙫Ԯ?O?-%k2)/ ʶDzcL4fi8;Ӻ9IM61j5;7[ <>-w'zQ֫0i,CRSh;Fᗶr%l8QǾm׈B2viG +gԈoou}Jɩ !fu:XֆJ[\&U ёS.⚔UV_6tf&%)4 MWS2 E֌CV(T$ٶ.@3HݶcFz7Di;j)]tJUu8 JmS7-JSuoډ)&5\u)g4L]fL3m/u:Zv^fTNY;9cxTM 39BK>od Y7IݏTu]) 0"$R%/%fz2;*?]Ej +*I ?VS +b8gY}?'~l ֣`p +e2]v2Zh#}ӟ67Vb\[&+CDRzB4#zg(}NYDG&@XG+΄}-)Y:uOǷ,Ϧ G/AyP lbU$.)ӎ*r|JiE˾e-uN$RN׽;0ftZ@usĤ4Ѕ\ϼZ;H NߗԮXW)X^2wNcpdIGFRn N$u ֤s3t +JϤUh۵[ \-MVŴ}'H#(o 5ӲH;V:6!i.ג aՐKsfLJ(!t/>DP]gA{ Z,LrohNcj5 gfU%5 +HዳPdNcu7 `g5,S<2rH@$ZYPe6D +#㭷R;ܦ/:^M88NFsN*4 $4Ns:FQFG`6k +Uq !s=1{AWVZ⅁CF3br +k@;މؿO!1 ߫=i@f@Q35πVy}`@{~~Ie.{mU/J{b+44_K+?Hۢ ܧYVx,`3}}Nʗ!VT`7A*b1[F`T[,HnGy}x +=k{?6_o5 BzQ)- BJAkk\pW!V{#=NlϾ?R/ጱf-cP.:u?PuO–Xh {2)J9uνȋ\EKlÃq> S?LT3 aq Ekyp"%K =V#py| 6O؝ +\r^z=\gzCi7<+}YV# ѐY KzO>m'3&oM^RZl +W.Z*?[x^#û؈?61BHa-<\^!_ ~ePc뤝% +endstream +endobj +726 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 725 0 R +/Resources 4 0 R +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +727 0 obj +<< +/Filter /FlateDecode +/Length 4343 +>> +stream +xɎ#9H 8!$1L2ydZbuOCn|Wrା޿]~p _E9悑^f{ τRRh.~s;BHɌ֛xƟ_~|w_? ` +."#b SDR*ƕR_?}|??pq=Qz:n ÇF0.J{ooј1cy{]YaD,Λ{ oFDߞyy$D-h}L(A-fq1}aje6SilgYՈ5ei&rEnhgɜl;&R&C+}Ħn J 33sU)$,MT6+|3FB-[ 2k[+L0÷5"lu6{mL +ք>2+}裁Ζ SXn0|p[l-ָ&A/͑3¼̎!e+㸸1!f$)x&8G$8$ whDז"ۼHrBg Zlɖ#'ÿ4E"e<ȼ42<pVYgiȞ=H~-%S-GQ؆[GUŶ)lPcIe)M$̞z^4b"=~c`;~DS@L3oKhцy-qWcD&=Â͂5R6>z380{E]LxcD_w<y]L,8Ώ)QŬKW;f1zXǤJkj1\F}B_7GcTݦu0QqZ`a\_׿lVcI!540@l۞Cl;K1/ DabLx!KjO6rFXp!x1c^OS7zY Pu~JT;C&"; ZxI3Et6ZȧRG;*ٹp U|)&ؤPy2˕e;Z)^ >^FV;Gkg*º}|_G52BuX; LZdS4%j= +)dLt. RI&L]ROMq +VsVٓVHE׵%4,hՒqT0{t8H=e[D 02İLXmkۨb\ Os6f 8 ; +P$ Mʩ"D2. /Gk%KͱTXɣ!]G /IԄwKMa vFC\L U5{N}= ܃tO&y'M%ϑ&"zC&"nhRiA|=Mz`'=%ϑ"z/DJmRde2LNr"dOO +ucZ!!1d)FN< +ڒjvpX -exD7S\Y~>>  , ܅jׂ)t?XOmN>vPjZf6km)ԢqT50!dLTɰvYЍA.!vA0.oJ_G#Rm{?Q6t4zI!M~-=qCʯOI ou \GB$0@rW'Nu +HDHv㱷%@Nh Vѩ5APE_PHjܡopPk TL%(X2xAn%qc J&kE-c/㤁AJ\Fv#ʑqsTWyRrIpG@`(y=lg)0okJ7Oi'‰R1 d5.$]іL "NQzs7>Zd'dV-"c6U(5{D\`}Tb1|,6ZHSڻ/ +0J^݆dUVC#G_ +Zes#twZ^Jئl;PlI|վ#z%͵0Ji5R(]S^ "ăR,KKE\N*C5RAP aZ5T'SѮsBU.w&{:Wpy D7@>([5Y.8c68b7H+^ɳ8ޢpTy-2!bE{vc;4\| D.H2od\Hk{]؇Ivvs!4D\+JbԓT󟁋fV +s5{d泼 >c kPo7_Aw%QO[`tz|[m<3+ (gl:N}.~KU{78/?L燤B"_9G>T0 X +endstream +endobj +728 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 727 0 R +/Resources 4 0 R +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +729 0 obj +<< +/Filter /FlateDecode +/Length 4478 +>> +stream +x]K#W0|X;@Ì:~Z}MRZRǪb-ςI?!9_~9zOz~* &0H)FkۧӿN=/,R>!o?z8IGg@]Ї$gAȑv9}g$ǷӿB!,#~B?a|O9ϥτ}1g~|+-aH#}?o6}oL˟_>.]d%yoCtcݱfAvoĠ[Dq^^NJgIXsRHƅˮ>ﶢm< uI rЊ32lcAI靥QXUj5Pт.q(PdD_yY-- E "L-J3Bs48^`euH9lkudhI3VxxFz08!QYw> \4i# } a ؃oQ :`F>[xmEǹ-$OF|$E\FKu]%уM`%GvyF&H 4%^[,Z*GkT:H.luNNq`V "HZ`~ro)\VTEO "9efi_kΖvE$/eزvc)xP1,n4235-٩Z˲ƅ7 0Q> 1]=o70Y16m   =A [-iiq +]S5q$ d +2)MAvp)QHVV\p2^YZ6dhTt&+R4%fp]{RS?ƒ qSOPm\EW 5A3'.fFpZ34|J7,9XԤK834P'ٮ e#G*˘xM%dJ#3BM}齷}9ZT떌Y#Kvs:}:M5ytB2 )e;Jti +ם@@FT ` a7aW + ţRy-OgC!qq:+KK/D⽦29&-Hpg"yg,Fo͛yy49Dd{ \JQm-B,\LAe\{3 ϟ  ;M4tJHGipN:A T;ӊ\t¤NǠ3dSe,EQi8tZ6q +b!t]Inh0Nyq !ZwfPY +0+r`0ϐ (4~[gSb+p@a.sUz7C1P| x LVKVE$vA2fȻn;?B'o5ynAI0zAg u>*A-NWfɏmRo,riI׈\2iEk +,^'#3oAYcC ]WU(k5TV7?>^D5-MtWǚy#o&U"?+W-xZȽUjbi#x'ڞcU*\|v$]ĔeT^A +() Q/b9x_I ;&YK4ՙs&$*^{&&]fENϵB)^gqd:8Tkt5LlșJZJ +~yDToH^++`n2*[=%J\2F/kK22L@-v͍s[X;m{9PȖQPm5AsKi;RJkդ,(xgS>ۑ@Zv1\G5;s/5U8_M`kTG eh$8oEfj?t qyTN t;1\av:VY"lUZumS/9Ciizxn @έ3z}<9a} +˥_ +̉;CRbe1#'lP6Z3%V}|_z;+S|puoN]>,I2@OڜHѺJm5b4 aTM~*ڹ*q +\PnB=7 F A +K һ%3D(t(>bYW +=X(1,K iujfsW1˙-W6s)zP ϦH[,&J^v0[: [.reJeC8 <6W톸Z ;Ic el79#`ʵ曞@84 (4:&^U:.v홃\ +H|~:xM/)ȸ@>.ΝU5_ +bɗ4kVb[5 hMp pTg9ȓnJ`NN.wvrѾMtf=(O\w%`l-}󅷷+#u}ZX;V`|ק.=cfK&؊'F%,E5WSς]PN3 +o*|.Fl-͗1/b^frҔ]Q}B;FeGUܴt>?s^Jvn^-{sR6UUxqJ+Y) >+ ȧd>Z %DOc4]/{gVOm@y͖JܾSf`~[>j';Ayu*_Fc1.I WY`T_}'522New\E(nBǵS,EL]]/f _bר|z@hfV|~g~5͖W"ghvaM7hmTP E[AAz(t>G>gu?޽w/ˍ S0zIK <,s]\1ma<+,xV])].UcEwBTo+eX ;\*ʪVP=^:TKfqPmꭺ+ӽwrSTb2Jre:_%ܭ6߫⼷m9~:wJuHtQw6p8AywaM`QLC;K-R.yطeq+HO +V@/?87ˋ88Bjiϖ[YopN~SF.2QReژez[ELy,Ԟ!RAƭLX?~TLIbBi?OФ\:Ȫs0H 7_[L2A>=:Rr]D2 +endstream +endobj +730 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 729 0 R +/Resources 4 0 R +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +731 0 obj +<< +/Filter /FlateDecode +/Length 2761 +>> +stream +x[[o+~ׯ(Crx -Ц8mQ$po( y9@tLيӇڐ-q7YJ%J`!zgRx+'Ϩ>x&ѫ p@X χ}HK?**` uL?p欄< nlE yNA# +X(H\8>~=|?wtTi?Xy|9AJ"UBLXާqKmyg˼<DZ}ƕ9ry뺮̗e2ǖ+7=пF{̹|&^^-O4|㧞TA0ajຠc509QݛiM!c|a~)L15砦h"@&֢Y".sTLHi,ǯDOd]2D9gKr+Vy^qIśI`axEՠr!-pPZ EOʛV.`]L< +}ѺR6-"/\5RĹݬ# 5nU)&^dq̸B&uSܶI/8rFJe@qKc&͚_sJcGf{vMo/=cA>oڜK\k1KcyzB`Oxdm֮w|jL)+4Yem |P(VP|,ӹlRn7ٮi>O뮹Ε3 +\0^A*A\ڬH@@=Ef[oS 5 +2zɋ4Wed/F&Rٳ`X_Adk뤛 $E,k"h'|FIk6ݖA^]:X7zKKxha-6ES5˜}@yZXLQ.!b?fyAØIDLNm:oVd9Q{0Ȍgv[}[65JuLxP!0M)zlN'*Q$j@[YXM oRƞPZy%E=VڬfR{v;=-^3"EjkO\{*ʺSND% +Gƛ=tI"~eOaC~|%9ު H iޗm,O_dh9u.s ɢ=ꮶˡoifL|\c7uQBg甾QBa Q ^ځ^AZOH/L! +0S|6avjێ]}Ύ]>[c>#0tmΈIM%KI^ +pcޠ4] ,p1%Fje o?NXxYOXHkuH1:0b +<'r5!Bi͒V[]ADaLٶ&ih=$ ]A'DԢ4td'F^nCR0#T$O (ekU(L`vbhn<0C:67k]܌"Hq3*Avq4%%4kzhކ 0`C`@;/OV(2{{;u7h3T]ރ H3H@z}(4G|'X LLp=6 @s, jpဖQ6D3ܴE϶1;#z')7ҍ=@kiFI̴c*-jtۛ!hh(; sk;y=]J`ma +n0DpxBmmFb+ntR{ƽ71$I)RoeG`Dj}Ăh+3ڲɽdM{qfC'2m_/4)J |8> +m_=5}4IPA޽Q8X -V|AI?:\^DK8 Rjݐ:QU|bҏ_ Q*= IG¬+_ E+BD+;Nt!}gL[Ǚ,3&M] +endstream +endobj +732 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 731 0 R +/Resources 4 0 R +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +733 0 obj +<< +/Filter /FlateDecode +/Length 1943 +>> +stream +xZ[#E~ϯ?l/YY90,>{{GLmV&|bÛS|v[f3q->šɫY9ǝ,w3LH(嬕N.w?arYg'΅50Og6AQhsl&}pȈpx3={n6Çë~ˇ̘7z5c룞ל9т[#q4"QFhDnL )pÑnc1c Ay9GOoanZĶGWxtCQxBb@d* U0OsaBeQqȼO׈0FF"p.&מ9gG LMBF{"l3uoؓSQ^_1X(s|!WRhn;QFk&@=(Ȏy`!ׂ ɼ"4 +4 =W1, b" X^&!fb DX}+R"x|" ⟕"MJY:*-l?YYbq=&7#Zr2EqoU ?JHIJ :>c7u|H+q}ƵC=$D(> +m +G Vɕ-r<' g;4CRBWi$k$\6γ$z{ػk̷K>ciPGfIGm +C%:Ѥ"Iߛp6vjlXwyEQqVښ̧1jiƮ@3jVvh(ޕ5ҩ&e۱zg;4+pB$f[ЬջY[%}`R`YxXRza'_s[\:ʿZⳖ4) +4M|pX`$7vL#"1$t,;zI4YW}6ނ$߻!BXy\X4sEEw[KiW@ęDb2&> +endobj +735 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 579.965382 39.386457 564.950982 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/MainZoneExample.png) +>> +>> +endobj +736 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 579.965382 555.889134 374.334001 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/MainZoneExample.png) +>> +>> +endobj +737 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 374.334001 297.637795 359.319601 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/MainZoneExample.png) +>> +>> +endobj +738 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 92.063281 39.386457 77.048881 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/DriverZoneExample.png) +>> +>> +endobj +739 0 obj +<< +/Filter /FlateDecode +/Length 4151 +>> +stream +x]_o$ /PE=m\҇6@HZ\Riͮ9#y9÷Q(GҊ?kׇ/9_cGsHgOA3gBpRh;~ϻywBJfD;)W}xBc#+{f]"*8s5\=SnKzx9s}97O $@=˟uk٠d%‡ H5^A{s>w0w8\ILL%i6M܏j!{$?ZǤJb1孔S)m@c_L` L +\ .ūt&g\ 7?w4i=Wqۈ_gJ$e z€ILăn4Yp]7[&w]x7>& 0`Z TtIҙaVll Hۏ_=;-6i;[ +,}]8?WtfJ2}_# =2ՠXrL`Z҇naM`s' |G0d! 滿m3`lG9wq" rcqNFO-Bn2_0gBk*NJwuS5a0cBIu3mᆻi@ i2X )(,+8cNxkRhu֊{qku S5wuJ NB1`I. o5,^Vze/KAoߖ-ޭ)lNuǢt <鲚9.-x2">U'N愎 HЖ<裵*%)._|͌4D_Ce_SbnJŅ79y3Y1]'^/t_%rwy7r~PąG:6kY `mmf'1KɪމqvpM\ +b9r> a,MeWDFO2tsWGuԄ2d߾EX4i]2ńT Bˋ&RVf ɦK_G刢s+̙l6j~أN!-^K2WS%]p\Jm,z4{k' kдqx15 c#mr4zנJÂN7T.c1UVVzqtl:f'7~ۻM:u:]9\;Pq\s^w/kBu:--dAc!}ʖQخ בJtOXN#|lۨ }&JnljTŪ{ln.e(Fh1D5N й(V -o++BհUꏵ P. Oá<9 Ldyf!8ǧ= ˀ18yz)c ,Ҍ3Q:#4z(@‡:ZEtonϘWW](+S2{03#cɣIدQX95$u/^'[:5sޭΜ 8f!JyD7ZΎt1Ӻv6>\MyVMmi=]lqD:x"=U^_VhvdF.cTY,}E3U(Kӧ(NcS 6 4Rd6=`VdsdǬ"\j˓YP|%5$usW1b?XPZׄĄ2[s`Z<%Ab0YiY4YJLV湈'_E%Tgټι}fG^)vE-9sAd1HRq䥶+&CwjKhZ= + n"Kʚ m<5m|4_3}VO'&4 cPѷA.=-ǫbP]+hC{^ R7uuI vPٖ}F]ҔBE4[vrb3W \njݝYI_3.N5~NqFBy=o0[unG2@4ojU,ۨ,Զ +j_EA.IE 4Z0-Mkvb +ѩh+#Cܔ-2s[߬ 'T蛰+0T;H;Z$1 +drfo%FFi|@X3\1a3,Pi1/\6sdKn x`f_ZPo^"230?穧"3fK0c8JܖB])"Ku]]+Z6LYzFhȆ+ΣM`']A#k%4ܵ^=Hkڢ_}Ȕ1~wfՕ]}Ǽ\@?W(jӜ9=5J_0;- +6 =} "e}.dEu9&:B5s@N9}ImZ LHi KHPb_֢$U~dgB37&[C{dx7KG=Ķ%Bèlk~jۃgWC3BcqNDl^F`I"K^{4Q[AGfPoIb{m~D{qJg6z'J֩m >5|;u6iKZ|#̮st\0DDF%i_u3{5 $|:CTj۝ވHoBSsHDzr}bOέ||uZRnh!(zM+U6`tPa:ZGCY𘰦:M K@8ŷΘ[`Ran&_i: 0^DzE_9JaǑ=+ewmd@8JמP X%[(B֍ SeToN.(9h׆} Z0Ԟ +󌁧գ{,CA aaS (73 +bh|o/jJ&UWunYA! z/أ +yB/QzczP42w֯%rG&_:վPU/Q}s5zYi0'z 4D?~7?}#IEV3wP,k;T. Ut]`?WSϿrbV7}Gt/Q`9\t!ZovPMAf@羮 :u<O +endstream +endobj +740 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 739 0 R +/Resources 4 0 R +/Annots [ 741 0 R 742 0 R ] +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +741 0 obj +<< +/Type /Annot +/Subtype /Link /Rect [ 39.386457 771.023622 555.889134 763.306094 ] /BS << /W 0 @@ -9123,7 +9804,7 @@ endobj >> >> endobj -677 0 obj +742 0 obj << /Type /Annot /Subtype /Link @@ -9138,47 +9819,43 @@ endobj >> >> endobj -678 0 obj +743 0 obj << /Filter /FlateDecode -/Length 3433 +/Length 3441 >> stream -x]$9_OQ/;|H@X ?WH]_"<yUGճRMd:#>Y3CDgT)xw}wU@M?B䔋t&*c4X:hBg^N9딯ɪul B|œoO.F9Tjx(m4ut` #JDw~雳J?jmO*z33g[fy] wHOTG.0GeQ+tpOݯd]dK}!# ݍ޾GGش+痮{m?mc+}NAhgU3\{G(π<7517P6Ԙ;[֥<3:VR@*m VƊӬ˅ 8Ֆlsy,b5Dޖ_[^F0^.ODm eKVN',ZN,ƌ涸j kܪ1Zkϙ;#(xx4 -1`_pysq>p‡l,ƀWh$\[twu.0ӹk=c2&&ƴ){f% qN6ӊa! R - h -1P<2ł=uFPEIX`>ܼQ\@6n\^׾wh`QQ&WNbg+@]l:Mbzl͊\N,bL*$L$t`s-0xJnɪ2k -: EQأʵ)vNGQ"!dqi{zGʓHM5ϣPP!V'w; -{7K -d cZL>k:=&6Rz*Ɓe3A}Bz:K,}x/imegsuG=FsLwn؉HCh\&uEnۼsSUG`qT *,jf4AdA% -X-)MzA#0`9&t!_@(0\6]l+$Z~ϽF,X [ca߻x@ץgBz(A䁤teyKӞd#T!gªֻ؋3\tد& jkPP'z3d%ť)#8$uξ<Ya94z`8n[GىB6JojG~9nHL3BxUn!rAcEܸuE/+RyE'Bal -RJ=z"Ð͵_Bj!y (9K>(ZYα%c)9-~(̇02gѓ̡!΁lz=mB?nNY +x]$9_OQ/a;|H@X ?WH]_"<yUGճRMUg:#>Ypс1ηNߟ +_i1#?٠BB99bAk:ku8r_|}HVC gcBs 8ߞ>\@9Tjx(m4u :A0‘wQ% o Zi|>zG}|B>Gtƚk5v"6<Y>g tkҮ=, E^#ކBB/Xh-\z\mƀn ,ȃӈyldCc6gc۫i$\[twu.0ӹk=c2&&ƴ)GU5jbB_R)oN>~œ(RʇLT#[ՈE`gE ͺSx.//4-EϿwa5M6yΑ`qHx7sk;2H,3UbEim^~֪H>8Чz8kB +HG蔠e;}c̚F^-xkil.<ޮUWh UIEpsIV±*-$m >8N.de?<%4QXk{{GCs^Qu8:z;mn=D~of{n<{TzV|}^> KA+d;pN6ӊa! ROLh +1xdyNp%0}W90ұ%}y` (ry]ޥFCLL2r6kẈT0&Cؚp +X` YUIRR&YZ`.:ݒUe"6ju@Gʵ)vNGQ"!dqy8F:4-汊n9P?bǟRDb$N붟}:;F7 Fi6D')=GKL!\ yb T^?5lOtNY#Gl2BX\M}Lj$Š%n1Z *]Kt~rkBqPt"5ҳٷ# 8,FÑu2>u/y.d*:v1tCeūr   .ƭ+z^+:m.M!QjXB/Z4)oTH-$#ʦ$tҾYα%c)9-~(̇02gѓ̡!A@6i6֙nNY M8G{%o3G"J?c]DEp:RV -\oc)YM؀|QQfډ#qf€Qf6z5δ^ed?,TGz@yΨ,MayhzѨDH>T&4VK2B2`+]PMej㘔]`'t"浩 {c%}Q@=v#!ײz/GEne$+Sw2CκpOA nl"%cwrmmPb@ -?\6dm%WQr=r^ƥc(\BK\Jsњ.Y/b΀ۣp#HH8kՀ~t3 L6I9L[/ahyn&^û̏,-NSS`r5S-$ 0TR9 U@;oa!=#UG1±T]b;\oReϚށ۳+>B~@$IU묌d,Gޕ`Fqh(97C .avmUۅdjvj>qЏg"ṫ̀QY7ʿfC=φdS/;M Pr{dLdܺ!_FK -2zHIlM={)Rs*~GAt''ȗ6tyU{zUi%eߥ"uyV;ayvTyVfBZҳZg)6*2;WYV((dR ll5&mZ1H-Dc(GM}N"\͛D o~ -6 ogvnG)"|Qκ6: h&p#K!=`q xHV -<2AQ*p衏0?#Qdܶ]7oo++u; /T~Ǧ˗f, Cy' 76fIxiއ)/UЇSnɓ2>-*Yɑ\"6eba?WI |~Y:) "Ɗ -'煨WolmM'Cnc7f&:q7snv~ g(B]lʿ{T[к*[c|)Ch4`\ 3owKA 6<v*klf/ ) +\oc0)YM؀|QQfډ‘w^ Xa@~(eio3|IؙKL߀*`%;/nty3*d+tX^4=<,_O}%Ւ̮#l;Jj$l2O\qL.^IԆ=VBZ۾^([C=v#!ײz/GEne$+Sw2C2 uẟHE2軹B 9ɵavmcmC6VΦ4io\*8ҟ%|ϥ|<*L- ظ[= +8#Gq͐|ߏ3lYɴ1=>{x`6ىujJC}dva*VJ5޹ +H9x^-L b_uS.Keم(S[~| YY;p{vER؇XO\y(uԁdzTHVhл,5mJ;z+*C2LPlZFOb9hk͊XŤb +޶h"Ko"*9s^eoPOD>mǚ:ݪD*N#C! iG􁡂-Z*!0"t]PO2K5CG,UۧT6Uۅ:.;jQRN'<L;3fCBUlhgِn3 ?n +XX&HR59J=rS=Q0Bg$ +L\muȻ;R Nnwl|ii1=9R *Rl3bLL0g*?飰o/R'79#y!*7 6.g[NH{ ǿ1M=;&G ǜș7o6L=fؼ9}s>Dki4 :3`.{}ROޅd廥L 6<v*kl0||y*b endstream endobj -679 0 obj +744 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 678 0 R +/Contents 743 0 R /Resources 4 0 R -/Annots [ 680 0 R 681 0 R 682 0 R 683 0 R 684 0 R 685 0 R 686 0 R ] +/Annots [ 745 0 R 746 0 R 747 0 R 748 0 R 749 0 R 750 0 R 751 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -680 0 obj +745 0 obj << /Type /Annot /Subtype /Link @@ -9193,7 +9870,7 @@ endobj >> >> endobj -681 0 obj +746 0 obj << /Type /Annot /Subtype /Link @@ -9208,7 +9885,7 @@ endobj >> >> endobj -682 0 obj +747 0 obj << /Type /Annot /Subtype /Link @@ -9223,7 +9900,7 @@ endobj >> >> endobj -683 0 obj +748 0 obj << /Type /Annot /Subtype /Link @@ -9238,7 +9915,7 @@ endobj >> >> endobj -684 0 obj +749 0 obj << /Type /Annot /Subtype /Link @@ -9253,7 +9930,7 @@ endobj >> >> endobj -685 0 obj +750 0 obj << /Type /Annot /Subtype /Link @@ -9268,7 +9945,7 @@ endobj >> >> endobj -686 0 obj +751 0 obj << /Type /Annot /Subtype /Link @@ -9283,36 +9960,37 @@ endobj >> >> endobj -687 0 obj +752 0 obj << /Filter /FlateDecode -/Length 2763 +/Length 2764 >> stream -x\ !^-8iQ4P]'yCJG[~n(ݙ %K'yS4Ey]Kt;ogSxxՇVdiQ&y&"j8"${̗Ot`&dDz!Jo -xX>jt|>k:;ah  =*;(0N[h4Ƀ4)RpιAű8n?,Оu(\h줇,./}jw5a~>:GݫS{.y&J,(coQ0b9M20ΝY~n\*^CLtiHcP6h2k~ǿ۽J۬QDOLpL|6)@z|M೹vxu4%Ym2oT{S -h|ؤd@~:q#&5lqs ΣMD'5[f\V=.đm}'`Cb.]3i2wȍ s5h\5#8.XnƄ';9V0Qq #&&6֜^ik\sp\ba\8nKn*N(ʙz-GXCKAp L΂k_ -ezg_"&+U[y>P+n 騐R@qDʅklD4O#G¡EqꯙWyæNuϩ&fĈ#R<}iH}81U=o.8yp]Du]KR!|eKrZ?<ZdkYa M% ,F/Wt9 -nrfA*T9b B+ YΞdt-F MEFѷLq5..Uf BqҢ+_K":%>(غalR!e]pZY ȓq hc2T$__=q_i"<~V>63Yd -.\S+8]*`pG+*Bt˃clgDZ9*@K˷_4x761V`LHX*E8*[2ԽA$Q"&䬱]](;\R|"z+i}4Mm?JĖ1*}$$89FnhPl14)h"qX@u$-HelEDCԍL^$H 9LvtЬ\%ۼS  6 |R[ԉ:l;= ->~q#fej/v]@`rEc@ C>6dZ&s# Yn}=H>1(5+\ixI&)]'9@S6Rrx;- JH вA|7l@̆kfP),72er`FEe<[jN/`ZP`LHlȗJڵ-1X uV]Ŷ6P)v2hIWPe}Oqwx2MQ*W=M轿'1QZ(Uumd{Eb&P3sD/;"yo2/$^lQE!ݓvPwZ+-u[+5KΞln M@/N|/*ܿ+Ѐ( bn,&"E]u' D -w*1mkRJ 6)T-)[fQ1^*vĆڳ]*_ +x\+9 ._Q$B?d :KvuSI!f4}[:m~f_tFŘw;j)3fo?ǝ *$)iLTh4hBgwkɪuao B|<:gw!B%Q)l<.r%:_G_ӝ.)`:F+s{#/y״&-Ȩcӑ1l9ɪ0ΕYҠ2~.\2^k69J;ˮoF+oƆPDOLpLX|_Ū k D-7O/&O)W4&x]0HyCe47YQgIփR2 I&7e!tQt7NH'($qlۍM$>M90Pt7!FڧT +)(ˍ2:QQi)ϖ  $) :SHۧ`}S!/ʭ+UXT*8kNUte U֏T_ (׫~?(-8}%m iXŌǻ B݀(V6 JrOQ*B/ Q4UG@;BƼX&Kץb= J 6)TsBܮXK*" ]Ws=SQ9j)k[j4!nX_Xa;>ϤrUJ>4Xږ:MHPTXjY&@ђ~y)uf:MmuT|ו}VcP^ d4I+dw&ۭV`[&+S'jBE_:(Ro+=o +ۇ{urA(D|t~&0 ʗq0k8ss>zg)ↁ9M{fU/ӄK{K +̆ endstream endobj -688 0 obj +753 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 687 0 R +/Contents 752 0 R /Resources 4 0 R -/Annots [ 689 0 R 690 0 R ] +/Annots [ 754 0 R 755 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -689 0 obj +754 0 obj << /Type /Annot /Subtype /Link @@ -9327,7 +10005,7 @@ endobj >> >> endobj -690 0 obj +755 0 obj << /Type /Annot /Subtype /Link @@ -9342,120 +10020,114 @@ endobj >> >> endobj -691 0 obj +756 0 obj << /Filter /FlateDecode /Length 2322 >> stream -x]Wf, ,`6I &#'X՚f׻~b:d=3V+>QDרjBk]j>rpA8ϲŋ?,A:'^BiZ -@SO\~KAb&WSt~|uO!^^ L==~z.Ta3.L|^Ы\?}GP[H*n9rkSsJUmPJLTw\ﮔԔJ޽F[6+C)M2<-5i9kDl ,؈`^-:0vz> Xj$>˱U4v7!,KrN0,^pI2Qxt#.߈ZJ߃GȻ k$Uh̐bOpK/%A}Su&96$I -CGݩkYQt]@%21c -f˯PA cU'ؾ'$K@n F]h1ІspJ\VgO·0r -2?_fc ?6U& -<"9E]cM7=ߦPXctPL1qk =kg'₮y1ЮPXCݛXj50X~xK҄2k &i3flfy9٤@臧6+Y<+k6C]ڌҝ,h}JD%K BE]2І[ Vꢰ4O2PW$db+{Q, GV4Fft -J[5O]tepm U?л/Cx0^w ꚷ&i2 l e?Q 05臧&D[ųi2ԥť;v6&h-(y}{35 J^5>mpm%/ -3>ݑ5q ? BYhÏhda͜ψB"XNuS62~>Ca:ά/Cx8.D]g]7}7MHK{5 Sġ7WZZ7Px2ܷ>%%TQ, Vᶕ(>3װW'_5>m ,>C!xTzM "Q<h//3VYWeP(^ -kc45o}ugp -~Nְ!\0N3O}&9kG3ԥ/cζ<vp'J^p^LX?f!ו>3E6J^8ܶUUNۑ5z*鄋$Q, GV4FfjN #Q<h//3֓>;YPb p$ꚷ>3 l eHW(O\]1N3ЏRэ{v0\Q*\unZ^7Vlx(iך0\&9zZ=4tM;iL*80ju ڳ0jͬ!٣5%0vM:u1@K].k4.o?@I革ödO=HjŴHZЅ0Z6) -jHԭ$:Qk^5(,|m\MUD]8<Ų'"fÏhXDaݿ<('a /2V,,F2.SQl.ϢaQ۴& -}8t{Bxi SoIF.L숃ٵNTo BC=Ep֡Qt7Y𺉄K4-G1a6^E=6?|0wfC#ߏ yvӤ2-ZeDnn>=>,7Do>G{&++OuX]{ϋ#4t;>8nNs2f e&U:;cDzxr^?헄|D,^ԻqzmIQKFgJش_o|=\*P\a%p=]>I㕺z0.ǵ țDQ3W~ +x]M?EX$`@b`L> 'X)#ͮwĪt4zgZW|dգDQ# +ֺr}pԟeW,E/YtNR~j(9p9/2/=Q\R +L6[u<~#x鿗jf}.Ta .L|^Ы\?kP[H*n9rk{н9[ %6(Jh%&*ׇ/|WJAjJ%^>\ly"zV2eɃ1J%YZs5 ]zo vMOu3m5XpuPjGm{(GB%׌{geN}4`no> ]JUM`X6pJ4x|nGԤ] Jx> >GT4Fpb#f!x,9 +6cQ,FV-4~T +jHp,r9x}>áS&QDEJD}k|#ji+yo!F&̮;VM0CZ=- NImpsڐ$)TE5:vͪgE=ӍvQ]nhƌ*-B 7eW`}C,Yyu͢@ńm+qQXEyT ߖCP8N\)t|.E6ȊHVVc(/xuS6~CaUCI2P(^ĭ-RJ @nz nCa =hcD,o#J`=r,!Kmz ui0)̷tٖA.e{8 ܷ.)i+s++uQ, Vᶕ(\b^5.m d(/j|-ꚧ.m286]'\IhJyC+|ˠyk3Ю6PXCIqf6fڬhf xm uih3ҮSKw:R=c* 8o/]V2zRu͢@n.n[ºk2e(HWYthÏhda2A+j󕶨k t +-~w;^B"na45oMudp4 +~ ]UA|ak2OM#gUmdKyK7vlL4Mж[?QgkA󕼨k}p+ypJ^V]g|:4#+k.D]3ІYp +š9EP͇p$ꚧ>me46}uY_B"noqj'\@n n>CaY-k'臧>CoBonF.}Mdm8%/o/}VKKr]30Yhím+yQXu}g(ajO󕿨k}#+n#YAX8A7}B" Dy3Ц_^Fog(ˀMP%>i4k &3FaCNagLr֎-gK_g֝myO྽~B+}f5>mpm%/ +">#+kث-T IYhÏhda?C!x Fy3Ц_^Fog(>;EPb p$ꚷ>3 l eHW(O\]1N3ЏRэ{v0\Q*\unZ^7Vlx(iך0\&9zZ=4tM;iL*80ju ڳ0jͬ!٣5%0vM:u1@K].k4.o?@I革ödO=HjŴHZЅ0Z6) +jHԭ$:Qk^5(,|m\MUD]8<Ų'"fÏhXDa=>(a /2V,,F2.SQl.ϢaQ۴& +}:t{Bxi SoIF.L숃ٵNTo BC=Eԗp֡Qt7Y𺉄K4-G1a6^E?\lq;dž<;iRb-Xhb u`7k7oy^?6/jSa#j?_{ϫ#4t;>8nN2f e&U:;cDzxr^?헄|D,^ԻqzmIQKFJ[Ypr5@sQʹ2wN'W6w"n' +dU_? endstream endobj -692 0 obj +757 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 691 0 R +/Contents 756 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -693 0 obj +758 0 obj << /Filter /FlateDecode -/Length 2301 +/Length 2300 >> stream -x]Mo$ϯ?`EX$`!@b`lx}ru?LK -Y%HiFuW|$n:GK+ZRS Q?.x%H$K(QgbÜ?sə(k:?~;}}O!z|zrȟBŠ &u1?/ϟC"z$i4GZzqܝ9[ %1(Jh%&*O_?~RR_іGu{݀V$rWD%S<K+P)H0$U!rG ҄z{IR:-0-|GL4>8*z" >Ί'R4F*\Ba %J:{=І@sF4 -v7niii2'LKM'Z_EZ&!޹BWHM0#]M /ˁW}AS]i6; G~)XB^Ɨu>հY~,}غV 9u@,ƮA-e9`.:MJ^ś1J^8ݶ )]'x yE4^Bx30Pt -Қ9RphEW<oNFof(- %ܱL{}_o -ۛqݼ6oҲG+:sFMocP`of%]dTgEmf(ʹαN*`,BN7VbH+qQh/Sn[*si!(a+]ŏ1Ċ(V̹2@[en~ N͏ʶQ&JI)tzePh~ &1\\Ɣ~ 80@m~ 4|\n~/`Lcp'2^nuݱ4 , V鶕('XK@:^Ý3,!fe` ?65s %Юũ-n N͗nVxkl֒ˠм͛M`f(jЛ> ofи7n7PHÛѶ1^x+ xs$OT౽|Y:&Mz. -n.n[zdN a !Qh+nXAZ3Q -NmʍBg`LyN͟xagT;M.1n n?CiY+u?qx-$3kuwo@?QgMj]zfg` NEiQ&ϟtCB30Xt -zg('vmV)/!n2~?Cim'3?3pSZYp$ -۟q6ҲiEw{'ӟʡTuBz͟w~ RZV{fx*<Ă,ɖ+>n:GW+ZRS Q.x?)KI깗PZB-Ŕ9.9G9 1J3QJt_~:}H!noCBV\߀0QЫ~kTGH*f9rkp[sJUcPJLT?ΔԔJ8F=w(HDMIRƧim(0ZB# n^e:9:ɢ&KTUtH9)X;è?JO.^˜HK8Q;Ji|riTD +B"})Oh"iU8e(LKt."z >^b rinG?#ݴ4RӦeT]Oh뛛p[O 4MCs$ׯD`F_oRr8} w$S"d/C!i7J}a\XursC]>X]KZ&xs\txjjًnˣB'-+Qhp+t_llj 5^B40Pt +*> %B-J^Oc486TR>vHK&b񬫝 Bj`\77ͫ`«XB&>j OSRs+ͫxe;v]kjcpa.n +n˛}Ro땼(47cpm%/Ji]NRthhff` ?6 +5 %PЊ$^Eyz30ߜPZݟ'JK82}ChPh &y3}?Zљ5jz{37+"Z=+j7C! o]&dr+Tt\ m//VL,}fb` ?鶕(}|*kz^EYOhbi+C)x 0X+kQh~ Jl5ʄC8 W#[\p1 l~ eWc&i%1%qx15!PQIe,4땺(4/cpm.Jxҗt:A .DY|Ohbi2@Z.Xڂ<}͗2VJ[|G}JIZR[pQ$ +ۓq<6OҲ(9{w]8@LXBﴬnƓ/ݨ^弌|ijcp'J^p^Lj =Ji`Yím+yQZu;7;tVt .DYOhbiψRph%TnH?cpm ; %qnu(4ougpJZ$k'ӟ5n!qﴴnƟg˸~ܶ?kR%땼(4?cpm%/Jn2 5z/Hş1Ċ(V.л?C)8 kcJy(4OtJl+yşTzʂ %Qh &3^$p꺆qŸ8> endobj -695 0 obj +760 0 obj << /Filter /FlateDecode -/Length 2415 +/Length 2424 >> stream -x[ݏ _)JbbkQa&{Reю38n cGDG>쎖?q/3)ep<}>|9XCh֘/@2z Rr)% C0!X:_Ҟr0d-%::AcR痟>;c?pfB!%DxKWQiV Y/oMц>)HU0 -s0(w =]aw, 1A÷||;k5 }+UQ zq|14ȓm켵gi]M|I[D!UwG&9|wO66et`cˆ6 r4Bn׺OnZ٧VU\wҨeT`0⦪f&UIv3S7s@7Jh3c}lra;FP\0Y+JjʁgN+9 ?4/B;CB+yu>O7a;{W,+48ڜfZ ⱍt]K4WOkpb=7?9*=tJ q$Ͱk73{Ä̗zhcy<7 9ohS*ڰjr6=r=;;KnEg065Ahy;_]حtXIx7_y-"WaSҳ,eL_w+A -6FӠO'#Cf{r(s:Z( &prmHGTZ~%J>! xĎݭ0, oU>jNudHh(PpQbj%8^ެ_QD֏'7}3E%d 3g$Aǿ2o9noNn9cg9,TW$g.ɔsJjְڞիagA.!, @^xjCzz 4DN$,*sghWlʳӱ6U#o:-ޣH!6jqَ<`tAK7q3%xj1ˮ {I%l"LTGΧD֩W-KʾsR薂 dK XYtߩ%͖Bz}j)J{Ø G%U..ഞۂ~A8׌A^縏G\IM*ٖIotwB8X0-3֒.6[=^rl މtA\dZ{! eOKxSگ^qYUٴ%$NmhڴB$ rZKBk Bup$]eܱ+gh ND5MCbr m/m)i1>>iI6]Qbxo @B㣟}Лr -ͽЍh\9<>iI7hvrKn)"=>jI_vyKnLd&o鴤Ǚ<6^=ֹ^,&AG:-q{:ʚZthmK MDH%vŚŭΗF`StN N l;[sd-ݽҦ(w"$AN}b'mSnʙ[O܉X;nR$uMvӡ J:{mG&'rC0ZqRbA}; |? KR_a]\S?Y83~|30ܶxxqa Dc29&3e41fF -CTޭ/ =q40pg̥ɘ_[kɥ7 n_h!) +x[ݏ# _UApXhmӢȃw]Kf4]zg1% +惁XaT73bk5y"0$?__ ?e,26X \VE 3(P5Z_|< 8 C_-¿HoN}ceiǑ'7|kV/gq]M|qiV`AHޡ`jMM!_}MB>µn<='a R7-FWݨ4zY5̤QSS3IInBp?k}:Y73;vV<>l>2\Mk_^$`3tSRf5{;h()9^|31c5.#ǜFa!p4Bh}éM'>S?4X)yu>_O7a;yW,+48fZ ec麂C .i(Ǡuz]o~rT9w)1zH0eNHan>g& ]C3_ֆaQ,Ъ"N}4hêCz;z'wv܊2Yhmjr h CHw<;[鰒 䃿,1ZDjlEcҳ,eLo~ Uf yHCiP' + {r(s<Z(R?y C"$r*-{t߈R@Os0b}睇UyVa5p֘ѯ3"WFz슮ʼJH $pF 뒒dFf EȜ%+ý{.,Kwg -s84_״-9eizDAՓ`yuus^r(;MHŜ="1GPys Jykm +Eq0̚{]|b‰E>],Ֆe#\0CE"-`~siwV;GY?*%5`sΜ%zuo˼画۫O; 挝!f TV"P]œD&S)Ykx; W΂\$CX"!DAM}ݪU %6\Fcm7 8}r ̣JѮؔgc mJHGDuZ>GBl9-Kqy肖fFgJ4qb]=^M8JDVz[fZ쇘Xr9{D>#s$jz~1/uQhY;eHŋse+1fZ5t{mvgoGc>̥-3K #nXe;|A~jzB`YfS7NκxKY )$qX=Tq>s|ZKlLdjxղQ>'(,n)5ZlN$9=[LZl!t+k-EIsqH`Js`[ϔ81 +T+IQ%6R-6ݽF &P"fvZŦb=t +]_a5;U.b_֗KWKw+ 9=>iIq}p=q*in.[e=]%iNMBTܖMK{+ M(%]D,bNKo+d^g.7nJ~_b{DdY^iq9$&OK B9>_"Vo#hU+h6n}+LLiIه<* +݈%㣞tz vh"Z[)r#tAø;0Z[hm,S2G:-q,WOvn%INKz\>\[B:D=>iI@,xfqa+XWm%邶gYKw+9*<ʝ+I}c}I[[hiorVӪ/w$-֎,3D2&S^xP̊}g%ӣG9!8lD1Šy |? OR_a\S?Y83~|30ܶasvl|W0z1_β?#hc2C÷>[0 h`ϘK1<7׊/K?ooS/+" endstream endobj -696 0 obj +761 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 695 0 R +/Contents 760 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -697 0 obj +762 0 obj << /Filter /FlateDecode -/Length 845 +/Length 850 >> stream -xVm0_?`.LX -Sm۬(t=3d赜@~<>8~:i9џ$롳N@qPC+mVZ]x}~tλESԀ>wJwʡ1$ą(vP!'"^9@oﻫ7<~!31ڌfh} @͌EDvĴ$6ik Z 6mL56M8^B5^/,cR6dXcL,OYf AY.wmcb3grC(KlO.q\Ft wA#3#}čSc!| -k͓KaQEX\y -JTHF{إcS b_GNnLsiSW>ڡ(_}7ϓggd̑ w./9e+ORWA"=! 4H -ų 2m.5)+v^bo 4 Nv4e `0׼l'10.>RL^ŬX O̅᧫AU8g;ǧ1"uy}nե[n(ICгŮ >$&_g4&^v&s%lT"ScgEy/qZQ1M9>Ez NQAV([MGqƖX~i,-!GTˀ/R9d|f"";`CbZtMߴ6mlahe +-6fئV;L/Fzon)cR6=Ȳ,Ƙw?ߜN CYTg8ߵ (Ϝe$ },=..B(>l~q58F,. ^cRяox7N9% %O.FQu`j#˟bes)(Q!^KcS bPNn09eyoCE껝0y<;#4G&;ގn;п87qmL]}\\˔+bG8g?8'5)9Fq^[}ia֦ZKX6lFYX$Z_7OK2{r&ЦT lOjȒ<\jimr="-iCDCȴBَEP6 [ĵrHDe (J6rȇ4ꅀ"A,+ǁ>3l7kp~py̋L|0>TSz/Uw endstream endobj -698 0 obj +763 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 697 0 R +/Contents 762 0 R /Resources 4 0 R -/Annots [ 699 0 R 700 0 R 701 0 R 702 0 R ] +/Annots [ 764 0 R 765 0 R 766 0 R 767 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -699 0 obj +764 0 obj << /Type /Annot /Subtype /Link @@ -9470,7 +10142,7 @@ endobj >> >> endobj -700 0 obj +765 0 obj << /Type /Annot /Subtype /Link @@ -9485,7 +10157,7 @@ endobj >> >> endobj -701 0 obj +766 0 obj << /Type /Annot /Subtype /Link @@ -9500,7 +10172,7 @@ endobj >> >> endobj -702 0 obj +767 0 obj << /Type /Annot /Subtype /Link @@ -9515,36 +10187,34 @@ endobj >> >> endobj -703 0 obj +768 0 obj << /Filter /FlateDecode -/Length 1604 +/Length 1631 >> stream -xY͎6 )Ւ0CaS@уl=lݾ?PJdJ2d2E#?R2.@y^._N_O K#G~=)'\0%hG^ TtQ)aRoN:]P8D)`#poOV|ttZuiRPF_'Ť6.1&<OɀFPpvlo!\C0J{wFd z%BW -o@`6 -ᗟ~ Fmet?L$8Hd! -6i4t Rt__=6̍VJ BdQY9!O'J -/W>T Ika 25,xdN+|kiL/(&w_=@ 9 -)ݐt;8DLIA.A ,wfՍ?әcAn%,:m4W׫ueo ̓XN~rpyAqX;gN~I~ fz4p^[PRa>Y~{VW&Ft*g #R= -$Im SVz:yzZSSG/5qxps`6hqEkU2Gtn} lS{UC 8ZI4ΠTaASFV}f~cs-S(rHojRRN9$`CS@ m'.7k 5!ɌZ -kGWFΰ]m',jqir}LQg-;jVyU\7)ǪTAeN|8:Mvp/m>M΁К#fT,u*0r&҃dUo^z2r_F`'wMmnH#<v8y7gkulҢ:^*q='v(:rڴ*q=7FЉnzoNc ƃ#4,Ώus*LW蒁3`з2w}F.5ޟ(RpZ_MғY$)J- Kgvk-k 3ZR=Pfu+/Mshy 4`q*4H/ ţII1. $0LҰ^PBtOtjf BiOhe/SxVpʸ'tܢm -D NmF]bXQsҥHJ>ۤ[Y}:6G@]Oɣ^zVEQ@ٗZ/G=y8vQPv$p{_n ͊yuR)xkyenTemPAh\˦&E 6zzHڔ%)u@`7":qr.?I*'|,i4{VŠ"XmnP[WM YIwPR*-*GM%F9_W.I-D*L=@d/Ɍ +xY͎7 )PH{H{ E =8!-?P꟒%]t g4Hi?8s[0G_2뵰f)qBE)VRݾ}:z^2 `8iaû3>sDiaR36N*aR <ͷكtă*S}Ҡ8H8t2W/k-e{wT:5߿f]q sWqFg姟ƃ"z=' +{MCOp ID<ã Rx_=Rzh&ϵFIM2Y{xGȓ⸬> +6(sd1ql|ͧ1(t^0f y BǓ.Ye`> +ȉ2(D@+~\ ~p<γyg!H &2qpd}  `VN KÍS0DJGԧ"s}'$PW"z<jA/q0 ΖRLbNe>8J]@"TF8)%n4B;$bsa::RY>Nh%8PZ~#갑&hQ^(3g85PcECéҤiZ[쭢5{ +wٜ9sRbf\/bUb dɒ%7F1v&4 +bߧưD/\U1U׌L6g;M>BgzvqtҕtK?m뻊9cv.OFrQ>!Y +Uĸ RmvB.G㈩3HZ UQE鹶h8\xHŧVr]K`K'97rYi2 #4@H|P$(QmQ:RQY49ҽBEaܵt¡[wP-kս^qdg=eϤN ^b ssB$w/,r7 q3ʛR|, HRwQ+iW=z:SӋ'w[G8o. asE+J1o TKP%ZڣkDg? N'! endstream endobj -704 0 obj +769 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 703 0 R +/Contents 768 0 R /Resources 4 0 R -/Annots [ 705 0 R 706 0 R ] +/Annots [ 770 0 R 771 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -705 0 obj +770 0 obj << /Type /Annot /Subtype /Link @@ -9559,7 +10229,7 @@ endobj >> >> endobj -706 0 obj +771 0 obj << /Type /Annot /Subtype /Link @@ -9574,36 +10244,37 @@ endobj >> >> endobj -707 0 obj +772 0 obj << /Filter /FlateDecode -/Length 1815 +/Length 1826 >> stream -xZKo7W(|(^ -hiI?!CJrؐ-y7 Z0zY?8sOZ|Hחr#]f{gBpRh[~_"y2|=su\_`KWC.e9ߨGB -`_ۈq ? k5h@ݏ[M'E3ҡk m{]g!Hf>F;9˼_~݋DIzǵe,҂!]Ր0H첰AOu̦l ]С۪4~Nm+ڬB+Jh 4gW#륑E=萗4kع<*@8CHLS:CJDP,`I*Aⶮ Ǹa成3 Doy3\e$i|qm. bje;|r5a$.6;I' ^ܓ-v B&AR֗Mȝs yٯy65fCB'ʕ:j>ߕn+1cӂdڽ57 PM k{3چ%2VRϯ\hA}˘j(/"2НO [9IN$/0 jdXrK31b{/Y}GOe>DU - -1Iqs(LP j*q(L)(lBXq@;^t݇G UI;,0j|+iYU=*D1rI4, 艴X]zfGZF5.w^Z7'vS! ؞(;+I6@jtnBܦ$ʹ6<;=?&c^Fh)~Dqdqj>|-d&#l-DWGhkFN88.o"kJ;0Dgt>+#e:rbzCO釟I8@iilWG}x%I -zCeOHio>JGr֔)&z0v|:7jjZ1W ݸET -Z|#IyM]٥oہHɂk -7A\z1"~n5m( hݷjt8[4C&uZba;R0Ul*T1 tp t$&ś~B-̕t>'P %-|ʟ*!\->;Gn$,f3Q{V\'XA܈(oSluv 8g8XeUjx;'07bt/5`6PHsk5<Xx?2O'6Qw ZK͍f}zKn11b'>Mѝ`tC=QWzGt cg`锨 ZfDH,T?""^3t%޺jj4pyC#oZGTԜx?{7{BR78yݏo1w?TB>r<~لD@{~;c9buܞJ?~_,8 SS̫R. a< k%bvW9*!Y= ua`ì ->~(2HȆ9LM/RQOnIgmL(XYaˍQ +xZK6W{^lE6)CC)RIv]["og? `gy|r?iE!/' F:{ig'<KbF+Nq 9Νwg!dFM\!ӛE0~ +mGCZEO#={ϟOo~_|<Eyz˹Z8+Rr!uPo#!yM /mĸ4pvzl㺴}ok muntChgzyk5ҵOюk#K/{2I"[V$3ZȳO1-Yi. @*oR$d6]AtuB((^|DV +*lUny%4 +s3l+ɑ"tKMrdP  PP$T )mQ!K%R(d$GSKc zMq[׆d\Ӈ ^KkRNsDH͙7<2LbθLLv2cNd|uY՝AJQEA;z! 1&N@9<3 !J|v5pmr8&ylZ 9|eCC4Uz2& Kdx_т u1gPQ^xEdӥ͡;JrNH^F1\f jdhRkf%bZ.Y}GOe>oǬDiN +Q*s+)RP 9_$XD۔RL\&UtE})hp +sƷX#DD{9(/l;OraIpO8Jӣ8C]<2%sﴟc0%1\O7 +8DٹI2;Us[L"91-K:f^ >G`ٟEۀNG}h@4U6]nH]sH[kѕfZ$^񽌣Jr(f~ +ҝQL5{WJu >xB]A.LKctD:,1NR$/˕yQHɆ^\ZcxA3ܰ i_1LvQ*HZ::֙] z,DI7#u,W }+G)5+CpvNT1pGE:fH6A*av*܌sX7ʙ $mm@o{!Bw1l=uܞJ?̊<@,?`QB))U\)= < k%bvW9*!Y8D0+߂9 *Qdꑐ s^$ӓ71`fg2 endstream endobj -708 0 obj +773 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 707 0 R +/Contents 772 0 R /Resources 4 0 R -/Annots [ 709 0 R ] +/Annots [ 774 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -709 0 obj +774 0 obj << /Type /Annot /Subtype /Link @@ -9618,29 +10289,28 @@ endobj >> >> endobj -710 0 obj +775 0 obj << /Filter /FlateDecode -/Length 621 +/Length 622 >> stream -xT͎1 SI;R @Bfڝ@t.@W?Ћx&ЧY\i]CdυgWO"(1GU#{y> ?%z`a',YZp7k5ђj{\%">sKʥ(Zפ`c+n|t!wߦi<8yC($' S27?腬V xUy}0,x, A,O™4}wXцJat_~ " TEZtԕt*eOԨ˗&]u?O65F1[F#{2*{8tҥvr8v${c'YKy#cdm{40WUF*-#ƨq|X8↫a]c s\2ܔt5Jwݨ3ofvK0t;UѢWaw;loS<pJGf,: 't{X|lz 1FQE?’eL30X6H8\XN -N p~JR3yvn:`n`6 +xT͎0 )d$i4.H@B]hpw U~Gz9 i)B+'#B*S=}>N?%z`a',YZt3kZ5QOT]f%RH[Rlɱ3x7>0So2ߗuC($@0eu~6НV xUyy2,x, A,O™ٝ4Ç|uXцJi>t_v" TEzf Jsӕt*$5jҢWf(f˃lvd>K''1C{]Z. 3hM`/8cd-p1@.Kmۣtmn:0LVl85F%dӏ#ǚww\ ]wػ)?2kYg SK`:6 E "lOm<l322XtHO:(w؞*bu5 :DY%)1.g`Ё6+EW )^AiuN6Py9:/{K!;NgYgFa0 endstream endobj -711 0 obj +776 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 710 0 R +/Contents 775 0 R /Resources 4 0 R -/Annots [ 712 0 R 713 0 R ] +/Annots [ 777 0 R 778 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -712 0 obj +777 0 obj << /Type /Annot /Subtype /Link @@ -9655,7 +10325,7 @@ endobj >> >> endobj -713 0 obj +778 0 obj << /Type /Annot /Subtype /Link @@ -9670,28 +10340,29 @@ endobj >> >> endobj -714 0 obj +779 0 obj << /Filter /FlateDecode -/Length 923 +/Length 924 >> stream -xVɎ6+T6!prprr2r;HInu<݃*= -3Ɯ)}h~4ɯY"43 sDDH§S{P4SET {1Bxo7@P۹l 76HKD93s8~ןxTs#;_# =-ߜ6!2JX'9G6d/bxgCt׽e|'OH d iÛr/EEcQ$7Z`8pTTsʋfI UD`|VڈIa]i%k/L?IsZրn1ֿJ{brd u| عktOsG>i>MSN~SfCn:,r/d+)Ț`q5t]R_}H7>rj:0<7]L$wSJBzY6=0 w (q*NL:3"̧0p5=˼++Iue%e4y ~*0Y@t];&j&❠l:Opi2ꤣ`2+2@FRx[wd ǔk F;W&`4i^9\oz X*OL< 5?# y,[lTPJ~JAH +xK6p^$H{H{YE =a=$EtHIܬ&z 9$Kf9Sch>vdъ$P8rΘK0K(L>߻]moXR,Z`wC»;Z%f]яDZ"B1}/ۀTr?7B{Aߧ_AH,kQ <G4AmKm2kƲ{nwV>'^N24r?-s/d,@D!Io hIمsU^\4kWMʰ$H<<+$ڈ9gWBs0vNM\c'$|YgspOsG>i>MSN~QfC ܋bl%Y,.7%Jiv"jE/3n|&j:0<7]vE?=4h<0j0lzpeW=e!|8G?RR|*NGQ)ۯ+ 2KTT2e^: +L-f@w)]δɠڷx#-Ӡ/f:IL0i /)M;* wsh%i^W֛ X#'u;Ӆ?ZY<Ґ"&/d+FmQ~f 쩶Y4<bi=& u>3HfXDW"c[о MP]2WFE/ ,GI|>rT6׾Tr]Z-(K^ڶgi\sfk0[٧DT endstream endobj -715 0 obj +780 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 714 0 R +/Contents 779 0 R /Resources 4 0 R -/Annots [ 716 0 R 717 0 R 718 0 R 719 0 R 720 0 R 721 0 R 722 0 R 723 0 R 724 0 R 725 0 R 726 0 R 727 0 R 728 0 R 729 0 R 730 0 R ] +/Annots [ 781 0 R 782 0 R 783 0 R 784 0 R 785 0 R 786 0 R 787 0 R 788 0 R 789 0 R 790 0 R 791 0 R 792 0 R 793 0 R 794 0 R 795 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -716 0 obj +781 0 obj << /Type /Annot /Subtype /Link @@ -9706,7 +10377,7 @@ endobj >> >> endobj -717 0 obj +782 0 obj << /Type /Annot /Subtype /Link @@ -9721,7 +10392,7 @@ endobj >> >> endobj -718 0 obj +783 0 obj << /Type /Annot /Subtype /Link @@ -9736,7 +10407,7 @@ endobj >> >> endobj -719 0 obj +784 0 obj << /Type /Annot /Subtype /Link @@ -9751,7 +10422,7 @@ endobj >> >> endobj -720 0 obj +785 0 obj << /Type /Annot /Subtype /Link @@ -9766,7 +10437,7 @@ endobj >> >> endobj -721 0 obj +786 0 obj << /Type /Annot /Subtype /Link @@ -9781,7 +10452,7 @@ endobj >> >> endobj -722 0 obj +787 0 obj << /Type /Annot /Subtype /Link @@ -9796,7 +10467,7 @@ endobj >> >> endobj -723 0 obj +788 0 obj << /Type /Annot /Subtype /Link @@ -9811,7 +10482,7 @@ endobj >> >> endobj -724 0 obj +789 0 obj << /Type /Annot /Subtype /Link @@ -9826,7 +10497,7 @@ endobj >> >> endobj -725 0 obj +790 0 obj << /Type /Annot /Subtype /Link @@ -9841,7 +10512,7 @@ endobj >> >> endobj -726 0 obj +791 0 obj << /Type /Annot /Subtype /Link @@ -9856,7 +10527,7 @@ endobj >> >> endobj -727 0 obj +792 0 obj << /Type /Annot /Subtype /Link @@ -9871,7 +10542,7 @@ endobj >> >> endobj -728 0 obj +793 0 obj << /Type /Annot /Subtype /Link @@ -9886,7 +10557,7 @@ endobj >> >> endobj -729 0 obj +794 0 obj << /Type /Annot /Subtype /Link @@ -9901,7 +10572,7 @@ endobj >> >> endobj -730 0 obj +795 0 obj << /Type /Annot /Subtype /Link @@ -9916,34 +10587,44 @@ endobj >> >> endobj -731 0 obj +796 0 obj << /Filter /FlateDecode -/Length 2623 +/Length 2632 >> stream -x[ێ#}W%w` FN` l#CKy ;dC6ْ],V:U3_S9QϧNYWz%vYk^1plcBER2Nߟ~9rn= ,L oOsӧU0~{h73!C߼-h&7w-)u~۟,|K\7Η Sç~2n֋oy>3a@nN߾aumf /sؤ%C/&iuÅG?/V(|P7 }_j8פ*0,,g\+#NtP;% O;!AK5k?^ -T3Y)hV2;*NeY<-m4 vҶ+'AҤ2_u\#HE9H㠼">Eu -1WL('%!@ZH@* `MU*:FY-4#"qx:&y&F cY6=n5~(C'Z\,mG((M.ע},}IAum H"R j6]^U= x `l2*|)!5U^wlraVp%/ ԛ4С/PsE"[,An],]F%ɐX\֦=zw֪$sFIYE 1ͭ]cRlVrɣ4Ld%(rnf9WQ$06Favײ.R;x0Aq͂0"@T4 D'9f% 3|'~҉Am?h u(ʼn)C͍c&Ru?K7hЖ9Lza r6Hښ.z6Ի.(=*TH KxV꺎"wA(jt͞tC&3YA`4d[yTتW޸ VཞL]Ў l1H^^e PGʛ*HSx $JD8_PW;qMuZ&ǫ@o8kqnHYxۨB#5q+ࢣ$# g([0]($AZ-uL`84IxѐMu3$K -IP su}< 3%³C L|yQCҙ΀Х@O׮U.\J2J{dH0b$t`a^1|a`yE+ v&k!vjcD\ϣ䍝aVh\}FI)#,&s0&yQ`Tה~8KY&3%T" FkĨ/ڹ<*fWOz&ߨnRl˕;rBxn -:PIƹ0lȂ۪m|wH>aG倎'.=•LKLeQU|v@- JVd ]KnTxÚg@1PLL3Q䨂nsnL17yQG݀" hh1JYv4X! -1Ʋ"ZiP }5lZQhj꠹AL0Ȃ,ք)(f\K[!+=Q0Ҹ#V4%j=> `VY =[/H !]݊|w;4JaCqy♆|]ˑ'= b%^ ! { EWs.VjxE7^(`U!M8tSJN̸VPpyG8UCo0T(1yxi9en]MYlTgm>M47U.=q)7U7i ݜ>h-YUDŽJC֠_knP#,vTYw:4A< rˤ‡j3euX=28d""SXXgi$B  - 5uL#W(]LE0U7" Ŧ`.(\HGbis$^r%-ni'w5" +x[n$}0laq8 FQȃm $EiaڑBTWs[/]8DG9vYk^1pjcBER2._~rn +,L oOk˧U0~-LOE߻ o^/b4D;町|Ͽ?|wq%.u%#| {|kMؗ0^wo_:ζKXƅAA9flR~J{I!:£q +曱Zݝۺ_zTzÜҫq:rA"` wJ^vCv{~4;FlP|7!?&ITdQ*'O`} m[x]<&#/ゞTTHdHXϋ}>+rH0s'HN!r ,(JII")HeAs TU"8cEB :/ǻױ53J@)JͲ1DA{5 HSLX*Hipy%?^a(A[] YaRFl][Ceu)E5e*=!xW06 'yJ(pMFa]z&xeR. +nM񗁐zW&& 7KEU`< U.bJ060 Adem4ggJI2g+)k>(;Y Y +{sBⶋ&2jcpٹ_v>l)+X9uAx|&E>07f+(ȍWa (ZEcb*J(=  +0'AqXvrLT4NN{"K@GO$WyfFQBIL֥/ +tjr5m & SuOK47V-s=iVTzd7,g*giCɻlC@cQ(u-Ţ ?daMƊ$ a+o &K &+ЛM, ›0;x'W.T`ci«L: $$`|dD yqRF;>y`M[&{/oX?`+qc\r,< nT!@@ +0sTd @[B![") ΀ `XXd3U~}@M{j yXHT +}d?u6"~R9B8^*OHLgFY!#L|1?X[Vy.t Jg:k ]CdΕ `HVetdiN1|a`9EC v<1 vrsˊzg /øV2?bD^8% IP#;I`嵬0]_!Bx}HY&3苚H h3\sY}TbwT]7)y:C}W$-`>о!Yh+`D^6,6 h :V܏DG? [V3-1 vF-]ۓ%ƃ<ࠤ{vI +Ysw Ȱuπ?cgG.[rKu o(, i0ڻ@cşj@;d4 +I[V  +,k#dƢa: | (vGE,7j=; QV9&x:V?><g=JTza;BS?|&b &w7f}ӑ:o2,[i\P;]~j@po]B8z4C7o9[@TvP}oiu L]B4zV;o75#M=7Oxdgqu2W3MN +n}ђZD'_&T4S_NyW'+XX`ٖI9\>VMsoC ̏D $ǎL#(֝qTIÆw:4A<̏rˤ‡3euX=26d"–BVУXgh$B  + 5uL#W(ULE0UO` +{.6Cu…#F8GB-wU1CVzRHf#2k<. endstream endobj -732 0 obj +797 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 731 0 R +/Contents 796 0 R /Resources 4 0 R -/Annots [ 733 0 R 734 0 R 735 0 R ] +/Annots [ 798 0 R 799 0 R 800 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -733 0 obj +798 0 obj << /Type /Annot /Subtype /Link @@ -9958,7 +10639,7 @@ endobj >> >> endobj -734 0 obj +799 0 obj << /Type /Annot /Subtype /Link @@ -9973,7 +10654,7 @@ endobj >> >> endobj -735 0 obj +800 0 obj << /Type /Annot /Subtype /Link @@ -9988,30 +10669,30 @@ endobj >> >> endobj -736 0 obj +801 0 obj << /Filter /FlateDecode -/Length 957 +/Length 962 >> stream -xVݮ4 Sȉ'Nչ@͑ %͜9+ZeI1̚o -!9}>MZ|ӟǧɒ 9 ę (m,OZZi|~zVh0F9>,s?PzFu~W EF+VB^&xlE:`B@/_ϐ3ٔ6NkFôg![Vy>F+ீBq V4O~`IQtQaH6U4>]O!ͧhiMFcK0p77*[`6Zl4@s;e "Ax6}}!g+u֌N;vߦz6ww;l=u:6sKlŔn*c\<˞?TRvbaKsi\?û'åhhReX]S^R㳶K8nKa:`ٚcR$5fO2 GِXcVVѾ̾v7{8U3$oFF$}hkhbǀ |tR۞@q.ʟ؛X:lːLe{{9^UfaH endstream endobj -737 0 obj +802 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 736 0 R +/Contents 801 0 R /Resources 4 0 R -/Annots [ 738 0 R 739 0 R 740 0 R 741 0 R 742 0 R 743 0 R 744 0 R ] +/Annots [ 803 0 R 804 0 R 805 0 R 806 0 R 807 0 R 808 0 R 809 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -738 0 obj +803 0 obj << /Type /Annot /Subtype /Link @@ -10026,7 +10707,7 @@ endobj >> >> endobj -739 0 obj +804 0 obj << /Type /Annot /Subtype /Link @@ -10041,7 +10722,7 @@ endobj >> >> endobj -740 0 obj +805 0 obj << /Type /Annot /Subtype /Link @@ -10056,7 +10737,7 @@ endobj >> >> endobj -741 0 obj +806 0 obj << /Type /Annot /Subtype /Link @@ -10071,7 +10752,7 @@ endobj >> >> endobj -742 0 obj +807 0 obj << /Type /Annot /Subtype /Link @@ -10086,7 +10767,7 @@ endobj >> >> endobj -743 0 obj +808 0 obj << /Type /Annot /Subtype /Link @@ -10101,7 +10782,7 @@ endobj >> >> endobj -744 0 obj +809 0 obj << /Type /Annot /Subtype /Link @@ -10116,32 +10797,29 @@ endobj >> >> endobj -745 0 obj +810 0 obj << /Filter /FlateDecode -/Length 571 +/Length 569 >> stream -x͎1 yvlDZT¥RHCgڮ8N&]vbۿ1Uc)u8 Ubi4I#łb0h? oCݯFQh@L) -Z.RW`napc8ԥH(AiwK~]ۮ>7o -a -ɔwt«hD#qԗnIc T -sغo߽xq?d%a)GծĿ\Zxڡ/RǎsUOwc U{%n~@%,\簹=HQl2Y;VriKuA]RuyBv }j/,ff(Q?p dnvz Tj^)^RPGaFe=cG#SZ)525r|Ei3tIG?ip*F WZctpDZo p .)RHh^&[K/jω dNd/QЛ^fy !/`Sc>ZViDgۃ.ͮ +kx@ql>skչ|–GtV4 endstream endobj -746 0 obj +811 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 745 0 R +/Contents 810 0 R /Resources 4 0 R -/Annots [ 747 0 R 748 0 R 749 0 R 750 0 R 751 0 R 752 0 R ] +/Annots [ 812 0 R 813 0 R 814 0 R 815 0 R 816 0 R 817 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -747 0 obj +812 0 obj << /Type /Annot /Subtype /Link @@ -10156,7 +10834,7 @@ endobj >> >> endobj -748 0 obj +813 0 obj << /Type /Annot /Subtype /Link @@ -10171,7 +10849,7 @@ endobj >> >> endobj -749 0 obj +814 0 obj << /Type /Annot /Subtype /Link @@ -10186,7 +10864,7 @@ endobj >> >> endobj -750 0 obj +815 0 obj << /Type /Annot /Subtype /Link @@ -10201,7 +10879,7 @@ endobj >> >> endobj -751 0 obj +816 0 obj << /Type /Annot /Subtype /Link @@ -10216,7 +10894,7 @@ endobj >> >> endobj -752 0 obj +817 0 obj << /Type /Annot /Subtype /Link @@ -10231,38 +10909,36 @@ endobj >> >> endobj -753 0 obj +818 0 obj << /Filter /FlateDecode -/Length 1705 +/Length 1725 >> stream -xYێD}W{KH @ТAxKTv&f꺞:?9Q39KޟekaS΁xRJNn_OKf9NB0 8Vޝӊ[[M%w/oQQFKam4=x_.7ϫΗ_*U^<}o(y"j~EwJo\z5)CR3?~Dz *Bx^Ң4'q5FC8YR<^w-9ƻ5nZKu>s>, Sgy;f2^r)r"oǍ ж$ER7g51Jfd6>=YN{iuI. :zm=c^^.Y\o N{F躼'a0KH`Peʴ8 d d=T'E8.-)Vyš*ew}}]VE%U$Buk/8h -A (Φi K{wlY+TZ - >h[HPh蕫Α% dM -#X x뫳lOJS9&y>G,|YE9``H3H-yDQPIhuE*S^tkr7ϑ5hճm8%'#3Rm"i߿|y8=57s -z|E/WPܡ4qwJʼkpT'T 3SbxrN}SB*)ҹ -723w\c89y -$AdJ~w*(3A@yLu +`PX,@m^294hҞ}"R'I-Q2i( 3F;b)(@|_8ɠ$TI#J;‡tydBiХxأZz;'j֓|Z˙1NTJć O~tb{_> SR2ҴmY'0zYp&K֧ۄۤ6_z[YՋ|FLp79 Jn .Mx` -=̒^/Mi#֪r-t7h_ -S5[.w@2t3[0~#Hұ}:>@zIP&}coFA ּ8q -ƒϩ3*:g;Vr>fII7 hv8h|mbqjw#d 5)ʚ>Sҡr6hCѯ Iq0-S"H1B) -n41s=,ap F& -6KM)*•`ur\ m?l{xJm jhG@U%}o*i}GcΕC=W9~ \ow@rˤVsF;(LWb*?KKJhZI$<7NF/Xj0>qYaϡ]1(9*Rr[Z2jX}sZ +xYێD}WE" - +Zqf{uD8vt]NrDV2b3ZN߇%FQ #/x?!)n$2&,ar' J +Avx7NCfbsVlϟfF + ťK[E᝖a(FC|?6l=p_J.;ϫΗ]8U,٫y߀(Z" 6P9eibNN!V +O~b=?p NNu +XI SHG4NF7 + 5~ؠc[rۤcJgJK>U7AUN+"㥷, L8/uT`h-|0 t-(v;?{ ǭN4%tuZ&ƓcG왷7i#FYԜkݐ7!w(wZq +l{m8"GA4qG#aLjF_{]5VۡTcÄ4sI{a{LY3EFň(o\h#`FNF!FWo2ˠ=cehA5(٫e@8E#Bih߿>21J(uaOOPYΌNj|E-W`0Aal{_p ]Ҽ+pd3] sxObuS s-2^Feu^;1tœCCӴ]뽨Jo?)ZݐfuV@6{43A3@ endstream endobj -754 0 obj +819 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 753 0 R +/Contents 818 0 R /Resources 4 0 R -/Annots [ 755 0 R 756 0 R 757 0 R 758 0 R 759 0 R ] +/Annots [ 820 0 R 821 0 R 822 0 R 823 0 R 824 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -755 0 obj +820 0 obj << /Type /Annot /Subtype /Link @@ -10277,7 +10953,7 @@ endobj >> >> endobj -756 0 obj +821 0 obj << /Type /Annot /Subtype /Link @@ -10292,7 +10968,7 @@ endobj >> >> endobj -757 0 obj +822 0 obj << /Type /Annot /Subtype /Link @@ -10307,7 +10983,7 @@ endobj >> >> endobj -758 0 obj +823 0 obj << /Type /Annot /Subtype /Link @@ -10322,7 +10998,7 @@ endobj >> >> endobj -759 0 obj +824 0 obj << /Type /Annot /Subtype /Link @@ -10337,37 +11013,37 @@ endobj >> >> endobj -760 0 obj +825 0 obj << /Filter /FlateDecode -/Length 1726 +/Length 1742 >> stream -xYK6W5$C`(ze+!-CctmxWy734 O)Jz͗}>_4 - V{a@@*M7h-qrvcDRBp0w#9|2Uy/25R Z" -H 7fxtyϿ"?Uy/ppDJ eW6] C}XxvTbO'[x;.4q0׻GN!9(Ql09ycfvl׃J`-bwIiڔvJp#PU~v" FHh p&x%p @@E2^E%؅ -@8UTUSVXT -' =9(YWׅ{=vfc`Y1*]A;N&C>!ؖ漫*B]>~?ҵAYZ*v}"ZIn:;s0dh=@eD#"L|*'PI\QMZ?IDT~T::EQpt0K'ܖ'|sԷ Lr0MOs'rkww|3Sے -!^;3(7  k oqDiEU/̉u>iOgrr}01А̀TɎNp +!824 % -Mmh Ȕ\dxNW+j9a& H7!E q\ itVdA6Q\qAp.XtW(*F8_r.N$QxƳ  +xYn6)e8r(,dZ-v@I(J٤Xofh$ :3L/_.RJ+6Q` +0ރRiFkߗ(%z6!~< LVȐHA$h(8+"H/ޘןD~*<_xR(nX8zZ{>vgf.iqmڛ@7J+.t,2>Ӳ7[i}Yk>f2٫<5z-:!6Z*eB+V}sx"/Һŋau +V7Ιi`La{GiɎ<1%'LYA5ƠV,|"ȍglJFd.e27d*dtAf;!ml25qYr*=玄5sWlxPO Gk$fi؍uiO'7 0Fc +XS[7;|Xj\ Spg*6"bF 0jx TI$NxgFj*t(gmnhm~'խjNx+u02A J&!x.hW Y 1upD@ +A2=2U&%y|ljcz.&]s$(i"i"`{Z +$+lԘ,uԬƪI(Y,þt9 sOFҏr˝ VnF܃J`-bwIiڔvJp#PU~v" FHh p&JPgWT x *(*^mܸ`֮B'ʴ nKKa bPSGmN]SlՁ 0 @A0ު(^J< +v}8(4*( Mm9ۜC]`bG3s`4[cm`nzܭT>opw6BTՑyF +cG2gVxoF4"B7 4[zeޜ]tA;)QoAD-  N;h"@_9SfVYToѝu5v ;V:<xquw(7ٷBg^Q(J3JtgPndF'vGu;GAۣkr@u'xQC5wg3#96 [:4$3b.ec1ӯbJ̴?qBBS[6e<' Y9fӫ@V: [G(՟4T.v(F =D/AF zaLJji+ӬU.¹`_.p6">=.vQTTurTp0/ endstream endobj -761 0 obj +826 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 760 0 R +/Contents 825 0 R /Resources 4 0 R -/Annots [ 762 0 R 763 0 R 764 0 R 765 0 R 766 0 R 767 0 R 768 0 R 769 0 R 770 0 R 771 0 R 772 0 R 773 0 R ] +/Annots [ 827 0 R 828 0 R 829 0 R 830 0 R 831 0 R 832 0 R 833 0 R 834 0 R 835 0 R 836 0 R 837 0 R 838 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -762 0 obj +827 0 obj << /Type /Annot /Subtype /Link @@ -10382,7 +11058,7 @@ endobj >> >> endobj -763 0 obj +828 0 obj << /Type /Annot /Subtype /Link @@ -10397,7 +11073,7 @@ endobj >> >> endobj -764 0 obj +829 0 obj << /Type /Annot /Subtype /Link @@ -10412,7 +11088,7 @@ endobj >> >> endobj -765 0 obj +830 0 obj << /Type /Annot /Subtype /Link @@ -10427,7 +11103,7 @@ endobj >> >> endobj -766 0 obj +831 0 obj << /Type /Annot /Subtype /Link @@ -10442,7 +11118,7 @@ endobj >> >> endobj -767 0 obj +832 0 obj << /Type /Annot /Subtype /Link @@ -10457,7 +11133,7 @@ endobj >> >> endobj -768 0 obj +833 0 obj << /Type /Annot /Subtype /Link @@ -10472,7 +11148,7 @@ endobj >> >> endobj -769 0 obj +834 0 obj << /Type /Annot /Subtype /Link @@ -10487,7 +11163,7 @@ endobj >> >> endobj -770 0 obj +835 0 obj << /Type /Annot /Subtype /Link @@ -10502,7 +11178,7 @@ endobj >> >> endobj -771 0 obj +836 0 obj << /Type /Annot /Subtype /Link @@ -10517,7 +11193,7 @@ endobj >> >> endobj -772 0 obj +837 0 obj << /Type /Annot /Subtype /Link @@ -10532,7 +11208,7 @@ endobj >> >> endobj -773 0 obj +838 0 obj << /Type /Annot /Subtype /Link @@ -10547,40 +11223,43 @@ endobj >> >> endobj -774 0 obj +839 0 obj << /Filter /FlateDecode -/Length 2358 +/Length 2355 >> stream -x[[,5~_1#(+*CϬsI:T=xuwzIU}uG>?^ }pV/>8syCpP`Ǡ^pt3!TRh;~CλR2#&E0~|ZUE\A"0J$g^z?}W|sǟQ5t-Rd|=޿zO-kʺiԿv횶e?U {7UƼZo IT5IoʈjgE5XoX~(x})UwH!Y 8:6x2xrײ`!KppxbX=b7`X;ȘuM~70g{FYsm:́D8D[cނd%. P&\x賔BLE iwp)DObG]:G4H4\q^Q3Tr@뺼<3x/01u3(rG,5$zͺر67`8If@EDANRv,q -B giS&5 - mnY?;GI;iMqL:iPA$އ"e}KQ8%TEzF2#F3>uKVp5B(uH?S{Ml4:\m4RF !7 3$(Pi5Ǒq~z1CzИ֔kQ!7}.5m!PF#"1JfEw텿 {\g~.CoׇBC(„5CRty΄i!cW q½DW@B\8ZV)qApQgތ\N0:{&pa ;b`kUwyxht?<4036/"V{Ls~dgowObSvHDJ&ǃQ:b\#{#2."+#pWrcNH@#(wcwLh &әڣjĤD#OD69.D%d~w mHk) -HPVFݱGge|26tZ1 ˬEL9TM6сPB}-bq\fnנs\8:ۜO=]@ݺO-TzY]5][Ԥoj60)$ΤfXkf:KsZu, i* o?Q (\PʘgG=}: k4A sX SaK$BsTewbݖPm86mGTђP˹QMW'1's(QE/[v0y -p^۶ۗ{jeJ-۬犷 1Id1ykj? řr,Gå'-`?D~Lu&_T~l@A 7w%Nvh`+ķ+#b0G7_A DyxM6k3O\#k'J}(z$ -ͻj-%2i /xuhg6u!O޼Op>rqǔs";kUOK0#lɵ)UR)/]x]=x`e3f ì ->OI8#@D8BwSj k ׅ ?N +x[n$5}EFiZТ @ OKn];3($qUuN]G?^ }pV/9㿼?~?c.1h>L.U3Z)\AQʐpy<PVK>>~<QdRzsi9>^PzM/rޗ{ӷ)nY5X,u}^Ӯ[SSi{lY.m>sԡ]Ӷ˽`kY[@r64`GKm$!2"YN`VCfm3 ^BJUpL!Y 8:6xt Y@3f`@j?aX;șM7@߲EFu#x!F'D8TLa=+FJ\0LaPO-7Fcqi0h=zg"MB/]}4`8q(*M\0-bbbG`yѱF'`GCs|N#g](Fʘ-v/WB!r;Cq{1zR0ڼ"9C$'; U9&hqP=S&s;HJnnTu67^1`=G*TBHtLPQb[<(i(Ұmё3mr$GSC,ޡ5mpqIt(">QmEaJUh]nXc Z)ԭART@?S%j92Hq1J i4Xx\ iyF1wF:4`- ĦQh tLB.f#ƢcD5wwр {g.~fp>pHU)QrTN 5x B0+He +HuI5`*|z,`N( +9%r' f +Ẍ́ vb>qƮ71L,'An7CwT)Q̮QV>p82x<\߾~(E,.~8C`5|4gMa&S 7e5F0ÕMY!a\x +}DH(8`a!\xDS8T Mr& ]D~lڕ\w_k\DXF['`"HÈw>0d +: +أiT=IFl;z\ +TI&D0 yjJ o<@m@&٘ PUꇬi&kz^oKaS)ze@X5u.?*\jdQFcc`”h[Ēw1z +refJG %J#$+e7ڬ y.H)(zdG!4Ba0ޝOf&np ^}aWw_?}V\ (qޚꜤOv5 )லdl +5 75YrTM6сd׍! 6s+>azgb)?k`5I\Oo{iK<񟫂IK2 +$\){ +7 +ogaVG$ "T򻌔nmL\Cwa6ȾU + endstream endobj -775 0 obj +840 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 774 0 R +/Contents 839 0 R /Resources 4 0 R -/Annots [ 776 0 R ] +/Annots [ 841 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -776 0 obj +841 0 obj << /Type /Annot /Subtype /Link @@ -10595,35 +11274,35 @@ endobj >> >> endobj -777 0 obj +842 0 obj << /Filter /FlateDecode -/Length 1704 +/Length 1719 >> stream -xYn6)H`C%@(zhC[d@GRXHpo~HI;U"NO/')IM~/'h A8 -B) 6#5FSLJi->CMӬwZP*~] URM(HQYO5zfSr#@lWL -@/:EPxkt|)^;4sy,juk4;aVhJFS& -U()BIF te_3>Y-^o9ki|00Xiu[㐞c]iC7~ ;>&wKֵ܏tlP6c`- XˍIT5~*+6PP9UFtΥ-FlTȒG2*ǧ& 7: 3NXjǹɆ ϐ9$0 w ⃞Av^gmc|{B oޖ6BO :G w-mpHycM! USb.A'o]CFER) Xބ)0! 'Ku-Lq\2rGwC^F3zqyyf󭊌 -QdQq_{ Ci VnY UEꑢX2`lUTk 5M{Hkb* C@aDX W(s -֎xvoh1-=j9악͑35;=4I:>DQ˙c&δYt4'͎bD[x.#CfIzqR;lczzl|p{ǒ,%y _ S>bSf@2IJz0sp6u˨q$= qJؠ%@,f3khC4guL%͝qa sD,7ۅ%BMzvo&9Qsy?_}'ۄJƄZu;=1 +@`\?FaW[se,TT+.P.hUœUVdkϻ>`ĖF.nGrɘ$W8ec\mvkG01 e"D r D.|XuNxl]Z \[J3"] r`&C1&d@.fD?\4X9lj̙ ϰ9$0'$gU[޴W 1>!!^™%$E&뵈^mHHV +2Ia! S|=$Hǰq") P`o~`cJh9Dq͒4>*ہy\nޞVyhP<}^Qlu V ~5[J/g?T +68ݑh02Iqou ۙ=8zΰy$ iP@w-Ȁ0UBKYyḃR%ڐMdX.M+[%/$bFw +MMzv۽97+;k.Gxjeg3ԝpVPVxɋZHsyOvoH87ZϽ|?ƪ{ؼvT,BQg,;j +PC~1Ma7X.:-+xEfqɲU| C9ynե&)V7je<6F@"|]b$rPU\s+ʹT #S)e1:^9< endstream endobj -778 0 obj +843 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 777 0 R +/Contents 842 0 R /Resources 4 0 R -/Annots [ 779 0 R 780 0 R 781 0 R 782 0 R 783 0 R 784 0 R 785 0 R 786 0 R ] +/Annots [ 844 0 R 845 0 R 846 0 R 847 0 R 848 0 R 849 0 R 850 0 R 851 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -779 0 obj +844 0 obj << /Type /Annot /Subtype /Link @@ -10638,7 +11317,7 @@ endobj >> >> endobj -780 0 obj +845 0 obj << /Type /Annot /Subtype /Link @@ -10653,7 +11332,7 @@ endobj >> >> endobj -781 0 obj +846 0 obj << /Type /Annot /Subtype /Link @@ -10668,7 +11347,7 @@ endobj >> >> endobj -782 0 obj +847 0 obj << /Type /Annot /Subtype /Link @@ -10683,7 +11362,7 @@ endobj >> >> endobj -783 0 obj +848 0 obj << /Type /Annot /Subtype /Link @@ -10698,7 +11377,7 @@ endobj >> >> endobj -784 0 obj +849 0 obj << /Type /Annot /Subtype /Link @@ -10713,7 +11392,7 @@ endobj >> >> endobj -785 0 obj +850 0 obj << /Type /Annot /Subtype /Link @@ -10728,7 +11407,7 @@ endobj >> >> endobj -786 0 obj +851 0 obj << /Type /Annot /Subtype /Link @@ -10743,35 +11422,35 @@ endobj >> >> endobj -787 0 obj +852 0 obj << /Filter /FlateDecode -/Length 1946 +/Length 1966 >> stream -xZ͎6)a8$?bECK-ZAҮ"J$5(n׶D|C:Iw@}pt˗%#6墝p]0x>tJE뾾\~u]Iz#.{eca#A=] bQE#^x1_~>tSє@3]RKi9x{?`T -q5Is\IP QzCB\۸ULJzk&L6K&i~7-cg9t xo*۽ΟU} m&뗤YvuRj%)wRvHRSmEddK{nI=EFdzeS4:uٝJwL,0,ܸ;nڬ=8}z͜@-'+ܥvt1+/: d}}BAP,8ߓoV/NrD8AmY);<>,~Q!VH'TSo~t? +xZ͎4S]Fs@a $3AK۩8N&=,L'݉S?;Iz ?>ߤp(o2_H7 {sTNj-h-][-λ@)8}Bv}heZtHA"h7O7ȆXz^yoL~T4i %D4^JcDD>s>el??=}XD譪Ԉ3j\$MRJ#vҵ$Ĺ[6W:gdS&N:@]H:5l W0 )tdA-۲+ǼI+d W'5] 6؍^ (&S1 +_C9K}GTrFAmY);<>,~Q!/RUso~L[ endstream endobj -788 0 obj +853 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 787 0 R +/Contents 852 0 R /Resources 4 0 R -/Annots [ 789 0 R 790 0 R 791 0 R 792 0 R 793 0 R 794 0 R 795 0 R 796 0 R 797 0 R ] +/Annots [ 854 0 R 855 0 R 856 0 R 857 0 R 858 0 R 859 0 R 860 0 R 861 0 R 862 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -789 0 obj +854 0 obj << /Type /Annot /Subtype /Link @@ -10786,7 +11465,7 @@ endobj >> >> endobj -790 0 obj +855 0 obj << /Type /Annot /Subtype /Link @@ -10801,7 +11480,7 @@ endobj >> >> endobj -791 0 obj +856 0 obj << /Type /Annot /Subtype /Link @@ -10816,7 +11495,7 @@ endobj >> >> endobj -792 0 obj +857 0 obj << /Type /Annot /Subtype /Link @@ -10831,7 +11510,7 @@ endobj >> >> endobj -793 0 obj +858 0 obj << /Type /Annot /Subtype /Link @@ -10846,7 +11525,7 @@ endobj >> >> endobj -794 0 obj +859 0 obj << /Type /Annot /Subtype /Link @@ -10861,7 +11540,7 @@ endobj >> >> endobj -795 0 obj +860 0 obj << /Type /Annot /Subtype /Link @@ -10876,7 +11555,7 @@ endobj >> >> endobj -796 0 obj +861 0 obj << /Type /Annot /Subtype /Link @@ -10891,7 +11570,7 @@ endobj >> >> endobj -797 0 obj +862 0 obj << /Type /Annot /Subtype /Link @@ -10906,42 +11585,38 @@ endobj >> >> endobj -798 0 obj +863 0 obj << /Filter /FlateDecode -/Length 1671 +/Length 1678 >> stream -xYm6_?pѻ!Җr-+[RIe:zyNv9גfF̫,;"Nv/;~?y^/;텏Vy7D#L2 gR*%.4Ci.Ȩo!$p;IqV" -~LTe@]L 7jq˽1 jd^i2hu\ -|:zXeᓟ{6sci˺L$Dܰi}0v_J$-:_w -&N T*Po/4eL:LedMßEB - ͦМ 9 ,YP:e{BGPVe„|&ޣ+ѳ -ɒtѬ,Y: -N -PPqn`ȠTJo& h9 >jOָ\A`PϿu׮8F[BEt=X\@"ܪҘ9<6z`e5S)_n0+4Y`c4E;>jR&%ZOg2])HLxjå&h(w&)[~ --궮>_A^\kqK!Ub YesX :'n vb a>p>z~|bі܂"_2MUEc^1 bn] Qa]gղ,ཡ+A㴖R,кr2? eHƬ xB5 YO&}]Ҕ贠+7ܚٓl$.VU2.Tu(k^F}Ž5}qo}ۘ7"*?X V@D>E묒$ .ͭJmu915GPw![ڈtk|<vk3vFF}mMJ_V5˫"Ta[pqpU][ -ٍ`r#rV(UyXS*ٹWY,lu,/<F[rUY'޲myaJG"7OreS}e6pծFgbn{ 6+fl'l;ZB4_(n6ҾV"V$C[+-*\,/Pxpo},2XE&O -=@T8MkQX0zb(lU0H$ QY,'ڮ!˽:#,lip;o` -?zKmXkLC -⛤Fe,vz>q3t`P먱T)c/! $6R̈́ $;E/*D}9}OuW~qA +xYێ#5}W|Q$ E!r!+4K/eW;I&Z%QOvUN]r')Bޙi-'Ϙ?^hwS4„ C BJPZX5__7lz>IJf)}?<2*[ds@ FFH$!B0fzy$?r N& 7jqٕgcjdy^i2hu̜ +ڗzXɿ{6gsci˺Ln%Dܰi52HZw +&[s(> +.MN"S㸌L)szyBq^8ٴ͙|#˂.x6ϲ ҡ(#?|<2z*:yw+uhmVdIʰz*M_͂լ>:.+vCt h9 >j9u+rf1!k (24}ƫ,&wQH [dpXng^ 8QpRw[x29n77Tu}c'f7FBh¾6rUr$ywYԵRVi.^,zpmE :ˮW-Ϊ;l T:*vB!o;ӀEtj(]oV.AvR"Gh0CmT`/40@J-fN;t4+KZb j.۬B1?Y,PBX,IECkI|^6IF~طԫeZyJZf]Į_Y_Cf{uF Y|;#:G)s"v`i} !2\$v 5^7ɕ +AhlB#v ź؋liV{A +er> +Fy6"pcqVz4M6@RFZ֔gmdzg?g?g?K g?Kg?KoaO/B>{oN9{^h%FN xBRᵫ> endobj -800 0 obj +865 0 obj << /Type /Annot /Subtype /Link @@ -10956,7 +11631,7 @@ endobj >> >> endobj -801 0 obj +866 0 obj << /Type /Annot /Subtype /Link @@ -10971,7 +11646,7 @@ endobj >> >> endobj -802 0 obj +867 0 obj << /Type /Annot /Subtype /Link @@ -10986,35 +11661,30 @@ endobj >> >> endobj -803 0 obj +868 0 obj << /Filter /FlateDecode -/Length 1773 +/Length 1782 >> stream -xY͎6 S`!%-P"dɦe{&M2]{dG~/XT!Dl7|8}<3V?wdw]ʆ!vBmxEݧߧG<CZF(.}??QAM[CI_NXqBPA`mןte<G+F,,$;q30=2.i^z1}̥eL~ݿ7_(5<@ ,/?EAG /DR]j,,;5Py~W1u :TG0 BbzRB{q-TDᬜ =Mh4 - -,Ȓ^@KEekYf.̿GV/<xƂ.?)3ᇄig*2^\ ! ǢKtLSѺ bmew\eɲK۷CY' -KJA(qu&+i)F9x C'鶦SSH29G bDZI 6>{6 ig4w#*difsUŚx cIi*j\6|V[ lM'uc0buB9/GЖsO!@HƜϜ^w?3;YNb#hdʹL19[~"gde{t_ d޹[ס2h8< -{+xYmFk2Nks /p^ 2xq_G5 e87*.{"p8m'_^t^D|䅁]xCۈB2M.Fr.<:ppq_<&wl]j_mr_Td'_]H!ŏGbr|=WHQ]y8(d?6X3 䲹ypB;7guܫ)&_U€0@X M131>mԴ1ɣjj`<4eU/3ƚ Jͷ+W_sN,.mVZ̔2`\86 -NrýtiNFk'1m>$j͒'!h=::Y-dW<̕ jJA)vqEi])6հutY/ *F #>YqBa] WDV$6Ħ_ׅ.+5jN[Jh`DRV㰡fflbۜ -օpU{#z%/; n_GvH6Bq82|lyG3|+o1B.nȃeÉFq -{E;jkjձvW[6 -E 8z-t8 r;De~G( n -~Uۯ[NPȅkE26E@YOErL#`_ż+y0r<ŇT$=uV^qH˾*Zr +xY͎6 S`!%-P"lѦd{&MݙH#Ei_tbLnpx*iFa}<٠BB|r1BL]4hBgݧߧ>$!|<MJw=Ѽ:Ls"4A<*;k:hbt{pzϿ~&e<vQk4hTC:,$7q;Os9PƥL?ey̅f߃.џ+f)sqc>ӫ;żF`7 Y_ %wv/ow-kȲvl6Xa?duJzP6$*i}[32`Jk`D{eM,d983rQ0.yEsuNzМ3{&!êxe (|, 3VP2+1CxbJ𾑗VcHMcI'|?q`+@0CXJPZ.ѮX"\{hUA9[nt 0E:8cMkTk媅9/: Bo!)Cwtr|M8-xO."lwƟ irMq]']gōn!彚c$#es՗XDc¹ +FC- }gi̐rς4LUw Ci)Tbi .r*H%+e2k{L/p^-Mr~<_p!88=\.cWUR-j7nU7H+M^إ=090y(baDEh!n2Oaz⡿^)&3yHMɺj|z)QɠE|&14:~:0'z}ɀ<\+plnpZM5 s$;_8\0Nqs;ѿ!,⫘;47]BY0 @Wi&t=Rfŗ-R#4y UJ))|1rN,p\,M/0iTwʹgjk4+Mpl@$:rh{8iIF9Je\LWC'1x:Yz3Mfi=-Z=u\?Rmb鲲^| "R6{3nP06ѽqʥD!e^iGlH{Iv[jLyn@addhU 90>PbQ|c9N-iFī}ޠF︣kߒ]t֩`CӦ(.[FYko A/ݽ)"wUzi ug@AGlXvFUյ8b4~641q1n`y84.Pm@ekC3EJIC,4$X3/}\UWT+@l}#R2$/'e.@r) +嵰3ws_b̫eSBE^?aQLʘz%w%[K(*oS̏rtc??~f܅0+q˾0y endstream endobj -804 0 obj +869 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 803 0 R +/Contents 868 0 R /Resources 4 0 R -/Annots [ 805 0 R 806 0 R 807 0 R 808 0 R 809 0 R 810 0 R 811 0 R 812 0 R 813 0 R 814 0 R 815 0 R 816 0 R ] +/Annots [ 870 0 R 871 0 R 872 0 R 873 0 R 874 0 R 875 0 R 876 0 R 877 0 R 878 0 R 879 0 R 880 0 R 881 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -805 0 obj +870 0 obj << /Type /Annot /Subtype /Link @@ -11029,7 +11699,7 @@ endobj >> >> endobj -806 0 obj +871 0 obj << /Type /Annot /Subtype /Link @@ -11044,7 +11714,7 @@ endobj >> >> endobj -807 0 obj +872 0 obj << /Type /Annot /Subtype /Link @@ -11059,7 +11729,7 @@ endobj >> >> endobj -808 0 obj +873 0 obj << /Type /Annot /Subtype /Link @@ -11074,7 +11744,7 @@ endobj >> >> endobj -809 0 obj +874 0 obj << /Type /Annot /Subtype /Link @@ -11089,7 +11759,7 @@ endobj >> >> endobj -810 0 obj +875 0 obj << /Type /Annot /Subtype /Link @@ -11104,7 +11774,7 @@ endobj >> >> endobj -811 0 obj +876 0 obj << /Type /Annot /Subtype /Link @@ -11119,7 +11789,7 @@ endobj >> >> endobj -812 0 obj +877 0 obj << /Type /Annot /Subtype /Link @@ -11134,7 +11804,7 @@ endobj >> >> endobj -813 0 obj +878 0 obj << /Type /Annot /Subtype /Link @@ -11149,7 +11819,7 @@ endobj >> >> endobj -814 0 obj +879 0 obj << /Type /Annot /Subtype /Link @@ -11164,7 +11834,7 @@ endobj >> >> endobj -815 0 obj +880 0 obj << /Type /Annot /Subtype /Link @@ -11179,7 +11849,7 @@ endobj >> >> endobj -816 0 obj +881 0 obj << /Type /Annot /Subtype /Link @@ -11194,35 +11864,34 @@ endobj >> >> endobj -817 0 obj +882 0 obj << /Filter /FlateDecode /Length 1965 >> stream -xZˮ7 +Po "&-Zb -H҈J֌6|xCsN`!zgӧoyD%_텏Vy7E#L2 G5Z\>>j|J + 6Sz~xx7KW\hYy ;HڈB/I">/?~i=v=Eu@;w|7i'r/tͮ$'n?+&e4luP{^y-P̫ܼΝ/~EN~h26,{NrKݟ{sz{?DU!8fA5crU88^˫k -wFm\QA/ȢۆqRhju*h',¼{!c^c8ʰ1#ycp΃R]Ɠս2pӍ_H*d9,{;U )rm܈TV~Mh7Bexxщ#paLѵI4Qo;}zs=a[ -`UuQjei!>qFVFb]݈dWjl\0uJy,C9$\KMd|˭4$XXr`Յg;h9oz4q5l ["Inw00?g6E<$;ykp&Yud] yfmy\dҕ`pIĐwY]1M<'9w=l"џ擷*&WMyu QZIJwBCR9U\q8'"سoJZH`$A4S D&@['o8-SKKOU!'$.D(2,r@5i4Fv5QVu>$(+Gfh\Pow[u6*.sYٮF b M*f"HWJ mC<<*R1VLn1ӱ#h fsjhR{4C#YwH\(uyMIu|eU0<:Ƶ2 -7 -ƽ*I %Ay^6NѲ9EC\FXҹJ,rNM36;[pL}ѝgt<OףWx87?5v"f2>T݁X7YDY٨y4ZPܲ!Ctj7] KhPf]D^;Hٌ57hՅ1αk#ѻ+w\zB('& ?]MȮ֩dpz2*(ϧz4\3\w!ݳ.h΄'\hȷz.DaB$^)M KsaUEhԊySH_SZSћJH֝"<#GT6fxWtnRFhCdw+oMvguϒdoYU@k f+y-Nr H0D Ow6V 3`"]\2,~ldle֠D#]-jOf٤ /xȯn2JY}]=s<)cWd[d3;w9DA od,@x #/|}>i/|ʻ!aB!^!%(?j-r)Q TJX]iӻQ +>{Zpu)z:1 P$i# +j$!B0fxtzϿATr@w|nnp&-N23rͯ׶IN`:&VLwiL;'>붔P{^y-Pܼ/~ENhǏS}cc+fۣ{sx{EV!8fE6)  ' 4}y5sM?NhG`p7 +#3XYt0N + x"㹧2Vn) m GVD -f"o3ߍJmJ7sO;w%o7~#=]?ۑsXķvڀakt n@p#n6·Gga>'9Fq;כܜaA֦#.6R-@YjHg(*HL;6w#h(?$ s]r^3un Wx )r+iƩ + V3ˎ{4`H=M6o,L/ZQ1tU yQg=.|xsz*ݐX4'LVC1l9.[rQ2^LL ye^I"]$=Sy s(cѦM,B*i>y}frD:w|>C58t'd+0T1(U%eyIS,[j$gEwJtn6=At:U!'&.D(2rA5i4Fֆv5Q6Vv6*(CGflݼPѝA~oyWg ҂sU_3޶ӮXH@Z 44 W,aEQMZ27,OΛN"%pn˱ӱ#juaUsrf8V=*!I$g,TP=:\RS!`FJ$O:F+cr Mqm %)V$Ȓ<dShݜ"@!.|nxi#vf~j9t'F-&krQ]8/Wa.r~'tt"X 2n@7 kcD QV6UDȐ!ݛв%4(/QR~VcZ8F!Cjs,ulWnP`!Ay< ȏcWb+l}*01م.!A;Xf<2o.]!Ak 1Z:?`!3 !-h QɮWJySC S8o6EhԚyW/]UĖ,niUUT;ٳ'N1UQb㶍~e*!LHmhJ[^L.מ0{+b0V-~t~6' 1D Ow65l­2 l^767{`x/VU|ˎ|У*2v4B'˟toȑS [S?V2@֠$ cﭻ4Gj]f٤/x32L]mݕu\<5|G.Q{>í>I0dU GNMH<9ܸB'l,rH٭qTv6JKؾBUc*\Cy@ZѡW:׃{a5xrSK%XދZef_c4 Op*$~S +NIL ]_ʹh1HʡHU)H)7r:t.WwoKBbWi B" endstream endobj -818 0 obj +883 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 817 0 R +/Contents 882 0 R /Resources 4 0 R -/Annots [ 819 0 R 820 0 R 821 0 R 822 0 R 823 0 R 824 0 R 825 0 R ] +/Annots [ 884 0 R 885 0 R 886 0 R 887 0 R 888 0 R 889 0 R 890 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -819 0 obj +884 0 obj << /Type /Annot /Subtype /Link @@ -11237,7 +11906,7 @@ endobj >> >> endobj -820 0 obj +885 0 obj << /Type /Annot /Subtype /Link @@ -11252,7 +11921,7 @@ endobj >> >> endobj -821 0 obj +886 0 obj << /Type /Annot /Subtype /Link @@ -11267,7 +11936,7 @@ endobj >> >> endobj -822 0 obj +887 0 obj << /Type /Annot /Subtype /Link @@ -11282,7 +11951,7 @@ endobj >> >> endobj -823 0 obj +888 0 obj << /Type /Annot /Subtype /Link @@ -11297,7 +11966,7 @@ endobj >> >> endobj -824 0 obj +889 0 obj << /Type /Annot /Subtype /Link @@ -11312,7 +11981,7 @@ endobj >> >> endobj -825 0 obj +890 0 obj << /Type /Annot /Subtype /Link @@ -11327,31 +11996,31 @@ endobj >> >> endobj -826 0 obj +891 0 obj << /Filter /FlateDecode /Length 777 >> stream -xn6 ~ -jI) aaK)Z`=l(eɉ' f3 H2e~cѬh03U⤲~ Z$i#hy#Q& ߎßÿCi@L) -lR-0~aqG-ɵ? B1dO},p-_owi9.˔g hdFRX/_WEĥ~8tN*9ve-1{S*,ՈK8|}J$,$GC}bv[?!o"{amڄZy]۴ױk䉢,d92P:Ub*HzrFzus pRH_C|g{fGeIIg̩ˑπB̗#-7Bb"g'k?GY^cS枾^ЃS -l$SIe>ͤQ}N%oSXb!g>gp+qK=mFoa8tnmKXGe5wgx6;b%:|iV*`#6*yG\bς)Ƭh788+}5=}Ta٥DbOmp Mn8o}F?]޳GTx@d?Hu6`Xc*А(AU0pU'< .  yu3ZLɬmh{qUKrITcתW}m}GyF], +xQo6 )(@bC7l@9{؊t%ى/ ;I#%aߡhƨjRrW87$Q`9fUT !7ED qsw( +Ĕ"j#Fw ԇzvy2hrm: 6^2m:w +tZ(2Yng'^`Q +[צnJ!D\:De ˮL&՜GS*,UK8|},R4$GCY;-`7?\I0mۘzymmֱk‘:%ft*D*2:xWx8N#kl"gcbLqYpJȳgQΗ#ϱh2c.\?<0>AO瑷8[Wk'/gtklgH&,Sv-H!DKyK У&,gp Xp =-7\tmK XRkl"6zR,:|+i[+YļEiPX!~g3kv_ KtiPB¾S\U=fz߷{V$ N{bkU=3¾UŔ:e?=X\> endobj -828 0 obj +893 0 obj << /Type /Annot /Subtype /Link @@ -11366,7 +12035,7 @@ endobj >> >> endobj -829 0 obj +894 0 obj << /Type /Annot /Subtype /Link @@ -11381,7 +12050,7 @@ endobj >> >> endobj -830 0 obj +895 0 obj << /Type /Annot /Subtype /Link @@ -11396,7 +12065,7 @@ endobj >> >> endobj -831 0 obj +896 0 obj << /Type /Annot /Subtype /Link @@ -11411,7 +12080,7 @@ endobj >> >> endobj -832 0 obj +897 0 obj << /Type /Annot /Subtype /Link @@ -11426,7 +12095,7 @@ endobj >> >> endobj -833 0 obj +898 0 obj << /Type /Annot /Subtype /Link @@ -11441,7 +12110,7 @@ endobj >> >> endobj -834 0 obj +899 0 obj << /Type /Annot /Subtype /Link @@ -11456,7 +12125,7 @@ endobj >> >> endobj -835 0 obj +900 0 obj << /Type /Annot /Subtype /Link @@ -11471,7 +12140,7 @@ endobj >> >> endobj -836 0 obj +901 0 obj << /Type /Annot /Subtype /Link @@ -11486,7 +12155,7 @@ endobj >> >> endobj -837 0 obj +902 0 obj << /Type /Annot /Subtype /Link @@ -11501,7 +12170,7 @@ endobj >> >> endobj -838 0 obj +903 0 obj << /Type /Annot /Subtype /Link @@ -11516,7 +12185,7 @@ endobj >> >> endobj -839 0 obj +904 0 obj << /Type /Annot /Subtype /Link @@ -11531,39 +12200,39 @@ endobj >> >> endobj -840 0 obj +905 0 obj << /Filter /FlateDecode -/Length 1787 +/Length 1814 >> stream -xY͎6 )Ւ`Ce)Z$bT%lf cȏ7F᜷FO˟O' ROj>N -IZ3y-sd D*TJV -z)^ `8=pOf0}t KmoCEe '/IPF]2 ˬ)M bb_fL$ZG'IAE>e97(dN8sXFdSPߧl -vdL2@ :EА)ȅ["R*69-4ϲujZ:#4( e2M EA-*دsh -z[<7cA1m'/FLm.״ί| ط \iNlgV/ˆ@Q+#NR Hpax'lCMBGex^xY{v{CG@/чKސiCG "ԠihFSA([L(Ų-ftPrc\Fn7ޫGȕˮW3^e~v./] 5>"߅䜜W(_Ǯp"9 +z{i%3yM<%<3ㄓ 6h%wY3D7h6$-+c9ǁ`F)mι~m757G6S=tRL]~)ó0v šw -;$[\c4؀N -41gOY(-*R}'k)$jY?)Tja~ ru@$Jaw&T M3\u$}P PYiGU}h\U)ɘY{#ezUZؐ FU=,ԁj&k 7HD_R4WNiX"RLFO}z0@G:Y^>RۦP@Sd[Q(̑{8ף=G;+dS6*` -~-D渞?)̈7r~^u:~ 8b4;Fs̵a+ό)Nwp*t({x竮e٬pS@]wYMRkxڃyCvI4C3H@#ÔD獣RϠkpF < -~B3]lJ KUHqqO]l)_會Ktɣ=U dpF[o]l -V(QΣs6Ն#ɜ3[{-P%7o(U -ûUtgby *{T O-~(D=$t ÃcZ9%$M]Ujq "@~ -ҁ_mI yl-OPUQnsRFG(L։5\ėA6͜?A Y`xFyGႷlsE(ri+$Q;H;d?  +xY͎6 )%/`Ce)ZqEm*ɒLɒ'3&HX$?#%ȬuFi(أ?08ōdZn2h"po +v)7N0`9g +*)|:/.U,ʽl?iIw/·Om]9\\fPwy'JxQ{Nzs +U YfRN~_~>LOB?)Pz)z)bowBYr^aNpz{a|gY@5h +4I|&"dr( + +" +B2&qO*n<+`^|/(u,b Kj[hdT2G }\v[n b?^W~xEw('L3q !C1cVo؆&nQP:1ujF +^>R:|82t4>uN(*.Y"HSX52'taE\M``6tZSOI$:τ($D+5![uQ,t$U$QV 1q hD#Sm_M|I͑_}G]6v̓#pGsH%μD]c؀3Ԓ0 g4OI(-^+R|G%#UNB:wP$W\]Y*R@ @Ul0W5{Ur!m|k(I5vVFUJ9W:i҇^idg&xU8 uPr[_ UYj+$'U;( s$ɴC艢O~w`=dȤ -a)z9p/YZj(jTkP{BRJ+V` Zc϶|@<)u-T +QRQwD'I\dCqxQ/ g}k֞Ν>AUP.jlL6]M ߼sROU\7U@?CL)*O5yu%ubs'42LN,r޸*xNIGx W8c$L`s4k͔$꘠|Ak֩^L7th<&y s;=9EDhMRZ`avN+-W=3CJrFUEdv)FQgJQZѦHbԀQ+4jj{wu=Uxg (;*ic +uB"#iisKd{<@I($^VM )DEca2FXp7n  %l(i ~ݕ_؛=kP.5>]:r@6w[8)I򀁝 Zq@ WrL_tDS@,^6MW [ qG 5ZO4|LatCO cLe(Ww9&)~*(0)AOƲՕ\L)A2M̻Jxhm-N1- ރpcW,ӓ] >+ I'> endobj -842 0 obj +907 0 obj << /Type /Annot /Subtype /Link @@ -11578,7 +12247,7 @@ endobj >> >> endobj -843 0 obj +908 0 obj << /Type /Annot /Subtype /Link @@ -11593,7 +12262,7 @@ endobj >> >> endobj -844 0 obj +909 0 obj << /Type /Annot /Subtype /Link @@ -11608,7 +12277,7 @@ endobj >> >> endobj -845 0 obj +910 0 obj << /Type /Annot /Subtype /Link @@ -11623,7 +12292,7 @@ endobj >> >> endobj -846 0 obj +911 0 obj << /Type /Annot /Subtype /Link @@ -11638,7 +12307,7 @@ endobj >> >> endobj -847 0 obj +912 0 obj << /Type /Annot /Subtype /Link @@ -11653,7 +12322,7 @@ endobj >> >> endobj -848 0 obj +913 0 obj << /Type /Annot /Subtype /Link @@ -11668,7 +12337,7 @@ endobj >> >> endobj -849 0 obj +914 0 obj << /Type /Annot /Subtype /Link @@ -11683,7 +12352,7 @@ endobj >> >> endobj -850 0 obj +915 0 obj << /Type /Annot /Subtype /Link @@ -11698,34 +12367,36 @@ endobj >> >> endobj -851 0 obj +916 0 obj << /Filter /FlateDecode -/Length 1364 +/Length 1369 >> stream -xXM6 WTKI(9 l%^-fRdL`fb["HGftAZc^OʊEy?'K3仈 +xXM6 WTKI(9 l%^-fRdI`fb["HGftAZc^OʊEy?'K3仈 C!v*u_O~V6F9}pyӇ^+>wjyePgjtA  /7d{I\\.MFc8@ )29(>C\pxm*8;m9&~ןduO -0 zDYٱ&'![vv"=޸A7?=wvLk0M\6N٩` D`rQ1D0F8Cevt^Q<ſ 4߱l\0~\ "h%ȃX#oXeJO !墥wPlx/  M0rp08 s(Zći^i2H -ixrsuU6nmjv'xmzZP@$㞖^+²s>o#Evp1P2ү3pilܣu{9{wD&^~ʪԶY%D6֪MeAͦNdD(J1I."IDO"b}mj}M\hlWLTDGr:rKޯI;}`aWqmwҍjЕte8Rrb(0WW`ѡV]-f  ->MZLSenqfI @t(D}5P+)[BͦhI` |mLun}mۄh"U@M%IcfTnxu5.Qfl NBz4004\/(փgv뙡CTff7ql+fˀNnvR+).j騸Gpda~}(A64¤G3C!}qwkIuH"EI$vD\Mdz3#х}]J$"BIC+"NrznDUAq1M_Vw֜Uua}˼sg^Y'%~y+'Oʰ5iq>v0:⥾_˿I6 HY"+YQjuG׿aZs}#*K|DLo -*~KE30˜qX3hWבLy^M8+ڬOS\rlsڗpv̾N? +0 zDYٱ&'![vv"=޸A7?=wvLk0M\6N٩` D`rQ1DX.sPon}P煍n3\pH߳X7 +\/ka_{k'?lp"j%os@bt_K^s LI"1\t7ņ{8Xp^ դ61DhK">LG>m1FRQoV ҺjFmUY \w9 Фj(-{sL|PYb+:e)II鸧4m`?Pvp1bÎHc!wQЂnc^9Z)RfoqZo'bѸVAemn4;=j6VvR#'EnP +LxLz&ztlS@DcSDf2p5ۥ">;%с5\D8hEMc_V vv*h7Ik@֩ylK3D$*e3FZN|4<*b235vA )Q<4V R(x0ZY_haP ai_3S);< +77yXDW4(_4*3)y)̍8ϳhYf.4P~x~-e˟Ӿe˝G@ endstream endobj -852 0 obj +917 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 851 0 R +/Contents 916 0 R /Resources 4 0 R -/Annots [ 853 0 R 854 0 R 855 0 R 856 0 R 857 0 R 858 0 R 859 0 R 860 0 R 861 0 R 862 0 R 863 0 R ] +/Annots [ 918 0 R 919 0 R 920 0 R 921 0 R 922 0 R 923 0 R 924 0 R 925 0 R 926 0 R 927 0 R 928 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -853 0 obj +918 0 obj << /Type /Annot /Subtype /Link @@ -11740,7 +12411,7 @@ endobj >> >> endobj -854 0 obj +919 0 obj << /Type /Annot /Subtype /Link @@ -11755,7 +12426,7 @@ endobj >> >> endobj -855 0 obj +920 0 obj << /Type /Annot /Subtype /Link @@ -11770,7 +12441,7 @@ endobj >> >> endobj -856 0 obj +921 0 obj << /Type /Annot /Subtype /Link @@ -11785,7 +12456,7 @@ endobj >> >> endobj -857 0 obj +922 0 obj << /Type /Annot /Subtype /Link @@ -11800,7 +12471,7 @@ endobj >> >> endobj -858 0 obj +923 0 obj << /Type /Annot /Subtype /Link @@ -11815,7 +12486,7 @@ endobj >> >> endobj -859 0 obj +924 0 obj << /Type /Annot /Subtype /Link @@ -11830,7 +12501,7 @@ endobj >> >> endobj -860 0 obj +925 0 obj << /Type /Annot /Subtype /Link @@ -11845,7 +12516,7 @@ endobj >> >> endobj -861 0 obj +926 0 obj << /Type /Annot /Subtype /Link @@ -11860,7 +12531,7 @@ endobj >> >> endobj -862 0 obj +927 0 obj << /Type /Annot /Subtype /Link @@ -11875,7 +12546,7 @@ endobj >> >> endobj -863 0 obj +928 0 obj << /Type /Annot /Subtype /Link @@ -11890,61 +12561,58 @@ endobj >> >> endobj -864 0 obj +929 0 obj << /Filter /FlateDecode -/Length 1634 +/Length 1647 >> stream -xYm#7 _1|m@K[ʵPlk#;$ݐؖG#ހ>8kN -RGj~O; {arTj-h-ya.wA 'nPJ 1)~|ܽ=v'R*ņG -A}AE@zLvo~7AԧTO?zo$]o^'_U4E3Aiآ9)! “0zfܜz뜕~ݱҞڣ,n>ŎԮm=\aw- hqmhWcc]'ɉ_?:a5ˀGC' ๛i}qΆ_p2` l-enpY8 Ѳ @.GeȌ|c0Gf5좪]u#)E;%N~%AzJ*Ǡ+h, ډ4!P-mAiSs^$1{ CP-R[̝⺬yѼ)+cxZ{lmnLT+ŖC@.Ѭ1qxΠ.D -#6@U6g|~D^q|_SelUAZ*_RV6aB-*p&͠b -f}JrJƅS!Őȓemv]p4{K}C 37sF_KlrYw%JNme3b^Ȋ$/[d% k" b6EÕ>Gr-v&F&1ҌZ6 KCs3ᘱm<zeC0x^8;)=͖Q*l~ɇ*68Ʊ)|aV~,e%/=mN|+][Kcl3*SAY Ǥלپڒf9欐l9ߓ [9I^cI#@n+_Y],_}X.ɲR2cܫXޖi=ye - sJx+c:^.**'潨0J2.e_uihWY*|=']uy@4%cv%(~8 +Vdެ=8D&s0em׈ -s Ox\-ӌ5`6ٮ#rM5(1Z(Kֆz/KG@N,G}T_!TV oVr~=*N3ZC M - pGJf6ڂ ޚv+F[7ƍ6}J9Tb~yQ| "o,avNb4Y`oN__}sWߜT7纯=mͧ('g7U)W(A 8$~_+f)ҎCIfI,QpcHa㟫ɜa"f:ɗ0vPǷ8Ǡ|1>sѪfzUN<} +xYۊ#7}WVCB&6L؄v{avҵKrvK***F?s[3 bGl~烲zL^3p~1!TP)Z)n/OaYέR28=>_>΂ *J'p"ӷQ&bd9~M"a*ß+u&}>Xvq>5=[5;NJÒ$Yp3ms}%+xͩ_l%Gyl Av D7M#+b[;~:۴Q]a&]' n,3 +6Ibpx&wYd7(a>mgph?1HQQY"2#_~hȑ"FQ9""]T51n 71)̉K'tF "1(0K( v"MQ2 (rgm%Ȝ7煩 o4ldVQ7sE_KY%KNieӧf~dۚ5!E1"݁07{> [Q p=jّ64n, HpݏehK{Qc`njZv `CjJ; Y}/kti)Á.(H~%U[G8b貱}+G΄-ͯssUX+y+qNٮO>sҥ°̯}(6ܦO)՞LV5WeϘzW oVJ' $Z mro\?z@I%i6@r >#8FY*4rF{[B=uptbu\A$Npr,\yTpՄABc`*G;7=ʦ骞!UM5 +KF{Ն{n#,~<yUJ$dyŖ='_u3:GGbBM7N +? jr>77oπ76QLY5⻠`l;s;Ov>2mvPeM@*'X|>@IVLO9fl<*d[#;2 )PP^ܘh֋u/9}YoO__}s6SWߜkԗ7e_}NzEVx_δ#qBA^2kyUC1L#sz%83VxEH"  +0wPޅ8B6ƹb9s*fP*U2Mz[^QfK endstream endobj -865 0 obj +930 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 864 0 R +/Contents 929 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -866 0 obj +931 0 obj << /Filter /FlateDecode -/Length 1736 +/Length 1743 >> stream -xYɎ6WLs_cA  A)R,HYtKj8ki|r?iDu/ F:;ʹ‡ τRMJq7}x%wA1ǹnBJfDb_?]΂6ڶ C,~x6D{ZO/oןx?-|L}u>6&͍ז\|mv?]/&#uu~n:6&=}ϼlߍ( Gor-+5_(B1%ay& nϣPig'w+an4d2̛ 8gQsMVss au~% 0a*EScy0"SWƭ]e]U+DC W1O{ -JQKr2rLve-Z: qx퇠%w:e PALj16GmSF7"GMhM=#gn?9/Ãpñ%0HO\J[$qX p'͉ y0K3vxDPyB*Gb-L&= F^4{WNW7z.FtCk{vttyDB[v?Dbv*&h2Fv`dOK/%B@E_$24Y^~KF1i(]U  = CRR*P#jʑrd*iZ/,t!7 jGnG&EDqxz -&Զy΍ʋ*( 'ǵIx_ 9SZ8( qvb]E֐s5򙦥K#HfRVmIWcv'W9HpjT;$)aΏMI=8M Xd̮"u}+QPN@1 'Ԯ탿vB^򧵣\mXPvm{&}瑦ȇ+}tJ[q!$/i@6@Sm^wzݜ+)3M/zNN3%̃lP}'31n+ -ŝ*뎰wd;xh79^L%51C5a[- #wQۡ[(*c($n;֫{F^+ff(t|q g+Z%VO/ -0ǎ\M};q,󆫠']is(LzϜdr.0iz=Lˑs+ HK͌PzԘ%`7d FrN˦nTIg`6۲)섖qCeMQ'?.2)ɨߗD;6=m:uª:Q(%G?Ghۦ1wȶpYO_ДE:Q!ݝ/b -,> . hP֛,}-{:aFƋa8-|zO\ɟWf9{Yx ~W(%K؀ 8KOI4ŭQRPB +2p'  HekvLu,Q =!rEɛdc$E f^F{WɃ8!i[pUXom݋<"C-[TLPƍȾ"|. +Uʁ}0`ɃSB<+rHLyHDG>9wRNÔҽJQQVRʐ Y_a#^kʜUWS0l zj +] Ѭ\^+](=4}w`X^T u66$!@owQj)3$%s.)l1Ss3MKYfĪ4V VǂI2a1HpbK;igϚ{pY60Uݫ&3g((jݣ(cGҶ1xPjS09L|]g,շi2cHWzDܺ?d!bLǙ39| ULӇF=F_iO.is¶SMlA6ȵTiA26 պD#+wWa'ubuM7칔_L%1QGxp,Ӗ&Qn gvtRhI+{[ߥ;{8z#{Dk!r]!+RH˗Ka2 &5ҎCa?v{ Wz&֛_ͳm87?2ocйa9WB s33&wyfGbD9]C0]/53"OUc(c'@7R;v7rc{H99kvضM^2JNKգա7°Y(-~xcR:I~T5Cp]/go+ h C;F!LşRݽaIV΋P)!7:V.e`|" L2_ǿ8;f!jЬ8!t$ +zr{CuFX sѭ endstream endobj -867 0 obj +932 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 866 0 R +/Contents 931 0 R /Resources 4 0 R -/Annots [ 868 0 R 869 0 R 870 0 R 871 0 R ] +/Annots [ 933 0 R 934 0 R 935 0 R 936 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -868 0 obj +933 0 obj << /Type /Annot /Subtype /Link @@ -11959,7 +12627,7 @@ endobj >> >> endobj -869 0 obj +934 0 obj << /Type /Annot /Subtype /Link @@ -11974,7 +12642,7 @@ endobj >> >> endobj -870 0 obj +935 0 obj << /Type /Annot /Subtype /Link @@ -11989,7 +12657,7 @@ endobj >> >> endobj -871 0 obj +936 0 obj << /Type /Annot /Subtype /Link @@ -12004,33 +12672,31 @@ endobj >> >> endobj -872 0 obj +937 0 obj << /Filter /FlateDecode -/Length 735 +/Length 739 >> stream -xU͎1 Sq'R -8,\V* qh;+vy '̤]Mϟ] +z1& ތ?0S4.6E|Jb'$o}!eOb!K"+ :gS5q9{4j}9lmsX`yɰ$Y>:S)O1zww=M Hz&$Vsln2N)@bwD4§3ѺLatAopp tj@B<(Z0cyy-Uaj\Yz6p,>"Y]lϲ.& - krO";C- -Uןֳ~!פZeq%<]72]ͯX"ذJjA.?X:\b[>s)cI5zAui-ngKm: -t.vw\mn·_ɹ( y J~)R-b+r+xo:.v+g mG|)Zka)bvKmT٭S]FKx;n zh -WXA ]?q>Sc24 dDW^ j* TjNBk2Bb(|gp:*J'jEvm,т +xU͎0 )d8i4.+  qlWNih5ӤuЀޯPGc}x +^Ec);=$V; &ycĘ`H_YD ~4$ Q s1YM3Z0I֛͡.h)A='O>a 6?d:Gz|-r%:F@ ģɼY@ddjSŢS +62P7'wo f.~/]9ݮ.Х.E}\|,[`4!Ba4Y혫'^YbS<벫} .g"Ț:@˾5*r~kR-i|!c\ EwLWq>3v6|s t+:lm0ĭk*IrQui-g=wAл{:bkwj;rW1cߵ{Wr, yJ~)T-d+t+zo_TseMOmն56MB\K_o#o{6b/3ط2۩AM٢?- DPσ<`dd\mlT\5R&fAAHeʫA=Z>lp!ؐ/YAFF-6(u].$R'~3[\lxyqڮyRHv +Qf> endobj -874 0 obj +939 0 obj << /Type /Annot /Subtype /Link @@ -12045,7 +12711,7 @@ endobj >> >> endobj -875 0 obj +940 0 obj << /Type /Annot /Subtype /Link @@ -12060,61 +12726,58 @@ endobj >> >> endobj -876 0 obj +941 0 obj << /Filter /FlateDecode -/Length 942 +/Length 948 >> stream -xWM8W)VYar.#j3A{`(;IG8QwRr٭G?"ܘ> O(b)4XT0F8&5˃*< }V!Z|c>|^LZp5T;|~r4kL l_R/Ay_)M3Ffb$Cx7\L8E26Elt397^8o޾zzɌ^_dV.5aO3RozY!_'E7bYZDzmyϯc#zjɽY|D9K,H̚_^.}V19,4GÄXlhIiWLP3d;'sbv=M|{ŶlWV6XÖWk`gF}umaB磒CL7;ؕf[*s|ȵ{Ļ[hB=|cjlϏ%$Ffr_9fnaWyµ/h)6D37*Irn_%UcXVB$C|6Z[)7 YiY0a?!-NGsҘJ]=ce٪Yz|5gfkd,4- [Rmq1pu<]\km S{M+}uo^*#q@9N{o/Sw$B&JOȃѱ\{^7`\Bi{"3x˭'dp\wGTV^ hRz.}@R< +xWn0+c¦E !  +/1vI-FiǞ9sx*|=SD;+qGl^;JK(H*p11uH}0xB)%%p5* ӏafGvasj؛Pݨ TsC34>&AW#X| ``| ?F/eD )H>?L N VXM4޾~P N57Gqm&2#uJFȣY M+CjGS|218[ť/p->LF( bD-iO*irM0 #1犑v҂!C6d08m[q(MY`d\`L +'/]K?6P{i,٨P#a%o.<ߥg훷*+Sk6J;|}}O'lo:V߶X}ՆdۄĒԈZGxW1JH%0ײdsvlwަqgZmKJ:D>K>kSc'LY}&?حm]Z u&ӄ+uٰwy{-s˫(ᕱh,iG͒Ttխ;RlRb[k%7v2c*v {H$w݀-3)K_Q-teb2mWYú9L}X7V//Xc՗:7NH0PEݜj]:oi|e ۟5> endobj -878 0 obj +943 0 obj << /Filter /FlateDecode -/Length 2342 +/Length 2357 >> stream -xZۊ,}m0njqBCwi?9`J[ZRI5='ge[%<~ׂyoO9O]ǟ' F:{ig'<Ko*ŌVO{J]Pq; !%3"XoqN?~=}{7ڶFCY\"I#0Q$g^zӷ?Ydbq ι~*~97>ힱ^7jvEKx=6&r $,b,E[<`m$ LLhǵV - i4ai=h Қy3@]Xĺ8K2xV%eZFG!DV} ލ[-eʔeGAHg"g -0|!A]/Is۠^yb֨6V WР)Rw@y2ea@G7`I QCwmde>nZdP\2ɥJrS -{^} -Q@RjUL"7m. HgXL"6 ʴ35ozXA OV8U%1`ahR9j=3 ygame͒X8? IM۽q83wUe ȣEkt 3mr,947+̔8Ӆm[c:+CAP(9%;NaNfܿ'$|MRQ ҽTQދv`m`Yc=y5oAQQz»0I - M9~ވAa|HC( - *0rRUT$ğ+\C c -faph. (LVplcAp+aWِGo^8eTZgհ3(W X(j= B%,>_PlQɖ(n&UG1U:rNբꝉb6P̾PײCGR\bN/:׶+~\%蔂RA\"̪۵Bvy".]ȰJR1]{iq)H4O +xZٮ#5}Wh/U$@h@B.x2 $.mwrQn'i/שr# /x_֨?X_|I߇?i뵰բ-w L𣔋VR2{Co\,c#B,{t×gau+z41l KA_81b"W8s)u|<'"+/+c~[1]x7moaL_urtu,Oz?1s8~gDuy:\ǵ%\z-Kw˿.K|tk+xW8e*}8j$LE$g!$f!kN v{++Li|0]GCV.s =i;IH]#aE$b|8]I +U[h1HkM-fb8 eKT<'{V%Y:* &ABt {& ֍[-y”e{AH^_^Dh~CaÞ׻s8w̿DͭFEШjH8su>yKY +* [ k%1u]9G wIخP.^4WU-c.X!% nuHg0f +#E6ŇF%r[VeKHR5[Ar V؋MօT%0݀A +4JzPʨAQTfh@Z!)5[F<;y\y/Ax ev =H{ΐ%%&,_*I<R8Ѣ Mv;w䙨s泑δ]әoZw % '^&k'EI}ɺޣx\%N T_T5ƃyޒiDd6&˜hM7jvM&1]oJu}`Nh`Xqs[/(nB/c]Nw]0@ -͢ˢܺczMYZ?>Md^6~ޕ`Jw1*h%ko|}:2(SzсZ +| Pi⻬e^v+|w=A=QP`lb$7UQ/AeEIkZt\:(U;?{]3bnP75 `Eq'Sh0㉧&̦u/؋,c?_hz't!L5N *#䠔 ^{iZ: +;6y~uBJfcvZa~ QQWŷnC $F{Xf9IB}(.QZ4V.Bn)mW?9[>M Չ^8nUw;ɜ|S9;(6s[t};CM|^)=b,[=xeU Rv?L@I֣R<" =GJdVU`tCL`=QIΣ*uưp{tУ@8cuʼj *B@S5JH6gzt EC#kv(ڗbF endstream endobj -879 0 obj +944 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 878 0 R +/Contents 943 0 R /Resources 4 0 R -/Annots [ 880 0 R ] +/Annots [ 945 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -880 0 obj +945 0 obj << /Type /Annot /Subtype /Link @@ -12129,32 +12792,29 @@ endobj >> >> endobj -881 0 obj +946 0 obj << /Filter /FlateDecode -/Length 461 +/Length 460 >> stream -xSn1 Wp8KA !ӝxIvl 3Ď{H`W'!j%01YfqяoaYJx &N"*[x -rw3JTz8F p~UK -Hq9if;3MH~Qqr +xSMo1`:=c¥"d8jvB7-'I{>{3دܫdŏ| {jVBMk0qᨸTTq4ZU%c6 #estpkZQhzڹ<+ZܩX/ZL)eaNaK[`'zlR6پ."V*XZ$A:&p Z3kM> endobj -883 0 obj +948 0 obj << /Type /Annot /Subtype /Link @@ -12169,7 +12829,7 @@ endobj >> >> endobj -884 0 obj +949 0 obj << /Type /Annot /Subtype /Link @@ -12184,7 +12844,7 @@ endobj >> >> endobj -885 0 obj +950 0 obj << /Type /Annot /Subtype /Link @@ -12199,30 +12859,31 @@ endobj >> >> endobj -886 0 obj +951 0 obj << /Filter /FlateDecode -/Length 441 +/Length 442 >> stream -xSn0)33#U{@CRiHCm*g{RN['8 akcz(j!qїohT/Ike̔"dt7}_]i`N)jeph~9R5(4JҶQŪhqIsQ9mc'A|Ȓ-Y.">n^CZJ5A: -6oG,P\F+$#SGO>rMM:}ċ쾅IјE8hX}ѳaX2\ "c>눒< #۸aqTwV';(oeߖFI3nTI[ߎx>6P -'sdJS`Ɉ.30:ʵ P%pKگQƕ8g'Pu]]ᨙT77_;{_ب +xS0 +d8mi5.+8t./,"q]̵p6=LF۷I45xٌ̓EfJH,Y4<~>Lߧv^]i`N)jEph~Z8R9mH4R#i5U{asNfw뱻!꫑%;Z$[E|ݼ-Ǵjxbu2l^',P\F+$#S0#| Ц&M"a]!)+z4 +(W +p1 #lV1bXQ9l\P7`yߞFIG%(ftTI{3ߎx96P +'KdJN)0z2sŐ }F'L \=ગVVkJG-qΠz$@JǓfzP~u?/bج endstream endobj -887 0 obj +952 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 886 0 R +/Contents 951 0 R /Resources 4 0 R -/Annots [ 888 0 R 889 0 R 890 0 R ] +/Annots [ 953 0 R 954 0 R 955 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -888 0 obj +953 0 obj << /Type /Annot /Subtype /Link @@ -12237,7 +12898,7 @@ endobj >> >> endobj -889 0 obj +954 0 obj << /Type /Annot /Subtype /Link @@ -12252,7 +12913,7 @@ endobj >> >> endobj -890 0 obj +955 0 obj << /Type /Annot /Subtype /Link @@ -12267,1010 +12928,19 @@ endobj >> >> endobj -891 0 obj -<< -/Filter /FlateDecode -/Length 1034 ->> -stream -xWɎ7W)$0C`0ŀrhFF1R\ZDBkR|^Th1ouy]@*#vJg|^dHN/6F*J@l4F:k |[ !ҩ#/ê$/-W\.5.ON 2Uhh$(SOr\.O9hgŻQe  ԟOmY$/ɨcVp_>~۳PΌȫ@a~s b<uu|kK@Z_kc־6gZ[k˶sەA'^{>[b*k4lg+%XcoՇ+e+Ow|*8QLZv1;!apDWֶ"P&x*溝JH>taS<N}c"YR[+`*?<$5S0atBMvSD.nWqWư;IEdX);i昃6\%7P"NHx@Yn~{?l҄AZឝ4EGme1F;ΡC/QɢB]G.W3=2Oi}IoRW +8H> -endobj -893 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 771.023622 528.386457 263.273622 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/F1TVHIGHERRES.png) ->> ->> -endobj -894 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 263.273622 297.637795 248.259222 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/F1TVHIGHERRES.png) ->> ->> -endobj -895 0 obj -<< -/Filter /FlateDecode -/Length 2551 ->> -stream -x[K#W0X!Hrpr10A9H,&%ͬ;k.}UlZm~P`!zg/'):1R􇗓8fH ӧǏJ鴔韟ԨR__oy,xP}l~VSc3Iϙ&/ݳО=Ek,zҸ*8_v=gIk.yXzhT{6W,c?W_ؼ$- ?UOʎaFHR, }̦\yaeA#ˏy9®l}a0H!,X΀ -KfM\7JA*#Qۉ 8Tn:C ,N[Utz'izYk-XiYp)Wv̩d 2 TV TH3PYϲckP趔% BI{jI: t1Nfg>)^[:^Kk-CB:< h#H( -+t} "Μ͂%rw.X^&:J!AWe@?K AQCS =LJ:*Y.+hzEf'v;1`V|cz[R{3Z˂g}?AVby,uj"Bbrek3Ď6w(}8#CvbPψOPBt( -zHhe, dƼ@g"J.fjA5P?O|x=5Ez^$flj;*8 -N.V0ꛇEF%c;:JʮA*zݓkǃ 0 -  rZ /)G~~Qəi$l ]087!hV}0d>/#BCV[*ݶ7ԫ|`]!;Y;/F$'{X1*TlidnIzp8G{͍ {nGT -nީ{^gYGvx -;_E ڕ?c&V~/݃-sͱ@N^=8l.;y& -+stz&if= s :#Xz󉟄nO; Ѹ`*.=-̺D)0rNP}ͪ>ZXnj7s  P -碋r"IV#ٶ -؇)0j5+TjfE> kCNi[sԋ!Fr 2xzg1W%YM^"ѐ歘8 =@ s -ޕj6Bpz2Øj(մع`DS|d & -V?.3߭B1xx_ 'Q8pU<#W`s`pZwek;~hJ(3j!E@YvnUyу脏n-磺yoma:}0\&.5dKO(+«娛qevrl6ڷ6CozĴ'Y˧18W=07BNhDwW:T:q h(ǧ<8g΂~^v;(߷`tLf 1h)Df{wXOVq3=RI tJf5'KCCXp3V&j͇->Ļmjc߾Xl]/4փX>v& _:fq!1bŰygD>L7׮=9<1L#Vi;n{l^Р/љ!x)Vtآ4z-5WEy;v 2Iw6f\%/ 5[AVޏ_}~xБv_v6lߛ?]Qa(2ap!RvVEnΟ#>7ʺ@)Uc,V/kb^(\d+ Yd3qȱX,+h' Fqp!0Zap-#4Q -y5u`uv>S01>}ODwl3=—e^zaǂx5`0U![c=Ozl0̇2obMd'C - -:.U1+U%~!+lwPE ~]9Dt;)._ֳF4f.]Pk!PpO#<( -endstream -endobj -896 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 895 0 R -/Resources 4 0 R -/Annots [ 897 0 R 898 0 R 899 0 R 900 0 R 901 0 R 902 0 R 903 0 R ] -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -897 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 350.620422 39.386457 335.606022 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/VanishRaw.png) ->> ->> -endobj -898 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 350.620422 181.886457 304.120422 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/VanishRaw.png) ->> ->> -endobj -899 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 304.120422 297.637795 289.106022 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/VanishRaw.png) ->> ->> -endobj -900 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 245.939622 39.386457 230.925222 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/VanishGrayScale.png) ->> ->> -endobj -901 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 245.939622 181.886457 199.439622 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/VanishGrayScale.png) ->> ->> -endobj -902 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 199.439622 297.637795 184.425222 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/VanishGrayScale.png) ->> ->> -endobj -903 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 86.831622 39.386457 71.817222 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/VanishVanish.png) ->> ->> -endobj -904 0 obj -<< -/Filter /FlateDecode -/Length 2125 ->> -stream -xي+_ρ(8nHr`B.c@NZ%Ԓ3913ӖJ}?^ }pV/'Μ 7i=~8)\0%h>,Nx& -bF+SюP*1B.[ƭ4W%boͲa[䌕 {{f]bL*mPp(Pg9>4|خWW+Q"D,#Ȥ gAX͈6y{tke[3I~?( }٨`7\{'7~׋dw[WH%Y+HIW$h:V}zˍgWݟrL^7dXjX;woy?zG3-3FtXvZ0R{z<;ຯIdus>Z!Rv o:]Zof MMLE=F9a8KSK0xRAzŎ7p_Xj3[UDeFy?z=5(+Ky* X0VE"i1!$Tz2 - :cJkӄJ](K :e8TFkQ&[[9$>YȎ!;YV h$%# ⻣P -uW˱įx, -?Tpf -u1)UE{J -ä`d(P/ވ,Y<׊k *V-ʐ mh>tyݙ3+n;gAPW9@bVI}~.h3L߲Ii)ρwk4AifUXU#ӑr)?hB1U<3ސ 1h/;z4q؍i-O6; -& NY}4xMV~3y\:$(a:/Ԓ&Quۉ7}@Q}/U;$m%5!ަ+Ɂ$M -}$ ]ﻲЖ4J]$jQKHQX.73Z&U*KkUIKD2/t -T@GԺ> vC스Twڮ|9z+AAaR:m]=QgXk^0P4We*Vy'iLf'%9IfkJIn+%-jq.]Tjɵ +?ֲݝ8q\j03<,%j"8N WNE_2 VzL:tT8q0Z/<8kjDJ{RSy)Ʋ.a]_>5Vk48)X hF}j36wk"uSuZ__?cuJ1ϭ~fE-ZBJNJP0.v:xѱ9vSP4)}-XГ9Q%Dc0cG 񳈆NIt$O -1]#AXؐAѤf'JA*MmJ+%ZY[$)ǽ(쵻:' 2yZa6)"Y;&>]9ݹ:CQ!Ecr|WNP)l&َ3bg~Fٌ6 -ctgtjߠd!@4mI7kk谸P0O%CFz7943b-DIx$Vz@ʭN -TҜ5pUSHLFoMvɣ'N(`rXbו%7hqݨ}h'+ -cXd>y 2*|c(sB~7dBZA5j wڂ t֔ThsH^\&>,(ZX!"|p؇SLf̑4VPgTSśϮf*CA g!< :!}Ep,pxe͌ L;hR -L_BMKP^67r,}T,XmãW1_ N|. ->~*]Ȇ8D9d?;K*{+yBD -endstream -endobj -905 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 904 0 R -/Resources 4 0 R -/Annots [ 906 0 R 907 0 R 908 0 R 909 0 R 910 0 R ] -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -906 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 771.023622 181.886457 724.523622 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/VanishVanish.png) ->> ->> -endobj -907 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 724.523622 297.637795 709.509222 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/VanishVanish.png) ->> ->> -endobj -908 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 351.040422 39.386457 336.026022 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/SobelArtefacts.png) ->> ->> -endobj -909 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 351.040422 211.136457 302.290422 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/SobelArtefacts.png) ->> ->> -endobj -910 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 302.290422 297.637795 287.276022 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/SobelArtefacts.png) ->> ->> -endobj -911 0 obj -<< -/Filter /FlateDecode -/Length 2101 ->> -stream -xZn7+7xQ]pEl]EJrxC9rܠ6d{{(~߈)֨ę<?iCx}>Iˬ׫5WL9'_pLL+)]<~=u뭗rn]XW7Nb_>ޞNpvn49-¤O1ɍ"ssJ-No{xYy~ǹ^wT2;;^"}6G<m>k_ڰ|kysSzsz,>S<=J.DqUu8TG.Xt0(tSFq3_ڕ|imPJm@+$+>Riǁ 2B1)mwz`ꀄ:YZjr CFȿ6ςZ5rYD3/2:0`2)b$uh'vn4o|hh}]$i N>㱯LL赮saaDPd^kj1\A3>3;5\8KDܝ,QuGݪNA01C>4~*sqAԴ3%i o:4zZGmͽ 0,. JOƜMœ,-]vlKE9ڝvW # bq`BE= +tAtM^qJ V=зw `&PNS?;s|, ]4õs4 Yﬕ)rS?<>t /E= T,éZN2|O}OjqVy._(cz|wgsnM|44aSEyr &HaY8Ǚ0+S^ckyMDr|#DHB(tfwhf^T!|K!ͭ9s&]u~u"d<އ*T2lD~_.`%NȯPrs o)(x0c <б -DYmL߂853һxm/BXe.!,J6'zz%zF -endstream -endobj -912 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 911 0 R -/Resources 4 0 R -/Annots [ 913 0 R 914 0 R 915 0 R ] -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -913 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 243.642822 39.386457 228.628422 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/ExempleLapTimeBefore.png) ->> ->> -endobj -914 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 243.642822 115.136457 216.642822 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/ExempleLapTimeBefore.png) ->> ->> -endobj -915 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 216.642822 297.637795 201.628422 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/ExempleLapTimeBefore.png) ->> ->> -endobj -916 0 obj -<< -/Filter /FlateDecode -/Length 2037 ->> -stream -xZK7ϯs XbCx;RRZtR+y-Y?>8sOܤ7sHg^8\*x3Z)OOq 9ΝwR2#&Kb/;\`mSrQ^1m?L$!nKfqC< I֘ҘYi\19ɜRg_4rĮ~EPL"d8=֤_I.x.vY>=Oz}o6q X1o -nep"Lk<oْQP?W(aZ$WL6i6xq>rs636?h2'09ԞideBi$!6… sqtx-Z e\2i&!uv# tD(@ms"4_hlL0q#|̈́$:=_ƈ8`q9_r5K$3Zz ?ށ!kh*ARs%Q̇0.T rmSLHwt4-Lđu<7Ju`ZH =u{^l -O=fݥ~,bkNȉu)UR5u C$EyrJrCuQNXj]77*Z%*h[{(^pWHT+IpX4Nf^٦0t~4.D Y[PWQ4bi}zwkGAxw*oy,Ndo;L2xjdȞkFBnB4%~rtvI<@k)ѼNZ+)ZΤ D#txw-eZ@||`Utii>G)<+f y;N\eyviꗦӽN47cui5 -%J= J4y'2B$Xr|@RΑ;d8*JL:ELFt*O+7 >3h$&0CzqhF:?>=N83\ l.5W"T{ʪpaq`j[>kDNw]\tVj#gJ< ",>lCc?79 Bgx!`ì ->~(2(dÜGuPQ9tF -endstream -endobj -917 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 916 0 R -/Resources 4 0 R -/Annots [ 918 0 R 919 0 R 920 0 R 921 0 R ] -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -918 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 771.023622 39.386457 756.009222 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/VanishRaw.png) ->> ->> -endobj -919 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 771.023622 181.886457 724.523622 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/VanishRaw.png) ->> ->> -endobj -920 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 724.523622 297.637795 709.509222 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/VanishRaw.png) ->> ->> -endobj -921 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 288.027222 39.386457 273.012822 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Photos/SQLite_Logo.png) ->> ->> -endobj -922 0 obj -<< -/Filter /FlateDecode -/Length 2121 ->> -stream -xZmo7 _q L ذ C;`h{>8nhQ:D$q5|Q$DYby-Y=͟vw9_ N9悑NA3ar3!T@Twӗ݇_8λI)z9|ܽ ƧhQUL(3R%-(T$H6</la(߻ oNF/J`8曻l x\˼*I+ÔSJ4y3hN;~ut0xZD$n0y'Wg 4xgx>7--v -cfmv>TQ h~&j6v"mZgxGUd 2>#rm~o>YbάO}G*d,w<'y9!{,'gOy" QOƘ><%Ԣ[jr0]ӭD:Ǔ T䙬9sR/ P P5͂ -%U{o2l@[MS%N:w+x;ӹ ],LlfA+ΚhW\5:6##Hdwq<4"PvXr|X +E.z=Q(w^d;A6y!Dx~"#íu7E~5e즮 @ŮJ['"s}8xަm5TNTM nИO;J0i4췍k*+WvCM'y ;ePJIʪ1M~F!*nw7\݅ajL\ByjICw 1?sϥ3PP."rZh ȼP ܗõ"$wE>/gpOs_ ]7a9Pk7|r88J&y h%)-rJAg~IC` iD$K n cXDN _P& |#u n@Hc ȩ;dB$+HA6o.C` i9yRb}7a9-~8'oW[]7a5&Er!:NCA$tb!ۈ4Bؕ}OsNC>iq4P;zމHV - qޯ @grk%6~ \Ac3$׋Z,9T.Yt2[uԆݻrƙЀ^Qab^zed`qr/0,I  -~Ws%=rrw - -OvNzȔb`$,X-&8[3S1g` 0ƓU|<)뙒Q6/2sK%5}Wa6_ţ -endstream -endobj -923 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 922 0 R -/Resources 4 0 R -/Annots [ 924 0 R 925 0 R ] -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -924 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 771.023622 555.889134 526.115269 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Photos/SQLite_Logo.png) ->> ->> -endobj -925 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 526.115269 297.637795 511.100869 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Photos/SQLite_Logo.png) ->> ->> -endobj -926 0 obj -<< -/Filter /FlateDecode -/Length 3460 ->> -stream -x\[#~B_p 0LMB|<}9HjI]%vO3̜cY頋JdqDkg'@/_O1t4 Nx&*6*ŌVo?>{J]Pq; !%3"XoRqNE0~[|w!,$*kZ43/,dv rn:Z/?}J)"1 e Wҩ/2 Mm3,鵱emni_~y/-.ru*#/ϯ.?z/oE\Lb|I~׽ۀF/WK~eLݡ^waV=5<WWI50r24sAJ0=!Z-Q-kLf jѠ_(uɟctV!Ë9eb/E t'T{l^ whT$WЃB8Y o`JfO)Ƭg/7.AuqJCpp͙l|iO-%5[*)+5@V~H.^dWg5RVEqb:@Jum$4& קs$79Јdoļ ϭ ʇ80HUDpL5吊%H(ɿt_RNvu}68tjAW;*';`VD G] @+= !٠=N T"g6%uH#~Fߑ$J۝hȒjnSNX)Z`TC < [)!HPr|c98'I&B(Fq9PV߷ -N}* ,kjN'k&Џtp"0.y櫋GCZOe/Dy}a]wCTј΀mh|;Ԣl -bΒ(!5i4T^_M)p)ߍֻkyr!F\oٚbG55Na opڥ}J-e0_=jX\S=( ~HYu ݩl>N F?kS7ٻݟ?,@XDsgL%%ZLT'SĚq]".[X >Nu,i%CҞu`9sh8d-Ru8t"j{}2i=$`Q`YFlUڌEc^ʲ by9Μ_2T4;0T9($ ! gPZ1Q;4a!9=\0NRb{ vd9,$gpud6-:{ 3Fcܮ(nY-  ,[]ҝ-JS0`$"}BDŽpi氐.@$"{\oȑI氐$"zN vmFqmH -hv%nCܒ[` -I`Kܒ[a I`Kܒ[$ sXHdd6Ē܎q6 vmFR@{+q|PB4sPHNN[}PB4 sXHNN[}P"G&iBrW&%{q 4f6#)ە qKv>&nT9($K'-qK>&n\9,$K'-qK>&n#4a!9+I`Kܒ[X@3۸j8n-JS0`$!n-K0p$!n-rd9,$gpe2 l[Aq=ShFqڌ>nW6-Pi -栐,-pi氐.-EL0 L&-qK>&nHڇ٭H -hv%nCܒ[` -I`Kܒ[a I`Kܒ[$ sXHddv$-}--- qҝ[` -I`Cҽ[a I`Cҽ[$ sXݡ9ۗBztp|LJL[W~_g!sP;^o8@q|:O϶#Nʒ ޏza)>GAt#0ot` ~CDQpH,GDӭ~)~W폸Ճ__mztvGz<>eD@K8*͗БA{שe4LH원`ٟ%$0(Esmj8uSirew4@Ƒպ%MɷʜQRwem/S!hLrQ#ܜP%kdyc)đ[o"ޡzS)5ߖ{ x_T" .Mc=Tܣ*\L &;S퉁Rv;rOz/NzcJn?w(zWsJ]SNHA9!X,5ݗkU[iKK.ի浪k:!Ճ]Ti_@> -endobj -928 0 obj -<< -/Filter /FlateDecode -/Length 3823 ->> -stream -x\َ}WBs_H&$2lvK;'EJ,I-!nؒYys5;RdZg<._EOQ'< vG'Yw4((QRj|9qJ5G8'9m痟N=DTg!Ny>VD1jJy|z?w|ܫvgJB|AZW)+)-/MϕN_{ߣg -AebWx9\uJUܺZVX"JO`oBŲB=OPYV韸'z<|4'Tad8ϙцO3ITORّ}Pcki(Xױ^*D PeVzHNɎ6Ϧ&(U Ro63h"ohQ4k*P"Qe67ȣгqqN^mѰYA0D2:,8\4N3f2 'aa)딨 Lv&[RGQQDP97ə\vIp. {LkalT*.dn1ZLZvIw.32{m5iBi#'؊BLj2UnM  -SGGn`;3ʕT-^JM`@oM\ח2%CԨ p?5>`,O6g+ &Ήu)_703ɤfx9Ջ'F róc{d" N,+yʮQ#( 55R*"dشOdO&SYx?+Ta BQ0,X[\y^SJ(ސL+XbCvbFJYDbAVMȥo䨌]78ng)(PB(KOiiҦNcПᝈv,U -zH+͎ą:zGxy"P|3Y$_cnp3vG2ݽ2\ B5gfI3< Aw6M Ǘ,'#,w;m>رXExT!4 l5޼lLm풫Y-42LS{Yg*g 9[Ge,] - -_uc cG0 A_p1TBWz1rUSmm c9@Rb0ǻm/͘ft{Ž¿KC*dGǀHLΕC;,viڍcoCmZa"odE&\kFxFhVEҺTv`T;Xfإ^gR}{gGOcM7CT>x^m7\` v+"Xra"kxoI'I,߭M:ļZA%,9M6Y.M -p6`uvu |{/DNŜGzV14x{uue&cYxK5"HLˌIyd|Zz-҅:成 -F(ӴߚVD*u,k+d eal.ҷAZh-VYfj.&F,,BWY22Q͢BC&%1W_ ;ʁ`%U!Е:GӒ0Δ528X-fgBTbۯa2*/;`b]Ǽf@ b޶-s7ooL|ºw޶++IwaY}Pk{6M`Rߟp"D\}dOZ]Yä`, 5>—5VA+PX(4}k.ol@s6_F6Rh'ǴVe:JXIA 1ty8) n nr߻rGL  =;]!39e{ ӛjG0 HА|sXo@er;0p:73 Ha!6>Y &sob2[%T;+?/2 y&,AFf>\, -TKM GUyf$-VdL8Y0$69pgfd0],PV1)1j29,滎YL}Wf17#Žż?,&Yl:f1'>\YLuxTaf1{1} [L:>h8}]h#jw -ùYEaf~8(-3z4Ğ~?u8p6 _bwM{}<lxewV -endstream -endobj -929 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 928 0 R -/Resources 4 0 R -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -930 0 obj -<< -/Filter /FlateDecode -/Length 3041 ->> -stream -x[Yo#~ׯX6H$As,<Ȳ0`6HMlRb[ݗиd8rF?N 朷F/_Y慨ϗzf9 -DŽRIh=r߇YέG!d qӏg^B*.<{8.nAdA"ȑ÷Yƹ7(+80Apg<pş/I8 (9ZN02se<|HTufpɍ#k3w{C5C(wtfHgx|f[dEڭPljp'3`}Y71 -a k(0D*0?"D=($AW&~y&C/2]ωD#4X,t?c`/DeLk "]/5Ț%2xo^$F W?-&sz4qfV0FDd(%Vϟkdd] H -\nXmh9dUHœ ־|NӷcZ4G!uv5ߺ_1hdW5F0BTC_+u2Zl ]Ay%(oXB"'?׊)>hVOt) C=!ً; F^D<*ţ*%R -K)ccJ4fVt'I$**ڀ )T׭.\zRrQYyea㐕w-\܄ TsB pFpu((AFΰ>W",.uPtvNJD9oɥ#[|A dGcfSDx Cڵ$Ӿ-TZlM U@7_jٸ1BNXWa!qrK1~F!Jw)739{АVC$5zEmhh|Ub][t@6EZ/&W7h4!NM2^26^#)E]vL$TKR!\  -443\$BÜT/8]I;J~9BY^x`ZG<_^Wl5r~grn+ol807[,cYB̅ -VGP iI 9#d|i.sH!Fn nՈɋ5厼ff)5N2 *@M{WMiM`7m^%^謙s *H2$y7Zdh$=d^G+!0HFsfݶoK?Ix(K6e@-ƆuhXjwYNm['tzUصzz|جtAtk60gEHK0tUY^QS\Q5zDvV쁅V;ykƄ&XeZi`{LRsA)֌&Ν$>1 Fkႆ7]j R9f{J"BoDZ!PJgVCnbr -8*L'8ymEso$/jϡ9 -|뽹Y4҄Mrϡ!&-#T^*S7**z^yh3)x'܆6wG} zȳ"swc3%8IPմJG}Vw4+ӅV;Skv*L/g:'FDi 0|T=v\ -thu}'iJCl*I-iZ##`t^G$quoFX3nUVF h";CL+xLj( -œNo3;H=i)~wvzAa9o*sXU,QYv5 7Po(PXKB~i㗑v?_$y-~UKD -浕nyHU;GړFÞ4d=iU]JoKwG6, "5ə+hsԾ+ht PܴL AJ)Zp~G{Bư}u;rY/2ȵAt7P#N&B~ya᰼q$E.JGde0X% )/ᆏ$}z0x5NެB3o 0k$9BWb>.6@-@Pw"^8yqGof )'0ܺiS&ǮuaL`l6W{Ԏx¶Q`ås.3eN)H҇L;ʞ}Xwm%Ip -endstream -endobj -931 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 930 0 R -/Resources 4 0 R -/Annots [ 932 0 R 933 0 R 934 0 R ] -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -932 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 561.948102 39.386457 546.933702 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/CroppedTyres.png) ->> ->> -endobj -933 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 561.948102 129.386457 473.448102 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/CroppedTyres.png) ->> ->> -endobj -934 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 473.448102 297.637795 458.433702 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/CroppedTyres.png) ->> ->> -endobj -935 0 obj -<< -/Filter /FlateDecode -/Length 2782 ->> -stream -x[[~s^)ڤ8M66 >uPCJ$GhSӾ>)^ff(j9oχgVs{,~,^KkrN8?X\60~y;p!:;!%C1/?>>qi(pZ 9 qOU3O,/PL2F{ufcF$0e" (uGg;saewl ߼D &wI^>>~rɰ[{\8&`ZN׵5kWG(':Kmla8~֓RzډcglHeQb'`"YHC<oU1K`^sje3g^ -f5%^N iLC+لi̡@b08F ˢ\=R6څP,VV+$ԉq!Y˹4|;R Ro jvɕ2/{\-'3UfB|:ʥKj.MmѰ&fǯ^_ghZum^ʣk `ڵ^S]@l];B=n'DJRK-?)QRmf.SQz_8[W4~~TȊr~7WٱUS&n[b4|QԼ5&5mLuMadK$]Y_Y޶A(UU]kδ/8BoGpTvgIv)gR9d>E=Dxm.jf8=x˕-=\T];ZDɘJkb*wMi/_e)s^^E#9Ϙۆ,{1lVl ΄Zl+iC; U[It^G~ȼ9x׶M!8񸚗1u᭔du2')_6n-8(m,LbXb $[7ZjeZ%wԶnܫ8qnxbnON<᝜[YcV0HnB w4[}A`Q xhShxWɥ=I W<ۻrȅ99A`1#lլv LX&!`'<I{8# ɡIaV}GzΈ/lGwɊF,bo"i:!XHBLH,Gl8on&|Z4gbMQiͬ祸b֢ȾScWSQ}Id-P -0F?,s&&^I1Ŀ_&5RaS2BXq5i%~\'òt5Ҷw9B: FӪD #_w}*ENp ^ryp t9=m3%B"14ϛû`%3,r -]IRH,Bx#ʌzƌÑk%^OJ.);S2ɕv5')qCdبw97@x}=ֺ!і˕$c8cz1]v =}C]!\ɬODCY@znj{+v >$SkNjݵ\ A.F>7:qo_"5jXLM&l,n߲ N ޷e ; &gW; #aqk؉y׆{at>A'A{{,%9FשѽɪsQr=9S;ɣU՚YkH_q[!șn4$BVӧ v -@*0?s[\(Џh`-,tdtfߏ}  Vίdc%aws9akñ$-$/oRBp{gzǿ՘E .H`'FAFg!ߴ&3q'q?秇вlCz^4Cw% ½fLJDex<vV|Ă?B9x.A.sI(szi+<K126)+ 1r -endstream -endobj -936 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 935 0 R -/Resources 4 0 R -/Annots [ 937 0 R 938 0 R 939 0 R ] -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -937 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 267.179358 39.386457 252.164958 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/SmallDriverInfoExemple.png) ->> ->> -endobj -938 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 267.179358 251.636457 93.929358 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/SmallDriverInfoExemple.png) ->> ->> -endobj -939 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 93.929358 297.637795 78.914958 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/SmallDriverInfoExemple.png) ->> ->> -endobj -940 0 obj -<< -/Filter /FlateDecode -/Length 2541 ->> -stream -x[ݮ SV#~[bڢgE, -촘dɦm9N^8-Qȏ1Gͯo Шwx/1G#* x&(cnP|_>1*2Jwcz(}?+OOU_ xWS1w4(@_?'i-Ï/|+?.Zc_5__:]̟+?/MY{)6:q<'+x %ݟ~Nr j04 w|Z=ݪe֣V% 4Zm}n#[X¾aQd/⛈mu}kJ[y,]7Է|,չ>O]p[ 3;׬vY:Hzw;o՞ tɬtY/TKo`b ֗z`熂IЗ+L}N_SF'.zS;1&ړ+ 7cI9K瞯)]:!-ɐuYC{J$a| XJ[1}. -$¡F<`o1+^ _g;nkT_GcRz:s6 pcL0X;#2 w;XTøP $ -cWK!{_Yl5*|Ia4/ Jt#ZaSZqoUɰ`@U/'_݇B[mQqj5+if܈;ayb41Q9Bni3d+d|ByEr6OՍv \=4fi+ -Ť\rXqɽJWcr֚;-j vpkvLYT8'G?Bk@aqVme o[c9+1Va@F4ҮS! cs@f,@a#6{#Qƿ CqrQ1wYLsBic>0/wy(* 4湞F 6Y;$cO G=vh-cy ߅%Y\XPU]O> -endobj -942 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 468.052902 39.386457 453.038502 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/SmallDriverInfoFullExemple.png) ->> ->> -endobj -943 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 468.052902 555.889134 232.610086 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/SmallDriverInfoFullExemple.png) ->> ->> -endobj -944 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 232.610086 297.637795 217.595686 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/SmallDriverInfoFullExemple.png) ->> ->> -endobj -945 0 obj -<< -/Filter /FlateDecode -/Length 3066 ->> -stream -xي$񽾢~Iy0f>Tt-pH)"Xy~(%()-^H R/GR_ߍ߮%yT ײIy-^zZkkX`/vyD[(tem" DW!R=J}yIF<^ILB<%8HSkb)T`U8)b8aR"hz/ -!J*nK`"z75Нpu=͙n*/6uDt=BFgP.Nn&0$?żN]Jzߌ}y;D! -]0I'"_UA(HguǨ:;(|o'X_//vM*4.{#X_W{\NOC{'0LtCG/ux{.,{-&l{xKusJygQ?ttG)hSҋ`V&>o.&6$0џ#RqUυŨ*U\" E}j -5)s; uXATBSh!¡ơ>Da zdXJLӌ5SejO\dqx4 -#( -!*6LMl2>YD Hl4(d -6}RQbG^*R9z578ԯ}>3NjJQغ'FD\YcW]񍰌( "cڵ5$zB@x`Xc 'DsSmil<{CY}AcuZ&rU LدL-*F_Ke/1k ΁Mf=V},^SWmqaUnq(*@jU,!`?8gbG<ֿAenv׵7 -aiָ -3j M~:y C`fցxr6#E%+j"Ry° 7tc*(<2xVH'o0C)Z2 !)&uXPuIpG{K3-6ebJ@_kdW75QĿס- 7V; ta!䒋IîoPZk'ގ%@ydoHXa\?\Z #pLJDDžDDDU]a_;àvD=.O ~{୛Y|m_L#Hx0ArGQKar noIMuF(ͣ"&e ڲaocֿ3o -B}~*O}cg9S͓R`4Lٹ%i2$Ң=Ԩަ 2f>[3 g.]-R#rE8@N} k 8<ηdѓvA`3~FjsI'BXg):ˑeY3p9G$d@dn OK3(+Jo<~vnȠ 6ʏ}3wF;c@ThGIiWߏ_H.[Zlk0:P\LKG&/N Rᎉpv](b]wȃmIF6۷KcqZäWDŽv} R"(@D{FV+&R(澷bAUxp -?kN_=o՘8rO% -wUs\Ti\|g'=ku=ut O>8vemf9M9=s ax+rz (aix̗ZQ*|0zCJc -xV\Rdz28cY{A6:="Wٹ1nZZg&*'򈨙is&[8s hD9C6htMNG̚$sY+ңxIF~\^Rc(Y6!^?AG>x"ƟX3WK,uY@bL -UmR"뎒M39 U==oRn[@Jh9BMm %pShrx so_7AI/rɉ9]G݆l𤾟ls5@G`^rI-BmW[fUkSㇶwl~ѩwOlƐG5>\f̣eVˑCPAGxzĴ to\nE *qh8cD5LwMZ:K ( Rh=}n4zRݽJq-S24l#v(v(Woi5qPcv kH ޠ<#zmF=cnF.)]Gf `^|83.le->k-m#V)2K^k9k}7DliJY!5G>y;b d6&K0b=:2Gt^[_`εgK2y (6?弝Cm UyG\~W|1mp.r){@~:|,]"|{Yo_5O9ҘMQN? -&,tX,}m)ϥ|jImVW{@ķpR1ڲhnVQG/?0({TWD/V\'.A ~ؿEIm((;'?$w5~wj -endstream -endobj -946 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 945 0 R -/Resources 4 0 R -/Annots [ 947 0 R 948 0 R 949 0 R ] -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -947 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 355.166970 39.386457 340.152570 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/BattlesWindowExemple.png) ->> ->> -endobj -948 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 355.166970 555.889134 154.844658 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/BattlesWindowExemple.png) ->> ->> -endobj -949 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 154.844658 297.637795 139.830258 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/BattlesWindowExemple.png) ->> ->> -endobj -950 0 obj -<< -/Filter /FlateDecode -/Length 2158 ->> -stream -xZێ#5}WloF@ ! @3Y]_vn3I'սN#7y-F'g0?|8 OQ?߇rtv~ ~hR/z78!7aw'1Z߅8F'}|Ĉ5Z(G/zx~xӷ}7?|ld#ϥ2{xx 9<Ƥ5t^Ҽb$m0xЎ#ygxkgxo pގ45)Q8odPZ`*-;J5 -.GAO(t|V8piF<8Y@ވ-d-Zd-AD(푵0 -km #K{8xZIq'E_i\.\f0reƓ tb(>U],tInUa",&TR C\ne|$CkAM.4iQUƖ\n$BaIy> fvSliLS;1ojWĨf,L$MX%3qnH '(F1 hsG.zO"w&<<(QҊsRIDZ 5ML~,xcy/г"Ȃեi/.`< x[cԈe]xx0qI.-/L 7 Z8//=mXǴgV,) ;UU|Q]XW%$}Rے" y!JjD~Bwc /97 a%?E}'i/_z92˓:|Wn~54Q=Ɍe tϜN!nDYŽL#iTTOb1I5Ō2/s=??CFIHSh ]k2u8B*iT͜ {tGZN _gʛPyE)vRTٽghB -V-ImAm"xBL" 4R5ߣ`aF*bp~LuUaʨLi[.9& V~Zlf]rKIi˚8#^Ɇ*j* sh6hv ;[`6A!o"P\k Z'h"!#D !9]'g֠ -r󏃀`)gi|s5ri+F.GqݑFuQN:wz#3QVIPqʕxyS PFkpWS`w;g+y.c[mCS\5, v7A`^({л9l<0byTtU3iX G͹{牉2$nj%]v"|T]&ɑ1XQ4;-!PkUk2uqs5f{uZQZ4ZS jk{ -;rK! *lrkn-#Uȯ^F#Up,')Mfʩ2)U^ N=-`- ES>66B"<򴗰Ar{W³Lrl9Wj] Q 'w)tW*Ҭ\OtLUٯUG|-z -}-JԢu,g-P72k$h}Ƴ l~25> -endobj -952 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 598.358022 39.386457 583.343622 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/OvertakesWindowExemple.png) ->> ->> -endobj -953 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 598.358022 277.136457 481.358022 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/OvertakesWindowExemple.png) ->> ->> -endobj -954 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 481.358022 297.637795 466.343622 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/OvertakesWindowExemple.png) ->> ->> -endobj -955 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 154.044102 39.386457 139.029702 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/SlowestAndFastestExemple.png) ->> ->> -endobj 956 0 obj << /Filter /FlateDecode -/Length 2582 +/Length 1037 >> stream -x[[+9~ϯ벫|F󀀕:HLfBKvwotDtjw+AӗV4͗|Or^HƻsD!@gAhcZϿ~8* `".PwPN7hjzQe6 A9'ꤐنڍYqwև %=?v{\o//x5o_#ax^.geeabYY_.mt*HMg}:C$ϟ&2L4g %@=ȣ0Ek &ǷN^2\c?Ø40&F0poeux9ӵ<cp|r$4ӄ#e;$ko&E70%ND,Lc[ƅ1*g =H- Q>1ʓoCXUUڱZ9Hq}um_*FRi4d&&z&@GaXW}R [Q8F~ -q :>%X ew3/;xԒ4{|v^$P;S2 .y6L*2kkE>IwC2l dpA~5*10`y\:wq}YVd%#}ffyY/^"5T܈%XiAޫ.,>^ GCrc|aS@+eP ]Sy#3%ҡ&CK@"%/e(l6pH(DeE ٶ &5tI !:hx_Ͳs(4""ܭwX_+eᙑ$= s%5-kTj\JNI;[P$[kZYmVtq_%OW $<<΁V5,j-kR.|\ - q*tuq{ZN EH'Z/+7Q |!3CloK>V**VA5 o0π!>V8QOՍH skqOLdZn g҈ᡶwF!.]T3+Ir2-Z9RI}yyԒUY̵0j2Ԑv*/5,zG%L$Vq+&7ݼWd%LCݕUMj -:˕Rj$]fuEà~WA=.btmT? ӷUtyy'[ wĀo '_Bj=KԂS:?_3#}?Ffp> A<ė2(Dhz6Cql`ls*;*mè wNcHdJӉn3&ѭSu1t+\}i")CL4M_/061x [a b d]ﶴaC{ԋe0pnx,kġ鰆,kZB{^Ǖ%B1h4z}="7}GtxoZ:G|㚊x|ĔC : GKw\tCg.u Oh{D#z#cQ@T9|T.~ iktT F%QS 9Ia$-wtuHI ɒ5+X5p,Wnq5 ti -(:3m -HiH!f*uS` ff{lβhS赹w̍OѝfEy}兵T;v4#SҲ)}(ZIr2ڸp}cN}m_QE K:'j@,x'*hM6^vz~B_?(S`SU;U}|GU=*W!>*驟4xzۋ7rk<0 7랋 x>(5+i3PET<ZEx->B[uنcT6W<BVgNǣ =b)[ 됃bn_e)sP 5z+1f=rQGM+2<:-+[]6c{fݔ5Z'ļ3lH?+ M];E&Se5)0Nߵsmwƒ{RSٴ.v_i [vR>UY__oRsc.[Z`fSpOeqKS7< -YZ3 iy| 'I?L?c\> /A << /Type /Action /S /URI -/URI (./Images/Screens/SlowestAndFastestExemple.png) +/URI (./Images/Screens/F1TVHIGHERRES.png) >> >> endobj @@ -13304,47 +12974,39 @@ endobj << /Type /Annot /Subtype /Link -/Rect [ 297.637795 511.288080 297.637795 496.273680 ] +/Rect [ 297.637795 263.273622 297.637795 248.259222 ] /BS << /W 0 >> /A << /Type /Action /S /URI -/URI (./Images/Screens/SlowestAndFastestExemple.png) +/URI (./Images/Screens/F1TVHIGHERRES.png) >> >> endobj 960 0 obj << /Filter /FlateDecode -/Length 5270 +/Length 2574 >> stream -x]]oq}ׯг]B ױ / pa3ßQbxwCZV[RGuޅ19o?x8sV[_>=^󣖿M}هZꐛ?>djT;-WwP&!\u(6 6D 0L=wa#^چ` -rxϽ^ݥ;ŸsCkp KIW!R cB!/RD|J&DK}ZA@]We!uڠ+E6벹(Dn$`T7mT7TR]_M8R]׼p@E B@xj)A\h"G&ݨn - -t1doNx2>&wnȸp{kK -w83d,{fȔ,{\$vOSISXp9XH:I՛{jV@^OhN"Bg&GlI1QH/"uNޫ8L9z=QgPEΰEH_ :4B=CRK/x/@y Bb9eP瘫EΡB}1:;A|)7|)Wk>& p_ʨv_B؍:-LyJ*I98 JFa'/ȁ |AdBTɂl -;i|AE @L1)ٛsIU5@V5`A_IA_:v qS0ޓ%;7e}'{B7Xn/e_6c9i'~_}Z|ׇd7OW!d0rl+8g=cgNk^vi{g\ڻ[?SΩˮr3͓sz%s9ƅ~ ?_~ooXhA=,='jx\>t}g܋ǹ -<2xnttDޭ&,t5S݈V{Yk\roܵɳWunE&m>6?ΟGEiw`J%tOg.uM/Ģ%f\=s϶u&Ȓͬ:onsST}cϼ[ MmO};FШ⛨57!"]*"zurιPoSȍL4󲤏^'ѻM 71s GnRȼyX}u=v qoN?73]F,`Sc|e5ߝKЧJfB&sec^Z\vuӊ~E9&1J4}ǵƵ#K)^-}}҇dKi7v>+.uҖ}y&<ֳ^jcW:SrZV(k-WI,ϒ~áG[6.ݥfLwW_ѽSIw^C}?P.JW_+߷QLrxܧUʞ̾t"=-o+UrO`y  -#X_ܺT@x3:G68]5su*ŹG19^ɋA!6?BU{q:oԯ.oi1F_sDm WWțonxZoK6ʎ40Ts-؏,jο̭=oʣюޫ(V%^RՀ+'&5W:ǥ+}#O9;1Y 8Ν);}s}Dg˓N}뜯:}Kِ-b_ok]7ssP5˯_697sߖ'+g+;Y.N˱w3}wrFjpya+l9jesQ췱[pu7Y(Fiomq8 a\_7 qNM pcqc۶/k] W}ies/G7?=pJE]^.{˦YmxnMg1%XhΏj3r u -z,aWVqt'$\k<:~ X:lCLu)95vWnkWaI_/I.!Գ|(;Āf|/n_s2p}_A[|,TQU廟i{u W7'о^ {>tU~\(5ǍwGΈ]9(\6f/uY$:_V9ӵc͐MzjR0|695>42\ ? ʕ/SɇSw\0G"98?,]WZtW@sLih7[znyf8 -ߡU<+Tv3?>补)7{3soŤ52=~6OL<~vudr@QAݴx,ӴsZ</4ʌhq6*g5~o7rϻPF*\eg2IX)X/iwukk%} +x[Ɏ#+\F ۇ/aZJFp LRRg +jUf`,/d!DA +"? ?_ A{wVTGPJj7`|RJi-@E PχO'%nжn<1R /Eq ƑA/>/?~[ЌðVhi539߉5]s+>-3.{v9dёgjᕊ;V-' +-蚶r4kCKkϜ5.|&(uV=bC7o2l;VjK^oQ}fJ#UHfп4~q?K!ORZ"ao\#lRHĢXTК;;- +:pe΢"R DJp)4hDZkpBz@kOu \y6@#Q@LJ*"UذG̠1hmF_`̂ fYLs'˒"XbIha%nC~/[NDhObRyk3r< 3 +c,0zd>x +JZi7ǥ%jӂ=Y1o6I/27G[6.ѱD`f\FBYkc'c!^PCZ4Py"PukbA5PM MTC\C݆OCYcAZzF:.S0xuKB\a"Ҧɢ&^s&)"W:n `Ui2Db%R +3SQ, ]_  S`Ԟ+)gX55VnRzoP/e&VeJ̈́ԇZPQ ܨ:yu!Hn^yT'w92G3W +'Lgʛd{ kV-"[qqbE܂69hQN1< W +#wZcjc +=.Xm.3V{h<=AFT$ h?!Iғj<s^ .OI.>.S(3j!l`tgL>mou7+X]4gX)*SYv!aGe,WSS7Dlo-$:"S!(dg#OF+1]F pǀJTK=573cx:! ͍ΙO_ˮS60008Luhw^$~ֱ.锎jc6"xPq,1{@uOO__1mR0Ǥ8Q|+<~ygAúl +~9#Yaۣ749G#f GPhZ!^$&C|+ -`0r~G^ɟ3WCR >:7RpNjx&fTDN"ڍo"q3HԘTP}UY?{K 3.:nxڑR_Z;ާ:RQ|oVZuݯ$Qd)&-z9}β}x|^GC?*2Y>~f,%m7 \}Oj]ʰXKuV{pP`&D)vhu%2SFhz A+.D&T+ޢb;Ma5Up,aU<M}s6}$_{4 UtH{?ϗ D$ΗD9o += 2ob^d!u_J +~|eLnSU飷CP2LV`E ~9Dt;1o $٠KTZ( +(i[C endstream endobj 961 0 obj @@ -13354,298 +13016,2072 @@ endobj /MediaBox [ 0 0 595.275591 841.889764 ] /Contents 960 0 R /Resources 4 0 R +/Annots [ 962 0 R 963 0 R 964 0 R 965 0 R 966 0 R 967 0 R 968 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj 962 0 obj << -/Filter /FlateDecode -/Length 3744 +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 350.620422 39.386457 335.606022 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/VanishRaw.png) +>> >> -stream -x\[,~_1φȺ_ఐ@lplHq;{/v8RRԥ[ff!gYϬ[{}UR[8N>}ę3;?' F:{ -i''<KJ1ۧwA1ǹ$̈`wS积_㧟t -o'Xq,듉S%b/հaYO_!YiT/͜PߩR; s҂?||3kڄ/g^zO_w'qݏ~\^8מsQ2㘎/si W3&ϫ} cKg:z6ρk9e/=uB{iKke}y4ȼ(NW[u+saGF:ap|̓Gǵmf1]2s$s1m? @)@V05(߈&+ZX)>O?[6Oc"h+?ѭ4+nfn588b ܖeϛWkfr\y-Qb=(6@]3Ԅj_gK6 gm)?|oN09<r>:xENxf /P|C~l5[Wt#W -8ݔ#g g^չ`Y=`z哝:5B)$t]4\QOU?j4=WgRĶk% -M5Ji6ʚ(GAkfޡa$wTFlP|oh(sAi}M}3F2쐶Gcf8W - ^$/ E*;&{4u }nIXP}sS562F>gm\ϙ^Ҋ5m& `[O@ <E/JDnAxB1)04؝j>,7І\SvAi9 -ibqֵh-4-'| -8$"Mse*PBEȪ9 -qd5v{bV[^ ^ε!EÛྒCKEor]sePTJ&m!i`s՜rˠoG=Pɭ 2v7W׊,^)l;9}SQ;m6e_ ^*K9ѧw\@l48m-5[/mʈ웘S:nWT,\!< - ^deu*I -˦6@Ӊ|βѲ6QQo!rd)ϔFjNb1q!>enQa z ܒ -ɼ;:3MAA[;MM/GigRQv׉$~9X՝ϛiH1JFM*< z[X&lOOZFtX8T3<?w66h=-9hz\[ݢ#;{u^6-Əj]<ݓw٤ %U6Fwuv⃎W1+eY6/*9arݳDqeK`sƃAD },8$6e'[UcIEW^vU`qp =q["3K[uÀ>c@Ajn3v)xі<咁,foL>ƶ2{0?vlT)+ɀd屎O洀x͟RFDž~df2F< -PY|#Ҷ0]%f3v> Ђ#ZPmK -Y0ausJm-fPѷ0翎/h -endstream endobj 963 0 obj << -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 962 0 R -/Resources 4 0 R -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 350.620422 181.886457 304.120422 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/VanishRaw.png) +>> >> endobj 964 0 obj << -/Filter /FlateDecode -/Length 3295 +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 304.120422 297.637795 289.106022 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/VanishRaw.png) +>> >> -stream -x]ێ}WfI`rLHAMM9ʈw= - kmH黿tf҄O!_G]uM)+bymhל/zrǩ-ku=kgJҗ};\|cwS,UV<~*k ׹گE\*Lȷ޷w*8|7GZH{΃z-$߈/B kn(%_@UEɏA5&ˢocMo@SEG.}x ` Uƅ2Nwf]z^hm.79~q妄޼^Lt[?!Mp^*4gR$Oy[#/V*xG㣃%7&}ԫv&Jae">JNvv&xm3gГ1 +5iep^KP-"Lʪ;TYP5Ku`\%yQ. *+ʪI"5 uY5Iţ mȱ䦍rȆ)suiN -ՠOCCQ[k}g 8\LdOd,U-9ipzOAxsoq$Z#\ ?G1\߃TkxcA檉4U;٦Mڴu z0Ng=`=3CS9"͐ǘ|>F(ZUs%C, Qp!a(!ER [x'\9̶xE3^QݶX5׍ݴk!t1Ɛ'Py^sod0Xe1$>$L/iXjܱTHG0\K t04AL614Oי%5f}p1bflH= .Lc$Σ;g'V%;5(!Njr,bNKpݴa1b V';I HX!{`Ϡe;<rTl@4}lW`A~txg+bQ=rBZCa` d d˺-pwtOv\PAnWf '/ G,[7{7ڷ5*f.~j)4dFsCl>$:BC0R~á QE,ٟ' jy CkyXML$ۗbʅK]{P F6v`3CAlnխd<$8qf1,G`(y^sEQG⭏[k)yb$[ޱx ]5C`kg7lz2Vf+Wp8 갂qcQO k+~V[CiFZaB q>HrB''5;[m{(b bɇf /ʞ`Mv*\ayL.hyOߛJ 3(D/CgUVh wY) - YVN*^D݁f&1ͧ0FO]ěm蔱{2Б -\q-(@y۽V_{-5qC(a-x3_$K @|+| B hHכBQ$K9Q9Zg%yҤ@lڍtMAR!ߌ6h I[DZOɼ^YLat,Qvd_t^s@zyUj{5s6?Iٗ)e"WkrtJ=9#Ӟ>˦k2cR*}_Q6{e {f%+{FWO;$v"(,a BG0.Fڕm6H錶xGԁ=hQHx_y`[+6,f;7,4;a oZ`Gt]/pPz'TxX5ZqX5m#۶ka`Y&,1rCFcȊp;?l7fչ=WR$lUy^v(XЎzB {])P 9M@PK<_FǕn>ɴJ'jj9O^:& HՀ۹{v鎵5hC?XdnhQ)[EusV ޽k?ѥ:*̽tTϋ=v`@ygj!j<* -\sw˩opmHB|dAod;S)lU^ `gݟ)]!ОA6Zc/*􎪇8s,cÞr7-]"Fds/#ّ k`xc92DK k:}-CM=wk!YTvpUC͂ov?Z]f@yU!B-7pzP-MBQxVq+|p1zbn8BCO|j%xX3[85J X3y3kkPq_GBۖY - FV/ac;l|? -MO^Afi Xp -*ﱊK+Ó:zs@v874Z)>x]#H0k+•|Wnnu+D :ſw4"ͽaʑJ8sVOX2n,20;a#ob0"/H[^>֗S3%7(91_&ܡוChצA -^u0.Sq]4,ltEw{^EWCg^ -endstream endobj 965 0 obj << -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 964 0 R -/Resources 4 0 R -/Annots [ 966 0 R ] -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 245.939622 39.386457 230.925222 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/VanishGrayScale.png) +>> >> endobj 966 0 obj << /Type /Annot /Subtype /Link -/Rect [ 39.386457 284.148858 39.386457 269.134458 ] +/Rect [ 39.386457 245.939622 181.886457 199.439622 ] /BS << /W 0 >> /A << /Type /Action /S /URI -/URI (./Images/Screens/DataSetGaps.png) +/URI (./Images/Screens/VanishGrayScale.png) >> >> endobj 967 0 obj << -/Filter /FlateDecode -/Length 2196 +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 199.439622 297.637795 184.425222 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/VanishGrayScale.png) +>> >> -stream -xZ[+~@/p0$4yHSh`|fq ^ms @+u !2̑ؠEύ&!Wp`t+$x=]wDd h ytupfM@$1>k3I -F%f=<'W^NQXً[%!4P')]Cie.rWѠBIJ&ވFb ͘'8DLoR:,<Q7MT$)9l12%QVe@E,(.ʫ*nc&CB`DŽ"Q铚v$]u>^,%A{E3'e1wBLvjWcIUJ\yghwa*>eZDZ髗ůAvF񪵗D|l -iv6qO"aƌI "GH* DŽ]geԹ =Dj],D&) c4qh%gsϲYJwt~Piύx!pA,d` SI.Hk@M]mǛ> -gcmdM~Ko -dφʑR&i~&jTD\yId -tPZ;bߑ$dt+#h0@ Ywu 3XǗ,04օOWÄ0 -JqDNG;e\ʠ|Cnw5m`Gt##~6,NFR0Un5&LGU}CO|735ROvWМvzY٬_A4gFڇݻ\DWat?D֦@FR-ᝣ;HruJ)Qct{@ZPw -$AV2MiT-`b`z7ꐥ;GԈH?52{&$$4 mZd%(}5+gvRJ\D\PK]cxo4Yz"l.'1C0/AK0Y>s+ -*+W1x7;쥔"JɅ - xMg>{=^j ߲@ - -- - 3`J{[CeÑ0zء+o | -3E@ }|>ce;kb8Y4 L?a('n3s%CqF3.]ZߞFd)|Pʺ[|Ax׶?Wy饈C/x-?@NT'"`eB6z$ޮ&vU9XiHv -endstream endobj 968 0 obj << -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 967 0 R -/Resources 4 0 R -/Annots [ 969 0 R 970 0 R ] -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 86.831622 39.386457 71.817222 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/VanishVanish.png) +>> >> endobj 969 0 obj << -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 771.023622 555.889134 551.235249 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/DataSetGaps.png) ->> +/Filter /FlateDecode +/Length 2144 >> +stream +xZ[E~_˺_ (``EE|(CfDpkDZZvZ#oTǨpVd*a(u;ʒ_v@.i+S2DkF wkDgX|[^7˼ٌR#@N+uU7|`>/"j 9 Z3p7bF 84xrnH/iHAf'uVI}/ڼ}LYO>=9NPq tډ'4?9 : jD D$ahzp`F(JL.DvT -k($4:Cݍh +8A^'Jh6Nhռ2NJ4PUB{ c~*bH)8\PT̞$_џ=07Hn%;r-I H#T4m6jXY&IߥprsWIKbʎ:EAƊ`5&E<4FmhcX +ht8@#mC"iL m]VPyáif#)9IJnw45AjQr9QX޻Cs&w\-&-9DNO'zy*rPS%Ԣ+bNQ" (>,Aޝ8E;;yUH uh!SgMYk>TXk48&)|cԐ뷆 Y5d/[b!؋| Eycz` >!b[솬 ̊L)G놜5,NH0Q5{_I7Lф-KoUb4&\ +:?hh>>$N\C= :ĆD ZZj4`NAeVײTı YɯsNl\%q//LW?|If5B9gÄ0#:8#3G3\73LR.m )_y}-[M2PIcXj[8➼-$c{B*uz.Lvyv>K]+!*%nL[3Ho> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/DataSetGaps.png) ->> +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 969 0 R +/Resources 4 0 R +/Annots [ 971 0 R 972 0 R 973 0 R 974 0 R 975 0 R ] +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] >> endobj 971 0 obj << -/Filter /FlateDecode -/Length 5388 +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 771.023622 181.886457 724.523622 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/VanishVanish.png) +>> >> -stream -x]]o$q|X, փ$p$~rz3 hvdtg.쮩̪&_KZ%='w2brOO^jϡ.5s cO/չ!\e=/o?BRr9v)W<̩a|e_AL.-Jìu%E!}.P -<2{נlAȀ-ȃHp$v 7<+[Qق<Ƀ;<M52ޝy0+?$}$vG+AH52c+[;y!(;Y)P1 cj."䢰o;Qa(sDPPvoUa2# [D`l(e-"xE.52c<1Nb]V9c11EagE/G vVE̎=d12%d;xMTZP1,'ʌ@aO9l)3Tl)/]a̮JXzr'([e a.ʜzW(Q\٢Rf^)3hRfrWٍQ2&A;x0%v lUc2-52S;eW+2#sS fy0S/ -{"VDLNz""Uʔa):3/ƀ/ҷ1k0H5 b cBgy~Cx3h^@Y= 2gx7P #Of[c잿:Is?ws#[!Kajo [pTh/ˌևP~]CMW{ÀCT+]=nCX[qmכ'/{o^zX/FûbGsVA?05 2̀;a>mU3~\VAY-'r3î+oƧq@wcwMRurm s#VdL68&H9DŽΒGsL:Wf *=wI ]_VԒSKg/ -*E/_Z(JINyg;^..ǰM<3}t;a6[sISs,hg|q5GW'+#N;*\{1e}fxt>&v& ~;tٲnq AGddc -Hf׽slIt7$43B\з3\#p; weGx$M6uq—s67f13&5.;;K(LyylmwƵӲ ;C¬c0<~alh4`+lJYᖕ35Ld&Mg֡cϮr7Ij5{[بw9;Ϩ{|s:rcQ6p6,*Pv/v:_ ꗜ΀&Ip6ذ՝9ȈLg*ny-Y@v;VYUyr呣Qʬ4]os-_nfd6ْ[DWC+uUE/5^Z0@ۇ15x3nםH]f'N)牗l n9j4li2747y$͟ުm8D˳K;vCcX},Y+, ےΝ/ӳe.aK.tڄy?5j0"=p}uvևo'0)p;)YV^1RF6譈[mIx:Qy=UP }guL{3Bl')د*qXm˸㖷bάKbY[`~]?nf6>=pNP[baYYhxmG;4DO4x=&jr t7P_܂x -ycI .Лc ,=ޖ  鑊&܀ =N!HPdq]|b<҃P-ų3"f}qeG̸o8/W Yad8K쮇]Q?+ &- -|{hY\J9i.Ϣ?ޜٗX6p9]HfOT7_F0j9}G`vPqcf5lyxO{SM޽`;}EJxk8Rغ{,cʁaw#okֳ-ao-ѩ6E =_{^[~SL/M`N;/뿣|36vR~RX*ʅwt?*FK៺ f PX]-/! UXbo%}N6+/_>:aXe>|h -endstream endobj 972 0 obj << -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 971 0 R -/Resources 4 0 R -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 724.523622 297.637795 709.509222 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/VanishVanish.png) +>> >> endobj 973 0 obj << -/Filter /FlateDecode -/Length 2681 +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 351.040422 39.386457 336.026022 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/SobelArtefacts.png) +>> >> -stream -x[K賁|8@|p &pÇm_l"?HfvfG-RT"[E#fILފ/h>/''?[y6 AeJǛZOh-O?-YO^YJ&+g2C_:}y8_H Ju*L>.K%b춤lr/"0 i̅O)=>0y. _$䔘pgv[mJX NNΥǬ'ղm1EÈrdNz3)TƜ_>?ߜBZr?$2Bh&^ &nw5gB\q=]_Z#ݓ_7ӺK񰮛 [Kt{.y͟3Oeͅ G¸cDյtYߙty"!iP×ny=/t=2RI/#fl*y= i[&0 -fCo|e0,J5un. .+ yW+=P{52s+D:@uq.x et -$A>t}+"ZH p/$Rt]sG+-Y.[sivו^X߭ŧ[ *Vd#w#vL%ddEKVtMu ɸZ oQ~*(Z%\_:Z"S4/_Xc pVIÒ߅.Ff;IVH}=8L^;W9p\!ey;<`˙J\#f&i`xbboz;)CBX0x/6m xy-9t -H{/ }|_:vnUq_̀͝> T,;i=,Ҡ`Vct?1C]HBfz#.-'ۍ3z=r߮}Aw'7bkz6χVBp&@BƝ5 -0`zÍ]m^]r`=Jnk65fU($Îb.vlDV.psy'#1'(/t2,eM9mHv~rD~C 5t-|!L$uF*|/OA#sX}T sU6j^ ͂֬}_ʈn%% -endstream endobj 974 0 obj << -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 973 0 R -/Resources 4 0 R -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 351.040422 211.136457 302.290422 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/SobelArtefacts.png) +>> >> endobj 975 0 obj << -/Filter /FlateDecode -/Length 9639 +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 302.290422 297.637795 287.276022 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/SobelArtefacts.png) +>> >> -stream -x]Hr`+lL@X?6}4-,0lDxUƑZn`K+L~;e|ck~w˶F<㿿X?ex8e]yyߎemޏ45}wǗw_⃾~TE㾮~ݚs9~8?MyyO[_Zy]~R<xHon^eosÿ<ᇳ\?xymx9h[3DfK <@湍L˰He$8^#p$H; -[wh͒"a݆Y wi-Ý7Kzpݒ3qߤ w8Fi={i t˱1 41Y c-#]&KpiwiE]t`y?K|MZ!`uf9jcknjyi8fsۥ))cY:`e7}ʘ]s"Wkח5k9b޶Cs#$3LsCŜ1/hpɘQs_2i-9Œ1emD-nB}>kQ[[D[Zbm%oBs_3e[41Y8-1{ܳàg"dkSnk6ưgngJ1nmu0Ds:Ms:8 P2&bu:+a5Q|vkMYǘY[d u0&n{Yᘭ-FܳǠgXo1Gy-pZ?:Gs:8Dܳs|1sYrkY~,qDi6NJИ=m0%rb0k!c٨>kQsj3[[Dac"m]5%cds-֌9.Ś1~fæG۱mQXLQszج-`xhQ{˘㰶hs[r2E[[KVHf}u͘)@O51O2q}-&{F35b`G3۾upjm}=b˘cdos,=cVWb01 Я9eCܣN41Il_=pD:Y35Qs?2܏y>l_ sT9iu0r˽eeyw"H˞)1 g --`̐41iܳ.l-iu0F{ 4Qm_e̡"`t {в{ܳΛ>KjYپz:8amup~0cw=`6l_eŌ=ShY\X?:M=`L4Qm_ecZ45qkYھz:aZB:%Ws:8"`dn-ฯLeUs:8ܳQ-:8ΛupܳE1"pì~hY}ܳ`-{er߲hoYc)c[אl0[[8f=xoQc[18bܣ4)c^oS<7{MsLis<賤-LJLa:8ۡG;,UW%L/r.DezT͎PfEvq˯_͊_oY.ǟ}R{u=ryc?cY.ǟs=/O{FGj{D=R##5=R##5=R")nH`H`HGj{FGj{FGJb=" 0#`LG{DaGj#`=" 0#5aG{D쑚0#`=" Ht{DaG{f=" 0#`=R3{DaGn=" 0#`LG{DaGJb=" 0#`LG{DaGj#`=" 0#5aG{D쑚0#`=" Ht{DaG{f=" 0#`=R3{DaGn=" 0#`LG{DaGJb=" 0#`LG{DaGj#`=" 0#5aG{D쑚0#`=" Ht{DaG{f=" 0#`=R3{DaGn=" 0#`LG{DaGJb=" 0#`LG{DaGj#`=" 0#5aG{D쑚0#`=" Ht{DaG{f=" 0#`=R3{DaGn=" 0#`LG{DaGJb=" 0#=R3{DaGO{f=" 0#`Ht{DaGf?푚0#`="~#5aG{DGj#`=" 0iLG{Dan=" 0#=R3{DaGO{d.0#`="~#5aG{DGj#`=" 0iLG{Dan=" 0#=R3{DaGO{f=" 0#`Ht{DaGf?푚0#`="~#5aG{D|f{DaGnHt{DaG{f=" 0#`=R3{DaGn+`%mrߴGf{mK+~5+.y8ᇳ\?%+ܷG -GrDۆO99[?pk )nH`H`HGj{FGj{FGJ#5=R##5=R##%#`=" 0#5aG{D쑚0#`=" Ht{DaG{f=" 0#`=R3{DaGn=" 0#`LG{DaGj#`=" 0#5aG{D쑒#`=" 0#5aG{D쑚0#`=" Ht{DaG{f=" 0#`=R3{DaGn=" 0#`LG{DaGj#`=" 0#5aG{D쑒#`=" 0#5aG{D쑚0#`=" Ht{DaG{f=" 0#`=R3{DaGn=" 0#`LG{DaGj#`=" 0#5aG{D쑒#`=" 0#5aG{D쑚0#`=" Ht{DaG{f=" 0#`=R3{DaGn=" 0#`LG{DaGj#`=" 0#5aG{D쑒#`=" 0iLG{Dan=" 0#`LG{DaGj#`=" 0#5aG{D쑚0#`=" Ht{DaG{f=" 0#`=R3{DaG)=" 0#`=R3{DaGn=" 0#`LG{DaGj#`=" 0#5aG{D쑚0#`=" Ht{DaG{f=" 0#`=R3{DaG)=" 0#`=R3{DaGn=" 0#`LG{DaGj#%J8ȯݸo#o=ũhf/~,On^=R= Vsÿ<nY.ǟr0?H`H`Ht{FGj{FGj{D=R##5=R##5=R")=" 0#`=R3{DaGn=" 0#`LG{DaGj#`=" 0#5aG{D쑚0#`=" Ht{DaG{f=" 0#`=R3{DaG)=" 0#`=R3{DaGn=" 0#`LG{DaGj#`=" 0#5aG{D쑚0#`N{D쑚0#`N{D쑚0#`N{D쑚0#`=" H\aG{D쑚0#`=" Ht{DaG{f=" 0#`=R3{DaGn=" 0#`LG{DaGj#`=" 0#5aG{D쑚0#`=" H\aG{D쑚0#`=" Ht{DaG{f=" 0#`=R3{DaGn=" 0#`LG{DaGj#`=" 0#5aG{D쑚0#`=" H\aG{D쑚0#`=" Ht{DaG{f=" 0#`=R3{DaGn=" 0#`LG{DaGj#`=" 0#5aG{D쑚0#`=" H\aG{D쑚0#`=" Ht{DaG{f=" 0#`=R3{DaGn=" 0#`LG{DaGj#`=" 0#5aG{D쑚0#`=" H\aG{D쑚0#`=" Ht{DaG{f=" 0#`=R3)W7obqhV\pxr9辽o##q|c?gGj{FGJ#5=R##5=R##%H`HH`H#`="L;aGj#`="L;aGj#`="L=" Ht{DaGGn=" 0{f=" 0#´{f=" 0#´{f=" 0#´{f=" 0#´{f=" 0#´{d.0#`N{D쑚0#`N{D쑚0#`N{D쑚0#`N{D쑚0#`N{D쑚0#`N{D쑚0#`N{D쑚0#`N{D쑚0#`N{D쑚0#`=" H\aG{D쑚0#`=" Ht{DaG{f=" 0#`=R3{DaGn=" 0#`LG{DaGj#`=" 0#5aG{D쑚0#`=" H\aG{D쑚0#`=" Ht{DaG{f=" 0#`=R3{DaGn=" 0#`LG{DaGj#`=" 0#5aG{D쑚0#`=" H\aG{D쑚0#`=" Ht{DaG{f=" 0#`=R3{DaGn=" 0#`LG{DaGj#`=" 0#5aG{D쑚0#`=" Hɴn=" 0#`LG{DaGj#`=" 0#5aG{D쑚0#`=" Ht{DaG{f=" 0#`=R3{DaGn=" 0#`LG{DaGJb=" 0#`LG{DaGj#`=" 0#5aG{D쑚Hɼn=6H~xxٷ<~J)#~X>?6Eyӟ +?O_8>c=qX>_e1,HL#n?/G^!o?usyX{<^w{8n.<.缞>9smw3d2[>s~ƬϽ真g?\rr͖r|mlho @t›Q61u?1xEXqަ|:&c:_ǯv2?ڰ?ƛo1L=y֨kpvoՇsy?Q;[ <ƛcN5XT -7.g^"_kBqqotSlL.9sr)/挗F?~; zFYz#V 쉗~2}= 4Nd>kp푡nqz=QwF3>~6府wNx 4.{d1sS{>[|sCRPZ~cj\+_͵Hoi?Mzl`4RϿ>UYiqY9}}Fbk~[?~겕<<_f<l!ʥ!^:?+HϭO=sZj^l<ٟ{·>[;b ?wl?0|>Fz[> ď S} RWG"(ZKJ=o7#۾l7qr?Fzã[뇞yNw=ȝ<򞘠ͿzU}-e oyN\f烾7Y"nyk>޹08':nEc^s`w5$Y곕]u#;p|Y跺v?_,=Zc?\uV*Cq}Ҷվ^#'[-۟}rj㲽XBZ~yFyk[`sܾۢ >r=k^ZHv3W'S 0EX_|5~>}?<]0M =sW+T -endstream endobj 976 0 obj << -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 975 0 R -/Resources 4 0 R -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] +/Filter /FlateDecode +/Length 2138 >> +stream +xZn7+:^mi7\@х,YAi^C' Y>/,~ꜷF-O'ZO߇קZXx*n rJJfϧNxj. jӱ_7gÿ[Xh[~7R)BO6b*78s)<~<_~z"nv-c?xuR]lL\xrS[scsx/Wv  cøSԶKÜZ;ǫm}MkjƱ˦LIJx$&xV +,R pY:E(eHj b?etIӸw~WuC 'Ieer"mSlaa^h fV%^^ΨSDtAu7ʑF[rHzv2^22n-zB <)vvͥilbg;hm0˲yҾoX伶<.*lwHB=X[g{Kqp")58Q:83< B\: H +-&ZL>`| DDH!Pt +d!}TN+^!PN޷%Ak^";x2Wj.zVBlK޷D._ ,I\m@:qfr[I:q/[.}z, ,Mxxrjl6EDy֮l:b%8,@d347Z>` 83J*w#R.g#>ˁ3HG0LuA(WCiH*8} p2&1ڻ tgNtek]::0ĮRėp+|@9Bj9 +oZ\Iq ,u9! >d}jySۜ$8Z~,IPn&4-4':sxeW6YWDcg^?t_;5wwZ vtBlv̑sϗ4<:i< G+,H9""Dһ{EgEt`1MFSr2=|4㎍e,b,K9Pά!7POat8"|3ƲeaQkdouzWQ6=Cؘ! z52}v5ЧZfVϐS9Zm׺y UAүJ69!.7>w!RFWO%rn jWRpj[ u^qpF0[@M&*jtRVU k8D?:@ٮSƝ "CQ =>ݘeX0Q?Nhh<y)/ +O?>>t)xJ_84t'gS_]e?)6 bqd_lj~Vy&9Z=)czOsN|4aSnΕ&;%k8V-cY+v^kyDz@B +tYf7sf +W%|۫&]/Y.&̽ʚ cjv^8Cd\އ+:Ox~|5Z9Nɯڡ je^ߺLG΂[62FdWjcB8jw2`.G. ej||,Ņ`m&xtJp\ +endstream endobj 977 0 obj << -/Filter /FlateDecode -/Length 4222 ->> -stream -xˎ\uE5T@ X hC2 eKx,RdEM2k1]vtYĸ 1Y֡r[l]9XػrPt]1]-b\횵횵sY8{fiTZޜmM9ۜt%99ޛsP'{sꄐ7NTBsj#N7sP{wj;tI9ۍ)`TެػsPof9J՛sP/4LhAAt79ػsP9XS9eМbAmw`CbTsQ94 `Q,:t\qo!5`ɛ7`I)4`I {w杰w`^7`)4`Hi:uf;QޜY+f̥=:ޝ:`]Wo:ShY.L,ISY8vL9<ޝ7)}딘&7b޻rPL]9Dzv;Mkb\s{I=f_ f_!51y餚zWBbT 0AE{ -]9:^]s{If71Ls>h/.QӋ\st]]GK1=,zyBWmt]+kW#F+f1]vAt:+ޗk.tQ64ޕ+It]]'pbiAwErh1b5o\7]W5+`99> -(}86ů9Sj) 6AtOa8Cޝڴb+]Wp{wޝn>>,ZtOa8ػsN4uL>UGsj_mޝmu SAC6ػsP 99{ -9&{wju0p -{ -9ޝE4 :9W{ -9gޝYJys0LfubqQAo[p]NiwuLkcL3uL#=L=S9ZާsP2t]}:/Cv\tT{W]9jt]}*)[G*]9/sދkn{ -fmaޫkNx/i*$b֢{ -S9ػr0/;w堿T%䇶< R~-T/ -{fp9xǿlTUy_xУxǿc_GH#w$+r;R>#w$; {{䎔 {䎄=rG"#=rG#aܑGȱGH#w$; {<#=L#=L#w#=L#=L#w#=L#=L#w#=L#=L#w#=L#=L#w#=L#=L#w#=L#=L#w#=L#=L#w#=L#=L#w#=L#=L#W&`&`3&`&`3&`&`3&`&`3&`&`3&`&`3&`&`3&`&`3&`&`3&`&`2O0a0aȝ90a0aȝ90a0aȝ90a0aȝ90a0aȝ90a0aȝ90a0aȝ90a0aȝ90a0aȝ90a0aȕyG {G {G̱G {G {G̱G {G {G̱G {G {G̱G {G {G̱G {G {G̱G {G {G̱G {G {G̱G {G {G̱G {G {G̓=L#=L#=rg=L#=L#=rg=L#=L#=rg=L#=L#=rg=L#=L#=rg=L#=L#=rg=L#=L#=rg=L#=L#=rg=L#=L#=rg=L#=L#=re`&`&;s`&`&;s`&`&;s`&`&;s`&`&;s`&`&;s`&`&;s`&`&;s`&`&;s`&`&+d0a0aܙc0a0aܙc0a0aܙc0a0aܙc\_G2S~pz[KBMUxW9Rum^~/^~o_훔rԾYC=_>r7>뷿GZq})W?~M>#7eT_-s}i o}I?+vI[몿+shۏxgPO\3^KoxFnk5>Ԯt1^[;/K籷ECpԽrZ|(p}.l|TQ'T%Os~Zul߿g\ߐ -endstream -endobj -978 0 obj -<< /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 977 0 R +/Contents 976 0 R /Resources 4 0 R +/Annots [ 978 0 R 979 0 R 980 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj +978 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 243.642822 39.386457 228.628422 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/ExempleLapTimeBefore.png) +>> +>> +endobj 979 0 obj << +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 243.642822 115.136457 216.642822 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/ExempleLapTimeBefore.png) +>> +>> +endobj +980 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 216.642822 297.637795 201.628422 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/ExempleLapTimeBefore.png) +>> +>> +endobj +981 0 obj +<< /Filter /FlateDecode -/Length 3926 +/Length 2051 +>> +stream +xZ[[7~8υ*_`1yHSh`KZJ|u(4-I?tF:Mˮu}- +`grpx?iE&M F:ʹ‡ τRRh[>=9.(8w-BHɌ֛B,Ë`|ymG_ +o - `" pC${LeizϬKIŴM +Xb@)IbWU"JTH&he2T\ {F}zٞ$_57'קOM&8k?CmT^{G8ן^""[2x9%W)F"^V-7 +/{ƵsqGC5/-츰͑Ls%+J5W# .LmNnP%fRg*o3@<&ڽEj[ut>9+@Ύυnt<c9Xߗt泼Yu2۸sZ0{VVqb\MMKLztNPΉLB$,ީ ^^kO6h1^P_2B=;znHHZ [ GM!L6͸#x8zћ\DgD ymH z *TjFj@},01'֫z:[ק!vK|NѤ.SG450I0Z2- P6_ 2߿//anq +9ꇣhZlәkẓ 2(ɐꇛ1(dJ6)9}9NTFf@9Ԍf䔃̓rpMYphXWTDh +gؤߑ`\mQlP8|;}/z+2tUl!ӐeMi-BIse<`t RSqE@Dp 6jj0uLp +HΣ;)BW-+` +^ +(T蚆bg\ZI$a UY#adشsjej8Dr8\wgSH!!=j +LA(m:p"fx8YeB˞]cD/巜x8ƃ%PHN=Fp5Di4xm}zh.guo`lƶx;:KY&H5yn )pȝ|u"OrjHI=蚧26jn:6J] p(33?aS +]m)0 'pARp3((F"$|L_/pf=onЯGXw"UL;ҋDo9A+rT榳7V>S2`0γ6 ",(0'\2D Y|Qd\QȆ9LurQE]Iz\[7T. +endstream +endobj +982 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 981 0 R +/Resources 4 0 R +/Annots [ 983 0 R 984 0 R 985 0 R 986 0 R ] +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +983 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 771.023622 39.386457 756.009222 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/VanishRaw.png) +>> +>> +endobj +984 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 771.023622 181.886457 724.523622 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/VanishRaw.png) +>> +>> +endobj +985 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 724.523622 297.637795 709.509222 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/VanishRaw.png) +>> +>> +endobj +986 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 288.027222 39.386457 273.012822 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Photos/SQLite_Logo.png) +>> +>> +endobj +987 0 obj +<< +/Filter /FlateDecode +/Length 2119 +>> +stream +xZ7b?㠥-%)+~CҒjF+>sgGk5ଞO;Μ8ȗt?c.4 &'<KDJq7}y}]Pq7CL^0>}gw!ͤ{f]TI jxT$H6</la(߻ oNJ/J`8曻 X\˼*I+ÔSJffQ[~w~ a0I[fa BO^ +##݂RoA sUx3kô2gT˧ -~7ޠ֙gxTI"_Y!˶ǠГ,^u1EsB\ec%_{E\'y9XO-uE`$v)s'H1"8f{@\*0>1"8f{@L zTr]'>1 "Ow5($>1"Ow5ы4p +GJOxN ,lZ}x)@Km 6M/:\n\w ڮC&};5VKԠ~JhW\U:6#!Hdu1qLJtS<ޛ +"Hdqn)S/*WUfP6e^lU_hy8xަe5TXM nИO;J0i4k*+WvCM'y ;ePJI:cčCT 2n Mn31 +婱xƍZ)솎͹?H.*ë,D~"dSD +7,<@?}0,'b~K f2sKM0E` @Ay/k9D5I +o1,"!>3R/ ưM(AM,.N(%mIB5ZD +7y Rq$_+P&"rZ"2=&7:8H w0ElB[P&X>8rʃ-Y%J&Rj3|P&"rZ"pNvn cXDN _.r cX" n8'onwz!|] W 1z]m_b!ʺ9![h8r( GE=oGg+8wSX#;>@<_K/YQ_:\,Aًtߑ<پM06l;ꪎJı)O38C&>ǹG{Ƃ\ x|ֶ2V멭]Nz*,:R jjtV[npxЀ~'yU3-.x呔)a)T'}zs:#.@m&gzm 6nL8NS:;Yk(gΪ +>EyMIE){2sK%g@Ilݿh +endstream +endobj +988 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 987 0 R +/Resources 4 0 R +/Annots [ 989 0 R 990 0 R ] +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +989 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 771.023622 555.889134 526.115269 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Photos/SQLite_Logo.png) +>> +>> +endobj +990 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 526.115269 297.637795 511.100869 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Photos/SQLite_Logo.png) +>> +>> +endobj +991 0 obj +<< +/Filter /FlateDecode +/Length 3382 +>> +stream +x\ۊ$}ku@`5]5c%BYY99Lw8'. +WAା޾^~p r"cE9悑^f{ τRFJqw/i 9ΝwW!dFM!^_=>hyTpENz +Kﵾ||?]EzLP^/~\YMTG姱|$j/.` ё).v?Ҟ^6%"U1YZ4y|y~}vt+I [oԂ#r5 EvEw.,Ɲe԰G*ɰFNƔf.HiFމ:y4,f1}g >Uˆrl?gJ\K3n:f\u8A;;ښ[ Z9 :oͯ`%ނyw +#"U \7) [:f*/謁YW!]Z'#$ ԧ%jDȔQfRm"S:E˜ +#6O$/)/q'#$2Sa˯qOJ?ci,%wOJ?AQ%nŻݪ]\~ХR)Y?aX4јA}h|-0ujY 6}Yj6˓Mϡd CjJ`5'(F\p.`'޲*48ɂPvDww~Sš_|8\: |4BIɤqp=8&U?ũ qq:uN &;TCg侷 hױҒ"{!KYu`q +ɭM?zp@Z&!8ظvCԮP>: 0d[5Æ;zErګQ @j֭I퟿02PÂEMmȵt,:~*5qe0T9($ ! gPZ1Q;4a!9=\0N[Rb{ vd9,$gp6K2ÅC1n[3[eZ3ڻāPFtgAq A!9=X: HDh1!\9,$K'rd9,$gpe2 Hľ|7+Ǹm(nk3m[Iq A!9=X: [Iq 4a!9=\: [Iqa \L{}R܆X1n[3`[3m[Iq A!9=X: [Iq 4a!9=\: [Iqa \L{}N83|[mkFR@{qKv>'nT9($K'=qK>'n\9,$K'=qK>'n#4a!9+I`OܒO[X@3۸jw?n'-JS0`$#n'-K0p$#n'-rd9,$gpe2 [Iq=ShFq]kFR@{qKv>)n!T9($K'=qK>)n!\9,$K'=qK>)n#4a!9+I`Oܒω[-ҝ!nAjvI}6v-EPi +栐,-Epi氐.-ŎL0 L&=qK>)n'(n#nIl.nq|RB4sPHNN;}RB4 sXHNN;}R"G&iپݸ{{CR( eRϧ?u9ew|hi!^ Y^Scʒ ^q'5zBv=4ڟRbR:r t:c~@DQ锥H,gś?xE'멵r +XyyY[4OYv'B)В#~ά\jdPmjY) 3$X1a I ;Jሃ%-:ӘZ+˒qdx>zISmUeN(C4L'Pm ?R#[S"!۠zrS)5ߖ: R9>JĹ@#AUzgCrrJB-*rz^z_%49HojEoO wrQ}{ MSreKH .gkw;P~6rB )]j@_ç&76ns}(*.prWϚתֶ*tZCi>ӱ*x˅zi3EQ \G*}ˤjԙ-\hY9%-g֎Ƶ+,uȔAGm;W;YMpf%ܖ +d?C9 *t")ǵ)R,e([tTC> +endobj +993 0 obj +<< +/Filter /FlateDecode +/Length 3843 +>> +stream +x\[kd~_? $6 !FCg/l?J:R2f2vTTR[ +b SG{Z?}_'דQ}\Zεh-7M1xܞ{u~oz4N 4yݾ<91'LXcE[mմFKmH$ +jZm.k2~Q|LoqSLFaQ1S5F|9]APʓhf1n}L4uv 0iw:j\K7u"TiB-ߕ _o\bJQrNB%51 {cnߟ`(|L4GkPh@k0~"Z( YBaHψD#IۈR~bA +Դ:a)M(&Xl, \rӈP=!*Pk&nH"E` +cVJCbJ(Q$;\fDfBL`ZZy#Ѵ^y<*Gpy6Va &hE[6u-3DZ`s3M+OIJ+BQ)2HcK*҂!]Sm%AaS  (%V*JgMmFه # f=S8y,` e^=VݥK0]" +k2) 8@ٜX1U$"IA)55™TH Yxx5VzV`I-m?Tag7 ZK%*3+H_ڙ{D:WckK tuFg Nk ^e3 +DR'Ѯ>Cy/ܷ꼌6;W6\s4frM!f<@8ba$(rRmHznR>1o Jt;!)~G<xh\!:si dV*Dũ䷃-wd|rXxy+֐d1iR!o)|kizЀBYW&#t~F210^ܟܒ).`o9Lox'Aa/WWxh n7޼Ilq>^쮋=L 8 +d5_cwL+ bU4Crtݍ3Zu.["XF%w^e 5,sv QG]$MЙ Gm,2)T +۳^LEgM;Sygd߈zI<ܖ۹!MH($2i:GOxl8_ŏG`K_dU];nژxwڵ;1@\dNm/ݜ̑Jx\]'?W|16 +j@4 )[]c7x/y4 {ܥ3l豑pC Xt/FU꩑ s n;:l}eņZsz筡WUSc}Mg*OaU_nGE^$͙ƴ9LŦf=7}-wiM|B:d5+c6iMrVH +sNZXjSimXM2tHI+0 ҷѝL<: +nؘ +)4W47;aKtbTRф?BBB&u9J,!bDEC=;;LzBk\ ߀@ )g`NL+W_,@Ytq~?@bȂEgY@JmY,.yY4S/XqbmېEkkx{Rdh{Rdn!E{^,v}Xq⺼v3X&d^DbN.Algw8[,}ƎK-NoXoI?p]F]ƫ>#!$$9](MF['~?G,,{1y>fG@0z4zvSϨEgٽw&oL9  umdw{?WtcLz&{vXs|*(wncฐ s/Ϲ?wsC\=;6gȶ, +endstream +endobj +994 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 993 0 R +/Resources 4 0 R +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +995 0 obj +<< +/Filter /FlateDecode +/Length 2929 +>> +stream +x[ێ$9}XiTX&Cu +i4Kgig9fv_VMg9vOD8G9~#>8ϷO'Μ𓞨r#=ʹ‡ AJqw鯧|s;BHɌ֛88 +? +-[BCz3XI #0P$g^zݟ97>3^/p/x; ȗ~Q#VE-?r4{,9KG1$H1:;gxrf[x:, /v@—uX F]n-G/h#tbB:bSD E<QkI1.EDte(bJ2r^ 򤀞%ͱZDM|~Y\f*F%filXrP Ě9g[ <`<9uJ+YhWji
    qBZc^n7!:HY_'roU(cYBZH˕ZA):GlD#"}insF$mWZ-.A_ +6B*>NG{(iٔm۔&f7mZ_%:kb`.A\; &<$y7U&* dgc)D& ɝ8"u"M$m"-٤Z@U62ۖ "'tz^Ciz^z|%X 5phzn.vAaUN=#= |S夽ݶl=5聅ViMkڄ$'T*ޱ<{~ǜ ~UDcB@G!8)pdDbsFIs9 vZK?c"? jLDƝL{%IkԮdG0&a Riƽ0}gp5Xπ:MR/4@ zlqʕrY+( {i-boT `S&QN2jlDA6x5-—:—CҰ8_,JCӾxIz_;3ֽ>)(5fBga+W[OaZDA9E +y +.l ~-5)bY=DcBT{mD'5F2[阇46ĪB@zd3IBzCJHs3L(Of܉_zHTd/v!;fWy@B'_kY=>IIIB'2Y}*%oֻ#L؅L<9p:a2?-paE hi0ZÁ90x6279= XъCŮJ5| 5ɩbd8b^lPhj8,o{#I)y\ D#9ɐTonXHC9²>cҍ0Ⱬs23\ MWc`3@3}!.񧰮uQ_:.:7 "*/z3`0h2qcumśBk>,|s<3'_8 6cHK!+<e/NdXW#||\Ź|o(-?0U +endstream +endobj +996 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 995 0 R +/Resources 4 0 R +/Annots [ 997 0 R 998 0 R 999 0 R ] +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +997 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 522.535302 39.386457 507.520902 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/CroppedTyres.png) +>> +>> +endobj +998 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 522.535302 129.386457 434.035302 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/CroppedTyres.png) +>> +>> +endobj +999 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 434.035302 297.637795 419.020902 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/CroppedTyres.png) +>> +>> +endobj +1000 0 obj +<< +/Filter /FlateDecode +/Length 2930 +>> +stream +x\K#Wl 4o vHbAʗ Ev,I-%;f#c8r朷FϟY_Q}iZXs)(%JJn~8t!:iulsDe.nOv}Xm#-^y|U^1墁LQ<VoTPQՠpmk8i;>w^ @e3fB;#xiG~6)N$L kNS4cq_/?\HQ#٬Kvy)FHѯ-qhppg5m )ITIwuP~aܷ"JMP *k)rg4LgTqfUTODs81Lw!ipua\1@-I 8DJry"ؙX=v"δe$LBJZ5$;r ~-jꗶ$\b6ӪMf N Fft^DWQ /݋FM#wx$n`xWrl^[G{Mea=e~uѹ˦X.\.Kp.i&)С4q@hf+L1+c +f55Z$R,k;FW׃=͟4D&a +93OeRPju,YʹBisFJ2ޒ ~Xlͫf:*i*'LR&r(h~fǠ{ZjjCUB2 h+W?t6Fwv`\o.&c#"Mi\NT;tO(JJnUޱR;eub_8\ "x +Y܆kSp#zr^rn%p;mjL҄BVfϡajhtOwÄtIwCDa+hR+Yʬ9H]|F6]%4x?J+zo2]mZPZ7=Iͦ7t$єħtcvbϥֽuF56UN8vt=L )w݁Q h7VRG7ݾ$\JJZ,t 1O&ɼ;x{LR83uTdӛ̻`jˍRȇrX@Y]yUdrhUf۸Ws'mxH_xHkC4^X&RR 0gLxS +ImvrvAUVɄ}I'S*-7y"i=uHǃ ײi&[Y6TޢǪ9]&#&Ϡ|!Ohf}<J1k >?wn֩w1?&(%Ap =l}qؕ{Fs E7~ TkEjی8-5g C8Y%ـ#FJHҪaz7^I6YyI6=1(08f2w!KPJϣ +w7v>!`ޜO>PY E0}@D \4na;O +)40o2χ|xdV0|rYg `m* AIg|H{J47ƞٰߢB>XGl)nRVQ(X`D}VQڄ-LG(>&tXve\kl_gmߓA-BvU}Yg:y^7=dV2!37J?m,D.*#bzs tTxۻeK-7Ss%i?رSP +dN6PpKN;x89Q@!@pM Q$I-ZbzNRWQtމ-iQP&xx +t%Oӷ' !='Ճ@BP`6vZ ݴ5 +X1qWK2-))HAp,jiH/4Ҧ}2xRd|VH1Y \C[X!Gsu}$4'c)OYƤYo-&n@D:"$;fe+nRG|܍G9VqjNgLo'4WfI9Ϳ]-\ܗ +v^۠~5{ ˆW8i> +endobj +1002 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 222.136158 39.386457 207.121758 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/SmallDriverInfoExemple.png) +>> +>> +endobj +1003 0 obj +<< +/Filter /FlateDecode +/Length 1401 +>> +stream +xXY4~_?Q>QK @hAB-lx4(;s1eՑ贊1 T@Wٱ)[XzW;:(zc)z((TH810it)Vm]x8M-]Gݮ/iPm'ޖg~,,fdiW>1]][=>2c]ȻZq7KN^>l_eCvuYx[?(QlAqa 4_UVN_A+)K5w/.!"X{v BߴkaAl\. +tC9ᨽrиXNEъ ^Ѳe0{, ta`uJ~]m>,vfdsܴmaAm)9Gn(r:\0L4;PPo's/͓b= $YI6)[^ = CG+ +yáXJ,5CȥBTG7i^a1fT$4)qr>6vV.lk#(vFGd7+5r +endstream +endobj +1004 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1003 0 R +/Resources 4 0 R +/Annots [ 1005 0 R 1006 0 R 1007 0 R ] +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1005 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 771.023622 251.636457 597.773622 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/SmallDriverInfoExemple.png) +>> +>> +endobj +1006 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 597.773622 297.637795 582.759222 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/SmallDriverInfoExemple.png) +>> +>> +endobj +1007 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 279.788502 39.386457 264.774102 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/SmallDriverInfoFullExemple.png) +>> +>> +endobj +1008 0 obj +<< +/Filter /FlateDecode +/Length 3395 +>> +stream +x]Y~4adI`rAE@>RK66@#,N~UEdy?.9_:}=[|??IG;Gәdg/C'P'Z_N=>>JuVFlB?NzRצ,:3Q-u֌Def[>! C:.oZx/-/_޿9ϿwfWVFt|yu +@ *3(w>eV%~?/?Ο?!՝Jx6v*hT|M+P9qk8dscUug/?Z=\ת\3ox}؅v/iHZ5ʗ~<동!b=q; +אnIeŅ '|ӈ;cK1Ґ3yFc%ÿy[N^ +Phױ0O&/{ Y^O<0#tBK]|SkұH?NO;)5c0',7#gi[_&0A4:cj?4\*KjV>|w)xP3MHߜe /4>TbRҁKzפ6&h"]2  }HgģB&Jx +Tt)3i1V3K ֐PP=E AJ +FF𝩈M 7LZ<4 ,R?vVZ[%_zw̵F(Vns#(@j8 ւM4[Z,xSdX23:#lF$xj9#۳ LDLB=jR{٠jKfaw)a(-CUSf# 10ȩ`؄#:5!qe e8 TŒ| %1<4X=&_Z0}|xy_oG( iƫR?hȏRyNTc{0U9JSIY0z.N0 ;[{N`g8ٟd8Y~DqH> vpѲqU3a+b4J1|Ѽ1^6 =Ced"4[ZQMT'_c5]*I\Dp\gegK&76'ܜw#i9ƔjΡC_yM$B(al5vܽ(ô>330 %E]JB05tI>z;Q2pia,(sgyHڡ -+){]*s5 LՑ:Օ!P9s>>"2@%V[I|X/>9.>ԻWTi}^AvLx2ZZoaTrj3]tR>3 SA1d.\ +'X_16JRc)fQvYI/&ײyA]btoAl"GGV'TMpQաV6wJ@4 ܤ.RAÌ@"/Lz Mž/!&K׽rwM+;\|cVhڥˇK2v%A@<4!Rf/Wm렴 1 /\.\\M7:6!q68H8H|y>^y$2#T &<[_0\'Lپiq@bYsZQ ֖=~}0W e hm:~z׾O,ze6=UR{|-y{}4 +4B.q-@n+wWv9x{`~^*v{=lIw?snZТ9"SMIcsˤ7|{rOݎ]ztYhtZz +YiDMՂ)C&&т%lIQ˶>}oLy7dJ^o-y#ڕP&whWIi{#.( +4jmUL(`T\?Kȕ)hщypGapǕ͆ݪ~j_"s&mF6״J7õB^z^ [dϕhx! sjpV#< _fZ;"Vc5MS=J9Gn]Ɣ6(1@=zp,pR;L:)jB8%)ʹHR sB"{!pjhIiL__\·8&485 )i028w" bW&'p%h= |\P2^YŊLٴgQcu<t0 mX,=jU1z-ufx< f[O%OV|[Ha[X+5RJ^6ag Τwls9jnIZDqicz[Vn_x\Wc-x vA !U4ls-'9ڋrŵVZ m> ȼ80DK2$%aFץ*0Lt9r!FsW +"^12oOTȐb{>J4UԡY. _̱6pѣ i*?mS/ꎆ.U +[MPT)k5lyl+J)ǭ,cjI]c c橩lWb)* ,oe{JX\j;:vkܩ@[n6[_|z C7KnE_ T82tCW_6f*B_p3YA:qIhC +fӏ=c IF̥*7$Ԍ0߬>X K!L>_D +endstream +endobj +1009 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1008 0 R +/Resources 4 0 R +/Annots [ 1010 0 R 1011 0 R ] +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1010 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 771.023622 555.889134 535.580806 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/SmallDriverInfoFullExemple.png) +>> +>> +endobj +1011 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 535.580806 297.637795 520.566406 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/SmallDriverInfoFullExemple.png) +>> +>> +endobj +1012 0 obj +<< +/Filter /FlateDecode +/Length 1733 +>> +stream +xYKoFWd3Oh m)P@QRPn}Kr)ю^*AMc~)ykT7<>@X |:kiMPΡE'A/ vχ_~IXl(ӁGǿDw!Ҁ`LA4oo}a'Q.4/hVI9ϐi$cfXɮx)=wh+o06Zgk#CTYu3\+YV3 ++g lhea"[W傀k˳2қv_CF7i :EZ$YicG)d8N/#S5 ué"ތJ8䤤\1= +^4=FM)nLk6 `+98*#*! D_ҠRς,FJxj2L%JT f$#߳NwQpɯf9 +sS1=mUEcNrrmVQpmt)xk9/mM$c֬BU@VyyXv(TA `E4tm~E,ke2@b+Em1T)j T\%ui.EmCZ6n26s`Cn`V+mZV2gbݹl伺7@`U#Wp8Dir9&gfݦ +C1ba̫!vg)=F,"lPZȹE%+jCʻ2ʃWAz~O `<1 8Z$֤Sϩa?2cڲvkf< UQjrXZ$ϗ) Ur-sIt{YuѹTŸmʀS'lHa ,s`KsY50+2|d=fG`e^޿8 В{ \kuHAڦU"!R[^%œTˏcXN]G݆&BսkCt6>NyPeԾ\*G_2<hfH8qrrf:9[*&h]S Qň|"g{tb5eL2KRQl ^M<~>0h؊K{&ryyMJK04Ű/.H[-* $$)i6%(H t/OP<N6"ĉ~/* H.`|$0c a\;5;ϫHhd8 5^MnQ "2y@x~Zew.6i.40n :[h_Cl/`/bG$ tj@jט"Tz}3Th`h|Juߘn>]/8Y^ )q䔙kx@ݐ?53w&L97F>Q. 2?&{o4CQ> +endobj +1014 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 649.974714 39.386457 634.960314 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/BattlesWindowExemple.png) +>> +>> +endobj +1015 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 649.974714 555.889134 449.652402 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/BattlesWindowExemple.png) +>> +>> +endobj +1016 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 449.652402 297.637795 434.638002 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/BattlesWindowExemple.png) +>> +>> +endobj +1017 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 218.806002 39.386457 203.791602 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/OvertakesWindowExemple.png) +>> +>> +endobj +1018 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 218.806002 277.136457 101.806002 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/OvertakesWindowExemple.png) +>> +>> +endobj +1019 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 101.806002 297.637795 86.791602 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/OvertakesWindowExemple.png) +>> +>> +endobj +1020 0 obj +<< +/Filter /FlateDecode +/Length 1902 +>> +stream +xZY5~_ CZ +aw'!/a]vma\U_YɈh9-E_Q}AbFONi-n2(K!BP3}y9|8sPj(Ua#t7ZCC''}{<0܈qFV~w[!/?/L#U¿ixWϿRhܤq]>Ή\O"FMwE X˴&JJ旕h(,>A2xb<|_Qh.F˗˅_L|iį]y|ĻAsڧ'R3Сߑn Dz +xaq +YXTO`۴\!g7v`I4\1ȣL*#^!a.E8ʦRH.}xZˮ\C8~zg/3X0玽cž{ 8y>`ت -U3 F Ձ"h,қXԜ|ƀH^ +>6Qa,DC-n8L1Oa\BYkPƠHm~+H{-dp&ʳjK*4Qٞ=bQMZMKR* wI+NlꮌThyѠoyJ)[)VܦV5=op6'VE^Asoo"DLzS([T)@-o=l;k)QtDkE%Dz1Fqw:~8x1 vMaUD#3jaF$Gj ИJ pSDGB2#(ʜmnT\tRH8 jΆ_bc<C?x +Ƥp gjc%w + +endstream +endobj +1021 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1020 0 R +/Resources 4 0 R +/Annots [ 1022 0 R 1023 0 R 1024 0 R ] +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1022 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 458.724102 39.386457 443.709702 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/SlowestAndFastestExemple.png) +>> +>> +endobj +1023 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 458.724102 555.889134 198.988560 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/SlowestAndFastestExemple.png) +>> +>> +endobj +1024 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 198.988560 297.637795 183.974160 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/SlowestAndFastestExemple.png) +>> +>> +endobj +1025 0 obj +<< +/Filter /FlateDecode +/Length 3310 +>> +stream +x\Y~ׯ$@ br,ydk_ E6,vcf_,H8s>߾8sÿtE%c.9h>L.Tw_>y)bsY)zϧ.=aa7А ~zk(3/?Ydd~ιp@{IF~cXx]64Ooy Ƹ>18__{^K˘p)||)dZ_&c>}p<]y0tD|GYGOe"ǮV%hުA8Qa,]?.߻$ g Qˊ+kU ƑcS%j5 +=wI +e1wy۲25(:YٳA 5f3A}"+njX"\3 +m {W'mJD3-([< >R +)wekN OTd*{B!$Z嚕sXtQLH.G&ͦ?U"!'zF t˵oW#Kn^㩱nU6&ix*"[bּdmY*ŘAEJ T#tq"tqq5t"gq]ʹ 7D~t8ֵJ~;琉k6fޙ!#rWq39^ѐT}(^ J q8FFi|ф3lD>Cл 0#@Zȣt,+ׂrsL'Is)›_u%QY92b8ꔐ(@e/+ՃR$}w4^ԃ䬄f\Ux Cux^z&N*tx>٘ P Iu>^ 彞 4LbI(NjSǿ:ey1^L``^^3ϸ3E +={F3gX8.2eWq vLД,GcT}Lr!/f3Bd.*ZnIbyntrcFBi4qS^@pΙ QiwXP oI/9 Rʤ! Tf{L[FZm洇XA\̖{J̈́!y:<$oF7tGᳩǖAZ.D5 +Xwc{Lfs. W#X1< }*nױ_]ޭcR Ei7> +Lirr [e七> G 3ΎZfLvBm[Jcq'q4c<*7:d-RMWA#m0nEy/:QWη) +eHFi `Co6gRg (J: >RL`hT^ KI?~>)gRRi1"4+VFO4<"kIi&GZ 9XdMH/ش9k#@t:0c%:ݬp +5"!_B`UdD0 ^$T40kJ4 /t{wp!XfK0YeiDUn ^b (۩ %@Bqzk,&#iz#a{,G-<yN^ '?J1o +wQ߁8=>jd;53IC0QR H$d@π 7qBB4mɀ%&$f P5D]4Pj!fM^0I^~7|: mYym4`VȔah$L*u)ڷH8 +[̸TP-H^CfSY*C4|r%蠧?rBX3M $6\BYo)pnC +DKj}Ae ԸTj(%4RY£)t//; 4 %e+Z!$PqHWaTOoB(W'̭kS@Quq&PxedM=aN"hms :T +{ZC6*C + ^*El1poݏ+pTyomŭ2CKrvΔmYORw ?s%u>YZAMg3ɩYm; (({TϯZy]@ob +D݉2(G:/uB%ȝyV %$64^"B姓 |}J*&<<|O6P?Dޓ)jT((SLY Tj莐Ց͓Dj {fѹD(Q%4-Qj-:# l\ߵ vWAp]'uEX4+BıA'޲KvH>vUb[8uo3QL(ծ_%qP6W!h F EߨV{Zg޵UhY둞 ڠR i*X0vz;8w 5ڶ'[e;[̇b7={AY9v`#7WV0TL!8 6ƆK_L]ݐGڳAl>:P#E('/y< 1no٬8 鴻%nVλ}CS V>,zE.B=BqHuh u_;ڄ{(d*V׵3.tWh*oGh 7~8`Ԑ8׃ߞ;Dw||Rؚl4LjZuvҐ8*a#򵫡0 wumc&bCo^J]ҷlYea-Hapfx~l"m0_3cK*8hZTQ6Ӧ~g͞3y\uyʪ;SGς;6&a3=;w9y8'(sn 0B6/I*2?H>ԭQ4$T +endstream +endobj +1026 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1025 0 R +/Resources 4 0 R +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1027 0 obj +<< +/Filter /FlateDecode +/Length 4942 +>> +stream +x]]k-q}ׯг!.nɃt嗙YO%'UUVU>v_<גkIn5;$6?Lo_V{e^jRas87W1 i)^iV,[AԷ/615e_o%=Fs\a4[p KI7!R cBF!t-RD|JUP]pZ꺞c"P׵\B]W]E!BuSMƪ@WݨoU8Q]׽p@ + B@cYSHuM8:ݩn + +t1doNx2>&wnȸp{[O +w8UgTds+YbLH:'α4 +sQ $5_%@]te /"tK:We\PK"R佊Du)_$ k+_$|s"T3t.-J T^JIY,$LS u)_JP(ٗPgW%v_ʽJ`[>% p_ʨv_B+u&[F:GUsp;N +$+_A*A$Ȅv Q<u@?MDȃͰNDfɃ'5WOAײSHAOa'˕ɃykAdV<.<ȲE>KѾ+_]A!yе.]s;yUcБv suNEkα=3gD8uUbɽ +75WM ӚSAjau(A>*TN Tz#{@'?YQKֱm?Ya9*({!c^ +B/P֙[<_'~J/of?>?~_7Ϟz_ߟtXt.UjCr;e{31^m:VSof<^w#-M1^_==:}?^O2m>=d7z [eg |_\C_{M$>l_saه4_vrY(#\ ^4{ ZN^[Dg4)c'=d."g.|_a#|F2gGYciDCn;;6>XStkG6?=:8~V0$ȼYӒHF`y巀kƜoӔ"RŻ.-6y^\BC*햅 +P,{ ᑄ?\.&A._,F~Iy&.k8fBWCM= YCH6Y a$l7ϟ]0ygk]6%e?[chVJ-rHet^_zn60s eˆ{=dWV em((y.sc[/&Lw,=%[,xA:nZsc) +sSf>7AM!Dz:3놘#.Uw8rO~u,*V lq\;/yX49}FD]͵ y +yWzaﻯ],~Rʌ(21R"?,jd-msin+7匭6QJGLkx~ԯ wn\sݨe4g˾}]^y%m}s3Gz׹N1+eG +g^umdU;/v?'o_fp\åzҎܸ.Gߗ'gYZma7:,O3sHmvv*gҩE>"jt'<8gW)1ZAƺEQ} X$nJzFځZ 0z͍mbğ\ODݰ˻A-3XK朴GԻT=O|&/[]Zin3Kk2Ksc_flYNja^RV[ezaOT(?2 {ڷXbh=nV$$!?Ww,wruCy8;2봰NK]kUDnR2S[6^׻Kr/=y*"g-kFs,Q2[I.޹,99\wDzYIfx/IpRZ8%5*4|zѵ~S)Lq?Yՠv4_cf%)͘,`;20inI}tecއ}OVrZ5]z9x2-Vͨr[sgYM*ٍa+fj15uܻqoxpWfnؽQ~v3'ݮ:CK3f8oW'ئ  jd{ v '"@Xoo9۬oYmgmY׎K[J:] PW%3noTDAtUKw>149,D ot;Sxb]V4IEn̿̀P'wI_GIwpl ]us;]E+LjY^?3 t1ǵ2mc^*x#IK>;n\;; HsMv$٦? Fʐcr2wk;yef_63UUyBԇ4|]ćPK:[SKfKTN" cޗHFX 6fyPM̧NGg{B"N`0wv{V$0ތC+cNn|6>qPWk)wO*C;Vɉ ;-> +endobj +1029 0 obj +<< +/Filter /FlateDecode +/Length 4319 +>> +stream +x]I?>H 8!$1o/vq?"ťHJݥe 3xz}p)>9Q//6YO~+>v8y._V-_%Xlao c|>s3cf1B A46b G1c¨f| |`Q8X7u +P4*d քp,wb#(_b@lH'›r%oSOv<2|`i(1XxplΠp`Ј3,-s"|p0Ȝ)rXWe:4Y/YI.ABf*Gg8[nc `9Yjursc(fo\嵌ו u"c% kRhQ ˪$\#;߉^+L5%4z!X&ab"s!tg8/>}DAB#YL,SaMK+cKs2Ŕ\W(n)7ϯdby,|m2Cq5ZoqZ5R#a.u*3i!^.SKF 7l8IY|%^+DPXpJ,)9%otWJ~b'5WeSj!'8㇥-4HUMy 3r/"?o> 5B3td5."l`?Jrie)cU)*9NQ-kr5( 6+H0L rFӆ앓!t(3&/Ù c*L + @Ɗp48M J&Xa&ݒsIf;pV!4rr84BLT+[w!_Zv g$^#-m}C9&;nN}7Dҁ:J)^r%Yv¸-^[*_XUg`(h"==u8dTM5d}ÈXsWp!4UM +0IXAM,`.MTSN]n]}(Ug\CdHʁ#iAbȬ,E!+S v>:Z - ˜ϋ>P8Hw$>75xex04uCiXѦZ!N;:+VKp;_>dܾ'6ؽGK(rd>"1L`jg)vi坣yu6ޘs.gr%Q/kgOOy2-y8f5/O]\P·>yCLL!N tF "<*Ԙnzb7n +%lri5 @3<&Af^(Gd,eTޏf@kG[ٻaDw ,MJrmkC ͔‡*a + +=N!E+;Tz( X&T b/b!"t1N)EX&P*C:Nhr̊ʶWeV-{>B QVnw!3tӲTa2r鉴{5jwq1F㨶qba5RSZ6M?ApmCdԤGk6ms0TˉR9 -*| "6TF/KROPwP QnBll4>NۇWn88BYiP;hz#?9ҁU K.v~,Gr%һmdƉ8jþKDmJv}btS8<;|Ũq PWA8W9_ !AeՐwVw.PZUPDEmg c;b̡JͣFXJĩqpsiE:c9n3,wiÎ;YGgy!qN [Y3ojIY'^{eEd`IwV#7Zm8Ÿa[5 +M[G[F2zm: 2ínvbz6D 4^ud6}h?: 0<چӱhۻ-fS86dS}"ĸ~ Ma315WiP}liI;\x8Na8/GTuMopMԾB&4!$!: :$!@c]3w",:\‡"ikyDzźӫzʩ҃-nDbs]+Oԡ^)gyZGk~ 8vA<^Mk~(8o%bmF<;ob}3b}* o]b4>n]f+Wp|ش Gi rTޏKvͩފM8[֨4Yc6{?'Pd]{ԱYAL"A3EBqpMvh@W Zr,PHS +Vx+za1itz\R-Wdi&*zdCI񱨍\HOgӢ%w}ׅ fօ2ruCcw٪L&,xGIvb镚,ҷ ԜpmQ&lbPY@Tyt7҉y<} r%1r3Ėɹ\}V"^"Im&睰j&htN˔ +YxLJh)zȫ56_ѫpMgZzN;/uSI_ba\]ȥHL)ޱL/jȂŒprC9CN]*mn]Ej<(<ȃkiʃJIcJvBۍƅ@~Pm1l h鑬m 0uDmt/AZsmfkmj](ӻOßzIzb=V]r祷/U;46;b](_ix2ᏭTȦϤ[ 4Zw=#ah&Jp. nG)- +endstream +endobj +1030 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1029 0 R +/Resources 4 0 R +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1031 0 obj +<< +/Filter /FlateDecode +/Length 2810 +>> +stream +x[ێ}WBx'E! AҌ {Mi83hb۩SdS֨gVs=?烴z-9zŔsтc\Hli%%_^?}[/:{iN8Q5>O(dZT.8~r?x0|>Y %ꊗ&}lk& +Og穏4Rx]^gUz6ǿ3y-q|y y>kϑ\eЯ.W}Qt1_<ۓWW8 /pqWϗaJIo\zu41ĥQnq9TX rG+ i(a%SϱPћwHf񫗖>ı蛞i-0aoBsƐӲyOY|}oE:CYU -A\܈M?#D!F y#Hb8&GdNpᗫu\Y'}ǨhF~:埈ɳ3 }O. qg2l ;)h`沍.\sLFusyUHəqsF偊a:#BR +ۣ&]%yWv*^L!GR Q>R7քN$zjG¢MfFQ9eM3r +Kqmm,6:(fYS wj"iQ_0Fx-l TTm41$rCkg:wj[ٟE7s ~(Y#Ja(\8ȌuJ ۵pЀ!i*HEl-Do , l?STXBu Jj$ҷ DiH,kw Ӄa +( yc$1m,g!n hY!q''aoVft>GpohEJ@0)}n>˯Cέh5Xi^AeGLʺ2Br85M"d$90ɏ3Ct)s$Е Y%+e!3KMSȭZnaSS<7FiM:F8& )0P26)Aט3(뙬5FK˃6S-072WfukDb%* bNt{Ŏ3Ž[q*nOam*w , D×Px2eS.V^ɨe I6VB*WevU T>J·~=N$H+Q5c~ϔrVij:- +GXCq>90,Wa|Y$,\w<0Eq>ܸrOD"dTˮ2;H֋uIy <;ձ"+iP A6j9mWeT ey| +HG[!{Af<)Њ_;1d蕋D1'˪Xbmc8.kٶY]HCL[ @dmL{RҪt űϋ Y10Uw)E#̊tʻeKm1RH DlYPw[l.}ɬ Yki7##vmx. ~(}е(]p- U"gD5.=BI؀I5YN2μ!Ay2T. v:ǿQ`BxiQPȿV[ 9ƬnW;Qs*$uOWj{eAL6ox3i=YPe]FQe#M6iU^9K^t% TA"gu#Q|k+5/}weIwIJ׷Mamr[{ڏczxzQ^ݛd.ýy_W*.GK‹+ߗo^An9sѤU j |jUΛP0|];JxQک7x}V [/ˈƍwʎj oeLrVaڄiUu4hulzl-#ͬ'`s+*xk1)k^ +ks8*}N@Vĥʾ4,]wVoT4-gvm *Y)%R4-I<& +"{AUqW5lq"d+&P67RӡZ 2aΩF SSJ/.~<,bOͫRH( /x1 ǭt2~lEaç%~X 9Mbd-U;?e "HҊȯvkj9wT +endstream +endobj +1032 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1031 0 R +/Resources 4 0 R +/Annots [ 1033 0 R 1034 0 R 1035 0 R ] +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1033 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 552.155898 39.386457 537.141498 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/DataSetGaps.png) +>> +>> +endobj +1034 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 552.155898 555.889134 332.367525 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/DataSetGaps.png) +>> +>> +endobj +1035 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 332.367525 297.637795 317.353125 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/DataSetGaps.png) +>> +>> +endobj +1036 0 obj +<< +/Filter /FlateDecode +/Length 5187 +>> +stream +x]ˊ,ɑWZH0ZHȪۥz@9'2᧲J{H;nv_-Kk?ܥf??>z=Z{|շ.D\S>ǧ???_{Tjއpɾ)__=j[o9zczʼդe\>e_@3K.{K/L `Q/&F%j.cw9]ryws5wI?u(3@m]|j.[jR˝=ԁp3@ ^|1Kwk.[]w{Xm:m. KI7!R WBA$$"AħTu "P嚅u]+EP&aJucU+ MnT׷* Ш^!nHS-RoN"5a Rg^T7S0w7D',I2.*A֓]#*օL^ %vO2Eb9$,=u S@C$k{εlp)[D\k#tK1Q]:'&ĞsN"QgE_ :lB=CҢK-x-@y Bb9eP瘛EΡeB} uvUbܫK!aR29ז-})#GRA~ Gbԙl!duFlѨstY! 0'(@9-H +;YYa' -ȃX.lȃ#0SL +{ @L؉<\<{Qy0"cI"cM"@JNDT{W Fd/ +;y0:'TV Py0V%v``s@Pg16e "h;y08JJ:ycW~HDɃ lAe GlAD#IA$]ق<]ANtIAPo* zwAì<Ƀ]# uƮW %vCQwP)iLLQ!܅XL. +{t٨Et9XV29T2*Sgpa EErd3"!$v ee@36Έ. +;|-z=RgEΨ@-"uvl \{#{-JA6Q<kA9dsYbOžs,N"Sg,Eξt凙:*c*[#ʝldzX-]bƒ^s]٢PgDqeJ +{ȢJ=]%C%Q2&A;x0%v lU2閒ΨN +{ܔ-ȃlA̮DԋžȃU=Sȃz Sn +{"`Vy' +5CHA$jȃxND$Aުȃq +*%v Uy <!5MHANDb"˪ȃ(D!ǦJ:#ɃC%Q вC``ds#D z"L!s;yw'}sȃz5SHA*?$Ƀ%y-ȃ>D5SHAbXa'"HAד'kYy!SɃr%vCzlAty!)?$P%v žɃCg%.stdd8S22+<y^klϜQG]{mr޷u=/fmY|zo;"\͊4uV2J͋ zybuf X٢Tn.XQR36γhwuYas ᏿}>^ţl=#F w޾2z#GV{{ SH/69I}0|;?>K6}Ny #ۥ?'Fyj0[zvnitF16ҝhʤ+K6HRj҇5es@Kn:ߞ=WI60ҟ%>@ 9Lݰ݈T`-`|-J3AL>vsܯt6SdSGX>K]ie߳K? Ҝ@ 3E7fMy3r=?p<ϲF~v9vu]C.}[Qt"#ϝgg }ؔ!h2y7gZpf߇3zhqwNvXo wYz0V}[䝱Q ,8KOS׳Q\Gjes5>J׻Yg̪~af0q{\L2g]vQ]eƻlw΀sdrG! )q$jw\ԻYy}rۀclHqekgE( ֖LD^Jed?"(۶]6۩ fg[#EqPis]E캱b4~ַdz:DZveUOb bvț=K<-׫fD2UȈjZm? 2~c )n[z~!w082<3~_'4T: ?]n_Yaƚgxb񺍟3iz> WTz(l/AnlٹٮZ]9DV&|Zc"%O4+I:kHoH+nrB\[YC ctũVaTmmu +4R=htw!=8(YOh^G>]=v}No4f,;z 7ب6욳s+%Xأ@8_xtj,fsv):~) *8FȨxN({ )C>倃[4^;p/77^p3֌uJ/ +Zʔt uoނ]jn_5sn>_}{Wb'ЦjO]ݔ"|-Ʋ  +/%EA>lbe>?3L<{4=מ[Bw^ , +endstream +endobj +1037 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1036 0 R +/Resources 4 0 R +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1038 0 obj +<< +/Filter /FlateDecode +/Length 2847 +>> +stream +x[[$~_φ%nKC@ ݳoH*)gvgٙ)sEjy2絜_/'19#¿4# 9nrQΞ=i_NIJp'YN?}eλJMF.֛8Cׯ?I6Z_.P*1Ruĥ1汛zܬ*Yߩ|Y'_jMD]\1/ _%D̤23Fc=-Y3F6i䷱Uz,`>$Ur26l?߾9K3Y8\ fh_Z8#/oxgЗ?~[yX$ +cs2^ǴYzߥC9v c[k9:>yO.ѕg6quױy,,s`20\34~ޣk¹JHBB/᧪MI$Xd'H`:wdw>`$U4NN,԰"Q&W-DahW`:[b(d|b1#5 L ݫIf-r;[lyh7]t+uͤ\WttL?}NDĽXh/Mdd:($(W(.Z gafH+/M7M @bD"(6azc$$ h:G&ȁGx&g[X[/-2Lr Ʒ l_cm-x'2b-,6 0j) ςP``'r=$md7Wu '8o4: GM(:S+\(t)7n@cQrBaJpfD,4I91IAW<v!S@md7 G52}+t +-F{X9UjP*j +ڙ8f)3U ^ռQ_쨇_ fG:(cqĵu3YRjrS?vW'U(+Ԅ2htpy 0堈J~X?)a!:>K6{^+"Lfv2f ""X[l5!YP>gjd07^#ڜf=c(-:Nnʬ9AzY'z+R*<6-To`f6IAC$w^Pãy\;&@v|4Γ'l̅CM%8M[bڊ<]K미]'Y)ێAI8!,fն}=F`[A[ ^:=9G49`w`k'X;)10a2&J<@ޡ+[8m!K$~SEB O#3lg>pP#sZ]@Gԣ!q9oO嬞';h2}i=Feiy#'u!p>$p^ۆ)&ŒXKLşZSvi4.ރ@? T K9VYKu*kprFi6= +endstream +endobj +1039 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1038 0 R +/Resources 4 0 R +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1040 0 obj +<< +/Filter /FlateDecode +/Length 4913 +>> +stream +x]]o帑}sI`` 6IH^$b8/+JxݘLR*֩*jm%d 7?>r+-[Z]m՛s.pK1+ӟϗnŬZ_=Ͼe&ǧġe8\N/FPsxK˽\- n0)/؃ sCm'.a jt/PN -m+S90S/F10 xE !;!R!ŹH6q}.uBZM% k%+Z +4P,K(T7P]_Ju]-Zs g""@cYVMnbUa0coKNnT7zQ03 Cƅ(  +3\[TUN, +"Ȕ@CIbwd%vGc%Ȅ\)ξdX]=u*{\HK@g,MSй&} +n(!RƼE]:GFl3f["Rg/e3žsAb `sLe!'Ğs@fd^"SgLH Z|1Ҕ-@}-}1!GRA~Gb/ԙl!d*u-*u7 LFa'-ȁ lAd@Tɂ\ +;ilA5a Oᇞ<CT=y0{`Jh [x`hYanN Da O Ta ODH=yS(Ch;yQ5)[kMق<(`&=TV zPyES~HDXɃpC<9J:P-ȃ0NIAo( tv tFؔ%v ȧ*[]*^ق<)[HA$n;y iS :kAق<ɃLb'ZEd3ݔ-ȃI!y# -J:c+[;y~v`h Ԭd2d**B%S!SR~0w#((!:#Fe%C}Q!uFA6ҊEErd3F1<궤lsbV2Eag' vV-u6 t.-H쁽$v Sl %V2й$G@a9dSHSlMaV$v`ȭe `@-LxIS3u)[d(lQ3Pa/Y^Cd!Q2%cT~d-C*AbA5{ n) +Lao^7Mق<\jd9(?$ƖH(<KQHD֫"y0G +f=Qnz$PQ{,$WG8xԞBz8ިsl{Ρz6 Ar=AP +{&r3gԞB&" R{ +< Ib'"iɃ1WjE"QIAHHAPg Cy2y0,C{I<rQ}L  Y6ΡJAdɃ(fԞB&.hJA$@;y<Q{ +<)%v U3yP{ +<!Ƀ\W?/{vT/~?`Ehh($B $QݿǷ)Q,u}g *v?_//{? U[UmYUE _w;>l_:&$ yչc;~0Y+zo~!zKScaVMM,QցIsX@@yR,-/ ^_O_v\Wcr(gc[}\:Lgގ-Vźʰ~mwO_rX۪IVԸwӲ^_:Ĵ'w aI/]؆Qs;|iušmx;ӆ'Nj9:;h؍b`H?x2Z!mU=*IHZn&O1QNN/"_uZp E憌Ix\նFfo_:>INu֐upsa-lZ9f<tml3yLL2-s$ӥK9 Y[([?;);OP #%'K[aP_&;m9jy}#0l歙!r1PYG[O-֐F/YaHzv14m߫b! R6w=)nh^]m=Bz :n3?6^vpO&އ NV'S rTZ6"6y0=Wsc+`,zsFrjǕـE*SU(9l|KXC١rdEc`9oW}bwo=aLvY:nuɯ0ŏ'7Sa5z:E 輺6q_쐱ws4Dd(cgP*Ov{Z;cgb0؇#Ʉِ"lV?$#ctB̡ݛg^:==!pc7Ķ9)#d:v/vsckMCX"̍Gۼk\99}VlnAra:NK(s{{:]? ;T〬#Z™εfg*T ̡Dn=zDO/ Ϥ\ML7!|le:-~VZ_@d[ _ggkKL-?:\a]9קcN]\;9;gZ)MT-Oٔ5ۋp?0ƹ\PO`PA$]eja 9h҃O +endstream +endobj +1041 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1040 0 R +/Resources 4 0 R +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1042 0 obj +<< +/Filter /FlateDecode +/Length 2179 +>> +stream +xZˎ6+pыAEf6:,d; +f71s5jzraՇx{rvLs-n /J9k%%?_~v EΖ1Ĺq:S˧l//E q ~?/1zD 甚|M<'*?RucL/h_zuuMx-ݷg^Z~kֶsدq"8eX`k e}y.q V^nkc 9¼NmTziz; [ĤU2*c2"&~/Ry1v-`o~'Sv]1ۖ>xhXDk + +h٣AE­x< o}h |Ssz5;rVc@1WHSCh!HcوD"3yTXУƓ-1ehp`|V*K +;MJ.ǧ1 IU/Za )GYl dQ)UPѤ9nҦIh5?S;t/>\CBc時2I&TӃX+I\%TY2ʌ@& +ȑ9_Li#mr#tIV,7FwOAVu"͇뤘KV +ye0]DY8`tN*0:)wHa d9k3/fVYgMi3Eb AW /ռ{̶1j{Ŗ~A񣴋^K9VN` T-qa-kY$m:gr:iVL$fa 9 ?GO%~N %%)G{ j}T?F AP̆+$‘ }`!ջrkn <6U[ d9ԫC4&QXHR ESd1)%fHjD^=Q]P"l(<-EԮ7/zȻJUlZP{ cc=<ڟ?nUWXƷΥZw6}{l?hN(R|F=3ـʭXUr6  X)[x*s}GOX9(ܶ\<ѕdzֹuG!V*gNoheTɡqȉҚbuB_r $ޛXW59115OQv}OPQ]BubKDjLoA<늶TǤ%><_@<:~\4$Tn玚@vqϬ߶U}`G~]ITs `.6F/{/oqU;Kͩ&%کVgy“]8x)0p̵ˡFt-O'm}i }4`6+Cy/ԼG?xŌ;ma4e;.ctnoS!^QO'Cram}'6yhXc/z݊C(H6EU2X{ÁMe8!:PpIs?r2$WHmuiĨ^SvÃH& cSo +D!qF+#u:7;Cͺ1V E+43_.5pR =uJ@nާIM߼?}/͚xS573#-דf,ˊeЗׇچ-x7\iAM᫆cǵiJWf~lV6R>&v +_!Ylw!^pQ H0s}K!|EFʹ3~1Ý +endstream +endobj +1043 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1042 0 R +/Resources 4 0 R +/Annots [ 1044 0 R 1045 0 R 1046 0 R ] +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1044 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 508.271622 39.386457 493.257222 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/MemoryUtilisation.png) +>> +>> +endobj +1045 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 508.271622 219.386457 319.271622 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/MemoryUtilisation.png) +>> +>> +endobj +1046 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 319.271622 297.637795 304.257222 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/MemoryUtilisation.png) +>> +>> +endobj +1047 0 obj +<< +/Filter /FlateDecode +/Length 1774 +>> +stream +xYɎ6+as_F$I.tA0 f@,ҔlO %K^-bN?>8ˉ3g8Mz_N1tv +i /bF+Sbs$̈`#__?f +m[k! A߿6Kﵞ^?~~0Gy]O=YhZu$\0U4n|%dOzs grqR/@ B3^hl%FVp{KH(Z7D_!7 {f]J@8MbLLO'kp ~˿I)@b9_[XvYꋼM?Ѝep4:uuCxά2 ``Y-e .9Ww5kxQ1z3 Ӹ]O0)RĪ +GndTdDyz8걨 / FarO<C9푐݅|M@l!JNyS+H-Cl v`ǂГ uyr1a~+G Ewq-j޻ ;>4UDkk׃FB) X<8!&ZrhFu759/SM=FX-H Q-P$65;Zkc{{qg46Sz*nE-)k4&>#],qHQKJ PO/Gg%[E؆fKbx@SQ֒JI֘4orAV  l*>U4ߘN1>"v<iK}~ZuCJ=8%j K/FH*χWWШ~rK$QAڱx] Vĵ s23٧M$L +@{N-# Î~3ũ zCkP؆mKFI'int:i Vjb.p+-OTo}G)6L.>fQ=Af4 +5A(RkCć[1ŕvnPi\Gم҆^֦$j_ BFkS +ng-ʻt?W=.H.mg*'d 92nw`*a;x?3uOHQp5$piʺSu|yHP5ge+.[%! Y|-= +&TDBK +a,h +endstream +endobj +1048 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1047 0 R +/Resources 4 0 R +/Annots [ 1049 0 R 1050 0 R 1051 0 R 1052 0 R ] +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1049 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 692.198022 39.386457 677.183622 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Figma/ZonesStuctureDiagram.png) +>> +>> +endobj +1050 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 692.198022 555.889134 456.911570 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Figma/ZonesStuctureDiagram.png) +>> +>> +endobj +1051 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 456.911570 297.637795 441.897170 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Figma/ZonesStuctureDiagram.png) +>> +>> +endobj +1052 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 126.594770 39.386457 111.580370 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/CPUUsage.png) +>> +>> +endobj +1053 0 obj +<< +/Filter /FlateDecode +/Length 812 +>> +stream +xV͎0 )d8Ni5.+  qt+vy I; H2ٱ[P;;߇A+OZb'MJ{+x7,3p=eQE~|> ?T^k~0FWߧjLJ_"RܲSꘕI)GfrU)$a۝D^,&;ݲܟ#82l4d%0Z VAXl18Ť1Zx xfh˵tu<4rV>(8di8 Y>"Җ%'_ITD_ƈsbGU}0*sk!H\[Z$ JByhBɝ>部EiA>҂>1zQLr&@VZ[iAL-C ʪNDJĖV1ĜsWZ!NDId(`Q҂>PyHD0ziIiAtA p$w (A H҂>6҂>6LrZ|S3ݔAâ>郆V郖HCJ [rʏcULELnjPtĴE̝i);&)UqF +-sdYsj;7b)ى%\hჹc*#ALr1Q1HAĘu[QZ$b.*Q]w{&f"3fJLƅUmd=smg>ȡMVZs`nHA̘(A̹Ң3PiQPyXٚufLw>aUZQ ̵ ɽsČ*hČ4T1c7bvLwU 1F7*1e A%w`.-KAh:jb +[*1S1#A)-PZլ>*AFkj%=F{1aV܃> ZM &*j!M⁒;} ɝ>VKAftVɝ>,jY=hhA݄%w &;}0[QAtY(}_ɝ>ANL?T1GiALeđ!$>|u&jO!Lr0ɝ>ԺzSCRA̬$wc:2QiA՞Baŝ>"mZW>h)Ar%waxTSZ N!}R部{7UL:S柊iCq/AĘZW/ȦM)'f.vbꎊ!,3DL"fR1̅ j>:'*;'3">P8^$L!J&f!f bfT1Č/?\̍ɪbU 07 ,wHA l^T`uR9L)-WbN.WbvWꨖ +|0yԞBaDd^֬1A 2Diш Ž3fE{'TԺ: @~̉JTpZqbԺ:&pA+-d +|0!%A1$Ayuj ZT +^0(ŽMg΀ԞBb*}#$ɝ>ANպzf+BJHr"Brºպz)-H P郹Wɝ>K\ZW꡴f 9wɝ>цZWALfԞB.T1ДIAZWASAMɝ>/j]!SA=JJ҂>j]PފNtNt҂>*-胞Ntȥ9l%fLߕA#<Z;}кIAk+}Ъ=F{Z胘ʨuFO} >h՞BeŽ},}P >装S1T;|s1GU-sjO%bY~"IM%5պ:՞BzoCrzGPZWSnۼ'Kҝw*& ͊ ++~B +>{/^EKq=~ȏ?}f?lQ||ms|s>]k8]]3k[/18{^6=iiy ܴ\-dE`bY?̏?.YMR/Oо10|{1+U?chg><<jtԂo9oZ)rnߟ^V=v}T[_2,op-lbU{\Z3[;`Ώ=c&:sp>en6ik'm#T_mų9 -@Wzܻl0qe6 b==F]1?ɰk +i8}sYtEm#o{CĜWaļrx 8:F1\΃xӰm=V[KOy[a&KF\xDvmiWg/k^e[Z˷ .Qv\|^*_q^Am1 󦱞oDٵd%Ko3*ے|* }mKƙ[ٕq_.vWҞ~wqi6=똟ÿMŌ:siߟ_EIMr[vdkzڑⰂX +!G n;\ 'y]%|Î;< +sM*l+6wC*$RSc!{M\fŻ^uXq)e<ά30O}z4k__|X̳f/[> +&Nƨ<kmoc?C:MѣK?z:5ztM)9GG!OO?~rO2Q=nخBmyc3j9|ot2qeƿt繗ܖz}ݱ']?Ȫ%+;WkW2viP5:ʹ7gi/T)> Hi.u{yL +endstream +endobj +1058 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1057 0 R +/Resources 4 0 R +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1059 0 obj +<< +/Filter /FlateDecode +/Length 2848 +>> +stream +x[[o+~ׯs0_@ 4i +4( V^r +$@I.;,fC{v!2~?*c +/?N:bO}]t0AtdQt * +61Ycd8vCy?$#!RZ PNJ;\BRoȔGV짃+SUb.n\QI 32 +$S" %_T䶆d~ڬn~Ųm)a~9(0OYL(˧W_*t')EB5.p]̶k\l6q.lhml{.,k0tn9y]z])9k{'UvW>Ucײ/PhsfOP=7=# +67]x囩urh( +[AI0YSkwAPR<^ ^ ;VR>,e#- i),RhjzVr2Ʀfi1uRoE,z%H3Jb2 MƃocJ{O.'&'crJmf|l&#apb7nľrO|mMsdYM:yd^J0Ym yG'f ]g0u:G<4x`Ͻ=S!9$^_iF(s&~52}6klճZƕ?]:/fM7f!Ԍ2M:Q] gWkkkʶ$aH)o&O;Da%^8L,J~Ѐx  %& +}tT3^1+8`a]DJxP ;(GT]aAUYx0T86q5gF*Ȭ<)ㄍt]\,$ XH%D7ΝT91@I5EQ<[Тb] bO|;YJ&If$Éi!F% @ca ~|rμbVI289(ď +F$&t["$Ջv$ H,$֥oAn/tk4Z; hS**+c :("A3Hl3Iwdk"jPp@V ,1 \bͻ2)95̍QA4\1Gm&l옴K?Ĥ!kI94iVf{n0f'(6Yފ|\/(1>t0 +g^Hg*ֵ5"Nra@*rx&'4 +$M"BO"CrcG oMq[Otwqߟ+iuRfS!i}O$6:բ4~duϷ8e$ v]$^K7ҭrJv۾cxe٬BJ1xF5(PBqpκi>p!BP+g:G6ĴEB%v3@J1c<4=Ri{kA {\pŶ;q="$T,t-;` Qɳ*  Dݜ0 +o ! +0""F&Tah)r PoaVzϘC|=y%DmNQ\c,k L>5 m=Zxa-|(ٕ0\uZK'\Q΂EZoNPdI \bfrԏYyE"ضdD!ٺw p Pۭć,MpIĠ, {bc,^-7 ~|4w|CO}bK?vAdCUAD>;?0tO;Bh -l&M +Qî ַ*i-ȴ{ Z`6^Fv,.pw|<)%E gAJajb~s;>G]]nD0_B=ɵ. +$Vm*ύ+diՈ:7.RH="Aɷ(29p "1g~ e-V{E.7?7>xLH5\ǁoayi_]DД0eRo|;!ِ*{x_~8/??+e\K}lSϿ_H:k/e$$ao!Կz90 ImzZ<$ C&zY2mPQO-@r@r˧>AONxb|!0Or2˘E^ +CxZiiK+ +endstream +endobj +1060 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1059 0 R +/Resources 4 0 R +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1061 0 obj +<< +/Filter /FlateDecode +/Length 4221 +>> +stream +x\]o|篸9w<Ā;@R N ۽]ޖDډ^lUwOWz-ݧ;;l3Yl~^?b=מC-Ω5oT-D\SVO?_w|\j'{i~ߟv?wϸV +rpʭs.s pmeosxOZYPϱN>rdžo&v)9Gzye8f) ``7aR`cqazHMS„p-ѵ&k= L,LjQ+Z)t\բ0!T@% ᆦH7VEZwߋ BS1-RoHwI&LG]" 7,F!!l<&wHnXT5TEPaS06ædYsܝSI"K@̡FԼJIkoYu=ᲩXD`Kk{LbK"srWy9䞈9SH oX$bFRH\0  ̥E +ȫX@R))X@䞉9eɽsMŢs(AŢU—r;/VlIڗ2z$P}$JT aӈ9X4bURs0ɝ +NFqRU,bAdATܩ̊;ebAE@L1):BVu0a&X`":{Qu0"ScI"PcM"PQ@ %w`]rf `U,݋Nf;u0u0@U,WyHDYܩHCɝ:ieC16 "Sh;u0JbAʱ<HKAOSzAł:T,hp$w 7ɝ:XPzTB-$wuܩְT6 y7 aVyHDHACF+A!fz [rʏCMMÊP4E̝));EqFFE,sbYs;7l*щ%\"BcRF"BEslHAؘt[VĜ1 1(k%HPgHXXDb6n +`=J{-JA6Q:krXsYrOČ➈9S XdbUfb*Cc鵪X@#;A:X@Q %wɽs]Ţ3E%f^]^ٱU6ln 0cɘTBbKkܡ}T=h 1cwbFV+ѹXPbAVC`EqOԪ➨VzADĂYqOA,nzbu:DHAPrܩoq:6*S1%w Um' uF4!Q!;uNվzbNuͯNDS/S 0QȲC``l9#D վzL!QNn;uЛ}DL!Q!UyHJr:*AG&XP=DuŰNDeܩ֓WOAkY)$ꠡSܩXJAC{bA4DMł:h(v*NDW3uxl9t*) }̇ : 1s[3ww 1GyA&l1ssG37& 07,w`h\*`n\ "3 ,GbN,)Gbx+bD,ʆ1%\+lH@!]rgImLLԙ +'ْ{!{!fwj  L!Cܣ2t0 ;tվzRWGWdE%ftA{%fF!}u,a&@>DV$w`ȽHA4 Uc$tԙB$މ9uɽsj_1CD, +u\q/A^3`-upyȮuP$w Vɝ:rT:Z(az00IAXHAHW/A: RC)`lEr*ϒ +u0 u0zXP#:d!1&Sm}BbF) B!uND$S!j_P!'‰٫YRzM&iM)T蠷%w7:GEԾpp>'mT 鲝[߿2.)-n\˷oNNXAl&`ja6 +K5d_5n{hWپvi+MƝse yr^˳4%gN:v`xq41^a<%^~x:3:p^77K4A|vާАzq]2L& +CXq/I2ٵ igHݞ}Ii8'$ۇ?Oa;Aa8h:5t8$Agd[Y7e6c.6qu0Ȼĺ7yM|{X. DlKUZ~_^ƀ϶׀ÒPk>=},9`הU }V'mfX>`,iqPR{q(ba{|im1F:?ο퇥IPf_\20Xyke.'2M7['0}k-<848km Z~܉ӊ%Dp_5.xe2p,ou5i?kB]￙m~aKyS|/u_}M;P$vaIUHS۵q%zՁ_0^Ef('>py`DKZxm{Y=\:E|VMʤmƳyN ;>C:[x'sܨ0E/tۥѼ8vvR4fP\ +MGu:`_|ҁ|l5!yTkY/㌻x Uu.ِAo,Svٿ.Y}Xlz6Q7˴! 7YQ\ Sy_2󂳯3z_)9-]^hn,+&pz8@~.qt{~Kd]e +ψ%bK7n_6v_#, 1ZK&-;Wm)qpQSG5#yT[[91M/glgOVJꅯ|{+/KF" oN߾7LYdqн~ѽXN􅊟9G[FҧSO*L9L\:eskqhXs|V5mc.>mZ)9vF~ʌa$3y1P[{ 72[6 QD;W6/Bz!w5:_J6<޿G]YZuCL$H +endstream +endobj +1062 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1061 0 R +/Resources 4 0 R +/Annots [ 1063 0 R 1064 0 R 1065 0 R ] +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1063 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 370.130922 39.386457 355.116522 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/GPTLogo.png) +>> +>> +endobj +1064 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 370.130922 261.386457 145.130922 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/GPTLogo.png) +>> +>> +endobj +1065 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 145.130922 297.637795 130.116522 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/GPTLogo.png) +>> +>> +endobj +1066 0 obj +<< +/Filter /FlateDecode +/Length 5283 +>> +stream +x]n,q+VX C2 /x969ՕUQՕ+\+*NFdxd_z%kג^?~~ˋg8|\=%[9-[ݼw!o9_}k\mn2%+_~oWo9\+Kesx/b^/Z,VZ  KfԷk98łj%>`_>` ~p nà,A$E߄HH \R"T%>u-,DEPו@WruQPT0@*Еꆦ@7[hTu/ а}qBP)7@w0@)> +0 NuSP;ՍsoNX2>&wpnȸp{[O +w8Uag!Ss=uN% KxOci>PPp@IjJ:&\{ /;ek{εt=&ʸl3BE{凉:G/'SHl3—EPaй(Rxe 0^*%ee P^¶3uNYb/9lQs(A٢Pg_B]A| YKծllK9K>{d !Өsr^٢QC`Nb'2QIce r H%([v 7N#*[@]"Ga @L!+<-y0-y0`lEb'ZE RE "$ᇁ<%Ƀ1v<-ȃlA^v`tNb'lA ne `+?$"JAN \i%CclADb'$v`p( t=ge *Ǯ< -A>Mق:bd2-%CQ):ëN)[]ق<]Ƀ=S +{"' ^5?Hžȃ(DDAm_4󾶿;nao׶t,?3r>g|<{g;ů_;Z}{i]uilecľ/\*E]߻bx_.(\9ra]ź'Jo{J PlawkYY+؏" fmgݻmV[=gqlͳ~7ޕ rh7߻k7<ͯ֠}|`X0 t;$cP޾b{paL"qZ'Zϻ HcxwP2&6Q miyM +-Vņ܈{n uvϋbݦS`x]f>Nv&!9;:Y϶d>眱lNw;qoj<;@pPvۅ/֝>v?{m;q^̑!9{^ˋx sáN@nC5bi+S'v,Kعcw]摞,̥cE䐥 l'y؅v ˙gdJ97^r1 |Xsy/B݁U: Ig,E|TvnTp}g<ޮU݌vi >Tz# 5$\q׭ bgtۅ0q3o䢄f`CBVe<618g-k7Ĵ/"Uvܘ߼&YOޕ/a$# Lճ%졤;퐋0Gl;f-2͛(㲈s`?8eSa-VLV䉁݊Uv(Vۈ߼V;LnدØoM?)lɺ;JV]!~[L\4ϦQ.1  +#,O6 l0,sOoGp"]W$}f~Mzw# B}ϱ;b^v=F0jIg~U"z&#=uGnyycl;4v>H!M_aE/p79k57}gcRM7\ }A^5!GE5ACV}*G\Ξ˾Q6[1li3r<)F +dF0ZL2-94>Ƃ;|?<>FƔ甐lZ$mNQw#g+o/˙RKTea2aomWn6N:$&tle"{Tr]5B]GMBF[rsm ´;gR3"%JKi<߹˪Іs.fŷ렛kdÛge#_y0u0i ն>y7C0w>fF[JҾ`|5lg_m8%z3;:s:ڪ߲f\929MJg`"sc!z'_1FP8dQt{ e- zU介-=¹CƻV.:Lan|ٶK. +n9L:J.-%osoPL4jRgef&n" juÉ&^~T; |&w흱Mm0ȕkd#(c:"L3\<zg:.V yh|u;3fQ6Ρm `mNƬ:ixcةx,U)cvdO9c}wfgOC,Xk$X +|6°ŝ4k4ӹ9ڇfg~}[ _Wo 퐰o釷|>ֳO^ oyre:γS_'MgF5y=nJ+-n7WCU+jgO֧Wx{ʛt{O;Aܶy5{1e![6ɐ-wd)a +z>+:%uǰQ-FHLfYskWXߕ:L{+_,WYBfك%[C9}mm}͒4s֎Wi乾U[ʞ 3떙jpZt8df=:e'玝9O5ԌuDgܼv6ׄ\䓻̧̜ OpuS8)&;|;?g(b> +endobj +1068 0 obj +<< +/Filter /FlateDecode +/Length 2559 +>> +stream +x[[$~_RCC @ v!JG/;0ե۹|Z"`ykǁ3yI3iAZf^9zŔs nJɴ㟿~:[/:{bY8gc7gki-1ұ:nۿ7-tU |瘱E2e<ѷ2 s^4\^nsdz1*[i#_/fFs_p.ItЍk1ʛ8LGk{?+w@~@؋,h9;A9}-dN +hQ~L[+3\QpɹS*!ở?vqᆌ /YE ~sXku-}V+4/!C"}w@畱tv+eVeC3i%08RFh-˞˪P'>0 )g hE'tpqo"p҂;',X(&Reأ.,6wy JuKTF6BwWm+]zQ +6'(3KuR*+@EL4"kG^zE@ر`,S[bjxc2L/>3Ιf,}m`!r)3U)Wp1|4Aԋ sdw̗{WIT5QQ|`U;b|,anȂ ҟU/mv}nV h3.ThUsSM.2c`%h֐ ]̮Xȡ|VBk,!9_UH3;TRejCtb5o RatvW+Ha]*L-4E U#!i\6B"S)v!m! zBC +AZBTRrQy +8L}8Z#PJrŴ +3%n1͑ml\6(.GHD$ + 3< |tJ' 0$?8(>KDy ,,>wNs26+y,ɛTUB$ДjzK(> !hn:Bͮ -P͹n)[Wn8՞92̦DڟR3e}sRye ks_s9g 6Aoat,nwe]cmaGy(]AD=A" +o{Inld緩5 +{GglѷvDQOqw":Hg]wե̕Fi(PBD='B9&]wϚQS:4<̝"CPEaU0m= (ts L4Wi[860Gi0( D(д + KeLUCq-}ڀ{Krvstu:w84 'OR8oZQ/1XPu<޲f#ISβAqJuJAUH́iaz +`+} ۉF*d_?/9jyZA? +$K-a'˒|X%/M;\+AȔ2F(\ -Q4)F:a }>tn P5yiϕhÊNM]$"M%,)[)dN6խ:)2a6QPdJ^\?\!oַԝR7+U7 +$?u–0kP1ߗ'_*%(RϹbUPQ!* 2?7OI0tCw6S05aJ7ԚU5:_K!}\|3r4q8w3IQ0g3%Zq:wL7-n!iχ;˄jlzH{9d3=pmi-q3ba63بz$:甡M㸍)cŚsЛ/cQ%ÆeQ}`o^Q|Ku!ˈo]Nj0Z#o@ 3?+ z>ȕ4p(Iy{2<@kGO7>8jGy +a`EE__E8_3/$wp-[wIk~&$$ynN8s$؏#}E>J"XhR_ mE&OsǑF9 ~H}3$cˣ~. ^T/vkI;>E46~ͻ zn).83JP"^e.\zK=4^3#_X(@GSK|76}%KiO"ebBoy +endstream +endobj +1069 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1068 0 R +/Resources 4 0 R +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1070 0 obj +<< +/Filter /FlateDecode +/Length 5403 +>> +stream +x]]oq}_g`1AX~ `9[lG`f"YNUuSO㟖^Kzz?>[_b՞C-O=Rk{"x)FWOߟx}V>y-^Zӯ=>AG=Th[>vKiy쏟2o(c;\o}ڭWTM0$z:~ءڨ\aw8?bO@ksVzBam +<0>089>a40%)x! K"AħTu ǯE9!u]5 jQ+u(\]"T7$ Pn +t)ЍVu 4Lc|_)q +4E)A& D:={SNucQ>d|LܐqQlI1ަ*"L^$%v؞s*IXbaK:7XUb55Վ3J:cj:ek{εt=&ʸl3BE{凉:G/'@J:c-uFRHй`*:%v^*lKlK{)K:ܔ- +u%([KU~X;/^%v0_ʭve P%e p_ȑv_B+u&[F:#sS~HId@f2 +;)|lAe NdVItDe  [ `Iaȃ 3Q"+^"c/ +{ V$v`5 [`, [ BB~ȃB<cɃYق<}Ea'F$v`V C ªNJV29ƦlAA$v Mb'BI@gsV rɃ;yӔ-ȃ>נlAȀ-ȃHp$v 7<+[Qق<Ƀ;<M%ANق;yvxΘA0Nt? +;x0jV22 i9 +?DRvEa:#:GJ:#|CW=z.lAHn t]$v dulsdV2EagE/G vVEΎd!k{doE<&*[c-( t9K:2Pu)[d!Tٗ0SgW%v`,Ve `D-LxKXr uN+[(lQ3PaY^GdCvd3JƤ<[b\j#@&#R2ީ3Zay0ܕ-ȃٕW=Rg'ג*xзT_LkjM}]b١UD/_ni$pI8Sq.񅊏YQ.6Y8t8]3 E}xOR^v=?ڴo% ??O>ߐ߿}ssyg$ gpruƥ踙 :{xD}r<>3EhuqMnw\ dzK[2?/{`ޜ{8y'3|s=l6#縟/=Ct?^d.3~oC31X-d>kŌ?/.xO4-o!eH˃y:0c@n=~'YPTtc w3?F)g{|F| <ǽcz>8b8^'rs]h|5n3ژQblov1c*a\,GlzLTzl7Ahuy6ig:3MX팹90q#ؽǭܰs-FS>8i5n0>v\W]1X7ýN7.2Ma89\4܆<-xCr>ga绡xne4XSȃkvgaq<}۬lȬaYbj50l?k#e1Px73a[X3!emgQ#Aݞ]ְ>:!Tκwsb(Æ6F{}[ vږ3 ]$ +R;r5Uc.,!^arIp.4"7v8h\//)al +~px6ӍwG˓ڢ{utS[l΍f΄kcŸte):c běẇm|⟻"3^H#~6̔-Lkk͔^MQ0Dd߬]XmS9SXґ`4w=QjrS+d/MVgCӆN]xe#&[UB7d2So)'F9yPtJm9s1BMmbfc?񌋌.ٻ΅ŷkkX2zwbeG]y >u5CX9JOIV[pfxEez3pu&>pWh@?'Are`o>4u|`&lqnba XxV6Fh9_-/բA=<>'u~B4K>??twk[v^W}ۇys!hv=m+vڹϻVߖ>~[~l;PqM޹89?i]rg]g.|Wl Z}ioX\Fr]^sap!v#ȂC3['~mH.~a $i:M85Cz8./&<;,Ճo7][2)MrQⳕl!g˗cXoH vEOڶ+7Z` \Quc~s/ӽuNtmCe{+'Eܮ1_O̞mT]qV3Ljv“_/ڊ2[ C^l/St=)ڈzPƭ7 ڡ33:՜nuRy2Wڝti(쪭>G0{aĹ6h v)X"tU~šsȦv~gvjШͶ<;,鼉\Szj7).~V^)xkkfv_;m)'.=mo߯r쮖bQ2~{/^t籟_*_Nk/nܵ +SaZv-x/ꅿ\m`ߋ*,-VzOܳY3&UW{hѐM8=6xߤu,$?Ļf4p:w+Т8r+V +b@o%wR})؆bwj\|f~;uY|n/ +endstream +endobj +1071 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1070 0 R +/Resources 4 0 R +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1072 0 obj +<< +/Filter /FlateDecode +/Length 2909 +>> +stream +x[[#~Bzu@هp&<؞dZ%Jv<%U}u$˳H ?%9߾~;[;?o'bB! B֋5Z O> ?Kbetw_O_"οtOmS>Tk:]L~9un/ߥegZ\Y0BҪbIJIN؛bIJ$3gy^)TƜ߾_~?.v?EI:'lhnݕLmvfM.ߋZX]n嶽6:v=|Kn<m:gdTܸ&oB$5s=gѵYTUB5= ̋ _^lʀ;*s*+"c_eG~PFW>sk)=G8lk&PǝkΫ,;9,mk(~>JϷ.Qa X漠Xel~{nTTMw]{,sP]58@}Catr g?51[5!gL\L*IW#^z427@YO)kn}y,y,{O{fɥ4pdn։.w+ L&s2@t +;\6n&܃jpS٢S֓pi\Pt!Cjɞ4,J֎tw×Jtؤ55IB yFa-'67dl{" Զp@(g ,$hu^ZEAP.!-b9Q@<3ڳX)Zc?1T'kaf.|?WI΋Mz56=)$T$2G +ͥWj$&MH{cwu^"~8-p"FPL`V3q*Qq$gQK< !>d U?QR-kiʯ{m̦۽TP +r\.#7sqWQTtB#I$2BT\\Us\WӲ_R=%*ܵ*V9xV,IYT3m.Z 4)htA!9x!qf(@ǝ DLbMSM:( +fx@il&ރ5as F*'އ8]LzmIU)FI{LBz0v" Qm)}mqCK +!j((anמȎ,z)ܜ'ݏ 9chqfM;.!i +% +CrPWhLccisf +O@@ F=ZNrgv[4p+V:aEG;X}fsߑ`O4m)eC9c^guR E3 :䕒|>N}֧J =; 1uM +YF aCM.frQ?퇳[[ҾWHiEVLLt52&c472I0i>@ xjq>O$]UY92'I2b3UсJ^~zqs]R^TaT-K(Wq,a| e(3v:\s`ot ޹$6jQەز7 + XFg@ Q-xL*nt#B2 jey@QLCxT5 6Ճtm#bM]H٠ܞK8]7±IxM + =bZ)\Qύ3vW?x݃3^ɨ_cD:;KV|w[B_xky#KM-cq֋nDQ;-ʢ]^ܼ kЏ[)}l@(y{ +Эk q&3FsPU#'<2Q䣜=aG'jt/Vmkb;PF<%;7y[>DF*%v? UbQiΉoB^O\S4+ +5I-3<]@Q]';%ί?AH \'[*[_uWjR|hcXۼ.0=X6HR%iKմ,VeK +endstream +endobj +1073 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1072 0 R +/Resources 4 0 R +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1074 0 obj +<< +/Filter /FlateDecode +/Length 4871 +>> +stream +x]ێq|gn,, K1ᇹk@`d53{l̰dDeVFf?;;oZO}r_b՞C-=Rk{"x)FWOz'_{Ujއp˾ioy7~_Rr9~>WK-`<nU? +09zZ^+J]zuиc X_芻98s۫35p0K0I7aR`c¤$$M%{R&_9a嚅 Z +EEaB&Jk Mn[hh8aRhiLԛSIuM8zt'N1d7D';u!wꠋ!fz [r::{4+P4E"();E䢸GG̨F/#fYs;Uq…/"t062:&ōf\ErIAH3&!fdŝ|-z=3Y"3:PH̎ k;W>QHA6Q:kA;l,'bFg'b)_db*_db8ת|hwtaQ"v:K{!ԻE!fdqJCŽ3hŽGl١Q618Ėܡ1(CБ{`Qn)bFwbFT+Q)_P]:]*=QS{ZJzU:rSu ➨hjzQQ{:B\m"$ n(SQIAZROl `dܩ̒;uu6uFj7!Q!;uN.uDDvuůNDQ/S 0QȲC``l9-D uD =D IAߝNͩuDի=DpC :+ɝ:+_P="Q:CT{ +: +Adɝ:zR:ZV{ +:P)At;uС'‰W={I:[oj]7MkjOB}]r١CZWxAؙIpS[olPwVe}g9lYa{{|"ʵf!aƽT{/ToY[<_;~J/o\H_~o=qq~{PW =f%bl*;f9ǭx6?qz-No-?qߗ&\y=b ?_Vl9p}篿=RI9w9A x{A^^m'h^׬sցyߛzxzNXୁ 9g1yw+V^;O|q}`mxlv0 06cو83n f5@>uu8wft uûy3s}X{fm]F퐗Z+rj<`9&r<-b0KG[=O`ǵƔ`K0S~۷q1ݷkțI"+" $T?DN83!æ}M +|P[@ɝ7S鐫:Nrʰ{dIئeRMul f'31 +]]Ϯ Ou91#2D>gg7HNd*Pmh ߃*Ɍ֩`3LV MH+gE;r̛ųj}jഭ 8v_b̪LZ1+.v/{-k]P\\>mT!/_|KXظW.GuWt>>i:IvԶ]ѷu5iB), +C_Q=߄{)믽*ww!cgT!<]#3- +ƳuaGߞo-]5R9I8p|d'%< +D~yeIǸnDWpD +h$2>mgU٢kΊ;[{-'}W$]cAgj7X+CRǚ2__׿,KMr>.6Kl_l{5Nm`DXm>h͑'sVVEdeY(/r +dQUWY#x/~q/sG6A>9?']FuH+ 2--nI4󆜹poZlvq~ّMK?3k]u;EZO|{byv-e(v9t>o!RO;ZldbNjvv]jrc{94\[0l$EtnMOL/_Ӯzj'[K$ݡxwz?يA.P\gKtj?fw&tG`ݾAnG]Tijۮ +wwzg|ëb,Q> +endobj +1076 0 obj +<< +/Filter /FlateDecode +/Length 2143 +>> +stream +xZY6~s2`a i6iyi +$@I ),iv]8g9$1pN>83g8E~ F:;ʹ‡ τRRh|8=}y7!%3"Xo +1/O? HͿ8!e 28 `V4W7pK D(ÂMs{f]L*mRpcq9ϰ Ğԝ9mQ8s+g2vxtx/^<6ȗt/QqZ,LuČ=RjFrFR3ڑYpkN!*ЭIzW+%/ +3|iܘ4ƍEh>_5Z1}=njB{uZ}´G$i(ʽn{c+cP\;ȥrPh6h]G(h $gw%$c(pWeWs"Py` +sȫ|Ə8/ޓUc0s8nDk#FWH 0ϚӞp<L*^- +h m}"gșpl`W #AfQ؛gH4ʅdo{ ۾v`E(%3-&' zւ̧q7K9hp3_H$ Ntv]^#x)8Ka0p f4*0å^VC SFؾźh[V[lIDqP rGM&@o/E=]ξ |p%ycMZKk6j[K<&nTQ>a9us!7Bih[ FƠ3"h,Z7v]"x\jDvPr;׍-t$|J|K'B#Җmك>H ->OF9*JDWÐVntMoȩVn +-`w }1RwJ4q9NeDڂH͔7ٮeE@e.$[7=|smۓodߜ|96B>D ~2|0i^*1byVP1RS]+ +@$xP;w.8'|Ε3Ɗ>n"`ì +>a˔TjŹ sYXvsU +endstream +endobj +1077 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1076 0 R +/Resources 4 0 R +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1078 0 obj +<< +/Filter /FlateDecode +/Length 2225 +>> +stream +xZێ6}W9@/@ (`4(`+q_IPC&,Qp̙$~k3~҈K+|>c.1h>L.TwǏ.(8w7q8ߏ^ǿ;\ayׁ#qˬ +}0q$ 9OsZfr szlH׬̺1I! ?AY4g-8A f05+_pϼ^|?EKu?8 71W?Gy;5{TΗ<2߿|iݘNd5e_c.o~'{Sd{Q~GyC0-\o_HJ@HFҤ:ߘ7`%BV$|9II`TD@ΒJB"75ZË.h[e&㸐1/ 9p`)}T} dlaźMm44P>-sخRHyl+ًi:l`ͷ:B'I^z2a +Ytm h+ ]T #x.L5XQv%Tt|B9S-kp'؁( f,eZ7yg(n$>QZ4瘭]>Ƚr ,L|Qၸ[4gܗ0DSq@W24Kx {̯↱PJ=-&v/aJz鏝c-d'DQ O?7ZQ8miB"p֦XĤI*ZdDc 0d&) m"-q+ywA ý|ziChԨؠ$&}[ *@Xح"G"ZPx-igu5v4X#~̫)L@]f \"^T\jRLemUK0XXEx)m*Yic*0#K<Ӊb|n ME6R$m''2m&8 + +Y$ ^[M8du Jj%ְ#A=d˚p{Y|NoeQCiz71@ 5:kHz7ܸA5vPi\S)cja=GEVtEf>*j3ЉuNE*g d M %4ܴڰ2 ٢cEWm$ݖ Q m/ :Uu}y]2^S80Zoq@ U?Jצ]:s8j0_;gxNyO~( QRawW k{ 0ަkR {zr~ga=9zÎ!ު' )hWcbvq`ī/k'9M2mrqhD~F\cT$że66}7EmIϱ#xm $2U[R3xȌ؅/eu> @;8/LƁ +-\jmSo dvg%ˎڥCc~sV) Io8jGBsۧ,rf`0ꀾZAJșH|`j~k=T`$.|e%.<;b+V'㊰> +endobj +1080 0 obj +<< +/Filter /FlateDecode +/Length 1553 +>> +stream +xZۊF}WۗC a!V}nR꒪elO6fƒVs%^+(Bc[ܣ:SgjBP!^/#,#}./WJkaUtO7G%d Kw!N:E8+(A@ؽ{Wi=T9wR곔xHt<Ń!Ҏl:>\=Cֱv3Ιr͍Xmx\c5|LF%I'ha/FWUBiW ep?@P $sNp-> +endobj +1082 0 obj +<< +/Filter /FlateDecode +/Length 2318 +>> +stream +xZ7SBKI %/m)XsBJZ4jvm'͏c{o$# S|r[׏O6Y¿4߅קZXsjRq珖s&d(夕??~^N1s!&ͽq:'v-o!aSxDˁB “FZŵ9|u9b(oˆ6Ԉz=+q\tgED`ΜRjd ǑHrr6\>"m'D1I MY fg&{~G/,25|jw^Mcb5^eZh2[Q3n|)]U%]!|1К2gsu92'Ɍ.yl߯rLb&xzx8:YXGE=yYR Vck$+"<5Uihm|2u!jIFr "]!/% d@n :Afcg)XCɌ@7(brH#]8)Y"Jq^hS.e+v 8*>:@v4 e ơh~V0eN +PYki܂s wuOgFt,<W# cCz +#!0deAxbH3Έ.J"849<랻etJQ igSGEKNleO1+Xq A ׹;uE(+:Y +aQQy 2*_جZTӠzoFC'3'`d I9݁9;⦯8hBLKT8F +CfTWf&kw/vU`i>e0Am*6Rq>/>4aNJwY; ,MM˖8¨-:wlWКLB(,+d\&y#n@Gt&#gw}e1錉ӭaڑ{ε >;9g g̤eD4`쌦2b# +JEgGyh9 ƀ#N_ +SP-̓"qT|d'+:='nuO2LD +f? B]hbnk=5b<&.. >mB6\xe;hor徐z,EC08h `Gd^_Uځ`XI\ ['Jܷ +9 +(6#o(f}W[:tŸTSu X U9zCIT &83 l!,ᘍmu +]=x}/'aoݢNh_%B7!=`gF +{%N2 +{uU0XWCyy?#ؚh)ςti^EEsz pq{Y Ceװn[bi{MCr4p(FhڋAAۤ>%F4v[1JO_cx8VI0b. ,Sb&mHQ3 7nFŷ:8Ӯ6V(OnfITݐA03GV ;A++AC]A:*YEilΧ"P/s*7Ϩ~BcXa> + +g wL-=XGT4t6ᆿ +<du'AԷ˪RD!'{X6fS NR;L_ٚ sI63 'wg9Ý`ґ.OT$%2VFEְPuX$V"!Ld9Mom͎Niib"RuTYzЬŇg\0D6P1u9]k(ZAQ)x|icm`ю u-2 ^ -y6)J̙[uLS+ye&&fLp2b ]6#D 1ޥjTkFt,!ɿ^]LÃq$㮭Li}Z }D<~Mqo³W~xBȐlRV/`"QLһ˟%Mg4Ɵ4{̬q4٢,[K|Ok(h.:*bFA9tEДrM+gkO +( +endstream +endobj +1083 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1082 0 R +/Resources 4 0 R +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1084 0 obj +<< +/Filter /FlateDecode +/Length 2532 +>> +stream +x[[+~HR !iI>UKm$gǭK_UiYğ_0r aΜ?~9[/IůVyw^bBa={)Kk?O;U/^YJ+Wl!ןN\"?m[FC#D۷8")TƜ~>}??|wi?8 aoYė߻EϬ>mZCߗuylq2OFQm{}Ͷg=G+m_04i!0]?.A7ґrЕ|jlZ:C]w^E9Ab;rbnsh P~Sm.&{ &c5=9x< ӍXZ7fi+HRrl쐢AaВ9C1?v`ZUi=H㗱`9^;H +zs#ERkBAZ悌;H;&j> dNA7q/h?|$R\ߧddb+Fi].Fe_@n.81`A&pWxt-l;`VYS;86<~8kulޫHpkjȕd.΄^]_┘Xo].F/bb,V+pά.^䉘=19a:gQp@[uHOIpIfzVs0[?%'MŌK\ʊêأ oH .VwI Q l2JvMi\,̝&hnSG?6I)s`,!m$Uؔm6o*ذ>:x|]}_z]==rݮR€/^;E;$QԨBg}X貿'|" {gQEm`pP +~~5z ʹ# x+pF*%|!|"_3(-I:ߧg{rZ,b҅h &=Ĝ39z2}\4S%~npj:g +?KAgLGdzO(.`ͨ6&YM,bS3p^uVYA !O(1)m&@Vjq!-Di]%8(QTv 9#©uD2HYx4;(^aKgjM0ܪwzѶ+,b`4jE`#vPQѝ^8u;K@0cy;$a.軂b9dupfUI4jZ?Zhu EN;gֈ@+۔{^^ zcWTL{fovYէ[v2I29?#xH*xHX,,$٢jsẙH(GE2Ms(8K %+Ƒ[NX#υF +6ݜΧ9 *]W"UԳks9r2UXe{.T:EH :p-`J_ނ;rк?a,!XO^f֭v[EG]Y(tmK3D, i=GsGдCUƮm +9 q%3ъ +Vkk# r.."TȫtG&4^$r3_#[% +LZ\=oء-FS|~+4bTsT3svR{%!>0Z`B>/+ѩk%t_W ;[`]nhVI 3/+* Or~;N4e'wgWi9}}skX!#8?'ty3*#5b1F# ?΄^B,LXr)J0b> +endobj +1086 0 obj +<< +/Filter /FlateDecode +/Length 4086 +>> +stream +x\]|_"p vpmy`H#J#sgUnv5Ii?yjm%wݹ$?b~e*-MV:yBd1rOwח\[G?{]n-@kJ>:zT3esLm9ie8g^ʵNt^!N{j&t ~ذ fdv5M+b?7/S,LO`:o~xc)|q=zxp|q=~oo`f0001{aRaٹIv0fE3v ຖb& O$LוHu9+p]*. +µbpcQ ᆪHWTu T c|Nd8EZuts0) +pNK^nkAnCxCtD!a fw֊6%ylr=s{ʒ'f&<ѕ\+| P@&H]0LlC)_D`.IP+IhE$f.H潊C#%w#3z[ˆK€9c* s;2+_@,gK<ð1[31T/21/21\TfbvErYjErY)_@ЁՔ/}P#)?C 1S-M%fs^stI!0'SY(@5/(L;UYq 2/&|#0P-(|3{ƚ%w`,ń/u0R/u)!8 AtNIAdդ|A5 `DSs;u0u0@/:*S;u0 1X/pNDI0QR6[JAC NT O%(_P=* +ɝ:Mr mAZTB-$wkNrfȻS"&ANthŝ:"nl^:ܩGq &æbFl*lJ"&J"lRVܣ#fTsdYs(;7l|Qܣ'fpS$ōf"Ca$w %@ Y3u|3PH̎+K{d;tMTƒ1V6\R܍13P܍cvх}n*1"Ccn(_@#;A:0+_@ 95=|Y\3Pq/Č*Zq/1U6P(`ƔTBYbKJܡ}T =I( 1c7bFT+Q)_POM:\*ֲnAEq7ꠕVҍ:WuRU܍: nALjQ1QQ{FD!6:JA@;u⭖ԍ:/{p6*S1%w U-u6:#`ANDa"SKj]ݨ.ܩ(%w`8YVqH \ 1dZW7`pM)u08'S}s;uWՍ:W{ +FpC fV;uc|AD Q)uc2SY$wkՍ:jR{ +Ft(w f;uС=LDҔܩ;u3uP{ +:#\ɝ:0TZWA_SA_Nŝ:Au"S=ܥSYpw k-8$w꠫NrԺzԞBBtBTF K?2u +uйo-JAߪuS/Sc{ fj]bY)@(ɽUVP&C}Pܡ|TD߼pз i7'K;~}͊˫:j?K} +K1~BTD_>}>M}_=ɣN-A9c[pz ճ3}0VʖrNL>攉}}N[OnN+ɉOct[uf/3+okOcv9y|Ę{kz96^mqcLw[lݯXl>m~}mkg{>MyL 'w{}9*?nIϗv/=B;qN<۴4VG\5_ uƺ @XӮڗ!l{v! 9#}/e}V->ޠ\o34x6NNv|l\oe=D\OLQ2{\9l7,+~Js֠Rao_q?"G٩rS>~vs2mDsRmraw>*2̑m. YΝ<%Z`tlk;$mȭ;8@6<]Θ߮/>Xz v,ؔ'%Jc>"}^ƉaHCe<7!23#(zk[/\e9锦\%}tru*N/kɈ"ϕv$~R\qGmk}|{ZRAt#^m~HW[߰RTNtlۼ3'g+0,g}%o7*:t&O +EIm1(,F[.X"in|Y;p)h&wCuK~]w)2',W] n:`f3v&0Te^vnQi֛U46<aѯyu1Fפ7哟GˀqX M;k{ILvE^Ea1;;=WlirXu%5mu(T`k_ǯ{ߦtl, k߼iӕ2w:G Krcyjö0|RֈH%!f56ˏ-K:w6?u̅'g+ujqm)WO\> +endobj +1088 0 obj +<< +/Filter /FlateDecode +/Length 1684 +>> +stream +xYɎ7+is_  ȡ%G>9Bb5٣q<#h$us){Ȗg^?/3ӗX鯴~IG;Gdg/"P:]zFk_>~/,R[s~}tzE?{Pڈ% |gY$EX +ӻ~?ޟeO %iEۤwZ owf5PQif3l$2d OҺu(_:À&ȓ5 Ƥ>փ1X+]6%e?o[;\50 ~k˶v_m+ؑGUܷ6L؟kпEm<D|H.5Nږ~s@]G, + 0q7 Q>EY+N=gb'8NR3%\,1izK_=3$0c lS_%@dz\E(Zk#H H2SO)kҚtJWk ricj Faj5! SUZِׅZz݁QRyHdط/a ~vFU?FޖnJGX((fи+jIcH>a'8 ծQ* JZwLhDIUYq#"Ց*(x֐)y-'G4map-{/ + IR/ ±~SOWdC.uLl`"Bb'D6**M2,)cv 4 eW ^GJZLşi,"EvU e@<8 L4,{lJPKp@ ,:s%/hv@>㚁1Q";C}1I|A w4V6$G{4H.GyĴ'LWq51сJR"k[䚠/,ЅDa,F9TFUp!:(}EJvO|Pnw6Oxj]sWMW5 9&t*sۙsۙ܄&t*67!MbKЧlbMHM< g[I0 MjsKtV)|5V2]avq:=^:殗-,S>)TPGj(M +endstream +endobj +1089 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1088 0 R +/Resources 4 0 R +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1090 0 obj +<< +/Filter /FlateDecode +/Length 2004 +>> +stream +xZM6WT@{H{ E =8H 5CzEplK83|$NI/SP!s||x/<'!tet|1z.iz*xJ-Eg^b/B, +U74 +ocmIڛP)D잝X&/0N?t1h eYA[j̞(6Ƭ|I@e">eόĤ!HB`,3\JN?!H-_JfE,VC  %>%TflUB@1+< 'a+nH.BrъHF:oٖ& [ +j'pc l ;bhygTIzsZ:>V 󙯿Y5EHjtBWQSq6s *EJZ]W2^=1DBqE&+[^0x I8WrT|\@%BS2E"rlֹ`Դ\U4+DޚrWz('Iˣ}PI8LrQEm9p2gت`ZŝQⳆPL'N4]|]yw;^G3O(Wù]:'kP>a}ng%F6 : ][CX8k둷bx}Dア Ly V"ӚeUKwnô)#'K0"Gc'DhMMK{s}lZ7w,#0iyPȴfIyQ%y%::6,xLM5{ȷyRaersFQ$Ffҽgҷubc@ƤS/\ϻf=WЃ}rO@߳^?X=C^irHÇhoY,IiULP?[bJ6ޜ(D! H6+ޟOAn1ڪI, w]-,\0vm_fvI7(YJڮƨw 5Xn(ZY r-L`u}j>d#ɾ˹Mb|#=LXɹ&ǎɑ4h,TI1*tQFea۳y!dn]0abr`h;`oUE$H `R1 +|%m%x_a" +endstream +endobj +1091 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1090 0 R +/Resources 4 0 R +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1092 0 obj +<< +/Filter /FlateDecode +/Length 3928 >> stream x\MoW=B@;$7|RڻؕD#{zzHK-Z%]^>>`S͆?wCS9riJymrq0)^~>ǩV/!L{i~_z'WzoRo9{xSqۏ Ug<`XfbԙXԟ4NCpr"j8p2? @@ -13665,22 +15101,22 @@ Bh Y;zk9^a >݉!*C2w<9%.$?v >n^` K+1lynʃC^zʙא:Xނ~<eM[> /APaiƥ+dxY%tQ:/4%q213YtjR^Ү{^o O)oswK/Ao΢;T.|fxOi1X^o3|;"a{l+o a*,9n])hM +*KzZu2?`퍿=Xy~\ڷlps֊cM4|P endstream endobj -980 0 obj +1093 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 979 0 R +/Contents 1092 0 R /Resources 4 0 R -/Annots [ 981 0 R 982 0 R 983 0 R ] +/Annots [ 1094 0 R 1095 0 R 1096 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -981 0 obj +1094 0 obj << /Type /Annot /Subtype /Link @@ -13695,7 +15131,7 @@ endobj >> >> endobj -982 0 obj +1095 0 obj << /Type /Annot /Subtype /Link @@ -13710,7 +15146,7 @@ endobj >> >> endobj -983 0 obj +1096 0 obj << /Type /Annot /Subtype /Link @@ -13725,51 +15161,54 @@ endobj >> >> endobj -984 0 obj +1097 0 obj << /Filter /FlateDecode /Length 3886 >> stream -x\ю|߯g7& $H`!. {^#H#L].0|fXd5IiuOG4?˃,?,<8ƨ9a{O}"cJ r^},zRXh2"xJG;Wtoi굦|CN`?]U~wj;k[, q, S0>6;q}hgK{'tɬGF< M'9PusxI]4ĔҒn.b!&!fsdfdkTM=Zm`VT 1{"l{s흘SE'fIii1vtdۇ!&+-FFLKEij$>ٳl 撫g)10V"(WGd݇'= 5)E0z#UMA3Ԧ)H͕()xi]2(*%:Sh -2[d8aRCSP<ge)K!p nRBL'4N9 KY1IYzxES,Hoͫ&,J^5KRFe)K#Bff#p MMk!eYRWYإctYTP'p$e^̤eVԈz& !IM..ekASR@d?8R:'JL%J -2E,֒%9hL,i -%•,YZt%Ksb*33\j -蜥 Mco9KCB,}$tb)sf93_B̑L:'_M)sfr..esBM)sf4LxJY蜘tN :'KY蜩F9*() ΉOS@Dm;,tdHYpMӆi -1A,tN Uf&)s\R@紂 Lj es5tN90t1AAQLG3R&)(F(l,`b.<MTH9͊ i)s]3p10I -|CS ܛ\L r\efdO)(nz,.Wq.7@Ιz M3uIO[orX]PoycNp߾^\^94]k1 rO;Ep˛Fst /K!=TP<卢ӛL ~;`~y:pOW~" wX{o_:$%E_M@;p"v]Qy`/?ZE5⯧A2霭q Ks>tu=NAGIIF>w\5vNby F)Wu)+vyQzwׄ1}~eǹ:{r%~.i/Il~VOki'z YX,׉x=;/k>ۅ y?~7v܋h/Zb{LaXⱰԧM0emy#Lڑxj([=,X5>2~ήӵE-fb-wD_>_ϧ2)ݳrohiI̬_ y& l;YM"?oS[__nDŽcE/p^oDO&ݞ%L=_4 d;m&vUo5.{LƇ$7PKz钝P2,fgNL.JMa 2qt g9,[,좞 @Ǿzg؄LjY)RƱ:Tblov[Yƪ׽!sy2]^B̍=772!qFq=\dFjxz`z\jgs-{_:EknIse0w,{)Zlr -i} -ۆl?r.9nUhrld3$c&sN |yu2\׸Ke&y<pg(zSΙw1%K9V/>ߏQa=)|i^_<~+nt/4ZS>^yhqR'0.~*o?;G^εޏ-8X)T>\4dV#u#?]兦WOq h9bbbJiItd71C92MZf5f&lɶ0[ +*=\i\B=9wN̩Ң@qL4Ƙl;:n֕##H5jmY}sUi3Ŕ+LD#Ȋl~2euJ "Ԫ j$JTIst)4k +2Fp0)K)(mh +3Ȳ87)K!pOIfxI'Mޥ,N, SRP)EzRxUttMA%pFv)K#ܲxj!3Vu^ǐ,dw) +,I1:i +,*[t/Vef2+jDI=I5@YB))oK +hLM) D %KsGefszqIAszLttQ%Ksdt2 9Ko:gp%Ks]ɒ/L:g)CS@[,tΒƐ9 jIi +,t Ǘ9s$3ΉWS@Dbj +蜙 /KYFS@Di +0 AFR:'Cf& R:g,t΄ +JBD})s9Q) 3(R:'ES@a:uLke,0) CfID:i +蜆,921"HY0|Mg5p2 ]5u:ePGPԢ2##)AI +8 +[%K1/ !)8c9K,IRN6Ah +2MoUʒ #)c/ISP.e)qWx)(\.ESdeT,p 3oQ  Ixi&e.,S23+[h +) `*,pNMĀ94p41,1KY pT咂 "pCq$R dͮ)sESD&̏ A "p$钂A(,tΚꐲ9"38(p:8#z9QCszsbr.)p:'&r霘 s;N=5tNP:'<_.;,{*э5tNsM+ ·9%> 9Qh +Ū\w:'r(5tNL4t̍P,t 3I̬{dgtΜ\w:g!7@Ι4t4LS@L9S$t}ef91q9gt΄ܔ9S.r nIi9WtNC ))sb>)sL) Ӡief9- ?T:q7]c +A|{2!(9dr916Rs=^8d VsNeڒ "p. K +s)s ΉUMA!p`8=_8mJ9sdA@?QA\x0J9CSD] LJnr呛F9i +$W1"Ȳp HsCRD6_᜹"WQ! #e G%)ǔKR [8k2уdt{g=SF>53731}N|~1{"(!I7k+^dg,> endobj -986 0 obj +1099 0 obj << /Type /Annot /Subtype /Link @@ -13784,7 +15223,7 @@ endobj >> >> endobj -987 0 obj +1100 0 obj << /Type /Annot /Subtype /Link @@ -13799,10 +15238,10 @@ endobj >> >> endobj -988 0 obj +1101 0 obj << /Filter /FlateDecode -/Length 2113 +/Length 2116 >> stream xZK7 W`aCClA^oKS %#EY8h(y-Y?}}q _~?v1tv4 Nx&*Twwv.(8w텐7iا_vw8Q73鍊~ݙ$*+N=v *QYuya1AW{48Y^l ?-vΧ9fOaX]pϼ^?۽H @@ -13814,23 +15253,23 @@ x d`tԅn$R^IaDl8Ɂ~V\hED MI\vnԘ-N-=C$4cFF7\iLLJ&dݿ1DhBVh< :4P)Xv`eUO\#_DVE$%}Q76Q'Whd`BÎKeAGS.lں$t }Q=, mZ:P2#0,t5A0A`jVr9I-`PDOjZi'mw6m[bhoOK~oz DA0x[,ՅÃ~lcwzZ/?yǞS׬83\^S?kJH>rEL; OfnD%f?Bܼ@B ,mU.xD -l5U~ԁ: -ڸ*z\R0Ҩ)KBs$:a6.9 +l5UI`QD=D;nO%# +9(A1pJ1$18W=@fH.m endstream endobj -989 0 obj +1102 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 988 0 R +/Contents 1101 0 R /Resources 4 0 R -/Annots [ 990 0 R ] +/Annots [ 1103 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -990 0 obj +1103 0 obj << /Type /Annot /Subtype /Link @@ -13845,32 +15284,32 @@ endobj >> >> endobj -991 0 obj +1104 0 obj << /Filter /FlateDecode -/Length 1626 +/Length 1628 >> stream xYn6WV\A$$@Z9$LI"Em{ܐ[-Z(w"sZ05zZ|pf4n ǗzL^3p~1!TR RN_/]+f9NBH@x S||0 Ƨ] hU?tBs$T9 x Im1&&c2Oүj9'Vv~7)9+Y5Xc%x\yp=Dut$/?qQ[^x',!9e]Xc<1-Fdp4sM8n±n;.{7NLmUQ8,ת,q̾Ou9zM-,oqhT'8ǵko|Dp,("O䵁Y|Mumt/>̾ qk^ T5,CVbSjYU6NFuNsf"Z֥љ0y=1&FDatpE_|8oB<'<1JV@Qdwpg&ڳH:bTΩHs&=c;⤵&ijڙrə GM޲sj3fɁfE20I4p':P#0%(i E>[WsADHC (R,U)dTq6֠udА/Fy5"ͥ>eň7mDiqG#MuӼVC#d*0'փ,I6&v))XہTF!1x*tRp$:,ݓSQΕZP(@F/)h'eٚ }줔j^6}:KM?`HQO;XEN1UZQL^1/sN/n;b"iiH_ܟK{&P\aPj:kCA:jX8sm5bٝ a5 8$,%Z[ZhF|L'}=q.\jd0  -i7-FA,ϣTa+R}y+[5>D8)n,4/`'Esǔm߅ځCeg.<ɏ6F3O^䫁K6_E03qXΙJ}@MA|k`Axlov-k̓!5o.bMCI&kTH_߇&rTnI#=;S%};F=;=(2GtDNV]a10&nJMmd$?>.ˆ3oD1.x3,g*iIUBUhIpX@GF&٢pB#($l> Jo19!*fnXlM,([8Ń>4(`)n +i7-FA,ϣTa+R}y+[5>D8)n,4/`'Esǔm߅ځCeg.<ɏ6F3O^䫁K6_E03qXΙJ}@MA|k`Axlov-k̓!5o.bMCI&kTH_߇&rTnI#=;S%};F=;=(2GtDNV]a10&nJMmd$?>.ˆ3oD1.x3,g*iIUBUhIpX@GF&٢pBoJx6/Px`FI3k,&-TPIA`AC-r endstream endobj -992 0 obj +1105 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 991 0 R +/Contents 1104 0 R /Resources 4 0 R -/Annots [ 993 0 R 994 0 R ] +/Annots [ 1106 0 R 1107 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -993 0 obj +1106 0 obj << /Type /Annot /Subtype /Link @@ -13885,7 +15324,7 @@ endobj >> >> endobj -994 0 obj +1107 0 obj << /Type /Annot /Subtype /Link @@ -13900,32 +15339,32 @@ endobj >> >> endobj -995 0 obj +1108 0 obj << /Filter /FlateDecode -/Length 1402 +/Length 1403 >> stream -xYK6 WFԓs(,0E =8ɢm1%u'~HǏIK~A1xg[IԢH?i/|ʻ>aCTnj-Z[{OңC[@߾tO;QTR)hjKEgD -јk/ǧ<Uy9u~Ro9DatsK DI3Z\RGɂXԐY>ee'p&9uHV,# k[R82ޑa+X6t z1=.5H(,)ﳚ%˙Quԧظjrɀ+ئ<ފ,1oNa2i |S'7b`QЀ<➅3nަ0f^MIRt5x]qy xs!gF'fA -閼`Z XM=5Nm24o3%-Oq洭lqe&!Az%cMzoÀ-?6/l -Zq9+(uiDFI5ZyONdۘBǕ-4Rxjhզ-WWW KWk+W⫊vUvL -+!8{q_UoҐJj(SəA))3Bҥ4zyV&.D]h5%rsңs.~X#*@kGtdCƷ Ul*Xsܰ"T MT,c.s vaY +xYM6 WF',P=l{Y`(zp2Eb(%K6%Bd8H=2^3kI᭤4~LN{Uz(tRka޺߻xZx)=@)a!8qK4M׈!A?tPqVH_vO|!SѕSG)ux@N#)5}m1%|ϗq. {8Կ[l<>;LX0DZqf*f["ulIe&!A"2O^֩)mY J"$ ٹ9+ +-oMySZ +v +Ye023Qm@LƓG, 7_Ÿ浵Pz7O9۬)A&:7GF%Vή*Je,J{\XyJ,kW+πNy{ f]Pؐƺޔy>o8S.7;+%0uClL*Zej;+UĶjMkOhnw<xcn FVK6hzUs"KE2LUl[2ɩ:-_ig$&XaLpk_Z'ˠޢs" mYo,T9^lJp|1U>~z;7F Ln@>:0>cUARal,4AR3E?m endstream endobj -996 0 obj +1109 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 995 0 R +/Contents 1108 0 R /Resources 4 0 R -/Annots [ 997 0 R 998 0 R 999 0 R ] +/Annots [ 1110 0 R 1111 0 R 1112 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -997 0 obj +1110 0 obj << /Type /Annot /Subtype /Link @@ -13940,7 +15379,7 @@ endobj >> >> endobj -998 0 obj +1111 0 obj << /Type /Annot /Subtype /Link @@ -13955,7 +15394,7 @@ endobj >> >> endobj -999 0 obj +1112 0 obj << /Type /Annot /Subtype /Link @@ -13970,72 +15409,70 @@ endobj >> >> endobj -1000 0 obj +1113 0 obj << /Filter /FlateDecode /Length 3908 >> stream -x\]o|ׯs=3=_A@vb; E~@eGi&jgTx4|>aj⏧~|fl0??>:՞c-'o-XCBp0){JV÷~VCqʡi_<+:7u@Z!>fxȼ f8p=p+T+)չ?smEGO=م];9z;g'Sh¤$IItcb0 U90\kfaV"]JQ+[ zuJ*ҕpcSVZ ńI)ޛ)`R pbAQbF1!lBrwnXRr뮈kLB^aSsn@fMɒ{`ErŅ'B TpEkȴ-T=5=se|.'`KicQ"3RE"fAšs -s|ČVpbFRp`.{ҒPϽJP>ϭv H:3j$>{%fi/1'*)9Nd%S@JT2!*TAfŝ2@TEKazr=R=f=R#Q"RJԋɝ:juHL6HDJ"#u](SS;uY5+_PS]:P(d&S# +_P#[:k *H;ua(S#{ZsJM:HANsVbUR%w ħ)_PCQ:P)_PQHAn;uiWI:ܩMrZ|S3ݔ/HY!u#S S-IeCA(N4:z4+i98D();&EqOF̨F/sdYs;7lBUS fpL S$ōfEr$w ۲E$lEq:_KArO uVHČE"f㲪ړ䞸6ْdi/p"Ղ鰲暳ČĜ)_dbF*_db8lUrkU&LwtaQ"v:J{!f]3E%f^U^9`lP(`ƔUBYbKkܡ}R =( 1cwbFT+Q)_Ps]:$AEqw꠷;ukU+NDի:)NĄYqw &j5ݩ=WND;uNx%uycJ3N`ܩVAtLp nS!;uNLպS1]V; -ND+SQKCep/:Y(br ɩ1th])8u0IMrfj]ݩ8bf%SqV;u0 /!&ɰNDfܩ];uZV{ -N4;u\ɝ:h(/)_P N!ubܩ{7Mb֩qpOԮg lLg ær f.v+bꎲ!$r f. H\Q6̅ e j:''3:p %D.r"f!f -qbfT6Č/.`U6\+ t%w -/Ժz'dKc 1Ց-acQ)d`D= eD$Q|QU^"Žsj]EؠPhlEr܋DPպ:&pA+_@J)d`D0JKSWň*'|QH{BB0Ϝ3h=BD -uND*S='^يEbb$Sa!S!j]P/ Pɝ:K*TZW/|ALӆĜND uP A;uNuB=BDҔܩ;u uP{ -:#P\ɝ:1TZW/вS(PN ŝ:u0*SܥSYpw URuɝ:h$wUS:hԞBZ{ŽR1Q:O=LԞB%ŽBCIr\W`՞AGRܡ|ArEH̩=峈9T=ɽ -ѦlZS{ -:Z;t04:GEԺ aB@= \o_o*߬82UGq~ f~U,"n/ݗOׇ0 ?<)Nj=C9c{δk̟+F9/SmXn|x >[;]C{5o靷`KgΙ%9 (\_~c`!R.`_ث@ߑ\~3v|l\k~5>k{uYJMX:|3*wdr>9={wAssG͝~;L^>Ǭ1fH] -67f;\?Ѿxy[$g\__^=|=q}z?wsN)Ҁ>)3P_n~ZB*otkHA{NKH{9װ,q]G_m>?o+\̧!0{ǝzN^ntz]I0<%N!门CmG! ː!4GUaz&8I&Ҕd(otۿ2Q$si!1$ >'6KxIvJ$8lk&}(m3r7XŪ/qCUqߗ9vEsaM m+ضYȱbOtu|u^q/vفWEkj7μ%\QNW;SP}H}_mSɡw=6fK`_9^{+۱y^,{p/3azܓFDE>ߛ.9n 88W~H: 8&{=s٧];: ۇ8F6w|~ϧ]~K\5=S;`Ý8' މ[һahryܔ`wH22s ٌaRx4eqd{.2zOv|~#vֽfAZmu k E6a΢ǝ9?)3OX#!ݗ}usD2~RJnv= Kq=>>6s:<.bjqeFGQ<.tFMO%- ?(WȣWmj݋hQRnK}R맼_?\rHc9f:{3DD}fhhI4Yz75vL߽$L߽m-o o~S%ͯo^7?K S!?P3|k7qfYoVI_VuX$dlt~$jzi|nF -ꅈ-3_~>i9oґRo|QV`ù_9/o9֙g +x\]o$|ׯsd 8HC \`A/q;H.gvΖ!t!ͮ&h}?ZO?<`S͆b7!թky>ykń)MS?}=MլBSL9L^ѹwr񑷷 `s hgH;ϑ}$JT aӈ-(_4bNURs4ɝ +JFqR/|AdBTܩ̊;e|AuH䗈H{z̊{:fE |=RS+;u0:Jm:EF Pr%w jVлu0zQܩLrF@VFHu0TRV%w PrF!攚uܩ4ɝ: %e̡|Aʱ8"IKAOS\u0Rܩ($w +Ү|A ֓uj!SNfȻ)_PC Gr"ZqZBʆ1/Pnɝ:hH?;t0iV66 +Be`Ssq47QRw,a➌Q +_$#Ų!Xwo؄@H :2 :E.ehEr$w ۲E$ɬlEq>_KArO uVHČE"f㶪ړ䞸7ْdi/Fae5g݉+݉9SČ!TJWq٪Lת|LXD â|D2;t0%B޻E!fdqJCŽ3hŽsrWQ6%8Ėܡ)$C6Б{`Qn)b +LqČV;1rS搻u0[I*ދAoUqwתvҝ:W8usSܝ:A,nSPQgND!:%w + ɝ:V[NLfLVɝ:,Sj[ݩhuAB%w +ɝ:,}ubN:Wrܩ#(_P#dY!u0rQ6Scj_ݩѺ:Sp`4ܩN ԾSC L.UqHJr]HTԙSÊ;uErZwAkY)8uP)Ar%wꠡRq6 T?Yq~~elSǏ|(¹[D*|_o_/C1`ʓxS@zr wS>xcǏ_]0yj]zԌ磮=vԚݓ;={2:o߉;g|F c>erq_#g{H ~>'.,mY͂P]mr-Q/p LHv9R@ݗ<jD^On?(`i?g0EꪘWtn2 px>xv=, +x 9rm>z~џspi֣ǃR*crwPf4~ZB*tkH:@{AKHskX^۸sn/e>xӕ.x xN+Ɂ>_ܛ&m *&m?#yڽ$eF_dUW'82ny/K2\r}o_;]|D,B!naQ~M%R>A>ؘ!/a;L}b{zlǢug?җT?KY>^fk:';1}7]ai9nL88W~H:qL{6Ot>mA% lql8O8T×k6S;`Ý8' މ[һahryܔ`wH2r ̿aRxeqd{.2zOFL/{c\CѓLЛ6m&ÜEsh<]BbN׏t_iYȬ3eH+Q3:.疟@NniLAZ.U`-ɏqc5r>t1BD\r_#^Wv/2.F龆K!_ߗd(^#}7Ny|rOtf?p~^іhs?~+ok޽.wY{EwY{ZݻTy7K_(z៕ۿ?K S!?P3}c7qfYoVIV X$dl4:$jzi|nF +ꅈ-+B,ͯ [,Y-g0qmV^>Ǖ˟6ສ&/> endobj -1002 0 obj +1115 0 obj << /Filter /FlateDecode -/Length 3658 +/Length 3657 >> stream -x\n$+t6q,H`! ⃝C l`AZ%`=Mچ J5ңNhÏvjX~XnJbq{O}j3]r^=egy}͕WbTb@̶Opٓ7;-lglN7 w =_/2]a8ݳsxI]4Ғ00n~l &= ڨ% ^ -htH[ +„p=\ "" 7k#t6~n&LMLƴM.02LZ*"&EzgEznU b"(IE!acEN}"y(:&ja@eM{bMrOE$R"ҺEĜdBrl]rlST, -0G ɽs!eB(]*=%N%IN93bČb0  -̭ U,xޚW HcZHJK*s*S -$w;kbX@GR!~#1S-M'fbщXUyH$w* ;ŝH=VBTEQq -r2+A&u":?"3uЋ+:*:蘉":֒EL,I":XZtLDI"3u.ܩ ɝ:ZU,%bA,^w`1ܩU,ҭbȂC ʪNDJLO+b.XPɝ:DܩٰPR6F*AC Nt `U, u ND&Sѐ `QT,P ɝ:h$wu7 0CMł:rXUR>;uАъ;u -T6ČYbArKACQܡe HiX*E!܉cbČnTĢ1, 1PQaBq/QE, -tt,eD, -t\47:ܡn*+&!fTŝ|$ɽ3YŢ3V*۪cɽpo:֦XF尲Urwb@qwb.T,*1Å*S*+1[HFt`U,ltpH1*QU,{3h=9al(`ƒUBbKRHAľ tT[ʆS1#AT,5աbA֊Cꠏ;u{(NAt^A,wbAvӝ::Cp quA (SIARw`Y 0cJALfɝ:dUNaSaN:ܩhL$w`՝::Qp _ɝ:^rf*`΀bA̐eEsGHNi}ufLLra;u0uSNLԙSB:N]LT\ԙSÊ;uErpAU)8u)Ar%wꠡ=TbA4;A!SQJ4:+|ʃGa?e`CqAؘWAM)DV6eCE%D 6l;Պ;t0w. 0w.f trLBAJ]%BoeCa̢l^ɪl9heA#a:F%! -1^+13O%F9ISRꨖ*t0=LBsCC=EW`n}ut5AX1 R܃*R;1ձ\ N$w`IA4 ձ ^:HVLB3QrCr\WoFP9FD!Wu7 |0:ShA4ALQ!IA4;ukQ:XX4 F;u;uҭuNł:Pg -:Xzܩ%YRj_Q uC6$%w ިX̨3F\<єܩh$w ^7 G)4 NĄܩHVި:ShA3FJuվz^ՙB;u0;u0AU, +Y `*!S¥Sٶ3*A#<Z;uкIA S:hԙBP&=Iq 2j_=lې:SYQ:(;t0j_=i3Jqm{&foj_=21"3g9^YR@q}u ՙB@S!CSPܡ|WtB@sxI~i}OV?\S^{~(! -aXtx~Ʃ?R{wO'QN~wk̟+FlSp܏ ϿN=XN?];bZ|[W *;2e%5tp߭7 ؗ&ɂ+8C[vSʓw{#;3Id~F]Zh9^޶<5Y*K#-Uyv&[Ѯ:&0!8q.MXnSPQsGplv@9jot<]VGf٦\gz/*]$nZkT\򜩹=VԶv{n,s?wuIy g+<ؾF.e4^k윟W-ԟ߯$ؽne#Vo?~E</}2u2;7<5;{raGS7 {v\b/ RZ&&͏M$0!\s\?6\dakTaMuaEPpsW;"pm$̈́I)Ҙ>)`EFIKESqԤHH-$#\LD6;$7l(Wēu!TgDM" ̰iUrO,xIDJ\ZHs,SHKc@ 0cjE!`6$ⴱbQKŢЉ$݉9gSpbU,QT,&^"C𼁼[bsL ɽWɽs]ŢsnYŢsj:Bry1T, }p`w hWH;Q}$ fT,:1*)5Nd'S*@JV *TANfŝ2DTAC"S%0S➩➩(bn-Xd`MqқN,.bEA,0SBɝ:XʐܩUł:X*Eq3ɝ:Ył:!*9<JAN!RuܩH4ɝ: %eiԪbAq<HKAOWYł:XPHA4n;u P&Eł:ܩ6LrZzS3T,(U!u#S S`HeC̘*A(N4:Xƀ4+鰉ZD̝();Mq/FFE,sbYs6)%\Ģ@KRFĢ@EslOܡ1:鶪bb2+bFuQܹK 1CU, +1cbQٸ*l9F &{ܡlmnhX+`Z%w'f w'LŢ3\bQ9,mDX@ ;Y:X@Q ,ɽbшU\"i1V܃ʆ ݍf,]!t-,5D@GMEl+0}3ZqČMł:XS*j<hSAP;ND׫:+NĂYqw j7ݩX3WNĀ;u Nx-u`J3&NdܩHVA8Z&8uF4pɝ:Drj_ݩX.ܩh%w` 8* YVyH\ 1gyWw`:$w`&SS7I)8u0!*XYIAUNLD `E)8u0a1SQY$w WN^ՙS ͟N*WrC !j*ACSyH;uU^qA㡳ɧ$Ae}f hArŽQ!P{r3h3FDuND*SިՊEba$Sa!S!j_QYT,H uШ7ɝ:XB%5`iuzXP :dnCb.]rP:Ō:ShAʅC Mɝ:HrBվzBxԙBhJALxɝ:dU:`3F:ShAHNXzXP\7`U)4`*Sa0Pw gb#siL!21}ySHM%tWW ])t0;t0u:ȷ}78H'>'o&۷8d+e;?2Y>pE7?ic0_,'TO }Rʁ;zpg韏a46h ?-C;ߵ#\88r-Gk=|ڡGQ;7dZM߾~8c4 ;'˫X z>\_>{|6m9rk|yk>#}ݦg>1o.h-?]eLY뮾9l_ޗq#6m# m}uLhsّzYz/Ew B+Wo\xGw߻L:{B[d9=OY[W{y]Sv5Cg9Z{us|^}w'7Yuʴb=Ⱥ-s>xiJ4S`6Խ9>۷;HscNt7.L]oi*ĸ^v%%nƘ9=,êvhSWgnlNuoĶ~u܅쭓d]JǀVjqͶsMkQ/{onѽD{. +^eќQݲcSts5ߌ Ҍ=M4ϰs}˳6aP v` O$Π́zYI:p;~E2ܫwmͯ9$I/疹^|8pypy٣lx㸟qïf,fo-<;f Ax9vVRH~KU{Ļi뵻ι%$oDF/go8K_f_78@nۭ<OgYx:٩^j +=GhV:<;wܯ**Mw{&; endstream endobj -1003 0 obj +1116 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1002 0 R +/Contents 1115 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1004 0 obj +1117 0 obj << /Filter /FlateDecode /Length 1904 @@ -14045,22 +15482,22 @@ x Ԇ_3!%o@x5ݷe#7}|}i'\@>aJF{滠yPJ 1}eB;GAEM#ڃq@Q2kƹ[x$s@EXa{a]6L~ *~t!!Cؙ"[HQ iV懮*}EB#*'nZhrmAokss il EhU 6懮*}1!bFf69eީؑJзI F~ݽӻ_>+Ry獔怑4P`&ԣ#Y1Fsrh``W j ZzV{v1ͯosŌ[,Al 0D+h>Xu7Fx<ռzJBOeDPJ]ǻ||DlVǵe^)_:~ϐ)cEԞ2e\s{0uedVe@B >1XT}Q1ZF$?glJݦ1ATN`06#(8]w/t\Mam1n})bnU4WirHƈ5(5XAO{YiOP=XDzYwairXu0}繡M'YvzR@Lȯ}S\t5geAApXw#>WQv"kc Pk󍛝_uYs@ !T&ōzO|æK>nhs|mf/!\[lWwڨAxAl,hk P);Z;im'y7][ԝ[.̰>y, 3 9{[nMnk>T(κ$u\3I*[tLMFʀOfދ>zJO(=Mmya#cAȘi!*0ǹ_ű +s Hi҂Wg Ze;O.6Ɛ%0E ]QԪ\;YֆpЕʰ\ ]ˊg0XԊXUrǙC)0BA\RfO纎]գfn:]Qvxjy}I.:(Z~ α$^,]f+jFc -ѭyÙNԉQD*< WNL0m :xg,[cv#gChMB \5"zh!D9У$ejd.ήIǩ̬\`[iT^Sk@PW$sv.F G)AO\g|iq5nʙ> endobj -1006 0 obj +1119 0 obj << /Type /Annot /Subtype /Link @@ -14075,7 +15512,7 @@ endobj >> >> endobj -1007 0 obj +1120 0 obj << /Type /Annot /Subtype /Link @@ -14090,29 +15527,29 @@ endobj >> >> endobj -1008 0 obj +1121 0 obj << /Filter /FlateDecode /Length 656 >> stream xUn1 WH$NKE !݊pO'@(L???'^t +Nk-ߧ |!Gw}򭴇)_*]M>1#WW="(1zJ1BqwӧK.1OX3SہՌ$fr43\i*ѧ6 5Z `ēWL)%ZNp -@;po~*.^%{"ǚ=Ěqk>8llC}\ W`@t!t$,]"$m E2O}P[9* s&{3U984f{S_*-t|綺&iͮ=eV_*?x a |,'&[U<}tQV?$H9-4ހW%-,@weA8:m0 nOطlm>]rKZ^Z|H j5'\#I'zWYo7ڑAS+dgMyUآnR6EgQcD1V+K-rj|)OAA'ɚVӰطqA0W9Vn,\/ J,vT^:)ڗ])v5t =;~ +@;po~*.^%{"ǚ=Ěqk>8llC}\ W`@t!t$,]"$m E2O}P[9* s&{3U984f{S_*-t|綺&iͮ=eV_*?x a |,'&[U<}tQV?$H9-4ހW%-,@weA8:m0 nOطlm>]rKZ^Z|H j5'\#I'zWYo7ڑAS+dgMyUآnR6EgQcD1V+K-rj|)OAA'l it\X4re$+|صR%BmuRZWU/Rj@zv2n~$ endstream endobj -1009 0 obj +1122 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1008 0 R +/Contents 1121 0 R /Resources 4 0 R -/Annots [ 1010 0 R 1011 0 R 1012 0 R ] +/Annots [ 1123 0 R 1124 0 R 1125 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1010 0 obj +1123 0 obj << /Type /Annot /Subtype /Link @@ -14127,7 +15564,7 @@ endobj >> >> endobj -1011 0 obj +1124 0 obj << /Type /Annot /Subtype /Link @@ -14142,7 +15579,7 @@ endobj >> >> endobj -1012 0 obj +1125 0 obj << /Type /Annot /Subtype /Link @@ -14157,34 +15594,33 @@ endobj >> >> endobj -1013 0 obj +1126 0 obj << /Filter /FlateDecode /Length 1439 >> stream -xX݋6߿ρ*#iFp,yHShJZJPhZ.#YGwh~3|}O@Bp|x8K~z# -C!^5˃*Bk_>>>>Z|(JzHחOףV0|peAD .Y%VY1W3l 1)PT9r>fBZ?8Ġ)ݯ ſj*Xފ XZkA2bj΀bB p p1 "!k d/Jp8T 4 qg ͯo4I?[V&1 |s<ՕH)`Y;`48'UZ<.,%V8,plesLd0fϭ"֡ ƔXG:k<-N" -긒]Y^Zl@ic\_XIEoعbtE+VDf!G NԦz<&$3[ֹ~^h /4#7tX[΋MϹfd4;5Mւ=0V4"oѵ7EZ Agb-vf#Bghot;ZQVt{[-]=;Z+16GET:E-57pU{[>ozArwGAҌ%kЧo4iP$5:ma8p6.oWoIT97LhlĦ؆8f]s&6msB%.MAst-q-+4MDtN?!O%;i8dgl=,+=Q\c(MpSo9/VXQrhQj!cSgZoOxS.k{L_˻- -:>9C4ҦQ0TX<S"`UI&[) +xX[[7~8ρ*#iFX -mؒ_PhZ6Бt4:>nk][훛hPw8>v<2E#oz#麗 +C!N^5ˋ*BkO_>>ޥ>Z|(JzJ/vZ݅͢۳:i3`Wb?(ʈ忺e\]XMq2&0c q!NtU6nNV{Py& Ndұ 8 SS;t́&pF>x2"s$dA1wE ' +6℆T0! N,߽&~/vtVp )( 3Lhxip<Յ?'ӊ#ee5iqJt%y=1;Yh2}L{YtSh4Th(0Lr>:7]Xt]Y/wp.vroet-Y{>=I =Gr7qiT āuɾ}OOA%S<2bзrM󱆸QiΏ9~vuB%:wiJED 鯆p49a`9+qyHmScq{ںAuY=Yhs&k@6ix; LK/0@G&_}e sD" *;?9r_дţCܹ\h#Kϴ:]@ϕ_,NHft%t|3r6:)iM`\S Hy*D{Ū(z  endstream endobj -1014 0 obj +1127 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1013 0 R +/Contents 1126 0 R /Resources 4 0 R -/Annots [ 1015 0 R 1016 0 R 1017 0 R 1018 0 R ] +/Annots [ 1128 0 R 1129 0 R 1130 0 R 1131 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1015 0 obj +1128 0 obj << /Type /Annot /Subtype /Link @@ -14199,7 +15635,7 @@ endobj >> >> endobj -1016 0 obj +1129 0 obj << /Type /Annot /Subtype /Link @@ -14214,7 +15650,7 @@ endobj >> >> endobj -1017 0 obj +1130 0 obj << /Type /Annot /Subtype /Link @@ -14229,7 +15665,7 @@ endobj >> >> endobj -1018 0 obj +1131 0 obj << /Type /Annot /Subtype /Link @@ -14244,29 +15680,30 @@ endobj >> >> endobj -1019 0 obj +1132 0 obj << /Filter /FlateDecode -/Length 990 +/Length 992 >> stream -xWK0 W8i5.+  qt+vN4iة2M?Z?o@y5orf,-r:g`|hx;䗈 véjzP9w-@)`=᮹AO3IT(.Y +PB ¤L:٣Bv?Bqt~=/=AocK4 -,+|,{'}dM$jm~II`#d/]&2\!pSql$Hc}Bv_}] KXj]r례fV"4a}QvfrCaw9M$'{FχVt`.,&(efkk@;1nƘٳQtH3*"/QcVaDOY>îz5]:uZJ)i%Fpg|(z洘Sh9e]ua\Tx0 LJd*s-rj#FHK]L v*cbι&¦3/ d, +xWK0 W8i5.+  qt+vN4iة:MgBz (~6V4ҌKA\6eZ^QAԮ}85__M\*:E8x=5W=(iF4*%+{e]PHZV'{T[z?|xG4Na>Aя'hN'c%eb]Y{`'z6%|כ".}?6߮BB7-i6#H0ĝ!nwϷPy ~Zi\8vn#cV,|eTL`x1BJT`7Vk|~?^Pd>ǧ%'mliUmSeee羅D?/"iwle2Z&+n*.ޔxcಐAh}W_W$V}Zz( 3H7GuXw_9iP]ckc4ɞ!XפPelmz-Uh;E[1fa6.i +K~ԘUS; #'pؕQ^ϡ+_N T1%ľhD7NόEϜsJT-E9sJ0OzIqc왢Cs^CeENm1~5%W߸rAdK@uX݆gDPgyz,)#(9un}s5PNsEs: ed«R*znM_&.0q8L/su4EI}*>sլW2F]fׅ).<=tT 4(L\8r$9nqUv +=yڅN$?jt8 ?E񧉱 As?7@ F4$"QkS %, v1-ةX!NRt;Kxőnx0 endstream endobj -1020 0 obj +1133 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1019 0 R +/Contents 1132 0 R /Resources 4 0 R -/Annots [ 1021 0 R 1022 0 R 1023 0 R ] +/Annots [ 1134 0 R 1135 0 R 1136 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1021 0 obj +1134 0 obj << /Type /Annot /Subtype /Link @@ -14281,7 +15718,7 @@ endobj >> >> endobj -1022 0 obj +1135 0 obj << /Type /Annot /Subtype /Link @@ -14296,7 +15733,7 @@ endobj >> >> endobj -1023 0 obj +1136 0 obj << /Type /Annot /Subtype /Link @@ -14311,38 +15748,36 @@ endobj >> >> endobj -1024 0 obj +1137 0 obj << /Filter /FlateDecode -/Length 2096 +/Length 2097 >> stream -xZ7b?5zahiHhʵi)`ϡ\CGZ=Fڕ;B8^k7qZ05z?wYw4_~)ˬi5 '+KJ1Jq;}y} [:; !%ፃCLA0>}wwƃ"9YP9}A !˟eL^n/MLx8njIŴ -AofP)7/_D+_BYδܪ_փ7tn~gcON)7pʃ<̇?."!(w4. sד6Ic0=ˏo_f[4tqjtN3 - 4:/q7ڦR{ x5v -~qIJ&wXGi}&= yy. V]&\*+Lj4Nwoz5 `&('w{@͍ބ;rx9Ϙ;Gd=l5:ۋCM5hN+xk[Abw9۴5uBJqMy%Ywec,rͿkRN,v aEOq)oL녙_~|7ʠ;P?7tU\y6kk.Pw4?Xd ް@#~\g!;/E:s +GᦎkL-UL@4  LLe0/j3\5y.`YyQZ9ڬP>}Q (rG~lҋ4DmqdEwy"y%ϕë>kiT=eEI(wO|ftr뙷֞-IwV( +نhhz Lv ><$7똆>egrֈz +O)|{Hmo<䧺rW0/h\tɻ`c>'7ŭn $ȕ;ppZW5hJ :W K,+Dz嗀{dٻ*14fNN[r)s( " f%& -E\7CVFCa,N[ԳTuνp2]71enwUɔ{]Љv]wIkuROtظqXV+uun +bw뀶%]]N@y>EzzbԶ=]]„MQ&nky>biBXSЃFc dvw`YD/_yϯ dZ.3(ǸD@7S\epӗIm O&anh1ڛpG<3u' m2Fq{trr¸ Mi{am+H;\q<&I0sU`QZ`0< H=I0BIAUr'uPߘ,m+( قt.?7Ўf(x9su\!7(עhޔ3{3AW `qf3/em_>/NƠ#4cӮn鰄aPƩlbbȣMkN|\lY,zO#S^Sg\ cc"VLj d*M@ǽ꩑5A0rkSm,$iJ/.T|$+.J /AZVV{ σa#!@ }ras(KqLrH2vݮ-)ąv+Ef&\a->NU[Om!CL5OėIXR\\4o8׵n:ݎQ5V݌,NU KB|ӃB,Ŝhu*{hJVYMp1X E+|ƦCdkY0F"^TM͋_3}unU"nP +T/`#Pi\Ў:ױX2LJGM*EpjneSJpͦЖ M W0}z=.A}.FCq ˆ +'{{jȃ{NDpL.a(Gd7.3̦-* #Tfa:3.`xJɻ0 +02c渿[d9|)~!+f`C endstream endobj -1025 0 obj +1138 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1024 0 R +/Contents 1137 0 R /Resources 4 0 R -/Annots [ 1026 0 R 1027 0 R ] +/Annots [ 1139 0 R 1140 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1026 0 obj +1139 0 obj << /Type /Annot /Subtype /Link @@ -14357,7 +15792,7 @@ endobj >> >> endobj -1027 0 obj +1140 0 obj << /Type /Annot /Subtype /Link @@ -14372,7 +15807,7 @@ endobj >> >> endobj -1028 0 obj +1141 0 obj << /Filter /FlateDecode /Length 1249 @@ -14381,22 +15816,23 @@ stream xXK6W!!>ii/hYk9Etr$SIvֆlId&MW~BDI+t>bsdQat3)Lѳ*j>]O<B1d<+g.Q)}??^O7TDK[vB}cjQ+ Xji1#vgZ#.ګO.8q7VwmzWV8+J|Xu!UpF58=_N&i;'?N=Љ=>=,`!@;WXdj gpt@BGH\h-!cїD{ӚJo}IY{y?^XLÁ I.5_q묶d-k]wBa,Nk5ӄng|cY5v}L=w~/)cfC`9+Bѵoӿ"0cPꍁ@ +$ ZVcORґێ;C9G!Ή}y*mTd~o~(SK+= .-ZdF)?988FA>q- sT l4kN\GȹM/QC$kאJ9|?ⷶ-sMFF]EÃY85ݖRf QaDTuuj"3Ha`@f7 7QLW`FFNY7!%g?W>"Ypr oYa꘮;sP^n<\VCM+0A4k-(/V(g45@tD t3(:E"+Г(rjۏwNT^V+Oh^@ #&;T76痑KFQX'&b fMfmѲI$^!+֕(Z^vǃN-m sG^z3^(d%^_ПCbϳ "v@> endobj -1030 0 obj +1143 0 obj << /Type /Annot /Subtype /Link @@ -14411,7 +15847,7 @@ endobj >> >> endobj -1031 0 obj +1144 0 obj << /Type /Annot /Subtype /Link @@ -14426,7 +15862,7 @@ endobj >> >> endobj -1032 0 obj +1145 0 obj << /Type /Annot /Subtype /Link @@ -14441,7 +15877,7 @@ endobj >> >> endobj -1033 0 obj +1146 0 obj << /Type /Annot /Subtype /Link @@ -14456,29 +15892,29 @@ endobj >> >> endobj -1034 0 obj +1147 0 obj << /Filter /FlateDecode -/Length 805 +/Length 806 >> stream -xVKo1 ϯhj'NH= PTZ08jk&/U;N&ϟ'@;@CI~ hv b=5GgثHBcЈ` ZY ^9ZX!F\Z*=/O(qIĨA{F(3Yӌb`v|t*';8pt !l?t!+;Z|om*aFI`4O6b˧=(LhM"}sc?S!1CRIGTT0#4[.4/h,},uIJwږ{u g6#lWC(*Pz+(cs\]dq_C:\gkgiWu.%*)0uct'lwu :q1+X<'-%mT=uUsXB7N$Z;J~CȠ,X5廏TS|sDFszcKJs' cJ57Ձ |m#rc@_ -UkFJE|l{]: SmjIWmӲq?ct}8v8h-^tY͉_}gH&u윩d2yvZp6k4hr N砏b@3mS}(ӻ"6Wʳ oDi=;tJ6~rc!}*UT@淀B}[iocHPjܭz۵Hv6_5F;6??c +xVK0 WWeˆaa”JC[v+qŲtB&cI>ɲQ\w(Pٓ@~y%~y9:^EFceZZ`rj +0 TzyGԠGqT\͗K*'N}svJ,Nɚ3lTs0v3=|vw@xp܏nOaɠ Y9DnS6zH |_>}AaBk}%]P΄ Hy$-S1gKŒMrpvALϊ\i/,)YAˉ'PT (dSe7G}tҡ*"g`hv-F3e9Mf^l&g~g endstream endobj -1035 0 obj +1148 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1034 0 R +/Contents 1147 0 R /Resources 4 0 R -/Annots [ 1036 0 R 1037 0 R 1038 0 R ] +/Annots [ 1149 0 R 1150 0 R 1151 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1036 0 obj +1149 0 obj << /Type /Annot /Subtype /Link @@ -14493,7 +15929,7 @@ endobj >> >> endobj -1037 0 obj +1150 0 obj << /Type /Annot /Subtype /Link @@ -14508,7 +15944,7 @@ endobj >> >> endobj -1038 0 obj +1151 0 obj << /Type /Annot /Subtype /Link @@ -14523,32 +15959,31 @@ endobj >> >> endobj -1039 0 obj +1152 0 obj << /Filter /FlateDecode -/Length 1017 +/Length 1016 >> stream -xW͎8 )UEIPt0)ZqEEgXlډg:#SG~$%A -':P1]?~wZa~ *$4)# -@K*t?w|^tn"CY2L$gj,G!D W؂9.AX%.{#Ru8JhƪvP$c ڈl Ul }`guϤH`)'#p4ZɄMn KE" Xٟ#y6*VGۍ$ō N6-9$B~ˌTՙݞܲ|yұMoezɾ#tEOh%R6@&INVv=\W7vڕ^t+36<~#ۮm<֯"1jV++e"e - t L˴ߧtYe$]9J5)~ѷݢmLs0-0O%ϐ ު' 'iN6bBgŧAϫuh!#BZEV[/:skAxM:]Q)K]|"MV}h%)˟vp.<H<:I*:A: Z 3P]+ "P꘭*oṠ ʀκ`lx(ecRa$Sc~ w/=x +xW͎6 )Պ`0!e)ZY/zhMEI6f7=t{dȏ$5}T)x׏vOV5}Xb_٠BB|r1BL}4hBgׇsdU:%߯Jߺ SQkC4R(zy*3>2Meel<&6/DjE_O,&"5AYuQĆqtr #CBRtXV2Oe9XdQN[Pf#腡6bw U]|mt^buͱ4eNv+zgI@5Lwa'wρxOV$ q5 IY Qȡ3U`Ks0VɁKވf4dZ/2jF]=qAq6"+@eUf!ib&f}:-Yp3)(Xp +Ɉ872͟VA2!|'ADkyHx]qvM6v# nqӅMy 6P;}2cdh0duf',ftl[^:DzxZyɴ PI㴕DՍv݊@+?*ȶ+=ohH +* +DH"݀&w2S:L|جKRDۮgPJmlۚnQd&_5[goUv΋f4b'puSՠUwۺ޴mtY"w'>CNWyʒGHi@syrI\{Eov7+oDii$))NNίpV> T`@@wSq*oṠ ʀκ`lx(ecRa$Sc~ C=| endstream endobj -1040 0 obj +1153 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1039 0 R +/Contents 1152 0 R /Resources 4 0 R -/Annots [ 1041 0 R 1042 0 R ] +/Annots [ 1154 0 R 1155 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1041 0 obj +1154 0 obj << /Type /Annot /Subtype /Link @@ -14563,7 +15998,7 @@ endobj >> >> endobj -1042 0 obj +1155 0 obj << /Type /Annot /Subtype /Link @@ -14578,10 +16013,10 @@ endobj >> >> endobj -1043 0 obj +1156 0 obj << /Filter /FlateDecode -/Length 2651 +/Length 2649 >> stream x[K$7ׯix>^ۘ=tU|YJJTd=<,2%/E|ʒG>`B/Hʈt>_|ʻc4 Ax2,R @@ -14593,22 +16028,23 @@ s YE$>lظP:!LCbb-4QCkֺtzI{Y*E,[2Zߥ,)6{jѼCRQ }@ҊdVD0kmҶ6Zw,UH!`D f5!sZ'&#H6g:{?j6LK8n&Gwsa@Mf[K(`pm<q.kb`"f#@[ nmB/NUor^|ݦWq w"7ݕ9[ hUW(+bZzg|~!7"un5ԗ?&922848$# cQwi1X ފn٦na|g"WbPD3K}ڟ=9g~nC[ *k<{Ch68^6&g@'Ьe%8@LRWIIqRlTDc0̀!5F u?4oj8|07 /XpYԵg\ hm[KFX\B޿('@u8 φB<P-3)RgiF*rn߹3fnm =XZ)qױ.pj˜{5ۙLH .8|~O52@\VJ%!o ir!di+j5|38( PӥLN-vˢHLU)m 4#"TPLbiL-tFݏBqb[~ -X!˿zlq5E8bBF6I/O=YV&c)|Xbbqol43je՜@OA 0o2IR  ̝O/rYNqTO޿}Ri7Z?!{ +| MEHUyȬ>KFX\B޿('@u8 φB<P-3)RgiF*rn߹3fnm =XZ)qױ.pj˜{5ۙLH .8|~O52@\VJ%!o ir!di+j5|38( PӥLN-vˢHLU)m 4#"TPLbiL-tFݏBqb[~ -X!˿zlq5E8bBF6I/O=YV&c)|Xbbqol4Lt +]WSb:[L`Ts*pSU_/utEڍ$ endstream endobj -1044 0 obj +1157 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1043 0 R +/Contents 1156 0 R /Resources 4 0 R -/Annots [ 1045 0 R 1046 0 R ] +/Annots [ 1158 0 R 1159 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1045 0 obj +1158 0 obj << /Type /Annot /Subtype /Link @@ -14623,7 +16059,7 @@ endobj >> >> endobj -1046 0 obj +1159 0 obj << /Type /Annot /Subtype /Link @@ -14638,34 +16074,35 @@ endobj >> >> endobj -1047 0 obj +1160 0 obj << /Filter /FlateDecode -/Length 1395 +/Length 1394 >> stream -xXK4]~H> pYiHC:=Yq]v'ٙv+3\ϯ6L2~gʹ}t¡Lȯ?E;*g`|x hnr%wA 'nPJ 1Q?^ mӒA^XҐPjô0Vg0R˛^`~߂ZѮրrVf7gecFk.D`GЂ0qsϿ *9yo=cHcXD"Sǀi}5#4s|;vo#i Uot9x0Z[zADq W&43Y%(4 -o=:ؔt~の3of -]^Sh*{vgeYˍ_2>?NӚ @k'~iv5_Cg^xR=Gcl=la<-sZvI 1߼pL)SpLq7mx,-Pxt~7ꂅ&d'‹nsb3K/46%;FAbr83xeԌ~)ͣNʞOo`.vыu]Zs+kp嗲$Pҳz,e:ak)pf-2YesG:+Wk:(JelV(l=GkdxaP9>;[/\SudӋUǡ-Vy ` 'U5 ǡCi^rgmd]t6x8|г~5L:'9 -olqlH@棝!aqL \QQ: NKKGVV8됓'cT/x!҃p^0~rDP\{uD^^wĝgG^Q!K>TY* ȧ(hA nDؠQuþa@$P)zT F6|;>0ԵFMtN*{lͲ&\Z&M:ԫ0>Q_ʅorizہi H m.O3hj1o`ͺWoT1țXXB;63`Bduʷ >jmkΆq^O U0ݸZOWqЃcFAt17vS^ʾ\ mNv泾)3lͲ:%S9Q(!h ?eV*ah&,e!ե2[@XP;Mw%ь5| +-֥y7㪱rS -fh6Z.PVo] -tTIչh -G +xXɎ6WBH`Ї  V!)YdKnZ^ZDd~o@x5E +2~C}h'\@0ރ/M_.].htMJ `=0珗w39}FEŴePje&>Ɓ40mΰ&Bryq񻿔y5X_V5ܬÿ ŖVx: -07=G O Y叧xN6F;"B +:LxH3ǟOR]۸4A˪u>x8h({tSMid7fXҨ|XfT]7 +bplLW8F%l: +zom BPdftõ$7Յ KMȞOݞ\/47%;FAbqA92 5[8c 5"ˣ~bݗd:cr6 tƲ$cfN*le ++\Yey9 ++ZCͪr+s&v ;&=Ģ. ,_iU +o "ЋU߈T@{ㄓxkؚ{KOСrH6.t;N0_tu R olqlH@ΐ/8p&.(NQ'[}Q+Ku$>+ n<23g 0T0ԵFMlN*lϲ&\Z&M:ux.jf,1Gx}r^^v` Cd/wz8tDm̧7f]_T1țXXBo4mșgabd[gI=gC^O U0ݸZOWqcFAt17vS^ʾ\ mNv泾)3lͲ:KS9Q(!?eV*ah&,e!ե2[@XP;MJjk XNWzK "Xol+HaUgfpr^kl΃ڀm20@P k9QaLGT_]{j6~?K endstream endobj -1048 0 obj +1161 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1047 0 R +/Contents 1160 0 R /Resources 4 0 R -/Annots [ 1049 0 R 1050 0 R ] +/Annots [ 1162 0 R 1163 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1049 0 obj +1162 0 obj << /Type /Annot /Subtype /Link @@ -14680,7 +16117,7 @@ endobj >> >> endobj -1050 0 obj +1163 0 obj << /Type /Annot /Subtype /Link @@ -14695,29 +16132,29 @@ endobj >> >> endobj -1051 0 obj +1164 0 obj << /Filter /FlateDecode -/Length 1013 +/Length 1009 >> stream -xW͎6 )ђHI`ECS$@ zH%'&ûD}GGoQyq8|@9%%M?i0N@ޣCA4F5ix33.w#֊0(c>`pV:$P!B\0)5Bk/Gh6;d  /+c6?q{"+$9yߣlzv=+;c/CE߈ދ^=neO}9Cw7XTjC\0Z"*krDcëc֠j:}oH&/9u nĪIA4'/~ ludrkSILjGȫo -ֵݭ+F7n yOzATvz *ׯT|3YnX59 H]>(ޘY'+v02VY)+ąlކ-?5.d+/9ny_9Xyh*gDfmr 4ZJ;3DL?jVp /MJO|YV3Hv3Jᨣ-\qL='R)D-L:q֒l/- >UyJv{Pcs nR;5&K0-k>͖s!LxtDGc-YvV鵑)}ċ?ک9g\yzHd,.':f!O6&II4Y_ΓPa/I%;1xM-,w"(? %m6E8f< 9da'*()A*}Cq+'s21p +xW͎6)ΐ! >mi/ H KZ=E:HdX-Ï # +[Tv?P@>I{IӏrS.v<+DFQd7~~ q F9݈" )J+*?7dUI@/!Ld{k?~:r Nz70vex8)'({-AL=ʦgcϜ"L>2T8E&_Y۷\>}W1z;[oOŬ6TU?>/#%&G4::f ZkX;39n+i\y hIT NcmPq헰 VG&޸:mv`]:bzPT+AeR:{JU 7ꆵZ*oEb)uBYb( (c58L\,mZӼ,0O62Q_M3'0ơrVHt`v16(@:C$ihfn_)Tk,WZe>d7T:*{+2^<Gs"JR˔sg-ɶ,8P[S+Th56׊Z>!jh*{Q`Xނ6ly97©τg@GD~4֒%am^YڑGZc|'w4i-Or}lVd-`ޜ_z=4/Oy<2Q#JdʓƜ-^޴oQ.u$ J'`E GfC{tNŠk4FatX[S}7X9Xz3͂L7R4TͥY͢LC_ ˝ǭB[ .3@?QA)M*b> endobj -1053 0 obj +1166 0 obj << /Type /Annot /Subtype /Link @@ -14732,7 +16169,7 @@ endobj >> >> endobj -1054 0 obj +1167 0 obj << /Type /Annot /Subtype /Link @@ -14747,7 +16184,7 @@ endobj >> >> endobj -1055 0 obj +1168 0 obj << /Type /Annot /Subtype /Link @@ -14762,7 +16199,7 @@ endobj >> >> endobj -1056 0 obj +1169 0 obj << /Type /Annot /Subtype /Link @@ -14777,7 +16214,7 @@ endobj >> >> endobj -1057 0 obj +1170 0 obj << /Type /Annot /Subtype /Link @@ -14792,7 +16229,7 @@ endobj >> >> endobj -1058 0 obj +1171 0 obj << /Type /Annot /Subtype /Link @@ -14807,38 +16244,40 @@ endobj >> >> endobj -1059 0 obj +1172 0 obj << /Filter /FlateDecode -/Length 2131 +/Length 2129 >> stream -xZ[$5~_Q`_iPTddeDE|^|Xe&$TM8tWrn߹DkrZ>>(1o>!)n$2&,ar/ -AӟqJ5cŜ*`SvfN><<5-/N ъ#F-Z)?}7Xǃ(ogJTyvT(Yn.VI?+mn3ip]/ץg➉VuZugֽOh1v}zxՎ7KVDEȋUX)kAjY$b~ ׁ*kQCJs뽸 2Ϫ s_ʞRwh-:XV~,1-U90cjoPx1hV0:Gahb,ݣ1B"09{H~(sA Uy!Z5hFTވ:A2=[!r #_a]}`'YrtxK(Cؐ5hR -A$,1޷-[f12p®чvÛ72Pk^ANت $aG%@!a@(|,Д3M+(K߇RP˝ұ_x -<_TxZ|Etf[OzT3bxP93]ԀP=c:F۽@engz* OxASQ{# -Q$2.8{*y-ީzQNN*+$BX&AWi|[O)a] 9XΗ'əJ{mM_A\Qc9Z҃/aY&%q(qh.ƜNl#f - ߜ;up<:yj b!%TyGA:v>A05ρ;DT"a{CM " 5F==PuRh +aUunB%~e{3rk4ϴ:2d/FrrNbpp,[/@c($n09 -hPK* UHثm6IWcKHT>"Az^;Qf4%XI6J=]0JeN7c{a=}"(}_ ɳT3&*`SEUhRDezV$ڄfN[+Y}*dai*( s$|&} jΆ>F1^1h1}WWL+&<p\VAcjb +xZ[$5~_`9EEVAVFTćŇUv`*qg؝T;4y}?9QçgVWTߧz-9zŔsтc\pSJ??~>y߷^2˹u  +8ο?N߇[ ߅EXP\8)u|xxw˻#,ۉs8ׁ.9W7'\WCgu-k +»ʥ6kSN3ѪC5]o/]+'~D ]W;2,YΊaPjȵLZ5G⺬J@gq= + 6u+fx˞thCڋd}MhꅟyH< +JKࡲĔhرAM04+j0<1qV @B=uҸ+"J{[Q> \\3Xu"6ah*|dLEټ0'E;&Y}YŊ^@8 4֚pM.̽/CTJ5D@nu_'"B eIzCZsC j95m d1~^S`oEe.Hc5oVbF*K kRc?fՅGY@&zKKF +Lpw\I}GG_']IUFa<Wނ˲`"$U^h&okmCeiŸ^ +~ï_/WCsTb4%=a:1)LĤ+p,zhSQYf40+ =tEJo|c6ѻ=$$yiܨ)$6Z)g!C+&3TMZm5MUT^ pBFgR - s E3BmGblDA oBCo\@><;&,^iOGr +tC`bȽ:OfH3i$b{mB*m/%^V֪[B`+`V՘4*qwLy%=cBz M{~h0`Ct PH*V`u;JytV٩h3v堣!):bGL቎2?dJ $ k r7Jý. ЬF4fE F 3]q!D=p%W 3ޑ`'3S3C@w;U<l|KthAOATIY/T;λ`&,S5b3,,O՛Jff[k]  1 +DŠC|Zt>d8-0ˁ^!?b endstream endobj -1060 0 obj +1173 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1059 0 R +/Contents 1172 0 R /Resources 4 0 R -/Annots [ 1061 0 R 1062 0 R 1063 0 R 1064 0 R ] +/Annots [ 1174 0 R 1175 0 R 1176 0 R 1177 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1061 0 obj +1174 0 obj << /Type /Annot /Subtype /Link @@ -14853,7 +16292,7 @@ endobj >> >> endobj -1062 0 obj +1175 0 obj << /Type /Annot /Subtype /Link @@ -14868,7 +16307,7 @@ endobj >> >> endobj -1063 0 obj +1176 0 obj << /Type /Annot /Subtype /Link @@ -14883,7 +16322,7 @@ endobj >> >> endobj -1064 0 obj +1177 0 obj << /Type /Annot /Subtype /Link @@ -14898,1616 +16337,15 @@ endobj >> >> endobj -1065 0 obj -<< -/Filter /FlateDecode -/Length 658 ->> -stream -xUMo0Wx[z@p$ae+Zxl[J|ƞ_}E80z[a"RRv%3G@:IS$qߦOϩK!/!ΩZtGtD-vrs,4i5)lts4211_}Pc:90!i2M,#^*׻E>']E fûϷ+PE/B7_v }Xri!Z  5T1H:M5z׎m-U}4Vf[s_&rzc͛aYxZKg>c\'mq,ұ-/ 8yj{up -V @FzDi;N`%fvxۇn6׵>WsXl|] Ɠ/pm㌢ڎ<6E6~E/ y4wA] ۝QOM>y; D%Q{m -c+(Z;Zv}(qCo%hRШz?2%I/+j/BE݋/:G}@.3\?NUF -y(M3vLCnYo+';9O4 -endstream -endobj -1066 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1065 0 R -/Resources 4 0 R -/Annots [ 1067 0 R 1068 0 R 1069 0 R ] -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -1067 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 771.023622 555.889134 447.136976 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Manual/WhereToDrawMainZone.png) ->> ->> -endobj -1068 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 447.136976 297.637795 432.122576 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Manual/WhereToDrawMainZone.png) ->> ->> -endobj -1069 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 349.543376 39.386457 334.528976 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Manual/ForbiddenZone.png) ->> ->> -endobj -1070 0 obj -<< -/Filter /FlateDecode -/Length 920 ->> -stream -xV͎0 )8DZ qΏ[3#bƱ}vhyr0N߆5-fRsČ.Ҙ )Acd{{ǧ}(c&ZS3 ex~c/ 5Se(d(V3L F 㵍]P*ϿqrH`dGGxt_N7*k+yq0>Ih}#ca> -endobj -1072 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 771.023622 555.889134 447.136976 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Manual/ForbiddenZone.png) ->> ->> -endobj -1073 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 447.136976 297.637795 432.122576 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Manual/ForbiddenZone.png) ->> ->> -endobj -1074 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 295.116176 39.386457 280.101776 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Manual/DriverZones.png) ->> ->> -endobj -1075 0 obj -<< -/Filter /FlateDecode -/Length 1269 ->> -stream -xX͎6 )ꇒ(`0aS@C$b)V-KH~Kw!8Xrar&GK`&0nOGgÕM+%҄hRfɐbĦԱnZΨՌa+V5N9cܴv[{Mx\(=l`#f!Ęc-g1Zd=cWfr,t]6KB^QZ'wOXKܖ~0`ֲ8,;@`n@o73 -]jQf$eaTdJb>&Y!VRRmWһsItZ)l\.8uT>ϫK;z_ߠ"*qܟ\qv,.z//%{wR}'B"Ro9hK?!>]o3^9:[j@|Rjs/Im=Ȯ˦ zԄvu}&>n)l"͠(%Mc=nHm1\/KH!FTN:&y5#ykp]JǥpYq0_(vhEGSW~ dLA/єֿcX_™09Ʃ{`X[J4)6Uip~e 6Qߗ 'b cv>Uśyd -endstream -endobj -1076 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1075 0 R -/Resources 4 0 R -/Annots [ 1077 0 R 1078 0 R 1079 0 R 1080 0 R 1081 0 R ] -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -1077 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 771.023622 555.889134 444.213703 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Manual/DriverZones.png) ->> ->> -endobj -1078 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 444.213703 297.637795 429.199303 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Manual/DriverZones.png) ->> ->> -endobj -1079 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 213.367303 39.386457 198.352903 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Manual/DriverZone.png) ->> ->> -endobj -1080 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 213.367303 555.889134 173.636328 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Manual/DriverZone.png) ->> ->> -endobj -1081 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 173.636328 297.637795 158.621928 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Manual/DriverZone.png) ->> ->> -endobj -1082 0 obj -<< -/Filter /FlateDecode -/Length 1627 ->> -stream -xY[4~X"* -I K;sƝhhL3}߹ؑ?H}p ç@4' A;*g`^08酔4=Z|!wA TJ c!vfb*E4I_?dQĢЋD{cǏwd䧢*!zX|te<==3s;/qΜ1_dr|/11eWy_Q̗֘~\xBᷕ5i.Wde^ >n |US߯:a3ݮy,άBeBPb>0Ba!dЫ*Q@.尻$C\.Nf˟54pk'~ii}hfy7bNQ.Sⴻ3`d &"t⺧L2rv]a 9{12'䀼(XmT-E&GNINlmS]-b׆vM5/ظ. Er`qZ ::*f{a]4 [ [,F.Bd?yqDg{zrBTV8[Kad$c (Phr86nq~B Pt~VK#0X_7 -=ޟV@8S[V=ЖbQ^Ly^- 8%%X(3I -[- h2׶%^\۬1C!eRZ -,g/mrPҥ/m,V1$p졥tz4@鶤Tkn Z[y#,uA{GHij~0bM)&&FA!`c9KFX)(64+fM1mM;WRRZP|#"_Az>ᬹWo8Yr!'H?ϗ_W(&ؘ -νG 5LotKmq[k6x>v-I;9},XVXM56EI^Vz$P۶~-UevW6ssm& ߏ.]NIyJ* -lvӅxqB=TF!ʡt?[ν˖더B53^ß r*g;?e??;)?%?!}yAK/n;(aZ 8|S0Oz2iJsrU;ҮmKZCsbرh54d^ y7U>}\UJ*+o86PZQ@0F@_O"Df:nQsQoP0ļu: -endstream -endobj -1083 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1082 0 R -/Resources 4 0 R -/Annots [ 1084 0 R 1085 0 R 1086 0 R 1087 0 R 1088 0 R 1089 0 R 1090 0 R ] -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -1084 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 731.610822 39.386457 716.596422 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Manual/9WindowsRemaining.png) ->> ->> -endobj -1085 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 731.610822 254.636457 645.360822 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Manual/9WindowsRemaining.png) ->> ->> -endobj -1086 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 645.360822 297.637795 630.346422 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Manual/9WindowsRemaining.png) ->> ->> -endobj -1087 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 498.970422 39.386457 483.956022 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Manual/Windows.png) ->> ->> -endobj -1088 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 498.970422 555.889134 457.610502 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Manual/Windows.png) ->> ->> -endobj -1089 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 457.610502 297.637795 442.596102 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Manual/Windows.png) ->> ->> -endobj -1090 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 93.456102 39.386457 78.441702 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Manual/DriverListControls.png) ->> ->> -endobj -1091 0 obj -<< -/Filter /FlateDecode -/Length 1071 ->> -stream -xWˮ#5+T.?@b`3RHE߄X%jw';DI:~T:q~,wvut Wlt2^Hڻ%ZeCA!6QkE]nEO7VTT7-R? ~ZMO owͬzui\\,2DF - aߞZDvu.g?0=N=y}9"4y]$"\Ty5{ , -+^긯k(揫ci^5yQ,kӚ@ъG~(k0{!q~8d-d*dq`k1spS{W*yOqh^KiyM{G~[ -RP'ԍ%F<5/8.1𵐯| -mlEP.|7[k䫞bҭ8h˱0T8ױpN4C\HuC -endstream -endobj -1092 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1091 0 R -/Resources 4 0 R -/Annots [ 1093 0 R 1094 0 R 1095 0 R ] -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -1093 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 771.023622 280.136457 525.023622 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Manual/DriverListControls.png) ->> ->> -endobj -1094 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 525.023622 297.637795 510.009222 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Manual/DriverListControls.png) ->> ->> -endobj -1095 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 299.807622 39.386457 284.793222 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Manual/SettingsReady.png) ->> ->> -endobj -1096 0 obj -<< -/Filter /FlateDecode -/Length 1628 ->> -stream -xYۊ7}gC䪖JXacBmqԒj{YvwFj~48|Tgppxh>7rFg`}zA ozrλqa8ğOO`xa歖ǚ'q𼭶`>(Jʈ?a|nXMƁ2ʺdب!<à)n4v?Kf/ -x# ſ"7:^)~'}=93MpRpWc9M4|wϜIPV6 'Vy@߲p;뗿0j;FO>>ܿZDpfi,"=͹9^?0s_'O||O3rĈU"ˤ k7;Y152ϗqsͲX6sq*oZ}$]=8dI氏-NBƸ-pe%H(Af lilM6;Έ&S#B`W1[Q0R|?fvG;R\>3f{Bo X"s~ -){* -}v Įo{BT}EgfÝ2B(U0{Ai.s\_:\rWsW+/MžMu;WMNN]2~Tk3kj!ooU7=6xf3*_Ⱥ,H`VI%L$ +3u_>7@!f3F/(O5s ĭQqF`2(quQeil唽* -\+RIKB?PvS_ -L#yKrp)_Y#̎v98떱7+v~$oҙ:6"#yeV "-:U2M -i]۱Hy[[mbLݖތ2n{ =%-.eQ)yK[()sZS*p-d%iqfVFm/ni.l{V +zx7jҼ{^HD -zgMw挭 l:W6>/ـȰ30-O=6GKwZu9tðs#?{2JtP\)DgȾ#|E6{Q! o -z -m%kI]P .>7EwI|rKϪȽj-Xb"vÑ4TO!k2E@;aÚRHD[%m=CІ>9!jR,ŭw/eAr0 =j$ I8Qu*c%%PհC tfɣF WyhfIK>hxdg:woNPu <^o \"PEf}{w!Sk}#Dw -ց9 -9fٹc>a`X?/GV5>Jm]j)xg-B媡0+ǰ;Mf_(hY|+*%c/1 Vi _A5[2&.M 5Q -endstream -endobj -1097 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1096 0 R -/Resources 4 0 R -/Annots [ 1098 0 R 1099 0 R 1100 0 R ] -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -1098 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 771.023622 555.889134 435.005256 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Manual/SettingsReady.png) ->> ->> -endobj -1099 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 435.005256 297.637795 419.990856 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Manual/SettingsReady.png) ->> ->> -endobj -1100 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 92.293656 39.386457 77.279256 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Manual/LoadedPreset.png) ->> ->> -endobj -1101 0 obj -<< -/Filter /FlateDecode -/Length 984 ->> -stream -xWM79PeFҌ$x19$=4~ -MK}ʊ@lf4̧@ߡ:٩'sGēyk*s;{V<O0xJ19RR.i a~J,|yy 0nLZCtk2VAgW'p Q p5;p>]Z=o{.5]=MG֋kͶSGw\FJR_Ij*gD-et 9 |#f9Q́&8n#,&xj3UMvJ)M)|@{F23qRڳ=ߢa -a{ӹ0uϜ3=u/.W*ӺyoSrF.kWҗ}ƖTao[?n-`Mv [e3Qu}ӂD%; {p_ cwV?lA4>N7q K [E\ns]FM)(LCƺoJDA rW6p8(it5[Hm %+CƧST HjlA"C-! -endstream -endobj -1102 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1101 0 R -/Resources 4 0 R -/Annots [ 1103 0 R 1104 0 R 1105 0 R ] -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -1103 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 771.023622 555.889134 434.019371 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Manual/LoadedPreset.png) ->> ->> -endobj -1104 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 434.019371 297.637795 419.004971 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Manual/LoadedPreset.png) ->> ->> -endobj -1105 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 252.275471 39.386457 237.261071 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Manual/Simulation.png) ->> ->> -endobj -1106 0 obj -<< -/Filter /FlateDecode -/Length 1128 ->> -stream -xW[6~_@ -m8%)>PHZHֲJڥ;>H0XH#0}<|:Xh3V}><蘆L7<|>8akYxp DL3`H#;pQAfL@t&VYaEF+yť}j6kl&Pvj&dk)z +e%m#S V˕1Us.O94:ˆi;ݟ9[|Xt:򑌠1 (@ ~wHں߆W hy@@EeRE|_=sO]™-r"Z2+"NMh: NE w^k ,t(N‹R1p( b[NeC%18 LuUVK&4,H6t! -&Ӓ~3fvU5\Vcmǵ;N kEU>wګ=d=VE"1t6mȝvJhnR:#n6SW=]]N_pOy;^Oz@F=k[óV4FmGχ{4ew)cf6&.r^7zthG=:1KO`+}J_eCR͗q_(HQ붎g5zo=ŴӇGcDߟsC -endstream -endobj -1107 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1106 0 R -/Resources 4 0 R -/Annots [ 1108 0 R 1109 0 R 1110 0 R ] -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -1108 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 771.023622 555.889134 414.499650 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Manual/Simulation.png) ->> ->> -endobj -1109 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 414.499650 297.637795 399.485250 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Manual/Simulation.png) ->> ->> -endobj -1110 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 179.618850 39.386457 164.604450 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Manual/LastFiveLAps.png) ->> ->> -endobj -1111 0 obj -<< -/Filter /FlateDecode -/Length 1394 ->> -stream -xX[7~@etCB$ޜ %j$Ps7F?o>8kCOZѼpC0x/}BJPh7|y:;u]8)(W!~|<><$Б #)k&V1(G*4ϧ08Žr9z4%$q줳(#0UNe 1*4. ff\q, nJѪOOLYXV -Ƃ%A1џ2}[]uoҗzscT(Rn 6V3eJHcaf" Es .fU*N=_.ǚBH,iU>ɲ~b,9#ýlؓQj/ed)/>g {N(2Khd;dy-cYqp]Yti@$Sp'vBƖ +PbVCX72>0.aVtRU2 s#r3L_VTWѻyZ) lEjuH pQ+kE'VEA:Ggy ܋o=5n'{=*~̭.uh˜K׺wh^G/K_) -iTdT:S76(@apŕD_ -Tzj*eL=xo]iyɕ,tXOJu|Y04Z?g80vRsgyoɭX>+< -Ϝb U;!<7),%VMǣ. ɷ4wd1DvtqL^TZn<γQ92iBܪ{ hyZJqV+-PAg-rF9(iJK~ӛ_ Ʉ`Xh(DkMqFm΄س#ddTоa>8q-&'?<;r txڀtAz0=_#ڹ5>fT%㻜n~%Jm] 68%?n -30 :V;X.a`TK|D/-[jѹڪĸxax -endstream -endobj -1112 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1111 0 R -/Resources 4 0 R -/Annots [ 1113 0 R 1114 0 R 1115 0 R ] -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -1113 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 771.023622 550.886457 514.523622 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Manual/LastFiveLAps.png) ->> ->> -endobj -1114 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 514.523622 297.637795 499.509222 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Manual/LastFiveLAps.png) ->> ->> -endobj -1115 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 207.526422 39.386457 192.512022 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Manual/Battles.png) ->> ->> -endobj -1116 0 obj -<< -/Filter /FlateDecode -/Length 1413 ->> -stream -xXۊ7}gCde !@ 318CJjTnή]vgZ*Ino"蝙ΟRx+'Kty-}>h/|ʻ)aB'AHqPkaO_>:>jOJ $`J_>^ ZjBZZ~:شUÆ솕4߽@lByRyl3D}9#GG':I{P!3 $`*9v_5Bq -#she,n>?1]ƤO_]yNsfKטK#9BK<Q re/`4mɥ*k|p)h6\ i^0Yu`aib$kW KXd+r&yj 6NuT>NQesUs$΀Ϫ(# b8O3DcY|(pzp`~(WpY{sey2+f0F؁xQeEF;12:1$;zz&nF^QLjҚߣuK2G\(Y~ܞP! Vײ׭{:NDI+9fҺכU]a2`DX~7? ;ZX.Dms&43khF+rm G &0\3Aŧ \k9VgJ7}Q/IZx_%:7"Ɣ[D]$Qyno-smScI.CLti@"UG밃. -^HL(t@1 u V;1P@X:ti4ԙwrD* -endstream -endobj -1117 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1116 0 R -/Resources 4 0 R -/Annots [ 1118 0 R 1119 0 R 1120 0 R ] -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -1118 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 771.023622 553.136457 574.523622 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Manual/Battles.png) ->> ->> -endobj -1119 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 574.523622 297.637795 559.509222 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Manual/Battles.png) ->> ->> -endobj -1120 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 267.526422 39.386457 252.512022 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Manual/DriverInfos.png) ->> ->> -endobj -1121 0 obj -<< -/Filter /FlateDecode -/Length 1023 ->> -stream -xW6 WHIbACS@у9&%[g6iص-K$ߣLcr/z41>=͍>~ &$䍏cFɠssNy}HCh!L).?h4zP^s1ԡ5]u6v*f1=1؁#x_i ՠd)0UмX$..[4! E._~hmNe: WwИ@6%ɩf:[L^}[G9K1pr9q드:N噟xYɸY>%<5( lb'98;бFe,uq d0go_l''$#}N+|fθe-R7__BPMG;:W*Bn`OF\D? =5V%>l|N+9ĒحfKVK-Pqk`t# - x+q*06ۊja(kZ$TRYcCr_m -8K¼ڪТj Ew4 Vrkx{'fAV p^WªZ%00s2pc.5o͇?(M-v=#M5c2ДBu?E=?{=g -ܾAFRe2. -W{%*..5LLv]g#oy:]M8B74hPoo),+jLzRC6](ָ86ɛXկv^l -jFE x֯im[88#8' /d[_eU˹-Ij83r!Ȥ(#17#οs@ !./1W '2R_Z9@"M9?$ _>j1k頀ǯ -endstream -endobj -1122 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1121 0 R -/Resources 4 0 R -/Annots [ 1123 0 R 1124 0 R 1125 0 R 1126 0 R 1127 0 R ] -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -1123 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 771.023622 555.889134 536.316565 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Manual/DriverInfos.png) ->> ->> -endobj -1124 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 536.316565 297.637795 521.302165 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Manual/DriverInfos.png) ->> ->> -endobj -1125 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 359.897365 39.386457 344.882965 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Manual/LapInfos.png) ->> ->> -endobj -1126 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 359.897365 236.636457 149.147365 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Manual/LapInfos.png) ->> ->> -endobj -1127 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 149.147365 297.637795 134.132965 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Manual/LapInfos.png) ->> ->> -endobj -1128 0 obj -<< -/Filter /FlateDecode -/Length 507 ->> -stream -xTMk0WdFҌFZhi - -$БnEbm|H=͈<ڸ${i"P-YݓCȌ ?~O.fȅC_$U3)af8ň??{\"dĬLEk:Ֆ/wƭ ))3WHi.5Yd^_9g% y"$0-/&=|b}aG3ieXgZ,QK]}y'Iþ} RҦc;F-L ER MOyL7PZ&}vJ2T O'q fΡij|2u )|6YزD)dc!}z{cNudlN P s µRd N:߮('(&Eѓ)ldE>LΑͮs퐓-X'Ƣx[ :{LX4Ha3w9oFq*l>+5: -endstream -endobj -1129 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1128 0 R -/Resources 4 0 R -/Annots [ 1130 0 R ] -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -1130 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 743.669622 39.386457 728.655222 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Manual/LiveRanking.png) ->> ->> -endobj -1131 0 obj -<< -/Filter /FlateDecode -/Length 370 ->> -stream -xAOC1V(hbv0az1yF97AOݛ:%}¯ّ7Z)/fLh\vwIJ&l -endstream -endobj -1132 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1131 0 R -/Resources 4 0 R -/Annots [ 1133 0 R ] -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -1133 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 771.023622 327.386457 84.023622 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Manual/LiveRanking.png) ->> ->> -endobj -1134 0 obj -<< -/Filter /FlateDecode -/Length 2135 ->> -stream -xZK7ϯ!^, ;6!03%IJjikVn9-s8O9Iÿ;e Yf9bcBpEh]}}[:!%ፃxXϻ9ZE_4@EqͤQĩ2?eU/7^53"瘱0i!A7;rsp53|%4 -~N9 n -yR0\yi<~ٽoo>]DHƩϻ<#! G~:1G - 8I: ,c;Pc5;}gPN]y>7? tRz)Yk 4-쑃Rmd%_˪~EIZċ);_% eG"@0Pȉ҉XIZs(HiNa$'DSz Dr!N]14UN$CCz &"4͂m00~"N5-.B{GlA> h* Zgr -AJis $\0)ojTx1 BC,Q"$efVˈ6_+5:f2f;Ɖ4 `Rx/%8v6J -1yDݫ2^މ/Y{ԫv`62f`12KChǦާ)4 qO80$rs)7J!V+o9>yV *@ŁeݒxV -G=a-26[{05k"~׃(ZӗއFwJ7yыF͐#OBI#eja-ǣ -F,ۙIy(dJI& XZ,]Q~ﺧY4v:RSi|hVޠo>T_EX'Z$CR::#7w:~iR_Ȉ0{HQOj$L(lԱ -*Fdp!?'e,Ngc Sf-f.Y42S>!kmOT|6\8I NS9_P4[A搌U}VUecաzAy`@QԲDenuvm'”*ݴsStۺwчty]wt,q/ZgNp>3rz%W^ŷU_D"!X\67 W֧ۍ,n^\|K^^|C^\|_^|S8P&~ߨx'W!!>J?6afI68Y)cWrV#i'839(qJc]9 -#4Q,9 -(P1swq I\o[?DK -endstream -endobj -1135 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1134 0 R -/Resources 4 0 R -/Annots [ 1136 0 R ] -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -1136 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 771.023622 297.637795 756.009222 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Manual/LiveRanking.png) ->> ->> -endobj -1137 0 obj -<< -/Filter /FlateDecode -/Length 4158 ->> -stream -x\]o|ׯг=A@HK ȃ$rR%]N:; v^j=C~>wגOZ㇛oloؽw ?:՞C-=M5oz-Dlq)F?7|qf[콴L O?|q'tORo9{T=n256mͻ ۿ 0xJkS3?jcpG'X\6m.ͻ /YUhS7n1XMNGzy1Q}60 Oћ0)00i0 ұI1xJU%l?6\9arpEHW\- -M5 TU"[hk݅&&HH" &՚p@0)f{vEn -t'phHD!acQvd*\IwkT:مS+YrwY.s*Ixci؄ER$S*b&cGe KӔ/"0%wHdKPFXPČԥ|98L]rO†1/0C% ̥E -+_@R))+_@. =sʒ{!昛E!PE!f/Ua!f;/^%w(_ʭv H% h_ʨw_B+1S-M#d|ш9ZVqH$w* +ŝH=VBTE Qq -bV) D  _ 8 )dŝ;NE&+.|=Pc+;u0֚/u0ڄ/u)!8 A NKAdլ|A޻u0zQܩLr@VHu0*H;ua(SGZsM:HAN FI9+_P9vA$iɝ:iA5(_PuND&SQv :}eP ɝ:h$w5!|AD:*ɝ:hhŝ:hT6Č^:ܩCcfeS`*CYM.{4bF5*|#eeC̡*H߰G'fpV[CqlGܡ1:鶬|9bV6Č좸sE#1C/"1Ul.6\{#&[ܡ,mt0ւvXsYrOČ@qO)_db*_dbUfb*Cc*_@#ڝ|dyX/H]rƒ^9|QY\3PqČ*Zqhw 1ehC Kl:CrQM#&R6ČLqČV;1rSf]:Dԋ➨U=QSj&=QQDL):YqOA4j6=QѨ5DD!u'ܩ($w [M'`ۄ 0bܩ%w UM' Z-&$ jBB%w -ɝ:-yDDVuůNDQ/S 0QȲC``l9%D ռzjM!QNn;uЛyDjM!Q.UqHDg%S-uAQ)$ꠣVܩ,;uzR:h-5D4;u]N4Aה/d:hJAdy=S&LsT$pOԮg lLͫg aSk -ىʆ9l9ʵ 2a;ʆ91lVܱ#46a\$ %HI%HoeCaIS3.xys 0WʁV6\i$l.CQȵ$x6s&djMpJ^9^]ͫ#[ƂZSQk -: -:j^=CC)Qͫ "D3 Ž3"Žsj^"lPۜي :"yu4pA+_@J)d`@0JS;1ǮՋ3TNPB@):Ts̠ -uEZS(ATH;uENL9yBLV/ -uNNtyBdS"4ԚBV$w`r-Pcj^P#u0Bwsl;uՆW/A43jMP)*(4%w - ɝ:W:Qk -:)SqKAW/A8C) ԚBBr%w`@|As5^޲ZS(A.ŝ:ŝ:Py ꠣUz;u.ŝ:ȲEއKhߕ/{PqH%w5ܩVMͫSk -:hJ{Q:O݆L4jMR͢^{ܡ[R:&0?9ёw os1k XԚB ČYN^%H&ג*t[oj^'MkjMB.CPܡUDͫ_=pg9 |$\?ST?YaJlB}Zeoc|xŰ^DNМps~8j#Ʀ~ʀI*?;#p>ϧ|^Mɼhή(*07o7 aW0;=.&g {u|bv:tMmx+,~M|eryۀ)kL<+/g4.yyyyϸ:D АI݇82+aOa0C#Lg̶Oa!#3=^GaHۈBr;ugLi |x˱a*Y>hڽ~r:zm3\%cț٩^vg a:zc?o2l_1GV=KW#6sƻūaNdZ<׆/ysgN>NJUsC X7yYי˱#Vՙ#ڕ6y* i^td}k-gۓ}7uՐ]7Wϙ*q~D)/=DCIAOMib<<Qhl8>=JCgz8Jl=>toxyƍ6g*w7 C8?Hxy}y[Wpy~:~Pls_m|˵rZ ;=|h|W_F-!g.ҚRBlW0o"L.=[@.[|!gp&GGz"QG_8gV:og'Rv1m:B03`[w50ы[uDh|f>'>AfkQ4[9|Џ Cu*نy'oӟϙߋ*Sn0FÒlշqwqHa._M:T"MQ-5HXYg[VW2' jf-}Kem*W7KHxZS^oK,=O% xl+pyf\G~cX&b͢K8@e -endstream -endobj -1138 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1137 0 R -/Resources 4 0 R -/Annots [ 1139 0 R ] -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -1139 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 153.835026 39.386457 138.820626 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/MkdocsExample.png) ->> ->> -endobj -1140 0 obj -<< -/Filter /FlateDecode -/Length 4054 ->> -stream -x\ˎ$WY[I2l>H>Xa3cpDu=X=UvRwU6Lf$ɮyk˿~zk͆?t{)k9r~B5 SfOO?<牟=]YmBzi¿?[{zEGHC9D4կ\OMM`]n]+3f}WZ:4 @I6ccj;kѮ1#ȱ][?pٵw8tr9L<&L -LRsnn~nR & -5G0\kfaV"]JQ+Z zuJ*ҕpcSVZ 3 BS1-7SZ&%$&" ף" 7,xc2C؄"ܰx]֘ -/ ?æ ܀ %ً O@̩49$r-T=5=3d!+_ ;)_$`K k{rXTHČԥ|CPqĜ)_81c// &➁$C𼀼K|sL =gɽsMs,Qs(Ua!f;s;sC}l9>\n;ϑ}$JT aӈ-(_4bNURs4ɝ -JFqR/|AdBTܩ̊;e|AuH:HHtDHt+A"R*v=RS+;u0:Jm:EF Pr%w jVлu0zQܩLrF@VFHu0TRV%w PrF!攚uܩ4ɝ: %e̡|Aʱ8"IKAOS\u0Rܩ($w -Ү|A ֓uj!SNfȻ)_PC Gr"ZqZBʆ1/Pnɝ:hH?;t0iV66 +Be`Ssq4w(X,&=1HF eeC̱*H߰ UqO…/t05,e/t\7ъIAHeHY3}䞈|+PDƍUa̵'=qo%:&)_@S-X+`9KN̸;1b1C*31[ܡZ/ ˝|dyX/H]r^{W(Č,|QaWbFWbX*b6T7dtAؒ;t0$w |:rl2-eCX)Պ{'fR搻u0[I*ދAoUqwZ/:W8usSܝ:A,nSPQgND!:%w - ɝ:V[NLfLVɝ:,Sj[ݩhuAB%w -ɝ:,}ubN:Wrܩ#(_P#dY!u0rQ6Scj_ݩѺ:Sp`4ܩN ԾSC L.UqHJr,/|A 13,w 2Nj_ݩֲ:SpꠡSܩXJACy|A4xM:hHv*NDW3uxl5v* MM{Ծzb=lL!bf!f(bN,)b":7w 1scBsâZqŌB.\)d He=˳l#l4 1c/se*`he̕F:;tfަQ\5hidz*_vqo0NXX;{vth7^@?ζxk}grd6;[0Οmqp&L3-}Lw 0c_{>\ƣ|k3׍ܑ(ZH#jj|pFNޜA6B` >B`{Y5p:r^>msg?dwk#8k{~Gnwbf:msBpQ6:je#&}WFȆԲ:mvϏ9!dȂRl#)LeTcN xL;5=p΋=H3cX:(HecZ#7eۈh[ʘp-5 Gכo,n>I-_D0]/9q,SqG:C5F# a`9~erj~");<K4NQTChhZZ-_PI -;E\qU *zԶ met3=T." Zl(Eva!_^8uC9Efk]|̽/CC:XJqS<5j]YՆkc?J<~h83m.)c}Ѷ1wխ5=7yi Q98MMbݵzsK\R -+? ֲ -*wͻ| ![9;]>S>c3MÏgx?:ϴ|=sR8EOr>&vG|Nʖ<?pK*yHiv=ۮd\5/3ǥ(|ԐQ# -hz;kCv-ʥ?q9PMP WpեWϚ5WNU|kcզl砍I,= -];.o͜;'>?4nSή.EofR=F=kO/(3f{l9M8d{Mn"jaqe˽q]k9p1O{~mhQ(@9Jk%ӶT_/4>%4v-SW26oKגz/ Jw> -endobj -1142 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 771.023622 555.889134 517.798743 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/MkdocsExample.png) ->> ->> -endobj -1143 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 517.798743 297.637795 502.784343 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/MkdocsExample.png) ->> ->> -endobj -1144 0 obj -<< -/Filter /FlateDecode -/Length 567 ->> -stream -xTMo1 WƉ;R$8.8춝%|dbF؞;`@ ewOxGU#v}+DrTRl :d.Q11z/i*ёdBp J`~y4W'p>2$j0d z40bCfD{|2W_>}Ƃ J帘އ{8y(Nmv}:wƫ?8 -Z| -=.wߩ#eV |}ƥӆ-=ӚTT[ik ]*'#f{Ux'+ _=\ +1mwu#G*nbT|%U j@x+n}A(IdpJHM5r{qZ3 -QS7qGztHj2w]!=;'} Uj*9jiS 56^;6$f󮰗3iyzJw0؉)?\@VRAr.yV r>DP muo7H*78#U< -endstream -endobj -1145 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1144 0 R -/Resources 4 0 R -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -1146 0 obj -<< -/Filter /FlateDecode -/Length 382 ->> -stream -xRN0 +dv؎v@apA* q`[8v7#E j&yv;A2h?}es)9 -BTQԀ1aJ!SJ w7|))xCškjonXrMVUXE(6KldfM0ςO= }@m? П6{513KcZG(!%9\_\߮| MR6*-)@Ixl3u#> -endobj -1148 0 obj -<< -/Filter /FlateDecode -/Length 396 ->> -stream -xJ1 }1i&eԋ0 >)&śNiI( Y&5'mX} ע-w1#Yɀ OfŒ?UzKq^;"i&**f5,(GxIw_>ӳ_4_YðApnt4%ZA7%X1k:<;?>` 6(T[Lnaq(\M>o7~:|&I|4WJk]&]rEOT-x\iQSuA3Pʉ", eun{4$Qs^XEo sXlBnQ!KiOv3WJQ>\RYb˺Uq㯊y? -endstream -endobj -1149 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1148 0 R -/Resources 4 0 R -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -1150 0 obj -<< -/Filter /FlateDecode -/Length 385 ->> -stream -xRMO0 WıiTvh%A|4̎% Evd">% Rr/b˔B@ݺW c  k諽=nkR_kʷXƢV?F.EF[b#3nz~YS y]zXz\bYo6{513K0g{MX#L L}gn..| mMR6*5)@IaGs݈,r2O<]/LKwQu=X C>&bfE?rɁS +@lrP_MhR I$KŨ;Y U>} -endstream -endobj -1151 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1150 0 R -/Resources 4 0 R -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -1152 0 obj -<< -/Filter /FlateDecode -/Length 2399 ->> -stream -xZK+5W CjEiX,@jh44a3w$/q}vMR.}s\by-Y>]p G1(\0%h>,Nx&*^Tw˟]~滠y!%3"XobI?| -ƗwǍ -o TŤ21p?e_nV?Ʉ93Y)~f7GQ37Yҗ/"e΢oMY*X WA/{Z/ϟ._?E$dZ~S^%gR+" Td["u-?M\[L4O]5*ȡۜ4.ҧv\DJ&UZ6DM*a~z[kin^ok!ѕ ^-knk9ͽb DOоC&B#rZ0mViCy"DoXԑ_! -<*PFU&ɋ]0BwQĺXhEeK{jNϗ+0jQ e]nkWC)W!3+(xE6q J}O?#]rDWQfݟosH^9֗eTvW,X-; Ɂ]!Y8|^:3?nHkTb޼.{.H" -̙D17ݪoG$ ᮱AA[sil8/:ջly˲;*`4(DZM'OZi+Ee ,2Z 3qB90A="?1biqYZ+3 HYPg!P%b]tJR"&)ov6F4X\V^1]rrx'Ѕyb Uo;Ma^+D&>HkC0׍jx8kl\fH;+]! f7HkXXq#{ qL{Dh2WdQQ4դ:ǘ-j;剛)NzT \;;3F&Bݤ7Z=d˾*a/K{+PF&CUR_)b[A{6V-Mc$i21B Ru -ycGP"bC_( f!WhH(t6ՍL~pC+,d\2jh͙ -ytֳ5IfaѬ - -$D~c לxI "yI] Tc T(PUPZϙNh}XhE%DQ"aEQ@]X:LDI]{pF>ђSKK랬USE\JAfNpn~TԢl@m_XC: ¯k5!Sv'nTIRuD+HGF X_AI-BҖM % ͤQOJڡNsPPY/5PN4|ˆ0"JVnqMcOt -eq|OHLh(wBs*I`4dQyzvA8.\Y**KCRKqYnI]Rfv638=4|/)8I,:}#רVϞt4ZC8V*ͺhݞ|B2{5i}Lre'y$CA+Tuɲ_ᬨQhI]+^7TU93\ÞPUZ gڙHTD9FUS9E\eS%"oad̉\}#e] 32k$8Ux!RB+T矃@ bAD`51"/ ;~E]{-&aapkC= -endstream -endobj -1153 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1152 0 R -/Resources 4 0 R -/Annots [ 1154 0 R ] -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -1154 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 135.094122 39.386457 120.079722 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/BlackToWhite0.png) ->> ->> -endobj -1155 0 obj -<< -/Filter /FlateDecode -/Length 2608 ->> -stream -x[[o+~ׯ( oᇠm{>Hk+(pK.g/O!kEqpKQoBÏ/g>̯/Gk;FRx6ȃǟ?0FY.4ߜ@=\Ȫt˂)8 d953Kg|#~K4'^O'yEB@3X4p8YLX ۗ”mѩ`5F:*/I,r9|'AIhtPI -37׉_!Q1g6e0~>|ћƢ"1M"$•H"8#WpIs.B*$!8^2=7H|GA(B}Ɏ<3-hrMcr0w/3dF Z`CKLGlaz#0xaxqz> I5RPvcX794G Y׉[XiX#5F~ Xg9qň 1:Ԍ4Z5 bOdWo7Q~qVjڇ5Ӥ&`obͲJj$!ɇhfߖN5E,g/*Ws$&mr&Do+>a񸈑<}L̫:&۩U8F -Q"R -Mڕy%a * GP4l$k3ATƆf왾ܡ4զ 12A{e4ҥӈHd)Ȍq WPXi&:U!{"ݨ&,#uD.:Q$]Qzh?{$%ƙ]"D:S \IKrh#mCn繼_KCUXf9o>0vExU* "*>Gxj0&'$Xso0Z+Jܜ)ͯ\. `BVf԰W'"mQMaGpԽ L|jdb.Wnx{M}sTddBkvz61E :VN6xez;\Kb3K[2tCgr>~̬^W9ST/y@^s8oDoh4ΌW8pf4N?S6w/f<nu\:*LǪzxO[AI3f]Kj.2W Ыce,V#=wcDd{4Hmu]=sO^^;앋&9w*g!CrhwDV6NwEG]lca ~Z~Վ429|NR\KsrWkPg=Èp=uϮSSi[;mݚ淺]%AtՖw`!N^~udC@cipX|{ˊeѝW) U{ʽt`e-D -h$f~92{3WwG"tx0njtf9|_PSq/.N˟W)_v/-xۋq1(j4*پ=p׮4R}r}N~{|Ϩ-T<oT^?Ù1=É)FoW~+~f(<겋ѹ۫n9`0=ʏ[u;YB̽14lkWհl>Z,|? cBbvd3 ZN6M&ЎP|pkz0.ޯ:qxhב!ZyzG:^-O dBFn{W|m=YtSJw>?ґ֬ׄ=uy|6$Vr;-(8Mtvxh*zЁt/"ę?%mHAXe "N嵐Y{[v}|<5`+&=I?B9;\ONΧgU*Vtmފ4Bnxq 2,f:zOJ"$E8_ƊA.%]G30TioX/Is@>ؙ39} -endstream -endobj -1156 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1155 0 R -/Resources 4 0 R -/Annots [ 1157 0 R 1158 0 R 1159 0 R 1160 0 R 1161 0 R 1162 0 R 1163 0 R 1164 0 R ] -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -1157 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 771.023622 286.886457 720.773622 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/BlackToWhite0.png) ->> ->> -endobj -1158 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 720.773622 297.637795 705.759222 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/BlackToWhite0.png) ->> ->> -endobj -1159 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 638.194422 39.386457 623.180022 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/BlackToWhite1.png) ->> ->> -endobj -1160 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 638.194422 273.386457 590.944422 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/BlackToWhite1.png) ->> ->> -endobj -1161 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 590.944422 297.637795 575.930022 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/BlackToWhite1.png) ->> ->> -endobj -1162 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 508.365222 39.386457 493.350822 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/BlackToWhite2.png) ->> ->> -endobj -1163 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 508.365222 241.886457 463.365222 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/BlackToWhite2.png) ->> ->> -endobj -1164 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 463.365222 297.637795 448.350822 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/BlackToWhite2.png) ->> ->> -endobj -1165 0 obj -<< -/Filter /FlateDecode -/Length 2990 ->> -stream -x\K#W&Y|9 lCIb ARdVY/V}U,:KQ"9_~9Iɛ_ j -UJI 8 ?O=K?+*`~E yW\hX 4k)?>TeYEZZ!O*+ϯ}STlq\g P^roc1-c~xm0-׏ywZrM~fk׊ڜ=vi?O>?\,$$0 -zX4/lą|-qBQ0?7*H2f -E:!tV+_QVZkTv,=]5X&A oɓB,D)u{bJШR+ٖDt[Us1 -}6ǚemjB_gWTdܦu[}:2devXGq\8}?c))5zRG0o'_cDc\m,%o2~aJd0=C߁C*Bt>7\|sou}$ HNg@!Vބo#F@@X -|CnX7TyW, 97ϋG`e]O@ȤA#=W 䤊I.={gnxC|=8c·aa` $*[d[l0B)=<*~^zVtAruTD}>e"㻧͵r&Lu#Wk,CvuoAtUD|)0YxzyTibah-O[ӎwedjax|v֥=\ wQS\qv+AW2SdH(Cv8$\]2:O L~ӱ,scZ 0|܌Shb""~_q؞!MehϐF(zdRFg[Cz2l~H`C$ƼI9!:m[tHc#tHc{Р-:e˱Y>u8v1]|ڥO1PWI}.uԬK9N#Qk^NDBgy󍧹L:0e[8ApKoIr_c%t0bMZ9~M*;ֻWfKmvD&Uഁaԉ[%drɕ|ߙE+0{ hwYX'|~ߙN+X6^;Nz 9CƩz|?(q0䭷$ڽR)!̤@~uǖÞ-UzHjI2Isz;s0xxf4X.c♲ؗw.4;'2]wm|_[7+'Bt=Pk[ާ8nLw [MxBO??2% 0x-2VLP#t+]=D0SBn`rP~oe:9NPvBb?iw -endstream -endobj -1166 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1165 0 R -/Resources 4 0 R -/Annots [ 1167 0 R ] -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -1167 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 261.036066 39.386457 246.021666 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/TextRecognition1.png) ->> ->> -endobj -1168 0 obj -<< -/Filter /FlateDecode -/Length 624 ->> -stream -xUˎ0 +d8~D. X%4m; Dq$.`+&Y8q^(U=6F8x]N>f' Dbt> ?2_2z AT@ RW>_hTMeURV,5)#PaJ]B>9|; 'M:Y. g:k8{󳂞Īd7a11W -|HIeûw -XDߏ×[߭!"fOLى'<޶`!$kdS#VmIJde/şL-%k6?o+1¡x^džiMW vaR8P4uN30b -x>B-Xy3ozX3^G^Z%ų¨.&p/41tbyv_\``??l0Xi`t|I?c 2mhH02n_ۡ)PvS˛7ڜUho9咅T(6ix9mQdErPg`|3Vю RlDnr,:>vt -endstream -endobj -1169 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1168 0 R -/Resources 4 0 R -/Annots [ 1170 0 R 1171 0 R 1172 0 R ] -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -1170 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 771.023622 555.889134 294.611709 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/TextRecognition1.png) ->> ->> -endobj -1171 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 294.611709 297.637795 279.597309 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/TextRecognition1.png) ->> ->> -endobj -1172 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 197.018109 39.386457 182.003709 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/TextRecognition0.png) ->> ->> -endobj -1173 0 obj -<< -/Filter /FlateDecode -/Length 742 ->> -stream -xVn1 }ڹ؉<^*- 03t+sdB*\cST W(CBdrj1=NكM? 1c{znfԠ~OGqT\O[ΜR8;% :"pܜbLf؝<1>cp\ף_yűz+.be2y}XDqI6:6jiP}UК$8}Im?86 %`4/}J(-/=ee=7{6Xsֲ?<=^se Ge-P-L2wE2*9_> ~cû$&[" 9 *h8wȯ%RY4^. Y2Fm+?]lxS(_fR+<q"CAYgS*LRz} ehe؜q_{n(KYfd -endstream -endobj -1174 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1173 0 R -/Resources 4 0 R -/Annots [ 1175 0 R 1176 0 R 1177 0 R ] -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -1175 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 771.023622 555.889134 297.840524 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/TextRecognition0.png) ->> ->> -endobj -1176 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 297.840524 297.637795 282.826124 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/TextRecognition0.png) ->> ->> -endobj -1177 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 151.450124 39.386457 136.435724 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/TextRecognition2.png) ->> ->> -endobj 1178 0 obj << /Filter /FlateDecode -/Length 740 +/Length 657 >> stream -xUM1 ϯ ˎTe"vYqpOvavN2q^EDs4arX\ dbI)F"b8c6i1XExoLZti@-TR]r4ٌ4b95(l0Z(dբ,N1>}p0q9#e槀nb g+yS,x(RrDkK̎#||[ˆ;an Ar6ͅX\䖸}klZ֋s_; EQ5WX1^1ɆO>Q'9p\42\VsōCyA'1^༟E-k;\.rli[ė< @[.visz}-T'@ x HVk9 {Z fG{ZY"ig|)hTp=zh$[rKOd >+uy#?Jf/S8vT5L+0o!7HѪuӮ֦@}c endstream endobj 1179 0 obj @@ -16526,6 +16364,1614 @@ endobj << /Type /Annot /Subtype /Link +/Rect [ 39.386457 771.023622 555.889134 447.136976 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Manual/WhereToDrawMainZone.png) +>> +>> +endobj +1181 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 447.136976 297.637795 432.122576 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Manual/WhereToDrawMainZone.png) +>> +>> +endobj +1182 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 349.543376 39.386457 334.528976 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Manual/ForbiddenZone.png) +>> +>> +endobj +1183 0 obj +<< +/Filter /FlateDecode +/Length 919 +>> +stream +xVK0W?U8,\V* qhf._bx!b1?/O~ 3yƨQP:Kgl0^X BHџ'޻hi:7?V+Ez|!m*ɍ4AqO>[A×{qUC*ЂUFTUi"̆]4vGzCkKcG/ɡkyOY_燶Wd˹~+:NU&ϩ=A5=eA{ iƖ`caPH +7Y?t0u@[7S~ATj6f}C/ k+6Uc#C\K\'ek]65MV2N!:9rہNڠHesD1wg kJ풞NV(X/st]Y#hP:Mil[d1(+(|Xj&3ԝf'eeZ )S`Z$^Թy `uv]i)n}lzf]&I.knsZܬ(a/Y9FA$mY5}vC \)O 0]\Ty/} 7dZ΍ N<^ 5,fDhd˓-?x+U-*s%Qzj@Eư#>7E;U:_X n&sW؃? )&<;HȎ㮵R&Ul-IP|/27 I +endstream +endobj +1184 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1183 0 R +/Resources 4 0 R +/Annots [ 1185 0 R 1186 0 R 1187 0 R ] +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1185 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 771.023622 555.889134 447.136976 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Manual/ForbiddenZone.png) +>> +>> +endobj +1186 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 447.136976 297.637795 432.122576 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Manual/ForbiddenZone.png) +>> +>> +endobj +1187 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 295.116176 39.386457 280.101776 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Manual/DriverZones.png) +>> +>> +endobj +1188 0 obj +<< +/Filter /FlateDecode +/Length 1267 +>> +stream +xX͎6 )ꇒ(`0aS@C$b)VNcKH~"KCp`Mx ?~!dK9  :,Cvh>Ll>_9͘7ѕpC}}tpt;\IѤjyźSMʬB4Rؔ:6 [P"G?/C8bS(ş3q_6z|%o[PhC!#X?<_?Z+t?."K"r6Φ4pU]7=Q'.kXuߓQNGy{ymV=8VeM+> ,>""t ž6HIY;)0exo\"4fz k51L6-$FxF|aB^ra;l*| Y%Ц{_jN% +_J%HlDY}Is!k5$pAXmLK&MlPkUBT9 *Y7(_uΟ'XTj6$zmHMhiDq䖉l(:* hM' QUq]pVm$h[ĆykkߢPal=Glnh5齧sBPWcXY9 +D)tN44viB>+V5N9cܴvG{ϠMx\(=l`#f!9Ęc-g1Zd}ǮlU kvO/t]6KB^QZ'wOXKܖ~0`ֲ8,;@`n@o73 +]( *&;IY$+JJJJarO#N+->Bw@y5`@c})B MqsBYDX%T+ΎE\ŞdO +$}|RhRD-'m>{'קM9㕮PoQh] Iof̽$H18zzSAM#nzԄvn>xMv +b@\4D`y7&"~ -e齹?UN$BCr$OtZ4 .˧`7UGӣFBO5 dLA/єֿcX_™ 遯⼳TI`Hdž+NRL<cs~sWYo2x +endstream +endobj +1189 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1188 0 R +/Resources 4 0 R +/Annots [ 1190 0 R 1191 0 R 1192 0 R 1193 0 R 1194 0 R ] +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1190 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 771.023622 555.889134 444.213703 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Manual/DriverZones.png) +>> +>> +endobj +1191 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 444.213703 297.637795 429.199303 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Manual/DriverZones.png) +>> +>> +endobj +1192 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 213.367303 39.386457 198.352903 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Manual/DriverZone.png) +>> +>> +endobj +1193 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 213.367303 555.889134 173.636328 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Manual/DriverZone.png) +>> +>> +endobj +1194 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 173.636328 297.637795 158.621928 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Manual/DriverZone.png) +>> +>> +endobj +1195 0 obj +<< +/Filter /FlateDecode +/Length 1628 +>> +stream +xY[4~X"* -I K;sƝhhL3}߹ؑ?H}p ç@4' A;*g`^08酔4=Z|!wA TJ c!vfb*E4I_?dQĢЋD{cǏwd䧢*!zX|te<==3s;/qΜ1_dr|/11eWy_Q̗֘~\xBᷕ5i.Wde^ >n |US߯:a3ݮy,άBeBPb>0Ba!dЫ*Q@.尻$C\.Nf˟54pk'~ii}hfy7bNQ.Sⴻ3`d &"t⺧L2rv]a 9{12'䀼(XmT-E&GNINlmS]-b׆vM5/ظ. Er`qZ ::*f{a]4 [ [,F.Bd?yqDg{zrBTV8[Kad$c (Phr86nq~B Pt~VK#0X_7 +=ޟV@8S[V=ЖbQ^Ly^- 8%%X(3I +[- h2׶%^\۬1C!eRZ +,g/mrPҥ/m,V1$p졥tz4@鶤Tkn Z[y#,uA{GHij~0bM)&&FA!`c9KFX)(64+fM1mM;WRRZP|#"_Az>ᬹWo8Yr!'H?ϗ_W(&ؘ +νG 5LotKmq[k6x>v-I;9},XVXM56EI^Vz$P۶~-UevW6ssm& ߏ.]NIyJ* +lvӅxqB=TF!ʡt?[ν˖더B53^ß r*g;?e??;)?%?!}yAK/n;(aZ 8|S0Oz2iJsrU;ҮmKZCsbرh54d^ y7U>}\UJ}qU^kh||CoE0t/BTXl5%& C%; +endstream +endobj +1196 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1195 0 R +/Resources 4 0 R +/Annots [ 1197 0 R 1198 0 R 1199 0 R 1200 0 R 1201 0 R 1202 0 R 1203 0 R ] +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1197 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 731.610822 39.386457 716.596422 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Manual/9WindowsRemaining.png) +>> +>> +endobj +1198 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 731.610822 254.636457 645.360822 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Manual/9WindowsRemaining.png) +>> +>> +endobj +1199 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 645.360822 297.637795 630.346422 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Manual/9WindowsRemaining.png) +>> +>> +endobj +1200 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 498.970422 39.386457 483.956022 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Manual/Windows.png) +>> +>> +endobj +1201 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 498.970422 555.889134 457.610502 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Manual/Windows.png) +>> +>> +endobj +1202 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 457.610502 297.637795 442.596102 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Manual/Windows.png) +>> +>> +endobj +1203 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 93.456102 39.386457 78.441702 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Manual/DriverListControls.png) +>> +>> +endobj +1204 0 obj +<< +/Filter /FlateDecode +/Length 1073 +>> +stream +xWˮ#5+T.?@b`3RHE߄X%jw';DI:vԩm\ *].>@y~e͟> +endobj +1206 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 771.023622 280.136457 525.023622 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Manual/DriverListControls.png) +>> +>> +endobj +1207 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 525.023622 297.637795 510.009222 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Manual/DriverListControls.png) +>> +>> +endobj +1208 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 299.807622 39.386457 284.793222 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Manual/SettingsReady.png) +>> +>> +endobj +1209 0 obj +<< +/Filter /FlateDecode +/Length 1627 +>> +stream +xYۊ7}gCҥte!1qH68&a.&'HI-KVۻ;RTs+Iଙ. 'xN)a>LNz!%(MZ 4Z>=:.hwJ zO)>?BɥA3!Ədi_Wڪ}ߧWJL;M"|\D)7%!(pǺ >P7k&w/(ekkKBvjA~܀sCU[T;RRYl@JXdcZ<}'ߣŏV{GexǺNa9%HQ3TD-W +'g,0"_M^T|c&ءMZedt23Js0On՝ӭ"ڳ*ro|Ao tLw`(Z|6/,z +)iSE@2:aCO)8"uI[OcUONrۀV֗ i)(=j8 I8Qu*c%%PհC  fF W~hfIK>hu> +endobj +1211 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 771.023622 555.889134 435.005256 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Manual/SettingsReady.png) +>> +>> +endobj +1212 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 435.005256 297.637795 419.990856 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Manual/SettingsReady.png) +>> +>> +endobj +1213 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 92.293656 39.386457 77.279256 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Manual/LoadedPreset.png) +>> +>> +endobj +1214 0 obj +<< +/Filter /FlateDecode +/Length 987 +>> +stream +xWM6W2#iF,9$=4%)u(4-I?t$KVYm ƻf4̧dT w(?!zvj8}@{2K&dgv!`cЈ`LZY ^}~MOiV{B4FF8PԇUm R Dh7b>NDe0_7pLHi߽F{4Aφ_e Z3l_d{cEmm0ձCfuy#Zyϋ<W7? GKsކՏl x? *Y"`hϯ޿VК:${C_"PED`EXܒ& +denƾ1ONVRl_T}}'1k +e̻O|)-tRoL*sx(KZZ{%n|ytC¤ H{Fw qmRAwB6.mtv o[jȨ;َKaoVÝ}_s-Ri:^,x<2=ktJ6VڥͥooJ +UӶGRFrO'@7:`vŜh@5:<΂Aob'6CdRܐ'I.l$3'=Z-`ư>y`8C)<ОQ e2;/G=j+rYԷʺm9Nڂd]y3V״ݦmlٴʛѻޮ=ځsl}6|]eߴe,ch608;bnU{O|x'[$ɰ'`mCVh's2m\^SR< +S~t-!QfA%M8.0)l:BE_ƥ6I!}$rĒ`rz|m$U3w))na%[ȐA% +endstream +endobj +1215 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1214 0 R +/Resources 4 0 R +/Annots [ 1216 0 R 1217 0 R 1218 0 R ] +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1216 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 771.023622 555.889134 434.019371 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Manual/LoadedPreset.png) +>> +>> +endobj +1217 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 434.019371 297.637795 419.004971 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Manual/LoadedPreset.png) +>> +>> +endobj +1218 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 252.275471 39.386457 237.261071 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Manual/Simulation.png) +>> +>> +endobj +1219 0 obj +<< +/Filter /FlateDecode +/Length 1131 +>> +stream +xWO69E#iF#x,9)4JRJ~u($-I?t$K쵒v6^{GH0h_OoOzZ{1 +!cC??A_Y-ES`D0j#?0J42P. 3QYFƈYO%`rX'k%Nk,(^G13!ؑu!︬H!ڝ|uM, TR R2p0h:eyBd/\Շi~hFqfs?S*.%J2X 1"ud)FmQ$^ 5C߆WX@@ 4[L%3Ñ}={\]Hs63Eoc&䄺>LtfqN'y].xѻ%\H.J{z,Idr;N$I1(A(_E'Fl[ސ1=v.\vJ!bBRo~|PMJ?3 + +4 GLw$ܱ{#l;x}<;Bg{\77Ww3˓UV/ rZJ%SfcZZ'}%ɰaE (di h_vќjMϘM&Z%jk4cN%SVTSz7PMʁ߳O] m +dζ!u6m*v#SKꌘ.]9tݾ +w9}=?x9!HMnOktP+9H29(VJтq޹YpnmL>u> +endobj +1221 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 771.023622 555.889134 414.499650 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Manual/Simulation.png) +>> +>> +endobj +1222 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 414.499650 297.637795 399.485250 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Manual/Simulation.png) +>> +>> +endobj +1223 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 179.618850 39.386457 164.604450 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Manual/LastFiveLAps.png) +>> +>> +endobj +1224 0 obj +<< +/Filter /FlateDecode +/Length 1393 +>> +stream +xX[7~@etCB$ޜ %j$P|v7H}p @A;*g`^08酔4 j-h ntxwp R*%P1C$ 9LhfU!Q FR V— +`=6iz/K)-M +!7,b //ؕtկjFd9-M듕&H[iIy7$E;郆( q;)6zlF{lst#`@yoH~ͫ(t^u%̅g0^IY3OA=G*t}{Q^Zxm9z4;KtI4IgQ9FPya@* b. :Upi\2A XUݟ)8 +*KyUc?eb+:ޤ/$;ݱƨQ6AlL5f蕐$E&'\Pʹ'F" U+{\5L-߅5Y&GzT$L׎ m`OFmd +ӧHf39ѢTZdN.eY*F4EgM?vfNyf u[0@jeZ mc\\øYIUSK:0̵yϸ2zX {RE×[K_E?Xi-%>;  +2+zjNz=UB[ŕ]|'і9u%b]G 64^Rh2EuӨȨ)tnlQ+)K(!< +tU,zZjߺ Jںx'< (7mpJ6~f`lP7sj:xiH=TQұrs~K;:P[/_ +endstream +endobj +1225 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1224 0 R +/Resources 4 0 R +/Annots [ 1226 0 R 1227 0 R 1228 0 R ] +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1226 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 771.023622 550.886457 514.523622 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Manual/LastFiveLAps.png) +>> +>> +endobj +1227 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 514.523622 297.637795 499.509222 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Manual/LastFiveLAps.png) +>> +>> +endobj +1228 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 207.526422 39.386457 192.512022 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Manual/Battles.png) +>> +>> +endobj +1229 0 obj +<< +/Filter /FlateDecode +/Length 1413 +>> +stream +xXۊ7}gCde !@ 318CJjTnή]vgZ*IN][0I_0 Bޙ DG&qTh-CZ^J]I BN9\)kAMjx짃M[e0lnX@.l ֨(s.|VLia\&Q H +L//moJ9EB L{RI>[9-y)<2~0t2\@ -y\ڋΪg l IcZg9٪^$kW KXd+rI'^M`+s56C*i5*n8(!s$p|V%NpayT=Ȯd֑<\[ܱƬk 8fKS`ѫjjF/EZ{.NڬBvqړGCNu汶,b5ٓU9o'53Jq׌JÊ@. 秹n–4`d ?$G9]Pȵ89T]0R+x^rO-JO/: .bҭvc:ӱ4t +9ҥPgj:ߵ؍. +endstream +endobj +1230 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1229 0 R +/Resources 4 0 R +/Annots [ 1231 0 R 1232 0 R 1233 0 R ] +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1231 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 771.023622 553.136457 574.523622 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Manual/Battles.png) +>> +>> +endobj +1232 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 574.523622 297.637795 559.509222 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Manual/Battles.png) +>> +>> +endobj +1233 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 267.526422 39.386457 252.512022 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Manual/DriverInfos.png) +>> +>> +endobj +1234 0 obj +<< +/Filter /FlateDecode +/Length 1024 +>> +stream +xWM6 ϯBJ"%9mi/ LEw -ٲ=Mkc_(؁?E&wߧ@ \G=\0! %o|S0DNn:g;|=~L1tđ]_N8];);NZ Uacwkifk>ړ>=8w8Z @_ zN#XKE2HER"~ןa_ӟru dcY:O8a60GD~hN> +endobj +1236 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 771.023622 555.889134 536.316565 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Manual/DriverInfos.png) +>> +>> +endobj +1237 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 536.316565 297.637795 521.302165 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Manual/DriverInfos.png) +>> +>> +endobj +1238 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 359.897365 39.386457 344.882965 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Manual/LapInfos.png) +>> +>> +endobj +1239 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 359.897365 236.636457 149.147365 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Manual/LapInfos.png) +>> +>> +endobj +1240 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 149.147365 297.637795 134.132965 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Manual/LapInfos.png) +>> +>> +endobj +1241 0 obj +<< +/Filter /FlateDecode +/Length 508 +>> +stream +xTQk0 ~sd[ G``n=z} \d73qH}%Gkd/M%K{rўagpYr1C. IC4c)Fݻ!#f͞(`*\g]m ?rhjnِ2SxmRʜL* cf^ +^!BAe.Ib?X_Q`Zmh:1֙K|tW_|xAҰop_7ΆQ SBTzBS^3S73"!pp#I;a# UIǡshzڄګF-CLUvb + L$$r +!YH^☡SY6[}#p0T{\{E.Cp-&Ӥ:ޮ('(&Eѓ)VldE>LΑŶs<PUb,Z +Вn%@ɮw0)Ob.(n~ҮB=K5> +endstream +endobj +1242 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1241 0 R +/Resources 4 0 R +/Annots [ 1243 0 R ] +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1243 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 743.669622 39.386457 728.655222 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Manual/LiveRanking.png) +>> +>> +endobj +1244 0 obj +<< +/Filter /FlateDecode +/Length 374 +>> +stream +xN1 y?#=T-RiP+!òzhK8 `{3v G/{.kRMs-zAJIT&HRϷF-#ZݞsF}W(9z(B~$^f͵=7ۆ@H :n(%-D޶eZBnU--p+5Op}yu"BcinP1_W 5X=I̛%?ϫ<]oGI`85P鐗.kx|e>PW`z5D.` "rpǖ#a/) +endstream +endobj +1245 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1244 0 R +/Resources 4 0 R +/Annots [ 1246 0 R ] +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1246 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 771.023622 327.386457 84.023622 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Manual/LiveRanking.png) +>> +>> +endobj +1247 0 obj +<< +/Filter /FlateDecode +/Length 2141 +>> +stream +xZK7ϯ!^, ;6!03%IJjikVէ ?ӂ93 <;4>SYҚk/V8&*\TVۧ݇ݿYέR28w%~{}/۝UTAS\L:~A*)C.\Vr3 UP>#-0/Ҙq&-S6$h}fGnfăfzW;˜3<_x|VEE}aC#\T;12u |<<'c?O6  üҺzWl5[gO_%k(zX78_Z5zBWkUǁa|:U&F(V)ȚxEE2QcFl4/Wgn͐ͼsPP:tfMT+ O!\¹|7 ֺqNؽ~C?1ڛ8"09̞EVNA~& f" 5f#vBTZ'#X0vVFK -DD1hrIATa<${Jz@~I2]ygsIP:g+!e6<=$!G~YXfpL5(.QC1+5N9{cSN@)!Bű c@д9HXj=жJkZԯ1 ˒"XѴ4dDd^4=TѠZ +9Q:0Px΃R))D7yB6JCH>U9ĩ #&H`1w8yHDBFYm0QOĨS(w 9LxŘ ʛ'{0AL YqBq"l#eDruүw3;TFxc[ +B0ɌRfq/8wV6e]}bWe.5_K 9U hS9E&FbBe.їbEQgzEL)x__=9HBK~}zbR{CٱIg +T^Pmg;*xє!c:k^kΎ&+w=l=0|}`O[Vnϋ^k}JB *8jߍ"жۙ,P 7M+#d`)tF44:H +))Ĵݓ>4*o75VGF}$fr9NsR`7eRYF?IR¶IpHs[Ldq<\0n+pwwfҬlD*{Lڄ =Qsgଘh+)L6C`CD24$3{<*N@ <|jaW}cZ?hVQiN`1,-Y +wU66r ̕s[ܝQrlʹܳ)?,= %1L'} yN +\SA>w D4NNIvui4ʑp:6krNdi/ +t;VJtw & E首-BO\/pŶCxhЉsRtmݻC{|b:Tj3Qw8ό\"bWmUѺ +!Xj.~tkٛ٫RSxm#7P== 俉7*r U`|O{O# BA(zvw܆݈q4 LEAN0*(#"%+QMl#4Q,8 +(P1swq I\o[?D +endstream +endobj +1248 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1247 0 R +/Resources 4 0 R +/Annots [ 1249 0 R ] +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1249 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 771.023622 297.637795 756.009222 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Manual/LiveRanking.png) +>> +>> +endobj +1250 0 obj +<< +/Filter /FlateDecode +/Length 4162 +>> +stream +x\]o|ׯг=A@HK ȃ$rR%]N:; v^j=C~>wגOZ㇛oloؽw ?:՞C-=M5oz-Dlq)F?7|qf[콴L O?|q't=zSq7 6m(o?30,3TL,b!Qlf8 V'+Ww˶ywa% +t}7 uuvm0)Bሓ\8nwC62l8쳩w\`xބIIŅIIHMS„p-a Z1k&k(pEjQnI8nt%Fުp@#\.А0)41EEn0քzI(4۳+ҝpSP;Ɛ܈7D@$ #SH[*ՁM.ZɒSrܝSIK.&("W=5;R-+_ '\|.C"S-]r2ƂE$f.H]a"{"@6ČVHČ|,g`.-JT@^JIYpYHS 1ܔ/ +1/ +1{* 1[!|)*CRn+_@0-)_@RFC^j!l1'sFѲC +`&SY(@5/(L;UNd *_P1@]"POa@L!+q\/u0Yq@(:[ܩ$|&|H Aab%w`]r"f `ޕ/ՋNf;u0u0@/WqHDZܩCɝ:8ʆclA8Dr"$w`04J&Y:α8"IKAOSzA:言/(p$w +7ɝ:+_P+`ZHA&ST6 y7 aVqHDHACD+A8!f\A(N4:{4+P4E"M"lrQܣ3Qh,+bUqGW=:1# _D @T6e8IAHe@!fdŝ|-|E$ftڣ97٢di/kΒ{"ft{"XL"3P"0U:KU: â|D2;t0%B̩wB{%fTъ{%fGlP(`F˘TBYbK;tj6喲!ft`{'fDމu0{l%8^DL*:jU3:W$`MqOA4̊{!T:FE!$ +q8ND$S!jJ=Q&lN,SjZ=Q1j1!QaVu.SQHhYͫ' e(~%w zɝ:~l9u0@UR+eCA.!%`u0XWk +:$wwܩLͫ'WWk +:pC :+ɝ:h/HTzjM!QͰNDfܩ֓WOAkY)$ꠡSܩr%wꠡ\bF|AރC꠵.SNjj^PZSAˮW%W+uWA~6dyTk +:h +ޣޒWA55ɉLCy95^1Ǣj fpb*Gb6TzS8 lZSk +:v: W"j^ꁃ<8 I#m}~ +* :~;?pzjG7[`1;8ۧ1vQ'ȱpOt۷_ogmqbksV ;:A{r'IHπRvtc>ǣS<=s|* >_?#>ry0Dx,~^Qc4^r:zgKN7ͩ^v0xd1Gol9{ ۗc̑UOՈ njX1Eįϵ!'v9o ٧m:/Q5:Dр;6+Wpm\ȶQծtpҐ&EgLιoMe=!@wQW yuxqW#Jy 'G J /6^G6w$]2ϞHv%/=X|'. ֿrvMe/>>l?71׋NwDY̳|+ U(ۇ3rk+o86!"Ӎp-7*wϼ C8?Hxy}y[Wpy~:~Pls_m|˵rZ ;=|h|W_F-!s]ʥ5͹ٮ`>3eWh2ւJolMT؞zY+Dߧmm\t6h[/mdi]O*fT!KOdKA }IXj ,ˏPr* v¥l=ck,8NV;u\Y%3v̧*ie8EF)B{k ,$ LF >Z0!Xo_Z}9eW&gl?0i0c!rky!.GwɐĻW]T\9vy'2 P \6pIXg.~;׫?!'朣>_ =;?ZS=L$\j8_LQ[uH!lsw{YjaJQ%ˑ#^vyBš:>:̲.}:yGe.cՕz5 c*|GKRaw +3%$xʐ3|=/<g$caq~*B]a 7^/9oTi +endstream +endobj +1251 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1250 0 R +/Resources 4 0 R +/Annots [ 1252 0 R ] +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1252 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 153.835026 39.386457 138.820626 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/MkdocsExample.png) +>> +>> +endobj +1253 0 obj +<< +/Filter /FlateDecode +/Length 4055 +>> +stream +x\]|_n/ ɃP`AN @>`LI2|ۙ^j;.? yk˿~zk͆bb=ktzkK ń)]dǧמլz !kLp៟-\={W۟ +"\J.̦&0._ +>+]KzMuq1b\~j;kѮ1#ȱ][?pٵw8tr9L<&L +LRsnn~nR & +5G0\kfaV"]JQ+Z zuJ*ҕpcSVZ 3 BS1-7SZ&%$&" ף" 7,xc2C؄"ܰx]֘ +/ ?æ ܀ %ً O@̩49$r-T=5=3d!+_ ;)_$`K k{rXTHČԥ|CPqĜ)_81c// &➁$C𼀼K|sL =gɽsMs,Qs(Ua!f;s;sC}l9>\n;ϑ}$JT aӈ-(_4bNURs4ɝ +JFqR/|AdBTܩ̊;e|AuH䏈H{z̊{:fE | ɝ:juHL6HDJ"#uC(SS;uY5+_PS]:P(d&S# +_P#[:k *H;ua(S#GZsJM:HANsVbUR%w ħ)_PCQ:P)_PQHAn;uiWI:ܩMrZzS3ݔ/HY!u#S S-KeC̘A(N4:z4+i98DRRw,a➌Q +_$#Ų!Xwo؄@H :2 :E.ehEr$w ۲E$ɬlEq>_KArO uVHČE"fƪړ䞸7ْdi/, 0ל%w'fPܝS1LBL̡tJTzNT<,A$.CS]r/+_bFWČ0T+1V+1,w 1eX2C Kl:rM;tOj6喲!fN̈jŽ3n)_Ps]:$AEqw꠷;uk-NDի:)NĂYqw j7ݩX3WND;uNx-uxN3&NdܩVA :Lp iS!;uNLվS\V' +ND+SQKCep/:Y(bɩ1th])8u0IMrfj_ݩu8be%SHTԙSÊ;uErZwAkY)8uP)Ar%wꠡۡ C 1s㽉:@>fަQ\5hidz*vqo0NXX;kvth7^>zwm>mikw"׷8a?]LgN[l}a7(|湌Gf#Q9r%G 29'̃?l }n]8k7t>c O:Oo}~e%Gnqpf'?3`DulЅ:ltFM$ euRN2sBȐF( Sr˨.:{4Fn[l;o^1[j|73qYƑ|&Zbb1a8u_:Xs4O7"Y2t6lkG?F /}nI1s*X/ʾVDȟ?F;Sz;wqy%hl"HWµZwTۋĻnU|ũm >xgT2Y{:\EnP°Cy] ׭oϛv1 m`)yez:s9z:)[Nl=.!E2§lq]ԼھCQCF+ +wX}e:B>k;+`C5C66^}Uv ;_>kJPtLZ\9}zVU 6v+K;'8(Pv%<ƻ5sиMz;|X9KBQ=Ŷ_6|hCG_:只ωڳ}]i S\ zV~Ha8`Cg=<1e|2@ TD)yeC`xV,c7ؓftqop@'۫or.g Q }3m-s_C|\Ố|mC BQX+??oOIg;?Oѫ7o> ]3j,:*Z2-9^LX{mpaB&T~Q?G4)XkO] B3ɼ k,=_KF(Bl 9cQC@ئo0d-q +endstream +endobj +1254 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1253 0 R +/Resources 4 0 R +/Annots [ 1255 0 R 1256 0 R ] +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1255 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 771.023622 555.889134 517.798743 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/MkdocsExample.png) +>> +>> +endobj +1256 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 517.798743 297.637795 502.784343 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/MkdocsExample.png) +>> +>> +endobj +1257 0 obj +<< +/Filter /FlateDecode +/Length 568 +>> +stream +xTMo1 WƉ;R$8.8춝%|dbF؞;`@ ewOxGU#v}+DrTRl :d.Q11z/i*ёdBp J`~y4W'p>2$j0d z40bCfD{|2W_>}Ƃ J帘އ{8y(Nmv}:wƫ?8 +Z| +=.wߩ#eV |}ƥӆ-=ӚTT[ik ]*'#f{Ux'+ _=\ +1mwu#G*nbT|%U j@x+n}A(IdpJHM5r{qZ3 +QS7qGztHj2w]!=;'} Uj*9jiS 56^;6$f󮰗3iyzJw0J:ɴ?\@VRAr.yVhVT RF:]6|"n;7U@ +endstream +endobj +1258 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1257 0 R +/Resources 4 0 R +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1259 0 obj +<< +/Filter /FlateDecode +/Length 387 +>> +stream +xN1 y@+ *U=3C_Y[+Ď{0&Bq3$e=N>C(rVըh rRS)u WhZKR59'*cקp [<ќø|J*fItNsj;6ƿbV]ϝϞQF)IGB8 i/_:]LAxYW{1,!JU"C"ןsXS#S~.U }nGYǰ,> +endobj +1261 0 obj +<< +/Filter /FlateDecode +/Length 394 +>> +stream +xJ1 }1i&eԋ0 >)&3śN'3mi( Y&5'm/|'V^Čg%",P5> +endobj +1263 0 obj +<< +/Filter /FlateDecode +/Length 389 +>> +stream +xRMO1 W4؉"= @  -ZR, V؎{Fpa2*7>@R=觻o|CѤJ FEKJp$Pӈsbb"06{} +'kL£J}OE,NE~R-b"뱸ysβ#lף<춻 &tw1clzG(U%# \qp?/bM8> +endobj +1265 0 obj +<< +/Filter /FlateDecode +/Length 2397 +>> +stream +xZK#5Wy%i $8XiLpa/a]n'3l6Im׻*Xx|}!^ }pV/ON9_?_' F:ʹ‡ τRŋJ1nO?Oi 9ΝwR2#&!ӗ?[hj{HXAm?LZ*h.r +\]$Ϝc{f]fL:\Hś=E,_eI_E~W9˜E1_?T^K^?~n"~~y_;XBy&/" +BEJ%Q2^1eoDY2jI"}nWkZEDk䶩J uQe1.uLD٤:uм]޲~u4W/O@9H&C5u#UP*6=uW% +QUb"jLq]qXmhEeK{jN͗`@>כ\׮RhBVg$W]Q$ +l H)~F䈮̺?_{Uős\JQZM;`,$ +vdyH#X"YP{:ͻH^L#(`0GEpf#o0Ui +I&]c̓S{Ƒ7p}uwe_W(iPj?.uNvF=W (Y\e EAf4,s``C#DczPYu-3Wf,nBMu)J䊦7`qXע銀K+ś<. ghzh 0LTm.f< Cp6qfed(!!B`fxE7>B7:H$*s<<@vU@SMjcy٢F1QWjOK|cDXC5"@ T6ޛyֽHKl +QV&´Yv+ +M0<Eع#xMh@fz#pw*2uTiwD:jmpH!a +A"!Ѯ*P#+An $wwԖİr_-DM*u,LM_ 7F|"k3XlboFhnmOiDd>t, =Wt9K;^GFyl6ǞzF3aNE&tDMG޲|5}seE/< )tQiq ѢijHX95A8Pǧ(;#b-EQ93:;OGu֪". 3ew87?p*jQ6-! fgm DYK׵)7h t$U##Htjbni,ٯg!|i˦ VfRͨY%P'9E_(MȚ(x'NPX +KeaD %Ipj1a ' uz8>X'B$L4^9$0_@n2y<@|,%C!Q|`X䁥8g.Q)3;uPZ$¾kT+ĈxGj O`:]sk.LA+f]nO> + QS=pִ>CAj&<VӮqdY_ନQhI]+Wyê.M{_aO|ӪV-3L[`*rb*x(М"2)\Xm2Dȑ.umx*S - f?@ bAD`51"O ~Eʝ{,&aav_TC +endstream +endobj +1266 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1265 0 R +/Resources 4 0 R +/Annots [ 1267 0 R ] +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1267 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 135.094122 39.386457 120.079722 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/BlackToWhite0.png) +>> +>> +endobj +1268 0 obj +<< +/Filter /FlateDecode +/Length 2608 +>> +stream +x[[o+~ׯ( oᇠm{>Hk+(pK.g/O!kEqpKQoBÏ/g>̯/Gk;FRx6ȃǟ?0FY.4ߜ@=\Ȫt˂)8 d953Kg|#~K4'^O'yEB@3X4p8YLX ۗ”mѩ`5F:*/I,r9|'AIhtPI +37׉_!Q1g6e0~>|ћƢ"1M"$•H"8#WpIs.B*$!8^2=7H|GA(B}Ɏ<3-hrMcr0w/3dF Z`CKLGlaz#0xaxqz> I5RPvcX794G Y׉[XiX#5F~ Xg9qň 1:Ԍ4Z5 bOdWo7Q~qVjڇ5Ӥ&`obͲJj$!ɇhfߖN5E,g/*Ws$&mr&Do+>a񸈑<}L̫:&۩U8F +Q"R +Mڕy%a * GP4l$k3ATƆf왾ܡ4զ 12A{e4ҥӈHd)Ȍq WPXi&:U!{"ݨ&,#uD.:Q$]Qzh?{$%ƙ]"D:S \IKrh#mCn繼_KCUXf9o>0vExU* "*>Gxj0&'$Xso0Z+Jܜ)ͯ\. `BVf԰W'"mQMaGpԽ L|jdb.Wnx{M}sTddBkvz61E :VN6xez;\Kb3K[2tCgr>~̬^W9ST/y@^s8oDoh4ΌW8pf4N?S6w/f<nu\:*LǪzxO[AI3f]Kj.2W Ыce,V#=wcDd{4Hmu]=sO^^;앋&9w*g!CrhwDV6NwEG]lca ~Z~Վ429|NR\KsrWkPg=Èp=uϮSSi[;mݚ淺]%AtՖw`!N^~udC@cipX|{ˊeѝW) U{ʽt`e-D +h$f~92{3WwG"tx0njtf9|_PSq/.N˟W)_v/-xۋq1(j4*پ=p׮4R}r}N~{|Ϩ-T<oT^?Ù1=É)FoW~+~f(<겋ѹ۫n9`0=ʏ[u;YB̽14lkWհl>Z,|? cBbvd3 ZN6M&ЎP|pkz0.ޯ:qxhב!ZyzG:^-O dBFn{W|m=YtSJw>?ґ֬ׄ=uy|6$Vr;-(8Mtvxh*zЁt/"ę?%mHAXe "N嵐Y{[v}|<5`+&=I?B9;\ONΧgU*Vtmފ4Bnxq 2,f:zOJ"$ӳ(kW^.%]G30TioX/Is@>ؙ69 +endstream +endobj +1269 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1268 0 R +/Resources 4 0 R +/Annots [ 1270 0 R 1271 0 R 1272 0 R 1273 0 R 1274 0 R 1275 0 R 1276 0 R 1277 0 R ] +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1270 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 771.023622 286.886457 720.773622 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/BlackToWhite0.png) +>> +>> +endobj +1271 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 720.773622 297.637795 705.759222 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/BlackToWhite0.png) +>> +>> +endobj +1272 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 638.194422 39.386457 623.180022 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/BlackToWhite1.png) +>> +>> +endobj +1273 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 638.194422 273.386457 590.944422 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/BlackToWhite1.png) +>> +>> +endobj +1274 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 590.944422 297.637795 575.930022 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/BlackToWhite1.png) +>> +>> +endobj +1275 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 508.365222 39.386457 493.350822 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/BlackToWhite2.png) +>> +>> +endobj +1276 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 508.365222 241.886457 463.365222 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/BlackToWhite2.png) +>> +>> +endobj +1277 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 463.365222 297.637795 448.350822 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/BlackToWhite2.png) +>> +>> +endobj +1278 0 obj +<< +/Filter /FlateDecode +/Length 2993 +>> +stream +x\K#W&Y|9 lCIb ARdVY/V}U,:KQ"9_~9Iɛ_ j +UJI 8 ?O=K?+*`~E yW\hX 4k)?>TeYEZZ!O*+ϯ}STlq\g P^roc1-c~xm0-׏ywZrM~fk׊ڜ=vi?O>?\,$$0 +zX4/lą|-qBQ0?7*H2f +E:!tV+_QVZkTv,=]5X&A oɓB,D)u{bJШR+ٖDt[Us1 +}6ǚemjB_gWTdܦu[}:2devXGq\8}?c))5zRG0o'_cDc\m,%o2~aJd0=C߁C*Bt>7\|sou}$ HNg@!Vބo#F@@X +|CnX7TyW, 97ϋG`e]O@ȤA#=W 䤊I.={gnxC|=8c·aa` $*[d[l0B)=<*~^zVtAruTD}>e"㻧͵r&Lu#Wk,CvuoAtUD|)0YxzyTibah-O[ӎwedjax|v֥=\ wQS\qv+AW2SdH(Cv8$\]2:O L~ӱ,scZ 0|܌Shb""~_q؞!MehϐF(zdRFg[Cz2l~H`C$ƼI9!:m[tHc#tHc{Р-:e˱Y>u8v1]|ڥO1PWI}.uԬK9N#Qk^NDBgy󍧹L:0e[8ApKoIr_c%t0bMZ9~M*;ֻWfKmvD&Uഁaԉ[%drɕ|ߙE+0{ hwYX'|~ߙN+X6^;Nz 9CƩz|?(q0䭷$ڽR)!̤@~uǖÞ-UzHjI2Isz;s0xxf4X.c♲ؗw.4;'2]wm|_[7+'Bt=Pk[ާ8nLw [MxBO??2% @" a:."TzB`)!i7U09F(7βOh '(;!1l +endstream +endobj +1279 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1278 0 R +/Resources 4 0 R +/Annots [ 1280 0 R ] +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1280 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 261.036066 39.386457 246.021666 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/TextRecognition1.png) +>> +>> +endobj +1281 0 obj +<< +/Filter /FlateDecode +/Length 625 +>> +stream +xUKo0Wz<*PTZⰛT㼶j"'x|O߀=4W?.x`Wuc%Sv9 +z>"zJAӥ슽d8=AfO|pUPV,5(#PaaMfe]Xk|zM:X. g:k8{ɪoZ6^)`NNR!%Ӈ9(hc!0t_w67w[\D̞$aOBytQmÐCH6IA`|?ܓ&˸^>7GJ6f7^슏pl:W듿C4Ŧ <4^㮱umL 񛍺6k¿n[_/my0*.q&Mȯp;s:5)X'2&뎴>l0Xk`t|Iq}zM'd,hH03ϥ$K9}0J;I.sjry&YJoj:Μx9F{h }' 9R(C&0>hmbe/[Uʩ@}VϦv +endstream +endobj +1282 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1281 0 R +/Resources 4 0 R +/Annots [ 1283 0 R 1284 0 R 1285 0 R ] +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1283 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 771.023622 555.889134 294.611709 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/TextRecognition1.png) +>> +>> +endobj +1284 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 294.611709 297.637795 279.597309 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/TextRecognition1.png) +>> +>> +endobj +1285 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 197.018109 39.386457 182.003709 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/TextRecognition0.png) +>> +>> +endobj +1286 0 obj +<< +/Filter /FlateDecode +/Length 743 +>> +stream +xVn1 }ڹ؉<^*- 03t+sdB*\cST W(CBdrj1=NكM? 1c{znfԠ~OGqT\O[ΜR8;% :"pܜbLf؝<1>cp\ף_yűz+.be2y}XDqI6:6jiP}UК$8}Im?86 %`4/}J(-/=ee=7{6Xsֲ?<=^se Ge-P-L2wE2*9_> ~cû$&[" 9 *h8wȯ%RY4^. Y2Fm+?]lxS(_fR+<q"CAYgS*LRz} zIPe1ҏ +endstream +endobj +1287 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1286 0 R +/Resources 4 0 R +/Annots [ 1288 0 R 1289 0 R 1290 0 R ] +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1288 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 771.023622 555.889134 297.840524 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/TextRecognition0.png) +>> +>> +endobj +1289 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 297.840524 297.637795 282.826124 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/TextRecognition0.png) +>> +>> +endobj +1290 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 151.450124 39.386457 136.435724 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/TextRecognition2.png) +>> +>> +endobj +1291 0 obj +<< +/Filter /FlateDecode +/Length 739 +>> +stream +xU1 WI'R @Big./a'&"(d8+\(E3&g ŠNq{Y*)mr18cci4d=`9d%e 0 +̟V2,ip&|\ynbU22WfzXXPBZ)GûϷweÝjv݅dC@4SsQyBr.rC7~7G<6/}Rh-Fns[_}DO-گDx( -G.8L)Ȩ۶% KL i(Yn[G/`^V2eQs/ Pdoه +endstream +endobj +1292 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1291 0 R +/Resources 4 0 R +/Annots [ 1293 0 R 1294 0 R 1295 0 R ] +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1293 0 obj +<< +/Type /Annot +/Subtype /Link /Rect [ 39.386457 771.023622 555.889134 291.606646 ] /BS << /W 0 @@ -16537,7 +17983,7 @@ endobj >> >> endobj -1181 0 obj +1294 0 obj << /Type /Annot /Subtype /Link @@ -16552,7 +17998,7 @@ endobj >> >> endobj -1182 0 obj +1295 0 obj << /Type /Annot /Subtype /Link @@ -16567,32 +18013,32 @@ endobj >> >> endobj -1183 0 obj +1296 0 obj << /Filter /FlateDecode -/Length 750 +/Length 752 >> stream xUn0)gƖ= PTZn*Z_bmUȱc{~70N7Ƙ~BNcSo(Vya 1BLF ZQ'-D'4|~ Y^ZqN-AHy> W#Xg ֗ȅQѲu(<%Xt5 W?cUCb?&>d2~k gyoh10ItW ?~@۵po:z. (PvuL-jm2hCoy 6…E&ɆAISz~Fuh<űHun|3Yπv*H8>p/zc?ݾK0ñ~[$.lɓYv0 s1ixq$ rx=s E}ފQ9寍g^ 69(vlEyhJ́csu=+,U薎. uYØV}RFΩug0z &M_=KޗDNkBz4kDMF"!j繁 -]fik]HC&]bso6ngy!K)j>kʹZ+mYΏA.)b眬RpY {<;48Ƈ]f(K4\whezČۿJ +]fik]HC&]bso6ngy!K)j>kʹZ+mYΏA.)+7T[YwANd51\v}+W%GQ]-9庻Ds.#fm endstream endobj -1184 0 obj +1297 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1183 0 R +/Contents 1296 0 R /Resources 4 0 R -/Annots [ 1185 0 R 1186 0 R 1187 0 R 1188 0 R 1189 0 R 1190 0 R ] +/Annots [ 1298 0 R 1299 0 R 1300 0 R 1301 0 R 1302 0 R 1303 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1185 0 obj +1298 0 obj << /Type /Annot /Subtype /Link @@ -16607,7 +18053,7 @@ endobj >> >> endobj -1186 0 obj +1299 0 obj << /Type /Annot /Subtype /Link @@ -16622,7 +18068,7 @@ endobj >> >> endobj -1187 0 obj +1300 0 obj << /Type /Annot /Subtype /Link @@ -16637,7 +18083,7 @@ endobj >> >> endobj -1188 0 obj +1301 0 obj << /Type /Annot /Subtype /Link @@ -16652,7 +18098,7 @@ endobj >> >> endobj -1189 0 obj +1302 0 obj << /Type /Annot /Subtype /Link @@ -16667,7 +18113,7 @@ endobj >> >> endobj -1190 0 obj +1303 0 obj << /Type /Annot /Subtype /Link @@ -16682,33 +18128,33 @@ endobj >> >> endobj -1191 0 obj +1304 0 obj << /Filter /FlateDecode -/Length 941 +/Length 940 >> stream xV͎6 )UC0C`(zxꠇeɞmSdZ[6E~HQ N)c|^&1ݤ|~Oe1QeАMYMZ<^ޠ1{`Bes:S` az3[mԇJ~^r0S#UgՅA֌9!2Zdo?t%8c4J|,ĸQ`|tt٤.dᗟ~w2ZǤ_=p5Q )D"=D*4ӀD#ҔT[c"qm}n=G ~n'mAk==!\e@_;c= t[ۜ|hh9-x@ה ZV5-RZ( Rawf-eAfcو,g8,Af$:AM=c/-cMU[p̜zMxeͣLJDσ)1lܕ£ ˞&]a% {z 0:weݹв' Q9dncߍfh[ ǻ@w"w2x  0|o$tg{mQ'K s;G>"w\RυSfh8.-VnH%hO܊3@6u#ԀYrqe7yv- - +F Q־Z?dˎ!|>g{mQ'K s;G>"w\RυSfh +0 5`M'n E:`j,Ee9¸Yɲ;?5 endstream endobj -1192 0 obj +1305 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1191 0 R +/Contents 1304 0 R /Resources 4 0 R -/Annots [ 1193 0 R 1194 0 R ] +/Annots [ 1306 0 R 1307 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1193 0 obj +1306 0 obj << /Type /Annot /Subtype /Link @@ -16723,7 +18169,7 @@ endobj >> >> endobj -1194 0 obj +1307 0 obj << /Type /Annot /Subtype /Link @@ -16738,10 +18184,10 @@ endobj >> >> endobj -1195 0 obj +1308 0 obj << /Filter /FlateDecode -/Length 2940 +/Length 2941 >> stream x\͎),vpC'Y aFًRdniIɻ@xޝ&٫ "@N'$'c}Wƻyk2޷ur-_4~~3YKv?Qh\um,tT^\iqg@Z>q-^ӡ\,gpeN譴Yj.T撒 E蔹$**YEmr(J* @@ -16753,22 +18199,23 @@ S 6]|*=EZ0֧1菱j#x:dmk˖,L*mpP#ao. FrXjGvm!ƮvavWߺ؝,/oTL^rMt)rp/CZ+#y]NHk`z{Ծ~gcdxerҝpIgW;v>losӫ+U1=Ihq]5PBҸ\>?vXJ:lԴa,T=?=B0,ȡ6Ze|{,bG2li9ݓg5ܟr?8}$¤3}ޤϖzl!.i$ C]{'#!pP/ cۈoV\0Kx5:=[{{e$,/;޿jUv=3gʭNJ5$o8?hQٳ"a)((~\:-gO|h݋y+W~Gpyyy 9 ^Hry?Z_@e㊐ZbH9 ku!%99?]arI{;h&gjk$)K9>AuιNrP Y88sɤkXLZD / 1veK#;O}b48/ǣZnZ~Ez~p [dܾsb@2n'iԍ - V[О{\x}w"Cl<Kа5o1d't͆Q[ }TV|X>> endobj -1197 0 obj +1310 0 obj << /Type /Annot /Subtype /Link @@ -16783,29 +18230,29 @@ endobj >> >> endobj -1198 0 obj +1311 0 obj << /Filter /FlateDecode -/Length 791 +/Length 792 >> stream -xVn0 )SEI% ȡvv)a4.v؆v)[NRljÑ-HJ \(Es1< :Db!< ,L6 l<#|>?O%Xr2-BIz??7{<Fv4Zn*gNS68M9 暢% cPb@7Rpڧrw/=K8\NpCI6 %Blʑ7;_ T}7_73v*>/O&DhK1~dX-:RLg) fq·JjTz9y\Z'D4N+UQ $jJ%HIС#߃ 0,$+ԆUvTy%.>`*2'.s+VZj'/_)>fj{/'.A^ wU`W*U ǃFU:W%,賎mrzedž9+\M|ڜ%Z%1hqY)!vr,:no!b`N/oKZ[؂" e[`|jqkH]ǴbBK&mri72h&T(8Z: -Z{H*@jǤtejoc![z^T| +xVn0 )SEI% ȡvv)a4.v؆v)[NRljÑ-#?J \(Es1< :Db!< ,L6 l<#|>?O%Xr2-BIz??7{<Fv4Zn*gNS68M9 暢iK>:7=áĀnDO%'_zJ, g||@Ekwu/a:a#dB@[&#?j9xFfK:Y/&;u~yGJhT"U a[&'s\ޫ}\W> endobj -1200 0 obj +1313 0 obj << /Type /Annot /Subtype /Link @@ -16820,7 +18267,7 @@ endobj >> >> endobj -1201 0 obj +1314 0 obj << /Type /Annot /Subtype /Link @@ -16835,7 +18282,7 @@ endobj >> >> endobj -1202 0 obj +1315 0 obj << /Type /Annot /Subtype /Link @@ -16850,28 +18297,29 @@ endobj >> >> endobj -1203 0 obj +1316 0 obj << /Filter /FlateDecode -/Length 661 +/Length 663 >> stream -xUn1 SH8KE !3NPK8?. $Č8}E@ш^5Kuz =٢nxHd\>f's$qOӇT%Qq!xƜ t}zf~L9jʅӤT% nNF;JfЮLh_}Y(-=XN1(|R{ndWcرX)'  = yxݛ7 P~\O6gwL'=Dfbm F.khrλN+5,݆{j=d ; 2.A10/8P&0]s0w`]cO}|M@oD{0cfmg>@t4J4 Fi@6@aȺC;KΆO2`lU`ԓEtQYkt|u*狳kqř%ͭgcie2v&FDGvk=gXFgJzG5=#|Tw49u3VȈ~zueo83N>GIE)M2{ ?ЮouUȭ*P/qIuL +xU͎0 )d$i5.+  qhg+vy ;Ih6IcWt ԇ$"sr ')B+'#B#{>L&=C ,d'0]=V5L7ȅ,3W9K@܌bw ]1Qļxa;",Ih. +9\cǢ%{!%9V;o߽xsq>]$>͠UXszZVMHYG5DL:콴F'ݧiMq!fQ&[>(*fKSNJyP/9;0.GL~ds#P7Iuр1qSr&mg> gc28`% FqKK_jpic#0D]Zġ; ΆO<8glYgԃ">I!{>]XgZ[SOGdBc樉$9:/j e[|VXEGgˡ, {D|T5?2]k7Nv3)RIk KX; yujc(W~f,̸ MuP endstream endobj -1204 0 obj +1317 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1203 0 R +/Contents 1316 0 R /Resources 4 0 R -/Annots [ 1205 0 R 1206 0 R 1207 0 R ] +/Annots [ 1318 0 R 1319 0 R 1320 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1205 0 obj +1318 0 obj << /Type /Annot /Subtype /Link @@ -16886,7 +18334,7 @@ endobj >> >> endobj -1206 0 obj +1319 0 obj << /Type /Annot /Subtype /Link @@ -16901,7 +18349,7 @@ endobj >> >> endobj -1207 0 obj +1320 0 obj << /Type /Annot /Subtype /Link @@ -16916,31 +18364,32 @@ endobj >> >> endobj -1208 0 obj +1321 0 obj << /Filter /FlateDecode -/Length 1074 +/Length 1073 >> stream xWK6 WD%QS@уǻzH(hAvǏ0j"y7σV͏<σ%E 1:BG) ގF܂6^"jT=w2P4SM[GRCr}0+seb]/ʭREĵa +YXK5lTzsɺW r}!1imr 23;cI_XOe &$Nֳ.VNCv#qHL#$u ꤧwOA!_viDousPj%zzqעzhQ&\M$\r X&+P<3oTѷhl=s3zCczioW,֢w[sv5z]o?\7gKԷM+ݱI>) ގF܂6^"jT=w2>J{HCj@n/Cot`L,b[EU +xb endstream endobj -1209 0 obj +1322 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1208 0 R +/Contents 1321 0 R /Resources 4 0 R -/Annots [ 1210 0 R 1211 0 R ] +/Annots [ 1323 0 R 1324 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1210 0 obj +1323 0 obj << /Type /Annot /Subtype /Link @@ -16955,7 +18404,7 @@ endobj >> >> endobj -1211 0 obj +1324 0 obj << /Type /Annot /Subtype /Link @@ -16970,10 +18419,10 @@ endobj >> >> endobj -1212 0 obj +1325 0 obj << /Filter /FlateDecode -/Length 1031 +/Length 1032 >> stream xWˮ6 +%QbEEh _HzP53it mYat|Sn?.jϋ *$4)#Ĵ @@ -16981,22 +18430,22 @@ x ͢ "hv CߔuՁl`>敱0d"50 h p?Sts<} L\ԫH=R%[3 t۲ֻ+K%Biӟp`rGMm#Lhl֦HJKUDm[#xƨcN4R݉t( e.!<ā)H!j'e#A!$ dmzYJ7TmF>ۺrw΄⎱2EQԲMlLoيVi@8!yۄ;-a]W2MOA-[M턅;xl? V nYڝ Rk(Ygl.{R=SiUΥ"XMކ2u LǴߦn&vb8AIa7"cJRAi`dv.Ee9 VxÌvY endstream endobj -1213 0 obj +1326 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1212 0 R +/Contents 1325 0 R /Resources 4 0 R -/Annots [ 1214 0 R 1215 0 R 1216 0 R 1217 0 R ] +/Annots [ 1327 0 R 1328 0 R 1329 0 R 1330 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1214 0 obj +1327 0 obj << /Type /Annot /Subtype /Link @@ -17011,7 +18460,7 @@ endobj >> >> endobj -1215 0 obj +1328 0 obj << /Type /Annot /Subtype /Link @@ -17026,7 +18475,7 @@ endobj >> >> endobj -1216 0 obj +1329 0 obj << /Type /Annot /Subtype /Link @@ -17041,7 +18490,7 @@ endobj >> >> endobj -1217 0 obj +1330 0 obj << /Type /Annot /Subtype /Link @@ -17056,29 +18505,32 @@ endobj >> >> endobj -1218 0 obj +1331 0 obj << /Filter /FlateDecode -/Length 804 +/Length 805 >> stream -xVM0WXB= pY$! ]+vر='@(Lc:8+8;=L6 ^EČU@ֈ`V;zmN1Fuma&3z &`'ofKE6P<EA2UؼW,^I 2c^<|x[ IOҰ/jMo4!3 B!ȳ%`6B6tQ~";Q}.e ,9Wm ,6z_~&ymm㚝3͝ #-4 NȜq8VbJGyrV" Fa+fPڥgta߼ *Z톙{P8@HC,sm}dO-HSvtZvP[låFGBߵ(}\Pa'b;? 4l3f͈ھ5p-6mG52lZZ3mdcI!嗲sGFG+ _iG5~iW7f;ZlI riҶiK=qOum-~XW"2kf+L+H ۨ%y[@Tw)"Cjr]ġe8dZ(R!75o[3V*"Ko -8I -+) XJJ?%DvN= |]*xX6-LtL9$/vo{ +xVM0 W'q$4.+  q蔙@ tfh5ӴM@(Lc:8#8ɯ0٠Ct&xI3rTY#ZZ8}~Li}VA!F.@fF tCT?]Z1ꙵ٨#ȶ6k 3aucO&|3q#̖4/mHy>΋z3;]d@ Waj_}mH*bûo?*Lޚ$4}~)x QM +"ϖٰ Arىuk,+W +seL^Ʀb`}eL,ڄN #-NL'dNX`}1'GNHv`#cJ,wyg :FU|yT|hW܃zƱ2@bk{A~:hA=h-#Nm 'CNjy =kQq@L;? CE@LҬQ=YyTi.ƪW it L % $| 2nCp`!`ᯢovZф `Dzo{imR,5縗պeH +Z~F +KmR> endobj -1220 0 obj +1333 0 obj << /Type /Annot /Subtype /Link @@ -17093,7 +18545,7 @@ endobj >> >> endobj -1221 0 obj +1334 0 obj << /Type /Annot /Subtype /Link @@ -17108,7 +18560,7 @@ endobj >> >> endobj -1222 0 obj +1335 0 obj << /Type /Annot /Subtype /Link @@ -17123,32 +18575,35 @@ endobj >> >> endobj -1223 0 obj +1336 0 obj << /Filter /FlateDecode -/Length 1051 +/Length 1054 >> stream -xWM6 WT%Q4S@уǻI?Je;_?MoPzmBRinQ}[2lMٙBKl泋3b3:zzt .2;hűr4? -fFjL)||~ϐКD2|z]`AD.(y\dk_ov9c]>7{m%2F*|'ۥع.qأ[m؜vc&q%#ٝEpKy#p<b?/k Y[LQI{wK:4@l\'u֗&9 b'X^{`Y!ee#p^/2k'] 6m!1/$cbA>hXH bu)TjGZ+YTIET /g!h!WwH8ц\:gh=")^<'I*r r*FQܺke,]wՊbޝʨ`8Tœdj%=lb_I}kD |*p^xŋǪEDs\D DrxV"Z4B`"_/U]+lWnRkއBfA.|6eL+p_2|TplQۮ /XvLF|/2 I-)L]!)=8ۂ  {{Vx7΅]W(dĵ q -oU~5etz -5ј@ۨ4`vFȳMT6գ ж|c;${9 }cO~_Fd=Ck |䣫ⓞCLOԂdP*c[#*=Su>\K+ðl⛶mgzUO,)]2l љBKl3~gL蟞؅dAod`X9O 3nS8{De/O1w&!e>y\dkǗ`;XmGf-DT{]Rp5%c!v/pE-SڎK]w2!;>U$K2쿒L՞B6$ž5LЅo>vZcZx[ u:rտ:61Fwz膘@+> \,mG~_v kxs- +̝Sc gM|mٙ?HtȌQI endstream endobj -1224 0 obj +1337 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1223 0 R +/Contents 1336 0 R /Resources 4 0 R -/Annots [ 1225 0 R 1226 0 R ] +/Annots [ 1338 0 R 1339 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1225 0 obj +1338 0 obj << /Type /Annot /Subtype /Link @@ -17163,7 +18618,7 @@ endobj >> >> endobj -1226 0 obj +1339 0 obj << /Type /Annot /Subtype /Link @@ -17178,31 +18633,32 @@ endobj >> >> endobj -1227 0 obj +1340 0 obj << /Filter /FlateDecode -/Length 1625 +/Length 1626 >> stream -xY[[7~8ρju]Z<$}h`KRJ8-HG,ywfǺͧ|3N 朷F/3 _qD%vǝz,^3p~1!TبϻwaYέR28#_Vm"R\}AX*!5ͪ67o&c9sظ1iQ! FU37]fopc3g&l>L݌RԦus9ݯ~" V~s.Ϝk s@=623@Mm sz6>~ZoAFg ɊX */dJk¦۹y9_:7#M֏k6;Q5i;,EA 7dWƘl&*!@6B!M+q BfnoÎ*M;=;Bsc7G`3uDžXVOA:g@z|ls$^2 MaHj˧);v<8F>v33Hp9IqVG?1`ˬøjC i+\nysaR~M -k@l8&m:QNW BY$7XHih1kb_>PS]3Vo_#{O8R+t_teFú -|NrnNm$RΣƋǤn7H%1uаOxz*,$@i*R\;تTs7%½8F8+zo6ƛ# k=6ܣb2h쐢X-QB9T9VŔ:]uxwWַ_1_31Z3+SCf\t;><ӄX w;L*Z~)Bk\n9Zd:U-B:L= >c`kI^VfGIU=9}n8@EqμҚ0%bS('4mB(l_B'$&&idHh sm,Χn9BCu+=G hр&(HQ ܿ; Wefdple@2i#979bAwmF.y[]tuf{i}/O ,Y%V(s/m&5ySOGrAx"P9H5[ gW2=8Oh\?{J;{1 yxĽ9׋kmy}1τw`RۖaߢL=: {00܎ \)YOzf:ރW>pT|y`:Y7ʽa-ֲNVkUVh1+; Cz?_>pS?ЛFޚ*@- ~*7v(YV_IRziOcwH7>Du]pf((Pp@\^)ۅ#A֊\3gbNs[qǙxG#vNYf=HkvN8X\*lTV߻0z,E)o;_VږoHrpه"WӬjs3 ia18nj) ّ͖f C7g*j9?n 3_v9gε9ࢀ]625@GƆcm*} yޮ>Km:a}}\eW ccMt;69_WĬs\~M~xЃo ΢Π]cf2+ggL6 F!!M+q Be4za`SDSzT΃MLpq!VV x@z|lc$^2 Mar[J5Sꔉ)O ǨǎYA#AuVBVGbU * -$qU(۴=wm5p5Ѐ{ "kF4XdfgE1iIrRb%aFrN#ْ7r^z W.{H}=FLn1ڲ +[ٹӰۦԴqEn*Tb13RI!F(9D4$4t:ʴX^$@DJMT.i|Wxl5J4bd\ uh-Q;͊Nqxs1~:s-c5(.qsV +F9뫞Z @gM~W *ϱ͑PԶLͽb#tl<F1:2dA̝y&Ē^`J0k'4%)OCeזNj*:U+ CL= >19D$/|S,YQұ^0ǽ踸\ѷ3/OiMv bSY6!}"B/CH4 z$2жĺ* 3u-"42(ZP_9x@44AAd3;&+`(bؔ,q~S3+lfH꒦SuK}y3ttV}KKP^Lkfw{B S +Ǥm2_2w@\G{Pًˏs'7̡^X;hG{ޗa +Lxx&mx7l[EBa/uVδE&-+|4g=H%m GW l[@9}7%[8ʛ#CoJe% ޏ?&9&D +5i g*I l-!J"TTzy^/ \ .83e x1}˴)>@v@l !f҇r?vLNMW $ endstream endobj -1228 0 obj +1341 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1227 0 R +/Contents 1340 0 R /Resources 4 0 R -/Annots [ 1229 0 R 1230 0 R 1231 0 R ] +/Annots [ 1342 0 R 1343 0 R 1344 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1229 0 obj +1342 0 obj << /Type /Annot /Subtype /Link @@ -17217,7 +18673,7 @@ endobj >> >> endobj -1230 0 obj +1343 0 obj << /Type /Annot /Subtype /Link @@ -17232,7 +18688,7 @@ endobj >> >> endobj -1231 0 obj +1344 0 obj << /Type /Annot /Subtype /Link @@ -17247,7 +18703,7 @@ endobj >> >> endobj -1232 0 obj +1345 0 obj << /Filter /FlateDecode /Length 1348 @@ -17255,23 +18711,22 @@ endobj stream xY͎6 )%%R?`Eöh3^-v@)Y%Lf;i'-ryC,K1+h~\`lHC+DF.}~|rλQk8{??$fU=ېƀ2軇#-Bk_~>~=V9Q &x 9*dfzbP!"^Ú2qCF8)筊&n'ce\xaHZlj{P1mIBˇ Ĵ.@! ֕3Yo:7].#׋=RQ{ÕIQ(itQ#Jqg{twGsX2;p5Nt'̾"]Ȥ"mJ 7շշ*x{M]^}W05|P >;7O\>3=GaZ}P&,t#)l2c.ۚ [cѴU -֓mlGIrf0OFFlS0NTB6b=獳L܍I:ciܽswk -,> m +֓mlGIrfGayI4&x>}/ a@fOy'wbXwZ(~n endstream endobj -1233 0 obj +1346 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1232 0 R +/Contents 1345 0 R /Resources 4 0 R -/Annots [ 1234 0 R 1235 0 R 1236 0 R 1237 0 R 1238 0 R 1239 0 R ] +/Annots [ 1347 0 R 1348 0 R 1349 0 R 1350 0 R 1351 0 R 1352 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1234 0 obj +1347 0 obj << /Type /Annot /Subtype /Link @@ -17286,7 +18741,7 @@ endobj >> >> endobj -1235 0 obj +1348 0 obj << /Type /Annot /Subtype /Link @@ -17301,7 +18756,7 @@ endobj >> >> endobj -1236 0 obj +1349 0 obj << /Type /Annot /Subtype /Link @@ -17316,7 +18771,7 @@ endobj >> >> endobj -1237 0 obj +1350 0 obj << /Type /Annot /Subtype /Link @@ -17331,7 +18786,7 @@ endobj >> >> endobj -1238 0 obj +1351 0 obj << /Type /Annot /Subtype /Link @@ -17346,7 +18801,7 @@ endobj >> >> endobj -1239 0 obj +1352 0 obj << /Type /Annot /Subtype /Link @@ -17361,33 +18816,33 @@ endobj >> >> endobj -1240 0 obj +1353 0 obj << /Filter /FlateDecode -/Length 1622 +/Length 1623 >> stream -xYɎ6+p_$:H z4 0RXden^*bA?>8ۅ3g8҈K ]c.4 &'<K?*ŌV/ys;&!dFM!aO_ hM43|h5Lm k==|_$<My^/>qa<9rB#5 Y_C/c[Ǭ2r$$ OFD)GIh`3uq{G'g):8Dnp-}a(fYVݞn_2~x)iq)[Z҂M1oǠ\5xoG6UqǚճHɘ|EHM/eHcƨx]q(/hЕ(J xRKc=2- 7P =Ainy{5-Ϝ@=x"%گg*c9ՍM`t!iM9wem 5%iqA.}iAhzdXC1]H'nc}[M>w'dů݇]E Gʻgw ŁQ~W2хQO8 GRi @ -Wk$тHc۠ut]qmȪv|w֊Rybp# Е!n!D A J:1d;k׌ߒ!jL]k2 2&6k{p=6JGiqb\ñMUTIR%(/5Ǥ亂)챇Z+MW -Fcw;7ܓ(yRG7+:=Q>o0 -à3:\향Dl n{&wehy>wo `n47xs>ڢ! ? Jtc(SA?>_I#F-Z)篗|\Xǃ)'JT1JO^j*~t3L'u*oK;jnw[܇BQQQ0Jc:ʄqAiP$X@ u욍F衳<9` e2/K B㷹õ!Z(~txGLVewL%!DjlpcPՙ2D#,ͷX~yͦKRG7DA׌h`FFn6X!߅taNJ3@(Kh hy(N6./8s;H_@B<AUـp*hdߵpÉZpS%f֟Ub@oKoDtXވDd w^xW4l)La6d, +Y%z"ݡ2(b0Psl#@UǦX9<6!_64 1 W):@,n+a}&MAWhCJ$pOS 96}̖{M Obt4r&[6oa>rd+(p@\iln>xWp[j!jF;$ =](bǘn@U_k|8 _^AA>YI.:-f}u&BsKd㽆칵Qt,>lr +bZ4[VWFSM'q㣼o4c5WjSMWs +fcدh鍛uIˁ˰p>o0^3E|gK:-[' `ELxNeS}@lhn||<;Tpvkvd4;2.?oP_|sCMJeN494sRQX#"TX W4CGtfru \xxzSc(e7`>KR26'ާ)fguPJFA k޼.,nGKa> endobj -1242 0 obj +1355 0 obj << /Type /Annot /Subtype /Link @@ -17402,28 +18857,28 @@ endobj >> >> endobj -1243 0 obj +1356 0 obj << /Filter /FlateDecode -/Length 553 +/Length 549 >> stream -xK0 d6^ݤ`Q?+v|!sd)hEEDDHل9ZrO߆OYsd)ŊJR}O݈a6G먮)DUV$)6l Sll[>6&`k6}8ySI *EYW^ՂhZ42TZ*L`>}@M<|K BKbKrYl&{][qM]NU Mr#ψA("%e+@9eݝ灌U4om@Y[sQUOW.5ǹO+lK͋moKAP!k1k-4Zt4o]^" *f ;B$Ύ  ˽HY9zPV0vOdXOߐRe=WWU!6u +xK0 d6^ݤ`Q?+v|!sd)hEEDDHل9ZrO߆OYsd)ŊJR}O݈a6G먮)DUV$)6l Sll[>6&`k6}8ySI *EYW^ՂhZ42TZ*L`>}@M<|K BKbKrYl&{][qM]NU Mr#ψA("%e+@9eݝ灌U4om@Y[sQUOW.5ǹO+lK͋moKAP!k1k-4Zt4o]^" *f ;B$ΎLϺ̶F*q@([7Ѵ{%S7syϼ?2 endstream endobj -1244 0 obj +1357 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1243 0 R +/Contents 1356 0 R /Resources 4 0 R -/Annots [ 1245 0 R 1246 0 R ] +/Annots [ 1358 0 R 1359 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1245 0 obj +1358 0 obj << /Type /Annot /Subtype /Link @@ -17438,7 +18893,7 @@ endobj >> >> endobj -1246 0 obj +1359 0 obj << /Type /Annot /Subtype /Link @@ -17453,10 +18908,10 @@ endobj >> >> endobj -1247 0 obj +1360 0 obj << /Filter /FlateDecode -/Length 3940 +/Length 3943 >> stream x]Ko#WX!@$9l0Ir^2f[V[,J =r*~f^ Q9N4}MW3Gz}۹R 6}lr'1:z9s:yw8N9퍱VSb @@ -17477,24 +18932,24 @@ A _K@$sVR*{-c=H3lEiQAzs/>9Sxs{L *Qn Q&:btUѝZcSZRk\lWV#<,=z# mٶete1o](^ lY0 p?ʩ7dLv}/n؁K΅kz .p%;YlO݋Y]a -W9{{^\ؖ;7svkLpQm}ק砅9l56Ebvou7VH )CB BXOأmQH Gt;}V-((lc*+*Dyl\HɰnE0%)zT$&o،e]ƒŊyS DF5p~~w?AH+庚k-ʧ@nz?y_;ZZbr^Mx}'O; ̼> )ܫ_ )ܫ_> endobj -1249 0 obj +1362 0 obj << /Filter /FlateDecode -/Length 3347 +/Length 3349 >> stream xۮ_V)Q<hHۇXǍ%)J͕s DIqtЙ2E<_~:YC:S?}\s}i&l[n>bOD\GvHl{0-xØ=.! #pʵ9tHch?ajǥ6<;FH-+ߺaIV}F4%? @@ -17506,58 +18961,49 @@ MeiG` 3lMG OZx:0k}Ao"lWfMޏV 7H0e=T^VjeЁy 7Q=ua% }~*=gl@u` &{0&^S 8?\:Ձy*PtOIrB܇U%G ?Z0>7RC7'0B293pƧ.ڡp90!z}``X;=k{Ѱ`}|.Tŋy_G_K>J} 8T*$dvGgoI 1D)}uZq v~UR]H)]EI%l_jvihX]Vdߥmn]1jNѴ:۷3A]xsX]:^{MzSGJCK91TQTQˁ8q6s.̶t p˻Kp_18Gkja.T㢕GQML6Oا<yuU?PQ8U˹JV)4mrۤK`m,/~9kꉄXU Œ`+.N\`"p`B 9 ;9[NLf(/[CʠCxR0f!VR+QnícNC٣~WM+:enXcṬ_Y0痮k1^{^viy)QEj*Z-›"{[!/vr78dcvuoT:^GkGOP]p l̰E-bqz9~aE R_ҥ8Y`jۮD** ` W5?Zar'g|Ƕa3ָQqyp✔yR c)4^ *^ňZ{2@3M>@@[`(oQY' %rbVuNvor^c›L̶jH5ys)nu9V38kI#XdòqOraC޸>uﲨ6H/jɈ<`Ů^I@sc-^N"A;@r|1|E uTZbӅ*1ܭŮ̹`c`SYuވ؅6u:zmTyvv0yBir:_q;S/0UO /FUqT[Hd0zzz!d]J#')9=}`CPxEzFڤ@t`,idՕ5jdgx\J+C6]^rfbX!û"-LQ}Pr樓+YKO DGkg18G̹b k˗+dwQng=uߦr6 -vABC"SrTު8GCCm WQ8:&g@$s;?A0 !9edRt#чM҅ 0 +vABC"SrTު8GCCmqR~EE[ Q|o@$s;?A0 !9edRt#чM҅ h4 endstream endobj -1250 0 obj +1363 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1249 0 R +/Contents 1362 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1251 0 obj +1364 0 obj << /Filter /FlateDecode /Length 2323 >> stream -xn6^_6w,@grAeNy'*lOe\.E_ D;3͟OV_'텏Vy7E#L!4j-ZӿNzR'M3`J?~>}8.hE>㻿}$x*p9x'rRG6]387mq=/ϭ.q˕I7niK -|Ә)4؞=}eNciq7;~y\p'$<`] z৵~Q+[wq(A iM`V& ,I 10BSC2F˳bi`gD1Z{W8{,LN6D$i mf5&23Ik ߣ4'҈IxsH4>l~6_tmπhxVSW^@ -T{7C0!d6΅DBk7Oܵ0gF$bHp*p23̎`Hxd%qa -W. =b<dj0.8fd -}J0xprf/"u;_ŝ͹\@ \~y7>L fh?-WuhL1ИDno%2@[jwnDQdLLd|FVU?ۚ}CW:0F( -ӭq0]~O_ވxS7>bp Kb6=3ZIpY(h5™0X=&-TYœh4czQPg&<#F+pO b@HH7ξXMrPV<-  - +P*x'p>2*(tT,|i2WHlyf9C q_1 ó{gg6}[^~tt"XБ&>^/BEa -X)4X#I\()m92XC.8rT>lrZA}jqfkGVl-/n(񀞭FAZXnVL}γĸ%v% -KgvF_3gIʕ  -I (1V )}ɟQUJ|Ǿ0 -3h4M+j-M/Uz͘w$}f{la>_ ^3CCj -Fu&佌'QJ&R] -U*Cq޴Ϡ`Cͺ`}^ o]|ԗSQZiy\ha /Om(^Ԏ1jyl^kv흄p w=sY qwi# 5SOvIy}k(8Yp@nȆ`_|2;n쉚++3\I21R 3PQÎǢ`~u6H 'o@@O3@*eƽB[jlva3%l9,*t7ܨf`mrp؜ 1\?3s'":7fF_I^ -E $tx KFF"`)K?m*KSʰ@ U xM.(bF5Jskz(1>%޷\Y/@+qڨzy/sFkG1p)Bo%( -\1o`Rh;ܠʡEhQߨc{oP@fzF@MsAvwS: -(Nu`U7 BP(_A{xg|>.G1^SӔj\XFB!5F+8JanKo|)_A%dE*y:NeP|+(siOxeM0(?NݿHR797)auAd*w3e _Ek+DTq?>@6KK(}v [ WAHo&v(LT"m D9hؼdFs ӕ&YVHqEVn`CT67{|Ebf ~5n;`B|E^ұx,.՗/ AD_ -P񾜃N_Ev&B1ȁ +xn6^_6w,@grAeNy'*lOe\.L?/!D4>~[yGO nF CRiZXϧ~=>jOJ V>|p!<]> yx. g^0Ҡv>H3=|>}w'HT"rNJ4x)m%5;߃5fqoDf{^.q˕IsYt\Ny^i̔ FZ{~lL_mYiXZo\ _;ܡ Fk,KtAٯ70*}~>%Q!IL1#I7!FkcVhko`[&v/qFDwͤ_4n_MD6lPc"+H;T3:Ik+ۙ7K\,`|EW9e霧/82} aB m Ln4ƹka όHM*Tdfd{K7v_])nzxX=xwt xa\ptFU:a4( _D2*(tT,|i3WHl{f9;Cq_1 ó{gg6}[^~tt"XБ&>^/BEa +X)4X#I\()m92XC.8rT>lrZA}jqfkGVl-/n(VqR_LY+IJ&>nYnb\n䥃 3;#J/M`Å|]kPxP+~~DorOȪBc%mc_ +b &_ł&*f;>_ֽX0jֈU/i!Ife:i^Ɠ(W%.aql:gPQUf]j> 7.߫G.7z,@ZZXKES?#lZg^0ך]{'#?G\j\%bB wEԓGRޢ;}" +j4\[3!5<_̎3rGx<{&JJ;zRL u԰%.*v_:= o&,flxPoJ8&qo/k(|rkL tr + 78>Xq4=:6h{1=cʹ=WBxgQ> htA a F*Xo?~ϿR2,Z7*6B؞ކrswP\jݔha=;J&:0pݛtw!S(ѠNxg|~]dc(P)v:C8Nk(V8-"p(kOݖRJTuڃWPҙʚ(7`P~( "10[nz_@wx̔e6|ay }HQX|\,/9Gzn.Eޣerky= Bj}'y԰MF)WDou SpYQ^al|2KGJ+Ѹf+7VWψq"aua\KߢXj}vW^[dV( GY#L] o>\a%DlnxQGoQUjzba]b@ʔG,Qқ> endobj -1253 0 obj +1366 0 obj << /Type /Annot /Subtype /Link @@ -17572,7 +19018,7 @@ endobj >> >> endobj -1254 0 obj +1367 0 obj << /Type /Annot /Subtype /Link @@ -17587,7 +19033,7 @@ endobj >> >> endobj -1255 0 obj +1368 0 obj << /Type /Annot /Subtype /Link @@ -17602,29 +19048,33 @@ endobj >> >> endobj -1256 0 obj +1369 0 obj << /Filter /FlateDecode -/Length 1144 +/Length 1140 >> stream -xWˎ6 +Ո(.n.."dJ}IM_<$5}T)xçA4}3]TH?&T#4 -@K/Uanu8!Y1(G-` =lhU;b _xtTĈ8|~{;Bgr*/֘B%~LwZNЧZn}T{m(*lA3ޓxS5oݑEL]!? kiZ:y2nh)8t_E4E(m*:mҨ*5!)BGy.[usfbd&_kKչbnmw*XyW~sp.(OM>hvR8r:=v5\W;WB݅"KU65W?itg@p;iZb\wEĢp/8qTyIHBe_?} i7~sqکir(]0ngrN~TΛy<J) ;:ΤH'e˧.Ygo|'ԏ߈ϼ)~Wщ;h'4۸$蓣6|(t6c'*E{m Ṵ).ngf. +xWn6+9^ii7\@хQER$CjHt$W%Ky0jT)xçA4ڧ3 1KkCku?~>HVC #1Ae 0Pl"d3U41"/_~ގ\65&jHmQ飥g;gOm;>MtwlCϥ}k|v3V:kbc*~S?'j?v?ŎvLZޚ}?Ɨw64HgP[r'pЃ!`_Gwt +K l!b AKZ]p:r\\Y:o1U嶡iXg}%w^SrvKKIIh(nwB.z^y"̼ x659u7Bi]AH.7 yaw?r:lI?itdEZ;[.R%~NB*gNv> +L;$N…YW9)Gp<pWp"B::#-JtWm^)UP? + 3cև|MNNV>BK^sr40s3\[}rڦ9Ab0e&'*':kK)KBx2 +fY endstream endobj -1257 0 obj +1370 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1256 0 R +/Contents 1369 0 R /Resources 4 0 R -/Annots [ 1258 0 R 1259 0 R 1260 0 R 1261 0 R 1262 0 R 1263 0 R 1264 0 R ] +/Annots [ 1371 0 R 1372 0 R 1373 0 R 1374 0 R 1375 0 R 1376 0 R 1377 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1258 0 obj +1371 0 obj << /Type /Annot /Subtype /Link @@ -17639,7 +19089,7 @@ endobj >> >> endobj -1259 0 obj +1372 0 obj << /Type /Annot /Subtype /Link @@ -17654,7 +19104,7 @@ endobj >> >> endobj -1260 0 obj +1373 0 obj << /Type /Annot /Subtype /Link @@ -17669,7 +19119,7 @@ endobj >> >> endobj -1261 0 obj +1374 0 obj << /Type /Annot /Subtype /Link @@ -17684,7 +19134,7 @@ endobj >> >> endobj -1262 0 obj +1375 0 obj << /Type /Annot /Subtype /Link @@ -17699,7 +19149,7 @@ endobj >> >> endobj -1263 0 obj +1376 0 obj << /Type /Annot /Subtype /Link @@ -17714,7 +19164,7 @@ endobj >> >> endobj -1264 0 obj +1377 0 obj << /Type /Annot /Subtype /Link @@ -17729,30 +19179,30 @@ endobj >> >> endobj -1265 0 obj +1378 0 obj << /Filter /FlateDecode -/Length 807 +/Length 809 >> stream -xVn1 SH8KE !۝pf.N7ώ}_mI7V)+N:eVJb'$o} eObӧǔ%b)D+~ڡskP5EΌmbԅbJ܍b9Bf.TO_}9yIDp8wG͛tuV!V*ۆE=N)@Idj>h]vv\k6_fUB$Bƃ:Te #]ʂs2>ԞEu`h;ˮmC9YuO:n Iz=ٍ;%Y*O((9 oFzBdHK^5o<\ S|HQO/V/>`G!?N]vmH/?:9nuc\gN& /I6"w -pe +xVMo1 ϯ 8Nj8.8nw*Z5vATt3I;AzB=oߧ 0UF|[}&+1bLF0ZDpD=y1=8/i4x<ȑy󳐮*bVUz۸h)(yC68V>o˵ެ.\DxРsꢌ #9'#_ ˷cSCm~n6q}v62n~7`Lցss, 6V}#لuGx*K{p}siƃ]|N4428-8#Iz}0yk~<L~LnN XhVDuPD ]ˀ Uʅ ,fGtjr;Uo' ?--p 2X^-ڂ>;>jdP0ӌG!)[m! 'LFńX]\-|I}cXe!1zHyI}(qͧ%_[1s1_)%_:v_gYڇڳmv?=u‚˸K%H))y^yvJI +JNٹ-Y3ӒWM-+9aB$#RÄC'lȗ,䡑LN"S IuJ1s2A]z N,7^i̜IL@JɵXlD-:'+7 endstream endobj -1266 0 obj +1379 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1265 0 R +/Contents 1378 0 R /Resources 4 0 R -/Annots [ 1267 0 R 1268 0 R 1269 0 R 1270 0 R 1271 0 R 1272 0 R ] +/Annots [ 1380 0 R 1381 0 R 1382 0 R 1383 0 R 1384 0 R 1385 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1267 0 obj +1380 0 obj << /Type /Annot /Subtype /Link @@ -17767,7 +19217,7 @@ endobj >> >> endobj -1268 0 obj +1381 0 obj << /Type /Annot /Subtype /Link @@ -17782,7 +19232,7 @@ endobj >> >> endobj -1269 0 obj +1382 0 obj << /Type /Annot /Subtype /Link @@ -17797,7 +19247,7 @@ endobj >> >> endobj -1270 0 obj +1383 0 obj << /Type /Annot /Subtype /Link @@ -17812,7 +19262,7 @@ endobj >> >> endobj -1271 0 obj +1384 0 obj << /Type /Annot /Subtype /Link @@ -17827,7 +19277,7 @@ endobj >> >> endobj -1272 0 obj +1385 0 obj << /Type /Annot /Subtype /Link @@ -17842,10 +19292,10 @@ endobj >> >> endobj -1273 0 obj +1386 0 obj << /Filter /FlateDecode -/Length 2728 +/Length 2729 >> stream x\Y~G$Y`6yH9 {fHQ"e> =Ⱥhw @@ -17858,22 +19308,22 @@ F )4ڲccW*{c ]] ʦ5v93_3in滿ik=KB򨤞8&8pkz9^Mi5.-FS;ԺH϶礠7vlqT _Yv۪ KVnKMn]GSRCl BW\Ci8B'Ǟ١sRIe7 hA, */E-PRB(N ˚iMMT[|mkm+C}g tһm ޽Qi+" \.z!K1&f#g꼡*^mߥ8S\ݧh׍ l;_J2('IdT^>kukM|8c$•uOBjdڲgZɒ-"hխ۸Xq;G7O*Lu@;bH7s=t>)ƛDZ?|.sV -;nL6f2z_vz/kkV4ĝ&Cm-m0ѥ_{18)~:PC% ')?.]Sx~PXb{EK/viZG-]HUQ`yFLu d{ֵKFtN]^M*`td.Gzjh^)_fϔrHVÎZs޶wzVdZ3lwkϤv˲=:)6n466o/k[4@%x.NUNo{@hRo.*q&QYgBg/$~ҲPLfӳ;rt1wAv ȏ,WץM[]|755 wzGzוŎg9<0#='$} +5NzvyjxkB6<`W+g3{|x+;DSzn9qt~,U}̰ơ&K/X[z}o}ݾ闻;A(-|[YV3nﻐR}_I.Wb^HnG6pnOAu}H"7K~``˨SEď{02Zw »1zS')k2SʎX̯> +;nL6f2z_vz/kkV4ĝ&Cm-m0ѥ_{18)~:PC% ')?.]Sx~PXb{EK/viZG-]HUQ`yFLu d{ֵKFtN]^M*`td.Gzjh^)_fϔrHVÎZs޶wzVdZ3lwkϤv˲=:)6n466o/k[4@%x.NUNo{@hRo.*q&QYgBg/$~ҲPLfӳ;rt1wAv ȏ,WץM[]|755 wzGzוŎg9<0#='$} +5NzvyjxkB6<`W+g3{|x+;DSzn9qt~,U}̰ơ&K/X[z}o}ݾ闻;A(-|[YV3nﻐR}_I.Wb^HnG6pnOAu}H"7K~``˨sv|^K; jq1Rz`sOVO5JR(;b1 B endstream endobj -1274 0 obj +1387 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1273 0 R +/Contents 1386 0 R /Resources 4 0 R -/Annots [ 1275 0 R 1276 0 R 1277 0 R 1278 0 R 1279 0 R ] +/Annots [ 1388 0 R 1389 0 R 1390 0 R 1391 0 R 1392 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1275 0 obj +1388 0 obj << /Type /Annot /Subtype /Link @@ -17888,7 +19338,7 @@ endobj >> >> endobj -1276 0 obj +1389 0 obj << /Type /Annot /Subtype /Link @@ -17903,7 +19353,7 @@ endobj >> >> endobj -1277 0 obj +1390 0 obj << /Type /Annot /Subtype /Link @@ -17918,7 +19368,7 @@ endobj >> >> endobj -1278 0 obj +1391 0 obj << /Type /Annot /Subtype /Link @@ -17933,7 +19383,7 @@ endobj >> >> endobj -1279 0 obj +1392 0 obj << /Type /Annot /Subtype /Link @@ -17948,63 +19398,66 @@ endobj >> >> endobj -1280 0 obj +1393 0 obj << /Filter /FlateDecode -/Length 4095 +/Length 4092 >> stream -x]K#W{X;@HkbfkTlR;KjuŪř_k'Μ/1#}~R`砙^pv3!TpQ)fRܝO.(8wޝ7q?rE0~Ha p_?DfqW2N_,"=Yt;kΥ\k87=_ :|{ }Qv^m|vѴV9t͡/Ǜ 4HǓǔ;h^s>>́Ra$M80vqQ`rfF)[qEꙘR 2iKz۝Y1W"i6 -5`c&s,ѰH~3-h1d^8z+|\'&|! ͙0/#Q^v!t_%4Y?Ne+~w`߽XpiΔqUɬLw;fqzI8A=YˤT˅kD_vݔЯW׮+m:-92%Bsd yf˻9_j9B8k`~ӰHፂEl0i,H/`Dw$`C€]z^ҐMt=\&yV -d͐}D`;0n.A*Jqk"9'[YCJDh ?[xA@ra@[EnĢ_%J|4N9ԣC̎2i P ˁ v5%1CGO])0#%8J,Rq31.9Tڦ8.֋G2sR5x|XtVoW@X|H VʭJ#4hpBl5"o9H&ldLiN~)~wf]|Jp/=3~)զ9r{5c!nZ+?ds;BI1*[f0}`C>b\*)eqt.r9G$K,id|5b#%}1nJXC +x]K#W{X;@HkbfkTlR;5juŪř_k'Μ/1#}~?)\0sL{/|8;\*3Z)|鿧}s;BHɌ֛x8ǟ?~9}"?  0tg鯟N"3b S㈸`+o~o~x|5r5\Pxi5ܘ]_~q~^r/.߫xo_=#Jó59xu~x\xwgmYugՇ?}ܜ9P +=\IƮ7=2 +Lb(e !9H=3X*P6 b)Qs3Yz45Vq ԆZL<~,|.%i84|u6̋o:X#}ؤ/9e$8u . o&˖'cɁ]ހBݾLxRk;͙2n*nS,^O1''kjqpخu*5ym[g%Gd_h`>nyΤ4,RE"r6Qax4&c^s)tB~?mDJ'^9@h%Ss Qa $dz&f@Z+!]Z zF/'Bzx%" /Rdh2f̟_<+'Rǀ"/#r<ꈅSCLc4@2OƭEZcRԬ%ƲaseɒT`*R Xѝ!I/@%&0 d^׾4d4jg9]Wza/I^x{+?h3d="b +^2 K7\ c}R%8zsrm୬V!%" - ` 90 }pǭ"7G#SKMS2P@8c`rZ+Cr`22/^,%QqZ{;$Җ9rcdoP^%1tM.˴ƨ8 ,21A)-Mn? +&uX: a \rOT"=ErEg7b%!Bb :kn* +Яc`hdi&^q?C0&M.;HBh$0yed92pbMdːE8&< pwƿIJG4>bKfzQ_$m L\0aP.ik|z@vg O]-a\+ +dg> v5%1CGO])0#%8J,Rq31.9Tڦ8.֋G2sR5x|XtVoW@X|H VʭJ#4hpBl5"o9H&ldLiN~)~wf]|Jp/=3~)զ9r{5c!nZ+?ds;BI1*[f0}`C>b\*)eqt.r9G$K,id|5b#%}1nJXC ƄVU/*r-ZTi]"+rމ)6y^Q8g@&|JMHN=_PT#>M Ҍ{a~`!a` *[̔> JpyXJm "2x|eͫa MTϵC$_K{m"p"*&XK]KU-[$ ^&sh/bt b6@)* ĶJ* 괈wk.j=?|9][4,%X R1 [Jw|J+g%grXc^0`[UMnmYhJuJ4 HO]{8+@I^J܊ל%AɺKb@Ep*M% Fxoyu΂YbeECYYaaxLoS,a D &UுB0'=A  -rEɣ@W4aDΛ&{}ZobM%!UQuX Mtf'[n }w(wCVSq[kǔ)4u؜{ },Lq0yN H&p1A`l#D:Z5XeP3/F;4>mV"zsoia1-^bJqo#qtv{M,~}ϗMڨ {SZto*cekSb*h,.B rI&c;nʆI3,N!Q6JV{<0Q%'ғ;Zq!ڊm[c>Ho:HͽJuTrj:%UR?4U>R!럌D,( 2B؉H!:ȃ:MgtQFN!V<'fAJϜܣ*3JBDz8L*AiopAVd G=eXl'8X>R2}Sf%Lj^' qFo,IHƽS|tKʁ%qmbBU*9B }Cz.ZC @l!@> -!1yuO[- #|N[-+H/ >O 4$tOT-驜u=e8S9lGTfI#sgIqҍJf)sU/hyQ>:ǝ1DUˮCR͇Z3X!uݚ6s%r oJw ^4lg$rzڥAev]ͭԌwt:/R϶|L%TTlt=rUW i~sN*Šwqw_ӯL MP!Dɧ8Xy˓SI}>r$:go.D)m|qc%N"i**([>iHʹvQS:^!TUwSMEHG#S'(lfWTeimMcF[|5j-A0q"3uL6j䐷,t:q'y<žOsV6j=slDzfQu͢"6^tɊxuOCBoDzE"WP ږa,茣^|k FR9ܘ5{_j#Wc.(&MM'uӑDu t.VZ h3Ӕh7w]g?Ŧx]IAM:יfa:Ux,1v69J<ȍFF -Laqء4tVTs_[3C(q1da +rEɣ@W4aDΛ&{}ZobM%!UQuX Mtf'[n }w(wCVSq[kǔ)4u؜{ },Lq0yN H&p1A`l#D:Z5XeP3/F;4>mV"zsoia1-^bJqo#qtv{M,~}ϗMڨ {SZto*cekSb*h,.B rI&c;nʆI3,N!Q6JV{<0Q%'ғ;Zq!ڊm[c>Ho:HͽJuTrj:%UR?4U>R!럌D,( 2B؉H!:ȃ:MgtQFN!V<'fAJϜܣ*3JBDz8L*AiopAVd G=eXl'8X>R2}Sf%Lj^' qFëWˤV$GD>W|Hdz@Ւ861ev>A!=\RwMP q\TҐp vɘ觭քܑW>mOd xD:'ÿT:TО2_QR6#s*3螺$8FF%9FX*c<(DΘ"eCx!o C`N u,ڐnMC99n7;Hzk63q9q}w=ҠOVjFT;] Sg[{>?FQw*d6j9u*ѫǴ{du{?9'hbлzkW&&^`SRzvkDo\)~h}F9}U3Du6y'4Us\G-4M$H\;)H*AխUHx0D:"T㳌Q>eaFTkH9jrɀ t3sV .FZ6IG^kB(gL}x5 8q3`bN2Z߽mb/!wx!`is҈uKSt i:Uq Y #xSb=ASz&tw?@dՓRmFb1XIQmGE=ޱ"KфHj"vR(" D9J^z$֊_*?T~OSr-#g + Kh*PѪ@{ɦc#tg{K6+*Dz4Y˶S1N#-^fh~SG8 h[&EC5GCt{r[ : @8ڎK ?o:WVZ h3Ӕh7w]g?Ŧx]IAM:יfa:Ux,1v69J\w92eW;T7 ┳I/"Ci>b e.6fPbҁhe endstream endobj -1281 0 obj +1394 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1280 0 R +/Contents 1393 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1282 0 obj +1395 0 obj << /Filter /FlateDecode -/Length 1409 +/Length 1410 >> stream -xX͎6 )Ո r(,0E =8va[RdQYtLlG0J|#8Ο/HKMz_ F9;=0:@*MZ ZK7~ q Z8)w#R@D i!O+--U> IF -RAB߿ P6bЛE {Ͽz*nexR-t3IHߙ5Ҙ%Soxk{e\̫2kփvlKØgf&Q,6&׺~MKj=ځy4Z[ҘfcŎU G ˟ˇwytlލOm/5&}NH E*8 -7_Bs[Ʈh(⣤O݂oժ5ߖ\O:'+HAv]PDt4"%).C, tS}uov^١]zzs*ʫr([CAGbx 皆 v7e_e+D.1GJ^Lp̐hTkkNʳv-s6ȼc{'x/$2V%XT>;ӑ3ѩ-'_4Ε4j#GFڵm8۵dL>7+k0bpZTXWK{<5uZI~bmF<gl)-ȑK[ܾ/lKD5$O>Fأ[t3k)SgC/p<Ω5pUg_*-; 5+%YOeˀ {%99SG醁2A{̨zN r̎cQsuoZ/ɼiޤx1a/+sp` ;7۫sFc=Bv 5Y*^Meץ 髁߹wy6p,v^*~D+; 9+^(E^Dqσ# $ü;*y$0=ko-~s!R.PoYrVK5X <9@xWsR +f޳q*KҴu*E  MVG[v *o{MNIs{3 ^Xh/E3 ΀lz\a:jG]9h\Bz}0X-GC\izS Uӏon-J+{sꈎ'^ #!X9k^9+!H t+ātOCS峬Mk"o\[OaE"$Us2GfdnT? /3jj 0{GN:22]/Jby +xX͎6 )Ո r(,0E =8va[RdQYtObG0J|#8Ο/HKMz/v +|x AAކ߆8-λ@)a Xo4ږ*͆$# _(F"^x=yx_~q=YftMV~RyzЃmvlW7lcr{;d[mG;0]kKl1*(_׽qs|"ͻё|0MDo HGKhnM17C|q[Z۲z3I ~%puI3Ȯ ȕ&ӝUdT"qѶ=r%AcT.| +c.`:;\oZoPEySE0~ |H4H|湦a~kW+GKL摒S] _fH4*͵5v|Ya;^j9|ud1=eޓ ty> endobj -1284 0 obj +1397 0 obj << /Type /Annot /Subtype /Link @@ -18019,7 +19472,7 @@ endobj >> >> endobj -1285 0 obj +1398 0 obj << /Type /Annot /Subtype /Link @@ -18034,7 +19487,7 @@ endobj >> >> endobj -1286 0 obj +1399 0 obj << /Type /Annot /Subtype /Link @@ -18049,7 +19502,7 @@ endobj >> >> endobj -1287 0 obj +1400 0 obj << /Type /Annot /Subtype /Link @@ -18064,7 +19517,7 @@ endobj >> >> endobj -1288 0 obj +1401 0 obj << /Type /Annot /Subtype /Link @@ -18079,7 +19532,7 @@ endobj >> >> endobj -1289 0 obj +1402 0 obj << /Type /Annot /Subtype /Link @@ -18094,7 +19547,7 @@ endobj >> >> endobj -1290 0 obj +1403 0 obj << /Type /Annot /Subtype /Link @@ -18109,7 +19562,7 @@ endobj >> >> endobj -1291 0 obj +1404 0 obj << /Type /Annot /Subtype /Link @@ -18124,7 +19577,7 @@ endobj >> >> endobj -1292 0 obj +1405 0 obj << /Type /Annot /Subtype /Link @@ -18139,36 +19592,32 @@ endobj >> >> endobj -1293 0 obj +1406 0 obj << /Filter /FlateDecode -/Length 1864 +/Length 1866 >> stream -xYYG~ׯgC}?yaBFHQ= ->>1x}S|v[ӉV3#-?šɫY9ǝ,w3LHhrJJfOwOarYg'΅50Og6}Fi )wZs1Y%g_öO:,!5͢67w/@L2Ygv6*;ٰؑK796?<Ik8GsIcKy< 2hafrk:Kgq#VϡN>OSim6[%KO FIIq[J״O3.#Ġ00Iñ1Ä(e\hU~znia.:O;>,fҫI 'fSWZZϞZ Cm0wh&P!M݈?)0jbp*`;k Tlу]۾qK_k%Poq]C?v.2lmZIЏS/7Sl/OQ/<7Qk[L`ĉhgo, -IN(n]QHet c5AqDjA^=b (QAnp/H1F`D!1"Ic:{_#k1lLcӋwrK4{$ڇ -A%EMy8yƠ+őu)! 33l X#=UBy)Y 4FF)ig`IvLratG VlTj^fG'<} - Zw=/-oDWnVV.FEc })j(LxO'VCғfAP e~{qR$hcV}5Prilx8jL#;p&le5#gh}  ޅA@. -f.tg%|`ID֥gk*zo +xYY7~_φu $$~;OSim6[%KO FIIqj̯i!>?reg&]GAaaOcc Q0Ź'7z®śu]euw|Xz3;ͤWċ;Nd< k%=;n%Y^ܡ`@4u#4 upa{%PMGNwmu/m@;s0 +CƩv M0`Sj%A?:L(Obbe> endobj -1295 0 obj +1408 0 obj << /Type /Annot /Subtype /Link @@ -18183,7 +19632,7 @@ endobj >> >> endobj -1296 0 obj +1409 0 obj << /Type /Annot /Subtype /Link @@ -18198,7 +19647,7 @@ endobj >> >> endobj -1297 0 obj +1410 0 obj << /Type /Annot /Subtype /Link @@ -18213,7 +19662,7 @@ endobj >> >> endobj -1298 0 obj +1411 0 obj << /Type /Annot /Subtype /Link @@ -18228,30 +19677,31 @@ endobj >> >> endobj -1299 0 obj +1412 0 obj << /Filter /FlateDecode -/Length 1075 +/Length 1072 >> stream -xWM6 ϯ"J>`ECS@Ì<zHM?PJYgA,O 'A)}:=Sfl~Ǐt^Hƻ) CPXVZvh? gOo.iaGqQ^sBP9۝B s K0buCO~99"2^*hűr4?+fFiqU_{ 2ZI?/}{:&e؁P{/&lN= Ǵ#q}-aC>s8.:dD;[fiґF Ɂ1ٸaF6-25<ĸjt~5&,oq*LS^uŚFLefrVIV\ҞDĚNJ_~uYf75aW09\ -FB ~%$ٟSs0V !i;?Jr~Te$O^ÂN=04pv2[269V 5bk8y1nW2E(FAKz& ۚ>O)y)qoS[/],;4F^QQs6MY 7bb]u_UXV].Þ,=xY/`K `M5vR-&Zt$vL!+ոr> - ^jqilwb_҄P֦١HlhܶAMnO64XXfyI=Z)x_nwE+0p펍\쏶;@mUbnUuÁGVہ%]r5lﲵjwuIAj>(-{vޮj]z*!Stw#Ԝ'L$9 l4_U[-ıFbZ DnoFnfhwcpYۨjJ@Wgcȯn ']jn'yk\8[0 +xWێ6 }Tхhe)ZÌ<?PJ$ڳv`]c6OE0*!91LX$0S~xzs1JOr_,[vN}ʇztu6sk0bwC-~99'㕌eKUъbh~>3b%"j`rTҘ_{~^Nt LhG#7 +Q_MՔ0B{L״iGWZ 0rl2IJnGiaAH'coZ8;-{ q'1•㨂?NAJUjpODu#%A=pYmO_'ļ淩~ů.FPFBIà0QK6nbb]uǟUX.aO,u^xe`%Exwئ|N@'?--{y:[;&Oŕ9qBCP[`]a즸v4!Խyiv0!5[:Yv@[ړnG> endobj -1301 0 obj +1414 0 obj << /Type /Annot /Subtype /Link @@ -18266,7 +19716,7 @@ endobj >> >> endobj -1302 0 obj +1415 0 obj << /Type /Annot /Subtype /Link @@ -18281,7 +19731,7 @@ endobj >> >> endobj -1303 0 obj +1416 0 obj << /Type /Annot /Subtype /Link @@ -18296,7 +19746,7 @@ endobj >> >> endobj -1304 0 obj +1417 0 obj << /Type /Annot /Subtype /Link @@ -18311,7 +19761,7 @@ endobj >> >> endobj -1305 0 obj +1418 0 obj << /Type /Annot /Subtype /Link @@ -18326,36 +19776,39 @@ endobj >> >> endobj -1306 0 obj +1419 0 obj << /Filter /FlateDecode -/Length 2305 +/Length 2306 >> stream -xZK#Wg{$` iFFou?"EVZjF}lQw - V{|>|9HĿb#_ r0^贇c†B?xpRBኄRYxk-p'‘AχOG$YAJ:㋔;KcZؖo\bYw]>-k<_78k1nw|HǕy-l]\Eeʏ^Y`{LS-k$c뮗ٜ_e5Z,MF)+, 0sa xtiytL)hW*=6pnb _ 4/jEt $ gp53ߘ)b<)3SBpTwH{M2uƆ"no05y˭nx^P8ĐZ hG -Xj}# \1z(\ (!¬o7b'YhUVFD)CrG9Y)cD.UQPN#b:eb*& -ѥj0-4μqy(\Cyӹ Uy}#b-U 9$]֤x)̐Y9N#6+3YN#}}OoZüyV?o0y許o[ -]k*zET~UQFѠ*ʲ_"$qc_(!O)ƻuacdZ2)OV%Jz-9eb֭7UD+5ks8,եJƧffl },{z+7Q-?8{ -e>,ˁ+2Fț/7}9L|=|o&O*?t/mc-rFH[M>"v0z,f:p?RX!Py9ӟ҉m=p5H@ [ :80p^bL.*RGvAN`"RFoңkʜR*UI!3kV -^DcS0-#:1 0:yRUuK`s-, v(*(ѼZSD6U!XV[t8tV谪+1j`d!V0xgN0N -I1FR6z`d!*/R2-|84XyuN k(!N"ez!Rm2V< -X<t] d\Bʁ3G@eUq3-V*( ބiqt 8)i6|mAa8# ".ڹT0H+Lyo m2ڼߗҦ- M ?{7}I9 ,@Ge!C?^Da_U_US|:z:A3\UN-b I tDj]ID3ʼݩ|9HĿ:!^#?>}4K?*p*Bpi:?>{"})p "A pdA`?Q%z:|=|$FVlҡNEiƥsʹ-Gbw]<9zK&r3:ͼ4鸲^Z?%K`r~.&cYc}^/T˜4?ɘne6gƗ<~ihY9eml + +K,,\C3c"?]$|^Cn3+Sd +$'ڮ(J ax\uYG@R6 +PKB[ap ^3 \"FCr?hP1J^qxgnLY, hjE.g_Ob'7 _i:L4]Tv!M{0U JCE^RJq + 4"/i`kj5ByV]7߷,*_Ln+ C( u $n%}wsGJ'5eV qbeW1nP)~Ո]qKKqtN:H}Fwא^!͐ۖ 3׀ ɱ*d#+oVy%Z9r6x)HE$}b:\3dr#z6ɬ%`R2nޝR@2ec\Ŕ˹1VXq~R^2U0\+ڠV<(LT(3,/%TLC/cyqu]۔jcX}Sf}#4v]HXJFq,{tRXy{I +ܞ]`3>B2yu);'I}G ʕÝ_osTc`9WhV;+f O[jΪy,$|ԝ\Ku]Zr +"Ř[oюfWj%qX۫KO:,kz+7Q-?8ߍ{ +e>(ˁ+2Fȋ/7|9L|=|m&O*?t/eb-rFH[M>"dX`al2B3Cݧ?ߥ Zۺ^kB#!t` z1@H}Z9i`"RFoңkʜR*UI&3kV +^DcS0-#:1kZOo`t,|f2ZYlS ZU^ Pky2z4|{ WZOGHbnZm PY1êq[8Gq`U;8){+'x! +0JqFګFHɴ<04-D|-G䗻*r9ٳ@ڼuG zU-~yWMUipU٩׶<>-2&;87ӮZ CzŠw%+RwR"[|Đ}B ?{e~Pj%]tiGT(b1= endstream endobj -1307 0 obj +1420 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1306 0 R +/Contents 1419 0 R /Resources 4 0 R -/Annots [ 1308 0 R 1309 0 R 1310 0 R ] +/Annots [ 1421 0 R 1422 0 R 1423 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1308 0 obj +1421 0 obj << /Type /Annot /Subtype /Link @@ -18370,7 +19823,7 @@ endobj >> >> endobj -1309 0 obj +1422 0 obj << /Type /Annot /Subtype /Link @@ -18385,7 +19838,7 @@ endobj >> >> endobj -1310 0 obj +1423 0 obj << /Type /Annot /Subtype /Link @@ -18400,36 +19853,34 @@ endobj >> >> endobj -1311 0 obj +1424 0 obj << /Filter /FlateDecode -/Length 2478 +/Length 2483 >> stream -x[ێ#}WBx+X̃:yH0I yh=~ `$H5gv$Nu('}@g/_R/|IJ_{Th-χscDG།{1~ <3 ZDעCG -:! -hdA:MZ?~9|Oh_T4^JK-& ϖ?=~3om65ySA̙,ϲ5cʾ )Lئ<Ʒʊؼv~y)AdeX3\?c~Vhʋ{͊ܬѣƅ)z2c"#dZfen`ewaž{0B+W*.ua@9쥵Ӊ^`ir ^GV~0̵d`~ɠ B1"^:#11=ա-é9 Q|Sj/RqM90=N@p+܈bucXdLQ6+ LQxZՀcVg"$>±qq# $Dn߮D\2жs59Wot+9'EXYaB-qk^\a[ay0e}z6ӗUp&XQi/xZz5B[ӱNT:z2#:gf+mu{ÄZcstr-̯DB yTNNJ. 4q͡gnA`q pDYS KrN%FV 7|Zȹ`S`ֶi)%,s1!VB7?J10,>iʗHt\dԉ2ET4띑oCΙ5:RD,p=%^,Q̩s^:5H?%=rV:> *#Ok,\KmC^U7\"y32ju驤ճ)'v)qR?,喓3`lVEZ^Mum;bvh9u+^[WҦm+Y15U @,69*_䴎IIize0{_h@[<^_<DJLmOl T:B[\V*un|p(N焢ӵ˫L_}ήM1-=ݗފxgĺ2RGxatS@WŜ^{Z#gq 4z3>td$2-{IZ)BR-ɳ&3$Mحv}Y&!{A5~g"Opϐ4)c?"ϺN"Ou'M؋E=/FLI&e6ľFYyx -oPy2^Ӌb-{ZIKPos٤f/U+=~oFMͻ/LE.j(v'F:+MyPazW#S/>l->?TcAK e}:kC|4?J-?0 QDe e5kqa| -Z|jKt5S??ˬ) V٨r]|IqQPR$FA_IΥ8k\~ 0Ώ9cQ1~wJ +x\ێ#}WBx+X̃:yH0I yh=~ `$H5g<HKU:un-% o@xЙ׃h%=i_A`c0x>JӢ%x Zq8~9|s!LQw!#vg^4ҋ &GT4R*GNR/Tty^{KƟvl76_)ˠmLegٚcy[\e&lӎZ^lKeEl^;t̠b`|O2,] +`]{^O1?? ]E=qfEnVtyBHQAe=tz miWi?t-YزV 70費uaϽ au+vaw:0]uJ\h/o49O#x +Z?aviZ\]0dPwq/PόuEz~ىkS>Vpkq5l8AV`O  nI11,ZEVV(ub|MY(e=\JFK*8QFL-Z0)MkN4S+}hhbmD4BVY$L:.2DSoKv"*kŷ!HLe)_"EВ /rshrܹS rmK9GWQUkk  ا5e]!/k8J'KsBj&/VC>Wg&{ȞhoE3b})us|3YWBސW 3/ԗ#HH&0_ 3tJz,WM2y5ѠQǛGոFJ8P^´J1KkWq65Je I,݀?TcAK f}:4!>`%k(2F~X2ȚCs0>F->%:ݩr2+G +)ToQvyr]|IqQPR$FA_IΥH8k\ 0Ώ9cQ1Z endstream endobj -1312 0 obj +1425 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1311 0 R +/Contents 1424 0 R /Resources 4 0 R -/Annots [ 1313 0 R ] +/Annots [ 1426 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1313 0 obj +1426 0 obj << /Type /Annot /Subtype /Link @@ -18444,29 +19895,31 @@ endobj >> >> endobj -1314 0 obj +1427 0 obj << /Filter /FlateDecode /Length 1022 >> stream -xWK8WF}X R#2 D+Qw;NW.W̬OR1~&)~&U0gPIy&)cu8Dcv*jSVyC$af}^,FiCCԸ<-9 h"fLqD$_BE,ش-jc`#,ayY$1Jƻm7  6 B9@&<N./\@82``d` ' NVDz Y=aH_9]2 G=d6 -clw<ȁ̒ὴʝZ;*]RL*_qQ8c嬼6q`0 Hw<[CU6gZcų+g$dTJ56\Du|>lܻwz*#d~3Dlֽ&ݦ0{>5-udWdQE? ^rv]v}bw^#1H+%(ǿѿZ,H;OwEkݒ]s:x7;S +xWK8W!b9F =d2 ˮgW@Gvr=\6_sIi* =wp?M.TMq.^M.s2YIT4{>LN>)kU0%fb?60TM+&blƐf&J<4-ؼ-j]ȑ~)K)˺W"AjYӕrЮ9Eڜ`> :f6};=_ Ϋ(RZW$ o\9cHRM jq1i`9*aJUcUn87csB̡Ȳ hN79 ^ߥa/H^oݜл,Gvǀu$(0X=f'y& M&+L:Mf2-peeNqsX l\Cv,Y2 10o\; fi@I29FInQbnHm"8 U(g`o;md!$6edupfl䢾02bW^#X=y}}Ic@wwnZ l<9@&<΃./ \pe^+l-E=@N+v:=se= z,֑rR[p /pNzq8b Y'Q0c;]=\FdR*wJK߂.1em%Kތݾ3WKn8+ @:=aܲ/mδ"wWIDq_kls|hI׹wDwd~3-Ƈ9hYV?҇MjKa|kZȶdQE?ṋ :4 + +hZBк +:Ÿ`f鮶hpr[+wNF2a"]?V endstream endobj -1315 0 obj +1428 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1314 0 R +/Contents 1427 0 R /Resources 4 0 R -/Annots [ 1316 0 R 1317 0 R ] +/Annots [ 1429 0 R 1430 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1316 0 obj +1429 0 obj << /Type /Annot /Subtype /Link @@ -18481,7 +19934,7 @@ endobj >> >> endobj -1317 0 obj +1430 0 obj << /Type /Annot /Subtype /Link @@ -18496,75 +19949,65 @@ endobj >> >> endobj -1318 0 obj +1431 0 obj << /Filter /FlateDecode /Length 2586 >> stream -x]n#}Wex Y`<$p.@۳ޗ []-&-{!KnYuUTE{+#=K~umgM -V~'LoUvL*/)}lc9lgiO&Yr9gCmAϻn=BfG3 7Hqo~}S*ݿ?XD $(o ^9.Cjϡ?L}>kzԦYwK^W.gߛc?4G9lYiq })fItO};/ldxlΝ#g>6΍P0+B k?fN9g5|Z?12=sj]Q<*w=9F9&lK\ \KpyhM-wpDOԱ:N&ǕțZ+{D8g)qQ7WE}zX)O37݇jdƟ&wM)|&wkJ~S3o-ϟdXgX%ʉD¢ϔa/ۏ5J9̰Omb׻%V  .`$tJ$yVj-ZT("3qJSK$IIbW Xd8 5E !sEI2⊓6)%9e n;/tq;FMBhS(1LF'CQ*yYJ]N6./M's%EaB8%A01 ٹ##B%V2b2Ƒ5k'AXb:k,KhCF2-"!A*![q[EK51}^Eͼ?X`X]&L  gI%-/IRT*|0ݵ&"( `So"j6Ij0F $E"&xM2 -*Ina63E~oT8_{f=eǨEk=9 $M2Pp BY;؊/KzLł1gkP,LJ>ga,K"Il:f -`W/ ء2:õTnؒOH*0,|V&Qf"!#ꢭM= zIA1: Š[ BD\&/IK\T1&PD^r-R֦f6%f'9: -g[#s&5 -E4Ldvb/y+ -+"ea H%UU+ -v&&Ԋm{ -,hJ`ߣ78ʜ'Y]fwؒz*T9za_bT,/KWNn,I5LwZq%Km"b -\tGK 1r$ -T. -q2KdTǖJ vۖ\HBc = kˠE! ʃ#OB\,GtmDa]0S)M5+ؽ|Pfoq`7n!n 1V>N$V#G:'TUܬ};E7Kաyݴ*BJ{2(XO:*orh^m`߫VF;Q0G$=rbC^-9}LCܻ}ڊpp ۳L [Mɖuڐ%جzU*٢ߑILJ9}Y՟?ǷGspQ uM6iwDkc{"L,)/ᖌ݃ +::Lm.ov4`jD +giOE+Pnv`SU6>D`Az\_XC=~h7}<)6弩M|_iw~R>ڇ<~o:nYPes곭xщȩ6˹Sr9o>=aV Oμ]_:\Ok m A8貒 'I<{f̂>7 vL|6Qs5 >6̒zt9a1v#ct~댇Ei*Ƕ͹221|m/;0ihbpnİY5SaԘpgN]Ga:Qf~9Atl zpȝGn~~hM0_wa47좷C<=u^th>%9?(~N9N7HrSySF}9e'b qnoif$_ڣGЋ:O~}4əOnM=_<5Iy*xEO$F2>S㧿o? +sa'IP׻5V  .`4tj$yVjVƩUg%l7N g+4q$]`,!Ff$eY9lRKtF% n;tN#R& bW!)gH1LF'C/fm%+w;ZY^N粰EaB85pP(Ad|rPxqdDIFd !e"`(Bu@#$B!d-|h {LfA[f@P˨d#tWfI.ShDR )ƺlKU!Ԋ.LkFwIԅA7550 붒~IQ(HIYBTT% 5[")(sX$ 3!?7L/=3KOerApA1 sbhkۓ@jI?Az[upi\<7Xq;qv ɚLѧ=e1=5XD!e!V;TFgJP!e [ a>@ +$JL0QyDYU'ٽ2qAW/)d#.N₰d qAuL= uܽR4I$ڈ$Cn@&u@amZz`f%9Q8H؜0A,U4DKVal!d":KV_ \:X+۵-0ٝn؆KV;sFnfvy߉cK=Pʅ1>\3 2`yXr*vzvk`M92 9hՅVrv!E}b$|$ +l&\e_@-r=-h5@z֖AByG5+zY%:&cQuG QD/Wji"LLtb2N32{scq 5uu4? /ڮ_ T@F#7AO Uclּ-Ե s +;)+U`X ~A9T]0.?su{+ߞ=Ͽkijrsq|ث} 6|IH&GtXO(T+l;YF7w7o\CiUdduɢX#'U9_/)1oG((qS{Qw' +㠺GNTv3\%Ǐ1~{=i"9Ą<| endstream endobj -1319 0 obj +1432 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1318 0 R +/Contents 1431 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1320 0 obj +1433 0 obj << /Filter /FlateDecode -/Length 2545 +/Length 2547 >> stream -x\[#~B*p0$]݅$%>>} CJjU)=3rǶ,n_]Tkz hAŘӇǝVi+3&3U6Fi *m:m߻>$TA >;Ts`%v.oUa'ñOva?El5QP3Aa( -!ߜdRze{3+ws֊DyKcyp:訢?~7Cf䝟ϻ_6DF@]~1Mή88|vޅa|>㸯W\q_؞mWC)^핪 aFg}nnF8329踪Kpݢ = tUY`U9EXmh5g]eltP6 gqFW~XͲPǁ<%ӕdF/]Ȳ9WL`}֘ ;ui~65@U)eC΄A[t?ӄAn`AeY-)aXׅ0z,kCl WュHGep1+s>\uщCH~)3byVt_pxF~LaGFwtA_#D.>_ + piR͑cg -ӝPaL.v%* 0-#-&/V̑5w%!~^;[]]˝:zM;C'7n* GZ(.'WN5pOH3ĚT尐Y6so2;€ BASLBΠKJWiON—KD"`|!xRr&)iPt}1: -GJzFۜre Fn3tRv߀-В/UQ43rr - !b2"YQVF/R`I9Af:IiT,_ZR%GGJ8oF3(1_B2OQFc;0J b -F(ͳ W()d!]lׄne4(TwRdX,^ R2)RX@/t z 8|.1P9pdt*CTw5=:V{@*e#"Lf7x)d[JYȧ.=THsH*V1½q Rd LV2[?#q YtCwwu vC'0[Fc΅$A'ŦʂU`cʼW:G -ρ:O@m$)5Idn0=0$KI"lUG侭!^GrY "!GCuT@ InYbP Yަ]&Y*6=T,?WE[Kp$C z#sNY[Vw|l&v dGk67#!] 8 -]C~^HQp:)`nAJJ_"&>*RHXwt2{osƫ]] -i& VZXBF==Iބk/U~:=3Vo| |lyOhsڢV';iI<'-̾jaz[*eo)>˦[JQ!_o=> >xf ޓzRDڃ1)_ \; -h{>gY53a0i %SuKEu7a< {R +x\[#~B*I  dfw! g/aɃz_fZjU}v -KWU':P1aqU@MeCA&}r1DAk:kuݿwy}HVC {cB >;T""}aay ~?}x +b0|ʇ" ʆɑM&U+]7"y=aHM4t0Ge*?}w˻=dLIkC\5'i;W=cqmv3~bݤ4㧸΃82!H껀Ugu`T(F 3[N!ۂTB>,uaBERňm7:XT?r2YG@&cu;ԏ8Ȅ,]qn\͖sYX)NM#łV Qf(^>R~YD17 ll4 t$ \JI,<+ Z+a:"m] b3W-\+5à *ztx@xpYEHA0:Bl;Xw%$hN!)v[BiW0nVMs{*OUVfC%s8|y!*–Gc!9ܦq$3~7Wt n +IsKxRW7v1!/QBJ꽣){b7 :EӚK/~{z~ 9*_:u{-d!7g9f?XA6=eS>:קIK +0Vmes~T9Ht[p.nf^b*Eez-Kg85zO4AB*O*)[DVS42[nzE6#wpIۥ= ?zC +C-E=1^P*>Mg^oYR0b4_d%Sui!'r',+ endstream endobj -1321 0 obj +1434 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1320 0 R +/Contents 1433 0 R /Resources 4 0 R -/Annots [ 1322 0 R ] +/Annots [ 1435 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1322 0 obj +1435 0 obj << /Type /Annot /Subtype /Link @@ -18579,31 +20022,37 @@ endobj >> >> endobj -1323 0 obj +1436 0 obj << /Filter /FlateDecode -/Length 1601 +/Length 1600 >> stream -xYˮ6+ehH p((-?!P_93CFM(A 0>ޤp(Ft?wx3N)S^(%c>z`y7)@8BMY 9}]U{crP^OUdF3qZ+ ~6 D" }U7>{xRwdw Vx&dLᗟ~񷷓fu.[&B{C^+.";M% -6x}w|_c|lf왦| - M$Bu̍IU!~6,Y^44>c$ILouV`]W>ڒ0eLԝe;?]vchҸO9kK+FwǦkuD$jaMbyfNbNlVr#/ŀp'j}cKbA@T/ؘ~ Ǫa־";K(m,\WJJӞU&ss/ `f&rKɅf}2 o}.ya3*dG_T Z%PIig4B g4aS(G $Rc^@2V[m;b滖\ˎU:\q-}|A~!*}OD;"vߕ^xY99LH?I.5S5G {X7*،=\9m-A1:gt}U{gd? 7 Xy6yr<^*?2#V`[\G@G{@1`re` _||i#CfXTc},&=Oih،ͺl+%ݦuLyWN_){ȷ"e?Ye^'RQ:Bt6VCs&w0Yf] (7ogi]s=ĨT&)I|ճL뢶 +E]~L(U?DZڼX&+GDYsIBc۹ -%de=)Ĵ@Je5d~ZIy?0DR<$m`;?6\uDf(Mj:;34ڀšFD UJwb]^Cr?0̱4Ź7bSxBû08 E +^iFw8jgW>,NyԆn#nK\NJݢU oW%NUqɠ^48!ӫhS^V$/VrA4?jo͆&lMz]jIfIKAޑ߽f#(&XQA^{_~.*a^X^2 BXX)i6AocT@3(CQ8x8AEa O)6Q@Q(4)ܘ\幮gÒECxK$eCg zߣ-n<ƀ/s/ICm}|Z\]O6AF~îs@Ԅa1 |ZW$f`r3PP w쳜[Ayi +V `όwMVI(+[eӑ&@ u>N>/'c1]>ƪa"6+ %gt}. R!.4`AJΗ; 8TD<4'J`fe?+;eoYV?$5vҟޞd^Yv׎!!Za KtjpNĔ0UKtI`nͰv 3F<]"߉g:'͓t Dob{ +Jj̴wS$눛92ӈѓFS*ڥPޱ纱,ݮ9:IKG-.mJ6h?6F9hB!:P} K*5$#i5ۖV0#^9~g췦o]K.LKӎU:\q-mR~!jvDlߕɾrr + ?R +rۮQ10%H3&\̶jG@^ǸȨ;,<2Tj>t(HsNS~-'D{MKjg;?+> 7 XOCV|/K׏zl<ة=0<pW# 5۠4Kc -\s7g"m7,HǚUC^>ǻ9Cǝ9l9+%ݦLyW"_){ȏ"> endobj -1325 0 obj +1438 0 obj << /Type /Annot /Subtype /Link @@ -18618,7 +20067,7 @@ endobj >> >> endobj -1326 0 obj +1439 0 obj << /Type /Annot /Subtype /Link @@ -18633,7 +20082,7 @@ endobj >> >> endobj -1327 0 obj +1440 0 obj << /Type /Annot /Subtype /Link @@ -18648,7 +20097,7 @@ endobj >> >> endobj -1328 0 obj +1441 0 obj << /Type /Annot /Subtype /Link @@ -18663,7 +20112,7 @@ endobj >> >> endobj -1329 0 obj +1442 0 obj << /Type /Annot /Subtype /Link @@ -18678,7 +20127,7 @@ endobj >> >> endobj -1330 0 obj +1443 0 obj << /Type /Annot /Subtype /Link @@ -18693,7 +20142,7 @@ endobj >> >> endobj -1331 0 obj +1444 0 obj << /Type /Annot /Subtype /Link @@ -18708,7 +20157,7 @@ endobj >> >> endobj -1332 0 obj +1445 0 obj << /Type /Annot /Subtype /Link @@ -18723,7 +20172,7 @@ endobj >> >> endobj -1333 0 obj +1446 0 obj << /Type /Annot /Subtype /Link @@ -18738,33 +20187,32 @@ endobj >> >> endobj -1334 0 obj +1447 0 obj << /Filter /FlateDecode /Length 780 >> stream -xVn1 WHyI] `QT$bXj In2S(y89θ πDc -ez#,r{0萜 ^%#ĤD `,$vhz4NyH1!`v|tT~匿QߧWuy˅S.|sԞzdd+_}Z2]<CnN^& -h>?VL'&3H#mD޾~ fF;x7LJŠSkV!)ǎ-\Vӹ.i»w-@۝퇞\(ې/sבǖAإ[P2'A@i.{͹j_c`S̹x :9p\:QVš""b$B] ;X1,8c,fW6{]N_&twj- `LWtϹ;Y̭_Y/H^FH(d%IUfpmlbpSOA>C%I*ApT4,ZE+2q)@Duĕ7SpQd}RdˣTVv 3Zxo8&)=.Ύ"i -;T)!QCgjd뷧)H1 -ȅN~΁ -S.Cl 0a]7ON{L1ߑ0:\b[ i,:mwzvsqlCY^G[a? +oA|gΧrQi6~;~--bO1&~I'$ػ¥ +r@D[ k,CЋ[Y $!Ŕ|܃|}|7ّ㻿 ͦyȑQeHIdm3J6gBK}ĉ=gwK{\z0~W=8|7_W,M^E61h~_FhMa {xUPnYhVQz#af*@syaiKjOܯB=}Pnؤ,ka1n)?ˑ<8F4OhwVĦJ.쇗gf%R[~%^^cB{6S)9Qxo+DJr76US?C 3'$Y 5a}xDW|Ao؅RBRST8٢b=7[ Oy畎kfyDE>[7cLoW- +v~YQ(.zevٮo/Cp޸| I#?rC߲s.q9%N^ZZͼjæ + BNa(}hA]H!1Wk jm`l6K8cVͷ7룫rS endstream endobj -1340 0 obj +1453 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1339 0 R +/Contents 1452 0 R /Resources 4 0 R -/Annots [ 1341 0 R 1342 0 R ] +/Annots [ 1454 0 R 1455 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1341 0 obj +1454 0 obj << /Type /Annot /Subtype /Link @@ -18846,7 +20302,7 @@ endobj >> >> endobj -1342 0 obj +1455 0 obj << /Type /Annot /Subtype /Link @@ -18861,31 +20317,31 @@ endobj >> >> endobj -1343 0 obj +1456 0 obj << /Filter /FlateDecode /Length 2094 >> stream -x\͎7 )UD% ȡ@ m-?@î7KR 4Ҍ&@9d^{5GDڰȟ`bLpx{OqO<<N8b3D`F ^ [ˑ"Ͽ݂7D".Jkd"_!K1ͻݳǿ^!sYϭuZ/p<"܎򈵏EmבK}AƃL?WKe\Ĭ]Q~kphTyL{[}{Xq!e d42S*Om}mr -pĭ5a>tz6/qk~ 8O;/Wl =۪m;P/^ƺsxXaqWBhtgZXFa\Biql٤ qoX1%#džOGr;Ǡv2O '>A+U]d˙^~uhKβvlz&`cYHj!dia+Z*ta4ie<ˍEZFV%]~e48F1OUc^ adN+s˹$!y6Z#m2G,8F E˪aQ>R"hb\fV^(?q-ѕBZv(6yH-/yޮ0ut0lcJ#보2GX0*[7'fĉpZkgrG1-wD=—[670N atC+w3Lqb¨Q c>1uibś"O52GyJ7-ѵZd,X妅N}&#לiq b>ZgXõ8F1﬉4*N at}V(}4cX 37\V1;i -xb5B=[?:qZv6+Yd7i\XzES23x)͇(2ǐҞlevyn J92Ի4wZK^~KX&ȟ&m -N b>u30郗/3;p"wp鄧G' r.S?+ +x\͎7 )UD% ȡ@ m-?@î7KR 4Ҍ&@9d^{eY#R"=ȟ`bLpx{OqOyWyy6q'4#Ĵg:/B-?w?#3)D=`?=co=ET]0>4E BcrwgC*7[뢵^Xo-%yțxGXs;>#>Que\QxdӰPՇj69c,Ӥ5!0vJj0m¨S4O}l1Pfqz3j<bYe2]LɌ!lYoMOXЧ&A^`  ik!dnCmVCZIrG1I`!ZiG;qA(CR6nyR !ݎ8p;Ni}J٣DBf~9]2IRjyĘVB k= aA {sd hV"ۺ>/cݹ`N0uC8+j!uEx3kQ,0.yP Ŵ8z[l1yj'YǢk:ħ-XVW1?q&Zqڒi}󪝌V(sB8MJݹ5xL'%&ٮKK @v~ Ϗr[~Gl6%w>Җ\+w>1LBhU+wL+b!X PoN>zM.*VE)+gԻ xF!1'Cu0X5HˬS.SƠ^:?/>_kv}^2(Eo4)D Ƿ7'^\) +#=}#xfpGc^{'<apK/w b endstream endobj -1344 0 obj +1457 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1343 0 R +/Contents 1456 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1345 0 obj +1458 0 obj << /Filter /FlateDecode /Length 2463 @@ -18900,24 +20356,25 @@ F jŐtfsuFJk=C&6 cB0CiW79=Ec]M,FC4R)CQ#8@6 A*%8nY3kO"c 6ҵjr#8fި9}8ćC4_Z@)0(jT4pc෠3E;G`a Gk]FZsf->`j* [q~Q-=4{şKE&c'=,=aY䣊Nh]ryмѫټMmeaRտzϩ+ q>Έ:sZ}QEC9m{i8:1h~ -P UmeN=ԗ/Hѿ) Wcĭ#~D"v;a~΄TZu&- #bOg"̫3S 1¹X$Nl&sd9isމS+#rѩR&xn7ݏoQ?Ao9(އ |uy+7\5+og1?RTҫ%3Kꎕ~ezهɿ>c9%.FWtkuF̍E7R`ÚެNrI sWJr=I^12yiiid +P UmeN=ԗ/Hѿ) Wcĭ#~D"v;a~΄TZu&- #bOg"̫3S 1¹X$Nl&sd9isމS+#rѩR&xn7ݏoQ?Ao9(އ |uy+7\5+og1?RTҫ%3Kꎕ~ezهɿ>c9%.FWtkuF}Kg%Q 8fu"0KR5LR_I2 + %4)K{!i8 endstream endobj -1346 0 obj +1459 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1345 0 R +/Contents 1458 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1347 0 obj +1460 0 obj << /Filter /FlateDecode -/Length 2500 +/Length 2496 >> stream xZ[d~_φȺ_`hH 6cp$vyˮa)IG];Co#MU_8r>^>>8sӿ4n>1t4 Nx&J1Ï_ys;BHɌ֛8B߯?> Ə?vBR#+ɂR㇃S%f#Ff_ ̄tzϬKIǔK @@ -18930,1658 +20387,7 @@ mL S4T?{eGu]}Yv|>@N!oȼVm{AygJuF-{V'3D^jædJ߱9R L@6d Cį;+`XGVqW;륛ﶦIRt~EM?6yG5F[ If3v=dіo@;{T;=B+^ðn͚0K<*"t׊'HI,v6B`~ìq1FUdԠbg͙ʈ&M% 7ri5HN;VoRB*#ܢrk0lr\ńN !V~W5:`@)I9ԕ9\uv^>%C -ܭ%,>14,k9adף'lH|S,v"pppiN'@'):Rte H`|^WIϤTiJ&tX #Y ktxrHѼ퐰#Wb/\#NOB:SMĭs*^>>22tlMM (:mDǷvVJhբǪUDDj쏴gex 9l&x Lg}=io |u l.*[ _Du-8p=dL;2[Xav9Bc`{D"7~,V2DҨvkDќ,Šr,1 ,BTuL0i1pB;^hÛ ߁sʕ0zbɶ#H|QV(3лtZ)Q5#Eo[A[r;f)d*%#V8Hm*f c20XyÌUh=x%]tځ)ԡ +3x_ߺu6j7iI^ #D%ab6 ZI!>rOib}pPGMSPg#T$SG!֐LxPIy .7iEie;JG'xkoS+`((RTvT2!H=mLS$.&^A# rJ>c)wch$F)u/79XL3Q -endstream -endobj -1348 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1347 0 R -/Resources 4 0 R -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -1349 0 obj -<< -/Filter /FlateDecode -/Length 1836 ->> -stream -xYK4CJ@Bӝ%ʏˎ=p`Z$v\U_=r^ }pV/gpK#tO1tv i J1nr;r绠y!%3"Xoϗwg eHc8Go_N,y˧ӻ_/"'*/'΍\{|n@Y#to*zCg86^4N1x-2~mm|M+eek}KsYtN/e$˥#"sM h¼&nb4jx\J9 A B{Ko`2ynqtt| iu}Y: N\|ϋ:#v1HV0催 qI'cRCP// -D cgh@ 3Q"h4%p1t/z9)(3DT3I̠hT@{#ayn.4c`0fqg("Qh4nLo4*-]yн8TV -ł )sOE9W'^5|4u ě A6=֔b\׬/P0MxYY%ԾX[>"Tax2q"\|ƹuvsN_z?*X ]/KxTT6DA\%4 A:HƁC]sр+`0Wc{"nVB! [uW{"uh#Y1H -aY#936к=܁<s5+xƯ1`~+Izz sΤ*@iדq(Q=1T]WLd(S6YH)`0劾-qԳQv/rx=Y'cx]CjftyRja\i;%=UݦܔSZ )-J2d[^Ֆk_zs-eP2Egz mGa6a%GtUe}|;f̵Au/\`Ab8΀tg!0pcA`f> -endobj -1351 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 667.799622 39.386457 652.785222 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/11ZSD.png) ->> ->> -endobj -1352 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 667.799622 112.136457 640.799622 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/11ZSD.png) ->> ->> -endobj -1353 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 640.799622 297.637795 625.785222 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/11ZSD.png) ->> ->> -endobj -1354 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 558.220422 39.386457 543.206022 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/42340.png) ->> ->> -endobj -1355 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 558.220422 104.636457 531.220422 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/42340.png) ->> ->> -endobj -1356 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 531.220422 297.637795 516.206022 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/42340.png) ->> ->> -endobj -1357 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 448.641222 39.386457 433.626822 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/ZZAEB.png) ->> ->> -endobj -1358 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 448.641222 112.136457 421.641222 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/ZZAEB.png) ->> ->> -endobj -1359 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 421.641222 297.637795 406.626822 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/ZZAEB.png) ->> ->> -endobj -1360 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 93.201222 39.386457 78.186822 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/Clear44301.png) ->> ->> -endobj -1361 0 obj -<< -/Filter /FlateDecode -/Length 1094 ->> -stream -xWK$5 ?8Fs@aR#zt8KytfXMj:؁ȟH`bL0q|&O^?.!!!@4֡ "&D/ϧ?O*`map0$YW/NG0viCe1 jf ᩥ/͢2i $X%#ia yq÷eD%5@\J81yb b g?~ˇӈӯ򂏿  -Ll[[TՒ #lIH?Rʘ y"lJ9aSKJr:oқb% NИ`,DD9TcrYNƫxA.r_`JoDmȾ;Ti{ - Ua^:X6gg_*TM})tR'Mb3s&[D3=gX3lj‘w\=W3 =E9Teh5]V\6nm~emSgjc&-IEw]1,q+%9HƳ\|Gx[QbV+Ö6wMMy-?AMq4bG;W_Fƞխdkt +ۙ2Ha -MI,V-5^g"dU2Wy,y.q]zPqLd+lt))A -n_ᱲkk»4-& jvLH3ۓoo~{~e {/jy&iu ћOm|9γVV9RGn&x 9W%rA5r1%x+x[i;=Ux}b1E;+@i - Rr )FW# -endstream -endobj -1362 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1361 0 R -/Resources 4 0 R -/Annots [ 1363 0 R 1364 0 R 1365 0 R 1366 0 R 1367 0 R 1368 0 R 1369 0 R 1370 0 R 1371 0 R ] -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -1363 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 771.023622 300.386457 663.023622 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/Clear44301.png) ->> ->> -endobj -1364 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 663.023622 297.637795 648.009222 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/Clear44301.png) ->> ->> -endobj -1365 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 580.444422 39.386457 565.430022 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/ClearA5157.png) ->> ->> -endobj -1366 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 580.444422 330.386457 472.444422 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/ClearA5157.png) ->> ->> -endobj -1367 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 472.444422 297.637795 457.430022 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/ClearA5157.png) ->> ->> -endobj -1368 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 174.033222 39.386457 159.018822 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/BeforeProcessing1.png) ->> ->> -endobj -1369 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 174.033222 115.136457 147.033222 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/BeforeProcessing1.png) ->> ->> -endobj -1370 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 147.033222 297.637795 132.018822 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/BeforeProcessing1.png) ->> ->> -endobj -1371 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 88.852422 39.386457 73.838022 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/GrayScale.png) ->> ->> -endobj -1372 0 obj -<< -/Filter /FlateDecode -/Length 1122 ->> -stream -xWM6 W>Hm/h/zh,Ų' vؖ%q=>I@'9azWzlg=_H\A8D ޻~=}c\Ĝ$ZqDZLG!;8j Nn,{\ǀ ֏J]Ό4= B8 &8Bq~wFK>CpB"! 'O?ۧ S7E. 1;)Jo z֪IO둖0)oӆ4q(~k]M4Q|YIg $OZt<6t'&(>mF¨Z$.B]K{Z)ZHEGYj_ncpI'[`7_(?9BI%=yɟUGcA .pWjS٪ڤ$5v}R+cBsI&g@rJ.agFF-١&NͼPZ>,J^d|HۡĖ -%>^dLVq}W͹q}˙T7J -\Y뗭8劋K*w蚻֯zm&_KhՒ<\ZqynܔrQJ)#7t!''#Sw -.׶XQ kK4Xa՜-9@rӔj s=^GD+77._8g۸ !"uglb QڅO5?Z7n<&&WMH.ُࡂИMAqڪV)G|2EJǺFHV֬(?< -endstream -endobj -1373 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1372 0 R -/Resources 4 0 R -/Annots [ 1374 0 R 1375 0 R 1376 0 R 1377 0 R 1378 0 R 1379 0 R 1380 0 R 1381 0 R 1382 0 R 1383 0 R 1384 0 R ] -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -1374 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 771.023622 115.136457 744.023622 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/GrayScale.png) ->> ->> -endobj -1375 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 744.023622 297.637795 729.009222 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/GrayScale.png) ->> ->> -endobj -1376 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 685.842822 39.386457 670.828422 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/InvertColor.png) ->> ->> -endobj -1377 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 685.842822 115.136457 658.842822 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/InvertColor.png) ->> ->> -endobj -1378 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 658.842822 297.637795 643.828422 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/InvertColor.png) ->> ->> -endobj -1379 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 576.263622 39.386457 561.249222 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/Scaling.png) ->> ->> -endobj -1380 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 576.263622 342.386457 468.263622 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/Scaling.png) ->> ->> -endobj -1381 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 468.263622 297.637795 453.249222 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/Scaling.png) ->> ->> -endobj -1382 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 385.684422 39.386457 370.670022 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/Dilatation.png) ->> ->> -endobj -1383 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 385.684422 342.386457 277.684422 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/Dilatation.png) ->> ->> -endobj -1384 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 277.684422 297.637795 262.670022 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/Dilatation.png) ->> ->> -endobj -1385 0 obj -<< -/Filter /FlateDecode -/Length 1881 ->> -stream -xY_6 ϧN%Q0l+pZa)(Yhŀ%p,KHϏ7? -!aӊO1{ïz!)ΐU6q  -@ND,ݛ_>ET5Q.̀!}?A?HC/}A݈w -'@Lv7?_HLi椵܁|?S8Mi̙2ʘ:i>/i^nPƩ9}{sOb~XyuNGӺ4̆Jۏ[6x!QX鴉=\[ X #pfR3Iim&]q}M`/7zsnu5WEZkQ []OUT6­/ K)C q&{ pD ͛W_-<*o#\bWQdsz+wvY\{-]]%4{-ago.B8l&J'rU^P 0αng,￞i -endstream -endobj -1386 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1385 0 R -/Resources 4 0 R -/Annots [ 1387 0 R 1388 0 R 1389 0 R ] -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -1387 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 707.212422 39.386457 692.198022 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screen/../Screens/Clean.png) ->> ->> -endobj -1388 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 707.212422 190.886457 653.212422 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screen/../Screens/Clean.png) ->> ->> -endobj -1389 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 653.212422 297.637795 638.198022 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screen/../Screens/Clean.png) ->> ->> -endobj -1390 0 obj -<< -/Filter /FlateDecode -/Length 2184 ->> -stream -xۊ7_@/ZhI m6)l7/Iait#hlo6i ]㝱F:4b^ }pVgpK3})\0}L{/|;\*Tw.(8w텐7qwG_{@4 -o{,@ag"D ~ :@!od XϬ̺ĘtL$dO&,a;9 s,sʲY{Zo?o_E$HFȷn8@#`Pq5|X|f48=\6xmzk\^28k"auNŸaymm*87D"c^ǐ̘ -#Q̳6} Tx<Ѕ8}U9Ŭ6=q&% dM$QQc`1$L*Jc1` X& -OvU?8*%ng P -0wU1@mH"Sykbnĥ,W&LgٻhGQ3V/nV2`F*j,H 6>[g4ԘVf皼3Oٖ#yȚ9Gxb \ #ѝcZ e<,XY -%q2t *f+zS$0 nvE֣R@B0GS e=S-V JdFMG4Բ'Vjf+>?ߧ -hZ -ְ)I]5 ,)~0DK\+SƢE6r0YX$>Ad*0q7$6^ -,X^FߊP&$i yN -|E4KfT2϶^w^flh[ %}HC m̺HCM,lM ҜI5OU\C fFcJXʠ6@Whp$sYuTX),Zr`žV?N|~Ofޥˆ@0sB? PDVz1+/UyXe=O[Q/7N1 --z5EZ Ф6 Tܽ3xpfz9jf\Hl|6Gl~qGl^\AReԩtT`J2Ox8qr.F#iDOOR8GJ }dt"; Tp JZUV7ÅhUS:{` -\H]*_vY0˛mp@l!]4e.hl ")#W ▖_xkX2>8ay=WU>]}w?m1i()-/)͠_rQcfB,-S `Y ѮN@$,G5boN'9 `[zo55mlSN-Զtd`2h*hZi&:DQ gx,ϨѪpsZAZb#lm!!!ya"w0k"vx R^U&ؘm1,{sQA?Y3R {`㹆Kǃ[iic -5=:7oFLl劓d8}/$ -endstream -endobj -1391 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1390 0 R -/Resources 4 0 R -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -1392 0 obj -<< -/Filter /FlateDecode -/Length 2272 ->> -stream -xZ͎#5)mi4J@B:6x n$r}U+9řssf54~Hˬš+/;9.Jɴϗ.~%مs!8G%,wBRː SA_]8nh&w88sJ-o^Ïz"nm vႄ&{5k5~u[ʄk{ yuy㽆7sgк_rWSQ:vyqy&p ץ!rldT$c^Oف[WQ FbJ6cS5+z#DZ&+y_'CKW כ{T ʿJt'/oeI5mN}҇"sTXAˊIn0*ZI ` lU\\SgHQOiD t"ƃ@)e@"K@NzOC2d7"o6U9&茪 &Yyz(@w`, --ߠQ> -n )D90WýDSeL$25E2 #)b e!1 P !}H(+ح tOzbXz CVw' I=Tߪr,8yXc|wI -XAZ4?e[dlxsi_#IX.H$6E0(oŭ`\;i^̴r/Ñi+7Pmp8xzeAlZb?pN sW |Vy/N~eЪ 2+jBmԊ0$@z\!WkgT Q1zdUm¯ =HyTHu&yRiѓ*)sVq5s*\ļQKPRM>V4g0dF8iq;*\$\sM;ʡ>!Ho`O9 -D"o 44Ѵ:4q~j%_;a;Ʋ{J,B%|Syl݅Һ#5|g1#s*Ez2ܪጤjZ)P&Dr\ǧ5CpbCce"s+F0d]t!Sb onc1VKcADRwb 6$PiL&m 7i ->_ۡA} -4MnZVǞQug$,S.հMtD#VFcծ93ɛ,7 -L8aH(l[k[F}\fPT[pPP*~z]mvѓ5=.|rhh,lyJ.ƁfU3T$HX5nOYʽU#i#_D nl|cЧF:T@5ZzX*4VtB h˩NA[*%%(dκ'ɜk$]F?U !UDPmS5%ļQA}?J|uVU=HK9Q(BnvڣC.r>VCLuM$T"s4 {k C&6w]|]Y}ߜ/kCq!44E{l՛ +'TEA[PgٶdMFW)%Q$,7Hc@WI쏵/qݔSfZ"͘%m~Jŏ@>|O?ƃ9=M‡3W6rGdX * -endstream -endobj -1393 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1392 0 R -/Resources 4 0 R -/Annots [ 1394 0 R 1395 0 R 1396 0 R 1397 0 R 1398 0 R 1399 0 R 1400 0 R ] -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -1394 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 637.770822 39.386457 622.756422 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/DRSFalse.png) ->> ->> -endobj -1395 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 637.770822 95.636457 610.770822 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/DRSFalse.png) ->> ->> -endobj -1396 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 610.770822 297.637795 595.756422 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/DRSFalse.png) ->> ->> -endobj -1397 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 528.191622 39.386457 513.177222 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/DRSTrue.png) ->> ->> -endobj -1398 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 528.191622 95.636457 501.191622 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/DRSTrue.png) ->> ->> -endobj -1399 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 501.191622 297.637795 486.177222 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/DRSTrue.png) ->> ->> -endobj -1400 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 101.433222 39.386457 86.418822 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/TestsCouleurs.png) ->> ->> -endobj -1401 0 obj -<< -/Filter /FlateDecode -/Length 2994 ->> -stream -x\ێ#9S|F} ,"vAg*ruL+>.u*c -?N_1R~^&1AE#񗯇:C2"Hb8*p*ux<˷̀ߵ:X!w~)$E_N;|M2Y_o]2#h52Et$ p/w|T[r'|0O8~LJXp^ cNQFC` Se!|ORylV TвNMa8| 3:Ry»+uL? u?̙M^ m"ADǟ$a?¸00TF~Y\M2| F?]>N_rMHirFBk3c*7}LCpW&PhyNT5]0 p F`rE@ӘHHP|îA럿A$x-83BvZ7o4 -.  \M -]+Th.E S9n9yqՕ\\v姫!*|Zm]HKI If.: UWnO>\1u.8HXlV#F3S)"A!%9Yu+uA TM;% -?b<=\2Wr ML|uQj hZR{+rI7rN9cSB<]ܜ]ʫ8']CR%XAZ=[_Q{&^ (Ĭ6*" rL,ȍ.,&OʅK%h$g5?RQA.wS@r1RPhdJq)fghش>raq1"pAs>xet%|^~,Lepҧ7jwUf.KˮUrt){H^O.|xޙ@J-#[nmY$T!^<'NYeLJEM|+!uHB+UlT{uiiYwb<rxSօ$R@Il Y:N."2 -*K!D:/C-B$ ɻBB *gLZ "ɖƯ ҃{/k몤es%p=n&SB]\ڂ7Ciၩِђ* ٢&Hf$\4<^.V%-Jy0B=-JU %յ3ev颏-Cfz9 2cހeKw@@1Qr /-V.]ԂLx[ -ĦOL<: 0E[t<t.\'lN}M ԷFw Rn R_)%rJE}- +&k@i$FkVf\rHPqzt!J6r.KYG<FT5sxpH47 ;"ĖЍ[tRٰv5(5䢋b N(dd> !&> -endobj -1403 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 771.023622 555.889134 455.447005 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/TestsCouleurs.png) ->> ->> -endobj -1404 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 455.447005 297.637795 440.432605 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/TestsCouleurs.png) ->> ->> -endobj -1405 0 obj -<< -/Filter /FlateDecode -/Length 1815 ->> -stream -xZ͎6)e8C=m!(z@"HeKYz\#ΈW%Boi|~ܰ(ΈFlV(("mYf-O_7mYdKdr}pimߧwW;Rz@js jtP>qQ!eFT|v,NxHCC՟h{G?z}8Ã{vQWG+< y9zhZ4ph{l)ko0?woP$DfD^ 1v|1WOxXZ0[o"B@|K /su}gvø2ƙ~(t)ceM&Wrʹt)Ӹ4ֶ7ؕk þ!_-vhtgݙoyS~̈́$Z7#&#J@2@UtoƱ1ZMUTsveMa4N &$&YDsnhSyrFY1Ȩ>'/7)0Dْxz-EgpPkrOkӃ܍ѴjDD"duqx|vga/k=ε9ZW6a-_kڏkiLŹ;nDQf3\tVKO!~h(ñIo# DSnɑâ/r{/ Z"tkŴR῔B`#FrffD2:!`5Z;_^SAbkcȀ.C˄5Wo%-1IQ -͠mTЯHR`Mu=E&'IMˆqps^pZ]H&6)ΞNF>[}#b@$"\O(b]xݲQ W@ -x, qlM9vz,!pydb;ԿK|҂Ʉzs֢yYk -v+fk :xʮ7t@WmP1:ߟNw5G4y mfNzC^Skdl>H gJG'lU!s6RRn B RuW!MmU4jčWv˂Iڇg;(w(ّwK(7͙Sޫ*&Kx?@ -5G 23/޳Zj;kۻ>)e -TYٔ_®m ևw]bGdt.:me@: W)!~!!wQ}^WK2HC_ iy;!1H?; -xyϏ^~vp |uE=jcR1[go逄iL -z#ELl#[osP=qaL3'H^tjB*3*N\=ep|_?>C F53ØCx8r+r3i w%ox -endstream -endobj -1406 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1405 0 R -/Resources 4 0 R -/Annots [ 1407 0 R 1408 0 R 1409 0 R 1410 0 R ] -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -1407 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 685.371162 39.386457 670.356762 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/TyresImages.png) ->> ->> -endobj -1408 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 685.371162 555.889134 519.268597 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/TyresImages.png) ->> ->> -endobj -1409 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 519.268597 297.637795 504.254197 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/TyresImages.png) ->> ->> -endobj -1410 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 205.842997 39.386457 190.828597 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/TyreColors.png) ->> ->> -endobj -1411 0 obj -<< -/Filter /FlateDecode -/Length 1347 ->> -stream -xX͎6 SC`(z=EJɤDi" f)džE?ɁJ)I5~O_N6aN %BRXhZOZc/OwgPzm[/KMG@5=j~o'/^t~|9^5Ycayoh[]- -AS|m16١ I%s /LJaDv O_{" lzSQ 1+ܥ(Qmrχ"?i^ rښ6uPӦKBy_~ Bޮe:G9>Rܤg;{yU=Άd{Mr2d_mOځ3*OT{-Fj1x3]Z*rDŰM冹]_7gl5e)pIx mr>;>"X-u,zy(qD -1 =um 1ܶ9c*nybc^o$ D:s@nu'd"coI\>pسS -A컫T K;A866'd@\=%e*5GdZ3{dĩp֦+vz4> F%e1K.A qrT - ;+hV`тfhq~ -T)to,4kς0Yv>2rOvVBFgdbGX̕uĊ`Hϡzg(H3gh({̞}8ʪI{>Ljɾ9amӑZQj\)Fl׷ hEsт(R]Ԍs}wr L& -xd@ӉkL -pXCb-8F\(<ȪAC@RXYX}醶Ƶޜ3_7y$;5hۆ@H{df녁8exwT,6 iR<\1V -8=eD=r.Y)w*U癄l{Y.+m&L -endstream -endobj -1412 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1411 0 R -/Resources 4 0 R -/Annots [ 1413 0 R 1414 0 R ] -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -1413 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 771.023622 354.386457 456.023622 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/TyreColors.png) ->> ->> -endobj -1414 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 456.023622 297.637795 441.009222 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/TyreColors.png) ->> ->> -endobj -1415 0 obj -<< -/Filter /FlateDecode -/Length 1815 ->> -stream -xYK7W̺Љ\ -mI ܒ8%J=4\X' L}HZixtbFˆG~㾟NB"jrƀ30.\3J!>?=sfL=p>#XeЏ>8X`fӇNWѾUh')DzJh0Yj;'&#lmSJŸ[_86d3nP)]зY +L2%g\I,Lu/ZV|-jW"GRZm/ʗML?{;f,'ݏq[2ª Vn})goy^0|xr,!.<ɭca80e3Ooe}cFoUlvR8=PvVb[@ M NR7{{4>~DV?CFf+$B -Aym*Z+Zخ\RעdJmDpR쓍C愾 y+2Wo;%ӓډ8%C]K6Krlej9@43v,wEchLJ]C_Dh,}" i B%{"MHB]5k--;сf03X)-ihm8tߎƭlʽ?5kǹ \(N\9&I>Tcj;#P19YؾIHw3js2clQԀtb*z`jj).!QC}\#ܒC w)3!r˞R_ Sc%_ tЬEec51W7Dlq(⤄Sd_:ҸM._,cd ]mm t -6ywXIQfm:#uu~::0& TF>pE(ld霌u*zՁ:ƿE)4qέ,DoԀUf6wڊN|bUqTHnShq:w0,EgGB>rbJv?Z?5l]`Wn.G2[:2-,pnHnrv(+))+c:û| w)eGļtC料h 3crTN/93V9d@{ɼo`UѤpXDZe%M';jtQdZ Z2_lRy*QkR% lDHWZDFbtVNEF]ȕB B??Wy%*U%d@_B|Jw„[ލyud*-$BZ'(DIRJl i3[WU%'Y?e$`iTϾ⬄5y x%I/ĹIj^BVҀo{Z -endstream -endobj -1416 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1415 0 R -/Resources 4 0 R -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -1417 0 obj -<< -/Filter /FlateDecode -/Length 1939 ->> -stream -xZK6 ϯB%`%-P"JɢLn3Y#QI+)Bޙi|r-'hNr^hwS4„ C BJP/j-KzG-<~R)aetrJ߯.f)`eŅɐǀ)pOI8+& -o?O2*Oe -`E%Û\m̂rƯ}Xse0CCG$ RmI'U>. s*tl|spݾDS_Ֆ~tii@ 8$w[aWlJU)z9¶^եn-|;+g --Fx(w02i5 -tc'vF-|Co9=qv 46eka!LM2Lwg쑭;J{V>Sn׮Ej;1owޮ/E0K{uP&]#l**ӒEQdK#{e4+rA'=y;$q¦=Z*P0~,)+:hޞdvjW_0ņmc7;,xYRvxw xWDFuƐ)M+U-#à&f4^D(ƌPt^n'a+A; n^Ȓ릚HyiWhf#GŬgcMѡMEx;bEn ./%QJ"}yXb@(k0v-~?.)AUP`+OYt6 !V8CI@@R5]6:ERdOÎn -endstream -endobj -1418 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1417 0 R -/Resources 4 0 R -/Annots [ 1419 0 R 1420 0 R 1421 0 R 1422 0 R 1423 0 R 1424 0 R 1425 0 R 1426 0 R 1427 0 R ] -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -1419 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 652.785222 39.386457 637.770822 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/TyreWithBackground.png) ->> ->> -endobj -1420 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 652.785222 55.886457 639.285222 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/TyreWithBackground.png) ->> ->> -endobj -1421 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 639.285222 297.637795 624.270822 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/TyreWithBackground.png) ->> ->> -endobj -1422 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 556.706022 39.386457 541.691622 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/TyreWithoutBackground.png) ->> ->> -endobj -1423 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 556.706022 55.886457 543.206022 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/TyreWithoutBackground.png) ->> ->> -endobj -1424 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 543.206022 297.637795 528.191622 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/TyreWithoutBackground.png) ->> ->> -endobj -1425 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 336.758022 39.386457 321.743622 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/Recognised11.png) ->> ->> -endobj -1426 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 336.758022 201.386457 198.758022 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/Recognised11.png) ->> ->> -endobj -1427 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 198.758022 297.637795 183.743622 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/Recognised11.png) ->> ->> -endobj -1428 0 obj -<< -/Filter /FlateDecode -/Length 1411 ->> -stream -xXKo6 ϯX(Q/`0Eö)Zċ"zYƞl,QǏ &I@<>8$3>iF#=~夝p(g&^HiPkaPk馯ϧNzpR:&`3`߯_NgriVkaSvBO 0HVeVrA4_6,zE|6'3~|@ -iyl`TČI#*u%;lor0ja( ފ F-4KA`5(6aq"] \yʼnmܲq̊9ĵcZK"w-[(#],= \k<stE6p[07>8А)5B)\(ƹ2m\2A5HC`*k<#P!Nre 然Yy;z}梋D8s',ˊhJ^) 3~lds N"HX41lR@eeG{[ -3+cwUXHf,244[JH^v 8'Gdz?6:{qg-+ E(#oR m6$'5#mڧ> ;ꠁMӃ#: ylŚq=-n}g,\WN PX.wٞG3yQ~וfԞ V^cYSJ~wC ('(|m˳y8Br|yN;׊b^~pcծMkCV[/wߞn;F)@u -^ιz+&T]\|'07~' -endstream -endobj -1429 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1428 0 R -/Resources 4 0 R -/Annots [ 1430 0 R 1431 0 R 1432 0 R 1433 0 R 1434 0 R 1435 0 R ] -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -1430 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 771.023622 39.386457 756.009222 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/RecognisedH.png) ->> ->> -endobj -1431 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 771.023622 201.386457 633.023622 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/RecognisedH.png) ->> ->> -endobj -1432 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 633.023622 297.637795 618.009222 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/RecognisedH.png) ->> ->> -endobj -1433 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 574.842822 39.386457 559.828422 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/RecognisedM.png) ->> ->> -endobj -1434 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 574.842822 201.386457 436.842822 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/RecognisedM.png) ->> ->> -endobj -1435 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 436.842822 297.637795 421.828422 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Screens/RecognisedM.png) ->> ->> -endobj -1436 0 obj -<< -/Filter /FlateDecode -/Length 3187 ->> -stream -x\KWhadIrH0yAz@)E.Y3mbLJZ9N^ }pVoΜ/h>o F:{ iG'<KbF+/sywBJfD~I0~ EQԆ3 @ajHpϼ^篇?៟"ʓq(/q.ε/|FE^Θx=^^ܦ}n?{f5W(.i@'2w01 -J[\UFV!Q#dn|ͅQF<)m]SB"*Й2 #4y~RZȌuoi< N;H0 J=gH%[G%WfhDu566(K,<]u~Kq5uK8ˌ7v(ڹy}I>20 >?_om֡ n4]IG9_T9{). ~ZOA>^=?:[gosMy΍|qI-Jʨ\* 69A;䤋Cx16 < [?r0&r66eNUP .zi^'c #UH5R)-se7 +iҳG" Ioz% - -lDW#1nsTQ{JT~^d} -Hz;Ȃ,M\eȊ`g`X } ё"5&Cm]_[M2KMC@B9É5bz#9&cC0%R2* *LG/xx!bD[AsΠӽI1*;z]fN !aQ aݎDP:(+ڥS_wߪ2wKBHWZOR.HRӉ76f;σ,i-W9p 81quИҘ6'aV5KTs^N`*.}cyymvmyم7˷,ؾ\|bzZŷ,Y\|z26ߦߐR -t8~=898A_7ϭ=] v8Kϸ:._* 4~khMh!mI~kAwBƔ -o}ncr(sp]7K{w `si%SqY]2h,% u^ӧ??EdpVJ=m8OLbpI2W X6*PqFG"P-#}ZNAVʔn"+.F 6Vb5 2HNvD,Ifh,Cjx㶾Gn2=/L 2В -Ñ KH- VvvS<1ѫv4^҆2`iJea9 ZՆ0>lwZ%Tv+Y1ij9 eېhYjx9=U/ Z ߬Rq"EgJg]wƌ՞`z0Yd66qa76)F'RD?v rqFupi6VIDթ`#I4y fxڇL:m`0E$3i'ɥ)BI\^ -ւU|8PwxD&@xӐLjH ]cDl&I<*.;q`;nT; 2DVc G۸Q6ס|n~+0@rW<&w4~~Eïu=Ļ UģJ[KB^_; -xSg?}:#]ź.LAվ%  JL%~&Pퟴ$P'G$ʠ<5V*Q^LO|~{ȋ:vH#cߵ|`ُ(hnF{ՂWU| -r`6ѓS9vHV̓B][%L&u|6U^Wf^M`Σ -hK(U5W61<f O^s]&ecpQ}sۣN?ɱ0yz.NH` 4߷\q3d\2ah|wIJ uoVMo qǴ3ݤz~\-0Miރx= FCKe]|*x&vm(zaT0!d*H.3G;lE1{~g[x&@{w*{lEj -endstream -endobj -1437 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1436 0 R -/Resources 4 0 R -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -1438 0 obj -<< -/Filter /FlateDecode -/Length 3845 ->> -stream -x]K#W, 6v ։#Ǘv?bXj@UXU5g?ׂy˗'Μo8"csHgA3gBpQ)fRܝO|s;BHɌ֛x8ǟ??},?+E?cc8KAt"05H;ń\/~xQ|z=s9ׯh4wh7>t@\7pp=}q:^y<70ncsOƾ ]c?}\ - dvP#!m(|>7+~&2MzPs/gqz ^-sxpKBl^[_ giq:9W,ve| |0rR_]GN3ÜA;+&AiT0*y-;0o# #o-盄͍rjx=%9/'Sx57/~/d!nL7*pS)mZ/'TLo'k9$7.}ZmvǺ34(*p8 ǣ_֢зL -ᬁND_Lv/Lsyp1K&ǿ?D&଄09DW&Dw293kǪU}eiJ*%}/M$A6 IdCt_[tT0qphJ(80an`U dSN&^&E*]q')9S?Fx ;2:ty?s8}+T[Ycܰ`+ِ @0wD= SkMvBDlgV^"@ 5Nkoxau/wI0σ^9UhN2T*/[8@D#Ά ڤ#)h0t2G ,kb*@I^s1'mfE肪ny5.Be[h vv!gk<+HG7q~vKad*hrO -^m[Ӽ Ŷ qJYƒuJä)(B z(_'ʺ8ZEJ?ZEw ""FA -nҪn[Ȁwb5bp|C)qi̺ 9]6\Wdha%Q8 8?P $hP*o3i݅6IxZOE2@E T*WbJb;F$L2 &Sz'wa4hn4(DE@/D׋&MJn/_7hKV@k4.tIx&t) -mt ;ѱ.b#0)jeU5QXPҥ\t(o+N>զA6i6Xp:N6[%ZX>;T O&~R;ѧ{O4O4y'"'n -&WܰKAOU#R;uJ)Q}YiJ xŜΆj`!.j?:eb@h6SmJ=hiDy%mJ̫@ -z [f ^(SֽQ&UQ&c((M^7D Tpx6-jB7ӧީj;Qz';DIz'Ł:ā'މ(zwz'Mpk^DMNADM%;Q59V))#U\Fwahn(ZEE@/ZE׋VMJUO!ZU5` :`=iU^j'JjiLcݤU%UĞvU4y@0"ڦD jj,NAA:{Y;VЍVuUTߠUwӪuRV X "XWZEԱڇZZ Ms`**qn&o7^ -*mѪJYƒJ2aYʻ7Lk>N9BUR *7CQ:8taƃܖ@k(2\T{N*X|>r1"yҌ=irm^bYP[)rZE-ׂf6Ȣ5n2=Ppm؎$L GVoj洛}ې*oY7$.h}˶} @A}{C"oN`h1 -"eZmk9ܿ Hak)2eQ FNp%kvq\fOjAhf55ytbjEmL,-m$ʻZ_^U2}$gX?՞>4 0T˚I"c渒,t"h`x$bX1c,Vi.r+4m2<_h!6P g5[D:fmuRHܦݑmgU~@+Bfg#2lM،R;cY0[SjKv$yp4jŔ5cJѦIn\)5R-k^NV\fUϪA ДUGj,t9 "b("٬޼n:TsE<.&m)89L=k >)^'-4ՖmR]z'S‘*-AѸvӟ0 -( !̑ Lr8UjGL=L @[KcƠ&>5Z1\_C6LJCrphA^-yA:= ;IQ_ɛ>/MEG> -RAUbܓJ1Q~:Ow7ON.T/K}Q{vzd׭/4EX MA֞ɘpulGNh?ԊS_ԌS_Ԍ+ÍKpT/; C&ZsYXq ʣ0Nh*xqoP n-Ŵ1JVZV^K~U.]<>Xj˶ S j'$תJ%v1 ^(HVF)AP-):0H,/Lr{e4ܺWM.n -t-)ޓ,YQƬ&d Cڳ^Y;-7-g -;@ӻp-T;m8Zz.H Q Aգh;-+P:@GsE(58fVkNO5kӍO8-Gՠ"Dyj1>}5<%q锚އO_K+sE7JEj[*nQ_Vu:M S35[0U̼4uYtk!&Dj -r*0 7?5,v{6E4x o"ʓOa?Ӝ2%(d\PwDS2qh>4i\M6@ƻ<) V()-JmBզ)!'ɸ1B$š -!S͛6}P^dAv|bQ΍ e{ As`=t.[EP2ZI >$ֿTe % T#: ||T]۬vP疎q_)G7cT -u/c]5e -=ݓsR[D.?00 -endstream -endobj -1439 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1438 0 R -/Resources 4 0 R -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -1440 0 obj -<< -/Filter /FlateDecode -/Length 3211 ->> -stream -x\I#9@"FnB,@ABSPI"??*~fsu~;}?jFC~v^ k^-9rp΄A)d˗?O9e:{\EsoWsx _nкT~4kBSE|Rę[pNo?OgϷӿ1^_ӓHd^gGn,Ogmg|<^yԅ>Qxæ{;k3iPt=osyM*,7)H>▞@ϟ? (HDŠ( M j`$&f+cE _.*JvʔkdE;DE$$]} EFa~Usʁ9)"+ s.:Mpn+Q H%-2m8VYNqc=4F/XL*,5SI\**1R+f$ Qm/%ZM<١!)*b@#|kE(&s; -xmђ #F՛U9gu'2/*}>|H}@ +KEqǪ O@I#h4foС| gMC֋W^*UkQyZD 7$W#N{Q͔i[Q %lGA8?x㶀LS6$= 3W%A,%#)VAsRDb YiHx zWɍFѮd3% SzG#k+s & ]O^ì*KAR=)a`"U}RÆֽM Ӕj."g}4,d߈U=}G h]Q~'0f߷ --A_ 2z5e\y'1݃5&T7O\_(=YkGYJIFֳ¸fP]ᨨ7M0F+lc5Zʁ͂qIF@-1HD4exUJv&vM\#E=SEFt|Kiۉ`-g/X-=mNޣ.1+'g9Xg0Kڸ(tM}6@S9{n5@ -bרDzkwus% -pی,I;#Kw/Ez;Y{1;5r"jM_f)( -ͱADx`?ע"- -IvХ2[5=' ZLn>D3#G)w6XY´RĜ .5ye1En#P1ЛG+Zc0*v13ki-d} D=PzV`EߌA-O] ]Qd ["T_1Ok"% 1Yv =Y6`buSJ"ݥQijZlu\to}aey 뢣lSЛzYQBwe<ȣI #RZeA !\h:+(5PPZ܈~S2Y˽iBdX&J&SeS0ɍI2+=se."X&w: -Ӥ0 -5߻˒ICIFݸm%TJ9iC)B9F=Xw;OqJ+̕hI)#(ʃm swȶ*1vL.6Lߵ-9c]RHS69u찇NiQ^~uRY/- e'{ -fQ(h7\~٩ݻxYNUX }jHf}n9O>0f懩.ZդU4G؉ah+V/6Ztˋ刟Ңa55=S4g׀^W&n6e͇ y𖔧h ЇK}AhRjTj^&8A1]+y 2ɻMp`fcr'%MWg7`g6<@d(Xfpy;瓆ն o廮] EIibw(e?|.gi󫱋|N,̊p~JO\דUlv6]: % Wd: nZqX1z` -ד m h*f] |wӔ;b}B!(ޑ#ȱb1ʏҡ|) lPN66X|(at]s)G>c T7UP]4.o/ U>UB"H .x>%$ӎ{E^]aLQB-vc[HT}ƣbH[>ܣAYqj䠵Y\osU|=oCo7c{4"A~{μcPQף׍)#z`&!C)B+Nvq@wt8C>,+&yk~رxKvlMFrXJ{~Y^r@}zshհODqᗋ\hnyW8[\8;1p<vc}3LhyTin.u;@bOU-֞A~?1yEd^k0rXlL9&2>rQVwE161ݥ SS4@464g):sfKņ΀g l%0)8Ghusm! ?Gy -endstream -endobj -1441 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1440 0 R -/Resources 4 0 R -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -1442 0 obj -<< -/Filter /FlateDecode -/Length 2106 ->> -stream -xZɎ7+/`  AcvfdKぬ"k}řǿDkę3<+7sHgA3gBpJ1ӿ{s;BHɌ֛BOwk}^_rkyYKk.쓾ozy˺6 ~=!y}'OF.r^NOVnVIlln̛o<"0KK'&H񴦾3  ƻsf,`_W0ļuy߲>ہ9[˖r.bNuX˂]lQnXc ͝i3]3wCȡv:rx6)(1 rq* -A<A6KziL%mժg( -!5 cj|9 E$E7E]^kA~G*eMNq}eX@vTQlԣ,^:SL,DSRTCMC3F08 š/rR!; }P456 zl qM.9. 9;g0W -\EEg(jndDH2bֲUZt{XmaHKw瑠bk1.,5f<%|{-C4Lz i `]4n%N w[#\#r5ABq$`i0+lB̶_kaC}d>`EaCpZ<4\Dnl -hh|#ᰂ%1,DP (. VBĵ7~iv+U@6 s'DJPlIXD]Dd\ [ yjHN>Ԙ-DF* _` -_`G27uyް :0u ^*0:z/^7G500@i&W`MH9'HG 6|w| ҡRFvǀ gfXC2(U0 oo@V&84L("6"F5,\֣O )Pʴ@x}v}ww45i} (LxU@{exmeo8A7Uut`p+#p Da?h 8OMr9ʩĊ}/|e/q!@>ҫQ+h` #>H;;; S C4Dj&:Pw)jfí7-ts}t٫TaC'罥i ߥ\ URݬ4J׵u-9"AF!y'l~s -DdQC!q\tiߊ(F?l#^3|=+5[px-3~CPx8s/|5~g-y*џt]}I7n]B^|ˀo~|{-oҽuo9nƽw/Ƹhq6igbfi}q{Q0n졶pO:CJJe]70hb< k)8韫 =ˢ@{=0O7/&c-Г`a-24C'b y -endstream -endobj -1443 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1442 0 R -/Resources 4 0 R -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -1444 0 obj -<< -/Filter /FlateDecode -/Length 1946 ->> -stream -xZɎ#7 +Jk>H\tA^s3 JXRL7m|#*yx-'g &gDI#o3;{\~9:')Ŭ—JMF+%ۧq[pzGc$'q6ZU4FLa0Ƿ$E*~Z߾>˯?(~sTvE>:.eO{k|9mq>UZgYy(S\;h93'o8څlXt:uѴc^}"=üjtYMp]) -V1!☴{uu4GTie t$C&;7r\'4 - "" Kr{O3k3")3g_{p$=kA/dUlLQ@ D<9!5L84; @m)/8&{BD]*p rS-mp6:Nt=d}"\6ցR,/1̲u֠Cf!'-Cv85}*5 X2%n5y*@2Wl]ϬQIZ X⥙* p)z[ {1sSY_, Z EcfP^֭^C~Xb3BNƴ [{ DMb@XD)yԱm)M^kt7=; u%9,}eC@ Fuj|JTݓ33 B#A/! !pNG0`R\N;Qb2F(3;I"Rqu$]2߉Xƛ@<*H&0 xvܓ@tBߏr`V޹/(GR;<7 Ğ\ _G!@=VR &jܮ랡6tDF`|yﲳ,Ǩ_dݢҰE YMoM> -endobj -1446 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 307.454022 39.386457 292.439622 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Figma/PosterV1.png) ->> ->> -endobj -1447 0 obj -<< -/Filter /FlateDecode -/Length 367 ->> -stream -xN1 yf[怀C4$āӊp2-LēeGFrI~3Zi;~խ 9p g m2F)Fdܝ{ul>%e3b=~.P5*e,qB?Aq${QaߧqPJ}lS> -endobj -1449 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 771.023622 555.889134 40.569523 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Figma/PosterV1.png) ->> ->> -endobj -1450 0 obj -<< -/Filter /FlateDecode -/Length 612 ->> -stream -xTKo1 Wډ8jHp(\*- qSZt13<؟?{}#N$Hd ĠOlAdz ɥ>EɑJ !zc -}i_O9$YDcEmy_檎6 UP#"/BdO˧[,}p5wp?(yR&PI-4U[yaOkV3RhHt.2R}e9 ._ =u܌4eͨQSwJC;[PAQfŮS \gۉ팮+E_Ի=jޏ+6:Dod37azE'%>XS˯ef=hpIb AATwk@S;0ķqC\K4^2ڝS\3[MUĽjLw -\2#O82Y3oK#á601hgQnsG.bF˥{Gv>u`*q}]z G!?Bq(tB,)M@] YJ/nORʏϥPH~)(U|?d# -endstream -endobj -1451 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1450 0 R -/Resources 4 0 R -/Annots [ 1452 0 R 1453 0 R ] -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -1452 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 771.023622 297.637795 756.009222 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Figma/PosterV1.png) ->> ->> -endobj -1453 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 649.031622 39.386457 634.017222 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Figma/PosterV2.png) ->> ->> -endobj -1454 0 obj -<< -/Filter /FlateDecode -/Length 367 ->> -stream -xN1 yŋTiH-ӊp2-LēeF2e~vk[85,Q"d)SݺWWϳ,c 6nݭJ=))IX6`&+`zm=ǁa/ Yt@zZ -}mEi ?hO=e1a&5n/psyuqR+_9&;NsJc_p?S;Bk.UL_hLf:DT j5\[$-J}lrMFZ!DCJUCC=c5 5#fK -endstream -endobj -1455 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1454 0 R -/Resources 4 0 R -/Annots [ 1456 0 R ] -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -1456 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 39.386457 771.023622 555.889134 40.569523 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Figma/PosterV2.png) ->> ->> -endobj -1457 0 obj -<< -/Filter /FlateDecode -/Length 3108 ->> -stream -x[Io?0t $ rh<@Y|Վ2euW-E)/Z%bLI$}ݛOd -TJIm1Ycd8z?|HF)C gN%]^O?\{z#B)x(k-h? bIY(/?*YOo}Oa / ڒ&)i`̓6>u$;п$ʯݰwLR +7o̴36_ҏ,<]D̄LZ(ike8-~ |YW?Wu=ӑӚYy]^3|{R2"Z\Ѣr^”~xQh$+j2bbML* R=(R (35&Km,̂}ȯ~쮼WxLWyqd -n%ަ!5Zl=彜y\9ԅm#:2bq6"g|ۋ?2 hɕ05T`obN3ǁm9n;^t$%r=::on -KY & J3*i0ָ.zjuvCo쌑8]9r\pŠ5X&E:Ө|Lt7gOclYX-0;s/譍[:MS(C&;! H#Zp0`yCNנ# F1 --lFts`l][ff 9ˠWBZYvKZ|Oqtr]ɵm4OF X4TqX}SҼAW @?&ǵW\;& u[D ]tq+r`؍C[s`Q;0E;; 1!J U8g$ J70pe -DZ@wqt,kZ^u[6 znP `&2w7ܚ3fB%-\s($iElZDھ~et -_Q!ׯE@Z$my2^w' n;WrKF MSv,E-h$pՇ.jUI7U: -QP#rǀ 0 1jk=\~$L,:i)wи*+?a0Mol>+y{{J4BpH9^K ot2 N2ol_'Z0r+$=7Oa谾p"x]g-5ȵ%Q ϰ(.iwAŚǛNip,b[^6 :7-n:n\y8\YX9\WǏЂs +#qѺMʫ!:;+m3g/* xٍBv!N487HdzfrlNV Zx ySNW-'q?az-lNwF 6ݵANْ"h Rp5_ʺqN@?RS6:X3ϲ7E\FSlnR\"1V{hw/܀76`8Ď-#Y wG|%6<ӫ -+x͍P;/bf_gk6[k2Wu䍇)cC#;Qcyh6f&oc18a7N$axᆸ5X?:NSoybAQ -&eD%e=l[M㐝ʇj`iYI {K+)cF|m@Äouu:چOCb@ $}= Ѭe8W)w7bS//q@6"i=<2(;K'5\KzGgZ:YCb[q;SX[;,L[ oC -xMçv T -$mSL/`09SR*mzqڗ\I蕱 ׍@'Kā˟O py^lѾ,fsw=Z}m'B*uI<]勵ӀRhBP(L>#J$B~f|Z|- dOfm'3A#UT;%'L)iau(Eٖpj؂ ]%%-GFf :;jO-QlʣAZKJ=a߭?0xxN*Vj[ V6VȨ\hҦPޡDms9r4a(P4*m:6}^( bQ>#zJKzT಩:9*@A l t0JxhΏbNۙ;~ҜbzTvOXe{_Av*Lu E`{;y)Z߶fPOn୍,4.uiqQ5NvAHT1ohGE%K1oG+GBơ"WL!,iGv !G8r;J7A - f ژSza ,EjGM:d9;S><^hJfT-Ƞ=ZR>~ bҸ.Jh,6srZQzCQKal"%@ҞDI97* -O%ENY xC>g渌oHDOq5FDgvQ'{]E0S:\#ʭ? Iuɾ?w'?<>;?9ۍFYIё|~K_ŬT}raSR;4>a45uEOLBcT֧Lz3ԓ߂?<- R%t`dSbt@>S|b>Qna" -endstream -endobj -1458 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1457 0 R -/Resources 4 0 R -/Annots [ 1459 0 R ] -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -1459 0 obj -<< -/Type /Annot -/Subtype /Link -/Rect [ 297.637795 771.023622 297.637795 756.009222 ] -/BS << -/W 0 ->> -/A << -/Type /Action -/S /URI -/URI (./Images/Figma/PosterV2.png) ->> ->> -endobj -1460 0 obj -<< -/Filter /FlateDecode -/Length 2841 ->> -stream -x[ˎ+W&.f^8 ,4W`lTli#w*Rt/Zĸo/_^~}QKp*MyS KeQt\VI8k -a3KP*pz]7]/_E]~=moE; eZiП^41bvK\cw_Ǐ[3+o~QjMXOL>sikge\co=ussk}kZ{}Lyf`^}~}:Xރk:ؗh{Zk,A/|G2mxǡפDî̼y[h$U\0"kf~@iEPdD`2\v/U:~46u:ۗ94U MU1ѿ=WM -a=*=C0rغy8DԚ1Uev'C!Ac*BLW:qhG[yhM g @qV 86gOB̨'>[A%)j5v|NYQ2}br;O+rM\ e -cG(D;:lb%סgɞىqY1;rm0fWLҳQZ:ďZߔCƶ.zt? cA-z]ț;-geYw;PVg]A9TrGHp@SCJպ/1WN^Y.;TWt c!`x* ܂6-Ќ=ëe4FQQCZI섕LiLŽ*ÚIHKp2>)&&Hzngn\Kw&=E5?^Ȥcp̰)x@WFc?v#[R.bѷ|iv!u%Yh=?,ygOߞ#ߞOߞ'ߞlOߧTSzi~}rKũn-W+un @QEn&*[L"V!.3:sO*Fhu -:ke onf Dp%wrۄD3PTkin!? +ܭ%,>14,k9adף'lH|S,v"pppiN'@'):Rte H`|^WIϤTiJ&tX #Y ktxrHѼ퐰#Wb/\#NOB:SMĭs*^>>22tlMM (:mDǷvVJhբǪUDDj쏴gex 9l&x Lg}=io |u l.*[ _Du-8p=dL;2[Xav9Bc`{D"7~,V2DҨvkDќ,Šr,1 ,BTuL0i1pB;^hÛ ߁sʕ0zbɶ#H|QV(3лtZ)Q5#Eo[A[r;f)d*%#V8Hm*f c20XyÌUh=x%]tځ)ԡ +3x_ߺu6j7iI^ #D%ab6 ZI!>rOib}pPGMSPg#T$SG!֐LxPIy .7iEie;JG'xkoS+`((RTvT2ϡ4R9@IM m Ъ "2)ȎA_O]-fd%Wc1% endstream endobj 1461 0 obj @@ -20598,25 +20404,16 @@ endobj 1462 0 obj << /Filter /FlateDecode -/Length 3416 +/Length 1835 >> stream -xn#l/E$ Ld Y3L?"EMmI~my?b+'h>A*p`/R -qPr_x?(RygcÏ'>\ -~W8wqv+FR+9~v~x|A,u" %_~R2Y_ϴVϮ; Bs㧏:/+u(.QIEBx\H" qCsz%\FƯy8Nk4y,u:,ÇBKd11N|2s &3_`><%Ng6ݛ ̡ *0HAP d/F| vlE$a_~ .kiqƹ*ATT?5 }4E\@u0MpyBR:?j8_#:3F{Kʣ")M25꒯h+}@J!Q/gF!J@y7"J[;9)s;U5xy/]X}d2d:ul^|Q MЂUh #²er!e<ԃE1 oWF%FNPƵy, AQJ,ݯn yϡanouJ.!)00%hhb53bnǰfn @,).LL 26HbW&vAMYȈUx\xPh ݬi3F#tS2r:13 *$+E + cvu=yġW)ىCM(f)Y`D0u&,OV5# i.Ul9k۫K Su^oUR^" |?<{- -Qܛܻ>]E8bU;2=?Jʾ^^_JJgVmkGu ͻUm_ -0`UӜ<-aapvLǴi}\y 'yX"nwu GARƌq|ǂP0kOfZԦ21X` frsho$Hn! k,-{ [YKҏ}>o-6(.t=e WһAʵmu>pĩBMj[wkqok[;7vԸw)RYѓ\uX:.s\ -Dn-{yu(3/!v[z#_9!}7G;罴f!; YbcgFzpnQJwì[[)_pc,9, t8KYsމ\Ģڀ2Zj8\\ (z>o)zp+x+%8t>ht^ED׍ '&mvY$:X-ќ{m Ɛog?jM= -ScE̐%&ٶ+-Wf1۰8%%}xsEQ^βY`m&*m6JAiHo`shr'RVPT2|Af BY<#|1h|a;r%,{4$*D:` ,;tNmn1-VnZΏn=`r˙jb Ǫȟ,q1ѝ/v)1/A ļ%юpЦDqc2ц=(sƻb]_DZ[˝Q;$&}2n wէ,7ffv<5F7MWV!&JZP0Kзc$V%J*V^fuhү``+iFWxK. Ej -$Rc}wӭsY$Fb}), 4X@y lݪxW >\٣' 605X$x sB&,ZИc-,bcZޕP -`Ƀ%$ |zC[HHj^X~NoX7 Zi_&[t72g܌y^ 4G. -@Pm%nLJu2Iwc=c4^P9秞(܌7Jsf'j. nZ@Ki6.A{DSc.q V;k<7pc'wݚ$z?~BO;t֞(~3o{7P\lߌw͢q!6 5}S1̀=]avބv/8J~ ue2 *Vӎ^Ny#>)`u:x\-"BAOחo3zs"xPCLv#c +xYK4CJ@Bӝ%ʏˎ=p`Z$v\U_=r^ }pV/gpK#tO1tv i J1nr;r绠y!%3"Xoϗwg eHc8Go_N,y˧ӻ_/"'*/'΍\{|n@Y#to*zCg86^4N1x-2~mm|M+eek}KsYtN/e$˥#"sM h¼&nb4jx\J9 A B{Ko`2ynqtt| iu}Y: N\|ϋ:#v1HV0催 qI'cRCP// +D cgh@ 3Q"h4%p1t/z9)(3DT3I̠hT@{#ayn.4c`0fqg("Qh4nLo4*-]yн8TV +ł )sOE9W'^5|4u ě A6=֔b\׬/P0MxYY%ԾX[>"Tax2q"\|ƹuvsN_z?*X ]/KxTT6DA\%4 A:HƁC]sр+`0Wc{"nVB! [uW{"uh#Y1H +aY#936к=܁<s5+xƯ1`~+Izz sΤ*@iדq(Q=1T]WLd(S6YH)`0劾-qԳQv/rx=Y'cx]CjftyRja\i;%=UݦܔSZ )-J2d[^Ֆk_zs-eP2Egz mGa6a%GtUe}|;f̵Au/\`Ab8΀tg!0pcA`fBУ`\60dK\L +0;2@ endstream endobj 1463 0 obj @@ -20626,14 +20423,1681 @@ endobj /MediaBox [ 0 0 595.275591 841.889764 ] /Contents 1462 0 R /Resources 4 0 R +/Annots [ 1464 0 R 1465 0 R 1466 0 R 1467 0 R 1468 0 R 1469 0 R 1470 0 R 1471 0 R 1472 0 R 1473 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj 1464 0 obj << +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 667.799622 39.386457 652.785222 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/11ZSD.png) +>> +>> +endobj +1465 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 667.799622 112.136457 640.799622 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/11ZSD.png) +>> +>> +endobj +1466 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 640.799622 297.637795 625.785222 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/11ZSD.png) +>> +>> +endobj +1467 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 558.220422 39.386457 543.206022 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/42340.png) +>> +>> +endobj +1468 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 558.220422 104.636457 531.220422 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/42340.png) +>> +>> +endobj +1469 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 531.220422 297.637795 516.206022 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/42340.png) +>> +>> +endobj +1470 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 448.641222 39.386457 433.626822 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/ZZAEB.png) +>> +>> +endobj +1471 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 448.641222 112.136457 421.641222 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/ZZAEB.png) +>> +>> +endobj +1472 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 421.641222 297.637795 406.626822 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/ZZAEB.png) +>> +>> +endobj +1473 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 93.201222 39.386457 78.186822 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/Clear44301.png) +>> +>> +endobj +1474 0 obj +<< /Filter /FlateDecode -/Length 4003 +/Length 1095 +>> +stream +xWɎ#7 +F#ч a ȡ $!TvWw: w*|{%߁&< 'k[yG|>a0! ~Hd(Fi u( цϓڇ&Xb3 G0˧>}Z%P YMn"Z@axjjKbd} Ve"@G|B^_QDFj$"P9װRNLDhp!%Y"Ïa洢|߆΅O&`Q\D6-.la*OdHƀٍ'/օ$aE9rY!l;cqʂ=*ya2i{!ԏ܃#Th10(F48. +λ OήG OS֛DRdȳr$ö+S %zsq g}yR/DTΡNU tPoMr7]]{ rS2|jtB +VOث W PlӎJ=}k-S7_)|5O:[oj}{vL,?h#W{Ϩ XgA\_t_*"W5{g{髊re +Xj:7+mTjc-SWjS&%Iw]1,qkȉV$Xk@n}mny5۽R.hKQ|m_!`~e/zݫuτmT#ه^zS}ЫiRvakn$ mNu~ >ޝ + R9=h/t}ng4;|V +endstream +endobj +1475 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1474 0 R +/Resources 4 0 R +/Annots [ 1476 0 R 1477 0 R 1478 0 R 1479 0 R 1480 0 R 1481 0 R 1482 0 R 1483 0 R 1484 0 R ] +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1476 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 771.023622 300.386457 663.023622 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/Clear44301.png) +>> +>> +endobj +1477 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 663.023622 297.637795 648.009222 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/Clear44301.png) +>> +>> +endobj +1478 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 580.444422 39.386457 565.430022 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/ClearA5157.png) +>> +>> +endobj +1479 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 580.444422 330.386457 472.444422 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/ClearA5157.png) +>> +>> +endobj +1480 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 472.444422 297.637795 457.430022 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/ClearA5157.png) +>> +>> +endobj +1481 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 174.033222 39.386457 159.018822 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/BeforeProcessing1.png) +>> +>> +endobj +1482 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 174.033222 115.136457 147.033222 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/BeforeProcessing1.png) +>> +>> +endobj +1483 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 147.033222 297.637795 132.018822 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/BeforeProcessing1.png) +>> +>> +endobj +1484 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 88.852422 39.386457 73.838022 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/GrayScale.png) +>> +>> +endobj +1485 0 obj +<< +/Filter /FlateDecode +/Length 1121 +>> +stream +xW͎6 )%R aS@у=l(X$Ec(%J$?~d@ЉdNaZ:q2qi<1C齋{;` EIIdחχ3:>{XUQU]Ѧ" +,vtKXos6Q{?)qIt>1Jpx ӧa]H!bv>%fE$R}61OWD+PD߀m9":MBL2^0%9~T >1D\!`3P[QH +] +K hHJxˬrQ718L{ +%>mB 䧼XShX )E'/8h70CtLAm4FǁmR~{h79t5$ +-^ ~h9%S}E3#PkfɗҘoBv(=춰By;ncڜB럷1""^}0Ǎ3q@-0YOx&:?Jxxۻ0p o\]EOu&+\_fv׸ۡ8k+rtg/3P_ Kc ](k-kVOI{ +endstream +endobj +1486 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1485 0 R +/Resources 4 0 R +/Annots [ 1487 0 R 1488 0 R 1489 0 R 1490 0 R 1491 0 R 1492 0 R 1493 0 R 1494 0 R 1495 0 R 1496 0 R 1497 0 R ] +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1487 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 771.023622 115.136457 744.023622 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/GrayScale.png) +>> +>> +endobj +1488 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 744.023622 297.637795 729.009222 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/GrayScale.png) +>> +>> +endobj +1489 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 685.842822 39.386457 670.828422 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/InvertColor.png) +>> +>> +endobj +1490 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 685.842822 115.136457 658.842822 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/InvertColor.png) +>> +>> +endobj +1491 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 658.842822 297.637795 643.828422 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/InvertColor.png) +>> +>> +endobj +1492 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 576.263622 39.386457 561.249222 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/Scaling.png) +>> +>> +endobj +1493 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 576.263622 342.386457 468.263622 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/Scaling.png) +>> +>> +endobj +1494 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 468.263622 297.637795 453.249222 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/Scaling.png) +>> +>> +endobj +1495 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 385.684422 39.386457 370.670022 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/Dilatation.png) +>> +>> +endobj +1496 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 385.684422 342.386457 277.684422 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/Dilatation.png) +>> +>> +endobj +1497 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 277.684422 297.637795 262.670022 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/Dilatation.png) +>> +>> +endobj +1498 0 obj +<< +/Filter /FlateDecode +/Length 1879 +>> +stream +xY_6 ϧN%Q0l+pZa)(Yhŀ%p,KHϏ7? +!aӊO1{ïz!)ΐU6q  +@ND,ݛ_>ET5Q.̀!}?A?HC/}A݈w +'@Lv7?_HLi椵܁|?S8Mi̙2ʘ:i>/i^nPƩ9}{sOb~XyuNGӺ4̆Jۏ[6x!QX鴉=\[ X #pfR3Iim&]q}M`/7zsnu5WEZkQ []OUT6­/ K)C q&{ pD ͛W_-<*o#\bWQdsz+wvY\{-]]%4{-ago.B8l&J'rU^P 0α> +endobj +1500 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 707.212422 39.386457 692.198022 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screen/../Screens/Clean.png) +>> +>> +endobj +1501 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 707.212422 190.886457 653.212422 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screen/../Screens/Clean.png) +>> +>> +endobj +1502 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 653.212422 297.637795 638.198022 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screen/../Screens/Clean.png) +>> +>> +endobj +1503 0 obj +<< +/Filter /FlateDecode +/Length 2182 +>> +stream +x]c5 f} + +* +*">g_v$'Mۙ]ҹLJ|_Ja#8yF#? + +q *68hp ?߼I!RBRZ .P^ }-RSzkdD7.İwݰk6 ̇ [`tܘVa溲3Ŗ2={lMţx\#]bZ gu<"\Ye5s2r + )Ӷ+F3,0MְaI)\!.c u=+BØ|J|L)iQٹIdNY齍>=;7yrZ=9FwگñqnL5~cٻ3τv:N8C^gQOY`5VXB^*fy]_PwX +yܳk(GeG\J%,=s)bo&YyP26tL=ܬ:4^c/`{tïjfUe}B(a {ճMY31wۤ}ۮ}I8f)Slĥ`('9lt'G9`C[zoR5-olS:[Zht2JX31 JL]h:k$e}A=EΚjf2f+降]# + + E "H}b?Avqz)E`>&ظS&(Ɨ{wUS`UJ>[ R X=c b~Ì&`v4`,ɠ7?Srt>[?o!].ԋxO <ؾpC~I,hͬZ1 +)y7nPvdnچ Iv糄c vgll/4@ ,x!Lo`}ǟ§? JF-i Ʉs#KC+o0ݔ +$`[aYe[CB#1 U +endstream +endobj +1504 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1503 0 R +/Resources 4 0 R +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1505 0 obj +<< +/Filter /FlateDecode +/Length 2269 +>> +stream +xZ͎#5)mi4J@B:6x n݉2I:n\_|U_ C9`*f e$qr]7@YT@ +*.g$Ш'P4YFB:ysA{2 ``\%EF'aL*YDXD@tFUՋz 7kϪ[B +Q!յp1T8S<$ɢ AxMFLJ,CCYHLoo-CH4ʊviB!SF}X tAPI%GRշj i4,A?y]RVPaV=MO$>oD+\AZHĭ 'MQ. +[|:r}q+NG03pdaxJ?u>7jރo{V⦄X;SzÜ"Uދd_jʇx" p;P"pg`rȕڙ=*a9Go.`[Bqu7{,}=R ;y AE~ZJEFʜaz1@iu#,<1oDT1~~ӮYd?A6NF܎ʟ8I`e9D@r$fR[Srj6k8d3 ME4( "A\3ZNx^R3j텭P 8kAބ1[wxhͯY +yo=7 p =j8#Va + *G܄X@rzytFzwd Bˡ32<([qh}9 I;j:`xk`~rA=H=Q [0[7PM +Pr*vVJI +7 F2.Ibjc)kx=C nHyխ"tT*1otTдiߏ_j$Ue'dR!& +Rl`Ml#=!<Tm<304iH [l;EO=WC*!$SOJu͐<Ɠcњ[9&$bV]ILɩH?c7aKGzR3.bamzLxNxRW_P'Ux#&p st'N,4Le@Q)L×x͌.3 +b3|(^ ڗjb>Xة +endstream +endobj +1506 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1505 0 R +/Resources 4 0 R +/Annots [ 1507 0 R 1508 0 R 1509 0 R 1510 0 R 1511 0 R 1512 0 R 1513 0 R ] +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1507 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 637.770822 39.386457 622.756422 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/DRSFalse.png) +>> +>> +endobj +1508 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 637.770822 95.636457 610.770822 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/DRSFalse.png) +>> +>> +endobj +1509 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 610.770822 297.637795 595.756422 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/DRSFalse.png) +>> +>> +endobj +1510 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 528.191622 39.386457 513.177222 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/DRSTrue.png) +>> +>> +endobj +1511 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 528.191622 95.636457 501.191622 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/DRSTrue.png) +>> +>> +endobj +1512 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 501.191622 297.637795 486.177222 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/DRSTrue.png) +>> +>> +endobj +1513 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 101.433222 39.386457 86.418822 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/TestsCouleurs.png) +>> +>> +endobj +1514 0 obj +<< +/Filter /FlateDecode +/Length 2990 +>> +stream +x\ێ#9S|Fs ,"^!fyϮCҿM_0LhYW +ED)x{|v"8eKOx}; Br:sƨb:RR\4F8k _~8Ɉ eᬔ©#9黋N4.߲c>V[|f +uc!]At> '|\Pk^J>=Y)@+p$/&Y}8ۧϧϟ^ kte4=0}]/-fNA^uRo +$Ox&/xu0=w;+0fq/zko&a5$HOS`O93K1vxc1^?=O@470B͆w6u;S0IuO`0.,8 ѰdVW켌u(Q62m鷯\s~],XkMfӐ;<Ϥ{-ωJ`Y Fp.A`(Lai*ϳ9cDǿDނ3 /d'u@C`DѠЕB%_0^RGW]eW~ބm6 QlBXJb|IF65pIi|>:rĘ(i*]PbrY!L\>J>T ̽I.Y /l,UDFAXRwW],&OʅK%Wh$g5?RQA.mwS@r1RPhd›Jq)fghش>raq<s\1"pAs>xet%|^~X,Lepҧ7j7UfkˮUzt){L^O.|xޙ@J-#[nmY$T!^<'NYe_~iN9:WfGbVAV ب8 2ڊuP rwUYH;淳JHJ6'YWd8ae8u,=}].. i6DHa$^~x}gD&-[~ NԖYgD&.Dd(֊/@6 +$$N oB ÇVm2i92$[>DfJrI?m΍Rj'/[Ny "wqi "<D +dGvGK66Ȑ,\:w9]HhH-Ȅ@lģЩY5ϧhSj@Rܝ$-v>#rH&AѽA $WN)%^ ~C7^8` ( a3hM˂K >\o8Z[`iw눇ֈfiJbGW`7rn\"1:bf\u1PlIMzރlabݧ!„\j"D?&CQSG4B4nCG4S| ݠiNݠ)enmo>hZS7H4ޥ9NI+hw6iKY͞ ND .㏏0bB8L9Ze82h?ˆۜ>|bz*9dz][9l[mCL:)r"oG1㛺X=p9߷1!Ǖ8T~]+&d} ¥Յ!: `w92Bg4G~@J~I&ܸà\tONv)wv*HC1E9h%0'%E9? +$[bMo;Dp6H2Ij} 5TI$;vrɊލnIb(e[s^K;Vz|Z D׉EۚcdK-eH`n-XW&n(ec&Je\}+ϊwR%Wzy*w%̻5bwc{Lԇ(=LOWc]ۏV~:,+&)J>~F_ޤAH^wyD3!o+K_>>(9uNꑿ&| CIyAt)oz_l1 +endstream +endobj +1515 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1514 0 R +/Resources 4 0 R +/Annots [ 1516 0 R 1517 0 R ] +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1516 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 771.023622 555.889134 455.447005 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/TestsCouleurs.png) +>> +>> +endobj +1517 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 455.447005 297.637795 440.432605 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/TestsCouleurs.png) +>> +>> +endobj +1518 0 obj +<< +/Filter /FlateDecode +/Length 1815 +>> +stream +xZ͎6)e8C=m!(z@"HeKYz\"ΈW%Boi|oq}ܰ(ΈFlV(("mYf-O_7mYdKdr}pimߧwW;Rz@js jtP>qQ!eFT|v,NxHCC՟h{G?z}8Ã{vQWG+< y9zhZ4ph{l)ko0?woP$DfD^ 1v\ۀO'TS\`-ODŕ.Qsi;{,幺>LTZ3a\ L?Δ&Bqgz~)Ӹ4ֶ7ؕk þ!߫-vhtgݙoyS~̈́$Z7#&#J@2@UtoƱ1ZMUTsveMa4N &$&YDsnhSyrFY1Ȩ>'/7)0Dْxz-EgpPkrOkӃ܍ѴjDD"duqx|vga/{ׄca{k=?_sj#3lRZ4 ״Z +͋swc݈.N f֭R6%Bnɑâ/r{/ Z"tkŴR῔B`#FrffD2:!`5Z;_^SAbk1[Cd@eB+{CLȘgqf6*kpS$tG0̦[º"Uma89 h{/ZzamDOݮV$g^@ir-1 c`.ZGa.^i dB9kQvR[aA]eWE:v6O;#j63vWN'!) Z|w i526UE$؄3V%Oأ YNe +J_OBG])IWU!Mmy*5^v;feH3OVq;ݻ%)UJ%<KLJJGΚ#}~ARwف^^]2Q*_¬mvelJ/a׶ûL#2:a}2E]ą+ʔM?ϐ>\G+ڥ{_I|EءZ߂ae$L烟</?;X"Ã`1b @sLqȘ-|3t@B4&`=XkǢHCt7z9p׸0&c/| :a!zzQꆙtXqt2DI?>C F53ØCx8r+r3i w%oS +endstream +endobj +1519 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1518 0 R +/Resources 4 0 R +/Annots [ 1520 0 R 1521 0 R 1522 0 R 1523 0 R ] +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1520 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 685.371162 39.386457 670.356762 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/TyresImages.png) +>> +>> +endobj +1521 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 685.371162 555.889134 519.268597 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/TyresImages.png) +>> +>> +endobj +1522 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 519.268597 297.637795 504.254197 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/TyresImages.png) +>> +>> +endobj +1523 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 205.842997 39.386457 190.828597 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/TyreColors.png) +>> +>> +endobj +1524 0 obj +<< +/Filter /FlateDecode +/Length 1344 +>> +stream +xX͎6 S`"!%-P0 zHE؃EkS @c +-ӗV5}O~_N6$\ *m,]VV?>$!|,K~tzwOnѶUb^2m. Ca-gvw_AWj0phIbѶX9BRpUDm#&F_~ dL翖Br=(TiBR q5БԺvgIGe7ikrsB)Mq, |ޮzNr>ݬUwVٯq6U}BP [Н_FkI;H|J7ămjW{sbXŦrޮ3^Dz5pIx mr>;>"X-u,{iʈgPqD1=um 1ܶ9c +nj),#Ձ!;Vު,Tҙv{Oםmd"jL$qscz 'мb*q.NWZ\*ar Ʊ)h&bG(ͨ}))S9"Ӛ##^{lmB)kOÞpkPXvDTίݎa"WKafgZyX 9T +E6\ڳ`LܓGAN E3I#z Pg:bEP@Ts35H3gh({̞}8U3|֕W3ˇAOG2kE*q1b{MH+ ݈Deͨ?z)rnG +0 &^CdRaM?mi4G$@AVEʓ~/z,7̒K754 #Q@6Lf_@#45[/ 1.)ǻbdH8̀R)('a4sbxH ֍ߩTIg}ޮe,Pʲ|0<.]x9u4 [t9GuK2fH 1mVvo̩RIʞ箓vBmgO/E > +5$OޝM%fA\@KIʖP-uϦ\>T ծ鞝~FD=60H,30yec(v6>lSH!<ԛvXHL +endstream +endobj +1525 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1524 0 R +/Resources 4 0 R +/Annots [ 1526 0 R 1527 0 R ] +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1526 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 771.023622 354.386457 456.023622 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/TyreColors.png) +>> +>> +endobj +1527 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 456.023622 297.637795 441.009222 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/TyreColors.png) +>> +>> +endobj +1528 0 obj +<< +/Filter /FlateDecode +/Length 1814 +>> +stream +xYI7ϯs mm v1`Cw;RRk)mz'5}?l3ZMӧ 0FT?B|>aԬMۙs&$6J9?'?89ƌ5BG}pzM;]q}gPRn1O +濫f]UHPL2GٹЧ \w[2M=k2T +-kJM| .{$bރF_AJ9.*MN?{;ftJsCF:=[`ҩWjz~{w&^'|?Wd 0yJ8ca4FزpGeWUI,@UĤ( \@鲑 Mꡖ] [x8'A/`{Jd;OPh`zvR)"ݭ˘ئEh{%ea-(CdFN + +'e>8dN軐w*&sUYw}zrP;uqfIW#sƎX8kƴ2a9e4w+!x([hFRYkЮvd%oЉz`V y]ɂK=$zPf`*$4P37ɑvR{x60OxQf[+x{@y=7{Q7r$1 /F lf:Dmw/'nݹXܞsbZ+}8à2T#+'@rʌ13^ Waj\;LFJ;Q,Z!4iLLGcYU!0۬k`Ԁ +X)=7tSocƞY 6FZ8sv@}UJ*#gG_JHI8#j+Ha U4S9AWz(m Db,J4RZTb)Hڂfp9sP +A]͍TՏ[kE1"b;6P"r|"ԎR\C£!xG%e2S,êw]EUy)ZIO/[ +ةï:hV"˲nj"8TqRB)_ / ni\&/ ԪҶUC;F6}Gl::? -'Az*{^#l8fz6vB'e^uc~ ߢz8}Ezf7jUf6wښA|bUqtܦLu(`X, Ώ| dŔ~Ҝyj/D=PjLGnsY]d2tc|v]@!-ۡd;ӯpdN{Yd&(ޥTT]2} o1̌*Щ^= +)Zsf4TrɀPy;ߜUEc½@ +h?h"@sǗ 7aqIw6gDAZpx';Hr?]l9B`vHe*R\ϔr-Y /g 'E7՚mM%'2 +k϶bv*7Bj9|KQ ;?B/#$̧ҎO%n̓X/_Gƪ£;;ɟ +QүRj);&Ό}]٬?e1!Ƴ7 +~-f--.*mLx!.0 +d%ieO)7w3. +endstream +endobj +1529 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1528 0 R +/Resources 4 0 R +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1530 0 obj +<< +/Filter /FlateDecode +/Length 1939 +>> +stream +xZ͎6 SPC`(zxAiR(S<LxlYG9~W0R3[Oȷ?墽*h A8y4^ZX5?Zx$RM#䔾_?]>Rˊ mKw!S.qVM" A1ˇ~?~dZO%U˟EJZ75^3>^3_t\]ז,{>iL,7w>dc]Y yېWfde kzou'46de%[RǿU]wnrdZ I[n &Css+OL`9%{70ϭ#3:K=ntl΍>’YX^c];Ƞg uYy&4ݛ|ͼqp#y2%Ih˪؂Lw' (\?BpwRZHi @z0@3ghue=[98OFbQmgYz'Z"N+,PK hhîQX5V7_[h/P(gKʐMT7eTꨑe(Ab#3]B]0g%ZQ:[Ayÿ~@9tt"XL*$Sk'JIK/,')h{ @RѰt$$Zc +UP5_qY;Vc={=/ ԝJ笶^HKuf1'ZBe5UJˁ.vkqN^a]9Ppxo1rS7xCQNaLV7;q;6jz7pَ#Q$zؔ926 2sޝG +Y}L]Fͮ찢nipKx{ķk.i8eB6vͫ4q%& + o8FdlhWY(ٯrO0{wI& M{U.aYR2Wge?:tѼ=%ծxa nvB)Y?ro/ ;{@𮈞c!KST!45j)i5V>#H'Z,FևAMiiH׽vQp03OVBE͛wLݼ%/M5 >sHGY-d7ƚ$CNw/X@oq]^JCDĀQ ^`zZ$F)5 XS]0Sp㫠PLeKBۑ{NǐB)TsLJ#+I'HQbZڃ?+'ڽ +endstream +endobj +1531 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1530 0 R +/Resources 4 0 R +/Annots [ 1532 0 R 1533 0 R 1534 0 R 1535 0 R 1536 0 R 1537 0 R 1538 0 R 1539 0 R 1540 0 R ] +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1532 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 652.785222 39.386457 637.770822 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/TyreWithBackground.png) +>> +>> +endobj +1533 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 652.785222 55.886457 639.285222 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/TyreWithBackground.png) +>> +>> +endobj +1534 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 639.285222 297.637795 624.270822 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/TyreWithBackground.png) +>> +>> +endobj +1535 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 556.706022 39.386457 541.691622 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/TyreWithoutBackground.png) +>> +>> +endobj +1536 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 556.706022 55.886457 543.206022 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/TyreWithoutBackground.png) +>> +>> +endobj +1537 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 543.206022 297.637795 528.191622 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/TyreWithoutBackground.png) +>> +>> +endobj +1538 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 336.758022 39.386457 321.743622 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/Recognised11.png) +>> +>> +endobj +1539 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 336.758022 201.386457 198.758022 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/Recognised11.png) +>> +>> +endobj +1540 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 198.758022 297.637795 183.743622 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/Recognised11.png) +>> +>> +endobj +1541 0 obj +<< +/Filter /FlateDecode +/Length 1409 +>> +stream +xXɎ6WLs)n@F$@Z=2rqHq/RRwC3j,Vzb |==8'~x=eki䁁s +DŽRRLRNߟNz[g'!dZxt!qO_;Qڪ}uX2l*&b[m-p_ +7)fpiv*WOF5%!*#3g]L"R mȝ()h%Xl#@ +W/GR0ĹB*l9` u}n^(Vv7y,30v[Q[(k,syY7=]K ˶ԔA}YD.n+6ǎ8cHI@jҗR2"#-M\Ga'4ut/9䩍|D)VQN @ *:S{jQ|';T6{{NJ}H+H`Ѫڦ}7甒vr -APyڀIkT{!6-TT~a 7^hK?%TS[j O"Q-; +I֐8[&|qd4(]9q%픔=`e* +ZJQ&H&'Za_Rs6 $,qr2Ku 3%o)+yXi:晱|چ>;ꠁ.MӃ#: ybMШfnYr8 Z#}ء*=)bBET7sD^u%cBԅo^!eEo3_Υbإ".x#nu/ vmH*c 2P^eۓã} o =ƣ7Y/&XTasS-QŹi8;TƆCJ$u, +NO [u M8CEts#4^3 AA9!;]Q\/T=OCJi/6œo?Ȅ +endstream +endobj +1542 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1541 0 R +/Resources 4 0 R +/Annots [ 1543 0 R 1544 0 R 1545 0 R 1546 0 R 1547 0 R 1548 0 R ] +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1543 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 771.023622 39.386457 756.009222 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/RecognisedH.png) +>> +>> +endobj +1544 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 771.023622 201.386457 633.023622 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/RecognisedH.png) +>> +>> +endobj +1545 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 633.023622 297.637795 618.009222 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/RecognisedH.png) +>> +>> +endobj +1546 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 574.842822 39.386457 559.828422 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/RecognisedM.png) +>> +>> +endobj +1547 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 574.842822 201.386457 436.842822 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/RecognisedM.png) +>> +>> +endobj +1548 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 436.842822 297.637795 421.828422 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Screens/RecognisedM.png) +>> +>> +endobj +1549 0 obj +<< +/Filter /FlateDecode +/Length 3189 +>> +stream +x\KWhadIrH0yAz@)E.Y3mbLJZ9N^ }pVoΜ/h>o F:{ iG'<KbF+/sywBJfD~I0~ EQԆ3 @ajHpϼ^篇?៟"ʓq(/q.ε/|FE^Θx=^^ܦ}n?{f5W(.i@'2w01 +J[\UFV!Q#dn|ͅQF<)m]SB"*Й2 #4y~RZȌuoi< N;H0 J=gH%[G%WfhDu566(K,<]u~Kq5uK8ˌ7v(ڹy}I>20 >?_om֡ n4]IG9_T9{). ~ZOA>^=?:[gosMy΍|qI-Jʨ\* 69A;䤋Cx16 < [?r0&r66eNUP .zi^'c #UH5R)-se7 +iҳG" Ioz% + +lDW#1nsTQ{JT~^d} +Hz;Ȃ,M\eȊ`g`X } ё"5&Cm]_[M2KMC@B9É5bz#9&cC0%R2* *LG/xx!bD[AsΠӽI1*;z]fN !aQ aݎDP:(+ڥS_wߪ2wKBHWZOR.HRӉ76f;σ,i-W9p 81quИҘ6'aV5KTs^N`*.}cyymvmyم7˷,ؾ\|bzZŷ,Y\|z26ߦߐR -t8~=898A_7ϭ=] v8Kϸ:._* 4~khMh!mI~kAwBƔ +o}ncr(sp]7K{w `si%SqY]2h,% u^ӧ??EdpVJ=m8OLbpI2W X6*PqFG"P-#}ZNAVʔn"+.F 6Vb5 2HNvD,Ifh,Cjx㶾Gn2=/L 2В +Ñ KH- VvvS<1ѫv4^҆2`iJea9 ZՆ0>lwZ%Tv+Y1ij9 eېhYjx9=U/ Z ߬Rq"EgJg]wƌ՞`z0Yd66qa76)F'RD?v rqFupi6VIDթ`#I4y fxڇL:m`0E$3i'ɥ)BI\^ +ւU|8PwxD&@xӐLjH ]cDl&I<*.;q`;nT; 2DVc G۸Q6ס|n~+0@rW<&w4~~Eïu=Ļ UģJ[KB^_; +xSg?}:#]ź.LAվ%  JL%~&Pퟴ$P'G$ʠ<5V*Q^LO|~{ȋ:vH#cߵ|`ُ(hnF{ՂWU| +r`6ѓS9vHV̓B][%L&u|6U^Wf^M`Σ +hK(U5W61<f O^s]&ecpQ}sۣN?ɱ0yz.NH` 4߷\q3d\2ah|wIJ uoVMo qǴ3ݤz~\-0Miރx= FCKe]|*x&vm(zaT0T0yON5G"v0>>!d/{>"3ӽ;VE{Dg&OE> +endstream +endobj +1550 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1549 0 R +/Resources 4 0 R +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1551 0 obj +<< +/Filter /FlateDecode +/Length 3847 +>> +stream +x]K#W, 6v ։#Ǘv?bXj@UXU5g?ׂy˗'Μo8"csHgA3gBpQ)fRܝO|s;BHɌ֛x8ǟ??},?+E?cc8KAt"05H;ń\/~xQ|z=s9ׯh4wh7>t@\7pp=}q:^y<70ncsOƾ ]c?}\ + dvP#!m(|>7+~&2MzPs/gqz ^-sxpKBl^[_ giq:9W,ve| |0rR_]GN3ÜA;+&AiT0*y-;0o# #o-盄͍rjx=%9/'Sx57/~/d!nL7*pS)mZ/'TLo'k9$7.}ZmvǺ34(*p8 ǣ_֢зL +ᬁND_Lv/Lsyp1K&ǿ?D&଄09DW&Dw293kǪU}eiJ*%}/M$A6 IdCt_[tT0qphJ(80an`U dSN&^&E*]q')9S?Fx ;2:ty?s8}+T[Ycܰ`+ِ @0wD= SkMvBDlgV^"@ 5Nkoxau/wI0σ^9UhN2T*/[8@D#Ά ڤ#)h0t2G ,kb*@I^s1'mfE肪ny5.Be[h vv!gk<+HG7q~vKad*hrO -^m[Ӽ Ŷ qJYƒuJä)(B z(_'ʺ8ZEJ?ZEw ""FA +nҪn[Ȁwb5bp|C)qi̺ 9]6\Wdha%Q8 8?P $hP*o3i݅6IxZOE2@E T*WbJb;F$L2 &Sz'wa4hn4(DE@/D׋&MJn/_7hKV@k4.tIx&t) +mt ;ѱ.b#0)jeU5QXPҥ\t(o+N>զA6i6Xp:N6[%ZX>;T O&~R;ѧ{O4O4y'"'n +&WܰKAOU#R;uJ)Q}YiJ xŜΆj`!.j?:eb@h6SmJ=hiDy%mJ̫@ +z [f ^(SֽQ&UQ&c((M^7D Tpx6-jB7ӧީj;Qz';DIz'Ł:ā'މ(zwz'Mpk^DMNADM%;Q59V))#U\Fwahn(ZEE@/ZE׋VMJUO!ZU5` :`=iU^j'JjiLcݤU%UĞvU4y@0"ڦD jj,NAA:{Y;VЍVuUTߠUwӪuRV X "XWZEԱڇZZ Ms`**qn&o7^ +*mѪJYƒJ2aYʻ7Lk>N9BUR *7CQ:8taƃܖ@k(2\T{N*X|>r1"yҌ=irm^bYP[)rZE-ׂf6Ȣ5n2=Ppm؎$L GVoj洛}ې*oY7$.h}˶} @A}{C"oN`h1 +"eZmk9ܿ Hak)2eQ FNp%kvq\fOjAhf55ytbjEmL,-m$ʻZ_^U2}$gX?՞>4 0T˚I"c渒,t"h`x$bX1c,Vi.r+4m2<_h!6P g5[D:fmuRHܦݑmgU~@+Bfg#2lM،R;cY0[SjKv$yp4jŔ5cJѦIn\)5R-k^NV\fUϪA ДUGj,t9 "b("٬޼n:TsE<.&m)89L=k >)^'-4ՖmR]z'S‘*-AѸvӟ0 +( !̑ Lr8UjGL=L @[KcƠ&>5Z1\_C6LJCrphA^-yA:= ;IQ_ɛ>/MEG> +RAUbܓJ1Q~:Ow7ON.T/K}Q{vzd׭/4EX MA֞ɘpulGNh?ԊS_ԌS_Ԍ+ÍKpT/; C&ZsYXq ʣ0Nh*xqoP n-Ŵ1JVZV^K~U.]<>Xj˶ S j'$תJ%v1 ^(HVF)AP-):0H,/Lr{e4ܺWM.n +t-)ޓ,YQƬ&d Cڳ^Y;-7-g +;@ӻp-T;m8Zz.H Q Aգh;-+P:@GsE(58fVkNO5kӍO8-Gՠ"Dyj1>}5<%q锚އO_K+sE7JEj[*nQ_Vu:M S35[0U̼4uYtk!&Dj +r*0 7?5,v{6E4x o"ʓOa?Ӝ2%(d\PwDS2qh>4i\M6@ƻ<) V()-JmBզ)!'ɸ1B$š -!S͛6}P^dAv|bQ΍ e{ As`=t.[EP2ZI >$ֿTe % T#: ||T]۬vP疎bڲ3vѨ9hŪA Bfؿ> +endobj +1553 0 obj +<< +/Filter /FlateDecode +/Length 3212 +>> +stream +x\I#9@"FnB,@ABSPI"??*~fsu~;}?jFC~v^ k^-9rp΄A)d˗?O9e:{\EsoWsx _nкT~4kBSE|Rę[pNo?OgϷӿ1^_ӓHd^gGn,Ogmg|<^yԅ>Qxæ{;k3iPt=osyM*,7)H>▞@ϟ? (HDŠ( M j`$&f+cE _.*JvʔkdE;DE$$]} EFa~Usʁ9)"+ s.:Mpn+Q H%-2m8VYNqc=4F/XL*,5SI\**1R+f$ Qm/%ZM<١!)*b@#|kE(&s; +xmђ #F՛U9gu'2/*}>|H}@ +KEqǪ O@I#h4foС| gMC֋W^*UkQyZD 7$W#N{Q͔i[Q %lGA8?x㶀LS6$= 3W%A,%#)VAsRDb YiHx zWɍFѮd3% SzG#k+s & ]O^ì*KAR=)a`"U}RÆֽM Ӕj."g}4,d߈U=}G h]Q~'0f߷ +-A_ 2z5e\y'1݃5&T7O\_(=YkGYJIFֳ¸fP]ᨨ7M0F+lc5Zʁ͂qIF@-1HD4exUJv&vM\#E=SEFt|Kiۉ`-g/X-=mNޣ.1+'g9Xg0Kڸ(tM}6@S9{n5@ +bרDzkwus% +pی,I;#Kw/Ez;Y{1;5r"jM_f)( +ͱADx`?ע"- +IvХ2[5=' ZLn>D3#G)w6XY´RĜ .5ye1En#P1ЛG+Zc0*v13ki-d} D=PzV`EߌA-O] ]Qd ["T_1Ok"% 1Yv =Y6`buSJ"ݥQijZlu\to}aey 뢣lSЛzYQBwe<ȣI #RZeA !\h:+(5PPZ܈~S2Y˽iBdX&J&SeS0ɍI2+=se."X&w: +Ӥ0 +5߻˒ICIFݸm%TJ9iC)B9F=Xw;OqJ+̕hI)#(ʃm swȶ*1vL.6Lߵ-9c]RHS69u찇NiQ^~uRY/- e'{ +fQ(h7\~٩ݻxYNUX }jHf}n9O>0f懩.ZդU4G؉ah+V/6Ztˋ刟Ңa55=S4g׀^W&n6e͇ y𖔧h ЇK}AhRjTj^&8A1]+y 2ɻMp`fcr'%MWg7`g6<@d(Xfpy;瓆ն o廮] EIibw(e?|.gi󫱋|N,̊p~JO\דUlv6]: % Wd: nZqX1z` +ד m h*f] |wӔ;b}B!(ޑ#ȱb1ʏҡ|) lPN66X|(at]s)G>c T7UP]4.o/ U>UB"H .x>%$ӎ{E^]aLQB-vc[HT}ƣbH[>ܣAYqj䠵Y\osU|=oCo7c{4"A~{μcPQף׍)#z`&!C)B+Nvq@wt8C>,+&yk~رxKvlMFrXJ{~Y^r@}zshհODqᗋ\hnyW8[\8;1p<vc}3LhyTin.u;@bOU-֞A~?1yEd^k0rXlL9&2>rQVwE161ݥ SS4@464g):sfKņ΀g l%0I_;@߳ А4v%PEC+:~yN:bߓ}2J+} +endstream +endobj +1554 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1553 0 R +/Resources 4 0 R +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1555 0 obj +<< +/Filter /FlateDecode +/Length 2108 +>> +stream +xZɎ7+/`  AcvfdKぬ"k}řǿDkę3<+7sHgA3gBpJ1ӿ{s;BHɌ֛BOwk}^_rkyYKk.쓾ozy˺6 ~=!y}'OF.r^NOVnVIlln̛o<"0KK'&H񴦾3  ƻsf,`_W0ļuy߲>ہ9[˖r.bNuX˂]lQnXc ͝i3]3wCȡv:rx6)(1 rq* +A<A6KziL%mժg( +!5 cj|9 E$E7E]^kA~G*eMNq}eX@vTQlԣ,^:SL,DSRTCMC3F08 š/rR!; }P456 zl qM.9. 9;g0W +\EEg(jndDH2bֲUZt{XmaHKw瑠bk1.,5f<%|{-C4Lz i `]4n%N w[#\#r5ABq$`i0+lB̶_kaC}d>`EaCpZ<4\Dnl +hh|#ᰂ%1,DP (. VBĵ7~iv+U@6 s'DJPlIXD]Dd\ [ yjHN>Ԙ-DF* _` +_`G27uyް :0u ^*0:z/^7G500@i&W`MH9'HG 6|w| ҡRFvǀ gfXC2(U0 oo@V&84L("6"F5,\֣O )Pʴ@x}v}ww45i} (LxU@{exmeo8A7Uut`p+#p Da?h 8OMr9ʩĊ}/|e/q!@>ҫQ+h` #>H;;; S C4Dj&:Pw)jfí7-ts}t٫TaC'罥i ߥ\ URݬ4J׵u-9"AF!y'l~s +DdQC!q\tiߊ(F?l#^3|=+5[px-3~CPx8s/|5~g-y*џt]}I7n]B^|ˀo~|{-oҽuo9nƽw/Ƹhq6igbfi}q{Q0n졶pO:CJJe]70hb< k)8韫 #}Y(ì +>ݼ@F@OLJbҨ2aȞ0%\f +endstream +endobj +1556 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1555 0 R +/Resources 4 0 R +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1557 0 obj +<< +/Filter /FlateDecode +/Length 1941 +>> +stream +xZɎ#7 +Jk>H\tA^s3 JXRL7m|#*yx-'g &gDI#o3;{\~9:')Ŭ—JMF+%ۧq[pzGc$'q6ZU4FLa0Ƿ$E*~Z߾>˯?(~sTvE>:.eO{k|9mq>UZgYy(S\;h93'o8څlXt:uѴc^}"=üjtYMp]) +V1!☴{uu4GTie t$C&;7r\'4 + "" Kr{O3k3")3g_{p$=kA/dUlLQ@ D<9!5L84; @m)/8&{BD]*p rS-mp6:Nt=d}"\6ցR,/1̲u֠Cf!'-Cv85}*5 X2%n5y*@2Wl]ϬQIZ X⥙* p)z[ {1sSY_, Z EcfP^֭^C~Xb3BNƴ [{ DMb@XD)yԱm)M^kt7=; u%9,}eC@ Fuj|JTݓ33 B#A/! !pNG0`R\N;Qb2F(3;I"Rqu$]2߉Xƛ@<*H&0 xvܓ@tBߏr`V޹/(GR;<7 Ğ\ _G!@=VR &jܮ랡6tDF`|yﲳ,Ǩ_dݢҰE YMoM> (F@OZ;T[kdO琢fo2R +endstream +endobj +1558 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1557 0 R +/Resources 4 0 R +/Annots [ 1559 0 R ] +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1559 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 307.454022 39.386457 292.439622 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Figma/PosterV1.png) +>> +>> +endobj +1560 0 obj +<< +/Filter /FlateDecode +/Length 366 +>> +stream +xN0 yΗmi$āmK8ipI$lD \_Cډ}c}"k\&H"$0D[r{w^]g,BLZ$m,ru@!(G(rJ o-wcrNç&Ӛz )B3&\p]AlhYȏ4۳ndc7B2s^]_/Blw0C$dGZY=:Wiw w2T1}`L刓Jm  1qPJ* lu,6 jUCC +=y<k.+b, +endstream +endobj +1561 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1560 0 R +/Resources 4 0 R +/Annots [ 1562 0 R ] +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1562 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 771.023622 555.889134 40.569523 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Figma/PosterV1.png) +>> +>> +endobj +1563 0 obj +<< +/Filter /FlateDecode +/Length 608 +>> +stream +xTKo1 Wډ +J@BT/$LK/ak ;Lr.)=?g.146&~lBrOr3bf>a)Hj~z?@"zK\5с}m⨻ot Qz08 % +YϙݗO?~Xjd?~2Q$L"[&ž@,fX,Pr+HU.t0GGjXnХkF+]l[@b,V;uŲi}:l1LbJF6s:Wu*[5 _<> *I I%-أH+#QW[hyi + m@!!L/U6gSV_33]ZKyb~5#gBF6[-yx|8f18,Bb0sR,h?s(.gL52㏿/ӨG? 1Y2HK)np"XuT^g=krcaCɵW@q7OZ/H~)U|?d' +endstream +endobj +1564 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1563 0 R +/Resources 4 0 R +/Annots [ 1565 0 R 1566 0 R ] +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1565 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 771.023622 297.637795 756.009222 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Figma/PosterV1.png) +>> +>> +endobj +1566 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 649.031622 39.386457 634.017222 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Figma/PosterV2.png) +>> +>> +endobj +1567 0 obj +<< +/Filter /FlateDecode +/Length 366 +>> +stream +xN0 yH8 .HE !lt@/t &M8A2e~vN}k;85,Q"d)SݺWWYS`1JR [7{~6he| J"x)hV9ņ7ǖĻ1s)`@{H?{k51 Xc2Y"d 3qCȦ3˫אZ$5Vd.m=g4 s9-|t_(qk VLGjOP`0 kmJ*go +(0Z-lBT#R< ]pUQ}O +endstream +endobj +1568 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1567 0 R +/Resources 4 0 R +/Annots [ 1569 0 R ] +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1569 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 39.386457 771.023622 555.889134 40.569523 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Figma/PosterV2.png) +>> +>> +endobj +1570 0 obj +<< +/Filter /FlateDecode +/Length 3105 +>> +stream +x[Io?0t $ rh<@Y|Վ2euW-E)/Z%bLI$}ݛOd +TJIm1Ycd8z?|HF)C gN%]^O?\{z#B)x(k-h? bIY(/?*YOo}Oa / ڒ&)i`̓6>u$;п$ʯݰwLR +7o̴36_ҏ,<]D̄LZ(ike8-~ |YW?Wu=ӑӚYy]^3|{R2"Z\Ѣr^”~xQh$+j2bbML* R=(R (35&Km,̂}ȯ~쮼WxLWyqd +n%ަ!5Zl=彜y\9ԅm#:2bq6"g|ۋ?2 hɕ05T`obN3ǁm9n;^t$%r=::on +KY & J3*i0ָ.zjuvCo쌑8]9r\pŠ5X&E:Ө|Lt7gOclYX-0;s/譍[:MS(C&;! H#Zp0`yCNנ# F1 +-lFts`l][ff 9ˠWBZYvKZ|Oqtr]ɵm4OF X4TqX}SҼAW @?&ǵW\;& u[D ]tq+r`؍C[s`Q;0E;; 1!J U8g$ J70pe +DZ@wqt,kZ^u[6 znP `&2w7ܚ3fB%-\s($iElZDھ~et +_Q!ׯE@Z$my2^w' n;WrKF MSv,E-h$pՇ.jUI7U: +QP#rǀ 0 1jk=\~$L,:i)wи*+?a0Mol>+y{{J4BpH9^K ot2 N2ol_'Z0r+$=7Oa谾p"x]g-5ȵ%Q ϰ(.iwAŚǛNip,b[^6 :7-n:n\y8\YX9\WǏЂs +#qѺMʫ!:;+m3g/* xٍBv!N487HdzfrlNV Zx ySNW-'q?az-lNwF 6ݵANْ"h Rp5_ʺqN@?RS6:X3ϲ7E\FSlnR\"1V{hw/܀76`8Ď-#Y wG|%6<ӫ ++x͍P;/bf_gk6[k2Wu䍇)cC#;Qcyh6f&oc18a7N$axᆸ5X?:NSoybAQ +&eD%e=l[M㐝ʇj`iYI {K+)cF|m@Äouu:چOCb@ $}= Ѭe8W)w7bS//q@6"i=<2(;K'5\KzGgZ:YCb[q;SX[;,L[ oC +xMçv T +$mSL/`09SR*mzqڗ\I蕱 ׍@'Kā˟O py^lѾ,fsw=Z}m'B*uI<]勵ӀRhBP(L>#J$B~f|Z|- dOfm'3A#UT;%'L)iau(Eٖpj؂ ]%%-GFf :;jO-QlʣAZKJ=a߭?0xxN*Vj[ V6VȨ\hҦPޡDms9r4a(P4*m:6}^( bQ>#zJKzT಩:9*@A l t0JxhΏbNۙ;~ҜbzTvOXe{_Av*Lu E`{;y)Z߶fPOn୍,4.uiqQ5NvAHT1ohGE%K1oG+GBơ"WL!,iGv !G8r;J7A + f ژSza ,EjGM:d9;S><^hJfT-Ƞ=ZR>~ bҸ.Jh,6srZQzCQKal"%@ҞDI97* +O%ENY xC>g渌oHDOq5FDgvQ'{]E0S:\#ʭ? Iuɾ?w'?<>;?9ۍFYIё|~K_ŬT}raSR;4>a45uEOLBcT֧z3[0G򜘧AD̘~cBhgx +Ol':-" +endstream +endobj +1571 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1570 0 R +/Resources 4 0 R +/Annots [ 1572 0 R ] +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1572 0 obj +<< +/Type /Annot +/Subtype /Link +/Rect [ 297.637795 771.023622 297.637795 756.009222 ] +/BS << +/W 0 +>> +/A << +/Type /Action +/S /URI +/URI (./Images/Figma/PosterV2.png) +>> +>> +endobj +1573 0 obj +<< +/Filter /FlateDecode +/Length 2838 +>> +stream +x[ˎ+W&.f^8 ,4W`lTli+w*Rt'Zĸo/_^~}QKp*MySń%ln ƨv :.ZդY5Fo~^%(bhӛ.З/].?6ڷߝ2F-i4o/n1;EZ%1Z{y廿?Nj?(&RUO432αֺ9_95s5e=><30>}ii,be|[5K4۽cq-uh~ɠ^~#6YPkpapVf޼-4L܉*D\me +3vBq"(2"0Nddw;ޗ*m?zwu +KC*kr&L~Ș+& +!N[l<L"jM*2n;\擡n`ױG!A+xtS۸yģ>μ aH0'@qu}׺4Af$U982"uJD$2i +7a^_"bBT Y `12^Ϭ0]t[W Mbb2J (2w>b?-)A!P}.֥dw|&BSݢ$ڒWP}dEq~2V=XL>)2g"a"D"J#b ~"ZmuZhXpM,ш@SSG5j|4m.Kc7rL+H$셠*H+qU4E`Y`1SW q%3U3HÍAiPD0XEnbֿÐ&ִ>mʎPX!<=# GeŐ@<l]Wҡw|)ۖߏazIyd͚Ɛla!(CO50 `e{ımb|#ZI=YF}Nxg'eu+ϭ˦b|2X3gVRdWͫuP4 {beCZn7+KLzX:wnH̪߅7USI%\. >sź0oB6uCE k*Jṵ}Fͩ5D [ҀF'4YD\QkRT`RXǬVnD} ގC25@oFMh'd%@dC2Dgȸj<DŽ;;_ƹ( u5$g" +M ",nƒ`&EVS vǰN)(59H\s%z:0 a7OM.&`ԛس!& 8s3 +Rg!fTk`;>P,(v>^ '&EOSX1rGtlC| g^ʒгdĸup6WM ++&Y(@@- sAG}o!Ac[=NtD~:ΟO^=.YMܖ3f,;Y[F(YҮ{S *f#$8!%j˜+pK +d'toLkUo+:1vc0<D_knAg}`ghF2#xpj|NJs!-Dv@@Ueb&aG`ldaM$$ BI8TsR +$ @3y7y.;\:W#c-'m`͢i(bn.:LCAEP'/CVQCBtR]R#`΃A=: +fYiI: '?ny;;QO +0<п +: Ov1=]ʨ~>W`L +dg՟е >`Asw0M.LR@F: P߰ l:m)*PH_*&kdz Ru#8&oC 2/華7W.>U4n {w3e89Ӌs"ש$BW$f5]!oi)tS΢e`r`;j#:6sTs%ƤĠ0!tMTVcP]VBY15²U2#ŁUV_4v|4j"xe/d18Hf؍<tT~iNB֋U4:S؊,uOߞ|S۳קooroϓoBGS)vɾ[%{obKI +S~諕B]]^7 7A}Ƈ-&G'B#Vտ޳ \-l15 ^@~yjC +w:m?q5? +endstream +endobj +1574 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1573 0 R +/Resources 4 0 R +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1575 0 obj +<< +/Filter /FlateDecode +/Length 3412 +>> +stream +xˎ#wbNrpI 9Hڕ/?"EM)Kf#bOG~'7r>3˯f4?a`c0^p)8b}>C^@pR།31\hE+iXp I8#)?z~(#<Ix=ED0k:f9e ﳾit]5vw: Bs+u^ kWP\:(y\$DJ_N2Rq"=iX&tY(bbZ'e3^eLZg;}Ry. +K*"I).lm7?CAPU`$؅!" U3"ߌډLˋI(Q# R\U\sUÛ&kxNh` <. u~ q'F$tf*?GIERdj5_XWB2_;/W%.CŁvo?;fGEwrdS$vj +^r^Q|_5޳5du69,V3B3Fe m%BHyB c>^ƉK@k% +XA NTX_',(LA,CH?q\ K+CRaaJhx>j +g܎a܈ϙ @ef2oIK7Eͪ};^LD[x\;oAfߚgKR`f]7PM,dXQA4SM8R=wiՖ9s%71d Kk*{ml?k>ig.؝-.M.jΜH{m4|' ؛\[)T;PlrAP* Jp +dXfUePmr *^rʃKDŽ$nIT \\ԲDiXE1yal'GjQ$/|jP L UPU;.+igQS>V3{,xVٖ8Gz -\ .KX`PYixM8OKt7a,03W'{.b Y^8Jnєv̀ XPCbFd~/8T*%1;q%Lv#% ̽Ӷ<\ꡦuB:!ͥ"gm{`)swY^[JKxsc2E!{{g6w4ܺ>{UjG&ݷGTٗˋ;Z)ZIjpu^ʘ1NcXP:8w`Om*#ÉbVqY(wI*{vy@dk:=a*`u58,H3iokBJoB!]q%;\{VqN* ݾxswjG{'O)=E[g2wNuN@HJzc࿖Wi=#b>=n6_` 8 'ϳFp|{9q⼗lXpu0# tW`E|V_evg)+t~pXqsܾ;XBPPFK :g=cy#!%WOÏ_~\L~<_aOq~/z/lGderV@KS|ۡ7yvxs[wr1~± 2KC\ Gtgu3]EK1oI89)@nߘv6ta'J1vܼĬXo>q,f9 BԢN;!IDC}, -??[(.m-'=r b")$6G͓эE9x-Q`Qht/Z,VK'74צֹ+#ݝUn7cv9j^):2 B:T䃙M\ks3́>2#&5W%hvۚWpjm,FIUȓ<4A=,MՈgB@yFel}+wHdb\\bQ"LMӕA>h7Oy|f @EW-{.s bv$Ɍfp1纽6Mgg%FS$\yDItXiZkoqǧ(g>GHR)f@~Ƃ.0QR;M:ײI`?P+iG#^lP \"(j;}iѶig +endstream +endobj +1576 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 1575 0 R +/Resources 4 0 R +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +1577 0 obj +<< +/Filter /FlateDecode +/Length 4000 >> stream x]Kܸ?.Cd'9$pzx)Tc=dQK,)YHU"}}|HrFGv1At/ @@ -20648,22 +22112,21 @@ W pR2A;Had BQb#}FVZE5ްΑVER~q鋒~`WktK ǦI'KBfb.:N)Z 󔜒k+ 7ɲJ퉍ro`#})~g pQ[T#v% aI,$`F5Afl3P^u'ĥ7v)"ks! ,-x;_c 5QoabsX r'c\;xyh;pA";d;F͜.Ȁ(Fa1 h.\_NkW,wp (TPߛK Le|w.]n`4Q.Pt`;8vA Dp`Fw4Rq t6bdy*wONԆ4TMdI&IFC֟QsΥs(**+lT:oSD.poű^5QQ&iN̛YepR$'S,TO\FUaR΍F U. w-Z08n9#K,/LrCWy39VxA'@ia6Yi;\ ϖQ0$UYkUß@Q9+g=!ʈ͛AgT)zdvbE>vVLj] -~#oLxγ,$JU 3~mN`5\A =pҾ 7$>σ`Cϕk ༽)N%x#ٝy2Od~LMҪcz>Vo 7~-8:tDžȣM[&(~#|[KفJmC&`{F U _gZ-=qWayZau=%' Bl+锝Oyp?X\j1)~Chiw켯 d}^*ɷm=:I-9vy3|h-JFno[v@YPx|(\>,ɾK7^(P 0щ YkX_zW{XǤwn@Z(N,\5[Vl$v6/r;?rAP|r%_ƿox{ɖfiqsV^7;–#y51;Qkbvn?q=zjέ{GadO8ݱ|O=L}ONb^|{Cdhf=ۤrm{7z=٬%-`J=g$w\>;7 ]pYe ȕދ77mw$]kC`W3>r XSgsyVۀ b\g@8/wq|uP5!w3wBRZv0o{"{󙝉>?RnXZ~X_(SY }/39AqɤפGN<0KC~Ti+b.晷0MTby+#{y70A&qbu?- -Ɯs+WMA0 +~#oLxγ,$JU 3~mN`5\A =pҾ 7$>σ`Cϕk ༽)N%x#ٝy2Od~LMҪcz>Vo 7~-8:tDžȣM[&(~#|[KفJmC&`{F U _gZ-=qWayZau=%' Bl+锝Oyp?X\j1)~Chiw켯 d}^*ɷm=:I-9vy3|h-JFno[v@YPx|(\>,ɾK7^(P 0щ YkX_zW{XǤwn@Z(N,\5[Vl$v6/r;?rAP|r%_ƿox{ɖfiqsV^7;–#y51;Qkbvn?q=zjέ{GadO8ݱ|O=L}ONb^|{Cdhf=ۤrm{7z=٬%-`J=g$w\>;7 ]pYe ȕދ77mw$]kC`W3>r XSgsyVۀ b\g@8/wq|uP5!w3wBRZv0o{"{󙝉>?RnXZ~X_(SY }/39AqɤפGN<0KC~Ti+b.晷0MTbn|C u_o a+]M0H'9=[m9Vb0 endstream endobj -1465 0 obj +1578 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1464 0 R +/Contents 1577 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1466 0 obj +1579 0 obj << /Filter /FlateDecode /Length 4131 @@ -20685,24 +22148,24 @@ X q5+\BVR1*|HԡK bH{rR`,CxӖTžeA>m+@hjrKAx{'Д? Q/k<\~DVJ'@*6T Qʍ'k-]pWycŶSGZۇq[p]neRw*4ik)Ih^eY;)Б}Qoa-Zd eD]c 0(, S P0}tTm_A6D}m F[X{gKF; 9`O$rm jgGcх_@wq`63T {[ =ZE5Q -zwxp?W[Ŧ<>`Twfa/>'!!F#]5 DiWYkĥYϡQ (rJs![ .=3JIOjۯ@QEؘ#,]fW].sĨ.$:n@*CW{TV`Di[湒ctxnĨ[D9` _/A\z6E={<HYfuNG2ã[K5a5FʆEk};;K@ɢ߾W;i7 Zӥ̓(w{k4m4rI?FA4.Ҹ~g>QЀv~ _HCӌnyHQ1!(fQxzMl1?!(ȿ au?L:ފxH(r,\ % +zwxp?W[Ŧ<>`Twfa/>'!!F#]5 DiWYkĥYϡQ (rJs![ .=3JIOjۯ@QEؘ#,]fW].sĨ.$:n@*CW{TV`Di[湒ctxnĨ[D9` _/A\z6E={<HYfuNG2ã[K5a5FʆEk};;K@ɢ߾W;i7 Zӥ̓(w{k4m4rI?FA4.Ҹ~g>QЀv~ _HCӌnyHQ1!(mp;f/z .AC VdXZ?z!¥ݠ8~9 endstream endobj -1467 0 obj +1580 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1466 0 R +/Contents 1579 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1468 0 obj +1581 0 obj << /Filter /FlateDecode -/Length 3190 +/Length 3191 >> stream x\MWˏ`!@8Ay;n?b7]d5חxM^zdS~?!z/)oiQ`jB] vRB FJ^8Q ~wJ^O!snOmڏ - ֿO[_˵tj\+k;v @@ -20715,53 +22178,47 @@ h L~t;4V!#ZCYM P8]IZfbLHy-U" dUF$FaT U-MkA}t3o[#aƄdvgaXPo`>?j#ËsLo͜#s1ٔ`k0յG\g<r皶A{Ndݐ&b gW-몼|Isdsh%r_ʴhO#c@n0#T xJ6 dcC4b4_osۘ6O*GKj0^6l dzlT(j=-E \\eօ 0{ cIVgtYf&#,K9\.79dQ0ڵbhva3ϓe.lzH9OwȲÊvZ$.`Mcc<&.i 1ĺ4 IjZ _[[ %̮׫K]QM~ZkIրJd=|a1^ivϟPKGm TF#񞿲abm҆=)]+I 0r:>N'ûW8PfcHMvBhC~vy„zg~ -#6_={}I87%xU3.3Oq]sa%A.b xQNzΚh |bė'_wݝytz訤K*;O|1T*KzodX.aCX:xK2Uҕ s/edΚ_|:EN)[Jb& +#6_={}I87%xU3.3Oq]sa%A.b xQNzΚh |bė'_wݝytz訤K*;O|1T.߈q'[3v}-0!Qt%R@חT UgM/>좌KєL\~Mv& endstream endobj -1469 0 obj +1582 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1468 0 R +/Contents 1581 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1470 0 obj +1583 0 obj << /Filter /FlateDecode -/Length 1749 +/Length 1747 >> stream -xYY7~_ku$X?yamB1l:RR(#ޡwuTuWiV?s[aqE?SYok/V8& -bF+~i.^1˹uvBJfg -Ϸ`|/Z_U? -gH0p7Jr)xgII,G-wFywXs/d\CCrrp+U/b%UHhpJ> 'dޟK.c]~'JOs@8W)#,@>.ZЂL093&4S 3@Vaf֘˔Q`]P"0] P-}^p& -LW뱜꘦IQ<]QhU,ubN7WE9K -<G@ho1A|$E( -(Xtf\/xֹkMCl`d~{>#J2҈G?z+=M0i4^r뙛5\4ZШCsD FIW4("%*RYR55lbx~KQZF8zw#xz^2SCjFU/{shl75-+I4Vza40˧9WFs͌65/Q1E<rlCz0r1ik+=St\"U#75,[~k$0pJZ(;`Kp8& ~Tޅ@tU!.>SpNd{kok -:> +xYY7~_ku$X?yamB1l:RK;:4by+ӂ9-{qf ǿ{z)ˬ75 +KJ1vv{[:!%3ƒ3aXA0|wwWE#$2 /;HE0dnX +a=`qc`#cm~r#Q xe~&9aPL8]ؚ$us9o~y" (]vrn4^s}o.\/\}|3ý6䉞kŚҟ7i_/X0^֖pUyO\ֈюx%^jDΕPIHjEZtEj5f]xp(ݬKQz`Hơ 熪L6txb^uI)qI \dPMSC!k`}aMg ]\a*&>XAD 䝑2n~qNk㥒 ktHW J"͝"ۣ + N ?ٜce,ORAy`Πǂsvj3euhsC ZYdDfjVpFX?,lò52e+ttŘ1^RdS&E+I·=銅k7gyRshq:a+S2 nhI$u5&z`kaE5՚)vY+>zد_>"<3&^ 6M;oE0#f2c{l \ H(?{f3a:3圚4{' N!2=υN\<dqs:P8TX6ߊ[1n+`s,+7+%6u}Bt[d rBy% +qr(T{ +-R^Ղorjc&E4?4vEVh t _,*YR^Pؘ<"mEG)R#)-,ԆЈҪFG[6.5pzm1D9ʦ vlO-IwyC8R|Q,*xԖ෬zuOvULׄzt 4܃64mQ+G! :}HTj] X^_7BQZN8yw'xz^2SCjF5/{shlW5-+I4Vza40˧9WFK-v5/oQ=6`tmXJK3l +wx6c5ACwU+GuQa2X)5-cyJSBW:1sjRlT}8q<gׄԑYMv'~ GQBU -]rb4ltnW)u0ƪ;?1E& T?R,ce޶$,Zu| endstream endobj -1471 0 obj +1584 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1470 0 R +/Contents 1583 0 R /Resources 4 0 R -/Annots [ 1472 0 R 1473 0 R 1474 0 R 1475 0 R ] +/Annots [ 1585 0 R 1586 0 R 1587 0 R 1588 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1472 0 obj +1585 0 obj << /Type /Annot /Subtype /Link @@ -20776,7 +22233,7 @@ endobj >> >> endobj -1473 0 obj +1586 0 obj << /Type /Annot /Subtype /Link @@ -20791,7 +22248,7 @@ endobj >> >> endobj -1474 0 obj +1587 0 obj << /Type /Annot /Subtype /Link @@ -20806,7 +22263,7 @@ endobj >> >> endobj -1475 0 obj +1588 0 obj << /Type /Annot /Subtype /Link @@ -20821,35 +22278,38 @@ endobj >> >> endobj -1476 0 obj +1589 0 obj << /Filter /FlateDecode -/Length 1324 +/Length 1326 >> stream -xXM6 WTKJ>m/LE/zh,ٴg&3 qlK#);w(_ĘnrUFN'\0! Kd(F  "X'3LA辞9!9B 1yvS/F14Zޜl".YՌaݵ ʼn<L 89D;{<9Gb0`~`)k -Avɛud{ O0xA~?j C 'tb(%>$ $s {+F')U3菖 LOdzGv֟p̉s7.!pX9Wl$`Rq͋ۓLs'yx,~{4Nru\zztޠGGjƛ=N< piA;D} Ѕ3ϯ%uAy&=R3m9iHt!= -Z A}+Šg-,f4J~B ,XQ#.-m͚Yp la,V5 "BF2+FThu\pں -{u9 -aB~k0tlvj\XR ]Cěp.mxsp_)ӵ( 4Z}^=6tXb*܊/4 Fݿǵݻ~YJR5j-jR+Ƕ:׉Yٯj8ĕ͒-ޒrD_H%|u&)-PW 4r (bٰy.m&IQZ -.ZSy=HO 摮-T K=GŘ+ ݥF͖=qWmѫA[I[k =ϲפnj*-_h{y~X+cNo\$`V7ٽ l@}m,;ɷjR -+Hhޮk}snu-{oh2a7p(UgI {zGNv[zmns\=Bz` DZȈMMMj~L|o&/qkE]l;Cg+a*չe1:,Ey_#AniUR׎~;r>?Sb$y2+ϯ0; - UGm=*g@xb2B0||#Vs $[9v1Ӷ5?9o +xXM6 WTKI>AEöhۉ=l?PJdډ3&xlK#)Gw4 U;ƿP?y"?~`w]D!;*Bkw_χ|>NkcK߯_zabCKiƨE 1ڄD XX| F v]䃙ν>Yhoqԡߌq&cŮ1_ +&F&-/? If_O=ٽ|Kl8j&:y<*|D䥈m0? q>|Y1j*pT̸ PON3Ɲ8ySA!XN㜶);ѫY\mqs } +l ->>|i64f!<<3ՠsJGt$fHnLiDm!k.Nax<CH`V"\<>"(1nncOc 3xmin{q?=-#P![Q9}!p{EXAGH +"fgQdPpD +8,bԋ@u]gf\搟E*W[YDWS͏QZO +N]Da 'W}9'^/XЭS f#]XX5GIڭvG )yo˅(%TUD G_چ7 +2Y+@ދuPا!=bCXZ|UIYX0=EمȕoDdtEGo9VjA+>BM1'dZ'$feԇLWKWz6sxsbZKu$n|!m7tK@]5PA\ȍ4 dR\u-M $|Y0z&5~4DICYkvJ9GŘ +$RrfYٶ Gl[ +iVǒyCiMM^erONVǵ2v>3ՄjxE`jh,eTVMv2oi!g +Hh.{}y׺^[%ڶ ͑UgI*A dgraGNv[znns\Bx`DjȈMM&>k@GqG&_֜ t +=]-*?UMHVg=D_y|GԖ㢫<ʳwzeO?/fV~iP.}|s WS[t1_/@,mVCӼ1̝e!±GNhȎMo endstream endobj -1477 0 obj +1590 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1476 0 R +/Contents 1589 0 R /Resources 4 0 R -/Annots [ 1478 0 R 1479 0 R 1480 0 R 1481 0 R 1482 0 R 1483 0 R 1484 0 R 1485 0 R 1486 0 R 1487 0 R 1488 0 R ] +/Annots [ 1591 0 R 1592 0 R 1593 0 R 1594 0 R 1595 0 R 1596 0 R 1597 0 R 1598 0 R 1599 0 R 1600 0 R 1601 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1478 0 obj +1591 0 obj << /Type /Annot /Subtype /Link @@ -20864,7 +22324,7 @@ endobj >> >> endobj -1479 0 obj +1592 0 obj << /Type /Annot /Subtype /Link @@ -20879,7 +22339,7 @@ endobj >> >> endobj -1480 0 obj +1593 0 obj << /Type /Annot /Subtype /Link @@ -20894,7 +22354,7 @@ endobj >> >> endobj -1481 0 obj +1594 0 obj << /Type /Annot /Subtype /Link @@ -20909,7 +22369,7 @@ endobj >> >> endobj -1482 0 obj +1595 0 obj << /Type /Annot /Subtype /Link @@ -20924,7 +22384,7 @@ endobj >> >> endobj -1483 0 obj +1596 0 obj << /Type /Annot /Subtype /Link @@ -20939,7 +22399,7 @@ endobj >> >> endobj -1484 0 obj +1597 0 obj << /Type /Annot /Subtype /Link @@ -20954,7 +22414,7 @@ endobj >> >> endobj -1485 0 obj +1598 0 obj << /Type /Annot /Subtype /Link @@ -20969,7 +22429,7 @@ endobj >> >> endobj -1486 0 obj +1599 0 obj << /Type /Annot /Subtype /Link @@ -20984,7 +22444,7 @@ endobj >> >> endobj -1487 0 obj +1600 0 obj << /Type /Annot /Subtype /Link @@ -20999,7 +22459,7 @@ endobj >> >> endobj -1488 0 obj +1601 0 obj << /Type /Annot /Subtype /Link @@ -21014,67 +22474,67 @@ endobj >> >> endobj -1489 0 obj +1602 0 obj << /Filter /FlateDecode -/Length 2848 +/Length 2845 >> stream -x[K+5Wd4iFF$M^$K.ˮ$=wf5շ*};.~d<_֨[f_|I]šWr;-3!E)do2f=r.Ģ7NpvZ?6Pʝ\0a*kò:N˺^nf?~Ȭp)=blbLE$@Q/ _$~:hpcsY,pq1q2iW[JL!\k|t5HZgnq9_ͷ_GDv1ӑku W[uoo1YiNΑ|߬"scuK4qKsnuBZy;.ׯd$Wג{y%޹Ec9?z|z`U.̹j>)٬$TU!2n.@#̫Z## -s ȈPql%:Q}!\ϋ*$OIRo@τ^; ?<{HOI3ge=iQ$֙;װS&MJ qFvLJ"dKTU -:1=m1/P5RyK:5ƦaJrA4h*8Lrc@C}(!bdְU MŸowD#z\ U%/(B=a٨JD{>0e%`%,% N湑^x76TƻFk/cL%\ GI/2(ŒDy]S0u -(z%$`mHM'֬Ű"X[N)$u!(~>_uxKsgzWuE4kPY~g4A)^on۱΍K܃cnw ^ZPUl=_aMס k4TΨpkQ+lYԁ^7ըAZk?W>i&v#}~ҾcZ,hH)Yar$f:V7Om&1X -SUjǺD;y]=ofQ52R@ϖdBSא)hBpŸ{+[z+|Pk, e @&G]l?HM4`ǹ7$U0(4x~a+Q%-&9AZ(ȥ_޻Au0%3b0)Km'I,x0A@$(nNFb /GN\y/ l3N\Jr7E7nH/!%[&@RPk#$7c%X <3jK?WJ0R 6qv^ k^-9rp΄ \㟿~<~[/˘uȹ8Gc3__[Xh]@)wZsq„ ~:8U".l.zE >ý[Ls1ai@w;Dʒ4 eBw[sʷcǦa ;*_ӯs127X] }\\ognЩV&9n-3?ɕd\uw.zXO_j>X sOJ6"'eU!E[5 H=jȈ>2"Tz!zINy_H +I/y+0d3׎x;XOcȠx\5+C3͝3TGKb4 M(mN\Nr3~6OO8:S iYY}3v9Dg#uN}b5w|IjqCgkѲ'($UUciǧyL{Onn u eDkޒ:|iآ{Rk Zoj +#Po7 +~F=5lHD1۝5ш(AgU yPhOX6*lf(ў LY xD d" |ɂyndލ ~@CA1tAAx(SEI.zR '!0cQA F9 g3d;X[*p0R`Cĉ5k1H(kS + ~|*d@ϗv]*ܙq]2 -b@V߅9fG陹2MPq +8vs#<'1W|%'&AΗAXSu  3*='Ϧ\.(YLY u֒,>cbDyikDC +<T[K}x#n`#E/Mc,-xȕ}UT/L]=hM26- qѺLY u+kf'a9JTbi@"+JQsl]@HaRwb|$IӣDa+c. QOCλXz@ drL^ (ᐕ\'%6(9Hbci 2z͡k'w4gb>q\ t*?/D6`D8_#:oDsΪ>c# ä)]q;X~ao넹mfpkC7*(4ļlfG(V+=#IZE +̘Qs3܇i~Z2%YwvcPy QNc!_w +Aa)@lnÙ c4ϕ KП^G$!X3@3t"aS<'Mm=W +3Z<=ʠ<9KGh>E԰c۹6 3!Wư:1l-wAavD87B.cBDbMn4`5%CeZZaJ&A3Eziu b5jаϕOHGo +REJeVش fG¥gI ?Tı.blfÄa*o[Y'FM2ceپ5d +$'^ƊFVzEe= +7 CigY6r+REʦ*$°B +tpF}վWZxuK "00_<j=Q +@67y6Gٍ~8&(J#H Jt >oJ4l`F^FsT@X.50_ם6Q5̕傲b+ [sʄu[Y9RѧQ ?_&4?,5tHBf٨'7I57!\BT-Z՝؋S$(kzdmUbIdU`|h̀v6l4$V$d%jܿ]{t+Ly '|%BR a}Rj cP8c0 ? +従ѦXGoS=W[0;S> endobj -1491 0 obj +1604 0 obj << /Filter /FlateDecode -/Length 1611 +/Length 1610 >> stream -xYKo6WC h{H{ dN?Pr!:AXVco^\5z?J~')Gt_~L!: -61Ycd??MOLy~F)Y)Sу#Ԝ_?NwrtIm[kHH~x)0DJ `i_ݬ~:p|+")]vI4i5]K]ظy~y^|#16ރ" 9mm[:\3YA^i>#7C\mYiwɢi͢xձQ E2KYe.lblM,=(w|yIY [H ݞr2eOѕ:7W„Q52D NH82X}&x -cQ[{Ջ" {> pzi -[}C,<E<ΎeX2g<S;Xuo\c'sWrwnF.TZ\EE׆>N K~BȷY(("—\E0^ަP SJbX5Y6@,ɶ*t31 -Myl@lq M,wrpH̢j4 5'ˢYoM:ai] ->+C`QL"z#*QGcF% rg: -L)p3uo= {2tLd"+ᏒզFtA -,w/t&(PCX@ ༀ?( `W^Yp~`[g{mgWs]pɽ#C؄0\ O ɠƳDvsa^"zM$L]N@ } K- К&Cx+9s.ߔ۱m +xYKo6WC h{H{ dN?Pr!:AXV"jF`y4=OR'< Bt:9Za9(JImMc0~~RRZ W9>%ڎ"H~x 0GJ `i_ݬy:p|+")]v5i5]K]غy}^ޏ~Z#5xٶރ =6-gpp|, AhyLƍ'|Pɶt_ûCdDch6+D:6#)-6C]R@"̅]6+JJ{;U>AY[@ S=dL;0ps+unT Q7jesE 0NJtM`#Շq)m0U\7ʷ!܃^!D1&%7Lqt,˦8\_RMAZKp6KpcdJ͢ޅC bHڴy̒:m` +&e(8(h i w $1` GY,h x[ }31 +Myl@ oq M(wrpH̢j4 5'ˢY(J,t]}4VfQ,EFDY,=5QeB"p G0C]ce)oƨ+Gb|0Xڜx%"Q܈.PdEj(1RyAxp^@?JM]MxN(Fg{mgWsYpC؄0\ O ɠƳDvsa^"z*!>!@0x8yE. uWBUR$ݰhthЏ(y[.M.eN ~82k: 09ԇ<{@o_ȘsH:7I0\kTz>K[ Q{VoUL`ve>koe fE3Yt WLsRXY@F0z#)cq@(7)YƎ c3yؕ];1ך&WW/$io|I==(\NjOX^1ֺƠqyQY'&Yb%AeAƺ$7] ڦY)CS"T^GK4}az\n +rF% (4P͛n|l;ѐ`Z|)>)I٧'qY[i jljhVWG XIe0.9:DIƗBB:Rdu4A9ؙ!&ȷ<2}?r<"*D{w~cIsVk\+0GU43q~Tu[Ƃqp}A~T/RO + 3͝.9& 7cѕb?ޗtܒ i2>Ιs endstream endobj -1492 0 obj +1605 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1491 0 R +/Contents 1604 0 R /Resources 4 0 R -/Annots [ 1493 0 R 1494 0 R 1495 0 R ] +/Annots [ 1606 0 R 1607 0 R 1608 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1493 0 obj +1606 0 obj << /Type /Annot /Subtype /Link @@ -21089,7 +22549,7 @@ endobj >> >> endobj -1494 0 obj +1607 0 obj << /Type /Annot /Subtype /Link @@ -21104,7 +22564,7 @@ endobj >> >> endobj -1495 0 obj +1608 0 obj << /Type /Annot /Subtype /Link @@ -21119,7 +22579,7 @@ endobj >> >> endobj -1496 0 obj +1609 0 obj << /Filter /FlateDecode /Length 1891 @@ -21132,23 +22592,23 @@ x 0i%h5D$5i4v%YA۬I/\c](q޻Y([jKWDM?OO w8N[H`l,|Àk^| OTd/3R\o YS;ϡDv6u8>6/JQP#HX,Aj Z*QM{ܗC:vkؙ%뀾zznm-nFq'\~tMbԟqc$?A+ #ÞQIn[1'51/ӷ#P:G:Z\!f.ic <,j2 4u.t o# >=wΛTD- i;2ҧ`t ؽڟN9w -/ =62Wa\p+Z`!9u6g4 J)H}ЧC{NLS5(=3e'77. Bً6@2y#D{o=9޷>9ΣiIm8ph#nSyL=gn2/=7@y."?詊g*2e9[bqc azC(ߦ;R_.,%838Q6qR26s -^(P1s=,|b% *ce6mݑw,b +/ =62Wa\p+Z`!9u6g4 J)H}ЧC{NLS5(=3e'77. Bً6@2y#D{o=9޷>9ΣiIm8ph#nSyL=gn2/=7@y."?詊g*2e9[bqc azC(ߦ;R_.,%838Q&ƭg`}s +^(P1s=,TRdgHWtGǻ? endstream endobj -1497 0 obj +1610 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1496 0 R +/Contents 1609 0 R /Resources 4 0 R -/Annots [ 1498 0 R ] +/Annots [ 1611 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1498 0 obj +1611 0 obj << /Type /Annot /Subtype /Link @@ -21163,29 +22623,31 @@ endobj >> >> endobj -1499 0 obj +1612 0 obj << /Filter /FlateDecode -/Length 458 +/Length 457 >> stream -xSn0+33#U{@p쒊CZ_ɖ,儰w^g<[0hZ%ǁ?[55D1clRfαHΤixyHMsJW+-COwđaAYڑ?VX7-1{zn6dvFO4IN~s tei+GPWy=nXxPv JPLÈx&pC2|"fWrt١P=f"9"&*}1-gvRS,;AT'KvP( -RҞǙ PXuEN2芼3A#n坿d6=kO^bކ>F[eXkWjI` vV Z'h)mg=^K]/q ߯ +xSn0+33#U{@p쒊CZ_ɖ,儰w^g<[̵pZg\ohT/Ike̔"dm4< D%RR,Jp5qpsXhm{v䏦,VM{LꞞro;Ǯ!껑%MYf@7/1-sW: +6  +T9wo7>.×k,57{"ٸ4#bB̭>φ׵ߎYjp'b= +H7 b[Jړ(}0 Ո3iCȺ"o o 5{vJ eXg9ҦAz?-߳ endstream endobj -1500 0 obj +1613 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1499 0 R +/Contents 1612 0 R /Resources 4 0 R -/Annots [ 1501 0 R 1502 0 R 1503 0 R ] +/Annots [ 1614 0 R 1615 0 R 1616 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1501 0 obj +1614 0 obj << /Type /Annot /Subtype /Link @@ -21200,7 +22662,7 @@ endobj >> >> endobj -1502 0 obj +1615 0 obj << /Type /Annot /Subtype /Link @@ -21215,7 +22677,7 @@ endobj >> >> endobj -1503 0 obj +1616 0 obj << /Type /Annot /Subtype /Link @@ -21230,36 +22692,34 @@ endobj >> >> endobj -1504 0 obj +1617 0 obj << /Filter /FlateDecode -/Length 1007 +/Length 1006 >> stream -xW7 +%JCE =gAmR5؞MRzg4Gd -_B0)e8->`SWlu=><Q2L RCM@-M>yސhp1zc_W6Lo("7FcJ&R5 `-vPaH:k< -SH ^|3Ź#L?~[3ְg98QrQN3[姟n֕ߏ|OLwJED)Qo*jNUH?Xo`|e -‚צ$,(y.t#V@"+z\"'2Uw9 mn64V{x ^lSt?JV*g'ӊ}~BJGBWq8Qt p 7z,.̤F^N g^Bc3e\~z -x{#mü"whMJZK{(MuӪRnjgsO24VgvSwZ)M` "Ms|\C= kRtpu\ -AM="կ#=fBxCv[ĺ@}kiGGO RT6~$46ޡzoWѻK%rS. ŕJ`U -zBo/}FB6mM`AdrT'zACϯfuLzzf{Y߄з]`"6/[&>bنmt㨥7z^mk3ϱ7dϲ<A~WNeO@-u==]H]u A~W>RyOɉm[ -ƍ_`M,Z -Lq3|u:o 1Kԩ) 0u`r:s˝Xo%0ӧ;X +xW͎6 S%J`ECK)Z zh$(oH0Y^K&Lç5,M) G'J8 tf MPк_NhX0%@MDsW~0}oL!34tC[x K{"3F ]'.v}.EyY'k$k|_ahcΡN5(9A:`s U'="寪#gBxCvZĺG}%k3iGFqRT~$46ޡoW ѻK)r. vWY%0K/~ɞˋ3GM&;vX6Ui ZE#ixanQK^Z70g,-lzaz:qқs=5}2g}Ni + +'YN.a.F:OhԠu^ƍe*|b+.&Y&+gjphwrb:x99NvTSh[ endstream endobj -1505 0 obj +1618 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1504 0 R +/Contents 1617 0 R /Resources 4 0 R -/Annots [ 1506 0 R 1507 0 R ] +/Annots [ 1619 0 R 1620 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1506 0 obj +1619 0 obj << /Type /Annot /Subtype /Link @@ -21274,7 +22734,7 @@ endobj >> >> endobj -1507 0 obj +1620 0 obj << /Type /Annot /Subtype /Link @@ -21289,70 +22749,72 @@ endobj >> >> endobj -1508 0 obj +1621 0 obj << /Filter /FlateDecode -/Length 2927 +/Length 2929 >> stream -x[Y#~ׯг<0u$$vAe7:H(jzrhël:JZ?!z×J#?r_`jB>aB3'*\T! -V:u2 -ZΤe|SU9)rms7B .v^CŠS# -wW,v/@˘-yuY(^&D7g~`zOB=:A\ޣQ kZ%:9rbK] d%'3:B'_Ӷ=SHc5ulKkܖֺ>Su -`^xnֱeL8pU!pȜGm@9Q|Y&l>ײFnUwu)`H-[tG6v”bɸ8\nYx ;/S#Y|s}m)p⚟P&eV(,̰'zҁfu͏׼mm)?z]߀(RC3Dsh03DJM?BytqbTOH2B!?3E RIX &0`laEH\5F$`XbIs^O`>O!ԳBme_ S k! oNr,Ɂ|YZK^ޗ-sr72˜sgCEvOE"sPjMO&t*k鴉Lٕ?W^Pa%-+ᥐyqRBsW6>1zЭ TTQE+JWR <''c35߱ -`$Etۇ[GPWg AZ_K]>mr| cn玻3vZO9[nPH -U4KtK =8D"oT5{? W^ 039zh僝)d(0 ++ e1ze4g$N3 z۞QD!,ٞ]_bfpDa)9=ԍH2ޤށϷ-24ܩGNrh|c,XV]7^uzws~)ep?ԧH:i;"0&3EЪ9 rcT ?Aؑ=o4uqf$t>i}Io1vyn_$/ ;z?Tg7dy:햕ɘ2` ,2{-cKw_?5KT^GQBuRe:ʢC@? +x[Y#~ׯг<0u$$vAe7:H(jzrhël:JZ!z×JG x#Ax*6h`ǟ?~8hTJkaUt~~Y y?W$TH`Gdw~>شTf5MoVa?|l9Ί s A8^\`TpBys&lsZTLѺA᛿}opT!V~~=IJlҷ=)>;+l]x-ϩRuCK^\փkcʘ{+\GziE>N3xÄׁ_eNi΋Xi(d4j{,4|}êх-fNUB +*F.pQu5!*#d24I?*6 , 4s,Sںn4y@%E+P -PÈ7U9n㷈q N-*9.蓝j(P[ Ղv@qe6wR歄ˆ3ii{q"y6NY dCE}?1 EhТ#q+iZO9݈F q8"T~29赖Rr3nBhFN^c |-DCKV͊ #2lMh1>,VfZplk+kqku”{gƧ)e2=5_W<[B:gBυܐ őBXl5tb"r&Otn'ceL kYV1ⳖITM.{I+'=JUcD{(R){G]3y02*J{Jr^4xY8;`IPēGW^2o Ps6%r_vݵU鹥&x1W[ĔԙU`u]sؽ00m@)+i<t1t>xNu37C:gHkVc{݊7- +V\RdlfQdmiu-7@h\Ѽ`im%}[ˏ|@\EbAFX6U Aw\_11%[';4PLacnf+f7b xL{t:8G's42jKJu)j%ruOMiSJNft*Nԧm9ӡ;d{jޗL-u)}.k:c=™B]qCsȇ9E]5I->sTuL}e!:$0)r%FS?[xmn) )-qqȹܲv _FJ #>) B-S5?__aLV5F.Q +X0"aOV?;OvB]yڸu+hS2~)Q<f[ `g2~L* +*$eBPLg~U" >ѵi -L`(ŠjzۍfI漞,}B8g*ȿħNWC@,TYN9+lT/Y%[4 P:/oJue1D#Ι ۋDVz7ɛn M4T>dJi++J[^WK!XمlX}b½[wf RzVdåyxO8Oƒ38fx8TPӱn:vljTZ^2sw2!>^L tꮕ + +pY=gZ@̄o! ZZ+aԲbֻ6Z +5 j^0Ǩ(P]Nqvoy*,2 + +&?dNZ3C:TfE?<{&MlBɗL@6uԃvvk#7 zWRqDㅍ13hk2qXsBkhfqihnrwbLEzB_e +|,Wk0c%wHk W,,B;$Vw~^k{5+|^`wgX[gdrܒZh%R閘A8 zpЉ +pOETAj~ЯNafP r;SbE Q`{VVhchCHfp )=CX=ջF0R ;sz eI7:o[d4h7S XR%#1o׽.R,AqO뇇}9#;tvE`:Lg`/3ҡU}s +PLǨ<`, #{wh:^I }&&ѽ޶c3xr7H^v~nj,vu:%-+1Ue2>X&g[eD4i[ƴ~j +BC2uՕE]w)x DAN>Jc1S=ܮqtݭ:U.-+7%FWA O7d -? fhe[_5eON<>v1{v_׼ R]ڗZCۛGCNIw [k=~gK6}3#n\ɢyX/ڧNi ~&zߎGޅ7O 'ݏ}eyCJeJz9r7A%cUP h313ĠDsS=׽'Vg1# +? fhe[_5eON<>v1{v_׼ R]ڗZCۛGCNIw [k=~?%>t7[.dE,~'k ~&zߎGޅ7O 'ݏ}eyCJeJz9roJƌ¤l~]™`bP@^^ OlqY?W endstream endobj -1509 0 obj +1622 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1508 0 R +/Contents 1621 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1510 0 obj +1623 0 obj << /Filter /FlateDecode -/Length 2767 +/Length 2765 >> stream -x[K#Wlm`! ⃝C L`AK6dblif7;ЪXϯ,߷2ܼΚ/~?'6@9{f3KNMJtlzp?~=|)wAoNYJ6zH=9黫q}"Hu6^nq}~>A*C5B&I@܂uycmeDvsdfK6M,Ȧ4tM\o^yo黿,A*r? 1sro7~Nؖx=u-xqK&ߪ2筵ѾwZ3R?y}m41y#)/:0X[Xf!Ģi׽=_ 3# n -03@鋂Ҏز&a8w4SPLsšqNo>H3.K@!chBT޴`1&0V\K;BZ@spSН{/C~4kMYRC=K#ӚֺpqD3"T3+s#L$&5M:  zb߉+ev:^'>#]KG꼉 й߫b.RHIui+г/DAl -:.r&]K--JDBh; fʆ}<n+L9 8.KNʊpz -,xVNfGS|;``0CB spx - `8J1FwM8n҆f*bZ4vtkZ"l"(?Wb { VHljŃc\D. yCXQ]w0#*#hlAO+cQ1IR+Cd D) RѰ*~pုEF_Sj_̧ lR֚`uX ;0Jc4B2JwuQv>,Wcj'_rI|UGƸC@E?@ n2>{YCKv;.evB苪ވb|2LȁTҖ;Y)&huVƺsz ybIqg4M -j-DʾPu!Za Smt(/QUؙag$Gs*GCA0G/.V~K݄YLZ! -E!bY}.-:MF~P:;B@?] `/9-a1+Jlv4"sс+:|5E 1**A ,ZKvՈЛeWBL!&va L_jJݧ#kd)\aفg@2#ϋL-^XChOC:9hŖ+VU<㱤j88^ bLR7z Q!df"VIܵ\w>SbX3Rk(J "q^S.͘EFۿ8"Gvfi(5sKM3LUO!ȣ/>Fi']ןw`mu(:}9,up -NGgcߵEq }7y^Ueh)Ağbd> ̀2(y&kx1EǠA˸Ŕs;$k}ӈpۂ(E49J 7lZO!g2ҷ;iϾ nw5ӕ=|y= RlEJjT*Cd2m7'>0LT`æ]<-0sN!v3=vDH>)}sL!ԅMՀ~tn?Ta6°1Y'奼KYF9_+-NGvY_& #;'IXY_w67;}{Mڝ!A|tWJ/BZO)AA*r;3G=#? m]z'(v韫(ReI56Oo%cp##aRܻ -{V楻o(K  ? Dް +x[IcWl4H`AZm `VdH>{&艏K֯3ߊׂy'Μ_1ȷO1t4 Nx&*6*ŌV~>ƻywBJfDޤU0~{\,\TxcGljYAd P^h`!XB%vwF,ҽug +U-q QhWZ7U>yQpeud-n\Q9(h ˴b5}<4HZ^\jB)%MÑJV P02oJM%K!,JMzܐA;88HNo H> +TvCѼͩxP@LekdPjߣ9q;;3 BlCJAF( tf :,Q!cxtN uz<'ÓZ+MbBa@0< # +)(m0w՚,[SGUL^x! +O:rbYnDQXؔJi!%>g6mf\e`@/<:l}nuyVRw-N@@}4 }aJU`nX9 Y^;j(D?C58PVXBmQji?z:Bu՟ +w0!X,uRH(RQΆjăwJ۳|]'a,I0Iqĝ'IY_6 7;~cxC{&c&ޙh#xTj/BZ OAAԢ*rgg&.uExz<6:8;#֦m#b\%HkS>>`U7190z]3y..;f҆ X޴ endstream endobj -1511 0 obj +1624 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1510 0 R +/Contents 1623 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1512 0 obj +1625 0 obj << /Filter /FlateDecode /Length 3799 @@ -21373,56 +22835,59 @@ Y 62=>maN}}(͕v>V|`]M~0y^/iôh Sڵ&=H+ 1;{}k(Zԫbm[tA]c޴lZgkg gb{,_ &"F۔r]@\"ԑ]g6:kBNyٵYg ^doaxi.q8aG^'YI{q;SrLZ[{wd%B_cb/֐ LxP)\Lmw _:.d= <2ML~"&<{㦊5[`³7d45xs&oôVW['"|rVK3]zr5#`/Rk SCsh*\ z*KhD>W|4^ZiEB#͗1r]5;LLx[H6y(&?E[0Ӧha5@Qv/9'_s]FxPV徃F8[Hul"Rg, $':x\|&:?i $d;+-gHnL{ >.':bDovptMbOnV隅!hl^cW~<qqr7ZHȸ,0.o Ąjqaz&gPwptF"|a"odhaM.2w>WF:#-=~: p`e430_?&1OUօn, oo &2Ä*B>:)h.]ᦓY7QD4=v ` i4Oip6"bxÅ[<0JV I]COԏL43"1-WݾY.Pur`zJ5 ˲TW=tvkG vw_ -GfiݸA! S_XvOJTl= ZchjC鯁cD;ڿaV +GfiݸA! A+/@% h~BPbK/ESp(WEO ˖6&?aZ endstream endobj -1513 0 obj +1626 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1512 0 R +/Contents 1625 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1514 0 obj +1627 0 obj << /Filter /FlateDecode -/Length 3007 +/Length 3004 >> stream -x[ێ$9}EâVB=_AJDGGi;+c}w2}icoshwgW״={sǹP?ow ^?eMU#NoSǼoy*po^`S~nMMڤ16 EaSͦJƍ\(`W7oX>瑏3+~]U1 H?*ug^즳 WLBj^QVF$|WLօ9`XKX[i7Yؠ_6utÂ!+y.coٽf#S2}ص|C5.ǯ4vff,,Ar(% nϕ'kt{z1 ;G WF7.L. ׂ},&$趲< ]72[lsk vٞ+ՑR=FT#_#(B<`ypiH{^ǚMI&8X8օY~[ٛdઐo]'\^t/ҠP1߼dOCiiOj:sYZ!\E4W?3$e)aaC~TAĔ93c/x贗Y.;D+QM 1mz۪bjIx1'%!=ѭ SnIqғQ[[]K; \@Ny[Rr˼ϓ* [ͺ~^sIO@˽,| VɢDPٲ35j+Q\h%V*~lcWʨW-7=Ԭj`~^׬a !x"l -LV>dPAyʴL'uLh5 -+uQAPЈK!N&<߆DuLeнotPXÜ.!%:hj85(q8Hm,7.ʥR5)}Vo=8Y5kYLD^Pf_{O1ui4 -|!J.4e^OkP6heBtM`&zXGATKѷ.HJșo1˟B+SFe"zHQݞ1#u'[&L'{DJsnޢ^of!DBLJH!ĉn"Q`DYb]n){2ֹw:Y6 -Nu* c2(/@nźr>J"_m2"2p(kV^3 gK (Ç$LQc_krȪgj~ZOXcq[1Ő̵=MkBVG<`( k=^¬{ARKXc[k4 %\LtH美&>Q69'M;a@4T9]f+rKgv:@ ![ym߰XRGpD  -edx -Rsz0(+:8*o@y︢툌JVshae0:X+rjju:V)+,ÕU|[ *A&*< H[7 Σ k!SP8AZ<}ϷjiM5V,[J3TA)+ЇlE$/ID)kH^|mJYCʷ(DiS -;y@NxPoe@oXh)*PR,㣔?B[-ӜlESVf$6u\cȜ\3و(iHcw+k+5E@)^^k 78()m\etF}gtTgOH!z*ى敺jE^Q}tZĽ}+zCuةNE2%rHl!XV^r7,E, ĩ22 lQ -Y-`WWs,[#UIOUowv/wp-_ Ɖ-:(zy[Z[uuttx- ǡ{ -wcLmg2EU/.jw TR4 -ƋajZ_!--h$KSó5e!t=,!WUT/v ǸyvJW9tv?=< #C5C8]!1*9WDH{+opuM!w -=J xS[/Ȱ=mplT(N -0)U=S, ̵̞%ב[͹9H؅NQR 1Ӷ~G_hLa~u`0O0蓣HNPȌjy*o4v Ͽ"d +x[[d7~_$!hH3;y megzf dҧv._]UWIQh1oO/)SF oߗ "$&+l*kPQ(%!1Ycd?/! 1\Z8|tyߟ|sSB^ڗߝ2F +EFfH(맟.]U^O|z" ˣ43Vd?+_:.ﯮw{W״={}ǹPow ^˚>G;Nkǝ>:Oefyv>OyuqRIcvmf9(DɛMŹP2ko0Mp}}#u!gV\#B5c@~T}뫬ո8sؙ)'ˡ4=Wv.n3\g{03l_ ߳p.Twۻv} lͭ'se{TGJQy|}(g֢$=l΃KCc:D/lJ< 5YL!.4}ͪEN7ۺ E4'W~:ϖߗr}٠'{XN#O{xP#=%ٝB2*-ݦ)-*Ĵv .kL U7R  ̙C~Cr!\hdn VSpM›U81. !nf?_L0w[}Os<2Zϙ`M uX,u +)() K-* +q[a"z:$\Tېn `0sx9DM-uF~:u\=W&O=04 f-1 ^՜kz) &.f7Q!ϵ^"D}|@څ洠̋~b _ Dh#R-c ҽ.] ސNu䗋BAdo4o' oXh)u|ihFL*)I:p<2*xGctdS`fG'Q8"vM |ݟozt2ܜi9[3]5aQ @ 3PqYߡCauVkL_R&Q~VyUo>yr +}!^^M00ֳ‚r:Y:yHח%Ǫ# +cuk}ONǹ07ׁO)NNid + 2v =EnϘ-w[F]O7goQ/C7ADKc"!J% +gD7d(|0j,.H=Z@;,}Edv:C 1ߗCb C le }b]DK9C +U%6dbx5n +ᙆij%pNC&x(|@1炯59VadP ߳C5 ?e'yɱZԸbH^ڞ&{ +x[͍@Oy#p0/a=cd )%,1HA٭5`.c& s_GfcV銦˝}nS.US;dG wCxCp oXh)#8Peb^p2J2<̿u_Lja~cs7ϸ툌JVshae0:X+rjju:V)+,ÕU|[ *A&*< H[7 Σ k!SP8AZ<}ϷjiM5V,[J3TA)+ЇlE$/ID)kH^|mJYCʷ(DiS +;y@NxPoe@oXh)*PR,㣔?B[-ӜlESVf$6u\cȜ\3و(iHcw+k+5E@)^^k 78()m\etF}gtTgOH!z*ى敺jE^Q}tZĽ}+zCuةNE2%rHl!XV^r7,E,CSde֣ͳ[|X"GF(x:^fZȿ%Q?l?C[u 0Q.S!]P˷v=k骏Z[r5T+C ǘe<^\<&~iP oBZZ"H g9jBzp3YB`32^q씂r>f8~{y4S#gG· k( +qBcTv'sVN7,x B zӕA[pd؞vx8@6 +*X W' FL”FAU 'smuց:9:;]J +h%=m}HBۈfB}\UAErΠ@ Ff?V|6W)|K(7X~ %x endstream endobj -1515 0 obj +1628 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1514 0 R +/Contents 1627 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1516 0 obj +1629 0 obj << /Filter /FlateDecode -/Length 2567 +/Length 2568 >> stream xZK#Wl mB@ ؆e:H"?x\])>/3X{t7w|~*,&˰H)Fk_izBR*X]<ϯ?GRi懧OP1ԠCk \{s6_ǭƵ1~t1iy*s8:e]|mk2wjs'zʳBc<>W]ƸhݤHqDbrF@na$_cTIH"]U$d¬I]Ӣqx\LD @@ -21437,22 +22902,22 @@ _,Ar &@a8քe-=oӃ2/NrnwmY'.A© Er @B֬Gɭͫ0JgoFo6@zDb4&zcbgזzyh >|~ttHP}3'Fh{^4a!LaU A88就FGlLt{'>.>S.dΫΐ%:j7?RXYҏ|.4mP[% _\FZ?IռSkj 7HНf\RRFwMi(1L2Vu7,_ eU<+Z:h4 ,E "IeWNyV$c$r)]2b6nWl/f2rvGKlK$j_b.K H@9KuX -.4e:Z( mu|H+#1U~M{g/[(Q;CL@ʄ˩O\2ğ'v$ +.4e:Z( mu|H+#ILݟ*׶/[(Q;CL@ʄ˩O\2ğ'v$ endstream endobj -1517 0 obj +1630 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1516 0 R +/Contents 1629 0 R /Resources 4 0 R -/Annots [ 1518 0 R ] +/Annots [ 1631 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1518 0 obj +1631 0 obj << /Type /Annot /Subtype /Link @@ -21467,30 +22932,31 @@ endobj >> >> endobj -1519 0 obj +1632 0 obj << /Filter /FlateDecode -/Length 504 +/Length 502 >> stream -xT1 WڱK"vڮ8Nf -3,H&dC xy-oe@Qjҗ.WbF橒f̠Œ5=PD3(y1mZ}|~p4Smi1RS65V/WaSNf8W?eQCe x%G(KVk -pqab-O=2"I[N}[IH]]|ǓTƓŀc&ˣ.(t3sK1>|=,(4O + ,,k XqFwe,Ԗn2H|)+PZNg:"@@+Msr/ Y;Zc=n %l?/%m +xT0 +xNli5.#  qtfVNa[ˌH&i0+ "iޝ;eXMmsk%yd@#30cMOSk3Tj5 J^LV&WUۖ3(utʦFؔq$=87?dQtԋrL[zs=5An0EvIP x!QCS>v#%5j\LGqab-O=2"I[N}[IH+]^|Q=h1 ׋G+ +#RQ\cn)FЇe/I$Q‡"" '4>!%H%ez}.}Y1R-B&~/eŃJ+\ss  +DM J +]&޹D }M76oP_D7%q endstream endobj -1520 0 obj +1633 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1519 0 R +/Contents 1632 0 R /Resources 4 0 R -/Annots [ 1521 0 R 1522 0 R 1523 0 R 1524 0 R 1525 0 R ] +/Annots [ 1634 0 R 1635 0 R 1636 0 R 1637 0 R 1638 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1521 0 obj +1634 0 obj << /Type /Annot /Subtype /Link @@ -21505,7 +22971,7 @@ endobj >> >> endobj -1522 0 obj +1635 0 obj << /Type /Annot /Subtype /Link @@ -21520,7 +22986,7 @@ endobj >> >> endobj -1523 0 obj +1636 0 obj << /Type /Annot /Subtype /Link @@ -21535,7 +23001,7 @@ endobj >> >> endobj -1524 0 obj +1637 0 obj << /Type /Annot /Subtype /Link @@ -21550,7 +23016,7 @@ endobj >> >> endobj -1525 0 obj +1638 0 obj << /Type /Annot /Subtype /Link @@ -21565,32 +23031,33 @@ endobj >> >> endobj -1526 0 obj +1639 0 obj << /Filter /FlateDecode /Length 1194 >> stream -xX͎6 )Պ~$hgIClAgX)GR\5}-Sv^?M')+2L -ədbD rQ U:0$]^s~8=,Fu+VH-4ª訢iz|7CdSNף梵4Z;Ÿ+g+ߡzgZc6yL{5ycSt]f%<E -3*80^Fjа۽a>?P($PXs̓ a&=͹ל,b/%N\fwL%8Yk5VSqZC1Eucl}),c>"t%;C!r&+tЈ𚣼W(4cj:[%;ke9'j69cȚ$"ȍ~))737PA{W "IЈa.ܔ-*Fv^ԍ2k1sbj g1~woWrqXpY9{qzX@iV:5ZZi6;U#QEnɦGEkivXŸ+VCkBi]&I3}_[rYN!t}8=|sW{[m@sz6}[QlˮۑX^o |;ﷶ1{{>!i}E87t°pt;ݳ;,O8s9Wg{LCʐ6Z;84y؜%*6ۦ.( &j@`@n+ ffK0C]軱7#'ȱ7ל_X/׊`pAL+m7kuߓ|30Jy.z+"΋H,ef4( Tpva-:a׷{.}~.QI +J'Lzs}#9XĈ_Kȹ8Jp\j4(:c*`A.HS gY|Ed@KwCk"twMVh5Gy +Q2#i$2tJ4w\!sN:$l,!cs(5;hID3RR4oFg oohB}.@D\չ)[TJe*cvy<b"'߮*Cy%{ޏ~d!G7i8NP# =]PfG.hNF&&dc 5dNCRD-=BQjLDǨ|(m Rt$1nk}0|K +!CKw^Ӳu/e m)he}Ut#x6Cx!F "衊(]--$0R W/X.K"`%۷ =z=>ZOHbivZYzK +ˇGKz7q,A+ЇaH>[Qm`h'hLhGӞ]WONyL1 +H ̠`d)N(Ts.CSDOQ v endstream endobj -1527 0 obj +1640 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1526 0 R +/Contents 1639 0 R /Resources 4 0 R -/Annots [ 1528 0 R 1529 0 R 1530 0 R 1531 0 R ] +/Annots [ 1641 0 R 1642 0 R 1643 0 R 1644 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1528 0 obj +1641 0 obj << /Type /Annot /Subtype /Link @@ -21605,7 +23072,7 @@ endobj >> >> endobj -1529 0 obj +1642 0 obj << /Type /Annot /Subtype /Link @@ -21620,7 +23087,7 @@ endobj >> >> endobj -1530 0 obj +1643 0 obj << /Type /Annot /Subtype /Link @@ -21635,7 +23102,7 @@ endobj >> >> endobj -1531 0 obj +1644 0 obj << /Type /Annot /Subtype /Link @@ -21650,29 +23117,34 @@ endobj >> >> endobj -1532 0 obj +1645 0 obj << /Filter /FlateDecode -/Length 1778 +/Length 1776 >> stream -xYۊ7}J* >$'yp\ 䡧c;ҥU=8>J2̖?_LJ"d e<~'C98sF)A3A2y74|;:5!k) c -2f||7X?ӑUU31%( $6 R(f|zCZ~g"LOp@r\=.19C]U}eo~lp}&3ȗ"Yogk8/k%S3صđ\Eќ0@|o9Wx72s5kqz3P]{߄`: AإKD.UV/rEgqtmw@~K~ףkJVncNc5\VKA}]EkR\3b2#p n ]Xhۥ*э.fH8%l ^ui̹Dl4*7]O(ztbГփW]Q6Iv1ΓbZlN:JL^NN}ę-hivO8Q'h.+QƽT Q&b2W#bQx~F6OgpqXG5 Le:pV#3}qVZcTt7U3qΟ*C7X7WN;x[)!,T&aH3X-d.J1x#d:Jn7X/W (fhWWܶNu9oG*{mccRK{۳'5?whz/cú7"gM-=qʮnoD︶0NYt$o7qF%!iq|k`RQ8fF.ۤUi9l2ގMr{*U$'<x6  %W[έoφ0"ehDsUt7PMfk2+Xqf&r崃7q$zYb$so{a#AԈgdUqEko{;Ǜ=ª0;ս͔7L\Olͪ ]+֫MvY@Pہ'B?8߽'酗ڜ,1quDŽqTUW*5 00Ih/r1z.TK,[B@7TS +xYۊ7}J* >$'yp\ 䡧c;ҥU=89#H%f˯I&La2b&OrpSgd zozoivuk!k) c +2fy}|7X?ӑUUdʙҘTD])a68fx(V/LdÂ)=hS\e9f6p7k3ְ׏Ѥ`}Bd#k b?_c~|Dpb8Ҕ21W9&Dw xYdkz._Jr@5sgzw6'eL\1a!-9b1T0s`v$ igc@by%Rz a \TÛ8 endstream endobj -1533 0 obj +1646 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1532 0 R +/Contents 1645 0 R /Resources 4 0 R -/Annots [ 1534 0 R 1535 0 R ] +/Annots [ 1647 0 R 1648 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1534 0 obj +1647 0 obj << /Type /Annot /Subtype /Link @@ -21687,7 +23159,7 @@ endobj >> >> endobj -1535 0 obj +1648 0 obj << /Type /Annot /Subtype /Link @@ -21702,40 +23174,35 @@ endobj >> >> endobj -1536 0 obj +1649 0 obj << /Filter /FlateDecode -/Length 2929 +/Length 2928 >> stream -x[ێ#}Wـۼ ,$@l`qy4+X/Exs2dxXu+~O0r abVOj}I_ń z2,R -IbxC|ޯzBR*X`c y|,q j4ZƬQRӰ6vs'M"5Etυ8&}2iqdʼnlK&U/hg\0G?wb]/ h^OqsXJbH Hg%EX -OoQFTwB'r\Z aW&6JƸ܆ 1ڔվ\i*?ۜ/[nڹ&R;_QY>~ 0'\3@PY "JWjuBҼKW/5 RZ-^^>OmiYX]j{=trB"r _]Hɫ,ƙ,ځ9m⁖GPuVN^af][_g}S:' 㲾̙:[+%w(o+t wAuq[Yd1iE{;зlQ͚៶AVEh.m6 ʥd6iG -ٙH,qe/cG3nnhjm2X:9(n7 r-^ڈL6isRzmáFNy`DvfxC7+UefT@MiHKԮ@%]^cm~999?V@?`b'>>%Jkn G{F)2AP \>bsiǼ'ds1V*'6DǬwT];lr\[u]Ov e>/)J6 j@\[]RV_oYbƷ03fܞ۔%H<2H@dǺX l`$&Na[X+6 fP!ؑv`/"ElJ^Dm F;INCœe_BV/xRnCoAy"VӤ~-&lx%(7;#u%K3,`[!\{lj$w-voYkG>W kL i?-Aa-5E\Ez@9%ZZ侫\- -Sz)>~MH^Ap -á܉af];o+XYLTnXl5<`)F}U "#Q4ur}:ޏX]^P|~j۰; DPjGDaR~{hm"6b.K+L:)l8b6CQ-Jh}i]G줰EP{Rm//}b-o(M,]nm/,wvf^!Dd8߯}Lb0R⧛3-~bTdR}A]SN_22.4tRMk?'LGk1 $X -CBA pmӷ.60ɼ;"av3wN3aMҬiSf񳡭Ywfk`Q׀L9 e(yPNRZQSvgJs)^o:9|3x٣WJf"NqŪ+IowUs-%F(Ա< +Ȣ -m++Ulð3ٴ{ԙ[Nna!Scm} k~:iALZ\k澣2cxCŴ-Z*(עia֪r2rо)Xe6%k#73O1p 5 \.kܗ QWiwo -bS>`fh`exK2g xyza{ؾ|rKl7|zr`A;Vm6pBNUu7foˋwm --. _'wvBh L'AֽD-+z6YAmv6fO nFoN^ghuoȠ3ƃW*y0?(=z5ɧΩR8<1m|b$}}N) *=.w:\ ܈ >_HʜYo_ (>R=3]/vIdוrOu1b8\GF -*-6M^?D+#8^QgW]=N=ΜC/)TX>ڋܣoS^Ey3w>B7f0ˇǷ eF&=+W|QXi1=$Q_` ykF{&(Ō2AE Fz-и&'v!&Ѫ9[{}ͨN0cP;+[4MUa81?AZ/m@ `ѪspRZ:[2( B.obNyNjb1N?TeB++/\Ct__335>, usG P&~.pVb -MYC< -" kjMzH'Aވ " +x[ۊ$}]J +l.5c}1KHGTUw"R(tq"#ς~O0r aΜO'x+'辤?IůVyw^bBa={)$zFkϿ|Wx!|g)Z\]<_~>}s8 j4ZƬQRӰN6vs'M"5Etυ8&}2i}qdʼnlK&U/hg\0G?wb]/ h^OqsXJbH Hg%EX +OoYFToP*1Z aW&6JƸ܆ 1ڔվ\i*?\ʳO}jr(K|Ge}RЮM: W/Tosy6??Af .+] MHZ.] &Hix%{O>%J[1͵c+q]Yl +1.U:۲[kU$k QI"2mdPxk dh(:$eEjA)f|[#;>Ќpx'V 蛌aXe.g[)6SXms& *;EHMɋp h6i9tZ_@ *MB Q9?$t;dG(QЖ!a7?}Kbc+\̻ !RZV+i8xG]䎝>0#̠)Ur4mJ7ڬ;~6u;,s |3)'w a%j2EW+>7tJnLinT;M'oyfb8W;:J=W#~N1ic#vs7JY5_@Ut! Թvb_FhH +DJTzݿ b 0F-޶|!\.sM"${ޯ#oٯxWb?6RPViI>)!Zq:׾u9t\xIy><^\}se/j+H>9sϼ`,5Y>> endobj -1538 0 obj +1651 0 obj << /Type /Annot /Subtype /Link @@ -21750,34 +23217,32 @@ endobj >> >> endobj -1539 0 obj +1652 0 obj << /Filter /FlateDecode /Length 1321 >> stream -xXݏ6 _UEQ>{Xb؃ `-Yc_n.Ab["?DR6KCcA+Mx=*L`1 +i@1:tNwN!cr -ƈ1*0)DfoFÅj_$&;#!(#u/Vs!FAM(*ٖSd6 -".53l17\R#ek&DORxØ|uǿ1s@0~ȟw EKAE.hpG+7&woGq߇B {4 -,)(mYkQB'\q4o̼Z=rs|'wd⎄a-q^(/ y{t\ױ |W1`Jc\/xδϥY>(0X,kzaRMvi3}uqk ` e/Z-,lœzLfjdo^yQc^Dn]`~M__hFlju zU}:'#G y9F^՞j\ADIlrsϿqeU3sUӊDݒ[xϝ QxIXPj}]p[{|}j/~%[;zQT 6eFݢ^k4\=[& Ջ~fIJW~־5ͳť|WF3g(|Jd -Iyϵ%L6q,Sm/޽f0Iϖē?V1:B'ؙ]WHSR= -)7döH{+ݛ= qf|Wlaw9<PQq7Z[d@x(ctz:0.hferg HGL:_evcΧٔ?ⱅl.3 +xXK6 ϯ9@(J`mI E=x;AE%;Em>>DR6KC7*Ƅӗ׃V{t}=8TbW>FӀ&*cu4CjcU`R)̐>^F? -4/~HHM0v@GtC×dQ F 6I^L +B* +fQ9dQUг-C ַl"xe D\ k5fbd n<"~GL1=1xqÏc`Z?I +*]NiVo>LFk .ߎNwo(i  YSSPH>Gϗ]32'\q4o̼Z=rs|'wd⎄a-q^(/ y{t\ |~W1`Jc\/xδϥY>(0X,kzaRMvi3}uqk ` e=/Z-,lœzLfjdo^yQc^Dn]`~M__hFlju zU}:'#G y9F^՞j\ADIlr{׸*~ɹiVn-(Px\>rY-H=(`2 #OɊ`/5-QebuT R3b٫unzskߚHRK_xR\ݳ]>% +Q<&NtdڎIO^|3`gKaO@}+xO!.ތ+))f }a[О?wO8 +;M(ѸMJv2[wn{cL#=QNj]dޱv4/EQ;oN)]`|}zڤթ6A(.#l5|~{?Gy>*Kd@ +˼㿥biKQ^dJD㹼{4y.`ƨR>tz:0?\ `sg/ 1b<RxX8sdSNta'c \f \E endstream endobj -1540 0 obj +1653 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1539 0 R +/Contents 1652 0 R /Resources 4 0 R -/Annots [ 1541 0 R 1542 0 R 1543 0 R ] +/Annots [ 1654 0 R 1655 0 R 1656 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1541 0 obj +1654 0 obj << /Type /Annot /Subtype /Link @@ -21792,7 +23257,7 @@ endobj >> >> endobj -1542 0 obj +1655 0 obj << /Type /Annot /Subtype /Link @@ -21807,7 +23272,7 @@ endobj >> >> endobj -1543 0 obj +1656 0 obj << /Type /Annot /Subtype /Link @@ -21822,31 +23287,29 @@ endobj >> >> endobj -1544 0 obj +1657 0 obj << /Filter /FlateDecode -/Length 381 +/Length 380 >> stream -xRn1 +v؎ -A !ePж/,pxvPưW {3|xLDŽ`cpyLl`ĝe#",P-?cz5C4LT -TjGP 0?<% -JS~+v*j ݚҀMo&{豹EշluUdZxm5_vbV 䏏-7ӊ5:P"-W kSp{MnciI_#RH#IC˂X=fKe=lΣt~Kn_XZu?:i }O"+~VAy;@}30b-@ HeՎmg~ %bd)\@w⷗ +xRn1 )v؎ +A !ePж/,px'y(c+ͅJ>6WvP΢L4Ym|?˶7 kLDšD[גݧ܀Ӓ>F4hGC̊˂X=4~9iC/yIo1qI^Aڗl7`lm齮:?jܼ J9nw mʉ;Y%}zq endstream endobj -1545 0 obj +1658 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1544 0 R +/Contents 1657 0 R /Resources 4 0 R -/Annots [ 1546 0 R ] +/Annots [ 1659 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1546 0 obj +1659 0 obj << /Type /Annot /Subtype /Link @@ -21861,31 +23324,31 @@ endobj >> >> endobj -1547 0 obj +1660 0 obj << /Filter /FlateDecode /Length 704 >> stream -xUn1 WHI -J@BvlOEj 'L]@n'x Z"izrU|/'rp)LIIm !TO8Dl9 4~ynhPN ![_0-Jtr: )j{zC +lxYJ 䒨˕V"0SXsg.-(%#~ [`+YBrVIHNiҭ'Y0\T/C˘ +xUn0 +SI(avv)aw?0J,iaǶD?Q" Z"izrT:}/M9M&K$dˠ6c*ߧmH s6`r)v+޵jjw;yTmUVs{jANgrK1 (!xjKK|(^M6>HJ]|ڒ> +<Ĉ" +Q BEsVź=Wu1-A|Xk;h-la!c{։O&]>Hcwף5LƄ*eDm-Qq +=eYJ 䒰Y6# k@N Usg.-(%#~ [`+YvV$$KV,.F˜ endstream endobj -1548 0 obj +1661 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1547 0 R +/Contents 1660 0 R /Resources 4 0 R -/Annots [ 1549 0 R 1550 0 R ] +/Annots [ 1662 0 R 1663 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1549 0 obj +1662 0 obj << /Type /Annot /Subtype /Link @@ -21900,7 +23363,7 @@ endobj >> >> endobj -1550 0 obj +1663 0 obj << /Type /Annot /Subtype /Link @@ -21915,29 +23378,29 @@ endobj >> >> endobj -1551 0 obj +1664 0 obj << /Filter /FlateDecode -/Length 382 +/Length 381 >> stream -xN0 yƎؑp.+JL"_tޖIĩ?Et;!L̪K{}w%V1#Qɀ"3daFgx VETHdr) 0>}C}YnGZ̠>2T6vJd_|6ɺlYeJH6i;I1Nj}]3g ,=fVH1#Sua -g䒺H}Z1byu}iAźsY=:\m{+-(B(DpS9 wpv J;X٬|L4)ڱT}_\oq4#nm% +xRN0 );vbGBs@T+!38x 'Y:{[:mrBU-Ǘ W8 +Zsըd@ YQc^CʠjRLXn?5Ƨ0y}/-叢 *CejaSWbofX> endobj -1553 0 obj +1666 0 obj << /Type /Annot /Subtype /Link @@ -21952,30 +23415,31 @@ endobj >> >> endobj -1554 0 obj +1667 0 obj << /Filter /FlateDecode -/Length 553 +/Length 552 >> stream -xTMo0 WL%%J"ۡۥ@ vhҥhd XhGQ@wBE -gre g/u^sI+I8Fcbv?˯ž=C ',Yyiy@rD-ո^CH,KX! B͗O?~sh qٟ:n7+[uqGa&eCO( E|lrdO8XqljPOl,fyo!nk5\qn縭ш'ڵuxfyyp'ߊ6[&5ό?O'=f Zǵ+>/B=45Yw ,J 6ȇ}[h*܌se!K.I1mV|2&3*oO;um9Mxk4?Nz:7 @ k!W|:^zpikf]"bY hm'7W'&TzWs3}I|P.Y$4Y^ː̨ >m̩o9l%vecgLElGQӂADvJ&0 6:$c;+ ^geˇ]?FB3JB +];m^?= endstream endobj -1555 0 obj +1668 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1554 0 R +/Contents 1667 0 R /Resources 4 0 R -/Annots [ 1556 0 R 1557 0 R ] +/Annots [ 1669 0 R 1670 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1556 0 obj +1669 0 obj << /Type /Annot /Subtype /Link @@ -21990,7 +23454,7 @@ endobj >> >> endobj -1557 0 obj +1670 0 obj << /Type /Annot /Subtype /Link @@ -22005,30 +23469,31 @@ endobj >> >> endobj -1558 0 obj +1671 0 obj << /Filter /FlateDecode /Length 383 >> stream -xRn1 +vĎTj{(\8tw;Um%^0 $33~9N -7w08Ꮨd56%uoIS3g*3[|{Ke2fs")QV ŽaFc_VߊVwv,jZvk~**ĿdV_HxJ'^sIV^fNZ~OvbKejZ#U¤п8nFy8%@R΢;*38&.~wTm2TĿm,vz,yp>{J&^sIZVfFZ<,,2ۋTuJp % 7߮bw"M^: +ܼ_Zp'~@t] +]w!o? endstream endobj -1559 0 obj +1672 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1558 0 R +/Contents 1671 0 R /Resources 4 0 R -/Annots [ 1560 0 R ] +/Annots [ 1673 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1560 0 obj +1673 0 obj << /Type /Annot /Subtype /Link @@ -22043,32 +23508,31 @@ endobj >> >> endobj -1561 0 obj +1674 0 obj << /Filter /FlateDecode -/Length 671 +/Length 668 >> stream xUn0 +UH( C`(zGS -$4z-KԐ3(4 ?&9E2eU,6eA'rp)LINm !k){' #@tsB 45bV 8a'sg2l1tO C\V#QE -QEd4byF^~Ymw1X_B]+(VҦKmk_qΡ jv}|ڱن\'ڍxx;y&`oh8-οpЪAh qzhڇXUot:Z(ֻu u%4&& R$LI4M8̛W>b O>MH>9U"jqDԓbԣ,Ҽ.$qqM\oA-$hx\Jv#DO'i@Zx,Ez -72['>u.DZ>f#gPǶOܼMa?xn - w0G>&=C2VN6"0kփ``FY9 PVuc e=\䑐\ΧCJԕjxF1 +$4z-K3h4 ?&9E2eQ,6eA'rp)LIIm !kS6$N90GjFקiGU?k @qNh9dزc&2/TNǭ 9,%G(Xd&j6rW2cʅ-w+VPedL:ֹ wki}:W0yfx+8|nܩ#5}CiquV B[_xKC9:z+Χ1h:XEMI.11ypgH&aV&<47a޼ +w+X\]}hB +W(שr^}YVMROb;lQRy!:^-$qqM\oA-$hxR%'dX -?KCMlB`c։O&h qr7oS[Ba7LI!A|b+_6"0ÍkP#>~4@֍r,*\֏\ktHvݚZ9TIE endstream endobj -1562 0 obj +1675 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1561 0 R +/Contents 1674 0 R /Resources 4 0 R -/Annots [ 1563 0 R 1564 0 R ] +/Annots [ 1676 0 R 1677 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1563 0 obj +1676 0 obj << /Type /Annot /Subtype /Link @@ -22083,7 +23547,7 @@ endobj >> >> endobj -1564 0 obj +1677 0 obj << /Type /Annot /Subtype /Link @@ -22098,29 +23562,28 @@ endobj >> >> endobj -1565 0 obj +1678 0 obj << /Filter /FlateDecode -/Length 384 +/Length 380 >> stream -xRMO1 W4؉c;j9JT0CKvxG\87S۟a(Y%q3_P,Y46Iޢ'fRRRC BϷV[d9UnGp֜(>ޥE=ZI5?G3Z೧jFQ\fUm:QvJ@Xv{1b"*2JIqoW2VA)h'*Dy&]77Y1d>u#NW/]>OILIߍB4=P[MZT%@? -{ HH]1-@Eݷ +xRn1 )vHiHSV[_,pxOs(c;͙r?CB0X#g?R5&47v'oȁK c \+Z~{HK*eR@K1]l 0?~Os:%S~+v,jZuk~*J6%fVك>//{b [C\gU|:@0.nkLD١D@,KS헻ܠ9}D4hG}̪"Q<4~^;A=Ln.LEUn!&z!h_\EҠu&y ĝ\0mb/A/ js]zqH endstream endobj -1566 0 obj +1679 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1565 0 R +/Contents 1678 0 R /Resources 4 0 R -/Annots [ 1567 0 R ] +/Annots [ 1680 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1567 0 obj +1680 0 obj << /Type /Annot /Subtype /Link @@ -22135,29 +23598,31 @@ endobj >> >> endobj -1568 0 obj +1681 0 obj << /Filter /FlateDecode -/Length 661 +/Length 659 >> stream -xUMo0 WL%%J"ۡۥ@ vpҦhpd'ŰavH6ISh@w(DhS ,X&\/g98&0eØ,"8/69{ :g昂Ziтy5Quʡ؀1z 9g2&?O7_>}Π:te~;HEP!yD %yejA.Lxw(A:VP -c^-97j6uPuj>2 3⓯p]o:KI;VkpށgSuRVB󣸏r͍t t%%@XхoS-9֤nEST8|ƶanXt38]Z1.~/Uv]% ,^ t +DXYncn2dIPH;5}}c +6A.X]7%%kš+=|8 ΂6AY +M>J-]v  8..N|eMNX%Y&FO&P復6 uفaH0㾎9%g8qeޭ1<&t@8Z6Lk'2H%7ANebW2c`;^C%a_b/`T(.:c%ddx6Ak]/O//ERԝg.a}Q(b+&G{$'R-BqF}x!1Vi +P[Ya`F^tjFS7,vu .׻IeZ* p뛀 endstream endobj -1569 0 obj +1682 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1568 0 R +/Contents 1681 0 R /Resources 4 0 R -/Annots [ 1570 0 R 1571 0 R ] +/Annots [ 1683 0 R 1684 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1570 0 obj +1683 0 obj << /Type /Annot /Subtype /Link @@ -22172,7 +23637,7 @@ endobj >> >> endobj -1571 0 obj +1684 0 obj << /Type /Annot /Subtype /Link @@ -22187,28 +23652,31 @@ endobj >> >> endobj -1572 0 obj +1685 0 obj << /Filter /FlateDecode -/Length 382 +/Length 383 >> stream -x0 yY;vbGZ RHtfh@Aܤcǟp$3ɽYx΁7?c-9%k%[Mh쉙@)ŧSxoM[d9nK19Q|ZC]~ ZS5INנ<9q$A`|GI?Ke7>ۀyq|l}>]Xё2 b!*9Nxͫ%#NKxO()NJBTzž^JҼ_HZp'~kRn RNlg}E6ڱ  +x1 yY;vbGZ^8tΊ qf&v8crެj} @ +a z bZVcӤ-{b,XIEE!| C&Ɉ-2 +[pn(>>N~I.)INŗ<9q$XA`|{yI=wKe6ޕǀqq|}=Yё2 b!*9Np]lIƈ>1J+t^ Q^C:ϧ7R]|y͗8݅ӿd!zxB^j3Z|Nt*e쀤wr :o0 +m R>Nlc}Fz8 endstream endobj -1573 0 obj +1686 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1572 0 R +/Contents 1685 0 R /Resources 4 0 R -/Annots [ 1574 0 R ] +/Annots [ 1687 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1574 0 obj +1687 0 obj << /Type /Annot /Subtype /Link @@ -22223,30 +23691,35 @@ endobj >> >> endobj -1575 0 obj +1688 0 obj << /Filter /FlateDecode -/Length 1672 +/Length 1674 >> stream -xYY7~_φ:J% vb`9&'*ufדz=}H:?}QA C._R8+'nw`pjS+&PJjCn!w'nRJkaU@o5߯/OJ?K_G*oSV(ЩFQY1ǝ R(Ha CH'{6\-Pf_֋dosz,`[iLJz_ÛIEt8~{ s}z|D4P9neFS9kKb,dxy`_RؕdPH`}Bu\ᒯ3UjEŔ)IOEsʗYK\7#{EO3'lH5sj.kxTa4vbQǜZ!.ǟcsV2]tjJ: YF]{c 6JsBYLe9){lq˨.{꜒|l8i hF"Ч#u()yW uBDlfD 4؜uSlz2ɐ\ ~uހv+JsGfA]?y;DRGYDN@@ET lK˛Ch 'Z^K而IjTZƽos,^ 4[dƮ"0d T=xƹ!1O$Hò݃cA ĸ7/A\26 B e/l<ý̚eٚUѥmZdKJs4JRƺs?6h)o zEd(U6{hMGqN(Z/^z!.\mq̒D˪61mו l4R hlsꪃÊk\2{H[%+2$LBLuf3jEk%' 쭷6*z\¨LӒW֟ZAx tKyF xCn`&2?Weq͉Zώ̽~mXs|;` 3\uV%>Q^H_[yKC9X;`ˑqV?'>S+[`F>΁.$?jizH ؑR\eh\o;9tnwD7൐aǶ_{g1ba]y`KyͲE]W796D-F*VG'kd -4qxnsCF o{[#oem{r-zmovx+֠qeygdcuyJMTiRZa7dqx89\Y~YGpĕJ;>4Lc:_dHa -X_/_tI?nrTsp3uٲMYr]'xI;;bd`V6@h)(3TTXNA_1[J{YP}e7_% +xYK6W ! , hrHzh-((дH_Pz-Qp?jN?Jxt|rYIԣI8W>LNyԆn!w'nRJkaU@oc5O'%Lۑ[:tj|QTV55Ck/HM6F M3^Ki'K!Ygr@}Y/:_ϩY +r`[iLJz_ÛIEt8~{ s}z|D4P9nezS9kKb,=dxy`/HNJ2ZarJ(Mf!QU:N@pשD=`QF1eu|~[eGV26yf|dP;cvT3&ښr/6WjXM @sl-%pi}Tө)$dNN6fu5(l<*b- +S2wNV3*Z6-cRQ]1%k|q4 Elь%EO+(FPO-S_$ %*iPfh$z]9릦ݑ d!@fW,~ ܟvV7x! 0.`+ؖ7== Ї&/N,+<1l+7ըʟZ½os,^ 4[dƮ"0d +T=xƱ!1O$HòՃcA ĸ6/A\26 B e/l<ý̚eYUѥmZdKJs4JRƺs?6h)/ zEd(U6{hMGqN(Z/^z!*\mq̒D˪61mו lԿR hh;%Ud-ЗKVdH:1 6gԊ~}KNɁ-![/mnU09ޅQ%%˓?U,AOT60ea?՚X\i"K5'~Vī3zvguM:^,5η`z +,06+Ϊd_'˸1v+oЄf`Vm0S8*q}ד +©?F-}F>.$?ji#(  wdc1.̍1nX/k!U۲;/Nv/jYꠚ:pfq^,{<`E~۫zU# y5LD~|GO4qxn0K;*pA_m ܿczNʵmq\Y'N[viɚij +!xF6;\g\TM&ek5* Y!^x3sQ,?#8Je;>4Lc:?dHa +X__tIev98cWlYdj/c7viA ^R9/z%Ɨ[ Ls$@??t|a**HXt- H%]}=,}e7_(͠ endstream endobj -1576 0 obj +1689 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1575 0 R +/Contents 1688 0 R /Resources 4 0 R -/Annots [ 1577 0 R 1578 0 R 1579 0 R 1580 0 R ] +/Annots [ 1690 0 R 1691 0 R 1692 0 R 1693 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1577 0 obj +1690 0 obj << /Type /Annot /Subtype /Link @@ -22261,7 +23734,7 @@ endobj >> >> endobj -1578 0 obj +1691 0 obj << /Type /Annot /Subtype /Link @@ -22276,7 +23749,7 @@ endobj >> >> endobj -1579 0 obj +1692 0 obj << /Type /Annot /Subtype /Link @@ -22291,7 +23764,7 @@ endobj >> >> endobj -1580 0 obj +1693 0 obj << /Type /Annot /Subtype /Link @@ -22306,10 +23779,10 @@ endobj >> >> endobj -1581 0 obj +1694 0 obj << /Filter /FlateDecode -/Length 2124 +/Length 2127 >> stream xZY6~ׯ({H`ib{Elm@tHq$r@^͡U' @@ -22323,47 +23796,44 @@ e )=Hll8;d hDu@|P"Ed5ջ,1ŋl#g3FRAi=G%)aB'g;M92[3IKD09$kOYGTG}A'7Z&ssy1SzPǃt0 `6-n5kP9Tq_ ' J*,GF8<ׯf~T$ `E13Qiꢙ ,YecEfd:ҳ4K<(Or ddt_쑰+r烸 ܦNֶ3`Vגϲ!x>ZXiy:IKx;zo> H}*ҎZ$VL-Q&uR){}f؉[>1U.^ a.!w;L&]V^X ؎R%Cjhpخ"=.CTPF𗗙ٚ$(i -܀ֻ0yT!,@!#ѥ&}׶.!HR1ۻeQ6'?aG?\}=fA '^ bԆh<JE{X%ٓz]/OzRԑI$FDF,g|*d@aHvN qŐAD|1vk 7}p +܀ֻ0yT!,@!#ѥ&}׶.!HR1ۻeQ6'?aG?\}=fA '^ bԆh<JE{X%ٓz]/OzRԑI$FDF,g|*d̄ +Y@7p bW iDWa0cf}rsWX̯WpO endstream endobj -1582 0 obj +1695 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1581 0 R +/Contents 1694 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1583 0 obj +1696 0 obj << /Filter /FlateDecode -/Length 1410 +/Length 1412 >> stream -xZn6)r 9.P(^}3)QZ@8p 5?`c_D01&/5LV>GI_:φ9c6 X!][W9yr s H6z}}؂w20Trk4:@Q!h7׏݇_߯69}DžZB ek ~j#|:*W바yf0Sqi 86Lx7T6mw山J]'}[ڥ¿,ޔ>``ΓZ~(ni8Js`а*a(-}kz?2Lr\4vuպFYN0wO^ާiNc1IlHC~O>ط (%Gs`h'skxj ?8s~i8Ea/XZ~,WQ#K(bM -B>gK8$qJ(:h X6ՏI>ptT;#=،dYZ4쎟9QBuപ#q۪g/$Om}㬪 LQܖvAo%C{6ʩ>Q%dfu:PR!+5 ,45 -O^T^cܗiUaYLqWۧpb2ltgKٕ`F$-+^CogR}I2p۲qXqNzgXa19oc;HMy];n&+gDq5},1 6Wy:>I@« -ʚV7`ٗ퐺QW ;TTR4/}IFoR;_wv H&- α>3Izœ̽.mrl0ܴ}r͡KFwBzeKhxR\C DmC*9:3ұ!荮6' -4۪UIBw'h8Fs].sN`sv6AKaS0uRADz=;":X%x=;~{9, R8t~0|&d|;AIJYM}yH/}= m?mp%[N.nvԵBILac ȿ`bLp?v_:k|rُ\\_:φ9c6 X!][W9yr s H6c7eadm"$CHn|w_m@s}DžZB e5wȟ%a@ WSG6pTj2uxߌ~J#.m9߻£Gf>< ʦn<6r~Si?kdoKTJϲIM F &XF`=ss}Af ՘ CY lm[ Eq~[DuuBa(x3aG.&IYۤKO)a8d<[e +xR@3ivWQe1lAףIɷ=v,n"i6Xr4gL!FxJ1fGڡs~ 8wȍkl^R9H>0dq>+֤ t<- 6[,o@b(Pm֠MAe:?]ϟ4spǀOտ:)?(߳oͨNeOKQ^%@AWF]qO7FU`Zmo'2dȺkW95F4Ơà,,1YoTxe0 k-&BBS;en whf#Sܵ-؀ p]Rve1VW$-+Bo`R}I2p2qXqNzgXa19o;HMy];nB3 hYDq5,klrɓ^9 v$uY^UWI}[5l^a1ʢJʝr&rx]9;M"bgNRvtx>9d"+vk|'s,;'tL6F0' x[ E 7m_rѝ6D٤?%W,lR\ DmC*9:3ұa!mlOޒfzl^&  >g;Vϝ0vs> endobj -1585 0 obj +1698 0 obj << /Type /Annot /Subtype /Link @@ -22378,29 +23848,30 @@ endobj >> >> endobj -1586 0 obj +1699 0 obj << /Filter /FlateDecode -/Length 372 +/Length 375 >> stream -xRKN1 ؖPX6H@B, Z/g\eL&=~:$FĪ5!B&WD q -%x1J *1TЪ恱1cn)uQH+0ױ]Wooc^gwq/UPk+wr)cR5Ǘ +W@JZԄH +"܄( DĜSAZZ&e8|qЦԗhUMU6E(vKL;#`z>-ca>ڂTb> endobj -1588 0 obj +1701 0 obj << /Type /Annot /Subtype /Link @@ -22415,29 +23886,32 @@ endobj >> >> endobj -1589 0 obj +1702 0 obj << /Filter /FlateDecode -/Length 494 +/Length 492 >> stream -xSMk1 WTlٖ!!^Z(=n9%C%dgR:^=V":> Dj!4G3|u@)+T_HC!qXۣ^/5BA,R -N7)$ 0VD~֓ e9׺_~]Ad.5IO[QIaZarW`sE130:۾[F$;<3Jf}~']ßqKc34RWMas5.u{zIR傐PJSY׺t2gQTZWN؞Y8,БјPXqyU\6@Aٞ.WdLZ,5AU ㆠLbwP:ZTJaJ1E5\ +xSMk1 WT,hi/ -v7ٜH?3Yz)c%?ɣO/"!ښ棙t:.Pj +%!T_H&3Ȍſ=R +bBD5K2ߞ՞ow@=CAPuYM!\3HB +H//?n=Y`Zy +"#f4)ykwu&5(:[XHpOIzN8vPۈ-l؂6"<ı_W2C;4C <]zÞ 𮗺҈oz Ϙsq9ϭܸľK+Y. 4u}K' 5N* uTfᐲBGRV4?1CEcy6獒Tzޭ7:![+BpE9 fA07>n$;}ۡڵӡeٕr+cV9j` endstream endobj -1590 0 obj +1703 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1589 0 R +/Contents 1702 0 R /Resources 4 0 R -/Annots [ 1591 0 R 1592 0 R ] +/Annots [ 1704 0 R 1705 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1591 0 obj +1704 0 obj << /Type /Annot /Subtype /Link @@ -22452,7 +23926,7 @@ endobj >> >> endobj -1592 0 obj +1705 0 obj << /Type /Annot /Subtype /Link @@ -22467,32 +23941,29 @@ endobj >> >> endobj -1593 0 obj +1706 0 obj << /Filter /FlateDecode -/Length 372 +/Length 376 >> stream -xRKN1 8#.(lX/Z/3e - $3E j&|u;A2h'fsI}@ j@LRȔ߯݃{s5^J - *1Ɛꁾ~&s nc$אoIY5J -TQl62V0Ϝ'/2_Ÿ^54'] *l z]+fciz&%B @}gongԆ6Vv@k&Ujdӑiy~mf R{]oi#~~/rKXe{c:6!3HqLEn2ZT -'|u{ +xN0 y8#p\@BGmnn7ikg; mQ Zn HmO3ܺ$AJ¾P U5 BLL)dJ V/%cXXs݁n&s 7nmP_˷XU*<ņ7ǖȻctϳ͓/c\-sk.Adۊ~|&%B C3Ǚ/!ỵ{:@+zDtdv=~<}]u"^[ǃu$u1 +b3lv@.9p*Z/cv'ǀzh8ѰR!C-e*bvEE=Al x endstream endobj -1594 0 obj +1707 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1593 0 R +/Contents 1706 0 R /Resources 4 0 R -/Annots [ 1595 0 R ] +/Annots [ 1708 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1595 0 obj +1708 0 obj << /Type /Annot /Subtype /Link @@ -22507,10 +23978,10 @@ endobj >> >> endobj -1596 0 obj +1709 0 obj << /Filter /FlateDecode -/Length 2162 +/Length 2164 >> stream xZ[o5~?bp=["H$!TH-(%^=^NZAl||3^&ߟ wf?NRx++~ӯt^hwS4„!NJ~{zs?(%,DlZSs"U()kAMC,"'HeanX @@ -22521,22 +23992,22 @@ x mɑ-v{3L܆Lh7flaCY2,2ؒdm:{[&;ɜܻ tmp1yc:BQ"f~ȵyUc;c]?[pt=wH1X 3Op?! yqno 47QсkDCH΀7MdLZ\~j=I4+!mʼ:NqřR{F2EIhƽ#(07(=s9TϧKͅ@XD;w?wD̏Yٚbjʚ+PC7GԔe-^EOJ(3d|-N K96LoK Gj|3с] FTv%Z9(FzߒΤ5v40jf\GqFb8:nxQa{XڹϜ4I8W,;Թl /Os"qa vnmV= mn?}"*@}Qb^ vN9E,`IK\6EE'7GuKFJ~_ F^v48Fn*OcEV2!\DMxI!Y3>cTaI%/AV&ԍ{QB#3F&_;}{jeu؍Vm6^yߍ79fm{zJm镑n)N}:ḙv)=D3>h Ƞ5"Qy*? n 5&o@(|'yP5+t T_Th1"lwe =ZP бF"r+>"0WL0I1:R&/_L*<3Ah1cHl@]NԲ/Lٖ`W_ x6 +>}Qb^ vN9E,`IK\6EE'7GuKFJ~_ F^v48Fn*OcEV2!\DMxI!Y3>cTaI%/AV&ԍ{QB#3F&_;}{jeu؍Vm6^yߍ79fm{zJm镑n)N}:ḙv)=D3>h Ƞ5"Qy*? n 5&o@(|'yP5+t T_Th1"lwe =ZP бF"r+>"0WL0I1:R&/_LXU]>y^h1cHl@]NԲ/Lٖ`W_4x: endstream endobj -1597 0 obj +1710 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1596 0 R +/Contents 1709 0 R /Resources 4 0 R -/Annots [ 1598 0 R 1599 0 R 1600 0 R 1601 0 R ] +/Annots [ 1711 0 R 1712 0 R 1713 0 R 1714 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1598 0 obj +1711 0 obj << /Type /Annot /Subtype /Link @@ -22551,7 +24022,7 @@ endobj >> >> endobj -1599 0 obj +1712 0 obj << /Type /Annot /Subtype /Link @@ -22566,7 +24037,7 @@ endobj >> >> endobj -1600 0 obj +1713 0 obj << /Type /Annot /Subtype /Link @@ -22581,7 +24052,7 @@ endobj >> >> endobj -1601 0 obj +1714 0 obj << /Type /Annot /Subtype /Link @@ -22596,10 +24067,10 @@ endobj >> >> endobj -1602 0 obj +1715 0 obj << /Filter /FlateDecode -/Length 3964 +/Length 3966 >> stream x]ێ#}WB~}X;։#Y Evf՚wMUź,6Q_1A$+w,(D/DHNLVULǠPJjC#ÿ=dD2pTJkT;1%>3#&AfhQDQe~:oԟ)׉t$5]qx/3g]91qZ_La?4;&ZoYqO󽅮M*UX+룢 񦎁`0=(w}m|hid]L7iQgyެsFi>Vn-F Ծ:gUc;:OBztMNO'zb܎-۹8q&Nji3A gySOHGWe!^OΚBWg*]PtPAi3胰JۯW#a!^W$(EgΒ5ضKҳ-d+YV*YVꘫd 56kyض6:ovX6vYzâ.u;,ʇ (b+=(b)^_QY>j'Jz^cx>h6:fu}6/9( e&Oy.بtP /1~}p AyzaMaТ3QXmKV{أ{(â v,h"@9æD-Ym̱nǖ6זn[^@l[^@~][^P[^@[^d[^:g H=3$L[^3B}'EV^OOCd՛@ډcy -{ȥL?~c<ݰ]%{y#}i|>s[L2mxLQK9أ\_8 &ƄJ+s[L2mxLQK9أ\_8 &Ƥqvë|.9g߼I1+h`> endobj -1604 0 obj +1717 0 obj << /Filter /FlateDecode -/Length 3815 +/Length 3816 >> stream -x]_ק(E -4!(bHP+Y\΍ .( D;s<:v[͇O*xTh-?9PJX.t=|s!&R߉|^qV‘5z$?=DytןT( ب4턟 ˜H{7}>O^gzc}0&_4{ҞePir?azY>\\x7!Aѝt |yMZףu4u!sxV-8/ΒRJMƅU }m;x][L9zA[\*Etn7RBx$o7CQ$BtH/ -L9߿?}9)eZYs)76-wBz}DWʓil+\KMs?U]fUHfVܳYU fxh(`̐A(pʔυ%+cB(l}of`ZWf]"oLp3Ɍ+F4~U0 - 'O- ܐqh`R& @8xyc`g\OW3ΨE&p~%zVrYl+Xńba5d" Up։ivߏ"#ڑuFB#^W$zwGqSm/'޸^:/V,4l̲C#V!RtY?R$GCZlP0Zm.Qΰ2MzMZ-eCl?2:4N㏸>ĎZz8O3?"!#{1/: -ݗ$`,î\2S$3 S@,|yq&hŦ5l(@/7W 6Zzƺ.Hm~(`r8 l0 \+Lz6:6>6}\yؾH[}@3c(PZ΀:hp]D=Ap0 }. h ۀp8~ -A^CPI-B)6xi?Wtx2A*X}_!_aZW& -clW} RAgD¤3 -[\eo>SC>׶+}>Xϴ0ϣ|papC]pXϔos@ c5>g~}>^=3 =p+.x)! FD ҩEg3GF; 2AB -fÈȏB(8ag\Z[.ly ߓIVpXJ6{˓ZD7V0$lDur1Lr9h)uƛ7[ϵ~)Y.Ԗӳ+PJSMiQ;' -cw}ȹ?d N!0fkC -b*jkQ`;$LNmJ3s& >hrwF|_TOuO Ӡuhhj S];E2ޥՅdH` 0rg+®$[x_)5]Kې&j&)'-<&#K1#fE.O+HӰy/L^`kzzx= -zY€C + `Z¨&g+ xTaׇz -}- .) `30`0\ܽJ1\r 0&fC € 輛ꀹ};뀹tB7uU}ppkc>qpGo,gZa{>0.{,gӳ-(mŔ; -3}7=SmlyotMu/tjtQH_$ -Iq($u/+x{eYlɹ[g֣^ꀑ[g):`&QA'O5# Lr Dq5t89 O7Ȏmf}+z@Iopg!4΢7]FIϥ mg\P,Ngdۍ+8!sF&nT `Gd ihR3RaPM ApꀀʓcTA%ֿILGL 1N:|Sů}TI#ⱼzVA䂈ʨ}H|pG_I=#͘EvW5i0iEp EZPXuPOEj (RA ABH*^tGs8Xz0>t9ʠх>ȵ=\OQenժ(:LsVZhC{ 2Cj'ji6fzn3i&)Wrq፞LD4/rCy}jwzl7r"}yN QbА?U]fqM7[2Rķ1[r e& &JL_mH2-JtQ}n6J]z4 ڲ̖M$CAu]O61ehAg6oy9ZrK{[M+=L+tMNkӴ\j\xxOTk7m[0E+iowVeF:(72(}<2!0-ekdKet-롼,ޠ6P?_{"uV! oTdp\5 tguIϙO,7!# ٣вY3|ˏ?}dd_\c +BŹ?}Oe'ộ> t$s=a*Oz,/4Ckgn8V.65GH&':/+z˃Jfs4~AJy=Чp+ +-AX +TjT4.`sUksy ȘrJ}B >8G5)εT1BMTi^xxe0i+2nM,w3e\)!T`J:&U:XˤTŕkDm;Jj)3`S,uZ2 XYP/k濔9B8 _/ +:/Ea9BPyͥ o8+AN3wG 3mn%G7 ǯ'OS}9)K=]jAOVE#5)6Q[a[D}3ִaX0W-c3 :!pBv6t/\ L +5x l ?i-@oVͽa/ bLL҈i0Èy+5cFy Y=j:@b^=2D#,_^CX@h6P,:;XEq'8@;;NOhE }@no@fJ%K[yTޖ hd!#/%;W<$Qq>ʐyB^+A x>BeWS7qPPmN-_ &,&A#^:ɸ +k-TdX:պ>~Ώz?4Y]0nk/tc*7FwJOPO3pXOk8O70 'x'Pܧ=!T~Fm=&o=Zkukf'{75,ܧ5vܧ}"?S!:16%xhx^@ !kx!tNLzG{B#.[d~cqMnIӠ{h[f0-lƧU*yoRLKk%Sq˕7HD#޴M@.B0J#$JJN펵٣UY,JR +25Pz9#;A@gyQE]ϛ`g3; 1MND$Il 4CN5x޸vg'@8I6 u…HON@4/v@̎JsmCi𜧮UfKizϚwŲx|̿mNO9e=Ĝ`+RbθOc9%$SJd7{pmIMԺwMu"cA4NoAw82'ې ƚ &wiJ*GET7D 2uZm 8?Q[.(l]NCfKK +C+#Tvzh Pv|o"fp-nCZ43 +)461a?bZhu~[A=cԪ%Q8MkkI XЕ@n',@l"T-J {G%Pm'1XĀ2?6@[L9{ʴ@%w=1E@ו@{hbݑaywS0QyM`g0ΠQ֎)-Mn {]pQC'y(ܧ~,ܧpܧ Zi^e< m  l#3 +o6}k dʠnꎂDrƎ4z}pVXOgAy wS Zt:!-t0xG 6xL2!1 e1ƹ{0r,AKIo"I^ֽ/"IotBQLzy%wTz@w;t"MRk8 2yD֍JLz-NJu, Jx3$]@i|Jh3)ڸ~?9p@+!^++gŕs^n@A L=DcܳtF×Dd1Yͼ0&{a;Eރ̑h,]NWF7_{oEk@f`N +}W轈|' :)`v8%S M~=|-,8i=Ahpcr@F\B(ԐY^pLhMެX\r~"aHD Ad=uq" ku"A*;J%4wыCl(pi&|4Eb;eī! њsky<[\T1QT:,S +R(Q ҀQP)>sQ1:MÅs͈OM7:$hUS'VOPU~WCLj0n +C\ssE{)p"gA{fPz5Z~ɂ_n累 158mOIq-,JR7SZ\)@\(Ł _1e(q3c5ا 铮 Рi 4cwD@ccYvʽs ц>$p endstream endobj -1605 0 obj +1718 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1604 0 R +/Contents 1717 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1606 0 obj +1719 0 obj << /Filter /FlateDecode -/Length 4215 +/Length 4218 >> stream x][~_/@M'}H>k;/Iqhmb--E͹_!I!{~WoO~*ߏQ ^|9C??~}>3xh:,H=sUIɹw?}?~g]"ʻOOV)dMA>/^O1ǼO HN>pw#{̼GZn:VylNhq2y>/L-:*c誯Y'n3/z,yeywow-iȒ%f b 4g!Fb(ʊ@~bjR OFX6 iǪ<V @@ -22695,58 +24167,57 @@ TT jn\R955tl)P5LRIԈ5Mnj@z@n5G jr@=P;jVh>ԀJ Wcz3+A ƲAj@ FOԬHcYPsM#>NA d2s95@͊=YPI.j0zWAf7Zj5rP-j0z}I Ԁ2Iiࠦ-z@ F&M]{A1[el'=ԬYyP|A5Tȇy>|e`=$ձƢpX ѱ6nm _!1-{7WB9 kׇJ"RH?!&;] -J*v*H&LkGֶZkk(R` וYH@rz`[@k0:QHoS8`T[x6`KX%?@4Ur G5Hb4!W+ ֲrţPA>3E7feћ7$ s + eOYCh=@OY1ȝkX*ɨ{畉jRLQi?r)vɃC2iY?zJ~y\V˿b)9eZlb,earz7ݡPՖgel(۴UN\ZBJҟqL1fTk>gk%`,̠5+Ls-tg%ٽ_G].Y +J*v*H&LkGֶZkk(R` וYH@rz`[@k0:QHoS8`T[x6`KX%?@4Ur G5Hb4!W+ ֲrţPA>3E7feћ7$ s + eOYCh=@OY1ȝkX*ɨ{畉jRLQi?r)vɃC2iY?zJ~y\V˿b)9eZlb,earz7ݡPՖgel(۴UN\ZBJҟqL1fkqs%`,̠5+Ls-tg%ٽ_G]1m endstream endobj -1607 0 obj +1720 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1606 0 R +/Contents 1719 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1608 0 obj +1721 0 obj << /Filter /FlateDecode -/Length 4106 +/Length 4109 >> stream -x]nSR}9 Cqb ȡbEȟUꑃУ_E VSE$뮘ѝ+}\L!9Cƨbz* -6t12<˿/RZ8|t -~U .τGU~zk tџ>]Ta;az"}۟>>OgV>=_G)3}AC~+Md:+kp-xw, Пz|Ki;s՝x-&64u4z`U=g{pߕn?|/8kuv_>njR&^ cVN,)ѯzƲ#O{F[ Is>:z[NN=n%"`x[k_Y僞5bEA3FKd{Juڭ nt;n qetlx+wk -_ /9˹Q!Z1Ew 7}yR^vMc .p-dzmRn|,|Aq9+z )WIeY-)!v -^׃{MQq'd-񺹠f6M:ᎇy3C,WF{ OҺjlXL+a 5:[U*zaE:&r~ثh2CCt0sFKe}#dxyid?D߾B-)NRX uVB,6! yb&c45~기(Wʷ4a,,dTeέeRg9 U 벯CF䨣Q>.)Lcd Jb}1(92-4>T %Ph]a?l -M)2 -N }WʖR@w7BJ1Kf?/{fU Ijr+|RL̟ih2XySS_4b Zؔ(,jDƢs=|`1P0qFbQPpb8-yN 33]#4Ի^ŵ)9c|/AC˼yĐF)z(Gs\*E% 2!H) 27^T9s+Ly@yֆ^G36I(V{2ң5FDgǶ)|]re6u* -e`}БH밴ڂ9 $Y%㑘Tŋj1T=(@ͼMf3(X|)*SR ҕ\M]B*<@]SC] )$!\QF]ߪskBE[q"E"VV2EDm¼L&EQgF؅ k޲A^i@OiJ@Q i0]Ө -jX_1{9N׵ -Th= O4{8,J5doP|*h^#a(tHEH68cqc+_(R $3 -ԭ|N4(+vG!IsttщDm0^\˒\ˊ9TZ'QusG6<\!ƻh)cO%{Lۛt},{X#W+ZXJb2ɺђBu CHw jyr'ռғ) 2*W:$^Zg959x4kb7y1.YrԵ-o[(# >˲& -e%M#,=#e lPnl}06@ -++i`J<T6a{MP=!*TCњ<>>Fsگa:~ɟZ+O-}4h3rO5h+4PnM4TW/4h+6h4 _ B v (f hC:eޠa[SPT{~ ݾ*11GH_snB%gN,9CaZr]r6GszHm%gl}%g ͖l]eKP~^ƒb"juKZל-:'1[-7$$ȡ)Xd cɎ?f2LAt^YYnS -ʩ'N@~ec; g6ɢ[lԂ#7rg1N׺l;,2a׶N繣a8q$!0Ap ĩE]euHǻ`Y3BM()C~w;iLt`cqF.م06* -)|*|c޲C9jbd)f;WDP);v~ߝ0}/`ǝxAh15{KQ(~Vñl;a~ l{aJq˖V&gV*q7;>z{ۆ6MeFr Tw ʲYw nsyyNE=Lae99YIj/bفElqiq%jC74a[c>8m\xBn~wY9d8,c@Uٲ?'qZ®j%oyZ5֛ōm;I,8QZ^QbkuՑ#.I2dLo̵@>Z-Ij]wvfd}tb RNuO=VuSymKwڄ?ۄjAY6ka7kΛ6 ͚p_&B&fM8*VM8jCgp Mx/rTɦMr&ݴ q6oAMp&ݪ ?V7kQ+kՄ7wRքfM8XuNQ^z!Uؐm}'RHW],y爵G8gꇏ^> 6͓dZuA0}݄Np~o.?oRe]O[}5DԱۨ|'۟>>!_?8sÿttorR`砙^pv3!TpP)fRܝt?x 9Νwg!dFMBoϿtD3А @E~<ˆ5L  k}O?"ⓑӿ̹sn,T_᷀@ñr>]+r~F |g{tN Wo@S>@waEg^fJ7/ϊb~׼b,- +)(:SXgAy +"LS&|qM $)S\-i's W$GmX63*׎1oGMb.8w"% 4Oԥzu,y4'5qg4 JSO-Y"c'7[ xr,@_jl1ȕHl8<`8kJ &0\ .!q=k7ۊNH3e,<$'D|6*l`\](8/S D(vE+r_>ͨS,xɻxLD*W3}r!]XjpeE"?MSI+ 1D}kUf|̬|A`9o+z I eI-)!t +-l^UcYsf*yNT80*09zr3e츃:Fjə~qT0ӵ:.`P`_Ox _?(XurxZ&vU4wB݂!aT +xa"ܧ / 2e<~Z!cBI0bL/3V3Pd,6'b>kPqG!Y 7DG:]S'18 CB8&8'Lj$^rk;+XfR>\\R32[eWB;[렞#ʥ1A3!s+@"vS˂p:fNJ&|:p}4Ρ tp"3JӍ|` aǁ`Bd5$L!tM]@CJeoX8hξ="F=7,@9#עAcxEUZr-*hHMAy|aBwM 5ӨmJwW,;X +o|PlmMJCSnv =_4DͥFF)7Z0X_=!F~"ݽrCuG~Z5OɥMh_Bc2q̒(Ƹ ]kl̜29"I˲Uϒ˞{ȲY6QnUW5ْal)lHt#_)UZhRWR5 +&vGhRuyՆsh;#_nͣuU;i,MSU;g+ӴvdKd[;T/XY&Txe kf٨z&b> cQn]^hhD-thW?eܭ~ Сo@l~s~s*?7@r$1RVh˜n @wjEŶIȴvaG^C ?]IP⚠SЁ,  +cBtГLT~躩vtU_rD=t :"!\y6 +ICkxBԭk|&h/xz5hAA7A{A[@8ֵ֠Am}FaoFB~ Q4 ):e+ ל>0N68$(4kN6-9#cYZQaZrF׺l3"]ڒ%ݗ䌈nK/ZrFwհ},yP.Rr3SmEG$^ 1phigۗ7Q'KpK38SI$6M6q*Y@9 ~h>qBDCg:RaY/GoX:\1>Ⱦbv^&(pSh80Aq̉S7]yu ǻ`Y3Rܛ@ `0Q7oҎaƍZ,t*t.^)G-;=F?*F|zj(*ebݏ3{EwffedfӢjU,ы_JF̷zʆӓhO~9[=3%_岦UX]Re7N6tֺToЪL?]..]u=ֹ<,LacYU9QIDBS_#NnŕTǸfu6ƽg<)ur"vm*NgZG۾^-/cZ N^V .}fq,6CI,mA>*?DkGEQU{ﺈ&p3u7{uȵ|ZT$^Oۑ"K_:H7{h| $#[[&|J&| PNe&&|y&Ha&kNB&nM8Uƽp i‰_iC|:to§;]p"M8g&kNy Մe _ݚpj»;)jwxi&yj: hu՞62Մ 0XȻn2Mۑ.S5tnwt3)[:-mO0ߡ46pU*O֥}dM=2ZRv~f,ƇFLJTɆD֧>JtzWPƝ}j?9:&iCjm߷9B73&t/3uw Z˦Hüi~3`I?w?8!> endobj -1610 0 obj +1723 0 obj << /Filter /FlateDecode /Length 3008 @@ -22763,22 +24234,22 @@ x RGj<.֪^[B]q)ץE{Jt0L(%&JUe,#ۺHEF )j3% bzdM"ca[̀ݺM3YGjfǑl:J#@@VF ˵QhG)W춒ScE.8ܻ]C PȢۈv"^~u\MN\U|{;v;LIӎDwѠxO@꙽],Q;Wv@3$sh]`>^vΆA7؛Њ=E̊}Т \zdUpn7>!J.N EwlSTU V8tPU鞲Y(lʘnƦp>etnv*VEmIzaFuBR7kѸóo!vw% J=H׷F1i!V5;7 &Sei+I)v) 8J,q<жZѶVMy!oikfmDec'{K?ae.7YQXG,&ItӜMFsf(eUn8x}}D8moP&2w&@ʛ5C; yP%‰ naxA6 xk7J}5J2_l$6ry^xUlY=QRYg㿀R[цA~?3 :YB"ڈYkӂ@ȡ)jKTQu9W#L g}8b0kIXT8?̒2l/z))3cx"vGg.17V3 xѣM;N!:n/z_I!i:^(8&H-ͥX^E{H3pZ AL7*Ӫ]^h4F΍҇pQʬ#ukp/]O.FHlf%1}łsi}I8}2Út<$af}G̛]>;db>t,Sh E.ޫ 0XUUP~{ՠ4=LaG<(<;qQaw HÄ0IB݁to:  ,Pƒ/g.KML c uh$X !n``96F;X4MI}66**4dnr jUZ) ?wxzwDC`yoBt>"H:ᘦ(r8o46+`*̯q 4'y -`q8/hibrgN73 f-pge m@Y1/1G\f4fKwut{jTc,Gz`m/Fc"%PO')f'o;OBϻO4cÖw> endobj -1612 0 obj +1725 0 obj << /Type /Annot /Subtype /Link @@ -22793,7 +24264,7 @@ endobj >> >> endobj -1613 0 obj +1726 0 obj << /Type /Annot /Subtype /Link @@ -22808,7 +24279,7 @@ endobj >> >> endobj -1614 0 obj +1727 0 obj << /Type /Annot /Subtype /Link @@ -22823,10 +24294,10 @@ endobj >> >> endobj -1615 0 obj +1728 0 obj << /Filter /FlateDecode -/Length 2780 +/Length 2778 >> stream x]n}Ex~$yH\ )JD۞#kZͪSuXEn:jɏHŘw×V| g^<lP! r1RL@Qic堵:!Y1QLGg1)}G4Gs!?hYQ#QEsχ?GLrx']V~{Y^X#gOL97SuY~Vε.#&W{Ivc#U򺿐uz(e٧W1qz-V n7p*c;0M8X<o',N^Νw9e#^qF/g2p1<йN? @@ -22842,100 +24313,100 @@ q *0]Bi|7N#}ݙؽţ1~bKWYnk@X<{jy) cǒo+Bli%@(JE(  )k%;g+Jnlk%PXosX;ډIbr7N8z!E+[8|V!qivbg'n⬓>&1&l^Cy[ vYO0 ĖѯBXMʖ+&Blڰ Blj0 ,鞺*0:=VnɎB>2G[MTlFѳ}+iڱ¸"mw.76בEoqw혇{ QJ5m}L'bKV=nkPX?7UQDnQdVd"U ͷo@b)Zb -K FWĢ) z=Ӧ?#+%Cq;i|l?Qp‡cr̉aV +K FWʜB=Ӧ?#+%Cq;i|l?Qp‡cr̉ endstream endobj -1616 0 obj +1729 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1615 0 R +/Contents 1728 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1617 0 obj +1730 0 obj << /Filter /FlateDecode -/Length 2283 +/Length 2281 >> stream -x\7+˰H  $]L=Ȟ\IHM&BFHbX*$>A/2)e|ywdտ鎫ד#s&D)!kVο9˩|_7b$99grL\sy{2G4Z=hz?NlY H6ޝo3`{]zr=?/2ޫcߕnϲ}way2[]٘w0QɄ@Z;}֤fV<~ӊNOb5gьG QxM ٽM3MڀQa:!o(m!NԄ:A2Mwtc;8St>w5auJ!k~F8vA!al} - (RPH!P8ܯdRUo7@!qF6[уJ -qã0F;soo7@!L!@RR"v.&]./<qL!\Xn'@!},]ݹqa)|G\V`$M!P=)(cX47[_4Šr @ r95$V]!qF6[уJ -!<< -cL.M!P#SPnƾUQJ!J})cd -M -vRR;7N=,kBe|ؕB`2EShuFS gKđ3"Én -BI!@Ìn>GaM!PeSVMM!P#SPnƾ -Rxb_x -vPl(?eӤU]vhJޔ>/el ⃱K0= ZT$LƫweLH -\ҀV&K;@= raesaF]N4JL -9yDˮG%(R3a5q9z^@}i%pza,'YŃuA;ʿqR׆F9ObT- -eZ7;]Ӱ Ml)2B韏Ϟ8JQ%fX(>t Lu/.PM2GI\6NAMٖ׳%9;y CQdQ4Bg#|ax GbZ[ky'Ӡ -i|LrG1V;#"BaI=;r{TAaskYo -rО`QyPʹko'à -aw}1AyfB]Z;U(C=㪌o6ozTQd kie' - K刭2qHQh$Z8B=uhY;iDNܵZiTt=n9qok\r(KGeb8v-pdTgiS~_~w&.C' (qqIbNAKM^vGim=mNq]:UhH(T(%rbt PXyGvr2(sٛu-dTU]bin9PxV"5}*^Ʋl*tD~QLlĥе iPrrZFY{]1~uX-egֆV'3K=Y,5.R!a$l ֎5A -H|rzrm29ձ]dceR}ud -[ -j HJ.Vyx:0rȋGr_8=v?@ +x\7+˰H  $]L=Ȟ\IHM&BFHZzb$>A/2)e|ywdտ銫'/F2;LHR> %CdB ﭜ{sSdoZIr&r0嘸\AWdO*h%>n-ZG$}FH]5T닓58b1)XGar_~]\D'W=WԹrVD_;eZD.Q-yVɛv4AY1ʣ--7XѺM'+gd};u)X}Y&+Aԥ2f)u1h.R~yS(" {K)ޮу_=&cѣi 6>s1#H]c!cٚjoZiI ;7Ut> +!I8}FCb8Jv?[g1 6ԉP'H8}Lvgwg|'&Q)#66xm0(Ğ1,/BaE[) +guޙL(Ğ1f4zVI!xx(cb.(đ)(sX +7c_ +BĮd )K0(;7N=,kBx$t) +'e f닦PXy^(A;jk Ğ1f4zVI!䀇Ga2t) +qd +BؗBr:J])D9Y/<qL!IAN +BX +wucpqMXR7BRLƸh +mh +.w" A7NvSbO +fp= +h +e.j*n +BB2p3(.J!B%)#A]:LzVvz)yS-L*/e\ hQI&8gF?0 ku0%#)sH +[aH.Dz'H˅a +r9Sv9B(1)(gO,ZHN>ܲ8oy5zeZVS酱hgM(ƱK]vUdK<ƊqRE_߷ۃ*iAT/wYL2(sP6kH˨ +>n>{?l+]Fa٣vlr62ս@6r&qp]$:YU(6f[^ϖL- Eb:Gk@'Ӡ +՞Ƀ<e;iF/宵L*U3 tX +'QzrW`~Q=1Υe}̣*_yC{5^Gb{C)տ *KbkZ0B=We$|yMl}{zb>&]p]K+;U̯g\j(Glݕ)8CbY{]1~uX-egֆV'3K=Y,5.M~)xiFkGZ;A +H|rzrm29ձ]dce®l`,)ɬLbߩqyK:*w^^hn"JQk endstream endobj -1618 0 obj +1731 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1617 0 R +/Contents 1730 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1619 0 obj +1732 0 obj << /Filter /FlateDecode -/Length 3885 +/Length 3881 >> stream -x]Ɏ$W8}9䃌-Fd`̍KU?&:h5]d| Y*/ Fv!DEt -׷X\|ʻk4 Ax2tR -֝5Z ˿.}ԝRM-5'ى/3зuA"'A *c~|wǫLT_ H0KBBzu"mjw0~ƎoCZ'=G}_Vz<^?ҜxL}鱭}'>z3ߟE :?C)/R^1ڇ\?}ܵ"RxgNߑQ厒7\^[zb,5i7W m=/Y0<Ɇn/uNO|&oអG|\CR'OW-ʖX dH|6f/`S@מg>G>''uy0>NtN)KSoc)_bֶ#\uq}ۅ] t4w?(|w*,sRz]}ˢvએRdDh%躹nWD\l$-)/bj*KYOrxza׎<}$:# w(+oJ荦J,pR9r:t@I nsc6_$]+!'Zץ}Vc6R梉VG/TLt)lZDpbؔlD(^PjD(:~P-rP9˷M;qRi-DՌO21ҤTg==)"zHW?:@K_jc<ֿl4N|퍩%+-a"YW\1; ~4*](ڈFGF1m MᲷ:* 9v(ȱZT{W% }ͭ+?X#!8Ѹu&8q0lHk Or!Л2|+`M[eħ-GQ5&ihQ\ m_3@)mA4C[$ -m C:-B[hu$>'ZHjlAIeUꈥ@zʌlL\P$"B -gZxR|(KC?=;9ȋa]t<1Is Qv/P;>ò|-9m4s0c^3`}; - fkg#f)1`x;̠Ofk: syA\`$m:` Azip)ST,}Ҭj>5jm%фȯj8C>+t'v)mM3 iJژ{ w.pcn^pk =SSMGU)HsR -3ƺ.-\} -9!5\uG6p+|Go<'W$WQ!;m$1g1;mֶ${/,@nYͰ‘-+ -4Ud*T@T{ǽ(6E9m]eM:"c|#uy KACx*15ԤI{.>[=Z9Pڼ갧U1ŒAfS7 ,}wV.JǩY2^3^u/[ q`4ZwJn'Biaj3W;Jn7op#c7wK%\z<Ë9D^\iL/^ΐǡ=fG>:iKpx=#ٴ{Zi Yԫ{i`I]Pͦ^4Z4kRϠ[7dGz*筎z<>|g[H{̨gMϑVT蒑[u:)E?ӁI䏝%tm[?^(:ڦNdZ(jw9E%t('7}zh,ȷ(}i `ϵc.EYO>0'GJrf$Sl I VyjѢ5D3m8\`,= k@+w.a.a/_v_vV ںK,Ba liH7m-*-Zdm"2B"nQYVN\dKvEiIPҒ $jժ%Azf"Slֲ c_vKs?gPZr٫P-Yu#>=(VӃI_5jf҃|ש};@ɔRB|4ꊽ -UYvQ? 2:ȋ*^Sv|,қjxA[kd '雦|iZ)Lӯ/8M1ۡ)J4ɔ24i4C2颋hqM1z 8bzϔ)MzwS%dr) ʇ_*PJ=.kiUON*ѕeGNeG0z*Rw -dZAZ-@'MHn%QVP{e AjsWϑ/'Q~Uul=us/ȝ*bK74CؼgOF kfa:C o|h䫙X9dnjaWżdA+9;a7Q+mHm6Y%nDjnP W *;f ԪbxP%UJJ @zoAKB??ϟ~dal/g,^_-@o_zVߌF>!J8F$L9nuiWzxztYDh \!q YJ$01#Rf`\`ХcЄ~`f 9*}8Xtҟ\tJ!${ +-y[GObۦO w|~t6}άcGIO|Qj\O{fiN<=ώ̿E :?CSkA_ <6O#Ͻb|ڇ\?}ܵ"RxgNߑQ厒7\^[zb,5i7=W m=/Y0<Ɇn/uNM=E|3zXڥN&zGZ,<-#,=,Șl^Hy .tL1!1 sge_8k#l etr:g ?6%uUtl8)x/d{n PhļBSO;J/'<8[5lޘdy3ONG]{f4Oӫ҃R.^NKS$iW= 2mG: NAh*3~PvvS?~zU7Y~:J1їE7>J!q袣}\ _"p f^Лbr y.f=E>!oS뉆#^;"<ĂY!(7TbSʑIJZhN恤 2$M +0 ̙4)pG$sOxeibܐs +ӌ1Fz 1R: VfVbɚ(;c/03]WMDVb3\:w/cmGWsʧ iXnDkklp]$誋>`皈9^Ոaɀ}шS0rA!^hZ9 Iy67>v:oUNbru]Zn5g.i.h+yDŔ)IGaڟIuJW!}`MKF1 uQmFբ)|osM܁6Aڨ`*Q5㓹L4)YOOH"zz +Zh)q}XmlƝVSi1$7yeX_99_"rvTd޶6+j+|ď&B4}~Shhb(m)\VY$3'E9V+j/X Ouk]4g;ND# iw-=SxޟIN9zSfo,tȜ5&$ M6]kk(E-hfh AڂdZmT{h[Ehrm\KrCI͑2(JTHOq IG3DDHAbC 8XQb)>~w#2y1̴'&i.!j܎jgXC}%0Ͷ9 w.0cf^0k 4oG 1z  c3`>E>̠oGɖlM~0/ȝ ̘W̠3H/ nV<;e +@u@F@M⺭2R@Rgg?vFYs;MIZ~OwnLvѫnz̀gsJH8x30VwNbZw3|XEV73F"vTzӆn荗䪗j<*dQV$4fVUڶW4Dł|h-`_8eE!ў +L՜ +(jpŦ(I@doSp.di>hu@R%54IQb"wEgrQݶڼ\+TYB*XR?lj$#q}yګ.e D?LF.XC@ԭQ(޾x~6^=;2О@Â| U0[4.;#9EZ3a;^;"gAz/5q@3șkYPU`@2v۱M\D%OKೂ& +e0 >^Vm| vGim xd&nKA>gx1HЋ6ix#8s=%̻@ MTJ/ȿch: Az A``w3<` 8c +|g::^41zu0Z̃+yjYw6EGYPKOjKЩ-uOgK%U'm Nwd;vpOk8 xa:+z>}o3 ,ɿ4j4ҫPPzM4t릂hYOQǧOlK֠i캩 C9ъ*]2rN8eh;Wr:0inۣmGQr:>E@4;BLR:q}@w-O>m[߃vl( ڧDHSΌd`2v*O-ZԣܶHvƷ_ Ŷ0a (}E;%ޅ53nj|z~D[wE( A;|pm?F7bmTE̼ZAZHw^D!08 `CPIׂ|lѠ(- jYZWDZ5$H STd{ZwqA5nui|GUK<{JС1ˡn{ħEUjz03G߲F,Cz:5tV(^ +@h/F]WUVV>.g>aUFyQҫkΐ@zS ^:hk킓y$t34M?C+ig)w;4ET Y fhZ]4]tM1ڡ)F!GS^r4Xb4EӠI6́3zDSLY.YyG +Uɺ'`Et9mJ p^%)F^En^ac,@]+YK%1 Sڢd9# JϪs/A:# ]mz{*7#9D1*߃Ͻn.sUA qr24f@>ɨa 9L}Om|5k:glz}5J Pp,(qe!p@z6l&4jź ۼp;K`rčHMo]0`Zsg4ЬWUZA,JbpCiU Hm݈{ _=|m:=dal/g,^_-@o_zVߌF>!=L8F$L9nuigzxtYDh \!q YJ$014QH&-t4!YDaJ?$$N#f"燛:>i% + endstream endobj -1620 0 obj +1733 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1619 0 R +/Contents 1732 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1621 0 obj +1734 0 obj << /Filter /FlateDecode -/Length 3061 +/Length 3062 >> stream x]Iׯ?s`$@Cuʹ/3 )>j~9xrUk[EZ\9Aା޿]~p tzQ`נ^pu3!TS)fR]r?x 9ΝwW!dFMc"=%=}_i 6혂:*Ob6,V!kca!JyMJSBI $٢ !Nk&Diir.r穆ϝ(3SPtE\)Z=ր$U.ӀFynB׷ցI)jҧ(" 3Iwy 9c@ ڴp8* x"u3KI| z+R'5(Ucw5SQJ'wb pYtֶ U ɏ̑|ocz#HaPD=vK;jMB L|]ع5J%cG΁b5Ҍϱ bonOc]HSYҜUf"_ss%Li<5+Tvu ~k~m^~QTlڽ CyrFi~ M[&D9:ˣ-#~Y]"Ao%{ԱG,F7xܣhsG6;#Y3yQWRkHd~Ng~&"Qeob7rR]a~_װmozL$(צɝ/ϓuĆ jP,[mo =&rTtpg/LXʹK\ r> 95 pޏ,ij,DvMlRQB˴ʗcC;cDFѴҰ0f%}+$sq@Kwq[xO tKJ' B% ^R-V,[+bFJljgw6kO9,ӶcpČ'q>A#&l|xej -)2NΕ&-}lz +)gWzԕn{]A܁T!(Y]y.!?43!ltHs`Cd`JJ?(vV{-VwD :[u7^;/s%z *g|:TkBLZTᨩ:y,ox3 ZT%wֳ zܓx'QitgI )گ칈!6-@`O NoZwm-zFyݻK` =:PyJ*חzCe]|)? >ӶcpL|Ӱk|\+#q +>52aˆA?χyxZ"\)k{2'z endstream endobj -1622 0 obj +1735 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1621 0 R +/Contents 1734 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1623 0 obj +1736 0 obj << /Filter /FlateDecode /Length 3176 >> stream -x\Kﯘ,  $@l@N$cA#/V9H"lrgr.F;fՃI D;s|| CW|}z^hwh B>|'H 4?HE𕔩4W|}|2=g/S>v؜=g\kP(֕񐮙K~6{k~jVJect|u5ѷD7T3NNMIqyѡ/>8 -EW*/;U䉯MZV3IJenC(ј"/&3=s~z.r֒v>Ub&Eؙslڊ LbBϟcS\gPj>ܹd qzGڜodRl$‡mchHuMYkTpD\lC%V2 FVdq7Tڠ x F_7( j;1<2CaMqx=7vd0ՌF֒'Q3V&',t -I)ΒˋVr)^_]P IFf)Т-,] &/@l'[^t^cψ[.]^6<,mQ)FXfTە @y4yX*Owܶzֻ–=slB\sȶ_|cN'ߵ:竓EU&AeT:;A* ? -U(5}/*~~|n_u ک/'>  -y]46>,EtxݜofGo 3 Hk#*h^B҉wh`C>!Jeˏ*: YoCP,H#C(i4@, SSx4۬hQCdVZ3JS}\JT{{s/]{3 Qx0dȰ&>GdthHhWsPA@.랪:|02QwZMFO3hT ->NWƔ77ad yF øcq G;2h*;̩}Fkm3~޷6Z,yE&y*]\#py{uL8 cۊ 26O/փbxX=Fst,.Aa9/s^.]QzC˃f{aCf>bCڑSQuŠsxy%N8Q_o/;1>k7XܣˇW\Ksc|S Nbi{$;[5ϡxնNgͺbfMZ1TИ ׺"F%223Q>"Bwu v6},RBtpJ<+H_BIC*:d?>4Uf]nvoRDya @g6E-dI/KbxݔЛATƜ}|oORiwׇRG#E𕔩4W|s|2=g/S~7'9m{64֠P+C!]3r/l,ϦOect|u5ѷD7T3NNMIqyѡ/>8 +EW*/;U䉯MZV3IJenC(ј"/&3=s~z.r֒v>Ub&Eؙslڊ LbBǦ:D\q }s$s:9ߺɤqZIaIOƞύǑѐ2o ꚲL +\I7FK +dTA6=*.loJ#õAdw 57xZ?>;nQ +vbTye[gpc"w(Id`iE|Tg~6Dk=Ӫ2cew1$ 3"*I'0ȬL]j~IxCae76Zk%ALWADFJyrBlѴ+V-8)WK-J:`Ot]u~lk؂a4V{oD@f򥒡0\|o9m3b|Н߬G,f\)-:Gn5<ԇb"*ZNmASK0-_fԃttBOw.&FUS*}6?7a$r`V[``\^vRNE%?0)yeAAcN/. +l`xeI]Yꍎp G \:|Wm\?`(l3V->l;5=O|}][૓kʯO+p:><(6Oz6 *ΦJىՀ :vWA8^VBD|7|yP\s%]wN(N}'?iV뢱 e)0;[)FZQaF:t FFNK\F2| 0P*S[~Tx`$7x?hJd95@GNb``abv=kfDB&2 p֚Q +(T.+L/ޘ xڇAmhƒN%E>7 9"cפCxFbF +rYT=_dץWÌDaL:LfW Jk5=?}:̠Q)|@;Y{^Sބ/;0N y-Ƞ`0Z_yߪhbϲunx\Wtq ].30pn+6<Xb6B5kVyDT ixy9.tFcGZ^ -*߇ ᎚ vkGNGI>: F}lw`q.^q/υ:PN-(:6՛[VoA<:V:6v53>ȶkZƔSYZCc&0^N~D!78 ױ3@AH5SW!YQt\/އ'}>!qSVܣP+Eobg"Xך>Jn%F.f5F{Hm#) Vv&l`\Ek@wS~je;̦ p7|N|+3߳ж9wMJ;1HTvu_&3PUmck0N8c0c^Y'# z}_,s endstream endobj -1624 0 obj +1737 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1623 0 R +/Contents 1736 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1625 0 obj +1738 0 obj << /Filter /FlateDecode -/Length 3021 +/Length 3020 >> stream xKU,XadIrH0yAnx/3v%R^E{F=zQlu;Ex=_~>I ;b'ht`^pFRRj4F5F/sc0DgPO.JO=HP/*:tHA]A?|:lazFޞ?};}?xVQ|&`葌zҿnl7_W~^<>Sk:}?e]۝󧏫Redc>XI٠kjS ySPXkةNVu@<mDz|_ϊĿcGmjwQ[Lg0PEKt΢;{-ϕKt>ҷ8;RC`їb]8l,ie\.CxpL)xK; bw2) P){#S.&'Znrt~`|aq^; @@ -23016,50 +24485,55 @@ RR WMXI|,9U)K2-oƒLyۙ͒K/U$Sf,νc, t Krn5Z5Q5,TKSܾ[$S^ fIMY"5,\KrMhĒ~Bd}%>1,}_Kbt(;ƙkI#FFC}ez,'}`\>.qTð˕unxL;Wk8^;8`q)x9Ǐ=nbp0Lo -iI4l#0q&SQAIWO4!ѿ/2N3q96. +0U*hl(܁Pf{c^zxEmLQ~cQ@ '&UօXEEuͶ3x>Tð˕unxL;Wk8^;8`q)x9Ǐ=nbp0Li-)d 3 +Jzuxtߏ|ְ!?@ endstream endobj -1626 0 obj +1739 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1625 0 R +/Contents 1738 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1627 0 obj +1740 0 obj << /Filter /FlateDecode -/Length 2380 +/Length 2379 >> stream -xZˎ+rH `r$")RLne,ԩ7"fs :AIG [˞Cr )m'Xvh$!+ᭂkX˦d[ -={1m`4QhA'``-Ysc`Lgܜӌ6]xB̩Ifo11^-c8h#{j"x4Ec,2:b;ً -s{D)ʚZBXHF^ׁu_i3$0DtS7ބ*kTN2.۵C }Eʄ}F0{F::tEAqHs`P =z$4k^)y`r[r^:9LlM@ME?+0vrBG)AїzuJN@yg=K)P~ Z]j2ׁ]c$[NRIY0n䝚lįTݙ `&m#578C,V˞>v~=% M iܲ:XV7OszK#^[Tx x0;AC)0tk2T+T4XڦEDօ5!:Yo"Dy=MV ^aڨ{tUS Qy plf}îG8J_#xpiSco:cv]C~MCntĵFM$ʘV:7ͺhќ ꬻOc@!wÇd,;t{3J2H(1N2Vs(Q1"{Q]˸SzP>9O+xI̚X{G$Hu }s҉S6̐H0:ѕ -ؗfdcts<"6Aa=44Ĵi5f\tJ'5cYX>p|Xe-X0JL׈.|ePyUy.>pd>i`f0wuLYCZO™-3'_篻artdj.¹Bw e86=noح )oZޜw a߶R~郧F715[cLv'Z3\Ż0ZKHdrC+}̿U3MX>0< +2>h`-T`TZzЊA${sIQ% w%{܀Y@Qg?l0.DްD!z5һ|s0!3w@2zI"N[;R +xZˎ+rH `r$")RLne,֩:7PE*6#͋FOcUH.޸. +Dr[6httd逸~oSv'NIQ_ /ܳe <)&Ue@| +`|U<FlXJxJ¿{ܛ42*5a=G@bQtS9J4u/9X"%Yىݲ]+T1 &ׯ@&:=BA4=4gr7bӦl< ǪϷlx#) *VlN`$ܪL U쳧Q&7hqB :AOdLg!9Y:NvԕƃɜZd&r9ޫ>(Z>:4re;يJF,S5Q!WI Yb>J2z+԰/879K޶@͐&qU_rH*pn~r +/*zc66Ԡ{*R$5 i +j  `^UJy6\K +!e+7hs_j@T^X^y9\,FJ8E_ձ3*RnY aR +9ޯaT+[Mr|Nϲ˕z/tFI#d)BCtv%<0* յ>լuXs@<6w%/2kbB=%AŐ($;Y6J'NŘw+v/G'w][/g,ydEl܃zjh[#щii,lFh +$RGNTxeK>1YLzD :FR9KJtɑ S`J-suj;D]Q]XW>יhZXSv刺vG{h]YwVw:à= jvF:k!P4O@ +gu92(0jK;AtHQ(D>5f {.:M'5c[>xxXZ` pP_x40R3κLY g'LTIJYP׎'_;0y|eq pA ǦM ;pݟ)9}Ͱ[m*NO>xjTz1&Zf+B=xlV+ckxFk LsR{]5ބͳ®+f٪hB~hO#a dOJj'e@2;j9}ᮤa0(4l5ǖ1z?"oXW9W#7GrH0s~'Ę_F+yȺV}R endstream endobj -1628 0 obj +1741 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1627 0 R +/Contents 1740 0 R /Resources 4 0 R -/Annots [ 1629 0 R 1630 0 R 1631 0 R ] +/Annots [ 1742 0 R 1743 0 R 1744 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1629 0 obj +1742 0 obj << /Type /Annot /Subtype /Link @@ -23074,7 +24548,7 @@ endobj >> >> endobj -1630 0 obj +1743 0 obj << /Type /Annot /Subtype /Link @@ -23089,7 +24563,7 @@ endobj >> >> endobj -1631 0 obj +1744 0 obj << /Type /Annot /Subtype /Link @@ -23104,41 +24578,51 @@ endobj >> >> endobj -1632 0 obj +1745 0 obj << /Filter /FlateDecode -/Length 2827 +/Length 2825 >> stream -x[ˎ,5Wi;Z%HX R`fQUMN>36tޮʇ8)"MY}:|3"+/7'&9I{/}8;')ŬA&oO;-&',`-s,8YӵҜ_t/hx|Y2.]cխa{g0D'~ˮ֣ExEDyZT$Q<]#@tsJf"{zFQλ&6+-qUBgOW^W83伏&G`Dn4f Ja2Zb, !2ǴƁk -)N6[r, /ʊhj4 z Ẻ|x׾'$=CWFx'ZWQyOG#%5aӮN(Yqg0 QfOx : 9iASQu΋0Uۮ2Mَ,PX -5r@mo$jI,bE/Bd ,v7{IFB 9ƇhrONY0`Q -Pro%#dAI$"!lGAscLbKsAVvOB6lFV~wsa"#!-0™[B8DŽ,}6.Do .}zk<&O9Dӛ:1UǛ dGZfP#WӠm{λT`jC%)'%S/ fk!+(Pώc_oA]!屝:RB/l91nD=-夜6;#pv] 9* p^/7y~t6Hv\lb28)-F-=T i83 g8| 5r&6#ZP(^Q?pG$;;)`C15lT_K: Z"V.` g:/696G5 -Q:lwv! fh@=bvÖVD)v\jt5õ<cV)Iy6lk#oR}j؝CoM -'G=;a(|;S~lB)5i DS#8c6*4< 59,vCȐ7;+GmB:#v۬<􊴗?xu"*_M;Hx]v䞄RK6<#tiEEyG -gʘ(1) 4 +x[ˎ,5Wi;Z%HX R`fQUMN>36tʇ8)"MY}:|3"+/7r fv>bVRJ wӷ]Pywr'#fB_~<}~8#nnU]Tzc|V.m~:eD 9,f8gLGItz?YoZ>Qԓ,Cg_y;y6p +g<:'mӹcՖ(}rjLj,)g>?:}ﯾ/r!h^V~~b~}<0qSO][-u6]=:_nNzFc_? ,eL{^QiNL/VKkf<,h~am1V_0㽳NdzdqeWѢ|w`"p<-bA(nL +kN +K׹%3=HAhh=(]Kh|KҕUŸ@A~ݳ++rG0"7VJn0`x-1]RcW5u DqzI9c eE@J]xj5X=p]]zzk+uu(#БiWopYt3~ (3遼hU߆ +(:HDmBlGb(ux9 7D5I$qYGN^q@mz@؃ý$b +@JlbC4VDkRQZpnBB($YEOِu1X&x + +v'!C6#f+ְPXdXBT~q-!McD _Y|xU +|Mat5kfex"lF +֒Q',ѸѮX!*#|Z_ +kGM*CJM2Pf-3MÑ+i6=]*yt0P])ޗz5Ԑ R(q gDZ 讐Ni +)[`m􍎀ZarR[ zM@@`.RFg8s/Gdq5O7X& +s_ޝz0Q)?6Ǵ߱pi +{]D6䂔̨T`,ĨJUYz~Te^:S:o Vq,@Fdigk:p2!"I.ChR +G8硢[QwSoRtfTMRz{e(ǜӏ cer2mͺ )r/t yI#3Nk6 ӞC`~.{ S F㔖9c,՟ @o|` 6܉r NN,bm¶CKriD,g4^X#WG:NPSiJ08/ zX6*0b%_R5 ^#uS +𵰁[:`#TkAm,‡J ^Aa!MdHzCtuBӶEG@;BmVX\PzEKXCMX&Aί 5Xn=`@,4qrI sDϸ߁V>i=)(l8c/_{,#'5ޙY݃IkXuχvzoB^<`فvxKnb1HdਝAo.VTKyo1,{YoX*(K%KΟ +VƒPZXbx$^.;rOB)%^[:Pfʴӏ" ۼ#`ɳ^leLLSn3k"1T:Dz-4~B,3وFj|Nob2kּIo;1igd +J?ϭ#iɑCYnIDTݥsfUm;9Q-/e/4cl,X^ +393iֿt^|6ɪFmȹ!avyZsm^ 씻8Tbͯ$i endstream endobj -1633 0 obj +1746 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1632 0 R +/Contents 1745 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1634 0 obj +1747 0 obj << /Filter /FlateDecode -/Length 2190 +/Length 2191 >> stream xZn7WA 098BYd,c$=ͥWkS,<ׂyę3<M~!~c.4 '<KTw׏O|s;!dFM!Y0|tm[FCY\"$k(3/zy|z/Edbz)ޜ9:~xH;gy\ʼxcnڔ8ވe[? ƕ]F9\'Zޔ5ҺzMbQ_y]KnZߟ~zJ4I c\#_lEʦQ fYqO3oX/3OnuZ5]~7cT^dʜԁI2ܖȣd(**Qfu@0=7d ylQ;@Ydlh3$ ucT"ȂCW F~oSS`Or0`D&YP@Z7 @@ -23148,22 +24632,22 @@ x GC ޙ1dA3:g+f%RD`T:hzň]~`6;@a21\H⁳h,U{Jo8V"]+k'mX2@ &udT 3 q!,?4+sΧZY6Q]m$]׋dwin<+bmi2t\@ՂL\)F32p- -y/qTZx~%8)4_y;h {cMKS wbroTj*n"9! Isa$iF…=(XR!E"' MSYQ\i?0  Gt Ic("z5GhI941jJny!iQ'"TϙZ)1!(w"}i9%$`܋ӫ 4\B7!-SRBaRssBd6@- =/V;wrZiF s3K ['7r RAʣ ,oyw`p `;2*<Q*W42c魍}AIB)/xI騹qkg3{X~t1MW;^MyH)aAS|wJPg+IVo0e]:|TOV]x*3$̤ =[nS!;=f/)96$&+Sw-H-Xav?+0 +y/qTZx~%8)4_y;h {cMKS wbroTj*n"9! Isa$iF…=(XR!E"' MSYQ\i?0  Gt Ic("z5GhI941jJny!iQ'"TϙZ)1!(w"}i9%$`܋ӫ 4\B7!-SRBaRssBd6@- =/V;wrZiF s3K ['7r RAʣ ,oyw`p `;2*<Q*W42c魍}AIB)/xI騹qkg3{X~t1MW;^MyH)aAS|wJPg+IVo0e]:|TOV]x*3cnuflm0ѳEv1%#a)cLoCk";{ҁԂfL[ endstream endobj -1635 0 obj +1748 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1634 0 R +/Contents 1747 0 R /Resources 4 0 R -/Annots [ 1636 0 R 1637 0 R 1638 0 R ] +/Annots [ 1749 0 R 1750 0 R 1751 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1636 0 obj +1749 0 obj << /Type /Annot /Subtype /Link @@ -23178,7 +24662,7 @@ endobj >> >> endobj -1637 0 obj +1750 0 obj << /Type /Annot /Subtype /Link @@ -23193,7 +24677,7 @@ endobj >> >> endobj -1638 0 obj +1751 0 obj << /Type /Annot /Subtype /Link @@ -23208,72 +24692,69 @@ endobj >> >> endobj -1639 0 obj +1752 0 obj << /Filter /FlateDecode -/Length 3261 +/Length 3264 >> stream -x\K$ z? $u.lAf_f@XH`v9}"YU -VSzv"Epe"|v1AtdQt * -6`4F8k ure:>$#!RZ nP_/?*!'O~1d)~|Q+#R2c凿?UMo?HiKRӁ?oo~~ l/[ ߎ9.ζKݥ85:v??Lavf:K8 :jBĘ ܙ]  $" =8 QY/?_X|0-YII|*ِv{[W9҂-1chGz=Ì\ߗ|^nCd?3C*G o< ţfցQBy~Y+rc(í:㪚!ǽё-SC@G/lSLjÕ88#r`Y bARoi[[D]3ONK"tpUqN_Fr5 }]r𢶿 Ce*lgp+4ؔ}od6 -PkF$3vr->d!: ^hmj ǝ1ݰ;1ɰDηu˿ff:Ύ1s,f_dLLe$f>B}ə͐Ii:h_ 6$ OOA{nOĥ DNMGAr#tLP?$NU^Ii_{7 N7L''Bpj|18եw#. _{7%/TZa*x%O?*+Bhɫ [YZO&xZ{:‹27b]eьt]L,6_:wN25},B -Cfd6¬G5;:4 l`"Ok~8Tn} T"@jxW̑Ňl_P21dXivkȯ!}wV5F*| +x\K$ z? $u.lAf_f@XH`g8}"YU +VSzv"EpeK'b +TJImhpt|HF)C WN%䡮^~xUB^ N4jc>R8V" 3GdQh/ǫΧ'*.?ҤՁϯ|Gwsۭovg[rš?fY0tf +;3H% +]H!b+0wf1H4u6eDT|`Kkwv%R79i9ɘS8no 6AZ%3Fx ^c_b1W ^o﫿[P,+ci0fhgrYu`yPi_#u֊X*pN4&<*87>cqotdsGdFc)?=19k1pw X ~],H +1AD nӭ-V[G%:8I +ehoԾ.^9 Ce*lgp+4ؔ}od6 +PkF$3vr->d!: ^hmj ǝ1ݰ;1ɰDηu˿ff:Ύ1s,f_dLLe$f>@}ə͐Ii:h_ 6$ OOA{nOĥ DNMGAr#tLP?$NU^Ii_{7 N7L''Bpj|18եw#. _{7%/TZa*x%O?*+Bhɫ [YZO&xZ{:‹27bYeьt]L,6_:wN25},B +Cfd6¬G5?;:׆GhZ60i5qKmo^E +Çs[(} rT,45@ߧ!}wV5F*| yZDHyL$3t̷KWcS/|ۅ㪸yRf-PN:׌سd0PŇxuxuh?nDڍ{» s9:pgW9*TA^ \Eb, ?s {5˂J3e >%w+ 9?82J8*/A0#Tl{JbД./C >༧t{ IdV>-Ӥ2:Ẕ -iqZ`{]E8TEZd K'q|@H~faQe8 ] J {OyȬ }ZMe J| 89̃-)f(^-~΃S%8 Y [{Pb }Z7u{[Ȭ }Z$Je [ ٔJan.4zn[coOxHrA 1vMnGA4($P^$={AHS{N_r{WȠl۷1 f{rUE:3 aiG,nt >2;QB жYAZel}.g|t{y>VVMZvyٱ1Z m{[mՆd 1jDRsdJ 06ZEڢ¨CVՆx ѳ8tظv#nT+h_svt?PI0tOs>3Fj4LrS=q6+!$JO -4dALQ*C~n9I2ia.>JBzuv{VMdV>-Ӧ2:Vj>Oe_u, {]E8T%;Ԓ}BOd&*z:K%k]^>-Sj~{̒&2+CiRm%S䄙m3i>0)U"-)S-ЧEpj|8P%ЧEpTfխBnԭWLP"܁e-K'Epj|8RtyNMoGT$YNl8Rsm3ۤ {]Eu:[LOd&pnYAu2i.-=nI"2i&&pnY1uݗBwbVLP"܁e-K'Epj|8R%tyNMoGS4YNl8RuFv_ -I:]٫Eݯ[yPb}R&7u{[LOt&pnyAuKO46u{hDlmLP"܁e-K'Epj|8RtyNMoGT$YNl8REwqap"܁e-K'Epj|8R%tyNMoGS4YFLo_eG7|#n\QnFaԣ8.#n: Bod?Y#P>WiP,$ 䣛H=;蒄ny2-ҙmPztӗ ->ޕ= 9}~8?أ QurfvnQNdjck4Ԧ!w/,e{֓RF|%|SX唔m,{RW1}ܡ}P6s8&sHZ$orF^&Q>L$'ZpH氼 )yXF䤼aWgTK/<>9pG-"zڦxb:SQis7/VZ/G}$uvF31%0g:MR8$ s锂0%ip-^L< eMO+YRφ2!?*QoO߼UC|pQ0D% w9"@&=S:Iq }Y:-0gD-h-i&^HQF|/Z0 +iqZ`{]E8TEZd K'q|@H~faQe8 ] J {OyȬ }ZMe J| 89̃-)f(^-~΃S%8 Y [{Pb }Z7u{[Ȭ }Z$Je [ ٔJan.4zn[coOxHrA 1vMnGA4($P~ϱ-It{wܵ=Lc9A#?oczHg ltf`TX@%}dpwg v<]$R"|ġ6$/٭6cc1d V'XcՈ6hU_a$lnEeQŇx V2gqqFݨW/ѾFv@)`#3|*fi>^ѧz{3[mVx'CH*/Ai0ATVsP-e8 ]|P!^z6Ȭ }ZMet/-<ĭtն}.?B{߉Y3AAnp;Kv%5*/AMUbt'K }Z7TՒ%;MdV>-Ӥ2P%6K] * 3=ں-fRf}`R۫Eݯ[yPb}R&7u{[LOt&pnyAuKO46u{[Rm3[ {]Eu:[LOd&pnYAu2i.-=nI"2i&&pnYAu Kiں-fRI3AAnpuT*/AMHݲރe"85] [{PݒDfe"8M*MHݲc6h-R/Ĭ {]Eu:[BOd&pnY1uK2i.-=ni"2i&&pnYAu댰2u +Wu_Ty NMoT./CM@ރ$2+CiRmTшK!3ۨ {]Eu:[LOd&pnYAu2i.-=nI"2i&&pnY1ud㺥-nl{]Eu:[BOd&pnY1uK2i.-=ni"2iU޾uzn:57FVݸ$У ۍG7q\GtNtG|¯Ӡ?Y"wIG7בl{v% ࣛe`[3۠P_Cd_X'0JW=h;U_ ))X￯b^3|Cm$ pqL搼0H匼L,}0{HNk0ᐼayS򶱌?(oIyI֯ϖ^. y}r-[EMlu.?({I٣4Bn^\g^egHgb:7K`t 6pR%xI>)#a K Z̙y*GϛZW eB:]T>ߦW߼UC|pQ0D@:(n`Lҕ}r›XLJ&50eYLÜz!EZ endstream endobj -1640 0 obj +1753 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1639 0 R +/Contents 1752 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1641 0 obj +1754 0 obj << /Filter /FlateDecode -/Length 2035 +/Length 2034 >> stream -xZK7 W\`aCClElKS *iDHc5{4zȏfđϏ"`gqrzr"}=(\0cL{/|8:\ب3Z)>|<{H]Pq; -!%3"XoRqLoo΂׸кT(yLý~94U55͂?lc^{f]K:\GV_FC3WKNs3gH4tQn?>9?}z{'΅?駓[MwLק!0mHRb63= 5f ˎ3g۱R]185L!t`Npuvӻ%rc#>;9Nuߗr*~_)]eLjݵ1yt?^oY͟~`Ul H' k, ZuZK$/-ȫuKEe6sE'lSmyA%h#TmD5 -. 1 ]USQM|M(s -$ZSkWٺ>K#)ʺei3S $LZ!nUIfg_W#2.+ \ -Eztg U0 -h)ʔ?)QXBŵ덕 ~&la٢m{XA:}VĮ'_zW/BR`:B;Ki/ 2J$Fo(# -ò-Gҵ@\Pv^5nj,bum2GhJ 4Dy+{%6Ru1<&rZ\dPqN2TwNmuP?cW" -*r JYz%sP.܌H_zxpH}ڋ9toLz]#SVB0F<+TUM,^PΰWsA) -rYw<(%F"[㢬:дm&TTYe's܈+H:i4>׀9m/G7Dyݢ? 7[9xڱ %{OQ:RHc#]R'4_-|ϵz!iT"l7WbN{@ 0j1& -mnJ|-(\h B ZG{Hn xGU4 #{ ?*?3z6zmWbE8JA-mNGd}X8r4T ]Z5(b6 Jf U!^ϩs0(GGi"QEjLXZc9y4beTPƓ -c)2^=;4mQQ3 &Q=OgB(;@"'toF"TU|AY"NF -nk4+S&a-xE9fNΨFʙnfjRγ^3\U#a -wº: =0OY%c - A0{9*Cdr'x'S+;>Lz% +xZK7ϯs Xv1lCa7K!Z%;-_W%#?ׂy3gx#CsHgA3gBpMJqwCbsQ)zFc,?~pVQEM7FcM`RYthU?D5ۜfY풎)5֣Փ3h|x4ujQo?>9?}z{'΅?駓[MOL ק!0mhRb3= 5fMJ~ex|W!GV:0':}]LLl9Nu/U{M8Ϧwږ9E]N㥁~]_Wd'Ic:6dNDboy]|)UOcβܝv^g~IUQ!嫁E((X 0EԀ0`ll@z!4q^u@.m(rQi3S $LZ!oHfsd_W'2/\ +KEzt ʇ*eʟ(,lzg%;3H:[Dl68Cu[v`PM~_i(q + fd>:[|s@ӶFdZPQg) +@-j# } \椶g\'ߐ7wWuV l}iR#W>f [rڀӌv.WAD=yFaPFEg> endobj -1643 0 obj +1756 0 obj << /Type /Annot /Subtype /Link @@ -23288,29 +24769,29 @@ endobj >> >> endobj -1644 0 obj +1757 0 obj << /Filter /FlateDecode -/Length 569 +/Length 570 >> stream -xTn1 SH$KE !3nPKδ傘l6?;vЁW9Ϲ''B_*VK J)g f!*1FO)Fp>M?'ӗH',$xf~Ogu\]E<`ʼn%Ɋ^kUSWߑi4cZiDEfyNZٽU2@3Q.h֩YLIi4=c*d@ !`蚛W:ٙLk54T~׫2 -( {n7vF75-۹*o^67s+<00ΈQ:-uLc{.h7z6ٖ%ZOUeVQ()F KV\5#8oӆgʻ1bIx}KBl<0ʇ y%sg!iu5(hSH.A["=?24Q +xTn1 SH$KE !3nPKδ傘$/vЁPrBsNn1O@[T)BAؕSΘB=Ai4^J Ybp&@gt5w{:k< ZI# +V^ҬU&n6P-u;2fLk8-|>,0i@+7*C ^P= LKr94䜒;j?|px\$ƅi`AEֳY!)#kz~Td@ !`77udkn#m ~CNwwygm&s[W[&6_c`~}syճu9J {[9S'_8o kvO}lmYr Ma[ZfEKJbihzRO_eYEMJֆ;]xg{11؀Y:6@.9lם0^֍kPB.AͭcUD4| endstream endobj -1645 0 obj +1758 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1644 0 R +/Contents 1757 0 R /Resources 4 0 R -/Annots [ 1646 0 R 1647 0 R 1648 0 R ] +/Annots [ 1759 0 R 1760 0 R 1761 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1646 0 obj +1759 0 obj << /Type /Annot /Subtype /Link @@ -23325,7 +24806,7 @@ endobj >> >> endobj -1647 0 obj +1760 0 obj << /Type /Annot /Subtype /Link @@ -23340,7 +24821,7 @@ endobj >> >> endobj -1648 0 obj +1761 0 obj << /Type /Annot /Subtype /Link @@ -23355,10 +24836,10 @@ endobj >> >> endobj -1649 0 obj +1762 0 obj << /Filter /FlateDecode -/Length 2303 +/Length 2299 >> stream xZK$5 3!j {4h!5'̨kRٮX8~.ׂy3g8?;|<)\0%h>,Nx& @@ -23368,22 +24849,23 @@ x FTAO"8ѠX/BQg+ mJTK$xrc AzC⎬a6 ބ4=yk3 gI"YځDZ#U7֍.ս'^0Q#j$F6L$4XfU=/mXQ<.Cp^h Q8a8[K֚7"#O9G^s"[V~mM1 e+ Zb|AEf(װŸ`}0`y6;v2u'i h%Mwy" 5~F?wE3}:5%RWznO5fՐKDgnQ9 Me1@xXߊ&ԂiAyyBÑ8@t1e~@[Ie}ȍtW?)F` zla`]GZ}M6Ub3ОѺ*iCImiODNw3 DW9#-r$F{ H"uж @Id^tCJ%Sd''%o @Vc6/0EV+o6G}C;ھXa$"Z<(FCguыuc0f R²@BІOPA oZTT-oIw>ExZ_Ez^WBqla7Q _Cγ7̿0Q^i2m5}U٩Å&њKQJMp_C,ѳU6kkqm*:y<ԴbJrmnp=q:l,x7#UQti7Fϼ,?*1 8蜁:nvb_*CR((Qw0^ q s$L$-OEX'QE(T*` H`B[ޱ8*`=DZ&;aq鏯*eY]. j(r&0DKD'!a pU>P?NУ`r/8PԟQ,ҝ{SN<ݿ<*6 endstream endobj -1650 0 obj +1763 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1649 0 R +/Contents 1762 0 R /Resources 4 0 R -/Annots [ 1651 0 R 1652 0 R 1653 0 R 1654 0 R 1655 0 R ] +/Annots [ 1764 0 R 1765 0 R 1766 0 R 1767 0 R 1768 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1651 0 obj +1764 0 obj << /Type /Annot /Subtype /Link @@ -23398,7 +24880,7 @@ endobj >> >> endobj -1652 0 obj +1765 0 obj << /Type /Annot /Subtype /Link @@ -23413,7 +24895,7 @@ endobj >> >> endobj -1653 0 obj +1766 0 obj << /Type /Annot /Subtype /Link @@ -23428,7 +24910,7 @@ endobj >> >> endobj -1654 0 obj +1767 0 obj << /Type /Annot /Subtype /Link @@ -23443,7 +24925,7 @@ endobj >> >> endobj -1655 0 obj +1768 0 obj << /Type /Annot /Subtype /Link @@ -23458,37 +24940,45 @@ endobj >> >> endobj -1656 0 obj +1769 0 obj << /Filter /FlateDecode -/Length 2641 +/Length 2642 >> stream -x[ˮWڀeE/,b`7vI x.ڭ(TdykBޙ巋ؼ_Y1(L.o>Z5̈́ Cz6)i֛5Z ˿.|_Tj2` -yzUn/tV'IeV -fSNtO/Uv{ -$&cb9B؜/)i_ ~8d͉ݖ1(Uws-dO򩻳t6{7&k)i#1.퇿|ioHKx\6I_&YLH>iq>ucy}wQҹM#vIMl]"&̽Kfy?KXWM +[V+XY.VKe;ˡl=#cR:y=Quʌ']HOCk^7,.ꓷU%]SsG{իdtJ1ݹ$lsa]?&% -K9Vo.fw`.ͼl +BLt<:" 4-$BiqSn~WwjuĄ&DޕkGWr)?I%e0k) *{ZlP,۶,{Z¹GLh& L](Tc # - i-G@w[}P[ǟ^\cVܪMe5T^1 GE#DRZizZId -g>:fTm6zT<>q[rEgWjL&^Mg/9Ng/uQakFw*Grc CMu4J]@¹. S{;ZrpY,$zPfjPt uP6#ZHR t4n}XQ RgșҩF^ k)46xfG*8refח'ht4qfXϬ2Z<; h{$H<[D8,Ec^u'EvS`RM˺!)i*ZyPjSpÛԁ<@fҦU4$F0 xw&Ȱz`; ýXr:Ҏv\;."~ 4K"|}~;?@ԪՈX@@ǵer:"901ق\K HD+rd5+-xmzp2 ]:Ģp нG!p;P 1d -B=Sy0 l5Sw1ʘe4H'°Rt/5H^JO_ڒaU彏I9$JXv4GJd+gʪ FSHZva4{uά?pgYFϊ !uɑNa¢}T` MeWs=t7>qBM$2GaeUy o]gNN<֒ށ+hd+5,`*1;\יt)0Pַ^v/8cTΐ1z$Z[4ȠY`ƘDv7Z`nxoο@ڔRI_3!hu͎5h,fؙXgܺU(ك40Akʼn -O\5NŐ?Jшح()Ayk<{F 2Xqib sfK?v\L N} iFbݵ9-"=Hv4 3D8ܖTBBR7g4zEr̖6PZuC,;!I:6dJqȾ)oMʜ -H&9QD:fJݐBS](rb8Pb uUkP׉ӾO1B>S0*kk<l3ŇF U[|a=ޏ6#f4V*E;?!G;6'N ɉ^qU pIcarm| - -:U_CZP.I bg@*E.'O)ȸI fdb TPJ-ttN1=K[%1d9u"gL(z2얬/!W}fȂNNVJiGJA,45POP`7 GЬV EkBPE5=aK`G|B_;&GY:vxF^O?k` ȓdDU czc?ܜGjhgwV /XRbE-9;`aA ܉P(lj2wx򥃨oVKn> y0DDEEΧ=)?(ӫbBF_5bڴ N6_.{I"YQXTϔ54>i |&} *[tA)6abUNoӟwJE9C)B3so7l'17_:I? +x[ˮ#+66B ;6,$ݑ7vfդ4V7TUȳH_O0r !zgONbVbR>|ʻs4 Ax2lR +N7kO> ?KfetUnOtV'IeV +fSNtO'/Uv{ +$&cb9B؜/)i_ ~8d͉ݖ1(Uws-dO򩻳t6{7&k)i#1N퇿|ioHKx6I_d1!}b}lF}ss(nzܦ$zq [L6.UUI +%YU|,km +V~RdG=~r([y阔:N^zci2Iғ61{oݖe_eC}ʺktpzulU 6;m Ǥdw)GӊPߥ8L5eMdEVᜉ.Q8WGaƸ%s!Y(-.ͯcVļ?wZմ\JmOR9~Z|{^!@e#T|05(˶o=˱Gžp`kxì*iW8A8Ud'lv6aT!z Qp33kݪ[ ҡj@+FH^r$ӣH\+SDVl}iӨcJf7,Lq5)Wqvt(kj:{& ;?cqYGMZaY YK}R +"[' §*6Ѭ*u @'TOVv,$z*3/XIj5`ԠAmF\AhJ݆?<6Lΐ3SȽRhl*,H.t# +Tpʀ/뵟Dѩęb9>h$"zd':a~(Z5SE4'8)rob]}IHuTPkP{hT4PGB0,652!41xd@3@  +,bfqI;ډs܋b/hx&2w0*~U+Zed bk%ˮluXE"s`3cR1<`s-,oB"ȑE ֬84tģ;rAFZ/@q`C`ĐA\' \;O%ÀL +Lip*cy/H<"ÒK9DBpн }x)=5~kKU>&̡&94U-Pڰ;9rU-U"'%[;+_VV^0Bײ f٫ufe?30eNB[*,ڇ* ++NZf|58o Cx'NȴD_4}~n4J ? X +yCN%Wkudj=wJnFj`%. 7ԭr<%*3dd h=V[4ȠY`scL"ӛ][7 mJ +]L|+Ǥg4}ӺfG^nq3LO3Pn*X ABFk RZq@WS1e0}4"vJylP VFXܦAvsǨu~QvwmNxȷWzO+?bc몐T٣& ^x>9 Vˎfxn|` q>N/: ĻRt +|2i{"Egό3n.9A(:*Y5diߧ!o` +Xuy)qr5\r^ 6h +#cl0˞Gy#f4V*E;?!G;6Ottq]/.D( |13?t> \ ?0πU\N>! &24SzB)њG`;9b0 +D,mǐ  ֯9cZG˷Gfd} zV7804GT4trRyzBS58 vxpdje +[&_TXv'lrjca4sK:*Vvy̞Уa^o3rWHLΊ5VJl4ggx0,aR;eֵ`>yxQM uDA@ܷ{l7@q<Nxa}"lS_Ξ‰ӟ?qY!˯^ |_vFmيxl/MidHVVD43e d1mP|~>q‡-`ܠ?)#@[}Ω  ]1L $]h<^FoٴxQ>OZ=Dď endstream endobj -1657 0 obj +1770 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1656 0 R +/Contents 1769 0 R /Resources 4 0 R -/Annots [ 1658 0 R ] +/Annots [ 1771 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1658 0 obj +1771 0 obj << /Type /Annot /Subtype /Link @@ -23503,30 +24993,33 @@ endobj >> >> endobj -1659 0 obj +1772 0 obj << /Filter /FlateDecode -/Length 1070 +/Length 1068 >> stream -xWˮ#5+Qt@B,:_\jW;:ԩSm7Yz#39a~|&t}>dRAT@.)l> B6M_>~:qS &Yrޠ+1cnvN:-кTc2,s61!Yхcn:̇ǫݻ!,<}'^`X)/ 1J4m(0A*z[ ?|U~YNяpuWSd|!zSpoJrBFW^\gt߃c֫* &Ho< @hTk0YY@oa"!em}9ֆz 5umq愴H(" +xWˮ#5+Qt@B,:_\jW;|;ۏSNd?ɹ5 -}~SH&)N r9 `:>`)9 3n/NfgB K/!â1g/5](:|):KZ|ژKpݽ_r72,ҰDцBpe +?~w?\E+_{5M:y"r~SsI=m\Z[3&@L"-4=c-x Ш`Е@E;B\@36c`I{m\_7'%FiޖI^ +gۺGvmd%JV"2dm +$I"K|¬l >lPB'i;mL|Gb`|U\-DsOz021[q&v)X6E85-fTıqX-*ڭ/3Me7ޢ17HFkSVIu`3)c|XF| bXkƤ!kF8s8( +"y3AuFp0*_ą#xĖ2J~UV^ r}`QD51;sXWz=ڈTɸ-,7u1رm^Nzr.+c>7+T_]!1>MV5'KEJ*UTeqͅT[+iڀ~ EAR%A2h;D5X"VWVcDO`PzU5Z4 +//I~1a o,b Z:?Eo#x0ǐ&8^ ;RP[݊Oc6ؽL\.IJ#  bqt`ck η041\ϗ *35,N%mO!SzkJiA" endstream endobj -1660 0 obj +1773 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1659 0 R +/Contents 1772 0 R /Resources 4 0 R -/Annots [ 1661 0 R 1662 0 R 1663 0 R ] +/Annots [ 1774 0 R 1775 0 R 1776 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1661 0 obj +1774 0 obj << /Type /Annot /Subtype /Link @@ -23541,7 +25034,7 @@ endobj >> >> endobj -1662 0 obj +1775 0 obj << /Type /Annot /Subtype /Link @@ -23556,7 +25049,7 @@ endobj >> >> endobj -1663 0 obj +1776 0 obj << /Type /Annot /Subtype /Link @@ -23571,31 +25064,28 @@ endobj >> >> endobj -1664 0 obj +1777 0 obj << /Filter /FlateDecode -/Length 657 +/Length 659 >> stream -xU͎0 )d8Ni5.+  qv]_iΰ{@rq}AzB}G+bf1<`#^b|Wy(ژ`^%b*,{"i9dF( :gSh0ܜЂy=̚n.I $Jĥ$& λԣ }<5~$3#<#O!LHѼU@b2`Yټ>6,ZqJ -%oHh>h].q_n ".EgX R Qu!XT׷HzUNnZ ijWql;6@R]R9@h -ks`5 -\Z…Tݳd#XsJ%rH 榻͆[N˛67M|XGzׂo4ԑ&:!].AUe3.:uŸtnoK\tscxg ܊\Lx{,|P`t6\-π%@:c# Y*20VQd8V4n*v*y;6ȄB>ڐDNv݇W2ЁIM\#+*Sc==@YOvSH말\C[G1S?ل- +xU͎0 )d8Ni5.+  qv]_iΰ{@Jq}AzB}G+bf1<`#^Ec|8P1$oJ2"#YDӷs1QAt2 5a9{5P ݜM.b ꕈKId 62uGz|ڐDNv݇W2ЁQ2$+$;`Hl)^1,x'Ei)O!;o:_u X endstream endobj -1665 0 obj +1778 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1664 0 R +/Contents 1777 0 R /Resources 4 0 R -/Annots [ 1666 0 R 1667 0 R 1668 0 R ] +/Annots [ 1779 0 R 1780 0 R 1781 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1666 0 obj +1779 0 obj << /Type /Annot /Subtype /Link @@ -23610,7 +25100,7 @@ endobj >> >> endobj -1667 0 obj +1780 0 obj << /Type /Annot /Subtype /Link @@ -23625,7 +25115,7 @@ endobj >> >> endobj -1668 0 obj +1781 0 obj << /Type /Annot /Subtype /Link @@ -23640,32 +25130,29 @@ endobj >> >> endobj -1669 0 obj +1782 0 obj << /Filter /FlateDecode -/Length 508 +/Length 506 >> stream -xSMo1 ϯDCRiHlK8l"Yo2cPo(R$M?u}0Wn -H)Tjr*@cTe5^ы'AZAj$tg#ђܵyJT*WSR)vٜ؄mpAы3w;X Bp 6o+8WUJ^>2|כD mnE÷{lB#j9{Dž1ŐGXEe^&67s[cN3/~ϐ/:!#3ܒmT;n)yLq~K~ -b*མlŵ ؓ"H]6*poˠ@*G -tXy-5%VXo)v4dyG.Odp&KqMz,>VkiD _,'`v5ŭ~)c߹_j84 -/q +xSAo0 Wql'8 .@B։/^޶"4usP@o_9\LS zkV$ L DA3Zx +!Z@#R=(x?\M 'ZS-ϒjΠ֒&.ʅeOJ 6662V.'ɖe\NdѴ4Sx^ 8WgvܰxŹ(dA.)HJ=珟>| TZq]xӅ(NCpkCn1rn)Md\«3$*4 ${@E>"?%oi>tZ[w ދI/84E`!%Q[qEԴpPjuZ>djzK~^p!͞`ɐJZK:w`z> endobj -1671 0 obj +1784 0 obj << /Type /Annot /Subtype /Link @@ -23680,7 +25167,7 @@ endobj >> >> endobj -1672 0 obj +1785 0 obj << /Type /Annot /Subtype /Link @@ -23695,7 +25182,7 @@ endobj >> >> endobj -1673 0 obj +1786 0 obj << /Type /Annot /Subtype /Link @@ -23710,29 +25197,30 @@ endobj >> >> endobj -1674 0 obj +1787 0 obj << /Filter /FlateDecode -/Length 600 +/Length 601 >> stream -xTMo1 ϯ 8Njr(\*- q؝ݩ8P%.e2q;h@7Ƙ$x3' OYmNI1&#-"8R#eOb^i%b)D+q9kZB/-W!FGbOawF™NH`Qh,kUռ7.qJFJxI4^>}˽߯.\6'NmઋZP;uQ[=]yc>O?ñQ|"C̪'pDIC#;7[Z}*VQswa__^Ƀx9 wԭOW}7_`8 nTLzxw6@@XXc,q $z~vckE'?JFצX1E`1eaP|W^jV/3-6 6G.b` \E<! /J+ ]: -(O);mȯ27;OZ +xTM0 W8Na tŁE k*M:~9vЀoPѣ1If1=O`A(t}˽뭾߯!\6'NmjF#xFծ{ex-¼P+Xlkϫplb;_lɯ"\x͖Ǿ +bo(\IuȻgD#^aCr]|$ukSUjpxcct<6낛kTLĺywR7A@Xc,q $z~vckG?JFסX1Öᖵ2@aP|GjV3=-6 6K.b` Ӫۓ[#! J+ ]: +A9JɵܑDn[g*D~UMO endstream endobj -1675 0 obj +1788 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1674 0 R +/Contents 1787 0 R /Resources 4 0 R -/Annots [ 1676 0 R 1677 0 R 1678 0 R ] +/Annots [ 1789 0 R 1790 0 R 1791 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1676 0 obj +1789 0 obj << /Type /Annot /Subtype /Link @@ -23747,7 +25235,7 @@ endobj >> >> endobj -1677 0 obj +1790 0 obj << /Type /Annot /Subtype /Link @@ -23762,7 +25250,7 @@ endobj >> >> endobj -1678 0 obj +1791 0 obj << /Type /Annot /Subtype /Link @@ -23777,10 +25265,10 @@ endobj >> >> endobj -1679 0 obj +1792 0 obj << /Filter /FlateDecode -/Length 1717 +/Length 1713 >> stream xYɎ$5WH: 0pHC-S#f g장[]ߋ)ׂygGtI9悑.A3aq3!TRh[>?vwA1ǹnBJfDޤbI>\ˇNкT5aQ=./g^E+ -*bݘ307݅pB`M%Hs3x~)5kM ٠-W1FdIDToρ}t$ۈ#DF/\Tv(1 @@ -23792,22 +25280,22 @@ k̵]: ؘȇ6r99J<atj`ryjO偕zẋ q+L0",zoΔ:kGݫ Js@Uz>QEN X!7!ql`7F 5:K#{Bʻi%KrwOfdcGczo[@Fe*b_{1P>jCIDBEbyahS_數+zƙ"H >g[1\2*ә> Lz%ܚKD:(GB>]c -SBOuYe|y׶EZW`LXCPY(Ioa!eUaj20 s٭ɐr6ϧr`cѢTą(+) +SBOuYe|y׶EZW`̵dq[hcHY|z a,dg'\vk2,)wvX(2qa6x?N) endstream endobj -1680 0 obj +1793 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1679 0 R +/Contents 1792 0 R /Resources 4 0 R -/Annots [ 1681 0 R 1682 0 R ] +/Annots [ 1794 0 R 1795 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1681 0 obj +1794 0 obj << /Type /Annot /Subtype /Link @@ -23822,7 +25310,7 @@ endobj >> >> endobj -1682 0 obj +1795 0 obj << /Type /Annot /Subtype /Link @@ -23837,34 +25325,38 @@ endobj >> >> endobj -1683 0 obj +1796 0 obj << /Filter /FlateDecode -/Length 1697 +/Length 1698 >> stream -xYK#7Wy!=J/0d9d`nXrhK 0)(-{fϴ(UWT%;朷qj8SY5 '+KJ1 Jq;}k[:; !%1/Y0>}gwƅ֥ۢi-Pm~z **ClMmnoPM2{&|31ca2eCP뛃foϱ3t`us9qw~|7 λO{%p~P @>sabLba= -u0Nͺ`lR[Z8G&-“BI * I>5!bT2< >Du]<}BOk=}vdꏲO6q8~7 -U\H-9əDh\<~IP C XLH v `9d|qnP֫`/lmxI jH:u6A5ꞓ)/ ڍXY|qi\ Fپۺ$JutmP>dCZevN/`Li\ ylc T9s" 6eԆb:)_첛G7/w~97J@]m1x{JhbفFW1h*"`(b_Qn"(Ec癷Itކ[@0Jns뢰lYѮ3AM9:Lj%gFZ$ -3㥴"Ŵ93dzT À>"ٹ㢔Jͧ<> a͔7i&91\W]HcQtJOM%`?k_o!;d!c3%9Zɤ[ TMd#<~Ѵni/sDW'c鸖90wC_8\.x&s -mO+%X{`>b?6W -?h,4wބyЃ3sp4!:Ei$/1z6h\wdzri1k:KGB$_D;j˛<~rv @*y Y[ݙןo8ZG>3%L&a9uҢ=*Fܧbo_SRC}=W -蹖) + xa7FC+rVܖܴIj '%/B'/!qBdm>ZF6/)9(2D-7*&4͍V8&pvy nKCJBӡ~5ai0GH^+\q% 6x -cD6~MO/Ph,a:C(ko(wmD@鹹UR 0!P*Q_sD:z!reKz$/ 0z CC6[zzwE~>9e@]ہxs놣ᕞp !Nz (3lE sۜɭFloREޟR{ڨ)5}z?4 ?ǑG߽IsVz4LWl5K3QfcL;+ck^izcdZ"83e1(3'd2ﱟ (vAA!]VA"%}1!""V' +xYKo7W9@i>$ hP."au ǐZJ^1oqw9-sނӎ3k8?z#-L^3p~1!Tب3Z)nwv|[g'!dFxp&S|ӗvg\h]~,j*1BN0QQg B?A5c`a2eCP뛃fW_7h xSW0z]pǜtNqw~|7 λO{Υ8|P @j| +Ãgc{}"8yu(R[Z8v2 -“BIk2VVhIuZ3.F%ü>UsNuOiώLQ&:ǯ$*VrKD~NDr&Q&0W9&_Rhr&z$C0 28(U@6^/%NMP&W{6%ݸ1++uV1.Q(t[D.} +ڧAAqrV븼)P1![m  xt/ciL1W*t\Fm/"u.yH|x˹wA4UަOgGF;)-jt"R +/f+RRd:vy˛pHmuQ=[^. +˖%N Q:L#N~z&QRy*$Q(ҊJ̘ +"S8戄f王R^(5|4kLy` z̉ד3x`QtLM%`?k_o!;d!c3%9ZɤҶ"驚:GTy$i݊h_b?6W +z0XX<B@@V C Q"1@lyhv[kZ]uNuhe1PR'SCOϭ_ZO;ȕ-R*mNN$%  .ɋ| &Jus ʻ]P@FAa#(\Td=X;&d\DH[ endstream endobj -1684 0 obj +1797 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1683 0 R +/Contents 1796 0 R /Resources 4 0 R -/Annots [ 1685 0 R 1686 0 R 1687 0 R ] +/Annots [ 1798 0 R 1799 0 R 1800 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1685 0 obj +1798 0 obj << /Type /Annot /Subtype /Link @@ -23879,7 +25371,7 @@ endobj >> >> endobj -1686 0 obj +1799 0 obj << /Type /Annot /Subtype /Link @@ -23894,7 +25386,7 @@ endobj >> >> endobj -1687 0 obj +1800 0 obj << /Type /Annot /Subtype /Link @@ -23909,10 +25401,10 @@ endobj >> >> endobj -1688 0 obj +1801 0 obj << /Filter /FlateDecode -/Length 3060 +/Length 3057 >> stream x[ˎWڀeR| ^Y ȢMn;XazǩSEI^DZY}y|~E,Έ/h?__[\0_ZVJo?򟗭 jqB8.Rbdl-e헗onr_'ڧ?.TzczQR.bbˢ^nF?~Y^-Z{ź-%U68zb%}h6U.tY,QL?m]weY]Růk}囿o"ȟ_*ĺMtB{!Ll7QG+u ~@m7^ӏ][v~{J]yP}9^?viN+?ͱunvIy4:d]j-wۑi^[mm_O -67&EY1ZB2QXC1n6*$RA]0I@ dך^ 1^L{vibsAZ]2UO^p}4y ʝZmQ5o\1Lj@qd(qX6L8Ջ\`3UΊ&\B\`ʵ֔Zn_K;"tU >[Ked,;sIIZm$V Y6S鮫];Pm2;l{}"l4U83!@@LHnW0))MzV8_?4hHi>${g`^"( @@ -23920,47 +25412,47 @@ x _š#B"B~5(46rh<E/ S`?"%1Fݍˢ*EUn5Bv)̵qZ l5MFy ) wH =H{dӼ#7Rg< a0G)fYy_"u{b,+Eezdb{$gy!znF˔tD5~b +&qi)U6d- R YxȽ#&QRP`Pŋ]--ym%hY1hD)kxrT d,SCwVJQ%ø]4b`Q|(#%Ɓ~Qp (/nO3ƃJ5QI,%֝@6iɆz.½% y[#P:me-MIˈRBYA0$4fq=AUc\y.*bYX1$>qK.])zcD:}=Ҕ.#".zK^I.vKP\Ey'bLaIll1I>5P\?bJP``ai|;'*F%&a!'ǮM\˻rtR5yi*B c$N\+Ftmc%CU?Si  `7-,Ac=ev|U.F4u2iL?9`*U)>r T4*{ì%7yc̫ ;FGQO  ؽ1O~[gEz̲g<"o`0#ru@W,1`O4_}zp<gpk(BiDMh:/j9,k7}* -XCg2*GTcBTrfi5ẈB8`0"7 `}yNq鐷;([,_'Nq~MM%h2v-0!'f#C`Н#h,J!NkXRUlO<`c}CkO֎TyPB 4}P 9]`0{D*rIe '5mBa}ClTL4d F`kSb3QҔG,-!`u5#X a|`Óy(/Pɦ`uV8 &TiG#pc%7OCyy*=c7U`QW=1j'XR*=0`yQO}\gGSl[OÊgo7:k`pvH{:=0`yQO}\gGSl[OÊgo7:k`pvH{:> endobj -1690 0 obj +1803 0 obj << /Filter /FlateDecode -/Length 1782 +/Length 1784 >> stream -xZK7ϯ!^, ;6!0=%IRW[^]=֣UIj Vwv~:}>IALM'ㅏ6UJImҠ11O_>ޝ>>OJi-@E PS򢄜>s%F 'IUPz1dRE20B߽Hb= +˜ A8_K$]djbK~]\HfJ?筋X] oo~y@:SLH 5=}}1'I.`1=2i[zesfXeiXGsd.t*wZUeF1Yߪ,u=ry[vֹj7?׻MҺŻّ!|wq Աamt@3s:@ Qub\ Lō -58Q:_أ|)jSĩ%n&'YW,ىt3*}Mpј+ J1:JK(ZyO@6m) \Hӯ#z./UK6OBc%Dy@]$dv<-*2P5lMuj=cB\RkMq4: uj1 -X" g.:4dO)RS[9,P=~Ƞ e)|)|ie͔DzV2enU -ScgBr V8<> - 7,;V0tNU| CfY#+]'wl/H][@swVz:pO 5]*4BZI eHV6a*բtqVѰvrMuTPv/Hhׂ_6AnmLg8)T2Ŕaϰt26 0i-Ū5-Xnpiv}_46QA=zfDrh>H^hI"I]@g^M 2'ABkvaGQUa؆ ŬFUHi҉!g}542k-cPp*`ն 3C{D{yư*ͪ`צ:B2Vx%z)zT '(;¸FE=-[߶Ԝٕ P.R% S_UW hrs!AUj)\((Ty~uCҫ)&Q?GtU7GѓJ@z ^3&v{i>Q 2դ^&pwg.!9]g$HVRu80"cH(=a>;R g5Io3儠K8vx0RhյS̼ ۷喃 ޵l i(zC << MޥKuGރ;ˁ9[Ȋ-n]KG{noTQqׇz,thԕ;+a7{;<_iWsTwep>;`60Aqx:eF'8T=,L\,M0!xFc`'ΞH=;'=JR }^9pRGo&H=05~j+]+ zOMe=*J:c~&1$7H}uL%?)#0UIXEĐ<" Si&`@|g8sM+gE, -6_P +xZKo7W9@r0@sHzhIQ\I?P;]4Y2o\I*F f~:}>I@Ɵv{JYA|8;}J]I鼛g*XiˋrVEIP9#O'H0d/6laF{${f's{a]V,j ~t'Ŗ)"[윇f?ݧY.VW ?{ot7zzRI9Qt| 5~T.2SOCe.4` hF'D4FBA=@ܑv83`LMLR˞-'Y؈Cazw*Q];Jkذ}[QdeOCo(um.]z Э;X]GVmuZ:s~/ZZt>cC{|xg<;hte|d_ AݑkLvMhdFD +sꬖePP }}X,M!=>Jbaӣ }9prNO;GOk]j*Y+ zOHMe=*Jv&MunΧfc.J +~\SFaEd$wC@@X|$`O53= +fs=!v^;;W/bUd endstream endobj -1691 0 obj +1804 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1690 0 R +/Contents 1803 0 R /Resources 4 0 R -/Annots [ 1692 0 R ] +/Annots [ 1805 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1692 0 obj +1805 0 obj << /Type /Annot /Subtype /Link @@ -23975,28 +25467,30 @@ endobj >> >> endobj -1693 0 obj +1806 0 obj << /Filter /FlateDecode -/Length 480 +/Length 479 >> stream -xSM0 W;vpX4$a3]qp>a9!u~ť_ ̊fqBPAojҶ}]6V֍w2bFO/,eD!n!䣮=;\~mIesWs4{]toM*Ν c{[2 $ESj@jmՊ!#$6} ft۽#V1HkBȵ3܀9 Rq@gexV`wt88CC;QyeE_ +xSMo1 ϯ;vjr(\*- qT(jtg)'D2x~C!ӄޚG۾4%-5fd%(aLOq$PD5 D1P&ՃB=_zsz䏤 R1֗`SFfs x|]Nec-p¦lX su6o+JLA"g/*XE/k7[ߞCD ?bC4oهև~{wo^|p%uuŜ{٫2|#7E֫D;wo,0MAثQVU+r6^Hx +`;ur&4l9_G&)kb^> .k239G0_ +a~)TG半qb endstream endobj -1694 0 obj +1807 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1693 0 R +/Contents 1806 0 R /Resources 4 0 R -/Annots [ 1695 0 R 1696 0 R 1697 0 R ] +/Annots [ 1808 0 R 1809 0 R 1810 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1695 0 obj +1808 0 obj << /Type /Annot /Subtype /Link @@ -24011,7 +25505,7 @@ endobj >> >> endobj -1696 0 obj +1809 0 obj << /Type /Annot /Subtype /Link @@ -24026,7 +25520,7 @@ endobj >> >> endobj -1697 0 obj +1810 0 obj << /Type /Annot /Subtype /Link @@ -24041,32 +25535,30 @@ endobj >> >> endobj -1698 0 obj +1811 0 obj << /Filter /FlateDecode -/Length 1319 +/Length 1317 >> stream -xXߋ6~߿ρ*IXHi-I(ynCiICGcɒ}+_o)ŷ>0h'8P!Dn"__E4 Br -oi>EHk -4F>^Åͮ)D0;T>2vrdJ464_0:VHl$0Cʒ¨Lzܬ~!6*6hbmn[#}O|C%y `]IDIfucBx? ˽>hpp?MH2NƎHaoI9?3N)O  -mth8ÛZ88]=~No B^s,'Ѽ,BwaJge?rh{7&6^!e% b{&f6&| +pWώi#}>3&xKm2OB"U0cO$mL1X`BbIWX,c)ʍ 9 y1L32_YP, uPEN r&xn6s}]4]6+>Ƶ$å.x!6& ,Vll7 (!MOOp6b2x3Te$豂IrBXgB^{]lvm *c#׶sšqs2 ӕ`QɢfKf1%#[Hj 2'֬\y.;E8YI6eŝ6r˶e^Qa[[8hJ6bE!(9ՇDsśmGwwDlQ.c[Qqj8 oƣC盗7>Qߜ ٔ|k$wB}3aӔ u>#eceuh^Q'rS[Rr,+斳v3]Qqrl$lƖ" sNrZ|5ɢKr*zW -Р[I?*kKѵC*`gGH%;eoq;z~"gG}h m77p\MDR@O ?Ӫ|܈WHԵzI^ -RZMƣ}a )~#yeQY, RU]4#U k!xU[ W^ŠTUlIZ 1kJ?r!yL9̟I^s͙#\ґ(_eȻzfb +xXߋ6~߿ρ*IXHi-I(ynCiICGcɒ}+_o)w^0h'8P!Dn"K"Ctʅ!AhcZZM÷_4U5QL#`Ho/GPzŽfWK"*;|9`2%`?WTWV/fCQ+kJ!eIaO`Zy=sYnVxtjbMMsc46VMQ󭑾c !hXoBH'd~!*Y'd& ,vN !+IRF üWoM/X,N(:("'9Ft<7 ff..NZRHm]e6x&ۧ'8t1 Wg* ̲xX$UXd!3u!ٽ.66sBN\XԱk۹|89^]jfS]J[(ydJ[% IaS] ɭTn$dokkVrw<"3EV4"M'>eDCzq'mq_;ZjQ5JĀF_?}Q\C+[!"8>#vz;zVcTNhu;.PGu7w6e0>ߚ. P218-uX4eCݯHXYWTr7IԖ~)\=KlrLWT[6 ܅\mMmRDJ޸vr5-h 4fҏy9ÚRt(`g +Q5Rdgo[qGd|ّl"h=}FB >:m!Ĵ*7>R/u=|孔V!c{Ӿh_xCʰjuxrTV>˾(TU9wUڪ??rȸ4bV¤nzJ/bh +**T-̔49h?r!yL9̟I^al.H/O@2ݿ}ff endstream endobj -1699 0 obj +1812 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1698 0 R +/Contents 1811 0 R /Resources 4 0 R -/Annots [ 1700 0 R 1701 0 R ] +/Annots [ 1813 0 R 1814 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1700 0 obj +1813 0 obj << /Type /Annot /Subtype /Link @@ -24081,7 +25573,7 @@ endobj >> >> endobj -1701 0 obj +1814 0 obj << /Type /Annot /Subtype /Link @@ -24096,10 +25588,10 @@ endobj >> >> endobj -1702 0 obj +1815 0 obj << /Filter /FlateDecode -/Length 2558 +/Length 2555 >> stream x[K#Wl mB;6$ʗv?bd==@+&]_US_x)>9Q/'6Y¿tE%M^šWr;M3!àVR2{ӿO~dΞ9b~ONѼgi9tIǥ10p @@ -24112,47 +25604,46 @@ Q "rBT"ӱF8C_ai X hx4c NB~T=+mQ(},T[pw0JZ /o+@ Z0#Ij^T2EuH3FWu7z@lj?Pr5)ܓ.Z[A  lbZJA֦+\aԳZ-Jעk)|*2lSJz^QU-X:(lUx#yH6I j(nľPжE777F$}7)憪=hnzv[3>eY D89S64Y&F0+L@؃2}^> /Vٝ9Di]5Z<nzQm-tBɀrʔAHr- $X7+Qv<x=".q 5<̋շqo}})ݩ3ޭ;[1,!,O7{|-CO־w;CԔ&>>NlO队 7f2ݨ34,*ߖmrÎ&@#J* , &9;);uo ?gnƚAJA[Un v}RtCJ(Ai(VOe)~:YaF;gPjz"+X :q1UjSn}@%C,x<>f\aShZN(Oz':%==,^wȞdJ+Lpd90:Ը7{I̢_gI3߆O8#YIYhF'"l̟^(IzLeM͓HcڼcgάbTp@Ng 3 -8ֺI4 x=]]$0h@G%-~v AksLE|_[ +ҝU}S)8{~."+[ׄ.ْ$ URiOp| k0{ r |΄]oMYi#=jזޝ-ZO>wȞdJ+Lpd90:Ը7{I̢_gI3߆O8#YIYhF'"l̟^(IzLeM͓HcڼcgάbTp@Ng 3&41'_i'#sQ0sn$Hbm0Is ^ endstream endobj -1703 0 obj +1816 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1702 0 R +/Contents 1815 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1704 0 obj +1817 0 obj << /Filter /FlateDecode -/Length 1009 +/Length 1008 >> stream xWK6WÇ"!e-P iH̐C"|0jz~T)x;./Vid"?2Br1BLc44F9ky` ZFD F~~&Pz߰>ņL /TGSX:1Z;^> O?ߏ]_':mW]/4b;Wvae,EF%e^-ri{Wu*Ox.ۥ;c6Pd|j{>z:C3C8 ora9=^" ,Tx3K8~ȣ j:`Ǧu`oK!4䗉7<eB$fī@qxH+"|ћj :7VXh|ڶgL16=éљU}=2,x=(t$ ZtQ?DQF<ȂZ]}fe97e_w%r8?+dۻ"IIL6QrKjl;gK_ ס7)WԆ[ 33**?;i\}rʛH5Mzc5瓴IZе$]CZߔ2N + 5˲ͭI^EGbGPiK^LJ67yhURv*(bMDv~[vPxӹI$j{tS gyr7DM6taI H3K>"IIL6QrKjl;gK_ ס7)WԆ[ 332N27)?6j0j'i'.kI)e7b endstream endobj -1705 0 obj +1818 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1704 0 R +/Contents 1817 0 R /Resources 4 0 R -/Annots [ 1706 0 R 1707 0 R 1708 0 R ] +/Annots [ 1819 0 R 1820 0 R 1821 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1706 0 obj +1819 0 obj << /Type /Annot /Subtype /Link @@ -24167,7 +25658,7 @@ endobj >> >> endobj -1707 0 obj +1820 0 obj << /Type /Annot /Subtype /Link @@ -24182,7 +25673,7 @@ endobj >> >> endobj -1708 0 obj +1821 0 obj << /Type /Annot /Subtype /Link @@ -24197,31 +25688,31 @@ endobj >> >> endobj -1709 0 obj +1822 0 obj << /Filter /FlateDecode -/Length 627 +/Length 628 >> stream x͎0 }Y۱cGBs@a 3]qK8 iK=+1Fc _M-_yF-BCfh%(ZDJ>RN 4ϡגi@$%T ^#F׿ NM;FYڌ&Xr!)GLS>KbGB\~'Ĵ o5d` z͛x*9@*h)l§ X2|}탴 X# h<><>?m}?ݨʀܱ%3[IINp -۞(9%|Nz,<.OTuiJE!9MtT sv *LdT̳#T*g`M"TRt@QLh0@cϧRD2*Dpuh7 xq}mgqh~@#{=M{vuN q%Ja\> endobj -1711 0 obj +1824 0 obj << /Type /Annot /Subtype /Link @@ -24236,7 +25727,7 @@ endobj >> >> endobj -1712 0 obj +1825 0 obj << /Type /Annot /Subtype /Link @@ -24251,7 +25742,7 @@ endobj >> >> endobj -1713 0 obj +1826 0 obj << /Type /Annot /Subtype /Link @@ -24266,7 +25757,7 @@ endobj >> >> endobj -1714 0 obj +1827 0 obj << /Type /Annot /Subtype /Link @@ -24281,7 +25772,7 @@ endobj >> >> endobj -1715 0 obj +1828 0 obj << /Type /Annot /Subtype /Link @@ -24296,7 +25787,7 @@ endobj >> >> endobj -1716 0 obj +1829 0 obj << /Type /Annot /Subtype /Link @@ -24311,7 +25802,7 @@ endobj >> >> endobj -1717 0 obj +1830 0 obj << /Type /Annot /Subtype /Link @@ -24326,7 +25817,7 @@ endobj >> >> endobj -1718 0 obj +1831 0 obj << /Type /Annot /Subtype /Link @@ -24341,7 +25832,7 @@ endobj >> >> endobj -1719 0 obj +1832 0 obj << /Type /Annot /Subtype /Link @@ -24356,32 +25847,31 @@ endobj >> >> endobj -1720 0 obj +1833 0 obj << /Filter /FlateDecode -/Length 726 +/Length 725 >> stream -xUn1Sp=?[r@pdCA-/1M b3oo%RV!=dRPf*. e<@hBDτ/ϡ׌^CФ Fϐ%qWb>PmMŒޮ ))$".>I-`,÷KXfٰž(-Ilw <[_p=D)aߌ߯--.a"Jlh-e5BR\Y9Z,p>ҡ_~*(#g yAL{rZ39Bc~fƙ!dHV_5I2į2Ę}sgbVO!'r,1>b >acL[ڏdpClkq`p>Czɹ }P")g1TX5Vef13FOp6cR"3NaFUewfFב󴶎d3=ױ7i>N087I -Mw]Jg Xe/..umt=$7 - Ww$KlDv)q\nX޹% -MCܻsf}Je+'c&(Z.l[*vKyLXd/&I `ՇP2{-]vY/Lˬvd]wR -l~$ +xU͎1 SOi @B:3Âvy 'tINٟqހEc +Bfg;}ɠ0ؐ1,18*DL.e9! ΅ !Il&b֙AUWU Y]Bnh )E".>Jաϱl÷Khd^i}E7ԖiA;|7۫Ś U41V5d9k*%F+ҋDTV`Y88_P/~i?1CQkAɹ G=6HPfe$e&S[q+"(:εv+ Q>kkOk\^ lU]8U6~tm4F1cΟ).ymtr[vz+:׮$IH/%}&i !{7Uĭ +a0Ъ/ihDоr?F%t ^VbXYO8:0S ($׷(`U{qwX,+S.ת1C}T' endstream endobj -1721 0 obj +1834 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1720 0 R +/Contents 1833 0 R /Resources 4 0 R -/Annots [ 1722 0 R 1723 0 R 1724 0 R 1725 0 R 1726 0 R 1727 0 R ] +/Annots [ 1835 0 R 1836 0 R 1837 0 R 1838 0 R 1839 0 R 1840 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1722 0 obj +1835 0 obj << /Type /Annot /Subtype /Link @@ -24396,7 +25886,7 @@ endobj >> >> endobj -1723 0 obj +1836 0 obj << /Type /Annot /Subtype /Link @@ -24411,7 +25901,7 @@ endobj >> >> endobj -1724 0 obj +1837 0 obj << /Type /Annot /Subtype /Link @@ -24426,7 +25916,7 @@ endobj >> >> endobj -1725 0 obj +1838 0 obj << /Type /Annot /Subtype /Link @@ -24441,7 +25931,7 @@ endobj >> >> endobj -1726 0 obj +1839 0 obj << /Type /Annot /Subtype /Link @@ -24456,7 +25946,7 @@ endobj >> >> endobj -1727 0 obj +1840 0 obj << /Type /Annot /Subtype /Link @@ -24471,32 +25961,32 @@ endobj >> >> endobj -1728 0 obj +1841 0 obj << /Filter /FlateDecode -/Length 1460 +/Length 1458 >> stream xXMo7 ﯘs($0h.aRHRqDֱ͎];#i(|&M@c M÷V5}ʊLoTHhS.Fi 6Uapt琟ɪua0F!$1)=A뿇3mlվ4f6) hfQE1w7p'EzEjg@ʜQP 3AP!\bZy`2Doo󣋳<*:hbtn} +dYkij~Fs:gi56*'.x.,/f88Wc,cF&q$^.nz'Қٙ,<+V3c(4i-4HPJh|W=yjItV#B/G^'SX Y_J9>]=7kq7cɪt[p1uCzz8g6&.&,ΌDT:(`D`R Jk 4n> endobj -1730 0 obj +1843 0 obj << /Type /Annot /Subtype /Link @@ -24511,29 +26001,29 @@ endobj >> >> endobj -1731 0 obj +1844 0 obj << /Filter /FlateDecode -/Length 488 +/Length 487 >> stream -xSMo1 ϯe[P¥"mK$3,H4ı^ J,dZs8}&&-=.}ӔKNߧH4HEZiZ~BN3T^ZIUÌVa_J-o&9+ 3Az:UY}>ɫ^蠇X ~OV8ynN3 {dOADkLKߞb RbqFwǍEO2LelX5rb\V[9tŹqɑd@~wT"/&USk )/rJb С -YFiAyc1c%'X/#T=7(1zY L5M7` c^&^fuyV`?BJMs@IwrB~;A +xSMo1 ϯe[P¥"iKdfY (c8cY̵0~&-=.~ӐK߇H4HEZiZ~NBͩ^ZIUÌVa_J-o.;+ 3A:Uut)yU,V'`ss\@qNS !>{m66яt`B57!BJ2qc:#c`*ۜ\Et.8tm}^r%!9vIֻd*K)Rv5”Qj9VP,`#i ucsǾ-Jȶ'\/#T=7(1zY L5Mw`eąt 9./ +FhQQiHq5AuѿUY>7/*ePu endstream endobj -1732 0 obj +1845 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1731 0 R +/Contents 1844 0 R /Resources 4 0 R -/Annots [ 1733 0 R 1734 0 R ] +/Annots [ 1846 0 R 1847 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1733 0 obj +1846 0 obj << /Type /Annot /Subtype /Link @@ -24548,7 +26038,7 @@ endobj >> >> endobj -1734 0 obj +1847 0 obj << /Type /Annot /Subtype /Link @@ -24563,29 +26053,34 @@ endobj >> >> endobj -1735 0 obj +1848 0 obj << /Filter /FlateDecode -/Length 703 +/Length 700 >> stream -xUnA WPkK怀CiHCL&PKصtWO"@nL-ޞ˅}-sazRyfRo{]S+Z|pa[8`溶+b{CŲ׎kcWyY'̊\eVI$F_ +xUKo1s,E9 PD + q$Mš/1ڛFʉ7x +}C5Q8Exl1yJN;""Fc;k!sB4F{LH~Q=QqC&X~$xmKD9珟>|U(@ٟos #-ڇMd5TsY;չd[U'SYhfSS#\B/ެc\ X\ؖ9|[!PcloǞC Ƙz]o2kY+ +WbĈ8u2.$6"J\3-`EAE})Q}38U9G,Dr| + .j"b>(Yh'fn%zzA#7 ($ΆHq-6aS&؋z4Ć zn]m M\ +RX5puEB0_N#.wЉ\on'1<]wP- Fy`*<1&*i'%ÃC֦mM/s7֛D}DC,{ +"㚑{('Fo!Vt'.j02L;0$M$-1@jV2p۱sԼڸqӫLz4> endstream endobj -1736 0 obj +1849 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1735 0 R +/Contents 1848 0 R /Resources 4 0 R -/Annots [ 1737 0 R 1738 0 R 1739 0 R 1740 0 R ] +/Annots [ 1850 0 R 1851 0 R 1852 0 R 1853 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1737 0 obj +1850 0 obj << /Type /Annot /Subtype /Link @@ -24600,7 +26095,7 @@ endobj >> >> endobj -1738 0 obj +1851 0 obj << /Type /Annot /Subtype /Link @@ -24615,7 +26110,7 @@ endobj >> >> endobj -1739 0 obj +1852 0 obj << /Type /Annot /Subtype /Link @@ -24630,7 +26125,7 @@ endobj >> >> endobj -1740 0 obj +1853 0 obj << /Type /Annot /Subtype /Link @@ -24645,29 +26140,30 @@ endobj >> >> endobj -1741 0 obj +1854 0 obj << /Filter /FlateDecode -/Length 466 +/Length 470 >> stream -xSM1 ϯ k;KU8,\V0@ ') 4M;{.0RLux jG3zFL*8r)X,(29%t?| Z -E"QhRrPp3acxI(ڒb1ڞl {^7=!ϝo<2:EfHkj\{jd :Wgrܰ$ 8b AR=| XR} N~Ha=p5 MEz#_kϹKOC{3,bb~v8PE6#!:Nt$貶CGHpސԑfn,J?Wvsiu{dDk[>޿,WܰÇ"0F;fP,GIV_VXv`2Odjh5Yuӟ݇grb7 +xSnT1 ߯y؎4E, +J@B,ShQK$;"L2csaGo_؛i 0ŏfzz-9|2c+N<3}N18ZW"5u!E,Wvu>W#{r?3T/3'$3/ڒf+>R\`Ff Axp>-ӨwDh!2Q\9M.ehX ypӊ"2Œ($2|m͝nv! J%8EB!7 + sֈϹ)Y =˻ScO>ܯzJ >/NaOcE O+r,|H3lIWϕ]no6v`̢hb*G&Ƶ`d26(%{_Vh0^PjHa5Qu?'M> endstream endobj -1742 0 obj +1855 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1741 0 R +/Contents 1854 0 R /Resources 4 0 R -/Annots [ 1743 0 R 1744 0 R 1745 0 R ] +/Annots [ 1856 0 R 1857 0 R 1858 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1743 0 obj +1856 0 obj << /Type /Annot /Subtype /Link @@ -24682,7 +26178,7 @@ endobj >> >> endobj -1744 0 obj +1857 0 obj << /Type /Annot /Subtype /Link @@ -24697,7 +26193,7 @@ endobj >> >> endobj -1745 0 obj +1858 0 obj << /Type /Annot /Subtype /Link @@ -24712,32 +26208,32 @@ endobj >> >> endobj -1746 0 obj +1859 0 obj << /Filter /FlateDecode -/Length 1019 +/Length 1018 >> stream -xWK7JR@B⃝C r v?nuh,q{ԪRWo-*wE:Sӗ t Oؼ{~L6.FIMk59k!χdu1(Dc4a2iz}B ӿӍUU70RDh!`R'ʢ -nͶ]7RfwIPh>FC1mCq~9vjR_{Wc;t Zb {K%1?O6{sc|l`?ـ gM^GIw?VaFk^^s8 9oa" -7'a׺3?oQ]S%Y* +-S4!{@;9l -\Vd;A`Ԁ*LV5&åf_廎~2OtASt]dusr%1v+al6w|mɏGd%O)gs87kt~;ˑ{<"Q>آ۬I=Y&[u>ɲX9+r\I 曭q@C [T8. CcԜ[0a'RZ}+ĝ᜾2eFt_~{7 -:[+xpYL]b4ˈn4%p;Pi 38=wdQ-}R^r& o6}nowkn獴҂[ $JfR\-Fq|+貫;kUkefk{\*YjXKK4w4ڼ.BD~Э3蝥##&ngZK:\AWBd(EObCJږ#6s[͗Qq,j.l_慖p5eR7[c37L3U@H{bc+պ|M,Ci(#J +xWK7Y%J, v1LCaz&'ңս]dQJU_ /z1@^?O_&K! m 1BL*@:tNw:}Ƅ!Q*~^@Ɗ)DD k@R'̢ +nͶ[7RfwPPhP AP¨e3ZWUN$2B {K%cm&{ `i^|vf67?%05! +~Ög~86,U.h\MWG뻟|| /u|ۉҜ)ޠ"FIiٵ̏[XX,1T =;. e`/t 3>5J/4E)w7od:nE|O.Sg4]>=fyeݜ\d o B檳J@X>4-{r~q𐃗]RҜ)wN5y훮o`g9~Gd=g[t5'˞d+'YvK251zyEo4I>}|=h:k@jDždh3R +_o3W#m]K+w| i3Rp@hbB'{% \FwHS o`4r`L# hGGl"!꡴1O!%g°fMrύMn> endobj -1748 0 obj +1861 0 obj << /Type /Annot /Subtype /Link @@ -24752,7 +26248,7 @@ endobj >> >> endobj -1749 0 obj +1862 0 obj << /Type /Annot /Subtype /Link @@ -24767,30 +26263,29 @@ endobj >> >> endobj -1750 0 obj +1863 0 obj << /Filter /FlateDecode -/Length 1260 +/Length 1262 >> stream -xXɎ6+p)n`A  AR[FN`TktC-"kyXUj5KQ@w0oOJM~OG#A8{RR4FX0F)/~VJkaUtjNE 9gQQQEbC#I=OqVbAqz姟>\yާ7Yck ڢ<2,2'2?ѺZUyfa,:HvN)6^e6UWv#&A3[4=[]52 ÉL(n;s4Z/,KJ ĸ.Gٳч걯 1/7B]6p.n+OL1d-;&9qGDrZmunꇪ{92c$0B4B4Π`X#![s›9mGـFgGF19Bm: &o aQʸ5!Z"!85}9p~g/H2Hv[se$$5R*?^_O9 -\0^^OcCs6TqJ/zѡĪcE\[?wuV'{ QMU;Z˞t -['k-.̿& q)f,42ˆ r(}C KCpܛީP 6Y\ؖBg{lKHw<82jFEV[STj'֝ki2A׫;NБ3LG^3eBek:ƫ>u>Z.Z(@KG]Ixycќn/*sKA<]KJx;ȭN:Ko)K/T𫗕jEZ]}_RF=mTѡϘT 0C͓uZ)ZSg%0'_M HADu .}dƬ9]ϵo0E+\ju}1 ҝ sc3E0 O?rx/' +xXK6 ϯC`(zx⠇HRZ"ZŘixtЧݔtALSB1꘦AkCk!L_~uC*&QN']0kӇ.+)[m(s@E#)[-U41"N/󏿽tg+Gs-#ڑw>w:,-2ת:?񺬟Zazdu[g۔l//2tj6;]`ۥhL'{^.ÆL&VU8ZZZϦBsF #P\W^+-Y+c8gVx腗@)Qn# wA'g&ʘ2=w crWq[Dr^Wmm.:|ӏM|$H3mc$BbP!vBΒ`CƘT#![wÛ9lG@I# 鄘Fֲb \yH "-Ɓb* Bbka42"s* lx Ek~k qOR'3'K8=c$,JAdI> bNOwWJ+ iß!&խM1ov]ޠTWM^E6Q'%$#j}+wCmc-;P|7vC-mosfᎏz'ЛwYZu;bai[-k+M-^I ti"yќ.//Ӫphd&2ۂcek5ۃ78S__g/+g<$݋7Ukw5jc@'Oݟ}b&/T-nth{7rBjR$ D|D6g1l9| }rV7T0h30aXL~̹džBhS䜥!" q endstream endobj -1751 0 obj +1864 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1750 0 R +/Contents 1863 0 R /Resources 4 0 R -/Annots [ 1752 0 R 1753 0 R 1754 0 R 1755 0 R ] +/Annots [ 1865 0 R 1866 0 R 1867 0 R 1868 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1752 0 obj +1865 0 obj << /Type /Annot /Subtype /Link @@ -24805,7 +26300,7 @@ endobj >> >> endobj -1753 0 obj +1866 0 obj << /Type /Annot /Subtype /Link @@ -24820,7 +26315,7 @@ endobj >> >> endobj -1754 0 obj +1867 0 obj << /Type /Annot /Subtype /Link @@ -24835,7 +26330,7 @@ endobj >> >> endobj -1755 0 obj +1868 0 obj << /Type /Annot /Subtype /Link @@ -24850,7 +26345,7 @@ endobj >> >> endobj -1756 0 obj +1869 0 obj << /Filter /FlateDecode /Length 1586 @@ -24860,22 +26355,22 @@ x MSr1MCk:ku<9!Y1L(#0//gPzB-[@BD3%$ $O̢ecc)E>kHAeǨ|(l(7'G1V^/X`bT"` ¹=yrRJ[.RQr:GaM\vȖk\Ihe,iЄ6UͰgs7 ja4o+J*LT# Ey!W+n+lG=ͦK]b7r nDG$3g WA@ @ü7a1Kk0q0نT's ґXvur=4l`Y/Bk>H %Il(_Eq!~1z> 8%p%Lq[iMP8p+-#[ ;>MyC݅TU4V$zf Vs>{ÿsgC7r詣kL衐㫌ZL!uh9D/".g.vAvt78-+uj#/BEKzS*$$ܛ։kNқ8i81--9cǟ~|j(*WnTV%ʅ[Ĉdٚ@&XqS@rӘ6XUxf뼁$/o->Q1O" r* n@'%o;}=zJ5{U"ty]y~3*@!oIr-Gww I!]yqgd4%E,: +MR8S ΢=<טǽL5a7XS 79:enu G4Yg9ݵ֍T`l]aW'ōf{}UuĖVhwMO]ќdUgdPNB!(ZŒ=D0tGb`||B׵XA=}w`E{kn{.BG[}c/]yx\/#zYEt9ZZX -eg3jG_}yMеB wZ rioړu5V˧&gxC,ЬVR)˧FK)jUЌBSn}rcTs@CAPybHV̠`dxr_0 xoUM +eg3jG_}yMеB wZ rioړu5V˧&gxC,ЬVR)˧FK)jUЌU_FUP'Tަ/(3(Y1:-'GWG? j1a0^y__U! endstream endobj -1757 0 obj +1870 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1756 0 R +/Contents 1869 0 R /Resources 4 0 R -/Annots [ 1758 0 R 1759 0 R ] +/Annots [ 1871 0 R 1872 0 R ] /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1758 0 obj +1871 0 obj << /Type /Annot /Subtype /Link @@ -24890,7 +26385,7 @@ endobj >> >> endobj -1759 0 obj +1872 0 obj << /Type /Annot /Subtype /Link @@ -24905,67 +26400,100 @@ endobj >> >> endobj -1760 0 obj +1873 0 obj << /Filter /FlateDecode -/Length 4635 +/Length 4448 >> stream -x][$~?b ur ذv !a_:RRR_f[=&V]UUI'~'^ }pV.|~;?_c.)h>L.\Tw> 9Νw'!dFMC~~,?+H?8!O[Q@J̠˿4M܌1>3`1B7{t3Y>2;9] !>:˚H%3/חo~z!Gp};5Ȋxӵm/Wz?^FgN׆q1xmyHSxc<2#3;ҋ,3H721u7ƂĻo NfwI:T}qҽy|Ӈp`dDW:'gfGE٢ĉb~tlԨP!:ʠBVYC'2ϭD O/ի2Yyu;j;>*_b`x<\-?3,UvWc|q ^DZGٳL`zP|mh yDEWփggS5+ɶcjcXINC<'d -F.a+rp9O%ctn Ldzșf=LJQr\XmWNe.ݗcov>+g5'(v(yqX;^Fop $~J8kWyhʺQ$EY2ճ`yeKaD)nV]޿fl$9Mjg|*4 /óc+O''8ebDh9Ot߿OߜD`f@#tU{5h ͭOYd [ ,p2XF5}j!6ܭV)ANZ TiUUތ\J(fEFiIVmmMܒES$eC)h"#^A;S5F@X7R\a$jL;މr~J!4%ukBjm-!'li2-I7 im X3ț:VrLx\arb -M3-m^c/bF]eb+1J‚ b#$G3/xev D 79ۤ"N΀x-c9z%HsA#? O:7v#U8NRdC;I=BPY:栔?~(ݯuLO{/ -LBc3e:j}i~vL^pL\b> /4˗/_rD\䇸!vQߗ 0̅P''gu}/|1InL&t*v!tng@~A$~ 4cږH,i+,`BZp:! -!iCFi&J%|V-+UAo Xp!0A8A (b9i !LŒ0m@~bs|&ĜE5F6SwUbpzu-8=r={HFQVvE'Z ϔɘ5AmX J^ nйoZ Q[u-yisbN͔}l*S\AW>L;H_ -zN#Rd"(FHngnC -TOֹ[C\K zsg>qe.?&Ptj|2 ЄƄ#T(HSI*&8>АfCʭ}C3M"}QHd iO.R@C3#(ށ7=0!Y!E܃\#g{NhFq3z1l_(%tYAs@g -\;v[I)KIF}C0lu -!Mx!EGגo5U 2] f|Ҭb@Ire4pOE,z8":6¶ĨWș6ZlGWj=Ȧr'{Y`>0ANMJw - iK/xaOT- G5ʗuaXijPJ>Ajӯ[{X*爚hAVz)dĂJ*/Ԛ%7(iUFi!dS7a@moerUЏ5u݊HOݙnK{돛 -4j = à @ ?Dz0SEsjb5OG/@8d,.`l\{! Xyc.h\WX .h,seXh+hTeظW^)N qJk%HyO Fdt$[7oPU+u^;eP^*Οڲ[@΅ߺмQ_Y2u7+/Z4<ԧQ3ӽBS*ent7-Jivva4B۰bڲZϑPl66_#Цn,yfz## i,R@C蝬=8vWʼnjnTbnHy}GgwE\;\\TK#CͨiG+L^B+õ@qUO])S]Ke亭$@qwA+sWza6y3iD|uN>?V2eo=2:q#G4w;N!߁@ 7N3DB.m^*֠=pVnHru(_ -6ETQz7G9E+SEݷ; -NJ[(z=ZZ"ݽ(àqع(#S67 k%7XL 0L,Nc_Sw5( @T]W!n "ݻf>lokPˁFfC!ckPbk>q-ez (WO$@a5uw ^ǗPhul{5Nsᑛ0vn*!yTJ:!*XQa!fC]5Οސjv%щj~ޭ2G:өix>))\}=Ho*KS Zi;+fY;q_SJ+)X3W4Ί4ֲ"""3_O>_`%]D:ʱ{uL$OXS+TrASmyMYMN~`QlBh"BZB!`0o:irt 4:4zR'āas`~X̶űa(‘a0C! ᣂ"(DoA_QHm99  { -62jq[U8fі}kɧƗbHcP'(1߫*漴7//c_gɆjuo6VnoY.tʵF(h1{gjo]K/X[dұ+{ @+=:As5X썽hF]PFOlHF/٠lAaWpF~wwn% R=ONw[6'=m,V{ yg[cu[=[oirjCn8r-/CxBJ{Z6il8tha98`Dsܺ+o^:.0u@i*)j8q}3<[J WiU \(40U )QBv-1:ߖWJ^<7غncWka"Wz`!Kv^\v1bR&}0 6<1 XPOEz(Ch+S<mz(=OP X;@ C~)Q,RwIT ^GGݬXk/O8stoI9悑Ξf{ τRAJqw釧?]Pq; !%3"Xoӗg<]s y2g2sfoeM +k}ӗ}W?~<(?]s 3poEQYp< _^i|^coV>N: 1yFe8y׎2e/踛IGG!(Oć"o:oݬCtCGN>.zg]qFV|Ẓ̌g +w$$٩ѠB huE@.OTץAgQKTeAR|e;Z;* b`d"\=?^3$>dz8_k34{։A 57 +Rt̔[ e=DtEc3TlMSJ +>fCxt&!<\rfA:4hK*M懜yN$ߪ%L (ʓhUSK\kZcԶ+5!F+Nћsmx<; Aԕ1*H~Lq׮PguHpPϊ,A[)t(5GfLgi4yQ;yxԾLtr^gN>A?If;B'gpZl<#ʙ{>x^s14UZFF5}j&FM&y^#W +[LbVdb֖Y-+_4䦢keH#{N䔆"jsZ +5a>7ajuC.tbfk!/BB|[Aҙț2SVjLc|@d.0B1O3-ۭմOӃ[+e-^QV(\-VJr4BTA {Sf)qS=Fg+fB[1.N4ɎZ7HGDꀵ*7 M#NjJC]iFsQE--H6H !vE@\k2VM^gɼ m4pmdN|0* 6Vn;Tҩk5Hi6OG=!nqd.]\l]U4"E9Aži\EqNdx-7JMVJ LlT 0 ߈"֘\d˦)޺lY%~X6ͭS- H ߹[7ڋKYT~!2(4jcT(JL\٢ەEi".lY&K?oV\ct+ F-j)n޵7(a{w_SZD65Aׯ)}ݡUBP'%ک_^;!(h~~ D k"J!hulzt* +P C T:vypBm^ sT"i#2K`< AD22~N_q]o2h Ho:_(ԂkζB~ 7Co)"ߔx\\il|$=51 )^ o6GV+1( ps&Iܤq8䨔~y~6~  Y }y_̉o {v+) % endstream endobj -1761 0 obj +1874 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1760 0 R +/Contents 1873 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1762 0 obj +1875 0 obj << /Filter /FlateDecode -/Length 1148 +/Length 4042 >> stream -xYjF}WudI <{_79-ss(#y@F-hNI4f_TTkaxrrLw3}#A1'V;hǧûkJyp歞bIExP5#ޛ??/ήG se\jwIYI]ZP\OFYxu7Fc6I梩5mk/G@dɷCeR~i5'ڵ?hrCwJPnfvJі*j?Dl&>xrsd` tlSn1pŶ篛;..$ +x]ێ}0 6 ;@J)R/s9Xno7U,:Udw?)/Z%bL˗Iם1Ob +TJIm1Ycd˿/RJi-J>|~|sSB^Ư9RPtҟ]Ԩw= m囟_^U*/VJti37>ѷ?n;s<;d}Ls{weݱgx?k^wSWURu*K'q>$)b{!/ɂoAGEF%؟;'6Ȍݡ/!uAe:yn@nl ]-&7_M9~2SOS%Rёßx*|97oX+RTxRNDٝLƺѧBNv{Y.Z3qԷM }<{e:RGQ C#I]a 5Rhw4>:X!,z6PPԪo׿&NaB= UA (ҨQfAFFak&̙@gi1N~cjoET.iؚf:qG5ީ }q4or1wEC\DT@+Tݼ.%JH&ٍfg,W+hGJ! +I00(79#OGǴYYyĒƕg1bAy`R%R*gHжdhMy4Uu4Kӆqg$x#k\@xE"X! 69"K_~xi \%$¦<VD^T5(ܩf5$ެ2.YgL,H)pDNC"u&$@L gnCJ,xFD`BLV/*#F}CFC$xlQ~ׁ#TNV^ضaq[C+-V*Zh7Melpl: O +Θz D2wg?&0= 0`!&ڇ[r$[ٲѠ}7EQX!겾Y} ʰlkZ[UbZQ,(@=+e3Q_=!wI`VL+a)KBNq7XDz)z>uȡ>ݚaO};Xؿ5&okT wF}o=eg ڡ\*g8nZQ~sOԅRH.3`a} ưuq>:pI-h*%& vJ~!1BL8>ڴ]U(m^}4#[W m]tO2JjV խUIt.~-{7,QA +4$,&%ajUCtԪ(PٜRqlN=l5u$YkZAkZiyG͵>{GBŔ7i0/VNqK4)`Zݵ'bKrR<`)%SJ([6MtVD?X?V<++zV!; +Ѷ υ*:$d{МB*?a7,@9N$kw庴hǬ~h|Aһ㎘r: 79:sU.ۍd _X*;Oa !`U.N.@Uɕw鶲y +/OX^>{G)&JRr.oaˇT][Z~صJq-Fk\_Nny9l'Fv:,k!9A+q}ߛ8{&NT('ʀ`#Ɖye-ў7z2 Bgcs8'fs173Wx`b*Qb˲c&D/Kc< ԡ64lm]+)`M/(+)<oNgK,}/pjǹ +V` +&rLX_}FPfw4K6ZT{\ -1[v 슎UeNU`9$(F[KPK֖"@ymcThݨ^Y|q;Sp}.%fPs^<̬4?˞FǕ]'(o,TXiB>؇,ab}Zb৛} Qٳ&(uQU0;>h/+h]Owc`*]V9@yf|ړثӮc#icŠ!cR $7ʉ{PꞌV{ [YKqhϪqiOz+44hU0~ǔS[N̴$Ũvq^Ƀ֬d QݽlM|#dEV1Qr"R"N#U byTB ^roм(ެ:7%w (f o *K y%3^\ȼ{Ibh2)[w$m[7K= ֥D+[SeC<ܭ}k رX6cUc9kXE/ʲRCMm lCmX= + l#k$: ۊB[[ ]C3B5h`j ~Dݫs "ݫshz~SWHpAq(EݕeQRx~P2Stw[LF.\ +A}'9e &c1K$Hcz q%`4]"RͱLl +*6PXmNz[?Bm9L$r}Wѥa +G3%WSȋ.MiT`:g ÷M6fIHT^sMY~+N%ɰ^[WG?wz79XvH +  f,M'A)ʫ!$g:_&%) s _*=(EsCA +J:'~&籾V Ogބ^KAj/r endstream endobj -1763 0 obj +1876 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1762 0 R +/Contents 1875 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1764 0 obj +1877 0 obj << /Filter /FlateDecode -/Length 3053 +/Length 803 +>> +stream +xVKk1sFЀKRJ+]c߼Q/ w8A+OD1= +x7FT8z +@ˋ*Bk >Z( >.pbEYU{=#@f@I@"*̖-Ϥtofiv. oeG+'`f6{9-kN;a͡0ȸBwŧ/.GrvFk[lB:Datcv4n4FNRe`\Eq' pL<;Ϻ=/^FW`:R6:`Tt@Li J'%1QaC??IJ2~=xNe䯲 +tE. =<}Q԰|BS1NJ^glծ3XWd3:a-S +in;: 2 xWo-aI&UFe-> +endobj +1879 0 obj +<< +/Filter /FlateDecode +/Length 3052 >> stream xˎ_gY,>  6 _v@)QVIbmvE WI5z|rIҌ_N`נ|:@*ADa4t_?^~wywPJ֛8/oA/r)xc@]A;! |1qL5i4l*O=-0뽰.tACɺ #IV(鄴3Oa; VƧT9.k tIc'j2Q%4|(%ERA{QDϗowWeT:wRBx )>Zl}}#Ѧrk ]~ ?O _g@$:k L O0=sx8&eQL{^af->r~?rG9{+rru^yA. %"c.=dDxPRqnh*ͽl$C$͉Q.]ع{F+>{4iE~ߒw2YÐNVK#&sRK:Ӆ]^ @@ -24978,21 +26506,21 @@ x |uocȦCx: bΞT $\> pڮɃ)>A$ RqVaДQ>FxPȂ_&m/t ,lv;^3{H̶Q<bOԟ<0)VtUt{åwL(r9sgG1P)!(;ZZö{ v+@ѨPC!6KI܆>چ2 Yp[|'9hRwdq+:dW_udoLx ב 8U=i_) $X:Q ͨQ\MsQܤ-dU[xpg + {e޺iOorP/83e(p S-ƙj/:04Sa@lƴ g -DH/6կOE&6*_ypv&MFD|.Z=XQ&͙<č?/nu4/rU>l)rԯ֯cK!F6FrAnYRv*:V 7o4-&5`"Y~K,4<1Z7Y(0%ջ%7#M=q#官_,ĺ'~Mؐ83QxDΦHʐ3|,QHpYrF(T{ S/Ur>{ۑ!NDNup$},QYqݑjV&@RC,gqA\YgώFVؑ]!> endobj -1766 0 obj +1881 0 obj << /Filter /FlateDecode /Length 3547 @@ -25021,24 +26549,24 @@ cw ?G>'058y|K%ۙ8{Znx&MMwlfߧ4ЯuUu .[5JhuѲ 򖹣wlC֠33m]AͧG#*UM6mҰu\ńz[ N-;gmK֭=ZB>{u<ڦ6xdzmj9UKPN;oB0ozW{,}Zh=nMw'hF ÑN2 iÕRm%mZ5G 1HEF`|u HNjGU?/3h2tWՙk2i|`CR˪_TywxxZW r[mtzp -zR ;'ݟBU< kR]YSN=i;)-?wY41-(1ocA[`{1(EAJ|1'Sxcݰp>%.IsdXL| +zR ;'ݟBU< kR]YSN=i;)-?wYt|w|mjB"qރAŠh)rƠ? :OI]v쏺'ͯ_° endstream endobj -1767 0 obj +1882 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1766 0 R +/Contents 1881 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1768 0 obj +1883 0 obj << /Filter /FlateDecode -/Length 3207 +/Length 3206 >> stream x]Ɏ#+0=@>(/CkNc8LLeJi]PR2V>F):J !zgo?Vŋ?A{U& @@ -25054,25 +26582,24 @@ RL 9"'|$y;Ȃ{PjR~ez ;գ(g{I}+[Kr;-A<E aTX7ʲ)à*_sVU\gwK<pT' Ö#1ׯe'd)'GU딗:cT1zj!Yo EVW E@";CL7`W Q8"=I 1 F6s:JeރtK7H/^4|t}z={jɻ\_  -m*r7<oxƙ>^0 [`K_C; CLbbt#4SDv&ՅkJ:طC/(kŔspQ]5ܸag|^5w|{w9Jtr1+۪;oT3҄ӌty>g] on +?zE[__kjw;:_nMTgd,9-S.G&TɃto~~&9[JtHOI`ݐ[Ȕ6,?jJ&HϐSs#t^ tR %(8}1,M1Iy6K endstream endobj -1769 0 obj +1884 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1768 0 R +/Contents 1883 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1770 0 obj +1885 0 obj << /Filter /FlateDecode -/Length 3837 +/Length 3835 >> stream xێ~py>,0I.6 ݽ{f@lReKAi-X'Q1׃IWQ_&1AEԆ^4F8k ߾q!>$#!RZ ._?<)!JQߧ sk >rR$O5U6Ié$ur]|J?zO_<*-ÿ>H =ȝNKio9<$o#=ϭax/DeW/pl\:{v<~lz?g.+ }JT<%Hr(qMuӕBLr,Kϋbu1kv%DsRPkc`rDfG4Uє?pn)5d)"^7Y4fdq1[r]>4f3zx+z+a"[UhR%j5B<59q^YZa":BJ1o09qT4I,lLkO af>Ӷbv31 @@ -25091,29 +26618,32 @@ x }P۰QT.. ?x/E\rU\e `?]_. $nbM. -6:b X-ͫkJ`_ؠj`4VjO߼O?o9ȓfO")M%ŔBo阿E-;f$w_\G˫F׶A0cƿ|ethFSE e5ČĬ;/AfPZA2qb F=&ڙcHso' &ϥPyhSuMxoI/q +6:b X-ͫkJ`_ؠj`4VjO߼O?o9ȓfO")M%ŔBo阿E-;f$w_\G˫F׶A0cƿ|ethFSE e5ČĬ;/AfPFAȓ{Qޗ y[;b Ci0`㼜tʳ2myNϱ?K/F endstream endobj -1771 0 obj +1886 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1770 0 R +/Contents 1885 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1772 0 obj +1887 0 obj << /Filter /FlateDecode -/Length 4019 +/Length 4018 >> stream -x]K# V, Y`6$ 9t{{@(Uz٬32 *QDQ*u;P"\|y[?ˋGD -UJImKcc/~IhQJkaUt+%wJ/y!T)˻,~t-{-Et=\ֿlrJygY4F|Qe8 CJz@j|ㇿ?^i qd3_?>&K#0x4 Ug-hxx/J6'QK\"LYj-z +֙q QY7M)=J ,U!?_d4BZ&ueBG<v۟:}^PzxOpn!M[=7Erop]\ml'rוR{yL3>hkD -NHL7>74G8x9TYw ka&p%T@ b0KOszWE1^DVQ6yDDNGX+ViD]jðe& G(znX[J##Yt9VGRkgK`ͣh$-#'!^`\KN{Tq2&>Z@jm R葵44Ax6]HP.QFke뤒-c8-6 Ǿe䫟,I]Vs8a1ƶ1H@p6 =58d`+4с"tR l]݆^kfzd *g%?ĤmF6y;m2tM&Fw [  j(_"sVe[!rJd~tc;8a%f3-`0n/6D)O}M&ݒcKDK,'\L7ͼX4"}Z\.bJZZ~vim.*d@ߘ,rOiͣZ>6) v2]XNdM U:)iqlZkFrou1". $@s?_[h֋V83Σ" +x]K# V, Y`6$ 9t{{@(Uz٬32 *QDQ*u;P"\|y[_חㅏV{w ū  H?^/ªMWK헗^_rCBS~/ +ӅpYb8ubڃUi8!Yp)@F4" +.}_(-Țg~㇗?|L6"G`&iZ@9 +kve Pc _ϕln5 O388E.-0Z@zcW3@efnSz{ +!1YB~d4BZ&ueBG<v۟:}^PzxOpn!M-~N FwF\'}I/?ܟutMvGHmkuu~|\d5N l'I$}ʍN#^ ߜlɬ\C؆0iQe t1ͥa9+\^ZZƌ(u"`̣W+4u.aX2#{zic{,zCl3ϥIoCyH_ȓ0spg Z =h^aT- C5J6jc{)h &nɱW`Xrke\f^D,>-.Xxtb1%-xi?;N46|EH2oL y'4Q-_j;E]L\K \Md,ww&*Ôʴf8\Ձif}-5#/ $@s?_[h֋V83Σ" eZ_t>zwEq^+[%PXŽ&T6zO][u[k[!y~/yO+blcɥm/oRľ]ktul.ڼytB uȞ)1iV܉ |!?!83;0z $pR@$L1Z\\{B$'\9Qe2xIc49'-ケc,&!HswԉmA~Lرp,h.˹h@Nf=42{ʈ髱p9%'Kw)~; {bo_TWڻ+ 9Ò`7@+pmy#琡~׏:t;Z$=ۑ #[5M/]7ܶ9]*.eBgB .dK jvABx+–TAERMLS~S'1yh,(WgeF̡2W2\ȯgzQ]7v:meF/bϿ6jV the 9=?s,&G55 K4C?,VJ;֩BM'J=^0,zt.B/A%W7ႈt9X;ɴk:uk}59\AKO :GzHG^)`O؆6\͖z+V9I/Ѹx&F[q_솓@<[ B|Ob{Y$3Ι`6mW=F$ V -iԹqNpXCAuO81c. Gfyj@f{Z"Gܔ'$E1ȋ{q>;LrX ()U1N?Rnt@D+x,G5?o1%mۊ:b?u>t#äG m0y4`Q4vԺڼg1R pz9E/\ipsvҨGl 2uYsJ9̸(a_{̸_ zaW1y= rw g`P@T_W ~FP]zH1R4XOiFqyB{Β"{AE#jݙdT +iԹqNpXCAuO81c. Gfyj@f{Z"Gܔ'$E1ȋ{q>;LrX ()U1N?Rnt@D+x,G5?o1%mۊ:b?u>t#äG m0y4`Q4vԺڼg1R pz9E/\ipsvҨGl 2uYsJ9̸(a_{̸_ zaW1y= rw g`P@T_W ~FP]zH1R4XOiF=6o|sΒ"{AE#jݙdT a2htrB#XI%fU: rz1SiƧyju 7ggtorNl)VZp?ZcqEǤgaٛ3>[zy|= f_ -[Oi ѹh˟h UeZA\:^؈L>z}͹H/10]Śt}|AN S^~Xz Ο>`d;rA\c|g]tfG<3~G>zv{18)K*fvbr]V֣md$`?KRݸnJI! 啉+ّzI)TD!6 M!hc`5LK$2{#V5d;r% Ϩi9d_vZ@?Vi`!ܷY ?O!0 )՘Qu+fm*&ƥ=,n8'ІCzOOLɁ4A{27?0F&my:aAJ:J2hE@d -6< +[Oi ѹh˟h UeZA\:^؈L>z}͹H/10]Śt}|AN S^~Xz ο?|>w T +N- ` x:fA}4*zM= b&:qRTT庬֭G{-Iֵ~qVQ+Ɠ+l=*Cz+W׋#qRB:Pm6;qBƞkI*d8Gjwf5J"/{I 琭?ֵL8BoQ/O.iB7iaS1V dULt?x=KC{0YqN: Mˇh p3e韟3 )#2#my:aAJ:J2hE@d +6w< endstream endobj -1773 0 obj +1888 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1772 0 R +/Contents 1887 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1774 0 obj +1889 0 obj << /Filter /FlateDecode -/Length 3526 +/Length 3525 >> stream x]ێ}W `!@<$p+=L!91YacT1B) 4F8k _?y!?$#!RZ ._?<)!JR~zN!|9FEf? DEĩ_8:#|m2A9h>o%VnXOJČ-,\ozYRڬ֑CZ)BPnkj F?1N1N8BM!z4a8I&GG "SLv6ˌNXDlO,1Okn)zHE NA\o#A-Nyh:WL@ at+yˮSfg'yyr᜝u\%)~>y0g%D2@zCĞ~EyI]Ei6N rK їd5OV IVsy"QnaeSRa}l׺YP85DE5PW$hUG STcD1k}wjch}V] ѫXfq!7aPoV^U˼pegGsw71 r!=BcX*d?bW؊X;Xl! H=y'l>vS&9tqY I,EyCiOR!/险)3}1pe$[Z9iH։cPY n^jA<ȫEBv!l2mzy 1ګK3m(JaTE&͇qx ה xbPw2N/+rkhels;my%l; e wlGtYhbJw2dX q:~#ۖVˀ U#o.#u#_jq)oW+Oc2vS`m]wf k;Y(G7 e8ײPr: -E״''=JHw5-PfHgbkmϓu &7voyIC$^I17SL^^ٖK_ Cx7BTe d!|Oyqjx`FH#kU}-" ]a;ZO7wL<-8L\d}mT +E״''=JHw5-PfHgbkmϓu &7voyIC$^I17SL^^ٖK_ Cx7BTe d!|Oyqjx`F#kȍQ>=BdCiW(ֳ <5Ok+,t0)YdJT endstream endobj -1775 0 obj +1890 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1774 0 R +/Contents 1889 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1776 0 obj +1891 0 obj << /Filter /FlateDecode -/Length 3308 +/Length 3305 >> stream x]K#Wl 4' lHM avvǗlu?"/u5h%"5$3+F_ p(gA =pvTHшҝ|SNJ@)a Xopr<+*8o 3-/'JT=:O=g9뽰. @B\o^쫋Iʋ.#!y/zN 5?|^eĹA_N?滑=2>Zl<vO:x_!Q„HZ5fvceb&7Y%vxH_#cQ3Iat0S"M=*#ڈ`RjSEB:LY`4Lbrm72n/$a,c2/PV׿f?QxgeNy0jr*%K\WE(,kw蒥/ l@UqX"-6h`v: ڍ](ktjʷ8]NhEۛ1c0lq<*$}@H -:LsZJ5 bFFY@Z/Œd!};S*,(/K>w2@=x<#l JT)89ěyts -JS\g@_y:ݜ!6 Wdž~1ppF-Zjofb eK2Ohj@f[ܨ/W A q̇ Q.cT q Vcyta2X!CNjX=0缜׊B?z' {-R?jc!Eq\,i8ւOJ5D3nd Bz0GM 0L'"[ pȱF>݊1-W\ºΗuVSZ~~*g=X\>A`[{ǂu8ε'F{Z)&R@x+fGVPL@8X@Ґ i - -\YrPP/9lm HCİU#y,\GIQ دc` MvO^Z'`3e7u Zw6+A`3%fo().^ &;*)F`V/o6Sع~~k8tRoc.J<2z}R-&ȇ0]2僾AЗI&Ooj"1{ [[޲ /g 1hEeq׶G23$W6xdCgnW38/4vݵ "ki&-Z-#N偁)NL^b4!;s!;{M?ِ;VYO(ړln)"sYOKvْ)|$\;[=9!<;³vmL5(a1^~5m:GOh!SJ `Im}|,xsvF;U&KJvS;ڹN`:osjiAGYR0p,ȂIFnD|vN0B<$7(;=SI!3Nt{=uÑE/ǘ>K]|VO2eUP[+dvSCUtN\ -kyrd)ʃbL]tR|e~&]3+XHrRwsN GsDҌռXt*pu|.R@a7@N͝:9߈ڪ>svBGor{j3jzuW㪛XŕzsGNN6"]f-p*?JF1Oodr =p\:U'`^n){nnv.h29|hr;nur9*E盵|<9W7o&yl|<9A ~cLtf9O~ I~X\;n.as{N7"ײ6r)Tza[酭\yTU7AͰ_9=d"fNP.v6AL&>PVgw)&V l[T-x\*57v;>?W{؇5 2ӵf:K3Ŭ6z'[) w)cpl鏭TgJu旃?&Y|_·C[19eٺmYUjL2&dodLZTI%Vzm(qm?[264 -BU6A~U6a7^Qo{_U5% >/W,WrLP H&ۏ3Z_CJ ^kRNvw|&sh9}54b\N]~4G -Gw$]ԈA-||[n#/tOν+8PWW $ +']Kg_'\@=;18t\o m4j{) 6T4@JUyIhc􉑁Gz)9tyut^{9s'ݛ3W.H_#X>cebz!6I]*hEB:'Im!VFRB,ah4fP?kӽq{y%`yF5\7=+sʃQT.ј(_-RFa\ӈF,}ala׬luM\sٵ]8AX5F@1\ۍxVt/8krNk1#4M]q"fd>z.nR+)]ҷ/e‚s'* +c#{x<2ƻDXbPCQM? 4.u$;H*#{xdn:khAI%IgnutZpS=lP[ѐvAyZs-YÞYѶU/\WHգ'\zM vy4I搩 0Z>>QWsN'A!aza +ܿP$Аoa'Lri:HyY"]ٗcLniB.j *y-u; \š*artl:r.m@xsȵ<9[|A1.:_)u?K\,$ 9L9'QiasN9"yaijg,SYL:cw^_X>xY o p䰛yA'MoDnmUb9sU]!Oޣ]o7m5+qBJ#T'' +_ Ov8]uxr%Dq}#٘IާX72h8.ŪqV0/aJS7˔[7z7;x fvs>4h:9߈gZis>7C]r>ݜ ^?f1&Y |Vڜ'{?$?^,a7s@\'kY [m*0uѭze.y[Z䪛 f{I2v3H'(Vv &tsxkhfi(3JɻtRwqGw-AXR|<.bjk뽣s5˱}X/>]i&z~௓4i9]js.y1yjmp2& XΖJu&T!i~9_:mŇnhh|8e?/j_fm~ۖ]$iA +KϤ+I Tb n9kz٦WFJ|)c(nPKѨ;/ TH[>0^ewQev ~kEU#!X"|˒q% ŀd~<㿫}m%&zmG|ǧj?Ww0u9w߹=GJb݅AʋAbǧ\9> endobj -1778 0 obj +1893 0 obj << /Filter /FlateDecode -/Length 3609 +/Length 3605 >> stream -x]Ɏ#+p_A m{Çrל@p0d.R>.sq RI2ŝwZ0ۍ3g8 XgsHgA3gBpMJqw]Pq !%3"Xo'=>~gމу?=[zד!T|9 =Qʹ3)JPx/&&sz4x\ -}>.$sVJo,J~?c&dVHŊ],9ךsCT@F+*RZR ۡ2ç 9ij-Tq/Y'媖7 5kX),^7 -SYcBI$OòX,A>)% Iŝ2XC`bJ;h% PyݞZY7'x<`% iYyzJx6~??^s4f )um=VS p]ׄ0/B`C.0h _U{@ Yh`2P L~!&0BW N! a\+rKB`npWcަ!챥ZFI.C"a^X9?QV Tl:L,BlYmTgPQgd赅R% ~Ǟ{pl[E釲*JIJMYW)7<]&c(,*K (oIr@k½vnp{1v0^|"meRL`6V)r9/ņ|4Y8[r$%A-9TT9?56LLSR#&WyGr)|eSb=Zk2%Q wG%&AM{zjڱ0Li0Μq%MzcNڈΪ5Lx> -R~c/؝yü`2^h7nq`iZVI~Mfɮ.n)TETpu\D٘Wեa3/fl&xD|>g%rki$xsZ8\05sP@FaHK fN&^[b$T -s8W:ix \;ATNp(v\G 8GPZ#5bP%*P@?T׍dcro5 -I^Z[ H"d  ;>]9ּD_\WICƇmJ9 2f{KP{U;ᠢꊍc^%R'uSp쪪B]ZeQ]7VYtMikG6UojM#e鍿.k`#dMiw⫍J/16l -WNh϶D{n#]F^b5r6B$~S^j0{6̇y5`o"D]UUK18/i#V>-GFيy_UO Q6&DŽ ]mO -Jy]blM,{Kmv2A"`l]-qzQ_>$qU6dk-]Оu] :Ht6`HJH( -Bӹ{8$\[ -U'$u Q6 a VHCBؒ a,{p !8nw)$D- R Q{AAK"8UMCQOKvCB_WH ZOղǥ[PMO@*HP ABBT׍d -vVArqHZ$,en|$FbAB= !(c7H;sHxE琰2Sդ`Ztpp|H - Q;ABANí9 -*s`mqYf#dW:]70)LMQcw xѩXB0r| AS$ks yeXo= -(,> tHjo:8=&,ݬԆ8Hj:*Te{ [xdEdl ,Y2uIiu猠#oN:(H GRT _w"yn=}Il&?>Qaz +x]Ɏ#+p_A m{Çrל@p072IK\\B*)?FLqାrvN?'V#~)\0{L{/|;\*zS)fRz?}s;BHɌ֛ q_}Y0~wb4gk:Cz0<5gq$J9w&pY?lNϙK~}ǿ?܅dJߓeU?}L܄ +ذ;Zsn蛊5~CEJK!wrTftpK˜`.y]jIqCZ㺆eсi(m║!zq^<8&TJ4,Ռ$k]\)ï HY)ݞ+ PҰ);U~3~ϣk)yH+6YRِ㳑y| `1ԭMXM5Qk@.H緦v%+{;D%}rmK"Ɯ:UUk2(}< Gc؝yü`2^h7nq,ŦVI͚] \S="61ϼKfYY! xA%ajrp#< Rip4Au2 C +^mp05sG%5" *T "yMKp2vFX;:: q,pЍBk^hKEU:n {SWH%My(BpH^p0>ę cK:J }u4d|ا 3iH:Y{ګkWu**8U2q(uRGo/:gͮ(UYPUucg8d +vVH¦ZbdL"}eMl,2Q|Qi;f5߇Mʟ6ӂhm6u:k#޸h=KFFKMrφjuHK~։Gܸu"&uiث[ʊ2oܮDZTYQwR A?i:!"UU ݵ"n ÄQ +_T>dqw[[w8Bǁ^Q_>$qU6dkǭ]Оu] :Ht6`HJH( +Bӹ{8$\{ +U'$u Q6 a VHCBؒ a,Gp !8nw)$D- ^ݳ2#8Dp k#88'ƣQOkvCB_WH ZOղǥ[PMO@*HP ABBT׍d vVArqHZ$,|$FbAB߫{ABPnw!aeI6S!2v^Ӈt'[s58T T~+]\pt\P0!4 Gy:BY&ENb &VP,-N 3M| +a :Koi` yW0idf%6FTQ *ۓ'H#+* G[\`2GWZ9|61ݓ*3-; =N-}}bj!{HH!OdDG*ߙOyŔ eGX"+'K2 +Em͍3md,p9g M7u&VN8يߠ3H7Bw u$}Ǐ5#9^ؿx#G2Ng 2 `=^? >5ֹ<ڬ$7v\ V1"<'u>jq~qtƎA"r0c6AE֍-j~0%/޲%sߧ^wFٲvjO endstream endobj -1779 0 obj +1894 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1778 0 R +/Contents 1893 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1780 0 obj +1895 0 obj << /Filter /FlateDecode -/Length 1196 +/Length 1194 >> stream -xYn6+F | $9< R/R<`%dhWWE{ O69Oo玂G613N=x/,gΥw΁D1_>uwwy/ȳ"!rI9;ݻOEݾޝS zlSs,TF XkԐq7 -}R]KPG.y< ?v)=>x=Q7۶YDqqul3r91_b (BIRN*SD|-r%];J0&H݇۟~C<wݟ5zqWw{X2*Ÿ"(||n$~k; <dL056S7Xr4gThf9 h3uU~܂՜a\bHI#kZ`%f oLV3̶f6k?6=杰Q!9V"<⁡!ȩ)@5X`Z9ty>4Z/yfBXSa Ffq~MfLĐ_ȫ |HBC O@Q2R5SnFTFDuO82_Sn֥_ ~_!Eؾ^`!$IjijE > =HjRsDL ]-UBa⴦eXm&Jz?QLqM͞ばI6s&w&\ Qi$&*+煻ゞN+~:P0]~lJ)mjVb>ȹy^MDĢ$.U\Wc +Y]\ж7* YffUµQsu4VC.HV,U6b VJ+xJ1 -Ӟx~w -jBd6/.mCq"$T6dCL&p`. B {#S"n޹/9nnxH{&6<]7[N `lF>86QW8XO[If=sZI6MiVsaAjZ`)toD]+ & .굝HnΩ,Q!/=tYxVF,/!ȱ)jn0qi˳h=q U¤!d(LT' rN͞_Wq3,I"B}s70WxIa/7\d7"I?@\r,Mxk)ڨF +bDRTDTxL4TLvg0is + L!#.i&~ ޏh)c5FCRⷩ9v<vC9JFwΨ\l!R .-%JrqFEEE3+12Z'ؘR,]S˼g\W@sf`cXmo*Y&"*aET%A+EfCNT5ZR0;OQ;/0q'yjgy%iTݵl($_j؆$t11"7_If> endobj -1782 0 obj +1897 0 obj << /Filter /FlateDecode -/Length 2633 +/Length 2632 >> stream xۊc_hU*J!lId7s瞄GEi9 2Ƈn("]dgQ%h9?5rk5a;sVs4O[^Φ(P| @@ -25280,145 +26804,151 @@ i )Ũ~MܟsZ0eg0RNôydRD=phLlVu6p%$*Z^zcIY-L ; պn!Aފ' !5^g@Wz;HL\\@F0" ,5.\03)WNw)J'Dh<ź N\~ aAH{ͼk[IV)M6*>*ث~N0 -9MTl\*ݡE@VmiW!$ƪMԪ{%¼-w{q`AE mShAQE)grP5]l]X@ޅ^|>JzCOS0qzM,E)1;=ѕqwBcݔpV%K.iȾv>WI[le/V.7Mѻ1+bHol&gO^/ÍJb]׆GJ\`/ &6K|eoCMԐsMO[IOU)x!Y!}BCu{1{g(^816Z~=u[9<5=t Q90@;GT%k (AtK^ܫ=rϞ`Xjs:h|Ygm{^p/u}S7I d'9:PGjPX{OZ `MEY{oIiX@iǶ¦MB1JvM^sQ.D؜jI|ٯ&%"uAs@%ܽjRJR/b{tӨu<ָGi90_/O("XДO({êw6o/)sC7|ʟ -CϮ*㡭Ջ}\qyܵ^jHJ| [{'rg_%l=博PZI.3K\\% j徥/u&ERS-ŒDP379`C[57|dsdJkʎڋVs<2>t{Y"OAWn8J{E%*%K%kF0%yCjÃ(_廇BwtlOPrCAv_w?}8#o4Pj=GIp-x}odHORGMiB$x-9=O? =\a92VM<>t=\o`ϙm?t9rlSP +CϮ*㡭Ջ}\qyܵ^jHJ| [{'rg_%l=博PZI.3K\\% j徥/u&ERS-ŒDP379`C[57|dsdJkʎڋVs<2>t{Y"OAWn8J{E%*%K%kF0%yCjÃ(_廇BwtlOPrCAv_w?}8#o4Pj=GIp-x}odHORGMiB$x-N?ܷ>FR.0A+&r^|7L6[ +abHى% endstream endobj -1783 0 obj +1898 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1782 0 R +/Contents 1897 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1784 0 obj +1899 0 obj << /Filter /FlateDecode -/Length 3375 +/Length 3371 >> stream -xۊ$ u,ĆuI3;~ȑJ*n].wt]tW*UY>_\pFҿtK:7rN`׀JAA志x Z8)wW`W5g.Ua -PW0(@'/&.igpXÃU?|Eh6(#MºDrBzb\LVv, KAloe|-an4ϗ+a:q}xݓ!bz2 g=~~x_!RZ%.KgMa; Q0=.R˓] +xۊ$ u,ĆuI3;~ȑJ*n].wwO]tW*UY>_\pFҿtto墝p(gz>\x Z ZKw/~pR:J zk ]^ P81`PN`?_L\*!మ4lQF8Yu0v!žX-xY KAloe|-an4ϗ+a:q}xݓ!bz2 g=~~x_!RZ%.KgMa; Q0=.R˓] [\u*}Oҝr HMM2Nؙ[=P mxkt4x9>!]{2)͑7']ro9:X4XoPJX;[r_Fw -5yr%uЄx1ׅߌ. BqHR 6TL!߿FM)!E_#y=tccyg9ݓǍK`d 4\*P>miG%]: -u -<"98 -t -2™z]2RhD0A)# #Ρ!skg|{Ee -̈阪Y.3jJW6~QJD>-H; |>)&U$i+iKԠ)5nΛ -YikG YCPC:Ih -9 `eKkb )CQ -(`t[Gai#+SaAy \xip]n*<&أc^g%*+r]cyts&fʠ qtNSm -RXe= <0wRm+Pb eQ4ցUR -@y` T/q@y8&PGUw?=]<*Зv}du)ua&4j& ?vL=,|ؕsXF!=Pe,Ba,VbHl(ՋMݷƘs* >aG24nRc%r[a8*9X ]-zB_j H D_|f|5j˥vEPAIT:|:B:[dH܂ 挎&NhE^Ql9R [#QRL=Ω%M !qV -,~.X!Cϝ(==O ,ϰb*Z |9d?C4G'fTtѓKͭaRvHDRc*.|=K2t[h@o2dX˰6Z -+!ӳ| 2L>ImoN$ e5+& i9-gcjpV**XS,ٸTyl)\rcKcABnKya &IVn1cۥ3wDLɘPL;)}_ Rs;{cylpHc lGp(#!%e\03խ4l6l:κ=R+PAB99'wsfccsf0U YTڄ5sLD(qi׵b_18eG.̢n/&^eW"-~ȏY6YRe6 gsr3؉7m{+ ]o@uk׿E,ٚN9}X}NͪPnNJ蛧`K` )0[w Ԧ72AܠPoʹ(ۑbscyGjqdLN3'=buO 4 :AM&5\|q;G?Ą{5]#Z7y|t`2uYg{ou!'3r>zi8ypt┕~܆ Yޥt=Q_{7ͯh_%VL722c "h24u5dsΐ$uƥzyت3ˆvO.1:]X +5yr%uЄx~ڿoF!8x)P * +Qd֐瑼Kt_ks1v<39ݓǍK`d 4\*[>~O < +-("QSșāP(S|M<2GB# JEL`g`wm2G|k!cxOsQxLa1"S8eFYM/1J7Rȧ3I|]fH:G4P4|%jNtl7LuQJ欴Z5Oʢ!!/n*oD0C.XRi؂qʐ&`J{.QX +oTXP^|:Gx@Eۇ + `Yn%+\X]7]jɝY2h_y ӔAT=Vx`+]exT +XBt6pq8Mm`=,P{AŸA<N*.PYKv>gtN2:\:0\{Wb5ӄXRX>]\lʂ9WspQQ+wTy$6Ŧac9\4 PƂэ@1[j$Yn6 G%08+ktEo\hTi0dT3bዯlF|Т*(`VoPG1^hBg,wI[0ѭ +>-'Vbx!x@5>JѰR %E !iV +,~.X!Cϝ(==O ,ϰb*Z |9d?C4G'fTtѓKͭaRvHDRc*.|=K2t[h@o2dX˰6Z ++!ӳ| 2L>ImoN$ e5+& i9-gcjpV**XS,ٸTyl)\rcK#ABnKya &IVn1cۥ3wDLɘPL;)}_ Rs;{cylpHc lGp(#!%e\03խ4l6l:κ=R+PAB99'wD06[|<ӑĢ֍P ѓIb{Rѥg!6b1~thҔ0ikҚ_m1nFphZ\ko†F+I`rJ[u &u#B5?Vc`aA7k[p|lLdl̄GA[l>O)tBIc6e RNPx̮1-=ϙ.F\͙T7dE6SNrh@ 0&v]T£է"PJUq8XsgzM\;=!GX_0UNcGx>ߓp=+%azjҺk&&FwMW熅K%w&v8ds\׊W㬢kJ3lhFHx]R#zyت3ˆvO.1:؂< endstream endobj -1785 0 obj +1900 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1784 0 R +/Contents 1899 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1786 0 obj +1901 0 obj << /Filter /FlateDecode -/Length 1729 +/Length 1730 >> stream -xZIo6W[i{h.@у=sI -$@)Qf4P8mV>߀ &to?ݣHO:fSD6ׇvF6`S\@ね!h2;P2h`${HGó vpڱC}pb~"0sԙߚeӓ5LoeX(uPImr#`"[>uo޾_&xDc獵u(GZaIu>w2r79e~G9:4;7~<ۿwww3 08;#h=@>)Rf1&!;e?fie묾|K90ènYø^6C~tls3lr}?5ҭwLuaȐ`fY%Jf ~$G0^{^*.Ellq0uEͫn \3d'ydA\]LfPvI8` -33IBɚYOB&z&3ޓ_BJ$5^ts - (. $R+2{Dz{0{k$`sd>-N ,hฏeL6,=Zć-`oib<<*A*522jܫs$'7qȫygXEe^Y_vRQqbPJuN[},ydjW.syfW.'>V'qM^?/a$usU%]~'1 M os|O܌M,mK!rb%^ G+$eA@ XG*DHɊogr*[nZI ڃ.n)v=QKΖ2կ;bUen)gs\#ϑv.jdwL0/%67]$$NB%Թu[PS;L[ݱZU׸fRIZ#jWIlJmY;]Zcv$S-k* ոV.(.Gw#h@D&9*AYwHJ"Ǘp^B"4oĢ(Փ2Znʒ7g]:>ʚɲl)^m7)Y5Eҥ[ jm]kojo5!AIo]+O+XնHBDXl"rg[uմw/gc\u6,g z !%M*:Hoڕ!}K Caiw.ѷ@"t Ɯ*2gj;\JHG2Z:srWXWn(Pӈ-A),w1jy4b܏¡4ٓvDp&r~twMJ1R`$巒NkSŜ9Rz_~>svL"{''Pϯ? qh<GnN֘x9x3,ʥ/;tX"Q~=Wvk~{3~!X_$D ,a_777z*)(1~|h܃G!ԑ>c>5Il}0_)-f t|u_{zC/i{؄%4R#LҤ5DĜjQ|o=0)Uš2_{6RU۩-v8]WԼ93zLBdEP&DIʖjtz6ꮟk`Ă| .F +YWH$&+z(b.^!!r=嗕0$DfEwS_#Y$&$ ODoJ},CgշQd ">lQh >U. -Yr1x=*l9ȽY]c1qgIȅY'y1 ؏UTueI/EV H4xQǒ@fvQ+F3r`ms7 8 Ŀnj$&+! bYy”|p9՟/&08õt;$pBA,H"R s(@L er=yLNEꦍ`=TD~KY|m<Cl-SJ#̭嬖ѱC) m2;qg]?KH;oVJs=isC쀞B23m)wv6`%4{k$M:1JbWh% 9n߬PkUr{t' 1)DJ̨ʪ+4GR=H} 'drW !=xWL`Kqn{Y5\[$]JZ0k'o]{S{kV]ڻʳֱ].:}#ېΒHN}Aڕ!}K Caiw.ر@"t Ɣ2ef;\JHG2t +?Hg07f&E7Ҫc1KK<~ e=ٸmG2c}`7)*,Co#ANY pK3s}9x(QX?99g "h +UÏմWFpU }ttVBu+8nQ}Q\٭f֘q!x/N"fpɭŅ=HJA/ 7]oED]:)ݦt3?( _MVY endstream endobj -1787 0 obj +1902 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1786 0 R +/Contents 1901 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1788 0 obj +1903 0 obj << /Filter /FlateDecode -/Length 2698 +/Length 2692 >> stream -xۮ_e8rH i8mRy8`:(,{tY9dJܯ Gͯ? Tѓ=^>>N_c!_;?+tV ģADT"jï4GT^k Rp8o~~2T)Y~:L5q0)_1㔧|BP3a+!ÛCu3Znxٞ mb67ij#,:s_?kz=Ek'rr,Ct`52;Gw=>Lj0M@0~{;LEaivv ';3/y'ӎYͷQG`1*vBGEh z<굊1{?QHۑ_ -NVF/92Gropv)XŢ|dynYX_̛38=Ё ⎳:RMb|Ꮳ1;k``L9+~oL PfN[ƝGK6Mkr:rtyud,PhS ę́Rʗ9 rʽ ȅoj 0@&I>#Wi*WJRjPHVER0YuwkM!D+-`i[\X'>bAJŎi>ߣaFR:FDme ]TУb{!k ^EcrD,(5̓RY WqYTjwP,g0&:KǾ KNu /-aX[NXPzʵLҞ F_'gL Xꅃ9F[6I%V]:rZM~$`\/b0yLV -1Y7ɚXxU3rd?W:V󪂽K? 'j#2* {ivq)yUUBZޢ4]5π cUmJXT -f-$粉}lsEwXphCSS9UHKTNlL QJꄮ*m --u^[.0&=sgp:R\>T" $'3^0瓨j<Ѕjrݺ-% NٷI gg}n:sAsBz7fy<1簑ex|fU^&s<3!MZg 2xT9USʐShno#K'y3>-P1B-|p- e댹fqNl1\RQ7[dpo ev}^9z8wbFLȓ-$ʩ["4v83 լJ G|>o7q>k]v\a2}!! -_biHL -!)f$ +m* um)@}mE+( k(.!g٤Ae9GUBJyڔ"TdW.WmZ mɃp}*DiPBvJyOiWLKӧ-Ux_c_yN)3^GEšk;zR7x- 9f/392)ۖZjQ\20;,m=Wu!)7jByiD9` h6z3%.-4)} |_MV˫BEm j+wټ%e߫3 J5H߫sc~KEBLwSVwηpj\sXV%1(m _K<\t4= +MGcp?w?;3sv𲽴'/@x0C8+Ci}5}Cڈki@`ҟ(ԥ%V/_/z)Cf36Cg!K]To#e\)3c S/K} +xˎ#@h,@@ AÌvnuHV*xZfIh;ɃI)G×51X+WFsp| uȃ&xD~xa 3 +XńY^j.;u}垁:Mȹan`bv\sZ[Y8`24+nB#un9i@9i+2 +$> !rBP-WO| @R^kښJ{Lt5iSp`?󠊅v}so\w2=Wx:s[x=`qdnMZe@%@:),*feЁ ev溜 Tv@u` o2y@u8&PidBf<[vSF;Jy|˥C~C:|wFh)n]#nqp ⳛp3>b/uU+JEF>Q u9P +R.ɊKb81;ȧ 6~T2|c2!G.~+Ukl`%)#>TۗiWJZjPHdZ0Eu.k D+-`iY\>|bAJ%-@>ߣaf26gD]en]K4ѣb{!uLީQդhr9%=k"z$MCdcDA*9vZ6m2F8Hj~tU'M,pHY(&ǿKNe /=2`Z[Nx9Xzḛd#؁3w&ZE9Z@X6I"l%V]r[Mq$`R/bpTxtu+-rdM,K<*YW9H+bJyUާJqW5[}jץʽt8vq)}UUJZݢ4]5π cUt`BmJXT׭$缉}ls(kا)ア*!uUyKS9UwHKTNlL QKꄮ*m +-u^{.p&=sgp2\KC+ FT7> Wey>Z ӕUM[8僸#>1RZיн\nލd<6'+}-Qạ̈̄˔`4lg"CfI[lAo*jb*^V$(1v>::2I̛9iT½޾v!];cYt[m|ܛ-[V^m;3{z&Q[ F{VԎ-~ ktpo[6tf]{Ui. 4_\.N;*z0>Ґ4~ ҐB7^wƕ6gQºWN B^ KCmE+( k(.!gde9GUBK~)e.PdWWme-A{š~Ui Qj[vNBvD|xp(۾,1Nﶠ +J6VCC9{.j5j*j $Yܚ[(K)Z-!3j1\2IjV+ºKؔV 5l<7Y^)(^LKv MKTO_ڄk9nkW[Ƿ߯=\^aP])G^ƷXm,Z4VbsW;6&S%eŊJ8Y0>V<ٽRfhz0]48(Ώ +6"~zwY(HC;x^ė[ LP=gyHQWsG1F\O#%Shۖ$UVelw{ HRaNAвK[g7ƐK2M[O0etJ!P,( endstream endobj -1789 0 obj +1904 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1788 0 R +/Contents 1903 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1790 0 obj +1905 0 obj << /Filter /FlateDecode -/Length 3425 +/Length 3422 >> stream x]Y#~ׯг,$m`I0~Qf R&E[]}ih%?VhY׀"9_>>VtEK:W|}>i/|ʻs4„!= ƃZ kOtZx)}g肥+Lr<;H?BO'KM%fp_!= -9p> >)84.ˇ_a)PMxtkg,Cέp~t/?}w(lgӿ>H |xh+C`s&::ę{y^~l^Uqꌅ)BvR/VN1vNx$!|goSޝJw^@)jB.q)7ۨ1ۣ^ӵ^I ټ IJ×Bwo~H jG}I(1aF>D.r" _a5X02:3*2B߾.{LzU_R#.B&BčW|ws]ux\=s'ݛ[{\T Q~,=!J0#{ȟmNn8-*$IhއBZg:I{t &9Ҹ +JIlXb\Cu/:^Ycby }ń;of̄{z2$/][LX1˰|a8RO+iG$JʵK!6H6LY(R^YtڳZ,7 v:#5%ޘ~R<0 -/ww!aa^ZYA A*|șᒕ4-,zrǁҁKFIMgRnYb?IB_tx -QMl`)@܌)j_\Vn@uSX=xd7;f(:J50^zvS * (rO~ZSnv -NAפ:rGr3 *h(&: #xd1/9].Q+sxF:lYIvdƍ;7)s4vToaF2ݜAvMd7;]gFO}K6jsFf:[(aĎIvyd]T̏h`Ƹֵg7:43>6Acl\ƽPwn ?fC5{3hؑ u-\v3htBƈJxAyd7GAuN~AyoPr HYThǀA#Ct< -qɔuYeZѽ,-\U[ܨ&Z'%.Cp+Fw]enT:K]q2dZJSh빔ch}Sg۰"Yc\,opT,f?Є[7y]AKΛl:{'@,f|n0.y (X8.apD2–~[2$w2rtM2µB ǒ~:RwcK22*a`ddWHFdl7#b K@r~>F4qd s .7m\!J6Pb֬?cucذ/P73=l2_xr͠8=j Q3Y85XөVe15tadc@ĠSVMWn7G<ftt 9:W)nc-JX@=ç*e7C^[3vUi g7  <(o+I8K&ʘ ^[[^l'2m5u(tehtՐBdT3 MmhM,f恀Gsu&ۺ+np_Z o kcѿQ!,%܆u+ʥ=GSVDD~G.AZwCC}ڠ[=l}Kx9hd@x6g<2%ӣB?g&چm\34mjDjvqI?#~ے~&ԓR(㠯]lTMY9k3 CZO3-gUFD_.gpHʕ!޴<2k%5!c4xdfL5@f5,;()Cm_Sl{;؝2;;:ZchnDz 6O4lI>em r $?hƸn>fr׌qFg$Cw/p x̀D3#c-I}XK#*c L{eŀyZ٧,'/o@'ӡl*~^>_*I:k 0Ƣy}2w?} >)84.ˇ_a)PMxtkg,Cέp~t/?}w(lgӿ>H |xh+C`s&::ę{y^~l^Uqꌅ)BvR/VN1vNx$!|goSޝJw^@)jB.q)7ۨ1ۣ^ӵ^I ټ IJ×Bwo~H jG}I(1aF>D.r" _a5X02:3*2B߾.{LzU_R#.B&BčW|ws]ux\=s'ݛ[{\T Q~,=!J0s̟mNn8-*$IhއBZg:I{t &9Ҹ +JIlXb\Cu/:^Ycby }ń;of̄{z2$/][LX1˰|a8RO+iG$JʵK!6H6LY(R^Y6#I}@_k ԏFn}?! ^ؐpU0/-y,RUI񆠈|K=pVJGmW~@F9@%ImQ:m:#E%Yٻ +;E Pդk`YoVMu-5v:DjvsQ#xd6;@ }I|ҫ3QA!8͕c7xZESݝGvSlu +&};rt>㰝W,n@0iu#yɩrrv^ ^3aژ&pL[$3n ݹIy/MZ5 G{l$xd:C6z_Us_32{gDF &vL#3g쒨B~D3FH.?ס) f58vp4w3XAMd7G!ߛFÎL@k]A2FTc #٠<2 w$k a/Z":c&&٭e5k3e˜|fd "hc%&Ffy +%upТ\@님:ۆbycޠb53YVņ&ܚe68Yrd{ٓ>e 7[L~wuX8oya@Zg_&(6uKaMP RŰm0ҕR0emvZ``lg 1 *v + S,ay؝.m ryw@REJiyBʒ`MgçM>23O`-&TνΖnZk޽5,ꮹۀ +>wkB3V?W/j!Kw_hꝝ,8tMzKSOWv=&B,gww0Y8"aK-a;9R&ddcH{c}iy;s%R^0u[2ƫV$#\2B % [?F8b2mvuj6i%(L k֟۱1lABrc6zA/armЎ`ޥI.gpDϖ~[$}nX(HQ4e91S'?R2{A8BДpc[h#=zĦS'ApAB_l{{jTkm)qm뎚EGlSEqCqK:kF֬2?VCZgpl3)gzR +e W4ײ#=)K:gmfӼ!bcRifۻʈ2<Y7d؛֛Gf>ܹ&dLq_Ǒiٽ۬feG^%K\_v +~-{ogX&ݽvgGQk}͒XV}tA扝|ÖԁM9Ƕ;AL1~tvr9ހD}Xy#69\h{xdL%oTd:]M뀶[=09IG{X?o1OgJG! o|E> endobj -1792 0 obj +1907 0 obj << /Filter /FlateDecode -/Length 4330 +/Length 4328 >> stream x]Ɏ$W8ŝL`[lda5 HAf2TKmV4ݵ0,yI F!ޙ/[AwH/@_^hw &ƛaR(MOj=X__/~ԃR!oן^$q/_D*z;-*>xb=on_X9O}PRzgiX单q9!"r11:!Jǟ_?ݤSʈǯ/@+=/2)@*h[2`RG? a^uz笣Nsa=)aSȊc,h(iKR =hzt,mU|gJAi1 '5ؑHcP2Ypx# ''5,1i99#iktbӏmh`x58蔲<=A' sD @9yiG&\7#jR~ubiI䕡)ѢXd+eI*r&4.PGݮ et\x5R;N ks5ME<8u~]NGV%eIx;n@_fl( ȇw|4^^E^;pc @@ -25436,26 +26966,25 @@ N gxdlu)+0b5D͟r-v#Թ/\Jqa# 0pvJ%(O%J on􃱴{ƷOlo[٘-=ӯm%ƒe'Kyo=D³9?& 1Z1s S臭i6޴P9)_$K?gfY ^rn HQvJN>Sްߦź?(EIbtB ĜѺJ̶t ک==K"R*QA+޺fܺwFR@b$EIM9jOqeHvN,w3"f9KD1K_+cO(>DUKD˂gtMߋr}|`&A t@c=+0]oznN[|r?Z/S.]%'ƗTgcUbZ8@t0Zo ZHf1 & aqDDܟص"02 1Y-lzܓr#&\2TB)(m]>\xݡY 1Mnrwg}k9 -λ\Q+TlR,-p嗭\9 YSAn-4Ԫ բɟ1GxBJ+8*઴T˩ȩ1r/*&'JE7 "9aGs,)4}OpNb0/Swa ѫ<.syj!MWg)38/IߓO6(;M2W^i C~p2JI1M^ poYL2=Ƙ:_&=ЅߎǍ޻-&4?r j$LWL){k W2ٞR7%Utbl:^^W7HO1/Bo3%% kXy4~ _5]|cw .tXzRK_2D7'* X/vJ$askl +o^t:=Cw/vX1vXp/vTzp]q쮬֌'g4Fx%FX;Y5ZZ[jQ7%'9vη.FGl${FvZpFyx37#wG_+pCU'V7#C#9>0?H9|oU~ԎV}%7?:x1~~7d=j,0k g%Ij?ߢbab KT/\)]~`߾Xv_ ThI}q+&U 1͞MC;'5]W -BD`X -0廣`+)gCsG j? +λ\Q+TlR,-p嗭\9 YSAn-4Ԫ բɟ1GxBJ+8*઴T˩ȩ1r/*&'JE7 "9aGs,)4}OpNb0/Swa ѫ<.syj!MWg)38/IߓO6(;M2W^i C~p2JI1M^ poYL2=Ƙ:_&=ЅߎǍ޻-&4?r j$LWL){k W2ٞR7%Utbl:^^W7HO1/Bo3%% kXy4~ _5]|cw .tXzRK_2D7'* X/vJ$askl +o^t:=Cw/vX1vXp/vTzp]q쮬֌'g4Fx%FX;Y5ZZ[jQ7%'9vη.FGl${FvZpFyx37#wG_+pCU'V7#C#9>0?H9|oU~ԎV}%7?:x1~~7d=j,0k g%Ij?ߢbab KT/\)]~`߾Xv_ ThI}q+&U 1͞#&};.zLy59a~ DT pS; +VI"r[?> endobj -1794 0 obj +1909 0 obj << /Filter /FlateDecode -/Length 3492 +/Length 3493 >> stream xَ#_Vuy,IL Cw{6lJ,W* o(Y%F*BΞ_~9}=IA|Mz2^ڻs†B<{RRϿ~)^JY)+9'%ف0(8rk)ybЅV;a8b~9* ! %Vje_~9O_~<+-??d=uw_)KH5x4 UgS @@ -25472,1089 +27001,668 @@ s Zz3YNН+SD$iWBN_JP"bK L<),1'ߘ{l?Tdux/0x9䝩~1.at9Eޢd*\D>E^ h0TYephǰ_+0׌ĥrh/PDzj?~:o|J9!$mIg&y;i]R-93&hE{V1;NRߺJ -9a\sWl7D{\8R7(jdfeC]n +9a\q:؜/]hgb~BP CE=.[tRMg?b2Yl2F]s endstream endobj -1795 0 obj +1910 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1794 0 R +/Contents 1909 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1796 0 obj +1911 0 obj << /Filter /FlateDecode -/Length 3100 +/Length 3102 >> stream -x]KW`6!9twf)ɤ,Tv!öɪEΚ~C_rR1/o'bK}vQM KR>GJHVyg_~ϩ?f131SɗWй|'ROLh 5}MO߃W=uoykr࿻5QSW(ϗ5y*ڧdfMLZ9 Urڐ;Ï?oLF`/~b-:/!*fQL҄Afxx<2?^ʏhRc-GRZqQ9K6ڲxeܷ4㨙P7H9G| U1SIPu5\me/Jf4gqp_=߯2+)EVk l6}2M.g(~Pӎ5dWl1[wTKX6Cn#pW" ᯄAod90GHT&L2a|620{Xƅ78~_kanՈg@E -Ts`h&!u|TFe`|H EՒ +x]KW`6!9twf)ɤ,Tv!ɪEΚ~C_rR1/o'bCdٛ)|6iZϿ~=SyVEcg"c/sO^@j~W=uoykr߻5QSW(ϗ5y*ڧdfMLZ9 Urڐ;Ï?oLF`/~b-:/!*fQL҄Afxx<2?^ʏhRc-GRZqQ9K6ڲxeܷ4㨙P7H9G| U1SIPu5\me/Jf4gqp_=2+)EVk l6}2M.g(~Pӎ5dWl1[wTKX6Cn#pW" ᯄAod90GHT&L2a|620{Xƅ78~_kanՈg@E +Ts`h&!u|T|Fe`|H EՒ s򅒝 ;A̜'V޽c4 hѠ HV-nZ֡T6!G۴y6j4 -ڃ:FӑI֛\r~&ӹ1FطȖdCS!W)(O')` cC瓓}k~ <60A ]^ehS_`)Bi^1PNaykLѥ9TZ.rH&RK0`@Vd;;5+^[ձ16 2: drO;pOGkv{b -z~m=D c it vyF/:8qq}O.8nzTp%}p\-#J| +ڃ:FӑI֛\rо&ӹ1FطȖgxi)YbҐ'Ƈ5jhuCkl.L4)Яt0U +4nc ΰ}w<˵SRB*j- 9$V%@0~H\ymD +pXFXqΉC`f29ݧ^Y#5 =S`=m=D c it vyF/:8qq}O.8nzTp%}p\-#J| } ᫀGr[tWT!A~lIek{gD ?7}h-ra|P!fjֺSIQMyuJIhr%Jd-a8ӧGߠ8DR\:XqصE˪8Օ 6-ֵ^5t*@6@>a݀NpM _S=ٳ3^Rvm~L%rW=nC9yQJ&A@z&6nm&!Nhȉެ@ nxcv}[ 1JCʯbVR~=Xk$z~ 47O5Ŗ}ӡ;5=O{y@C]0![.7Rw8h93(XW"~F-%~FMM `J,x *ow|jŹ6\xwA.̈́w_pt-%ZpAZ&)+ -Y_Ysƿ g]|t:92MF:.,g^ s8'cH*gpۑm?&G7TZ_wcp$wRo -*fѭ@vwv*=_ygfrg詵wfW82{x-K.䡁_<7Ymv Z.ŴPĆ!p1/=-4J42!}t\rK6;wHzX3a;N<'\*sʇdhS\F 24ua*?ek -Ԫ›)r*w6P%ƇT8ervT K{䙈A);d"INt`z -5q MS_wn-ӧI.cڜ|m,Kqϓwa];t[pRwb/r~~N^t Ll ':ZO 49O ޱ01k@H=!a,|)E948e}?~Fr-TPgtu᏿OrfkN~smZ͌'fkv@?3Zo;D!OdT>0[0܍)8 -c y-`(!S e23e=Ee -(֌#:6~S-`?n0 +Z4-OP3CTegs*bE%"1PUɻ;BXA(Hx7@:T],PxS *wE֊9[J]%9mhIwRӬSʥˁZytK隧!h\ +aY̻.c|t*@6@>a݀NpM _S=ٳ3\R6Jon}]3U]F=AE!(vzܷ"֛: !'z;=QoFrt3( )YKGC +pbai)b|\Xc^{8[ٵixÕ(=ߥi4e> endobj -1798 0 obj +1913 0 obj << /Filter /FlateDecode -/Length 3327 +/Length 3020 >> stream -xɮ"CdNrHY 9M?"EJvIޛCm[Y+kcY?~}IጤMvN`JEAn.ht&O^@O}%@Wޗgk`!6P8c-Etk.U DqhiW|"N/` H',F=gLLZ -mWF] ё㋻q6QIm` MftjB\)yFM(F{Cd3.SR 37_Qi7hgGLl -jkiBk[0ߟuVJ,A+۵lX,kn:.XQ&We'BG -}t - F4|݂끶w=ꁛl-%JkͦTX%\x9&? fOЧ- -G{.~U -v(S|[e.LNfJN@+MrYyr}z69D'4&jخ(V,d%jĖq\7(1L~n -&ҹ8|܈Ǹ~ 4ij>bϣw^`QXh].u5qjvcKKI,|}c諔T˒M+-Q>MpI -SJįm{lG-~5R"Q e3-[kAC/ӥg)J{|VcPB`JmUPDU):IHgV.1|4AK>S09k3'%YZPev9Zrvjj9:Pc,Q-q\ǃiMBޕbtj ~lx#,Xz6vBJ3{/Fa:.sȦ]sNAPFe6XUPRǐ;}˰}l;!-<7ȇZcS uvm=qjCg:1䉾W\(:Cxf$մS6Q8TsypN1ewvNuesAY/Bcm=d»t n/{DUĥ=Gdwf [91l^?1 n*VCna,*Wr$>F=hHp0{t6^(¥wnb&._M[`Sj cWWSf'MdeL:8B(vO@`UQ ث'F]L2q8L{4Kh7ḁV̆.8pbS\Lx%X<Дϲ!/jOٓQw%PX.=obl9vB09prRVމ -`ɕn -rMW'㷄|(d[ɖ߹< fl{jkUDŽMUtWW:a(z6{1Q|^c4-~}>ի+xzH7Tރg J~3;k1. -VV -ClMן2s|y/S >rhEt&[D}N>&Q+J!_kG(h1J鏙A"t=xH4-cЇ".KEE| pNJ:*h |}KaiŖZc͐9C5[QٔB>*VbU# ae@IYC%d0 $h/U/.1mYb?7R!+vS&}.{ h :SAȠF~Y|dl<%2V_s*o#9*C@1 +xˎbs,0I &A6lH"%J%n!2zS g?/XP!DI+O+foʏ'G2ޝU6!(m?DTd?N>Z(+~~ (}74?}}vpxmpWZs{^F~xG 5`f 8VVG0@{6`_9㗿o?(O,Y/?|MY)2F=&MaY-Fr`)J&: V{$dY ŶCK &(kHu6ЍF,\ /ZIod[3$/W .1ﮬ!b5 Aqgzjae +Ȳ.4R}D ١ Kʙxe{$rRGamTƘjns?X'4[voay=B31VئyanoCa12$;-,Bye(ձ {vS+;1ȻeZ6iu,;zhَ1 >2)͜a- l GO@Şms7 6AY`N >)*hI%Er/1v;蜺R4R:Siۊ36~t)'z>==q?zu(wݧbnz?i4|.}P{r . kĺHp庙 @^*5f!MIk2Uo%[N):6Lʅf.̖{Rnhk{{Q<f]-GMQC5ڰWލ}>hr+Di,\vVssHڽf ,|H0Y9w[!5pAcUy0Y)Y}$-wFM[:c{ HNx(3 K׶hn@z#JM/F7>謏8kd-Z(328ԘRm"Dqʩ-ڡM[+4uEG:owEb~(41:Љ!7 nweS~[Vrj-9t"9qseMX zAgѮJ*'5f/"ghvpJ>4n{~ JL#N%#G M79ϥp}}{Jf_ޗq9=t1Aޛ`fq@si 1֔7'=MڽΦGe" endstream endobj -1799 0 obj +1914 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1798 0 R +/Contents 1913 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1800 0 obj +1915 0 obj << /Filter /FlateDecode -/Length 2677 +/Length 3007 >> stream -xˎ^_Q?(z9H$d:{R\둦mU.IM$R/d1P;>ph0%H!<_zoׯ{(ٛhmL!!QχϿ^j|s /Q;(ښ:r@X[J͞ǧL֠́a&uǧ_}oGp&^?~bzOǧ/6Σ _ |~s:_@ڵ0@aJt$Ob|:Ǭѓݑ!Rr8rU"G 6pɂa7HiaRfЃn{Tu- 0132 C>na&0cRL)"SD1m^}=cB`$d,-pr - w& |亘r&11fN6r%&#Myh8!{'e]bKq dU${'N&yrX-q0ɛ d`! - -ɰDO*vBU/ej wgj󂗎dcmsƠq(10g*.X6N1抿bq>w؆^|OyO6NYAEgpLn{s3l[B7y -18jN; b'[yr?!1|-2h޾^/ ȍ"Crx?N&DD;5)©I}RrjBxSX:GguX*H3!N%T:ZW9@Ϩ9zoa.>;c sX0x(^aM̀مvbϴmwpiFju5` e!Z] )AB|LW99uV"5 ‘MD QoF])r$GVkġ cAe}IT PZgWa'ԅ(RHj  9"XݫB"PJ 5FrꪞS+b/hʘL]K2e2\? -N; -zPVS01W] Eґj" .h.R/ Hu\:Ԛ7TwrOff,,{" Ί^d`&Kah -rB< A;ULk)'gS=@ΜJ B<ΫpBc *l ¦ھ\tj,jo,iw;>u5oe]B&:>Wu| ;5;jYp۪]kB(n -`h('^S:u+ƚ Yy7t/gkO %;uv!^\awN>ɞw(vhb}\5t +x]n$W {}Ѷ0|Pi9?`ndVUJ/3:XB*keAZ~G'2S|~UpZ~O̞toUo'THN8F(*"mhrl^N<甿UAÙ(')}忧Wԃ;eQ ^ (lXkHY] k;hfFqFX'/0HY_O?/ۏg2*xcXI$k[^}`c,+9B'Cv^krr'?Qh5#hwE9Ao9)k3מnΏ_`ڢ>gR%perQ[ӏ\3t: +W0E2q`vV(=)+ըVפ `W&-Kjf!gEq+ +d"6EE)FTnFQlt7,|CO(4*'f[{9$;/ǃ^gt8s>vy|vwO FcRzn3=x 9C'C{G#赿RFl9͐#tja컯5,TrNN(2ѱwzdm f&i1i%HJuz :YGP|e#z䐅I $}Ө힣JɭŖF8Hcp1 fͨo&.7^5*#@T+E}IK`2i"+crҒ |ۙ  5w=*(}(  s,F$O 𘢥l@%4HJxXq1Jdt3p@^Wd>b.ޘhܘ<ː K䋲!1$|.M:uKRmTx7N\ 9Yt1}st+@A9sR ,F`tW5*&NQJ5CZa~oݠ<~W1~7 ?呰 7Ԅ{3 ǘ%4~iVY 1x]ZTKllPf;"?Fn…#ok4MfeC =@YS{ߦېCXNV"^5ZyT02eǔ[3NX@I)n xޱdbT 8RZm7yW[ ѱSv5n8x6aW7{V؉#J`ۛbFjtJYcbӾ AG t߫OΥҷImY)k ³K…Jzv cEelDij'o@ط~!>dt0UHdd_"ċQ:pƙbeVW we(3~Ԭ47;o>Q\c@x,/Fizl߇ȰPz8oۇ:!9 +OU\xd/ (m1l?t# C_R#;W-JwoU v㕊dBmF;l·-r`ET@ ʩg,җ$f%4.*R2xA-!swmy'cHRbja~`xb$;9:YbY|m,`9s ]xj0I*Hs3aQǫQ5>= qP.='jɓw|;oHhEvnQ>`Gֆò,%[ s.W40$W SE +Fߏߺ"%:?圻~t Q+/Zg/ZtqrU'tIO<;H>,#pψ0Q{pMk s7[ ݵbC`fy^>En 8ust9/ғ endstream endobj -1801 0 obj +1916 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1800 0 R +/Contents 1915 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1802 0 obj +1917 0 obj << /Filter /FlateDecode -/Length 3142 +/Length 3173 >> stream -xI^{>ؐAQE202IVdU0jrc+lJ^>8o_.R8#_cv.~('\05hRh/ypR:@;~'./h55B-QvqD xc_OO@сFLp NK˧06TJ:*QSzV B{ svvBɩgnI2ΐn j$M瀾@`鼾lo 8kHN贁04L`xx) 6A_?~ㇿo?^Z^?\|?׏.x\T*,BrHȆ X~#,xЧiӱRG|tN0!;7r~ɴS{>7`s~5vf|ne/ޓ -"tD3 L"&>Yxp7u+Q}daҙ;7ns|/霫$gH:ѥk!ckI@"j&Zy՘QnRz'u -}hL.@{' {> `!ݸ)H3HɢD$ uaSlKǹvBG3Sq6uXQL֠чb Rd?k"%tF?!: R'5 -$f/͹/.,˰T]Pg'=nu e|x<\Wז Y"wil$9Z-vs;Jw?9H/ Вn]s(,`28;'tX1 -) -Am=E}KeX@xHK,~@o-e|H.3Q乯~*}16! deR-Ƽ]=U!:^ NK[*8Ay@It)Uq^\fl+]z;Zvʐ( ($ؖt4++#I8%[^l@"5vxӺ0]R+y[XN֗XW8q3t~l"Z䮏P^) Ԓx),_ ?|dX_7!~m7e PYo |Iކ{9u534q'?1b-UĻx24NL3USIp`\OwQVl6&S3&\h嵙tssWxxM N/kE^|jLe~<"zN;3RyUH[*T1f>tlĪwwfڮ4TC˅&Bl9rę`6=;\x=A]6oqפLͺ&Jӆs=#E-Cmڵ4!M}nRrGfuklL8s|{zʠoڗ{Puh, _}>6âJĮWPNԜIsX1F6̊cdI[XH}~`U?8Cl)-( ^[bSv7%6qn[VZ9Lx]oṀ==_n).;ML0)6u>>´"'T J(6gȄcklفyJY1y+\մCLnǃ۫奎I'LoՎhlӶ3l]6*{-)jK V5wg![vTMM:*LQaSQRرr&~~.-YD}rDfmA4t]m;mY?}¤[n Ln V8x ׶n 6'-ܱ{u[v[ÞpѳrBg-L0.9t@)oB{kIYn ^n Wz-A;aa]f㻷G8J"¤ѵ3 k=5N7-FhK=a )he3,F"q]nт0ejo~IM {E_K^FcHPDK -?pɺ ;+kT_7,~2O7O ʺ'~IG񟛨iܟtw@@zCQ)%!'KZ{ܻ0ߪ7O= +xIn$^Nm`RMkNcܒ̭d|TmY1Ho89o~|pf5ǟxEx}HˬšWL9_-87dZIo_} ߷^2˹u + __ %P巼.F3DXxp+|_]OH9 k4+!vN q:a).@]r/_~`域P/Iea>@sFR.]HW|x4^E:9eI@JIÌ{ǃ(X|] +@(*<RKGPx!{JP Q 054(@5e͊DjLo +|&}pȹcpaT.vZHiO'" Ţr|eXd!Iܒ(ckML"S=y;-ŸNJ>޴mr|.2!*x2*$s7M\Ѣ0J2BL0et -b܁K9HpyC0^Uf0al?X9j1 qA\Tn k8(qi ;\Bi˺WpGk+&Г0 P>rbA(߆-B NgBdK'MI£&E^||~>,.0^XU&DL07EL~aQhP-YDx~$L$klNb!00:TDa)% Tl#y3nK5ԭ?wRo*Q!a9ŅX~*(C=>-ҭgTͥ@z%Y/_;A[n̓cc"\=(W2_'ڪy-GXH׊$"b^ϝ@)gd\s_[!3;@<؜cTm:CH˨*"v_WeˍsHq%[k ݥVk[Ldp+di Xɺ?oPio2yh^Jf!0B3,ũiMc,(<=:}Ր:K[V[xC,m="f /g}-wBՕm&UQE 9aPȐ2yM/-!ydsxoAW{7xOZs&»P6MeէȹRe'_q1ʦBu˾Yv~3%?f|*%mi1ٕEu`=:Ct.7g&2=9Fզ3ZɳsٸRDLLΈ3&7|`N\xM FYhCe<,0^Gyߵi՞ϐsNlDxK%2j& +2U}6vn6ZN\>MA<Ntn68̦ ;)J7iX[w7D{eŒ4Q8AޙuEw V˟pkஎ(C U4!o<SvE7^777mulm6 S_YDyNWi>n1Gl0&Sº JaK#eT9J e̵fnQOtPPɉFe0){/'yY>g\4(Gѭ}(:"Î#̪X3i`V|˱kY8ocrK*N)sTt'}i4zVY^5'3Du:Έn%cipb@>wȩ r3n|sfMmDcJpO`?y{2:-!i3l m5*RT᏿Ǘkhv ?]K'a::L?'5 Aw<V•Ä;Qso /PN\G hǗM؄ f f9yf> endobj -1804 0 obj +1919 0 obj << /Filter /FlateDecode -/Length 3352 +/Length 1112 >> stream -x]Ɏ$WY) 0h,#%C48\35:=UE2K+?k3g8t%fN/1t4 Nx&.*ŌV/?\{]Pq -!%3"Xob qrY0~WԋJ4!h&T'Ħ:e]V_Yiw{f]1rAH>+Lf:sw32]ӇXw@mIs~to?~s]^/?\'ɐ[ ͭoYeO~xz) wDIcԚcW=1}nUS1z>St=gʸyUY],V9WԼ 싺˷5L07|ԥYө2)՝i}]3S a +2ih麾ohXgR;n9L+fn><(6dto\J=񑛈7nyb /JKzQ|.UHFrMq 1R\ <*FQ̭!x[D烒$gVH*O|̭wyRPuu(@1##SOe&Gܭ.Z$?jrڢHuwC L` ??:ӎl:>~u ;TigC3ZEF:{ڡ]z2+{hmi5\ [`6(bO;n~^sfkO3OV=8AĞv.&fӹ5c:riIdb:P5~~-%uhPe d&O:e`? ׫2\=6Şv2&朓rzǪ+4@m|G_ c,Picb6'UnȤE0\3w:yAx%Bl3M@L躒')DerhY ćn~#`ı:斒q̱Ƒ%bT6%O|dd:8'vʏAkd Aa Ͱv|Q_Gzh5 2Hjz؁d&z R :}^JbA\0p/;a>tw(HLdLLCn;3JlUh`qm[|VŠSʾ,̛t2 Ӝ'XqvF݌fM=+xrTnWk (zآ3![~:3l}'yڭJ}(łey!"YTaG”EF)t -)z/|wr|lĚ z%a8{X P-8;m+)h6xU˪U1gTM0Oȡ  .PIT[$zC.Tx3.@-&.r_il!c4,SDS)͖LhA՘/6=u2j#P廁npn}Nc gQͦPVgctT{ȤA2b?Ntr槜2vA4cYʡn`c[s;2s2YYG&Mۑ #kd`bNhW }Hv1@zi;o -X`:oe-g0DDr-?d u}">(q`YL1(ۤ^P۫lK0RoUV!=FBx|.J՟WR :`$3|>>iŜq^-^cщOϨVa-EAakEMN䫺֍?ڍO䘘f#y]Gr8rFrP0)|PBWf̀>?5)\zv eϏDP\hr卞,jPǽoւr4%D""o~|#mfs^2<= C'T6p;)4^M^AK__[ܠ[(h#)b=+HD*LA?*f_wyǥ ޽rx03x  +xYnF )pr(.i@Ccr$9gK[{E-ɏ W`*Z~=wL??ܱ%J*IJR{Ò؅IkXHk.?u+U5 O7XTfp3Y̚&7j45teKă'3cs"#뙺ŶIOJgs{~JHэR.ͩ?U!eb#-};)j,Bw~=RL$onkK]}7RҠkbc5O +Ͱ{c+Ӌ?.h )W 8l+"^L+{ RFhv/=:v𩏧kA1}eczOeVJv,Ӳ +4@[ l olQB)f(:% 9bZĽê)gV7 a~.({.,1eH+5^1W娚S@6f0$,c3 'ج4k%t9W?&&vsywFިQ0"Gո^}/+i1,Ϭgt>POYJLnn0m읻O :0dm#<<Kinnq7VQLs endstream endobj -1805 0 obj +1920 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1804 0 R +/Contents 1919 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1806 0 obj +1921 0 obj << /Filter /FlateDecode -/Length 3629 +/Length 3303 >> stream -x]ndWYH 8YH+y-^^d=ݒZEJ]%?~@Jϗ)/bEz1^hwHBP!^ -B) a鯿|K}RJi-. uM_~|󤄼+H-YanYp2_X8+os-Et}JygyXɪ4Ffe:$cJzHjE?_]iMoyfMӿ/Ԕ)!F/R2ϒҫ^:G~ 95?5{5,Z?QdYvɺް:$̋Rht)]tJoP:*JƦaNT=QpC9 7)p89"<c!bx@-lH/1\#F+360F&M.!!V*c~<q -y8DQIҘTR;2* J)Qp~8$_GQczX?8atY2x/mZr1ΐJOd{&RK# I=C7M0&-*k0JuZ"P{gy9:Ptͥa\;X+TS.4!/C3a[2֘S8Pޘsc+Ǔ%do4h8|xvQ{ fgLpPn2CƫB1< ޚ@2~a&{-j\hT' stbvc^ r;kQ\08NK[2'cuL1z @- -w<ۙ1p71xD0 mxxyڇq]|,fA2[w{H[\2T@` 1֭VqHԷ@41;GJ v!/Syx9ă:#@2c~t>fHtI /7;5 H^VE5*)~~9*x'~тDؘ 'OFfr5v5DѺõ"3LT?̊a[l'h[c'`;mX 9Fz~+9>@[X-zn-.4UEmEc=hNA10"鎪 t ={cw@FxB~/ mՈlE÷iCBuzQoes4VVo8!RjffkUύv[u`7䎺\(- ,S^)FW;18 )oY7҆\'^"@+ Tj:U >̢z8rag[N¶X0Lgn_ZjLҝ:ԍm4~y^Wq;+b"B(VP?##%}#-> K#Z|`cj靄6JcX%o0GƧG[rmA5TjݭNU5%kGZXw >PIGбczvP0Q{{<-sMI|<>zNg֬%A֠}'ٶn4dY(~ވQcs}!#!IUc#TȃR J)U[D:ٟzH1YE/ȲIk!UrݲGVAtCX[^TOayY9Da`}܃laCO% ϭ?Ϗ J8 {d.{ 50' W{$bUخn%/Q{`ӹc׹j)b,TUڀ4fcR.*H^0:(WeUy -FSUZ>d^ HodFT!@`W]Yꈌ5*+ [DMr/(놝[ -S݈- D*LO Tb|KcS] -œ/]ysLWEnUVtpxRW5 -1R2*uNuJ= X3[ˮ%/eU[9lĄ!w5[QKbbkwO~kWGUCoQ '_1HJSo/939*g Oiu3`gh-( -б'jrU,Hsg, +WUi.'ru`YJ^-QFB7H^okSAK%cJua$j75MW?S9Q˗ gVsK_.`ZZs)W+KL+n|x%Է:{BJ7N~~`/wԉ?5Nk!B+& |ѡLqߣː/Z)YԑY瘱c2 faWFS3;[oF +9^ ̈́vn jA۫Lwz_s_ԇny-7Fyp}W/~:)}h"Ѱ$A;b'.ʱ]y5Io^yF18Tsō˷ :ruvҨc01oMLj }ĞC8NW,<8K̢pPk^oSU W&2P^J(TwF(T` +V1o޻V Js:{kE>-]YiQߢ! xj@%CS6*$RAt*B%K0pibO=L8mn)Bd۩Rh*›A|)Uif*4MUR*1 $8tKQyM:1#*O|:y ,S:(bסDL =ש\P7KEFhC @S 9-@3Ѥ@{8hb(֐;<)@ TWݩ2gph05{ib;&fehux9m]OqOw(Mal:^YUbN`Ji/ހxnF{41[ΎR9 l8]-\ J=7A#=\Usj&pCb&IQaĬ9G pCd[+<v(M̦C4]41?YxnRrMq+\0j"FhSCfFsjCUiLIVzM&0TGq@A]m>l。ڈ0a"AsgPJ98j=s'hbT:؝m3[=+"k0Ri%gicaqa?ocSPF%y +& )b~V>ݞ &4цyOCSaCJ2j_ <AxrszFzSikE/&Bl||۰Ӧ-3b!쀠@G`N+?{#uZ%b2M0-}Xn%k%uLiTLXp\Dz$MS7޽᭏1K$K5xEMޙR~^B[cuK1b,gm 7Q֩v1& e;Vퟅ?5[!{q1ߺ'ASYT]ky&EAXvkN`8IX+iXS_`ϙwMna]5@d?O%ʧLI&u ѶIg-7j~)C'? #}uZvCzߺݐYɢ62<2pYA&41f4Eث}bߦj~n-s͇vt|L0J`ohUy +v…i:+KECʜ0'oU%R3@̦mpV'C 0Bc~ Ms_O{lKsܷW%)2TN[n>[ \\p]zq!l?7/4m}L(Ws @ʦ +Y4<:ooUsU8j'wQ6l}|=_֫Y DΆ h=|6%(3ΛԥHF{GNàE/惃Iu>뼮Ks 9}mܲ1=ZS5;6|ڣ曡]^vU"뼅;P ֙=hbz5 H3UDfg QͰjº*=uyx~ُ(]̋iQצf8Y M1'o{񘟪G. .AjVü^|߹%p7Ј1k o8*Eek_-#Up0 Pf'T&SPu5w; M8HS#ȑW̼| kEḴ#J$ endstream endobj -1807 0 obj +1922 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1806 0 R +/Contents 1921 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1808 0 obj +1923 0 obj << /Filter /FlateDecode -/Length 3714 +/Length 3415 >> stream -x]KW!@$9$< 0H)JD{s4<ݶ%},H])V2b3Z^?__(1¿pD&|gx}CS諓DZˬf c P\y?8A ƚ+cŜ痟.?1B?AާZ1o6 -ڵ҄lsyXRet3Zeyw’;-%: 25Jʙ~Ï_xe͹ׯ??gř]~e -* -Z̛ũ BoKQ$O|4$08ËssVzz l א5y9'|w?[#co[|O5\WeCP[.\(I4xed`Z{*%8ĵ+!d.8z1rG3!ny DAEZZ(mZVTFOq0.Ȥ|vZ#,ڇsf -!ʹ{1i I V =O̳4Šl5%dL\p E>@jÓ^'oUOzģdCwz\kL&Z)_fW - ;8C:9R'%F%id33=R~F Wd+[i4h5PZ]ՙ?uc_#A9bDJ+tv,v6R![Jwu<)ێ7>OxxucH \3 usVn5Q1[q$qr\(>aA%FRE٥QBp"%v1,y؉9>{Ksh1jzGۏ.wX3gS|'񷞮sU9?fFE*+GV6ш 6 D hp$@hZ`u>H63>#D$DBM|JiEcm.vSQWNdžcRxSЕj GF_.n6ttRU22 - fR[:$Ϫ< tx|{fyϧ~*hą4N Vi)" -RHbYhݕU'TBq4)q<iܠOKA$\|yL,eM_:*;@ɠ+C\)&T H9'`)o)KC7 -M5 -5 Z|rWn `=V*Ū qг>9Zff,؊VB*zi{1Ip2@dyw*iի [<0p%X=G+aOXDF\NCەqOgDkOz;*NX-6; VJ*\r׼+;[h!58 -DH Ȑ\.^͈L׬hzk:;[g-D\ -͇tړ oX%y_polcR%8TZȿc=l'Xٸ룍Q \kO̜zcLoZVfaT趁"}%$8Le+ ''1aHyZ'҂Ӕ9dLmzvJRF )/=ЬzAWZc2V%S@#]_WVB,ySiSz+s_oڛkf@Af"}MCmyU-*~\Ml1| {Vi0qGH #i5I =b| )BOQqX1y,/ly;PrFq_7p/c 'ojgih$2+*u;..DUUa_agUc`L)#j5rDhh4r2rz8Tti TTIJ탻X/ęo`g/'Μ/}b$grR`砙^pv3!TRh;ӿO.(8wޝ7~݋`NDh!Uro S,Xg,}9 ^=Q3)NCq\/'QsyDCpǼRO}ßB2gO4_~h*$>Ds#9ot/殿M`U;;Nt3M<5=6=q->O|_WIiVw_N (LpP:06 Sc\v"PNEKp +2V׳xL8/x+rdΨ}(U"ʑn:%2o@osJ7#sqI΃;ec o߅ڭar2ϛ0o` N2Ts 7퓪+&$BuX.sQ(gan#.0̻Lu &jL@]҂̡ -'S :kU[Le 2;BmHJK'$qwOF5`D,+rɯgҮɒeFƳ%Gc,GXG$1*a:l7­#ѣTq/ @2-CycUbsZI:S:PzjS*>'}] ;5ar;V6x%q;R?Li]4ai +3kja^-ƷAcQI:an4x PݕUBf5 c =R K^ÃN$faA|Z ݔҟ2-q]<7&A tc{l}ĭiռ( Ǡ$M6d۔%r8&Ҫ;hkg6d|NZ +Q-L}<& +[1j]dLNoҌ Xسz3@zl$u}0Oo̚JŁjEfŁYƣ"pr +cuQg#$c335yԂ J8XO.6ᫍCW Y|'.YۋKҘK+\a^xSXAzšG~f6(X`;Vq.dtOc{bᦵ5YABN@-Ԗt;yҏ..ርץ +|2lw:}rmJOwn_76ѥW\KfiJ<_VL)vܛ}Y&Vs~_>^qKSq(d Z O#-> K3Z|`cj=(ڨviv^sz.jíNM?%rGZłݎcSڟziNyj7OA|3 +uo^3Ҵggg˭?ٕ%o;:j$"״ԫvu-y==@a< ~r)-1R++ڀ^3бr) +)90<5vU7;mv{?|9IX#{ݗ_1%I}p:mc(6l!JS?QKcF2|6UEX/If[.u񇕃T}tڮ׾܅Q0(lf m*¸[A_b.v<(O?;>Vb1ч endstream endobj -1809 0 obj +1924 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1808 0 R +/Contents 1923 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1810 0 obj +1925 0 obj << /Filter /FlateDecode -/Length 3227 +/Length 3554 >> stream -x]Ɏ#+p n탍=CUMל@pL2$nBR*caċYHwt~$_N IP*ijWA(%?N>hVJkaUt+9'%^Ѕ;~tVk |m_ɞ(ԅV;˷՞Ja Aç3HA2:Vt?NkO~#k󧏧:] S5Yl0]'˽$֚' -nB62d&9{yKbˤ,;cGG6, -&V8 F~Wt_R4+/TD;{1q2HƖQ̥{RMkKQnɰ:KqkLcfZV,汥Ig#mIiDu#HIϰ&y7Q&D䏺: ѸkmeF݅`XJ(#]-&]{\V;DnaI#\5M`u}7Ox-cZH|띫k~[뎵n2(D:00 1}䋃C}t^ l nK5=4v^ -V7TlfM认0kcW8 ;RTh MV t*4!c3R`(k^(&{yneK93GrZ6cLJR/~:q(&'x-WJJ^nAP6b̑ -D nadr0+MxV`I0# #_W&OBs)G86Lv7v<(vq \49քxe塚A#6Ġ$V++$q!߉%|JjќHz[P5/_\i^\>ep98JSvJAY~ݎV<Sr5&o;.Dz Jj@U"HO]+`oMclۜaMi6x$ޔ 9^!Z]߽.GDfdGW7^fOQmLƥ,TinFyjɮ%aKJ:{/(ܦ״R@%!KGK>@`q#@zfF&ۙ0HXNȻ H਌ K"yO9mSİ>Hvi׽%#EJ%#r[%Fx璶屋^^EqPGeCFա(: rJ綩␠&e6:Uh&KfKeoT܏|(ρ0%Ek}li7(ǨV=wj3cת̱ -+:΄ ==OJvcC`l,{wj%7JWՂ5Q˺-SJee q[X'[N B;հm 冫zh׈i#P};gڬv7?1lHOO޲"hfA )U}o 2}mH܊ԼM?~aT^Tnb&GKeebH_HdSz`XôdMsiW~kӴMrG +xn$񮯘⛀'9$< I^vHM6=MJ!+̎4z?Y쁛ğ wOORx+_bG~/I{Uݢ&!4Fko?y}K郿(%,Dln~ B~Z@՟w}vV= +[ +>k)ͭ刔Ѕ IZf}~* ! ^#~w_)eӿAꙏO}KcA{4 Ug)S6B((U \^-3E"\Q Jkf C)(g[ |x +7pΣ氥iKD+E! ZK-!<h +\dP, _ FmUL6(|/;qh +e$(kbg!8}YBkk^;U MUB;8Zh^5>ކ)VO軥sROo>c4\؟"Ai5_BSM h}׏ц  _\__ M Ww-ꉏꄃڢwϥϠ KypS +35++|+ Ixx! l1zc@H;I#!h&^J0S@y` +t&\`ӂyjpr2r8訔W~=3D2 %+ŧX7p§ K3ٜ0Y,ɹ`dgߒr9CK8 {#6o8qf^8ӅEZxTe q(u97j , a>f@+ؒ TrK➙:2+7Fi 򒁇R–1׿[l@%XVHa2jaX/TH)Z{t׬Z$G '呃K~kP@ߦ\\%`lsy-_L-F~y5͗ҩkN %A'g.ef +0KŒvzfjm onp%J0 ciO .Ӆ^ʴB[UtsmJ"P}3l]סm5ɆM;$XgU\_ؖ~*\׉0#{TQ6<祢Z}1;2si0L/dT1FAO*ąԒr2yNt3JjoE0^_YkMS:_ߜڴ@zJs+^ߎR> yMEX 5Zw`WDڊ/ŇR!50: F sL"P'  ,WV1ZuQʥ6gXYO}ש{ܱx[^톔f .wϨ(RܵN2iewDkFRo!ΌBc>cVZbT#Mfsyφ wA1~$B&nlP +Jel5y 5T7r#H@&=[Q@|Ѿod_Zw~' 6$y`w>I3n\W7[L$U P8ڌ'WTB@}hp WXÃ{]2;{m[xmvw7e$6yx]MPi壜_DkfalPa9@61Zl0viVgP+nRyy? l̆%Gz1[akP%z2HbHڽpg"&,V4%¥k!8*?}"ɩVA2~KL>L`~w3R&ƃͣ0]L=Ie5<\o K=47@zv> endobj -1812 0 obj +1927 0 obj << /Filter /FlateDecode -/Length 3542 +/Length 3802 >> stream -x]Ko#W`&a9XxO`6HEl2Dz]bl:J~`H3Ǘ_Rx+?ϷG;F#LSDRi~Qkaz߇}RDJ K>A$^Tyog^:_7[.w/CKZ]O*02:Aҋ`"s|Ï_?x$%SxgTJj 0#Y&$!t861 wO3.K5IL{z jWp^H ZTpU9cU)9DN\d 2I[E0kK7W-I'a226X'H]Kr)ͯƝ m&5rBɜib^3IlfA02_$fRґyncdM;S7lH -yņ0_bDK0;6VP$ذ)1xۋa?bvHo4JF +Í@Gz%a~&:ܺ^ j; 1`H2*ɋNO+U` ^ P+fQq 2, ? #+lpܵMRW1|D 1iU, pi5|=mFe6!41(uHkbc`:Q> C͒9ڶ!Vh*pC\SVd4;6fJ,"wZHHxC8\s.P,':=u8 u?=}ݭ$k=ѩJ1O`谲r*H03S7ݩT-'2Nix7ǜF.1x˾q|Fס "  t dM;ւҨ!.3}F4U 4[LaKR`u`a`޵-Q+ 3eJFgA/CΘ54 nR'kcXmKc(;:(c3 $jK\IDm%R~]#=a-/HT@{u,zLM0ޥ6麼U"ip2[5*b\YVBqS㭂K -S`[E`ᭂ`T,xgKVﺮ -$8]+ =@uZgݾX_bYhiJGËcA)`Šo-jଚ۽bҘEֶ dgL-7 o;64ؖkw@M -򌳂9 /hx`걷M -i@ǶrL({x# ^{(j 8i>gc[QaXwPbF=ێ]=g Ym!+3nI!)私v{똥-Y*YG* * ,L:ue;wN=p[ǬZ#R&~? ; %f~h{,.^ycyˉy: w+4m]K(cN -+AjWIua%ΑkmU{>SKJg&z)Ӕ&U_JEj%(<6ZӋ8鷦>' q"(أQfYFQ> -Muj"EY -©VssȄA3: -PQj -d"˪0tC0c@9u~,.iFFƾ#^{VF%hndk;:s4)3թ閎A[F̱'nD&A0G1f+K \nro*c`0Lsd[zN Ull]Na[(ja:MAKmgɟg d试&9wwߧu2,?j=v G' 4KWLˉ =u4`Wsa~Q 54i |soUחlo eą~~G/5WbK -ljrT"D#7sXn¢:l84cC1"/f'xH:Rirb=EV~뭚P.I~# 8jy-%Wǚlʎ*w8,3=űZtj3+j].0@vaqiʃzRPytGZk3p#TL5KbUj 7%vn#wqK+Eƃ7nKm#njv] <#3"Aw0,5^p0xSjWog1lY 7+[ڶjPJ&D -J&k;Wzn^2,uV{B YwVB32y)0y\t+:kw,]V=+ԮBc}9TJ4#w(cCFNԣwns(R[4 ҧ^j4-5 j[̷VC|ݛbJIu$"KƒQ*IJα7j;J]n[td8N;^j~I5K[ck&ʟCK'~Hc퓷8E>YGaeca᏿c -Vӿ s9q ?[I^4Qi R;du}HyVLf9\!VIXKя!YZ-0\,Dٔ2ag?U/mɮ< Ξ +x]Ɏ#+p_F 0|4z$ELR-%21dPy-Y}r~͇O~Q`נ^pu3!TGJqwo_.(8w]7 +q_&HG_aj k 'nk΂+ǩ3)Nա^6Eduz4h\ +}*$sVJͯ_?.UGyRN2+bA.l$n; ᳅'U>]'6&Lzftiw_/&iqR\ +dڔ6P%ymz5[EϒsRF%s d +[!zϼ{6>f;36C3gJ'rR ϝ25NڐN]NIo= >A#<-79M6%7iz=QcÀF/ 1A*BF"Aj qk,L%c)%L2u;z8IC o=T+<Ng42ؘiɾLeF^3oɍSFy`J00K5lcp$Kl@H/Fdz2 mV "w"^,sJ3?#U\3ujf&A( +$o{1|?kYBS!jKTIA4<M[rCД04%{R56 +MTȂ&eQK,GYkJ!ky%$鹷̗Cy9y]eTD ^6Hj|/:WjZ M7Kv 征APl$ APXBQڐ4!(aJژTeq,n*}H̺(38%}dohA'Ǿ9,YP}Ia^;iʤp#xM"Ω 2Y<1YʜeƩ +!7豪LJ)V"x ƝBCmȍAZ㐖FyHK0[!Gu/U|Uvvo~ PeZX xadPJDոkܓaԶVpjLG)CtCxALE nǵLZ)v~щNBCm;f֨nlT᝵sG[|#%^f輇gZ;:ΦQZs]PYL= Hǰzgŀ5Zp6Q&6S4M^olskSA[MYAj iFG>`4W靧ڃG@QFOWs0e-vBaxSld<3ޠF У SRGOʋ7Vi%qD b"3^)/pmϋdx1ըFy1! = =/(6^{0t,; "F kI`BbP#)Ѵ?uK5QkkģgyoC~{OVC1"kjH5eoi#jVE-r'oN4Qk= Rˡ)3{Y],G gv꠽,dɜ5Nm;nv]Q4{EUR0(e.:9bF)i$3b4`FP w>n*\?u,՞qmjJ)1'=9ԑHO5ʘwl8|0D#Z\*5\ZduL38# 4!gIaprJĆ崘j@wStx|~ML+=x UQ4g)~)MQg>,~v{]qJPE3=(ᕣ@@caȨ%ֽfmi$j̆>– sE#:C_A[vxA% $ X0B!Ơ]#~bGU!B -h~I8"T9bVMPX>)牻9[k/8ha d[p$1j ΪA *ɡtT4hL~L +.ݑBZ;"QX]%[O|NP:ژbJUiBcj4:T[-vH~½_]_O, ~ +a9 Чjx 7t5dvd?@ +<. Md0ig 2$LeNGELURT*݅CZ c:!5x+O)[ N,MuPɇ~U +i;<~_3j=kA3 nA +0޿᏿kxIj>.//rCMnuRY)=1[tm'-+SѭidϧG >6t*ݹPP6cKwү%&}vS:X_vI endstream endobj -1813 0 obj +1928 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1812 0 R +/Contents 1927 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1814 0 obj +1929 0 obj << /Filter /FlateDecode -/Length 3445 +/Length 2898 >> stream -x]Ɏ#+p_F m{Çrל@p0\TdgTb,%K]%=~h1o/?_^NҿŇb -TJImg˗?.Ɉ e᪔©Wk~'%^^IM>O VGzQWZ}gqB+fuN0ŨEM2ydJϗ"x~~9OE -ZxT+qeKq4FzWίԨWJO;^nr ^IYΑvkZTi4BE0[yPS8iv<8}/aTJ&/$q<Θ<%S9[lM&ker%ov二-'Z8Ʋ -3Í'd,K|PöeeӒRW&$,=hi!|YcPsu(԰ -Fcb3`PuP[٥CfY 44'h<v Yq\(9~Si5<ɁBEAjEW{VܖhNyvYQI_g!8`cFd|TPXR_*s:5i M:v_&llDjVNjJg0-=* bh`@U ؅|鴆ߞix)Ys9'7;L׫{BZsb.6URQoeߤrm?7nc$sE3a'+Z8d354pJs,:hDVC@y+ƥY Ag{y@њRQ> 5Kc}۶t`(G+-8!@pPLei,-z-9R{bѻ?rӰ"Pm+"%e*rK`bj#wtDA37"w!~< -]%3$փWT [gp K-󶥪G r<ݩtw"#ۄI8[Gnbl kOl;2X<ֳao[䶭U-Ɂ>$AMy)le=Mnoaۯ -}ކ^xm7'aZoqa >CG#r_ϖ P }E5yвmmB RZF L>V>͂b0hB|%m #GO -5|Y Mӄj8Z6޹?lbPTanJKm+ 5i\[,~wdsAn+;{g|6zw!*!4Q9#oI;Ѷ@Lz .)^㫳"Ǯ7Өoy$czuo+.t#^*[vsƚgyz2S 2)ӱx؅zP1VN܀v4T&P1n[ ,Cew3qV&ж -6[k8hKiMe&m𴄥Be@ O5I#H 6F&'9peAP-o*Pt})^Ɯݽ`j q^oJJvT`nP^ ڛqƎIy֥ٞ].oh{f9{Oo9\;bP 8*1;nld(89v,c$oh}cqOj{Zbp\7 fǞtOg]E?Q`;3RlխwA+LT'o@13d2~o|H.u]d7KjͶ*~ߠbN7m9hk i~oGoΌ~oD!~s#-SŅ잽9p^36)oo5^Τopre z{)͐|v=;6勎!'f {dx *<)酊)=$^_^Ѕ]P垼R/̼(*/>>d=/XW TWx7ms"/h۽xA[x6^[xAK3^?2^pf3^p f)&p5z2-4=MiՔ;w[,sBfeh_@Xx7'n9w ؒm,`\(-p6H -[gϓRSoM$+ _ػo<5XZ|:iO= |.M5@YzI=6~ʽp TF']ڥtzTkl[q oڸ*DQa)5ж{qqmpg\!~d\g\@zg>l>t oC@id*| !RJ(E烘D5-Y!&fB;"R6_-U 1a/ALP 1 1N"zN\W 1TALW &7ms"Ĭh۽ A[ 6^[ fK3?2yf3y L6Q b.<x';4 euhTx)S+D1113Ąds 1 -RIAz"c;y6]>?m8s"ЬFp㽠QkNضͦ,`h1dp,`xH'rmG0w3.Td*W{y ܝo6N{Lr.CGA14.؜7ʾzȟn }s/}4zr68 -K?O|3oqC]~(IC}c~Wj4>e*/z!taVTT~T(< Y졠wd4)pSZ酂qR?pA+352!|({racL- +x]Ɏ+%r l`j44Y[UeDYX2( Ȩr t|UǷ*foc8fRIMRhM't<ZX!y9χ^ǟ{xc@1z^SBv|XkOH]Ycb|YY}Jvu>i9Vs`FGH[CϿ~_ƪ%}v^Y㿏?-9AW0Z3g>4\H>h)#Ku&s3Ɍ5 +SBc/#ڣ1!ִ3>3䌋NhNO:&z_ \+oYtt^?^Z)0:Fl"Q +OĶ&٠ls c˳j1 +|b#lNxQEnKƴ, +i8^1zPJSѻ9p$Zkpy!C2Z൛E粂Gw"QVSNpyBge3 .$9jgP4~jJ3{6690?m-:^;u MY?;F`OxQ^Q7-˨4xM7}sah:2h&yݛ"qqcl.89ATxɱ>R̛'$R¸#5rL6?9x=^_ q*E|,m015Z%MV|$^ +J1|[ +DaA1ʋ *& 9"a:FbG/4hbVN>~>H)7\a\s$%?tE{ R`J Ҧmu9 C}SޣgHUl[U:[lOAyc8z:_ +ݮq= La݋( ;ǝ&b9Cht*;ˁym7LH/&$IElwX.Uc)sȀr1 n eVBRT\ʺTHFU=mgΓE%B=mJa7lct&呠b͡u 'ie Fj-#e_]F +\_8]zÂп`UP^,kq z/V*Q Bf`{v6pK`.C.C^;Yd8Jcwd.εW @f%Nf#'ޠxyqlTPJ=SLf+ ^d{#GqJNI01?UFgޜPgg I\x5$' K7oLuӸ +9Z`a#e9[٠rlq tc{؀ځ1/(p9olzV]bOJ]GN-xG^4)}Jhc law|0a/ `4`Tzi*hK 5x4wo ZpԶikõui">m]Rh6ڰ*K[4خs~(نi^uP$Lܣ&1ȌY>C{NܩkޖM='?4Yъ-9*-A`pO"sU⨦Y=%W_| 1uGt +876.KR9kSɎ%^lyۛsxgYs C NȺmFp%D&=^5>teteAI5ia _M8B<P˞z'midK!lv95po Aex1+ }Yr1tUf*Iߓj.cML2a\;Q$MP|S2AQ$~[0(Lw 6ÍNKE|r~Rap3sH>)snjo@9hP*;f{(ۑ9`;WQ;f )e =+cH٩t1u@je {!f[P%h016Մ.-{^S<}ݹPr:&Xٰ 5 0 ^ Vl=dbp+ ;Y ܻlL*q+]Ud$lZJhܾ_mm\?xE +I[NV؜Fzڒ6{%m0ڒ6ʎIv$m  +DQ;&ll29ꦑ'2J2]'\l''m(=ݲ6w7zNܺӨ=KmyҨ\%rzVLq[&W@D'Q~ƹb rW-Amàd[{^A]`ەr\д̜d~<= k2)K{LzV"ӟӧovB2.ep6A7`h8 t.ڀ Q~/'-ld +OQ=&1:$ +|{ $w9 +qƮLs].Ń87iŏ1~@+x- endstream endobj -1815 0 obj +1930 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1814 0 R +/Contents 1929 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1816 0 obj +1931 0 obj << /Filter /FlateDecode -/Length 4216 +/Length 3104 >> stream -x]Ko#Wd`!@bI6  v {$} YAK]Ey;I#wӯObVп_@߿>ihwh eXJӋZ/h-鷯OxS{Tj2`;)}7_"N?Am_ۣނ:]%:zݜ'GC_YZVyce:-lj??8X`H`o/w'2[~OP1^H-׉z -FZ6 }-`UWb "5Ћ:D’_9J܅VtzNCEqXnٸ)@j(I%#\yr ƫHҌ$Bʈv!iR&ޘ.^I2IBKa"deP9WnQ4JѤn(aA$6ϭ豒WMYU8k[#kHJ%ķ$(C -C6\hKlLůʝҪߐFъ4v~I 4Z_ эHoZ\~bE-B9]'b?Il֟7?#O {~(IWԴ1tу> -r^8;ͼMxq{7MZ]\h ܜ}=nXu){&CL8ZE;a>қFEP"cN8m?"c[6YNIe+˰c(Zq';X*ia+~{eJc jc ͘caJlAd~}eee^gf=ǝ֩ά-b3JŶ7r&\6s -[",3'߾ԙ2k&;etVKBͽ.5tlk8`"=##Keѷ[m,v>AoX6xƝ2KAˤd0L!,s@xڝҊXng< G#pq /-ӷcd,692W3.'H1a.'OtPeNN>QM':t3y C͒VCT1?[-O }.YC( ] Jmq-aIt1c^adYL"PE[9RuǬZ{㕝Y[0ؖV+maDHm83Z9{lvIUq1We%gL.-z - *UUW%WbLqN+=)В6>nاp`9bYFXBH,Qzy*_ܓ4莇O/El+\}9Wj{DRau_sk9)ΫnQLw#Ւ1ޥ'o Np+\*gU/YəI⒚c"=DJ EJ <4R)))|7)`XXX[)KxW`$x+#I4PSրpVZfր2, v- ߑ@l@x=r]tj 0@0õfIkK_1=#i_T[/oHq(0bmE>{ pEypb`-P$ tfpj R~mt߯= ihjčzJ( cl OIGNu%i#t'=bP,c6;/E.Zz0siMV:?70f[p+r:M\Y#.K(aӢldbE2+xGqĺ-~0p#T[(&nu;kQK>&vz-<+t2a(PWJ*2\. *"/ %, 0鱛YhFnOr ف[\Xi%xݴh+GUpJm8MW @:K>W[A>P -(Npɘxi: ڶ2S7+s"$->^t=[[- ;E20%`L4k Rnq! [Z7K=UzAm߄Q0 փ꼨EӢ0ԹTRXe 洦]ޑҔ%oYDG([+_}0ģg8Dı.CWe˼ko:#% cV^5ꦣeޮ%܉2U/9UP.]dgx[ύ\ok\e2S!3SkG)Aq3e,=Ak`6ŇJ}HV7%Yɵ'YIއdi#١Sۅ.M[dcAx2ù0uuuTisYQJ ,EKb}-ӑY2>J -3 BNg1Qly,vG5;:L#umBxH(6_Uh0]b'  KQDbKϼlH=[M7 .x. ȩ Xx4-A}0ٴ+ XxsKf:XxsdMmÛ{N`›*} Hi E7 Z]=D7"ÛI"Û{o@5#CxxsC1bA$:YDTzlፗiH -Sv}j~m:t{;C}߬{%vOg=i$Q~mC߷s9KM 7J 22冡rɡؽ<5k!ٜ`!O tD9)/cg5rDv&Y8l-wq.,j#{lz\|H!w{ cwK:7?ұ;ۭou:1bq̂Ѵ.2+rʐ],z9 ^sr#ŏ <_?ge0{2*-edxַdQm.|JJ:'Hn~*[ϏZU~\Yե& :7@ȋ ¤kV[Y_`>{^Ӵ]VMREfChNSQ9V-&{w9G6w4䊞׬+h-W:se/*[&Zrh' gE7AC -JftFxJb7%JDO J *N0?}Ǭ*)E>}FLNCSIм­AˡXNՃY4(Pl֋J\^F[23}L]UXǻ(醪ܿcT)qɡK[b nbѵFc 2yI+lWuˍ=:[Ht~QJL(RNBQdJ, ߃_ZkxHiÓsUc>W -9L%R:ƍ KK7,% ҷӢ6Eqڋr?Xyn3()iapgeH-.Zn̓)0C#bvU(cŻ~p; 92teVdO$_bBLCw7cB'5>㽤(+nЕ$#JID.2y; -xVNnyMҡ{HӡWkfs)$Ŕ}^; -x0CW_ט+#7GO-M05 S~?>qJ?Y~f q>X$y0n䯥?oP!}9Kvcdt44 iwv SNnJjY;'-|_mq/$& +xˎ$9^_Q?v_hH+!i;5iO6 USUppK<*}p/?߾ܤpFҿtK:Gz}.=@wPJj t_>z-'¨`W{wOJO T+˻5(Xg7P8qc}ao*ǡ xMR `(G?|?}WZ85>£ǿ?pͧ $,`U!fõ5MMx&e[ȐjGDv"VO+F-AqީXG=i^ +.CD3g"F`?cNLw垣F1֤5 QIn@)_'1!ȫ.N.2W.c~1Yxp96drA["wx9{hCƃz>6Ae:KM m ]8l + !KԤABү + m#Bt.tZAT{-)r<%3Z$\hqćn"r|=oF!Sk2#4W|^W&OB#ਃ%3{zg}Ϣ +@h$0'3wu :VpՃVLʃQ9y%i,SWbjYl +ղX:3,&7 vA4=@R'sOլrUmpJTQeׯDgӾErYX8M٦~Oy5!@mbu;6ɖPr)o<Ӻ(ol"ٻ@!3 $QkMMO)~@Xcu4XRcP2(/Ȓd_)1J~"Sd4*Ȟ wQUA.٘6i/q2H<<(lWkJ F)XR;Q+L0_PIf ۮ +Q<<)Բe\W+? R_ ٻωWlSreR%Of4M}I>!.ɛ dm3#|Ȅ3lIAFpm)'3>3_=ox6;Ҍ e9F)3_Tx6Vsws9wr"eϕU AfN*d_&<<1,ŠLqb]L4r\xiDom +s}m, +ugѡrȼNTh lcIvʇգ~"-τ;l֋Qw&{5:o +nAfe=PЈM`8mBmBge?:+1t~\{}1 -%Ƞ +su6{- m-L+ςH=uLς mB?D[ϱ)?ǝ33;?9]9ݔ>sykSn4|>}rI[DUlڽvpҖC=F Aw d }g\h"-5?!܈wdwvMdYjlΒ9yF&Q LM+L<qSGoD7NY%޵Ie{\P4yՆ+&m:{Cj{-&,&! gT61gk_N^!y~4 rQvrm[J䪻-I+pzhxCfDek6\nW:/G hc?+$IQz-S+jI;>:oA endstream endobj -1817 0 obj +1932 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1816 0 R +/Contents 1931 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1818 0 obj +1933 0 obj << /Filter /FlateDecode -/Length 4275 +/Length 3607 >> stream -x]n#+ 0It,lO{V'U%T*x%;@P˖!Z$}N*c -ޞ} Epw~(L!9)YacT1B) hpN}}ÿC2"Hb8)p*;)wJ/yx!BkyyNK|p >:R$OkSZ]VT^#]zuyPrF)Lh(DR+{w"x<}yy'ZY3ӗ*u-06 LI?JS&3}4"IL3NrE xi4r}q0M+qrP1UX4Lu#ȡmil=hrlȑc0>UUx ;5f5?PIk׻˲%|ȯ×zg - ,|gFOQxkoȮ\W{U:7Wm]1yGdFr@kGd*.y|}dZxomз@>` -qSʅ,9_[R1d} =+8Sw+`o]/Qvf.68l>Ө(P9srd2mlJn_泮Mn#MnZWԁME^o׹`ϵ<4Vfb%}:Dy_RZ#iQQR8p&f;„'_ɕ0׋"u{mгOpM2ߤBW>zd#(<κ `APAUł;Sfe:;lu2YPhi'llh)nEu](P7.$ɉv%8*9MךjzG^φ ž4AsSz57:ԧ(CsH02=kMT΢’*"?zX+Rwfʻɕ: -޵cF;\ 9M ݥMUW -D5sw@m␭7P U)u~M%9! 52l{=P\n4x 6 Sb[c^MA wTU_19Ce2CZPe? z|p>vE#ؖ}LE˦Av ޫ ?mw^uUP&72WPo]ʚT,7bJܶK$B%[Lw>]MZbrWABO ˭m~5nbpC]Skʘ{V&*O]=kr,e N՜z1ht^ԵnPj0ԦM= [ǒMsK]li*P<4"iϓ1zzvgܭkp6\C9zKi1mkOo&(\z+]UwKq\r?\l.t$u=$6*) -wZAQ)P -Ss̓}Luh_[k'-Uݨ@3>WǾ|pMuΊ=9p5*&RP)QӏɿG`hH?~唫rJҏF~20ޜGe ->?Ad -V <Y*w?67{t*f;Uk(!B źQ7ou4E涐u=Qo,?AnpiRhL+4;w \]I[`WvzhcD[_|PWr5j2]QrCb\c(20[-m[?3w -:=lqjyZsnj`[[ w"?[{*<< ɛs[ɏ`F - F؅G -RP[t$M XM$+$ K6E?Hm5:EYaK Wl Ho\M?;16T./((c7?ީ[1?Lc|F>\~~(w]^DW⎹@UuR逷ގi1zCFz=S^Wz<=l:ld~sD],Ti<- LciirJtꎌ1ꂤEY*Hwѽ5as9E\48GT( , -Hm5,9xwP@9X+, -P"Wrz>T,_ۍDv)o*[TPNv,]lTzlPAW PAqT*L\JTPeX AlTn&E&#RipȌVZQR"zeXGYfQ@ZlX( 8 -}e}  G (wQPB,kr1'yGZ!;)PclHO>\''(w]I=WNXOɚ7l~7A9M`M&w7N].kMA 7⣸ :󽱔n*AXUTebWY"p"&za"#&< Fk5B YSB&( }, lM#Ys-;h\K(+uꂟR:cP(rEɇ0/61㮹c=RHMo#}WVu27}CBӒUP-K??p8{w^8 yNTlewYMO4>gr,2E™Q91Pf\'svPQ#c 0>@JhvkY§ٝTܰX,_F|ǯ??}ߧ7"4*Nk|p >R$Oő(MܔKzRV&O)DR+{w"x|z{)ґ( =/{Og;gf?ܞtwl?צ'}שZj<{~_|/~x'&TzGK7 C DA2'Um&YYyGUvE2 U>3-63ΪQT X2`mV FH5TUK[HzjayT+v+a"f5OHD7 +Mq`2I4Lv1Jxg!o +C㊞stl7HItDnp%=NiE2\RI2۴LЎr USցF"Wԟ^>h2Kp愧3cfto*gEOCRdM${aC;’b6']iGmcڵAtO2l'߭cڒ4KyںnhmǴn_.պ#S2vE:(5 KCF}#VNHk1Ů-"SW&[x[G>g^l\,5+iT'*.`KAжkB֑$3A}VzE7fA2 + 0* |H1oFQ3]g!@rOX,WO.0s{qĨ3lBw]+'+4[~'wngsfQ2Sq +.Vx%VvA}cq2Y䲏'Q4JG+bH-bNBe_CtzFk喌5,ߦ #_ @uMȲl5gQ|/P-5SeΔi4ƾpF8t|u얽Z[iqj؎oZ:0qˈUb5/k+gum+`&TPb^OK3{%=siddp'[,(}qƶsCtgᘼ_Ŕӟq%r \~mo0h:yv`t,`",pV16NY}+ea@O)ܑWFr*dft[,-eܞp_xeCzNv2k's{J&_IFǞrӈVwGGCE?fU&u,Lg_6,)i EH {_|<Z7 [2Ai 7Tû-͖V|o ߀o7(;Ia|= +ߜX?7#7~oNX)|s뷎6Ͳ;λsp\S+em#Ӻ{C Y2V_b|*Z/({} +d+IRu#\ ] wY˽b $Żn[Zƾ&jրkd5$(qR#c k +GFC̥>sʨT~yfƉIp Mۤ 9MDoZ">ԁ!m endstream endobj -1819 0 obj +1934 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1818 0 R +/Contents 1933 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1820 0 obj +1935 0 obj << /Filter /FlateDecode -/Length 5592 +/Length 3908 >> stream -x]ێ$9} IjipӽH /K9UupmtuU#tב~U4/?Cp#7c?O/& !:k&5נAQzјYc_ϗ1LU)\zzM__0"ھ߷ z >8Z׍%4|!zzݾ8b -euN0&>m;qcDCa쨕}/߾*=_?Y?^?WI9(vOG⋾mӿ}uX_{qnM}Yɯ?,;k$^ ̒)LoJL| *(-JONg>gYEnWRM`o{X2n41^( iqBw8w&ߒ H59:< |\m'E?-%ʧnNo8Tކӓz+X{=E5Xm^>${42Pv;2t*2RE,c]() V{-1(<6D-kE+Dt,ܓn<=/K'H+FQIeP׻!d0%eߣ;,ena r"}.6-EQ]pT*0|9R^]"{[T[,k 5F rBQ!G5C/+㑡ݟ<,;]'3jVѵj3$/%f߲%U%K.XtSFOql@"dXBkKMq+OÉ@EK3NM_uZ:&~UK -UKv{ZRpާZrjIt;ЭZʕP\Qui?!UWKN Xg%eRzih,h5p] -& na4zL`E$]/݌m=Q`lFoH~Hup%$8M0 z?G Ϝ4arCņkZN&hG9=^XR!-͚/Pozyk|qaH_ -@aw+~_mwR1%qUQ¸ļPsWUh`-D[k)42-gʫ^NwmRxD&?8\ J넄HJKoRSZ/kp)~˯wn -u|E[7P;r{pk/ߩxKn{ʂcs4-qqor T0e++QNל^0;jݗ *XR`}V c=Ը{2B–G9O]tzv [r>%9Jzk$[0s6=̊sV4[gW5KtF~ -G} h !~dēu ,92DžH8`}U0VM`|u - _~.,!DZ)WQz_~%w̔*((UTM (ճ|Vm8pQ$ƍpr -v+-$n=e;DwM(gR -һ=yR'gS%/|f?v픲 -Hy:R.}uMn bю41c*P`ФsRq PGJ|NŖ=Bd)&P} qXJ@()[se-_IF(GJ}ѐeU;)jk ^ X皝}- Xp 3v1{Xw -Kq6&ldC'v&.6׿JseUpͅt7{5\YPG [am֥e5\3..V6\3-]p%RB>S;pljZ5hz +߃KGQ \Y]bޞ\xIoOWTs;CXI}Jaܮ(mtˍ\ V%`-<MK_RH7JBHlY׻7LbStUQ5=+LfH%x-[A%p'.1{E)>o0>ś:5<`tp)Y֩a,c( YaY1ŀ3'r#(QJGC9شpI,qg ަ)a,樎yy5ȏ0JUo@2 rAҘd}x -36l@م=V؞{fk~,mw/ rj%zMƧ,҆s&qf/ee-MU` 'skaC-U2W%s&XZ(9H&[l#\gZd tUPsD|Ӣr> gzHvR+g7á vV{`ҕ?,QmJ%r\0ܔՐqm;#@lq'ѲVUc0!qu\'}{[bFa)!:W$ ԕsZurs˅;rw>FOG]ݪ%GwRz?󠫔Qk Jcdd?|+:D~ }pnQ+%< - fd}:g8 $"*|)O` |'OMkI$yRC"/]g}Nۙ/SP]Ӿ_{V Ph -һPa9w)*78UI*NW-9U8A2†%hzֆʥJPɧBg}n;Z+gVKg$ *g6ɒ9UNHƺrܑhpN3N-/j;/KΎ(9 l\"7$ Q([x2( d851 ֑%cgz$ECۥR#bnfW-3c KU$npu7һ]yx7K%rZ$JJF,2X 1 *'3liO]l :YJid]eMXd# ^#\:~vDWkdY -r\WasXgGT3oX-ɉ)pܑ}f/Ya-C`6wjKUʌlxDOùt!ϨV$ZQu2[]*eQp0( =?~(δغM>rsshg1*Jgn k\Ř44DmI9ܓ*cKҹP{{Ƃы21JP(}QdzQVru4Fk$y],!$' Ə'N>'\4F8r$&Qlxes28T'~>!1zx صe)2 -Hgj7llTf\8O05T;mSi1-'CbxnPmUPB Sx&.HFsǦ& Un]Yi-^DcԆq^E!g Z-E*IYž^,>Yҫ8Y g ൻ(Ko:xTr9^ǞX%f/TXU^fv+?7 %6ʒsx'O}+_a8dtU[[uJ2ո;|V)jQ5O+i.&ʧ;rIa?0wXmW[!`W7;4+L~tJYrTZJ̃cdD6:t~ -s]]+໇Ba<蕧ELY`<w& ǴJ*iTܕ2ާ'76NLfz1k2Z$Aκ@zTӈn#>F<@2F<*:(0\#CW%PtnOnQ~8bOX8èj9jj v̓ 0"\Q UF -MX<ש3GXmn1΅6ҲyVz@ګҫ=mvJLNE9mY-h:mRnu2pp1Ɍ" ns3"~F̩\U2+W)ːՒ!12<PՑy7XO/eƶ"-|OJS3@zl K.F)tѫ9=!S^OcVGNMezT#zQzw%!*Ɠ{PcdղJ@ܪ *Aق AYQɗA0>|yzE΅̏Tn(%TGխtkvUMl|WY>Y/uaUUo BE_&\LJW!O3Xz1أ`&d{6k=*/=1iu{Eݢ>@51Ft}ғ>( -Jyx'cPL.[ukr,EZ}}~!{ڕ7~qބtG$Ɏmo_鿋JLy:'gW>.I]6&Xa H.X[g20@u/4 ), $nӶ0)S$L羦9qYcz+0 +x]n$+>ۇ1 `R4z12KzI2?O! 1\Z8|t꒿~JO}z%B#ky~N)h^7Pg-ElrJhXSy9t1RXOy6Hh(L$R026VȨS蔭o+ˏ|CZ+ +)128Z+GL¦DQĕ"AP -I=[''#S_@_4Wk_vv5<8T~.*bhRIv o/^hJ˖1Τ}׆S2E&I;@7j]x70΂wӷ%tkJK)fvat-fIl 11^h*(C{V_Ӧ~K;Ѵc&=I4ڈN#I$WISlt<.HM c_ǟ˸- Sbwvz=M~vԁmіE6eDJ)nvѫ!o;dx%U4Ý1PƂl4ǰ_a?C1ZV'$zs .z &6R#,3@LF/965ֿUC(uU?M#ɜ 1sCLpn/sMA9ļ9k(UU7` MD0,xpy]'LW[^֮`k'\+E0i`h)y!w*kҙ2nW3%s08!FMTr03~tK_aa\&dF=Hk'}%K$r?65e #1,Sd3@0 SdP(2 -g2&JOa \>Lf7ք:670@FŔ9]_4Q xkn{܆8{gnbvkTө1ct{y%)REV7iO`Ŧ-~˭\bU7)(2M䥄98)gFk8yL'In\0g7|ᰭ DY~s?-"w=_X^,B={Aza<&>eqE"AixK`6 is+K#q~mޜYT)#mseo߾{9l)X:ʹ2uy)u t춣yy I.Ϧ%@z܌ޜtz&vj8U$#%gV6{t&AlϷjK/w4>|ơR1uvζFN CSWp)j]kM;Tp+ʀ (P2ACWWvʜrCװ-d+5^% +V8*l􋱢BY< Σ[< c4`\4vK1`W@˔:V]d30>繟>ءքjj;dn +w E= Om\i [{{0CCVS"s"+"+Ic"1[P;Mw;ٕ =Y.n:^`[CB%0&r(["r|Ԃgфؽw1!vS|V 9fFHzQl.*pUfdDJVw' lE1Fņy3Q2fM:ހ7᳄7(oPMހ^ lm 5}DV›SEV›"+}DV›" ovBkxs7 #V*U *^͙&.&›ZbM/b]L7(8޴ obF,9ӌX@\WހCw o,0.{sVZa ֽNw,t즾oֽp>PbXA|Uuts>.}2 "*To)sՆrȡVعzB2`}CC5y8a/FPB9v;N[Zinkwq߄JAv׮/n IfCerV7-N33;ͱsg4el6I,֗&YNT pgQg(*ܸC|+x|/ӌTE/4&sYlKf9fFrpTİ|lr8@[̷ܸLf9;}ƯF_?oyϤI㥯'7ɒ&kamxPhU3wnӟ7飳 +0gЕsUnAZ(B^> endobj -1822 0 obj +1937 0 obj << /Filter /FlateDecode -/Length 1640 +/Length 4012 >> stream -xZM6Wp! {(HCPu$mђLo{^{6_l66s K6ͷc -;nlW0$ b<G.0L ]PrZ1C);'PVM[8[g4!3@ޡk5{jGZȖ}nlDvjO(>Y 1CAސmR4ɆY 0綪LRgŻYJ^rhK<b$ele]]7~%* g2uل&Ble%K596rLʡTjL_yI'3G#“C_5BvZ9T|G-oB &_Azk[=)3 n6U=)R#_& Ԕn;Lܜq0v Yv?ƥGDضaXf6R/Ű, AO0,tO1 -[Yxe.*ҦԪ]1JN 4WИvս;أ 6 Cn܌@BI@"{6 ʢ$Tl&-~Ȭ2Tzo@F|RsCUA뱔m ۸¬rhCEdJGF)4][ζ8ST2Q"U h6V+e1m6FT GzjRpGF(1^aD0#j嶺~2FT(RRUNKtBΠvs3VљeH$ : PUiiHd' ҆e[_IJ\8=~#?>8/?=}}N7I9悑^f{ τRчJ1󗧿=)λR2#&^!.O= /?J&PQޗWkE:CxAOcY"t> 8o??":ϙx;5B_>?9+ק|εOW^?>9Rg Q!ōrA$2! +\<'Tg++|$l@iZY“$,_*Y1ϵZG­fl&u27kMru!(9=ٯcp͠B)8{kMD)ypϒNTd]5ƙl\ށ XmX2E Qqn.A E"p[vUMg^b%hr[PZxFqÎ+`ۙp"zA@IIx=Dm)7|[:d<+:qmƗ>͕4[2@%^JbmMX+$mlM(jR,hUX7ʲ8)Ʌu*I¾Y|<[0z)u*@7wq̺͂ά.n.jTff6` 1-uiyile'nW2\7q#ٸfbnn2m켤brØqVoiym20pujhgz iʉq 7=fr[cu-[(VgoZZ(V)M _b ZJ/Ѓ6i(lSy}% #jJawEQ^}2}R4 FwB+}*+\VI bw +ƇxanP<+\Ocj=Ʈo Ri*jq]j *1mH=akģ!99)|'!LI黶;*'AFt`tбGu@xĸfĆRQ%`NOZ2JR My9ήS vvXZSGM*X#SJfJ ?Hp‡еv}f(F;4CW:6C1 PT:g(FZr +|{P9C_'iK6x0OZբ0oX%cf |zm9xf>d`g=G'zD\sTknJ/(~+K*"MӾ^zZEkc_ .Ͻqi;P];🭄d1GXZ[_]kh"Ҏ0O^Wl\!D,aZ(/?;AxlC^ N0Dy m}*@QQ/u}c! JCsS1b3[%j\c @:qoJ5lj=aPm]SVCWJzcNE'~bα;y8(a+L1wHc6\2+wFY(Nk[cՏ8mv-Y!\pKXn/s__+ A%PVQ|?^.r^ͼVWw/8h#ݡ_MwX8 ر66 ѣ3oE>+|SYpOᯍqny=.}m| +;173_̷6TϤ A\pڙ9#WbQ`dlGw9M>a4!w7QZXFt_;E'lԉCެrCe\e&n7;N5L#ƦƦF0nl+հsxa=\5nzhCt)t6pw-% >ْEיX;c+kfR"KSYeJwƕ,0x ok~Vaxa VP!(JJQ !ӝbȻTB(DQAxHw=mVɻ¦$ $E]^om2SdԊQ7u5HCe:o<;'{R 'UFդ8ȯkC755upe. +vgHfD78陾#(t\ bcNjkK2iG>yOp\)/ҩ endstream endobj -1823 0 obj +1938 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1822 0 R +/Contents 1937 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1824 0 obj +1939 0 obj << /Filter /FlateDecode -/Length 1749 +/Length 3963 >> stream -xZ݋F_@7;;3&ЖkRpgyI -Йd<+7;t^߀."uOǕw|?r<0T8r3%"cBzkSAO9u!838}{j&23`bUe!q"߽69]ZT a -O`Qx2빒5 [pzo}7vǍPtf1 \H%ꕰ#W6xZݾQs? -t  0æ'nM⣓|P:6Sow^;&ʼnlz'!=zB-SwԱ9{ s,>)ATj:ᯡnqU.#GvXvcM#7|lɓXzw R K+0 -/O}_%E EPW6Y|iFD[ T7?N}&@d+H2<"w )DrQNP&-*Tጬ&⿀ Qf+ d%d Riݮ\LʔEEكZ]n2=Pa3^k<#a㉒EҠ p5mk[ a~E32aŜAJ2_y{3`t$5ՠ؏b%v~נ6ث jyʠڀ٤lf ZzU@IF~3~D1HDk|Ʒ'BO](S=5hGD_ Vݺ8FOnFKi*R_"(70\BSؖwf 3,p$3C;,y|tb?*%\"548xg15Y&4uTZGb'P 곟:bn{̸C`;KXH-+iNpKņ̬jƥӤ:Xi2|GuFU0cͱ}B>&T/YUϟc):a pS|5fS ]RsU rl e0.\kLgy?FrS>%RfȈ28Rg^K6 \P3;hibJwݺ /O[Xy/X{N^JujG1W8YΗz '}}'I07½Euq⾿{{Cqg8 t-}s慇dЗ`H{d_QȲN -,Fhڝ(E~d1+1xMk9W1#ݿL!91YacT1B) hp~=C~HF)C GN%]:ۯ?{QB 0*H*l}H^k.R;:֩<FrPpF)Ld(DR+{>ᨴ^k+_F?s%7Q{Iv w+u_{4 =?H×|w c0YPo(U!U"KPysE>^^LW<<0#Lt8./-Z_[~<V*{ňM |ICo jsScg4NߔA䖝S ^#uA Ve1s!}Zn&Bi]F@F+z5Pýuz}v"Y m!v/4}6㺦uA*~5]dRzRјm! +4!f Mid{]A]WL\K)9NJPcz8kd .~L:+ gh)~MC,8C o!Hg(ӪS Dcd2,He_"XA-ͽ_s<{pK3ZV׌NLh|3ׅGކGAM(wr꠵")tРJ11N:iM4PN:I!Sب WV+dTnWklEF)w}HSʻWsw^Mjτ.6)3kl֣ݹ3*9\kj C)1*jA=PvU~ndPŒm2+=5q$+JCLt'hD-9BVfXL.*L*d U]/UfQkiZjx@mizG/R.<yy5S'`sJ< q*F%0u銇W@^oҘbZuBq +I$w*)zWs .n&Ġ81?W)g?1[OUeu<#8¤ iWF d+brGit$X3wf(Lh_#[£q%)MUh9G &a*&j%6 +)r`^<ȉaƃCAP+6<ƃAP>Vaz sm!+HjgE7S9?c|&~Ko~Vl>쇊q3}֣%Kp'"y=3W9g;1َz ozlX;Xoa9#FZ"F7KZ^G4vOئ4vdjr*hV)4@=\$/ҹ"nU +)*Q<2W9g=1Y!T^Dr*p&T*HCNB.BgPAm"TVFVBu]2l]\*t]S"#e8aeW М< +IJ£F#J*ZcGUQ`Q`Q@xP^7] 55bi +f! +j {9:O@!)Pʟ,=?bO8OP1rMB4 +T?t}svc|Û,7A5Mؽ͛,-gMv7Y# :\ ̛č jo2&OT.AXe\Vi v5j'cRvpu3&< &m4}Ⱥ9%3cʘ^ØØ`Z1&~dZ_k[náf:6&քڰdfu;8 +塬ÛXP+6>+QJy_`c*"Šl0S91laU^Īr*pfU*HêNV.V+N ԫQ6 ++w5PI"eUY}\WY*V]_#PtT + λOnMˬ*0+,{52+ +, +fVvaVP^ʝ D5;6F*!}Ա=ށf<'<Ƈ0y06FӊQA㴓QŸvbKWNԃ:Iә:91tL^[6Ԕ-Ac[-#FZdE%%_} +ΘT7Tƺ^2m.ٰ%aKZ R6x&s&( N„R5!>` 2 ab GoX7^LԃVSVwme I8z\@@lf(ӵG31tϲxՉ<{fկTE׵r/R@i~x}~vN>Qx<;| yǎn/uc=y3<c¦£LtIt13WfNz>.9ծrCFCJP8ܩ~dUPADF1X^Z^ϥٵ0}7Ɛff҆vYcՃv1"˨=p^:y{7TXv1@x7grRnRp~ pj-"<jA;:౱J׹\Z~Y-$.LUU6hخ\AoKU!E-:2{ g1KT0:E]3qR30oH̚eM SoGr=ڮ$@#,}~>u%*'W1y +0az;Pi'5M֔ed&/|=n3cg#ե*Ӫ՝xo2mЈA첒 _ + m~ڬ:e6x\3C_{gi$p,U>f*8f)4-"!Nbي +Ukvd,&Ybn?>N7[Onfd z Wcfč"2NOMŴj}==04ym endstream endobj -1825 0 obj +1940 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1824 0 R +/Contents 1939 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1826 0 obj +1941 0 obj << /Filter /FlateDecode -/Length 4268 +/Length 5305 >> stream -x]Ks|?A@%v䰻|@bL$E` V;WU$գ1/NҿDHN1B) 4F8k ! 1<*p*1~'%{@fRSSQ9+&frxwv;ډ|‡I0 BWOdRrf'HYa)HMtWgc8wFw<|~~TI\><더*o:219e6~n|ӭHߏ-Q? .c-.OMvtIokIe`<JdJ:4P4AY J% BO2ǵN$U{?btţ7j{ !!*]~2-aq8-[NjJdlzmZ -vV˱ {il{Zb#s\*?tޔVzst{u3*i?=h d!(+9pq \4 4u& QHX(wm)ETFkCgfyFeή#lo( D1kL׷~a:XF>]x%{̕Q.]-5)m7Cկ -,ܡuDUڒ-֡\M(cjDrL \bNHi&ܝ/TpHs%_&:08^E MPK2@r'i+^*mhH^RJ$CF{=4WNd4S4hϠю+'^pDT5"ueے6M+ ˨ UKL J1lr\ƣt=mtSZnn QhRjI{`SYS\ -)Q -K4k?uPYHwɩtAf8y)jc5 T<4-!BKBڪGkҼ5A^9m&% Ei nᑊ'FZ8//y!SRvC)#ڟ3S'6O  "2u)N0j9vz5lZF]&6 XMK7Yk産4S雀ڃI{+rImgKڮ[P֞~h[ot{ > `+q$u& 3搼DYm.򂾙 Ĝ,,=6^zlS'Q.ǀ=k۝/ 5X+} (&kg;Hsji1,n͒mu(s4C1Eu3aw2ksY|T`)K Ot/MgxocvYͦ￰|[>úi:b^>Q -g 9'"HL,|ՆjJNJ:rl$e-JF:@l+c? 񩷭b*;EִIW+AZ\z _Ό*tN2Wըg=2e䶭IϦM`Gp.6[:ת1ܘhUuٶ#"M>I“{ )C^?D~:I$ot< kH"Zs;w)^5m/K/u49+7`X='a r׆'a ;^m u&"|)ڱL!XS;)FTMX&\l;gcX4Y뀉p1$ϫuF1vP>1zuCddM}'(rKuļ8EWMw#K8釓=.; ۑ;¸nFFY:Y62(>'ъk{6b#2?pH$4:`cY9FƲzl,k=F0\x$kF ̘F7/6,5c#H69H{X}{gq+F|,;e >5H>p;)4=[ 7 lcrë129O4nqë!9O~ku~4zc4J=Ad#1:0w4ˇ=XJPڱ@:UsAknIk{6A9!QjU^l,scd,*7XjUT>s;T'zB>b,#F>b,Hwg>G#ӭGrfId% &Q#~`Gl:W}':D+{v1$xuyM}Cd=^P6L,A7&&/L z%R;&bta"FN|>| X;a)bRv{p5NK*),':+{6֗l,9|,u迖=xcdd=Q0nK-h(([}F;1Q%q˦Rf$E uRKZٻP wmCekFKenM9Z 0@Y:FmDѲztL԰)J)&D8~;9HK3C~+'^Qh͂RRG1}̫"͟ciyS7DϽtJ7K46e|LQ/;ˋI&gTNO.Krd}~HI1AWw ƕ1ܻ +x]ێ$9} Iߝ$Xip3ἔ#YUW.BL2Ḝm_(/Z58otF7c?맋 CmQ-8(5jC5f o?/a2CÛRZNM>嗟0}ZHm_ws;/Q9/w7'?0.7r5 ~ZnmXwsàIAkssqױJëy.e#X4V@?H'??̏4*xGu*93n~61 юZٷO?^~7˟~Sz^k;}W3}O%TG5dUj@t~%ZcW׸{~y,"h17,Xgo?W"k{gEROq^1_?l:\7׾0:zJJK1>zmߦ띦R Fct"|ex5Xh<'{0L}լYlˬQq{`VḾ'C̳џ)R +ۊAnF`2$XNx=̐t!=onxs{ۑ' qX \jvThL;Qķ{ZN&hG CGQ֢d{KO\nc 5g5jC1+R"f 3LhUC;6nA3=DPLN1£/ +y3z-&\tiݚ#59IZ7ws*& V3i;[bP)sn\IR;Bư 0ZC&}n:i0Qy +"T6kXl%p,o1O-z{RncOR~WM&NYC0CюhcV)(OVkB] >Rrx:%¤&I> wMm#E"=ވɐ" $DdHF57!% #ʑ ͨciB^YVG9ouDGJs^%fT:lH *fwY+Mx/ɭ9`d/ހӵe/Y@x !9,`4!aׅw9,,a&]Ō;>4Hʪ6nqV ^a}mϷwaKEaGh4Gfz8=J"]}6hR$H +;{]SIŒ 03Zg2 ~z[6zWf 1(IxfcOnrWR<1[H½q,gr'50‘ɖҪX9LFJ'%DTC5{lq-\d3نY +*tZt3Z&!O)N8c(Owj'rC¤<߂ܥ `|G=)u͓rrSZ"7OnKS 5 Nz +Ǡ>Xd}POboU5s=wP<_ICt{X`SKq+_JݹStCedƒPzk`G``-X̫~JU 3X gP##[!R/Ә%:2QӨH:0^fH4DkJLh8k,Oj0&8/80X(q&,7a@i[]@`ASp,$C7>&"4%ä9ޑ{gP `sUاɳyya vﮀ<8 +i$qm!rL3L[k5I͔#{flxWX΃q({=l𜻐XENب @%b'FFP)\WGlm8*YCP%5SU4OiVζVºK$ e6ɂ9Nƻr*֑hpN2N-vGbR'bnfėrB!E!ėR*^xXėAzE⛻t7K%rP-y%M^kQ6:`AėZo4C*sZ{rϖ0eK%ld1ْML%\:|vYגM^K)s~^Oa}OSgbs;RwdlxUX;B*@eFH`<D`<t)ϨV$ZQu2[]*eQp0( x/P83-nӶy~o\ u!Z?D8HdmAO +Ht ۬QC2JPݖQ,[F 鵌eF6#9R]WlH]rӠw9X5R\X9[jkl2/SEd4oړ}UY?Lg3dEF""xoYj(ji:[6pv.§%J{ƃv;TzXsc*\5/>%08/<ܥ]Wx-,u@iVN-022 ;6\5apMsz|VPcغhP^C>8>yBѫ5,SYBŲH5acf ;'d Y|,Wq{Q,2yTr98^ǞXy3`XKWSj*,*Xv +@ބGg*KJQ 4ͼ+^qL`VsNjkNXB1= V[.g\UiP^z;%z81.Nb:Kq+̽b%N) +RV*`չRQ:f1erL֮˕KTCKOtB"s,fdk~K^tyE$ GLQŒklY,4 V-Ȗkמb8 E!ı {a܁h= qz<xN#*` +b`9$dry ׶{+WPw.׳LNlA05YzѨ)ޮqg}!v:"DV>x;"c`RavWXTB'O5T-q]VSq[ ḩqc2my +%yT>SmgGnm=815q_ q֭{| x'L%\-(0V#G%\ޑe?Z7gX7àu?]bOX8àj9jh VFDny+AH$) ֑=i 60NK ,}!?O3Fuކ@v+=`jO߶S0*BfQzN-99mV"7 բ^Vʭn/G]GM ̠R欣9۽'Ҍ[Fҫlgs*%WaJQ2l.~dHr@2 )HD*NSۊ$pm_$)R'g(6؂A^%\zHb#^.rs,B_=ǬL2=:h*ӣѫL{P/9 +QY@"7ܣ#;6W*VQٲ-84( =!1>׼Dݑs#w8dDERRME{pT݊>Ɋ ^EJAt1=:^E{TwhrQ QyWѾx.@E^$\G5WѾ3 ([ѱ,OkU5obn\}wbkd_)j^*晑H(30W<ȍc)PdE~VWgV-* 38Zx={{ jOY +Z/%TGG٫뗬U()SruW:2|?*jҫ +6H2̗X=CV +AxXg3TcƮZ%ei([x7,Ȳ3UҚ,yw\o^_^蕏O`dEƕ9#f\yMJq:|YUvqlj,bخNnuv [˪dž,̸87MO})ڑ+Uɟc<Y JI5QuY$Ydz*:|{VzP[-tYbݬgZwEJbgjAU-AYƒYPzZў\}cDg2i 3RrMu +pTzP~zP ^=Jҙr>2$v#:*aB~{׺kp {)RŸfIyQ&VvZ9i)͓5,7aDnː+̒&O>{"xC޺W{a *Yc{aRNqmЫw{;*9o?5pd=%W:9yρ;P, 21^( j*E\ll4S/e2H_~}JLQ$k,%<ބ4VB<oR2:蘜4փk .IY@ 8M!8ҿp PR^^LK=b GV`—Rt3W!j Jܸ3, endstream endobj -1827 0 obj +1942 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1826 0 R +/Contents 1941 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1828 0 obj +1943 0 obj << /Filter /FlateDecode -/Length 5333 +/Length 3021 >> stream -x]K$ ϯ?`'98< ݱ'Ph{z>rxvggD#)O>~);ˋW=}b71\J:SiZKߴvZOߏNQIkc&sH>_z泞|%B c5^'`ZM9Di>cXe;)EoۙTDC8%vO?|w_=i3`SO__vֶ|~w/TXsQL9mESH⼋#IJ,yZm>_ϡ8 h.%7Nki]i%s~Lwӭ2ӟUnW~3ikdeCph)X\9(uy;ao x;r6cSTd*d͍ESfKZǎTEGmc俦]Njw)N)FɘɑRAXFWP-yZtT2F֦ȔV϶ퟆ壽&BE쑓!Vz<8ԏ9+VlqEV+Rl(;2mhȶwi7gT`TGW2 ]"6n WهT%zK8(Jë!cYaʴD#d#w0QgKx]=ժ3>^l"#c&`-$R\ -σKёH{a/}+ -u'V4Geנua%KWۤq"t!>nggH -ڎG:3 -^  n)0JFb&R ؑ?z(blYؓu援w. 2f`#R?6bt>_ox8ȎFd/,Jz/#!*^^M ~v%4:xKch7֓"94"19eeVܴGr@8m.,LW7)*E71q#\J;Yb4G0A39}Yۤ Wىpep 䘬f9BFѠt`f=3"hpD)S`Mؙ㤉h~~a'FoWhTo̰~Sw$[kFqމX*dh]xMY~v%G:Rlrd5!2#>x|{jF:B6O6J?K &K{}P ~RΒ |YG>[xXӳ'sVVľTzz_XO `%dhOYOj7==Cdc1*+/yzQ Eke(d1:r ׭^WV}=V/Cy#ȹX+e_ވnP(խz?!Fh8Fƚ7v#7m:0F^WԂ1gz~~a$FV0%k{1\#QHPѤ0Myr98Fbd1r #Aqe#s>OR?>btw -WYatGYHsTW+܃ -wGۤռtUVa HOYs j7q;GzvQDZ9>V$)L^k7d1:r欞Gn,!ۑnKpa݁^2NhNTbSl`= =ѹ;cddgH"EeZ0NZ(SOQ?OR7NtpE%2W$%؋C q \aq4 -w@ NonƨFnٙ+xc'}5?"#Kvsm{fHޞ=^'>秨}{s2n̐c=M YunqcR š8-PNְ11 -Ra0c\ ѻΚ[^ ?GTތk-c^Tndt+oն$ҙS&Y:a.TjZs("?+hmQI,[FG0zw{odh!3Dfvb {LTui ~J.sr s̥X +H&ti@u4a m^?TWf▭ztg0sX?ԫMP(1-Z 4<7@, sdb6)C9C咅8g7 HnKήFl|YrG`Y7$T#Tr >%lu9SF\Yt2>O-Rё 61z7SR!2J%HoHUui Kv*D|=~ YFqnY.mDp@ۦ0 d^;ħ`*&go|T-~muv/ %p1`|kwS K.#Az);1Neqt,02P]Ƿz'?|E -Rl`}WƯ7=Z؄*fϷ||),'{ɹ!1;JktG5 DpwTP#p(Mzbh:Qں*Rp޴#cpaMwTx9]+i,}sNS@o!&g4./:[~Ȯ_痢6<|;;\n |~@mC V -$гi-5-Y3\1q --a$LIepdX&$ucݤ^dcd$-)Pw>rӸ2X5BVv>ҳ|ʧzg]賯Z@;@# -8A^/dޖ{MK4urHJ KU5XU 'VU#_@z|z-O}2faϞDc>(RRژx-yZ#'lZNFe|CN"2қ{ 7܄,CeBˤ KhёCC!FF6sVaG(RGఁF#4%Q[)6%t)N{:FzJ)vuelJ(WtUYs"6ep5TQ1$n6jCKFG.ɅCCcF )Yq[n@Zn`[hA1RIh{w,'{ɹ!1ѻ۠qƕ{B #5FnW)8Dy)Ɏ12jqknD5/3:rY4k/;cgg,.;ԂbHfg1'{?KFG.Ʌ?CcFowp~1bNjrj&\/;6-r'~n~ёsI=94D>0z~?xFq%Y0x6K/WKҵ01;>Hlmw LTB!wu Mz |ȇ@9&r~Fq1>ᅖ?z9|Y0>ĵ"rDoYxƃSvW1g?pځr)v#`4]c"PTj2>+|@FG=a{c";\I A -F"t((MzbBC4 -:%y(4Fz(aMBfI@c"P>D[Dj32&1d ٘NFcqBmlLlLHOtLTG"+һ3&Bڂ٘!;΢aD EU1DnZ uL+fc"ْc"@c"P$DzdLDc"?|r)uX8j4Bc"u~bc"h>䘈12ֳ ȘTDkߦa#PKH,~8oKHudb nZ0d|OvP# -aB!P?p ȕX lP}(FD.J%"7B<]R{ȹ'{"sO=tDqƕ{B 5nFnW) 8Dy)n12JqknD5KjDnWT&G|΁#"P1$l3d?ȅ?=g|,B5ƥ\5f1l!dEy:I@]HG%\K#";\edAP2t~uٌJIi6m#!{<Η2/Hq_> Cvq2ǔq1>v#!>~>j|Toey:w]({)Gˇ!='Y~cЇ AzfzueXVPbVك گ>&Auvv_--}(lPѝ<\m۟~w*8^;tZmsV]5Tv(QaeY:IJW瘊庰6,ųdjh5YG =HߕxmK(9c0m/?,+.'%t1ď1~XVǎ -?Ic_ +x]_s29$`H\Z-M"{ۼ +\)ʢ$I^  *ɞ/NOZy'1#_>+tV ijAnDT"jOyQy}gcH;~ (}W&ԑ~=s +90gpVfN.u3jơyKWfqSF!(Y0zP̪V;]FvzZOX.\ ZbB8?:}ǟ;CT3h ~,Nj")]1Onem~>?aQo℟DR7-vzaL\sKp!z2K<,j/^Y{hvY"kDΝ(*v,cThShOpkc2 +>ITV5_Nv4vQ߃H18QM}_2<~ts}q%f0 (T搸ݞn tZY)=M2B" `F!5нcBt_5=-铡ʥt?4@z]ٕ;-OFFZ$; 88lv~\b޾t8ҖȔu*hYdʕ/]63TJZ{Lm({x(-q6, M KBc}tv }|vvu̪{=d\?N4oJ&wC+Qj2KMc[&49RR&c1 R2/pv%}8/T&h҃m5|;dOH(14@@{l`[R΀̿ vu9:e"Լ3v:HԠΆ(塙AӤ=lP{xhfPϗM?mnPY5d]Du_}RPK+GcfOkH6=l|t! +[jڷM̄d[H殱8樥42R iMdRF.dTR+/UFՃf+@@&"8 ,J6 (ec8r+#Z*-T 6ppAqel(T}#)#Šbе +X_$$,KM܍*J#!D-퐎3v[j $}u#;@ yeWHU|:1@xs*1 9^vHYhasmy̲rFJ㧵sv#a`V-7J8m bS%)miayOoAtn”O3ݲhŒѩlj8cvQ^ET 6ȃ@Ǡ3CLgdQ-aʞb=Gitr̤Dx+cax+Ai[ $.mZx;;cBJoY*$j^*A#jqߘxqc_<1y/kkc cⱌLs<~t m<&M<uQ{% m_O.ciO%\ZܟsPΨm*a}Ƙ ȞAQL2SV]80cм]+ QfQ?g(ފVFMKg>HFwYܻӠYVFbbpTã̑>Y"sKKs +ǁGm/9kH ~1o}0˘\NL^;rž1`R oKD܌'Z.Z$+s9ŔRpzBZdtg(yV:"y-.׹MW⦻$D]x,zE_pLe1nLuO9aJSh1-iz ~,W^{z:qG-5plI*e)Ρk ]#,!'$6FQ,N2 絞 ƙn28TBX=8= +C)dqM8";=b̪XYHˉ?8FBvö DbYo$ +j؞GCִGvvT8oq@ԑ|8GgVv:ӼXUyR<<8&:hDW "!ت +6F{z dq[|aURiC@~+djv-t޷]8&ߪDT )B j$XBŏ%x +mێU-k]+4jX+C19#ALv!V䜴"ki9GඌVѧx9 hk!:2>Z٠H:Jh.eiY_'[*Ӓ3_s~|6c;柫PZ|G$@JxCє3FK#8B\au|]` w j.3b0\O%YYk}?B p#3 endstream endobj -1829 0 obj +1944 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1828 0 R +/Contents 1943 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1830 0 obj +1945 0 obj << /Filter /FlateDecode -/Length 6061 +/Length 2634 >> stream -x]n$9r)M`abhOk`v`VV1RUHFE#hga^W'C,9__~{YVo7?>{qiI%__|&dbjsKέoO-i]SNXSb'k_^~,_NN_cX)h^w0+z]JbI1а6`v5lsμ.~-h5-ٯ/}߿h__'Y_/_|ZCyg\rSҶ|F&%WN)joF6|ܮnqDn ӻ -JZFOgL_+m *~؈[G#CYWK~?} 4 o%ޒdI]OvYobq9mf|y嗰/wVx5RYJ!1'Kj*;\Px[9%SYɘ>3!wJ_"Qc+ps[gKg q\ })vMDsI\}gH(džo43\5UF0dXIUo q!®6.q~1ggQ:l[fb# Ѯ4 1y1E{bL}IaNH6ǞEK&O|#:4ց[9;imkb <{[, .P,ō^ɽbi\\]N]Cw -?uohؔ5>FGNc5:pѓ8qNi|P|4#ek|b]IO4SF328/jzB֜B~MMi^ct4=FO_kx?$a޼O):y&Tɕ@?;(Lfg {}n&s  NXMZ0d\\w&t*ӘU奐, }"ЊڼgUC_dijiOx! 4D2iYl%عJ2w0VqY"H&/ْ(Cn\U~0$RaTi-MgꚉOƻƤN$1zڔ`$ ǘ?j}Oi_h?$&!~ qw(\w[pDC33(<`h8?Ӓ`h`i Ư kC=clv찿 3z 祔ueG#oܖoҐHAZN~Ws,ɳxG  DAUf150G T{A)VփG:<'t ,HO=K,KһxsHb:S0鮑t*||:t%}:̧C1J\6.Wǻ<5FGNa՛:pѻ}UCr@auCc!*CZsAdzX-ToP:]= gM-@zXHW# Kfoh`7EBt״5cY| /YUGTHc΃ly%*q<~{jy|Z <&/6qa1<18 ##~zR^ou7t,΅z}H3&jo3K`aF>Y>aOW!sl* -&0JLV*l e)(ngT^JTָ߫%kNCdʚ`v}rbpJә X&d&Cg { {R|GRvO\L`:߾L_#hZ~aZ7`d5<( {P:ڋ8*YY^z_tj7PcI<7MiyD}AlRP8i[jaa{(StNT7==p:; ByJdr\c; fB+YsZ Jo:orתv W퀳ځ BS cV(2a)9~rEځĭ[iߒNI C`&gmv?dp G.7©4_в9GNC)k=e!59$θz78i#{f;g;/P @zl~vst9a;v 9W&=4'OBcv* ԋI(gX_#Ge`(ZOa))޸.݃]CeR h$cd@@FM1440rO7 =?-8[zQlcv+|{4suHBpFaa`>\OxB?q@z-t0~ =~*+1(ǨV]|~:2=zĥz -qOԴtZ#**YZɫY#>uFg:ٸ$`!%^#L` -Jt/ᵄ -Fv!8~پ%t r(6N^iTd:]D _"֛DOdk`CdE:CO/3ec@׼ZLb텸3҇)w|[]2eP_{+?jG ~pO\XKMָ(Yce:N*k&5YcO6yё==k|W4>sJb+)\kLT<7؎mr'[R[I+h @|)[Y -`䭀 -Nf@SV[1+HV@ceYoӚ=Q/n)śDE-ؔ5?FGNc4~1z_' )LrͯW\w֯Ue<[Df ){9hF.UkO{;=y ܀:TmcT~7ܗyjF*S}qiʕ3 5ָE(pu&k)ijiGw>\|Z9:k{0^[v+*5d:F5n͓@2[_+W^ -E2S)̍{sB Nic==L?0zY@bp%/`Sl,SmܞRAIYL籖ؔ%FGZb~n-1z}ql3,,%̨7ȠPMe38>ԉ 4_owT8ߗwzQW -FeMtnmQWBn9o'nk',?bJ2Dh󵺔M23ХWAEC0@\kSZ~p3wN~`:az^=zbZomst!AMTt+ptDzvࣣ|[cwjfsz- Ņp$Bl(,XS!b+u+̼Abk,*]ARX~KhIݞWB"S) UK\<܂.xY!F:Q:R,a]| -$׿9wa\/*<⮪m*?k|E[9I\$ÿ2n`}/]'D[gOԾeRlJLֽFG0&HZyb\խUv ~kYw *v +x\͎)Hs,0t9t=mټ?E([v(=҆#Yf-8j~@ɻ׃Vz(!N #APXhBgo_:琾O*ҚQLw1~+(}忇3H||5 BWsU|o$zG֐CHa5`fti&6/_`yc>?3k}|||my7X='06|u8*ۯEP1a +r -s+ Ql7~^’_kNEbB&KӀMڪЦɢd#u'=(.t3rٞnmGMĥuv dˆr$Xkz0nSY#8 lv \Ȱ]dFP{1zT!,gb|bME rqB)6e: +mYpOg)rb,*lb)́0<'$ȭ I S*dK*%A["\[_C1J;|l^XM,9&e}u?vI֨ETVkYGh-9pSZYoڸ.S8HjtcۛR#u9ɕõ k2PۊjR& ª/+3܋%+ⷳyWE%gS,M[c.~(n̮rcLEVWƣ0hh( R7ri"DE=)P7UR);&|_>(r\`Q6/t>2cRLV%uFɗв^x?J+@ m 2RL1+v&WTU&rX' +c1~lQTTRm;P;]g^mr&@.\3n,OאVIBy%De[ eya}0r ߄XRNģ +)cx[A[.@8>p+ +I=\wAg`ڹX^.t s3v-$V! h]/xbB{\*Y(nY +K1`Nw&p$SJXGo&G +Y G5GJGJU \|V8v&8R(O78ZHUt#[#o)pdn#.WR#[Ju)g]UpSH*G G"B9pPnpSH w#M.uP뿟}B>Z1EfT1u)%diQp|͔|R_ȳD\Kfѕz_3NT,aֽ~K,.n ؓaIAa}0,?ֻlaɍDR!ݵ9qu'av qe R+((C' / r*@w ナs`X<8"( B| ] x77g}4h_E߽A3( zv YݠkA#WFN [C6hnGij֠i0*:5hZjS4MA#z5f"CݲH9vDE_LݱߔD Υ{ *8RҖ$Ңk^Zz,G)]k Ƞ3sF|Y†(GE]|XEyKºܖA`E nNv86"i3%ds& ^MvRh+ٖN]gN;:f**Pw|6$OdS?VFN(rYu5†!b%5?>2y[㇟(GQ+O?~˟|K^/,"6y586ms:b tzpH3}HdןZct} r3c0\o +jmyY PI5 w endstream endobj -1831 0 obj +1946 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1830 0 R +/Contents 1945 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1832 0 obj -<< -/Filter /FlateDecode -/Length 5801 ->> -stream -x]ˎd9W`߶4 5 .gKLǭ|Աם Tӯ,G;"|u_h_rZcpozeQ/#}bٛ^S.%kIiKi%Ǘ|Ve)jm:'kO/_M+^=uGyrw׿]2ZYe8S2E3--9 Db{_?O}F`[^?}}w4~ןj..>Fjm2"HG6iѨJz}7}"W u{fʒ|NkO(2*}&<ԍ<>C8?kl@[TߚLr f ? MvmGf) Yzۦ`lÉ,rA}qq|I%hۊ6g(]g :EycȦ|6qlWde@>=y-Mɛ[ ࢱ[+Yorf5yo⢱s1DE7M`L)*꿄uhika1Qr1a1*eww]n`5ĵLN8}"DHJ #G0y( "al&ߜ'=eu}󍔉‰#1paGrdH. Y"fx409r! 7/dC&,{ޔ> -Wu k1\i8cuQ4|Q$9MWЊS0&G.|a慯y n&v'0R1yzDeVyä(ƣV> 3ke= T8>O0&G.a慳y8Y{"uHchdcHc!tc~i(֒mnBvM^yAS:o@LsKPdV9fa$ -g _gЖM$ ʂ~BU"}9m3b_'da;#L^ߤ]3Ƙ,?ǝjח,oη1?0ګYb(пV|lYq5*Ecr8|L -L,Hu/"嘜MV3;@H5(?K)iihq4J W0UHئLH{k$TхpNwK`Վ*yWh;aInv٦5&a$7P->lZԟK*|ŖOlTӸxqӾL!{d?I׮w?|P!fBQhq6{;ZbSLZ>RԡrԒ)s>T*(,W*Ci% q&KSrh6K,2f">iWv哆ι΋-G\Jg|VJ'[*fq_c|R^[l5NgV8(*͍G|s#|U`.N٘~aP(G,;,1oh%/wo 5x{Q5xR5x?T뮑f6cMRI\׍º7Iٙ9Ꙥrpfy@mV0&\5ˀb5?+Tg9V;LX&o}%ݾƙZC2( uU;XOM8Cf 5sKg;CMԐ7B9Ѐ7\F-~24v醨XYʘˎyg*o6[>d߶1^3ߧx$^#yPv.x/ev:臣hԛSeZ|TdZ?O8ȱ*Lqj -^ƪ0y|]-6TEtWJUNwzX;am%G`d#(F9jHKV^$]=#(J./^=o2WEQ9 -ʐ Ty -P"kl{FLfGI=P2f2$޴y__ 6b s9{oo<'o Eۗ -Wf=\H409r -w\+L9Ɏ1u}}anQZJ]H;\O ЈfOWX>{%)W`d5rY&V%ZK ڷL[- z%'tv[5 -d&)r.*}S~4N09rw=#L=%qZԼoJv0HNQ3*ƣR{rkIN&yTi<|ar&5/ _oޱk?|aZɅ/dN#t&xɘbl)3s0zon:ZJ@,Ib˲E1j#栫9,,"KVTiar(&8J4/D7X{|R.:\Ͼ#`7ؾP"I*SXҠҗ&vLκo|g4jm*Z!.~愺Ά:q%u*k_7* 'G,kE4UTӱ26 (&CiSU!?%\S0(Cԟ47 eb9DY/BH!kדE2a}rO;-NtqBʇSN~%O~&;W>׬^W%c;81=N755V=8>8k&P_c;Y|qZ^_ƠE2ޤޭTOs`ri}YOF?ܝ4Xui+rivn昂9dH;` :e:`pT Z)vTbT0;刱PTv0;=V(k\5T+[#aaԑNU>ՈEA~SOMtƧPƩ5S02>5MP4羻]W9E륰y}s Qy=\E2뽡MZo 7z{tai›Dڈ){1T3@yє1XPQh:bSr;߲)^t^I',Y@˔gi/S0QF[W+Tb~k* VSpԛox`wZObVzAeca$ϭ^Xϱ>Qv>8Ah5*wAxM?i#Vh|bSiDmj;4`d{OF3{w i,_r_q&3 :;YBL6䨜 D@J #G0ysӌ> fKkJu:^9(Ə]K;'Pp&\ 4@9ba75M@yoan\w sӍU=$T؈z<ŪX:B6%Y8#BxsS#jYRoN`!5(`]Qx5XhEtM0W ^܎4N09r 7"N0ym7b$$:XvŽ 8op-om}ye@&G.la憭}&^BT5׿ô[١N7Be5*< J! #0ysC،>!  1^cn+~>q)B^ym%Ac'$PpJ7N(B`*ڦنUɛgְvg`&cV#8Zu-j(O֡mn%*DL7}+dAy&1G>7];yX/ൡ{I:8HL!.SPq9w~VSL+:悹dL.7C|LN qN',JIHs&OޠJ#ƽAyN$rn} -nv6(9u^D+QM7|I*F>XMRSO5 < -(QϔsI=)։2zztqӪ32Tc7^nkuHƠt6SgeIu6%qB'?kgUt-e6È95W~m2A߈Ϗ{ZbL3hLyP&H@a'w -Z T/ ;E@jn-E ;\l?z*QL7` GtL0z>w~x-T۝)ٹtcjbSϚ3>=D8rnjebYd1{\+_ [6DCprHu)/ -ZSLg—O٩-ܶk{&Mv@S -endstream -endobj -1833 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1832 0 R -/Resources 4 0 R -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -1834 0 obj -<< -/Filter /FlateDecode -/Length 5523 ->> -stream -x]n% +)%`0II,ڞ`B{}Tw1)~Hf -bxVJɩ?g5W?_[|pNZS}|[POZ=VT3dI}~=+=?}}4<7j6.F(L2"H=yP}W/"'.gl&CqJq8#M0ѠPy֭3}{a{nÛkGq­Ɏm -d<7l?gl8bTVGg]@s(0*\vy=[xrq-w֝>gr*ܘl n˳3:ǖLřH!nɦrd'` [ ࢹ< -/ W4N^y⢹SsaE}&E6媂צ -G71DNkF?t'$sS_ZE.r07?NZԞar"L^hnaLXEƯ@ŗaDWIO1L4%㝠,tgdHJ^RTeiAq -S09rTOU#ps -e;ô[99SMȣ@1h\3lH@C*OUǡ*LvQ&?Uͩ -gZ^ȸL>m}a-E۲B?_1*Fd|;ug)u1lFF{: Gu`SuBYF)E{"7s .>a*&G0yionN{LW v,eMiu3v6Γ:T(I'R~rJ-C~xt'WN*e1y:2GV+FJZGׄۤ`zm#sT.&$q*,x|jrYL^qW}􀬋6g,XMҧk\ԃXjb&V!`*g W av!`.lJ;hjdTag;dTzPCkzlU]g lX:[16%sil,^x۸hBi7ǹ;貕oYfusPϦr]*gx }Î"~F?h^l!ZxC&㴘*gX W kvaazsy;(t T [L bd(b2[i1sԋ[L@M-&(-&&)ڠ]~-&Prvl<%f’P~EIZ0k%=ַ7*M-ʴ)zl77Cd|Ը-/} ir-^No|a^7Od#hK)=P R{#Wս1;<-떷i6{IqQ<>t;"ewp(@kzuԡ*d':Sq4|&T{ŕ&ϘͻZW[@>պ2oq㉉][[rlOLrA7vSO|NࡳqJ8IK¹Ŵ~Pt #.. %P-\zo;{j%{;Kp[MP5&Nk9Z՝F`紆Bkǝ5L+9ZC54JT֩)R8YjS-C0 -i7Wն+-8K˗)3RUCwb\0ES8J&G.5=5F{BJrPK9|'h'dQ!ϖ+&u2}nz|6(Lm4Svg;m~j[[˯J?*zt&;o;TҖ@٘}Rs\uP3EzǶ1AyGQDmLRwyI ]&:NXa}D`d R, Pl2e"~I{;_wl(~~P"U0r|d G>[H[C|ȮƊ>|xz)k<kVXp_c;W]}u8 55#v+Sv/XTj/k`reyY/˸z#gb NV[q^.1*b!sK6~]}p1oo[inKGZ2,J# 0y}#<`#,8"bH0bx$]/yap|?0/F*~Pvȱ>&/Y'Cp2q6>b9돘+`}/<(~yVg8+J,cyP^W<(O,,layUX22WQ?<HW~؋KF,=Pɑaf0yaN@MtUyt1W<:~ȣ3 -'#¬'r1:.37&"`*GL\D#0ɓCplE~#ˆCVҾxoWJ8:qvAڙ#?3g~L<ɘ1O??b8D}(!M?ή/R;crXחG`,ɓg!8˃8XtU1釜Ggy?U %|J} -ub*=&G1y}~fJRO=7 ˻eRG9+bG vt(~=̶ !_љ *n1X5JvG`eW! -*G2dqvA3PX& 2PޭKvUFF;U[/LNvq1Ԩ4\rJTҡlejr clʂL>QcF;5xsՊ,^xچ;]n;B5- KuNfuV-xݾcW;asF^#5L\Uj;e턎e^8i1rsN}rm90$1'iUjO09r)&o43O0y̶g;=i%=:Xn=q5FVSIfg&Dc4T4ah T@9b4JcC03ey{r+),A )*a;ʻ,&Q'jZNJTٸ+:٪flU9O|@s b% AM+Y5)̩"!r,j=9{S@L\njLޭo-ǎ;[N-:P\%[5bl)n!.x7WuˡV.r8減*,15Uy.vs -5+CV7|X"YCzV7P#aE#0g¶Prk]p?>F>F>t'('dy}M8irR;Marh -חF`44uy2׮2V9<|P -:\c4 y^D.!Ԩ(+I*??R;ear( חF`攅3,4P,8wi%WpBm}aIV"HVTj-Lma̜0y779Z*TfbYlg,́T/gk:T7H(D*+ST;2vRiٶo+Z4ޛ%;կi<!4Kȗ[x^r@Ctژ_'Vk N!sV(.vbjWRt't9H:MAGRKm<#_?Q KXqZx>5|(1=-)ZB'"Y;*5@9bk'P^ <1a PG,w{X!uWAlZc~)O8;і VUC(2 - -eh]8}Nͤ -c5T71x v8/9Ȩd6vA߂/?Voatc(@+m<}p{;{ :O`"*9TnjvZ,Ԫ4*8xN$j18ԎCVMw U.Ԣ^/jGX!Ԃ3 jD)jG;ZLS> -endobj -1836 0 obj -<< -/Filter /FlateDecode -/Length 5516 ->> -stream -x]n$ )R[$ lC`;=mݼ?bOKCzflD~")R>~Ѫ)==<7Ol|˃ SHNJv1NAIYGc&goC9pRJɩ?Nן{T|/DLqwy˂z_<%OnO%J=I+auN0QouY8OvNh9LZן?/?Χ/V|~Yav8F` -e9G*+gh}>ӟ}!>D\f2D]).NL/L4)'}OwjW}%y,/}/L?ӌ[~4D5fNd*[/g٭?˺:+/['Io?+2:+dcSt6s9̊%u&:( 4i+ `Qhxrd:BTl4%ݕz6lV,#U!2c4ߑN φVVlnDrF?J`i3;[* lHk-SގYޓ͓ ,ṤSv*2:_/=B XÝ{s%& -8UOyi#S>o=S(MhO>Fat(Q#愻Q=֍$ltv6UM>oWn" [*jv6D}v(j1T$0 Z -N1a#υsacEaJQ#l =NzETh8FL`nB6?+~˚X -jV_8)&[v fh\\?:#G}7`9:W5m@dD0GeXw0:r.Fs]s]& $ft'=q)GθC.vԨB`bN3q` c0:r0\1'0z)o3\{q%Fؙd/l.-* @[#O/6>s kbs(⟡2oY^!ѯ_ Fߝд=%E!>iS|0>ĵ<8!R@z@[U 6IG[jڮێ?]^f:!> ]`b39k,KqбdzfgַXCגK]g vBMo tʳX![0`B6zκDwFnVWc['֚ u2a˹Nm;NvrA{X >=P6M/ilTn;kcMi)"TF7T]ؐƸ|r5DnAobs S`0\9j0zW 9R.0+x1c'CF^?)Z12҂{oIHh>ru4m{ZX}`̘)stC6$7ޮn=Z0 0ZD)439|!ud -HG K U@zz-EZݟľb);D ʩԑ loq˵ P' -:ek%0DFv GN^ -cd+iliZ<RZӭ<ĝmvY[I^qݺ ŀXm,T"9h kO[3$r=0[BO5u 5.ekFt]mdvΩabkd$S&DS9ԟȥ80zR#;FO5T6hM٦}9a oAu_. -tGJ -\:NyL8gG}kD =c׶rnMӲ{OƇ$-mY1:r6FV?}Nb<먡vJuir[D0lh atW:XYuB`:Xnu6 Ї&vs;YN^̞Q|ng;Nv̞='gynglT"7P۹ --@Ğ-bPN5m?o}ngs;CdcYs; =zzz[( Ki-2FޒF?S[G(ǕQ{Z΄EI m :,0DFVޢ$V]<_z^$FP^V@e{]=SOU -b#2&yrSuGQ&FeR9N;5~O# `<^ؐh@N<xWy#{싞m{"gCdcF ֈ Mhw *k8ݴ@wGmw#oAzuM -͗P.Z`DlFHhTez=Ś|l)fCdd <@zMv5-[s&aJPT&J'܁r tꞛ( -T ro'S -)Yw0:r.Fo?iE^otJ5UKTacn} - J%,,썔ldR.(Q@X/|a!2>fv¸/Z":_Dt,r5/+WyOG<׼@e{>E Fs<FŐ|hʹ=NaR;ёs0zCCeF ߞƸKxUgeGRL歇.a;79k Zɼz߽qj5OJ÷^qJ$`8Rёs1zyI#払˃=%.-ak %mrٗo` P[ ,ߒjUR* #)ׁY9́sCH~4è-*ʩTj6ַ}=p pﮮca.Ơ26ߏ6v*Sҧ~?ړϩ -vU=[ K*FGnWoW1O|WUݫfvR*x /x@744TTJgȨN Y_q^jOIoQU}$[\'N~]5H_%>;-h!6LGm8Gz,;V9 -w_/NgUýL{rR-K?$6GW܂+t6taUg'֠t%⾐|\6Q%K$ 1_~#X>WDK,W[ O ÙAr0//kY[O^}Y%ϓi;VmX\>b -endstream -endobj -1837 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1836 0 R -/Resources 4 0 R -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -1838 0 obj -<< -/Filter /FlateDecode -/Length 5423 ->> -stream -x]ˎ%9nW8Fb0M1>Hb(cNdWU>DR"HR~/j^O~/KR)FEkU�ߏ.Q,^| Z>ח?|Ջz BR׏뿯,良,tsՒ}ݽ(u 5y]*ٍ//I-N@4Krho//WmqˏVֶ|߯_~yӗB\(=:%hFi ohbU^}U|?Jy:I\˿hX7&[ d)*ԿfˣuI!d%='?!(cCW`C|/yuAn%˹fl\I7_J(T -_ߝ#[uPeVvi_N(jE߮V-b{{%V-!fB5MKP -PH<˺uk:HdˋkX9Xl֌{Ls`;D }x;8.mAҐN8ڷ)mCȜu̡f:(㈭q[ 3l%m-k5ζ5v:qbii픊6[c&xk'W8kY Ki\771cxg&F?q`ٸ c ?S(Dz6m\r# P]Q҆J;sdi0:rћ a3CFdpVd[8A8{ݑԂejQC|\.S;COxwZgjg3-\lfl,S;E6s YKL[lhٯ:kDC؅IT6!哦E=w4tļT`0ީz{ʩwcVr1`0}s)22Qwl; tj]P٤vLp'#cb3L,qd.nYwg҂uS kl(սzgKNYR`YHA+>БvBk۝]t.v Z;B2 ޡ}ۃ;Z2uՄ*Is&\\:Yw0:rnFo4cۄ{}ɒDeOO;17U Fq-dҕ("AO -_t2ٞ`di0:r0ћ s3Fi7%saJP0$s! E,mnz`0Eyԩh0EFf@.u5V(ZR]>o(͞&|@4 hsHԅH%A1$#d -,H9 7E1E5uM tK:jpȎwc Q*hN[ Kð-Tؚ2 @zO#n?\wdr%F7BNJVЮ~Xڔ̪%#JAyL<4y9ͅs!g.urmqGs;zZ|d4(|lFvߞbT) Іr[,C FG1zs!ppWX~svC6z~ aְTy5~[J-Jkv\e7A -ykEj6}/f=_@>{*RqXOChr^=H3H ՞ >cr9!0> /ƛ>i*7[.ZKָc^; oH4ޤ1q7Z3EFVn%u+/=Py|jvsA:m>[S=?|~{4at#Pܣ)2mw5C jb1j`=e./A2U0P&#JPɤ+yɃ,FG@)2=k7\?|a\j`=/PF9Iu7Yhegh:?ujĽ>5GFvo@âFP"z[jgFThEFs<L[l:FtQ7ɞdi%鈹D\GDs.Ho ZSdT b oDsrJC7Ę##AkEHm!vYelXE9xl^&I̵Mw+E:Why߷ڪ6UW9POQ󜚃,;9'0'b̉5bNn~'RΉ@ # .vRBq9Y(DrQSeO 0!jl=i`k9TRpJ>Mt*q(ap5E^W;c0UOP\ 5b*ЉsڤW~'VƳP?u []vPfoVNYOV/؃׌56jM;k*xdC !f"P -'z(5Gz(9";Brx ׷1Ȕ5fr}ldMEP:K~89ʘ/!݋"?x\x1>xǺz,_7-tEMT{ta|kKKN[ -#Caz6֖l^}X^{;HQoBS -5wF[p ܎~{%a66*c;zM֟tV$>yy{; -OeڀֆmO#@:~X6fc rE&Z B)sxб[ծ.6%k֤"6lsڦycO5楊s]=5nk!=إiZ)bk5< K$h9ѫ Ké Xjwxjc|Zz=9qO?ݸ/sCTWJ%[.." 4[9[3氅+ra< FH0m;d>ނ#ndD6z>l 5 j^zgQZxa5k<Չsd9$A&_c_}OeclSg}j쭋?wE MQ` faAa?y(yV`#[\o}+֗g+j 39^溭l~+)kb@* -qL ; -–d"j0~lOŸ W AH1o?oz吻$JZs]s?m֠U X=+ -endstream -endobj -1839 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1838 0 R -/Resources 4 0 R -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -1840 0 obj -<< -/Filter /FlateDecode -/Length 5472 ->> -stream -x]nd9r+s&F/ c1zVc8xɸTꐌŴVJb! ^g'EVM1^~{fo7?>{1a -_l*נԬ 1?^_d0!WJ>5/+ZIW& ryJ޾^zV*xG`af>^ԾqD}Dg3CWéi&%ҳnFWFߛW(nC111"!WgŠ1bwo+/ex6_R٧h4ʥf%At -cq:eHf_A~YB,:eI+gʘd`< -cTatLF|S577U=s1KGDw*zaJdd.\u&&2V1zjNqΦ&/oil--\Y/ʵ?o~d!1.p+XE|(e,za,;oFg+Vu os~VL̓`:-GR0q*LhiatEJ۠Ӝ4 6Z6{}kRy5Yh1{Kf#g0z盽e){MUWBÐ@U%5D[澃>MP2DVw}I=eVONeC$I%=FOg\Z9P ?]+|6O0Lh5w[EO'VGiJGBidLD>zY'F!q^gL2^[y1#:0zzi>-G"0T\vG< QnO]fsmL*"`ܹ_`t\jt.\zj~ǡϯM"7BZ½!-yM^I+!4@%c(O>6F ({Ô8W)U4LA=O#Rw#Rj2,8wm|$Q8TAJ9QN.L+G䴘슮w5Jatæ vՍ C0:秐W3"l~MdN -Pli-[mqzO|Yx}WF#N[;5tі6P\T/v q[}7Jp_R 6ql/|Ui*^c"M:\]y`҇)ezXT%"HU4Jsu 5Ck .uGkE5vkriCѺf)XK+ntڣt5kfX+],wXS|rFG܁{Lc\rFoO=%ZL4z k. N5֟U7@vZ -iO/2fq MO2|zDڬ0FG+`F -\[V;E"8ȩXU;E+rEr‹=ξRq]hcEx\VoJ~dBs;RtnJ˕]vؤhvs=Rё0zF0zȪj7 k W}'! -X/A::T7C;0Dy\ʔfat'c§s'QoMp͛B WbBEO6P2NBj<Py7yp~ё3{ǘsF/cKq{K_PQElYb -*WWXz+QL:ֳ3c,dH=PA?QY -Ms0g2Vՠ^6GHu,|?0Xo0:r F1͈ F/{_HõuWri|}~B UYZO^!wA\JV9cӏ)όTA\}pVo;p%XaN+ଠ Z$ӄK KHG,\=$\2,\Uj9ᛛ@.Ś`el0c,AcK/Z@>ORș/c׈ Lrvjqj6ȡX5Vľj6*Oֲ%TLYmx~~Sё3eǘsMF\!pͅ++|}('syN5m#(e\|< Kf#g0z1{#悛=egCMu1S*DC|2Xg^yؑƋY>v;or6ǪvATr/"o9~;1 > ௯?v` ʝS?C\zR{ϒG,uQ < -5&* x#;ŽTaa\zv9ŽJWr Kpv -w̫j71r:eTNI[mgd? ňyFf1\o.0. T#^r [t>2yv@MFGtMFULCW-f0YGLǭb5*!3FIIƌ,u1Cq6cC恙1^> -:GUҵͽ2_SL&M&b)Q+X%[IiJηbqU saaG@>:,Hѐ{;܂:d=59(R>b @^BtwN:/N~ %0C \(JJ`rR>[+ӁLevT;X)[‹r&Ȯ𢴴Te\K}=ѽ1^HOd/l6-#v} ob7o܃C4zθ.&C(JV}1>-U2/']gOawe,Q`2'=YOȇ$o&^4Yλ@:byHGp墖! 0?|W}ITqfʩT V \#l/JC=~tdFG)W6r} r&s_9jm~5jQll\"cPo;znlͯ[nCǖŞP_T]A(]ck]c5*q](]Yƶ>5v0]c=k4x0BAFpP5!޿1n5g*&&4Q(\$t |9~9q-"a7b~??}?J\4{08e 5+f9 Kb,Vgu`bӻI ~Zp9XS4g" 1,? - dhy '~{, eaetUqg̿Ur6m4I ~tvr 'H -endstream -endobj -1841 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1840 0 R -/Resources 4 0 R -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -1842 0 obj -<< -/Filter /FlateDecode -/Length 5528 ->> -stream -x]Mo$W&Ç'98$$e'{z3#Y͝C,ZJzdbX$LShc -><7OlYGɄ)$Nv1R6L3>??OC2SóRZON%] ?~5? ::?n2*H;*4ZSy[POZ5u*]z?=pys$Cav>SZӗ~K#kj>)fid2dK! -(rTГW: -UQoW|?"riq>SG]#׳ ǡ+4D|BYwF }w>hgGncƼ~ (vT fPx;c;.4 W͝ Y%_T+=w'[ D <zm%GZT&,QQ+sc<%/Lϊ[20[' -2X> ~ziNzFGl6ga ࢱ#ΗW+Sbdwq؅k"SBc5V1LN诩p#V#md.;瞮ck͏a*F7&4F<VQ'z*>Es|eDn$8c5l *P5-xmkܖ1TVeYZk09r. 7e]&\Sus5i}5i%C99(Hkȣ@1no`bFft34{jVQۏ0&GνaƸع{ˤg\˚TF>^6gޯs׉ -&:Wy!sL7;w}wvvc 6MVFw, ;ckgt-zԓdSy9ԢR~J+'n>JvbLxҊK05}Ĭ#iMM -)0=6L#sT.載$fGIɦz=gu|uI!psZifC‡]bPO[hQgɋ1= -|əM.`cx7az[8Zk'UꎱA9b16(?K!W>P 4/Iccuj[qvI7J0v[\yzĘ):"#VMDa9!Y x -5Y*x׉Ti\dڮ#P?{uS;/`lO>$. #b㲜x;R m\e B)*qRm>b'=4?e|gWdà|<%e h6K9%} &xBZŊ1&e70&Nj;KtSj,]rh%1hNk,,5PME{x Tj~4X֡\#;L5k5V 5dB qJXA3(ﰌ%UcVa֭VTcV|쑋b/ fv^j8N`d'‰VO`(#dlRr{:ePU+fUdP\RQ4s;'*T -09rQ&︨`^`.n-ULGB_V0ZJr~AC#?)&B'^ոNa2ʅ87J&G.< #LYNKrjw5ok.j+j i)jF8jj/Yn 52)ݤNqaUw_9;} &ט40J3(idT܍ؙ!_P<1c`sՙ ԲVrLڏo3([ 75./,+ula -B\E30/l8fOwbLSN}1=e޳[M]\8s0=-&o9dPx#Wj$dP^k e!Q(5}zN x:m\:m4%ӆ`d (J>~ GPU@Y$sAkp-i1p_]d - e`OmExe^PNWv(9|E &,B) zж%/;@m쩌*;W8k,H5VksXQW -qq  +5P?k,n`>k7ԇ/Ko*u7@9b\G7`g P^ nDUnKq_9v;etSP pFv$jaOPF\7[9$wߑft83KC64H d!K*BK1u&BT09rB#y{rb\励mZ[Nl-GRJY'jh]GRʖQ%Qn<Ş=b| ڔΥdFmg3\ZV3!*<cPϮno?⽢`KYA =}6=P I?㔘*GX$,a\9g`zdharB -\F#WwYbIooNZ%a5-x_]\ѶܕMcS>l0= 1Oc3q6"2ykG2ɻH2PiZSϜAwP!<wP^mD[ͥbRb0푋 V*dT (Q*6[)CIFH6"ԧFbQ4ImD[On=rDo#e6FTۈP-mKFbmDUv(Ft(x8k6Cn#*\c(qxxzXEpHa\c5X7rMp"8iä70&oLzcverZ-DܹoD7@M(Io˥7F Oo`n!b^xFx Ko Z-^n1jpRnMbHqR[ȹ5L6;wk<|vi%P55@B+QZS|KgfԦ$2lFV%jYR~9b:sǣ]( N8fJ&G.4 F`&|9X&_8-Ѷܕ{S09r -7]&\\Sus%i}%i%C֙Ÿ-/p1cS9!םbOb("_|Tar&o;LaL:}KeQ*p+MT)nUsudJ2h i.dy(\KM*Q8{N$PCZٙ]|%Xj2+Ãݑ_YOkI7LڭZu/DdJ+'╫2|v*PBslU#O#wZpԝ4GsO68 -a۟ǟ~xΉsI\}]j}“ՁorԜ=(Le> -endobj -1844 0 obj -<< -/Filter /FlateDecode -/Length 5599 ->> -stream -x]n$}W6̃bZrx`^Ua2]A*8 A4/9=cpxEM+o~H߿8M M.%kiZKvZ_^|>f;EbZ3yC|/'{NQ3^7!DOӄyj5@w/>.}2Z&:pXS2ˋކ3ɩHVqJN^7_b0Ʃ/_'Y~w_^[LA4mo. Uzcr_'Y?kO]akrxѹ~pWaה'48d\T>S6Bĵq{=5(#q{exFɒ|==MSbȨ# 'z>6֦PyRѣ ˘zS0/muy;((IL֩8F ~[“؂,_wڢ -HN ا$`6yz BE㪽_[,ԑZC8#DN0F7,cׂS:ㇱʤUfUo㢻(@-Mf~~xl}*E.mȤs4`~ҢՁFshu1.F`&OrOgiMX8 -vscnz骽@T  6c-߻z(r5rƜԈ>Lֳ˵{Y4fݤOc<<\C0Ҁ`g Acԟ*i_k6C}BvC2en=EoxqK^_gOgi2A'ÃC,8rWlh`5SJv&#".˽WbI v23G[˫ -ejR^c&wu*w@tʝݺhhikiנFɢHMz(Y'=,MTYǙGٚ3R5^Jw%Gٚ#/4b Z k[ѶȡVQ*a3ll.p5ɰ/z Ia L\XwnXcfmKg^AК1'8wxE1@SδC1dxC^Es(%/Mș@TC99٦@ǚ9#0s3A]iGg|uSEd4'7xαC̏519ȑ;G`̏ɓg!884U1?9+ >A5j`q_SAƷM6'ilR7rw*'cpVGq0>jR22VQ;@c*ƐZ9z&3>&G1y2̜1y?'c|gユ*g!gc﫽y d8JS&ٵ9#0s$9>{іJ%Æw?X2=a蠼#k,'gF` GO_`{v$m?e,k $`3o}Cr67iϳ6ys7ɻ0 bSkk2ڪVᰢUOm>tnS"MS݇XE!tܚ_.:n/<}jLf\~tZAy~Fv0/:[dߗ16ok.wzmk -3Vyye֣;.HSrOu7-'@qRU;hkRgɑ0yzV#0s -ז_ˡqbqYnYF /yFg1JY0y+sre ͐'7M!A9b3$(rf6C.9뼂#cdVvΎ6#: p4КTyhD& *>eͧ ה N&LԪR7aF#m13Sx̴Dgk~{('j,BSW,!0%ZEhבI)w]KB &83G y6&J9W w43w0ychf4`Ķi`#wiP1EZ"ʬ hR4"(tϳ 609r4;F`4+%hwn4hZIiluܡ^]TFԵګȍ>\0ތgjqKP3j|u L:OJ2wbcKjʠC-kE2>3r " ~d<&19?w33c0yse2d9{*jd}Yse50~3bYsC4톣:%57# 榬9T5kG_"MUN/bRs_Qj.lG I(pIyar"L޹n-K慒_Rm7VmFw6g I*Uz#I4)Pީ453)P˩kGEaBʖ׎ߊ:W -l!T($GrM,LeaΥ9eaŋRiw8J,Y?*az XReCLglR?marh w.mi w9svlJ%/աvbh@]6lD y7}³ AyXy>"EG+d.{[DvpWR0yK -L!cW mUck|KLATp?gb~m?ӧI"kGD0麠RISu`;5gJQY+M^+rJaw5b> t"RlG[ڵb8lkygN=9DO\Sh%,C0L5c 6ZyJ@ŖUg~=ZU.M,'Ҭ~&Y.ݘDps]لߨQ#XɫǓ\s_]|SAsڙ17e)E!)w~gw뢡t(/&=G欓-SN5R hq [cbk,%nk,ijq,[h[cN5)8Ublbk,x!)Ms`ra}H8Ds- s q\.1BOx'p9F`afa!XC΁py$!V6Wǯ#a%QlRiՇI`rLX`Dp\D{;ǽbjr= #0r( 20yNjh*(63yj ?cbrfLLsDVTf8[IlelYggA*Vs4b>q;>@-1Dylԩ~^0c-;^Tէ@Y-@k*C}O_AZRkuneƫѱEp"B$&ɶ6r&PPiH0 v=\t=JT ltL|b|ҕ؁EOHu9>OJI4ɑ9LX0y W2=8a99АXjDv<ŮX,KC0t5լ.E~AwJԷ#_tYD].Q+AOϓ6EȹH.҈>.&e 8R,8خ%F/E]!M8'[lR?uar 7F.L*qlu{*jtA,PhŞ/b P.1m:M;La݈>tɳ /)[4S*hNQ'`|(9-{0%J)D4L'ç@I@PP -Ayf]{}]?^j66#Y^uTW\i7?$g,@ycdvt00AyI|$8.C۸Ip>61}'Go&sbߟ9!vHK>M碘?>^Zݻ`=& 2.?{vkG&?(;DՃM19r6&ϸeY]3AyYbCm߯z;þ)i n؁PIuAG;K)v+a9.N,D眔NP;A O=,8礦V6m[坠P}L_"{;&u1(=;\'Zo/э JB[F#ky߄˼!z`AyEء! MTb%`GDO!٬:m81DԬiI]16͚}lV7w/m4+)ዶkdJx=K֫nwΒ!z"&hw/K٪~F8b<\`a lZHaOAj.n(6|*g=!vjMY%LbYƙslsrq"4|v {*6롔#n*h}] u5o">$NMNyr&9:7a .`l3'{qu?Ü PmI8S'0b&oN~"~~uMGRȴ34ϓ#PAbć -gAH+H{V^);W3/FB§ލ(1> -endobj -1846 0 obj -<< -/Filter /FlateDecode -/Length 4765 ->> -stream -xn~ -@/`dY{Y%$VK,"cxlˬ WWER5DH?8M .%kiZKh*秗}vJ_6f:|/|cy`oUѓ^T8'Z!w)F<kTU>%(W_^\I N@2Crh_/˟~1N~xwTvx˯\T>Fjm -8"HG3mҨJUXh"GZn,Mך9%31/6z}첓r(d'NVk ȦRRkSvpؾx&Hmܘu -ʺ`4VWC@Lvbrɓ'`;A;όINu +܅vg`'GǢ(ѹpJ'O.v2v6 [1p=wY?/\gc~=G1KqqDI򟇄J$ȑg2'Ev- ))RI-PE`T|%< nHgW\K -? BeUJ/OqRTkH|cj3R0;5kd1)gךM>ZeҲL v|GugAE -đJ8k~\lyȾ_ؼM#{S_2%BMXϏT߾&zD+77 : z?k e,SOvKe;K|B; -,SO2|& ^_($vh]*} &zsNl,;r qǩN^4a+kbgի󞹇|+1٘K/?'dVia'r8)2ٝ82ZrV̳}H)X:Cӓ383c`X~cVx6Uq͞l`]x)AD+0g09r3Nq&_{ۙ -6(v0gXޑ'S_giU}6e*$MSQ#bq웵!Kq=2uʏ5{l#R6h[N+1qܝW{'iFRq)\_Xxb[>sLEgxJ O)] *fgBz]QZ5x߿#hM&Tht%2>82>8ML4Ty*5'ڠD7/\Ce"|7Q-.EKYjܖ|f) J֔|͝V[+]gc]')ThccMі~5vQl@#-)S*1=G3/;v5&ׄwl(44,qDML!!ϳOT=ȥ<'p{iB,0P+ap]L=bgCüк>GLM.VgT9j`ΥF950y'ˬ%./?d=gj|ެ@=V.S2ۖؖPؖPҴBR^"~wu?ZHS~˚x^8!nL1{-2.k3]F枺|o1|A*Q[2%Ujɮ*١@*>ϔ/R{2ɑK1yd?Z eUh ZR&36AዒozH&L'%]g/jJ|јx0FuulRT[,ܥk*<:PNِzKwNtz$bPn{ցP[goCI\|YTP#86gQ$:f6 -;} s%^P$PF\'50کɑ&\jSe u~yrA$[P&=;A[&Ga5jڅy=.?}!%23ѮN{J*r}H}uQVY 7sfsO3g88Oe0g`*9w˺yإ"n&EL-#PF kdȶG_#æVϣM]qlU[`4_?V0^˂R;iƤO~< -gc4.E#Ayhb#C#(O}lhDmہutoq]4⷇T4B%mD#ihD=EhĴC#&O=lhɠm mkگԸ-꙼u1YX?HR8ku}8T8 6p(Bvr8ⴇ<v[($|Rc;ϟOX|6mmE}+ʐb -3Qp*QlrQ,*1PɓEe9*1y2bC%hs雙s`PKa4\Wۦk1pFQl`tQ,F10ɓh9F1y2b(hS`ƹ͌suύC7 >BfRn>uې p2a tv#>1N' |.'>1ya#'&O]lcm;d%7Ȗk5lS}-Hn~VFtb*N\!NL;9tbdFNL : ֟05ŧOaZoXG"d'o)|f;tT8 6(Bvrⳇ<|vh湊stj=Ű5-htRAB*H]!TP;1DFTPRV_cFtt'F3hsbX5y&pVQl`uQ,V1䰊ɓj9V1y2Xb*hΕuo̯^̇ڈԁMϥ3opBQl tQ,B1ɓEh9B1y2bC(h^"|?Cqa|܄Y -.}%&PӰz`"di'ML,6{ȱɓf6ADZG$R$c)d&j&]4"S4d@Ydb!'6rdbd6L]G&2WOټ>I]=Uӛ?p@q<&MEc(*P}dE`uu;w}k~š05iK} -[:*8~Vb:Q[]!QL?Ab9G1Bb(hݎUwJG-͏ZluP3}>|?TTjvͣ@u=T,[\dcw~x-*]k>HmN˳&n}fV˃㶗ʎlUNb:!°PW"] U+{s˵P0EAj,Lb. %[l -D!X9 -endstream -endobj -1847 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1846 0 R -/Resources 4 0 R -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -1848 0 obj -<< -/Filter /FlateDecode -/Length 1412 ->> -stream -xn6z -@ΐCA"m(zp^پ?С>lJrqC˗ZP$ g3ß(Zپ L浱Wcg_d;m"C1BL-C4֡4"OۯߛаpxH!ڼ}|؁M~<opKâ}9rʎi6NN)3YV4ތ Y lvJ&ΚO seѷ=mն\}`/5ѥb4ޑV~kRvj'j*8^#"mO I@q"&fMRlg;{j#r /ON9ç΅S|NOwW[h,Wh+v)>E˄qbOFu-t&5b,΅StNNwЩW[h,ѩWh+ЩԶt84CQvi>y")-!tP6/uNe+Ӂ7Px3t*]:x!S]5t*UE& t*UA6NjpչUd㣫*OSpE'l!1҅!TNPwW[h,Wh+ߘ37(s[x(;(pҞ3BxpcnXuOwE?q}MK -endstream -endobj -1849 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1848 0 R -/Resources 4 0 R -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -1850 0 obj -<< -/Filter /FlateDecode -/Length 3027 ->> -stream -x]_s2ΐC-HZ-M{ݼ -\)ɢ$Y^ hw Dc@ӧ5;&c"C1BLGhCiD4-}=t!? [ˑ)Dc/`ބPGje>wU=iƱyKWfCb4` rQp}X,6v>LJ\5I󣝱|< {x|t?wd|g?},lB ]#) -,8L!uSޮ=CW{Ϥ5:WxOv W -OnUYUIqgoϱ66;G Ɉh u3琲=@I{ȱ,^ ۚO v5rIߣHGC0L}*y AT`& -,DI av:.?\B|&Ã!B~2lTR2H9GƗEk!5ؽcF|\SFfy5=SӧCȥ+Sv qOG"# (`~g:ll S'!-_; v5FBV"oOιU|Ҕ1zBImLfz]xW_W[+G>( D51 wv3q\NO<]&_Sɪ Oɰ4 2.LqSHv&} dJzxl]$xJ2E # G}Ug=- -Pw6X37.J:ngБ oԞHFd9$- YkPՑfP0n0feTAudwTGA?̋kMT 똆*|^WB63~𾉖n\Y] -!Uc0v A j26 =#&fJ{$sҎNaKԆfErxc(d7Zwor!4WR;Oy-u,< ؉:2Ux#xxEA+cpia=kϸ}{.*rAm>W N,&vmp3BRߡ~Xjjhޮ΀߄û`s2mPY"KSs -/GSm/6~1/}0˔\IL:rվ1`Z oKD$7 FCG7Z $7SGK[A j][ [Y.tΥk7%)Tbi%ϻ }'{>9 0CVd2q=I*M f晖.%lزy:qG-5oI+e_0]B鮍&$c#xwI.d$!<$8 3ˈײ3%Veh <8= -cdqMq^EwYc̪XYI ˉà?:FǣJv'!e\O*Tj{Z[S,#Z0Q{^{S򍃧tR 1XuVSOc*:xxIup$Y62Oq7_dE @w @IsPj3%5i5WkjǺ|8 2%}IvVU1r/-%GB[ $ȥ1X!VD3t޷]8%ߪDT)J jX5.U.ZK"+T - x!Z -W*#9XF:mL%i( ~d_H8ε3jkQt~f%΁7X*hE )ȴ0]3[^G1,(]Z͵ y8/kl t5B}f|].{*ǿOỢ凵 ^O0Xa/So?8&q۷oH!o#N5R!\?|v̗ Cm`7(K_n`<vLdnhъyb \ -endstream -endobj -1851 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1850 0 R -/Resources 4 0 R -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -1852 0 obj -<< -/Filter /FlateDecode -/Length 2630 ->> -stream -x\͎)Hs,0t9t=mټ?E([v(=҆#Yf#-8j~@ɻ׃Vz(!N #APXhBgo_:琾O*ҚQLw1~+(}忇3H||5 BWsU|o$zG֐CHC0rќA+gI ˯~#E/߳eӿ/'F[e DD݉3a^key4-N `{ G3i|xOlu6Q!L`96mmz?+pUH_:Tcӌ /[4W@`#n₣Zt1ל~žL-U% éME1IE2ʃN"Nb{P]Ef? 󝏜|K"Ȇj7H -H`6x8DB5=G#q,pDa}KɌWxr:.CXl֍=Sfn&#J[9<]M*[d燪ea8LAħ鳔mn|gbSG^q\t@f֦$ArL-ad-@.W - --Q Ҏsl!`#rS>Kߦsýb11T6AV\j-Xn*kܸ8\m -)"] vw<01P1Ty.wY;̇,U@G6yX}7V}Xə^,ux͎<+(5gɘo^#q*1Y]5 I,H޼"]T?CTK5!#MN*OBآ^v>ĥ!2stbgmr%@.\3\5YPmѲLp!,OLF&̃4{*qunwE1Y 9\W7D w *F̽PG-:蕧FoJNY -zdyʙzSBnI9|Yv_ؗ'ཬ9yIZc ۈ0M0^񭊗0% 1՞hV Ao4*2r-œ^ H675~0' s<@4pBڸ͇x!%b/|+wE'G7n[A8X@GEt&_ kjaI0HYn:c70DbBA -(1)'kнƜի: ,v pd3w#Rr8~35RRo8R8R:v/8RNpJ-MC‘4By GJykϧMۻ^GJu lԥ|uM{'WsRO#Ѳ}0|"Q ÑBBzO# G" H]G/82?*|c!ͪ3b amTJpX;|R_1V"nz3NJ'T*0c^%gxzH`b7ɰpu>䎟gb]ێհF"){ݐڝ8;ѓ0;Zc\YcB-~>"3 -na,'#C \ -]aqu \3X~<6̶p+`C0lA ]B`ř|> 4ӯ @3( zv Y@#Dt^ 4RvZY%(j>D(M 4By-4^+:-дzE@skϧ,4! ;gg5r_ݶ0@Y0 h9 I=ea&`PciQka&W }sfu[{Œf^ka&r#8-!ˉn71MTąoŔכґhĂh6%J-FEFZ-fW.~g?+S{J׶ 29+t\_a;Q"V.>lG<{ƥ` nˠiע7]'? \AM vRyNHzVH /&;)cKWOaH_I']gA;fjjPw|6$O䈸S?VF.(rYbKڏR]k-v]q.aix?}|}͏Oaojv1E9BZ/1*.u4iyJȈr58.Fuj3(0 RXO91 lgrpGAJVap{0S\h`k2y}T@dk/ͺODOJkg,ʼp -endstream -endobj -1853 0 obj -<< -/Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1852 0 R -/Resources 4 0 R -/TrimBox [ 0 0 595.275591 841.889764 ] -/BleedBox [ 0 0 595.275591 841.889764 ] ->> -endobj -1854 0 obj +1947 0 obj << /Filter /FlateDecode /Length 2971 >> stream -x]K# WD+b&!A'Y ȡ1 0*vJǯHQLJ(~_B믇rkqTSW;ai9PSf1P3heutLWjᇟFygǧÿ~[/>>}=pRLU3d!ۈҷyiHcק"sdc2u!o4HY"7V,b||,JKڰyP.yX7٢\b؆Éq|^FE`{Ϫ~aTr!icm>_O!_yǡk>ghg[U-G[JÁxσ2es RIH$/B]\"Eqildc*y - !2&`NV-˖u7 v5>gnW=a+ -(Ǡ٭,#q^XτX8[?1kі2Y -qn]ˈg`[L86kӹ>緞9z¬DY=AG8x -w'1,=L,da21̞EBFygqf#LCKsڗiS+l7 $l||c D eRnύox9I' :/|­4Oycj{; 8 6 \;}k. ̯⵳0p^*R 6 0 -Yz+ĒG=2 [) ,Z#cNW9t1bM.8cL@Zec7rbP -NG]MƗʭg1 -}06>,&EciyE0OK>AC(R {IȫsI%Dt +x]͎# )ъ`1䐠,ݘdJݬCc]%RG G?/XP!DV4W,o+xwV ģA~QE۷?9}DQJW1gPoLDԿ#,8OvrkqTSW;ai9PSf1P3heutLWjᇟFygǧÿ~[_}|zf.B!ӥo]4,@t4O[5E"dl)>+B(&hDY ̾#P*-ivC4Nd!cdgC+saN 'ch^{=_O!_yk3X^x.caR9(p`dvp&)TEm1I8Pr0cQ\#:Fn4l 7Ue˲e ]beUOlX- + +D1(%eAvk:h3a/<ΖO̚wLBm[2o6 99tg2m0+-QcG~Og9FG08u/]|;I`e| KO"<=YL gѨpE^Yq\PhelZ}#ۍ# 1_lF[7b$VqRxބx>Vt'1kE{C˝>5]^WyYCO8qyAAz, IPbɣhud|rqaő1VViv'g r^:NI&CKEzi1& 21 R1i(m&uֳP[>xYBfc4"駥`!k+=n@-s+>R {IȫsI%Dt  -&KQROe嬨JeKy>?z -smtJ)Z d\p2T*_'XndI4 w> ic,gx[R1j8/e`0=cc[Hw4MbpLSF-<,|.fF,+*{"{.,8)Ci<+VSfRW=WLg㸼՟7V:SZfG -!Kڟ?4=ѽ W)i -w#֯,Ekר+R,(Ezz 6Vjq37U.uXi>!݋KҒNby 񥦄`юqF2FaG s -b eB2s^c3+ƴ-G"3B2ykWSˈMwt]4MwT_G2"uU!ോϥ;hJmNwtGUJ[]#zj,ݣW,]!*9zkjxףj1oXFy╒!=uN.S:.^SYm:z2cS̩9OQJns#޿%ߚہeȄ0rWd,uRmx(xjd_r܉r4ԮGP{s7i2db`=n~pX#lQJ"c({9TJ>QbIh=^*AEw )Cm_+6gXlCKbP^h]~/]æ{GKm^lwT >^ǨYAK~/w̷iһ{TGKѽjļp4z֥l^qtyd۔s -YԖ|+Ѓ)d| s+K,ӏiɼ'dyL>_ĒQ|ݗ"x.Ƌ!Ң8̌^V#lI\:sysx=a[ϼ?m#}YWY-B،s(Ƅ8Ly_(gQcџ{89Na}`BsdcU cwUW!a4EH33=ĸ:F;J6ۈ&w=6 ˕= \Pc'KT슷z h4ur:]\nv5mB:c7f|X9+ 'ґmXڠCdߣmQbO &Ź 5L /=y] {JBuC?d|wz'|<ٮUtJQptնQh!UlqI=Qk=LV_>P̮w0w!_A4QylQνn2| 8*:8tbi4X^f-yK0`p=[tY@`11L[ߜ֩u3K:@ h^L$P5fxm6kcF:otۍ4D ^dZ<4Ҍ͵oؼomK"i:6vN*k}j=ZAp\z@??=q7@?7!57m4e1@/Šӯ{obg??MN[8 t cH?d`0LKig $?θ) -O?!A* +&Ry(e)rVT<bdRʿVYf9W0`vq <W [f<0Yg6͂9c=`OB{ژǖT|KLx6M=Ӕѭ` n8 0 +9=9螋 NoP@8U}O<.lgΔّ`">{EH* {`hdt/UAv +B]Ehu9ZH|7_2p&ڪW-6cপZz+`'{qoSZIl7$Ԕ,1.UHR:{!rS!_,^Hf+`{fҘ%Wd4TH<Ϛ|*ujqQΐNΐ^F3<v1๴o4M)W ]|ᮐJUiYyRY{tqw9De4GoMcz]-f k1(Ͻ]R2eJWks÷5kVGTflJ9~I~xpv~6Bzwoj{)=W RϺ>"m+2n.lr7|vP!vz9wpaN2zee1mr=,XR;/ұxT=yzox1D[Zы9j 93)Kg>oc'LyGm"/2k# +:rCwE(RqИ65 <"#jw=s6Y)Ah:8Lz,9t쮪V*"€Ʊuf[bY'hAxc׆a]c2a Vsclv]pSZ溎Pnۼ!^uîM]gl+5Q6ЀuT: [!VK6`Iae`ȇT#|a,{Ա-6[Lr!Ē>8װ!~#BG6aO V2cס{臌Q]Cov0Dϑ'9նN) +Nο6"-İ +zmw\m=큷zTZOp&6՗Ƿ>Tx](wMTusﴛ !æm"ʻ1zd,]>wC,=CY ,br7 )ꁐ0  9&GwHD2i3:N֓b@]G@Ac ^v( 7Ջi*~ fym{l?(^x|KYLPF<mi]D8GofZn.w_?>|_`DVkÕqk'^ ӟc*Ѷi&'ݟ~n:('{sH=ilrE5UV[}^L]:f1QJ eY0&/_LVgK'] endstream endobj -1855 0 obj +1948 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1854 0 R +/Contents 1947 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1856 0 obj +1949 0 obj << /Filter /FlateDecode -/Length 3907 +/Length 3909 >> stream -xɪ$^_Q?` @>i/`|W̛zrQR"%e1GumYUITwQ_%BM -o%W,כGG -UJImCcco}4K郿+*`~%jO -Fyx=A'":{.RYV{*H^753H2:Vp?Nk|5wod\UIn͆ty$X}xm>>g|a,4F#ӥ7V^=XSXR>d[Iz~f]zoVק?3x=팛?!W?2\kGz`[= O3=#\rbS@/%.DxL_L{" poOBl^TmXxpwUյ[E:Obd,Epg0jbc?1i<6zK:;?zPh#bFoR(1a3Mࡐ&A"YpL.,@/1>+/HWq- O=+ -hBe+j˦FfSmj$)j#Y1\ޓ2! #Z0\Nb-#:֢褅5aϧ[4TLO@*j!NOT;oj -2/qGLiӴ6yhڲ@FN!UkyfeÙ!}\VVH0򮍔p폝4ZD%s dpf9T\4t6־Ca _8H|%"ΌIMH!Z~r ~jvbC&8[ rH [+NDckDNHz&7ٴPhW`sc=EJbB4=Myc5*0MAT2Q}m&#!!"A -8* 7c0. 9C'}?Txrp<`X -~pLaG4v(c0a6/Ј~Q8[\߯u>bzN풤)w/CJYRu7FnFA5 -^EA0k/Rzւ(l$; %45&`/4qأ>hcR]'>ԇLE}[TBJ0XH!AN#+[޳:rͦs}(a|𪥎7 -fdGF 1/5w2) Ź,R^ ?Ⱥr<\YN}(UnBGIZ?J[Ɓ`PgR8?- {`m-t=N3 >a."sldc}"F_#*F~E qg~M:u< eSlOQ6qn*֒\6)73s[r]˪^e}<39L-r'h@T%zm-,kLWY\d+uÈ+Ͷåfh2+d(-WftK89WA*~,D1c(+/ \CvE.4&-AZ0"E-kx3ljV(fNMnԴgsilg^,WVpJ1sj7Ө80:/=uwyKT1nqK%i1594;VS3 ,Uj0~>/UKrZ|wB"Q'CRM$I6kq Ӣ9i-s=;5YV ` S6=VUS;^A^`M-j&xt#)ᵂ/>rUGUlnrbj9D{J?u3 㥶e{@Lf@,j]Cpw[E^И 0Zztg -4dn'1ܘ[g~w'#TB yp͖֫5_j}E^tqg.bʉ&D0N9z!q7iΒT4B)Reը]khV">o4͆ -\?S1aO~i$g-1nQ&m krL?6_C{ںzj̩m9#\RL{8>gr#n6k;^o_1D^lWR#9CŤ^L>5 -)}0ڙeZƓ| ZZf\ e9rGY`BHWrXbԜ.\ ']vi<24e('4%ҎzB%kF}oַsCOj 1Q8F2v$ W1 BəbMd )N( M*1&^+!h[aԫ7<`bWۑz3iDؖS{s1gqq=*4jN֩d1Kp dL -:e -,+[H[W>a|[*Ys1lK%9JWșdr&_ɹs1jN%Ij. xZN^vX'OvUgl>snL0M=VIZ }z92C -W%{ig8rCKC3mZtbB,.y!(<<{NWpr|$%Y[D錻&|r ֻ&mGjΤ[#*' /g"o]Ar:μ{|&;[LkО{&.tDž$jN.<}m {j4#EB!$ [X"F0P\nO ŤpXzsuW;x6@{-5HdIMw`,}}ſH L9k?"EHJCO%VXɢxr~~~|}p هP`Ϡ^t3!TRh{o=.(8w=7`ӿh5wkZ`vPxk΂s}ՕЙYJPx/gCi,17_SH欔???-pV>?HP9`+ A%aXxyx5ÅyqhD DN~3ihpHcT!EzoG@6g?^HN-n!_/߃2krsz`0NIToqW8rZ{ EndZo%.h'/{?ȅ3gF^Wˤ^fYhp7EdRu@HfxAby/` ԆӹVSXdcj5[ba?;?8& eh`PNEW |4ܤ=IA60 ._m Vh|D[Ď:4h{Xw"7E@*͸*">hXIdڅ&j] +tZqV:t.oqK@ ȐeΨrR#o-F?T׳נgp0a`,sAql X;{bqcQxR9= XAW ڀ2wc2 L|ϴ) +%)v3w3X3'bɖDx1ظ!4YUvRO<5U9J̋&\a" N8EBš͂41Y@K d7/& +6F;af`943˞1%!ZV5*ֻ~*:zG +^ +%3-Y~ +M]°ܝ7ku  +uKf bS5:G%ɾiΐU&J|]3rmp5D0Z9<gxI8WA +zLD+#Ć-H*]. ,/NW,zAh=h ^?vϰb#bcb#U(6b_:+6G:R؈=؈^7v ϐbbcbҕޗب}YujmA#(vꟚ!Ս ̦lt2QLŜƩTةi&ϤԚqM%ٮ^Y&SFzL9As,7LSEʇݘZ\j}JL=66\j*}eRWf T5G5orÕ,GΥ\yhV@q=-ҹ>ޮtϢVz1M!X&Ұh*vp'X&XeSɰnUD"i^(^]9=?ދY}a"p }YMYGMdLkd +=St +qq0?f{[f~CD\ [89!5Mn5-%pEmr\C9MɤZD<5 +)u0ʙiZ£xzM%Q1*Mޓ9WL0gSh+f5sm 20,);<UTdwyc8uY[MDS_x8obDԤuUЉV$=S`bÌ4~>#<$hkSn,x3o20&ʈp{b>"W\pHfἛ/ bo|YR4Ȕ 5% * ;qtRwĸAV?yѫ9H*Ҩ +4-iT ׆4 j{Q+8]IeiPX Lp +~=bTDzM +C~Ö9|-"8Q׭<e1JS'jdYU \x^gjUҚLְ}y+}W`[_f-V΀HzFMj.zo(Qa,4'U*:pu> OSԉ J%C2_|v@0*x99CO;u߾˞`:;'d(s0jzTehh" endstream endobj -1857 0 obj +1950 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1856 0 R +/Contents 1949 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1858 0 obj +1951 0 obj << /Filter /FlateDecode -/Length 3250 +/Length 3249 >> stream xˎ"Y|9H$Li)Jd])2 Yɢ*7@yହ~|HPҿtEzNk0x>\x 7h/ﻠywPJ 1ϗ^A7^`^(c7'k.H*g8Dl߾\`` H' @@ -26571,122 +27679,113 @@ C ʲ74Tguh2_6MӶcԔ`R-B0J[ڦz');r7U6҂! MP㦓&:\ّ14޿3>;!>}s:8_ 4n<1 )o]2Fq쓷2v#Ӣ0Fp&o!< -=L:CZ6lGVb'Ns :S%{DUozzMFg7%r˾m:`pd͇'-`gX_ǿGqe P8W-C^IM?q i,DfRټPu: I_K ^_qS3:x&B)um&,6vxjOyo"ˌKM:x>9c]V] <e +=L:CZ6lGVb'Ns :S%{DUozzMFg7%r˾m:`pd͇'-`gX_ǿGqe ֒1)$[qH+_5.!A[R=Nq^#AIںK\>nH5vFCDD6t8<6vXjrOy_"L:x>9cY] <! endstream endobj -1859 0 obj +1952 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1858 0 R +/Contents 1951 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1860 0 obj +1953 0 obj << /Filter /FlateDecode -/Length 2792 +/Length 2793 >> stream -x]ێ}Wx@$yHйA$D`XYb9U6GͿ3O"R1U'&/*foc8fRIMRhsʓs:r?~NEcGcU䐼|_?Ƃ:Qzx^.|;D$._< lYϐb6X=c\q}ttY9WWχuECZwuyԺW_Osgujkľ9ׇE/qN7kFnjXP+= g\tBKWPƽQǺ Vl)FXDt*ǜ`h -yaƾhWhfm`<`4 &b7b) $*E?l=i,/]"$8ar!*Dc ޤ`k'"8C#}mzOh\Oӌv%T,$v@ʧp{¶Uk= ogYk)Pjp)Ӹύ(D)<1K#5QDޠf VN -%./("9~`lv 2W^_S̤IHzZuI(UܹB~Vo"6MȻ*yF礅oc*cj`8*{vpq/Y,jp\(}N!s|F:U*6m1/=а =x?x?_ҧ]/Rs}gE>F]2$mCHCc;1{lxx3(aHR&̨CpܯQuM۲%g,Ӓ–@bCӖNԄy(ט2SEt&<:^5Q>3!xo[YE>}U;5xH9FV{R-jvOt{x Pp]:Ĉg]K_(*VMiդ*߹asP!/mRTѻrȸF)>[rA}6!8nݒWihθm\ -Y]yy=kYصFI TjX܀mpflN-'t*ya -j׬0V>Eߪ0^^ܪ0Eݬnq (`P:B<=h (ѱk |̭ i1y3A?ȃ^ AyX -A@5ȃzwր<8v-A>zH| OķyLv 䟡o Af {~-ȃ<W^ݡuPA3B,yDhÔ0B-ߒdC!̏i׎0yQ3)?%^܌@y(!P~3J@QJ͔ o)@72W hS]3JF OѷPzq+J@ Kv1@jW1L[ΥJd'S?"чu^<ϡ [v1S];Gз Lzq3 Uİ^5k>Z #M%I6DJ?UK "[mJ +lvsX:.nc䔄t ` -XZdI=G)x\ܴ;Rx5YPۍ)<9ş*}-'N3AZV$ U#<ퟛ.7_aQ\ |0rpMx=){7)`j\s7Y*9+b?C8;h{# -` -ION- -UEԟsVN=u~I2t`z?މ۔F1}UIih^&,<NJ BW+.R4%t?~4SJK' mf0*ZCn j PPΠ\O`fxRe?<~/w=;W̬nSrtELcOLυRMD_6]IVcuFqBp.D3 9i9?1a&zn4Ety]'8Ur!d:3vtqӧ~s.ɔX) -I8Zs +x]ێ}Wx@$yHйA$D`qYb9,d/Q)xv~*z_ࢊdR>F1:.tNyrN_8 ߏ٩uLhʛ;Q~~ëQo,5 n·CdmLت|1^x+ٲ!88z&)q(;]VUhR=uWţ֕Ҷ󬅾ΖeҗѳO9+ +)uV9p9ozz^+kL FFitO/3LҊt\Q%ᇟ?hZǗÿ~dq>CIEfk؁,,%̛֞߉ﺻƚ_>SZ"/wg9y:uw'mU+zb_i~Kt͚Ѿ2nʲ>s U,qױ&<[+V01g47('=&if0pl|ѪB mIG Șu ?E6j+)fR$$spG=ueZ4DJw.mP.՛Ȁa-J9i[Xΰ<~@1/tަF⸗k9(zʿ(p(}ym=d~{5GPmZO!|Na4ouzNҦԕRu)зuh"B{#n0$uwCHCc;1{lx{8J>E_c < 6b`ZqéKXmIXo̱^|yN`n~&~yG5LjۆZqbU +c`_F`ovv=C0yI(=gGL԰7 ۘ,u̙֫;6<{7\Fψ#jWy*d<9QunKjNecf"VI(OO ِ#eri;JXזӪȧ[EjRl6N&Pyy/o0-KD5*Oj 곡 ~떌\'JCumMjUmEُ8YK$ɮ5pL-x0.AN grOL'vSPnSSP)ŭST,<)gPے1 #Ssߊ ψnA4Tܕ; O6Nlz0b +ˢo ~&g}r֐[Z(Ce*35RNY)?T`+??˟d/w 1D?៟2)&.<:n2 eCQ?Ub6<'/<4Nn(!'-'9"Dى&E 5^w+e߇Qr]hLi S>,ӘLlČbq̎u=_ endstream endobj -1861 0 obj +1954 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1860 0 R +/Contents 1953 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1862 0 obj +1955 0 obj << /Filter /FlateDecode -/Length 3299 +/Length 3292 >> stream -xَ񽿢 f(b  ֱ 3d@ARWDQKu_,4p}phO)/Q>_.X0ރW^H志x Z8)wW3~3yWBԡ?(o-+X#@'.6JSp8WDfqac @'d@rP19D!^)Aj._owRBx2,J,hoԓ]Ʈ^4O~x) AF„H+^`7&rʣqx\7F ;c )v&nr>:uRνU*ɜ"sb.hܸ|| -vfGJh}KxaHWB:~ߌ-T1ӚiR0^TTbwG"R&L_RKI_]12Px^~u <=lwM?n$^f*H+x9#\F2Y@wבG%="u\K Av"ؠZEh;q'>ž(^ARX"'RL|]:ڽ*8= - s0> `Ït'y6x] $܁[c.`vL7xasF6-=qAZp6v1q3A`&5K!$YYLOhdf z,,( XSbu9hp(:7-t\ph r.*/ޞ£1\#LSqʒ( J{.5$FfSORBz[6+fYy>.\s8,?QA1h_yC;C\'ڿ16ͦ1^1=/K`[J!=P]ʥ4:ZpemV.ͦr_*ɰ -XKKi -$*Y<4[ -/UcBy4P# kc޶bmU(]!+%QׯǼ0c(?ZT1=MF ;zֆ R&%1XGF EۣBH@|){u^( ! iZcLiEZQ_.G8D# -J:.3 -5=<$EaQ8+4!P>dwe{ -6^G,5n9:oC(#H cKL%0KF_H7!UQ?X3shsܤ@(6 Xe#LpJ 37& ^}9Hx9r%ax~]~^33P!Z|Wk<< -*vQbk7:t3|Sm㒾xHxs%sGyçˮb;eƒx>/jY>LE4:Dv9?-TiΏ֎土GÜ+ @$-T00@6; 4ؼe\egy8%KLg9wHxq%pD\ ӣҶqh1V T&eg;*A/bp^Í}p!x~b vٱƙC]*s@;MB7ТRkR;ay6IF .ls%{{5OdǤkT[{-≓peqV\$ 0~7Bv98&IJǰoNz-fA ےxf{avTqDk܆n-jJ~j1ID3v֎TOX ,BB{D, -;ɥEdžXI3LJ6n2ASǠly-3.oRyX]SߎNT#O,B+%״%;G-B`d%'aB44ĕuK3- [O|ytp*ivˉ",i7o:K[3oqzlkBa5kfu[خ!-SFUj4Aq|Q(C#ۈȯ\Q->o,9 *5x$yrGl4J%HoSL'  9_:Ht*6\[Lmͤm~hFKcsJ)M} (<|z㕝.2'N[y<2 -$qkk.ɕ6T=E#uJiT4d{ΤZ|mbwo7?<{< 2Ixİađa9a|&o5o0:~+rdmIRpSi\ anSfѫ= -Z.[t[ ℱf6Jw2 H6٘AhYM>I +mxict4x9=!{,RH DT/] +9k ~R:(.bƗ +r<̓Gx7Hua)n ["502`2&E4gL*"bd#l|u <=lwM?n4^T*Ŀ VrF둹d ֟?︎<*-(qy84sc/较N n 4VRm'p_#U%+5H*K^I]K^WgvTaa' 8{{8/ԦK;q+`21j;_ӛM0 9#^랸 [-8{_; +e˸ 0h̚ ,N@41I6P"0ӱZrQt:n[!DV }I4]UD_bQfhe%FD%뜡QH\4;KHn9X̨7UAy \|$i+T Umxhy}11bs&7;s1ĕ *m1lդ\zNSU]\fl* [@t4xAByhCP=R:v(GY +5 6m )&V2UK}_Ry|ʋ2CMӔo09{gmXaRI#` p8f ֑,E52cC(88x{'~b +~JCfbV EeZ~:VfTш&BMh"g.8I~hV +# (dEna<hdsm!pyźvt4qxb}o&ߗ--I8=4m'+>a3f!o#]a|hi7$ +}CCWIMن'e%Hsyh~ЙXYI͔u[-ZlnIͤͩ5^{LNBqեߵ9#UѢj\b*LRsԭ ⨬u|ٞ U}g6v +}Hv2hsEƁI5 NPAƚ L^oyv.oMTqxl=U,pxhSEUAaAbp%w~s=`^[l$%X0Xkv i7vdW "X狌BFdE~=rm?X|$f\Pyװ'+;"`Q*A|ݸ?b:)E7ԠhЄ$y@Su4dXƶ)؏ܪEgo뼔m&umcE4\KW6Hn&[Et&TWt>q΃6Q&\\+XsIt6*)l;TBHscq'ss&l{p {)l&Դwq`)G ;_vAvCvZnV3B!Nچ$5 7ȕQ&6eKܢuZiK.m N+3$LJbt-Lا%R] wwG0t8e$-֌Vw:IY ((#,t S'Mavb\xpa6b919}캍PVa\ɫm|j 9ro&A)lz~ͤB/,s;5/rhȉ-#FNL4íJɝ=N2q.>?\KXqPXog¦bKaLm[!mvTq`s8?{;Wwn֏3\{\( Þ󿬝]:bRx;)GZ<Ϊ7A!Et+xk0I68.»bjA;l*Uiky$)jcy}2'-%{\I~?}ه5Ct(zs%I?kF~yo(|:qGF/(Qua/@Yޮkߐg%(UE]/OG!{oTݓs,_\HL?1} endstream endobj -1863 0 obj +1956 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1862 0 R +/Contents 1955 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1864 0 obj +1957 0 obj << /Filter /FlateDecode -/Length 3595 +/Length 3600 >> stream -x]ɎW%>2KUjzb0V * - D;~" O,~ ]>Z5TWPJj?4FX0F_/^JU)UP^_{yEB7RYaSpL-g-EtsncJygqX#mz1/jRgdtHCI/H?Ui _/z5-~pf ì$rF?/'Mb(`鍕AhF!eI'!Ji5!! )y2͗[DP6j,*[{- FK.=eJў3LJ!?Gwy~<JfۑN6cppVgJm 1g.G@}^;yٯP8bKހwZMz"Ch(Jqi?zK \z:9s;(0h.6FzfM6 \{z7ߓ#Ŵ^呲 ކ,- 3岭0pJyb[++$_$l6Dti4zTeȝ(Ǽ)X$eSr[."RUS3_1RH@`- y8͚h۵6ۧ09˄cDrU tڭg&~VSm&ۂ]٣DhM tnʩ.] } T3 -m[F։qoCDDWA+}]cԃJ ZR6%\n]Z.x Ԣb/^jKvAnT+r/Gq.fN'R&C>||kK!/=If3cg)L -:ģfVam+H ![:0ӂiI?HC :Nκe~Ѽ N+E'ެkS))W -E~&Jb*BF -ϻ`e:tn`Ln`GX)VTZ7+LiZT5a*hU݁ -F6,u*1m*(\̃|5fP`*.)М1߆Blކ@ -VZ8^L F) DD\ V+_0`/[tQ -o -.Pb>(7~(GϼL]+c'6$kD+yVd}}i졖k '^r!jD-$/_j!>Lj!)z9WOrti.›s"@H G7&ʷr ByeZsNA_t ߖ jhFUϣ¥{d ^Ȧܒm zqn tz_=i+" -ѕJG kMrlJI|H{V V&ؽ@k]s -G65fp\ΆS,ztrԻbH؏%w{wg}gAf!\57A,GZifiKMWO`Uޜaa!#Z&hpk00W͐FG̙5&2iyCHb:`u6]̀uQF"X̀IONKS띤#{@e!{l5-7ir~!Ҝ.MwW"[3̱e瀹1J8>_zpҰ|n.D, ,ݵX[yV$y9}}Itbٴ⋎GwϢקXU&A'Ubu6E1-%͋mi.JMq:Y';JlPN [̪ܙs/Rk*d~F";zР~?~U3i=ӳ_fC¹F&^XS+T OIxf#L{j6=xL1]-Dd9{b?$rVy('d\(G0$SBB${bi˦ۧE7WM-6Xh{M[I.&u0Ho]hsv|VxQU-an ia5R껮Lڄt##d8I׍?H)ݴeϋ͎%68mG)Q&مd˺"rJ&\g[G -[ѷk%1gKΓ1鵵JB\c2!cAn - hPޫn!&ύD8kB<2m"_QYU"T곲[>7:0g*r^#kG!bAyoNlΒ @Wr u:uoެo}+;><:cpVs?~qwb.n5ӡ.9.9罝9:R*ʓ&OQV{Fh~|MBPSК8#ԋ$^z?-M![{Qd;BAˑwcI [ΛfȮ(Hp sfp" xR 7UnD n3Bgp\9?0 mORfήсnµ.Ƥ۫9ԝF=ǤV=GGNW£9ccpo׎%ݜk3gYDOg}^% zh:ݐ nkpٳNx rFs73h.`sv!P~vy:y5oF%)=piGTu]5qCHuIt|ZS9ĤזEsJۧm5\uڪmzz2ȣkڻ tHw;\41r`-W3medQѫcRqćt2guaڳϮ0Rj>¤^/f͸HIG>¤P; 3%L]=!f3쑕;xLV΍@ol۠7Ã\]e/]YfY@^}\ x;I{}aO dܼ}z?Ʋ!yʳ$шAų[^<" Na|H$/Wfr2^4љ6h3ysѣv8dn/ [3D -p 4L{nLw(pS\p3^שp4P=}D#v¯w6ݳ0{?ׄN]1at 3vju\12MjFjM1ٟTF] T'׌߲jB:PM=Ur=9R^i'cYYGw݃FdK]|fzFY|Ï_<}ѸZ拻ג%L  ӹ5ޢ۟~ot{J/p{ vu 78[ u}HGh-.)L<-_FWd &:C BbaN?w[5zI󷋍9޿?M.8|4$j +x]I ?j $L9]>Z5TWPJj_#,#\sIhUJkaUt+5=~Ë/oHFjzLWgYwyӅ[Z{nRN]hج`U#mz?]4A +! % _/?_J yvY맟.t)+\v4 +Xzc)b{FoeAIERZO4H|:|~fJjAz6F%l"(5_\v[{- FK.=eJў382(aBZ+s:' k%# +T^:cppVgJu419*gNG@ƽvr/NyY^NbpJ(l@1%so@H;VC-!Drrƴ$p \z:'sh;(PhN6FzgM6u\}z7ߓÿԉ^呲 ކ̿- 3岭0pJd~b[++$]l6Dti4ZTe(Ǽ.X$eSb[,"R袣S螝3_61RH@` q͜mk۹6۫09ۋcxr3[3M>L2 - vMd%pdPULpڰ5UGꦘZ2h]`p7pO˟K0Z+޶E`-"hz;xI~}hT +֢)@rԢp`mRVj+pr+hZ[܊ p2sjݑ2:1k]^r qZN4F>>6m 8KaP!60zJ s^A8m@hniNpH8A8hb0Աs-}e[;zޚRI9Ƥ/J3MmT.zIQoF^yl+LVV Vxdr`]JvS&lQ@u⡂;PA?lRgB&8gcP! , >b" >![7QRО[WqH!@ ؋(š6A*:xu`sw7e}˒N#JuJY4z虗jeL$?揄Lj!!z9WObtiN@Ûc"@H G7*rtByez艦3$@*.5e+U]<.O՛%sXwB 䖄Ln[Ћp+D(w7[nN[ᖈT=,u7vnhH̕cSN5=GF0> Z-0U-0b86U.1pas_a:\l1 +Ip!{E&^XrvwF+; J53ኯɼ b9R+H0L[Оl*z K j6A[)n42; ǶRr'L~t۪`ʝ>BPJؠp>wt n=xF3Dva:䀦{k0=Z +Nt{ {:Ě}]p <Ԉg:˜i{Մ߱׮v o-E \BD=':'闳BUw0pDb=!R@ɤ>Q&"\e\¤)PlN6^+ +l*!BU+Jxw1Ƀ1FB۾˼A%VTy >ZBJku$]O&e^u:dĤNZѲGb|ƒ\Qȶ{[VBe]9J%LγԬ\\+%1{VK1鵕JB/\2.cAn + h{wHZs +WA< LGTrUYY- jtI#\q uy 6'=d/=wĕjy]N͛׫nJ6T[H`vN׏)j/ժ\Oc]09K[tKK $yocjʧ>AFwCȵ #c4_?5>g&f! (M{mT 4?/>>(5"ɮwzKrSaȽ֞ٶP'ar–sFb;N +Y/8^u=T-Mۧ2Q۴Pp<)Wny[$t`Dpȋ19rNڞc}#Km#^bͰ1lkǔn̵5t},M"^E'/3g:=aNHcIKZKi +i Hh<k9Sxt Gou(?r;նJ~:-U{?[n= Z.A7m%GNEb&&cn&?.m<Ȥe2n^cِ$_T+3iy]Ig6h3ysѣ8w8{gn/ [3D +px &ݽS7k` 8Ȯf._>U6YlM4"I`g.zo9 p|{Mة|PF@*cR#Sfd 1=y(Iek{f-TQHFJ8<] ?GSJ:6q2fe۞{t"[j;7ӵ0ʂ 7|:=g|TnZys G T.}kűo5-<USy'*=$oqQAπ[/PI*J)ь{{{Lm;C$a>p5ZIC9sꢋ5# endstream endobj -1865 0 obj +1958 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1864 0 R +/Contents 1957 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1866 0 obj +1959 0 obj << /Filter /FlateDecode /Length 3942 @@ -26705,116 +27804,116 @@ ZJ}3 ;,A2vrT&X>wڃC?clw|OR,9durtl.XLyϽf>zk5XAl*p`f^sXy0,Xfvz`986,~Xq -12aU@`WҰwrLr>Xѻ ˫m 1`9{= c`9(+,hS堲9`yJ_XFfXNƧK-!Ta;5/rCPCȟwy)"RXKѱΖX^`奍pKQn4x[FGp-759:\PIIIu&=sN(*a\zg^窶Qʣ{!"ĨX`KuVt>ٺaUd0Xi([h ([L )yCWaFСWȠdAV~qZ`'.2d=Y2vwW @uWH>^uzzb|6= (o^XǵGk|9d2墨}?΂,uwNjdK;ac|SoE6:HkX1޻덊~{ xMux,(%=紡"pdB')a|p( 9=hOS 2`euucrp@-"ʁqfn1@>:"Fq= -dɬ5w0LJpv2. mg<l[tgw8[}/bYT'q〜r]b]N2zkTC)">?wёEwo~Ҿ&lOŎos\v꥿ϷFsM:v~B -}HG+IqeLt27`02(hګa//.b]nP5ݵQT|;{-: - +dɬ5w0LJpv2. mg<l[tgw8[}/bYT'q〜r]b]N2zkTC)">?wёEL< ]HfN[D?_;ҿCzui6w  !l܎?u\7ŕ1ILH|Y:D鵽> 6NAAS^ \yvmUt\zzfrwm?U +7 endstream endobj -1867 0 obj +1960 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1866 0 R +/Contents 1959 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1868 0 obj +1961 0 obj << /Filter /FlateDecode -/Length 3797 +/Length 3795 >> stream -x]Kϯ?`!@bI6 `HIRK49ătYb=?)y;I F!DקoObVś?'`B!^ BiPO~JQ^EJ+ 6]!/_{7"4_g};-*xb>7-VSYVyceZ-lj1??y9hH`ק~/2=uc&TArid,%1ҷ үf$ vk]E*Krl\mWWux0>?J%+h%nEVZ+TJ/rf Dc-o911VRѤdݒ;K)[ii*đO藄^ǿoC20H1aY("/-rkK̼=<<6Z-sR|'tݝsC7#,rLf|^gS -Yurˤ]^O__Mɯ4^206}s3A̦/h$w:ϭ8IZQA#6ҌPsqO#)eA),H?Dc8bG;8Mc7)%IJ*"oxh<`[Q>8SY 3UqeUmVa/l0hbʐ%Ypōah -QzE):!x|{';f ϳd@$qFUI0.-S@NFOyRv -On -f4S3>0 -qgƔT0;4A+&禵5 -zd"!HJɴ&'a>K䋽F#p^AT -kOgNST13/pm@ -jcS0_|1עY#z%ƃ%S#?'mj&/̧#`5|7trh\g$$IO+:LI5duH$~_0OTzPҸ~4DDF|C\!YCڮ,evhwP/83 .4I4WP0eT<`1Dve\Rh~DzATJ+Gt@T58PAqJ͘4H/rLuvK0 -݆W +1yR-$m^_m -Kl2ˋRԙl=Ītfr0^cw<)![u}[;ڙS,MRiMȁJvTM^ m\Q+)25; -R[ΰV\G#@zƍu*}PK~xJd*n}Zj9HVau$izp*$҃j2%v:iGJ-p_ڔ:9iTRY`%ѽ*rw1Aj @Ѥ = 2?Qr֍* [a-Y,$XTJi)x -"ܦ{u`Js)Z˫J%QrDUexZOז SGY7:xjRG4W ->xGK} 0@za+ث׫V}k%k8G >Z> ՇQ }8ū1wFarm@yjJBY)jwg>*vk9#jdn ?Rt,R*ըC;6$J18|Ih 1T@1ez!;Ŷt,s HKC:jC!U |Kk'ئDW%XNX"5ؽk@z3vYU2-g96Tիٮc]^P}nae>)CkWg:pmC0^yUlmt:@?Z0.\s.p\n\9Jsk-h@p8X& kB[p#O v6q/`{Z"/1yK83ƭV׭]2 Kr1]ǺB=Fou 3+i}`$6KJރ3jޣD˰etGٵZa۸ל<-^>M{O> ჿH`et+%}wr_FFR~o༥yݙBGZ eb%wUXC ZOr^ ##R!|~E;|~{z]>XI'U\Y= aIyiB߯轻Ii3 iEWʒ\1Wq0&xOg +Z[* +eKH"QX[i}LT4i-كr$RhZzZ4 +q*&!gې L@y5R AEK *ڼ33o0O$O V !Ŝ!8]w'>{ajN*dH/'ߧٔ~Vt~eRGɮ{fo_Mɯ4^206 f.zM#LgW:zD EH32ZjSVC=f }!Ê6 䧔Ѓ&q+yxoxSniPFeZOad1|VƕUE^Ze~B%)Cdy•7)F n; 㵓.ކ윛<ϒ=U%)øh8Z$O9ex=Y&KaT)<)Ş9L SDμE*xsYOlk|7\f)0jLH ou\b04&#.Qӑz*ʡqē$=0Ov0 G$ē CI8"II|iTE?HA#΀6t$9^Jr\A%RQٕmb p9K)2Q)Q`B5)6cJl )31,(?:v^Q0/IdВy}r+?.=bG //J)Sg +5(ZЙux-:̇`󰽼u4?F{h嫫K 84nizl=`jgO5ZWx4M+K%H 4!j+EQÓfR6zeH0q6Gݯ$^(:#$Km:>P[iJrq + i7 >Ak*_,]N*-ҒHi% &o"Y%J֑NScH7+H)}iSHSJfWpTGU/GQF +4 &GnZZ74Ho@dbQ*}*צF)qrfՁy+́h-~*D ZSV%gh-kp ^> XAa>30j06~TFb4aߣp}5k҇ʵ) eNuo*=爎%HѱDKTR TB~L(}zJ$RPtkPTzp=tұbm4 .tI iT1|-ap c6]p[c 8k`T4֠cjfU 8SlWfZvtzAt Q^]hvjxeUyjit kA¸papa\>VJp"pO8*j- uW[wb .P +g  gac)cׁ+lRmށhvKmitB +ҭB +GJ/ѵ@T;ŶՈWTm̲bUh9; +澆r6ᄶef^ÙKcN&yQ$3GXiUHz&m!ڝ>Kӷ-#-ܴ?kc6,xmA7 [I*` \lC+#nڣT_Mڼ?c҇^G|AڦNm98l]s=|S’jJ)>*pV:1j8!r $N ~-t Vv6V]_m"_NDe d 驦HWt{jQ[nMS9{x! Kt^O!~|*>Ho>ur}++dHZm~ݺ!O.gCԸC_Eoh"Zά-N@:]\`"n?9o<9|^{ۃբ~[BT5nn YX8֥ }N1zcy^IkG$^R'LaGpc=8n.5R14m<إbS<ĥit iy'NK H;M=E^4m`SDz9T)d3콍(a7؟WzOH hW/Vդ&HŒy+ ?/nnwt̐v[[. >0;@)A*C؍[/響NPn~Ա3wc dqz?NPI6^>M;RX:H55ʪY!a(:w/ endstream endobj -1869 0 obj +1962 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1868 0 R +/Contents 1961 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1870 0 obj +1963 0 obj << /Filter /FlateDecode -/Length 516 +/Length 515 >> stream -xT0 +dmǎi5$XiJ[ؽ N;"M^]v|>Cc2Z8pTǠ ߺB֤UHK FEK@pΠ[֜@M#"QŤi`l!\}GwGiN]$s -~4[/̖(K)4&bm2,:2ڇ^; ޅRQ>znڭb!,ILYCqOk%?*Qx~HY bFD=N 1&c ͇w7)i!b}t&e9v cs7 fOSJ\ىi)U&,~R0׺8B^F/aL\ЅGia_rq߹XUКLJz" #1tG4[7\5F2iANIUgb用?Q7c [)ʂ0!w +xTn1 +ۉT *-p-P qe%LgJ q!gb{L}>#LPJ5q8`>bӏߺ܇d`U4 *5 BNSB=&0D+AjA͇pݏpFWӜ[)C0 _J8*- Sn!uԗh]\!e9A쵛}Pt> endobj -1872 0 obj +1965 0 obj << /Filter /FlateDecode -/Length 3357 +/Length 3356 >> stream xˎ>_Q$@l`I9;d@(6I(qR >lh!֨pIEa'q}x{;)U|wbeVtKg8c7Ǹ3uc'Aӄ[na 6Ywga 37gsnlo' C3fVM&;Ǔ}HaS1"|yfc(o!B4#'>?9+~ӯst6w'i6u9Xsit16|\ω:<5w.[}}dtidIAA߾-.9h ,$<Wyus$םp;svǖ~cD!ZY!_"pET\>CnoMIhQ6ljBx[!eT>fD=Qe XmZo"c 41!WM靎WQVdӱ,z>L󜾏\2q\g r>})i r-jT *ckIg{.`Gqo3mq*Axf^ -ddb?w3^[2yn -0h!;_Fۂ6[Mp h]`V-5TX!ρɍ e<'Zt[w M |ihQ~OW\¯ڨq{ֶ'N}`K{J7g=J`­ FXkJXJ H}=^Hm&onEZϬ]f-%iz=ANcƷݷm@"äȠֳ*U̎%uQGR_yp&!Vt&t1696X{L -g &YB:.9vBW[: -7+ WWK*&Un 9ǫZXR^zoskCm`Fk1,fD7P[+s5JWqDLXMR +Q EE{ w˚ΊEMV!ǖY/گșA[OSUɔh&WqKzE(ɞwE>BoB̡ˎF+ KpB\p1lZRq'=DN)锻yk-GGJ \*`1>l>-;W -IK=}YҳJBλ:uI!AvJO:J||bWU/ۻ6hgBy*r}a6Yu<3:r%<%RrU.]C;7Uy>ȘlUVp=qozvr>I -vH7s.FCDN>.FN`lA-..vȘÄwz%P4,ro3HВmC, ~zFԸ/idkxV.5%m^jڴSGkw1ϊߑnP_(qv0Ip}|+NxXd -dWRNhCq-ݮ}^bי Y[ȵ'gg[P iѼVCP -pkoMgB5&lJ^K{Fh{UMV냪"TUKn fMʰe{N/О ؐQbf{vw[ds_Z5ܙڑ!%X!DL|z1q-mXβ#;y¿tAq'˄w@;B(?*t!L.&djQ{XMJ'q8~Vy5|(E+|bRVzuc1>l1t/[ƓzSGKy[OV7??Ea_R_`+[˝p%mo øT1HEtp3BRe4F,zl}y.ߡۑG RoA6 ATyg>R >lh!֨pIEa'q}x{;)U|wbeVtKg8c7 :}x1Q ՀiBJ-`ذz{y}V{ֻ糛o9{ve~?IO6ָ(Plo00A?C +cpZ AG1k3Cy i99Ya&3~;I; U~N[5X 0.D8l:4YUL`!*Z%POeZ,> ya#`&e4yxBG4}6+/RY=Ibp@ <0y +NpJJKs)`Ai`Izd*N选xRn4ぽ[x<0›D?}QY^G.׿E-ُr : Ope[x`.*[Wwa 茒(偹$PSj;(t8p(e*vC <{~|hpf{5d@ n\ 7/dmBG)`2\<:h{ n\\=I*_9pE Z0 Q1^YU!֗ܔ?-†dj"ۄm=rȺd9<0{nnG'd+ʈv\'}3UknJ(j0ZݢN=eS} \V6 i^q&Ƣ3\0 TE6JcL+^}`$Zy}f@QȲ,orºT| J-0Hقكڞaca e1#1-H +NKqC~읿~Aԏˁ 7E+T#/p_N[\PO:Ln&!esUfŬ +ȃ8 !mt*C1.?xH΃ ++\)SLm I%7Ǧqy "fS" t,6=N9](u)gi[5LPa>&7jN/\@h͂;l>ߑ'4}E0Q>\q OthY&8p".")eܜ( 6GUb)]bڶ+,"Оڛ#?k}?VB\eb96jtVZ@r0:> Mu>@B\.Jz51CS*? ފ΄.Ʀ;{&–cIal]VWݤ2KHWÃ2>jV\e`OvyIŤm1xU K*sK/|nmyh텅֘BBjk}ֻ[4  I`]s%v>~aw1vO0zYYQi6Ѫ4$2E뵝93hi**tHo%ۼTM[H@9tѨv5\az Nh ΃9&#Q^<ė)%rW4o-3Q%HIᖝKl1m^geJ7pI}C#ks^zTIyW1iw8:N)P'U1o/RJ +Pbc{WL(RV28/&n'b^\ΰ@*QjsŲkh8?x'*ߠsWQܣ +ۊܰ=M98{Yg3iYa}.ic[ by`EhHTIU§hUܩ-;`^E.W} Zmh~%v!cPhw%-q-EګZ_vuj0h:CxY1;r~ 3X%ڮ#& o] qcpv,X,Y m=" սK:sڸ![c~\V|$,]l j$-jH\ncL{`ܶƄR|iwmϲ + }u}P1W*` m\x#3 +Vlnف0lZ;Z;2+SW9&; Yvd=`~g6WwWN:ݷ;Ndh^%~T%B;p]M JOy0}o۟9?bXPC_' tڑ(o~|俦V4m ;Jw˧+@q'ch芣 fhYئ/Ϡ,v[`~BU^.T7Sk ?{wi}Svb~e endstream endobj -1873 0 obj +1966 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1872 0 R +/Contents 1965 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1874 0 obj +1967 0 obj << /Filter /FlateDecode /Length 3574 @@ -26829,62 +27928,59 @@ J YF_ 1vbQf͕z+Vm{J_]Zw:=]uz*[>,rQ6tSz 6>ڢ<"\!bûO*YMhgx(˞Jk/.wVt5ͩys^sdWS_I{$ԷRnXYxgٌ(qU#+}QD2[{=F% >RAɒtJ[Zfc󄴁A=+mRk٠ .tQۘ ^B.jd0X7uqQ5w.Rҳze7@ʯ9KI,xIJTx-*ÚsKw\)3rqI|ՂȁAE;c=$U32Ш6.<"٣k9/1K$wl%\V״)Il`7Qes݋3SfJJaYdIr)owKm`|o{LWL\ǒ94 ߈4%͒AsRgRz_ufl6QS9G Hi1j<`6[:wރ/&#^!ޭT֤}xjDˮmU{'j!")ݐ'j7A$~zOח`cˮNi PLͨԱGmF%nQ یJǁͨ!OoFb6j3 )?:g6RIY!BDjņʴAS:)mcs"wRd߿sfƌc(RbԇJmz/b}̓{ Jt@ЉԱ|R ;~UK[jx p*eZ(=V(A]@0^~W?krDx;K*~NoNC[No-+颛ʃr+ƀ +'s[v*YFLZA(2ڦ aE9Bcе I$|:kReU!Ote*ϋȶS=.+s!(h"P f`䀈XzKgrr+I*~lGm؎؃ژ4mj=zER#":JDeW3bаUB0gR$Q{*=X= -5>ٙ G0 Ol&c9g#{fS"}΢v|#-/:mϋsBjC]:mUnT01}b?;F30x{ag^Q^餑R3s*dy#7\7 `Lxu7\n]"*_%Vj gzlk("#LV2u3\D6鲶'+)Dצבz'zEy ~5R۸ 9Y0 B^T'"!l{.UϡQY! .B.ts1{3CwU)% c +5>ٙ G0 Ol&c9g#{fS"}΢v|#-/:mϋsBjC]:mUnT01}b?;F30x{ag^Q^餑R3s*dy#7\7 `Lxu7\n]"*_%Vj gzlk("#LV2u3\D6鲶'+)Dצבz'zEy ~5R۸(Ycca$F"I C~K.d, ?zR&QSd飪94*+d_nc>>&w/`c*e?ZDr!2zb|b endstream endobj -1875 0 obj +1968 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1874 0 R +/Contents 1967 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1876 0 obj +1969 0 obj << /Filter /FlateDecode -/Length 4240 +/Length 4239 >> stream -xَ#}B? 1$6av'@lvْk ;j4ju>Xpା gpؽHo_^c.%h>\L.Q)fR]~ϻywBJfD+%7O}y@ g}>[ uƚ`RrvL -ᬁJPx/wsyCpǼRǟ_]dJ˿\Csn,<`27=>{xkX}>,B0㰒#jau6Pqܻ “`"Mmf^ $wL 'L 9D dj0 QՎ ۃ{[@dÌ%#!}ҠNkoPm({J3g$YsmZQ8V( +xَ#}B? 1$6av'@lvْk ;Hju>Xpା gp=Io_^c.%h>\L.3Z).~~^]Pq!%3"Xo~W>_[ uƚ`u}8[J;t&pmFDv(nX9,B0㰒#jau6Pqܻ “`"Mmf^ $wL 'L 9D dj0 QՎۃ{[@dÌ%#!}ҠNkoPm({J3g$YsmZQ8V( `R+>$YLud&bR)KfJe5g\FGSBe&8c>" -Vrhw`SBrK칖|3͙7:Tbsb!u`RJbT0A! e#w32@6iN W;#t4ki#rn\.\x+,$M1hp"]?(1OVsKCn~L SU͍fAL@,[cS{z>f%-%K(k92h SEES9LS yn%sa_w%4ixY=Qd& >#=RKF-M_ܾIs{ʼ.5|RVv%d2;hxՊD:WH-~\qqܙMg# -6d]ٓ_tso:?gK &7Jw[f0$(^'ޯ"/eRew]2}5uXcRJmNl(*Mw(rމgd:s{RXv*=[ENK\D]_ 6o(}=>$ȣJ21$% :Kڤ0Xͅdb6>$$xAw=w V@l2V@<:xdޒU9,Y+u:U - S'KP+8wNGu+,Eg͙2/zs -D*)J5|5#b5*{Ǖ#^G|jhqԵ 1?h  1_ZYc"Ȁ1*^Bˆ 0eS8*ҎJ'~K0W -HYA%As4,h`ӦS(_uNw=ΝҨ0ϝੵy%ӊJ}ϨFp߂idyj g}kp,;XhTXh>$P?**9V Un8jYY<]40W3x-㴣*|MzSV)+ ^8/ W(Pv8"c !Hu*h<W/ʩt$(*>Cfa]*ӹ0i7h:[C{fTfbڱЛ)5l^*'v2x֫[Gb i -J"hO3e)^!J)@8ZcQ@u=(Ѩ0(EKgjo| j-QQt"cƩDadY&S/"m2ȰVU\㟳 w[zGTpսN>U\k@^~W>nkRqqVe -VPH?jORӥ>MuR*'&IvZpRe[J?/i0A}!;)$DL^mcqxbf.pnA`eIr-n.HvK96ex'̈S="39jiujlɡzHC{jx}IvcylY{_U̓_p:ύkZAmҢNTu;us5:P-u9 ֛7 Aɗ .5C=E;C.uYZx-&?'gþ=^S,8 ܬ^-+>]|>!jт# ;2\MFEM(dM6juF;yMGA^} -a֦uY E(zWRxO=Z8ыFp)!WzkeU:0΀-m嫯!mJ۱ӵ;wv"&S_ݿuC4tҐS {rdM; gmc7y{p};= -9_R~Llwq\5W%>Zx. -"A#KOy&s@Cʶ2"YuPg=$TqCcv v( -v">kPUGHh CJqԒC}@}m -3yeSSf߶l";E2Ϛq|b4\Qk'*&v^& !)|~2|H@3D0C4hTTFrA#B0n@G.d:0a9rTԪrmWhs% DW}&Y=}XdGSgP(moKײ72N¥͎GDޖX5SO3Ec;`ז.IRgpww5ֵ{l֬ܽI_*!slQ<"Q+F7`s:ޡp^)&*s_N&u ah뵥3R{TwJVN}> Dz#qtku6 /T*.ay+7j\&MShxjyr2x"iFۧOFG=zﱈEX4xm؃hl[/4RF.Qiz4UZ#T&\i]ң*xg0v{T) 44ЬVhM;đo;g=+hΈF4&<]7˜R]jm@ -Ow -j>Ljt -0A2LY`d5qy$DxMVM"$Vׅ0);ʨ\hOUt!}L}ǎ'"^ s>t~FV"Z/2uȌ.DXVJ!r."\)ɭ7ȷC:trz [{PeGVR&l_y :)6o=Hv6?Q3i ʿ4h!/XbSD{k߷6۾Z媴ﷱ<,?|kWi֬Y!O= Ns֩!ˣܐzrDG$VU >TD~~?}^kn/tƺi@X?1<@Y]vAoy*=)o'X9ȦQn!RXqquYAP!cqf[݂ x5!w~[}>Qs^M 1- +Vrhw`SBrK칖|3͙7:Tbsb!u`RJbT0A! e#ki\k{4@KXsݝ:4t9 7._rHfl48tҮO'@l+˹΀%JqDe|/wƳR[4EmF)<}eJ9 1^OQ$CΈcpL8cgGM.G4\9 +3IЍ|lw9]epHyO4dp(ա>pF6D2 {O?) 3GDyL.^@E>&S#}hJΡLb`|eY#U[L4 >*('(ڠ|Fy]/!`Fy7gr ^Ft3W P[M1ˌC;>f%-%K(k92h SEES9LS yn%sa_w%4ixY=Qd& >#=RKF-M_ܾIs{ʼ.5|RVv%d2;hxՊD:WH-~\~'23F6l,9x]?']?Пk:xE>L na\I*QĽOH_E^``ezkv/XJQ=T2.,Q\3uL5襰Tz;4@1lHߜQ{}@IGc $eb,I ) KWu$I#!aQ l|bITIH!]{V4*d4xru" ~%@YsYV:u x$!OVqb V=Y'hK64 3!d_>:5 ;TST$;kj*5)Gj,NU+GZyKԦ UkRc2<@(c c>d`"bdz +zΫx Y/6}4OJ;*H/"\) 'c8f-:^ȷҰuMNcTB|֩;ݡ8wJN] jy3Cj{cQac@x'OXhXs,TٻXFgfwYF2\lx>> +ӎB6ev=NYiT4x^6D_QQ8i-$>qDLB +'Tty<u_SHPTT}}`@IT z"Rsaboxu=0Ŵcۃ\u7w_S%jؼ8U>ODeɭWHA>E. Ωgԅ)R\&CSpH,$3l7{QQaQ6ZD,njSȲسM_D0cdak[թ?g􎨘׭{|c7R24a\E}4(@7J~.,0TKѭ#|TNLj`| =zG%ncԕ~^l ` 2CwSFIxڡhŃY#,2q‰d.2+dxL[1n;1h(m .4erRG; +.bh"l"v1,AqS4/C;MR83bzI^<#ދ$Śnj(D2xC#Y[| LO#ٴSz&kj7y`&8tZ<1v 3}F87 G`iR $vsx%rK2f)uJ +:5IB==VX<>$A}ͱ<ͬ/ *Iދ/JNp5Y- 6piu'[y(:ZcM 선y!_u,jϏϯ `ٰtFpOWC9 i7+C9o,OZ:&Nhog8CS=QQ" +k?YZA^QW߳`F]aVcge6Sc0qV7N"7\uwHuC{zL)d67{3`{[i}jŢvt2EΝID+jWot@* '4b‡Y:9x81؍lbjNuΗԩr\9WzMc<&^ㆦȃmSyằIz2PgVY"ɩ'UИmJ+tDkj@9Ҷ:ZwBPbmdzRx\=2;dPm|"Pm[B}L^F*[`N/EQjL+ozF; WTqIC +w׵@CH!`yǾ ?R7=nD4 +(n1yȅL[>Б =D}(갾|\}u#\ .Uob_IVq4s89>ّ9JR,D0cͣSp)i#Ǒ!2tA"hL:vsصK7ofs] kuބ"5kwwog;;vk㗰J>gn۱FDiwuFHfTŵ={\w('\aɧ\I|0A:4}GEc(zm̠띒!G@_Fopiy!tum@Ĭ ʨjEb{M-tIz";vށ܀?t# bڱ铩Q{,A ^{۲= ۖ íKzsM WZ +92,!>8U +9 4+9gy*vq$ێY +upڠ3Ѩ4F O{4M2'TW|턚O204S]CLwТL#S#eoV`Ʀ=Y a\x ^aSEu!"Lzʎ2*ړFGf1}*&ecAAr:S߱㉈׬,DrVL2.Q=mo> endobj -1878 0 obj +1971 0 obj << /Filter /FlateDecode -/Length 4001 +/Length 4000 >> stream x]Io%W9H 8d$y@|MזF{ݬ%}N*c @@ -26894,24 +27990,24 @@ x d.s SI nF+]Nx#< ﱇW (7WWB|mƋO"ɿו &,uS%pl4LW_/k?|6'i$Q/^[-C굵0́` 6({TlCW<*ˣi؆!u{ҧt>um'Z(hV)3(ߐ=kDtVdžq@J37*a8_iU4* keHZn$xoi45v㌧33NH x(M3+qe0đh&I.2뙤( ϰPJK6,c^F1NV8SzuЭaz4CQ-TP|eH+ta"cֶ,e?ZkbӉ+Mj^yLBAjSHM0CIXIX]M~T.NY`j]YHhP0f1zގI)`jAŮY ^]I7 s ÇHǠ޾?c{$Ld}uޝxXO$zT Icp-@2pBٱ)Mk?AZlqCd^Qz]Pw Ҡ3w\v^'v^A\d~ LE RfϔגPqBmFi8|\_:Mᘡw_Áq7W HgcBib6KuQaw_Àqa7 W Hgaa֣5ߡrӱ <=zZ֙ȚDPzrjmĚq/++z[-b{}v V7b.dvgeYAKu}D DN u4]. R:wM0 ƝV5=s<+.:Cuxz0^+d@xfЇI4ȋZ!Yҹ|bs-(#u>lka M|X2"%:k^FT{M@xbk8mf&]i3P[RfKePtANe|]S5֖XPvlscfKQW]#Yg3}):da.tW*Xu錡#j (uH߷Y֬x6TB$& -`NQWج)ZP+NGiV?FŬ\Ep*ek?=K7lM"*05h>zlݧAJB{{ YHt ɬJ$ 1%g䡾_(7앿B~ >K0o 3㈘b#'ͼV +`NQWج)ZP+NGiV?FŬ\Ep*ek?=K7lM"*`Ӊ魧}D$`Ln[^Og0̪)J_2~FHy^0 *3o`>n*=C0σ11½9O/6y׼W endstream endobj -1879 0 obj +1972 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1878 0 R +/Contents 1971 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1880 0 obj +1973 0 obj << /Filter /FlateDecode -/Length 4311 +/Length 4310 >> stream x]n}W$0ai)YtIkzcV]XU ہ+?HO 9aB!>{뗧<)}G-0TJX] @@ -26931,25 +28027,25 @@ p 9GjkrXMY; F8(awVGJ jcOVEHm@l̝__PN1P:I<{e3_d^LdRMqXm~SE*vSdPN{"fk+5 a#ӯSZ{!u Tf= h޻4C wT>-oU P f[PL#4C>m͖vf&y/FmUPN{A3&C])6 b*aXVN{Ae˴Kgc.-;Nv_ޝ΂x6ګ <Wj7Ϯ4t`pM`^,m";> ΂K1*W@Q8%{g֞3ڳ@gx=kfgbeUxq.lJޭw3F3U͆ Wݚ a{kk6DإAX!T߁(eS+z&IJ,{;}(TrzpPIlX%{@t+CdPg2U2lPvӥ uM2H u< Yb,Am-*A?AQ2MTr*CbOmb]DcT9^ nK{R X隦&')u곌kz06"^Is1v0>m/2`Q}xMX_`=h:F[^K

    {䫛]Y_P%ch)C& u.bCZ@ )11 GϯDKNdž1ݼ`txMS[Bɛp6{JV HwKumRE>p:'+]36~7q~eM?翛R˟w|3٭汿i=nwM׼;n:o+jBb#:v(ˊ dW.=ũ]at-|YJmL\`tw#. `قTn8٤!Ląɛv>\Nj3묮]ێCo^w5T~`G7;vEF6kSc_o߸}EIuRُ`_QSi9\a_ ebK n_'[P*Bw6=\3䎽/l$&ʒ1 yZq_v1j*okfg4/NƱ*6+kϮ=wd!pBa(YSEX>K_#a¹|n0*r EZ#K4L:P77 u#X4^LoY٬UCnb N_/m۫1[UbKl]-[밯b%ݲG C¶ d9 6a-`#˕}d3Rs1+Jׂ$hdםG+`<_)eTז3 .E^+ (ѽGg çmh@Wrюs$N|4S(*<5AvQ%[#.tx>y%4P=d淹"ʺ++oyÜȣ@[h+ -K1Cs `jyd:obMLUlT2U#kϙؓճأNS}*dJ_?>VW 6;32<ӟӦBjNȚʪj.MGc?rr$(eB4Ǧ"Ti$m;*/=LO#w bj`|ajP -zsvL\ h|g +K1Cs `jyd:obMLUlT2U#kϙؓճأNS}*dJ_?>VW 6;32<ӟӦBj/'d%]|4++9Mr=T @6CR-Isl/L_&´ +ৣYz0FԂp_XOՠT-I8:GVש호c|h endstream endobj -1881 0 obj +1974 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1880 0 R +/Contents 1973 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1882 0 obj +1975 0 obj << /Filter /FlateDecode -/Length 4938 +/Length 4937 >> stream x]IoW}sp9hd'"]MbAn]oիG,wBޙ_~}߱'9 C|2 R @@ -26974,24 +28070,25 @@ $* ):;v'U 'U= ^ÊaT͢k0ӄBmv̾]5Ļۑ]-Xr'ec1P)<|jӢʣf^Ht\uvv>$|jlvjV*ߵ=.Yhֽ.-:WckRdlr0EFՏDZ%vd[*pIL b}c^c *Cz͖`h W7|ANL&zabY B6"m,A<kP-Iͼ?ϫn =6~ngJE&6 AA@- Ƨg>AHznϟ40K#pJ1 +W~f88G^ʄ2ӓP8G $4[5ƯLjCJQ2%[ίY^Q<&M7LMνEO/-#EMFJ<*gZt|TcwkDvP~y LiˈrXw{(G2vJ_?_y|D{#v Ȑ,ioIaFqO?xNf(35D% 峱 qRO"r0/ dhG@k4>kP-Iͼ?ϫn =Qfn1ibd pm|yiS1O 4: +?O0 endstream endobj -1883 0 obj +1976 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1882 0 R +/Contents 1975 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1884 0 obj +1977 0 obj << /Filter /FlateDecode -/Length 4462 +/Length 4460 >> stream x]ێ }ﯨW !yާ BeWձ%;@QS7(RyHQ];sy'y+_b&gz}U]L2ċR(MjY_ߞ{u_T2`~gىOyz'B=o|?>;.8o_7'{-ssYXce;NI靥f7V†f3Έ舆 F(i._~pN)#._ߟ=nKo6Zy՝D&̦~x}>y$kН:Dr-Yۅ%4(=W[JJ&28"QL촶zWJTIN({G8=ㅍDhNLV`F~xpblVa]gĔ'٬&<[N'Ը%3k"V'lgsZ\M!=q42/0o֑Wx&N%{5zIVȋa_臡>-wdTˉsDCH9LEXxmp019Lzy2nP.?(4OꩃStA{Y@Auoe#S@ R|*}GqbuY`ϸ ڪ $) W^tʫ8`]5>vѺ8ȉЈvi`UCHSf%s2*{٬\k=˖hC;|rQ3UCȶdƣX"sS6FUiKuAvy )COAv]-{F^J&}++K?ړ# dO]YD !jFV]{dY@M`BdoY̦~jF;O^)ZBKv06#h|Gp5=!^;EԚE &9H&EU$ kɂ4E({"Y,*?0]Z],"YE(ыrf$#)E=k >oAJG9MŮeFVBx7Į%jG{0vAwZp`|]%MN8̣ -aPF~?y{ޡ,_tiM,</v"xW`UEϚ},}#o{W:WQ'f$Й^;oa#^jI̾ f y2Pεi5~ ;YBu +aPF~?y{ޡ,_tiM,</v"xW`814ߋr5?X F +`C;u򯤣>OI3'tWC#/Zt0-4$"լa> endobj -1886 0 obj +1979 0 obj << /Filter /FlateDecode /Length 4057 >> stream -x]Ɏ$ WX}}0`06 `P510LŒb,YBRF.Tgef(GI uEED)x{ˋI7\x3|g_6F%(Їgח%AE)SGPO/߽*!/?0._wPqǽ"y^ 8u -Q:X8t1EfqF)Lh(DR+{w"x|y'y]// 4u"*4o/KMl$' fB_Bٍ-1XAalPx+a; -ZxTh? ;$8 3m)ER&FWiw)Hr^wd2E+'5D\tlub [5}~Xk}?әԦ{{Ea:Nv{뇝>޿[ k:xII[L{x1{ZI( s_A0ë4Gvˑo6LfJlfu}Cgfv3ŵ̈́gOFoAc4}ZkoȧYL-g; _|P_@橜B'>ҥubugkԷC]3 -CQYL5}F&7:?L6nloh:^'12m4?/Ϯ5Ey=g~ںhOvM cˎfu9zl"V+R:>nDȗPQ& -a= c]\ȖiE H!׌09q6:)"F*FB|nr2A;R |>uz̸>Es_BޝQ*8sD8o؀Y*nt\K4[]"3(,ET$oLJpo[L9AW(e: !X$5 }/_fN[,LAvG;su,5Yh3#TL .nn8Nqn4MBkj@Z$uO׌#XfdOA2럲 `3} .&d -Y ȲNo2Q~~>^].Q5cb9jr,lΔ e٥C]HFCVtcy!rbdQ$meA -I)T滇+y;K=v]kw HoUxCkoHR_c)ÒCp'JY"^6YmWh9Kz1_5Uv b~RvkU}6Y%EheJ&'qES'Oo[E@52;.DK'V|`5Lzʷir;{;6x9>7.XH'(K[_f*3H5ARV}[~+;maYeCV땲=ŐۖJ-!æa#9Ѱjˮ`ێO8`NFx#ؿ@0Q~#Mj{.{x)Gx(>4\i.kF0 n+mjyyD g*p0')s(Rdk0:>x"t/uM8[@ms޴ma$o'mOk:vDŽ!|bfn -_.- +x]Ko$ WD!@&9$< ;BZG=9d ODH~Rϒ~~h1o~~I$+WޔL< Br:dQTJImCcק?)AóRZ ._ϯ?=}|?ODh",WvG҅[>yPSZ5u*H^/Ojg䉆AD+_~~|^k+?I󿞿/O^K[K.6i  fB_B9-1XAalPx+a +ZxTh? ;$8; 3;l)ERl&FWiw)Hr^&daVNHkcݲEso3k}2kaYeLg6Ruڷen7:S]Osvx.}7ݷ߃kHJ*c[ċ=z1-SYQ^9/-'0_*ͳޛMfo-Igzk- {gފ#i(oȧYM-g _|P&'7FG8GedadZ{ahh.46-'#EݑG8Yw:jAȌ S40+(eH3gO uk$\Lj̠S1 (}1u]lw$`U[dZfs^m̝/e^'%,Wq>ɕ+9dhPzELVnؼ6? ROzʵ9zkNmPȇGԃ ]u0f/<<}^0(@8_ⰠPzG^i蚔PZIX]0]̕sv~ӊ!ajcrF| +>(ZI@u-%3TŽ5P x8_m6|%]CTP/5Ob˔pK\, +^t4)Ђ =^鋞  .(IqeNDzA2¨kIH̉.R.3#’/Z):7_ܨb3T3X +Gڝ{3u P1r#Nɟ3]!ӡZikiΩ\~j|I $W Yc\V_]?INbϐ؃$# 7bf=3bO 1B>3i%1}ND`X[GJvXw+}=0}^nQn9/mSY +q:e\hJ_⊚BB uk0ʅԳN7kV5C5 Ht w=Y6 [}Տh[/K6D"Oc)BU fWXD%Y sI;) jgDDa i.r wIKp<'KB]NJؘ(IDk4΃Dy],Y 4_Ax%9~lzo-aJE4£o@hۣ,Ho(iC 3Hvd3E{6 +6hn E ɢCd*Vɮ7#]+mHP$ɂdn!Y?ɞ=dQiBrdwz<bd1zE!YX$dAu#YHvEH#FĢb.;HvEH7ɂcdtZv/+ryW9^Ifd=E e gje\/XJ!q [q*2HMvU(mZ-RUk'R AߪT夢~tcnKbu{f)RW~&y~.u@߅~C1S^޷/QEEWXʚKWTwRJ^`>YR oY' +r ;[{ջV^r`V7R^wW|̎Y[}Nqu +FXk߳f0Fң tԯ^ +rZyr뷻O]Pgi2օ{?G2ºp`Ӗ5?ܬʂs5QO^\]Ȏe~e ̝|v-8z58]*r'( Y){AvrH2KVtgy!r`bdQ$m˚tG 17SWv`F.G߰m{֫+X|_/LZ_g)ÚCqs'J]"^7ټo7h9Kz1_auUnv b~Rv~hUc6Y5Eh:ej&'qE;1Nķ0jd\.N: j kxSvo[vw|}1m-m89ls|n]Ww ڽԷ+eG\9!-(ZCC]+,Fl!S)ջDê!o;?X@{0«u"5ӮӪ}Ӫ&7AzmVF[sVDl;R"Q^!|T'/OUewzXMhR~מ##>}+'4W|I:'w*b rV`KG <Հg]v{K@ܹO <8l.P6qM7+̏pZ; ux2d}U]#: ʥd3˄Aɮ .b:1 =k9-L? $A‘"y+[%uLUT^}4iZIvZ{^n>C }xOsY{7'Ip[ll)g΂7uT~G' Kp]Pg!)̽ghYe56m]K܌Rs쉠;h$^F(19xO&՞.MdY +}1cMS4'4tH";1:l`>f*PY,0n3)=ƿ^gV + +|3 ~:uISaWU6?{Zũ$JGjT?9Lǫnyg>zdLaQ%ӧrw x2׉" 1XH_ Ss2ySS*_yӶ!6,^u0^ƿ~^~y>ϯ鷩;&|6sQ-7 endstream endobj -1887 0 obj +1980 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1886 0 R +/Contents 1979 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1888 0 obj +1981 0 obj << /Filter /FlateDecode -/Length 2939 +/Length 2941 >> stream x]ێ}WeN`0&C0iL?L%$v j7ªSUdQ D;s<};|?H'?t+?>Z1aB JE5ZK}K?)%,El?|&!?pfBRuV[4C$ ]^ bhe 7Ǎɥ*k.Kuk <˳lRiV0qԀp׏9Ji#3u騼G?叴Avb? endstream endobj -1889 0 obj +1982 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1888 0 R +/Contents 1981 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1890 0 obj +1983 0 obj << /Filter /FlateDecode -/Length 3373 +/Length 3372 >> stream -xَ#]_gI lHI _ UV~ 4-sC3*;~>}9iPOc!_ NNML`2F[ -_>~8χ*hb8cB|DÜO_0Juo LMD4l)PҜ+ByƢ ->_1*2a6(!ͱXxY OkElzG;aat0G0_lN\oڤ' I,cB.ybp ->h}4%vڌ0el~8w?<3PZh r8x@}f7 zV,ADj7,GN9}R3@R:s  ql*|IrJ!4G6\XwQA_?`J`JZ*_2y]S$WCLRMz:7׼хAHA7)Q+'e!DrH_(Q`ՐbK9LG^!g ^]3#p{#5Gbi&]B] HAP5ؿ3Iq8L<&]B*sKP> ?+*(:idp^ -, -n~5vPf̥Ou= =L)ϲzl%[20=%{v%OHV -0AzbwuT7$C%-uʼnȵ(zjn]bBݭ^:zVqSqg -)3]JNe`0Ym]>D)YB˂8HN\l{~U=Lwc.2jǥ)/vK -ͲRm&N@_Z4ƣS0W:y9vO7ᦺ%Nұ8!K(i;$Š.喗 > g9(|$qYs| -ZMӞgc LR~ ɬB,3aK|^҄1&>M̍H7[j5n-=k%ĺ%{_mՀS&,eS#9UPT&Ëג9 !m%U9uqIm8ؖ(#k#x!NreC%o)Þ%d_sWCp9;-VO,/ -ݗx4>Lщn)8U%(f!%+V -vHxep.MiE<^#'SwƼUدC%[tfҡteS9Wc>GŲ]"~*;|}l3؊}OןŅ.%rzdpih#1ibFcj,[M<ܾ^Z/}e+~Oʵ=@],]%hn<'j6ՄKT<!rۿ^q_=bPXR -uŸY 'MF,ǏmAy]]BtY3̺Kڢė&$pEx_#{5DC>'8- X̅ΊC XP:nh=dh9='qЌ ?ڝT+&y|:ѐ,nS OGIm4@>4񉀊p;s -2]c'/(3馷T̟hL޼N_8^s vE!J X́p`+WD!mg[$ilR~0 2e.lhbp[I:e(`7S/i ޵nlihnh۽Jѻ{wkCд ޷ؕokhR>4N:(.󚏯C0)M&$N=b9ͷN)_H]0 =*&G#i7 -Q:"ΊgcglۙlN…[6i𕒾O)6uuQJ.l]fxU$%vk B˺6^{v XTY)Y]*}eu!t]mǞTpMB5R tFۙUkE_n|Yn"N!v2[E̶m̖9,N^Av%Mٴ +['kc+ݭ!P`Y -ʰ;J5 Gm]ԕy)ঝw,_e®{f6$#:mHzPc+.sQ~ /giNAɄfqi5&ost7DQ'dGMnbO!/p=O!E?*&_`ƋQ< S(k: -}bL +xَ#]_gI lHI _ UV~`Ŗ9k3*;~>}9iPӿ|K>7z}9AP! r1De@:ο|:p T:p6Z&|9/?`>@տ@h٠S2'22 C=<9WfsE|>cT>dlP2Cŋcs1Zy|9֊D̷vxgvO?WLSRkSF9sgÓ137 a l 3̎=n "5 }wN9}R3@R:s  qh*|IrJ!4G6ޜXwQA_?`J`JZ*_2ry]S$WCLRMz:׼хAHA7)Q+;e!DrH_(Q`ՐbK9LG^!g ^؝3wyJ=簻'G5w u 'B,T ïzw?~x(toSs&s Jq> {លtw,rUdE+ ܥf vb}0cϔF2 #/boTכ{z|n0ă9@#~'r 9lt9I%"f7:0gʫ0n~R&i~|1#AItC j(S--t-`2c=c!JkGam_fUHYt,]* }+5V?jmy2o[!ÔPD,U sSJ t]|Ɓµ4)> Kj nln;A &@m2v|e`w _*5tIa<6-P[ePY!PG iO#sMĄ` +TfQ/͜us2f.}UYa·Nyc/!—X,ٳ+x:E<}R؇ ۽gM!*.n㙣&I&X !` Vy9VJa6 QY0)-OB.7yS"^`lH2/&ApSGsN5RBT U:wBe +5`$M!ƺ |c5V΃[]1F4 [B6H|JK[-ǝ!:+FajS㳘ll]Je; u[X\ ܕB,9nBi`(4"} ?Rl +kOWF 9DRre@; Gތzpdq,Bi]a%Abxо~J$QRx<c/Is&.rR}G-Cn[ʁ[H=: +:9)E6ѣ#x`c$Mdkk]5HgiP˚ߖ g>ʼnȵ(kn]bBݭ^:zVqSqg +)3]JNe`0Ym]>D)YB˂8HN\l{~U=LWc.2jǥ)/vK +ͲRm&N@_Z4ƣS0W:y9vO7ᦺ%Nұ8!K(i;$Š.喗 > g9(|$qYs| +ZMӚgc LR~ ɬB,3aK|>҄1&>M̍H[j5n-=k%ĺ%{_mՀS&,eS#9UPT&Ëג9 !m%U9uqIm8ؖ(#k#x!NreC%o)Þ%d_sWCp9;-Vw,/ +ݗx4>Lщn)}ZK +G6PBKV2G2(1uc!]ҐxLFN xGy+e L_2%8J3 9-2FCrD|eDTvMzbv>٭|=ߟߋ ]bKy`^fc< Fb8 fUCoaFo/%җZ;Ψ\ot19łEn<oZlSM~0\ju9,BQSZܗRhE+b=)m2f9~l [j + 5" d]j$7y%,›Gܣ&! $=YnNp(^7hfb.'uV<b(qCDHF9˥fLZ1[`5=gq .jxByAQ1D&}'>9xa ;̰Lު~R53™|~~9S`%00젉1-nz\tkɀ/( _:qEBvFEr+/)嗧gno蕡/teC#bLn6Չ&(C)Ӿyzq|hL[8ueKCp;DcmVJݻ[׆}N8m MǮx[C3ݖ頩vAivq|| M!n2!!vOIi%uJ\F貇IQq699\OqVqVL8+8+e$|fs.v߲I$|J}a6`RwfV^7;k"(מXCn^ڛMAϓ|HC x1w}aey~秐7qy> endobj -1892 0 obj +1985 0 obj << /Filter /FlateDecode -/Length 4147 +/Length 4149 >> stream x]KWX!@$9l0yAӽ{@dL={4<ݶ%փŪΒ~~h1oϯNҿ՛d @@ -27154,24 +28241,25 @@ NP PXL;]@'C'VH1u_=Tց* pп E ;X= 暏jo޴< q{ִ֦ZP1:b*Ol5 Rx5ϳ+("¹ |.Q~X% -AV }" e%~Ϗ߿O~O}~7NgG?yW\ˊߒ"<>ϧW>P{TҨ](lDעK̅z.80CK~=y5^ +AV }" e%~Ϗ߿O~O}~7NgG?yWv{y-+~K` +0\>v\AF>RKv;2>@Sa֯/\%zk^Ly6G)/{9A 9paP+(Cv5sa L&ƒ`O~^ ^ endstream endobj -1893 0 obj +1986 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1892 0 R +/Contents 1985 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1894 0 obj +1987 0 obj << /Filter /FlateDecode -/Length 1823 +/Length 1826 >> stream x[K7 WT"% ȡ@ m-aHrI @@ -27180,153 +28268,157 @@ $ m2 &IܕVZiVGO5I ['uGs_ LhIRg|Fn&-qáY}Nukyjd-aKA SFbkV 6|C듼rXR4G& [h'7`/@;݀iIon@:pY'Gcixj›)nٯ'JBVXxel^6B."W+hCy+'ʦ'J3-*ܕ[:K6~dso *o?fOrٮt)aezdxmJ)=pvde pUNfQJ[uofcׯm|h 5Q endstream endobj -1895 0 obj +1988 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1894 0 R +/Contents 1987 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1896 0 obj +1989 0 obj << /Filter /FlateDecode -/Length 2619 +/Length 2615 >> stream -x]E?DRT  H&w!agv^v{,r]@2͌eY)7 "1qד5 p9!3C4֡ "OϿ|:x)? [ˑ)Dg9~0O/5X0=3x2엓Kdϓa'4?~#h68o8{!F w'f3!sF${`ӷ3$;q9ZHE,lBL\cFLS2,Y4#hǥ;#Ci= Kϐ_\W[ `Ezi̲pqǰPFw -证B2b8d:dz[/[' )Q&2u,[SW"PlxSf!| -8LupuᆔHa,3zxT\_G):08EP2TEkȦL."P?/KĔʍEs OʀB:)z㒰Խ2V2RI+Pa!iq8LMTo+PՁ%P??M*p@Yn|;%>\:sWOƚݱd<\T:ZɋAa"6R-|O+8pGHFB[Q%G&dY܉P P|[M9tm,à@Z0'Yz3Nld=({.UpK4X 2OlUF|n0I.9Z0Eu^FP'1ޠF-`(*8:X0,#%]*hBJCoM|})I<]^p7y#95 -ǹ&qJ1$ `~)1O R)eɳ'=?\pa(&LC&˶f8dpoۼ6/Ix1}K^:`_r#޸Č+N`_ 3PкXKN.(,_`{Dl/UH<' Y$ /E_cE[\-w`W҇*&EPM -aKz͆NRw~ aEted(M*mR&-T5 -X~N0@59ϻ'OR*ݡET@V}i$&OUsowj%#(1yR ӽ]v'4QթU5/s{Sp% M/lCՓ+Mu<Ċ%]U6p3OF%1ˮR Nk%l8Jcmzm:a4d\qPi</[7}N6Ö=X݋E wa_⻺Y7ey.v0cup:jlsy5]A.q;07JsV,5AtOYore -YKh4|8S3Ҟ єT1DŽ--% -WS±M[é?޸%.^Ҧe"Ǐm[yMB J,X,)]yE]Y2V=w?9 L"uAs;%ܣjːü:1֟J`6>JˁwDOjQI+65j쬜wc 8_8m^Rskg_b:xK_q7e܄ҼC$9"faټr!)JHdz%+8iB9ezz .} j\/-4_i)bZn1t^훯i7ǃKho KfDiR=f57.#?.q/P cVbwjP0%QaQG 0~MoYaI%9L#ĒL !AO k'=~r K/rw缕# <ן|~K CwS I!R*|Jmm;J5v$WQ=L1sv`)O]/=X3ͮȅˑ'(ZR +xۊ+_hU*.0.M 손3rNlRR72@2c[Vݯ g͏ T;{~9}=iI_1/_O蕏d;GlCP "*ڟtSGT^kE]4ϧo_@>1T)"0g 3/'JKedσaT?~hVRk.|&x>3;9T醗0 V&su9!ӷ3DENx>]B:Dѥ+B WhtE?zLcTiaiBʄ%д~\B/z@]\-l Y_71, W{%ZT5B`c.*6NcThǓkGxkc{]gGl CWސmxGH~"|rNaG +cہ;xn"s=X4kv_Gtw9v :雹u`ȎCUҝ$V9T}19`cPe'{a!y]kyyr{ehz, hFm 0i},|=s- m +X#F8w>oZԋ3R0AAp(f.䄁KYK^̓М02HdV[LCf[v`t7omym^Z%aX!oyi5F<98nj 'ڄPF30 lBTނcUR{s5QfB;Iء0kh$rztl} Rڀr˹5su9vYmvP\jW)!we]ޣ4UZ(IiPJʱV {?f'1brޏX"ݡT@(V}i*'*EΪS Ī`[{tkTYy!Ua_RZ^,ӵ9W ]V\4wZ˜ڦ!ܰ|JzG$}WR 㽝Yv'4Q)U旌=!ڦ;>sEBޝ[[S\ǯpƁ%W)sմaEXǵ6=6L\Ks*2CY(Ǵd=[iM@ͦcG`kbl=\ؖlx͡n H,I~VMv(˩6ӜrR+:uT.j(,;g`d 91{":#g$ -SYK4;S_Үhnphr׏cBԖhBaCRhԟ߸%_.ޓҪe,Ǐu[yUB r4h,)^yY]=gr&rTme3p-]ڇזF_ +QWX()Y> endobj -1898 0 obj +1991 0 obj << /Filter /FlateDecode /Length 2988 >> stream -xێ_ex00IM䆢3ޝRHY}tفW2%ܯ GI#x<:|>Hጤt|N`ǀJӠ pC|-λ#R@; y7ԁ0o #OJ4úfilQF8Yu0v!͛}s3ZX  6ߞ㣝%̍|t߾!Ӊ')!dH,F`lNf抙}fv6ULCh%J4"hc+0PXHtFVW<3%up^v󸽞윮j!βtEuB>ld)&Y|@ -mxh4xy9!{nIpMGNco gџF+~!xV(/:; -qyᆔpkX4s/ WyR{8'SO:0b/eɠ"+<`b߽~GbRX)`tx>ﻣA)GLk{&=Ǎ`K`d`#\*PGMv8%2(,QocșāP(K:sk.'4Msa4"ET"B.D7<^K3&s˽{ĦLVFqSa$8tyY-U\mʄ)F!=Pg/Ba,n^bac9Ec# F7lXImJ`pnLޒ-zs˅j H SqB*_r]CETPq$y߬bЄY0&`ٷîRH -# -L<KT"koc`»Fߔ:/ޜ-ިLy!PL]bp9qyTls9މBOE9=9󅌒9h<>e Iי|1nS(\-(`VnKL`tw.oDR -^Rr|A)RkE5.f3Z &:m 2,Bc_2ru'IvrqV**0plLҒHZGrƀZe}6a7*Wܥ5.} aA.{8ͼk[IV)M2Re{?EL DMy"z/b Z(JVZUa[JI`*XlUbv*hlb*69ے -籧6rtMĥmShi1UxMxMɤ /'W" #P;XZ[+&Fh^*VqkK`<҇RBn,j8K[u` X^:/$A$MKtu>=xk9Ҥ9PuBfl̷Sln웉njAAZՂRn͒g*I -[rC5Vv%|i! s i^F3-X;ظE)S%Mˈ.fm斦[ɘ¦&V OO5q=ɕ¶D`N Z]sNٷ2kk*c9TRh")z\c>|G>u~Klϴ*2[leMK ̹OXYdcl4Ǹse>znPxochuբ (M]nk41hNc^^@Ä% YZ!N!k -S+EupÃg]s.t ĉByB#HEr&#L̅llMҲE㪃?O&A[)w-U\}e:?X_A+ +xێ_exH^Hl -&7}e"Eʒ죋})~%e8J ހ>8kO)J|IA =#сRiZZsϻywPJ 1_@=Ts)xDPG@#@'J4úfilQ(M׬ºDrB;X-xYNEv|NRhoNX{?G;q=$%y:!FZkW g3n4ULCJ#ӈs0 `桰6ӡa1W+@lf^v󸽞윮je)1;7Ͻ(Gҝ} R0Ц:=xh4xy9!{nIpMGNɛ8@ џF+~!xV(/- +rѼpCv]5,9O +Ҽ[Ҹ9OƟ:u`\F1/'`R?; +K253z]k;}tݜ| gҳy"U,H%r@ +"?|<x)AIogB6IR3l1]!z<%Lxaip(>TxL[3-JTv1ɟfj!)V3M&ZLs=Tt%nW!=Pg/e{!W +UU&Imȭ9b:a#lXImn09?0zKn-~54\@" fL`6VjȗK +A%LRq u&tr4̾]vBRpTQ` XY{#5 y4lF-`` bˉKFa?.ԯ\؏S\0_()Siб(vu&_ҍ)/Ґ%S L + RxiR<7Mu^R +^Rr|2tJljE5.fC3&:XMH/ِ#$ $kW Xi,0]ZUK
    @&xt2MYtL0zW0ă{iNܭnҞLrݧ}'r fn^ -)؇-6zs+N&͇Wy3/kzj1Pkvp)lӪcq'q)`tLSZ A&BtK]Io/bw[){sl{^4lڭ>/x-{}ne]i3F@ϰ,ϲ;;CFeXq+sW:xrL~ IƥP 膅Y6gIiӓY@io¦B2J|YΥ +ZI]|FWlU|:ƃxn霍TIł52S!y~ڴ޴)Gk1Q$%o1upJ+*a&] [9)̓ך47epQ{p6v~̄7Znp4o[9k5%vHOݽ+[ufw!75lۥ\0eCS^8o&EE~Χ'~M:g,9E*4vwbIqǟJrj-q*.Y>V2\b/Ƞ endstream endobj -1899 0 obj +1992 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1898 0 R +/Contents 1991 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1900 0 obj +1993 0 obj << /Filter /FlateDecode -/Length 4023 +/Length 4021 >> stream -x][~s2_hlZ)Mx[`tHf %ۇqֶ$j8Iqା?_\8sÿtK:#}(\0kL{/|:\*83Z)~t%wA1ǹ*̈`Wk|^ހPGp*1B^LD[%frxttoMFl:gg%c%כ{t1Y2 9 !6e@P[(>_?~]E`3ׇ?q.M0>:xFe ׷]?/嚋 )HF@\;c^nB4 -h{56Vw{5Xu*^߭cRu.m6K;]'-cL794 O:BHGq%Id@'/0헏ݻ4uZ&vQLn3R@ցC ua) 70JDFOL`c )}!JK"+k _gscb^y}L&3IBK)8ȯ9 r=1WdFk?{|ģтޮmN<254p*1`R׉{1۔VԆLH$\+D\vLCcu(RaFJ[WUƯ)C!h/zQff!9&5dFPZ T߀/wC ?#v1y!5@U: 'Ⴢ^F!jhM%˱6Sc2N0JTJF޺c 1M8ɬ0+xJ8%\nj<"٣#Y6^Kd>R|cסۦ_,/N3gP*u@#ފFS -*ĝ T4s J#{ؠ42 H 4i{ yFAid6 ZiBnpS񃉕.o3{0HJ<h6>a64^hO+jȽ/= - fmȖ~$RtI%Bjskoc:燕`hEXif̭ZYHaPjX$t ydS w*%,x,TjS2N=O@~h^Ì@%c2i+X^ƀJ.6%yt*!Y O{`m3{9amU sCA~ֈV-xL YX"m *:][ibXQbNL%c2_ֽ)O>≐>g?c$= 'ToK$hI7Uzf4 ƲU>2grMZ{> HN q. Jp[>=Ixb02Ktd^˩{;"⎑6=Fd `Iuﱐ咁pG %@gV +r:f! ʚB}g!by0 0&XQmۜi,ćD u.-C|8::XĀGwDVy*3u|'M4lj`S)u8m58EI5wͳq"TD ÉV3,[|N#LM28Qx" -AjG'r8BҦj,dj<TOBVgZuiT AWU6=[aJaV<'zG{,ĉD u.-qC8[Wy#tۮӖҒmYWGq֮H|:"D#S?&J:"Qu;B:hBdϰ#h! {ϴBz%[km| -Ԩ<Y8?+%\‡[yGpVāo:"LLj[狀 -f# F,o=QnO -F0,oF1XU0b)URcTua6aw2)L RePP -ӣۜ4CX[,\G$cr,9QC+:E6d)Kt}lE= C'kkqidtdTqUI-0FPjA+UFxzDL Md=x -J*1.'pLx;$f0Von|ӺCCĄd"[ĴFw+xg% -L@j JmnZ-4ͪ"i>-ubdhJ#Jv͟Jâ+xYB1sIk.yX/Bg67i"ŎSZ{ "ݯ9,ǭ]xr&;,^sfCdbz7@!·6"k`}^c|4#22e٩sr,9 K'רjm8D\hp@-NKTh^?s+~im2r:B2~w?!nߴIR_{@&;* Ou7?l/)J]Hg R ! }u}6gw1NڬGu -[~)wsI}?y +x][~s2_hlZ)Mx[`tHf %ۇqֶ$j8Iqା?_\8sÿtK:#}(\0kL{/|:\*83Z)~t%wA1ǹ*̈`Wk|^ހPGp*1B^LD[%frxttoMFl:gg%c%כ{t1Y2 9 !6e@P[(>_?~]E`3ׇ?q.M0>:xFƯ\s142%ickgMF7V`oBUVyxݡf]jn7WQ{ЫuLΥm`&uiSx켜)&qQY(329 D8񚣣{F.[ˤT.BmB +hw>P:phḾ?,|Fi"illd4:%!C)uIDq9@CT12@x LwN|U+:8ڤqc&Ip)u0<'C' +̈9M=uhAroWNB6'IYR8s` +_'b4 +DnSZeRLR2i +#sqٝ3k{6}mzgK)m]V1 ě'#e($d Q+.(lV]xj7&/J$|PHS=D d9{jLI҈S([֖>lx!8 '^%O ǴSG${xD2zCG}|:btK^B:i 0@@#{hd:[hAA%C30|AidFAU:%VC3:8-pns6(̦A_ ,Mӽ>hJ0~0ʥ Wmf| V-"Ƨy3_qf ISie\-5WAgTC23S>ckcQȠñ \ME +גȍ +ݲf+?k;`L$'ƌ8osJw#d_{$$wT2uJ7{Sca "D CxK6x(K![|Ky&a˭;t[Ve<ȣaEkIf!CsOfcL5CJRfXL%2PRRO8 >z3zX~rRɴbz*DӗbӉ# siWY ~2tS1g<2lyݶ5 +d0su`(S?Jiv#KQp?'uMؙ܅yq31r]w62_遒~^&߷!Ye(bQ\f E@NJp%h.ν"DȊQMDڍ0 b KG‚.KnmLJƷHIoçAZy9R _K5Jv)"IݻD }wL޺w5IG<҇ g̞0 +m2ݖM8 R +],&\`XVj>Gv@:YNIK3w镑!D nˇ59#[|< O X0a@Vka9UuoG\@1F'?2Ո ,)=\2NwhJzER,d!YYwYBU"O,Ty!S!U(NE|8E5>~gWG0R~*oUeDQ8l*n'v'(y6NDhc8jtÉI' +OVTDC!YdCNgZTCL ǀ)BL A.Mj!ʦGs+,T!jQ'DohϿ"Sp"U8(8NE8E5N~^`:*OuuDnwCZ-4o^G$ZYףuDb|'Yi\G$YqGhSG(;Uiá^I|li1wC]A^bl aSUw z垰N"{ҭP,sOWi! yOFt %NaS58XTlHclH 6$Jx6pnQ gb9C +.$Aku?]-$OWCCp)Fd *A8;cTͷ0 ?E\ +tB>8!f^B9;QuG('ATf=BMf!9a!\f=Bz0>Bs5: xk7$p +JȐBxFkUM*x=rʲ"T]d=.'<_ݢ@maFv5u^`2Q",\sEd7ӄʋ5I^hf?m[ K#PC%. jL,NC)&HfU|0Ҳh} 7u;g*uAazt{h+"}edL}R%G?\z sh\W߆,e.⽏'!^y dWpqm͐".ָZ*1PQV8ʵ;ɣƨJ-hJ(r\Ya@VJ.u11LG;6RcZHӥD %\HWK x~]ReE))(A Ec ltC0PI%2.X b$lU?qF*͍oZwH]{cLbsbNwdoZdPA0CH-^DRZFwQU^D_?gNZ,ѡ,RiDɮs>_X)rXq2K#f7M|sg5L:QAۼm{72CZv[W'pFi,G=qI؈lVqDQ! HHQ-nK+j4#AX4 1nw.asd](M"KIbO(#?6vt%4#gtmJVKm2AcQEjTcve6J $Z 5d-B; >ΘvkF;Si&f=˻:4(9SWNf#' ,p06K \k2t88>tHwx ]8NDڄy-ҌӖey}Xb15 endstream endobj -1901 0 obj +1994 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1900 0 R +/Contents 1993 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1902 0 obj +1995 0 obj << /Filter /FlateDecode -/Length 4271 +/Length 4272 >> stream -x]K# VCdIr`ڽ{@(CRM=a]%E~(pା3g8KWl~I^^c.%h>\L.|3Z).~}^.(8w]7 -q?ݫ`_ށDjY~_ޭaj 5gR~8b:B8kYq87M"i,1嗗~Y)5|y0ߗ/_eR wC8ɬ j?^D q jk% Ncz\qr 1d55 *{\; R{xg=t=:}Mmm7-|񷩝Qs{3xAkZ (nŖry`̾  :h'f\mv~# Ҿ%sZлt﫱 =UTޒ I|q:˂p`ml8Qq}z)|!bܗ*wkTa3$Qy6FZ_Ls߻xKu1dd #M -[ /% -vH\1rI6$+Ps'8G`pޜ Tz+_d*$R -@=|!&hq+5 2H@x$]tN$3ڮs`z*oe^ ࣋"Wcwdw SIJYc7Fba|vhh7 -dO;+ 24~; T yF;}X3}gM"W]QywFiI҈mljx2m, 0ډ_.؞ G1#fK(?C4,Ƞ%F% 25䎘eH+q`L: 6v$D#JbC0Id ;ms96vҌ{a̞Jwa4Nwx~%cNl[`^2268j#$yMTY`D =j283͓%cgjO0YhDh8~i_͡-kJs@Yv9v-9/rŀ8BR*Rׇ8 -Uه`Y͓'ٕgDV@Y rxKκs{(tf]M cR &z^XR~J;^bd̴r%}&\qE &뼊E,k -%^ |+[A -eCnz)ZX]|$ qc%nFlu-U38o[:Aac@K6o @- @q; ~A㮤1^ہlIuK&f-lYYsCӒ%‚ۤmU|b;[FUΎRL> -zJ7PG3nu(C*Ҁ' 1Q?~a&4b%h!ƯݷMbRTe?3k'WC1UU Zŀ+_*H?Ӌ77v:Ia6^g>*5{lmv;1~PYɅ1ꠅ`8%_;ap,obd5HFE=jۃ Ix~&c0eP있Xrʓ- ٭m->ػ?R/%[67Do-m|us{*]ہ=laXl׭P s蚍csÙʝP,jCkD>.Y_n_73 Tpe%_݃Yz&.WƿNAK;ϾhYSS?wv^+rIRRR!Xp!@Olry!؈h\3:"J3:jtD$|=Wlƚ_Ft %_ŝmZJ'˻SKid00'OgJJr-&U >yTSpkLyu\\kӨ3Fmg,gcynBJEbѿ٫dmɓ4j[)Y>kR9ŒzFhD-Ч J<5+cZ1ݙ,(ZS{Y]5bVRug>ȼ2ֳ Zi>h]f>a>6MQr[p7sBw2;yRvզĉ=4 ')@2|}X( % djc"[-'Pe}* 9f|Sֳʻ˙/{N}J0hd n#߀quZKdq4l+D+.oW)#.TtЊuޔN,PGx -0AnM*]`XSM#ϋx}fO #TvƎ9 yG괈E|nUbK q={GbKWwշ5wy?(WgM}' !X99Uq{6W숩#Ї/1T~>KR{++Ƌ,,,>5\dT** #]b|쎄,kN>>GL6SiנNA.Ssҡ˃tx&MCN߀eribY"; YpչDu/d?QǺaC7}2( DJ؂Sڨ;X )^RJZitUVAYcbCFQϑw0 Vm?J(DHǧoz"."3,fig̱T}I^˾T0\_Dh+ȭt4V`1UV` - #roۺ>i|x(Z"(A;~ a X g==c =-M\J s[a?hi XFo,Vh4`5"ð. XF 1 59c5bðG c5(F5a| [u"@yA$YG#ŦY#!3UDzFmn)6IzB[uz#CF Lu#Y#Fȴ~TaR1T"v$He_ Ak3} -b?F ῟O.3<u>n>sYEuKw>6TM#䦃~TOsRܭ-}'; Y6 +x]K ?`19tNid٢-zTu;Eȏ% q)>9Q_^j_׷i'뵰դ_,wLHRI+)/y [/'˘u¹8/߽]~;I-?˻ѓwX :B-{&o{u)?RO}[Yaa8$ΉM—tlRb˗_^_.\L˿5O|//B^0܊p%@pv2f] hff,Z?qWc-S  iN J+\Ǥ~]Y0-tHܮB7{46rxvZ^pAkQܐ -}e} ,JyBAO̬=ZR#Ҿ%sлt﫱zz^$t^w9k{4fiYNu׀]U?yA:'Cp :Чst$v#S:# +z_x\/o0 +%cJB1z;q GlvC@P 3IP M ^p{n45wx U"x5b24txBِ[4fR2Dp Dnm*󴏨k,QL)d"[a@"I.{LO~ ؆y k~%'zr +Ր~ v+G†V1`Jצ +M\v>Z'1+b]s--]lL]і~?YuPO8%_;ap,obd5HE=jۃ Qx|&cVFO /?='[[{ʒ-6>ػ;O}n{P@[T~ҷ_ٶZ>|@t~;vr +usFz=vn +]ql&u9 uΠ6TίNtq| [ҟUv+U: ~<=lO WP=%4q!zZj;W_޿.Ew}Ѳ=~ 휒gإA`=j]7BTѶftDWgt0-H&2z:<^Se 5ʎ ~KJK;۴0 Ow4axjۃ0LmղOѺBWaCFhᲇn͊LhSa2!٭YA#ӸKy\C©UvTFmgj=ګ QNB z2m 5D) I$])):KZtymXBkdXhtb^]89R;*U%0Ni}V@K$nHV4TJNN+ѵeht4'i-NC7Kys)Ԩe't:SE J=qpYn934/f` .OA4P1R[Z~Ab>g1k٢Cylm"伪l-Ds“TQ_e}ORwr-&U`!yTSpkLyuX\kӨ3Fmg,gcynBJEBѿޫdVßmɓ4j[)Y>kR9Œz$h#ob}R"WTScv1ELA`Y=,ͮHo1+j)޺RySM.gɼ2M^(16|к4|P%p|lKQr[7sBw2;yRvզĉ=4 ') A|}X( % djc"[-'Pe] 9f|Sֳʻ˙/;>Ob4gi2Pyyo@GZ:%D8J9h9[ +QGJKeL{s]j-.*M~#\%W+ʻo[ɚ@ū&ʾ_y}8=v+UcEvK\?YIgQEsDQCE.2t*.1l'*[I$R'M˾* Fg>~:;V»:zK~$34o5H`>D;+74ݴI*acRTʮt$Vg%e˪;?;Y}T7Gh,RYX@$$NODQAGߓ#o#'7?ɾpZP6^`*O??_Vv<6pILѣ8 FI~8wύG b`O ZTe6 tYWq]էuqyUVG!$sv .6t뤺~JUHajA"=;LO6 +6 Y6 endstream endobj -1903 0 obj +1996 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1902 0 R +/Contents 1995 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1904 0 obj +1997 0 obj << /Filter /FlateDecode -/Length 4333 +/Length 4337 >> stream x]I+ϯ?60!@bI r{|r;H)V/&=Wl*I#w㧗_ୠ7/>Zk4 AeJӇZh-/?/> RMWǗ ^'@G~_z @@ -27341,572 +28433,617 @@ p e]ſBD?KE \_06M!@\B JPJ(k= ` ;cϢ۫m(x:V?CEQ݊0ט>M i.O) ;pTZȖ^>XY9Ra MFi_Ydx'u+emG 惩3o`z*l8a4u޸Hā^=0DeT&6ҢCa$vU$)#䲱-B.] ]i8^oK_m𱶺\ޅUhj:(ښr17Ŋvzˤ\E4ΊD dׇg[ nJRj7c>B~ "4AAE-&nk7_x(D`5ë?6C/M.8> gJ2[ +W`SSdWZ[e! )54K 3~ǟs^#'qnǣxK8kZKn!&erZ|S(nL߾H +徬_ _Ooh@O;O.O Hv}H~ָ/9Itۼ~ne1ԝ4?MP}Q '=3 +=Xjŏ{OS]Lq|f$2\ endstream endobj -1905 0 obj +1998 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1904 0 R +/Contents 1997 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1906 0 obj +1999 0 obj << /Filter /FlateDecode /Length 1439 >> stream xn6z -@8,0| $9؍\?ԋvJ-ڞCZn/a z|'yt)e=5 8 /ݿaqIlw>%LL ~ݔ%I"9P~m9|n>ܡ?̓M{ .<5j04h~\n7p =Rq]<8ҷ^_ g>LZwMG)4?61:"4T #jmuc(As~ -6rv?,#^#%&v .y SOEr<͟WZkxyW{{sNxb)h6zO+;HcpwM_;5o*4K4`U?&I8=U!3-(C)f($'F(C ߺt&"b]WhRf]P|ѧ션,EߠX& b Y=,\@G H:ze)LT1 -#S:I䜒]u Q'DԪMpPwaz>hrO^4ž0-Y>2.J^kK[Vg6lVjbd{Xf^OiR/v۷ĘC5K\&v .Q̯"ٕM=)N6vx ]C0f%f]kehj$Q﯇$l.U! KHw50I]N6ĺQ_>3TVkDvDbфdqއ&FWh¦MXM̔o Whfo;M!Mh>׻Bm.)HLFYPR(}W# +@8,0| $9؍\?ԋvJ-ڞCZn/a z|'yt)e=5 8 aqIlw>%LL ~ݔ%I"9P~m9|n>ܡ?̓MO]xjD` +ilo ;@.z9Kxpo-tΎ}(S2h~lbtD6}-Fqڶr9QD7˙mXʉGF!J :>$>`) !% Է  +L!G A\@ۧǛ~c$yho?d53Rl ;=JWwPlʃn4vAkT>ih{~SM>;p{2.J^kK[Vg6lVjbd{Xf^OiR/v۷ĘC5K\&v .Q̯"ٕM=)N6vx ]C0f%f]kehj$Q﯇$l.U! KHw50I]N6ĺQ_>3TVkDvDbфdqއ&FWh¦MXM̔o Whfo;M!Mh>׻Bm.)HLFYPR(}W# cjDa.Q 4Sw{x} -F)59[$#VsNckHb~E$a_$>OsIU50Lok@V]wlߓ0KW'brc͍matA_@־k5lblb0z] Vb噩\'zH .>q-je C͍ -Eb6%s5QuxWxk[F]-O5)4פFlZkO _ѥzZWAϑјNkUV2aZ*ͫZ)Krh$Ofq div0+de!:,0osH9WA F~=%˳)݃Z..ܴq:&u*u]OH7ˤʇ#-]\ V1] 8Jy8'(8@K -WqV=յPɇPXnNX{wtt뫞])lCZĽF.vǿRm +Eb6%s?Xsk5:/.66{5\㍺R[>jSiI٬ڟ AK +#ۣ1֚<dŹôT +WR;$~ Ky_Iv&$ ZaV4BtzY`h kSr:,={8;KTg?RpCy +]\~iuLT꺞^O釡<82av~Hw(W,{vLW}煇C*BU:zRCvC c9aAiC#1#ﯯzv|bڲEk0r;QG endstream endobj -1907 0 obj +2000 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1906 0 R +/Contents 1999 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1908 0 obj +2001 0 obj << /Filter /FlateDecode -/Length 2954 +/Length 2964 >> stream -x]}~<"(-@[\Av'ydɖwbofmIH9kB$˧V4#F' EY -C0!eCM_^Oߟ{J)")k3FsӗF;1C {6 ɥ22.pyJs/fu|CP2aPfc984뎗ˈ/ގV&ij',zs&?~:}}>\'o'ɱXc}r+wꜗ;}a4F^6LRk8v:ǬAꝸʰUV^:cӓ GvY vY+p4*9_AOV1汗IhZ ќJs˗w -:o1^~-WGk$^Y .2 M͌6 !̮?7kqpv~ +O93?u}ݕӧ_~x(ķ9pHT;rn, +SEk* 8t=N3sXDe2oU^J  kBCkʚXa}\`^OG`bz?֘ -eA20k>v5LG cY˦j9La<<諦_ ZB_'P Gǁ= niMlu,y1 $-.3d76p'g^Rhy`̲:+UDX^?7.#4K RXe[d`)=Enh~\uDoK''{SצּX-|`9!\@x^a%m•[20+BhwAaJX03Uػ@.%{ƽ=JhQ$kK5٣ bZMO17 -wp -#O_ ݒrPƆma~&JDГhXF|У6ZMR08+c젎c-a$bᓏR0+E;(m`bv#n4U0[^ysdG -hpk1]Uʗ+NMiR5C5.|4F㛢մjM]+h}TLšmE]q: }'G -WȮB2zL"Uˉ`h3J2礪]EFGW]WP-UVx= V{U.ճֿkjuB-[Wz m}@]"+jڨftݦ8:LMػ-cげTgԗfa1=B{r~umخQ} -vT9+SBο|:\b -kz9"fIiylfq<fa .4&6A.;+No*T/ )ℐ g>|["V\ 6 -U9Ֆ+O9jS{]%DV&r!!v/:rC$D njx7l##:g&ZdPnOS}ЗiwS1I[er):/=kV -sxC5Mp (3L.OȽÄeYU|tLz'ᾘ}!Zwyo&ѭ-ܩ|9[\:ժ쒮ATr[\5xbk -p$[oˮVP}Fgܵ7#daTTzm.ՋgYHk?a#pA-A QJc{699ಙ>4z2)c~FK0K)G1 󘊩xwU2 `Sh2epOKMNAr$U@=GEwTףِz>ٷ#?(l GO. g<й4ȯqrro㩇{ )6 -XB?;52VγN4EWexm_{f'ÜлJI٠^ &n -VR]0v@/9;zp *̞훷~<|otDZ5UiEΟ>9&Y/_֕7,% jŶcĪcl* DϩgÛfG=)JT)j;1%٭;B0SiM@Qq52nb?z - +x]}!9  @mqiR}un+p:H,k,|}^ G2'ͯQ!DBw:|yyG>W~zR%)]OiMNX|aN/O_O ڋS7dS2؏O>M{r,b4kW2aPfc98t +eBWL|X+ft ,Fs&|/?}{2QA\ߞ&>o=qELg_9WYM޿kƨj ӄhGkg~>!y4ϻ3ߡ5r[nXZ~ny`ԀTDLz=N< -Zpx(toKā;ru/XAWp^E@F"$?EbA.qw:'љ9WDeϗ2֕9ކUQJ8j`А5eNWc]`HG`bz +χ5BzY?7fM;]9WN`&G pXr8 f:x]BP-9>_/6{`uO%9]g-XXR0\4ع ug*46p'g>#<0P +t[6y{! ?h5 +_n\Trt0K9Lħm4t=>\2w WfpSLbBB5>L  &"#X%[ d`Ryܻ ߣSdB~͘j3=RLk9O<1<N஬-wpgDfc= d| ~ojM (5LҗAϢauRBt*h5IE cu (`tn#at 0J\SZ +ʂqkiIu28bDcvv)8+[ IcU`4V|vjJLYll:iLwyuiw:۪R32Wy5]*9o@EDc͖dT}ddkL#UK`}Pˤ}sVѮqEFG=V}WP-UVx= V{U5u";uB6,Pzʷ7?EWD~5}T`e3nSUw_w^NJRX8c}0){R~]ueBeY<"T_q] )FΊ/L+VLa;Y2sy G$RMs`Τ4.jfq@.\2 fI0a? (y>;ץaHk{kGQEj_g)t[}9;f XX +K.ofҚzMۜhW[rF圏]$ \Jൣ31eTeN4e`.FI +; Z"V06/6X炊1Rֽݣ"Q!{& N>gYŋ~ؽi/Pϫ9d56"r|>ϫ#HL$m*nGc./b-gXkx%$h{ AigvyB&, [XsEdjy;/W᪰Ra̓L^18@C : +WOR^ubHVAfl:ٳegyqdBenHP(yDoZ'6 +5sS9F\ߗ 9?k+{2nL2d JWkbHy#yÃS}OUi;gkkmSp :Њ{!5w܍y2Y#O\μ)Qm.uŭ.ݖ3M6U +MI)9qe,r70n.˭{zH?Y1f fM+,Ű`8=xŻFf0Hl{^&؛zpBGdu,e +n&%[zþA*!/7hq1M<.ՒmCQsRG3GP *F9GB_*UdBTJ9v ۱\g0[:o׌+;7:o>y1oPEYKFIż>"\JҸ+v`m8Y6 [:2oקFMDŗFEȳܳ)*(Lإv;0LEafs-bp8@L4"]L`y U}@Rէi#L1g%5?;A0Qs|Nr 3Qi+/Ok endstream endobj -1909 0 obj +2002 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1908 0 R +/Contents 2001 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1910 0 obj +2003 0 obj << /Filter /FlateDecode -/Length 2672 +/Length 2701 >> stream -x]KWb,!@$9$< 6l?"EDNoږXOWUe8k `Aϧ'ig oOH3*x& -@ο|;S"*ҚQ.OAO9]PCmoS8fcXpu_(+@񰆬d.3O'h:zTڀ=?|/_~Ċ%"s`0y e9N#f1)iW~>+Z"\L7Dt{tPoĴ!s^N:2b SzaBd@?G3gy -=E| 5dw\C(̠ v2ʉQno, abБ*.eO(߮d9=i -HYxs&aX1YPfy6*!_MYZ!4\bv@(.@9 g8'/%2%ί'SBMrnN>ns,0@E9cF۹nE@7fRgn 2v~dx-*͛H\HT1oU}o -Xʚh}*o/jCYp]@n*97FK&܃*|*) AYRT3+,yjhev>.rm8D&Br/ABzyuޕ RV.9"Պ}ǔ٦"V;b.^]7̤5b9[48eOt'07I޵k /%CM%Ww"93몢[_rk!cʽkYn ѬuX ZSIHc>$Ujƶ ,0V c-p -2~cgCca:d&NGބB}UV}u*)"ۅFcNM>h!nwT}X+be]V> ɀ"Ԍu)&UX+׆SM>֚c`VPXå\NOK -YΛJVlO2Ƙt!jHE{ӾW!5^ZY^xq«j Bznj$yŅ+ R*-:)?ta -%30H]mp*!ϕ#_L^c4`fa:ySa*WTlt*9TAw2_qymuŪgWHX ͹K{bȏT9!caMc0q*n*(94`CvjtM!W5g<cGq;Bzؑ]kJغcGH&a\uݎ(5En;tx 1pv/#):K; (4&}[:Bt2Y:}L!5;b,w2Cr[)g.]6ҫdd?>XIvw޿ -4|tY2\LMpLAEcl7 mW?Q٩YNGT -U g J~hA*VA*wxA*",+Hr]GV*S̀3hÞU'#޻R. E={U~%`ֽTۀPz@( HF2-αkyOjuOĆ%>KRid !@vƯb͉g;l$_(2>?,CPbw>wc8}-G!UZBZլa96Eb5BkZYn=8(ZQHo-pёJƗ[V1z|/[9W@z`88hr[[+-6?5k7YRU6Z.f?(VQJXZ`ֺ]0R:n\#f羐{Fl7zA>,9f|/ϛٲ[&ebv-(_һStRbM$1F%r\ t }PJ \ȁ0ZOVYSW0߻ś pO +x]͎)X$s,0I :?@CgzO`6HQdID۝tm-~Y_U7B$oZ3?EgU6H6/"*g5v߇t=ET5:D\:?<ǟsxeBN% †KsU=NDD]wCi~+ۧ ZY=Tڀ=>|/_~Nbʘ<`{Ru|rwUCdfwA% r݈>rV@,I冟z/9c\1/ur6ULaٱBE" aQ(Ǐ%X#NZ"\L":=:|*[Q/XVE dAM1]xL՝J Ar8uYg``o' qlwP@]:u+0..!׊{`w'eg5$qd®dqFTK\zN0G 2[#1)Ɂ\!U:2b 'Nz'299;ϳ>z,!"DaM+/!V.r{eae +9":;1XV @ ΋=i +HYxs&aX1YPfy6* _MYV!7'D.哭CiXG_$"uS-k)N]͞S zX;VNO y7]k?u,D}?ה{u?m. +Tyv 8- z!F0 F4P*s~ %eL:+tgDϖcg6ƠHSŷ5TO) +ߚ! I:. 7h\J#%FAJav!Bh|*)$Z-Kpf$UZ6xb +af1v63l h\ز)r'sAm哣>ٌiYNGT +լ g J~ӂTqTHTVJZ +e-$RQZ=q1>`*l(-%>*x@Ü{iӑ7P_VleJjϫeZzbJb8'4!w#,fkrb}WϏ(-JdTp;D|_蝲{L`KSrV3kMwp +Ylke9N!:Bz>i7ݚ[UW +"[nRF]Iiނӗ澀o?8gLOCnJR{_v᏿Ǘc*rCg~?Bp}t|$"wpҷĠӷT7Z?9ݢ~̴f2)ݞ=>}Ɛ%1 g̿|-9;H^3ѧ}~n g endstream endobj -1911 0 obj +2004 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1910 0 R +/Contents 2003 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1912 0 obj +2005 0 obj << /Filter /FlateDecode -/Length 3874 +/Length 3817 >> stream -x]Y~_ 20 1$6 3?9H,O$gd=MŪ%/~~'`B\^~I -G䯿_|ʻK4 Ax2 R -Ck<)]>J VFl!/ןz74󫳃FyKxPqm}n.?H9}PRzgiZ单i9!$ b0":!J˧^Sʈ˧~M+{~˧i T "Hk%TM~iI.+S:}N3~O)Gz>{O>>41>Siuz}+c/ oVJ O*]/m #A62B`'}?Kcљ t˂6ɢ!.8("FhNV̝H,1-W3^ &F&(n`5z9;;G rJO%">2ɺQ8EFuB -V *2eOe d*;48x>|Lur9}^3رs~ķhf|SZ Q -gN|NBffva;3.ߚ^ -(h2gdPܐjkߡ\ј;i#0Eg{PN'$륅Sƺ̱WFL%%E6E*^{Io9w( 2谷szwm礅^Ht$ۙ ȯn^cG1nGCVKC@xwGY|@dGK̈6IOKGSFc,`$ 1ktzڽUvW7ϱRK&W~5ځX4DZ/Ѳׄ5#u9fS `21s&&Xmڹc`$e͒Ej؂fK7[%/8kBO,ŞY8orb\1w7UQJZnOکb9VT=sbi)F9ySiӒ[3P6%iB.j>Bm`mq5 ]X_Ť Oғ.I]8^MެYtr.2EVqCCߡےGʪtH͒cpw|7T5doc2Nv8-Kr>KDH)FtHMZV DaV鷩UvxJL} wNJ.* -+')dS}JUș&$K~TΰK4NV*~GqMzPZHu(6xS~+EF**\ hQXtq'W3Gy -*;e C -k;mCb^Vb tS]Kڌ+WdЩ#K J -Ƣk[ʸEMF}Ij;RJŔ{[ RG%,_/%*!U.Z >;JcXVnU vV1K k[׹:o`[R=!o3kWF->)UjNC vYt'޳[ P@Cmכos+p>冀!fm@WsT0Uny/ toA[uWxB`)<!j9 ^7L[`mvN[޺Z g0XZȒ)\ @nVEo^,1xnj96 ;N+6P5iS -o6JKV*=vCA3 -1;}}sv6|+RdU=Zp@JẦrQJ -0U۶b1˳Lŧ]%QLl Vjd 1zs;P} 9e+e" -,HBe.0(va,8 -ZO1nw]Ϻ+1*o7o)΁m| ?-SI~".~qm9Y -ۄҲxk*-Zb˜rV9UƇB%m:b"F‘W\;䯧4ӓZ^YUEih=Z1(郘irϠ) 3g,TDG∓{d: HjBP0!)2%fM[s3Rь0P76o(7#\1Su  -VME ~g3Ռ\aFVSduX?^U!nx[~G!% bf>xԃßM!͇$l: +f4P磶#trt>yڙVq3=:cx]nt?yO6csB?_:$$sǑ9mzZ`u??|wI2[7)Ϗ;}%@O -%;t(ߗ0֎L1R92nsJ!~AZJ7=Nj'B&.Sc~DV1Mrnz~BaxYe (`r +x]I?spIb ȡ=@)|r;4jJŷTgI?S_JĘϯ?=$Ep+f/'DHN1B) ip?dD2©WˏO_(!@M?;a(N|>R$O/[.R;ZVT.F=[$( iezo~C൶?&ɚzmF+dTΩ: :Sפpu|6Xh/tkBiP-I]I'_Zֵ^NEop,)I ̳̿KOϟ>7z_PBlS ,qș=2ݎV|m5*_Ԍ/S?ʓ}$${Q6a-;dHLs ݳdF?}5 bx*=m[&bVK۰ Q;0=zaNDf8~.2]v0F`r4Ga^PKCٺ*" `S( +M)E]'3ܗFzGN;?G;{Ga,ebXPb%-bTSƂK ލ.w.D}VNHkHe߷|ut9}^Q;خsF=iO;Zk6gNϤsW~ҹLј;$3Ehq'ZՖ|:/\2%5KCN)JN޹s:]n&ĠVv^}oR(S‘H+r$ 9X>dM+Eis;b +ʐEmsR +»yݴR*RzP+V.oR'-JBO[Gi`dR*oA<mp"ڠ{J wwsSY~%r%4R,9Yw[Q,{!s>{`M]@GmFa*YDW>ُEה_IG1I]IGI?g; N:JJX r!bvo9Cs(7epƮQ BW07q$fn)C i1I& `ۦ0\\Uz6:׸7m m9ۆmCsǶ(ܔv-ל&("Ft{+Jw]vk|b`Ii"QFr r 4H*PQ(WxE6Ox&&%sy ٰq`(20ZP78v\̍ex@Nܤȕ͗ܳA;n;mh5ᝑO<qmg8+rZ3dbpM~dXmH410iTei̒6.4U: -d%nuY375z{y\wjLs;5swu2lrN'|6'1pQ=6R< ͦN"O-c13"n|n2梆-k@FTVg9U_g_i]p{egڹ{1e\]7wvM4vv"Š9wS䛡ҰCą8 t]:Ɩn:5r&xeRP6S8CO~ +G%z@^Ee{•qË)BFbTmvk!@ ZS'*aRx3/ƽ\ E!܇ugYAz ꁱ[o \zVBߔذ%4]fKRFi#cOgn> R:ӆIbf.>=0xzN|fvA@x={Af]#ssp xv `?D[T2LJ{0@7΋0~ mDC)|^Ћܮs#do+9tٺ Yj@)P䯖"M6%sKr@ce_Q:N닋{Fl2pV#$R1pa͊8sp8 <3u Xg<7`o495q JkQM3]N9깶hjӄ|QVeQDՏDY5XlXTwL7=imdغru/}u1Vds_j4Plį-bea^cP^s`.^êT:AS s@xxRD$-! (?DKH"<{|r ,pNE6]כUUz-4Nllq"?JwQZ.x m6)GjTccst$.QgPl +yFw$Cd(mzze$)Y Ѯ[ mð[0hoq+|2sQئDaiQ5cl( 47 +&k+N9>DYo6zpvRPZn+-[_}`rf[\d;$O9=W&[YtGkDdiW5mE^QQ,::_pajWf je9W`5k,?YohGC45Yи,v۠lE=²D k5D@kt58O 'x|XÀ mKg 1Cצ<,| B8i7c endstream endobj -1913 0 obj +2006 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1912 0 R +/Contents 2005 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1914 0 obj +2007 0 obj << /Filter /FlateDecode -/Length 4550 +/Length 3642 >> stream -x]Ɏ$W8} d cl 0|I$? +3TK3<ڲHF16F0峠I/93ϯ<$oW,ǯO>Zs4 AeJӇZh-ooOxSzBTj2`97 g7z[ם!T}n/H]ܚUj4uA FDGI`/O|_Sʈi&0hzMz%=MK}zmí{9~>{MO@RRzgK^hqP v!QV<$1u}ރb(0ZjB39ʙ!HL}A- cnJ-䪉<#|T~T0$rZB%\DiPd28}g-&Z[cxQOwhU)\ Z4:M_۵wyvJ'7OA6xnbi lRpP;饤$E -kSpܶѡ$}A6m/`nfĤg\@='kp`ۦM0 Z 1hۍZūAt8J^İ'BY$PطbK|jh)$.?jqI 8dOTPbȊD(njiF`.!E3#ِ ِԄ8PKGep+C.^8nׄ,&G1FM59aZp#c w/7H C?x%E ZrWmws`UA`ܠA=ܠK 5n%enPw2727 P]Pq.A(s#A Ai)vSP[Jmc"iytlј2<ݟJt`dL˟ԆT1\vlfėdYbi#ZL7f)VMR -W76x;8dKŝTэT "=Ʃ[tH%%'O)9s!*gum\a0}RmEC68mˆqΝ0рQ$)cQq \OQYd Ҝ$e-@N^B: :E>/8G hɞG .ZZ[4*:Rϙ`TqvAEݢ1kOX'T7#jbT4JԸoѨ5l]%uw/MvZ5%=N)[VUZk6U9wJ YgNc{K%Bh\1ig"&DsK2WݒyR^ ^SMr+2NXVdY ݕpz\aJV|IzuKۍ(˨katS+KmZ}/ckd29˵vWނ_X5(oKxN+Bh{՘ጓZ~\Z96KeD?0K &^\uJ(6FqǍϼOmMn6sycx'no n{u w;P0B,ʁK3[5QqSVl?]wQ`D)09;@u-}]vٶ(̳z'"%IHz!P@{cM)ay`7eeTX,{,c<'FGצ S!8Yidp<%O`71[as6wN$ٽ$D5֓ ~ !Ζ]攀):ҖpѬ"ɧA!%!N8En^w}$dM&T/lA+VTǂ6hA~*!IpRղĘSœkh)NTZ-9ƎW”?8A%|j2X1/p(sQ\òRps*JQN8 Lou[_%a|wzXA%B44]"4YA\B.l7L Mv5,+gОʲrNmӁcr$SJMeBSBMV;֟R'vdc-MV'v`a3%vkXVJNeY;d,w_>"EBi˞v$0>; -WH[zD6GEw|dyoB]_z||ia>~>ȧn¢z 1ջd^Xx%| u,aCJN ]!yx8-U"} pdug]2;e,we]Xg'M]&x;=,w<㑾|-Mbqߙ,cF ]2;e,w}|?W;-,nĂ]ϪIƱHK}{Ct%2N]#Xe8~wSXh_KK*ϴ]Rpc+Rx T)?96pmؔLUa/3LXe⤇ǥv)&HM=e1m.y*n[vYڥѭDZ2b*̟p>Nnnm+S`1tqTj+!b -]˶.`aRUtb)<ߓ㍲Vƃ۫ZY6NK^}`ZJa=8Ɲr^`C.ۜBnT5--Y-]6j[b( AM^0;,Xr5;S,Zw.K,0WXX:@m|t:ѠlLe}%l R<4l&6& fWmYd63svME -Dfm>Tl2l܍f33C /b́fm7߇KiA+O%egKfsFf6o{g ȉ^9S$qH"m.5z_$mUt$MH2tz/ظzQJ2$n:' -ء9ilb66'W0mJt53W{-rR"wlsV%Rvx[@?ay(Mf!ˍEKw"y17hqkcp>̔U[ 2Sw8{tPN@Ĭk)]Vp"׸y[TiisŊr7Er聢^4)Sԛ5FW?E]G7E RMQLQwSԕzGu%`LQoQ/)JʹR^T6jmƆMQzMַ-PLc4*b!bpli[ {R]d%`Z06MRӉҕt3t+ŊUl(VD1x4nǶZ$ )@9NAf;GYyI MYVh2 ͛*љ0D\=$:ɹ"-|d掳dl?پicdZ -658%5碅#LRHə -сv<_f31ot]SsFRM,Ds%{2@l% ts6G">grw턬~?x?}!ǘ_uN bYo4+H>yK NGݼxQj<oi3?ͨΕ[)qc]*3n1ߗjdžkG1Z>$ҸŘSNKsQR$O=RCZ u*H^Ojg 4 ??}_OEZ[_ߒdM?36Hck &kX(Rkc9lNqpw8PFqU0e{IZ3_{+qZؔH!aֽ=%'#AÒX7aj|{]_h>@Sej\,쒗JFXZ^hMB/S6%/}}!{AH{X +gTSl8yբ-U;Z4U Tf^{ȾKqņ } kb49ϱ{C8Dv*UC6$?N@ &0/|6GP +;2*,('`; +>ϷR7 o>5)c'XEc_ȖQ 0,"7%aɰdՏMbZTh4-.[]([_¦:mi,L E,}8Iz'o0뭂$t5-(D>`4yh:y4ts{yv(+@njdYA}ڨ밌Bfp*-Z M^~RE" er_= {e<#kCn +X{YKz)\tTP%-h6[DZ#5-lbB{ I#5<)xuBZ#l^jA:ϖ=bE'M3 +^M"ILȾ͖Ўj=RrVR]myme4Y*:K-qgߔ 1 Ռ٦Yl{NXOÔoH=˒J%.2osgaHT#3sN׺ +`23enY9eMzABȩlLV4% A0c7e <-نʋVAuS&Q&DO}'b$7det-ܽ,G g O1x./TbXE$Ye` kkI}4\g۞\{P N8;Vm$fU{ ;ҲWBsYG%˺lQͅS>VRDsY2~2~VsBsY}eTsᘇE.\Oh ZP5`\:u[zRw\SYh:o,&:/L$a}liш\ _F - ^Aʛ(*ҩ%O@tK@x)pnY')pnAZҩ+4Sh.KP=N],ꮹ,DsY:uVsY:utegҩK4S5Sh.K‚[!Zr/;w@ygJVӂҥ$uX^oRT%pgc +zVt{^#nkj921rf˗șu9t t|(]M'V`lډg跪ScZ:V/>H &VvfF5a 6`1 +o[xcG \PmT#6凡Cn]: v~*-{ru_W+uu=f58u p~s7`Եne0xCĺWf[X{mAxv Yƥ#֎?ߤ.w4v d:l"(*z2 %ϥ!eHkW0z,x+?EbMe )lL +}䟔 +e+> +&tgNxRzV ҤQcEXwڇbβ-Ř3lْg5o{ulNۣ̍Q +c>Cx.g-k;FiFQ1iDLfwH K^o0WN \טgM;.V ܽi5S9Z8д k0,5w)`ȁouqj{9*T)4iSmZP?]ڥr;kyYvM6Ȧm6g _A3^׉}Ɉjl=3Nb(Lv&iT K2́ۋ7!JN]G9.aUi:MQSw0cb?O.?M6K{AxIW^}w +<6&E +~,p{u%'ۀڼ} =Q)[g!(Ύ;VN"AD +nkg;½RL얉[ )?Y\Z|"a'7`8} +AcyVbk<N64QAx ?[Tmmd8;fo&S &zbKKЏj-I OOBM!7bZ^J +("iJƳUNoUrקzMA)@R'Vu0B4S endstream endobj -1915 0 obj +2008 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1914 0 R +/Contents 2007 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1916 0 obj +2009 0 obj << /Filter /FlateDecode -/Length 3866 +/Length 4736 >> stream -x]I, ϯ?Y>H 89 z*>]%.H&;EVS/R'_bG{zbo -TJImCcp?^Ɉ eᦔ©W[~WNPc{zN% ->8k2 6 cuJ&. Jr%Bi"ɗ>Ed>D4Nv'Y.M3V+M(M'J% 3Fe #t0ph:p_dA5AufHU)-2X8fWp^M%3|rVEgj7ُ9A/,N99VI[4B1F@d,uK3%H;E|>O ą-.iMi%iJ=dZv -iQíE#WH?`IВ122EYŴ@\#@jE< e&d0g^)8Q٠I5nG6R@o6 vR!shiDYhcCqCѕtq4OYiϠlXZ@l{) -۷֚SQ"ۊ^8\hчg~fX}dHtXb&ĠZ pl)UZAcN~Xvw㸖>.iOgoCܴApӆwg g៿ >:lJf8F.ĺh}Gyإc&B"Ch)i&WO 潱}$V -t-cp~~wA$bԊLʫHտ4[;n슍~]^U—tӪ˨"8>Zhv1uco @@&8|&}gCM|nLD7 urf C.̆8ݾLC+3gG0㔿]3V)r_; .Z$_l@]Xv1Km{%cNPQ'gg6 b(L-9Up|C%'/qW'd;AB˽fj U>i9%S ݱ3/s8lc[0 ҠA }N3d80cN~T]  |V\[GM=s,Yu$:Kfj -9}dq-QHR \i(ha Za ŗ(3YhD^H(IcVӯhg0!y(RrQ0It*]EWkCQ6d>]!\rz>h&r|+,_b)HIroAS)'`c;I6 :́e2:!8Bo.3]t O,)RS4Yd"-qV /(fg=б{;gpDKR25;'Zб_Am?,:kډ-A!|`>DA%+Wr&ѹhĻQ-1m]ĘVTyXiazIq]{R~YQ LE~Y=ʧ|ƈU)jH<ċDɿU}P^w(&_gKrOl@W=yxū/(_=^b2f S<}xʁG r#Q0!ʕnuQ1W#vẅ)n%hӃs1N¹RMXo tF <\dge=&eSήV{`!ByVe@ͳVlhѥ;Z4II$l+FBjY> c_H>[dgA.ֽ.yTrl遡z^|۱tfOq׀zS?_U;<ϫmc5 IxY*gý9N*'MqeP,%MPmsvYviiYcb=.-g?Q{[ ꅶjdg0g&Z~rp}m}yrA+۵LW.(]|ϔL/G/ ']cSQEgӁtkx>JLXRd)]_m%8uuF'(i{q>d#`xb".X~_>m{f3҈Sũr>;͊bgLmQ9ᆩ4?]]5]3Z?6w(qϘϧV[L 71 -ŽHugxh@fWDbҪgY<{/Wt^UV~FIۀp4CtQhRn2g>(L|Wٮ3Xȯ%9:aPXˠN 6g)d):@2d,mT A2;_GbF@8Z;3nJk0Q#]_8nWS(;@A^ -۫,&#RY6[9!+-<5yrWjhj7_P(uoxnO810SCqvRU\v^ -pS~Κ[8^ArFv|lMxgŸ́_ò2?0X|0`k*~ӆ@xfl5[:%:VAv -_] !u|_fI\2cuIMzX qO~37h]-__]K&߇y}{xݠ u_̅1n.:#c,0 `@-mmvtYZtV™>d󲆯6eK(Q1>˲P&K̔ga+t0M(ؙ*ރkX[KEaJ[ -2~?QRO;a=ԫ#́Ҩep!/AIh[GpL6#qX'r4 -`kjϲ5)a=M#_@p1|0 i+d5D=H:M vpoj ? Z*d5+ zRk3ӽo7K33=_N7 3MY\= [K 2ӟnNw4S ̸vk㛯/(G2H2EIb2Y?9i9VFY*Sa$d\*ST KlhɷUz`y~P #z,5єRf(0 +x]Ko$W7ـCĀlAv@acf>>¬QY/VXE,w F!ޙ_~}'?H_hwϣL2^AJ4`?O~>g)] ~9N]z BGC-y*JJ, 2C ZOOrfg9C0BI闧o/R )e~K%釧?|/H-QRH|"Hz58(HMBVXK%iDpyGڊ$K}/I%">mAIkzu=،#eiHdR¸69/ֈ? Ƀ$/-huM\$"=鋓p!vB +|-B®)POXVQJR4nB*rq{>BfY +{_8hmFQ@|K4Baw,r_&m$#ͨS^:u$#)4bEk9 \VU`aΐ4ڋ 91؂0`H 6IL@.qЦ4 )6C3%- )1,Od̺t @0l @\iRbmģHad͜!M.e4شI r0j\+Mr8 vmJӒbFČ;6Iy `{UQH*wؤ-UJӒ F8$#mF˧d3PE2fJ=@H t)k +38R=\Fc +hdd>t a 9Pr -{یPp+]Y_7.ޗOq{3E?ypӼKImi R RM3!k̞d/%/{Fdb|lNY2=?dŗqxˢe5wBã~D=>N~Q56Vאcύ4lFX>4>,zO,Ho52}F|X;Wd;r2ޟTTb˴v&K1}gs'rYbV(tI3 +W*\$q)g/h; 꾂Ţ7t;:tJAc CЦiIތ>]K[nL6w")X߹":vsrբSh_hJE҉8J&cB5+ +h'J&ĂG%쮖)S.76=|^oEG-@8ڂ mG{;@lri'"Jp69 fn[ $}S8ʜ%ʲO63\.a-b 8v#_Ǣe;ҩj:V[v1Zmns>Χ_rs]{A)lhswJ>bo3T˧.56s6`gZ;\\h- e.uCA)kbmr#̸oG2 ^m~#3td}ܱޔN.aCK(&M>GP?aWPBvVr)kPv)q5#f@c Pǜց)GwĘLc-Dׇчr5;[IZo,w 5r7CR莡^ Mhuë#7?Pt3ԠfAJz#9u )`PoQeOJ̹b^eAHzj#)z6 5J;z1cC};H3[jSPFC8vS{ \E]d|Z0V8Oc!xE=-pri 6Ԙ2XcM2(e>wjk)(;tdUA-tt Vhr MKkkLƺ +:_IgEZ#i" }$!k +T$ RJ"21I@yƦcr9IM u!5f3c/%Bv)ɺH>&bsQj8b|s9`ljphGkŲ-;VMcNO%Z0_ؘ ,R#*?8w՞%0"߻y!g.gdxG֏Gܗ][ScҶ#l}3>۸| zm1T UۦmBVOyߵScfVZ)ʶ%jJ",sqJÚ>ݧH);X+c]*ꠂBw@;!z=®'zr'ø0o4j.ci==s{99W_"Kˍձ6p&o$O\qS{ +.bF9unz@|uZ6o}ռݍ o㺧[c!S$(lqޱR}SP%k= p48EƫQ} +/8G @* jkȠ]6}@8fQhfOIM.A㴩͢u!Af^q @hH*@FBѵM+睕֐S \$jJE#a YydIMBB,SOΜYE<~ș!ސV˽SsV+gKN=vetz9r&mTH78kF$0g4QjJn{o!۩99xE86җsCƣ?m6Qݯ4ؼZIY.&)tl]\Vۀ1e,ٿyUDz b-6o `CeXs9=/i4;5us à +Mt*\<{|K&O"3ӗvj=0M5̞SHj˦jbv!$uaQMu5$%n\]_߃lWv݅B<+uSKMlqanRcV1C1Lڜi!\iSqNs^(<%A[5_ba\m"A\\cTY]J!9vetp>{r +IP6y+p9\JO6VzekZ>(6h2l~p 4!HRrAd2 +I;J-.ļ̵!(ǔp>x쥚exLWt +R'oy{5y ZԖAjX'##V!oG*8 8^(W\HÇg\GY:vuɿV1m٫Rk|` +TAuJN.;/H}<}gt5> ݮ/bLbcU,8_]AYctmC9-tzo.c*d著t/V3xxjʁ`w($Xg4k)o͖ ^f$hӪ]Au Lhd'ם/(:RH=a9o۝/Eyp6 |\}t6#/s=eD2gS} >VW.֨b+`}puhݣ:&2めܫ)LQɕe9عYU`F̌X%`~_ZrA)%qj@몁r<9܂ǮkY| +y\)끝=Ymo' +Iɜ|X5D̎] KD–S$$;~#!p󣐼j@VΩA),{9VeG;WӴ<b }ʓ;< ǝmcg8Au/| ;E4a[HQ,uc B[VvYx;imYKbN-g(Zܽ-ZBid栗.mvp}k}yr<hz0zuшx=ƏM0ߏ>߉B8ʧ{Mh;n M,۟ǟ~xåw4ɺ/WOwWhX;?<AbC9PI@ȗ{S橥K54' K0\w^bWKZhߊk7.@L_ endstream endobj -1917 0 obj +2010 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1916 0 R +/Contents 2009 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1918 0 obj +2011 0 obj << /Filter /FlateDecode -/Length 4518 +/Length 4214 >> stream -x]Ɏ$ W8]!`0c`5]>0Kf=-cBvfeE"E=R$Я~~aS Ǘ^_?^?8M n^w֪/yK?&;D_6f:+k?^~Y~y'B3g}}~._7Pq^!޽?\RN}0ZYy8hvӋ^sTS) 0:e{/w 1}C#kK^/2+ E>vCG3mF~vۆ#۵b0EKe5=ig=wnQ+Y|}wvh׿O5fi;۷s{}}~m't׿mߗ; Sz0.*jmF8֭QǺh:ڰvY7Q{aQ"yCᢟ&@wE; xK⮂HGEoTFBh֗ %{RQ|쿀|ɋ%6֎ :dɼp;:MqzqxSfttnӡ|:'|uQVèu1[iX7S0$?3e-d~wo3]c^ Sԗs/'hTM4{ Eǃّ$Hn[ihAm -\#.ecwMLvx0ħK9Wߍ\rFMKDM8 4iY1$i SVCPZ%eibѝRРZf M15{ rqPQ;w 8:L#hSN/1<:Zֺ/{|?iB2()DgIq\9ksSvO.&7\4fb8XR4K=#x{u2!P4mԠCq51I!,`״XV!9*!zDT$wj#L86ɒ0THcJyZrwGr /G87!qIDMaq'ޥ|;vhE-x8D†#ZhMk34Ǣd a+I4Ƣ晽sEvÓ5#1>cE#R}8x -W49d ` U8 -hmvP5k8Q(þ y` TH ^qx !Uj+ۤZʢrjװ+[-'veϜ? ^>*x C9ɥq/SfpjG_@g 93tk6(YQ> ^5D{(\'Xa@Q5¤Ã/h{y :twчVn68e|<-#p<&l-CLpJqrDeE)h"2-B,YTzYkU2S XRȚϓ91 ^kl1\KxuĪ^}srAOw**xh4Tb\&3dζlRzu'yj+]- -08iY p?׆) b-qV9Rc ^l^ K6`:C]t 7`-[J m yԠr(OmMJl$1@A =WsՅmh

    K<ߣ$jٳ[ޘwoU+.ft"l6VD󍹄:W !߀ ]zto oj̉Yv}bOAA5ikl K6WF +N^qGU=@j4N=LC9u~gwTEBT8'}9Q9Ғء} w +dh:%*EP +V݊h*e(qcKqZBLut0il 8E֩/&}ώ>طxbS[ʭfh9hgQEh-f7t}4Q TpCg` cWvߓG=+ g#mޙ\m!q$0sb~)Wvnf?}z76?='-eEŤgM)WDsgf k +؈_ +@lpXDVn]VLnܶ-m +*3WWXYZ/Fzvrd 4=J*ɷw%dt2eocutTV_Vugp8GϳN'Lgt22:HGm shê\2ɬjC=z7bhH847%fܩs*؂վ{IrUtCd.vuJn%DJˍMxqZ+f;o.;T]Ú]) +Ƃҝ7fгD}U7 rDr&jnbʔ#B.!̈Ɯڈ_tO}LZ [ZO, ^n[ ٓS͆lG׈O2G ~=}Xoţc&qsx!O1Z ~A^nZ?5+j8D_:XcIzu͊O^jӫSdPeZHkJX<)4;sO:yO[,Ȕ[㍓Bk;ĭ7nU-=5v%{2nի9ΑZC8alϨr RE$+8?V}9;TOy!%Q$ +y63OcbO\H~d!4K(o-Ϥ&/ Uix%V1DƌK3Z§,Eoņ \x%1@5J~I!V1{I} {.;]~_ +jѢ}]c2d DbpvmӋ#}k~*5]dkm:ay:Ɠsv2[*Ckz+\[bY7g]y"nē+0!ɘ`T7"D![gLKk_~uϋV18)skal,N;] UMZ`x sI/yޱ6B6:0=ی:J%z/%h|ʥ Dܰs]/*4=vi6) u2p [fσj7^ڿ":]}oXC+&MAt;F~o]|lUʈ\@:XYo ~q`cVNx/lbtDGKyl Z #dc,AWUIYs>`KGN:-"m!\1A'5.:T?!cg^\pV(-Gp%B9%e?%o['~MHםqTwwʗVV UzЫ`n=! +ڧqj\qN(`Ɍ,+ ѵ_hVPKKIrM@ֳ@yIs:ّA٭2:|敛^j^..di?Ě3w{9U˂/7}w oYNx]I q͞eF{h` a.êY: UdvjQ8TT~ Rv9Tկ +kjKĚTu㙢lf86pͳx)!b! tH/Xc`|(!0 &s4!Q8x*^Mq +J{bՓ'`o[.1Fx>=oq&^9O6sGP;EvT;8|# p톍;@ c#p̃]-6 +endstream +endobj +2331 0 obj +<< +/Length1 8604 +/Filter /FlateDecode +/Length 6121 +>> +stream +xY @SG־3&b)>j!FH) +b OD%>(y#(REe)Ⱥߥ>"@-RJXJ]ZDd$m 'Ν3g9s^s aF0 {zMaD!E =N97A{NSoB +v@dbx22|0l3S0"hG'Eν0yĬ z:w@.1x. ,=1&qæ90:A)!)2|L'oJf376k׼raA>ڐa y)3Ps#g=g z iaxEh Mm'qd<ݳB|l -?Ke R8 [|z |nJ +xSusgN@ZtafLڝy(K@u@:rz TRã^Q\t}r>T@M@S{_tY 4 Zos  -сr@|.-c{t>h Qc80r_6t5.ԃ1`+qcc%VÙpnɹ2P0[ ( +"\a0A]X)) Ƞm 5c`cpagyd4hFFÌ9 [<,zXa7:|pᛇzx"h7n3aLX=Y~f>&5eŬR&ÖMM6:( 0嬂n(d*?l؆( @! bRVj)Il.DQ{Dxb>$$=9ۊƬg7[e"!̴͙i~{w[):QRqR$~Ǯ飏6mmeO Ֆ~@{afJc. ^R39H+A-wꝨ~qHyd7.ѫDjC"4FvDrI5r9.ߛ|_$A\e +ma>r@Ho- qiNN^"ITY*aՁ(Kc+Vȉ(k'6>;D Q<tV3ȝ\ hf ;緔&)K8T+f;e'D^XЮ E-_=3yڅݦ_<0yF fĕ R`ǦѸ.sn>53ZAafɽcmíN,ڿ?Ƀ9Ο>\q,9C6[XB;V%0#r0V`">|Cc ;9jhYy"k8x! +q`!d2tfolECC$B랜(9X'Y2;SK^OܠH/$G[ɫ;h1V|gس1_kGWRh3+[L:4R_Rxtd7υq|InuU:Nu15M͵sLɁƆ&L9O-FNd7Ʉ#$vJPԬi4Th~~q7 k4(bƕϮ]?~SL/kHh|1e/\]6*KE{QU̥w i%46k* ,4IyMؾIsX瀯ihi4B!j`5䦮Cn,?Cಀ?q=gW] c +בlEe{Xڌ8ѡkDV +AۀGg9CƔQ1x栺?>Qq`\ +nWe)Մ[rA.@U@vEdSq qh9[JׂhCA Q̚gO—81eC mRFw_JA*cb؁m>-+--m}PCՍ>GcdB LIeSK|7r47AGw(/ >ddaIӼ;'N4!y#4& ) ąc ^P|yQ( vRX%g_9O_b2KU~k7ݮMԄ*zfGν%*}sx族fF.hc%t>b1r6*qOWKu)7bJE 7ϣ*A卙rEƈG;uɓo-KOfjVX '.Ln"}mz`۱7HF̤ 슛Gڤ$i9_Xpvg3s֬cB^u̽KsfΘ1sv='ik[ՑǠZsݢ8-ާ`*57pgc`'T}FugTzDZny6Xٚ-,5c ZPm" |rw`հ @5X e\p6g|  +ͨS((|.݉eTEXL a +$S -_BkH]5|'Zo?I"?ZH +sG{ZkW eTf7DS*ߜ8:{vhkqsv6X.yMrk&JsoMsH/ZL} :~BA|$Tlɶ۷o٦隴?AwQNߴiviy '_ª@-O3~ׁDM [-+[Rg玅# Loҥy3~|wlr` +7MUi&lRX*o~ظܖm ^=.X +̈́b"ÿi;N~ [tH-kh Tw]8x11.vdJh[1$2!+7Z?kۧ"aYtj6⬟Si2pdzfݰv ykz; ٱk׎] +_>e;ۿisrhMF2U$[ 2y? ,ogR?AcT)z 6UbK*\o(b36z qzC㓛N.]ٳ؁Jl_B fZQ8i6~P+.{%N i} 1cDؑ6ЧFI!Z}8aҊ[CxX5DM WVR r@ȅq>Byy%{b!麊uI߉kNxFW(Mq90n8}g^\(IB6(1϶!%I# yQKd^Gxǀ]fx3RT DHEN\,C>hQI@^+ w tM}feNlsP"ߕ(X[ 5lĝMyޏO<=5S`{:c삸zKڤPd%O; W|y`q;_0X%}1oooףN:B,(JZP1Uu|ܹկf ^7f灗OKnc-POAwf }}տLj x]ND;`Laa3fxziO6}S޾>bNxx{h + + nhK;\B91ccF]?Y^ʸ3>+|]pPɀ &rό#Z{ :^wy 0{!D-,`d&Y2L e"!0S)]p0gYÄCnO0k1 aJ[k|rx]H`R#xAJ4Im@ZN |60> ~/g/J@󁒘x$^T@!e\~#&^x`pl&W4{.g><`;>w +endstream +endobj +2332 0 obj +<< /Length1 3520 /Filter /FlateDecode /Length 2183 >> stream -x TUooEd3f%a`]Eg1$~R3efƁL'Ȩ@JS3jJS֚)ZzdsVFeu7{7{:{s{{~0VYsi F7*|/|Cj/(YwdG8:[Ϩ h,uC ϥZrCU2)@xVq%i R$^l@= .xg;\gkrCOsVHda/ZBүm޿%#~-$^Μ^~jFMvhc68 51@_C4<< 8((A"l5Reih$$*gT kcX v5coYc Q -ֻq\TO?:l P[K>f(XCo4XR~›D셌;勝>Ϊ=C QM&@ ]K;%~(JyPO"_g sWbME>g'trT8Щ"jU, 't&Jeٰ~_ pb.z \PlG]\1DQAGSL##)GҘ5&Q`X]>0,G'k+YY]~ɞ_ڵ}kzH^ӊ=)$AmΑN2ƞe._-+SN 돌î/.t`%nɝ^>Gv#8ֹ.~Rc&sf.J0b-Fas?jѣõJK8gปdWfX{Σtd0 CQgtXϪH[Xx6keZI1Y b$ZE5&%[fKY 3Zz-ԉ#vc-j݌q0Le v T06(4VϥR6Kj,Y6Q{Qbz, -=}}z-El=9޾|7Gzzt. zKh7>b'_wso.y׬u|z3 1ZLD^W?cZX?켗tgz5%ߓF~5fЅNr/1`da}cyK9lol+]ٷ sb -?šbWA#Tay3fz4ӧO76exJ"X{Ιi7Y -F/e"/iQ~k .o FaW zE9kj'^n~! 0W9Qa4p6AͷSR,sP ǩ ʡY8$B#Q؉FRJ=}szROhI"6eN9E'ӈhj^?@Qyiԥhˤ) __0xWܵ(Jv[O̻Q-l#y9)3K:iEy49HW>HV%Ջ_ +x pTmȆ|huH6i!@X> l6Ɇ$M4DX#F# M!Pa +CATEH)J! TFE>{}#b;N̹{sϽ<@k@ 4KΙe~%LL9\Hb{ͭW}4Qa!g|DE\^QP Ehtu4G6aΫFkH9W@Fmp kbci)m"ipyLy @qQPlDvl5\eih$$ g kY4v5ao kYC(Q +@]8.ڥPt~2D(x +6¸`V3!зtRB?Q͂)j;勝>Ϊ=C 7PC$ ]KlT LeήB Uߕ2W3U3 s U"B +:UAyn|B:d#@rq?3^Qp(f _#|;B~O&::fe%%LYƬ1kRvṕ1`):Yk)Ρzs~J׎_sKW蕾!y$O+C3&%]d9=3Kf +;{b-귮N>g/l<2>[с5{:{QX vH=tQHhDYg--'|7=ѝp]c~NF ?nCNXQfqϵR%iI |ECbR˕Xg Y7{^ \_ Y=y2PpVBp|;( +ؘh2]Daw~˕Ʀ6oH. jeE ' )LSdY) + QLT +J+޾j6Z߬eOsU//+> @@ -31246,11 +32721,11 @@ endcodespacerange <00e6> <00e9> <005a> <0076> <00f0> <00f4> -<00e5> <00e8> <003e> <005a> <003b> <0057> <0026> <0042> <00cd> <00ca> +<0012> <002e> <004e> <006a> endbfchar endcmap @@ -31259,7 +32734,7 @@ end end endstream endobj -2208 0 obj +2334 0 obj << /Type /FontDescriptor /FontName /HOYATR+Roboto-Bold @@ -31272,10 +32747,10 @@ endobj /CapHeight 737 /StemV 80 /StemH 80 -/FontFile2 2201 0 R +/FontFile2 2327 0 R >> endobj -2209 0 obj +2335 0 obj << /Type /Font /Subtype /CIDFontType2 @@ -31286,23 +32761,23 @@ endobj /Supplement 0 >> /CIDToGIDMap /Identity -/W [ 4 [ 249 ] 11 [ 162 351 352 ] 16 [ 244 ] 19 [ 373 574 574 574 574 574 574 574 ] 35 [ 497 ] 37 [ 673 638 654 650 562 548 681 707 291 ] 47 [ 635 541 876 706 690 645 690 638 615 619 658 654 874 635 618 606 ] 69 [ 536 563 521 563 541 358 571 560 265 260 534 265 866 560 565 563 565 365 514 338 560 505 735 509 502 ] 203 [ 562 562 562 ] 214 [ 690 ] 229 [ 540 540 ] 240 [ 565 ] ] -/FontDescriptor 2208 0 R +/W [ 4 [ 249 ] 11 [ 162 351 352 ] 16 [ 244 ] 18 [ 291 373 574 574 574 574 574 574 574 ] 35 [ 497 ] 37 [ 673 638 654 650 562 548 681 707 291 ] 47 [ 635 541 876 706 690 645 690 638 615 619 658 654 874 635 618 606 ] 69 [ 536 563 521 563 541 358 571 560 265 260 534 265 866 560 565 563 565 365 514 338 560 505 735 509 502 ] 203 [ 562 562 562 ] 214 [ 690 ] 230 [ 540 ] 240 [ 565 ] ] +/FontDescriptor 2334 0 R >> endobj -2210 0 obj +2336 0 obj << /Type /Font /Subtype /Type0 /BaseFont /HOYATR+Roboto-Bold -/ToUnicode 2207 0 R +/ToUnicode 2333 0 R /Encoding /Identity-H -/DescendantFonts [ 2209 0 R ] +/DescendantFonts [ 2335 0 R ] >> endobj -2211 0 obj +2337 0 obj << -/Length 1891 +/Length 1961 >> stream /CIDInit /ProcSet findresource begin @@ -31318,7 +32793,7 @@ begincmap 1 begincodespacerange <0000> endcodespacerange -111 beginbfchar +116 beginbfchar <0035> <0052> <0052> <006f> <004b> <0068> @@ -31338,7 +32813,7 @@ endcodespacerange <002c> <0049> <0046> <0063> <0015> <0032> -<001b> <0038> +<001c> <0039> <0014> <0031> <0011> <002e> <0053> <0070> @@ -31357,14 +32832,13 @@ endcodespacerange <0027> <0044> <004a> <0067> <004d> <006a> -<004f> <006c> -<0018> <0035> -<000a> <0027> -<0019> <0036> <0017> <0034> +<004f> <006c> +<0019> <0036> +<000a> <0027> +<001a> <0037> <0cf2> <00660066> <0054> <0071> -<001c> <0039> <0059> <0076> <00a4> <00e2> <0012> <002f> @@ -31372,15 +32846,17 @@ endcodespacerange <000b> <0028> <000c> <0029> <005c> <0079> +<0018> <0035> <0049> <0066> <0032> <004f> <000f> <002c> <00aa> <00e8> <0010> <002d> <0cf3> <00660069> -<001a> <0037> <0036> <0053> +<001b> <0038> <005a> <0077> +<079b> <202f> <0022> <003f> <002f> <004c> <003d> <005a> @@ -31389,14 +32865,16 @@ endcodespacerange <0034> <0051> <00ac> <00ea> <002b> <0048> +<00a9> <00e7> +<00bd> <00fb> <0028> <0045> <0038> <0055> +<00a2> <00e0> <002a> <0047> <0031> <004e> <0005> <0022> <0cf4> <0066006c> <002d> <004a> -<00a2> <00e0> <001d> <003a> <003c> <0059> <003e> <005b> @@ -31407,28 +32885,30 @@ endcodespacerange <0006> <0023> <005d> <007a> <000e> <002b> -<00a9> <00e7> <000d> <002a> +<0082> <00c0> +<0115> <0153> +<0778> <2009> <0008> <0025> <00bb> <00f9> -<00bd> <00fb> +<0089> <00c7> +<008a> <00c8> <003b> <0058> -<00b0> <00ee> <001e> <003b> -<008c> <00ca> -<005e> <007b> -<0020> <003d> -<0060> <007d> -<002e> <004b> -<0042> <005f> +<00b0> <00ee> <008b> <00c9> -<0115> <0153> +<008c> <00ca> +<0795> <2026> +<00b1> <00ef> +<0020> <003d> +<00ad> <00eb> +<002e> <004b> <0534> <1d49> +<0042> <005f> +<0041> <005e> <0855> <2192> -<0082> <00c0> <0021> <003e> <009d> <00db> -<0041> <005e> <0096> <00d4> endbfchar endcmap @@ -31437,7 +32917,7 @@ end end endstream endobj -2212 0 obj +2338 0 obj << /Type /FontDescriptor /FontName /UKLFXJ+DejaVu-Serif-Oblique @@ -31450,10 +32930,10 @@ endobj /CapHeight 927 /StemV 80 /StemH 80 -/FontFile2 2202 0 R +/FontFile2 2328 0 R >> endobj -2213 0 obj +2339 0 obj << /Type /Font /Subtype /CIDFontType2 @@ -31464,21 +32944,21 @@ endobj /Supplement 0 >> /CIDToGIDMap /Identity -/W [ 3 [ 318 402 460 838 ] 8 [ 950 ] 10 [ 275 390 390 500 838 318 338 318 337 636 636 636 636 636 636 636 636 636 636 337 337 ] 32 [ 838 838 536 ] 36 [ 722 735 765 802 730 694 799 872 395 401 747 664 1024 875 820 673 820 753 685 667 843 722 1028 712 660 695 390 ] 64 [ 390 838 500 ] 68 [ 596 640 560 640 592 370 640 644 320 310 606 320 948 644 602 640 640 478 513 402 644 565 856 564 565 527 636 ] 96 [ 636 ] 107 [ 1000 ] 130 [ 722 ] 139 [ 730 730 ] 150 [ 820 ] 157 [ 843 ] 162 [ 596 ] 164 [ 596 ] 169 [ 560 592 592 592 ] 176 [ 320 ] 182 [ 602 ] 187 [ 644 ] 189 [ 644 ] 277 [ 989 ] 1332 [ 387 ] 1928 [ 318 ] 1937 [ 590 ] 2133 [ 838 ] 3314 [ 710 667 667 ] ] -/FontDescriptor 2212 0 R +/W [ 3 [ 318 402 460 838 ] 8 [ 950 ] 10 [ 275 390 390 500 838 318 338 318 337 636 636 636 636 636 636 636 636 636 636 337 337 ] 32 [ 838 838 536 ] 36 [ 722 735 765 802 730 694 799 872 395 401 747 664 1024 875 820 673 820 753 685 667 843 722 1028 712 660 695 390 ] 64 [ 390 838 500 ] 68 [ 596 640 560 640 592 370 640 644 320 310 606 320 948 644 602 640 640 478 513 402 644 565 856 564 565 527 ] 107 [ 1000 ] 130 [ 722 ] 137 [ 765 730 730 730 ] 150 [ 820 ] 157 [ 843 ] 162 [ 596 ] 164 [ 596 ] 169 [ 560 592 592 592 592 ] 176 [ 320 320 ] 182 [ 602 ] 187 [ 644 ] 189 [ 644 ] 277 [ 989 ] 1332 [ 387 ] 1912 [ 200 ] 1928 [ 318 ] 1937 [ 590 ] 1941 [ 1000 ] 1947 [ 200 ] 2133 [ 838 ] 3314 [ 710 667 667 ] ] +/FontDescriptor 2338 0 R >> endobj -2214 0 obj +2340 0 obj << /Type /Font /Subtype /Type0 /BaseFont /UKLFXJ+DejaVu-Serif-Oblique -/ToUnicode 2211 0 R +/ToUnicode 2337 0 R /Encoding /Identity-H -/DescendantFonts [ 2213 0 R ] +/DescendantFonts [ 2339 0 R ] >> endobj -2215 0 obj +2341 0 obj << /Length 1206 >> @@ -31567,7 +33047,7 @@ end end endstream endobj -2216 0 obj +2342 0 obj << /Type /FontDescriptor /FontName /PYKAXF+Roboto-Light @@ -31580,10 +33060,10 @@ endobj /CapHeight 710 /StemV 80 /StemH 80 -/FontFile2 2203 0 R +/FontFile2 2329 0 R >> endobj -2217 0 obj +2343 0 obj << /Type /Font /Subtype /CIDFontType2 @@ -31595,22 +33075,22 @@ endobj >> /CIDToGIDMap /Identity /W [ 4 [ 243 ] 6 [ 287 ] 11 [ 170 ] 18 [ 239 397 554 554 554 554 554 554 554 554 554 554 ] 35 [ 454 ] 37 [ 625 ] 39 [ 649 655 569 562 684 ] 45 [ 266 550 ] 48 [ 527 865 710 677 616 ] 54 [ 635 592 597 657 617 896 ] 62 [ 598 ] 69 [ 536 554 515 556 517 331 555 549 224 228 490 224 886 549 560 554 558 336 506 321 549 481 754 486 475 ] 229 [ 517 517 ] ] -/FontDescriptor 2216 0 R +/FontDescriptor 2342 0 R >> endobj -2218 0 obj +2344 0 obj << /Type /Font /Subtype /Type0 /BaseFont /PYKAXF+Roboto-Light -/ToUnicode 2215 0 R +/ToUnicode 2341 0 R /Encoding /Identity-H -/DescendantFonts [ 2217 0 R ] +/DescendantFonts [ 2343 0 R ] >> endobj -2219 0 obj +2345 0 obj << -/Length 1038 +/Length 1150 >> stream /CIDInit /ProcSet findresource begin @@ -31626,7 +33106,7 @@ begincmap 1 begincodespacerange <0000> endcodespacerange -51 beginbfchar +59 beginbfchar <0015> <0031> <0012> <002e> <0004> <0020> @@ -31670,14 +33150,22 @@ endcodespacerange <0037> <0053> <004f> <006b> <001c> <0038> +<00e4> <00e7> +<00f5> <00fb> <0030> <004c> <001d> <0039> <0026> <0042> <005b> <0077> <002c> <0048> +<0039> <0055> <005a> <0076> -<005c> <0078> +<003a> <0056> <0023> <003f> +<00de> <00e0> +<00f0> <00f4> +<0031> <004d> +<00e5> <00e8> +<005c> <0078> endbfchar endcmap CMapName currentdict /CMap defineresource pop @@ -31685,23 +33173,23 @@ end end endstream endobj -2220 0 obj +2346 0 obj << /Type /FontDescriptor /FontName /YAMLPF+Roboto /FontFamily (Roboto) /Flags 4 -/FontBBox [ -31 -208 432 720 ] +/FontBBox [ -31 -216 473 528 ] /ItalicAngle 0 /Ascent 927 /Descent -244 -/CapHeight 720 +/CapHeight 528 /StemV 80 /StemH 80 -/FontFile2 2204 0 R +/FontFile2 2330 0 R >> endobj -2221 0 obj +2347 0 obj << /Type /Font /Subtype /CIDFontType2 @@ -31712,23 +33200,23 @@ endobj /Supplement 0 >> /CIDToGIDMap /Identity -/W [ 4 [ 248 ] 11 [ 174 ] 18 [ 263 ] 21 [ 561 561 561 561 561 561 561 561 561 ] 35 [ 472 ] 37 [ 652 623 651 656 ] 42 [ 553 ] 44 [ 713 ] 48 [ 538 ] 51 [ 687 631 ] 54 [ 616 593 597 ] 69 [ 544 561 523 564 530 347 561 551 243 239 507 243 876 552 570 561 568 338 516 327 551 484 751 496 ] 224 [ 544 ] 230 [ 530 ] ] -/FontDescriptor 2220 0 R +/W [ 4 [ 248 ] 11 [ 174 ] 18 [ 263 ] 21 [ 561 561 561 561 561 561 561 561 561 ] 35 [ 472 ] 37 [ 652 623 651 656 ] 42 [ 553 ] 44 [ 713 ] 48 [ 538 873 ] 51 [ 687 631 ] 54 [ 616 593 597 648 636 ] 69 [ 544 561 523 564 530 347 561 551 243 239 507 243 876 552 570 561 568 338 516 327 551 484 751 496 ] 222 [ 544 ] 224 [ 544 ] 228 [ 523 530 530 ] 240 [ 570 ] 245 [ 551 ] ] +/FontDescriptor 2346 0 R >> endobj -2222 0 obj +2348 0 obj << /Type /Font /Subtype /Type0 /BaseFont /YAMLPF+Roboto -/ToUnicode 2219 0 R +/ToUnicode 2345 0 R /Encoding /Identity-H -/DescendantFonts [ 2221 0 R ] +/DescendantFonts [ 2347 0 R ] >> endobj -2223 0 obj +2349 0 obj << -/Length 1626 +/Length 1640 >> stream /CIDInit /ProcSet findresource begin @@ -31744,7 +33232,7 @@ begincmap 1 begincodespacerange <0000> endcodespacerange -93 beginbfchar +94 beginbfchar <0014> <0031> <0013> <0030> <001b> <0038> @@ -31838,6 +33326,7 @@ endcodespacerange <0041> <005e> <006b> <00a9> <002d> <004a> +<0008> <0025> endbfchar endcmap CMapName currentdict /CMap defineresource pop @@ -31845,23 +33334,23 @@ end end endstream endobj -2224 0 obj +2350 0 obj << /Type /FontDescriptor /FontName /GJMVRG+DejaVu-Sans-Mono /FontFamily (DejaVu Sans Mono) /Flags 4 -/FontBBox [ 0 -235 466 729 ] +/FontBBox [ 0 -235 585 699 ] /ItalicAngle 0 /Ascent 928 /Descent -235 -/CapHeight 729 +/CapHeight 699 /StemV 80 /StemH 80 -/FontFile2 2205 0 R +/FontFile2 2331 0 R >> endobj -2225 0 obj +2351 0 obj << /Type /Font /Subtype /CIDFontType2 @@ -31872,21 +33361,21 @@ endobj /Supplement 0 >> /CIDToGIDMap /Identity -/W [ 3 [ 602 602 602 602 602 ] 9 [ 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 ] 68 [ 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 ] 107 [ 602 ] ] -/FontDescriptor 2224 0 R +/W [ 3 [ 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 ] 68 [ 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 ] 107 [ 602 ] ] +/FontDescriptor 2350 0 R >> endobj -2226 0 obj +2352 0 obj << /Type /Font /Subtype /Type0 /BaseFont /GJMVRG+DejaVu-Sans-Mono -/ToUnicode 2223 0 R +/ToUnicode 2349 0 R /Encoding /Identity-H -/DescendantFonts [ 2225 0 R ] +/DescendantFonts [ 2351 0 R ] >> endobj -2227 0 obj +2353 0 obj << /Length 590 >> @@ -31931,7 +33420,7 @@ end end endstream endobj -2228 0 obj +2354 0 obj << /Type /FontDescriptor /FontName /WQJRKZ+DejaVu-Serif-Bold @@ -31944,10 +33433,10 @@ endobj /CapHeight 742 /StemV 80 /StemH 80 -/FontFile2 2206 0 R +/FontFile2 2332 0 R >> endobj -2229 0 obj +2355 0 obj << /Type /Font /Subtype /CIDFontType2 @@ -31959,30 +33448,30 @@ endobj >> /CIDToGIDMap /Identity /W [ 3 [ 348 ] 13 [ 523 ] 38 [ 796 867 ] 55 [ 744 ] 68 [ 648 ] 70 [ 609 699 636 ] 74 [ 699 ] 76 [ 380 ] 79 [ 380 ] 81 [ 727 667 699 ] 85 [ 527 563 462 ] 92 [ 581 ] ] -/FontDescriptor 2228 0 R +/FontDescriptor 2354 0 R >> endobj -2230 0 obj +2356 0 obj << /Type /Font /Subtype /Type0 /BaseFont /WQJRKZ+DejaVu-Serif-Bold -/ToUnicode 2227 0 R +/ToUnicode 2353 0 R /Encoding /Identity-H -/DescendantFonts [ 2229 0 R ] +/DescendantFonts [ 2355 0 R ] >> endobj -2231 0 obj +2357 0 obj << -/HOYATR 2210 0 R -/UKLFXJ 2214 0 R -/PYKAXF 2218 0 R -/YAMLPF 2222 0 R -/GJMVRG 2226 0 R -/WQJRKZ 2230 0 R +/HOYATR 2336 0 R +/UKLFXJ 2340 0 R +/PYKAXF 2344 0 R +/YAMLPF 2348 0 R +/GJMVRG 2352 0 R +/WQJRKZ 2356 0 R >> endobj -2232 0 obj +2358 0 obj << /Type /XObject /Subtype /Image @@ -31997,7 +33486,7 @@ endobj /Columns 4969 /Colors 3 >> -/SMask 2233 0 R +/SMask 2359 0 R /Length 3704458 >> stream @@ -45294,7 +46783,7 @@ p5^vSٲ 7Y[lX} 3"% 3"=,LXKxR68av)j>-+ܼfloago{7xl,xp0ub.yVIMYpEˆW0)]0)يuY'eӋ+6mWfbǏ[ko]?}tC7`ah\*=,*sczɉKصE8f/=^0~=B \|fp&|]uɉ?CBgg? V/;9Q'c[ge''d b /,XD_l331_-X|fpF`2 ^vrO/bςNN_,>38Yzɉ?CBgg? v??ϟp?LzO.N??yP-}YRƧ).S~E:cn}E7}Q sf/;ȸZxCs鎳}cn Ң_|W+jэl_veoy?_]?Ӻm]?q8.)~q|‹i߸UNF[9s1uGooc6 u|,yqc];fg^xQ"WHa3]#g2朹 wӆᯎۘ%/xLkl /6S~3W9);l=~cbAƜ31au0uwMyEf4o\y*'#etuZ9Șs:#̷7ܱN:nc13/(L+\dQ3s\x;iWm̒W<&ߵc6}e)Xq噫?1j1r cΙ0p:mYv̦ϼl3E7‹i߸UNF[9s1uGooc6 u|,yqc];fg^xQ"WHa3]#g2朹 wӆᯎۘ%/xLkl /6S~3W9);l=~cbAƜ31au0uwMyEf4o\y*'#etuZ9Șs:#̷7ܱN:nc13/(L+\dQ3s\x;iWm̒W<&ߵc6}e)Xq噫?1j1r cΙ0p:mYv̦ϼl3E7‹i߸UNF[9s1uGooc6 u|,yqc];fg^xQ"WHa3]#g2朹 wӆᯎۘ%/xLkl /6S~3WYG_5( endstream endobj -2233 0 obj +2359 0 obj << /Filter /FlateDecode /Type /XObject @@ -45551,7 +47040,7 @@ mp5 QO\K]޾U/////Oo%_n;>Wz)p^k<^CyNOʾ>y~2}8gxw';////D&/1Ƕ* endstream endobj -2234 0 obj +2360 0 obj << /Type /XObject /Subtype /Image @@ -45566,7 +47055,7 @@ endobj /Columns 1920 /Colors 3 >> -/SMask 2235 0 R +/SMask 2361 0 R /Length 782043 >> stream @@ -48300,7 +49789,7 @@ wض Z\y|>x(,&cPYYPs];"WB!B!rS뺦ibU#EwWff"&էz媔eIc%%{iQ`~'uY}Ov+^Vm[$Y8ѨGs² ,I8"@8Ji6p. aBP'܌Ȝݖe !FH$ڀY$qu0(B!B!q!c I˥1E4۶XmD"QgĄ_rQVVjd@@"7o=޽{ܹeEd!lӴl[`RY2 zr,˪Ku"A 0I";nӴ9VX8,6B!B!$۶ {9dL[-: P#P0M+ʘ$q@qs-(L!B!B!u`^`ZN!UXľJM$tؼ"Qc/ !B!B!`$d 1S/!B!B!cA_A!B!B!dTE>( !B!B!gkXCB!B!B!dQB!B!B>AhB!B!B! !B!B!&B!B!OȦi@!B!B!`c[̻ endstream endobj -2235 0 obj +2361 0 obj << /Filter /FlateDecode /Type /XObject @@ -48321,7 +49810,7 @@ x u^;uȀ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  o endstream endobj -2236 0 obj +2362 0 obj << /Type /XObject /Subtype /Image @@ -48336,7 +49825,7 @@ endobj /Columns 1920 /Colors 3 >> -/SMask 2237 0 R +/SMask 2363 0 R /Length 727652 >> stream @@ -50691,7 +52180,7 @@ AD Ȁ[Ů~ endstream endobj -2237 0 obj +2363 0 obj << /Filter /FlateDecode /Type /XObject @@ -50712,7 +52201,7 @@ x u^;uȀ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0. k endstream endobj -2238 0 obj +2364 0 obj << /Type /XObject /Subtype /Image @@ -50727,7 +52216,7 @@ endobj /Columns 1920 /Colors 3 >> -/SMask 2239 0 R +/SMask 2365 0 R /Length 287978 >> stream @@ -51721,7 +53210,7 @@ hH3 nHL4NR)Jee2Yw @`iiy> -/SMask 2241 0 R +/SMask 2367 0 R /Length 95588 >> stream @@ -52089,7 +53578,7 @@ Nܿ ϼ5/n endstream endobj -2241 0 obj +2367 0 obj << /Filter /FlateDecode /Type /XObject @@ -52109,7 +53598,7 @@ stream x1 0q^ݳB+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-J@+-\?O endstream endobj -2242 0 obj +2368 0 obj << /Type /XObject /Subtype /Image @@ -52124,7 +53613,7 @@ endobj /Columns 1078 /Colors 3 >> -/SMask 2243 0 R +/SMask 2369 0 R /Length 9040 >> stream @@ -52152,7 +53641,7 @@ Q GeY~rn;ᑋD-+ ʲ<:aXn|Uͦv ;)TJY-;-7O_S1d} ;;NcU'I5KߜqFn䫭?9,ˏ'O(fQD>f`eVTkgkQ=f,7=;{ endstream endobj -2243 0 obj +2369 0 obj << /Filter /FlateDecode /Type /XObject @@ -52196,7 +53685,7 @@ k $k=`uy~)`8/מkzBDFy35>u1 0f:ܙD, }샟Aawwh"oꑕƱ1[78"zê? S5!7Bg,("EkTʣ77xKOnX 7(QvJ!8KDq8^DQ]NDq"ײQY05GaDtf>A)Quk.]9y}"J#+B9ocL'j[@Dٓg(jik3d3̅kS[q4oD^DΟFDYK$WHi3k:_Y $WEd;L<9 EDS9`23ZJO19DtLX[B@EdE-""v|Q"bd3"݈(G6n~?z1=:ZNDo]!bnD$j)"u;7͆bFDe-"z?~DDR\ƊVHY\b)"v}. kZ^(y#m]{^+w0=Q{>%z<ϋZN NBx1kT*;CܔD:Vem"mN7(@m| ͧĒOaV4pT_P5zSAlv tVjr$\c2.,[L߹u=k)EDw5>m|??cKx?,K)gG8NU]6y> al|(zh\(9J_&~06>7FIy:.߯0}clk./?Zw\S^w--nDVgs(D-'q2 ƻCxt Tg^o[zVЋuUk9ƻVSwevT^'a FD0R&>ܫmV^o~,'7hvb+}=wNlh+"RV۠#FD]Gzb/DfVROqNltrg> -/SMask 2245 0 R +/SMask 2371 0 R /Length 18073 >> stream @@ -52285,7 +53774,7 @@ h L6Ble$>^yxP%=ɁRKgMӌ#oq"YH*:_"!ROx0JchJLߍܰu,i\!8oPQۥq$gmE5>5hEBgN?MʗD6 8Wi1a!pC102o;B<%}pum]U0cQ(4uB10#ÇPWׅNN @ @ @ @ @ @ @ K?qEL endstream endobj -2245 0 obj +2371 0 obj << /Filter /FlateDecode /Type /XObject @@ -52334,7 +53823,7 @@ T BP-X]s endstream endobj -2246 0 obj +2372 0 obj << /Type /XObject /Subtype /Image @@ -52349,7 +53838,7 @@ endobj /Columns 614 /Colors 3 >> -/SMask 2247 0 R +/SMask 2373 0 R /Length 26290 >> stream @@ -52436,7 +53925,7 @@ E ːnjoopWPmLk =! GúL!Dc/PᅣYŎ BK 2ޭ0)4D< CKH`)H(Mͭkf<|7 2=r(DB޺,̦E#6Xy& "`Ƭol1EQ !i47jP{L !ӽ?:1/[nu2U{Vt$p=D&@>shmPQ><ɝ HJ=qow 2vWt8:F `!d ڪxU%& endstream endobj -2247 0 obj +2373 0 obj << /Filter /FlateDecode /Type /XObject @@ -52509,7 +53998,7 @@ K Kv#>4dH|oXʡxW 8ӹį%CTHOc;:9v_L%kUML\>ysȗӖrf|: B>L endstream endobj -2248 0 obj +2374 0 obj << /Type /XObject /Subtype /Image @@ -52524,7 +54013,7 @@ endobj /Columns 200 /Colors 3 >> -/SMask 2249 0 R +/SMask 2375 0 R /Length 1289 >> stream @@ -52535,7 +54024,7 @@ x V)/ V=/s V1 V%HHVe9xSHVe-.B^w>iXլ2y갪ymjyegAW&7zyo 'yuj^gEXɋ|EX|ʋ=#^b>!,H#,H$  ‚aA AX ,H$  ‚aAdo endstream endobj -2249 0 obj +2375 0 obj << /Filter /FlateDecode /Type /XObject @@ -52558,7 +54047,7 @@ b) ;g> p8vf0^BQ">ߢ׵v\W`E!1uEp\m1kGn}󄶐 > -/SMask 2251 0 R +/SMask 2377 0 R /Length 9552 >> stream @@ -52593,7 +54082,7 @@ x q敡AhQGoz ["#-".@.aUi3Jh]'n^&f.@&eEf<塋Dhi_Jk7Atuh#ۜFN_`d.FcCWz )3^C8lb1~*Q/OEce]:cg/YUTʼnWX\"WKSQ\ Jٶhmå8v{.79]|2)R^]:~ƚs&40J'n^ŘЅ@h`#s\|s,cɸ3nKUCq;_SUEEJ c7Kt8*&+p̈g熮۷ fN3]vsnOJ &ÌrCt$Z[YoleqV]wyž&aUB<. 㪣gU_y*&C qͱ!l endstream endobj -2251 0 obj +2377 0 obj << /Filter /FlateDecode /Type /XObject @@ -52626,7 +54115,7 @@ g* y'^?D}HȅEvw\7 '=VrDU:sQ1ݝP7} a OE'1 W_؂ܾSglfuOf}\mH׶CSh |qνl/u\`=폻}'>Hح-})E Pg~wձf{e<<=1UUZW׮^0?% endstream endobj -2252 0 obj +2378 0 obj << /Type /XObject /Subtype /Image @@ -52641,7 +54130,7 @@ endobj /Columns 1826 /Colors 3 >> -/SMask 2253 0 R +/SMask 2379 0 R /Length 88383 >> stream @@ -53237,7 +54726,7 @@ L af<u~E~9#~TY%L/Q4'&OY{&f (20rh_O?]y{h.uL)! o?<;?v/?Uh{_*AyZh#^@t/%GSŌzzk@uԫC/ivTQ6t鏍grpάX=ߗ}L.?#)gk554dK}UיL f[S;S~1q#sFƝaL endstream endobj -2253 0 obj +2379 0 obj << /Filter /FlateDecode /Type /XObject @@ -53257,7 +54746,7 @@ stream xձ03ΐ\Эs^,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@HH " Y$$d,E@:\ endstream endobj -2254 0 obj +2380 0 obj << /Type /XObject /Subtype /Image @@ -53272,7 +54761,7 @@ endobj /Columns 290 /Colors 3 >> -/SMask 2255 0 R +/SMask 2381 0 R /Length 9644 >> stream @@ -53299,7 +54788,7 @@ y? i>kjj֩S'?!oM+//5N9.Lgjfh>MQ4dW{^ooEZUH+Dͨ݉dKfh>9|X6FǘF6+++dFff74IfffȀSgP9kI.}Ѱ03IKK3Ϗ'Q'6}}}ו1_?lp\}?lEeee7$|]4e8nhhTZ<υ?/)) X&SfeeOKKS!d0gyqMMMF2:o^Jý#9.`:#hX#Es劲dVNSrf|B ?{@y28J3Xfff(('S(:F|4+//tȹnÞO @tPXX4IFFFuugtgS0F.©M9Iq'OFy ?;SaC畮x߳wҵgvϧt-z9t-ř566._\ZaҥJR￿n:+X{}LŊ*?ڵ[r9:z .XWV.\x$C[Z<1'NdO~wT` n;{B'TS&M>}1cl6 ;wޏEÑ>btdX "A'={477=#H3 endstream endobj -2255 0 obj +2381 0 obj << /Filter /FlateDecode /Type /XObject @@ -53359,7 +54848,7 @@ I % endstream endobj -2256 0 obj +2382 0 obj << /Type /XObject /Subtype /Image @@ -53374,7 +54863,7 @@ endobj /Columns 267 /Colors 3 >> -/SMask 2257 0 R +/SMask 2383 0 R /Length 14982 >> stream @@ -53446,7 +54935,7 @@ L( T UV):LsT1 `e`z!a@) ttUS$CT(0!€M߰2 endstream endobj -2257 0 obj +2383 0 obj << /Filter /FlateDecode /Type /XObject @@ -53472,7 +54961,7 @@ k X^:cy.Sߣt国3(*[png7  [1 endstream endobj -2258 0 obj +2384 0 obj << /Type /XObject /Subtype /Image @@ -53487,7 +54976,7 @@ endobj /Columns 480 /Colors 3 >> -/SMask 2259 0 R +/SMask 2385 0 R /Length 27801 >> stream @@ -53593,7 +55082,7 @@ Y!|Z 1g )8;O?G[K;@3n. Clz6nR`|\co_&Q&h(}a ] r̀ Li'D4$ЄA삮$sJLNñ)D45>G40 { TX\ Spq8/d- 4wZ{za :DC@$aB*(2O.4A3\*P@&p|fH#I HЕHÀTYH|                                                        _.~ endstream endobj -2259 0 obj +2385 0 obj << /Filter /FlateDecode /Type /XObject @@ -53655,7 +55144,7 @@ z g8H 7r+3ƐspS[LJ;=NȅwBc> -/SMask 2261 0 R +/SMask 2387 0 R /Length 314223 >> stream @@ -54822,7 +56311,7 @@ cGPP Zn endstream endobj -2261 0 obj +2387 0 obj << /Filter /FlateDecode /Type /XObject @@ -54939,7 +56428,7 @@ w A;>NhZZ"1-x,h7E endstream endobj -2262 0 obj +2388 0 obj << /Type /XObject /Subtype /Image @@ -54954,7 +56443,7 @@ endobj /Columns 3590 /Colors 3 >> -/SMask 2263 0 R +/SMask 2389 0 R /Length 364004 >> stream @@ -56314,7 +57803,7 @@ I( *߻x. 9sf2 {(wRԞ={?{3N^:ܑ$N^"I&O<0ƥ鎎}Iſ$ Dmmmmmmeee"7n\"wB8\JZ[[[[[ᠯ' }S CpAOA^݆fY(`/ (A1,c} endstream endobj -2263 0 obj +2389 0 obj << /Filter /FlateDecode /Type /XObject @@ -56339,7 +57828,7 @@ XD |l te1pؿ9p \χU~`tsbybu$-##!#3u w>|"f~nj;?>-eqxn顗BZǽC16>w \k]xΧOhuya oʗ8k˻/ϝn] endstream endobj -2264 0 obj +2390 0 obj << /Type /XObject /Subtype /Image @@ -56354,7 +57843,7 @@ endobj /Columns 3590 /Colors 3 >> -/SMask 2265 0 R +/SMask 2391 0 R /Length 680627 >> stream @@ -59184,7 +60673,7 @@ w z?6ŋ"Qދ/~%(?E endstream endobj -2265 0 obj +2391 0 obj << /Filter /FlateDecode /Type /XObject @@ -59208,7 +60697,7 @@ x X q@AAz@W,{G"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 E@"Rd @ H)2 e{Hfx=Pvܞ/=v{݋a{v^_/d=m_Rv} j;sD='_v :lr=o\ab Xh9X*@oH,@LG]3#Yk_~xΏCc.\ƶ޶cjzеqPt]Z_'ޢ98?k]}x}hgZe1sy{}> F; endstream endobj -2266 0 obj +2392 0 obj << /Type /XObject /Subtype /Image @@ -59223,7 +60712,7 @@ endobj /Columns 3590 /Colors 3 >> -/SMask 2267 0 R +/SMask 2393 0 R /Length 347639 >> stream @@ -60248,7 +61737,7 @@ pn Op8 锅 endstream endobj -2267 0 obj +2393 0 obj << /Filter /FlateDecode /Type /XObject @@ -60272,7 +61761,7 @@ XD ]k^ 7O5puyur-:>݇')_Fx.~\?w endstream endobj -2268 0 obj +2394 0 obj << /Type /XObject /Subtype /Image @@ -60287,7 +61776,7 @@ endobj /Columns 2108 /Colors 3 >> -/SMask 2269 0 R +/SMask 2395 0 R /Length 172455 >> stream @@ -60765,7 +62254,7 @@ IZ 1&ųjf,JPN_glFff㓮Ř,f؈+`#` endstream endobj -2269 0 obj +2395 0 obj << /Filter /FlateDecode /Type /XObject @@ -60795,7 +62284,7 @@ l uP=a;t] gGSj_O3xm=v%yan<[/4\؞/.)-ԟ=o˓0 endstream endobj -2270 0 obj +2396 0 obj << /Type /XObject /Subtype /Image @@ -61255,7 +62744,7 @@ Uڟ ),\Rg?JvC{lRb@*AmsLu4 endstream endobj -2271 0 obj +2397 0 obj << /Type /XObject /Subtype /Image @@ -61397,7 +62886,7 @@ NGBG 8QSFO\ sZUSyGesEj7cT_FOV#zQAީ<⵿?Qީ<G4ֱ橁SyGeRsZzP|7cT_PO4Ҵ?SLJ5<G)Ej98j?@TV#Q<Ej98j?@TV#Q<Ej98j?@TV#Q<Ej98j?@TV#Q<Ej98j?@TV#Q<MZj?*֟kfxȐ9-@ endstream endobj -2272 0 obj +2398 0 obj << /Type /XObject /Subtype /Image @@ -61761,7 +63250,7 @@ Q h-R@?JSˌE@ F8)v#E `H=Ouh*wE" cI˞EKR&HAEu)9$'QE4%OH8QEC܄M7r:.SRQMlq>p{+DC}stQH;NQH: ퟭ5zE\sLEGPң&GQQE)? endstream endobj -2273 0 obj +2399 0 obj << /Type /XObject /Subtype /Image @@ -61776,7 +63265,7 @@ endobj /Columns 100 /Colors 3 >> -/SMask 2274 0 R +/SMask 2400 0 R /Length 3917 >> stream @@ -61796,7 +63285,7 @@ x "wiNȌEFrסUUg~/tc5HDm;O-Xz%~0  "BA0m[fB)W? Cb.gQdw*q~`LsJf`P :*oW K[{i endstream endobj -2274 0 obj +2400 0 obj << /Filter /FlateDecode /Type /XObject @@ -61821,7 +63310,7 @@ f 9]Gd35 o_wX@l/7ۺae> endstream endobj -2275 0 obj +2401 0 obj << /Type /XObject /Subtype /Image @@ -61836,7 +63325,7 @@ endobj /Columns 100 /Colors 3 >> -/SMask 2276 0 R +/SMask 2402 0 R /Length 10160 >> stream @@ -61875,7 +63364,7 @@ U ߖM/#0RY5\YAo"zfHJn8t$E BReOӫD]mn~}U;v}$ ͠emq (brr2)d:q|Ҕ5^RB@OTW#(TD5[NW{w㳯hM(Eib&D "Ckݎ嵃ӱ*5P0QoaM|bZP{8͖c}a^cXՒsa}(V21jn{Ƙnʛԥi@v鏿5^>x&q m"eggǩynoNJʖx٧`'fCm,s˖R=;_k|"USM.Xĉf*&O_݅5£vfI=^ML<8TNڗ~p9kp endstream endobj -2276 0 obj +2402 0 obj << /Filter /FlateDecode /Type /XObject @@ -61897,7 +63386,7 @@ x 5gd9u ׊,H*UޑpJLj+𷘽*#C Rp*qw!Eml%?e~j!% C ,9a\G]h+1^v81B+W1/ʡ8T$~;#')Ȁq_N#ƚ=YH/#.8[Cb6 1b P,nSZ!;7 q%kH(z8 /i1vDtmKɊcD@` tBUZMm֗k iUvr&^@lYB~?Y)^hf{ps|tHgÖreUQ7tBcbNwoK1ꪀ=R| 0T1Pǽm8C' CbXaC ӈGC&L |Ug=ˀi01jgCs?#R]^FnO!ւd2l"##֙}~)Ue >2Ĵ-24-˲,3teAWsXttas4L KÃi0`MiI#nJ6OfOn%./W]` c8K~cVT&O7X4߹mWkh7TŶϞ> -/SMask 2278 0 R +/SMask 2404 0 R /Length 622269 >> stream @@ -63989,7 +65478,7 @@ Q YdׇiU'XT7=]QYdEYdEYdEYϢO>֯j-",bKSv endstream endobj -2278 0 obj +2404 0 obj << /Filter /FlateDecode /Type /XObject @@ -64009,7 +65498,7 @@ stream x1 pT~]gٯD'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" D'@<Ox" endstream endobj -2279 0 obj +2405 0 obj << /Type /XObject /Subtype /Image @@ -64024,7 +65513,7 @@ endobj /Columns 1807 /Colors 3 >> -/SMask 2280 0 R +/SMask 2406 0 R /Length 28962 >> stream @@ -64157,7 +65646,7 @@ _\ 9.6n{`a)%P7˴$$Y7}$X渲kb$ھ=h|> -/SMask 2282 0 R +/SMask 2408 0 R /Length 12198 >> stream @@ -64227,7 +65716,7 @@ J ұ0d*D+HJQ;tbeqn~bbOOUӠ t͟ƛ8n{]#&䀅03{fmCd7qޯ"n&sI4A5kjHL0XkBqxQ=hkvj$Z%Z*BeK 3m72ǽo+kf:{N^LL uj״=3۟֗X'0:E0si2,fҪ"(υGi܈q<.3er$,YOʬjy ^Kc+sn5VMHܛE/lඓd͹GLO=\L>yZ̜u\vf66}{"d#Oa͸I49{{f!Dᔟm(%HW2WZLշ0~}|4Q)3YlÎ>"?:5M vǸ%HmuZ؂Utfձ}Qoa-o0/usAS&`G!s5Ac% LkPV  SS`1%1CTؒYQ.&|%%64qԦ ,3Vl`}!)="KQ_ļجO"f,kO':*,dubYƈ/>+sr-grN˚^<ti\O'o,{'LZ& 0)P=EQ/SN |ayN $zQj{ 9;a|'Y.OM/b3 endstream endobj -2282 0 obj +2408 0 obj << /Filter /FlateDecode /Type /XObject @@ -64247,7 +65736,7 @@ stream x 0u%$= jxٚ [dklM 5A&ٚ [dklM 5A&ٚ [dklM 5A&ٚ [dk.2n; endstream endobj -2283 0 obj +2409 0 obj << /Type /XObject /Subtype /Image @@ -64262,7 +65751,7 @@ endobj /Columns 107 /Colors 3 >> -/SMask 2284 0 R +/SMask 2410 0 R /Length 2501 >> stream @@ -64277,7 +65766,7 @@ _okȘ #O. |}[[ۍ4 ;oDr.iA0OCn?eS+z endstream endobj -2284 0 obj +2410 0 obj << /Filter /FlateDecode /Type /XObject @@ -64297,7 +65786,7 @@ stream x 0gmq뭘U.r\R1 endstream endobj -2285 0 obj +2411 0 obj << /Type /XObject /Subtype /Image @@ -64312,7 +65801,7 @@ endobj /Columns 75 /Colors 3 >> -/SMask 2286 0 R +/SMask 2412 0 R /Length 1771 >> stream @@ -64324,7 +65813,7 @@ x  )x?⽛ÈՓcP @+&QʅJn$tesSTaBޓ|uR(xGޓ3PY :R7h(vG)GCbΨ*Fj(w{'41}Ox;@l=yXQs$zk,D7|ιE#\((솏~coH0)))5Tna'WP!qH`홅ɛG^.}d_Uv=%IޮgvO;Jo4ã] }]hWLW*8@GzvxԙJ6Y<¡Rg5Y9=9#A(ЪA\ʟ@0j[鴕(K +neē|YxXɭB2f&qewO endstream endobj -2286 0 obj +2412 0 obj << /Filter /FlateDecode /Type /XObject @@ -64344,7 +65833,7 @@ stream xA0>!:wr\.U0uG endstream endobj -2287 0 obj +2413 0 obj << /Type /XObject /Subtype /Image @@ -64359,7 +65848,7 @@ endobj /Columns 1303 /Colors 3 >> -/SMask 2288 0 R +/SMask 2414 0 R /Length 491902 >> stream @@ -66074,7 +67563,7 @@ BNN _i0d'p8p8뮽.%57TK&FHnnnS;vp8plDIYnp8p8$p8p8&p8p8GB4p8p8BVsp8p8YOpe endstream endobj -2288 0 obj +2414 0 obj << /Filter /FlateDecode /Type /XObject @@ -66094,7 +67583,7 @@ stream xԱ03^\Щs.ug|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||= endstream endobj -2289 0 obj +2415 0 obj << /Type /XObject /Subtype /Image @@ -66109,7 +67598,7 @@ endobj /Columns 1742 /Colors 3 >> -/SMask 2290 0 R +/SMask 2416 0 R /Length 172996 >> stream @@ -66540,7 +68029,7 @@ g%qg uRҀcO=7@^yT׼.p^V,?0Lz~j38MD_v4vmkþ%+ӥwշ&{,_^׌o}ʻ{Do I ^?(q!HoP79WfX7:3x[u2t|@[_s endstream endobj -2290 0 obj +2416 0 obj << /Filter /FlateDecode /Type /XObject @@ -66668,7 +68157,7 @@ v[t; ӺND[ Š +u~{O9]>+9xKl>'b{p:xc|~O=SDMnyw+znp:jǫ9-d1.m!Qq&;L^~د3R?p-!;?^ݷa~qJkx!H;' :Nc] endstream endobj -2291 0 obj +2417 0 obj << /Type /XObject /Subtype /Image @@ -66683,7 +68172,7 @@ endobj /Columns 33 /Colors 3 >> -/SMask 2292 0 R +/SMask 2418 0 R /Length 588 >> stream @@ -66691,7 +68180,7 @@ x ս=O\Rʃ Զ"詉ǏNM5&?L" bH((& bhl,ptJשTbni0pӶ+pC-C4ЉR_WsFÉR˗Vy-'3ĺeOTVV@wW rPPOΆCbqg߶u9ˇ$sgܜV.rVU$§yPʙ]Ӳ jw;@JOęmԓQ̶ a3jX=Z@h{'յ Q@$ϹUV+.ؾY1hfpf@Tfb'+WΆ;MOZW.\Q7 endstream endobj -2292 0 obj +2418 0 obj << /Filter /FlateDecode /Type /XObject @@ -66712,7 +68201,7 @@ x T3 endstream endobj -2293 0 obj +2419 0 obj << /Type /XObject /Subtype /Image @@ -66727,7 +68216,7 @@ endobj /Columns 176 /Colors 3 >> -/SMask 2294 0 R +/SMask 2420 0 R /Length 2907 >> stream @@ -66745,7 +68234,7 @@ H D cYר aR(XV"k CD aFODoIPswavRiw!2}>ٚ俛|~!}z= ֘/jߌBCn7-E!ZhAZ!/(U endstream endobj -2294 0 obj +2420 0 obj << /Filter /FlateDecode /Type /XObject @@ -66767,7 +68256,7 @@ k ki? endstream endobj -2295 0 obj +2421 0 obj << /Type /XObject /Subtype /Image @@ -66782,7 +68271,7 @@ endobj /Columns 720 /Colors 3 >> -/SMask 2296 0 R +/SMask 2422 0 R /Length 8063 >> stream @@ -66822,7 +68311,7 @@ P $;Y_sʓoZs0Χtk %)鈇_>0H"EÃxxĈ 58k7 UZcĦpk?6KOlߙ՜،ji3 Im8}M'EsGM_$~9%xڵma[ QҥNfBj3d%B ҚHT^V[34r0,35\R^a(ITu*MNSk^XHӐ"CJLIT\cHsF( ],o ³sf˖S׍E'}%k}.KʼndIrNU"^p8Ѽ{q]PMR̐@sQȐL%7+b1A!B썀\B;9upeX|nM oX݋8P endstream endobj -2296 0 obj +2422 0 obj << /Filter /FlateDecode /Type /XObject @@ -66842,7 +68331,7 @@ stream x 0u%$= :xФCbhR MI14)&ФCbhR MI14)&ФCbhR MI14)&ФCbhR.iG; endstream endobj -2297 0 obj +2423 0 obj << /Type /XObject /Subtype /Image @@ -66857,7 +68346,7 @@ endobj /Columns 308 /Colors 3 >> -/SMask 2298 0 R +/SMask 2424 0 R /Length 1809 >> stream @@ -66865,7 +68354,7 @@ x ''''''''''''j,a8xN7tlnfLM{N~got{e{89888888888888l9Wp*}&GCw,>hy~N.֯Cg-PJPJPJPJPJPJPJPJPJPJPJPJPVJ<\{!^/6n'}IzSŋ_d3ƶR qB)qB)qB)qB)qB)qB)qB)qB)qB)qB)qB)qB)[)wدpr߀p<'Gm%*|r%+NN(%N(%N(%N(%N(%N(%N(%N(%N(%N(%N(%N(%N(u R=QY8[7GoNNNwwɿ-ݞY 07Hs&~|ɗ .VJkۍHwRF5OLxdǏOnùh߿2^RRRRRRRRRRRRRJyLk{8=xc6vg?7[7^ '&*lJJJJJJJJJJJJJmx+e.Qxco\[)턓|0|zzN.oh:H7Hf.w쇓?{=Jpr/6 (9''''''''''''''V.5r$+enf\J9o??N N+3*Ԇ99888888888888~-|:'ekQį9oy$}- 6|Wʶ8/|Mٖi[^9RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRM?\?wp  *= endstream endobj -2298 0 obj +2424 0 obj << /Filter /FlateDecode /Type /XObject @@ -66885,7 +68374,7 @@ stream xA @g>"%{pkiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii:g endstream endobj -2299 0 obj +2425 0 obj << /Type /XObject /Subtype /Image @@ -66900,7 +68389,7 @@ endobj /Columns 308 /Colors 3 >> -/SMask 2300 0 R +/SMask 2426 0 R /Length 1403 >> stream @@ -66909,7 +68398,7 @@ x w0.}7\޼.NK߅˝ǓJJJJJJJJJJJJJJ> Z ˍ!}vvn+u92?-.wҫ̓JJJJJJJJJJJJJJL'ry!x-搾e{& Y.gӟp4_겋yrB)qB)qB)qB)qB)qB)qB)qB)qB)qB)qB)qB)qB)W)[}!*emQs锧ʓJJJJJJJJJJJJO' endstream endobj -2300 0 obj +2426 0 obj << /Filter /FlateDecode /Type /XObject @@ -66930,7 +68419,7 @@ x @@(u+yG8ΣWMH {kȯsyG------------X݌ @@@@@@@@@@@@|&-------------X,?m9\פIn#Z Z Z Z Z Z Z Z Z Z Z Z|Qَrl#Z Z Z Z Z Z Z Z Z Z Z Zpdg\Ф?}I D D D D D D D D D D D Dx endstream endobj -2301 0 obj +2427 0 obj << /Type /XObject /Subtype /Image @@ -66945,14 +68434,14 @@ endobj /Columns 308 /Colors 3 >> -/SMask 2302 0 R +/SMask 2428 0 R /Length 299 >> stream x1 Om_~Y  endstream endobj -2302 0 obj +2428 0 obj << /Filter /FlateDecode /Type /XObject @@ -66973,7 +68462,7 @@ x 1U&xivA`qv&}3hhhhhhhhhhhhcu#1+dтw9&.&D D D D D D D D D D D D D D D D D D D D D D D D D D 1]-x}40ihhhhhhhhhhhh[s~äceƤ[be-s@@@@@@@@@@@@4~ 5 endstream endobj -2303 0 obj +2429 0 obj << /Type /XObject /Subtype /Image @@ -66988,14 +68477,14 @@ endobj /Columns 308 /Colors 3 >> -/SMask 2304 0 R +/SMask 2430 0 R /Length 299 >> stream x1 Om_~Y  endstream endobj -2304 0 obj +2430 0 obj << /Filter /FlateDecode /Type /XObject @@ -67016,7 +68505,7 @@ x 0@Q[YKYKFe׹ec6;-------------羶 1 endstream endobj -2305 0 obj +2431 0 obj << /Type /XObject /Subtype /Image @@ -67031,14 +68520,14 @@ endobj /Columns 308 /Colors 3 >> -/SMask 2306 0 R +/SMask 2432 0 R /Length 299 >> stream x1 Om_~Y  endstream endobj -2306 0 obj +2432 0 obj << /Filter /FlateDecode /Type /XObject @@ -67059,7 +68548,7 @@ x @@(u+yG8ΣWMH {kȯsyG------------X݌ @@@@@@@@@@@@|&-------------X,?m9\פIn#Z Z Z Z Z Z Z Z Z Z Z Z|Qَrl#Z Z Z Z Z Z Z Z Z Z Z Zpdg\Ф?}I D D D D D D D D D D D Dx endstream endobj -2307 0 obj +2433 0 obj << /Type /XObject /Subtype /Image @@ -67074,7 +68563,7 @@ endobj /Columns 165 /Colors 3 >> -/SMask 2308 0 R +/SMask 2434 0 R /Length 2190 >> stream @@ -67086,7 +68575,7 @@ qH[ r6Dgnpc*6#=*Bcfkef]π+IȪ:">sY)?,(* w2y4'{E^?@ QEVQ7Oqs@e|.-.-.-.-.-* endstream endobj -2308 0 obj +2434 0 obj << /Filter /FlateDecode /Type /XObject @@ -67106,7 +68595,7 @@ stream xA 1gc -XWZ:-NKitZ:-NKitZ:G endstream endobj -2309 0 obj +2435 0 obj << /Type /XObject /Subtype /Image @@ -67121,7 +68610,7 @@ endobj /Columns 165 /Colors 3 >> -/SMask 2310 0 R +/SMask 2436 0 R /Length 2189 >> stream @@ -67139,7 +68628,7 @@ s Ǔ= V p )]"L7OqԟP滴P滴P滴P滴P滴?+ endstream endobj -2310 0 obj +2436 0 obj << /Filter /FlateDecode /Type /XObject @@ -67159,7 +68648,7 @@ stream xA 1gc -XWZ:-NKitZ:-NKitZ:G endstream endobj -2311 0 obj +2437 0 obj << /Type /XObject /Subtype /Image @@ -67174,14 +68663,14 @@ endobj /Columns 165 /Colors 3 >> -/SMask 2312 0 R +/SMask 2438 0 R /Length 276 >> stream x F\/H2YܠΕخlfI`xހX|oBY7 f!,䛅|o[f91׭t(SK|˖޸5ߓDɟsxdwb"w^{؏&KL9߅}]fFz{;9hori^:åf5Lw)%3] G EkoBY7 f!,䛅|or? endstream endobj -2312 0 obj +2438 0 obj << /Filter /FlateDecode /Type /XObject @@ -67201,7 +68690,7 @@ stream xA 1gc -XWZ:-NKitZ:-NKitZ:G endstream endobj -2313 0 obj +2439 0 obj << /Type /XObject /Subtype /Image @@ -67216,7 +68705,7 @@ endobj /Columns 330 /Colors 3 >> -/SMask 2314 0 R +/SMask 2440 0 R /Length 2822 >> stream @@ -67231,7 +68720,7 @@ mN} dEG endstream endobj -2314 0 obj +2440 0 obj << /Filter /FlateDecode /Type /XObject @@ -67251,7 +68740,7 @@ stream xICAQ~Q"XC! ^N_EE\o>a1;aVfX2ceʌ+3VfX2ceʌ+3VfX2ceʌ+3VfX2ceʌ+3VfX2ceʌ+3VfX2ceʌ+3VfX2ceʌ+3VfX2ceʌ]xݰs<;b 1 endstream endobj -2315 0 obj +2441 0 obj << /Type /XObject /Subtype /Image @@ -67266,14 +68755,14 @@ endobj /Columns 330 /Colors 3 >> -/SMask 2316 0 R +/SMask 2442 0 R /Length 691 >> stream xn0eRm>yꃍl߀DnpX b7o%K!xC,X b7o%K!xC,X b7og۶^|/[`+=a۶KWūwPii{jCJɯߌmO֫jHImfwOO[?ʖt=C5/pY}YS~ދv#f84 >lGx8 Éچmߟ1kݞwUf܋zi瞭.i[/Tx=_|yG_ !ejGX8CHJ$<,jv}߫õ{Su4Ohzuƛ%5T]BT 4N!xC,X b7o%K!xC,X b7o%K!xC,X b7SN endstream endobj -2316 0 obj +2442 0 obj << /Filter /FlateDecode /Type /XObject @@ -67293,7 +68782,7 @@ stream x @@c{:VfX2ceʌ+3VfX2ceʌ+3VfX2ceʌ+3VfX2ceʌ+3VfX2ceʌ+3VfX2ceʌ+3VfX2ceʌ+3VfX2ceʌ+3VfX2ceL endstream endobj -2317 0 obj +2443 0 obj << /Type /XObject /Subtype /Image @@ -67308,7 +68797,7 @@ endobj /Columns 101 /Colors 3 >> -/SMask 2318 0 R +/SMask 2444 0 R /Length 2503 >> stream @@ -67326,7 +68815,7 @@ z J#DBY--A=f8Z704r!VL"JDCH [!p҃x:l/JFBRBR:DLZ2"R؜/Iixp$vDV4ig/exC.h$8`CNћt?e'JtǓ_1՚ﭳHJtߺ4]#+yI;'d_JWa_ٞuxi3d=+ߡ19./ecVn졛/{7fSm endstream endobj -2318 0 obj +2444 0 obj << /Filter /FlateDecode /Type /XObject @@ -67347,7 +68836,7 @@ x &X,bX,a9\QG endstream endobj -2319 0 obj +2445 0 obj << /Type /XObject /Subtype /Image @@ -67362,14 +68851,14 @@ endobj /Columns 2020 /Colors 3 >> -/SMask 2320 0 R +/SMask 2446 0 R /Length 10241 >> stream x{u}~eA*&E 8NG.E4U)`l4v՘hh`hBo$/Hdw;dg/_s{;SA` L0z L0z L0z L0z L0z L0z L0z L0z L0z L0z L0z L0z L0z L0z L0z L0z L0z L0z L0z L0z L0z L0z L0z L0z L0z L0z L0z L0z L0z L0z L0z L0z L0z L0z L0z L0z L0z L0z L0z L0z L0z L0z L0z L0z LQ`0A::MB {Dy{va^w/ L0z L0z L0z L0z L0º~T߰O>}駗a+/yEy{o,ok_/ok8)Cs;y% _ryϔ_+oW޶\ gc3[wvaamXޞ{ޅ1OU(onU޶}_>_޾ەתo[ +ory/|-GyDy;eii6gTz~^rɫ۟?+o۾;&@Xab=&@Xab=&@Xab=&@Xab=&@Xaa2]>:؍ 'p FlFay;;;{[#5W{]A7ln>' .+oj|C{vry{']ͽYov?TZ>6=ΔK.)o_n۾&_@Xab=&@Xab=&@Xab=&@Xab=&@Xab=/OoөsHyiyhX޶/E N;\וW\qyymO=Uv]ڱ}gyP~O__>)ow]޶箫?`.ryecϾ}.oWVVۖϔ; 7FŰ+5W׿yY}7/o֖mV뮽ᆷ Snۺu)&@Xab=&@Xab=&@Xab=&@Xab=&@(}ui-6Ghx[l۶#-O˜o~^wiy5f\y{QG/ow]}ںm[yiy7~]Z^.oay;=]䰶T?'ߗw; ʸϣ6_X޾,oo-&/;;[~/7=엔_ۻhyWy]^Y)oO L0z L0z L0z L0z LQ`dhxVЋեޤO~/[޶ڏX_ʫ,o??*ow[߿X~÷_Ty;7tkp8,O./v<V޾mח~yq|y ./Ǭ/ove~n G7ly{˭ ۮ]_Nuox6]/^~wSrm헿_w-7nPc&_@Xab=&@Xab=&@Xab=&@Xab=&@Xab=~U=l.]e&j9{ԷSm=wG\rqya~}l+o[Ϋ]u4ԟopbM۳>=*oۘԗsRy]~v8_ Mr¦3~귖_xau^^GZ9vϞvmxpl;z L0z L0z L0z L0z LQb0SO-o7/zQy;33Sޞw޹veܗ_={-o[ɛnzwya~}n.o<_͛7~Mqyac}/^_?Xعm1;WםyQGU޶ɣ9⊷'xry{-+o:][җT~wۖ{I'ύ^rvyۦ~nL/{UW^Qn/oyvye/y;33[N Q˷zj?Uޞpo}g=vv]ezTo-oۖ* j4Y\\*oow.o.~_@Xab=&@Xab=&@Xab=&@Xab=&@Xab=O߰pX޾u]Ë533]N_~]Z^)o͛ݳv8?կzuy{'S{_}1w] x\<[??/o3Iwy{y{)yXۿ㎏6u|.{vi@ypkWm"[ߎWwz};}v_B^wmm=blyu^Z\.o~f{yu؍T>9?Ly>|n;OMٳ_xSy{z L0z L0z L0z L0z xJG ۮaG]S~]yZWB7-Ϸ[(o~^p^y;f}?/o[ޣA)y h<_GKg-o۾s 1s3m;JyTٻm?7i3۷m/o]Y3Wޮ?~ _EuK x\ohr!-c^Ty;jx] ]vvE*o"MܱmM{0z L0z L0z L0z L0z7>C/oAwd_Tܲm9m:ZnRn}pm^æ[lХ0h>9n;)mB)@ w]mk>$Fz L0z L0z L0z L0z l>OݠKOo<߆mcny7A1ߖmy'.58Q}:oo'Ԉ} }vMֵ|\y9h/a_@Xab=&@Xab=&@Xab=&@Xab=&@Xab=]˸?XG1!Rw ZM]5ܯjONUw*n:Sj~[.Uw <ϓNv&_@Xab=&@Xab=&@Xab=&@Xab=&@Xab=t}wC] jZC/ L0z L0z L0z L0z L0Fn8vuxpe=&@Xab=&@Xab=&@Xab=&@Xab=&@(}ѷ<,b~Yab=&@Xab=&@Xab=&@Xab=&@Xab=6Jct-`pe=&@Xab=&@Xab=&@Xab=&@Xab=&@Xab=&@Xab=&@Xab=&@Xab=&@Xab=&@Xab=&@Xab=&@Xab=&@Xab=&@Xab=&@Xab=&@Xab=&@Xab=&@Xab=&@Xab=&@Xab=&@Xab=&@Xab=&@Xab=&@Xab=&@9Y endstream endobj -2320 0 obj +2446 0 obj << /Filter /FlateDecode /Type /XObject @@ -67389,7 +68878,7 @@ stream xA 0C!YZm ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( r endstream endobj -2321 0 obj +2447 0 obj << /Type /XObject /Subtype /Image @@ -67404,14 +68893,14 @@ endobj /Columns 101 /Colors 3 >> -/SMask 2322 0 R +/SMask 2448 0 R /Length 239 >> stream xI ej*$SDJl%}ǩ) ^xO#FT鵆p Ă^a{sm+3_lWĚKD\tnT|:v!wا.{Urgp6^ZVѲ׫`ųEwG]mx/_X[L_8/_Y5Z٪t(њ7#?3 endstream endobj -2322 0 obj +2448 0 obj << /Filter /FlateDecode /Type /XObject @@ -67432,7 +68921,7 @@ x &X,bX,a9\QG endstream endobj -2323 0 obj +2449 0 obj << /Type /XObject /Subtype /Image @@ -67447,7 +68936,7 @@ endobj /Columns 202 /Colors 3 >> -/SMask 2324 0 R +/SMask 2450 0 R /Length 3532 >> stream @@ -67468,7 +68957,7 @@ c _L[.-@I]h,2 8ai=?LHۃE80jC @ @ @ @ @ @ /;; endstream endobj -2324 0 obj +2450 0 obj << /Filter /FlateDecode /Type /XObject @@ -67497,7 +68986,7 @@ fN +DBt6 H{. }W߷˧kի endstream endobj -2325 0 obj +2451 0 obj << /Type /XObject /Subtype /Image @@ -67512,7 +69001,7 @@ endobj /Columns 202 /Colors 3 >> -/SMask 2326 0 R +/SMask 2452 0 R /Length 547 >> stream @@ -67521,7 +69010,7 @@ x 㮄vq_ 8ڰ{ٍv7Æe4 =-d&~;u菡̠*DV%bIoiY2h`K^v{8ª1~qi$2R endstream endobj -2326 0 obj +2452 0 obj << /Filter /FlateDecode /Type /XObject @@ -67541,7 +69030,7 @@ stream x 0g-!8K=~^ӊQ+VDZ"jEԊQ+VDZ"jEԊQ+VDZ"jEԊQ+VDZ"jEԊQ+* endstream endobj -2327 0 obj +2453 0 obj << /Type /XObject /Subtype /Image @@ -67556,7 +69045,7 @@ endobj /Columns 202 /Colors 3 >> -/SMask 2328 0 R +/SMask 2454 0 R /Length 664 >> stream @@ -67565,7 +69054,7 @@ x ^ R\԰Qߤrk/v!A7j{=ޞS+˧֪KUVVb5&G ?w'b;|s?=m'ko^m/ݟXr'o_-^rKXv`> -/SMask 2330 0 R +/SMask 2456 0 R /Length 511942 >> stream @@ -69268,7 +70757,7 @@ f 3B!f!B!#*B!BGT!B!ޏ0C!B!/ endstream endobj -2330 0 obj +2456 0 obj << /Filter /FlateDecode /Type /XObject @@ -69376,7 +70865,7 @@ h-΀ Yr*&}l|'~وqmGe9ji }:MJefh nqnOLj$'U[ކ,L1QexV >[2xOmү0&tϸ:v|zv8iV?nVy≄jL/$aD=g=!z(jongtEk4ΤucME Rl̘?Z <7XGKYĔ:;ŷiə$,_ƞf ٨M#.ۀN~kMTLβ1v,4nzq=auINi9bM;ȑ0X;ƌa3w0z,N-hZ)'n8_>2Rb&*e=[Z̀ ZrY_v(8I楍|1'32sF;Z2 pH|$UҰ[eh LDŽ/%9OHwf99V3b,ն-M h!:.dM&$ɟx3uFӝCtFL6 ' aDXK<-(fCkj+---$upDƻ8ۭL6e N{tV&,%eYA!AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAb,@ endstream endobj -2331 0 obj +2457 0 obj << /Type /XObject /Subtype /Image @@ -69391,7 +70880,7 @@ endobj /Columns 727 /Colors 3 >> -/SMask 2332 0 R +/SMask 2458 0 R /Length 8085 >> stream @@ -69421,7 +70910,7 @@ Y 7Gd"qߍPuu+bԬ# !bs-)ziy,aqJvVb{ c4"U%b\(seXVO̊a\*m>E^}岌?%ػ 7Ҵ;&9<-9uO-qbtwncn!P% @79glb"P#^کQ1Z`@D]̂ QjKU A\3z/ t=܁3 ubw2:@Fvw/,SSMBã endstream endobj -2332 0 obj +2458 0 obj << /Filter /FlateDecode /Type /XObject @@ -69441,7 +70930,7 @@ stream xA 0C!YZ{lς;5E"_Sk|M)5E"_Sk|M)5E"_Sk|M)5E S; endstream endobj -2333 0 obj +2459 0 obj << /Type /XObject /Subtype /Image @@ -69456,7 +70945,7 @@ endobj /Columns 721 /Colors 3 >> -/SMask 2334 0 R +/SMask 2460 0 R /Length 13952 >> stream @@ -69507,7 +70996,7 @@ h'2 lE~*&Ƌq["^PWī6F{Ɔ5E`Q8&cy|w2h-GMxbR\mLM5֋Vel鞛]cC_onl0؝G*jz5> -/SMask 2336 0 R +/SMask 2462 0 R /Length 8276 >> stream @@ -69572,7 +71061,7 @@ m a*^/oV!6Ī A8kh++NmeJ#k,xͿH\ڷ̫a̅t^ΕCU +|]DwZůjwMVݱZvmz5BFF\簯K6G~Pul_#@HkQ)rg+%^F?&q endstream endobj -2336 0 obj +2462 0 obj << /Filter /FlateDecode /Type /XObject @@ -69592,7 +71081,7 @@ stream xA 0C!YZ{lς;6UަTy*oSmM6UަTy*oSmM6UަTy*oSmM6UަTy*oSm.? endstream endobj -2337 0 obj +2463 0 obj << /Type /XObject /Subtype /Image @@ -69607,7 +71096,7 @@ endobj /Columns 717 /Colors 3 >> -/SMask 2338 0 R +/SMask 2464 0 R /Length 7952 >> stream @@ -69634,7 +71123,7 @@ b |cfbFʼ@~NmT82VWC+wvp^9AD"6n֪kB_En&SwlܜLBp~lh! j |W00)L0'I·j|BvjO[9x)L|wZ]uFuM|#KxQ> -/SMask 2340 0 R +/SMask 2466 0 R /Length 1322 >> stream @@ -69681,7 +71170,7 @@ F ؐ6jF :V/a(f$ov`g7VF0X?ݙ/O}㻽[ҰxӸ#i˧ͧ+g 9q@0S_~Z^~I}4L|MGxo7{{:I3e@MZ xѼ}XLG@dgvf 7nwXI"9<ڣ:wv%\ 爈_!oe endstream endobj -2340 0 obj +2466 0 obj << /Filter /FlateDecode /Type /XObject @@ -69701,7 +71190,7 @@ stream xcπ0- endstream endobj -2341 0 obj +2467 0 obj << /Type /XObject /Subtype /Image @@ -69716,14 +71205,14 @@ endobj /Columns 200 /Colors 3 >> -/SMask 2342 0 R +/SMask 2468 0 R /Length 279 >> stream xA @g-.{}u2 c0 c0 c0 c0 c0 c0 c0 c0 c0 c0 c0 c0 c0 c0 c0 c0 c0 c0 c0 c0 c0 c0 c0 c0 c0 c0 c0 c0 c0 c0 c0 c0 c0 c0 c0 c0 c0 c0 c0 c0 c0 c0 c0 c0 c0 c0 c0 c0 c8 endstream endobj -2342 0 obj +2468 0 obj << /Filter /FlateDecode /Type /XObject @@ -69743,7 +71232,7 @@ stream x 0g-!8K=^҈M#F4h4iDӈM#F4h4iDӈM#F4h4iDӈM#F4h4iDӈM#F4h4iDӈM#F4h4iDӈ4 endstream endobj -2343 0 obj +2469 0 obj << /Type /XObject /Subtype /Image @@ -69758,14 +71247,14 @@ endobj /Columns 200 /Colors 3 >> -/SMask 2344 0 R +/SMask 2470 0 R /Length 283 >> stream xA @'TNAgz?HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH\| endstream endobj -2344 0 obj +2470 0 obj << /Filter /FlateDecode /Type /XObject @@ -69785,7 +71274,7 @@ stream x 0g-!8K=^҈M#F4h4iDӈM#F4h4iDӈM#F4h4iDӈM#F4h4iDӈM#F4h4iDӈM#F4h4iDӈ4 endstream endobj -2345 0 obj +2471 0 obj << /Type /XObject /Subtype /Image @@ -69800,14 +71289,14 @@ endobj /Columns 200 /Colors 3 >> -/SMask 2346 0 R +/SMask 2472 0 R /Length 284 >> stream x @u1*8fhyd> ں?HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH endstream endobj -2346 0 obj +2472 0 obj << /Filter /FlateDecode /Type /XObject @@ -69827,7 +71316,7 @@ stream x 0g-!8K=^҈M#F4h4iDӈM#F4h4iDӈM#F4h4iDӈM#F4h4iDӈM#F4h4iDӈM#F4h4iDӈ4 endstream endobj -2347 0 obj +2473 0 obj << /Type /XObject /Subtype /Image @@ -69842,14 +71331,14 @@ endobj /Columns 200 /Colors 3 >> -/SMask 2348 0 R +/SMask 2474 0 R /Length 283 >> stream xA @ T#kHȝ>:^M"a,"a,"a,"a,"a,"a,"a,"a,"a,"a,"a,"a,"a,"a,"a,"a,"a,"a,"a,"a,"a,"a,"a,"a,"a,"a,"a,"a,"a,"a,"a,"a,"a,"a,"a,"a,"a,"a,"a,"a,"a,"a,"a,"a,"a,"a,"a,"a,"a,B endstream endobj -2348 0 obj +2474 0 obj << /Filter /FlateDecode /Type /XObject @@ -69869,7 +71358,7 @@ stream x 0g-!8K=^҈M#F4h4iDӈM#F4h4iDӈM#F4h4iDӈM#F4h4iDӈM#F4h4iDӈM#F4h4iDӈ4 endstream endobj -2349 0 obj +2475 0 obj << /Type /XObject /Subtype /Image @@ -69884,14 +71373,14 @@ endobj /Columns 200 /Colors 3 >> -/SMask 2350 0 R +/SMask 2476 0 R /Length 285 >> stream xA @l3dSGπHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH  endstream endobj -2350 0 obj +2476 0 obj << /Filter /FlateDecode /Type /XObject @@ -69911,7 +71400,7 @@ stream x 0g-!8K=^҈M#F4h4iDӈM#F4h4iDӈM#F4h4iDӈM#F4h4iDӈM#F4h4iDӈM#F4h4iDӈ4 endstream endobj -2351 0 obj +2477 0 obj << /Type /XObject /Subtype /Image @@ -69926,7 +71415,7 @@ endobj /Columns 27 /Colors 3 >> -/SMask 2352 0 R +/SMask 2478 0 R /Length 1259 >> stream @@ -69938,7 +71427,7 @@ x gҩrlo>999`0M@i=+ s]LP@\T*X"g@ŊKEKR\iP0А(s{"D"_h44Ȍ_<8ݵ)IV?K:Rg\~##""ΙaWrc>ڱ,SJ+lxKY퍎JB) DTU;q{{K߿JgMm@) v]\L}ץ2"$8G/bP}{ dǏgd>jaBnz> -/SMask 2354 0 R +/SMask 2480 0 R /Length 284 >> stream x @u1*8fhyd> ں?HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH endstream endobj -2354 0 obj +2480 0 obj << /Filter /FlateDecode /Type /XObject @@ -70000,7 +71489,7 @@ stream x 0g-!8K=^҈M#F4h4iDӈM#F4h4iDӈM#F4h4iDӈM#F4h4iDӈM#F4h4iDӈM#F4h4iDӈ4 endstream endobj -2355 0 obj +2481 0 obj << /Type /XObject /Subtype /Image @@ -70015,7 +71504,7 @@ endobj /Columns 27 /Colors 3 >> -/SMask 2356 0 R +/SMask 2482 0 R /Length 1039 >> stream @@ -70030,7 +71519,7 @@ y (tKZD4R7x<e [!nH1 tnrܙcڱtPU1R(q D9&9л|͋w;5YVASO+6υ|GOJ endstream endobj -2356 0 obj +2482 0 obj << /Filter /FlateDecode /Type /XObject @@ -70050,7 +71539,7 @@ stream xcπ0- endstream endobj -2357 0 obj +2483 0 obj << /Type /XObject /Subtype /Image @@ -70065,7 +71554,7 @@ endobj /Columns 27 /Colors 3 >> -/SMask 2358 0 R +/SMask 2484 0 R /Length 298 >> stream @@ -70074,7 +71563,7 @@ x Pⶨ7jMd"6:5*}W_wYK%m*b$A2Clh{:K7잿iiO endstream endobj -2358 0 obj +2484 0 obj << /Filter /FlateDecode /Type /XObject @@ -70094,7 +71583,7 @@ stream xcπ0- endstream endobj -2359 0 obj +2485 0 obj << /Type /XObject /Subtype /Image @@ -70109,7 +71598,7 @@ endobj /Columns 108 /Colors 3 >> -/SMask 2360 0 R +/SMask 2486 0 R /Length 3629 >> stream @@ -70125,7 +71614,7 @@ C *fwyj2ZC")+ݍsk;ۼ;ypKw)xHrRa&4'{/g??~ +-Jye=X6Kb @,A%hm X6Kb @,A/DJTbiJ=oT=SyJ,m~m. 3F endstream endobj -2360 0 obj +2486 0 obj << /Filter /FlateDecode /Type /XObject @@ -70146,7 +71635,7 @@ x W)-`y>n>k y0 endstream endobj -2361 0 obj +2487 0 obj << /Type /XObject /Subtype /Image @@ -70161,14 +71650,14 @@ endobj /Columns 108 /Colors 3 >> -/SMask 2362 0 R +/SMask 2488 0 R /Length 389 >> stream xN0@Q1/[Tzx¥x<^xE("PD@"E("PD@"E("PDm珏XUyoJ\,OfZ4t;O|ǓO(9A;xѳnNv~;?}}>];8?ϥӼ?v\/ cE("PD@"E("PD@"E("PD@ #~]s}uU=caLε¬=^,.8s#feɹu;&]arE+ ("PD@"E("PD@"E("PD@"EK endstream endobj -2362 0 obj +2488 0 obj << /Filter /FlateDecode /Type /XObject @@ -70189,7 +71678,7 @@ x [9d2L&d2L&d2L&d2L&d2L&{A endstream endobj -2363 0 obj +2489 0 obj << /Type /XObject /Subtype /Image @@ -72574,7 +74063,7 @@ Du ֤aaaaaaa;k 0 0 0 0 0 0 0̝5iaaaaaaaN40 0 0 0 0 0 0 s`MaaaaaaaS&0 0 0 0 0 0 0 )Xfaaaaaaa endstream endobj -2364 0 obj +2490 0 obj << /Type /XObject /Subtype /Image @@ -72599,7 +74088,7 @@ x cfkt pYJ~Q*,krjSueLͦfNJ'Ri\L?=y.gmf0E藒}h>ycd1(?-墇<}(!<=[JoBwyx.mZ2T>pQljLJd)띮`S? Χr)F_Z,Bv}m>vsQ 2;<+>/I;y'<B!C!D"x<B!C!D2}~w̷_E9!D"x<B!C!D"x<B!<:~{/}"x<B!C!D"x<B!Cy<ܗyo"x<B!C!D"x<B!C!D"x<B!C!D"x<B!CsY_;'<B!C!D"x<B!C!Dr𳙇Vm^}6'<B!C!D"x<B!C!D>~i|sC!D"x<B!C!D"x<Bxs\# endstream endobj -2367 0 obj +2493 0 obj << /Type /XObject /Subtype /Image @@ -73123,7 +74612,7 @@ c B ;3z ҿm }nNwz}n u;/ۖ> -/SMask 2369 0 R +/SMask 2495 0 R /Length 6746 >> stream @@ -73223,7 +74712,7 @@ m <7 6 6 6 I endstream endobj -2369 0 obj +2495 0 obj << /Filter /FlateDecode /Type /XObject @@ -73353,7 +74842,7 @@ x N'BQ endstream endobj -2370 0 obj +2496 0 obj << /Type /XObject /Subtype /Image @@ -73368,7 +74857,7 @@ endobj /Columns 755 /Colors 3 >> -/SMask 2371 0 R +/SMask 2497 0 R /Length 7230 >> stream @@ -73383,7 +74872,7 @@ $ >.4FogU[}(el> ЇP6@C}(el> ЇP6@C}(el>f>Sx;.~ޭj+x[2xy*YOFsC6f1;wP[s8ƫ=fl> ЇP6@C}(el> ЇP6@C}(el> ЇP6@u^Oz5zO`\%a2$q7'o_u.ۏcv!? чbX)M]n1kE}(el> ЇP6@C}(el> ЇP6@C}(e1[ euWxpd 8^ϗz7Ϝh>@lN ЇP6@o endstream endobj -2371 0 obj +2497 0 obj << /Filter /FlateDecode /Type /XObject @@ -73404,7 +74893,7 @@ x ztς;<5xSyj> -/SMask 2373 0 R +/SMask 2499 0 R /Length 12579 >> stream @@ -73459,7 +74948,7 @@ U oL9/4﫞s|-ɗ޷r=F_)! )! )! )! )! -H endstream endobj -2373 0 obj +2499 0 obj << /Filter /FlateDecode /Type /XObject @@ -73479,7 +74968,7 @@ stream x1 0qݳnjd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3aF2H0#f$Ìd 3qI endstream endobj -2374 0 obj +2500 0 obj << /Type /XObject /Subtype /Image @@ -73494,7 +74983,7 @@ endobj /Columns 190 /Colors 3 >> -/SMask 2375 0 R +/SMask 2501 0 R /Length 6183 >> stream @@ -73530,7 +75019,7 @@ J ʩDѤbF%}ٮ>,A I!f :Hts#ԹWF>`~et ?{04޼K63v:Nvt '|n<ϗ"[`w#vQg;bGuv#vQg;bGuv#vQg;bGw\ endstream endobj -2375 0 obj +2501 0 obj << /Filter /FlateDecode /Type /XObject @@ -73550,7 +75039,7 @@ stream xA 1!GCrU=gGԗKR}T_/՗KR}T_/՗KR}T_/՗KR}txT{ endstream endobj -2376 0 obj +2502 0 obj << /Type /XObject /Subtype /Image @@ -73565,7 +75054,7 @@ endobj /Columns 190 /Colors 3 >> -/SMask 2377 0 R +/SMask 2503 0 R /Length 2812 >> stream @@ -73588,7 +75077,7 @@ x rq&V endstream endobj -2377 0 obj +2503 0 obj << /Filter /FlateDecode /Type /XObject @@ -73608,7 +75097,7 @@ stream xA 1!GCrU=gGԗKR}T_/՗KR}T_/՗KR}T_/՗KR}txT{ endstream endobj -2378 0 obj +2504 0 obj << /Type /XObject /Subtype /Image @@ -73623,7 +75112,7 @@ endobj /Columns 190 /Colors 3 >> -/SMask 2379 0 R +/SMask 2505 0 R /Length 675 >> stream @@ -73631,7 +75120,7 @@ x 'SܧEۥtfF / / endstream endobj -2379 0 obj +2505 0 obj << /Filter /FlateDecode /Type /XObject @@ -73651,7 +75140,7 @@ stream xA 1!GCrU=gGԗKR}T_/՗KR}T_/՗KR}T_/՗KR}txT{ endstream endobj -2380 0 obj +2506 0 obj << /Type /XObject /Subtype /Image @@ -73666,7 +75155,7 @@ endobj /Columns 229 /Colors 3 >> -/SMask 2381 0 R +/SMask 2507 0 R /Length 2647 >> stream @@ -73684,7 +75173,7 @@ N 222BkDDDCCϟ{{{5X,޹s  |ƠOt[2Apϔ-nׂ|P禸xgys_͋Z|  ^#p,C>m&TF-#eR>gØ!~7A]o endstream endobj -2381 0 obj +2507 0 obj << /Filter /FlateDecode /Type /XObject @@ -73704,7 +75193,7 @@ stream x 0L]?QЮ5^vs.;\vpe.;\vpe.;\vpe.;\vpenj^~ endstream endobj -2382 0 obj +2508 0 obj << /Type /XObject /Subtype /Image @@ -73719,7 +75208,7 @@ endobj /Columns 1200 /Colors 3 >> -/SMask 2383 0 R +/SMask 2509 0 R /Length 30497 >> stream @@ -73790,7 +75279,7 @@ i `cjh` le~w P2'd ̸W᭾vE7,#*}%CBA5b'}DBVPK]pSy*9@O0|Q]XTȆ1lɧ|ABzXqweaV?P/$ kIJ4F2V6bީSOpBіXHJ+te"XQ[@ _ endstream endobj -2383 0 obj +2509 0 obj << /Filter /FlateDecode /Type /XObject @@ -73881,7 +75370,7 @@ QJ sۉ&bP:#۞6QJ7D䬐b\ꔥ&ŸESdbџ8)vt XIJ)n2R:m')P?ۮ)g;-&Y JYJi o],zd\+~N,(CvB)Ydw}~OVsw 5r = |loŦ猎[T?{}n2(7h/K֘xpܯXpgW ;ARBH;B2onHdכvXO A`AӇ]ji[]њuyT<6NTŋ.V:jsO> -/SMask 2385 0 R +/SMask 2511 0 R /Length 12986 >> stream @@ -73947,7 +75436,7 @@ y7c dxyqۓӫ8beh滷Z+tJt]wg!t_\zu]FSu?̯W/܄oMp#촎PaWc6?XF,Hn2x(-9D!fN%רJ\ךj꺎m;iRN *B$qN/`4x8LP$0nئkV+{ђ5waCDO?tuu-*aB,vclZ o >9ғs -xyrsfbgRH Riɤ7ȯTڶe PHE7ǓIL0S$ ?@ze@RRp8:99q V`³:`?+Z8\.# m1 ]R-R&s=eaٖia˼PJHIFq%I2w\r!屜3h+Ή:L:7r8MpyEb -&]J$rfXo2*ͱPJCb#&PJa{am7p^qˠ9m;W;RJ$I5HTnY3dr:Ă;::p棺~7_L endstream endobj -2385 0 obj +2511 0 obj << /Filter /FlateDecode /Type /XObject @@ -73968,7 +75457,7 @@ x 2&bX,bX,bX,bX,bX,bX,bX endstream endobj -2386 0 obj +2512 0 obj << /Type /XObject /Subtype /Image @@ -73983,7 +75472,7 @@ endobj /Columns 283 /Colors 3 >> -/SMask 2387 0 R +/SMask 2513 0 R /Length 6824 >> stream @@ -74025,7 +75514,7 @@ _n(3g )9ssR\UD9CۼNؓw79y{Z[@Cwv ]6oAD?]}&QNn94XWe*TXKODtgPTN";Ol%GZ.5 CG#"+yӶ2Fa({y2f/+ecSIytx6,3z"Lʽi\@xyTʶ@7s W_/?f_ ΣS !wݪ<::jQ _酿і_wM{m˦(ͧrϾ<#awU%ʩELUNO !ɶm[q;}maxP$TEl9d1ovZo&]sQ;ʓ׭9΍e`zG;0P^>^NjHEFrULcޠYZ,2m[|?~+x"Զ{oγ`7[~ =#`ݸWxTDDԠ{&*{݇mKHKHKHKHKHKHKHKHKHKHKHK: endstream endobj -2387 0 obj +2513 0 obj << /Filter /FlateDecode /Type /XObject @@ -74045,7 +75534,7 @@ stream x1 0GAgY:c4o7͛MyӼi4o7͛MyӼi4o7͛MyӼi4o7͛MyӼi4o7͛MyӼi4o7͛MyӼi4o7͛MyӼi4o7͛MyӼi4o7͛MyӼi4o7͛MyӼi4o7͛MyӼi4o7͛MyӼi4o7͛MyӼi4o7͛MyӼi4o7͛MyӼi4o7͛MyӼi4o7͛MyӼi4o7͛MyӼi4o7͛MyӼi4o7͛MyӼi4o7͛MyӼi4o7͛MyӼi4o7͛MyӼi4o7͛MyӼi4o7͛MyӼi4o7͛MyӼi4o7͛MyӼi4o7͛MyӼi4o7͛M endstream endobj -2388 0 obj +2514 0 obj << /Type /XObject /Subtype /Image @@ -74060,7 +75549,7 @@ endobj /Columns 702 /Colors 3 >> -/SMask 2389 0 R +/SMask 2515 0 R /Length 30262 >> stream @@ -74173,7 +75662,7 @@ a !BB`t@!P0: Bꎓp endstream endobj -2389 0 obj +2515 0 obj << /Filter /FlateDecode /Type /XObject @@ -74193,7 +75682,7 @@ stream xA 0U,:} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0v endstream endobj -2390 0 obj +2516 0 obj << /Type /XObject /Subtype /Image @@ -74208,7 +75697,7 @@ endobj /Columns 691 /Colors 3 >> -/SMask 2391 0 R +/SMask 2517 0 R /Length 27680 >> stream @@ -74314,7 +75803,7 @@ K$ɪԙ  zjaxr͛Yt2vi-{CGrG5tmB#CIzCMBvOL~msDpkn]뮫gjpDq("g U1uuz}s㲠j%Ne%2|'!DFtm$wlr(Tf"Ne%:ړ> ;شiVI 9<> -/SMask 2393 0 R +/SMask 2519 0 R /Length 18179 >> stream @@ -74445,7 +75934,7 @@ I KX1ˆ"p/R8^8-um>xp^8-k} endstream endobj -2393 0 obj +2519 0 obj << /Filter /FlateDecode /Type /XObject @@ -74465,7 +75954,7 @@ stream xA @g"%{pm{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{7 endstream endobj -2394 0 obj +2520 0 obj << /Type /XObject /Subtype /Image @@ -74480,7 +75969,7 @@ endobj /Columns 696 /Colors 3 >> -/SMask 2395 0 R +/SMask 2521 0 R /Length 37577 >> stream @@ -74688,7 +76177,7 @@ ENN B!n)E|PbE] B&6(\!B endstream endobj -2395 0 obj +2521 0 obj << /Filter /FlateDecode /Type /XObject @@ -74708,7 +76197,7 @@ stream xA 0U,9qI2.I%ɸ$$d\KqI2.I%ɸ$$d\KqI2.I%ɸ$$d\KqI2.I%ɸ$$d\KqI2.I%ɸ$$d\KqI2.I%ɸ$$d\KqI2.I%ɸ$$d\KqI2.I%ɸ$$d\KqI2.I%ɸ$$d\KqI2.I%ɸ$$d\KqI2.I%ɸ$$d\KqI2.I%ɸ$$d\KqI2.I%ɸ$$d\KqI2.I%ɸ$$d\KqI2.I%ɸ$$d\KqI2.I%ɸ$$d\KqI2.I%ɸ$$d\KqI2.I%ɸ$$d\KqI2.I%ɸ$$d\KqI2.I%ɸ$$d\KqI2.I%ɸ$$d\KqI2.I%ɸ$$d\KqI2.I%ɸ$$d\KqI2.I%ɸ$$d\KqI2.I%ɸ$$d\KqI2.I%ɸ$$d\KqI2.I%ɸ$$d\KqI2.I%ɸ$$d\KqI2.I%ɸ$$d\KqI2.I%ɸ$$d\KqI2.I%ɸ$$d\KqI2.I%ɸ$$d\KqI2.I%ɸ$$d\KqI2.I%ɸ$$d\KqI2.I%ɸ$$d\KqI2.I%ɸ$$d\KqI2.I%ɸ$$d\KqI2.I%ɸ$$d\KqI2.I%ɸ$$d\KqI2.I%ɸ$$d\KqI2.I%ɸ$$d\KqI2.I%ɸ$$d\KqI2.I%ɸ$$d\KqI2.I%ɸ$]F endstream endobj -2396 0 obj +2522 0 obj << /Type /XObject /Subtype /Image @@ -74723,7 +76212,7 @@ endobj /Columns 1222 /Colors 3 >> -/SMask 2397 0 R +/SMask 2523 0 R /Length 127078 >> stream @@ -75200,7 +76689,7 @@ RhR 5Az׫긭o">t6?R9R9қ&^?9cZxѧ͗ kkf. &$hR$hR$hR$hR$hR$hR$hR$hR r endstream endobj -2397 0 obj +2523 0 obj << /Filter /FlateDecode /Type /XObject @@ -75220,7 +76709,1266 @@ stream xA 0CU,;q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6gc@q6] endstream endobj -2398 0 obj +2524 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 240 +/Height 252 +/ColorSpace /DeviceRGB +/BitsPerComponent 8 +/Interpolate true +/Filter /FlateDecode +/DecodeParms << +/Predictor 15 +/Columns 240 +/Colors 3 +>> +/SMask 2525 0 R +/Length 16767 +>> +stream +x}tTy:3g4#h@ l [`cnmȸ+7M +;Y@UdKokj_}~VIX-DVx'ڂOm3 k ﶽχ*Bu]裏vܹ OTs;aXMQ&8H%FP]Y[C>.)NTC>+B?8\@P#HTs󩖎=O6&UOՕYPt,㏿/WWWOvN$t>D"V|kDؤ%wfV_E_iPAiγ>O ۹bݟqQ'|]aT}iɓW]vaϦf߱R\;3V ~/5c'UP?jnQ{D l mu/V tl}XM>NX_Yw5~(?rj>~٦>)_,zZOZgz'{>o]M!38^xromjOʪ[5tP+]^<%{gۯ%۫^C}=Z:U\gJ[o9MzYQyKD٧[W.7(LKv :th)6Z~S#t@}er ->tziGk^v=CX'^uWi+[˿^QB-+5Cǫl[@ +&hLj7n&p珿V/T7=U__ peh0 +%jvy񱖎(*(Sꇫ{yҕ>_EݠSSH +\e"q a]Bg,1{$|ղ"Ӣw:|%s5(lny'v?6 ݌HKI-4缻}v)6E$Ѧw2EH{÷O\w_Owu<~߃OXe?:RimM?SulC!td+Gsv[2Y!rſn5]>^ݸbF#?yв'j*^ "BeR  + +RW3 E9~s +5֕ 9$nvڰ:[_8hOБ M۪;@Zi +7+bhynC]S5״q,$qܹ#{v?/7ۘҵ(yuSϽeJD`*;vzk yy>S׿jO "k#3zlJ,\_s:߻$[~38?Xc[my;kRR&7*g2V-v݂S}쟷&n ^J&ɶ{Wj>IT}@jZvl r${gT [6Yb&mU؂*lAdm޲eBwfV ہ%h8U/؜__r+|r#+w{4a':fa.QN g -j1~;K#_ѫi0Y'|I't6mE-h+(A{= rR'qD%6]НbhALDi6ήx H-MF|ƶdܑkچh)iۼie&tv&瀆֒o%{fiٕcqE"IsKlf +ytHkSfNL,t}?.jk@KGP!V81šM'M6Bstsٶ=)ahF 㙨2"/mY33kPWUR;#1Dqa,>[ǀ&7MG4ԙa_h=Zp-p'2Mz +*֦OU0}F4n]M$xoaDn2qhMO>&2 %Sqj˭h9쐝x$aܙAuB?93 tߚT[KЏS5~c`ĸ0dI}\菚^CWnj:MdL+w۷=7 tpw rZWt445j*'c|c^һwvẇvy w\qL87MQ1gC^!uF.ˌ L D[MYxr 0^|훊FV2##pOⵟu縄_O+ؘ[Xd$>fqosLc ܺ, #MȥtWɄOה\/.2&uA_(ȕ\'24agnqV:^7g7 +oŲE{'9g9+b}Y"2f/I'jJ. J̺{"۳{?z}!%#'WO$)P49A#%@`AR0P0dbڜT!ugUTòuB}zΐ   rj&I-\P45ř(אM&Xq%.Oӛ +zLF+1f߰X\lٲ BvV[EY(޺G!(.*?}HO;0Q_ѺE"OJTd<~Wxh,oCg\eT-8zLhoO=! 1SvhbBԍ&:=>Ag:[v$R":`:3X߭[-@(D@BTV]u<ޮDs@F2121!3n@rz,8*.-g?oAVU-Gռ%*j23 =Fzí[7$'h1D"c1~PGNń -gUɦս]#3M=s.ujr$Yu{+Y}gN3i覞݊t_̜Wh Zu.._l<ԑhyoXYR  fH sf5U ؙjunβX+8pXjO<],[sW?wcVa;(+h]21K1f3Su'sTl7*J9Vv'Wdl]l| u.*6 cՆ͉耞gc"V0[fƌF2拲]*JDt@OyvL܌ ;„RQ"(L +W޻BaB QAEAR@_ 3COCUB,+yoh9p'K"T@#„ +uxr]Z25'WeQq@Hn\ +z+QA$;\\GNnpIg,rFgp ГSޛ\)Ř @pN%MBlMXFג&K-;+K +#+.Lr΁31ܺ 2x~LwdV[>u*gf%F2.ܲ˝ YJ%IcRQFPQLD#=YfA*}؆:@2>L&39Gip8gּ,'9qoX+EEWLH2sf&jߘ#ts7Sw'Or>AVB$'11 Ęh9-"ˆPcLD b[[x#'7{SL#L#)HzRյ t:V-\_'}F29o7 Q5ϘCsy^SRr8csM= sθiq++uO̞E*hBrzDA *SO~XdBh9+߽xCF']i$D 7og?b:D(ZyWi"VwHĝq,:AG{{_牁H-lH&EId,_ofԑ$}z21Ldm3fٗB4w؂^Xi6 ؤ-hMVa &mU؂*lAdm +[6Y-hMVa &mU؂*lAdm +[6Y-hMVa &mU؂*lAdm +[6Y-hMVa &mU؂*lAdm +[6Y-hMVa &7AW79S7_7Y4ԟ̓Ԕw7׷U, +klk+....~9\^{zLڼkCM;jaCZYm?9}."4F;̢͋"]?k +?D?Wl8sttu;?&+ k_*ʡ߱@wY dm#ݝs|jv\J+2yп5 +\:|f aVD E/ T ΧT7A Cm{H+78R_UM5su/:W afhl  r~Hb8 k ThΝw_7^VeI + +יPW&$>hi>|B(*go<HRC#ioݮzUﯬ꺯l׃G/r塿 x"g*k[-t_F_Wvڅ~Tp3y$N~dBϵ\$>*K[aۑC[쳵S4qϑyDNWGTSh5บ!{Pٓ?c"]|`0|5#;:(9qۻmo7ya^<0t{i;հKo vb} GvuO>K!enRJ3Mk_g?ى [~W_N?F5HʲWC͖;q o pvSUgOm*xZBQhT;F_URzy'6WVUZf߆7j HCGo?xvWqZ(;tuB-ͧ[BoWWxzk@tjn΄k?=~٦w?K֓>Nʏ=}-~OLu;(*_w~WqΚ / +Z2bСCW,M"}Zr }K@OnR0_Jﭣkz?x@с^WZVu૏~U“]C+Ie)T7˯N>G;#JrhEg'7v zS𫓻> PqwˇUip_Tons;7ITУI_߷l*D;[se8~є{Y';J&w%AX7oj3L!$& ;ܗv`ھW _͉zQun[6T㹷H+ƍwD}H @|_c/yT`}gS+d+:-o]he+}?{ed zBOko|ӍG p%g.c>:*]8s̤soi +T=O|F⃖rCÅO+, }{>D$6|pr {[?\#{kxv +k[[UE)I<2J\k ;Q(C/<چ?{nܾoJK|>έ'EWȥtǹfR  + +RP34;l̔pɃ<w>0!hdj)+ ͣ'(MyhyCw]N<3_wE%~-Vj+_Tsп:;@Z>Z/t$oӶn7.(w;?9eR !O?GǼMgSv3] g9ՊZ-(|۹е8|B zZO>7>V~Ez;\q?:*/[/W[xÝu[MCe[KDǧ@7mwy3:Aox}GkW6^yհc wglz/t^Cn,]ExcQ<3^7xx㯟޷ķ6D"rt'*?=0ZyaѱÁAUvz/l|?nzO{W[7qwao* nj <^*6VVD:lhtO_Mܿts  -_^RQ  =zpCCۋS]O|wo*-I +\k?LmnHh+}dٚVvcrM%$r4cAEEEV'P^w*~)Q:;zxgmz'F^K+ۮTDl,{B 5EfXlk +ڝwU)i略rLr9llMVa &X\-[,tlfł +Z\ELH[7=}ISH*'R1P5OK-:A/R F ݏ!dzbH&d a-tS! dqC61xLLCDŽPA\N̈́2 B(,ۀ)ń0fp TS3av?lklDł`*`L$d pTAWhOB t0bmyV]\ $ŁNA#T̰kl kʴ/NB wQɡ'v>h,{q/Y^׋ANDB3FEQaPF\&~R!ݰws/M ޣ=4߼^d1FXR ݗC!ĆMAE%Y<>vM'R +dpP8#,$#DYg !9c&#QAOdO*T(ǤTᚋA!DTTIub3Dr0ӤT2rd8s,I,BTTvjsa]wdi[!` B)2ٓ-T=MJgR!-&~R!@&ڥڪ0c;ֆX߼a,Hrg|a,)ΙeE1.X$JEL) v*ژAOBJA^ܻjihIu3t*J0^$gj]eL`:g̑㝇:zCЃX\-Ƙ +"̛9^1COn4TTT>"a) -*&4WΜPҠxAs¹&[0$nj9qSEIIw *4E1A`9 +3 ΃jͰ",za@A,6euƲCDH&Làn81Iqd*cDJ>6u8=yPҠ1Qcpl\% pƙi Qc&3 QVӵИ +rf~"sI3SY:14ƂE9Fv8]̦5Y"hg̴J @NϊX<Ci93 QQ3&hY8\(i#'w~"Zd3&Bsf2 ɀ#TsIIB"HȰ4 AVAK"3F&pܘBXՉsĕ&+ &1faB$#e +3&)t3H1sx#o4ITNT4_Rոc@‡AFtڽ!}C?3ͩ]f֎oi5 +eS;T1Y*IY!hL0 ?}fT-+T>8}ߢz4kL*JCRiV x~g&ak2fAR$sx36ZUU4aAά](g|psżeA֚B>rLg&8EwP&69NӇhyF29LNWfk7JMvScs)BB~v6VKħmSeLR4rCv9禑Bpfr`Cˬ!;0gZ2UlYF#6q0f"R,dS!)cvx$ܴ32nEYdԧ |*'0!a:dԈJعƉᜦ9WM~eVШ²S`9QQ 8:43tgЇV5FC:ۅe awASXI79͓Lq1= ӥzÔR RI*( s}(!R31Vr˛/9#7U}GF!Rc&!ԞX'-Ӳ&! + teCKKМqAV3C.7!)Ѓ+L)&ZhdE+C`ؤ·qL)")}PGN F2&c v IuaM35 mZSvnՍmAe]k9.XMC#Em=IIR[S q +sRm&} _:O봂u顯Y45$35MyUm'3ղC12! :1c Jc^V =ʼ0^4DY10og vANΙiR&,4&ԙg1K +Pu_( 5MY1̋"]?k +ϟ玵R[h96Q` ~$VN4h&ԻR*1w`):,{Lӓ;R L2Q<_m|GDNJ̇ }03RTfn#PcQQPn 0DO LܾP!A8pIuYW%raSF[X%e"]NPQ-/B(#[A)ǡ A[EASֳ:Ͱ +#Nj0UB258pΙfj!jYF*9L;Xռid{ Z^#|oo] +V.rq!I +NDvjA +1FMi-Ȋ+0Gc#;L~b:P~Y3C e>,t0g3 +P\]l>|,[syYM= fS`BTW΄{QNmzMCO< \TwYFR ޟqHqcф"3z ψyq9~5jP)tT|]ɺͿܷ]%;<'+KJ-,r/[]Qj=Ó'J|/ߗV BG j[*x`'llSzb-%ER ;> +/Width 240 +/Height 252 +/ColorSpace /DeviceGray +/BitsPerComponent 8 +/Interpolate true +/Length 297 +>> +stream +xρ 03_z6zp[úu 5kXװa]úu 5kXװa]úu 5kXװa]úu 5kXװa]úu 5kXװa]úu 5kXװa]úu 5kXװa]úu 5kXװa]úu 5kXװa]úu 5kXװa]úu 5kXװa]úu 5kXװa]úu 5kXװa]úu 5kXװa]úu 5kXװa]úu 5;ݛ +endstream +endobj +2526 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 3115 +/Height 1419 +/ColorSpace /DeviceRGB +/BitsPerComponent 8 +/Interpolate true +/Filter /FlateDecode +/DecodeParms << +/Predictor 15 +/Columns 3115 +/Colors 3 +>> +/SMask 2527 0 R +/Length 56014 +>> +stream +x?Pi/)Oω&D!Pc/8 TMhSW:\B[!"ġ\5h6mS;SFnл:}ZB<ՒZdj}Ŏ¸ `T bn +Ɯ9 +V˗ ]׽iSgnW|~0j`b`/_fivߧ ̪;^7~E׹ީ}&0'fx G ⸫}&0xܒbl6'y^ߧ 1+NH of4zp$rP(Z >Y%VA,..v],Ʉ46K+I ̵jP(l}{m\(.//upilW=@_O/_(i3gϞ,&@jW@GiP0!CwޣL4zp$΀f&aw^4+45!+`$bݻVno#&{FC `} LA=}ק pS:^##0/L +vm`}n׿ûO`h#>^TwB~{ӧO|׶,O6FyFL$׿_?b'޽kW]{lO +==fUƅBX,0}ټjRE|w^WXH ̲>ƗG\j{{˗/w>stE `f^u(`4I0]|q+`$fSZ- +=j6&fvyUPVʧ px V cyN\N4FNWI ̠Br9#]ި{RnuiWn:<M1 +H3Zvo, +O>}1L>rmE|c7 +(H3eEPK1LAQiL>ѻ `T՞sX`2/){4)H;4&G0i@_}Un cZ>4&G0i$^Z힡1g@jէ 0QF_ p- $ܖBٳ9_,}+ 04`p=ۊE&x5b3[Z- +c)3l@=Wo߾}%@Hӭ{ќ G_ b &<H `uOT§ 0!Gb m 0׿v/˗§ 0!z+@b=c,iLW!0ź^,iL>+`BH LɘEbʹB&D>^9L@Vj{ӧOG_ Өl^uO`<^}%U$`moo<^}yW@V -v{,0W |x}2 !6g  +>M }*`xCLI,F|S +&X\\w Lk4&Pg7`\$U*9F>ܽѧ 0WH0Q=LIp#>MH `vlooI&rh ' O 0< $`xH$I Ó@' O ̯V5'CӧOU 0]0NRG-I oVX̋-?n#+[>=!04gsmww?CC@_@H"Ñ@Sr@Oܔ<0pF$lp- +' oq0R5 Ç_⢹$M>}SfvwwᇑUr(=z4B7\\\qjzެn0UHHbT*\yQT*{O +k@ 0WtAEKKK,KKKQ]umtH ̑:,..~sѣGaꪃd ]0N>w L1 $j%$mH ,--`x૯?<|лpgvww"}ӯ[\4 s?p:#`n믿Gkܵ#m?Sw!H "~4͟ӧO. $`xG@OfoNH0'$!}Zָ p/fw.J6@ +Ç_M>}S}V[x6+Q=zh܅kiiiiio...kĵd64@*RIʣGJR{U$`6H 7'LE(&RE=jZۈFI :,..~sѣGa*IpgqÇ{n+FI 3_}ոK+FI 3KKK.jF\ 0JH$I Ó@' O 0< $`xH$I Ó@' O 0< $`x.&n*`^o~a܅,W0o_iZ[$?lZ|z>ʇ902HC,̕--W0_h6?G:ws`d+ ~pw_)V~?y9p@Cs~d9k6?sw!D?z zrpC(Г̧OďnA ,ЗC<>"`7#'́;'>_9P܈&p- +WVK#?́%3%c#`]ٵ0 >|_/.zlӧOB?* +p~l6/..wsyT,(zѸ 7|sqqqyv=f+ί`\u0'|7F*l̵>?/R)8̕GJbcP"2_Yί`Z֯*ansoQ---`,--EQtյ}_9ί`~hH 1׮J...̭Gat89QJvan wߍ`>|8f+sί`d>s0|7W_`9W0_\^^99́&=X܃]q~sLwssM 0< $`xH$I Ó@' O 0< $`xH$I Ó@' oq܍Vo%IV5}VU,;0?O#+b1OI *lkZ駋 #gܒHj6?sw!D E$`*}I0}7#'!$1 $`ʴZ-ݏ`$)DZLqpf 0|_̦O>}0?0`?񏫮*Q=zhc7\\\qjzެn0[VaF_{^U,K̕GJbFPqI0$o]uUEKKK,KKKQ]uU%L$Izn_\\֣G0yUe$?q%DyKn0$qyysW_}5J"CӧOU mq 9---`>~pݕ$^Ѹq_=J/BR *q0YZ׀F ׯ_u47>En}ӵaDk#ppp|}8s)reeeooCh"'ƏjZ6~/+I_(٩}Z_UbT*---$`=zaB* + ހ7Nt.fS/ɞJ$A׆{ҘU;l4-z=I\&WdAP*666nZVWW;z~m$I +`I ovUQZZZ{kjqn>VWWw.ClP]_M UJl{*r8??,//f_3 $ AEJ;!X4ܗl('O rl{'9مɺEQ;}iyyy,Qkr#O<޿xm(0 Mn,F=w#(>w ɥdmPAL=|!{R\m4kp># Ǐe_}Ո+&ÇZ 0 sɕ>q\xh tǏ{͝yU3{Yl”+[$ $kZ=/--`JTk{~~>JfdɅ{β]hAny'VVV'nr9{ܫ^l 8_r\>Jxkk޼y)EQE;;;VE/rkk+v>zqT*mwX `llld/~ ,v"sE6ئh@aejn$ɛ7o:F? ` Apttjnz~||mllk>E6A\[[YǏϳ_]] I m^__?;;d C>tAW +@ `2e/ZVaX*0Lht/REQeЋ/^~-|"777{Rz)O<-]/^V>DZsEF#WWW+m`&Y `EQ~?Iz3ˑ-EQn;Y`T*,hZ35U*oG `BItA8 (JQeϟh}%WvT<t0Mkm鳾m&DhZ[$?lZmZb~z`,$Ƭl^\\:R,djq0Z~Bmz)0fn6.!0@O>4C`I Z&~$ԑ@VПE `8?`,9l6/.. Ç~׋lӧO ## +nÈ6bEѣGFX0KKKKKK|EǭV Y `DZ֯bX*ď`>vWggg\pVWW/;sظ`=}P(s'܌{kӟ_zu;Elrcc,[[[e(?~2" H{M^vjR`={L#ZֹEQ{v!`f,//1y1~KR.g$I@W%0 AE!ԑkɓqUpO Z]@i^n6nٳgv{{B}=ԅ0Y8.H Zh4.JQJR4}$Is1 0 ΞJ$3}0 :es{!vV/)Igz8>==j=Osk)Uճŝ4T׏s?JU*uiJw9)C?99. +9iyUjsqyyUwLW$'''ɠ mRY]]-=`$ r|| A5 U1 8j7-,י)VjW>$9>>>99szR|PjCHً+++RIj>IOOO_xq1Hdooh\{8Rlmm0 .ߺ_[[[k~Z?H ^Xl O8~u< xYޞF_hp.cGFFc鏮~.L]LL ?Q^~};c0)_/ 0orצg[[[Ǐٳ0 _vzͫWz\~[*ҽLGWs )7^*?#4aX*E#IMyՓMoqZCT*J';0-{$Pe?~8vGr9'LcQeMLfb;N}j# /^tWQeS 0fi_;;;t՗(vvv~WE]uJh4NOO;[>ɹppO^d.O{Ԑ^PP_xh4?[e5Ȯ} ^8_~=fnBGn.BHÇ>҆=7T*It?\!&&0R4N;_>elnnҋ}A0q̻ x܏ VWW,˫-߿QGNs\S.~yNgϞii܇pWJ3~?^^^^^^.hyfga->8#7>~:wi;aɓ'O^>{VzߞQIL8mw\7CGډ(r8??>kSr;-QS^:F;$^T'=~VT +0{";)}]^^WJ_0BwB{)H%8>888??lITOBiWt3FqrrnJVHGGGFѿ R.a;(Dfx8::ڭ 8::vLi4Zm>y繇j5C1'O rܘ^ﳬQMD$_VG ð\.woq>T +@J tQ_ NK r9w^z¹Θ<_=- TV XXX(iSvݝ[o߾3f#=7fw4;˗/"(zE.ds||\T$IE%JR& :nQ=T*ALsL+Jn\*ݘx*Wi&)[M3n1}RDQ]+MJ;̕ܘ Q֍|VCp}?kW=~8;ah4%E ۬t///xrPA(곓pFw릞>~(ӢZ.,,bF5;~#nw!^kq1|wX'kssÇ$IjڵArr/z߿MU(̔ $IrrrKO#-G\wvvvOrʖ܀p^~ao 74AmX˒| +@ƣVuF_ r+hn3}F:I#mbq%ܥ'zvouu>'VWWkMW,_ɓ'هdɓ'9r9jRggg?O[EQTTҚyQ_q).7dMD[)ƀ̧L}IEپAY O/'M߉3fLj۷o߾]\\?qvv8HNb.ԭPr;sh <8se?axs'#ipLLpSH_ pK=Z\f2CiGA?^0 Ϩ\.̭$tÇ`z _K徠sıܢkkkC|nr>TU#Y~ٸVq'sWcn?R.+#Ri(Zv?rT*-//wg\$|1IFKJ10̾'s&&0\[[:'#սj5˯?~MQ\^[[^|^ JRFZYY4R$Z_~r K OOs^qsss\0 $`rEQ4dTʮ/ x܏T{yy99juaaP(^fF02? +z-R$xW.CG1>a~њv$jJe^lI<+J1 L ~S11auSGqsN_KN }vwyܹGvl>#Ǐ^)m)4677_zz-k^n5ׯ__? +puuuyyyGa6*cJ'&rhE$`D8>::nY]]T*C0];;4prrrmGlۤ J}'WVVlnn^4P5}<{aGAҸa6'+_^盛F#]vqy˗r5uоt: &ÍY{MNL$ׯW30 $yM+m_X[[===T*}F +8e7EQ\ "I㭭zM]=(vvv0~${̘Q{=nb&(?~O@:L1]; իI={$s\.OLLlmm]vripz~rr?&1Q$q +0 +ǹ&\;=Ldooih*4aFI˃ 8>><8'+̶t5#f\ŏ-QEQvH3[ngSry}}WrC ~QƏfo`tcm|+_;nIys1&H^-Qn r0 766DӘF6Z$I\~Qǫz8cmmM$[Z @۷o3fGA,//w.^}(JF1cvϯgw`!(^|^\lTv=wH|_hWdX[[ǏzA-Y]Ç-}kd>$ܻl=qU*J/~o$=vK)ݷ/^~:{*\jZgupww\QVpVg'~T(ӧOGYܷ9z %I2ٙA2i?ٵCgggً=S nXYY_. (Ǐ˵rӥҿkk`vvvrk2 >Y;=1q~~~~~~JIxﭭ[>0 _x*}s']?6-I L#aE$p5ܫN(Bݻ~WGZ1c3~Aged׳z^{4ŋIBV߉Fù7PǏo_ծiK %Ir||ǍFŋSt~cb"ӞJR_Tr0vqpvvvlﻤnY{ڌt?WkYvݻwc)`w?z-fƏ 0ɮ+t$|Ml(FByU888n~M jcݨSTn6>Ɍ{Γtw6J( ÕA+fbtɓ'bb˗Υ;jERtjmmsn J(mi}0 xE+JVǛ3;S$ !̛GBP(q=p9~Z]]ͦ>|0c&IJqO8qI;Kh}}}mm$9===::%{itz0lh:99> 888x'OJRǿKϓNΘ{fc11]*jZș.x'Qz*]sT*SB%<@ݫWF@itz=tqERiϟߴC˗/otr\.FδT9}Ff{{L0oďL? +\.gbk4w5q~0 _xlA:ўFQӝwY[[.>~T*+40L<{1;P4V]o޼q\ٹikkkٴPXR\.w׿6F^Fw/tŽktn:?t?I777o,nb(MLT*J>.}eyFF AF;ɯB.̏ë?b&iV&UF^\.Y-?(mnnI["e>U;cVngkkkו=LvcwZtTOryccڛAQT?%IRTnT9eZUô]0fϞ=jݻw`jw;l6'nJ(k}}={EIRyՀ]0ںe7˗>7A0S?tp;;;kkkF ks)(<{L'$`UՅ_cVeEQT.; c5z>6QzV/=o.IVTFBܝH@GGGggg.//++]Jrtt)-//!]*Z-.mVt}Wpf-퉥0$ BBꪎ_s?JO\<>>Q)[֐q8n4qw6QJRt^z5=|^JFEQzY,|(J'z]- `Vd Z$qw%W9j}Qw$F#].9 d@M +=| ?by((NOOӋz}mLQar]?e׍a8?*Q*`<{E޽{7zIZP(1ŏRن4c,!= lk6 0\cU<˱ZvG XꁑI =ZYYyeb%0 $!$`-.m =qS*l@ocfR%P(<}tl@$̞H_[@BfIHEv$k!3㫯m) +Xa~+`< ={P(䶧!$vTVV+{ [YYYYYw۷o]jϞ=wL(qBŃr ӧOU%]oaaX,Hv;0_ +V˗@HpS.a +/]{s&0Z7RVr6?'`f >9JHKv˗/H0$f /]Xw L"ͱ&\Z>iK1Lj1 `jHz]H0o$3PbRj?4:F(Q$CHp3VK@ޛ׽ N۷fS fI?.a=}t%07ǫn{ok_|K1Lj[#`jCV(xZ7f&}{]>vٳg`p_|N QPhZA,,,|9?ݞ+no4BnM&M 0H%YZ]XXg ӡo߶ϯ߽{wyy +fp #`GA4}<~n|bb ZIk]Y"#~LtkΡG szWGӞI203$+0܉9apuP(>ď xl6{^U(&H1 ^$Fct;<<?`TՅBAۋsquu513e_̤4sBH0-YZMC˗Sw^h4:OŋRiEm]q#BmPw8{qsss\̉o£(0oIܫt93v3eL $q?9{qzmM6(=ݹ6foμC)C)3C9S/qꚎ:\H*1B*6X`Mwa-(R|H@m^~Ə ׳x{~~~pp} 8z0sfŏ8fU aE=T*Jel#ORPF +:/^15@Z^^Wi6v{wwޮ4ם y:aH ٳfy~~,Y^^n6aV*+q=`F--8ąիLǍFɓ'E:z[JIqv}pp3Zfo4HV ,@&! ÍYOTYNWi/ϜRd̛(׻jNNNVVVh.!6BgggمfsmmޮJaw>]aH<BPt0H1qF6*1W666rc`dه=ז(zio.{sֲfQ0aE܌oaY#cnHafc +V+79 Fݻnccc}}=ju[秧EU„jˢn6rVnGaaz&I= 0{[IzRÇFQm.$Jmv;HQ]7oiGQT.9xǯ]!lr<̋^UI7$(d )GAZ|\W/]2 j6h4▒$i%wV.Us~~6  k/|+7-_\XTfg/_>NOO{iesssd>\^^o~v&;;;z=;xww7=v\[[{ˆ׆sDV B U#r8n6Vɓ'7#h4T\۴ԝk2dsF; ZjIuWopxiyמ'zڪe7`4Fc {Vp״;Ά_UIN?:>>|%IW^]{9&uӫck=ǽW H٨P_~e>|=POgl]ٻ-sois/^\\>|sLdooŋOe7(z_1v}pppU㢾O'I8߿m|}6iA_~0zT*~bI\u=׉a^۲%IVqwr\.ik[|)rCkn,TR ð$I6H,]`K~>n#ak(A4jz^]?\LEwVrim`VH yeV w&{v=0\[[T*Q`obF-|WWW퓓va޽;U.j;Vh\B\.m.&w X@>oBwA6c[J1ezh[3mp$-,w'Ilmmnh^Q6$yu] 0G\jGGGEW\OToa~;UxƛQxVFQ6OnVn\.?}whq:fZoELoewww766%+V>88-I$wʋ/zr}$IFk=n7TV_xN $|n_|y;NǢh3w)۷o(ƥnފ|mU{(qzzڻ޻^?n3{ %]W;mP,{0$`͹-.vZn#X[[lllVȝƇaZ~~wO9߹skp0\__.}r `ן`cބarz~Əza./////?z6~4`r9V=s F4v [{p `uu5{ b7$V"̄ &geeڨPR 0\iZ/#˧Wo$IGCk=7}xC^kkkٓ oΞx׎xZfwo?*qY\\Ma39Tպbs݌>}:7˹&x_o20\[[T*(иjFoB0P\(Frw,g\{Cujee%[m<-nh3raAjH0GmڙZ[[6|nE]p^{a.)  +pȷhמrhI 35oV}Ḱҿ':T.~AP6*f3wX[[{in(>}Z. $988џ(vwwߝѣG/*Mk(}fDo^RNs`[syb/8ď`I 2[>Dp'rᧆ9z;'q,Çv?# wO'MF(`ޅۓfTnY4j卍8=6'OLۿѵgĸ4r֮mcCE֙pO$...`' +sdȃq ;N y%v&Ir~~ݻVuGf[h%` +~xmC'''$$k0Y@bd; ד'O666&Z XØʁj@92ZiXVמNNN'snqq1R ̢r\T?% lwIq 9"*1.peeekkkReG\`.//bi&sd4NƦJ{{{aѣr<ڝ +3JܒO ZVt!"7wieeegU*l)4&QGA\~? (Q=|wyaFQMAi#sdY<K Oo( rfsU*8g{e!̡zk +?.Fnm*˹%q.{/>iissZ;6… _ %fJ@90d= 0{0n'#ß H 5ojroÇ'?^|9DQ;MWډ3o-eR͛W0!i\K 8峳\#ٕzY0b +cqqQs3#v{JoW.[VaݞгE VVV]%wÇ{-`>;Ca0zvE.ײ:?? +}nY$~hrs8;s'|P$r=s_~>i ۷oY-{YR=>>u8u+1M4mV -sv{J\(_~J׿??]úw} o齯{o_r׏nڛoz "w^$` uGZ0~~~q|||ϯ]'W򀕯M' af$999 ]޲X\> !͐E4~Bnd\)%k(ôAj]+!notJ&A]pSN2/Fc@(F]Eь&*J\Ξ 8>88>}|hNW5=άFNOOӴ wryeeeccezm{1U{P׿8EQ v=%טKEf+++٬Lպ߁7$g/~ׯ.%ޫ!Ϟ=뻩f9|I_z L! $/Vhlnn*Iׯ_N9+Nߕ{@c9xnFkԛ}#l6*㽽\VoE${{{WBvIZ.+sӧ7}JǹsܑǏ !ʹRJ_=23L[û~Elݻw3FF7^]p( 쿾w7k:JǗ~. +0㾳77754ƨQΎ/a?[Z:!M_?r\ZVպ·of.//VȵV:;;pkkǹH]ȝG-e휟ߏ{q޾}^?J#>Iq{(O8zW^__Ͻb@ H.YrU&s$QgƲ;;;AjZtr6 nYzE#Kr뷜9Miq}ɛe--Q y!w;Dlƻ[{:zrWw}CgjW{r܃ >M'{zN!$5[Jh >+`cc#ΣGrT8.Rr齳_Ϝ0 2r@zY^ݛ[[[3I&O Uɒ4s?_qŏLisaȂV>[[[Q~WE;;; 0%n3nNnZ^;x^up[V$kmmӧ;ӌ~̝ɒ0 766`4 l6U#Ɨد/^=v_^^ں@ykkkuu^->SKƍ1AZT*秧WmѣG Pg X!l6G45fy~~sI~z՗wލkUﯺ4yN +_u,Y\\,;t׼ !1a>>lZkkkA$IkYVβ'''Vɓ'/*$i4c +X]]u6˗jѣGr9wޝ䦶].ECPn/7ބ`0|۷o:gF}6FrWX`ZH0Ҩhc*w}wWrӧOoxo^&\ _{ +:B4 0 puuuN\oqwGxktnhccccc#}{ üo#hZ׆9Hdooy9iÇC68~ԭ/^puǽ]l6[;ggg/rj'''a׫qիW*0:NnPeQŌ޻^3AiCAލɓܴhK% ;8ɓ'W]myҭ!+m9̐V`,rmD]7r1'^ mPxvkFn#C{o#+=\.IK?>[X62de`$]~Z(L> 0I~& !/?=W}|UÇ:ӧxbƓVo(݋0 ?|ݑm}ϻ\IZa ",3~]yY!TJ !u={Jӻ7z>766޾};̄'Ou?\d\rmNNNefWn4}h%988mZ蝶3fyzz ///_h7ΫM퓓\O8^0Mi6ӎMϞ=\wܠVl6~74tGws2+{z!j rTBs^%gϞ] U+aƘ *,}Q $%;==V0w-1kT@`ZdEkPA\]SZ]]ˆƐeږOFQ Apzz{w{bW_TIV5f7;b8mڻ#W}777{ KC{zN3!jr|rrk?m;sM)AZVZgϚfo ߍ d5r񦕕~E۷o3Mq#c!HL8sٗ0=1K$rygg%VkpUwevNzJpfZm٧4l}szG];2fagggHޅi{~]yY$TjZV$*Q Oiid< 0 xh5aEIJkW .1'nXmHSN OဠLNnõVWW+J6gsmπ677L$lE7Yu۷o޿>@}93);;;/_N$}ɽVn_;sK:N!܅wmg4HC#=<N$ +;mmmmx\(gyyy.Ar9 n& H\0JLdz {F쮖$1^e280goC><KRә(LT:::*ə˵KH fW$[w`JH P!:i`(M+]m?7!*\d\c!ߜkQr-,fFЮRTnzMMm`eA<{Ja$@ÇE0G0̾C:==yZ*d=*0'?vr/:^\Mpnב:rqw sq@Yt sdcccA!r X[[鬄B6e &S +ʏ7p#:O_Z)ȎuiSUY4fY\*kZuQToy7o*P$I҇Qݨ*c!@1F.T.U3|{?s677GxMgIDQ0M[`.//G&~0s0T*EW0$(X毥(j-;Pv0 XV'goε r*ѧOy0񣋋Z6bqw-NΖrYCH`oo/0#>|0ݻwC>1ׁn\.g_qvDlT(r/t:k&moofyߙOOE`;F#YQNfyn]'=z}?MEΆy۷o{]`zDLd[\\컼T*mooOIh佛Q??}U@`zmnnfTG\Φ$999Y,]Oa%NOOIJV5̚}$IM>q|:}iZôAJ< ^vm~誤7|3ng佛Q3Sk[[[`kkk%jufTVoS0*JEݤN$Fɓ'$ׯӧ(>n6;;;F-gE zػb Nn:# @`br xp㜫nz]6Aow Vl6fEQџvy\]fo~J$/^x[zmv_K鐵t_>FZm;kϽ jmn4#K$0 _xq||}*~W^r9HNg<-nδ7o?I,i]^^I/>}FqL $jz||۾]0\__ظe6(󓓓w]' 卍q []]-޽ۚɓ'7lZmccc{$s^/..ǏBvuԚiGǏE@ުT*t' yw8o8po_o~6atiGſۿMI%̘N3끕wmgѽ?ŏ t\U}65i{7mgsqq!~XH 3_\\,J}=z~]yߙVIʹK $`6]^^1}oMy{Ihq,~ 0= +F \;ڻ5o{?jN#~4...>~8`0 wZҌiZE#=VF ޅ?aSqG{7m]Sxqp{߫~r?`H)umZ%E`zTjmmwwShIuѽIK.\^^Or_j%0$SׯmtF’'mk7u{7mm7٣WQ0 $` V)J>}9 Jhn¬H򥥥jpOH SaJϟ?t:wMy_-Ko&\ Pz U*:ȯutttyyZRoyLr/̨O>]_L $`zCM-y?kݻb=;2_j•poH w(ABa;#42sk]!mT;::*;Ǐzu3G U*Ƶ)ܻ;5K E |R?ZdFmooWz LRTl n`f2C...Fr@`t<HR"t `$0fRN+JA|ٜ59'0dNfzKKKNB&0CGGG^AZZZzͧOQǏ/..:εw:N6;=JQ^_\\ HiϤϟ?kl jǏ?~ T*\[[{iI4ާj:`zpggg׊l EQTT677JG~yjZFjmZCRr7Z?7TkZ!%@ xoo/(n{n@g8n6Vk}}}cc.jxQjZj:wA b9/?j6ìvKI uq|pph4^F uM`Z2P b9/k4Ç=z5Ӷ@wZL߶Ca>zhyyѣGO9>> !arza[HÇ>8&7+)lsgggaͺtY.jNNNhY8??.hsssuu[U$ٸrR.jZ-˗8ӧOkŏ׷Y8^h99U[VaXV_xEQvTl6sMvvvjZMӧɐSN' 6 +ٳ\\.d$Il6^C.UUEQ*42777U+ollgz8Pϟ?.듯 $Z\jnl۷o^F{UTR{UV+;-5)Qٹl;3kqqq@ <kss3jw[.STUFJa$v650E!=aP_MƛmmyyypTR +z)j5 $ivT*R \\\]0iKEwѣGìa\fkr-n)2AR6.eU20q\ni XZׅ]?W_}UtDI pz E%>|{!_f޲oBj_~bONo筟~I )ls'rY;u\Tm?TI LܒB*a>u:˓$dk +&0z,,ʗ-y2 "7(mrMo#[sI)#wblQsB {CƟRnr2av7766nA͂WǏ|կ&Y0aHsq'Irm&v]2R\>;;>>(n0c f/@bAJ]\\, (sIB<}ZܒFsr[kZ b]U-//gfkLNSt 7 @`4lnnw[8r$i4^ʅrZ^^>lZir]rppߛjZ{{{C̳4t.(Rz!aZ^^lwe3=qW* $۫isss@U%fl=ٳg^&(( ô\t)r|wo0w}tJRNvpX$qEQӻ.eQրmV*lܖsK(q6j={l@A<w]H0'@ pwwwoookeeӧw1-W̳gώ0+onnnll\fV )ޅryww76DIAi?|w}]!kC$ iן㳳.//ommMVZ=>>~mo 0\__>SI.rtU*}Ok޽N+++j@*H̋tV;R#ڮ]o=A׺9(r\~S]jZak$IʈH#`0 $KEQ]T*vJFO pesb&LT^aLH^_ZKVxREV\ n(R͛~7oޤq@&wZӹқ7o:εe$BH}G]@&V]~!F&}Ì0  oQ׫]KEcZtR[[n@Ƿ8ЗHD=~:!A!$IE (xCHGP $ +!A$K?]} +&ca?0CHGP8 $,HS~0_dnB?!\jrqO+B`~癸 `j9bUa>ܵ!I 1מ?~mv0W>~n///Z瓬`9b-,,׿+0fU!aAQ$wR_]^^?O {"=8!9b}WWʹ9̉{pch`ϟ??:?0ɒ47L!WPj@#@jʯ}<~p79GP,=`m)?6XQ--D 2>$~@`8b-,,_{`L $ɀ|D'kii"5[_ !@e02P_W:!f񋻫BHG0=$ok$ +̃Y<*XKKKBi1>&ď`z<ÿwu:RTt9@{ 0m_@᫯O*} }t芀~Wt +(??$I~O>]^^]0 } W_&`4 _]Sj]^T&\tqU @9::Jt:.`ysT>@7ot:N#I AQJ @2~B$y78~BH smQJ @@MG)!$ȑ@hdI sэ +!@J /G?]c!$@ #7` $`^?J !U$pQJ @ǏRBHK ?J !t(_H}6QJ Џ?Xt 0${.G)!$(J 駟&\ %Ow?J !@!J %IRƏR?><<,Jrxx8"0 _MgNOOϻ֪jB$ྩ뽩`UJR^kA<6Hv['$Yժ뭌v]t]  w?J] #۽7_|~H ׷|*q&I( + +H}SՎK.~Bjw0Ϟ?~@~dIIq\tIdoo}jAqB +ð&C_|eNGݗƞ...`>㵿ߍEQTղv}ppsvf6ȵZ.f`H P^E=W*h4a0K7(677o,휔H poM> ${#hyy*&pss3JɓGVWW'_$0$$Y^^~iUL¿ۿ?卍o766$VkZH@_HJCHNT*] ̤kV[[[i E0ϟw ] TE yϟ? ʦ%0Wz~⋢`$IvN$0 (T*aY0 ϊjurEѸvk?w |~%Ir~~>|Z.ݲ7a $HsHffHo_~)jFJVVlhtrZ>n=Qz_e-//~%Irzzzrr$ B]UUmZ][[T*} ZXX.Y\\,r$988h6iZVٳg7j\h4ml6ݬ"ɵE6Ѻ+ )Iv}q_=JoBZ}~Hp.]\\]qիv=d&uzz: ~Ե~~>Ƚ9a]G]fիWap]@US| POoÇˏ=*ׯ_C6~Ç񳿿wZpuán˽EWZ@*~W0ިG ~oz0 t:E@pppȬlllT*8f.nhmmZvYv$INNNzh4rE.//omm .2I\ZV?Z=y1pjX8;77v $Y祥׼z{%kZ^>ٗ((>je3@WfEO>T* Aݻާq6սnAo(?j6QϞ=$}+(fNOO766aF&0jQnao& zސ+ {dOWZM k=iL V$I.y+r (˛7-rkkkC2$AD`-,,\^^f08sX[[>1;,!4F#a70&ҪraK9egPoܑٙ `t?-YX/@a VVVyV6Ի`^QAP///%y~~~Sndeee~}6Qaf$(X܈Qػ^OLv:EA NVkpݻwهj nYûvr8G 0.̰(o, aK Cv{;>|=kpmnp:c)2WiroːMrewD `]^^&JVVV>}:s4Vc)r ۙ|p +)l-?JP\OX/dI ̶ޅ}cIpLayzV+$a9z7HEc-m0\__ቕJe=Л@ +A(B.QlR\ިZ墊R$I*`uA|1,iEU2GȜ0 sYl'pH׸(ilq=}jdIʽEUr pݻP$fco\,;*vj XfNg*J۷oyV*lKE0-:NT]O?}W/`<.{sU*Jm}$Ixg~:)EQE;;;cE|I.nkՃ6[ƀq\.6 1V@Nwy$?~l-T*M7fI~ niF#WdOnmzvAټj$I^~}n $XX)yQT2؛-m]r||-jZ{{{ 6@Pׯ*8p}}o==7Vu~~0lcc#W_zn s+`Laϟ; nGQd$0嶷{;u:ؘ*vvvfl60,a&In{EQ4x={իW"χ)rkk6jRO<ޅaٳlUK5GQn8-{mmZ@@R_O{ivqq;T*R؛-.AI݀ZVdƄa8"( JˀrܷvjfT\ju*z ̀[S?$KZ)Rד/ z9O!04s|||vv6+++O>X(u">}:xH\9==G3\.x"eju#kH΀K , :N^w)6~_A 4(ziZ=99ymu0|VRpynfMjrl{.}$Ĕwx;!97SI쀰((*{4Xc^rEw}r,x4M|>ε::RtxxZ6᪠{σR[_?7 ~sN$pU' J҃(S}Du:7oLBJ o޼C `loo,:΃'Y02!$|yU9NS*޼y#3A i 0wjϟ!O I ̣ZNd<,--"BXHǟ?B*JH0̈́(RPZA^_Zn)}xyyyyyPǏJ47R@ $-,,,,[&@ ;e +]tt:I '!]\\t:NSt9d;@\ RT*"t}?C G |ݟR?S<~*$6`y&#~Z(@H "EGH `?c%E@nObI LHAO*q]0ď(\@JǏ?~4 #,,\y +DZ1L0~g ?`JH LϯjtyynuBv}yyy +ϟ?d=?`z,])JWǏ|կ&Y01?O?$Iѵ3L"09ϟ?? tqq?L$`:i ~1 `ďRGGL!=&}]U3IhֵZa~qq}XT +,L `҄4@"~4q~[`13!Iͭ0 @_>ͺ8( +g&Fn @ iΠ%`>W9<<?u_EQZ-aAqP4mwu:RTt9@Gz i6=kkksnq$IaaX.0\__o4Vj* D `R,B$~4[TH'''l-0 =zTTny̺Q?I4ͷo߶4{S.+aFL! $ +WV;::.?-f3ë %I]mtFEQRjZ'''ظ!uzzz||7xnIanI @t$_|eСl9;;>idq7f5|BhW9>>n6NI~j fjoycc@ +APt0?J?4j_vpqg8iˢx/_ިMq7%$ۻQW^ rR ðj 9K=R)pamB RՊ.k4هC>1 G8KB׶)*}_%/ŋlhWWW(*I$In߽{{[`ee%M\.dH 5Z]]=o{oJF#7hpBրWi6S'''jZ'''%Q|T*rYـs{%_%5-j:q|pp0W32Il<(}ŋ>FW oqlL $\rz.^%6651DZm?78)*J%+hyy9P R=^(Vj5-융t^w{zY64]*޿?K c$hmFh4x~~>R.Q۵^q_;-5ے[3m4vhLa1&v ׳߾};ƍDQ[t}mLYKPwݭguu501ty7qz=yE@1˅cIvr:M#-9>>~eW ͇#w/rNl6sT*u*JZ-x˗ vP RLz^Պ{^]p8mx=6+K@nEQzI$q7ʹR\T*+++az &}I M)J%_|EQpoL` +[[t8>;;;>>-_[[~Ϟ=;>>%v>99 puuummFQɴF 7QK!];;;{]$I8B)ڪVgggVK$mEn! -`$faa2dqqbjF}ҴPnZ՞>}jfߐS/_nmmmnn_ 0m$baa* #{o?}8BO>~QUj$I>??oZ߿q$O<>ܨf`b$ +@wdii)׀Or&@ʽʵ͊EfZaV*JAW5F:99yoV0vHt:K~?-Lv}xm@'.ŃnF//4F,FQV&F 7?^Z0ZVH=̨\gљv{r<)kkk[[[_% jZV+mb4.Q3Fwa$fs@8scIm.7}F$z^t M uj +9Sr91r{J @wc0vEܭpL؝f.//0 ׳KZVyd5s3!<R]қI[sOEaf{K4\©Zfj7RIdlnnߝwW%0]sY{3Kb-|%\\.^z q|rrw7`Z\pÇCѣ_kH_ݻЌ %̉wūqmVk2ԕtvv6V(*]@Ȼ-1#1rx s"i};j^zk6tNO<.Io\UFch4⯪>BJ80jw[E-TtSg{{(o, nN* Y[[;==>lZCv'z~Po(En.3tK;;;{{{Nv0 sfEQEI{lv0<۷ه w@$EzV+$KS`~fHgggC~Ϝv9kgϞ7~ART*Dfsmm-ׂhkk۷Aiqk}}HAO&EK>.//{j-\I;݇Ik[ػe7[wȓdZVS\.ˣpG\MyNi0ֲǸtٷ~QAjzTannn('O>}:`L)l7 #;::*jht[&-_~Y.(Z]]-wz8=~xTRI ` + xԥ'?O?$Iѵ $1K< ?EJ^^^fscܝ4lb iʛj]” K Nɡnhx ݇#lN㢫 !~${sK kUR0R?*.y@s饩zN(JEW3# G10 sr r$&{(7 H@rHwyypN_]0Eď@(LjV^_ZZt:@Rg[MpGGGGEWLAWT YGH LW&L ~KvH\IPt @F'N 0: $`tH$I @F'N 0: $`tH$I @F'N 0: $`tH$I @F'N 0: $`tH$I @F'N 0: $`tH$I @F'N 0: $`tH$I @F'N 0: $`tH$I @F'N 0: $`tH$I @F'N 0: $`tH$I @F'N 0: $`tH$I \\\]PaH?c%E@6$H~p%TaHsR$?~l-Q܆YXP05@$ϯjtyynuBv}yyy +ϟ?d=̨ `JU7_|ů~ILŏ?O?%IRt-H...~IL' )lsg@ %~$`c$0|Dp#HsJˇ7%0ҜA)`Z0 Hit:Rre!"]09.&_$`?t:Ǐ[ 0.(aR?b%T*e.,ܘ`tH$I @F'N 0: $`tH$`ZK`V)'t:%_|E!tJK+*HPޯ~B*Y`:"XXȟ/..R 0L9 $(E%󮷃e! +w +[oW$;[{0 |^&LޛToW +Ͻ +20>`H @1jZގw-}OU +fa!bQ,..斘 L'W0$0z3IwT*]P|^&ԣ6 {%WGTj0+ HP} p +W0$H } bTߓN3JyB ݻo, `\`FI {'_1piiiiiH ,..3*JZz +fL6Rz஽y&RWGGG}/z +fLZE[R￟|=p޼y `:P*>`I t;-N#}7~x:?~x +fL:΃ď +0.... +) /Wp^/--Ņ3Qqc+8f+$`JK`\wLWpoSjlƱ1ď& ftow'H0.t:BH# jz){6vGGGWJtY!~0i + $CH?jnD஥j%L Wp_I lB*JN7tL'#r>0+|^=&3cpR'͐*Gwkty̒֕JKݩKKKqLW0'$`\{נ@ s-_T`"gȯ -? Ü...ysH faפ`NϾc2ď6]RlooO*^>`I  (wM`,zCvJyZؕ 2 L[& b#  2D.r+yęgg_HMKm5̞Io~BsgggO)ypp3B\ev;˲B$_~vgIӴ|[NBם&X^6 v[Z 4_mZsVR~z9s=ߏůxuiZQTlL&IRNgt;QVkNysTR,L9ib)>S, z4i[X$>}*M? +!̸m&8 ^EV!v]Hyaټvff='+%~vq"z{^xsZnll$Ih4 FVYMvoooƜ9U tgg'IXi7߉=hm0 x<~ջw]H_ׯqH*_G{o6qpB6/..&>p⸦9F  wŀy!NB*=z}1Vj8)C֦ @J![!OU*/e>zX $@9 ! $Z@ ! $^@! $^ʓ@e !6 $^ +@`V "$X!$#B!/H EBT*nwH,ʲ `}W*Ç*1 /fYnv]M +endstream +endobj +2527 0 obj +<< +/Filter /FlateDecode +/Type /XObject +/Subtype /Image +/DecodeParms << +/Predictor 15 +/Columns 3115 +>> +/Width 3115 +/Height 1419 +/ColorSpace /DeviceGray +/BitsPerComponent 8 +/Interpolate true +/Length 29156 +>> +stream +x?tם?9)CJ ]F^ԋYS.Vz+Jr Je{+ې+ JI B½w&oJqjZ.k{y{ܧ#f~0AV9պݪ.y}qd܌z?8CVYkvt @mZ;pdܨk'+L5>_-]3<]񩎌TPat wO:Wx#cV~pYfz<3`FΝ~~_nHڨ}饝{G͹`ު_rnVJSo7>ӑ1 W?I=yzȘ6/;0+g_UGL0w7ƻ6vd{s/_>yy0wZ-q`On.y9SG\B_<9ud%rt%w:2]܍OUGSON`O+avrȘ?aX(M~l?Oήqdp0w_F'ҕPFutrKrGFsW0u7sur#}儐W L}?n{46QJ5n:Y(h0w/0.(0 OI.]}}fԋ#5|{x&sk#3t>Hkx,(0wӑoJ"z"82Z\z题rE#`ZtÄ/`GP?_.qE#cX +]ft, Gb7<;0~?J]ӆ_dXtj7jv3P7&Nr˓XegW9IV.] $`nh9kUJˮ$wƏ`~dI)\ GBEWXxRt%$Ä`F-] xBBHr~X6 4$|]ޏV|d[I-[1|?eX>\O#o9:IE,Ygxl,5p$]"7_~8:Ibn{zI82D?IR-ZzI+[?X${M` _Trd,UWid`YFVid`YFVfdYx$ߖr޼y͛U嗝5pLKߔ.ÿشԫmO۷U~KWbz|[9g/kX=OJ0kZUxzU%ZR d/KXY;%̔z +,[4^*] GmUYR dn?6JzK0;ZU,`d+VK{+-*+wspt, +ǷsRtat ^~`)|RPt,YX +KLptVX( XP1crNޔ.`M졬^~`YFVid`YFVid`YFVid`YFVid`YFVid`YFVid`YFVid`YFVid`YFVid`YFVid`YFVid`YFVid`YFVid`YFVid`YFVid`YFVid`YFVid`YFVid`YFVid`YFVi~[`U?}Q-]P\vt @1pKJ/K2ꖨ7 %&*WaMޡ<-u^p=+zRQXCylE[LQ8 +g5l\ +YCjYӯtzV/+;OdK9 +9.Xp@VιU` +91tbl3_FVid`YFVid`YFVid`YFVid`ߖ.`qT?}Q-]^]tFi{S|f,5zKFh}Պp独\ɖ:s^$I%ZOcegJԙz%Iet +wWIcU¹gJԙ39-Bxyt \1C,Ati}R z+Rgꏍ%%peǬi+a%@dѵ>3WΜ1Hy(]k<,]W}̚py>3Nj\5at\1 +Xo++񙹒-u+ȧspt\1KD.`ݬ}Ru_Dc䷕XL\ɖ:sk߯IBp5.`-h3s>+.]z2/)o\x.g|}VUpt\ͭ[ X"Jf>+4J j X,F0wk>@[R|hKo%gLj,+7l3 +T0L#+ +40L#+ +40L#+ +40L#+tNMJ;o43ڒ>JzW.kTVNgQ]dK|hKJ(뿖KZ3E%+ڿ^> c%}ֻ+]g ?JV+sU%>[d>@[RGqzJ~[+ڿ^> c%}_m%@0W ,>[d>@[R"Wi%YTJB_g+ߛhKJXK]VJE_a+,'+`m +vVB c%},g +0G+1H40L#+ +40L#+ +40L#+ +40L#+tݛ ?|/P k7 (ܿhKJXdOJذϢZY8k-)c}0"+XS[tkr,?ЖzwzK sbMmљ /o.&ڒ>Š_hŚڢ[g|_dkj$%xXVG3ߛhKJXJW~4ZãY܋ `ݿ_q%;%X% ,Ϫ+`eWXjO.`1v$`$1Vlt3s>@[RRxy +0_Mma)% cۭAXn,Vis4||s0ڤQa[&+,jz~A;/>fv%IrRE.2cXa޲aTHٹ+_uIORσ +Ejdo/9:x[ܛgY$VQ!pQҬ̫!+^\Dw4RR1 6}BT9 Jjsg +$;t1H4XK$O~?p˵%+^F E+Yt &6?>/a:Y5p4HZI_FŏjϾl|:8H_֒GKR٭%IFk냂-(X{IuXd=\2{A+-"Yuk''㬐vj%I.z3 0`Ģ{)]@ioJ&@[Rǒ^]tdTVNgQ]mTώ4lT*wU'Y8k-)c=}+]`V-}hKJXn_tkCV9ZY8k-)cJ&dkjfUxyt ,f7?Ж,̇~kjn_nڒ>_~ցsbMmKW[h{XmIi^ +ր~kjNJ_G3ߛhKJXKX}`V-: ++I +XZj]n.%+FXZk?=ܭXmIiA9saV-: +40L#+ +40L#+ +4k/|U}u?;X2)]@ioJ&@[RjfnTVYTWnjTwsd{> c%}od+7l3gjt`m5^ c?Ж[ $ϧYT ڿ^> c%}o KaAgQ +se oJW,(YUL0Xc%}oydF?CYT ͕~X_ߎ~Y` [ +΄b5aMX."+ +`:Y֞L%+0 4 , +@` +YHߖ.[VFZ}foR\l%AV jnUK1S`!t@ m%}Z]-]C!i,+ה~j +VtbX~}ڒ>V=)mퟅe \WS%ׯ/zʜ|=v*"+v~dD,YNiR̟#+dBb * +0x?\ * +07ѣK +0~`<?z/WF0+]PZ/|U(8*QNVU+M*N2 c})cEV%I󫴏ՠ]8*}]{M +?}| I)a8*dEU.d mÐXcQe!*[~}b{ٞc5h??_w/ȆϢ2iY8k-‚wjXMӿ ^E%+̕1H@4 T}YM/ZG _mL&›޳}]$]qm:hӢϢү0W`W'= ßW +OpLe]mTFGkv\'f28߻!lӥSY3ß-~Qc<о?~E&+~Illm&[*XCVih uaҞAw-!{ ++@rJFUZ :qQSgb\RU9ѕeW~Gekr݋.̀'= Q“^*IӬ طڕ$:GgL&<7whOͳ^Z k$IU,*c I^$i%I>x`xxk/~6zwq}xgm̢0 $Ibtz_߾a=%I{3>_ypMRw7S$v2xI;py74k}m#V>KAqe_3= leƭ鬒jZ^^^X5+NV`>_W۷8+::xxc8]Ovί[i5F:7sEw{GIqBsxWJqr|/{P5-f$nnNX6Jy]g ]/ޱפpxF8i֒f?7H6V=/c3OӆѮ+[9[V.sKл^3XzFZ (b{'_7VdLwp&a .qss?.w4O6*ݓ1EǗ[m gA$I'MJ읾^Pp*WxˢCaA5_Mt+FV`>.wo2H*I#&%`08:$%t)0^4ZLRic!1T[r0q$&+,k˭d˟wccUZ0_ة~V-OvޱE-$$y02^1郉SAl] s87.T5˷Ku[$K6]U(>~IQgNY9toq$3S gV0IggԆ3~=k%:S+r A:^wuߟz3}͘ZmToqkr}7׊VIҬ$'2a2Hj=tT%ˣ0H(VwrOXkv +WqyՇ'y/S ,~ngdi秏ze +Z5$$aTђɒzA2,=)O6Id$ҭ1W뤕$y]КR"tn>kzX1fHt3%ۉ2ofL>J2&AaD$GȄڗKt݅WX'jPecwwSk|U\-CVdAr$hQntFPHR{n׆W@/L^I5lUƻ]I޴ +fmҹX+$Kӭaч;r"mx2Sr Y5AV՚$Q<[KfdH. +n5^ JǗ8zԇn7ӢBw_lD˭$->9>~aO +"~S\a>@ԅG7Gk}sJdImt'KMrC ܲ`bW;?71mNwfzI磂-HG;Ӱ~3~dnAAgQ5v>?ܙ/[J2tww?HZ$$<ح>L{llL,IwԷXQ N_h^j6z3z-yP_ajT>Vr9$0ۑ T?MWÐA|h oz RMBOg.. Âpkz,?ՠ]fyrf i,K7aAV|h  +j.YSo Eu?} +WXm]8YX !+4~&I^`oޣU_J?EVA+ &IzT!7nJ?Y] a#I +*ƍʩW0XcEV%}?i{7wYTntA +D,7-S-cy +>.y] +'_;8tEku>@[p.>VwE9I;EMc#Ir啞+KW3yhXYP$y)ZpRljahKJX | VRr?Zu+u+<VBI +g+ߛhKJX _៟$IYTWhj >ߏ~X8O$V+Bխ}|ՠ]`Nv+h,4G,VSX:lMc%}ܯ4 =i,+5/zӯ$IW +XN +$lJtjahKJX x ҭԎ!H|?`7 +`NbܨJdX0$5.`I-1c%};_ *[x‚_K#nYץ+XN,[I-[.`9 +XI+T6,'YVwŽύ$ip|{[XLWmj qc ,j_$+b&)wbRlK־XmIiAAnWn[rүLtS`DV`-Ulw0$+Id @Y5HjOߕlXKlpekV dHlpek$yP{l]羴ڒ>V7H{S,m+ +V[=fW'+n%I~X=fW'+3IY=fWcǜ?Жi?'I>~}nM[|.|m`ZI3_l7\ XC%9? XdJ|{z?oͿEfn3aי\ُ +T+~ZI AXpk?u^c%}o5'?rISt-7YT4Wkz,?Ж~n$|rcus=]M0W nh$IX$?:cʞp=kq?I,zH{5kf ,il'Iznz$+^ZINyj$Ip]k?ܭXmIiA;c#K gw\OqEen\W`<,5\CZnz&+N$MVu{ +ßz o'I=]M)]dG瓧&I^wMlXk?ܭXmIiA;xH>O.$.ӕIT`!9&Iһ=]MKW,YjzYK[I=]M6*yj;Փ~j3\U=rBYs{;$~V`\py?Ж?<|8ȥ p850ὣ$=7^{钪nZ oz8ڦ{eh'Ipső6vǷb OۭvGC;ݍݻ&U[ߺuziQ속9k+X{x2O (IڛIORσnڗdsXÿ'iNlMgGf-m&{d#i3?I;4?:?mh+꿒n2oؾ?Nt +ä9%?nn'F%{2ra'MJ읾^?^*$U7ݛ F~M>O39 IQrV>pƯijz[v]^`U +\V&< ~IPIr &f. 'z$FDmo%{g/z{.IM[??}ԛ[ +\$aQqzۣɒzp>xOI~:N:g'+$yntn>kztE:H\f?Hl'&(o`x$k"$L$9}4HZgN٥I&7_UKT0 9Mnrw4l]I:[($=lk+l&Jbx/$OTO*]}ٮ$zrodJ6e\?jZ$8JTvkIRyl 'IREMK[IrGϒpWݍAFxZT=lI:7 (MhKJX jߟPh/tR]ITv7,֓dIIԚy5[Ljg?X鰠d2 KNo0$`խ}|ՠݼ?o 黒e̔Ϣү0Wkz,?Ж$+Z i,*YaAS/IR}Y-Zl +s,lahKJX lu)-cf1Hs_肩T0K\;8:k-)c5hRdUG!i,*cJ\IO ʒj:QHV2ffahKJX T&IN:fAgQ4W:ն&ڒ>V7C+ܱ+̕~qBl3"+}Ol-`VdQe<|ՠT$x?6Ee\Ww$-`FdI|V +X~}ڒ>V7[AH.[ƍYT ͕~ V"fCV!&Y$]/]dIW+]d$eq.]dYul7S` +p-$/[č_` +p-$qߖX\$ɪmץ OT0'+[\|ՠZ$ Tl.gڛ=}M\h>@[RjfnU@/Kd2 ^>[t>@[RjfnuԳү0Wz MV.п,:[~c,c%}oV|dCU1HssXmIiA9"$`YFVidVNzs[1Yx/_{~埍Q6k-)c5h36Wb"\S'I~>hJKf;IM|hKJX +0Gjj_ [7IoUe +iEFV` -,“YfkcvSc%}oA9dS{03-uݾV~V, +#+rDKX=o e +Âpi袰 *\g~Ct\MtpZ}6DYW+]W+]{Q}}Vwp5 m~>, +eBtp5i{Nq6, +g 2v՟KX뗮+>VϞ69Χ + +oKWKWh,+SlOLT5?` |+]W}3_JzDK[~`=镮>X$W;8۳ *\| .KXqKWiW99ũQ=WHNt wt\¸9dς>d^VwyX'$, +e zL/Q>3 aHѯ$M'Jui,Sl% ؙv׽5p#~+9ڴ:VFt+{wUpce~ DV:Xz^9oX>gnm@ynB6-FtWk` V$O?/]$c\>gnm ~%vlS V\QAX`d2 +3'+, ,0k +3&+,QAX`dq6* ̔,GaY8*|{ꇰ +8*~n ̘Fa ,0kfLVX|ӣl +  ,P^t, + ,P\t, + mQAX.%Ya=* )]0KBj{0}5pw3_?'›$޷ ?`_KA?s>W՛5i7JW!9Y.]0C"wwEqX0zOJW̎>.y$ξ8oW`fZpճw:V0/%.>gnmFAM0_axs럍%>0fnm>enT^q΢ѳ|`|2 +Ya\Oc`5 +5ʽ~ZYl~ߨ|`ύ$io2f$n1HKl,x+I>~]9Ц R1 $UYz/ +*z^'I~_zzIAVƼy5~N_Ӧ 6/ +p=~ +:IVf@Vk!Irp7ΘecKcnd &,h~$v"nm? Wpd$j"n'I- +pmO$_TVpdIE4׍Z6uMW\ >0e+I˖1[475SoKj'&AYґf_-]ͣVTbƴiX; fIZ!IٺzV[t0?NU+]0okMN~7^wn=JT.ciX;릛Tǿ՚Yq:V1[&+ngr(U_aBbiX;/sm_8|lU2{4NG^T~ $mn=ɋ͍ht6퓴G(y5{{0r ~zaQ/JW@|`!m:HKl׶JHNl< LKn=K*LtxW&9J?ꏍ$_.Z,iYa$ǭ$ϒxC;уE_Lu8~f}wc5`b2Iet= ðKֵک'J+*LMY߾kӰVdPgF}trL#d4 a?r^kn>x<8etr?НX1џ'hrd>65. +iX'+l$:Y6}n'~:(tTqȨ/*jzbO,}32`= {/Z Mo7'|f +n3[agE'dMG&vTjQH9he- '&cp;E+Yflwl ̐1HNҬ4 )icR}pRzxx?9:59yrZ39#ܾRCJ7,oG?)[7Y%J>vNoQ88p-F6'5\V}rJ$a?Ƨ[Ͼl_"KcOѣ ֱ܄Xki0hyVs5*w7$hG퉧֒On/7t%_֒]Ñ`|qo Yjgi.${yàLOo6u{Vs<ás7yl5_AyXxJkrwi=TAtoa?f +x7;z%YZ,@qJ&ۭ>Y8wvzF= %IL6dv=_z09>8G[aHQI팶 wqc{mWe%,@i I'G> +M'Vqtmӿ?$i&{9:ϸ= (u{ @ >x7?*V2 +MxOËK{fa^t.(WVƕSIOGYT6 zNZ?>>0i|:u߯~D1Kj> >3VC$PWZ67 + gw>|`z*]ªxό!+,c`f:w|WSXGPO~+]Jݛ7MVmxG\ku:պݪc}Mf~Dz1/g5ޙes0uf|XƭӨVK"m^*^e8gw>|`̾vgƪ + + +@1~D(LV.`=JW&*@iP̿K^.JTdN +*jp_(Js_ +de#J?` |+]\Ŵ_a5WX*rzOJWJWWWlldbVJFV\UL +V~_(WֻS + +(dޟzKXe^^ C?̲ƪil.aet۰. + c~&8ȓ{K+j{S,jĬgKX=o用_a5WX*^e8g%U?iQ-]^]tp50WAVX Rz-,U6ŵVrxm/Xh0vO̤)`mlHjk8gh]Iu,電w&7poFI6’xx?OZXq>ɓ +AVX*-],LpnehI}evxݝуN}ej~"!Y[Sk_V~jw.^ͧIf:`V$bl dH$3G(Zeʍίh4۹VEd-ԚI'^UI{zB iVSuޒ-a'I6<^`ǧꓫuFjSt+LVyPO7$ >بs4*W5+|AZRۭ;@$ +BR[pAv;yljNrGʗVn'G}*[7':.Xuxh +˦čcN:/;?Ut+,j`deOvєlSWmdxՃ3˒VXF| +˦$]"As$l{$^ѪAN©u+,F`WX6[Iru*VhfB-u6eA㿠[aTK_a_,ww +_x8~1i0\̪ĔZds +KV`de:IEpo~ݤ9 hGrn6ǫnY5&[efnfdeK{|$xp6*Tvkpa7ɃgVUWɲ3ؤ[a5J?'I~/[Ɗ0cPrz #B>hVGƳ`+If$bl=8la#+,7>77 F}S/)sM_M[e9)N66GVJǃv24\y2 +˨U3cN'F?$^;uUm8ltt0gast뮲QO'j9hPÃ^?}nB! ck1 0wB>7Ya5 +K$.ZV`dm? WkY>I B9;sJ1i5T+,N?Irhv.NVXBO$_TVkU;Ya =MT-vt0wl-U˖CP +|_a=JcF +`dcqM(DjЯT+,Qǂomݳ;?%1z4ѫ(JVX ߕ>ïe7S~ww6mqx8Bw̫,, nRtߖ.yMuh뒕,n2Et?! U6Q7Il&vf3Mp#QHICV,`.]E? + Rru,v;CK=9 IvK6^$,Qۭ'wIRLma)%,p(cVOKeWa +}dF"]_$G{ϓz3ɧIFGOr7I5*ßw_|+W JtcVA뇍vN`5Qggf7Huԓln3ugfs4|+4<٪8;iу X-Zު֭K;:%XmOz+ ++w5֭OTPO4S;5[9I&l%{/Nkeуtj6*w,<axzNspaTHxѣycۗ\Wчw:XE?Jүbzimn.cE4O2J.{nUw/7[v<=*ivZ'7w53a) +ɭVtk<a3ztQe#\VO2TR{Ǟ<|_::K\]n) ++hj>jt1e3*cxrCRe#E=dqSz?Dž~^BVWۯ{k*duJoNr8I?^ŋv;Oϳf{_ +FVn/y$n^1<߬'o7·?>dj3`Bs읙0٪$9$ o2JtCGmG$(>Ԟ}~f9 IVj++3afTڻI'dKn6#ITvkIR{Ѻ{S-7|ȩ +/_f%S=77 X+!3*^(JV~+ +40L#+ +40L#+ +40L#+ +40L#+ +40L#+ +4-]Qԯ^ ^@Q)]Lީ_6;'=kcIsyS5r>ï$`c0U6A$`i +p?6&`L_l*vFtN4[ ^#f|0yYjW$n3{J$fl= ANvf;G_6GsY=߻k`v{ƧG/+(lsGA%p70|?ToW.<GV)6Jf6ڣ/n=wlT㋚hvRv5>F? +JQ̸ ~po$$|N$i֓9`+}s"+6^_vOIV<. t&2ԒirCV)F7PHi/%v 'S֓~m +$l)P:JeQOS־?kE!+yzwmI6g +<}⨞_:Hp^3V ƻ﯐Er7+L88`DfµStsk:Im<`d8( )$kI`rOvOGvðn5wbc[%c}Avum%ӆ %;f7` +pl!Km&&1ۭG4=w$~SXPʠ{ 6ꕟ.֗ɧnQ ~$>77 X+!3*^07spJ,4@Q|쇜0 f<+]{2fl33z왏,Yfkd 1f֪sX&AQ6~ +ewce?|_  +40L#+ +40L#+ +40L#+ +40Li&G'm+;X9)],z7L>~zڋXo܄b~`-WY~J{kv{ࣝWޭ^X(Lj>ONqDž I}tkuX(6Äz21/޽/l5@)]zt,Y&||z6n & }/]Zt,c``or +pY镍V%Hti*9|qrɤJkO]Qx/o(]x/] EV ?:$ǯӷڕ$Ƀ~6}${ZVG `:Gov(Ql^tQۘ&{RW;Jj$l;hO_$W[[{tԿLZ;9wveWU׻_;H6 +2{qtt𨛌zq^I^wwJXE;%ޝhdX'|9|- 0OĊ$< C%u8Cz;n~z.ayy9GVuIY3=xw])9_胓etnr; .9x8y] [ֳA%y^{U6~|n+ Ysp0KWC';%xdx{7Tww{| ݽvjep Jz~+]HV9tvE7vF5LѸOb/$f.~ߨce{pSl^lL (j ~mN +[}b٬o$G`m>-]Y.VdQ+t߶q>VF:8xf;iwnRyEu +pV ֍7(*L\irnI`}u?;ˀkpTX'ɋwmIJ7I7<%WBXqIM,5Y.&[$dCrԆ1ŐI[gn$-q`U1Hw+ioTjpvr0dwx"sl43ރwJl W%+[<[=f{MMr_ةWکׇ7k۟E7$xν$wNnuMއaIr3h4{EoJ %g>38uYLz=? =&M|f,U)ͧM|8%@)  +40Lcn3~׭WK$~*%QMj{`v^.6 +~*%QMtqTx?ޛ1HOlh$IzEkD# +K*Z4 jpY?7%Jldz$}"e1-cޏ+.$I_2P^#iy͛7uKa(]#f7o޼y*] Zo޼ye0c.$iX$?-cx?ޟpidnX +dy?[&,4tt y?ᄅ7o޼tx?$6ɸ'->Kb~0s-K yi!s0S `}cB~0; tWK,߼y7`wJ,m7 ^(⥎݆_cW FEKN_IP̉]ï_!2Xt ܼV| _ )Z-],.H< +7o(],޸"~0O.otûst!$~0oQH*]܍&VK lt7ۥ !zMEY.6<盯KBG!YXGKk|jW?X4 +h2jJh.WFJHFJFTwjNM|RYaHx˛ҕx?(h‚t˩B~P8,}Dx/~qjH77 XV;G~Կ*Z^9NmeU=zS F7EVsm+ɽWswbW5](%OD6>LάyGVp맞wvϫMcȩ"~ܘWh+>LYlUߵi-vQi_>QaŵLJIqTۚc߭}W/NMtk7֓sڗz;&tz)6vth%N2v{߷V[ R[FiOTۭ'݃A9I١o+a +B|o}=<{^z5E%^$9Y~jps$xgV_4iͫիkIRyի~đ9|ٝ<|VԞBիWzTr1(] ޏf 5>~2~竌DHd.rf$y\njz[N/<(Ǭ h.@i nDOJpdع(]Z?y+]jnNk[\(w5YFjnUKf:Kdhj>jt!+.feիW)ۯ^zV"_zuх(Gv^z1mW^ݝsrv_zYI]pdmz2<,;~ fJU[޹+'ɯajEm~{+$v>rO`N6 ζL-:a ?eleIvV +vdE07B-u6eAp[6'sJUx㍉NgVu{Jy{t+$v0bЩ=VI/A7iN5 ++,A9$&n9)hדN4}fՠ֋O3=gauLJNI~J~=9@*[ᰓ꣟t$(7lu$d/[&mn-I6^/k/jz$yճS*ƫR;N4WW$"m>x&sW/^JWNqT&g) |GGI$4+ӣdYFO|{Ar͇ %I~6ga6Vٞb|d>H?NMrxԓ<0VÃ_oWr||^$;f$2> +/SMask 2529 0 R +/Length 141843 +>> +stream +xwx0snZ.! w8v$'_$NqI;qI{/`pAP;~B$I٢9s=dddB!Bs 7 +!(Z,0pB/ h4J)XB+B_!fY,Y pt:%IjooFK/KEFUU3)x7 !t^l !efUU; +:j20[CD}Y&) w!t.4Ma4MX8qbnnG(;wH.m۶ZZN2eefk/!4 J)^BhhX+Ȣ(.^x(m۶M1cM}xWv!B!$HC\kiټi3^Tl !B!Τ ij!B!t&lpz`B!2n_Hz0[C!B>Է٭II7ZqTCfeee [:;;+++eYp{BHBB&V:0 *bUU:KVkNNH$r/[9j(AJKK;::zX?~竫{;0#Fy6jԨb?Q`0\.4- +a:z蒒n>fmhKKKeep7l4RГ6 +(@{ ]'(1 3zh_YY *!*o3BȨQFlٲ7:)SpW__BCb3۷RQ㛚mۦipX_h4+Nb1$#mRYsrr%Ib&>>n.FeYb$B i<Bᰪ ØL&}ih4sg0!z2)˲}wWEJ ,SnnnCCCuuϺ:Y + +l%,rSS\dχyڗѱzP^0!!KiZKK~E*%%eљ}7s\Vu(#G!t/^xce$SL96+:jR +T[%:dAI+m\M;i#dffN2yUUwqС3gF߿qƞq#G]n]ccI+`4=OcchLNN3.:sLK)mhhزe !dvɴuR=k,J)---ݳgiƍP({HLL2enWUtnb{5^\\,u6GBBBee~n:NB0@}}vyFe^,˦Y,ah}}+%%py<ed2ޑHDpIII III twwggg UUf%&& Y|,l4eY| |>j&''WWWeffl6UU;::|>_k,$&&\.b{KHH0 $ihLJJX,㨢(,k0,E111j2 #I(x$:ha_nFcg0ƎE4 H|l̽DQhimmm---\xA4Mkoooll_[t8eeeŹndYnnRzqqqDž᪪*Aܹs(>cSJ`뭩i=֓@L[[V(Jj,dk?^{n|~{ӦMhKMMݸqcSSS`0q2>7ܷoߛo'8δ4B᠔~GEEEyyy PJ7noذ!;;l޼*//zǙLq־k6lw:<[,o߾hל~MTU5gp%&&\ˍFN3''')))<.kv=(ݡLJJRUUĜ} nOKKR#F{p}ZZȑ#l6'%%=ZQј7e˥(JBBBaa!X1cx^Ym6رck6#5j^$e )MJJJ\\\$1L|¾ԓ1}&^#v{uNN~c|||~~XeABH$h0L~~~ff_XXh6 !^wĈE/X8mZYmoo?|> uaIED"pXӴ'fdd$IgԨQԜt?..NeArssdYfY6//rBFc$1^nwfffbbb,e9==`0D"AWYT5McY6''G!4M4iQp!li@=FI5j@3QJg͚e?zr;##e 6OFV555wtt8NeܹVrSpEEE(|!sҤIVfh4cXCCC,Okrss5A^W~ &dY}gq'±M,ݝnommկȲk׮H$yyy)))iiiPh߾}$طM!$ +~m6TU-++Ӈ +͛gyemGwСFO-[$Ib999.j*0'O*))BOƱc&''F(ڻw5*''gnv)--Kn@cc>%8ybq:;w<Ϗ92##CFEEEǫPZTzjnn7n뭩_ʒ<1br PJV˨dEQNrrݿmmΙ3vwww~l6Y:(f۽k׮n + + +[[[wء'N '\WTT^I xZ[[`Μ9'}\!JY *QQ`X]֡ni/J!e +FeR|!cd4Uڙg4,X0P8.,,Yv-!DrVWONdYB!}Q(3 &IT}cMxz ;;;].׉V=YO|I&uvv|>I8#ťqqqzg@(:AcH$ԅBN^xSEП̓2L á_뽥j<;8nI- !$..N HNNNLLm[xV+!z}K!&E&k[^u*7-vu6g˚v懏ff۴iS]]`YaBHeee{{ 8nԩ7nԧII hoo3fLGGGkk酑%%%6_^(z<>>!!a޽]O)DNNNcc^a1zcwҹv! ڇ5TiPDr1 +gƔC]Lvc+ՅvFbX (((HJJJHHл>1l6:;;^o$)..4i̙3oطPUՊ#G^֯CN:UEYYYE/4!++k6`0SLIHH`FQsd#BUU+++yOLLd>z3Xp+%%EZ}Bfeh47 Wt:0vAƠhhhhmmy\$)xztfá8Zy77p8 1 R@ ZZZ&L7~MbW]]>mO3NqܨQxׇM~jjjzzzf6߬nLQWW{PJSRR@F〯~WW0fw$ !TF5mDQ2&: fB8xkV.`F vQUup8 n۶-55Uo0Lgg'˲Ҳg ضm[FF%%%컎?\vknnáPiJssp4ݽ{~1c˖-zt㚚JJJ:::B322IoaZy#RI6=p@gDee̙3f2Ǝp8fibcǎ2L(۷OԵ'$$,+`0iX, qzMqطo={}L&S,z;v^on ǻOӗ3 yP( +Ǝ/rz+'uvp߾}}KoyyyNSe0 G)w}lkX,f4njT[[w튢Q Qp 3fL[[izY[[f$FH)mllv:PH!8B )ɂduh,,e !4BV c%U Z/g.[S|Ύ544gx/@ PTT{;BQ˴]]]Wu8Oz E"~_ Ȳ\YYwVEP~59gl&ݗߕ$IMMM}ω~$I}:::~`Buuuhn.XJiiJ>nw(Iiiirr2˲z]A}0띚 +Ѩ߷oׁlhhNSo$ﱫڪ޸IO5~FQQJ}>ࣷ7 ]]]---XggRY>֦][[[YYlO0?pIII||΁~RڻOy^~kVTTE)B|>߀M$I|c4 8XWW'0֭[F#q>߽:::LUU<>VP\\G9t@n @ źz][[A!t q1v,ChO?s;P)۹i]]͉felޅZ[[l, pGq񅅅{S2eG7.:g])}q7s̊9Hh0̡CS iھ;ĆsM?؝s qqq999]]]Y|#:~Bh nb20<@gZ333pQQQkIXa_exh4z_?A!5JH:! VB"NqvE!B!40[C}Yٛ!" il !eB]B !tz !eB!\ +!0L(:O!fk/KP(&%!ReA$)b:=B'@) hbL&LBb!NvG!BsVB"B!й5B!:aB!B"B!B\B!B0[C!Bs9T4\!B!5tfk`B!:5JiT !B!ιlMUU~D!Bsˈ>B!BCٚ^!B!Zj!B!;!B!V B!Bhx,˲pGpNek!B!48;Gs?B!B #BpB!B\B!B0[C!Bsfk!B!t.l !B!E!B!й;#B!?~аgϞ})!B!l̘1`P UUUnCo߾aSL&Ә1c}iB!:ǏW?#>h4ڻoy#G^s5ܘeٍ7VH!BA ?~HwJ)Ü{EBB(iZ0<{1Qc`4W;cw:ujFFO?}UW_B!Ʋĉo*B{o=SO=}^{-//O׮]_>SgҤIp=g?ӷw8?u]7k֬+VL0nOoK/1&LbŊ;v[1$&&{/_=ѣGՃy<GӧOٷotf0}e r?d;24Mkii?xŅ`Zv;˲GQeTU4MEUU].!$p׳z^QQU5 vuu@rr2˲Hh4~QEQFohOB!t2L^zܹs* /8η~{̘1@uu?xMf6SRRp FQrf͚_:>zwb̙C==UW]׿׿s566666.Zh˖-yyyyyy 3gYFOWWsEQRRRnVsUWK.x뭷>.]k},++KIIџ?`_?◑K/%$$̝;?qqqlOo} M6}LUUy=8SEihhƃwq%buuuJJ~s窪J)}7Xe˖EX,vRSSY;&N?!--}bb"qlٲo[II[o\TTwSN-++s݉K.>}z~~>˲o_O'%%Uz衦w}f5449΃ݺu{.r0̪U~zJ?B!б~ѣG999VUUgdd7QU?>^.袜~ t?JJJrrrfkf͚>(oذ`0%K + + +p7x#K,={PZZ:3fܹ,<rssN>n?٣>!--MQl-99IHHNSjjjjjjN/je̙{袋TUU͝;-[ >>^ڰaC 馛,Y/]499/~ꩧ<8iҤ;3 7۷o(gy&==[y{;~P(_߿??{Yz~f~x⢢oO7w,KKKӟ$sUU?W_}5!B۳ ?_DQLNNgoRZUUURR2{즦n;766j6YMNN裏Ν;wH$r?SRR8kkii ,^tE˖-ۻw3a޽F{K{{7o?Oˈn{S鮻*..-_\ꫯGyܹs7+V<䓒$^/0a^Dy>R?~;ill|뭷F㣏>0L{{{QQu]cXl6mgge>s}/>>^ngݷoSNJJz _|5\3k֬K!BXFFȑ# !X,qqqF:AUUSOQJo]vm޼geex<ӎEQwy˗ϟ?n(-- B!//o̘1wqGkk_[n-**2Lε^[TT~ůi : +QJ{>}c=V[[[RR|?4M7z`cccMMmO644\y?1LŢiӃmݦwxve26olX`ժU{^ssUz]p?t +җFj0zҖ'zW9s~?)))''þ~7>Ck׮KN}{{{~~ԩS7oL)! +)RTTԻذaiB!&$I7n>(Jccckkk~~/~+w +imm=Af}+N~{碋.*--}Ie֭Է\n]UUUٳwoϞ=z/ȲlAAQjkkqʕVUoV駟zlMٻ+-;<3g /(TVVN6agyf˖-#GO$Im6[VV)dkVZj L +V曓+**GffO|+Vx㍳g~ᇛ + ++rСӈ!l%KL0aɒ%'^{~_ܹS[nHOOw`0))rp!ByoQ#믿~3f,+UW]TUO>9Aħ~粲2%cg}{o,[[nٲe˖-ϟ~}MJJJޟ?}mD"UO4}ꩧ ŋv{4ݵkI0~?i=O>e'fgg_y>_o{yMnh4o}6 mmm|I !BG^w8KdKOO  7ik׮}'Oڐ ;;(pGB!Wwq饗z<`0cǎ?Թ`0PJ~McaB!BG;qv"B!F!B!й5B!:aB!B"B!B\B!Bc#B!i4R:Q`B!B}I4!JHB!:aB!B"B!B\B!B0[C!Bsfk!B!t.l !B!E!B!йZ88Q B!9DQFw !B!4Ρl-+2Q B!9!B!й5B!:aB!B"B!B\t +]F!iiiyyy sRZYYY^^~&bC!BS֬V}ݗF[ CzzzaY2a1 k*h6Q B!t\'|r۶m-'O~nx|l²B'@)B!:S[oRJi?@O!g0DB!.#!B!t.l !B!EV )̙3fddpun`ZyWLƈB!B_?koOHwUU-[w3#B!B}ZoܸQ̙3s瞅B!Bk !B!йLrD4M\@5JlN4!q ҎҎVT $. B&./hj#6'"`sBwb$. BFCě h*P +8r%AOJ;ۈU;Zq9fB! moS]!32ƓU3cVж&[{.JކXdsߢأ.]ً;V0cgWvfdV]Mtk>b]A\^=I]6TqKn*AU@Uh8YmY5qoʋ7Cȯ~>;g ^B!BhN![3)Sl6|YJ\'Ű`Q^r:%ǛYD M.pq7g\Ȑ*IR(k gˍC-fˌ͵վ~T!B;yk$ItB9ex`@& +Xl0  l.bP +,D# @fa`'ϸ S<,j @1YE%xa̶< 7w}!J)B(ᖲ>Ѿ|9no|_=-c&̚7m6"I~dEhe>[Ѳ{,KO^]YS{frͿW߿uOeQgkG,vēxؗɢ^[dp^s_=gE=}&HJ (Ոh@ i@)0 P +==)J:pbr,& vs8Ι>[ Q5Vg:ek$EzsU4TĔ7q$Cdkoh  =+mrI_(aB!pgk =%I(q<A)j,V'0 0 dzTU`Y}~_)(ՀzOi9}'?f_+o!:R[YQ&;}ĺlCDO aNkOD3]tDS^~/Y)`-BR 6$4BA̧:gqz/P RE0Ba'iwl 4d9PUPv-D;.G5e=㢊rTE5PP +Tzvd +IڻJKLsEΖéD]54>+c=gE{~;oxO 935h>zekݙdaTEB!.5xbSU +D ,wvMMEʄӧQU(PrTU{^Ndco:G)B5 TQ*#$OLǿɾn:Lw12+Zk/[j[gMra؃d([R,A*ٴ.tF|:R3RU^*XBlrtv9@c늪1/|Z=CjDUh$HXR4*p@{5P +5 T4T'S`Y_h#72lO^H)PhUT'';M}mKoFMO\KϾwnqM?~ek}Ip3];?zvHE[ff< jć`L=NSƄKny|2])B5q$KvoxV>rW S m붇lc.?!ni(ڽ]fm-:޺(V> [Rc2\,!wTܽM:^Y-)gYqHmei ǎ=fX!siSM&t\IQK09mT붷D}٣&p Kز/p\n>`sfMJm<l F5XbDSeA'gieAUAS(+!)Erm@,FG pF܏hF5ghZ +o,O`"o{6;x4EqFRGNd~7?=8ѷ ! f&O7ܖ+-ۼs-+;mh e%;jGm't_ӱCN:^hNnJR=DRf ?sٚѕGClɘ=aJ6Wy{M IfG{~sgB5V~M KfY̜kƅ-~UmSI SEk);ٴw N3g,o\''[cxB[e]v՗K/~Y V=[#-<\VmN{~R)tn8aN޽?;Ӳ.3 ?;5!֩8|^SӦ + %ψ38pO7XrMm>hOWΛv Nws2h Wds/JZx㋙sc +9?om s?T*yqCpl]T`Y"|?KwQE +5uߝ^S07}xS{V9wwM˟x-QEb͚Z,xp {X4ړr.^p]ѳO @ɗ}e|g@`OΙ{73 6ʆnU0No䦅+׼U$ِ.{^[*"$ХRf]xk!?|-5JZp/[z#Y͞1aFn'9gyQ + ,Th8*BU0lOQϠ{3KlrJ@1 Ǝ̱YقCC-A`y[ʈd@j:t׭}Bqs6zbc]%k5%耎{O:9fu~٤-ZҚF_r=W6^wdsRJnRe&}5u9)##t +$X]Yߡq)#^]qK({L-lԺ(ՠ;j0ըT@ko>6⋲ԃ1f^6Zj۴bU`YQ {+󯝙Mv?qYxloY?4OZ {u@{]ı?\Y_9<'ͻx+k*0"ۻ;:; id~Vwis.i32^{JMz(mwJ#Hwgg,^rI]r6e;^X]G暉6r7^zC_z{qڽ+Qb^|݈4}znx_lGKXy07=ښ. +D^ޮ%OPZ`/Y?ýI/5WWl#JrJIuͲ"-W˧띷,S)Fe (P + +JUPUMJAZF4ՌBz+oh*(2e9QO4cw=|1:U9C$ihpR"[ ;W|mRK)M059 +;[x칳%v[U2fх=[Qh˖(tn]uTfp͟~q'}n/beGޏSD@}Ti)c{YH>bC0'))Btw_ypk_lkV8Qy\8&iݾc h1g[kofe]ЬK:B-ǤjbY-zWX>eލst3;69Ym ΤvOdž5]5*4OW8%-GCfx닢S.9%BtuIOM +%%}ʑ%^=osgɪ{Gu AbFN׌8ORzv֟߁:{Z A j(= ы@^mW3JMb(Fpn I> #׀lUq#u΢/)y۫.'_wA4-)> h NO1J F!Waƿ]{‹smmck;3nm߹!wyqet/{cugo cGą9'WƨsIGBI,{jUq~TqAxTCoffd` ͤ+Tp-^5aVu/-YQf|;ߋg?wo̘q'J*3G=;S\ֺe㮎1l֔Tv4bTj5a樋$y[$t"@v:1[MBwSuv&`֤I u?4!&ouw(ZEӜ?[8n +(V% Ji,Jzxw1}ǾEJ[(UUBRj*h*Pd(RBU&zB,F/F}%u%TM[>k/d˻{F%씔 0Rc}sCY!9ٵygdm# ikH]cG̾p#mUQeWT%JҦ>JKgڶ>@DGWg"Hpl{w{Y]SSs7g:*a"k BƜ +eQ*kڝ#q܂Wִ;uVl\ݫVtEU"ׯ/i:vtVh ^^ ؈Xі5_?eI=_D.<߸+ni5 Mtt1| 3- NDc +M +YAm #kș5}d`Zok]Ûc䌙}}?6(deܕ:ڪ+ iLtߎ EQ㞴F~w,+ +qT9vIuS +}ٸP]%EQbB"DH=)n)}mȍV|pm2[}eW]KL/Ȣ13.>5M\0-ajؿ !iij eYE%xǔ{㒲S{Z `c-qGgnYƭl^eEq6 &~ɰIilׁC_cJGSc]>#U  dz?&iyo +7c\(:j +<ʟ vٛ =g`,?bQ`@[ʖj (#O5" +'JlҔ]UPgIwwoȞ~wFXmR?YI(ȱ^~{G2#N,NETTQᏨ +)a9iZW{1<8&+FOHIDB- D{:2@`4[X,-@ ^§tu}%5+0ۛ(p"+PXjdkR.yn0sxf9ܰߩ^ϙMO=Ytz5Bh$C5Dža +3H"S5 +i3L'i0jD=@_@o}$ÓTXcTUAHoƨiDƦ*JDSi5sG%k)-s_vן< /竊|JM&wNa>S:5E.o̙>;wꗟYwoqbx5{!5Bvӫp, WmW_>#[aؔh}޼fg3&^U][̘e9>fpD`0Dɑvi}$k~/B;I +6CA8ʕq)\ɇۯoQӼ^O_ 1]'kJʜ4{Ț&[xB@S4i{k{>bT" +t'-xY8.X~܉yȲ4lgDhS=^Q$SQObH<ȧ^ZZ2%?Ux*5?ޣQ8rJirE]a7!`IFAtihS{'xYm܌M`ɚ:> x=Iى3>9zLcl͍˟z݁Π +ֳ@3UMSpG{:qt2 d + p ߰],1'cݠ(%{峄ˮ;K6Ɗ*#K+;szr + Rt}Q8횋j_tWTRL®=l9/ }Mϟ}2'^zف.²xSBBZbq_\ N.e?!wڍ˿xOeyc](I.ș:qJm/ֈ +BըF DzJ@qXkپdEIKe]{畹MԼ-&ímG=Fmt3.KSU2)T*Tpkj:qNWo) ~bgMJmUAe%k8Wn[*[vQ>;% hr{]hNSd_Cu<}U3eEE#{gfJܶt:-ߺxԕE5U2<~r~rb 2$P:jvk{[[/bJ|,9y}S5ZԷsn))XΞ5s|.װsknkǏn.~mwNwoz]ӕ3i$m>$qۯ'p{F}d 8AbŔf/3L]Uur;2kgeJxZ:Wڪҧ//m50(p~{֑3>: ,UOG z pB HRQOَ7Sd=-AɯsK(*GU%F;܏DEMY2/{ӅC/&gwq#^P /7,9uĘy% |7+,*:;+81/3h_$kҥWz幢{ߝi|ݵ/k}0E)V4|ٶ(oH(KvkMr9:RwhI]1eZvCK.>~ؙ4 xW{'m-۳3?vګ]7bJwGpSIͱ-7W7|{7ﭬm jpt644YFɛ87R Wm^SHweP_OϿڧ(SPֹE>[[45ZVoN7+bR{=eFX{Z}ֈ/Hhq)|ͪS^HFFX֓myVG_TU;²l>poMa "Jrē@] *2;` G6c 0  O#!p8Ed/HDi tJicr/ 3GߣOiR4lOTwW[kwo +&xħNYK=E *ɹn>oH|VO; }_o?zxzCcd woc^nK>yE&ޔ(PhTg!:c}RQ[1 rI@%  +#!Q !z~_Оz|t72 :97=xԥ=G C_Z>:s)߷Uo¾qs̶cfY;Vj;OB+sѯ5oϫaɱO ޷Lwcxߓ{iNOw~"oPTo}J(6BrX JO6JbA6 Ǭpk䘂&Cߟ' t`C{ځ7w5hr8Թ]`gCeO`8 G&gظq߸xԾ?G"1c ([.06{U w`g&\u%emwrb9 |@nuŃ<B>x[Ы1~9 UsWi~9r94j/tXU_uso} >@۪RO^wMnz)r;?}2˝U_o[@]=pݵ Ё/q};ٙ˩H-k_wܑ9N;OHĿ8?#=c8#~oxKy鋞4E{,%Zo5#(G;҉*)HY"SBj4z1Tzk,\ku]RSTX+ĔYw̌8[/âzW˛:3.цWACFV?)W890KW\vvrJOr"W. dXr hjGYY]q~GLAzg7օNV!BGzoqyyYRlrc[g|_'ڶ!_cN(J-;sy{!"(2Q{@)F i2\y"Ri5eʜiM1K=Ә;xrWKʑF}{7k{CggO@rc~'OimY^OĤ|}tՐfbp:|yѤҞJH:u5k.S]UE!9O+O6YEC͕gbOJ3'[  +b]z f4ХX4NTUNmk3_~`Mpxdq0jԎ:)EkZZۂrxTy |gu_ =mܤ,RegsD `M`xtǺu-W>9^9i>(ѵzc惃rpSVhCp9B!NQO6vgۼv̜uVTTT+gToޞtQYѓ䶊n)A; 85=7AlEέNKr*5TLHmQ$%:M{Pt`H{B"B!tZzV+-V=L6~wo߾w9qW]uw_lD&w4T +)RKc3U;Uû?: EU1\}6õ&!B8&7;v݂DQx} !B!)j-Zo\}W\qݻ=qx6E!BSn5\p8*++lٲx .஻ ++W<E9w1"B!)566>CEѶnOWX!IRbb@FPU8 +fB +:-f (&QR<;kXOe{B!t.:.# ?455͛7WVVPdkJ?zArŦ!,PBΧїbOj# fo]imH:ZF65+f۔̩ +B;6E62fg1l:x]}z31g…Y5O=B!:"RRL]aRSݼUj *#\FN5UbKIGn_Wx४Բ5B([vm4ݵk׉7;b7:K?^SV.C'>?:[Ksڗ٬QM#.e^oŦ- {e_{$0׾SLN:8/iw=B!:B\#f?~B6[o*Y.YFxtL^vGьfQ.̘E9XnK ޝklM4MӜNg1σ"NRiiDŽyΓ'oݮQc'm+tp13Rgz#vUԈyi[?4k9)Fq4QFǥi e;Xh;LD h|r`>>wdHkBrGoN:ۺucJB!t,E:;V7f)B4/y0_v%~c愑ݙֆ)#:}T2AdkRBi'(V233CЀۘL)S]˄,e Ɇx[+6;v +Z@gINvtֽ\yC;cћi)޲bc&;;Z"V$ծ\2n9>z.۳e gg|EUҸ FJV}Z7b֥|qYgɅJGJfO_=-!BuՖJ #έ5gZ(fϳu4w)F^8v]{ܸS2vll `e7[Z5 ']k(Y9漉y\Sm5V="BE7D-g|S[SXڽiih[k0@#jU3 +vi8c8!!otm}Uj$wUxC&Ru* jcZ \ȸ!U*uwtE%Q&wiѫ;N6f.#.wZ:%iq5ӮZ)Q]xf`'o 5K =FB!r0)RsֽW]}Ob}oXҺ~ K{UU +Ý|`uc W{K.mi;1V=SzVUwdeY<,!Ji(:K(B,"iL@@F"p34J ÉGPF*QѰʈjD%@E5V$ +Ƣ +ój,PBDgE5`xQ`T)h,'lsB'U + o0- @X1r$ӎޞM&єX4&vdk!B}In% @!B[c`dCUp!pG!B羞lMeA'?EB!B皞lM$㘁l:K4M$\}YA+K@wh$Y@5Z11HfЊቁa!%B'ZF@r[ _aH2hXdbHbhg  ba!= fZ^4lǓ`2"G tKUe> ĐqI ) $Yt S ,./!%9ቁaIj6$hErᡇC{b`HjxiOH%d$Eeٳ]I)UE$đLc2,0ieD4Dl=F ViD0dXb0f,rF^{B951M/gRCo[eYb7=b`&̋+Jd_( <fc 8B.sDهn6b` &E7%#jSI7 Nhy|QzXb iB6%+afgG>xQ3޳yn/H`̿iA3>7q/mB>xҍEQeyxG 2"S gF>z)egrSau#>g4l 0i0vZg=`وALVhl 0idQM$IgeMycc2& ks֙M^`l D=O!oAXV 8c0n/8>3 S Dga9.1M;,Max/px;C$";F39/6'0~&csvװp^`= i|!o|1FHaF4.K_e ?qx@u{c F%\r}u1F3#8 171Z&1f|Z(v73_@'A X{ޙCP8KHe Fΰpvb%F i'jwM2/u uLAUuyкD4j%\u^: an>-{r ! Ӳa8/ )*(1x +yM %R):s0 T a Oe̡A%,%ը"ɬ3 %i|j1 :aX֛JMJgLÐ9)@QXO0O&@cs ycYo즲Xrɒ1SX0$i*2ӀZ$BXӜKk%Ca^`Y QU16 d aRa,PPQ.8K!tQY"0pΜ8qx@Q@Ugcu 7JQ*l| +clR +Dì'aX\b(J1˲n/h%-8=0aXgh T< j4"ȥ@u'X,;Lc4 %`X5bn':XOh*Y1Z8.T<[#D*3pJcɌh2W\| +Y҂~q Ygܐ6>PYM?Ȓa|qԡ2Ki$ rKS-w3%`X.) 4MG|e?\B +csjc5ԙ!\r3J AA͔űST9sxq WX%Ti!2, y(YɈFW#@$*(<aDB(PYҺY4w1r7!f)r`0:::ׅHu{X!=4DZN*F§foa h$B &61  e\bE-& !a=r] _kupI!Z4hBNe9qLnup :=TS`7%S[`w@U*ǴXX[hlN.51!^haٸDT9A2thua%9xw> @ * i#V.!ڵ`7edb0 +# +UmiBu3#O &h %gvlk2uzB4Dzz%$UT vs b;֦ 4+1O6_xU !q(Bvj}q)H;Q9?zE; ckpj=<0& 0`45j09!B8qz^qlRPϥa.!@5),ǧuD4P) +B)CMHe Z$L5 +0 I`\0<5g aYFU(X8pa4J5FBd3:dV*Th,-C?JQi\\,z,SUYfn?8=B*2Ud>9}hR R)Q YN¹1h$L% (PUaΡ;Ih UPd$g0c8G0iC3ϼd̶iRGx1YX$p)Y|f70na"~lCpH)!8%kH%&"ep5vLQJ5T*C!ʔ];RMD +ig@8^71۴P"X]TծKɴ,0eC /sbZ( M'Av*jw9٣ꛟqz@"녾Th,ʥr C7Quypk;TW9o+LST_CGμKf-߼$aܕy:Z38tJ('g*z+.8 +@i,Xll\,kw.P)E$(! +؜ZT@U,Mg蹄XO^̋@cs2V;왜0:=D4011[X8\`b,6SV-gXw0HD\Jݿ'!; 2@O3rIr!,D^KiFcQzD`؞kRq\b*0^5aa{&)2Ɍ٪CúH@e2@aH&,gn4Ue,Srq45J5Tuz`؄qDZ|!MEayg0 CU4M v"N[X33-eq2 @)BAh1M[ T;jXvT66>żJEmOB$w54-|ZR_E`:ðxZ8HD0z\WZ{ +]+ʲd[lc|3 i0 l [V9{O{G{ }l8/ckuu{}?K^kp[w걛 3 ߹ ^ם_JmOx~rMN7}S_u;vpozbQZwrY0]7|oo~7G_97uSNxYQؙxs4z{y?xSڃ Ao͈ϗ`i1or Xy*xeMsy9Ѵxemf Q7xKu5{F +f257`lך;Yj5Il Tl07\uc?K8`ZhKRWpFf)76`%aI"8/'C kA0wb/beD eQh-&Ӡ/TӛEvœ4KetxJ#M5yK͉֘ .eCi|sN4&v.=tKs4N+iR˛čɹ},[3gt(LZg+8³oa Vdž0 e"$!\- .lš~tX؏={yy՛>x6θ-aY}u4{ۛcq LH;kN|kՋϴyҭ5G |+9^}  _OZ'yYoh$Gκ-?chwHN]~g_;Y"9'R~kn]{w~ =~[^=U keokŌޢ +n,D+R?n*R2p +L)MqEm`](9vM"R +Mk0дs/M\|n5i Jl!^+Z;Rrk3г!u√9fO98h;+ Wٚ5-jۍm{*$iLЭK֤4@xd F7oX1/!cp:j^g I 2K8+hH{Mf7h4Xi+?&v}X)\la1ɝblxUᲓr٦Rܶ"<TlݘV5`{-uh[1L^1LT5Uk"8B\:1u͟:Ą¬=ܗ[|H͙<_54m{E s,!:PS,N^V=x7~PHqz^W[熻wE~l/~cyl90HVۏy#?3فIr!&x. Ϳ|謫z#a> o~G}7|P5uιأ`+Xﱐ)ns8 +Dž3xfXD^XMjyS.,Z>p˛4s?ʃ ICZMN-f>LRg hƙf :iZS'œn,ע )CΉ3;֨51"\aMŘH/̲k8bSVH)j5Eml5|l-̘bdj4Id:yMx9/Ni7""C dy +|ѲxyY&+#Kl* Q  uܚWR +K!Em\/̭u$%Ŵ0K5DZS/W'ykyk>`9gH易aI{:j:8_e +,Y?%IΫhL1de Uj4܄r.KgRԭcے|S}\D!h"XZܾ}'''kږs\8=/vvϩ/=trqi!D+]t|o~>uδi@>tg{? ?E4wמ_ޙg{`m=uđ{Rj{[4^3).'n[n%kٛthH$YvM:6-ٟHlWL/ϗ&Dk|L qE#xZO T1T,fN,@u$FC,aNUT AK1"f h|ylcb*9b"h"2ƷoZ}Jh'@DV64r%2ϭ@7'je)e @ml63I TC6HI6rJ/TT +kyHUk)ɬ )AeGI5{R:aLHY\2 d3'M*^ńc} epKm-tq^;W- pX2Z1$XϏQnY> Is/_vـE}9̜o|M }_*4tÕz{o~l+wus 7c<Nnd$C7~gNBkecan}ˢH$x0r[S ט֑G}=Wk,':تm +|RRL\AyaX\%\+B0Yʅ:"N7A SLKCkazU+<ٓ~@`ܱ9 Rn$hm6 @LٓQ# R27J0{q 0(Kg\L /e-Ie~';7^ϗJŹ5L +ZI:ݜ/dlZ-Qg̪aa1f1Z Easjkȅ1HxH Pkk\cD}B_?|y>Ll7&v6l^J/Vੇ&?wD)/}u5?p_~d90q/5-|؂රj->7sj`]fq7u~WvGJ?˽O<lUzij5nBsEbe) *0ewxR.y-X׈(x4A1L84-c|{xb^w +|L8XviL'u%8<8L8^m zq~Ur3 -加^5 +xKʙer`7hc}BΛgRx,9yyJzanx@ɣijʁVӛдWo5MQE' Ï֘|)j?W{T㹢|hXPVaI=d)L$iZI Px:cs hݾ%Lpy:8r@ԭzHI"2"+(rKhɲEkk|sxn?Xvf:>N: #Q$ϗ)6i5? UۿA%w7wiNuu%"K: ۖ2eB:PXMϟǰB𖷼K_?~wuW^'}s??}gg/hlaq?woeoy߾尿rfzٗ{`2L؎)s`= 3qۓLWl[xm{+5O]wM_#D0enۻ ͐,XjCsECѡ?9\вEm &>ډM1^ ֆa}/ dg"JBKS;(Z6ϕHx&Kg0(VR7yl Q`ՉZ-4 c &wslm<H.6Ce h<_nn3ss{WDvW*&/@UL"=( :wD;1tD1:iLͅq +x8.tDcbm^\hӊ +"w %ɍZMu(N^zu ?,,h%x]#=ݘ7w0w#JG;  +4'=HMbttn\L@%EJ;Dm,[,_&ǨtsQ/Ι{i{0onjW^y>Ÿ _>oٿZz'=qw;0X[ձFPe`܄h͘)j6ڤxCaܶϹhZjdb[(ulB; >0/ss12y4L|lf:ptPbu7İ!v$,27 RiRPLgruHބ=tͭ'#@;$2mQ!Y [,cb;eɆ6.°y9 +5YY"i_*\7* @,h-WaPq|O8^Q!%,_$ف:0dGv&??b{ЗʇݹYg}펅ǎc_>zɹC;GsG>WN=<w~YpW@4#}{HŶA/?=p@j}盷=I*J@DE+mmDdU@D2鬨u)/Ú`)d>|^evB'1cj'v9pu(/0h٪mJi(םa>q)yWKR]:B)Z>xm2y4..$%5Elh럍S4x&ErLTH)u^2tvM;tZmoƚ$0W<s\쉵>(IoMc" CED`Mm |X!brnMa)aDmܾ>8:qd>ӻxi x&~Ebغң^;Dns~yCvJj-l;]w|+q+48 䙂m9K(vQق}Ù}@;j.@7Y~W~%Vsgҭzꮻz߽ jC;o<󟭅nc7[L@8q-7oYrn{u~`k*zO + o)B^gBWہlI-rG@ +S(V$wh}"OgD@' bN@,DҠ$D*gbj\:$rE(nPm{ 6{h7˽Dɡi녹g]J֢T9P PXDǵϽԿV}(01&b<>qͩ]tuOgXʥ_!9uWVU YLA;O<Ъ$H)Fy"fAXA%%?bɔYO_sDQ(?R HBJ,>|ˠT[Q (o}@^R0) NbM=p"^ôlG8m!R KdSI9 ,;55X:+5ntu'S<[G|Xf_nX{7LKiݡiܬdinf×CKvgrjN76sl: c"_B }lvD?iYٶm){7}aլ3o?<܁8,)|{rFC2ʊ5AIƖ2XKk`OT!Ա|1l`53> KNl<7$jJtFefZ !" B)YhϠzTV)a!"(ɬ]dhZ%Ws.!yv@ -Y'4pE$!QZYN +x*&SF:Z1\{WSXz[n`' 7 0OnV'c,6?VQHUѵo<M +E@m +xL( Cl>I\%`c,ܹOJ+4 : +/{AkuYPK]M!;Q"a$kjXXT`Y"*סX '!cXf)W8i?%0'v^_y -t 2N*52O缣ΚJ[X9;k,: DuדUf{}=tКر==8Cq}ooͭH@ rurIsKް2ȸ<9ĶM^#?F~tk_dc&ՙ&j.X3aF WJ1D"ZZF%)_nhRC2f va-% nj% ՅFcHQvJ0CM i"s0\LWr,0i%<"Fέ=W=v\p DL ށh'霡A Ȕ-6z!0lJj\ FZ+Y$5۳F1BPՋs`L&T*l6UMbh'SS{0SPwN` ÷S|0+ikSnn @әBrhdZwz׼~~FTFiٍo2JZ-z2&|[}o3m/6{< i,𵔝V{-ضq?a6y^ +K8nT}^&Zj?:~WW|ɓ`v  4z0SK|oġ.%/!3m;6wSO׿&G7~ 9}fzŹ-[0l|! 1td#^meT{( ^ B.i.)y<~\p H)@|삟2b=VA5>ei{4ڶ&ebKT}Y9c>sߊE9i+Q7,C&Mg$%u#%kcش:u,G^q~f{S&&&V'G? LPmX@6Bu0?d\I"]`y#FƄPzʉ d v%H cw}ߗњο)I^KLB9"KhZmK[{#wu4~bL\l_@J^i~zFa$:i}HX{hZWuP/mo-CJ`L*k,TZ A2@+ +A"FLXQaVh95 ZR)5чPsOLlg)w2`X<[+ M ^+Z3-^h{I?$jxiAy@"_2Ʀ[w|k.bM#Ӭ65h uogv1E+a93W \>R[jnъX:FeEu%I)QG+AQ3&Ȥ=B׌g{= Zbkcm$M$X:3Pc͢aRG>ZL<y$O}Dkq_~_WtG/}hLvBk0ݖ!a$?@D^IcL@~R9a/ֺf1;aLzuQl5ɀWh);h ey jHJ@ +edl JFDQc}PKу5X* kWzqA+.k>i^X6t4RZMc|G3.IIԛN[M/r=x4L)tQH'? Γ8/i cbȅ^{d])Byb*2 "f +̍S8g ց kR|pXi:{(ܩvRŽЌ1f,(%yZnY%S,U9^J@nLTF)|" Yjh :h 椭}#/ƖF@'v` 7Ћ/x}޽{o1`Bvvre/Y85?O 3 𝟾,yWRq˟/`yovgy׿핻9/}ML+Uoޏ7NKq~; gfXۿg'pK#g 4ﳿ߶v^czMa/?DL';U|;ruSww= +O@h-Q3o}?Ko7 휟?_d,GZO[Oe{E$''0~~'oiYgu_}h5? 04G/<y_W|f<+}NDEO~U{:%oyy/zlorV̊Uk23+YA[jqr'-4Yʍٺer$5I2yL" +1\`hE4yjmSĠЍ @r%FD㦉,tZoTk8ϒNWEd\3v}2w5U`kAQ)=QZ QhMJ Ah(nX"j5Y J@&*(t*8A0xul-1__Ȁeh'b1ʜ}Υ@sShsҼX%E +]jA4 ^9"2)b_F8BY&7\zc %#TihGm ;OO^{wy>HD{=s__^wu[ZD &./>pg Z~j0 )O}[ߝ]z`??:)]~[ +>X\X=?}gg^xA"^֟cm{cOc+ : x5>}WOQే~+>3G;/o睕om!"yn1dG~Zӓ_ggN*eoٷN\_4^8q׾v%{0~!RsYSјH07Ki|sE^%͘A8L D,ʀ]k;i^`1*%1^=#2f&Kh#"o>IߘɒP;0[t@+5sTgƸJvnj%Z,qIti%#Xbn'QoJPB$R* Bĺ s>^V8`ilgrѰh#Leь`YFO! !Bn6ش֝: 3b 4؜\t;ݔ6& P1w72K6&S@_VsWx㍣??|׎߾ꪫ>mjA4ywN.yu%S7tZ(RC -^OKCwqbAif<=^x'x˟?MÚӯjj֯ݳwwol.Vݭnmj2=4,">~_ҵ_Ҭ]Ȟ7o{A7ĩK?}:g]}[8Xͅn}$uSKj5Qczw\ec50΋5anj-p˫od*$7KeDm|KDuYYzf3 +gElGSѴ"YB`anoBe/ G>6fX2,A&_C+iL6L3+E^39N`*I#1ef72% Z D$2JxeA˶^v0bLgc}16:|%,RDd + 4]H[2^!@^cɴ1;=QiP5@hڑ? g T-ʘ͋1RiS~L-,,2k[`rWl}Yu*SWw?1}oxۛgٻ?w<11+|c=8.ܳd} ҭwoI{?Tg=<Ƅ(G@0{+ '2Ο\/|{^?z{YZ_v07ϜdB/V GcYkf kbըOO>"b28EZ{-Qt(2s H^ϕԩctɀ:z{&)y@&^Q/QX[24L +;{E!6s]G^r} 0by-L̝gyN[U:FZܶǻ6j:;8/VόK2t :0|B+=Q`LS,WD"%/T0Dcj'uk%ɳ3MctgK8znfX*c> ;Hu4~ ;( ^({N#d 4,f ^CI-G|/дhvB +)yp +`ꕏҋbdRM#/ >8r%0- +'8z C]_^9r7[ӈw0̟ɧk:y3[⺏S/we~oV?x_\y+j5r;܍"?\nΜ@yO|竟>?N_oyS:/7.kTkЭ_C9{Y?2i(9*:o \乢ru[5buбv:6l{!ɸL0xe7a@xlҚ-<ӻY¡VnA,墓gNt) f#xh+ YG;ɜm k P<K$ڵ18+q )ܰӜ.c<_8bdxԁ@kTU^^`¡@Jr=FI8hGDJҙPsA^ŹJdڃ.,Ij?4K$F U2:5$Lx$yh/aE \Q^8VeЊdD+ެn60b)/)v [Кc6'#w$3 {v<͏?;G̑g{ۂ[su.>z{Fmh"ӏ>Zڟ}ܗn_=pI=-:nnU둖/>s̷rGkox?^M~Ծ>sW15gN AhS@D^ aNٖ# /m4)1b%^iY*41d֠RXSxSRy- +:0Nf "PAXE+xTؒ3(*,[ؠa"G'ͳŁzg൸7ƷGT.z:9)E2&6,I +z)}ϨTL'9W<" +kqR2f.6|4Em<6bd%u CJ,SXhL&%{%?A) !LA@ "l(iq=4 12ὢPcuukLA',l$#ZPy϶YQث|KhVj;bҠk X=llEkH>W@z훯UkNt|ĩEnu?zqEv4Y'fœ'ڜ(ҹW{66yNG5Ʌ7o}..dc8ւR ۓmG?_OM^ʗ\#-O;yt3@γ#eu'7 5b|;˗Le 6Hƀx#/Q6˕bĄcm%F2@a89Ee*5IHr=0E}wQ0'd +X]mFk bizNc5/V`gatk%cjgϗ{&<7rY2EJoP%M^j<7\dn\=I crGKKX&A,{hX:i0&v@(ѻ!%E6`ܬ(Pk "%1z +PTCӆ>p|f#u,uBCѾ0H/07^X +|GB]‹|^vw*ͻcOcO|VqW[[fxk9z*?#cҩg?g>^ƣ/{U{x}GwϾ\Ǟ=`;\c|In-r]T s%0$Oeo8;nz Xxȳ 5d2RiX{x2QR(EZR-zm0i2Y*Üt 3BaKR*Rs+PW +nК/J5f'Ts/yp.Fgh*1#y"3m|o;eduΘ'rc1| D-Iz1,ƣR.IdUL8=w +CL0z eKU0@<Չ#r%4hskDhZ$I?ml46y7^UJhBJReLnF/ɲrZ$%p "U[j5)%{ ͜,au +`PlEk߃+wxNs>OmޡSL}7~/5~3m-Fp_p<5;m#]^%E8}h `[~>ud57}ŧ.8O +|{^<2΄]߹\|_?_I ҳ<4y;OM7/{>Wgyy/K-ܶQ߳+ 3~$Em1犘r6X)^ mC1:6p K:blpN~3!3gI^mXGmP)Fa Kez9vS.s~GޑV4Ȁjejq/ij[V)R +P*,WRG_@*0Nr㠗$;Z}=h<(X:KUux4{+8>Kgx(xsE +z[H+PJȣGkhڢ>aF%ytc(=sY K9^>p{mdoq7'FCw͜4JQhūcEBf /]C'jbdȉZ37C1AW3GVy'O +t2@㾛o{H≧m{( f<7qމ[6bcޑ:ck‰rͧom޲`~N,5sL!N<8yo?}ۉ%(CLjPܾX5Hb2 i>KPG_Kzq{XH+e~tC.#GBI,7&vd=y%ˎ(JU,j6lD$JFzY:Ü4 _LAH#PZk5ϗ:"H7ykc"Z%J!٫䵘6'w4^/a]ˆXS1 X6&ÄcL pi`2鬞?DKex"_|fpӢ:=}wII0Z)V$ayzfxL'Ik+Z ,%\Kxhb2EAgmisYokcv+Juai+`"a)<t)ht39kyDͲ7iLؚ[WZ|fAa紐ة{駎RBIx,1~0rED)D$F&cK-C) +Qdvh,ڐmZ,envPۈ5 .HSbXB.xMzR"[a,+LƘjgϗE-[5Z/"Gk)׍f=%YЗPIJfn9iv߅~yV02^ i +p0ƒ24#]5јa `Ճ0B?j +|`<˄s5x F"¦\ |lEk[K݃+!"/I y5d}B8TE}M/Fi=H|y@h%)P\\Ma+Z^R䷘5v Y!x?, )^(Cql + AU0hdKVEUg> 䅊$1Dyab2K!"9)T#e/QsOI5/#1YG7"=dܜރz_,[DQsE^c,Wd( HTF"g|'HZhhJiRd<|4Z/յX& s1-Tˌ$%B9Z},#DNҲka &Ӡ}YKWwѲY@pGSƌYA /0l>ȋվY&XXi 0"Jݢ2 --la@dȀu]ZM+&wwu-[+D˩SDD}dbj8ldH)rD~$"Cg@J򤓨*ױ>0XAֿ2Xm7pHD`̗s ߆I@uTE+AƁ n616} 9}@sđ}@ðƷT-BZ c2`JX'3HQ084NDPS)hzK/>6HX ^\snYVwYcb~gFaڅ9/^wf vOG|/8_fF 2n0L۪] KtXۗ!X#8aن\uD7Em,12:Lg0#{GyײW"Kn˹>2:u+[ LHä-xKeȹY2ϯO8u!Ik^%!t3z̗Y&G"aaZ X6O ƎC]^I+L R3[ +Y@$%KgJ>o. (@~WZ +X@P= bHSAJFX!аXe$x~r%@$է (D“5` :i鍖5PDguJ,n,@vd4̈w,_L^?d\KX?RD2@`~H:0'mL"ߣ;HIf'0e$z(TBZˆ\!"+u #^ 4L87}KJ"抚֒r>0E ou7BzaL>ڒޅ"˗ضࡻڮ~k|`(ymcж1WA߂'H8a9='ZFT y9' "Wε^[0 ~Z%V>A_"!8ق.G^0 p@Ʈs,%9F6ZI+-,} "郝Tn>8>փmnW͞@en4=HgQ:(*$}j4L8CE!(WaEخdm3C&G*JECH)I{nfC!" _:i(ս W -RnNs6~O69i +|gMRdHSG?{1n`}h<~ i}`ee RO kb:3Eg#2h+d2`A@Z@h_0qtJǜSNzͽ׋22 @!I2M3.) 4mWhK2HD/`)}0pr)G{%`z" tsZG\rWHH`z~fKB6bJ2~ÒvA0Vp6 AK +ӤccV&3 +UPuzv/57&CW ~na@D/TD}{Ȥ,W@.( M,+TOF3 ӨGPj&gvRƃ +Thټ: +$)T2'Jzcr'Kg<<_y717395/>,TF<ö\ eK"1^E#g 3h3;|=ۗHeID +Y1:'ۧ{!`)_b\L%MǸ " e^#u1&*Dߝ$@'Ѵ"!:wszad)^Cwi$&͞k +C$g3y +A1+!l\l-)Eo&жaq㧀%fթqVj/VFkkHgXX.aD/Y*Òc@5ͩ,~NQQR/}?|Fkpđڅ-laPP#\ VU2<渢\Gk2 +AF)W'"fb<_f'WaL@Vs)(X"2DzEȋ*7l_)"e`Sr +e o=5/x:$90whZ+Њg ,Q':e +`X)ȕdgpRqG(iLf=&Әʐ/tɳE^5+!uԒD2d6x ~I_jHB-!scbIEf'CJAI Hh<[MR5.x먡aLe]VxTTPO>'V*2<1cT"0vRϗѴ{1b2gH+[:*uH!(2ZB [[K"M^STG!,GHNf)$V GDH=r|/ʉM)ѬbWH+z|Y0ͳt&aT(T@h} ҢX]reQf<4m^Ff#} $6`2hZ=)2Ԡ!,b)oFo"[ *Ȝ4K$~Қ,a ^ !O&4L^R 1Al\XaL:@IJy=ϕ0lZ\/䂗8!~-apn C;!V079MX6N^ "s8׊S.k_f,{a>~6`kJޝVDue'x +ˆGO4F䙂(ADfLohMNjUf/;BB%|}B\7ƷGiyo[SoG@;!c8D\ }5t Lll3q ^8&j$U" +|0m^*dX!b] ?\GӢr#ݠ(KAl#o 5ss[Q^B{}b+Z^RhE)7$_,A;'GI f^(K$T"%yR}&ڑ&Ao +Z_){Č {U@dn1Y>Zyq6؎’)L:b:8n}rb2ŒAqdgnd=ͮ&%` ǘвxr46^(_B'Ej]) +|/A!hd :iP +t$AC~(JuSW tAJܜ(׊\]P=?whZ ZH ?=nu}P=@q3|(Iϳ̼XEÊPCZ x{$%Y):t OYr_Vma /1(Cβ߳R>1 #`u)'M{Pwv3&w"@2EeqDQ3&w̚awz!EDaHYP1R; @!Zs,hc팓l_T,°7VCLWVg!t޺@+aLa\ V%t1]:ru ư6a~O,"ߋ8 վX*[ @)^CexY +"刱%QŞHK7"&8h-PbtKĈ-4w"/V0GZCbV!DN Yetcrg//2V,qc+Z^bmO$XÌ2C$-EkQ&( l0!i=+=;ǘ1#WTD0qkhZوa֚utJ>J%CJ"ϕzmAYJdK=kINlMAD l+AJL1'5M^ κ!\+Y16-z+u0y@:!@J +c|[h Q= b(l,[@+@1L׌~<[-[(eFD;; K8bd?6%ٷkh% HEnx-bD1[1crW@85q7@8|% u˕V-c 4V- %AIQވY:<ϗ1&#hяMa[Tb_g&\@g),[0w'} wds%46-0DǦ#CٰH+"bnbL8h;Jr1L8p%##3eB/u%0ez5xnLGd &In +sE-B D}wsԨ(= V" 2^M[LRvJDB[xΜ4 Ɖ @;ɲtcdPjkDXB$wsH)=^ɶ/Ka^cII7Z8(c#R:֋#/вbP: ѣjw?bT-l8BF6EfLE}7\.ׁ\Lg$&%A)^$FNЀJ:dO>5gz *@n;93F- :C0, hcNճv2Z6)?ȲE>,ǔK~fCJZTF6֝ˤPYlʨt &bT|#\pc1Vq{ȑ#G-l_9t)1y{XH(6F|3:Zɕ"(6L/%\r?^xM7Ї2L"qf [ +|@kc>IGgeѩ3$,[@%/Ni>t{7a +cl+I8z/g&Q0F(b,0bt LL󥁺^;KQPWiL..%hM,ws40TN&_ĥWCS֖@%J[ȹ1:E1 D$zQdUL$%nA/Rây)[ċq/AZ )`<֐8N`iA0xJ װʁ 3vvd,KDd}Dkio;O|}{fs)^,'r||3̻kֶ#ma A3IBd t9/Gvg7O|b_Woo+x;C)s[¿Vc%6 0z.6J&g6N1.*#׽+} 1DMJ"cPِsƎ0`-q$ϗ%\ 7Fy&?}),[evBRlBv> |c.V4,Ʌ;XׁO؋P5r}pve k12;m-VytIܱ?JFD^( GG.y-0o?:4zEdr+[ʀH*݇4-Ύ`t긃&h@kϤwO|[nyg_}o"Ї>[¿VS+U0X@D$A(XR,Kyx5F&1^H^::qD/~\#II`\3b)E7rIc-4)S.&7r\rѸOAK,M%Mga~;Nj1^\qc* R -`&Eu^J!X9$YXB`|%.}$:T=)(c־9W 5s  @R¬1>O1en.>f +<57#JĥWgѴx*;d-նg jiPj(6X$F,+\)(X*qvY1ʮBJ6YβZ@$yMQʠi+R0NH +|da"ϗqHqNB%V=y|͟'ÿAK-0ˎ E]g5oƯG0>x Hv>r{'{2xxVA@E G-*#M)GƕGUdNu⥚:y<iǕ +%p_ +3Y%c tA\(X:3RKHJͳ uB/f'%ga6>ɡ0DXvAII@*VBi2 ec H4wWi,jȈ²ww__u]UOB "hͻ3M{aõ ݌Q(R mrcob9}/>:3|Cb^|PYvjbj.,sV^κ\ZyTrCsmX*v"QT2lQVi=ac(YU/D%Y:̗ԑ纼QISc>"Jҙd>=iF}@%sgjݎ>@ >8x-^v헍.6fUGs2B+X㹒{kZ8K+b c,α|%ukdX6'J5TӒ4TvqN!x͝BϽ527 k\ FjoZYdBؚ?1>3yZE`bp3a +f\#Sȴ0oL9"iTɔn.绯 +@ٝߢ%clbD +$Gά+ L$B0nE=t\g⑻Ps"2 FR20ѣ{_%qR? ~d2)zSo|B H?'ԕцTzqy"my-..v=< NK^7[sh'lTJA/أd̕@򊷈i +D4,51DHZXkG7x0T"0tcI۽nހ1aXVZrW^h5 }nkhVrœ|zŪ2p_ǧvz1V`g@7 Y!Q5ZJ*reSE J +ILR'[(pL+L/z^s;j non +|ݜMqB42Lõ~5HJ q&r-;%™q &7' &D̒mDNj>!zyJ]zםwOG_@t:ٶ}ɭh +(i$cha1dO$Nrk\w^& LG.xeHX+ ^ɒQ +1@k|-`2gNwQHI= {"r%"jd +Β a#.:QEalh8CD$ b:ۉ"@_xe62:{n/2˗вaa6U@D1ϋU1ߎ%SpHp'>j~*K|X<-hZ,W +s!yJ<%REx6cTxPq1_'%<[H\V )8?9 +$|/š/Yխ0ǤH eҝp˯aNj a<Z,_a,K@? J,M"ӏHld9wDD&K`:(9Xs,_^.-ɣaFj.27#ƦC+2@裏~ӛ3?S>m" +31kRGDYd¶8[W]k孻3m9~Տ#A.d24a +>Puv 1B+}^Zx @:yH'_Uoc&nCa .jcRD}"qUwxGCj԰H䰭6Nj{j8+07K7eNA,[12tց|G*TYZ%\ԚdNzy> 0;j߉:y";g6 2.cul" +AXXuz[e9573-80֝pv.A;ic(k KZkR/},f)HLtI4i`g +'N\ vގn( s灰g qcWLio:ѴynnM[ L; +pCT@ǭkk_ggc,]?S͆M`ڧ??9>]hy]qgYa;w90)g/>BOl%c||q2͏鱐Sx|kQ~Z͞lOb)ebzftcwD,m+SYs57J%Évڭe4xփ4IsE4-ІͳEC;:hMAe>d; UbGL8IB9s9_d0`*MJ ' %ucضGjLیg +hZ c 9H89KgY;#c|  p6`:j"M$;PLjX`jk<[Ά$Zh%D%,G·+(E/]m_R.KgaHZSRic~4lX[%3bd>.\h,_"K3 x *( ^B5-VK\ru9Y|"Me m2Pb$BUT0xu1{4Rͱv<_a 2DH)r? "&S|rRD\n 8"Ɯl +XjHZS!z/UA g?ԭ_ʗOw~̏_[F~/KH{V!ff޳S>ǿ[ww?'ϝ*lk Dm`1$ 2 tU׾jk^A DjSՉ7Gƕyƪ-ۘ2y=dF TZO, + >8e 1bL( 7$@ʀC䒦G6XRNI[ƶT3/=}{y]Ăa9ZB7n.Ra{W@sCտ +|=7+jK^#Dz@'WfN k dI׃Y^u!.mn4-6 +uwDY/;BX=4Lcd2Od9oU ҭI16+#pSwLtm'6&ws0l-`rYfI $#i?7ojd+֘:Wc_6:Gdwo;.-٧{E|zBym 04F'q/5ʾj^\yy׊jW(*c4xznf@k^⹢>M 2m1:ްMD$&IDyȆ +`'Xm)VX|0URJLXʰtN!clSȊ@LkZe)77 gƀhPosRTF3O4!Gln㒄:p L$X/OSSi$bDke1{ MuPr5䶐4FxuJ4 Q }17ߘd +O(HZ;0yFNCTfX{V`ubvzʴ0Y{+Q08=ʟbw=tr~EqL/~n?b|'=w~KΟ8`֝]0[aMScqZ [rX25<:,g\n!L+0$iDxͱvsiEed島XE;1ۀt\X.h^8)r潡x5✹}6FR-dUJϟb)7qɫyzƅbxl:uf. ^'f`"^an+$}䃒D:LĬ; +29`|sxȹX)ɳR55yuT؏v2ΆTs%kLK;ఽP1k!yh{əSMIƪM<]U;JVBk+k[ %$|'Vk\QOgpSVzV}L:m޼^ɝ <L\W[M-oi-U?_[ !LE-R +Un}&c>Iin.,WD;IJSxi}O˯x˫/84' o꧎u柼Ϯӣ|^Yϭi#)i5elʎ÷pt{7"51N<[a宇za^͜0Fo}uE8Tʗ$%zc{Foc 3mP=6Rzn+XXC7; @7ui>:x1/N(YYMd߾ u-y)yHغsʝq"FfOGU[ |l^0xyK ZR$psJ2yάEd, [<)EYcl:dBSlEkk@kĎ.oS_p/VppsN.ݤmO}q3bd5ף~k$w-\651+|e~CGWn-ƘwqTWϽw^,Hcc1z5oB%A›C j۸7ٖd޵}fXI "iA9;ڝ3sݽ^ֶ<7[ѻLRb=|)%G}"ֶfsb(&!iRzw!RrFtAL]jl0zZMGԓ6+1dj +#*a)guF^;~& :&ћQ;QA;$R2/8oo!2u:|E\z-aD_S\'ٚ0 sRNcn#!"ڧ | ^uE4,(}>7tB%w^AT=9gƗH2x|DIA_4/{DR.9-IIi^ppd^j[L)pKm nD74r|Ǐg>mG%?o_RrZ}8x^t8_E$,cnok>QjSCpem$bӎ1Ot$uXj}WЙ7{D2s 1_QSqK&$9.aYeIiz2KdEή8b;DQE4 +!)GKAl&T 79{seЈ"̛cb)m4)2}^Vh6>NУY7PJ"Et;&6!#fb:`a@YlvRPo@:Ѭ+>-{GBD̗^!b~ У<%as)- M:=1(;شڥth l-]OZɃUQ_돭`pTDL#~S.[m#|­u<S-LͅWI/tKNgIizyqi956i,[4Ipo\DpiIb.1J9: +S'ʒRH/iySH캪:D\'0Ƚ?MЩͼzyqj4CM8?~lm"4oy 2h힭)*ع Z1Q5t qQ cLK PGI~ }qMh6t~jbw56vu;G5 uy dGG̛ TI!{RH">o[3sݽQ4[ 3O?<:l-P5_FiձҝJ}Xo?m呎E5V~xIG_"e}D$A*>Q-N:N:dA-v)5K}Wcﱎ$Xrp1WpOo@))$z1*-(*uH_$ K9d6=z̉$S@ PPʃe,)MY-DE$DN%^V$:u1z}\!Yls,qDb}}bw(YwDVx{KFhV@s,)"ӯieg9 <}0LB@4J=ɐG,XʾqBo K)DRtNU.NG<d.2|9wzǭ! ]ߠt Wa钥#$ypi"{07&!K nr!ygJ\̤}qk4!̓Խ4%؈.̾@0 )5 !Έ<'V? +0ʒ@|w?zT1ڎNF4 uyiYy4a*fZ&_"eQ9jy8"+^&]g./ØEgcuS51HTjwHonD +!75!XGEGb4H(;s5W. 3:JmUD ,$RA$LJLBH͖ <Ϧ;a1e(%o83o2;jIe @ݾPO2kSڏƀXmb^aYf3}Ylb> CzTR2jaޝnĽGB,5K1̓YӨN8<. ]32i6DW>"oo|˅0*@\^M죆ܣNR3ws N4+uy+uЎʹУē q7У1$MB0M +wqxx}1JHC4J-6){1S."+}9 ' 23_ +4k\:$w'DJNﻂTBaPU~7(jߕv0t"+u8:GWNHwom!xeɹ,6ɗx(HFN&LBKJ.xԖlkf.2t QV~UWЙ5A6KNv1KBĚS[@-V /ˆR;ʨ L5SD@hM(P&eǺxtf_Q^+>!x4B(nRP=y ӈMܧEb 9\@(ژ7ƚ #Jy|2OJMr%@DDXNcS aD2)-{Pj>lVBD„R%oq""aar(eT!j\Hao# q`鉕MR2w&Pʜ"+@.)9]D#}O:Q:{cJ$i8x()6!:Һiui!D4" ]F}!2P/ "ή 1 L9{lu],Kr{0 P $1N*ю2*уj 99]Th/X EU9p})D虣eǁ){yg rl|f(oTo^njpбipH4YҞ?(D8@^mhS4))A8 +C M~g iiPI >i0[mr(H=IRj&D"b0 HTVT99L~R$! /f0k.@ɝ8]I94E4LDg5yٞ8^5-,;[Fvp %' BO1[. ]C=p1pWҲvF`%1:dO2Fl zKcNU$ xO8X]J%#ǐ.2{$KpҤ4fsJ 7zz uxŞ@K7 :FB>I44ɩ`D}xq,%״ڥVKXۧI^.˒I`=y?%!h|8|Gզfr(̗ +T rl-P7o\:'S-Yǧ?i_5oF_dOø[.& lWWGHBp{GG8D-v3%3X+@ٜ`D97`R!DMT11h4,z)@tp]`$i6a6TO/Q*+QrzUBz2BL-Յi6йc$h !ܾ BfS \"! ]DBf4ڳ}c_HRuoZ5+~A_C'oJE/ %:zOc A \>Ai*'G¦3SA +Cj -9Sp}U?iR0-v!k.7tn}?ЀQb<qTܾ HȪnup0l,0x\fZ󊈄+úb'Ym 5< (ŭ:7ApMxν jwu6v'ՒZaPڝfKcljTaezh6K6 B B1  +}[b:;gwqQX"˘p9z?!D4¼NN +0o2P&>CGfk 8UtEGzg Jf~aVСCpPI3hoUMZl1K`d6Ѭt{0MwncdǓ!2439З>'0 V;4YaNFBD#TӤ 0fvhƹ %>G#4DϝӠ7uy/H2}*! zj6#hB3 ,vjs!}_Mh0P> AV7K2KJ>eyL$x5!h.q8-Aը O +]IbD!6[ f<"* h=E}B,5K8|pS* h(qyYJfl(]b@ D#./$ai(zx{zC)9% +k}_) YDЏg\QzNp^D07یsa#+yiB=B<If8ĐHD4á]F&: =JG5>@]G^@[|b@1 C@Q9$֜Nm֯_'G?iƌs 6N9̟X6U4ʕTd7T7鄮{go L6Qo.ˋuBI/x& <>`k 3o2ؘ/zd~e%RR3.~l[;z_Vi/D,YeFl['MУ`wx9ekyyyƍ]TT?QFM<[Vcc^3i 7T6_WrEa\(bTA""܌˷Bsʒ46MvT"u"a`ntOHwv.ңˆ +3NRGO (&v{ƭI93ƎpŸ^z?|u| ihRAÁ8TzBi瞢`a4C\Q)9yS\ ߄iH8~`"޶0sg3!:ĩL";l~ɒ%_UUjkkkjj$Iڻw/缶1P R8O0iƧh{,SRU LFIϕG7E7( yUb77E8"ǡ:a2^OȪW^y-++?~m۶͙3?Ν;njo߾v,yPѰ0tɂXbe"[O!XOȸbmYJn~lIZAQDy+ ;E0x{Go À8iWOx%K$''tMVjkkظhѢ!ԃatVܷ$8cz)6Gnm&Axܔ6>" wJ8ر=#B{ 95ϗF) ÿկb =WWWɉIꕐ !aٰ Lxc6M!2`(0qM[/DA-68t"opZG&pS!ğ09̜sڃ>8|𖖖Zw~7jhhz* Hߚ3ԧ>Ucr(|ul}5q Qn`\ -6cDb49\fk7BW} 0=*(!:idk\r?q7nܝw裏>0q=ㅃX]ŃZ^yrin %y+m/ ιeћީ|T7ʢ]hwwz\\tlq1Ǒ](a,B D4ߝ45!Dkkkyy! ԩSqFPO7/ su5iI+lzuFVçhcQuoF&L8! =0:惎_0t! =*8ǀ3"ल':*##GT匱~ՅaJgΜaÆ@ed@ٮm:Q5 yokR?3a悖0P@xCdm9z<۵(pp;B% nbF;Stp«_0ag̘=,hq' Yˡ##<hk˜|[~۬h8㭠Ea4tLNS"Đs?31)buFO\p9NLک`k!qCb Chpέ 111P݋:l?NNN{Ν[VVGFFСC.]~bׯ9.\$uAc +쎙ʁ bT-r`{ie%$sǞ¸$Sh.#zLSDü޺SڬHo;w18kƀ1$T]/}kk0s6l3f( +]wUTTC ! Èɹ-%g:dZ5cR1{Lm{F_h|5[LS}.DED%Abc!D!L]pSzQsGy/+x10{7f"|( n` pҽc qidk`fAAw>EΒ(#WtG6.s; @g^Mf[Ͽ=M-_W,Bgz"(s!BBŜ^z+T]wq#mM3i,[+F;o"RUt@CFWD8i;"<89E J %!*m㮝lʚP{ÿEC ĮwxWfkCe=&k$%)椎A@!EXgYb/H/]Mp؅ᶆ-Fܱ~lC!B謜F /ƭ}Bpbe?ojJg=?]A%wM_bNhL4|[QDBSw9j?[뻕l.|R̙?o(5nn赐dQc,BTb#P~x_Ψ)P=t#Oz/3٣U';w"6I;7fqeoq^B!Bี';vPBZ:xp,W#ǭx7Wl뿘߿|lnj8߆*IĹD"rǮE5d\ߦ/.HFϝIB!J\8n-{{n_<0W5GA!pźwlλEG,[sBU;{kyt3q0.ihj2@`]_֛ +koGn~n4?"B!qk H/cz?Yy쾞-Ese;tkФHPb t[gk{whgFaBU$yV45C˺=Yn-`$ɵMo=i_}v#csզOv@!B…4;,) +ӫ[z12#c$K>k˫#`i.)Quh3x[b~QkB'])OPU13r +[j|ן4_~5Ozj>[y(L$7%ӭBh/ʷm*hB!;i:tRJ{5E~teǮTMY4]]!jE41HE(!F4JnUV H8btmjDuo> #B!x1!b`;5a Épm1c +z,MU ɖ{l˧Ѷz0#`Vz8ؑ #4_w#AmE^:{WͿF4lPƿc;{W|v]uNb!Rwsnc @7: Ɛ01=c.eq;z,_fks[ߏu.#;>Pa+nVgq ` C~f0@|(0ph-٩j9}kosN Ƕ5)^@dqc-1` 1$·6.`B!B5B!JD!B!P"qk Ǔ> .l,n2Lӓ<20Bu=_[εR_YvBFB!й MkI?|oklOlZq]w$-5k^?B!B蜂Z!a7{w_(켼p2b-K׿Uw&'{P3×Zə424"B!B=ǭ%ڂ͊ DC0`"m6m =#fgX8B!Ba@DhU{Ͻf JV$ОG߾ɣɞ۫+4l*u!B^Z"핿߳<_>xǼV6Xqc0,83a?%σF!B ^{աw}'~Ň^}'6\)vXq!B!0[K$TYd o+>~Mm6cpTqO}q69fk!B/&d!w4xͭa؉)O,fݘ,۲RfV@%GRV~~>05me7X3+B"/!B!S0[K$- uҼn/ n?[v._~i&@|כOeG/)FSŎG@A"B!t>!񎡃iaNs'!@P/z̸%ДR!lm{ B<^` C3wj0*b7&Y-ٖϥ!B!.!B!P"l !B!fk!B!0[C !Ʉ! t|O/Qm]464&JHH W׵~neuad-coilX?!B(eq!00ĉ!Vc + %%c߂ Ʒٝ1[K,Мs.hcܡzn^~Doߟg_QJ;/M= /l+@BM?ƀ1$R ƻb;$@x!qbHC+ު/+:lrȲ\___QQ/s\pw/l4w‘їgw;,|xd?x;>q +yꄑ]Z[C!t,߸q[?L2G?(= RT8h 0"9qOSr*y"ɟYB!:|k=OX,f~ۏ.eP3ٖXܤ䤻-@57^Q DprMeᑿǘ2$]b7E!B|pzmk999W\qj=;N~NgOĖdY0F"8~#G}:VX,CciHo>w1fe\2{qkur,(do)QA7 N%&D!Bp0NG?رcׯ_{Yfm۶P(CY'm:q9!fgE$D'Yl#F!I3=6-:Vauoj2zSվv+֥5s/;jLSZ}_+ᄐ +F!Bpmkeeew[|=zw}]z.AOJM47p!Jyj*OjhK H{Z!ChCii9L!ChAmmF!a`T*yR9lihMM<'GX,$>G++ISAOnM seoѦҷgx(B!B 450ۧMfX.]zܣׯ5B|64Zb].-\.\C4Jic#w8Y9v$H8|LFZŘ1f$DkjhcXF$ (5GL~asy$"4: b4,NB!B|tZ[[s=w]w-Yl旿<0{l4׋ٚ IӮsN #kZZ\|ʜ`)|iaJIYt/r aINaG!B!szmk}Q v֬Ynݺ)S<#zmս!N,IB!B[_Xrs+|B!Bn&TUU-_<55uڴivGB!B֊?+_ᜧ9rd׾ڪ뺮/BSSSoB!B x7|M۾o}9rd]] B쩈B!Bg㴳5薌=3v}uuuO +jO5/UQW7OxwM_+O*#ߔ~u?xG%"?moG?nj3R._߹qKguˬMegڵ?slO1Њ?FD B!yJNRi"J@btFX'jp+J[ 5L?֙E%hhRrhAcBq٦Lȷ>?<HNwCPV@l_[YU5X'=il?7c1nAPnf HK !L3gytB!B_<71餓MRN˶Z>dCV[:09!1)%٪88c@-X3\5E;@(py\&=Vaϑ^/,Dfcgo!u01BPBG 0ĊqP1` PJ8?+=8/gP +Ch=}BdW|$&1,$םln QTzփNzMmz[kq(iwCyFX Þͼ:tlf  8` C }c;c8& giBmi8㧟gFa$@IMw +z7b}̒%[V%g2UV~@(B]>o=y=Dvӎʫ韺 jhsSݻݼxʆ}4LBfu'|hkj8LPPőxGB!?v,[J! 㮝<ݵ*>/uD=qdP?27"\U2!8 3.B vroo'ֺ_o~-?_(h=Ȗ2oWv5E׶>=Zqվ-y;?{wNy34"B!D{BA5Z>"'f4 'a4wֈ}NJ;(mEw}@3ֺ1A#^9UUTҮXӞd)T= ߾џn2lEt5խ@{RTߙ_55ŭ0o=.YRv!xC36s@t8š!Bs5[#0Jm 2%ݑTZ+A [$Md8~?̤)j*vǖ+Tfҩ>Gqd#u>zu]M.>`p͋]Xu>ڋ־QwɎwKvD;F{7{B<^ A!B|,:*5QBLTQbG6:5Qq]>fɸP +ؚB|A7Kɪt_"SFN!B!9B;ǣU(!IVM@w݈yOR_ť1: +P׾J +;?b5)$6> z*YK4lsZ"BvbZ{J2")2,Jl.[,&3[؝Ǝfb2JcۡH lDe*1$&c8w IJ$URF׎J`_p|lشrݡ/g#f۾vV}Q9}^;`?o·!B!P!e'gH3й)LVlᮅFeK㵸e&-pKs(lXdU̩\̡X[~b!@jJ$bS|Ew+ќfu5Y84W4Uтzȡ,FhTиOdBF5z˟>{\:+燞yw3LS5p0bU,nDÑ(@U,VCIj*#H( `MK,p(bu&w6K]D ߋ!BJ-YKw(wOA?Mj~cmDYSh|$|9ߙ|EVx6ߩz1zJ;p`_!S)$OM Olx4瘴LC"lDꠡI-.͞Lj#k>aI&yU֒mJ&ߨkVAC}&JUmÛ7(y{n퉭J,"5JYk2,i4~!gavxჭZΤKf^yoOқ1C yo>}j3,J@I૓جk?xS!B.2hxjӪndg3$ߣ7gTP\TIi{ΚWƭ/ a_?Meb7Q_gU'guٽwܴb3;6Ji?ox>ۓox?q_W_۵O9Uۏ/ o1PofGs֤VoΔJ;{So*o輕;<%7_Pk?mJKftNϲA_Vך\]:\-[晗> +/5iͳϬt V|ꬉ-~o> 2L(\ʢa}B!tk{mEfsUMpg&)eHHD̨*ɦ!=B2!`TbD"JB1I8͈ (aa#b +N Q6".F ѹ#Q3*blbh\p$bDuS2"F\΍(Ә|*,mU_<ء1aF׿Ύkrzk6´gB'YNR Xٓm+< 䂱ϝ^WZ:b-XCrrR+'}Ihw5Í%/sְzۡkX+ ݵz]u9$[mZB9T;y@sƪg]8dۺ免q<4!B?J)?s2[Ɗ;LeU(PF)%D̪XB0Bm%V"JP YMRm"@tVB!DRף22(=րg l~a4uYcLիg~ΚCgD +|f7'E_~ò06vcSueCT@4 +F0rd聠v͔\QS̑.[j[er3XWoO_PU$*di G'LRUB$Ue =stjB}y8B!.,`2SyJy%lML]D%Il!beI$b s1&4UL"dWaI2Jʔ؎(9C*IB!U&k'>p#P]fP&iGN<¿ {2 (F6ha7_CJKuy]44JCMU-:R3]fꁺ%yq&5cXrbynݶꊉ';'gVuU"nQ@{)x͇JJ,o$jna >pCm?mYC.f^]ØcmCō-SFNveEcřd֖РTEl !B};OǞy ?4qE7,4W=÷!u$l毫9"ﶚ#;'f]pg~Φw+|_=A Dཧ -mz럛N\3R]湿鶤f͛u=R'lOxݦ~:zM/#K^ B!:ml-^?םlP2lX{U QLf*kR$Ƭ@FQ evjrSRlJ +&)2TI`1jP&XFw*pᨩ9ѺwWK+Zƥ\8q8w|`3'K# +6 pBl_Ujj%s]tNM !B!?jP2TI +l"1If2%TTU)D%)!6!.6M0}P$u5Qk['dZbc$BjzHrɍ@kք>sk4,744JukPu VϿnʐCe3 B!z92DIɝmk +9ب6P$ũ)@ @lEU'!g4"HG(L +aFXe/6c-FLs ۩t:m6TtCic6tho_s4thKxFk-wam7B!BqnfkbD!TcERb%@bUBdd&R)F]J1, +*SUR쪕ѝMTJv.Lgʔ̑\w@d)Dl\lUTzB"B!UFbd)VB Q%cqIMdeRˠ$*k;kǚHlER}ĘDq=e(-tk)٣/0yhrX~I%cil2'z@B!BsmdMcU#XUHl*T֘+F0"56@W[" !ذ4b%@4ĦMl#VYL/9a !B!Nչբ%SYa2!0Yc201%67Z:L`2ܚ#kQRB-PԮXbc$¬fS +bKd&3B)0%CLdBSS11B!B(>"֞0EHU@"ޒP *0TGGsJņFBcct͝'b/%JaJumDY!B!NѹB$0IXJ& Kd&I!c(*SJ:KĶs\~2JHl96h9ډ)b9a6iݳhɺ'쏞՛>[e*F^\V`͛;r+̦ .jt{2EY$z'^9q`qyU77!%-oҤIl6-h[[pvIK?Ww/b?f}gfY-~iOqf*F,ί3m{N B!tA9WbT&k09Ve&[sʨ")PBTjom-6(U}V7r3Ŗ3lIDX#̣9b](-J;ˇL\IJW&vkē?~R~+?^HeV_GԵc-=mkZ> 9}!9='w(NQoo+a]6e5~KW ն`}W4"mۭC/ܻ-[|4+vl$,-mo?~O^kȾ.jK?caz>̅=%K[rRCH0AsfYU TWV !BƹL$5Bj&ԡb5Ebm_\pV$JAc&)NevD:Y,u6Ye PvڕT֮8cy㗾\yBhԘw͸W6<7KIK?k3l+<\Cff8C88l6Gß3͓!u% [w-.VPSr\@m{{׏Бe+'/ټIDžQ3C"m,N885o»|j}/|_~p]Z͖ +s*.{mu?7֟lg!B/lM+TvivFBa*]Y$UfGE +lz5'VYιTIV$(!v-0\f н e"N!WxK%_{:UC>|R٪wDzvk)7p̖]֏kriuU탰~ Nr>kQ[2g1sUS\jgPԄ1!sѼCsgLX?؃Yypky~9]]Ccoj{ Gٖ,XOiܸU7sOjܴp!Bw~џ9blJdˮ‘5 m[V*o8hœxgVvo^7} ݟpClP>bz=zgYl';SL=2"@-+w;RN۵sWc&oKf5Vo+|{b6c EkxgskP6kἩzˎKn.9nkĞ4fǤ nٹv{[J3&]9V}˚6mRΏ' !P;'ǭŘVYcj4̋,3AD$.x[.J>zҁcMyuUgz꓄Bq Pbgƒ(!)]L2X$$@b n!#Tm6/%DapSaiLk0uL$j7MCar KTHWNO*hϗ3B#:ܓЃaB$g5 k)_6^ŭ)?θ+Kv4u~ڵmhdszyo~?pK}!4N_IQѩ֭)ڬZ%o} t !<P0  8c($aWע=orn96pMs 1u$T]íɝ+Sokhđu sgx$i*n?!yj\.xŭI)8pYݚpD)RsIT290"j.ՑiOaU46j-2ՆF Q,BPB,ٺ~*ұO%m ˁCH4ڮSaT(hpTm+j\;{jku7%^ѶmU(D"L&_GJy\/p-s܅m"dJ;∮ !D{jS\0G!L=E.N֡Frm-MLʱPDx؟wU׌+-㦴s/$GlvR7Wu:99L'{/e#}Mm`|KGJ|+AunY[-I\u0PTI5,^?է^+LO0:' GѠ֕]Oq/!Fs-{ZdC}MזF.O۠&MZ8=SWӬnZ|;BSnj"YO7xei-Bpgk"6>MbY "2Sfң&I( b=a#nw4;4ygOHBUFϱ +S|V%"k0b+*wdqTpe[69Y|{nZ߆_AD-y 좆,XK{ioFkkq@ҀU혃&:n ޸iG֛@heޭE;:I1}w [Q}k[oJ?w>rڃ1z%]=!M03;/?/0H~Kkn33+q{|kxvCsw|u#gOSSa%k.TѣKGqϢeyw n5Qan[6%5P=sTKi^7ac]>uī}~{#I;l,,[˖!S{OK;׾Vrք%h$4g y-Ŷy}7<6BlM <!nW2 ar.\s2YXpM`SLGSّt͚091\]f,lD%R>\XH @M뜴T0Id6[N%q,@~GhcM-#l3E;lm.^P=,7VՅKCt j.޻[QH!WXBūe%ZK{h읗>Soؿ+lzC&e{UKUC׼.e7}UUAv(模T?xS՗hMSm@J'om/(77 +D[x*G4My叟9\p&&2vu{SE$38ծ4`Ĩg^pMYNQKIM$*08%i׊W8+z͏v֙@Yٖõ! z99=ie˜I7,6ڶӚfmڶ8@\ +gم)^Zo[a#i3n9ܪ"cm9v%)Y[d  OwBe;K' .j3LL=P]ϹYYYOhطP#GLJIv'['q hnKm [@" okᦚPVxl Ѷ]*|̾ ufλ[3_e'5yO)_xnn_4gUMI ui(ݲ d + Z*[!֣ґ>{ Ҡ~Bl!.,n +@Uf7E$ihBq6JS(\YTb܈uk8U[GFKs +3BMqvaBd9zEZeM[*%ݟXwYOu[ +?o%ޛz[ѮNG4԰˺=dvn"T~ېpMўnk8QQ#틆* +~: +ธE4ܴP=P^^YB1#QKUUiF[A/V0P]647/SecބBJz%$C{+ļkgLpQd + ]{5 6ҡ3Yt{nw"X՗75jklv\Կ\67~忞= pNnX`/6eN硊կ!yPю.8gOu7o6lֶ,a +U6.m;sۡQkkUR\en`i ՗loNKʸ.Xn]D7ۿ}Ԏl͙7ǖ~ܖf~n0Bp Ꚁ9*:; !!i&M=b%-Ua3Z\ :6RBn +q.dpPcic%b!#r61Vbrfl 2#M[~Z]Hy{m۹mv`ɬC3= k#/wm#sg[+Vl-(p67Ze힢rmT:"c,K]W"4r=k-kx?ZWRI=9vj +X2r9ֆ|y 7.*5sQ$` TvˮkJcKۺdM+1];DѬNhl qWhXfs\z=W];m{N']zm5]FfBffrͯ;C)zOծ΂/شq&"%g8*׿5e˗\кyBtu8tY`._0a`ӾE7=TzpWiI؉e# +Gj[3@aYg\wvfw* mdd!*-m+֗PE{mni\iCgɹimiòO[o d'-筕>:KoڨfJxyO6^y5"JU?)NaO1!jBHF?[F`˾hd4L;k%կXW_r'ɒ:rc6˿w~mzưY]j^M>^Է|Zƕ_w-kp1 :f.hm[?|a{-#:x4M8j#tr*AeuGk:PfM?Y1+JZJkۭdMmՑs47֫Ƀ2ݝe3^_Vr3Ӭ[" 65/7S UR2FN$ŗ5(%vٗ*+ ;23RfGj΀dGE5QEh^hs偲F 3 +jW6D aegZ$zHC!)A2`cuHq Em_%Xm|3Z_UZ$LvgQ^lz@qE8_ϡ)/kөM֗j"a;s`?"PZXٚ9qэRlW4332#R[QT۪SIIj=Uɓ/#!hKk;fm]d8Pb:exm^!xSپ/gչ Z CKjC:u$mx_spGщo\I6&FK vTWF^ڴk~9mE4yh^c6nk +w՟IBBg)%(G?:iP"ʚ膉_}!8"Bs'$B(Q[4{*/j>p9x!P`B!B%"B!B5B!JD!B!P"l !B!fk!B!0[C!BD!9szSy"UZEoGxn"VWf^ZG!P`P-iC,91g1:v…1!ց/y5 mᎥ=zz-pK88k{-n{祥%0-LȈw,!.t!Is.f?Rhr />dĆU7nɝw~]ər5OlMkwmkj@w,7+c,Wm+87?~nG޲6Sw?8ypGuK$}KE{{8o>+`Wی%e׍w7T'پ襩ynץխ/bOn(+߱V8/{N*R_qk-,; +*Z K|!z&_kMx쩍f]=3G)IѰ7cކウE yPiˏX/ꚋ翼wj?hj+DynkMgƅFB!0[Ced^wkx:tHm5j-OʱOn+e1ƲxuU?בڂ=~F]Ss')ұ [6S;r`A&y[@g\h7^̽m\|-e/=G;j}Lӈv挝u)>s!DbG;xJ;(Z'kǍ>{[&\W + RcwU;fxRZ?LldO𚦢7[Yf.9~@67^1Ɛ|YV٭*zD7hTԙc&+_a_B]0[CDž!E|FmYV`5{2ufC[JʐUד) ~VrJmեLJ $k@#ÌF4]Y9֔%7ߜQwLy|nF|CG ~={Rri2:7n>~r /~f4۴pa3.X:d&Q>j6ݺUlIv#!&Yܬm[MƲc + tI`g^[UT!5z\#uQ/aNmHްqm!|ᓣᢷ^x{vUїm?|OJ}*Nsɤ)~֪cἬYC'^4dB:Q#'R[Ik^{Ϫ_'ۀAòSl]WaPl. Lwky;^g$Rß,_S/oJ:D:R-m,,i8kGg jۂ!=&(m]#Bl/izc]uKmS._0UC*J\Qۋ6~XTbr pE2#kgHB(1`P3w`efM1-jo3N0W(i_`a_qm/~ߪ_qe{mh^p|@C )^w?`t1#uE},$okm%䉷 |5ml7AVWo(ixx_{حxg]u㷭d_vms۟}aP݌_=[n[I@o4VOv +4(\jDZ1[ּC[ہo 5zԨdϦAiAaJVd2޺5z>9|qnw !.ljeWvDCN7G6]Iirww/ +T4E"uAue֑̾_og^O>-F]+{7=E%79WoxeOm+? 3?x{d$9bFJԑ?:;`]Z<[q$luũP`pMq)S!&IY=`o^O 2Y?,9v`[Ew^TvfRG-u2Kr[o8GGC;8ffٮe.iXfٮGi'E<-VᣊUG}{cEe5xGBwSz.ͫ)Es8m +`fiIi)kF,ª~dkjF5\Y^??(WNtwIV'x.4؄sǺ>y:KnB߆W'oL֧JXԏd]vg'{4 +ؾ H0bVVWEX"ӽGhQbXezcBMo;Z*&(eԘqu޼wVO5 EaʳMc*G,~ŁrzܷrR=&ZgLwHAAPv'0iڢ=p7ZzzYx`Rde Rd_;uǯz|6T4)DL^n#)"NB( k<^{^3toxkhϑj[ FMh'[=Q-4ɯ׎ؼT@Lb+ +YBRٓcWSGO6|@^r FM_$?|S47Ift>gtw5?zWx:wJ:O}/|ER·XlcXPW_{r#8*  = +Ekw2(JaϽ/3*3gŜ5:zkztii#< :~+ O3-v(sB]'#Y |vE(8bO&>-&$4<9w|Z 5sȢ?R,c9w,og̉'E4L˜k$  -;1rvU<ɲSuxiK_m0?pX|M UmyňֻdA;uV5 ;*V)w+vgΐAch4W,3V֖zvY_ձUb{dɔ}[4+^lTɂb}5 WDMngsyQa1,}g 7 NǍ'Q +nDbbݏ1ަo;$s, q<Q{8CvwJ7p @i݆9VL#/lr<룹+#3A AAA(Zs4gO t\ xj +67a'f].&Nl~ww4 & ıvKThN; x紐@q^!݇TB$`09h;`h?)ΎN;ʖ &(ZspU٥,}pE˚{,fY{$p>rW\4%>0 $bm qyu}ǴI#4ҭhDeuPŋG 72Ғw`nv&0yW$]nR}NWXUAAnA??&/+h0U&LL !JŮ vjf_NiU 9ut Wl06;7~ŝL&kwsDܙDꠉvo9Vgq +h `cWa8aпr![nu^iqnˋ:AchN"M;dž M^nBpV[ (Yn Bsǹr})xAlu\O6]WvJ3 7`J-:(L\<>|#D]=Q3gu߷? cNHRKM%}{w{wA;[q=.uӢw~>]s#y&EN&pr!B6*=svz#- %/ڭo,.j2~gDÓ0Jcbg(m/)Yfk;&w8!κ>~M:P`A)A2^` C6V\.s +UP +)Ss.lY3k 1e.c~9{ VbI;fdXB|a -@}k w'gkldƤ'$uv@Pb8CFhu$(w/'XM}6{SfVRQfoowʸgnmnv{؟miuL +JpH=M  ANW,7tՔtbbΚ2c 賕UԸTU]ޱ>H +f-{%]!ծF'8.; D}ŝ߻,#L_Ia&ϼV! W(w泌 < WM&٧Kzq 3XZzxI'iGȒi Uלڗ3v洌n+;~7mѐ[oN]Io K;tҊ" ־#(ZCAA+A#!,"F̻ԉu|㖤 +5NʥֿZ D< w;sI$LP +)u9J$ a߱S=,NrT3{dEr\438}+pRy!rgw*  ȽEkw çl_~sz3^ڡIMS;iEA|_٧Y{h6m7,f۷l~D=;{}S;N{.!DGMz y|A'{f>tHq|x4'?Iau3u9 +]pҢ &Hes/+܈^y^X^ɻ+ZAA^;T ɯO2wwgL',yɿ[\ܛ뿼aLnXPO?aƔ֮.˨ JS) d*Zc"7_˩Ѝ[v_|%oN\ԏi۶BC+`_/i+Ri +^}h)  rAڝI8eNGL vjL MWrks}y 擟o/_V1+[^g}>kX[WHZq}̴3F>gh:M]=sZ7 Sb-s]Vz*8aĤpYF#4 kδai-uEFY*AP5OxS$8 _uCŭibo7d! s.&܃uஃ͎ot_IySR%atK~oxo/JZ*ppt:WJLÚKۼD +ӷ6~R=`NJH=Q-oʽH6<#Smo0ŏ`/PG#pAM:OQv״L i->U@Kn8Jڛ}E>bƅC>Ia*Gk=I4Z64)3#q?&Z!ߠW"(RP]֮N +Rhbƥe V'(( =.*tZ6D~mL!E}peԹIkZ6$'ΔW4+۔VFM˚Q ybNĩVN>1JcAAA3#|+ WUoH8Q_QPP`GU%e5VxبAr`UxhQ'e@ & ~p4"53%JdDJ-l'  ȵPڝX+h!o,m>B^`eFl=6cM0L8󗿋1>g[[<:{-1a"Q;\gԑY\{oxiUu &SB#D\X~?R3n:t,\M#!~*ŕ9<*X^j|c[wtR2NjFUo.Q( g6x + +|rh Pɂb9z׷3K!16AЪ/Q)$ B$*."un6$X#%pm[.Rb=݂e 2(ZS 9c!jpR12"&IRb g<>^u*JZĪc;>./!RWbH$\3Ҽ=Vۈ~X[G1NۥYIE$ ۿ>4/Β،f(]p +24@<`h|+-!8}{f1MP0<=>Tq:E =.w|-U 9MY4gۮ7=Pxv|be,y(b2g/8ؼ.MӊY1Ezsvf.[0R6#0Ö. ǩZ|e FBwxJ}K)iliZPGέ'XSwCՙKuNLJ ?a4'iӟ~?~Ԣ8|"VnR:cx.cOJLك'CF]31I?U{|θ̥25VSWpo裇O7gb`7x"?jds&<\yhGv.}!`bд4XAAEkw!b0?KKͩ7RS܉ FknSD$gNYԐpϗ̛X @.xW +~jU*eh ?9 G3[*i3ӝ;Kz'ѹ-UԼV<^ ,Pi+ƻ^1UϿIJ @ iLvscإ~^`^N"1paxN~P^|=>]N\0 ĄP3rXB#}rd% ydQY!91BO#'sSDNٚF0vp!.ͯo˛ke!82>VFuhK?qVc֓*kc ct/}X+ _gH}ݛ?">pTf rǡ͟ g,KWtDO1e15fWs6k0qQ=C Ҧǻ*O|~+\߬@(@I Www[T~q;bvC듢#:|SZu\/6GvQ3fG:>ܒgD|hmfzS,%=j |m(ZDh> %yƻr֝->ݸ M}E"%V,dM_w9OÙgدUG}6^-=.zh 8&H)D Dž72]%+L/I]놔5-xythzΖ&MdiFPV(vT*>]m$Gk)upr0N_t_-t|Rlia@(BŹ\]]bpD]'uv gXhsY(NBb/յ٤+['׵niuV 3z`-`m19yed|Zzb|: ,fa}?.jʐPr`lh˂צ3eܖ}y-o a@J߽񜩵썷5ZB{YGfrsv1kRQu~_o"YGF8%xѦΆ`VNKp5(]ggS<.tݿWL-픎qf)=dwt%LW]Ҵ0x0<b_`p Pd/$AQG6cw_O6ksX-<R:ނK7ui>l[04  =0 #EkOߓWXNyLé[vL]ԟB)0q;:&._}l&uWVV?aK5Aqf%OY"ysg<6n Z3܄ (\0qIb6c6Ν3\ۋo,WyZW=V>k|_3/+,kgD\@5M5wj_܂\uoo0An1DkN]V >R&,iKcXn0s;x …OUq4+[w-\4c&gs_.>eiqg]H+Ϫm$П`M;~ /?.ecXVpo<0y{oX8f8(2c@Ԟ/.8Gs  x.|&Y/GyLEo _]1/4ciIq}X`0xEwkG7LL.4uā!Sil O nZa +is@(Sw3ABZI⦂][ͫy0!iGΖ9u?I.X?W=G4|wҹ,Ĩ`љbUH"DDبHaҢmF M W VeOKg>:/&VR}k%0??.i♁:|B.J ^<("s~rkɞL3OR}o*0\J_'3ua<{S#0L҉$2  /LVI%'( 8ߝ<SOJE n1D .2}X<^QƱ`]z^'1KW K)k8TU{tcicXJnKn&Y^( 0cú;J焯vߣ#].yZ +:TIeOLqxǙO [naNL`i yyS!VdW׵' +ɂ&Ol}%U!xR*9W%͚8LG*&MḼ'O8 h̙R +  l`\FJBr{&,wWi2DE̲xš-ik~ExA[+N׆E(Ek wmqõJ;qdu W q:w׵qw *0z'-H`j7\ʏ~jd0Ox2 +iwOW%UED)D1ޖ 02wL?v:!.c{K`HyP#U`?l6KC0sKp_DE+Մ٠ +Wpns{Wŵj}6^C:. @. ^.$nB$~iqUopBE˂G2|͊* .[;SY]OIpucĬ̐S\/|yQk^:{ +;YTkϜ2jv{ +W虠9fe]vQ1t񺙫W0p<ԢrbTkQi;<93mߞjӃjvk EBme_0_t#r}sRgslBTt͂-S _0_`b͞0X7~xy4 zݏ0_s7x 5PڭIJH+`&|o~<6UV|}v}@LCr2cs뭫̚kLmuy忹^}{^s[5#V3=;mfS׭i2d)}-3w6wXkzV͝Ρ:j,p[Pc3lyٮxY·\ 3}h\8f|ⶭ9N^WwiWEԕ=כ+9mFoEDN S %uɘcT={Νtsd2|vJ`&w1<{(dq`e3c[[)\1]n}CUge: ΫrXUci B+`?WRcMHKj8*"g=G{JP |7Pv+%rJLIk 8 RN: F<<^ r:D4YVݥ|"C nX2NKy8_f\Bj`3v43Y? &)rWl&TԅIM 4qaL_[)yCk +4UT͝||ŋ=ʈ`)@l"@[1pX|l[EeY׊r.V5Xo|gIU>Lun}BeAA[EkK(Z/)D1NE%մ_= WyR&qL)b^'1B!"HbHD]>DaID 0LJ<'Cٖ#0J8,HO]``H=$ T"q+K!D"x0 \nSٱO?+j0l׻݉.Onzs{i'&e\\?K25I_B&<'08WyܤYKMohX`E@p}}^  |wĩ_w/%*N!UkAC0+&R#D +JFXjZt. A*JJR*֋U9GUA#'Ru]Ni#3uC 5pZJ;vDpI 2nxj WN>"H5ꩩ4 YcjXI>))N KK ]=5& +ŏNVVVD]4:,X +6mjS_4Nhᔯbew'M 39#h5 +~|$$c>HZZ!!OA;n%%bLxuXI.hAr6}0Īq|| h??tɲ=>}?;/oa nAջq֥]4kh pרsyY.^nhoeyQaiUx`5t+$񼽧=`gHH{Î^F2,3mEvP%sצK0Ԓ}HE-^ceMt:y>on"A`2* ;~,mxlWV_4t8a]>XN0Av\?^<;aզxsg~C [<^'J] AYeϲ,I&l# DKOq0Ir0c0p @XÁg9'EC2-~znϲ/q\y1 ΅a_ f (cXI/5=' \د 9'"=A -C}kF_4 "%"JNj?Ed:*eNHF-5^eA 5*wWj\"u h"L$bS` +1Jxxc!: C_ RcLX_GDIFH:$("K,*<)5@RZ'%*v$R+"TD*/{g9&>L ?uŤ@c%'N*ls W,0wFfF[{jN@ ::c)#Uba,%{O5M_4}|lc 2 nD#5|V~!0J3`(9᭽U#fve%aE EA08#RV֟\3m#ϮܼX)/?9W42~45*ai=?kg]-0L,F^ȓf&dIqg~:R +)S)F=۟.H`uY["K kƹe Jdᴴ啜.Z28:tZcYi/UfQs&d-=28sFAq/Gk`"JJ^ATr? 8E!qGּ 3/626L6ٻ; %"X$N*"/p"JBz)Bq,xT!1 }IA[z:,V;Rי|3czzc?L'ix{ݾWvxy\vS_m1>SZvY9%&IF>-\@yY7 =}4=gW>L_}o%Q=bx\"گI&LaT8ojp+F,~=0<63U{K::\aIٔ~O/ iƲkWV׿y0Ry+q 񉟮y?{R̺aL~NqQKY3PVQ-1DA^rFk8NTAS ^Nkn1ISa.Mx<nT)0qc} yyo؁9'_QͱWs+>bx !no*!,8`iu^kPϳ,/@ĉY+HT |z^L-gvYqx(*?bYMuxL^2f0Z)I6 o[Az`Q?>ZE٩SƧ"8J>Gfg<2zb"D3} ~U<`;>82cӓuu7~i񱾓O/52=$KӦ~؅Z[WlSe-vkAAh ðc3R6H\92_]4UH !"p"H=fN"])j)*x02 U:$ȠD)SSX$p %A ^x^9Ax 0iC W{/c?׬yvH00l]Xs>;  +s{t(eRY v%{ .oy3m<>pCX~h]6p"i*\qQW̏WS2JKkqb JxyB^d8 GGF:^v\ņ1pc gC[E~͌^xxjZunҫp< 0 x^p?y׮q 80zGFN/n8 ǰk[op^Lٓ! we[|0LA&0>Z*—tQ2]'6 xP҄9!eG6^$׈&]A5Ϯ%ϸol97(łG͚5ZSفJnBs"v~s71!8mښIw}罴Q|Ҷ?=Fxz GAWhM݊ðH &TFi%Dh3R6!1aRBk׉>8GDn/y/0Sk>[aȫQʤr切Z閒۷,ؘX WȘag̞ٺ}9}r+((66@.j"&Z01qN6s&R3vtziυ&߭ +y侽/z.asẇ;j8ql1jVZ};X4aJ41m`hngz1L:,>y|R4FJQ?zJZb~as7@h*I'NxQ_s 9z*H #2jRr_(o_E &>,Lqʮ ]7lNidru´ +4<9e%Wi JN3T6xYlRb}!CS1L6}x9Z@&ƀsv5ʠQqzb/GJ,5v;4(nDBk6{$ʠybSR Uk ==}\L :9OBlam6a* 8jKkڇn)S'*9GuΙ:,|ČQ~b'ZANvFkrgo#WcrEH¸EWqgMCFCa)'+X.}1L[+NN$]+xx嚬t]9o "K^|`}+.k XCKF*mBƔ/y`OZ 9&+“y1_FPAVy|X>GS0z?/wϿNya7W[bE W ZCNl?w;# 7Y|{\Q6(au^{I?G{l R&ZT3,4I yL=vj+9vt}Gk/NbNd$r,nM ,ͩNON46q';pL$iiH"˥"uȱ#}EɁ>bI!7"H"U +͘j4V-4w;|~F$|4蒖? 73cn lZGM6vp x׆~wOK)ʀIsN1lX=)b?zڼq/2X%NIG_jlxwC/vW{هث.vQݾkFAD(ZCouu; Em?~hKO:7~Nːx#z' K!ksrtѓ #SKrx@#Nt=?գk+zl?\ +̿|EkGiX߾^a[=o.n IIs[}ەgzn&T-FpS;\ Wp,rFSuoJZ=Qƥ`8hd6l42gUI{z3FR_cxAm5[_ =[s-c cF|?@#Nx9)?yw ĥ~-K%QgM*f`Jv>\5GAÀ 2-%'ZL+c4R1 >*I"*4vt^HQhv3 D7qnH5xm_jѓHXWuYa:580,v郿xty\߶3=MzZ4hH;-M ۟˜SO]Q2Ju>D/p 80Ԛm6q3ByԑIt5Zc#;N]W}}}BfT@`wT\yw7Ԑl*<3u4:9"B5qnVbL& Бyy faQUЅFN23N &XT' MU>' &ihVbzZ9emhԵ{Qۼ&v^Fj6j)1}3"e&4*tյh3rj$HOqR?Z0 +gM^]@l8ѕn[]K5. cP R,RHnϝGeY.Wv^M8oXk_>.?PV*̦ a1~^OtbTAQvxa8Xw eg|_|v|;Hd@%Ĕ ; >2%jW[zI5 bE)tw^o^L!c`uXk2&mn_ fMv- =iFp[9@,Fӧ/`۹MoEO[0EݕqUukݹJg>Ȱ|?ypBD`$Hg}/ ð/Nj/p3ćA׿DX5Ȥ +9N;8L:xg_N[B~60R'qEMYDA/?r 5;#^& HJ0qުuIplEmpzAQIҕ6s]K,c*;vڠ^d( yȄ&Ɖ*s$ސ:6ujP Pyڂ# &D1-`Ϯ8PĤ̞8J N֊ҊVUQss;ep18&^, {߂ + ED럜0VTYH2uTQc\8~ET]R7j钱I8nEIDqN!L9.Z7pL;}ݒixSU13F)$APT>q Λ(ZعY/钤 +%^YDLARGheEք$]xL;bڒmF8SSMG1>5R:Q +I^t6+Gfkń$$axem_;9W\ =D~_jpAoF)ܕg d1#ʸƄ̩#@|gؘsFj0]dҚ4/+R M~$ Ox|ͤifp."8"r>zdYۥ`NZM]W9 =Wk~]& ㆇЕwsG/xrc:cq*82.k~=nEы^p:~N G~ c &#KT!*w8$<(@4(k;Co8GgoSYZ|h7i1yxDxSW9NMW?Jy?<׉B#r[O}@f?hUД$ ,>T*xώ~4Y,*pX4˟5p8gUMӜ >[t6f.kׯhW_BӖ΋is=(Y8kDX)h ƤIҚ[1UF<[yC>ӿ~s94/:;}ӏ_: 3ў涠8O,aru w,ǻ+Rփ4eBmbg>C[! /XttnXA;4>eufh5B_g={VۜK} y:u[+pMAFL[n?st.^~⁇F*1nC齻4X Mz溅kxe:߱Byx@ykL +p/ٽdQw\4?nv篼$~r@\>CDq6-X9vxX,дΝGk<,5wgجy.QBƹ͎#1L>R1k4u9^T>QIBz ^7͊DrTp9BPRc}6$*qzylnR)>#dkwɔ +)cǸ/c8%WHi0)eEKRes߾DVR i@f/bV96^WI1syiGr)FRxn: +6}*kqV_Z ԑ#fC) +.whƔyG'Ty.޿Rtaڼuu7a<J0iœjz84sBYShl=Ve?qr]] r+5f_8c?,u̬( Ib4C+̩sXYh֢eC0P}^fHFǨd]{ CABwkvY ݰjrfA5b1lϫGmbg3=SCIGM6{ؗ}`30sg̗S*p!i&Xzߺh Ai8.MH.ݑxwqĉOٰ*#@ + $ϊĊiå};/$%Q/#@MoJ)WhԒSbWx`pP=rs[^fҌY4&Ha5uiY{ f훻< $%Q)a.TV&O ++9Co]5\ĥNZ]%QAۃ;H-/8Pa=>SF{'~[oŒˎz+*d`Lbq(rp1A4wiD6Nqߒqms9Ka"},ső,C HK0WWپwz8[+[+~yVLaiڬ\Ëa=t ,Zԭr37H)S>/On{/v>mVQtاNH:VRޔ! 7v愼'f?z|L`9]v|E'=e3N淈S爻N=2 ` Æ#a!2U%aA*x@%#r.Lg}*LV+-QJĥLwQd$HN#9Na8 +܏yɧgg 7w\u۳7s^)!0L z8AnQd;GK^v5Qa~6ᚄ_=|MDFr)3 - 35 /9qLy@5axG6=%G!g/`M|XgSم%-^A+' +y{|dzrնv0V^BzϻK?с25P=yݥΟ#;1l;f?o8oklY&$S)Zzv܈M_xhݾWKrG3,c^s nko|Rxp:cΦ?EͣD~AJַA/;_LDQ_n̩&V^=0t~~Zv_fpϋ- ߞF##HZV`IEdJfTkFki&g/"Ɏ"_۲V`ZNn}7]9+O0ǨnCN#X.|n1gf[urrWzlG,>md-Fǐ}IضY !'VI 8b +?O_t`ֺ(='>/iv>5}.֡o(gh UmkΎ  W@ڝ )c0Lo. *j1_?}xؤ|e>s儁o<ehR"._pzHBSf#HDm2^AA%+)I`Zksr<HuaZqNCўΦkg~3mM/)uX:J_s޾Ę:MWmd2}{{[ӞKyYgES˭m- rCڝiAvn8bmX {s)nook:x|K`O"fvH~Y(Eb@q]{ iL6&:4zG|ŬQlitkm|~4zHmpזpQQDϛ7+Zxd +b 6=GAAes +MґG)y]}!%m/=b18SBqzgjE#áh΀";oY ~T.|ޢ;d8 HK)[KѶ@mpz{o͘ Κb.1(AA䞀 =L|_{RǓH|i*.7:ce{*ˮw ͥ;_)ʍD¹إ6n4X1B(i=7I (5dy4C!њk`^A._^9Q<s_lӃ|]l^B  Ƚmq{ӹ U*M)R0 s: |yQ" :܏xf`*֓ϻLM]F:W肃UɭF'uAH&(TbqsH*tX9І)Imm}Vu! P| q5] 5^溉_xKwhCWk Ӗ9sgZdAAރ5/bFG}_ȭ!Vh=fOL1WV_\×!1*wsK52k#wW/o"G+ L_ u>b.}dy_YAu{pAFLk(%N*pA-y:<4J׋ |i0!Z-lA#[E:oͥ ~H?r}ɿ+9*4qZ7l#ȑK~g&ف㚌E.K%1Nܐ7/5?X](f֦ka8er,xg~p$BAP =_=p!hU,b8)D&mL&hVRXCHj5&>Gz8I)Ix{w"vy// `֘e>NQȜs%Yҕ, p>sݹ-[1~u΄ŧYe ȷEk fd[=a %^`~u|h l~bx}}}<2B1xcvW} ͍U n>ZȂuۚokCV??>HD".2}ikW\-S[)õU=.N1}. +*#0 +slS" h13-m@HUÓy}S72h?_p<䚴2n0|y 4|ʘTG[ViȎc12ldOcYE)8SJHPf +2G(Ik)>\޻oF6*3%L 1WX5%._0Mk:]|oi jsaE+BFMN>{ !UHK E {^=\EWwfwvW/4rÆiN5͗7}p/.JTX11I$f=ЊՐa~1<[qb[t0L5vɑp>gp3!g-ʩ0^GOUemƃgܰr\-ʔi0VL6P0vʈY6moJRph߹:íes'x){o~_W:;s{4]<ۡ72L11Η/6@R bHDk ȗA}kwauϨj[n(BwN~Rŵ4‱uʚJkԌK +~at(s*>y{Iz촑ֲYԄӐ6~}g|;)\`v8={6ot23fyˤb(Rp,%V ĊILewZ.wcYvi*q¼%O^J9Y&`YvEq!)Qifxo_?חWu|ͲgqKUGn/7xO, :oJp/(rJ{q !ww{<;z%U%D,H3A]k& o:߰/V5Τ\S @{{/APv[#ƱO-6`V˯6-5NrY5](\"&gV4 =<&AW |WS<%ʄQSGD(yN_|Oq=ۍME36'ʄq#yN_rMiA`AϮНo'vƞRzÍBhj$P YS-=gNjWleȔXXP)ѝK=^,#ǧϾRYMϋ8-bEDAałQ!A:z2hg!%[I :  pܺKWVԹUA|S2uą) ץLT@vQ[qq"%`.>R&UVy,ACڝPpK7lxRb|pG _8~?ؐ'-LpRxOMq56ܡ!SMp @0B$Xh92^Mn|rChC8ZjbK`ͰU9[48*.tLJ]˅M5vh`K}z`Úgi^(b0A(+ӲO ` "9}}9sÑq4u鿬ׂt!)ӗHXiWpB=|Cļ\}|ljV7 'ǭxr^Ԯza&,Gl39Q҄uȡP%PO݅ǎt*pqθ;߷$XKcc(eO 23nۅ[/isZLy=NV®&)I6VW9x#DZշ}Egˏn1N|QF;moNIwOm.ٖkq"ifA;.!8xoJDAn)ݑ|]&u<pKsU/6%$5xo7~QR;,00I ʀ66nXhj‰?s:EA:\S;lI% +22H-t:-ITtF7a뮽4tK1"ks6d! o ,X='Sf,o:Vi˳XSoyE&<(v/xaYvQq% ]ϞX5ORJ1s̰{j]=,N|<7K=( iފ)Jg0u7UfCiTДO="ӍK O/: fƲMOw@FJ7vX?qW鋖{qn@e]*lUej xJ/-SG-[쯼>0Ts]C=٭WyfۍFA@k.ܺ'oOΉ2r T9q1ʎ+ͮ@G-_;Qyc=,H2F; -ѳc$ K4PwY*/:weMdK >L) >@뱴؈E=g>Z3Pmi1q چ: /өxkw%T.kq +җN-˚lNG /-D(f?0_߯Y5cƹčEtYj9Qxy?\j#=XUXnv{EX?9g;cg>.^@Uovιs.y^J^7?ܪݶo 셟'o nCRꀪ-zB=DNz腟|Q}]ٿM2xS‰+&8s;G=Q~맗=~{o?lCIAAnݩZ~<<|XW&XEVY>L';sƧvt:Y\s- 6͞\]9 ^sߓ!!.7hS[gͩݍ~qJ^ST:Vpx{*4Nۙ-\8 +~jħW?z@޻20_,y鄪f/^g?nݣ ^9x::K&6}F3F_}1avoo)Ń!u#.;ꇇK;8^mʤ.]8fwq|9Qԙ]~pIp߲++s&ei5[ 57 \Ocቓf\2B.5A&N cn2REKoʈ&K.>@f@[u8F*xXrF?(ne29?elr؇m-7 +AAPv@>k`XćƼJ jc/_u]>֜p%@Abհk﹋f0}v܎m$379id%žgMHnܷD+~_L#\mgj@ijp>TUsWnSk0%**v7ipʋ{Cš:NMLSk=Sa?W[-n;iU\k@{҇ !]'Og9=oӒ V}d?.p}`ZURHʨPAβS'c +(7"U__3G&%Hr p>4kuթ_x6Vk8&8l4"(?xn[~갶1p&miC?}0o⼍릩JEEIck-i\rg?w`$5'v՜FNY~=s E?mgٵg^>tRF.Z7qvsL0ߍ;8KGiǹMM Um?)˛/\Ro>p o Oy X?d2\%U^4jz779.zڃ(\CA%P bu&DhTADzhhEhtrĠ?W#+=^UXQPV|‡$x. =|E(Ҹ{KcSG@Luq$yf(Eȩ"5򠟽# )]N+h~wEK@ai:R贔"7I=>{pʠT8s9`KZ5ml+%6/!҆FGAL^EjF%-E'[&OV1uSFI */6mF([Sme EhE>SYqAMu5 gMg+LNdSƦOGyq4V27Z `*.t^>.YZ "b2»;!%jA.N42cG[nT&SPbd/yzƤHiBHL^ӄ۰qg?DQ K"?L&=կ烲;d#DRl(]`'cg,'o}lH[.ޞ|c_GYQM:ѺCaKo+ٛSg2fs^R8bLyUvհ k̂][xQӒl=-"0qOl3e͹əe6Y=28v铋ds[!+;s7r5_x)1y([v؆TzY>p O |&E+A剏lg}.&!kKzZC^`8 /`8ޝ5u{ } ) 8 렶mxisܶbyFgvpXGmk-cdGv H8ٓ?Jť"}9ɣy7^8nx6@$IR(<9iۆcY)udd|۳$pFڸ"GuO<_vO/Gg5 \D 5wc%L~’!=}Mfx|v] \l}fP{N,_*0lAƌm̔x({`lOr${Xpo?Uje]ÒqZ\tA׭->5?Cn]{'z p$ukd2B? Ut̝l{{z8 $,̓t*xt]]LF[4xF5a^WlI3E343Җ&q8uwͲ 3#(kKd.,ן-ש7оo(<`65 l741+ $TXt`Ր몪|1.#xc +Vvi ]fRi!o!#$BGFQ%f166+,/Dׁ H\81Cj_3]xU񦛉$T+*gμysGBgG]+|Acͽ=~yz6xk^6kQO)e6l+Q.8/9L]~2k.m㵑~~fc}ǎ-Vo͠TM,]oexe˲bKO>]c1L + tg{k١?9uooR@1d߱Su֡8*ŦuiIB`ß>]`+ˊ7jo_,1FEcCmq>;My;T7?3'J(&u3g}~|]~h\`'(1!XQyi`f|vq }|mf`فYgVR%$)sA316 gɻ-~ٌ:}yg: ˟)ՁSclPԜqn3$z4Ϯ Jot bR(Ϊv͹}M:=!HPSs'`by"I[9Ji|෇BrOi-%%E.KҲէ/?//6<pA/kVp&̥KLWN|{/4u3 $I,Dbc *dV\TMDMyB2'#ZOX`X(p>uU<ϱטUQ~C]Vmjd\@ s~k86G2c֑xwG`DZv+Nw9l _xۯ7&956:eڐsB٢E~pX=;6 @ΑE'Gۈa4T߭}ⒼDRK@Dg_#xnjIy~릠/rO (@yV$r.#_Fu\nO^쥻zAh$>1B x75BcSZ۶mѣGU*նm222W߈A ж~ФUgiʯz[bK]6 #2}^ ;q$oxn 1vZ +8l0H|(rS 8zeBǑWxeد]v~k<1k\kvs^{~ }aG_&šWgYiU=y;^cy+m]Z<@j{FCvxS, fƬrn:U ^ZS{_vG~wS H,{q[25VV̜ME{6~Y']?So_9S6ˣ?!2FQM h޻w/dffd2RIQ8 s0_+I𤯟aiT`L+r]9 `\ Ζ k + v=bVTh7\ }H DBf"MJ+a15!>udgfi" +E箪9~27/ji OEwnV17W|Uk Օt؅nRW|LV6>;T?R%Vxz _:KoAq5^}ĝW`iFm6!B3ᴶsN\@QT^^`NNNnnnCC\.(*--~{ojUJ (i qẉa觞OJީ`)\1G +71ۍVrLPU7fJn(\Ď>cwS]7nwM_rdlER\~xC=. ٴhxƨ#cm!Auѐ6^cYa ;G1AFu>H0#)̍w+4̹1R⟘#47W/om)2Osj)b,O +w[z.j3{ZEKuoH7~t!n,/2tٵ;ME!Bݫ܌ g> +/Width 1167 +/Height 573 +/ColorSpace /DeviceGray +/BitsPerComponent 8 +/Interpolate true +/Length 1890 +>> +stream +x1 0^ݳǏ +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*# +?*.y +endstream +endobj +2530 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 640 +/Height 480 +/ColorSpace /DeviceRGB +/BitsPerComponent 8 +/Interpolate true +/Filter /DCTDecode +/Length 30399 +>> +stream +JFIFC  +   $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222" + }!1AQa"q2#BR$3br +%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz + w!1AQaq"2B #3Rbr +$4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?bM2Z<^RgCwbG)-IQ *Q){90db}}E4ޗii2*4݌`ǹ4=k<݌zk 6/mKpLapruXpA9&b⫓^ +|SJ)qF+ZQt4gPi1KAKMJ)jYhp 9-!E;4 sA((i4iOZ1Z ozJqz-DiEQ$phɦI!.Fi 4!6.sFi杄3M<ў(\\ 1)iXmG <`{SM8M +p8 C (/zcI8 +LsNeNi1\b:Q\dR@OE)ڤRJQLD֭8Mzո W-d ` +Lv1K{WSr=h1F(SbӅ`sy&<zN6-w1BI'9Ozn!zKѸ;{[DWv[T8I*J@ AM֍֠F.Փn>n>M\^Փ>EsNNJMsd7Z} :Ҏa{B}d!@N;vO> +qG֝˸ܟZ\h]m2ORTvRJ_:Rb*h84HzpթqYIش8iyHn)1B*T @<k,>2KFqa h̒9 /#֬#5tkø;UV^09)'g%tn4Si] T o}^gټoGԼ=zٮ1(M\TCޒt>U$&줛zh>+׳ҭ:Fedީ9bj{ci`aO.|mb,uRW+zZNz kL?]T<"< f@$'rp+I\#ݔ\L1փ(.8]ZQ:ta( Gd}K#U͉=/Z5;)1t6Q}vϲڤ9݌hϭb})݈3T?|%/ТԮ&ң 2| '=+]=KƺƝo;{]1l19Ƭ˸$p}n=.M>xˁm|$Nb|/ qjZFэ0?@IdzT+cߋx^I}iݷNnI''=*'M5;$խ V`F'qdz5 0D;me$IgxmZlr"BI='[-7 "ڙTLcL83޽cRUݭ4[MU'=`;prNI'8Kmo5V<8@K3xozid.7` 8l<+d$MϣG,om{8@Rb `@ '&gi^R]wF4_6q  + liYҼG l'D@S\2v ڪN Ca?i,`o0X``;#G$`ddo+OE1Fbq:5``ϧ%G^sj>*LGdgjI'a"I٢IBuxgYVDVE؁=嬖7s2A+DT$#PV-zԽ;oU0WJ_8QKMT Oi9TE! Jhb.9@j@Bc*6Cc0 !`bLFE0fkXȆGp.0ip*Ҥ"G& h#y%"AJUҐub4&1N)l0h8n)@Ҩ8!hb iqN49KSi;)@HiTSOk>xDLiݛ 8< @13^:%ƈP4NXtqd[Ǘ{?c~^٭h[vSu>;⧊{D-Rە"OdA +GRGg8Nn>>u$ݟOu}NO +h6ڼ6W,DfUTI:W-/h}S 0+3׬/xǚ:EPLDs9([jA[ xygׯ6񿏵K4 [$h6ɐI,F~Q=zTӦ爒S*tLTՓWu? 5k~%.$amb/ +1O@+xv!Q$tr<d^2kmeu)oe# +f';[{HQ7_rΫ m<\O9ȑiEo]@f|;m=ͶX >Tz'G5㿇|ԏZxu_O3ֱeۍfmI<$C2(l.~R{q׵T{}]Cæ_47^i4tV@9qukj=BBʰ2?PHjgZ|Il:m|Ko&8 Jldt I-DX/kgk TFB6(O5ɉz՟:5yl5hJL "@II%bAB _;=xsG4MKbr0uWfLk9%m?_v7bݜ1zĢkRB(cO+xJ\]ݴ'*1 94z6_a]%V10G\_|UV>$B,3o2 '=W#E5Qkh Zơc+"`*y9oz6mKkOTBg11r9đt*ȘΗƞ4|q.~đ x%p3$ߎ9Q")-p +Y.J g nv:Ns|)k\G3]A@ #g73Rf_FCRf:-`4+F0ek_{yczXTQRQ駇I=|Ƭ +jULr?=5;}3=?N8 +E*V2z:CjέB3lΚmvul)VQdUқ-NG4[(DB/jr)⫒E!}*|SqTA.z~yHR t!ح/J!\tjMӀN/a>J~y+SRav!8ģ?c&{v"g!؋_O֔D&89!=;vjr)yBa؈DH!\tӶ8j; K-OpCPQj;}}(:g5Wbt'%xێԹ`C4z:A35QDC}+o$3'bUpG88M#n$hM4֌.o0%I v g|I^U{E'lK'g0PSݜ2T[{\tL+U\@Y 0~3,nk +cS/W&ߢ#-"#cOGKŻBIrmБcGʼzUb[x[֭,[Y2F'c滏ȲJcAFYՁ dVrF\#Ωh;%׵ Vֵ+wgvVeI }iVn뵚fpJHMZu'#cIsץgz]q4U)"業ڪ":IAsp'Jg xrM9Z +Y +'5 ~*<Ԁw32jU5Z']i٦ndؕ=ݕՌ+ieW 4e R2AEuD^%SGaYDO@Gnj4:Aն~MeE6+`}]%/Ai1O@ihTSWUlSYX-d6nSÏ*ԩQw_יx~SX1=`1uɒW +AQ_ 7 P +uo5uOtcc^+ݕṃ m\17Ƹ/%0k~et +igW7l1Pps Ug'Up w/.$y̓rҫjIzQ残N*QDr*jW55Sf5db&.+0QdCSƼ槳{{H%YTH AA4Mk?2n4+,,D%wA 䃎t +u[#{fL2!UTzOa|[~)$ڬ7]6<؁wg3q%YZT%B;0oLm _gݳ충wc9~zsXQ] .>"KO[bE(b$#1ӃheH_ x;Zh>ѴcN={Vd_,5=2ž.$7fsӜpOjsPM<YڡN3I Tu# M#4)Kt(8 D$qtZ?Oþ78n. vJqp2N'`5} :VcF]GtR po~zw4>-J-2ٮu6g3`:`c+gxnKp4>[1 +DrAy%8v$-+kw>!S6zеWٷٻr2cvzx9RգAF61?OOƙ?.; #5&4I2/ڗ)ry*D)\idbE0 +(VW62\,ѕ%H  Њ@W(RTI\n)@8tڞSR-=\eemҞ#$mS,veSKrҞaV)a٢HˊaDpA"+ciWTW:mC6*+1s_*+׌}u%/ASs@5 - R5EH*D < +j +G5V-!1KxZR+FE1M`j hn*FEtDM"N QzQV#j̴µd- sNbHMH&3Fڥ0RbyA<ðsKh4sIbӀRBJ8.ik'$4sbx e1&)@;c˚Ê51Tl9)DS1J㊌kBZ SMiz.+jCL=kk-HOer7q*4JC)*A1| T4wZvzEH4FB 5\fмU kvVi78U`p$urTMl\m̬u ERB-rkl$^/WG+j4&oKH- uFA" Tr222+t0ukm6K{ڣǎ䟛}-/Ksľ-` V $a׾LcOg&-/oZ'K|]d83#䑞2lxYެZM?chKiAsnNسI$}j&"6=CñXPkӘ,|ܰ ;#G$`dds=nf{D+ADg#8# u#V|?,^yGy9W]3KD{vڠ'a"kj$M:u xfYVDD #Q_ƤRH%h%ILa[cE:!83_*%B%?ucE{ЌisKpZL QR R%IQlk^ej4 +vړg;eq0+歔VR)1Q]j|Tl914EތSԉp*LR3ȤHEkE$"4yiW295&(3`3K`Qhm.p)yQ)BN8iB\I(ӂRaSUXNC""VSLQ7ZU6Ȉ JE0넑- 4֤#s[&3!\U&5b]+jZ&왇tFMdi\qɯUŻȮƣR0Lb2IܒsChP𔿔Jz^`j4?"7wk^.TWlTh|(Ϸ>LѬ$$tZb>r9a*\QBT?M8-K;9PՊHrԡiTR>%UJ%\DȯT/48RWRJ\e]kK2fڰQ^&2)8LE040jr9\',EvL#M0#;QybV#Fړb; +F~(.v (RsR⟃0}*\f3Np\O@jxZP=FOJ@'8'Hp*U*ԁkuB{*7\UmFQ֫J:fО@Fib#i"ъMb"8ԄSH3 ejG +k],<ף՜؇hƠjoj^CjL Ֆae$r#迍Aާ8OT= gSLdџzLRQ.h%0L5xCn]"MOL;x0Hł$c ;p:?[k6zEޤMsrx–P271(28hU_~ڮs<EKtָtFEHՙ؀$p? <1ݸr@$`FA<f}2E-5XBp P{ͥ;~-}.Vka',@ W+^PV'{s[WIbIQ;=ܖTC_ՑT_ϩ?2Pu5"Rh O JJ=VEJRU>`Uҡ9v4lMR$ J]0_j6^ww3r*{T&* +@95]ˋA֣)V]yȯRB+2l`j2+_i&ڜIzWJijvj0"j\RZC1Rm_0)BK0#ۑN < +\T:ۊ~zRu@ӕMe햇m*qUFb> ϩ T[kԊ)BȕRFU}eZP5*%pUSЉS}82b[$qWQxWQ8Wvc9 JS% W6jɫΕ]ҺhБI֡"T :קJefT9#"HHG4V@FE0+XɁ)B+u j\qU1NSL46 +M).+6n1NъzHEJM1\e"SsO2*PNDjSԁ=+UHr esZ8mBQTvJ(UԨVmNRXH㚜F˃Z¥M0TSH +9t~j'$׿pc]`,*i>񨈯j+SvDi)S;oCL3vij)+J7"FڛmyJ"+7>)R9ZnqjnsZ;1gJ! +ooޗgG%x^" +kgXO S" +vBoTB0MYK<'j0# XdW6&Th(Vo .3ƴch3oW~ȥqҾ'NV=HGx'#tL#.~DҺItĜT'LJΈS s @4̞M28{F+F[s ++V$pjvZp\qUht=`TOSȮۀ: +λ VX|͎3LUt֑Zp=?Mznȟ#,sRӕ*U_jZBȼytda$IqyV$U"mc^mJgJ즲V\Jz]*h4|*[Ze Vpj䣭Vq^ zsQS0EzPdX9S!!M"E4,ci0M;4cMsJGfisJ;R Z8lbH9 jxH.H:Iv$8S8GJ*?j_,U/X{CjQdʝxGS>VԪYӞTɪ̼քgڽUe7eX1"Ueܲ/ jی +uѝisM"%W+}]Ug\|T;QBjă{1Qj7g5%hǕ1GMI(S1QE{m.(RJ(ZvRu;$ZH)E=]{y9*M7=~*~gzW}Tu>kTYO=jx~Bֳ##5X+bM9&L8I]E((8dDp޿3aӓgcf*jEOaT#d޼2[Ҝޏ2_32w& +)0)ǭ.ٓf xkHPͦiN2rj|ƪi#0ƥ.)=*UڸjVHѲ04iҞԨ+dr$IүqA +r8Kx+ʭ6*,:8ڦU]S[Ҵϑnmq1ֵ>ՔNM;=sΕRhy^FdkjHY ׊pm=N551^MVeZ&FK%EFEYujzstHEv@c)ULE}9-;xZ~c;Fm'=9Ho- Ex222BMu3xY%Ң u⪴nkR,❊JXeI'jgjKVh4 IfiwT\kM|0m 4۾gP|6m +?wݿzWodk[9)UFԯr'V>sX1/Jҷps\Jq=,:.hG8 s\W`c +fPz*I*8QVcr멁Cj# +M[;3eG)$Tzʞ_VX_hjΧn(*p+ë]ܙԱUb9RG*S%#k5gU,̀I'AkS4S*0OfηkYxOČl}+4lFziBc9iKe#h<zbo4mmQD{#=>z#a֠P G< iNճ5)CG^((vtJ9Ox1ha~ 0fohry~(Q;X[؀A9fyZj6nbYS=@`k GSIN?,8˸G,\+.Wøt7[S>UX,x'ʜf\'5 kҥU#2E&_jieeV5MYd9Qu¢)2 Rb"VSRdT!'sU&KY#ӷ8⠷$VմLEg'c^TIoN*aw",(\w$<0 +ɻԖ_DgӕVLv+oRT nV~X=:"Kk&>i+$p=64*rXaVo9 $QHd IkX]:]Z.9ȧ{=.IThg > u6{Ry+yAE٢[MKbȩh0JK++"N0U`j(d[x.@ʌ}&`+vkp/>fyN 6zs4I(R_yф}eK N4|$}x +U,{"u Ӓ>U9b9{,1̌G]s}w*WsRJ&5JRRihxU[#/VxVJTx%A$e e=3+~ԋ?v|]'u"EuVD;7s~=3Qx +vYLfWV*ʟqogᆗ:oO掉 *ŦsZBE=+ƢeG* ng&l wRNK|#%Raˣ8Ga*oJeU94ʕZng"`>WZXJJ58蜣}*uJ#VƸj9?%)<S?j+rKg(WO=(Mh[sOKzWM=(K̃p9k4JJp>4)zVO[J;c,ҧGjXKc9ckcnYp2)"UJN*Nxo޿{Sl[?o|q?ڗƇ? oHʔߡNm 򊅧i`sYev\'52\ZJLQC|CjJai8A9i>1h~>~8I~=8{vyWvOrE C95+ǥF>Z袼/H(*##ZtfXJ_s:|xF`mχdqO%46Aʴ*Gqqpӌgi};2t)^)[%k{BEq$p :1uAkEb 1RZ嫎6tKeu1K=Zsr;~}j51x8BO_du<֤r̫v/t6M{M>k0H N[phf\v&sځ+ޗVBL&EF=mRt EitidJFSKƆ udA=)F3dk)e$ +ii!8ɧ(&nhփ؁L3Q$恨p80 !8M>Ӄ:vO qO$^7&n Tوy4sIEvio -F%Ї' 1 DZѫR%aFVmΑ&ut(nL{JI' WbV;bX$'P ⺱Xؙ9Mt<$)$ZAnzEFg#q\Q =ZCqZj-QdTe5#OUN Hy5]5,9fn2\$WB"N+g*+j +McL-IN7gR):TL]zIS:G%0Z6G@E)E3O bX c'cN(U5f2cq;x[{Q⣟^)O ++.{RW⯥ZCܷ%_ +Zx5s3NE74գDM2&LӃNUse'ܲjRG5AO")vJ-6II z.TZt\m8mP+(ĩ%j]@׏865t52ɮWO5n~W4 M\y4&M0SӖ,N+7$g)!sGX"$9g%r!ڦ@ D}*hT%vc)+esgt<(T܆Uҙ V01]zjsUzTqAҤ u +3RVFZԶ*8 *.*'v7*IjG ZR Qֺ0~'̉+IzSCx3Q4Ƣ↚JS\NTH]SqVD!IJ*LpM*hx +h"m5[y%q]nmi"쩽zh4pWIb"ӎq~7JU&zU"ڱHd,L׏ɩIsmi&hKS3]pV/I( TS?jbrEJhH֧b)KSSMON)$U-gQ!qjɈLjՎu4 +T0@2*@,549j_B 4哚i@OZ# +|DIjXC x^Z\dשQΌSLIIH.9}՝V!p;񓿼:Km*1?5QuTN땙ƚ]WO$z@F3]k=L tσ<QԚVR6qh`iUR3U9Rqz_rs>xfXGu%ʚ[ #Z|lsֹb$A[RLK)2*;p3֤+-Z+y3IqsN^TfΕ#.5Y@)Td^MF&<4:zD. 4Fq@W6bnjr*ֳ&fκVhQH#E$:SQߵVvZ.Y950hiRVh4B֠w3-Vk6*9F+ЧZD֚EHE0ס27N2U5 סWQVk2殢NJoi >E G"58.+,_3b6 W $$d\0+q3fhIi)yYc9U6fGUt"ҷ8/}JSHh>' DyT<zմ֩Ɔ81MhWPsONERl$hjvf](-W=jT'9SRsVΪ3wDﶟZq(¶o*}+֝Mot%!hGd}SW +v_Zp>*tܴn_joi~Oy 5L.=Ee:z^=h=Ee}lH$z -fzaB yֲZ ijZ#\JH:7L7֟5f'7x0s֚n}F3P(9MJ#h_} </}og3\ۏ[|GEz +e!T9iv[0Ay(JsXW=769͝$s\s[D|kǥuː9pEa1sZ+/f5哱Hj\)w{҇C>Bzտ3џǟ]1=mӄS}8?`j\ZxHPC.='Sb$ 3M%ieO5'Užh&ݑ +lt?1z rǚ=kԆ)#SKz_Y~hA<;O{$j}W9G=i8\G=>}Eޗ>z{Լ/`Z>k#֗֗Ԛi>}Xޜ'RmtbqZiq?j ޚn=4ZC?ke)RF'Yq3{լsyf>yK?f7ޏ4z}i>xx~x?y/㻟Q@Wqć +pSP"ĝ*I*i8ZzQҬ FҧyIY8صl"lTj_-պdjARmئe/UC'C'wֳű=O{ )nsZƅc6NT_7ް5q.QZpzRþĸ\d>}oz>eƗ\|eOyCz%4,GN־`KCRޗ^g/P@\Fzu~m(XO ,y jhT˰̾ojޓ̦˰R xT҇Xe _zQ/RK<"7ޗ#RӼz|ş87VM/Vɗރ/j7լ24ӼU7K˰i R)< ~g'U|O3 f_zoUwѿK pKR,$ }'O>oj)%oi&{C g<֢i*6|A d4M4k4Pyh.NޤUC`VR&ZMR>zV49:i16TTsV5NA^+ FߟJ$8 +vy+9);4}x.&fL]iT*MHzaId([o{hF۾x?Gč_xm_}y q\8p)iqJ5ސ$*8(r(*:hrd5mDq*eNje%cܣK +V"L5&Ęp׫dvB%tqZЌY+Aɝ1V,5"WNb!}A4X LTtËs{j/uO[}C7qSwZvP4nخOރ!{& +k*yrǚ<k2Y20װH?8?=jz]צ 2z77Yrzӷ]ezѾ4&'ހRo0>M*Q j Ի/ >Zpz=K2} ѿc`%Ac.I䛎hQoO06i7T[/MQarlnFIwQ!\=iC}tt.XA'z]٬;M'7&'5j =h4LCғ4Z$!E(>IRi3'9E +x >[0 95nNVNQeE4(̏S]thUDTiUN "%$c`*cJ<~_(UJd=}8uW;}ŀz LgⷧGTWpy|槹5@IFR0~zԁjql*hj-hߚSCӃ{ '4& Kjr@yGyњursA5iw +NyFMW$.j r\.IMKsB6I FM@.I9hZ +BdnS.<њj\R s֜ޭW,FJ rN҃L4Vm vi$bТ\R(Tqh曞isOu<j,iI.x¹k5|;^觭9OќB?Rb*xk4>(Tr&A)HȫRiteO8涮"eэX;kg(OѭMSH~hKApzH.L杻ޡ C1N[;ڍ+[*\IDe5TQ)]NMB4idPiќTqPgwѻ)K\rMQvhG"mԹRuz^/kH/PĐFJٷ}w:v_ JYc@d< +v9u0a{_[SFN +6H22#dZ74+xzդ ;[5GĐx#`0I_՟ cnoJT?*;|GBFMlj4xbOS^{6Uڪz131X;+mv8JЬIBMCB,4#nFdeH| 5m:h$DÈXHp'%&͠o?V_ujͥHbH=F0dg֚a P}CB;#En~Vg@=K6ZUԀ0P# )5m 鷓5ͽްeGR.RwJjxZE}4 +1Wd{bw▀sFh Ns]/S$͸p\F'=kju "ŋ:rn#xQ3#W'i3iEfw}x_@O@\{㢃o'E+6;|4-OCmlqzdu~5#@]<.3EuᣮƊum5wUv@yh?{J9[cwIU6?J6>~(AI)>RAJ6>>Rܻ TSq֫ARzM_.)_Y=iw +R%G(){݃OKPll^_?i?'.#|җcAI(I)d5\Oҝ +KCOIRo_?cOUZKuV)v?J^򇴟挌?l'cI)(8ciRqRr/i?[7f)ow'ۑW +Elq㢹kv5I)w* k_!:+<q74!:(=Z*\Qmz㢏?㢟b4cy=?G;Qƺesi\_UrD}9TxnD:}~* +U?:(_?YT<^x_1[ g4Y^iTor62@޼|E8A'ELڳEHbA؇$?<#b[q8펔+h6F0IGښG5>)`b<BQa8)WmH˯ywe-SxQqyqmBAsg |fpoC=tWT\aeifb8'IS`tּ+Ҵ]#rp9vq@VzuA-A572ב9݁A$Hy$\2~oqs.t۾| N>Q+ NGh->Z|[id-Œa<:uKNuo)>I r[<d7R槑Pm݋^y8P]$z]b{'_!sNOQ$4Ӳ)23KQysI8Rl +\R3Qv`fPixJy5I$T/n`)1i +;E}zVLlCfyGy+D&ڥph6;R}ڴvsҗGX{4fړҴHcMcX{4f=)H=*!qSO +jΦ#UM8ipsNrf ǵ&i +l,0.ъv(5JaaE!Ijaa{RmqI6+mTi/CN#V +L杀v)03@4LcHFh)7ТšRS>9!@ 4$"J4쎘UUr;e5(4S;a2}jtQV'J/ cO9Zxt)I6{Z}k aQj{8MYSSSD?hi =iQY)H%8XsG͠zZ<;?S+g88iQ)Xs]5K9Kxf>bq@"6)r3Jo4%KÙ)2*!MgXMKP/bA;~i{) /7l.K.E{9@1ڢ.9 'bFz\c)p*=QV3ڗFzFZ=.V`T{)oz|.8hn&j .?Mb&Q9$qL M/I4\SQ0&A藊Zo.x}&Jd智6+4L/MiMd,z0Z4Y.D۩w{d>jbDiaUBDҜ#l4Z4(fS't,9.w4zd'0XdC^zyֳZBִXdC +endstream +endobj +2531 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 296 +/Height 300 +/ColorSpace /DeviceGray +/BitsPerComponent 8 +/Interpolate true +/Filter /FlateDecode +/DecodeParms << +/Predictor 15 +/Columns 296 +>> +/SMask 2532 0 R +/Length 109 +>> +stream +x1 Om +?x\ +endstream +endobj +2532 0 obj +<< +/Filter /FlateDecode +/Type /XObject +/Subtype /Image +/DecodeParms << +/Predictor 15 +/Columns 296 +>> +/Width 296 +/Height 300 +/ColorSpace /DeviceGray +/BitsPerComponent 8 +/Interpolate true +/Length 9813 +>> +stream +x]g@TGמ]5؍[,XbDjk1vk[,1XnػT]z2@gܲΝ9;w)Ѡ"_٠re|<]u YiI_<{&\4}Cc'zUY5KCF˧=KyD`cAUjؤv~UNBԵ^l'6RP^۴DCgrl&(Zpzd VCeH`\ʥ;o3hj| ELc~[# =,%1G*Q+^ )ꁨseΦ|̹.rgu + w3/B(nF-5G8ݻߍZft=&:Fʅ3kɗ"剽ZrֱkG5O\@!VgYwI)&>BIA.E]>0۪_+Ow'V\%8`cNFJb\tddL|l +Τ nK}3(ߦǜXڿ:4ڠ,!3yK+?X9}C~Uui,KTgY٩c:]5ȬJ +8?A0θ6`+:F۹~rֆ;0 {Su3T\#`ucD VH%uϸ(0Ƹ"Uu6K' LQ@P V?ಕԱLG\1xmTDPUKIى鸒~ 5T&x:+| + cz(1^د&,:)zLS=ܛW]>۝O2aa+ֵ90*0x ǒ9Ej c4Vb(q iܩ]j cG#ã2O\>FBav Uɫ`UvLrYi9\ P- uO3~)#O̷bc_%Ӳ &o進eJ{2 i7 l)(xmwnmͻl`SF47ILQK3􏠻rwM3;.\awXdM%f[o[M]%Wnwqw8dLy0kIOk2g.3]:xi֊!WAJ!iF/Vm Ro(uDP~^bpc 6i8MΑZÝ2Z&BThopt4ǁOȭ׸~DY=y۫)1~ -6 ]EӜokH1ejIa;ȅ7zl{gqC.Q*_qq^Qid֤AMQSNoؠc c@5^ZGÏ3L׮XJX!<`slJI/IrrRG4-3lcE$-t U߱uclfCnsGziʜ(G9DӅby3Kj>]n4+.VԠVw, _9>9u;*U|޵+"^2aL@sxA!aJ:I~q56fHgdoR;n0Zsw1Mχlv`=ƧDJ{mhCc{YqLn!۫]Mm_-yp,,})i܄qVo0 m,=ōQ_sSܻ:wɯ .EpG|KсwK$>fٷ;s-{7B!3P_.I"4㰏W +2>gXFo1sFf(=xmby xMt .@<̀np"T}P2(?Z#)-1ŭUNTFBLӨq %yo`Lk^C_w1,npo.y 4t6T]F6™YrzA۟v+"=94%'Q7C!|G&zM'ޤ. +*ng~?B=ω9r%Oڸ,u"Z(&[P[𪉚YrfÓ9x7O?m$SPS]w + IbMW`"y< P-,18|74Y_E ?s @Pn5'lqQЅlE ;E +*TE)+w|J)HPZH/kSU +]ֲ>|a<ӿػ m\$)hw&5]x7uUb"hyaV LqnY G{eO ~Hrq8K!•P jfe7(R4 SޮǪm'#ZxejSo!xfRMPw6]'t +^ 5Pz⎇jy4Hzccހ/J`F:_A9|JԢ!f.FHP`Hh|E!:dJuAY`Joeն!%3E83|0d8Ũ[-Oy6QuBhJ!߀0g@Ȼ#蝱#Y*>ʌEc +J&Ҙc(x2-LTH(+6@QAU,É8; F|QwP$x%hKQPP6v}\bozuG#<~p  ,qb}QLP⪢QBvzL>@Z߯6_f+$(6J- !%bz m}P,x2bIS?R!>\7*e g9-xz$붴 +eog'>ۛyBe ARB}gc< +M50лJFPdQp"`1)~lo(|HXe e^(Qs~1,BU?&1VGItj)#X=ݡ̲!!AG'ڲзGz9D((("rlx[p3z ɞB>< h+9 t?#x!pCxcԫ@<[*}ꅣA $++םVƝR/ ^eTRP=ɉnwrT1&Q|p $*QpAا]0-d)%vHrQNz)ElB/n~k5OP퉂גA}oDljA,QYe:+"()CIteb\XPBP1YV<[>ܞ?gWh +gy|AQ1\m!d.1&,U6QRfcSD5ٙr+ɋz Q'X|2%a]A!߱d z_/Y] zTbgs4Rʏ1Z`)1J 5X]X@t'aɬ(:pbn [9cBm#-z}%I%PȶEDv, A5;IaY\kN*6 -T՗^e7kf׹?1mku d~:(x?ϓqV/b洉rni_UJ!a5RW!g3s<l9t&E V,h`\ Y9m/Gh]JIhMP:Xic^u~WS@5q|="&Xy,Z[_ɴEݧ=%|W~>&NkˡϩI^bNEc*'G!G0p [fjQuF1~CNA8n;ws8۰TS4!E0JQN%m^_'"&+>혿UDmYR~~ +ۣfuX " ɖA7}MB1!9\юo3Ģavŗ`Pҏ6sߠ۶BZOչr3n{@l7^|4_| ikw9ZȶQci2ww\kk->CEnIC\GC"iMA!/E쭀]X6_7%M)^bp +YIm<B iK"I<0 ~}<w^x{Ձj߀#젚yztOhݠCjkxopMBv8AsYCҶv6]*_TE*xW>I"|oQqO^PW6 cs(i`A2`|w+[#yMwo8=+f0=~X@P)am^7[o.s w%Msvm9L'!#EHo!(;SfqYwBHV[ `*i5?81+Z1;DP/EY^rM2p/|Dqj´{P3}_ +UBo,?.|IeߟpY9Y7PZjC.;֦s Ĵ n;~Qx}R3Ciy SPS\ +XG\Ph|2%heѵ~E*Ip1p1/v yjV_3+FP%&9'0 +6\Q&TXCiMR" h L5N]\$2+*/(iKPXʼn9!^Tt`ByAx/5A[9jB>%QAU⠮}*^| aWxpq]Q^P  Ʀ~9qŴtk Hu"`bBgMC* +jp63ڔTx_xp TUP.7ckN~PUKIaDfBP\Pһ +[*%%Oȷ@yQH+S\P%00$e PmޕZT=tOh+ @қi?Twv@(.AmЈSq?|v+7g>+(s SK0h^&. +v%8_/ +%ݤ +sC(@< H}44@P0kX9#FJ _EVK42Z (ܔ>Ǚ8.}!xA%K% + v!Gż^xy@Duod41r7^(55qS[ +hGѴ/~X`JC%;n%!/*Iݶ_O 撞jaٸқ{#Bԩ"TP?B>&k%rwoX +j'TfRHP=RbnZkS6SXj ԕ%73 3inüௌTFw +!" [٭U*ͨ7μ-e=ruGY{? D[CSm[גJŇTݘn,q rߋ,e+?\VuufTاTHs cemsRnRfӅ j* + "yGp{Ի[ٹ'P$[!58C +@iTi,#߭m]~M*55fj>F{i/ON +;c$0C4ܹZzՍK@@#ƵP(y݌۶ZwXL#n;p_,'hQKA3"r1r7.b K lɜYz%="FI]4/@L 46qUc94̔Gz5'`oԬi4Ib0-'% lR",K!AME5v h)KHu +1"yA׭D\9g0&4V9uxo6-x +DsFB5**||&܇KbzCPpU8}ȇ ~  L )Z#ƆcnYΌ)XӝP+OJ(G4b/urn9݅4hp;7ID04bFp&v]A/ePC0p<)7n!`[%$þQGђhI/GT +C#jkonk, N5-YcX.Hv:C;;<RǪH +C Ȭ]NKߦm&HUED˜IBzY*@9p Y !~ڗDrW~#2PeDoX-l?RlҢEҮn>ƚhKX}:Qs_Zȏ\(<ΰC$~[;* ةw_c/y&.%"m wh)9pd7EzuzCY[C#தB^SI4OAiճ|dK|pi1u_JҌ U} 1UqE=7m[Bx8Yt<J.= +Z _IlaWCR 2!v"e  xPlX;[=|)Y*xa|ۢ,TC`*]3I gi!&_O'2(+0\itBtS'OJ5Vd\r/ 'eA]͡w WUu>/#S_Ž|.9##'ReJz+zcfnih>+0defy$"o v])R`>"Q IiCT&toz"ʇ϶meËYW=)Ds h={4l8A){,3G2?VCS :G΍bMK,gERs% +a?w^S"jmdt3"}G%~p$/^R"pzR/l/E!>H0̿ vMJ OEbf0r!L1ΘK9z!ⷫ ЪRr qPܻN&R2:̧[̇u&lCW"Qx3[:9X=c|_V_r+眜yе9Hd5F6q( yL[ 513pk`JzDޚ=eW=$u {cr*,hϟMƬ7/#>N|r鷬skEGvÏ`(yj=<\tӒӲ0B]L9VYUl#9 -StOO_;W->GeCluZ@/S 176O!t [W2+>|c0cV[|*K22-R+Ab͙LҬܝψSr_G hf +n-!*yLaP&8~f,WU2RUQr6Sv'w؎Vv8/QL,gb`F Mc<=&x-puF! 32-|]gcxFpQD}q/߲3ry87yZԆKO7rJCq" +jչ?ߡ?&cb#(+6o q7y#xE1BHWVq[e'F]tmMsKP!_Fe|\/"п|^dp?A!r/P\_IOwgƄ iI㞿xjB?PJ< +endstream +endobj +2533 0 obj << /Type /XObject /Subtype /Image @@ -75235,7 +77983,7 @@ endobj /Columns 1442 /Colors 3 >> -/SMask 2399 0 R +/SMask 2534 0 R /Length 274159 >> stream @@ -76174,7 +78922,7 @@ A O|$ݑ;A'c[q(%+k9j,pL73Ҁcef>2Cq@~=B2"=g,8i3T]zIMtUL` dIZq'6pED nڽ',dfH") (Qh0rY% endstream endobj -2399 0 obj +2534 0 obj << /Filter /FlateDecode /Type /XObject @@ -76194,7 +78942,7 @@ stream x1 0础^ݳh:xh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh,Ȳh /y endstream endobj -2400 0 obj +2535 0 obj << /Type /XObject /Subtype /Image @@ -76209,7 +78957,7 @@ endobj /Columns 1472 /Colors 3 >> -/SMask 2401 0 R +/SMask 2536 0 R /Length 89327 >> stream @@ -76500,7 +79248,7 @@ s CƑdCYO v| OC;>a3?I?A(Xs? 0- endstream endobj -2401 0 obj +2536 0 obj << /Filter /FlateDecode /Type /XObject @@ -76520,7 +79268,7 @@ stream xA 0U,8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D8@D]i endstream endobj -2402 0 obj +2537 0 obj << /Type /XObject /Subtype /Image @@ -76535,7 +79283,7 @@ endobj /Columns 323 /Colors 3 >> -/SMask 2403 0 R +/SMask 2538 0 R /Length 38003 >> stream @@ -76672,7 +79420,7 @@ i I)BRT߈嗛 vB.MW $qͧ0Mc|A cq:^04B9y9`[8|c&[tg1)j [4co<1u5&5n0起H4Hiq$$d C(t+֌[4=;cwvw8l%jEw_C.#] VbɺEEIsLd=q?WrzVڪQH|#᱋ cKbsiA3z~3ƷܦO&IV3~?bc.MdXc1 ޓoq1b|1bO" endstream endobj -2403 0 obj +2538 0 obj << /Filter /FlateDecode /Type /XObject @@ -76692,7 +79440,7 @@ stream xA 0C$Ul":>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaw5y endstream endobj -2404 0 obj +2539 0 obj << /Type /XObject /Subtype /Image @@ -76707,7 +79455,7 @@ endobj /Columns 1903 /Colors 3 >> -/SMask 2405 0 R +/SMask 2540 0 R /Length 744474 >> stream @@ -79462,7 +82210,7 @@ EDF 1P)XDdB4^W%#@@H=K{St*{{n{6y㛯X?ǟ~b\w]t#]re|૷f& ך'c‡6NxE̜OnShFŠ[+}[n]i ~Q.)ݟGgu7x'foӡFi8˳tzh߼͟8QqG oj4ݵ7ٵz~؟ݛ.MwŽW) u$5኉|$3Ar5Ws5Ws5srr! endstream endobj -2405 0 obj +2540 0 obj << /Filter /FlateDecode /Type /XObject @@ -79482,7 +82230,7 @@ stream x1 0GEDAY@-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[]HW endstream endobj -2406 0 obj +2541 0 obj << /Type /XObject /Subtype /Image @@ -79497,7 +82245,7 @@ endobj /Columns 1903 /Colors 3 >> -/SMask 2407 0 R +/SMask 2542 0 R /Length 430685 >> stream @@ -80998,7 +83746,7 @@ cI 1c cH+iv/#sܓ ZSwoL=pIq<.Vڄ<w}rw{q)t"Qbj)"F'1ZDmckI$Q*w޼~& FHp.=#=# & endstream endobj -2407 0 obj +2542 0 obj << /Filter /FlateDecode /Type /XObject @@ -81018,7 +83766,7 @@ stream x1 0GEDAY@-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z~ =@o[-z5 endstream endobj -2408 0 obj +2543 0 obj << /Type /XObject /Subtype /Image @@ -81033,7 +83781,7 @@ endobj /Columns 1500 /Colors 3 >> -/SMask 2409 0 R +/SMask 2544 0 R /Length 36662 >> stream @@ -81120,7 +83868,7 @@ M0 1Zx<.r0TVz-) 6]Dl^pX&WQr{ݻA9xƓeYQT:{rY,%ɬٯ!sJ9p8J7ZNS>VNG[8{̋:P&m{~2sߣo?Ȅsk>}=n9G t|s87oOL»pɑ);u/ֵ; >W4syۂo/k$:;yѽ]tZ~F2׻=0#0f˜(uU,HIuJ5xg ޸ٻlC!Tİ1{߀`fW|7_qЉ#CC Yc?,u+[C3ijuYl 5gB>58!/)uAXZN* yR3UexF`<뱩KtB18L:BQ2I/kD.٧ endstream endobj -2409 0 obj +2544 0 obj << /Filter /FlateDecode /Type /XObject @@ -81140,7 +83888,7 @@ stream x 0u%$= ;                                                                                                                                                                                                                                                                                                                                                                                                                  .0K endstream endobj -2410 0 obj +2545 0 obj << /Type /XObject /Subtype /Image @@ -81155,7 +83903,7 @@ endobj /Columns 1476 /Colors 3 >> -/SMask 2411 0 R +/SMask 2546 0 R /Length 215881 >> stream @@ -81949,7 +84697,7 @@ Fb EZ(JdJjͅwAw|jM˲|& Y77UI>~ܥ p'tsZ)Dvo5bx>0kn^*WZaa..~4n/9_30̌{r6u*W S.`K^˫ɍ= ?wgu;`ͽ1:9Tn77`Fw_Y><psxϔ[{.Mw#t)׈K򔛵}~>q;܈ S>V/;[yaAK6(ϩ|'-1a>gwן{LK: /cMe endstream endobj -2411 0 obj +2546 0 obj << /Filter /FlateDecode /Type /XObject @@ -81969,7 +84717,7 @@ stream xA 0U,ޙ8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@%M endstream endobj -2412 0 obj +2547 0 obj << /Type /XObject /Subtype /Image @@ -81984,7 +84732,7 @@ endobj /Columns 337 /Colors 3 >> -/SMask 2413 0 R +/SMask 2548 0 R /Length 79782 >> stream @@ -82219,7 +84967,7 @@ Bhww EQ),ժU.3Csj0\8k&NZ19(tZgR9X__>c׋ _̳L2ߨW3suE\\\\\\\\\\\\\\\\uכ稘cdO"pD16ess_s_s_s_} endstream endobj -2413 0 obj +2548 0 obj << /Filter /FlateDecode /Type /XObject @@ -82239,7 +84987,7 @@ stream x @@c{:;9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zshњ5Gk9Zsh/ endstream endobj -2414 0 obj +2549 0 obj << /Type /XObject /Subtype /Image @@ -82254,7 +85002,7 @@ endobj /Columns 1278 /Colors 3 >> -/SMask 2415 0 R +/SMask 2550 0 R /Length 32650 >> stream @@ -82324,7 +85072,7 @@ zL a͟/?3/dZ(w-Ʀ?]oLl-Kla'|9e'?8c3H;'ྯ4{';αxG]do̹~~ZE|}8SO}jL_̄AGxjG:/7;DRq,eCʿ\u24M0j׏lY=_|hMg0O,#Yߝwi7{B."_{f<8jZ~#VD`ȷWFZ endstream endobj -2415 0 obj +2550 0 obj << /Filter /FlateDecode /Type /XObject @@ -82344,7 +85092,7 @@ stream x1 0!cGzDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDe@QDO endstream endobj -2416 0 obj +2551 0 obj << /Type /XObject /Subtype /Image @@ -82359,7 +85107,7 @@ endobj /Columns 1563 /Colors 3 >> -/SMask 2417 0 R +/SMask 2552 0 R /Length 162082 >> stream @@ -82830,7 +85578,7 @@ s}7 ~ϩJA8rPgYmoUTko?GNN\Эs|(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o(o_ endstream endobj -2418 0 obj +2553 0 obj << /Type /XObject /Subtype /Image @@ -82865,7 +85613,7 @@ endobj /Columns 1597 /Colors 3 >> -/SMask 2419 0 R +/SMask 2554 0 R /Length 420470 >> stream @@ -84334,7 +87082,7 @@ Y [QHr-ޢ7sZ}cctG?Oal[wuKXS{3+i!MWWWKpdgwHw&BeKVBtMs endstream endobj -2419 0 obj +2554 0 obj << /Filter /FlateDecode /Type /XObject @@ -84354,7 +87102,7 @@ stream xA 0C^U,>t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@tƌ % endstream endobj -2420 0 obj +2555 0 obj << /Type /XObject /Subtype /Image @@ -84369,7 +87117,7 @@ endobj /Columns 273 /Colors 3 >> -/SMask 2421 0 R +/SMask 2556 0 R /Length 12650 >> stream @@ -84420,7 +87168,7 @@ EQT4 )IR(6 ISG$;;'==mq1Z= Ӕٽs߾EŅ+ASSo~~aXX}ƪYq_'.Q(2vn/..2W,~o}ԙ`ytEbصnEYז$qٸӧ9rtŅ7okd4;v{RCC]Ǚsګ8]XXl8/kPђj#-,cc8' f93+3bS0LwOOEyY#=< &j|5 99Y{ڷwwUUQ%̸'&&&)*FyAZdYF8ki:p`eej~.v~a>!PZ$]\Hp8\VVp/]8( `0??(3<芢8n0,n9 z=~db^\A~r((3nj_֡V-(/MQRRS5hZK? endstream endobj -2421 0 obj +2556 0 obj << /Filter /FlateDecode /Type /XObject @@ -84440,7 +87188,7 @@ stream xб@3,@?A.s.uw)Gʑr)Gʑr)Gʑr)Gʑr)Gʑr)Gʑr)Gʑr)Gʑr)Gʑr)Gʑr)Gʑr)Gʑr)Gʑr)Gʑr)Gʑr)Gʑr)Gʑr)Gʑr)Gʑr)Gʑr)Gʑr)Gʑr)Gʑr)Gʑr)Gʑr)Gʑr)Gʑr)Gʑr)Gʑr)Gʑr)Gʑr)Gʑr)Gʑr)Gʑr_V endstream endobj -2422 0 obj +2557 0 obj << /Type /XObject /Subtype /Image @@ -84455,7 +87203,7 @@ endobj /Columns 1204 /Colors 3 >> -/SMask 2423 0 R +/SMask 2558 0 R /Length 345407 >> stream @@ -85606,7 +88354,7 @@ b  뺎㤽$,`7MeY&Z?8gAE9n'QTգl[[YE~u[J$MźD"2u8$ʲ4֜fYfG.JmΣj4{;nG<u8)oy#4MFBWtONNt:][[LN'Qi42Ʋ4 q,FNҒRqصI4ٽ{޽[GٗtפeUF޻^8eڅ}ѓ]Ug}^UՅ_q6\'L|: @d-OxCpy0ߎ7C> -/SMask 2425 0 R +/SMask 2560 0 R /Length 346414 >> stream @@ -86865,7 +89613,7 @@ f ,]6R*6&s+nGJiEẮֺn?kZZV+a8v۲Zne3V9;;i=f75-!cwUZZ8R qdQzǏF#"ƕJe2>Fx/PHjƨR1JrQj]*ϋ8QJ ԲCY^2iGkmmlTUahh<omm +mG* !/I~?ķ,*%!bƐ"zẕ00X,!lDZ's)eQeRLeYh4>ʋ&oߙBy1L~^e8kWs'2cLӱm'>L:KYI|ruݕaax|]"i`Ydi>8h0vvv]VVzWWW^曯`?t\eߌ A穐Ń{=˲nݼl6Ȍׯ{[[( x¨^ێI"j4fff> -/SMask 2427 0 R +/SMask 2562 0 R /Length 426671 >> stream @@ -88408,7 +91156,7 @@ $R @D&R˲/^20⋧(RT.T{Lg2 `0 c!$߶WdMi0 ,`0D|'`0 `0+(%zLqjh6y`@Gsh`0 `|%(+#>۶ǩV `0 w!p>}Թ^!d. `0 a0 `0 NqL`0 `<0@L&PV`0 `0%PJ)X,z`0 `0(|~])ľ᯹`0 `|;`1 `0 x`0`0 `0 `0 x`0`0 `0 `0 x`0`0 `0J8#;`0 `<xw&2=ϻ˖ `0 `삹2 `0 D&`0 `0Ld2 `0 D&`0 `0Ld2 `0 D&`0 `0w+a!DP`0 `+ endstream endobj -2427 0 obj +2562 0 obj << /Filter /FlateDecode /Type /XObject @@ -88428,7 +91176,7 @@ stream xA @g-!.^{ò3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H03 ̀3 H8h endstream endobj -2428 0 obj +2563 0 obj << /Type /XObject /Subtype /Image @@ -88443,7 +91191,7 @@ endobj /Columns 1560 /Colors 3 >> -/SMask 2429 0 R +/SMask 2564 0 R /Length 49312 >> stream @@ -88811,7 +91559,7 @@ cMX$ $)((((((((((((((((F? endstream endobj -2429 0 obj +2564 0 obj << /Filter /FlateDecode /Type /XObject @@ -88831,7 +91579,7 @@ stream xձ@3:a 1@a 1@a 1@a 1@a 1@a 1@a 1@a 1@a 1@a 1@a 1@a 1@a 1@a 1@a 1@a 1@a 1@a 1@a 1@a 1@a 1@a 1@a 1@a 1@a 1@a 1@a 1@a 1@a 1@a / endstream endobj -2430 0 obj +2565 0 obj << /Type /XObject /Subtype /Image @@ -88846,7 +91594,7 @@ endobj /Columns 287 /Colors 3 >> -/SMask 2431 0 R +/SMask 2566 0 R /Length 14502 >> stream @@ -88904,7 +91652,7 @@ eXRR 0'Z 𚚪LNxGYO,0$0 We%{p/) h,.`0GO endstream endobj -2431 0 obj +2566 0 obj << /Filter /FlateDecode /Type /XObject @@ -88924,7 +91672,7 @@ stream x1 0AWY:s4?͟Oi4?͟Oi4?͟Oi4?͟Oi4?͟Oi4?͟Oi4?͟Oi4?͟Oi4?͟Oi4?͟Oi4?͟Oi4?͟Oi4?͟Oi4?͟Oi  endstream endobj -2432 0 obj +2567 0 obj << /Type /XObject /Subtype /Image @@ -88939,7 +91687,7 @@ endobj /Columns 1561 /Colors 3 >> -/SMask 2433 0 R +/SMask 2568 0 R /Length 49457 >> stream @@ -89126,7 +91874,7 @@ p \8D"H$#Euk\[[;o^Aox}EKq,r2DrpΟ>=wQqѲ\v;KayI$Dr "c4P䝚't@)W.j`84lm]ɧ/yy_^NK"smK m<!c %D#y1hp8.am[SU]ׄv@MUBo˯K}t勁[[[G?z-0XRJ<9V"H$Sáa/K6A]/|;'-{/Zk 9O(1㾫z=uCkZVu]~ !,v"G RV·\36yi쫪jEKtT,^ q KRTu-H$WDDDqCʘB@մkzZ & Wla!ij#CUJiyN'~Ծ$D"H$D"H$ɷ/)mH$D"H$D"HC$D"H$D"H$"}ID"H$D"H$y$D"H$D"H$ɼH_D"H$D"H$d^/I"H$D"H$D2/җ$H$D"H$D"uw9aH$D"H$D"H.BԕY$˲yH$D"H$D"H./"$D"H$D"H$"KH$D"H$D"̋%I$D"H$D"HE$D"H$D"H$"}ID"H$D"H$y$D"H$D"H$ɼH_D"H$D"H$d^v1 endstream endobj -2433 0 obj +2568 0 obj << /Filter /FlateDecode /Type /XObject @@ -89146,7 +91894,7 @@ stream xձ03^\Эs|(gr(gr(gr(gr(gr(gr(gr(gr(gr(gr(gr(gr(gr(gr(gr(gr(gr(gr(gr(gr(gr(gr(gr(gr(gr(gr(gr(gr(gr(gr(g:\l endstream endobj -2434 0 obj +2569 0 obj << /Type /XObject /Subtype /Image @@ -89161,7 +91909,7 @@ endobj /Columns 321 /Colors 3 >> -/SMask 2435 0 R +/SMask 2570 0 R /Length 6346 >> stream @@ -89186,7 +91934,7 @@ w huvv֜]᭰?  xCa0oh74  xCa0oh74  xCa0oh74  x[oDb +Htk%Iz2N 6(^M&Svp=: -˝ l \~V3ZjQ0oh74  Ғ$e2=Xl) Fqm띇zl:xCa0oh74  xCa0oh74  xCa0o-U* W|g<p^74  xCa0oh74 SjE endstream endobj -2435 0 obj +2570 0 obj << /Filter /FlateDecode /Type /XObject @@ -89206,7 +91954,7 @@ stream xA 0CUl"9``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````u^ endstream endobj -2436 0 obj +2571 0 obj << /Type /XObject /Subtype /Image @@ -89221,7 +91969,7 @@ endobj /Columns 1594 /Colors 3 >> -/SMask 2437 0 R +/SMask 2572 0 R /Length 559350 >> stream @@ -91239,7 +93987,7 @@ D B8w xMtgr<{ŋ55^ΫQ\B4f endstream endobj -2437 0 obj +2572 0 obj << /Filter /FlateDecode /Type /XObject @@ -91259,7 +94007,7 @@ stream xA 0C^U,(~cD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dD@dDt  endstream endobj -2438 0 obj +2573 0 obj << /Type /XObject /Subtype /Image @@ -91274,7 +94022,7 @@ endobj /Columns 1597 /Colors 3 >> -/SMask 2439 0 R +/SMask 2574 0 R /Length 567282 >> stream @@ -93292,7 +96040,7 @@ T 3Ý;Sۗb}_B_>Q?|9iFswwG1rLI^`=wxu:U7;t)WXai1鴳@ctf} ^Dmݼg,lr$݌H endstream endobj -2439 0 obj +2574 0 obj << /Filter /FlateDecode /Type /XObject @@ -93312,7 +96060,7 @@ stream xA 0C^U,>t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@w? # endstream endobj -2440 0 obj +2575 0 obj << /Type /XObject /Subtype /Image @@ -93327,7 +96075,7 @@ endobj /Columns 1469 /Colors 3 >> -/SMask 2441 0 R +/SMask 2576 0 R /Length 247256 >> stream @@ -94199,7 +96947,7 @@ S IN]rELn2:v_x\|u7[r7pI/;5fv9>ToEn&,|*/$UL`rQ5+C7w+/ 0ܣt.6 ]8EwYE'!!9w3={xdɒk_&r5w5?03 endstream endobj -2441 0 obj +2576 0 obj << /Filter /FlateDecode /Type /XObject @@ -94219,7 +96967,7 @@ stream xA 0U,r7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{7@{] endstream endobj -2442 0 obj +2577 0 obj << /Type /XObject /Subtype /Image @@ -94234,7 +96982,7 @@ endobj /Columns 682 /Colors 3 >> -/SMask 2443 0 R +/SMask 2578 0 R /Length 40407 >> stream @@ -94357,7 +97105,7 @@ A1 4j?Ps @59i Zlq_+c*i endstream endobj -2443 0 obj +2578 0 obj << /Filter /FlateDecode /Type /XObject @@ -94377,7 +97125,7 @@ stream xA 0?U,(8U*V%ªDXaU"JU*V%ªDXaU"JU*V%ªDXaU"JU*V%ªDXaU"JU*V%ªDXaU"JU*V%ªDXaU"JU*V%ªDXaU"JU*V%ªDXaU"JU*V%ªDXaU"JU*V%ªDXaU"JU*V%ªDXaU"JU*V%ªDXaU"JU*V%ªDXaU"JU*V%ªDXaU"JU*V%ªDXaU"JU*V%ªDXaU"JU*V%ªDXaU"JU*V%ªDXaU"JU*V%ªDXaU"JU*V%ªDXaU"JU*V%ªDXaU"JU*V%ªDXaU"JU*V%ªDXaU"JU*V%ªDXaU"JU*V%ªDXaU"JU*V%ªDXaU"JU*V%ªDXaU"JU*V%ªDXaU"JU*V%ªDXaU"JU*V%ªDXaU"JU*V%ªDXaU"JU*V%ªDXaU"JU*V%ªDXaU"JU*V%ªDXaU"JU*V%ªDXaU"JU*V%ªDXaU"JU*V%ªDXaU"JU*V%ªDXaU"JU*V%ªDXaU"JU*V%ªDXaU"JU*V%ªDXaU"JU*V%ªDXaU"JU*V%ªD\* endstream endobj -2444 0 obj +2579 0 obj << /Type /XObject /Subtype /Image @@ -94392,7 +97140,7 @@ endobj /Columns 685 /Colors 3 >> -/SMask 2445 0 R +/SMask 2580 0 R /Length 27431 >> stream @@ -94484,7 +97232,7 @@ n_N "##!B^8͗h^ȭB}H*B!0 B sB!0 BR\Bo endstream endobj -2445 0 obj +2580 0 obj << /Filter /FlateDecode /Type /XObject @@ -94504,7 +97252,7 @@ stream xA 0?U,8[p+nítV:J[p+nítV:J[p+nítV:J[p+nítV:J[p+nítV:J[p+nítV:J[p+nítV:J[p+nítV:J[p+nítV:J[p+nítV:J[p+nítV:J[p+nítV:J[p+nítV:J[p+nítV:J[p+nítV:J[p+nítV:J[p+nítV:J[p+nítV:J[p+nítV:J[p+nítV:J[p+nítV:J[p+nítV:J[p+nítV:J[p+nítV:J[p+nítV:J[p+nítV:J[p+nítV:J[p+nítV:J[p+nítV:J[p+nítV:J[p+nítV:J[p+nítV:J[p+nít\ endstream endobj -2446 0 obj +2581 0 obj << /Type /XObject /Subtype /Image @@ -94519,7 +97267,7 @@ endobj /Columns 702 /Colors 3 >> -/SMask 2447 0 R +/SMask 2582 0 R /Length 27768 >> stream @@ -94611,7 +97359,7 @@ q {UBs("Y e!fb!ψF!B%B`t@!P 0: BB!T!*FBB!J!B%& endstream endobj -2447 0 obj +2582 0 obj << /Filter /FlateDecode /Type /XObject @@ -94631,7 +97379,7 @@ stream xA 0U,:} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ0f_K} /a%̾ٗ } endstream endobj -2448 0 obj +2583 0 obj << /Type /XObject /Subtype /Image @@ -94646,7 +97394,7 @@ endobj /Columns 263 /Colors 3 >> -/SMask 2449 0 R +/SMask 2584 0 R /Length 17224 >> stream @@ -94719,7 +97467,7 @@ nF{x X|m{==>by^kHD`Fs>:%z<ćC|!>ćC|!>ćC|!>ćC|!>ćC|!>ćC|!>ćC|!>ćC|!>ćC|!>ćC|!>ćC|!>ćC|!>ćC|!>ćC|!>ćC|!>ćC|!>ćC|!>ćC|!>ćC|!>ćC|!>ćC|!>ćC|!>ćC|!>ćC|!>ćC|!>ćC|!>ćC|!>ćC|!>ćC|!>ćC|!>ćC|!>ćC|!>ćC|!>ćC|!>ć\1 endstream endobj -2450 0 obj +2585 0 obj << /Type /XObject /Subtype /Image @@ -94754,7 +97502,7 @@ endobj /Columns 384 /Colors 3 >> -/SMask 2451 0 R +/SMask 2586 0 R /Length 63980 >> stream @@ -94955,7 +97703,7 @@ Vի B賆N_10sp!2@B B(e0B)J P`!R!2?GJ endstream endobj -2451 0 obj +2586 0 obj << /Filter /FlateDecode /Type /XObject @@ -94976,7 +97724,7 @@ x zy'5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5k*-' endstream endobj -2452 0 obj +2587 0 obj << /Type /XObject /Subtype /Image @@ -94991,7 +97739,7 @@ endobj /Columns 1901 /Colors 3 >> -/SMask 2453 0 R +/SMask 2588 0 R /Length 117846 >> stream @@ -95317,7 +98065,7 @@ O^ ݣ$J$-t^Cl;~yc_쪦֬zb U(;ס?73nÂ͛:LxwSSS3F1t=Ì?3q#?-]fo?ýf=*pC;,Ќ O@BßiϘsHρ<ׄ߾u =<'~K?UQQӷlw+n9쿯8|Og&i% endstream endobj -2453 0 obj +2588 0 obj << /Filter /FlateDecode /Type /XObject @@ -95337,7 +98085,7 @@ stream xA 0CBBZmRu|mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mPs[-jn 5@mP7$G endstream endobj -2454 0 obj +2589 0 obj << /Type /XObject /Subtype /Image @@ -98398,7 +101146,7 @@ M wNL@*R_E6A#i2jNhj?7|E(ShGj?((oU&E5iۨizAZ(f[#S@ HѻmMnZoPM}֢E ERR?ޠQMA#mnBRfԛjm:m6ڂrI4P endstream endobj -2455 0 obj +2590 0 obj << /Type /XObject /Subtype /Image @@ -102071,7 +104819,7 @@ P rj#=_ޡwlehv|z%^~emLcnҤnM۾*@̨&?~dҪŸ c?})i8Q4>jjfv[妏w}ij{f$ٹ7S~F6ݫmYmwTՠ E1 endstream endobj -2456 0 obj +2591 0 obj << /Type /XObject /Subtype /Image @@ -102086,7 +104834,7 @@ endobj /Columns 330 /Colors 3 >> -/SMask 2457 0 R +/SMask 2592 0 R /Length 11173 >> stream @@ -102115,7 +104863,7 @@ J,g} BZ^뺾WJaaZiJy^/Z$֦m[0:sZ[Ԙ{A1F!sԔ[ 6&ŠsI[ =?aOY摗R]/(-xl[l켚)|k ҉L#CHJ-,/&}JJ+%ONTbv:.  Ƃ1!$`WB_p:~^{kRrcF *sF&=RͱpoUB2 eXݴQ7S<d8~P]8Nb3ćl1śa@VB$MoN)j _>ɉ.JcpZW~ (Oc p@=z@aJDA\ ١FPTNeM. k! ݄nAᯆtL l2Bxc 0#ύ {7MT7Sqy}Xzys<<'!ohK{=WRb^}A;_o4c}Z|;?# 4b| 'o8|ZޏI}Ëw@l_8@ۑ S3{+[? CҟtQ^S?7墽/4y&rE>'?/\}29?E~ "?\\kO+x_"?\}u;%8 endstream endobj -2457 0 obj +2592 0 obj << /Filter /FlateDecode /Type /XObject @@ -102135,7 +104883,7 @@ stream x @@c{:VfX2ceʌ+3VfX2ceʌ+3VfX2ceʌ+3VfX2ceʌ+3VfX2ceʌ+3VfX2ceʌ+3VfX2ceʌ+3VfX2ceʌ+3Vf.R endstream endobj -2458 0 obj +2593 0 obj << /Type /XObject /Subtype /Image @@ -102150,7 +104898,7 @@ endobj /Columns 312 /Colors 3 >> -/SMask 2459 0 R +/SMask 2594 0 R /Length 6008 >> stream @@ -102181,7 +104929,7 @@ Q uL~/|{B"D!B"D!B"D!B"D!B ^ endstream endobj -2459 0 obj +2594 0 obj << /Filter /FlateDecode /Type /XObject @@ -102201,7 +104949,7 @@ stream xA 0>UlϢ8~e\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\tZ} endstream endobj -2460 0 obj +2595 0 obj << /Type /XObject /Subtype /Image @@ -102216,7 +104964,7 @@ endobj /Columns 270 /Colors 3 >> -/SMask 2461 0 R +/SMask 2596 0 R /Length 4691 >> stream @@ -102238,7 +104986,7 @@ S8 w?ݢA ?Km9ir S#p |>nzp]W`020p4~p ?{bh4J4FѣoA~Ȧ@,4hέᝀyO=X Bdgxi:`0F,0 SZ678{18{SKUa͠0{)GY a A,]T:+U9Iqk«ӧE΋"zM6 H$(^+А^JA E~nbw#Fu/8$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$_- endstream endobj -2461 0 obj +2596 0 obj << /Filter /FlateDecode /Type /XObject @@ -102258,7 +105006,7 @@ stream x1 0g8*X6ZbGvaGvaGvaGvaGvaGvaGvaGvaGvaGvaGvaGvaGvaGvaGjw endstream endobj -2462 0 obj +2597 0 obj << /Type /XObject /Subtype /Image @@ -102273,7 +105021,7 @@ endobj /Columns 773 /Colors 3 >> -/SMask 2463 0 R +/SMask 2598 0 R /Length 149970 >> stream @@ -102773,7 +105521,7 @@ kݺ U&5VE R5bU0]iحV+叏 t:;ٞ;{mqSd* 9oڥzӲzA;]s$ =2 J??͝lh> -/SMask 2465 0 R +/SMask 2600 0 R /Length 114393 >> stream @@ -103317,7 +106065,7 @@ w <'X EZ>,27?; B*""" @* B*""" @* B*""" @* B*""" @* B*""" @* B*""" @* B*""" @* B*""" @* B*""" @* B*""" @* B*""" @* B*""" @* B*""" @* B*""" @* "~\N&,˾|s^)%@*/bB|kRo޼A*;csj2|4}m6}1??<&ݝ endstream endobj -2465 0 obj +2600 0 obj << /Filter /FlateDecode /Type /XObject @@ -103337,7 +106085,7 @@ stream xA χ Hh5xP>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>T endstream endobj -2466 0 obj +2601 0 obj << /Type /XObject /Subtype /Image @@ -103352,7 +106100,7 @@ endobj /Columns 766 /Colors 3 >> -/SMask 2467 0 R +/SMask 2602 0 R /Length 121085 >> stream @@ -103742,7 +106490,7 @@ JI :ԚM}_ىӫqY*:gNZ8aE>ӂLcojs/5]Lz7z&M٢n 7rSs'!21!J) j3!1qaG3O1{^}宛g:!γ675eGPB -XA/J>k]q (óX#8g.&KJsXjkp}P\>䅟ݢ:VAKC/ۃ@>|JSJ"vf~\Ay{B%_4z_'\[=|>'O~[G_E??_Z?<;+'Z> 8c|=g)U 91NsZ\I9H k_kLJc7N#?+>=&&e^?/'}>镅1b!r$dZ_3W*}O+BՆPD}ޭL,>o+J>? 45Q>\ }"@pE_Gie{I]?k+Oy6 d /R +WH>\ }"@pEx!/ PUR N)>^>]?|nooyf׶E0?pu }޾?Ku]}͛?m۶w|_d۶7m:^TU|(s!R[/4/HmڶKP'WH>\ }"@pE+WH>\ }"@pE+WH>\ }"@pE+WH>\ }"@pE+WH>\ }"@pE+WH>\ }"@pE+WH>\ }"@pE+WH>\ }"@pE+WH>\ }"@pE+WH>\ }"@pE+WH>\ }"@pE+WH>\ }"@pE+W|ڶUJk_>B?3@)" }1&Xk^[ 6g>\ }" endstream endobj -2467 0 obj +2602 0 obj << /Filter /FlateDecode /Type /XObject @@ -103762,7 +106510,7 @@ stream x1 0!cG=z@='ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0fO ?a'ٟ0f>k endstream endobj -2468 0 obj +2603 0 obj << /Type /XObject /Subtype /Image @@ -103777,7 +106525,7 @@ endobj /Columns 901 /Colors 3 >> -/SMask 2469 0 R +/SMask 2604 0 R /Length 3790 >> stream @@ -103812,7 +106560,7 @@ x @&}L(Q2dGȤI d:}M.ޏI V endstream endobj -2469 0 obj +2604 0 obj << /Filter /FlateDecode /Type /XObject @@ -103832,7 +106580,7 @@ stream x1 0 }:[z. Bj. Bj. Bj. Bj. Bj. Bj. Bj. Bj. Bj. Bj. Bj. Bj. Bj. Bj. Bj. Bj. Bj. Bj. Bj. Bj. Bj. Bj. Bj. Bj. Bj. Bj. Bj. Bj. Bj. Bj. Bj. Bj. Bj. Bj. Bj. Bj. Bj. Bj. Bj. Bj. Bj. Bj. Bj. Bj. Bj. Bj. Bj. Bj. endstream endobj -2470 0 obj +2605 0 obj << /Type /XObject /Subtype /Image @@ -103847,7 +106595,7 @@ endobj /Columns 847 /Colors 3 >> -/SMask 2471 0 R +/SMask 2606 0 R /Length 5720 >> stream @@ -103864,7 +106612,7 @@ Sɛ/ ^[üRI 6k:ݏaP+ѭ[7J}k=†ݐgHLMh}{}n fL{1c@̘bƴ3=ѷ?QRSIUHw3O^R\}+7۾uʂ{Pͧz+w밷\*̌* |}b-)=1Či fL{1cЖ endstream endobj -2471 0 obj +2606 0 obj << /Filter /FlateDecode /Type /XObject @@ -103885,7 +106633,7 @@ x $= ?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOйzg endstream endobj -2472 0 obj +2607 0 obj << /Type /XObject /Subtype /Image @@ -103900,7 +106648,7 @@ endobj /Columns 770 /Colors 3 >> -/SMask 2473 0 R +/SMask 2608 0 R /Length 119052 >> stream @@ -104402,7 +107150,7 @@ V p4$<cy6 :==5i:OOJ>gà?_3^Iqjà?}r| GEeA@= _P~MP)aA8P@AaA8P@AaA8P@AaA8P@AaA8P@AaA8P@AaA8P@AaA8P@AaA8P@AaA8P@AaA8P@AaA8P@AaA8P@AaA8P@AaA8P@AaA8P@AaA8P@AaA8P@AaA8P@AaA8P@AaA8P@AaA8P@AaA8P@AaA8P@AaA8P@AaA8P@AaA8P@o}~C1*MS0c_W[ 8 0ƄzR~>oRp_o} /?q endstream endobj -2473 0 obj +2608 0 obj << /Filter /FlateDecode /Type /XObject @@ -104422,7 +107170,7 @@ stream x1 0!cG}z@] Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@& endstream endobj -2474 0 obj +2609 0 obj << /Type /XObject /Subtype /Image @@ -104437,7 +107185,7 @@ endobj /Columns 768 /Colors 3 >> -/SMask 2475 0 R +/SMask 2610 0 R /Length 108398 >> stream @@ -104932,7 +107680,7 @@ e2 >4Om߽n뺞N\t:=#t:f<Ғ|ZA6l6d2YO`P. S8 LtzH$~b8bəNs|||ttpWߢZvyI.˷:?aՃ. $ihT*n|FyF!K^yHRbtjSoŒL&Raw=#ouvv/p+{&BzMѨiӵZMӴɼlJ8Hig0DZF\Jeő'JlptIJ徭Rz%%>6B4zT*]Yj=Nsrr2fƖJ[& CPuY6o^Rpn&BVq&V[TyHד[2iI\rs)U'_f5M;?{_JLj)ɝRގ9̷Y$aK98?S!7>T<==@&wqkhffF-SB?w6dIla19(=C8g~D]cg>Ic}wr@@9 P(C!r@@9 P(C!r#^s8>o0[k8N:==ܫQhee믿pfu TvϷLjF~ޚg333evvb|jTvޚp?C!r@@9 P(C!r@@9 P(C!r@@9 P(C!r@@9 P(C!r@@9 P(C!r@@9 P(C!r@@9 P(C!r@@9 P(C!r@@9 P(C!r@@9 P(C!r@@9 P(C!r@@9 P(C!r@@9 P(C!r`iZ-g0D"^g2>v[I!gzzzffnJnLt\mWA{5g>~F0tUiZ&izzou_"n<Af endstream endobj -2475 0 obj +2610 0 obj << /Filter /FlateDecode /Type /XObject @@ -104952,7 +107700,7 @@ stream x1 0!cG}z@M 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i 4f @H3i  endstream endobj -2476 0 obj +2611 0 obj << /Type /XObject /Subtype /Image @@ -104967,7 +107715,7 @@ endobj /Columns 775 /Colors 3 >> -/SMask 2477 0 R +/SMask 2612 0 R /Length 104078 >> stream @@ -105420,7 +108168,7 @@ N@C {%$ -@nocx pE+(W0\@" WP`"rE+\pE+(W0\@" WP`"rE+\pE+(W0\@" WP`"rE+\pE+(W0\@" WP`"rE+\pE+(W0\@"}>|>zmsEa~O-q۶-u߯1npu]C endstream endobj -2477 0 obj +2612 0 obj << /Filter /FlateDecode /Type /XObject @@ -105440,7 +108188,7 @@ stream xA χ Hh5xP>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|(@P>|U? endstream endobj -2478 0 obj +2613 0 obj << /Type /XObject /Subtype /Image @@ -105455,7 +108203,7 @@ endobj /Columns 770 /Colors 3 >> -/SMask 2479 0 R +/SMask 2614 0 R /Length 104505 >> stream @@ -105873,7 +108621,7 @@ S \Px>gv 0M88k8ź˲RJ) endstream endobj -2479 0 obj +2614 0 obj << /Filter /FlateDecode /Type /XObject @@ -105893,7 +108641,7 @@ stream x1 0!cG}z@] Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q YJ{ endstream endobj -2480 0 obj +2615 0 obj << /Type /XObject /Subtype /Image @@ -105908,7 +108656,7 @@ endobj /Columns 770 /Colors 3 >> -/SMask 2481 0 R +/SMask 2616 0 R /Length 119685 >> stream @@ -106415,7 +109163,7 @@ A~ AA. *u?{-4M2A_99kA7Gk2A!J)cLk`A7G)E^  O- \((AD>| AA.'?/٫BAy_iQW| endstream endobj -2481 0 obj +2616 0 obj << /Filter /FlateDecode /Type /XObject @@ -106435,7 +109183,7 @@ stream x1 0!cG}z@] Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 g,@q Y8 0x endstream endobj -2482 0 obj +2617 0 obj << /Type /XObject /Subtype /Image @@ -106450,7 +109198,7 @@ endobj /Columns 767 /Colors 3 >> -/SMask 2483 0 R +/SMask 2618 0 R /Length 108864 >> stream @@ -106826,7 +109574,7 @@ D endstream endobj -2483 0 obj +2618 0 obj << /Filter /FlateDecode /Type /XObject @@ -106846,7 +109594,7 @@ stream x1 0!cG=z@E2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)?e2SO)2, endstream endobj -2484 0 obj +2619 0 obj << /Type /XObject /Subtype /Image @@ -106861,7 +109609,7 @@ endobj /Columns 777 /Colors 3 >> -/SMask 2485 0 R +/SMask 2620 0 R /Length 110124 >> stream @@ -107317,7 +110065,7 @@ c? )J_?SP?k endstream endobj -2485 0 obj +2620 0 obj << /Filter /FlateDecode /Type /XObject @@ -107337,7 +110085,7 @@ stream x10axtS% ;('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8 0Nr('8> endstream endobj -2486 0 obj +2621 0 obj << /Type /XObject /Subtype /Image @@ -107352,7 +110100,7 @@ endobj /Columns 1280 /Colors 3 >> -/SMask 2487 0 R +/SMask 2622 0 R /Length 81155 >> stream @@ -107617,7 +110365,7 @@ e ::UU{eo޲Fcb t endstream endobj -2487 0 obj +2622 0 obj << /Filter /FlateDecode /Type /XObject @@ -107637,7 +110385,7 @@ stream x1 0!cGz4-d e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@W endstream endobj -2488 0 obj +2623 0 obj << /Type /XObject /Subtype /Image @@ -107652,7 +110400,7 @@ endobj /Columns 1172 /Colors 3 >> -/SMask 2489 0 R +/SMask 2624 0 R /Length 17657 >> stream @@ -107718,7 +110466,7 @@ G ` !B!qR endstream endobj -2489 0 obj +2624 0 obj << /Filter /FlateDecode /Type /XObject @@ -107738,7 +110486,7 @@ stream x1 0^ݳ:))bJ@))bJ@))bJ@))bJ@))bJ@))bJ@))bJ@))bJ@))bJ@))bJ@))bJ@))bJ@))bJ@))bJ@))bJ@))bJ@))bJ@))bJ@))bJ@))bJ@))bJ@))bJ@))bJ@))bJ@))bJ@))bJ@ endstream endobj -2490 0 obj +2625 0 obj << /Type /XObject /Subtype /Image @@ -107753,7 +110501,7 @@ endobj /Columns 1848 /Colors 3 >> -/SMask 2491 0 R +/SMask 2626 0 R /Length 539454 >> stream @@ -109464,7 +112212,7 @@ A Ra+FsGQ;ZDdH(d,!p}|Dz5(0+I!=P,bЊ(aCڔl,@L99O#aXN\',;̙u(s;haD"ip8:2pY/7mלv P&Vdwbd /p.C 9<6rhWȤXy8ԸquW c"uͽg$Jcm Qr0{GJ_@DRHҥpp?J)Sݐ1/gl$T]KT0 1桋!ehH$92DK) Zg5 p "ȑy DD$|9#H3 R *s@$Xkp.9 m9m4RƆ#^fJtg2;KLH `Od|vVWD;̈dke)th &NMOo vDD.Z c]olᛴY١̱yo2u:_[3i&C$2~\ yG4 endstream endobj -2491 0 obj +2626 0 obj << /Filter /FlateDecode /Type /XObject @@ -109484,7 +112232,7 @@ stream x1 0g.B*طpk' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@p7 endstream endobj -2492 0 obj +2627 0 obj << /Type /XObject /Subtype /Image @@ -109499,7 +112247,7 @@ endobj /Columns 1840 /Colors 3 >> -/SMask 2493 0 R +/SMask 2628 0 R /Length 515273 >> stream @@ -111186,7 +113934,7 @@ t ADidV)אRys Fǹ J,T'mU;uD5JkBɔ rj+תmMDd7+0`)66m:m?hG^ƫhO~Ui}]f~^s^6$ܩ׵͹MYgꜭZnž0/ :C9t1 endstream endobj -2493 0 obj +2628 0 obj << /Filter /FlateDecode /Type /XObject @@ -111206,7 +113954,7 @@ stream x1 0g>B*طp^ 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L P endstream endobj -2494 0 obj +2629 0 obj << /Type /XObject /Subtype /Image @@ -111221,7 +113969,7 @@ endobj /Columns 1834 /Colors 3 >> -/SMask 2495 0 R +/SMask 2630 0 R /Length 532957 >> stream @@ -112938,7 +115686,7 @@ Cʈ$ ~sHޢ ,/x݀.9ܼKW)U%7®2D y^|*\/> -/SMask 2497 0 R +/SMask 2632 0 R /Length 539494 >> stream @@ -114747,7 +117495,7 @@ r #I#F9Ǎk6<]E圦;pSѺ uh}r @2 h `d RG"tmb3FDtIM Qr0k?jAI!@"ѫKU5(LBƸC1"3ee0ĸI!eD$<"CΥAGsnA$92Bt!dL.7^X2 $9cč'k4r%rn@h97V)a|b;3k{͇MƚRs2rZM-+ۦm7ʍׯΈe7S@i/RM0Zmt>LGNFkN~MIc]j~d6s]Y ׶7]HꜮ5OaGAGXt2 ZldA4sEdqR3L"ZO5I$@"4gL!BI $.BF Й*| \!C7NI'WJArV)"ł$ 3 n5`pRJÌH5muL56ɕB$n pt5S""MY%k4$.-)+[.4rkM)K$~ԏru)nX ).PHWMn\ca=;c s>w隁smF;pl&rnH,7>֥VGFϖ}WuX8Rڤ٣cMʄAde6 2 "uxQ  PLHRb+u=:$^望zӫAG,)tF<….k-k_rRζr7rqS`悈R}luNrorS.@O;dRzG\;My:9eM%+'#nK䶢-o´6$[ȵ{hӏM75P &2 2W* 2 2Td3$A埴"Z*Ƥ;æ霣%rf!ݠ0LcNr\bt.7U&mE*7]?jkR܎õmԣ-:-9ոP.0$"i3t4[n(ޅ!yuu&~2 27{4h endstream endobj -2497 0 obj +2632 0 obj << /Filter /FlateDecode /Type /XObject @@ -114767,7 +117515,7 @@ stream xA 0~U, 8 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4 g@x&4^ endstream endobj -2498 0 obj +2633 0 obj << /Type /XObject /Subtype /Image @@ -114782,7 +117530,7 @@ endobj /Columns 1845 /Colors 3 >> -/SMask 2499 0 R +/SMask 2634 0 R /Length 539274 >> stream @@ -116553,7 +119301,7 @@ B Z~Jȵ9FPiڳ.127!s8ٖk;ntWvr 9.V$ rc:Z7|컪g>=`iLιNۤLdAg3 2Ƞ.0hj@ )YR*R!".gwͯC7\NI` HvY\r+M );k "ulr[or-ɝ]p)z#RKyBpӼIpKrӵ@d bsGc0mIr#xӵvqfVdA;}2 2 +!'(f!IH1+$ĄҊ\Nk59GG:̚C.&D a~Ȝȵn/bt.תswM׏Zn#pm-z#\!#:[MmI"6CG嶻]r7]\m, 2 dAdAdAdAdAXثd{ֲKz݃L-k2uȔm֢`Ӷ$!Q MЊtrvDmF>auCspmyھ$%krn\UbvC~۝/H9w̍SYn;p;}Xs~䜛!$7UV=Mo2EadNL| gXdӂ9L9%Yi`(/O<5*ZtrUnhw4gʍrmVzGuv%"+VcSK;[榃`m~m;,gr׶5bsr2Y[Iw(mÖktڢs;r#:µU9Զ">萛nOu֌8Z6q~`f=Ad/l endstream endobj -2499 0 obj +2634 0 obj << /Filter /FlateDecode /Type /XObject @@ -116573,7 +119321,7 @@ stream xA 0~U, 9 k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T k@P&T ˱ endstream endobj -2500 0 obj +2635 0 obj << /Type /XObject /Subtype /Image @@ -116588,7 +119336,7 @@ endobj /Columns 513 /Colors 3 >> -/SMask 2501 0 R +/SMask 2636 0 R /Length 19372 >> stream @@ -116653,7 +119401,7 @@ OEL %斒ɹXуƗ*t]36F$x\%1%r`|xA|MN,.W[rҥ7AЮ~ 6A9ߌCAO~U(7~7R o??9 _*A7O]U $w+m i+xR& AB$  .hAN x |{ rZ A? B rv@mG '6Ap׵"hA<|ۍJ8JgCA<gJ2g?;oI"/ /hAڗf endstream endobj -2501 0 obj +2636 0 obj << /Filter /FlateDecode /Type /XObject @@ -116673,7 +119421,7 @@ stream x1 0!cG=zX:9us@P:9us@P:9us@P:9us@P:9us@P:9us@P:9us@P:9us@P:9us@P:9us@P:9us@P:9us@P:9us@P:9us@P:9us@P:9us@P:9us@P:9us@P:9us@P:9us@P:9us@P:9us@P:9us@P:9us@P:9us@P:9us@P:9us@P:9us@P:9us@P:9us@P:9us@P:9us@P:9us@P:9us@P:9us@P瀺5 endstream endobj -2502 0 obj +2637 0 obj << /Type /XObject /Subtype /Image @@ -116688,7 +119436,7 @@ endobj /Columns 1840 /Colors 3 >> -/SMask 2503 0 R +/SMask 2638 0 R /Length 27536 >> stream @@ -116777,7 +119525,7 @@ $־t Jk`o4z\7i'|Z "@'{oOstuZIRa:05m7"( y~  ,QDEa_)aHBcjWjI D@NYĎzegr1scuvr/hBLdIMLz>PJn"]_b/@KӺTz97'j~hBD?j3snE|ڬMُzSB!봞K)O2{AUQ;o槾DIS7OYn>?EQDEb!d1}"("/jB R@j$t:Y Bowgeoxzֱt1;}tF>Z?^ּKu M 9 o_AOhujv,|S tS_5] "("6?)` endstream endobj -2503 0 obj +2638 0 obj << /Filter /FlateDecode /Type /XObject @@ -116797,7 +119545,7 @@ stream x1 0g>B*طp^ 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L 0 0L ,<E endstream endobj -2504 0 obj +2639 0 obj << /Type /XObject /Subtype /Image @@ -116812,7 +119560,7 @@ endobj /Columns 171 /Colors 3 >> -/SMask 2505 0 R +/SMask 2640 0 R /Length 1285 >> stream @@ -116821,7 +119569,7 @@ D Ǥ[V(}$BaDz}7nWTrK}g{,xyŒ2xOv8⸸BD)"vvt455QRkQ+zڴ绻m=}"}Qt@erZeeU]]-9YyoY =q%3^ʘ%<̙!c` @~3ӳg3ufcbB˹-v룄kX' !"IEmEVe0|ٖJ @(s>זʫ$k@@6|@n|foEEٔ$۶SJEI޸yˮ;&N|vҤ  DF]F; A(DQ=Q8^iRJ("RJ 93ZM"ˠ1rq.נ(ᄎj5”ɓ-iiܺ$>A<0EEQ׀Ds6/uO8PFED%@#ceO7.Շ4V:F)1rt @ nCc<ּM4pQc ѽ)|"2?Q?Du@: QuT: endstream endobj -2505 0 obj +2640 0 obj << /Filter /FlateDecode /Type /XObject @@ -116841,7 +119589,7 @@ stream xA 1g`F]22222222e# endstream endobj -2506 0 obj +2641 0 obj << /Type /XObject /Subtype /Image @@ -116856,7 +119604,7 @@ endobj /Columns 171 /Colors 3 >> -/SMask 2507 0 R +/SMask 2642 0 R /Length 1135 >> stream @@ -116865,7 +119613,7 @@ x 3+]!Q)^*̻ &[xPSV2IZF@9Or_@TzdyZ.7PNp9ͣ0X> -/SMask 2509 0 R +/SMask 2644 0 R /Length 257079 >> stream @@ -117712,7 +120460,7 @@ D ZU62l98]/xRvVf;\s 7M}{Ω*tVIYMV7,Q} llQϞZq2ڨv+ەt*>qkxz3l8vInuƌōֳkNyVI&7p}sx$#js<(` @YYTo~8F< qMVǬD}Y乙Җ f~~CpQjfϚR9VWEcrڿtsD}fgu0o)}gW9Gٜκmвfՙn)%IL~j2M[`V"rVfE.oY{noXgmFܯ^ԇr\g=&&֤ R)Ik)XK)Yɋۤ+JY\.YOOzgJ^Jԝ<$Lf\\4aIu;vT28٤(6Y"۩Q/- YmK>oEe`F^cCb,)b EڒWR:3 Nv6 ;uL΁u_,}er趿ώ(K N y7^ZoYL#L_6#JhmymIR>Gǎ~n~ZKnrǟRw_}gBպ]}.H:Nfgeɉ{[ ̾l.^1òذVO ҕzm|ZTu%[ok'm3^3aiGG'sK)YN Nl7]g^ǰZ2)CQtp5Smu]nNc9wu嗽kKrW}Z/ș#TGН]=qιy^,\.3[uotuņd>|MAooonpN7|&#9OOOG7o> -/SMask 2511 0 R +/SMask 2646 0 R /Length 21101 >> stream @@ -117817,7 +120565,7 @@ W+8J ,vD!avD!.B!\r5\c6ϸfIIɖ-[~FmGBI ""km|vD!DDD4}z󨾇0;"B8ޙb- endstream endobj -2511 0 obj +2646 0 obj << /Filter /FlateDecode /Type /XObject @@ -117837,7 +120585,7 @@ stream xA 0CBBZ{lςyE_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_.^F endstream endobj -2512 0 obj +2647 0 obj << /Type /XObject /Subtype /Image @@ -117852,7 +120600,7 @@ endobj /Columns 1848 /Colors 3 >> -/SMask 2513 0 R +/SMask 2648 0 R /Length 506775 >> stream @@ -119413,7 +122161,7 @@ A a$ FPDkڠܰt[nx}Fͪb FDجo"O]%Wf[n͐D㨽&*1r;ײZro m~rr Fg$Ir[F!M>i,$H"= ɴI$DI=KDI$DI$DI$D'ft{m/`It0\$-2$~H6xS0cXjb̴&DrDԶFeEl^aɵM}p-l}-o%&-ljb\}Pk [c ƹJmnOk6m;s]ݲS٪ݒ$,I$# vɮDI``)9 ʨpͯZH.]ob`s#k\Kn<5\:Q:V]܈9:P%8Y5\Ke:˘Am)B6XggMn,͟-1O%DI endstream endobj -2513 0 obj +2648 0 obj << /Filter /FlateDecode /Type /XObject @@ -119433,7 +122181,7 @@ stream x1 0g.B*طpk' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`' q@`m endstream endobj -2514 0 obj +2649 0 obj << /Type /XObject /Subtype /Image @@ -119448,7 +122196,7 @@ endobj /Columns 1821 /Colors 3 >> -/SMask 2515 0 R +/SMask 2650 0 R /Length 539259 >> stream @@ -121339,7 +124087,7 @@ n` MdO"WPJww*\ qt[)b)1;<7-- m5 bI7E3W; ; -aHPsݻoݯ{緐 endstream endobj -2515 0 obj +2650 0 obj << /Filter /FlateDecode /Type /XObject @@ -121359,7 +124107,7 @@ stream xձ03>\Эs^w@w endstream endobj -2516 0 obj +2651 0 obj << /Type /XObject /Subtype /Image @@ -121374,7 +124122,7 @@ endobj /Columns 1845 /Colors 3 >> -/SMask 2517 0 R +/SMask 2652 0 R /Length 544180 >> stream @@ -123193,7 +125941,7 @@ z¾ nٸ=Onۆe۸ZEPTT*xœ@Ӵ.L> -/SMask 2519 0 R +/SMask 2654 0 R /Length 30419 >> stream @@ -123331,7 +126079,7 @@ z0\ dϦY.+1Z 2ddk\,% @)˛Wj%YjY9vغEHcW7U 6waQzZ/t)))ZzZ*eyJRRk/T,_\fXU:Yye-/""**.Դtдy%QQq(2SYn+2EHNR7"tZ<tzf[fki8) V_:;7==wv~BvZ7E۽8A:бfe3R*7Rٖrʘm<-[-J٭N-RVVfefh/yMqYzh5%4;c>-^N3rrfPplNyS3 *R׬-n[$ǕWFT633؝8(ojN;8$5$?؝]Y433'̩榷1m*S)ګmwTfd|(((\Y޼rw>̌s,2Lw~F2"( ZY_'hYGx[WzniqRYm\vde*xDGKϝKY#sKS# *_Q9 7u^#Ї`d(!,twHS}G3#(uYg]yNs,[?w(uEu$؈())骫w(#V­ZYYβ~%  u0ڙRJ 1#D8yG3 Q@:@T*@T@FV̺ed[h4QGVtv#GHGR|8ԴUBX(hѢܼlٲN, >#w0C:ٿ endstream endobj -2519 0 obj +2654 0 obj << /Filter /FlateDecode /Type /XObject @@ -123351,7 +126099,7 @@ stream xA 0CBBZ{lςyE_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_.u# endstream endobj -2520 0 obj +2655 0 obj << /Type /XObject /Subtype /Image @@ -123366,7 +126114,7 @@ endobj /Columns 582 /Colors 3 >> -/SMask 2521 0 R +/SMask 2656 0 R /Length 24987 >> stream @@ -123442,7 +126190,7 @@ y< xB]??<Nwۂ}PL;hr^W![iC]G7mZ?xG> -/SMask 2523 0 R +/SMask 2658 0 R /Length 14549 >> stream @@ -123536,7 +126284,7 @@ YeG (hȡ P5G Fi0So~QVC姨 03;m$r6H;J7䖫i_z4t endstream endobj -2523 0 obj +2658 0 obj << /Filter /FlateDecode /Type /XObject @@ -123561,7 +126309,7 @@ x AqG endstream endobj -2524 0 obj +2659 0 obj << /Type /XObject /Subtype /Image @@ -123576,7 +126324,7 @@ endobj /Columns 872 /Colors 3 >> -/SMask 2525 0 R +/SMask 2660 0 R /Length 16208 >> stream @@ -123637,7 +126385,7 @@ H!  6ia}5 8T3rlcsyLEN>B gfʲvJҿ?悟3?۲36%v`` KAcwqƚn9aKr4eU`TNO&`,}]kЁ%CvA?!nQCP#_[]".{[:r4[y:kR"KhUJ&(~e7ƈa=ܭB,`,\K|Rl4NwSYgbۜt=+m^Sտ?kW11\$]4 %.z‘$I܌ E8*ꝍV~h̀^S| MalXWTy\AYD"z[}EWW RDR9(*a|jޗ'b OaDT:QL B$p,Uf{&\s`9//v_`RG~B p}" N2",&(*_rCJJ(leFc33thB}tNf2:E9CڈMdӊW{ WҦRdlT "AMSJ"BYv%F§[*bffz47M$<[vګ ADi6˫ruMSҶ5&xl endstream endobj -2525 0 obj +2660 0 obj << /Filter /FlateDecode /Type /XObject @@ -123657,7 +126405,7 @@ stream xӱ03WArA= `4 F `4 F `4 F `4 F `4 F `4 F p5 endstream endobj -2526 0 obj +2661 0 obj << /Type /XObject /Subtype /Image @@ -123672,7 +126420,7 @@ endobj /Columns 607 /Colors 3 >> -/SMask 2527 0 R +/SMask 2662 0 R /Length 18321 >> stream @@ -123752,7 +126500,7 @@ t `tB:X!VHG-78 endstream endobj -2527 0 obj +2662 0 obj << /Filter /FlateDecode /Type /XObject @@ -123772,7 +126520,7 @@ stream xA 0CBBZ{lςyE_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_E_.յ endstream endobj -2528 0 obj +2663 0 obj << /Type /XObject /Subtype /Image @@ -123787,7 +126535,7 @@ endobj /Columns 952 /Colors 3 >> -/SMask 2529 0 R +/SMask 2664 0 R /Length 321098 >> stream @@ -124862,7 +127610,7 @@ T* Xl||<cAA20 i݀^   9   r(PFAAsL1 endstream endobj -2529 0 obj +2664 0 obj << /Filter /FlateDecode /Type /XObject @@ -124882,7 +127630,7 @@ stream xA 0C/U, Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bq!ȸd\2. Aƅ Bmk endstream endobj -2530 0 obj +2665 0 obj << /Type /XObject /Subtype /Image @@ -124897,14 +127645,14 @@ endobj /Columns 97 /Colors 3 >> -/SMask 2531 0 R +/SMask 2666 0 R /Length 223 >> stream x Eu3ae\t> -/SMask 2533 0 R +/SMask 2668 0 R /Length 237 >> stream x Dqe@CasB!2 ӽYfXkk"Ԥxv:Al}/.ȝGȐ$Z `& ,."PYz'FSᬻJpy]0ƕ.Թ*dlpj 2H DJI HkvvMg~zO:M*YґוB!:~ endstream endobj -2533 0 obj +2668 0 obj << /Filter /FlateDecode /Type /XObject @@ -124967,7 +127715,7 @@ stream xA  gMq@oELz^zSG endstream endobj -2534 0 obj +2669 0 obj << /Type /XObject /Subtype /Image @@ -124982,14 +127730,14 @@ endobj /Columns 97 /Colors 3 >> -/SMask 2535 0 R +/SMask 2670 0 R /Length 271 >> stream x De{HXEMξc\D!B!Y\N跟kY7PDiZFuV Qڑ!MbT .ao #ӭ13ysNG'S^P5J (g ;#k Z8_>2چ[ۻ;1G#˧o%w =2>W<`>2~I^M3Q ٻeAuyF}Os۔B!Н4 endstream endobj -2535 0 obj +2670 0 obj << /Filter /FlateDecode /Type /XObject @@ -125010,7 +127758,7 @@ x & `0 ëG endstream endobj -2536 0 obj +2671 0 obj << /Type /XObject /Subtype /Image @@ -125025,7 +127773,7 @@ endobj /Columns 348 /Colors 3 >> -/SMask 2537 0 R +/SMask 2672 0 R /Length 1085 >> stream @@ -125043,7 +127791,7 @@ t? >z)gX6ũ+)rUj.eH*}N4O>B-kΖ~JQ*m!)UV14y endstream endobj -2537 0 obj +2672 0 obj << /Filter /FlateDecode /Type /XObject @@ -125063,7 +127811,7 @@ stream x @7.؞E!sC 27dnܐ!sC 27dnܐ!sC 27dnܐ!sC 27dnܐ!sC 27dnܐ!sC 27dnܐ!sC 27dnܐ!sC 27dnܐ!sC 27dnܐ!sC 27dnܐ!sC 27dnܐ!sC 27dnܐ!sC 27dnܐ!sC 27dnܐ!sC 27dnܐ!sC 27dnܐ!sC 27dnܐ!sC 27t endstream endobj -2538 0 obj +2673 0 obj << /Type /XObject /Subtype /Image @@ -125078,7 +127826,7 @@ endobj /Columns 388 /Colors 3 >> -/SMask 2539 0 R +/SMask 2674 0 R /Length 1115 >> stream @@ -125087,7 +127835,7 @@ x a$SNO7hY.UA[޽/M݈N~Y33JKZGAF_?lŗ$0Z'!{'(9aBg, \&Vŗ6>086JUhxJq7 {iimA2};8QëGt`q_XՔ endstream endobj -2539 0 obj +2674 0 obj << /Filter /FlateDecode /Type /XObject @@ -125108,7 +127856,7 @@ x z;mo;L0!L0!L0!L0!L0!L0!L0!L0!L0!L0!L0!L0!L0!L0!L0!L0!L0!L0!L0!L0!L0!L0!L0!L0!L0!L0!L0!L0!L0!L0!L0!L0!L0!L0!L0!L endstream endobj -2540 0 obj +2675 0 obj << /Type /XObject /Subtype /Image @@ -125123,7 +127871,7 @@ endobj /Columns 101 /Colors 3 >> -/SMask 2541 0 R +/SMask 2676 0 R /Length 2562 >> stream @@ -125134,7 +127882,7 @@ x '2 %Λ`Q(Fn":g{Y]:-^hhx9c'Y4ap2}vSc=}B8G+':%"n.>ω.ECf[D^/T4FZnyg.8 V0~r4D9h|C?_ϗ9e|} endstream endobj -2541 0 obj +2676 0 obj << /Filter /FlateDecode /Type /XObject @@ -125155,7 +127903,7 @@ x &X,bX,a9\QG endstream endobj -2542 0 obj +2677 0 obj << /Type /XObject /Subtype /Image @@ -125170,7 +127918,7 @@ endobj /Columns 101 /Colors 3 >> -/SMask 2543 0 R +/SMask 2678 0 R /Length 2208 >> stream @@ -125188,7 +127936,7 @@ B bmmkD"QrrR$IXa5t($hv:( GB~_oL8"a/xm6#G&oָGT@m$~ݗh>og&3pAu#{gtٟX7W^D~_B|C/~i endstream endobj -2543 0 obj +2678 0 obj << /Filter /FlateDecode /Type /XObject @@ -125209,7 +127957,7 @@ x &X,bX,a9\QG endstream endobj -2544 0 obj +2679 0 obj << /Type /XObject /Subtype /Image @@ -125224,7 +127972,7 @@ endobj /Columns 101 /Colors 3 >> -/SMask 2545 0 R +/SMask 2680 0 R /Length 292 >> stream @@ -125232,7 +127980,7 @@ x :Px9 }/O_Tsُ$Q͋_xҗ9\/gm~͘yO)a?E3/*Ym ^*slޭ_Tn^nfYm\w~LY=)Kd[JVEf>~ul!_fGڌ Gj3܍z__ /|1!_ bCŐ/|1>lQ endstream endobj -2545 0 obj +2680 0 obj << /Filter /FlateDecode /Type /XObject @@ -125253,7 +128001,7 @@ x &X,bX,a9\QG endstream endobj -2546 0 obj +2681 0 obj << /Type /XObject /Subtype /Image @@ -125268,7 +128016,7 @@ endobj /Columns 404 /Colors 3 >> -/SMask 2547 0 R +/SMask 2682 0 R /Length 9205 >> stream @@ -125297,7 +128045,7 @@ mnn"_ 藠 A 4JThEO,LT< <b> endstream endobj -2547 0 obj +2682 0 obj << /Filter /FlateDecode /Type /XObject @@ -125332,7 +128080,7 @@ x Qd (@Fi(8RVa9"OWV7W٬ &rRR%Ѷq)'@DJۗ\Q "}ܜfH_D endstream endobj -2548 0 obj +2683 0 obj << /Type /XObject /Subtype /Image @@ -125347,7 +128095,7 @@ endobj /Columns 404 /Colors 3 >> -/SMask 2549 0 R +/SMask 2684 0 R /Length 1346 >> stream @@ -125358,7 +128106,7 @@ i JyEj?Wۮ:3/}~OUuzGx΄﷥@N묓:wxvwߜY펹F?W=*)$H $H $H $H $H $H $H $H $H $H $H $H $H $H $H $H $H $H $H $H $?kx endstream endobj -2549 0 obj +2684 0 obj << /Filter /FlateDecode /Type /XObject @@ -125378,7 +128126,7 @@ stream x 0_o +T3f>˚N7eJ)AdJ)AdJ)AdJ)AdJ)AdJ)AdJ)AdJ)AdJ)AdJ)AdJ)AdJ)AdJ)AdJ)AdJ)AdJ)AdJ)AdJ)AdJ)AdJ)AdJ)AdJ)AdJ)AdJ)AdJ)AdJ)AdJ)AdJ)AdJ)AdJ)AdJ)AdJ)AdJ)AdJ)A. endstream endobj -2550 0 obj +2685 0 obj << /Type /XObject /Subtype /Image @@ -125393,7 +128141,7 @@ endobj /Columns 202 /Colors 3 >> -/SMask 2551 0 R +/SMask 2686 0 R /Length 687 >> stream @@ -125401,7 +128149,7 @@ x ўc[c3H+jpk=oKO&C@}hԑJipMM%zxr*[}m=&Zn}bg@@'.Os4S-{.F>oT0in{&싣|4% % % % % % % % % % % % % % % % % % % % % % ?V endstream endobj -2551 0 obj +2686 0 obj << /Filter /FlateDecode /Type /XObject @@ -125421,7 +128169,7 @@ stream x 0g-!8K=~^ӊQ+VDZ"jEԊQ+VDZ"jEԊQ+VDZ"jEԊQ+VDZ"jEԊQ+* endstream endobj -2552 0 obj +2687 0 obj << /Type /XObject /Subtype /Image @@ -125436,7 +128184,7 @@ endobj /Columns 75 /Colors 3 >> -/SMask 2553 0 R +/SMask 2688 0 R /Length 1753 >> stream @@ -125451,7 +128199,7 @@ E D7 T(#wkd朤B5֚!6~Ko8n endstream endobj -2553 0 obj +2688 0 obj << /Filter /FlateDecode /Type /XObject @@ -125471,7 +128219,7 @@ stream xA0>!:wr\.U0uG endstream endobj -2554 0 obj +2689 0 obj << /Type /XObject /Subtype /Image @@ -125486,7 +128234,7 @@ endobj /Columns 1347 /Colors 3 >> -/SMask 2555 0 R +/SMask 2690 0 R /Length 9550 >> stream @@ -125500,7 +128248,7 @@ x >kw@'J:QЉN<t%(yD@'J:QЉN<t%(yD@'J:QЉN<t%(yd:I֖RSU5n6> -/SMask 2557 0 R +/SMask 2692 0 R /Length 40741 >> stream @@ -125933,7 +128681,7 @@ a ne!,    nС  V%t(  U   `UB2  XС  V%t(  U   `U?1Q endstream endobj -2557 0 obj +2692 0 obj << /Filter /FlateDecode /Type /XObject @@ -125954,7 +128702,7 @@ x t*up2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap2 !Ap5 endstream endobj -2558 0 obj +2693 0 obj << /Type /XObject /Subtype /Image @@ -125969,14 +128717,14 @@ endobj /Columns 420 /Colors 3 >> -/SMask 2559 0 R +/SMask 2694 0 R /Length 1429 >> stream xA A[r&PM#SlBW)Wgw~AH; AH; AH; AH; AH; AH; AH; AH; AH; AH; AH; AH; AH; AH; AH; AH; AH; AH; AH; AH; As<; AH; AH; AH; AH; AH; AH; AH; AH; AH; AH; AH; AH; AH; AH; AH; AH; AH; AH; AH; AH; Azt v@ b$ v@ b$ v@ b$ v@ b$ v@ b$ v@ b$ v@ b$ v@ b$ v@ b$ v@ b$ v@ b$ v@ b$ v@ b$ v@ b$ v@ b$ v@ b$ v@ b$ v@ b$ v@ b$ v@ b$ v@ c_WoγH; AH; AH; AH; AH; AH; AH; AH; AH; AH; AH; AH; AH; AH; AH; AH; AH; AH; AH; AH; AH; a\nH; AH; AH; AH; AH; AH; AH; AH; AH; AH; AH; AH; AH; AH; AH; AH; AH; AH; AH; AH; AH8 endstream endobj -2559 0 obj +2694 0 obj << /Filter /FlateDecode /Type /XObject @@ -126101,7 +128849,7 @@ x 8M1G endstream endobj -2560 0 obj +2695 0 obj << /Type /XObject /Subtype /Image @@ -126184,7 +128932,7 @@ K (>|Cqx_QKZ%.J`̮$++O~!Fl$ Nۢ 0d, 8M}W@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@W=~5 ܋?7H lN$+9T݌y@ endstream endobj -2561 0 obj +2696 0 obj << /Type /XObject /Subtype /Image @@ -126199,7 +128947,7 @@ endobj /Columns 22 /Colors 3 >> -/SMask 2562 0 R +/SMask 2697 0 R /Length 877 >> stream @@ -126211,7 +128959,7 @@ x endstream endobj -2562 0 obj +2697 0 obj << /Filter /FlateDecode /Type /XObject @@ -126231,7 +128979,7 @@ stream xcπ 0a0,# endstream endobj -2563 0 obj +2698 0 obj << /Type /XObject /Subtype /Image @@ -126246,7 +128994,7 @@ endobj /Columns 22 /Colors 3 >> -/SMask 2564 0 R +/SMask 2699 0 R /Length 825 >> stream @@ -126255,7 +129003,7 @@ x U6}󯯗R}L_f#ݬNrS-l ZǃΙov;p\e-WO/MW#4T '3wVSV%'Xܪ(0$ĀNb%7kk:Vd 9m j9¸{LoN endstream endobj -2564 0 obj +2699 0 obj << /Filter /FlateDecode /Type /XObject @@ -126275,7 +129023,7 @@ stream xcπ 0a0,# endstream endobj -2565 0 obj +2700 0 obj << /Type /XObject /Subtype /Image @@ -126290,14 +129038,14 @@ endobj /Columns 216 /Colors 3 >> -/SMask 2566 0 R +/SMask 2701 0 R /Length 875 >> stream xNH@QgهH ZvFgP\,Gp_?}pB$B$! DHI" B$A$! DHI" B$A$! DHI" B$A$! DHI" B$A$! DHI" B$A$󜏹nm1yϻ-=\^t{o)֪ϟZi^.2mmޒiyko~h\>opk=)įB6$^M=}[4CtCdB|M!zu3!2I" B$A$! D!d׹HB$A$! DHI" B$A$! DHI" B$A$! DHI" B$!kz׹H[N\m"K$! DHV!wt.s9!~oo6uR43罼fu91$~olECgOᬵ!f/ESOB oU9۴y*y/}Xa%!/7WyW# DHI" B$aIJWyW#*pNr w+mڼ#>cڼ=)D;+$! DHI" B$A$! DHI" B$A$! DHI" B$A$! DHI" B$A$! DHI" B$A$! DHI" B$A$I endstream endobj -2566 0 obj +2701 0 obj << /Filter /FlateDecode /Type /XObject @@ -126317,7 +129065,7 @@ stream xρ 03WT ǟ[4iLӘ1Mc4i4iLӘ1Mc4i4iLӘ1Mc4i4iLӘ1Mc4i4iLӘ1Mc4i4iLӘ1Mc4i4iLӘ1Mc4i4iLӘ1Mc4i4iLӘ1Mc4i4iLӘ1Mc4i4iLӘ1Mc4i4iLs o endstream endobj -2567 0 obj +2702 0 obj << /Type /XObject /Subtype /Image @@ -126332,7 +129080,7 @@ endobj /Columns 216 /Colors 3 >> -/SMask 2568 0 R +/SMask 2703 0 R /Length 1288 >> stream @@ -126359,7 +129107,7 @@ $ `B0D! Q΁\ endstream endobj -2568 0 obj +2703 0 obj << /Filter /FlateDecode /Type /XObject @@ -126379,7 +129127,7 @@ stream xρ 03WT ǟ[4iLӘ1Mc4i4iLӘ1Mc4i4iLӘ1Mc4i4iLӘ1Mc4i4iLӘ1Mc4i4iLӘ1Mc4i4iLӘ1Mc4i4iLӘ1Mc4i4iLӘ1Mc4i4iLӘ1Mc4i4iLӘ1Mc4i4iLs o endstream endobj -2569 0 obj +2704 0 obj << /Type /XObject /Subtype /Image @@ -126394,7 +129142,7 @@ endobj /Columns 216 /Colors 3 >> -/SMask 2570 0 R +/SMask 2705 0 R /Length 1479 >> stream @@ -126406,7 +129154,7 @@ Qa Bs_5kOH DH DH DHX3bDBlD!!!aUOGzߑ'[ߋb3X$ŊDW^sqg7mn@~LM9y8#/Nxh6 %"$XX꺮 "$"$"$"$& endstream endobj -2570 0 obj +2705 0 obj << /Filter /FlateDecode /Type /XObject @@ -126426,7 +129174,7 @@ stream xρ 03WT ǟ[4iLӘ1Mc4i4iLӘ1Mc4i4iLӘ1Mc4i4iLӘ1Mc4i4iLӘ1Mc4i4iLӘ1Mc4i4iLӘ1Mc4i4iLӘ1Mc4i4iLӘ1Mc4i4iLӘ1Mc4i4iLӘ1Mc4i4iLs o endstream endobj -2571 0 obj +2706 0 obj << /Type /XObject /Subtype /Image @@ -126441,7 +129189,7 @@ endobj /Columns 4961 /Colors 3 >> -/SMask 2572 0 R +/SMask 2707 0 R /Length 3565035 >> stream @@ -139385,7 +142133,7 @@ SW 0=QшLF`z4ӣ(V endstream endobj -2572 0 obj +2707 0 obj << /Filter /FlateDecode /Type /XObject @@ -139405,7 +142153,7 @@ stream x1 0gB*ؽpm9lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lpرcAփ[ aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lĎ ða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  vX` Fp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða؀ڱcAփ[aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68 7 endstream endobj -2573 0 obj +2708 0 obj << /Type /XObject /Subtype /Image @@ -139420,7 +142168,7 @@ endobj /Columns 4961 /Colors 3 >> -/SMask 2574 0 R +/SMask 2709 0 R /Length 3761458 >> stream @@ -153622,7 +156370,7 @@ lCF` 0x/v*#} endstream endobj -2574 0 obj +2709 0 obj << /Filter /FlateDecode /Type /XObject @@ -153642,7 +156390,7 @@ stream x1 0gB*ؽpm9lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lpرcAփ[ aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lĎ ða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  vX` Fp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða؀ڱcAփ[aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68 7 endstream endobj -2575 0 obj +2710 0 obj << /Type /XObject /Subtype /Image @@ -153657,7 +156405,7 @@ endobj /Columns 1920 /Colors 3 >> -/SMask 2576 0 R +/SMask 2711 0 R /Length 483438 >> stream @@ -155207,7 +157955,7 @@ C ΠiuR=!H!$4 )IA He-& endstream endobj -2576 0 obj +2711 0 obj << /Filter /FlateDecode /Type /XObject @@ -155228,7 +157976,7 @@ x u^;uȀ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`\T i endstream endobj -2577 0 obj +2712 0 obj << /Type /XObject /Subtype /Image @@ -155243,14 +157991,14 @@ endobj /Columns 108 /Colors 3 >> -/SMask 2578 0 R +/SMask 2713 0 R /Length 484 >> stream xю /{oi"̲3oMa,в,ˏ݁;D%(@JP"D%(@JP"ss)e3tYcZI{$~jk\J{n%NgXbzP.q+Ex$f5ewˉ)$K >$γ>˲ԇƫA~DL~/ۺ{Ҙ{yAt*hE'_N{Ě+LD%(@JP"D%(@JP"D%(@JP"D%U endstream endobj -2578 0 obj +2713 0 obj << /Filter /FlateDecode /Type /XObject @@ -155271,7 +158019,7 @@ x [9d2L&d2L&d2L&d2L&d2L&{A endstream endobj -2579 0 obj +2714 0 obj << /Type /XObject /Subtype /Image @@ -155286,7 +158034,7 @@ endobj /Columns 108 /Colors 3 >> -/SMask 2580 0 R +/SMask 2715 0 R /Length 451 >> stream @@ -155294,7 +158042,7 @@ x 7ⷒDj?1&ލVmJNTfbA G3hQ3Q^uDE@9\'>bsKX޵p:Bc2q:'wf6r8q#Oĉzo[wr63ˆ8]hi}zt?G*,ϟa_w}KCguULڙ3+tn0"?.scu X.gF`DF`DF`DF`DF`DF`DFu endstream endobj -2580 0 obj +2715 0 obj << /Filter /FlateDecode /Type /XObject @@ -155315,7 +158063,7 @@ x [9d2L&d2L&d2L&d2L&d2L&{A endstream endobj -2581 0 obj +2716 0 obj << /Type /XObject /Subtype /Image @@ -155330,14 +158078,14 @@ endobj /Columns 108 /Colors 3 >> -/SMask 2582 0 R +/SMask 2717 0 R /Length 422 >> stream xn0Ѹs\?ʜe Sj>3{F`DF`DF`DF`DF`DoR.w'KtNCo =s#z)qMеC۝A'v {u$RSqshGp"L?jx,q׈J7#0"#0"#0"#0"#0"#0"n?Q>c5fұ;G- ;}wi暸X=I ?D1:DIy9Gg1p_蝿ZB;yw`DF`DF`DF`DF`DF`DF endstream endobj -2582 0 obj +2717 0 obj << /Filter /FlateDecode /Type /XObject @@ -155358,7 +158106,7 @@ x [9d2L&d2L&d2L&d2L&d2L&{A endstream endobj -2583 0 obj +2718 0 obj << /Type /XObject /Subtype /Image @@ -155373,14 +158121,14 @@ endobj /Columns 108 /Colors 3 >> -/SMask 2584 0 R +/SMask 2719 0 R /Length 397 >> stream xN@@Q1/hڌp!=vns>W+("PD@"E("PD@"E("PD@"_g޼mO] +q^y~5נIs`JmpFbc^]q<뱽1lg0q0VȌmڪ}(Eogn|ݾjE3ef{|Z>v("PD@"E("PD@"E("PD@"EIQ endstream endobj -2584 0 obj +2719 0 obj << /Filter /FlateDecode /Type /XObject @@ -155401,7 +158149,7 @@ x [9d2L&d2L&d2L&d2L&d2L&{A endstream endobj -2585 0 obj +2720 0 obj << /Type /XObject /Subtype /Image @@ -155416,7 +158164,7 @@ endobj /Columns 1768 /Colors 3 >> -/SMask 2586 0 R +/SMask 2721 0 R /Length 68446 >> stream @@ -155575,7 +158323,7 @@ B {Oʒ 'ݩrkW!H tZy=-{ZZ4z\C7ұgoki' }ַ3mU%|*++Nw9Ǽpypj%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9%9ƙL\d2PWWهx<Y(HL&y2?????7xܜ= ql6N8'dQQQeee{{p \|!>JJJ82̱l6b{\MWWWgggnnnCCC{{{___IIIMMMKKp \L&JOORL&ͦ|J endstream endobj -2586 0 obj +2721 0 obj << /Filter /FlateDecode /Type /XObject @@ -155595,7 +158343,7 @@ stream xA 0C!YZm;^2:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ4 H3:Ҍ QB endstream endobj -2587 0 obj +2722 0 obj << /Type /XObject /Subtype /Image @@ -155610,7 +158358,7 @@ endobj /Columns 1920 /Colors 3 >> -/SMask 2588 0 R +/SMask 2723 0 R /Length 295467 >> stream @@ -156588,7 +159336,7 @@ I БH$D"H$D"H$9"D:D"H$D"H$D"G(@G"H$D"H$D"HH$D"H$D"H$N޳w endstream endobj -2588 0 obj +2723 0 obj << /Filter /FlateDecode /Type /XObject @@ -156609,7 +159357,7 @@ x u^;uȀ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ p! e endstream endobj -2589 0 obj +2724 0 obj << /Type /XObject /Subtype /Image @@ -156624,7 +159372,7 @@ endobj /Columns 1920 /Colors 3 >> -/SMask 2590 0 R +/SMask 2725 0 R /Length 285963 >> stream @@ -157661,7 +160409,7 @@ jP Њr1EQEQEQEQEQAhEQEQEQEQEQeAPZQEQEQEQEQEYTVEQEQEQEQEQEQEQEQEQEQAhEQEQEQEQEQeAPZQEQEQEQEQEYTVEQEQEQEQEQEQEQEQEQEQAhEQEQEQEQEQeAx endstream endobj -2590 0 obj +2725 0 obj << /Filter /FlateDecode /Type /XObject @@ -157682,7 +160430,7 @@ x u^;uȀ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ p! e endstream endobj -2591 0 obj +2726 0 obj << /Type /XObject /Subtype /Image @@ -157697,7 +160445,7 @@ endobj /Columns 1920 /Colors 3 >> -/SMask 2592 0 R +/SMask 2727 0 R /Length 1112571 >> stream @@ -161745,7 +164493,7 @@ S} Ԡ^AA)ǑĠ)'A)L*@+r*GGG~z`9jvܽbŲ˗ɟ?~![~Ŋeiy̛7d`s / Mӿ?}ptt߼_:swo~du饗\pJ ?gdGze9H|e'0S%A"PԠIkPZW"'A)L*@+rR>MӇ~dk]ΝbEs˖ƷB7>7ҥg<3f oڴoki>_~_Zw~Qbnڵ{Gv>joYMT<NATjP'9jPr\8 J+d6(EQiBhEQNMjM7c|lc=ٵkWOy4ڵ3H 7p}۵kAF>ZrWcTo%76M͛+9吨ArP5(8LQEQ^.A*I endstream endobj -2592 0 obj +2727 0 obj << /Filter /FlateDecode /Type /XObject @@ -161766,7 +164514,7 @@ x u^;uȀ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ `0`0  @ p endstream endobj -2593 0 obj +2728 0 obj << /Type /XObject /Subtype /Image @@ -161781,7 +164529,7 @@ endobj /Columns 1366 /Colors 3 >> -/SMask 2594 0 R +/SMask 2729 0 R /Length 1564922 >> stream @@ -167279,7 +170027,7 @@ TT V(&I endstream endobj -2594 0 obj +2729 0 obj << /Filter /FlateDecode /Type /XObject @@ -167396,7 +170144,7 @@ x U.Z endstream endobj -2595 0 obj +2730 0 obj << /Type /XObject /Subtype /Image @@ -167411,7 +170159,7 @@ endobj /Columns 1847 /Colors 3 >> -/SMask 2596 0 R +/SMask 2731 0 R /Length 542509 >> stream @@ -169238,7 +171986,7 @@ f LKL$ fpI9I,9M7< FL%@3(}^x‘Ñ PpihȣX IB2~$HZx2&3vf<&Eܕ G~h&fmNfh$b[ɘRyZ<Շjrx`SPVtf+טͤϕȍЦ7  Ɠ6  0fDBEOV/t\d/M WQ8d⿓+uF咤f&yN3LY\l3 eђ؈$KPڨXXHHVɫ͒55LѨ(,;S"$)kY|dHE)m"K+Z)$$5\rKfR*f\8@LxR)~ΎtC!Hj&R,?]DHs45fܚ+ex/ njj߸ef*th(T{9١ D!ʆ,FYJD7|cHVe{̈BoblF2QI;\-*^dj(9i250$4ƄL[= }dC23[vLA% CNW,܋' V4G|1Y0`'IS1``cLv P3 ~½kښA3nLPEEbz1@`,n%,35&%Ƈ(Dda!Q,%+~1aCp9`^=eaBH1lZ 3F=1 dqȤT!3ʋlDXT,DWK7Mjz50,Rs8&3&>5I 0H~/@44b;]Ύx0(]"Θ:>D΁φjXK:4r5*VAwwΘuN9P?-+}r/g1m &Gfh!{OiQL u!LJI[v9c2x&-j.Mkdl E|Zl>waL@}IBģ _;G:qj,+BAAAALy`0XZZJ*>      AAAAA== AAAAA<ua+++B K.V7W%    xh4ZP(~aaҥKw `uuƍoo}Z>ik     58A9^[VV3ٟPKAAAAq,,,lr.t /tAAAAAģ7wsvc9SSSkkkO~^[ZZzҦAAAAA<#t:ͭz1D*-0榧M ?&eoW.?m?nm?XWx6 Rٛ #S*i?Z\\AA<:h!O \]I]޷_oU_/׾& |a|bWNf˿4ARb7?<0/??-B)׾^}vx~ɇ 1W*Gkkk>" Cr39_67O^y}+iӆx}핅aت?sB./֭nnnm ] 7/οo[J=:'̅հ endstream endobj -2596 0 obj +2731 0 obj << /Filter /FlateDecode /Type /XObject @@ -169258,7 +172006,7 @@ stream xA 0~U, :# o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&t o@&tGk endstream endobj -2597 0 obj +2732 0 obj << /Type /XObject /Subtype /Image @@ -169273,7 +172021,7 @@ endobj /Columns 4961 /Colors 3 >> -/SMask 2598 0 R +/SMask 2733 0 R /Length 3320669 >> stream @@ -182532,7 +185280,7 @@ bt 0zdDF(=2GF`ȈQג endstream endobj -2598 0 obj +2733 0 obj << /Filter /FlateDecode /Type /XObject @@ -182552,7 +185300,7 @@ stream x1 0gB*ؽpm9lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lpرcAփ[ aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lĎ ða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  vX` Fp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða؀ڱcAփ[aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68 7 endstream endobj -2599 0 obj +2734 0 obj << /Type /XObject /Subtype /Image @@ -182567,7 +185315,7 @@ endobj /Columns 4961 /Colors 3 >> -/SMask 2600 0 R +/SMask 2735 0 R /Length 3104347 >> stream @@ -194426,7 +197174,7 @@ V* X6::rškJ> -/SMask 2602 0 R +/SMask 2737 0 R /Length 3065065 >> stream @@ -205930,7 +208678,7 @@ y {Ȉ?U+ endstream endobj -2602 0 obj +2737 0 obj << /Filter /FlateDecode /Type /XObject @@ -205950,7 +208698,7 @@ stream x1 0gB*ؽpm9lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lpرcAփ[ aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lĎ ða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  vX` Fp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða؀ڱcAփ[aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68 7 endstream endobj -2603 0 obj +2738 0 obj << /Type /XObject /Subtype /Image @@ -205965,7 +208713,7 @@ endobj /Columns 4961 /Colors 3 >> -/SMask 2604 0 R +/SMask 2739 0 R /Length 4740001 >> stream @@ -223851,7 +226599,7 @@ X 3=e1'ࡹOmΔEAџɝ5yBWژwf܋{O?pyztkϽџћ#r#,μ'{7^Nj;}'iLN^rv{>㇏mUls0Ԯ/=_;xhwwŒe8;ua?wj/Xx~j$돈GNiW ɩC㇏4oVOK33ӗL_މߥO>RVޓ쾴ys%UvZ> -/SMask 2606 0 R +/SMask 2741 0 R /Length 281568 >> stream @@ -224724,7 +227472,7 @@ O^ AAfiii5  rigӹ\òez(8sjqD}}ȑ#U9 heAdQifιmW̲ Ad@+   ,2^   \heAAAEZYAAAdVAAAYdEAAAheAAAEZYAAAdVAAAYdEAAAheAAAEZYAAAd M7- endstream endobj -2606 0 obj +2741 0 obj << /Filter /FlateDecode /Type /XObject @@ -224745,7 +227493,7 @@ x zu(8ް; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; "; ".{ endstream endobj -2607 0 obj +2742 0 obj << /Type /XObject /Subtype /Image @@ -224760,7 +227508,7 @@ endobj /Columns 4961 /Colors 3 >> -/SMask 2608 0 R +/SMask 2743 0 R /Length 4818808 >> stream @@ -242533,7 +245281,7 @@ t&o 71 endstream endobj -2608 0 obj +2743 0 obj << /Filter /FlateDecode /Type /XObject @@ -242553,7 +245301,7 @@ stream x1 0gB*ؽpm9lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lP8lpرcAփ[ aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lĎ ða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  vX` Fp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða؀ڱcAփ[aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68  aða0lp68 7 endstream endobj -2609 0 obj +2744 0 obj << /Type /XObject /Subtype /Image @@ -242568,7 +245316,7 @@ endobj /Columns 4969 /Colors 3 >> -/SMask 2610 0 R +/SMask 2745 0 R /Length 4512504 >> stream @@ -259412,7 +262160,7 @@ V ]~ʞ&[oߧVQ+-LhOG-}WNq;Z#vWO!˯sS3Rdj;jes9)WcW)n'_kĮJ)v{s*{Fl}ZmG3v>=[jJ^9kص{^)>.v}NeH]S}&tпz#_ؾ^]+|vs+֧ϩk}jҲD9Woqzb ׫+y5b}xR=9=#uM޾OVZH;gўB-XO[ az5v%vFڽ[Bj_>gvJ>is:S_i/l_ƮSNֈ]9bSHkT#Z endstream endobj -2610 0 obj +2745 0 obj << /Filter /FlateDecode /Type /XObject @@ -259669,7 +262417,7 @@ mp5 QO\K]޾U/////Oo%_n;>Wz)p^k<^CyNOʾ>y~2}8gxw';////D&/1Ƕ* endstream endobj -2611 0 obj +2746 0 obj << /Type /XObject /Subtype /Image @@ -259684,7 +262432,7 @@ endobj /Columns 945 /Colors 3 >> -/SMask 2612 0 R +/SMask 2747 0 R /Length 10477 >> stream @@ -259709,7 +262457,7 @@ t <+iH}.N֏1KN*~Wd.,Yw4a ή`ӧfOy⥯zS\WѮCöΥO3Ppf7a;h.s~Oͬmu Ctdo:ñYޱ׌u՗.Jj&$k>o\<5hlIM: -c==c;JZtΕ䟶=1bǜcN ؑ'bMqjOslM}U{{zOoJ &&w76|]yվ|J~ol6P+[[>=/ҙ{%;.Y0}0v65:捽Txi|zGkRcwK89*?)ێ$#Ԅr#5@llsn^b۲%IXuKz꺹y_I\Jnhl±ss',MK_)LKb v̉;yb|4֑n?@͉'|AhwЇk9\t:<x֨qfxcN 1'@ v!?-߼~c.k4ڸ!K;tI;sbĎ<1>h7K IVk2N  v̉;ybDhcm'!>td=1bǜcN ؑ'F,@'@ v̉;Ĉqb;sbĎ91bǜcN 1'@ v̉;sbĎ91bǜcN 1'@ v̉;sbĎ91bǜcN 1'@ v̉;sbĎ91bǜcN 1'@ v̉;sbĎ91bǜcN 1'@ v̉;sbĎ91bǜcN 1'@ v̉;sbĎ91bǜcN 1'@ v̉;sbĎ91bǜcN 1'@ v̉;_& endstream endobj -2612 0 obj +2747 0 obj << /Filter /FlateDecode /Type /XObject @@ -259729,7 +262477,7 @@ stream xA 0C/U, 8J %BcıPX(q,8J %BcıPX(q,8J %BcıPX(q,8J %BcıPX(q,8J %BcıPX(q,8J %BcıPX(q,8J %BcıPX(q,8J %BcıPX(q,8J %BcıPX(q,8J %BcıPX(q,8J %BcıPX(q,8J %BcıPX(q,8J %BcıPX(q,8J %BcıPX(q,8J %BcıPX(q,8J %BcıPX(q,8J %BcıPX(q,8J %BcıPX(q,8J %BcıPX(q,8J %BcıPX(q,8J %BcıPX(q,8J %BcıPX(q,8J %BcıPX(q,8J %BcıPX(q,8J %BcıPX(q,8J %BcıPX(q,8J %BcıPX(q,8J %BcıPX(q,8J %BcıPX(q,8J %BcıPX(q,8J %BcıPX(q,8J %BcıPX(q,8J %BcıPX(q,8J %BcıPX(q,8J %BcıPX(q,8J %BcıPX(q,8J % wI endstream endobj -2613 0 obj +2748 0 obj << /Type /XObject /Subtype /Image @@ -259744,7 +262492,7 @@ endobj /Columns 3784 /Colors 3 >> -/SMask 2614 0 R +/SMask 2749 0 R /Length 54101 >> stream @@ -259906,7 +262654,7 @@ Z+ YB\H)5bqtt$r:S֬_F|6}ĜUgggYVH-Mh/F{K4MQQTR*E&Gǜ3-)J*|>Fl6n^5j|0+I#!8B b1-r>_Fd2PJҔl~vz&8 |-k;q<&l:˲s.+t:Zʳ\*9c\kj8-X=5+%l:A'B θr.8vaڶMhEY&I2f9<}ЊJCQEZ-۶cT*$Id<)ʊkԨQWu: endstream endobj -2614 0 obj +2749 0 obj << /Filter /FlateDecode /Type /XObject @@ -259926,7 +262674,7 @@ stream xA 0C/U,8 bdH1YR,)F# @ bdH1YR,)F# @ bdH1YR,)F# @ bdH1YR,)F# @ bdH1YR,)F# @ bdH1YR,)F# @ bdH1YR,)F# @ bdH1YR,)F# @ bdH1YR.0 endstream endobj -2615 0 obj +2750 0 obj << /Type /XObject /Subtype /Image @@ -259941,7 +262689,7 @@ endobj /Columns 198 /Colors 3 >> -/SMask 2616 0 R +/SMask 2751 0 R /Length 4157 >> stream @@ -259961,7 +262709,7 @@ Q u,j۠#}90ハd7\fs|˃]ꈟ韸 ?D *梲54@TH%17g9fS̘R1?> -/SMask 2618 0 R +/SMask 2753 0 R /Length 106253 >> stream @@ -260481,7 +263229,7 @@ n\M 1&WHvvI! P,Q :f%KG$Ps<6VD}MoJ>tmJ%bTTLOb5~qc3uSXFjD51$בFxCܗήZ`[%鸫ܴ0Djʛ}񢮉2_q_ӓZ9v27bzDrYN3 endstream endobj -2618 0 obj +2753 0 obj << /Filter /FlateDecode /Type /XObject @@ -260501,7 +263249,7 @@ stream x1 gM議I`0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 prB endstream endobj -2619 0 obj +2754 0 obj << /Type /XObject /Subtype /Image @@ -260516,7 +263264,7 @@ endobj /Columns 847 /Colors 3 >> -/SMask 2620 0 R +/SMask 2755 0 R /Length 53486 >> stream @@ -260734,7 +263482,7 @@ W @B^ȩK@@ !ƼJ4dUP9g_ݺsa&T"X4+vdmҀS!sKN6uɲ0.\Mov@us^wx]q  hnG]#&Cy51 endstream endobj -2620 0 obj +2755 0 obj << /Filter /FlateDecode /Type /XObject @@ -260755,7 +263503,7 @@ x $= ?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt?AOt  endstream endobj -2621 0 obj +2756 0 obj << /Type /XObject /Subtype /Image @@ -260770,7 +263518,7 @@ endobj /Columns 1858 /Colors 3 >> -/SMask 2622 0 R +/SMask 2757 0 R /Length 81378 >> stream @@ -260967,7 +263715,7 @@ JKK ]=퍲~ͶK}]?3bXUBMUleý\yVс> x}3gc=bVjoo݊ƎFxx7Яݸ{PrnMl<ܻ;x<4/'?y_|Ǐb{!N?ׁ%{?jx9c7ǿ4?~]|G}釴777}/ӝ?~pWyS s?|r _oK8wԾ߾h~/lSW/}jЏO~oxnmrC.Ew^+| endstream endobj -2622 0 obj +2757 0 obj << /Filter /FlateDecode /Type /XObject @@ -261237,7 +263985,7 @@ x  endstream endobj -2623 0 obj +2758 0 obj << /Type /XObject /Subtype /Image @@ -261252,7 +264000,7 @@ endobj /Columns 1250 /Colors 3 >> -/SMask 2624 0 R +/SMask 2759 0 R /Length 23086 >> stream @@ -261381,7 +264129,7 @@ X @DT""1T"L^: Skkk/ML *b*eDL "s_B ?tƒ… {+Qvo{.\:5Z:u7$&~'N?T"dfqR~xg<]̞/ygܹs!Sϟwpeӧ9BŚ5SK?Y?֯__R?LNNn endstream endobj -2624 0 obj +2759 0 obj << /Filter /FlateDecode /Type /XObject @@ -261401,7 +264149,7 @@ stream xA 0C!YZ{m:ޱ8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0.PA endstream endobj -2625 0 obj +2760 0 obj << /Type /XObject /Subtype /Image @@ -261416,7 +264164,7 @@ endobj /Columns 1263 /Colors 3 >> -/SMask 2626 0 R +/SMask 2761 0 R /Length 33303 >> stream @@ -261477,7 +264225,7 @@ GYEc T endstream endobj -2626 0 obj +2761 0 obj << /Filter /FlateDecode /Type /XObject @@ -261699,7 +264447,7 @@ zu *PK endstream endobj -2627 0 obj +2762 0 obj << /Type /XObject /Subtype /Image @@ -261714,7 +264462,7 @@ endobj /Columns 1918 /Colors 3 >> -/SMask 2628 0 R +/SMask 2763 0 R /Length 25760 >> stream @@ -261772,7 +264520,7 @@ C Zץ9m7{Vk-f~ S{\=s̛Cc~:*qx ׄo3GR)"QXK{;rr3qE_չۗ2{l{o{nDy_A7~kQQK1ܑޮ=]7YyZzhkk {z@^^^h>mz=vmZ,[ji֞7{{ ~)[hcҮI^&{}7 Z>օ{ַoþ7?bD~?s+om'+xԚھcsv;k-o_Y9oowj\ endstream endobj -2628 0 obj +2763 0 obj << /Filter /FlateDecode /Type /XObject @@ -261793,7 +264541,7 @@ x uZu~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r 9@~ g_/r   endstream endobj -2629 0 obj +2764 0 obj << /Type /XObject /Subtype /Image @@ -261808,7 +264556,7 @@ endobj /Columns 1268 /Colors 3 >> -/SMask 2630 0 R +/SMask 2765 0 R /Length 329625 >> stream @@ -263034,7 +265782,7 @@ Cˋ a/:V[d獲=9E36ĊM_Nk.vjqR3雚[]ںmݞZo7=n]Z:}%",T䇃_zw'VR~g0 c&;cE|t endstream endobj -2630 0 obj +2765 0 obj << /Filter /FlateDecode /Type /XObject @@ -263055,7 +265803,7 @@ x zu8^2= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= RLH1= O endstream endobj -2631 0 obj +2766 0 obj << /Type /XObject /Subtype /Image @@ -263070,7 +265818,7 @@ endobj /Columns 972 /Colors 3 >> -/SMask 2632 0 R +/SMask 2767 0 R /Length 66223 >> stream @@ -263242,7 +265990,7 @@ MNN =Smw@ ;zJdg3J>P<oooGI>@ @G}ѣ٠{+Zbs=62@ @DBddC&.mOIA],'I HG+,I:(u!qK#:^ $ 2WŸ(JrB.? endstream endobj -2632 0 obj +2767 0 obj << /Filter /FlateDecode /Type /XObject @@ -263262,7 +266010,7 @@ stream x 0u%$= (87 f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C!af03D" f3C! endstream endobj -2633 0 obj +2768 0 obj << /Type /XObject /Subtype /Image @@ -263277,7 +266025,7 @@ endobj /Columns 1175 /Colors 3 >> -/SMask 2634 0 R +/SMask 2769 0 R /Length 90041 >> stream @@ -263533,7 +266281,7 @@ R' ;}> T[.qDY\.y&`Rp.e ?\ endstream endobj -2634 0 obj +2769 0 obj << /Filter /FlateDecode /Type /XObject @@ -263553,7 +266301,7 @@ stream x1 0c^ݳR/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@/5PK@\K endstream endobj -2635 0 obj +2770 0 obj << /Type /XObject /Subtype /Image @@ -263568,7 +266316,7 @@ endobj /Columns 1207 /Colors 3 >> -/SMask 2636 0 R +/SMask 2771 0 R /Length 132655 >> stream @@ -264007,7 +266755,7 @@ iW ҫx^  X>;ހ%.9 W8S@K-8D@KH endstream endobj -2636 0 obj +2771 0 obj << /Filter /FlateDecode /Type /XObject @@ -264027,7 +266775,7 @@ stream xA 0C/U,;o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5% endstream endobj -2637 0 obj +2772 0 obj << /Type /XObject /Subtype /Image @@ -264042,7 +266790,7 @@ endobj /Columns 1207 /Colors 3 >> -/SMask 2638 0 R +/SMask 2773 0 R /Length 98634 >> stream @@ -264405,7 +267153,7 @@ ic$ 8 ~xAA`3Omh {<' ~xAA`)=0%D{`Z"=PKj@-%D{`Z"=PKd endstream endobj -2638 0 obj +2773 0 obj << /Filter /FlateDecode /Type /XObject @@ -264425,7 +267173,7 @@ stream xA 0C/U,;o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@o5P[@M6+ endstream endobj -2639 0 obj +2774 0 obj << /Type /XObject /Subtype /Image @@ -264440,7 +267188,7 @@ endobj /Columns 1240 /Colors 3 >> -/SMask 2640 0 R +/SMask 2775 0 R /Length 37910 >> stream @@ -264551,7 +267299,7 @@ Q@WQ Q@WQBUt( k endstream endobj -2640 0 obj +2775 0 obj << /Filter /FlateDecode /Type /XObject @@ -264571,7 +267319,7 @@ stream x 0u%$= x؀cr 16 ؀cr 16 ؀cr 16 ؀cr 16 ؀cr 16 ؀cr 16 ؀cr 16 ؀cr 16 ؀cr 16 ؀cr 16 ؀cr 16 ؀cr 16 ؀cr 16 ؀cr 16 ؀cr 16 ؀cr 16 ؀cr 16 ؀cr 16 ؀cr 16 ؀cr 16 ؀cr 16 ؀cr 16 ؀cr 16 ؀cr 16 ؀cr 16 ؀cr 16 ؀cr 16 ؀cr 16 ؀cr 16 ؀cr 16 ؀cr 16 ؀cr 16 ؀cr 16 ؀cr 16 ؀cr 16 ؀cr 16 ؀cr 16 ؀cr 16 ؀cr 16 ؀cr 16 ؀cr 16 ؀cr 16 ؀cr 16 ؀cr 16 ؀cr 16 ؀cr 16 ؀cr 16 ؀cr 16 ؀cr 16 ؀cr 16 ؀cr 16 ؀cr 16 ؀cr 16 ؀cr 16 ؀cr 16 ؀cr 16 ؀cr 16 ؀cr 16 ؀cr ȹ endstream endobj -2641 0 obj +2776 0 obj << /Type /XObject /Subtype /Image @@ -264586,7 +267334,7 @@ endobj /Columns 1211 /Colors 3 >> -/SMask 2642 0 R +/SMask 2777 0 R /Length 84536 >> stream @@ -264879,7 +267627,7 @@ e `4# c0dFh1 2FA`4# c0eet endstream endobj -2642 0 obj +2777 0 obj << /Filter /FlateDecode /Type /XObject @@ -264900,7 +267648,7 @@ x y endstream endobj -2643 0 obj +2778 0 obj << /Type /XObject /Subtype /Image @@ -264915,7 +267663,7 @@ endobj /Columns 1095 /Colors 3 >> -/SMask 2644 0 R +/SMask 2779 0 R /Length 40374 >> stream @@ -265034,7 +267782,7 @@ d& To4HOn=rվ>*)-.?>wo3zwN|Kۥ{7s\Q|ӛ~o3"s-ߛ~%_~u/_~~|czmtmPw?;𫯾?p [p [`$#UGι>.jGfӅѫBNjhیF-I!H9)iٯfʩۥ];i)9 ߳w:kϣ뷿xFL9)9 3@6-#nj`!醬nj`!醬nj`!醬nj`!醬nj`!醬nj`!醬nj`!醬nj`!醬nj`!醬nj`!醬nj`!醬nj`!醬nj`!醬nj`!醬4 endstream endobj -2644 0 obj +2779 0 obj << /Filter /FlateDecode /Type /XObject @@ -265054,7 +267802,7 @@ stream xA 0CU,#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@u5 endstream endobj -2645 0 obj +2780 0 obj << /Type /XObject /Subtype /Image @@ -265069,7 +267817,7 @@ endobj /Columns 1280 /Colors 3 >> -/SMask 2646 0 R +/SMask 2781 0 R /Length 119051 >> stream @@ -265467,7 +268215,7 @@ KN 2OmCo  ͤz,w`d(؃Cd  endstream endobj -2646 0 obj +2781 0 obj << /Filter /FlateDecode /Type /XObject @@ -265487,7 +268235,7 @@ stream x1 0!cGz4-d e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd e@Yd}0% endstream endobj -2647 0 obj +2782 0 obj << /Type /XObject /Subtype /Image @@ -265502,7 +268250,7 @@ endobj /Columns 1280 /Colors 3 >> -/SMask 2648 0 R +/SMask 2783 0 R /Length 402974 >> stream @@ -266921,7 +269669,7 @@ g %ul!crfmfp{[{t4^_,Wӣ¨,!Ǐu-hz;V]/BhWz4eF|}>s69o?u016`SȺ˙UcU320ꦆXļt|Zuv2mIt="p8,|yl~VNm6* )1@fqgdloPi<%cC, }$>|}ٽ}ޜhG")"Ci[PM1 |Yc,wE$o8C@dq^ y?Tλzcoe}EtQ;f9=GD.Wگ禷7n,7Qc0@3m&xYUظ!BdDóGz="lU@1]@D$ӬoѰ=m5_FF]4 _*7# endstream endobj -2648 0 obj +2783 0 obj << /Filter /FlateDecode /Type /XObject @@ -266942,2662 +269690,2797 @@ x endstream endobj xref -0 2649 +0 2784 0000000000 65535 f 0000000015 00000 n -0000003643 00000 n -0000003799 00000 n -0000597489 00000 n -0000607073 00000 n -0000607599 00000 n -0000607798 00000 n -0000657331 00000 n -0000658052 00000 n -0000658204 00000 n -0000658356 00000 n -0000658510 00000 n -0000658651 00000 n -0000658791 00000 n -0000658933 00000 n -0000659068 00000 n -0000659202 00000 n -0000659338 00000 n -0000659475 00000 n -0000659611 00000 n -0000659749 00000 n -0000659899 00000 n -0000660048 00000 n -0000660199 00000 n -0000660346 00000 n -0000660492 00000 n -0000660640 00000 n -0000660775 00000 n -0000660909 00000 n -0000661045 00000 n -0000661185 00000 n -0000661324 00000 n -0000661465 00000 n -0000661610 00000 n -0000661754 00000 n -0000661900 00000 n -0000662051 00000 n -0000662201 00000 n -0000662353 00000 n -0000662519 00000 n -0000662684 00000 n -0000662851 00000 n -0000663001 00000 n -0000663150 00000 n -0000663301 00000 n -0000663436 00000 n -0000663570 00000 n -0000663706 00000 n -0000663837 00000 n -0000663969 00000 n -0000664137 00000 n -0000664306 00000 n -0000664437 00000 n -0000664569 00000 n -0000664722 00000 n -0000664876 00000 n -0000665045 00000 n -0000665215 00000 n -0000665381 00000 n -0000665548 00000 n -0000665718 00000 n -0000665889 00000 n -0000666043 00000 n -0000666198 00000 n -0000666352 00000 n -0000666507 00000 n -0000666640 00000 n -0000666774 00000 n -0000666946 00000 n -0000667119 00000 n -0000667271 00000 n -0000667424 00000 n -0000667591 00000 n -0000667759 00000 n -0000667919 00000 n -0000668080 00000 n -0000668243 00000 n -0000668407 00000 n -0000668538 00000 n -0000668670 00000 n -0000668813 00000 n -0000668957 00000 n -0000720644 00000 n -0000721409 00000 n -0000721556 00000 n -0000721704 00000 n -0000721865 00000 n -0000722025 00000 n -0000722187 00000 n -0000722337 00000 n -0000722486 00000 n -0000722637 00000 n -0000722783 00000 n -0000722928 00000 n -0000723075 00000 n -0000723219 00000 n -0000723362 00000 n -0000723507 00000 n -0000723654 00000 n -0000723802 00000 n -0000723950 00000 n -0000724099 00000 n -0000724251 00000 n -0000724404 00000 n -0000724539 00000 n -0000724675 00000 n -0000724827 00000 n -0000724978 00000 n -0000725131 00000 n -0000725269 00000 n -0000725408 00000 n -0000725544 00000 n -0000725681 00000 n -0000725817 00000 n -0000725954 00000 n -0000726091 00000 n -0000726229 00000 n -0000726368 00000 n -0000726508 00000 n -0000726660 00000 n -0000726811 00000 n -0000726964 00000 n -0000727117 00000 n -0000727271 00000 n -0000727421 00000 n -0000727572 00000 n -0000727705 00000 n -0000727839 00000 n -0000727992 00000 n -0000728146 00000 n -0000728308 00000 n -0000728471 00000 n -0000728624 00000 n -0000728776 00000 n -0000728930 00000 n -0000729073 00000 n -0000729217 00000 n -0000729368 00000 n -0000729520 00000 n -0000729673 00000 n -0000729827 00000 n -0000729978 00000 n -0000730130 00000 n -0000730271 00000 n -0000730413 00000 n -0000730560 00000 n -0000730708 00000 n -0000730853 00000 n -0000730999 00000 n -0000731142 00000 n -0000731286 00000 n -0000731431 00000 n -0000731577 00000 n -0000731715 00000 n -0000731854 00000 n -0000790713 00000 n -0000791632 00000 n -0000791767 00000 n -0000791901 00000 n -0000792037 00000 n -0000792191 00000 n -0000792346 00000 n -0000792497 00000 n -0000792649 00000 n -0000792801 00000 n -0000792952 00000 n -0000793105 00000 n -0000793255 00000 n -0000793404 00000 n -0000793555 00000 n -0000793699 00000 n -0000793844 00000 n -0000793995 00000 n -0000794147 00000 n -0000794308 00000 n -0000794470 00000 n -0000794642 00000 n -0000794815 00000 n -0000794966 00000 n -0000795116 00000 n -0000795268 00000 n -0000795414 00000 n -0000795561 00000 n -0000795708 00000 n -0000795856 00000 n -0000796003 00000 n -0000796151 00000 n -0000796309 00000 n -0000796468 00000 n -0000796617 00000 n -0000796767 00000 n -0000796902 00000 n -0000797036 00000 n -0000797172 00000 n -0000797323 00000 n -0000797473 00000 n -0000797625 00000 n -0000797785 00000 n -0000797944 00000 n -0000798105 00000 n -0000798241 00000 n -0000798376 00000 n -0000798513 00000 n -0000798676 00000 n -0000798838 00000 n -0000799002 00000 n -0000799148 00000 n -0000799293 00000 n -0000799440 00000 n -0000799575 00000 n -0000799709 00000 n -0000799845 00000 n -0000799985 00000 n -0000800124 00000 n -0000800265 00000 n -0000800420 00000 n -0000800574 00000 n -0000800730 00000 n -0000800877 00000 n -0000801023 00000 n -0000801171 00000 n -0000801324 00000 n -0000801476 00000 n -0000801630 00000 n -0000801781 00000 n -0000801931 00000 n -0000802083 00000 n -0000802223 00000 n -0000802362 00000 n -0000802503 00000 n -0000802646 00000 n -0000802788 00000 n -0000802932 00000 n -0000803071 00000 n -0000803209 00000 n -0000803349 00000 n -0000803513 00000 n -0000803676 00000 n -0000803841 00000 n -0000803995 00000 n -0000804148 00000 n -0000804303 00000 n -0000804454 00000 n -0000804604 00000 n -0000804756 00000 n -0000857856 00000 n -0000858839 00000 n -0000858996 00000 n -0000859152 00000 n -0000859310 00000 n -0000859472 00000 n -0000859633 00000 n -0000859796 00000 n -0000859964 00000 n -0000860131 00000 n -0000860300 00000 n -0000860465 00000 n -0000860629 00000 n -0000860795 00000 n -0000860954 00000 n -0000861112 00000 n -0000861272 00000 n -0000861435 00000 n -0000861597 00000 n -0000861761 00000 n -0000861926 00000 n -0000862090 00000 n -0000862256 00000 n -0000862433 00000 n -0000862609 00000 n -0000862787 00000 n -0000862941 00000 n -0000863094 00000 n -0000863249 00000 n -0000863407 00000 n -0000863564 00000 n -0000863723 00000 n -0000863919 00000 n -0000864114 00000 n -0000864311 00000 n -0000864482 00000 n -0000864652 00000 n -0000864824 00000 n -0000865004 00000 n -0000865185 00000 n -0000865356 00000 n -0000865528 00000 n -0000865704 00000 n -0000865881 00000 n -0000866051 00000 n -0000866220 00000 n -0000866391 00000 n -0000866560 00000 n -0000866728 00000 n -0000866898 00000 n -0000867054 00000 n -0000867209 00000 n -0000867366 00000 n -0000867527 00000 n -0000867687 00000 n -0000867849 00000 n -0000868003 00000 n -0000868156 00000 n -0000868311 00000 n -0000868470 00000 n -0000868628 00000 n -0000868788 00000 n -0000868947 00000 n -0000869105 00000 n -0000869265 00000 n -0000869419 00000 n -0000869572 00000 n -0000869727 00000 n -0000869875 00000 n -0000870022 00000 n -0000870171 00000 n -0000870325 00000 n -0000870478 00000 n -0000870633 00000 n -0000870784 00000 n -0000870934 00000 n -0000871086 00000 n -0000871236 00000 n -0000871385 00000 n -0000871536 00000 n -0000871682 00000 n -0000871827 00000 n -0000871974 00000 n -0000872120 00000 n -0000872265 00000 n -0000872412 00000 n -0000872561 00000 n -0000872709 00000 n -0000872859 00000 n -0000873005 00000 n -0000873150 00000 n -0000873297 00000 n -0000873451 00000 n -0000873604 00000 n -0000873759 00000 n -0000873899 00000 n -0000874038 00000 n -0000874179 00000 n -0000913684 00000 n -0000914667 00000 n -0000914819 00000 n -0000914970 00000 n -0000915123 00000 n -0000915275 00000 n -0000915426 00000 n -0000915579 00000 n -0000915725 00000 n -0000915870 00000 n -0000916017 00000 n -0000916169 00000 n -0000916320 00000 n -0000916473 00000 n -0000916628 00000 n -0000916782 00000 n -0000916938 00000 n -0000917087 00000 n -0000917235 00000 n -0000917385 00000 n -0000917534 00000 n -0000917682 00000 n -0000917832 00000 n -0000917993 00000 n -0000918153 00000 n -0000918315 00000 n -0000918467 00000 n -0000918618 00000 n -0000918771 00000 n -0000918920 00000 n -0000919068 00000 n -0000919218 00000 n -0000919367 00000 n -0000919515 00000 n -0000919665 00000 n -0000919818 00000 n -0000919970 00000 n -0000920124 00000 n -0000920274 00000 n -0000920423 00000 n -0000920574 00000 n -0000920727 00000 n -0000920879 00000 n -0000921033 00000 n -0000921183 00000 n -0000921332 00000 n -0000921483 00000 n -0000921633 00000 n -0000921782 00000 n -0000921933 00000 n -0000922086 00000 n -0000922238 00000 n -0000922392 00000 n -0000922542 00000 n -0000922691 00000 n -0000922842 00000 n -0000922992 00000 n -0000923141 00000 n -0000923292 00000 n -0000923442 00000 n -0000923591 00000 n -0000923742 00000 n -0000923895 00000 n -0000924047 00000 n -0000924201 00000 n -0000924351 00000 n -0000924500 00000 n -0000924651 00000 n -0000924804 00000 n -0000924956 00000 n -0000925110 00000 n -0000925263 00000 n -0000925415 00000 n -0000925569 00000 n -0000925719 00000 n -0000925868 00000 n -0000926019 00000 n -0000926169 00000 n -0000926318 00000 n -0000926469 00000 n -0000926622 00000 n -0000926774 00000 n -0000926928 00000 n -0000927078 00000 n -0000927227 00000 n -0000927378 00000 n -0000927531 00000 n -0000927683 00000 n -0000927837 00000 n -0000927987 00000 n -0000928136 00000 n -0000928287 00000 n -0000928437 00000 n -0000928586 00000 n -0000928737 00000 n -0000928885 00000 n -0000929032 00000 n -0000929181 00000 n -0000958859 00000 n -0000959602 00000 n -0000959738 00000 n -0000959873 00000 n -0000960010 00000 n -0000960181 00000 n -0000960351 00000 n -0000960523 00000 n -0000960680 00000 n -0000960836 00000 n -0000960994 00000 n -0000961177 00000 n -0000961359 00000 n -0000961543 00000 n -0000961712 00000 n -0000961880 00000 n -0000962050 00000 n -0000962223 00000 n -0000962395 00000 n -0000962569 00000 n -0000962730 00000 n -0000962890 00000 n -0000963052 00000 n -0000963199 00000 n -0000963345 00000 n -0000963493 00000 n -0000963644 00000 n -0000963794 00000 n -0000963946 00000 n -0000964116 00000 n -0000964285 00000 n -0000964456 00000 n -0000964619 00000 n -0000964781 00000 n -0000964945 00000 n -0000965090 00000 n -0000965234 00000 n -0000965380 00000 n -0000965539 00000 n -0000965697 00000 n -0000965857 00000 n -0000966024 00000 n -0000966190 00000 n -0000966358 00000 n -0000966533 00000 n -0000966707 00000 n -0000966883 00000 n -0000967060 00000 n -0000967236 00000 n -0000967414 00000 n -0000967585 00000 n -0000967755 00000 n -0000967927 00000 n -0000968080 00000 n -0000968232 00000 n -0000968386 00000 n -0000968535 00000 n -0000968683 00000 n -0000968833 00000 n -0000968986 00000 n -0000969138 00000 n -0000969292 00000 n -0000969441 00000 n -0000969589 00000 n -0000969739 00000 n -0000969910 00000 n -0000970080 00000 n -0000970252 00000 n -0000973192 00000 n -0000973415 00000 n -0000973599 00000 n -0000974064 00000 n -0000974287 00000 n -0000974471 00000 n -0000978563 00000 n -0000978810 00000 n -0000978996 00000 n -0000979188 00000 n -0000979381 00000 n -0000979575 00000 n -0000982566 00000 n -0000982769 00000 n -0000989098 00000 n -0000989301 00000 n -0000991206 00000 n -0000991445 00000 n -0000991642 00000 n -0000991840 00000 n -0000992039 00000 n -0000993975 00000 n -0000994198 00000 n -0000994383 00000 n -0000998215 00000 n -0000998446 00000 n -0000998632 00000 n -0000998819 00000 n -0001005354 00000 n -0001005557 00000 n -0001007102 00000 n -0001007349 00000 n -0001007534 00000 n -0001007720 00000 n -0001007907 00000 n -0001008093 00000 n -0001009571 00000 n -0001009810 00000 n -0001009998 00000 n -0001010187 00000 n -0001010378 00000 n -0001014813 00000 n -0001015044 00000 n -0001015236 00000 n -0001015429 00000 n -0001017897 00000 n -0001018100 00000 n -0001020909 00000 n -0001021112 00000 n -0001023735 00000 n -0001023938 00000 n -0001028906 00000 n -0001029109 00000 n -0001035646 00000 n -0001035869 00000 n -0001036057 00000 n -0001037139 00000 n -0001037378 00000 n -0001037567 00000 n -0001037757 00000 n -0001037945 00000 n -0001039285 00000 n -0001039516 00000 n -0001039705 00000 n -0001039895 00000 n -0001041673 00000 n -0001041920 00000 n -0001042111 00000 n -0001042303 00000 n -0001042496 00000 n -0001042683 00000 n -0001043657 00000 n -0001043888 00000 n -0001044076 00000 n -0001044265 00000 n -0001045385 00000 n -0001045624 00000 n -0001045814 00000 n -0001046004 00000 n -0001046194 00000 n -0001048533 00000 n -0001048756 00000 n -0001048947 00000 n -0001050834 00000 n -0001051065 00000 n -0001051257 00000 n -0001051450 00000 n -0001053464 00000 n -0001053703 00000 n -0001053891 00000 n -0001054080 00000 n -0001054270 00000 n -0001055810 00000 n -0001056049 00000 n -0001056237 00000 n -0001056426 00000 n -0001056616 00000 n -0001058356 00000 n -0001058579 00000 n -0001058772 00000 n -0001059784 00000 n -0001060015 00000 n -0001060209 00000 n -0001060404 00000 n -0001062703 00000 n -0001062926 00000 n -0001063122 00000 n -0001064543 00000 n -0001064782 00000 n -0001064979 00000 n -0001065177 00000 n -0001065363 00000 n -0001066659 00000 n -0001066898 00000 n -0001067087 00000 n -0001067277 00000 n -0001067471 00000 n -0001068596 00000 n -0001068835 00000 n -0001069031 00000 n -0001069228 00000 n -0001069430 00000 n -0001070023 00000 n -0001070254 00000 n -0001070457 00000 n -0001070660 00000 n -0001073594 00000 n -0001073797 00000 n -0001075129 00000 n -0001075332 00000 n -0001077440 00000 n -0001077679 00000 n -0001077871 00000 n -0001078064 00000 n -0001078258 00000 n -0001081078 00000 n -0001081281 00000 n -0001082849 00000 n -0001083088 00000 n -0001083278 00000 n -0001083469 00000 n -0001083661 00000 n -0001085663 00000 n -0001085902 00000 n -0001086091 00000 n -0001086281 00000 n -0001086472 00000 n -0001089496 00000 n -0001089699 00000 n -0001092212 00000 n -0001092415 00000 n -0001096799 00000 n -0001097002 00000 n -0001101214 00000 n -0001101417 00000 n -0001106007 00000 n -0001106210 00000 n -0001108806 00000 n -0001109009 00000 n -0001110996 00000 n -0001111243 00000 n -0001111436 00000 n -0001111630 00000 n -0001111825 00000 n -0001112018 00000 n -0001116245 00000 n -0001116476 00000 n -0001116672 00000 n -0001116869 00000 n -0001120377 00000 n -0001120648 00000 n -0001120842 00000 n -0001121037 00000 n -0001121233 00000 n -0001121431 00000 n -0001121630 00000 n -0001121830 00000 n -0001122014 00000 n -0001124852 00000 n -0001125083 00000 n -0001125269 00000 n -0001125457 00000 n -0001127854 00000 n -0001128057 00000 n -0001130433 00000 n -0001130636 00000 n -0001133126 00000 n -0001133329 00000 n -0001134248 00000 n -0001134495 00000 n -0001134687 00000 n -0001134880 00000 n -0001135074 00000 n -0001135272 00000 n -0001136951 00000 n -0001137182 00000 n -0001137381 00000 n -0001137581 00000 n -0001139471 00000 n -0001139694 00000 n -0001139898 00000 n -0001140593 00000 n -0001140824 00000 n -0001141029 00000 n -0001141235 00000 n -0001142232 00000 n -0001142567 00000 n -0001142760 00000 n -0001142954 00000 n -0001143149 00000 n -0001143344 00000 n -0001143540 00000 n -0001143737 00000 n -0001143936 00000 n -0001144135 00000 n -0001144336 00000 n -0001144531 00000 n -0001144727 00000 n -0001144924 00000 n -0001145122 00000 n -0001145321 00000 n -0001145521 00000 n -0001148219 00000 n -0001148458 00000 n -0001148659 00000 n -0001148861 00000 n -0001149064 00000 n -0001150095 00000 n -0001150366 00000 n -0001150553 00000 n -0001150741 00000 n -0001150930 00000 n -0001151114 00000 n -0001151299 00000 n -0001151485 00000 n -0001151668 00000 n -0001152313 00000 n -0001152576 00000 n -0001152762 00000 n -0001152949 00000 n -0001153138 00000 n -0001153328 00000 n -0001153519 00000 n -0001153702 00000 n -0001155482 00000 n -0001155737 00000 n -0001155921 00000 n -0001156106 00000 n -0001156298 00000 n -0001156491 00000 n -0001156685 00000 n -0001158486 00000 n -0001158797 00000 n -0001158997 00000 n -0001159198 00000 n -0001159400 00000 n -0001159600 00000 n -0001159801 00000 n -0001160003 00000 n -0001160198 00000 n -0001160394 00000 n -0001160591 00000 n -0001160790 00000 n -0001160990 00000 n -0001161191 00000 n -0001163624 00000 n -0001163847 00000 n -0001164043 00000 n -0001165822 00000 n -0001166101 00000 n -0001166300 00000 n -0001166500 00000 n -0001166706 00000 n -0001166913 00000 n -0001167121 00000 n -0001167321 00000 n -0001167522 00000 n -0001167724 00000 n -0001169745 00000 n -0001170032 00000 n -0001170230 00000 n -0001170429 00000 n -0001170629 00000 n -0001170831 00000 n -0001171034 00000 n -0001171238 00000 n -0001171435 00000 n -0001171633 00000 n -0001171832 00000 n -0001173578 00000 n -0001173817 00000 n -0001173999 00000 n -0001174182 00000 n -0001174366 00000 n -0001176214 00000 n -0001176525 00000 n -0001176719 00000 n -0001176914 00000 n -0001177110 00000 n -0001177304 00000 n -0001177499 00000 n -0001177695 00000 n -0001177889 00000 n -0001178084 00000 n -0001178280 00000 n -0001178474 00000 n -0001178669 00000 n -0001178865 00000 n -0001180905 00000 n -0001181176 00000 n -0001181366 00000 n -0001181557 00000 n -0001181749 00000 n -0001181942 00000 n -0001182135 00000 n -0001182330 00000 n -0001182520 00000 n -0001183371 00000 n -0001183682 00000 n -0001183873 00000 n -0001184065 00000 n -0001184257 00000 n -0001184450 00000 n -0001184644 00000 n -0001184834 00000 n -0001185025 00000 n -0001185217 00000 n -0001185415 00000 n -0001185614 00000 n -0001185814 00000 n -0001186003 00000 n -0001187865 00000 n -0001188152 00000 n -0001188342 00000 n -0001188533 00000 n -0001188723 00000 n -0001188913 00000 n -0001189105 00000 n -0001189298 00000 n -0001189492 00000 n -0001189687 00000 n -0001189894 00000 n -0001191333 00000 n -0001191636 00000 n -0001191845 00000 n -0001192056 00000 n -0001192249 00000 n -0001192442 00000 n -0001192637 00000 n -0001192830 00000 n -0001193024 00000 n -0001193219 00000 n -0001193410 00000 n -0001193602 00000 n -0001193795 00000 n -0001195504 00000 n -0001195707 00000 n -0001197518 00000 n -0001197765 00000 n -0001197962 00000 n -0001198160 00000 n -0001198359 00000 n -0001198550 00000 n -0001199359 00000 n -0001199590 00000 n -0001199782 00000 n -0001199975 00000 n -0001200991 00000 n -0001201194 00000 n -0001203611 00000 n -0001203834 00000 n -0001204022 00000 n -0001204557 00000 n -0001204796 00000 n -0001204985 00000 n -0001205175 00000 n -0001205364 00000 n -0001205879 00000 n -0001206118 00000 n -0001206308 00000 n -0001206499 00000 n -0001206690 00000 n -0001207799 00000 n -0001208030 00000 n -0001208222 00000 n -0001208415 00000 n -0001211041 00000 n -0001211312 00000 n -0001211499 00000 n -0001211687 00000 n -0001211876 00000 n -0001212069 00000 n -0001212263 00000 n -0001212458 00000 n -0001212646 00000 n -0001214846 00000 n -0001215101 00000 n -0001215292 00000 n -0001215484 00000 n -0001215676 00000 n -0001215869 00000 n -0001216063 00000 n -0001218239 00000 n -0001218478 00000 n -0001218676 00000 n -0001218875 00000 n -0001219075 00000 n -0001221187 00000 n -0001221434 00000 n -0001221621 00000 n -0001221809 00000 n -0001221998 00000 n -0001222186 00000 n -0001224382 00000 n -0001224613 00000 n -0001224802 00000 n -0001224992 00000 n -0001228527 00000 n -0001228730 00000 n -0001232628 00000 n -0001232831 00000 n -0001235947 00000 n +0000003768 00000 n +0000003924 00000 n +0000577530 00000 n +0000587334 00000 n +0000587860 00000 n +0000588059 00000 n +0000637590 00000 n +0000638311 00000 n +0000638463 00000 n +0000638615 00000 n +0000638769 00000 n +0000638910 00000 n +0000639050 00000 n +0000639192 00000 n +0000639327 00000 n +0000639461 00000 n +0000639597 00000 n +0000639734 00000 n +0000639870 00000 n +0000640008 00000 n +0000640158 00000 n +0000640307 00000 n +0000640458 00000 n +0000640605 00000 n +0000640751 00000 n +0000640899 00000 n +0000641034 00000 n +0000641168 00000 n +0000641304 00000 n +0000641444 00000 n +0000641583 00000 n +0000641724 00000 n +0000641869 00000 n +0000642013 00000 n +0000642159 00000 n +0000642310 00000 n +0000642460 00000 n +0000642612 00000 n +0000642778 00000 n +0000642943 00000 n +0000643110 00000 n +0000643260 00000 n +0000643409 00000 n +0000643560 00000 n +0000643695 00000 n +0000643829 00000 n +0000643965 00000 n +0000644096 00000 n +0000644228 00000 n +0000644396 00000 n +0000644565 00000 n +0000644696 00000 n +0000644828 00000 n +0000644981 00000 n +0000645135 00000 n +0000645304 00000 n +0000645474 00000 n +0000645640 00000 n +0000645807 00000 n +0000645977 00000 n +0000646148 00000 n +0000646302 00000 n +0000646457 00000 n +0000646611 00000 n +0000646766 00000 n +0000646899 00000 n +0000647033 00000 n +0000647205 00000 n +0000647378 00000 n +0000647530 00000 n +0000647683 00000 n +0000647850 00000 n +0000648018 00000 n +0000648178 00000 n +0000648339 00000 n +0000648502 00000 n +0000648666 00000 n +0000648797 00000 n +0000648929 00000 n +0000649072 00000 n +0000649216 00000 n +0000700906 00000 n +0000701671 00000 n +0000701818 00000 n +0000701966 00000 n +0000702127 00000 n +0000702287 00000 n +0000702449 00000 n +0000702599 00000 n +0000702748 00000 n +0000702899 00000 n +0000703045 00000 n +0000703190 00000 n +0000703337 00000 n +0000703481 00000 n +0000703624 00000 n +0000703769 00000 n +0000703916 00000 n +0000704064 00000 n +0000704212 00000 n +0000704361 00000 n +0000704513 00000 n +0000704666 00000 n +0000704801 00000 n +0000704937 00000 n +0000705089 00000 n +0000705240 00000 n +0000705393 00000 n +0000705531 00000 n +0000705670 00000 n +0000705806 00000 n +0000705943 00000 n +0000706079 00000 n +0000706216 00000 n +0000706353 00000 n +0000706491 00000 n +0000706630 00000 n +0000706770 00000 n +0000706922 00000 n +0000707073 00000 n +0000707226 00000 n +0000707379 00000 n +0000707533 00000 n +0000707683 00000 n +0000707834 00000 n +0000707967 00000 n +0000708101 00000 n +0000708254 00000 n +0000708408 00000 n +0000708570 00000 n +0000708733 00000 n +0000708886 00000 n +0000709038 00000 n +0000709192 00000 n +0000709335 00000 n +0000709479 00000 n +0000709630 00000 n +0000709782 00000 n +0000709935 00000 n +0000710089 00000 n +0000710240 00000 n +0000710392 00000 n +0000710533 00000 n +0000710675 00000 n +0000710822 00000 n +0000710970 00000 n +0000711115 00000 n +0000711261 00000 n +0000711404 00000 n +0000711548 00000 n +0000711693 00000 n +0000711839 00000 n +0000711977 00000 n +0000712116 00000 n +0000773933 00000 n +0000774852 00000 n +0000774987 00000 n +0000775121 00000 n +0000775257 00000 n +0000775411 00000 n +0000775566 00000 n +0000775717 00000 n +0000775869 00000 n +0000776021 00000 n +0000776172 00000 n +0000776325 00000 n +0000776475 00000 n +0000776624 00000 n +0000776775 00000 n +0000776919 00000 n +0000777064 00000 n +0000777215 00000 n +0000777367 00000 n +0000777527 00000 n +0000777688 00000 n +0000777860 00000 n +0000778033 00000 n +0000778184 00000 n +0000778334 00000 n +0000778486 00000 n +0000778632 00000 n +0000778779 00000 n +0000778926 00000 n +0000779074 00000 n +0000779221 00000 n +0000779369 00000 n +0000779527 00000 n +0000779686 00000 n +0000779835 00000 n +0000779985 00000 n +0000780120 00000 n +0000780254 00000 n +0000780390 00000 n +0000780541 00000 n +0000780691 00000 n +0000780843 00000 n +0000781001 00000 n +0000781158 00000 n +0000781317 00000 n +0000781453 00000 n +0000781588 00000 n +0000781725 00000 n +0000781888 00000 n +0000782050 00000 n +0000782214 00000 n +0000782360 00000 n +0000782505 00000 n +0000782652 00000 n +0000782787 00000 n +0000782921 00000 n +0000783057 00000 n +0000783197 00000 n +0000783336 00000 n +0000783477 00000 n +0000783632 00000 n +0000783786 00000 n +0000783942 00000 n +0000784089 00000 n +0000784235 00000 n +0000784383 00000 n +0000784543 00000 n +0000784702 00000 n +0000784863 00000 n +0000785040 00000 n +0000785216 00000 n +0000785394 00000 n +0000785547 00000 n +0000785699 00000 n +0000785853 00000 n +0000786004 00000 n +0000786154 00000 n +0000786306 00000 n +0000786447 00000 n +0000786587 00000 n +0000786729 00000 n +0000786869 00000 n +0000787008 00000 n +0000787149 00000 n +0000787289 00000 n +0000787428 00000 n +0000787569 00000 n +0000787703 00000 n +0000787836 00000 n +0000787971 00000 n +0000840990 00000 n +0000841853 00000 n +0000842002 00000 n +0000842150 00000 n +0000842300 00000 n +0000842443 00000 n +0000842585 00000 n +0000842729 00000 n +0000842863 00000 n +0000842996 00000 n +0000843131 00000 n +0000843271 00000 n +0000843412 00000 n +0000843549 00000 n +0000843687 00000 n +0000843828 00000 n +0000843968 00000 n +0000844110 00000 n +0000844259 00000 n +0000844409 00000 n +0000844552 00000 n +0000844696 00000 n +0000844834 00000 n +0000844973 00000 n +0000845109 00000 n +0000845246 00000 n +0000845383 00000 n +0000845519 00000 n +0000845657 00000 n +0000845804 00000 n +0000845952 00000 n +0000846107 00000 n +0000846263 00000 n +0000846414 00000 n +0000846566 00000 n +0000846714 00000 n +0000846863 00000 n +0000847015 00000 n +0000847168 00000 n +0000847318 00000 n +0000847469 00000 n +0000847618 00000 n +0000847768 00000 n +0000847912 00000 n +0000848057 00000 n +0000848197 00000 n +0000848338 00000 n +0000848483 00000 n +0000848629 00000 n +0000848767 00000 n +0000848906 00000 n +0000849046 00000 n +0000849185 00000 n +0000849326 00000 n +0000849468 00000 n +0000849611 00000 n +0000849750 00000 n +0000849888 00000 n +0000850028 00000 n +0000850192 00000 n +0000850355 00000 n +0000850520 00000 n +0000850674 00000 n +0000850827 00000 n +0000850982 00000 n +0000851134 00000 n +0000851285 00000 n +0000851438 00000 n +0000851595 00000 n +0000851751 00000 n +0000851909 00000 n +0000852071 00000 n +0000852232 00000 n +0000852395 00000 n +0000852563 00000 n +0000852730 00000 n +0000852899 00000 n +0000853064 00000 n +0000853228 00000 n +0000853394 00000 n +0000853552 00000 n +0000853709 00000 n +0000853868 00000 n +0000905219 00000 n +0000906202 00000 n +0000906365 00000 n +0000906527 00000 n +0000906691 00000 n +0000906856 00000 n +0000907020 00000 n +0000907186 00000 n +0000907363 00000 n +0000907539 00000 n +0000907717 00000 n +0000907871 00000 n +0000908024 00000 n +0000908179 00000 n +0000908337 00000 n +0000908494 00000 n +0000908653 00000 n +0000908849 00000 n +0000909044 00000 n +0000909241 00000 n +0000909412 00000 n +0000909582 00000 n +0000909754 00000 n +0000909934 00000 n +0000910115 00000 n +0000910286 00000 n +0000910458 00000 n +0000910634 00000 n +0000910811 00000 n +0000910981 00000 n +0000911150 00000 n +0000911321 00000 n +0000911490 00000 n +0000911658 00000 n +0000911828 00000 n +0000911984 00000 n +0000912139 00000 n +0000912296 00000 n +0000912457 00000 n +0000912617 00000 n +0000912779 00000 n +0000912933 00000 n +0000913086 00000 n +0000913241 00000 n +0000913400 00000 n +0000913558 00000 n +0000913718 00000 n +0000913877 00000 n +0000914035 00000 n +0000914195 00000 n +0000914349 00000 n +0000914502 00000 n +0000914657 00000 n +0000914805 00000 n +0000914952 00000 n +0000915101 00000 n +0000915255 00000 n +0000915408 00000 n +0000915563 00000 n +0000915714 00000 n +0000915864 00000 n +0000916016 00000 n +0000916166 00000 n +0000916315 00000 n +0000916466 00000 n +0000916612 00000 n +0000916757 00000 n +0000916904 00000 n +0000917050 00000 n +0000917195 00000 n +0000917342 00000 n +0000917491 00000 n +0000917639 00000 n +0000917789 00000 n +0000917935 00000 n +0000918080 00000 n +0000918227 00000 n +0000918381 00000 n +0000918534 00000 n +0000918689 00000 n +0000918830 00000 n +0000918970 00000 n +0000919112 00000 n +0000919264 00000 n +0000919415 00000 n +0000919568 00000 n +0000919720 00000 n +0000919871 00000 n +0000920024 00000 n +0000920170 00000 n +0000920315 00000 n +0000920462 00000 n +0000920614 00000 n +0000920765 00000 n +0000920918 00000 n +0000921072 00000 n +0000921225 00000 n +0000921380 00000 n +0000964066 00000 n +0000965073 00000 n +0000965222 00000 n +0000965370 00000 n +0000965520 00000 n +0000965669 00000 n +0000965817 00000 n +0000965967 00000 n +0000966128 00000 n +0000966288 00000 n +0000966450 00000 n +0000966602 00000 n +0000966753 00000 n +0000966906 00000 n +0000967055 00000 n +0000967203 00000 n +0000967353 00000 n +0000967502 00000 n +0000967650 00000 n +0000967800 00000 n +0000967953 00000 n +0000968105 00000 n +0000968259 00000 n +0000968409 00000 n +0000968558 00000 n +0000968709 00000 n +0000968862 00000 n +0000969014 00000 n +0000969168 00000 n +0000969318 00000 n +0000969467 00000 n +0000969618 00000 n +0000969768 00000 n +0000969917 00000 n +0000970068 00000 n +0000970221 00000 n +0000970373 00000 n +0000970527 00000 n +0000970677 00000 n +0000970826 00000 n +0000970977 00000 n +0000971127 00000 n +0000971276 00000 n +0000971427 00000 n +0000971577 00000 n +0000971726 00000 n +0000971877 00000 n +0000972030 00000 n +0000972182 00000 n +0000972336 00000 n +0000972486 00000 n +0000972635 00000 n +0000972786 00000 n +0000972939 00000 n +0000973091 00000 n +0000973245 00000 n +0000973398 00000 n +0000973550 00000 n +0000973704 00000 n +0000973854 00000 n +0000974003 00000 n +0000974154 00000 n +0000974304 00000 n +0000974453 00000 n +0000974604 00000 n +0000974757 00000 n +0000974909 00000 n +0000975063 00000 n +0000975213 00000 n +0000975362 00000 n +0000975513 00000 n +0000975666 00000 n +0000975818 00000 n +0000975972 00000 n +0000976122 00000 n +0000976271 00000 n +0000976422 00000 n +0000976572 00000 n +0000976721 00000 n +0000976872 00000 n +0000977020 00000 n +0000977167 00000 n +0000977316 00000 n +0000977466 00000 n +0000977615 00000 n +0000977766 00000 n +0000977902 00000 n +0000978037 00000 n +0000978174 00000 n +0000978345 00000 n +0000978515 00000 n +0000978687 00000 n +0000978844 00000 n +0000979000 00000 n +0000979158 00000 n +0000979341 00000 n +0000979523 00000 n +0000979707 00000 n +0000979875 00000 n +0000980042 00000 n +0000980211 00000 n +0001000012 00000 n +0001000587 00000 n +0001000760 00000 n +0001000932 00000 n +0001001106 00000 n +0001001267 00000 n +0001001427 00000 n +0001001589 00000 n +0001001736 00000 n +0001001882 00000 n +0001002030 00000 n +0001002193 00000 n +0001002355 00000 n +0001002519 00000 n +0001002664 00000 n +0001002808 00000 n +0001002954 00000 n +0001003113 00000 n +0001003271 00000 n +0001003431 00000 n +0001003598 00000 n +0001003764 00000 n +0001003932 00000 n +0001004107 00000 n +0001004281 00000 n +0001004457 00000 n +0001004634 00000 n +0001004810 00000 n +0001004988 00000 n +0001005159 00000 n +0001005329 00000 n +0001005501 00000 n +0001005654 00000 n +0001005806 00000 n +0001005960 00000 n +0001006109 00000 n +0001006257 00000 n +0001006407 00000 n +0001006560 00000 n +0001006712 00000 n +0001006866 00000 n +0001007015 00000 n +0001007163 00000 n +0001007313 00000 n +0001007484 00000 n +0001007654 00000 n +0001007826 00000 n +0001010767 00000 n +0001010990 00000 n +0001011174 00000 n +0001011640 00000 n +0001011863 00000 n +0001012047 00000 n +0001016137 00000 n +0001016384 00000 n +0001016570 00000 n +0001016762 00000 n +0001016955 00000 n +0001017149 00000 n +0001020143 00000 n +0001020346 00000 n +0001026676 00000 n +0001026879 00000 n +0001028782 00000 n +0001029021 00000 n +0001029218 00000 n +0001029416 00000 n +0001029615 00000 n +0001031552 00000 n +0001031775 00000 n +0001031960 00000 n +0001035792 00000 n +0001036023 00000 n +0001036209 00000 n +0001036396 00000 n +0001042936 00000 n +0001043139 00000 n +0001044699 00000 n +0001044946 00000 n +0001045131 00000 n +0001045317 00000 n +0001045504 00000 n +0001045690 00000 n +0001047172 00000 n +0001047411 00000 n +0001047599 00000 n +0001047788 00000 n +0001047979 00000 n +0001052421 00000 n +0001052652 00000 n +0001052844 00000 n +0001053037 00000 n +0001055508 00000 n +0001055711 00000 n +0001058532 00000 n +0001058735 00000 n +0001061365 00000 n +0001061568 00000 n +0001066563 00000 n +0001066766 00000 n +0001073311 00000 n +0001073534 00000 n +0001073722 00000 n +0001074815 00000 n +0001075054 00000 n +0001075243 00000 n +0001075433 00000 n +0001075621 00000 n +0001076958 00000 n +0001077189 00000 n +0001077378 00000 n +0001077568 00000 n +0001079358 00000 n +0001079605 00000 n +0001079796 00000 n +0001079988 00000 n +0001080181 00000 n +0001080368 00000 n +0001081347 00000 n +0001081578 00000 n +0001081766 00000 n +0001081955 00000 n +0001083085 00000 n +0001083324 00000 n +0001083514 00000 n +0001083704 00000 n +0001083894 00000 n +0001086255 00000 n +0001086478 00000 n +0001086669 00000 n +0001088578 00000 n +0001088809 00000 n +0001089001 00000 n +0001089194 00000 n +0001091212 00000 n +0001091451 00000 n +0001091639 00000 n +0001091828 00000 n +0001092018 00000 n +0001093608 00000 n +0001093847 00000 n +0001094035 00000 n +0001094224 00000 n +0001094414 00000 n +0001096122 00000 n +0001096345 00000 n +0001096538 00000 n +0001097436 00000 n +0001097667 00000 n +0001097861 00000 n +0001098056 00000 n +0001100482 00000 n +0001100705 00000 n +0001100901 00000 n +0001102313 00000 n +0001102552 00000 n +0001102749 00000 n +0001102947 00000 n +0001103133 00000 n +0001104436 00000 n +0001104675 00000 n +0001104864 00000 n +0001105054 00000 n +0001105248 00000 n +0001106369 00000 n +0001106608 00000 n +0001106804 00000 n +0001107001 00000 n +0001107203 00000 n +0001107800 00000 n +0001108031 00000 n +0001108234 00000 n +0001108437 00000 n +0001111373 00000 n +0001111576 00000 n +0001112916 00000 n +0001113119 00000 n +0001115222 00000 n +0001115461 00000 n +0001115653 00000 n +0001115846 00000 n +0001116040 00000 n +0001118808 00000 n +0001119011 00000 n +0001120647 00000 n +0001120886 00000 n +0001121076 00000 n +0001121267 00000 n +0001121459 00000 n +0001123403 00000 n +0001123642 00000 n +0001123831 00000 n +0001124021 00000 n +0001124212 00000 n +0001127286 00000 n +0001127489 00000 n +0001130020 00000 n +0001130223 00000 n +0001134374 00000 n +0001134577 00000 n +0001138995 00000 n +0001139198 00000 n +0001143751 00000 n +0001143954 00000 n +0001146790 00000 n +0001146993 00000 n +0001149011 00000 n +0001149258 00000 n +0001149451 00000 n +0001149645 00000 n +0001149840 00000 n +0001150033 00000 n +0001154259 00000 n +0001154490 00000 n +0001154686 00000 n +0001154883 00000 n +0001158399 00000 n +0001158670 00000 n +0001158864 00000 n +0001159059 00000 n +0001159255 00000 n +0001159453 00000 n +0001159652 00000 n +0001159852 00000 n +0001160036 00000 n +0001162875 00000 n +0001163106 00000 n +0001163292 00000 n +0001163480 00000 n +0001165877 00000 n +0001166080 00000 n +0001168455 00000 n +0001168658 00000 n +0001171157 00000 n +0001171360 00000 n +0001172284 00000 n +0001172531 00000 n +0001172723 00000 n +0001172916 00000 n +0001173110 00000 n +0001173308 00000 n +0001175014 00000 n +0001175245 00000 n +0001175444 00000 n +0001175644 00000 n +0001177545 00000 n +0001177768 00000 n +0001177972 00000 n +0001178668 00000 n +0001178899 00000 n +0001179104 00000 n +0001179310 00000 n +0001180308 00000 n +0001180643 00000 n +0001180836 00000 n +0001181030 00000 n +0001181225 00000 n +0001181420 00000 n +0001181616 00000 n +0001181813 00000 n +0001182012 00000 n +0001182211 00000 n +0001182412 00000 n +0001182607 00000 n +0001182803 00000 n +0001183000 00000 n +0001183198 00000 n +0001183397 00000 n +0001183597 00000 n +0001186304 00000 n +0001186543 00000 n +0001186744 00000 n +0001186946 00000 n +0001187149 00000 n +0001188185 00000 n +0001188456 00000 n +0001188643 00000 n +0001188831 00000 n +0001189020 00000 n +0001189204 00000 n +0001189389 00000 n +0001189575 00000 n +0001189758 00000 n +0001190401 00000 n +0001190664 00000 n +0001190850 00000 n +0001191037 00000 n +0001191226 00000 n +0001191416 00000 n +0001191607 00000 n +0001191790 00000 n +0001193590 00000 n +0001193845 00000 n +0001194029 00000 n +0001194214 00000 n +0001194406 00000 n +0001194599 00000 n +0001194793 00000 n +0001196610 00000 n +0001196921 00000 n +0001197121 00000 n +0001197322 00000 n +0001197524 00000 n +0001197724 00000 n +0001197925 00000 n +0001198127 00000 n +0001198322 00000 n +0001198518 00000 n +0001198715 00000 n +0001198914 00000 n +0001199114 00000 n +0001199315 00000 n +0001201745 00000 n +0001201968 00000 n +0001202164 00000 n +0001203958 00000 n +0001204237 00000 n +0001204436 00000 n +0001204636 00000 n +0001204842 00000 n +0001205049 00000 n +0001205257 00000 n +0001205457 00000 n +0001205658 00000 n +0001205860 00000 n +0001207901 00000 n +0001208188 00000 n +0001208386 00000 n +0001208585 00000 n +0001208785 00000 n +0001208987 00000 n +0001209190 00000 n +0001209394 00000 n +0001209591 00000 n +0001209789 00000 n +0001209988 00000 n +0001211741 00000 n +0001211980 00000 n +0001212162 00000 n +0001212345 00000 n +0001212529 00000 n +0001214386 00000 n +0001214697 00000 n +0001214891 00000 n +0001215086 00000 n +0001215282 00000 n +0001215476 00000 n +0001215671 00000 n +0001215867 00000 n +0001216061 00000 n +0001216256 00000 n +0001216452 00000 n +0001216646 00000 n +0001216841 00000 n +0001217037 00000 n +0001219077 00000 n +0001219348 00000 n +0001219538 00000 n +0001219729 00000 n +0001219921 00000 n +0001220114 00000 n +0001220307 00000 n +0001220502 00000 n +0001220692 00000 n +0001221543 00000 n +0001221854 00000 n +0001222045 00000 n +0001222237 00000 n +0001222429 00000 n +0001222622 00000 n +0001222816 00000 n +0001223006 00000 n +0001223197 00000 n +0001223389 00000 n +0001223587 00000 n +0001223786 00000 n +0001223986 00000 n +0001224175 00000 n +0001226064 00000 n +0001226351 00000 n +0001226541 00000 n +0001226732 00000 n +0001226922 00000 n +0001227112 00000 n +0001227304 00000 n +0001227497 00000 n +0001227691 00000 n +0001227886 00000 n +0001228093 00000 n +0001229537 00000 n +0001229840 00000 n +0001230049 00000 n +0001230260 00000 n +0001230453 00000 n +0001230646 00000 n +0001230841 00000 n +0001231034 00000 n +0001231228 00000 n +0001231423 00000 n +0001231614 00000 n +0001231806 00000 n +0001231999 00000 n +0001233721 00000 n +0001233924 00000 n +0001235742 00000 n +0001235989 00000 n 0001236186 00000 n -0001236376 00000 n -0001236567 00000 n -0001236759 00000 n -0001239616 00000 n -0001239855 00000 n -0001240055 00000 n -0001240255 00000 n -0001240455 00000 n -0001243071 00000 n -0001243310 00000 n -0001243514 00000 n -0001243719 00000 n -0001243925 00000 n -0001247066 00000 n -0001247305 00000 n -0001247503 00000 n -0001247702 00000 n -0001247902 00000 n -0001250135 00000 n -0001250382 00000 n -0001250582 00000 n -0001250783 00000 n -0001250985 00000 n -0001251187 00000 n -0001253844 00000 n -0001254075 00000 n -0001254278 00000 n -0001254482 00000 n -0001259827 00000 n -0001260030 00000 n -0001263849 00000 n -0001264052 00000 n -0001267422 00000 n -0001267645 00000 n -0001267834 00000 n -0001270105 00000 n -0001270336 00000 n -0001270526 00000 n -0001270717 00000 n -0001276180 00000 n -0001276383 00000 n -0001279139 00000 n -0001279342 00000 n -0001289056 00000 n -0001289259 00000 n -0001293556 00000 n -0001293759 00000 n -0001297760 00000 n -0001297999 00000 n -0001298244 00000 n -0001298484 00000 n -0001298679 00000 n -0001302640 00000 n -0001302871 00000 n -0001303067 00000 n -0001303264 00000 n -0001305452 00000 n -0001305675 00000 n -0001305872 00000 n -0001307573 00000 n -0001307804 00000 n -0001308002 00000 n -0001308201 00000 n -0001309678 00000 n -0001309917 00000 n -0001310102 00000 n -0001310288 00000 n -0001310475 00000 n -0001314459 00000 n -0001314664 00000 n -0001318398 00000 n -0001318603 00000 n -0001320583 00000 n -0001320818 00000 n -0001321021 00000 n -0001321208 00000 n -0001321939 00000 n -0001322183 00000 n -0001322371 00000 n -0001322560 00000 n -0001322746 00000 n -0001324261 00000 n -0001324514 00000 n -0001324701 00000 n -0001324889 00000 n -0001325075 00000 n -0001325265 00000 n -0001326330 00000 n -0001326574 00000 n -0001326765 00000 n -0001326957 00000 n -0001327145 00000 n -0001329317 00000 n -0001329552 00000 n -0001329741 00000 n -0001329931 00000 n -0001331256 00000 n -0001331509 00000 n -0001331697 00000 n -0001331886 00000 n -0001332076 00000 n -0001332271 00000 n -0001333151 00000 n -0001333395 00000 n -0001333591 00000 n -0001333788 00000 n -0001333973 00000 n -0001335066 00000 n -0001335301 00000 n -0001335487 00000 n -0001335674 00000 n -0001338401 00000 n -0001338636 00000 n -0001338837 00000 n -0001339032 00000 n -0001340503 00000 n -0001340738 00000 n -0001340934 00000 n -0001341131 00000 n -0001342220 00000 n -0001342491 00000 n -0001342692 00000 n -0001342894 00000 n -0001343097 00000 n -0001343302 00000 n -0001343508 00000 n -0001343715 00000 n -0001345922 00000 n -0001346175 00000 n -0001346369 00000 n -0001346564 00000 n -0001346760 00000 n -0001346956 00000 n -0001347689 00000 n -0001347933 00000 n -0001348131 00000 n -0001348330 00000 n -0001348521 00000 n -0001349516 00000 n -0001349760 00000 n -0001349952 00000 n -0001350145 00000 n -0001350334 00000 n -0001351679 00000 n -0001351941 00000 n -0001352131 00000 n -0001352322 00000 n -0001352510 00000 n -0001352699 00000 n -0001352889 00000 n -0001354592 00000 n -0001354872 00000 n -0001355067 00000 n -0001355263 00000 n -0001355460 00000 n -0001355645 00000 n -0001355831 00000 n -0001356018 00000 n -0001356212 00000 n -0001357359 00000 n -0001357603 00000 n -0001357800 00000 n -0001357998 00000 n -0001358189 00000 n -0001359893 00000 n -0001360137 00000 n -0001360329 00000 n -0001360522 00000 n -0001360710 00000 n -0001361769 00000 n -0001362013 00000 n -0001362204 00000 n -0001362396 00000 n -0001362584 00000 n -0001363788 00000 n -0001364032 00000 n -0001364221 00000 n -0001364411 00000 n -0001364601 00000 n -0001366071 00000 n -0001366315 00000 n -0001366506 00000 n -0001366698 00000 n -0001366883 00000 n -0001368372 00000 n -0001368616 00000 n -0001368802 00000 n -0001368989 00000 n -0001369178 00000 n -0001370277 00000 n -0001370539 00000 n -0001370729 00000 n -0001370920 00000 n -0001371106 00000 n -0001371293 00000 n -0001371481 00000 n -0001372063 00000 n -0001372289 00000 n -0001372478 00000 n -0001372923 00000 n -0001373149 00000 n -0001373338 00000 n -0001375549 00000 n -0001375775 00000 n -0001375966 00000 n -0001380200 00000 n -0001380426 00000 n -0001380618 00000 n -0001384748 00000 n -0001384983 00000 n -0001385176 00000 n -0001385370 00000 n -0001386012 00000 n -0001386217 00000 n -0001386674 00000 n -0001386879 00000 n -0001387350 00000 n -0001387555 00000 n -0001388015 00000 n -0001388220 00000 n -0001390695 00000 n -0001390921 00000 n -0001391113 00000 n -0001393797 00000 n -0001394086 00000 n -0001394279 00000 n -0001394473 00000 n -0001394665 00000 n -0001394858 00000 n -0001395052 00000 n -0001395244 00000 n -0001395437 00000 n -0001395631 00000 n -0001398697 00000 n -0001398923 00000 n -0001399118 00000 n -0001399817 00000 n -0001400061 00000 n -0001400257 00000 n -0001400454 00000 n -0001400649 00000 n -0001401466 00000 n -0001401710 00000 n -0001401906 00000 n -0001402103 00000 n -0001402298 00000 n -0001403113 00000 n -0001403357 00000 n -0001403553 00000 n -0001403750 00000 n -0001403940 00000 n -0001404765 00000 n -0001405036 00000 n -0001405227 00000 n -0001405419 00000 n -0001405610 00000 n -0001405802 00000 n -0001405995 00000 n -0001406190 00000 n -0001407206 00000 n -0001407441 00000 n -0001407637 00000 n -0001407834 00000 n -0001410850 00000 n -0001411076 00000 n -0001411271 00000 n -0001412137 00000 n -0001412381 00000 n -0001412577 00000 n -0001412774 00000 n -0001412969 00000 n -0001413705 00000 n -0001413949 00000 n -0001414145 00000 n -0001414342 00000 n -0001414537 00000 n -0001415687 00000 n -0001415922 00000 n -0001416118 00000 n -0001416315 00000 n -0001417422 00000 n -0001417675 00000 n -0001417872 00000 n -0001418070 00000 n -0001418269 00000 n -0001418465 00000 n -0001419344 00000 n -0001419588 00000 n -0001419786 00000 n -0001419985 00000 n -0001420182 00000 n -0001421309 00000 n -0001421544 00000 n -0001421742 00000 n -0001421941 00000 n -0001423642 00000 n -0001423886 00000 n -0001424085 00000 n -0001424285 00000 n -0001424486 00000 n -0001425910 00000 n -0001426181 00000 n -0001426380 00000 n -0001426580 00000 n -0001426781 00000 n -0001426980 00000 n -0001427180 00000 n -0001427381 00000 n -0001429079 00000 n -0001429305 00000 n -0001429510 00000 n -0001430138 00000 n -0001430373 00000 n -0001430579 00000 n -0001430786 00000 n -0001434802 00000 n -0001435007 00000 n -0001438430 00000 n -0001438635 00000 n -0001441034 00000 n -0001441278 00000 n -0001441473 00000 n -0001441669 00000 n -0001441866 00000 n -0001443086 00000 n -0001443366 00000 n -0001443561 00000 n -0001443757 00000 n -0001443954 00000 n -0001444149 00000 n -0001444345 00000 n -0001444542 00000 n -0001444735 00000 n -0001445617 00000 n -0001445888 00000 n -0001446084 00000 n -0001446281 00000 n -0001446476 00000 n -0001446672 00000 n -0001446869 00000 n -0001447062 00000 n -0001449866 00000 n -0001450128 00000 n -0001450322 00000 n -0001450517 00000 n -0001450703 00000 n -0001450890 00000 n -0001451078 00000 n -0001455249 00000 n -0001455454 00000 n -0001456939 00000 n -0001457237 00000 n -0001457426 00000 n -0001457616 00000 n -0001457807 00000 n -0001457996 00000 n -0001458186 00000 n -0001458377 00000 n -0001458572 00000 n -0001458768 00000 n -0001458965 00000 n -0001460905 00000 n -0001461158 00000 n -0001461348 00000 n -0001461539 00000 n -0001461731 00000 n -0001461926 00000 n -0001463077 00000 n -0001463339 00000 n -0001463535 00000 n -0001463732 00000 n -0001463927 00000 n -0001464123 00000 n -0001464320 00000 n -0001466701 00000 n -0001466945 00000 n -0001467140 00000 n -0001467336 00000 n -0001467533 00000 n -0001470087 00000 n -0001470313 00000 n -0001470508 00000 n -0001471606 00000 n -0001471841 00000 n -0001472037 00000 n -0001472234 00000 n -0001474896 00000 n -0001475101 00000 n -0001477722 00000 n -0001477948 00000 n -0001478143 00000 n -0001479820 00000 n -0001480118 00000 n -0001480314 00000 n -0001480511 00000 n -0001480704 00000 n -0001480898 00000 n -0001481093 00000 n -0001481288 00000 n -0001481484 00000 n -0001481681 00000 n -0001481876 00000 n -0001482731 00000 n -0001482975 00000 n -0001483172 00000 n -0001483370 00000 n -0001483563 00000 n -0001484886 00000 n -0001485121 00000 n -0001485315 00000 n -0001485510 00000 n -0001487680 00000 n -0001487885 00000 n -0001490424 00000 n -0001490629 00000 n -0001493205 00000 n -0001493410 00000 n -0001495322 00000 n -0001495629 00000 n -0001495813 00000 n -0001495998 00000 n -0001496184 00000 n -0001496368 00000 n -0001496553 00000 n -0001496739 00000 n -0001496923 00000 n -0001497108 00000 n -0001497294 00000 n -0001497481 00000 n -0001498651 00000 n -0001498949 00000 n -0001499139 00000 n -0001499330 00000 n -0001499519 00000 n -0001499709 00000 n -0001499900 00000 n -0001500096 00000 n -0001500293 00000 n -0001500491 00000 n -0001500677 00000 n -0001501875 00000 n -0001502191 00000 n -0001502380 00000 n -0001502570 00000 n -0001502760 00000 n -0001502951 00000 n -0001503143 00000 n -0001503329 00000 n -0001503516 00000 n -0001503704 00000 n -0001503893 00000 n -0001504083 00000 n -0001504274 00000 n -0001506231 00000 n -0001506475 00000 n -0001506669 00000 n -0001506864 00000 n -0001507060 00000 n -0001509320 00000 n -0001509525 00000 n -0001511873 00000 n -0001512153 00000 n -0001512340 00000 n -0001512527 00000 n -0001512716 00000 n -0001512902 00000 n -0001513088 00000 n -0001513276 00000 n -0001513467 00000 n -0001516537 00000 n -0001516772 00000 n -0001516965 00000 n -0001517159 00000 n -0001519050 00000 n -0001519303 00000 n -0001519493 00000 n -0001519684 00000 n -0001519876 00000 n -0001520065 00000 n -0001521488 00000 n -0001521723 00000 n -0001521913 00000 n -0001522104 00000 n -0001523995 00000 n -0001524200 00000 n -0001526215 00000 n -0001526513 00000 n -0001526710 00000 n -0001526907 00000 n -0001527106 00000 n -0001527306 00000 n -0001527506 00000 n -0001527708 00000 n -0001527899 00000 n -0001528091 00000 n -0001528284 00000 n -0001529771 00000 n -0001530042 00000 n -0001530232 00000 n -0001530423 00000 n -0001530615 00000 n -0001530805 00000 n -0001530996 00000 n -0001531188 00000 n -0001534451 00000 n -0001534656 00000 n -0001538577 00000 n -0001538782 00000 n -0001542069 00000 n -0001542274 00000 n -0001544456 00000 n -0001544661 00000 n -0001546683 00000 n -0001546909 00000 n -0001547094 00000 n -0001547536 00000 n -0001547762 00000 n -0001547947 00000 n -0001548634 00000 n -0001548869 00000 n -0001549056 00000 n -0001549241 00000 n -0001549683 00000 n -0001549909 00000 n -0001550094 00000 n -0001553278 00000 n -0001553504 00000 n -0001553691 00000 n -0001556608 00000 n -0001556813 00000 n -0001560305 00000 n -0001560510 00000 n -0001564589 00000 n -0001564794 00000 n -0001569001 00000 n -0001569206 00000 n -0001572472 00000 n -0001572677 00000 n -0001574502 00000 n -0001574755 00000 n -0001574943 00000 n -0001575132 00000 n -0001575322 00000 n -0001575512 00000 n -0001576912 00000 n -0001577228 00000 n -0001577420 00000 n -0001577613 00000 n -0001577804 00000 n -0001577996 00000 n -0001578189 00000 n -0001578386 00000 n -0001578584 00000 n -0001578783 00000 n -0001578980 00000 n -0001579178 00000 n -0001579377 00000 n -0001582301 00000 n -0001582506 00000 n -0001584193 00000 n -0001584437 00000 n -0001584632 00000 n -0001584828 00000 n -0001585025 00000 n -0001586992 00000 n -0001587218 00000 n -0001587408 00000 n -0001587941 00000 n -0001588185 00000 n -0001588376 00000 n -0001588568 00000 n -0001588757 00000 n -0001589840 00000 n -0001590075 00000 n -0001590265 00000 n -0001590456 00000 n -0001593459 00000 n +0001236384 00000 n +0001236583 00000 n +0001236774 00000 n +0001237587 00000 n +0001237818 00000 n +0001238010 00000 n +0001238203 00000 n +0001239225 00000 n +0001239428 00000 n +0001241860 00000 n +0001242083 00000 n +0001242271 00000 n +0001242805 00000 n +0001243044 00000 n +0001243233 00000 n +0001243423 00000 n +0001243612 00000 n +0001244128 00000 n +0001244367 00000 n +0001244557 00000 n +0001244748 00000 n +0001244939 00000 n +0001246051 00000 n +0001246282 00000 n +0001246474 00000 n +0001246667 00000 n +0001249316 00000 n +0001249587 00000 n +0001249774 00000 n +0001249962 00000 n +0001250151 00000 n +0001250344 00000 n +0001250538 00000 n +0001250733 00000 n +0001250921 00000 n +0001253140 00000 n +0001253395 00000 n +0001253586 00000 n +0001253778 00000 n +0001253970 00000 n +0001254163 00000 n +0001254357 00000 n +0001256570 00000 n +0001256809 00000 n +0001257007 00000 n +0001257206 00000 n +0001257406 00000 n +0001259532 00000 n +0001259779 00000 n +0001259966 00000 n +0001260154 00000 n +0001260343 00000 n +0001260531 00000 n +0001262725 00000 n +0001262956 00000 n +0001263145 00000 n +0001263335 00000 n +0001266792 00000 n +0001266995 00000 n +0001270913 00000 n +0001271116 00000 n +0001274120 00000 n +0001274359 00000 n +0001274549 00000 n +0001274740 00000 n +0001274932 00000 n +0001277938 00000 n +0001278164 00000 n +0001278365 00000 n +0001279842 00000 n +0001280086 00000 n +0001280288 00000 n +0001280491 00000 n +0001280696 00000 n +0001284167 00000 n +0001284402 00000 n +0001284608 00000 n +0001284815 00000 n +0001286624 00000 n +0001286895 00000 n +0001287094 00000 n +0001287294 00000 n +0001287495 00000 n +0001287696 00000 n +0001287898 00000 n +0001288100 00000 n +0001290078 00000 n +0001290322 00000 n +0001290525 00000 n +0001290729 00000 n +0001290934 00000 n +0001294320 00000 n +0001294525 00000 n +0001299543 00000 n +0001299748 00000 n +0001304143 00000 n +0001304348 00000 n +0001307234 00000 n +0001307478 00000 n +0001307668 00000 n +0001307859 00000 n +0001308051 00000 n +0001313314 00000 n +0001313519 00000 n +0001316442 00000 n +0001316647 00000 n +0001321636 00000 n +0001321841 00000 n +0001324096 00000 n +0001324340 00000 n +0001324536 00000 n +0001324733 00000 n +0001324931 00000 n +0001326781 00000 n +0001327034 00000 n +0001327231 00000 n +0001327429 00000 n +0001327628 00000 n +0001327815 00000 n +0001328702 00000 n +0001328937 00000 n +0001329125 00000 n +0001329314 00000 n +0001333123 00000 n +0001333328 00000 n +0001336252 00000 n +0001336457 00000 n +0001340754 00000 n +0001340998 00000 n +0001341184 00000 n +0001341371 00000 n +0001341559 00000 n +0001346918 00000 n +0001347123 00000 n +0001349758 00000 n +0001349963 00000 n +0001355442 00000 n +0001355647 00000 n +0001358632 00000 n +0001358837 00000 n +0001363784 00000 n +0001363989 00000 n +0001366208 00000 n +0001366413 00000 n +0001368714 00000 n +0001368919 00000 n +0001370548 00000 n +0001370753 00000 n +0001373147 00000 n +0001373352 00000 n +0001375960 00000 n +0001376165 00000 n +0001380327 00000 n +0001380532 00000 n +0001382292 00000 n +0001382497 00000 n +0001384577 00000 n +0001384782 00000 n +0001388786 00000 n +0001389030 00000 n +0001389276 00000 n +0001389517 00000 n +0001389713 00000 n +0001393675 00000 n +0001393910 00000 n +0001394107 00000 n +0001394305 00000 n +0001396497 00000 n +0001396723 00000 n +0001396921 00000 n +0001398625 00000 n +0001398860 00000 n +0001399059 00000 n +0001399259 00000 n +0001400738 00000 n +0001400982 00000 n +0001401168 00000 n +0001401355 00000 n +0001401543 00000 n +0001405527 00000 n +0001405732 00000 n +0001409465 00000 n +0001409670 00000 n +0001411650 00000 n +0001411885 00000 n +0001412088 00000 n +0001412275 00000 n +0001413006 00000 n +0001413250 00000 n +0001413438 00000 n +0001413627 00000 n +0001413813 00000 n +0001415328 00000 n +0001415581 00000 n +0001415768 00000 n +0001415956 00000 n +0001416142 00000 n +0001416332 00000 n +0001417399 00000 n +0001417643 00000 n +0001417834 00000 n +0001418026 00000 n +0001418214 00000 n +0001420387 00000 n +0001420622 00000 n +0001420811 00000 n +0001421001 00000 n +0001422326 00000 n +0001422579 00000 n +0001422767 00000 n +0001422956 00000 n +0001423146 00000 n +0001423341 00000 n +0001424222 00000 n +0001424466 00000 n +0001424662 00000 n +0001424859 00000 n +0001425044 00000 n +0001426136 00000 n +0001426371 00000 n +0001426557 00000 n +0001426744 00000 n +0001429469 00000 n +0001429704 00000 n +0001429905 00000 n +0001430100 00000 n +0001431570 00000 n +0001431805 00000 n +0001432001 00000 n +0001432198 00000 n +0001433283 00000 n +0001433554 00000 n +0001433755 00000 n +0001433957 00000 n +0001434160 00000 n +0001434365 00000 n +0001434571 00000 n +0001434778 00000 n +0001436983 00000 n +0001437236 00000 n +0001437430 00000 n +0001437625 00000 n +0001437821 00000 n +0001438017 00000 n +0001438749 00000 n +0001438993 00000 n +0001439191 00000 n +0001439390 00000 n +0001439581 00000 n +0001440575 00000 n +0001440819 00000 n +0001441011 00000 n +0001441204 00000 n +0001441393 00000 n +0001442736 00000 n +0001442998 00000 n +0001443188 00000 n +0001443379 00000 n +0001443567 00000 n +0001443756 00000 n +0001443946 00000 n +0001445650 00000 n +0001445930 00000 n +0001446125 00000 n +0001446321 00000 n +0001446518 00000 n +0001446703 00000 n +0001446889 00000 n +0001447076 00000 n +0001447270 00000 n +0001448419 00000 n +0001448663 00000 n +0001448860 00000 n +0001449058 00000 n +0001449249 00000 n +0001450952 00000 n +0001451196 00000 n +0001451388 00000 n +0001451581 00000 n +0001451769 00000 n +0001452831 00000 n +0001453075 00000 n +0001453266 00000 n +0001453458 00000 n +0001453646 00000 n +0001454853 00000 n +0001455097 00000 n +0001455286 00000 n +0001455476 00000 n +0001455666 00000 n +0001457135 00000 n +0001457379 00000 n +0001457570 00000 n +0001457762 00000 n +0001457947 00000 n +0001459436 00000 n +0001459680 00000 n +0001459866 00000 n +0001460053 00000 n +0001460242 00000 n +0001461342 00000 n +0001461604 00000 n +0001461794 00000 n +0001461985 00000 n +0001462171 00000 n +0001462358 00000 n +0001462546 00000 n +0001463129 00000 n +0001463355 00000 n +0001463544 00000 n +0001463993 00000 n +0001464219 00000 n +0001464408 00000 n +0001466625 00000 n +0001466851 00000 n +0001467042 00000 n +0001471280 00000 n +0001471506 00000 n +0001471698 00000 n +0001475829 00000 n +0001476064 00000 n +0001476257 00000 n +0001476451 00000 n +0001477094 00000 n +0001477299 00000 n +0001477761 00000 n +0001477966 00000 n +0001478435 00000 n +0001478640 00000 n +0001479104 00000 n +0001479309 00000 n +0001481782 00000 n +0001482008 00000 n +0001482200 00000 n +0001484884 00000 n +0001485173 00000 n +0001485366 00000 n +0001485560 00000 n +0001485752 00000 n +0001485945 00000 n +0001486139 00000 n +0001486331 00000 n +0001486524 00000 n +0001486718 00000 n +0001489787 00000 n +0001490013 00000 n +0001490208 00000 n +0001490908 00000 n +0001491152 00000 n +0001491348 00000 n +0001491545 00000 n +0001491740 00000 n +0001492558 00000 n +0001492802 00000 n +0001492998 00000 n +0001493195 00000 n +0001493390 00000 n +0001494204 00000 n +0001494448 00000 n +0001494644 00000 n +0001494841 00000 n +0001495031 00000 n +0001495858 00000 n +0001496129 00000 n +0001496320 00000 n +0001496512 00000 n +0001496703 00000 n +0001496895 00000 n +0001497088 00000 n +0001497283 00000 n +0001498298 00000 n +0001498533 00000 n +0001498729 00000 n +0001498926 00000 n +0001501943 00000 n +0001502169 00000 n +0001502364 00000 n +0001503231 00000 n +0001503475 00000 n +0001503671 00000 n +0001503868 00000 n +0001504063 00000 n +0001504801 00000 n +0001505045 00000 n +0001505241 00000 n +0001505438 00000 n +0001505633 00000 n +0001506782 00000 n +0001507017 00000 n +0001507213 00000 n +0001507410 00000 n +0001508518 00000 n +0001508771 00000 n +0001508968 00000 n +0001509166 00000 n +0001509365 00000 n +0001509561 00000 n +0001510441 00000 n +0001510685 00000 n +0001510883 00000 n +0001511082 00000 n +0001511279 00000 n +0001512409 00000 n +0001512644 00000 n +0001512842 00000 n +0001513041 00000 n +0001514743 00000 n +0001514987 00000 n +0001515186 00000 n +0001515386 00000 n +0001515587 00000 n +0001517011 00000 n +0001517282 00000 n +0001517481 00000 n +0001517681 00000 n +0001517882 00000 n +0001518081 00000 n +0001518281 00000 n +0001518482 00000 n +0001520181 00000 n +0001520407 00000 n +0001520612 00000 n +0001521236 00000 n +0001521471 00000 n +0001521677 00000 n +0001521884 00000 n +0001525903 00000 n +0001526108 00000 n +0001529533 00000 n +0001529738 00000 n +0001532137 00000 n +0001532381 00000 n +0001532576 00000 n +0001532772 00000 n +0001532969 00000 n +0001534185 00000 n +0001534465 00000 n +0001534660 00000 n +0001534856 00000 n +0001535053 00000 n +0001535248 00000 n +0001535444 00000 n +0001535641 00000 n +0001535834 00000 n +0001536718 00000 n +0001536989 00000 n +0001537185 00000 n +0001537382 00000 n +0001537577 00000 n +0001537773 00000 n +0001537970 00000 n +0001538163 00000 n +0001540968 00000 n +0001541230 00000 n +0001541424 00000 n +0001541619 00000 n +0001541805 00000 n +0001541992 00000 n +0001542180 00000 n +0001546348 00000 n +0001546553 00000 n +0001548039 00000 n +0001548337 00000 n +0001548526 00000 n +0001548716 00000 n +0001548907 00000 n +0001549096 00000 n +0001549286 00000 n +0001549477 00000 n +0001549672 00000 n +0001549868 00000 n +0001550065 00000 n +0001552007 00000 n +0001552260 00000 n +0001552450 00000 n +0001552641 00000 n +0001552833 00000 n +0001553028 00000 n +0001554176 00000 n +0001554438 00000 n +0001554634 00000 n +0001554831 00000 n +0001555026 00000 n +0001555222 00000 n +0001555419 00000 n +0001557801 00000 n +0001558045 00000 n +0001558240 00000 n +0001558436 00000 n +0001558633 00000 n +0001561192 00000 n +0001561418 00000 n +0001561613 00000 n +0001562711 00000 n +0001562946 00000 n +0001563142 00000 n +0001563339 00000 n +0001566001 00000 n +0001566206 00000 n +0001568829 00000 n +0001569055 00000 n +0001569250 00000 n +0001570926 00000 n +0001571224 00000 n +0001571420 00000 n +0001571617 00000 n +0001571810 00000 n +0001572004 00000 n +0001572199 00000 n +0001572394 00000 n +0001572590 00000 n +0001572787 00000 n +0001572982 00000 n +0001573837 00000 n +0001574081 00000 n +0001574278 00000 n +0001574476 00000 n +0001574669 00000 n +0001575985 00000 n +0001576220 00000 n +0001576414 00000 n +0001576609 00000 n +0001578779 00000 n +0001578984 00000 n +0001581523 00000 n +0001581728 00000 n +0001584300 00000 n +0001584505 00000 n +0001586416 00000 n +0001586723 00000 n +0001586907 00000 n +0001587092 00000 n +0001587278 00000 n +0001587462 00000 n +0001587647 00000 n +0001587833 00000 n +0001588017 00000 n +0001588202 00000 n +0001588388 00000 n +0001588575 00000 n +0001589746 00000 n +0001590044 00000 n +0001590234 00000 n +0001590425 00000 n +0001590614 00000 n +0001590804 00000 n +0001590995 00000 n +0001591191 00000 n +0001591388 00000 n +0001591586 00000 n +0001591772 00000 n +0001592969 00000 n +0001593285 00000 n +0001593474 00000 n 0001593664 00000 n -0001596507 00000 n -0001596712 00000 n -0001600587 00000 n -0001600792 00000 n -0001603875 00000 n -0001604080 00000 n -0001606723 00000 n -0001606949 00000 n -0001607143 00000 n -0001607722 00000 n -0001607984 00000 n -0001608179 00000 n -0001608375 00000 n -0001608570 00000 n -0001608766 00000 n -0001608963 00000 n -0001610233 00000 n -0001610486 00000 n -0001610681 00000 n -0001610877 00000 n -0001611074 00000 n -0001611268 00000 n -0001613122 00000 n -0001613357 00000 n -0001613552 00000 n -0001613748 00000 n -0001616753 00000 n -0001616979 00000 n -0001617169 00000 n -0001618566 00000 n -0001618810 00000 n -0001619001 00000 n -0001619193 00000 n -0001619378 00000 n -0001619834 00000 n -0001620060 00000 n -0001620245 00000 n -0001621024 00000 n -0001621259 00000 n -0001621446 00000 n -0001621631 00000 n -0001622088 00000 n -0001622314 00000 n -0001622499 00000 n -0001623127 00000 n -0001623362 00000 n -0001623549 00000 n -0001623734 00000 n -0001624192 00000 n -0001624418 00000 n -0001624603 00000 n -0001625349 00000 n -0001625584 00000 n -0001625771 00000 n -0001625956 00000 n -0001626415 00000 n -0001626641 00000 n -0001626826 00000 n -0001627562 00000 n -0001627797 00000 n -0001627984 00000 n -0001628169 00000 n -0001628626 00000 n -0001628852 00000 n -0001629037 00000 n -0001630785 00000 n -0001631038 00000 n -0001631225 00000 n -0001631415 00000 n -0001631606 00000 n -0001631798 00000 n -0001633998 00000 n -0001634203 00000 n -0001635689 00000 n -0001635915 00000 n -0001636100 00000 n -0001636547 00000 n -0001636773 00000 n -0001636958 00000 n -0001637527 00000 n +0001593854 00000 n +0001594045 00000 n +0001594237 00000 n +0001594423 00000 n +0001594610 00000 n +0001594798 00000 n +0001594987 00000 n +0001595177 00000 n +0001595368 00000 n +0001597323 00000 n +0001597567 00000 n +0001597761 00000 n +0001597956 00000 n +0001598152 00000 n +0001600410 00000 n +0001600615 00000 n +0001602960 00000 n +0001603240 00000 n +0001603427 00000 n +0001603614 00000 n +0001603803 00000 n +0001603989 00000 n +0001604175 00000 n +0001604363 00000 n +0001604554 00000 n +0001607620 00000 n +0001607855 00000 n +0001608048 00000 n +0001608242 00000 n +0001610133 00000 n +0001610386 00000 n +0001610576 00000 n +0001610767 00000 n +0001610959 00000 n +0001611148 00000 n +0001612568 00000 n +0001612803 00000 n +0001612993 00000 n +0001613184 00000 n +0001615074 00000 n +0001615279 00000 n +0001617294 00000 n +0001617592 00000 n +0001617789 00000 n +0001617986 00000 n +0001618185 00000 n +0001618385 00000 n +0001618585 00000 n +0001618787 00000 n +0001618978 00000 n +0001619170 00000 n +0001619363 00000 n +0001620848 00000 n +0001621119 00000 n +0001621309 00000 n +0001621500 00000 n +0001621692 00000 n +0001621882 00000 n +0001622073 00000 n +0001622265 00000 n +0001625530 00000 n +0001625735 00000 n +0001629658 00000 n +0001629863 00000 n +0001633151 00000 n +0001633356 00000 n +0001635540 00000 n +0001635745 00000 n 0001637762 00000 n -0001637949 00000 n -0001638134 00000 n -0001638581 00000 n -0001638807 00000 n -0001638992 00000 n -0001641230 00000 n -0001641483 00000 n -0001641670 00000 n -0001641855 00000 n -0001642041 00000 n -0001642228 00000 n -0001646268 00000 n -0001646473 00000 n -0001650364 00000 n -0001650569 00000 n -0001654860 00000 n -0001655065 00000 n -0001659247 00000 n -0001659452 00000 n -0001662536 00000 n -0001662780 00000 n -0001662972 00000 n -0001663165 00000 n -0001663359 00000 n -0001666215 00000 n -0001666420 00000 n -0001668779 00000 n -0001668984 00000 n -0001672945 00000 n -0001673150 00000 n -0001676287 00000 n -0001676492 00000 n -0001679744 00000 n -0001679949 00000 n -0001683046 00000 n -0001683251 00000 n -0001685707 00000 n -0001685951 00000 n -0001686142 00000 n -0001686334 00000 n -0001686527 00000 n -0001689430 00000 n -0001689635 00000 n -0001691901 00000 n -0001692145 00000 n -0001692339 00000 n -0001692534 00000 n -0001692730 00000 n -0001696067 00000 n -0001696272 00000 n -0001698383 00000 n -0001698609 00000 n -0001698795 00000 n -0001699439 00000 n -0001699683 00000 n -0001699870 00000 n -0001700058 00000 n -0001700245 00000 n -0001702624 00000 n -0001702886 00000 n -0001703074 00000 n -0001703263 00000 n -0001703456 00000 n -0001703650 00000 n -0001703845 00000 n -0001706562 00000 n -0001706788 00000 n -0001706982 00000 n -0001708128 00000 n -0001708372 00000 n -0001708567 00000 n -0001708763 00000 n -0001708960 00000 n -0001709692 00000 n -0001709936 00000 n -0001710134 00000 n -0001710333 00000 n -0001710532 00000 n -0001711115 00000 n -0001711359 00000 n -0001711559 00000 n -0001711760 00000 n -0001711969 00000 n -0001712644 00000 n -0001712888 00000 n -0001713098 00000 n -0001713309 00000 n -0001713510 00000 n -0001715303 00000 n -0001715538 00000 n -0001715740 00000 n -0001715943 00000 n -0001717716 00000 n -0001717960 00000 n -0001718153 00000 n -0001718347 00000 n -0001718542 00000 n -0001721678 00000 n -0001721883 00000 n -0001723741 00000 n -0001723967 00000 n -0001724155 00000 n -0001724710 00000 n -0001724954 00000 n -0001725143 00000 n -0001725333 00000 n -0001725521 00000 n -0001726916 00000 n -0001727151 00000 n -0001727340 00000 n -0001727530 00000 n -0001730164 00000 n -0001730369 00000 n -0001731454 00000 n -0001731698 00000 n -0001731888 00000 n -0001732079 00000 n -0001732271 00000 n -0001732973 00000 n -0001733271 00000 n -0001733461 00000 n -0001733652 00000 n -0001733844 00000 n -0001734035 00000 n -0001734227 00000 n -0001734420 00000 n -0001734615 00000 n -0001734811 00000 n -0001735007 00000 n -0001735808 00000 n -0001736079 00000 n -0001736272 00000 n -0001736466 00000 n -0001736661 00000 n -0001736852 00000 n -0001737044 00000 n -0001737237 00000 n -0001738773 00000 n -0001738999 00000 n -0001739202 00000 n -0001739765 00000 n -0001740000 00000 n -0001740204 00000 n -0001740408 00000 n -0001741186 00000 n -0001741439 00000 n -0001741636 00000 n -0001741834 00000 n -0001742033 00000 n -0001742222 00000 n -0001742763 00000 n -0001743007 00000 n -0001743197 00000 n -0001743388 00000 n -0001743584 00000 n -0001744679 00000 n -0001744914 00000 n -0001745111 00000 n -0001745309 00000 n -0001746645 00000 n -0001746898 00000 n -0001747087 00000 n -0001747277 00000 n -0001747468 00000 n -0001747662 00000 n -0001749324 00000 n -0001749559 00000 n -0001749754 00000 n -0001749950 00000 n -0001754661 00000 n -0001754866 00000 n -0001756090 00000 n -0001756295 00000 n -0001759424 00000 n -0001759629 00000 n -0001763252 00000 n -0001763457 00000 n -0001766740 00000 n -0001766945 00000 n -0001770858 00000 n -0001771063 00000 n -0001775158 00000 n -0001775363 00000 n -0001778965 00000 n -0001779170 00000 n -0001782554 00000 n -0001782759 00000 n -0001786444 00000 n -0001786649 00000 n -0001787921 00000 n -0001788126 00000 n -0001790835 00000 n -0001791040 00000 n -0001794491 00000 n -0001794696 00000 n -0001796501 00000 n -0001796706 00000 n -0001799480 00000 n -0001799685 00000 n -0001803186 00000 n -0001803391 00000 n -0001807797 00000 n -0001808002 00000 n -0001811570 00000 n -0001811775 00000 n -0001814951 00000 n -0001815156 00000 n -0001818559 00000 n -0001818764 00000 n -0001821517 00000 n -0001821722 00000 n -0001824940 00000 n -0001825145 00000 n -0001828573 00000 n -0001828778 00000 n -0001832483 00000 n -0001832688 00000 n -0001836478 00000 n -0001836683 00000 n -0001839986 00000 n -0001840191 00000 n -0001843809 00000 n -0001844014 00000 n -0001847535 00000 n -0001847740 00000 n -0001852032 00000 n -0001852237 00000 n -0001856588 00000 n -0001856793 00000 n -0001862461 00000 n -0001862666 00000 n -0001864382 00000 n -0001864587 00000 n -0001866412 00000 n -0001866617 00000 n -0001870961 00000 n -0001871166 00000 n -0001876575 00000 n -0001876780 00000 n -0001882917 00000 n -0001883122 00000 n -0001888999 00000 n -0001889204 00000 n -0001894803 00000 n -0001895008 00000 n -0001900600 00000 n -0001900805 00000 n -0001906304 00000 n -0001906509 00000 n -0001912057 00000 n -0001912262 00000 n -0001917866 00000 n -0001918071 00000 n -0001923746 00000 n -0001923951 00000 n -0001928792 00000 n -0001928997 00000 n -0001930485 00000 n -0001930690 00000 n -0001933793 00000 n -0001933998 00000 n -0001936704 00000 n -0001936909 00000 n -0001939956 00000 n -0001940161 00000 n -0001944144 00000 n -0001944349 00000 n -0001947675 00000 n -0001947880 00000 n -0001950748 00000 n -0001950953 00000 n -0001954328 00000 n -0001954533 00000 n -0001958204 00000 n -0001958409 00000 n -0001962427 00000 n -0001962632 00000 n -0001966505 00000 n -0001966710 00000 n -0001967301 00000 n -0001967506 00000 n -0001970939 00000 n -0001971144 00000 n -0001974794 00000 n -0001974999 00000 n -0001979315 00000 n -0001979520 00000 n -0001983597 00000 n -0001983802 00000 n -0001988189 00000 n -0001988394 00000 n -0001993408 00000 n -0001993613 00000 n -0001998151 00000 n -0001998356 00000 n -0002002489 00000 n -0002002694 00000 n -0002005709 00000 n -0002005914 00000 n -0002009363 00000 n -0002009568 00000 n -0002013791 00000 n -0002013996 00000 n -0002015895 00000 n -0002016100 00000 n -0002018795 00000 n -0002019000 00000 n -0002022064 00000 n -0002022269 00000 n -0002026368 00000 n -0002026573 00000 n -0002030920 00000 n -0002031125 00000 n -0002035534 00000 n -0002035739 00000 n -0002037254 00000 n -0002037459 00000 n -0002040489 00000 n -0002040694 00000 n -0002043442 00000 n -0002043647 00000 n -0002047597 00000 n -0002047802 00000 n -0002052428 00000 n -0002052633 00000 n -0002056575 00000 n -0002056780 00000 n -0002061374 00000 n -0002061579 00000 n -0002066410 00000 n -0002066615 00000 n -0002070719 00000 n -0002070924 00000 n -0002074840 00000 n -0002075045 00000 n -0002079065 00000 n -0002079270 00000 n -0002083621 00000 n -0002083826 00000 n -0002088310 00000 n -0002088515 00000 n -0002093064 00000 n -0002093269 00000 n -0002096791 00000 n -0002096996 00000 n -0002100056 00000 n -0002100261 00000 n -0002104005 00000 n -0002104210 00000 n -0002108286 00000 n -0002108491 00000 n -0002112024 00000 n -0002112229 00000 n -0002115569 00000 n -0002115774 00000 n -0002119343 00000 n -0002119548 00000 n -0002124146 00000 n -0002124351 00000 n -0002128799 00000 n -0002129004 00000 n -0002131681 00000 n -0002131886 00000 n -0002135726 00000 n -0002135931 00000 n -0002139565 00000 n -0002139770 00000 n -0002143359 00000 n -0002143564 00000 n -0002146584 00000 n -0002146789 00000 n -0002150449 00000 n -0002150654 00000 n -0002154602 00000 n -0002154807 00000 n -0002158699 00000 n -0002158904 00000 n -0002162291 00000 n -0002162496 00000 n -0002166219 00000 n -0002166424 00000 n -0002170616 00000 n -0002170821 00000 n -0002172088 00000 n -0002172293 00000 n -0002176341 00000 n -0002176546 00000 n -0002179853 00000 n -0002180058 00000 n -0002183519 00000 n -0002183724 00000 n -0002187381 00000 n -0002187586 00000 n -0002191031 00000 n -0002191236 00000 n -0002194616 00000 n -0002194821 00000 n -0002197762 00000 n -0002197967 00000 n -0002201501 00000 n -0002201706 00000 n -0002205240 00000 n -0002205445 00000 n -0002208597 00000 n -0002208802 00000 n -0002211639 00000 n -0002211844 00000 n -0002215293 00000 n -0002215498 00000 n -0002218906 00000 n -0002219111 00000 n -0002222817 00000 n -0002223022 00000 n -0002227105 00000 n -0002227310 00000 n -0002231457 00000 n -0002231662 00000 n -0002235201 00000 n -0002235406 00000 n -0002235551 00000 n -0002235747 00000 n -0002235915 00000 n -0002236088 00000 n -0002236238 00000 n -0002236386 00000 n -0002236575 00000 n -0002236708 00000 n -0002236916 00000 n -0002237075 00000 n -0002237312 00000 n -0002237616 00000 n -0002237888 00000 n -0002238078 00000 n -0002238232 00000 n -0002238514 00000 n -0002238683 00000 n -0002238912 00000 n -0002239093 00000 n -0002239270 00000 n -0002239451 00000 n -0002239616 00000 n -0002239766 00000 n -0002239935 00000 n -0002240240 00000 n -0002240403 00000 n -0002240707 00000 n -0002240879 00000 n -0002241038 00000 n -0002241192 00000 n -0002241332 00000 n -0002241475 00000 n -0002241759 00000 n -0002241920 00000 n -0002242109 00000 n -0002242349 00000 n -0002242488 00000 n -0002242642 00000 n -0002242802 00000 n -0002242928 00000 n -0002243211 00000 n -0002243340 00000 n -0002243482 00000 n -0002243625 00000 n -0002243768 00000 n -0002243898 00000 n -0002244181 00000 n -0002244356 00000 n -0002244565 00000 n -0002244703 00000 n -0002244847 00000 n -0002245100 00000 n -0002245388 00000 n -0002245524 00000 n -0002245683 00000 n -0002245915 00000 n -0002246147 00000 n -0002246310 00000 n -0002246448 00000 n -0002246599 00000 n -0002246748 00000 n -0002246899 00000 n -0002247028 00000 n -0002247204 00000 n -0002247433 00000 n -0002247591 00000 n -0002247717 00000 n -0002247861 00000 n -0002248015 00000 n -0002248156 00000 n -0002248295 00000 n -0002248465 00000 n -0002248678 00000 n -0002248930 00000 n -0002249205 00000 n -0002249386 00000 n -0002249561 00000 n -0002249713 00000 n -0002250006 00000 n -0002250270 00000 n -0002250407 00000 n -0002250646 00000 n -0002250784 00000 n -0002251021 00000 n -0002251222 00000 n -0002251398 00000 n -0002251635 00000 n -0002251807 00000 n -0002251940 00000 n -0002252259 00000 n -0002252402 00000 n -0002252547 00000 n -0002252682 00000 n -0002252848 00000 n -0002253006 00000 n -0002253170 00000 n -0002253414 00000 n -0002253565 00000 n -0002253719 00000 n -0002253854 00000 n -0002254042 00000 n -0002254175 00000 n -0002254321 00000 n -0002254521 00000 n -0002254679 00000 n -0002254909 00000 n -0002255099 00000 n -0002255237 00000 n -0002255397 00000 n -0002255589 00000 n -0002255859 00000 n -0002255994 00000 n -0002256177 00000 n -0002256535 00000 n -0002256827 00000 n -0002257085 00000 n -0002257246 00000 n -0002257397 00000 n -0002257548 00000 n -0002257824 00000 n -0002257961 00000 n -0002258118 00000 n -0002258268 00000 n -0002258423 00000 n -0002258563 00000 n -0002258696 00000 n -0002258883 00000 n -0002259030 00000 n -0002259189 00000 n -0002259349 00000 n -0002259503 00000 n -0002259657 00000 n -0002259814 00000 n -0002259968 00000 n -0002260130 00000 n -0002260279 00000 n -0002260440 00000 n -0002260601 00000 n -0002260756 00000 n -0002260917 00000 n -0002261081 00000 n -0002261239 00000 n -0002261397 00000 n -0002261567 00000 n -0002261728 00000 n -0002261886 00000 n -0002262044 00000 n -0002262206 00000 n -0002262365 00000 n -0002262527 00000 n -0002262686 00000 n -0002262845 00000 n -0002263007 00000 n -0002263166 00000 n -0002263325 00000 n -0002263484 00000 n -0002263646 00000 n -0002263805 00000 n -0002263967 00000 n -0002264129 00000 n -0002264288 00000 n -0002264447 00000 n -0002264609 00000 n -0002264768 00000 n -0002264930 00000 n -0002265089 00000 n -0002265248 00000 n -0002265390 00000 n -0002265551 00000 n -0002265697 00000 n -0002265851 00000 n -0002266018 00000 n -0002266178 00000 n -0002266340 00000 n -0002266496 00000 n -0002266645 00000 n -0002266796 00000 n -0002266957 00000 n -0002267115 00000 n -0002267264 00000 n -0002267420 00000 n -0002267580 00000 n -0002267744 00000 n -0002267909 00000 n -0002268071 00000 n -0002268224 00000 n -0002268375 00000 n -0002268528 00000 n -0002268679 00000 n -0002268826 00000 n -0002268892 00000 n -0002273716 00000 n -0002282318 00000 n -0002286993 00000 n -0002291053 00000 n -0002297148 00000 n -0002299421 00000 n -0002300794 00000 n -0002301027 00000 n -0002301616 00000 n -0002301770 00000 n -0002303716 00000 n -0002303964 00000 n -0002304841 00000 n -0002305004 00000 n -0002306265 00000 n -0002306498 00000 n -0002307059 00000 n -0002307214 00000 n -0002308307 00000 n -0002308535 00000 n -0002309051 00000 n -0002309200 00000 n -0002310881 00000 n -0002311127 00000 n -0002311749 00000 n -0002311908 00000 n -0002312552 00000 n -0002312797 00000 n -0002313180 00000 n -0002313340 00000 n -0002313466 00000 n -0006018193 00000 n -0006088546 00000 n -0006870857 00000 n -0006875311 00000 n -0007603231 00000 n -0007607677 00000 n -0007895923 00000 n -0007900377 00000 n -0007996231 00000 n -0007999125 00000 n -0008008430 00000 n -0008016075 00000 n -0008034412 00000 n -0008039499 00000 n -0008066053 00000 n -0008077307 00000 n -0008078859 00000 n -0008080606 00000 n -0008090421 00000 n -0008097407 00000 n -0008186057 00000 n -0008193243 00000 n -0008203150 00000 n -0008208637 00000 n -0008223883 00000 n -0008226271 00000 n -0008254336 00000 n -0008263029 00000 n -0008577518 00000 n -0008608606 00000 n -0008972878 00000 n -0008990074 00000 n -0009670969 00000 n -0009689185 00000 n -0010037092 00000 n -0010054290 00000 n -0010227013 00000 n -0010242555 00000 n -0010368408 00000 n -0010400843 00000 n -0010486309 00000 n -0010490489 00000 n -0010492166 00000 n -0010502590 00000 n -0010504500 00000 n -0011127036 00000 n -0011129740 00000 n -0011158967 00000 n -0011159328 00000 n -0011171789 00000 n -0011172133 00000 n -0011174896 00000 n -0011175170 00000 n -0011177201 00000 n -0011177473 00000 n -0011669642 00000 n -0011672104 00000 n -0011845368 00000 n -0011891898 00000 n -0011892745 00000 n -0011893003 00000 n -0011896172 00000 n -0011896468 00000 n -0011904793 00000 n -0011905137 00000 n -0011907209 00000 n -0011908092 00000 n -0011909758 00000 n -0011910512 00000 n -0011911073 00000 n -0011911759 00000 n -0011912320 00000 n -0011913009 00000 n -0011913570 00000 n -0011914324 00000 n -0011916776 00000 n -0011917076 00000 n -0011919527 00000 n -0011919827 00000 n -0011920364 00000 n -0011920664 00000 n -0011923748 00000 n -0011924224 00000 n -0011925176 00000 n -0011925594 00000 n -0011928359 00000 n -0011928635 00000 n -0011939142 00000 n -0011942291 00000 n -0011942791 00000 n -0011943067 00000 n -0011946861 00000 n -0011947268 00000 n -0011948076 00000 n -0011948419 00000 n -0011949344 00000 n -0011949687 00000 n -0012461896 00000 n -0012488802 00000 n -0012497149 00000 n -0012497493 00000 n -0012511708 00000 n -0012512073 00000 n -0012520611 00000 n -0012520960 00000 n -0012529174 00000 n -0012529534 00000 n -0012531116 00000 n -0012531371 00000 n -0012531912 00000 n -0012532286 00000 n -0012532831 00000 n -0012533205 00000 n -0012533751 00000 n -0012534125 00000 n -0012534670 00000 n -0012535044 00000 n -0012535591 00000 n -0012535965 00000 n -0012537484 00000 n -0012537739 00000 n -0012538285 00000 n -0012538659 00000 n -0012539958 00000 n -0012540213 00000 n -0012540770 00000 n -0012541025 00000 n -0012544916 00000 n -0012545334 00000 n -0012545984 00000 n -0012546282 00000 n -0013324580 00000 n -0013326949 00000 n -0013412737 00000 n -0013414136 00000 n -0013464200 00000 n -0013471209 00000 n -0013474019 00000 n -0013481512 00000 n -0013483503 00000 n -0013496346 00000 n -0013498390 00000 n -0013504835 00000 n -0013505159 00000 n -0013508233 00000 n -0013508557 00000 n -0013509493 00000 n -0013509817 00000 n -0013512726 00000 n -0013513068 00000 n -0013543831 00000 n -0013564475 00000 n -0013577725 00000 n -0013578038 00000 n -0013585125 00000 n -0013585824 00000 n -0013616350 00000 n -0013617457 00000 n -0013645401 00000 n -0013646371 00000 n -0013664814 00000 n -0013665393 00000 n -0013703234 00000 n -0013704419 00000 n -0013831764 00000 n -0013833723 00000 n -0014108149 00000 n -0014111767 00000 n -0014201361 00000 n -0014205173 00000 n -0014243440 00000 n -0014244341 00000 n -0014989082 00000 n -0014993202 00000 n -0015424154 00000 n -0015428282 00000 n -0015465210 00000 n -0015468300 00000 n -0015684449 00000 n -0015688272 00000 n -0015768318 00000 n -0015769809 00000 n -0015802725 00000 n -0015805723 00000 n -0015968072 00000 n -0015969745 00000 n -0016390483 00000 n -0016394404 00000 n -0016407318 00000 n -0016407826 00000 n -0016753500 00000 n -0016756223 00000 n -0017102904 00000 n -0017105627 00000 n -0017532565 00000 n -0017535359 00000 n -0017584937 00000 n -0017585596 00000 n -0017600362 00000 n -0017600844 00000 n -0017650567 00000 n -0017651241 00000 n -0017657850 00000 n -0017658773 00000 n -0018218391 00000 n -0018222291 00000 n -0018789841 00000 n -0018793759 00000 n -0019041283 00000 n -0019045102 00000 n -0019085773 00000 n -0019086937 00000 n -0019114632 00000 n -0019115586 00000 n -0019143618 00000 n -0019144722 00000 n -0019162210 00000 n -0019162934 00000 n -0019227178 00000 n -0019229391 00000 n -0019347504 00000 n -0019351384 00000 n -0020546091 00000 n -0022312764 00000 n -0022324200 00000 n -0022324607 00000 n -0022330877 00000 n -0022331269 00000 n -0022336222 00000 n -0022336593 00000 n -0022486828 00000 n -0022488431 00000 n -0022603089 00000 n -0022605042 00000 n -0022726392 00000 n -0022728524 00000 n -0022732577 00000 n -0022733378 00000 n -0022739361 00000 n -0022740122 00000 n -0022859439 00000 n -0022861574 00000 n -0022970237 00000 n -0022972385 00000 n -0023076728 00000 n -0023078686 00000 n -0023183456 00000 n -0023185604 00000 n -0023305554 00000 n -0023307705 00000 n -0023416834 00000 n -0023419055 00000 n -0023529444 00000 n -0023531415 00000 n -0023612836 00000 n -0023613535 00000 n -0023631458 00000 n -0023632070 00000 n -0024171791 00000 n -0024174900 00000 n -0024690440 00000 n -0024693376 00000 n -0025226600 00000 n -0025229468 00000 n -0025769229 00000 n -0025772176 00000 n -0026311717 00000 n -0026314683 00000 n -0026334319 00000 n -0026335256 00000 n -0026363057 00000 n -0026363456 00000 n -0026365003 00000 n -0026365286 00000 n -0026366683 00000 n -0026366966 00000 n -0026624312 00000 n -0026626696 00000 n -0026648061 00000 n -0026648982 00000 n -0027156024 00000 n -0027158971 00000 n -0027698497 00000 n -0027701216 00000 n -0028245663 00000 n -0028248670 00000 n -0028279353 00000 n -0028281265 00000 n -0028306516 00000 n -0028307400 00000 n -0028322212 00000 n -0028322573 00000 n -0028339044 00000 n -0028339383 00000 n -0028357968 00000 n -0028359099 00000 n -0028680462 00000 n -0028683093 00000 n -0028683575 00000 n -0028683849 00000 n -0028684345 00000 n -0028684619 00000 n -0028685149 00000 n -0028685423 00000 n -0028686771 00000 n -0028687343 00000 n -0028688721 00000 n -0028689309 00000 n -0028692133 00000 n -0028692409 00000 n -0028694879 00000 n -0028695155 00000 n -0028695708 00000 n -0028695984 00000 n -0028705452 00000 n -0028706197 00000 n -0028707806 00000 n -0028708395 00000 n -0028709343 00000 n -0028709686 00000 n -0028711699 00000 n -0028711971 00000 n -0028721786 00000 n -0028724730 00000 n -0028765735 00000 n -0028766778 00000 n -0028768470 00000 n -0028769681 00000 n -0028778125 00000 n -0028779261 00000 n -0028779514 00000 n -0028780598 00000 n -0028780851 00000 n -0028781988 00000 n -0028782451 00000 n -0028784002 00000 n -0028784465 00000 n -0028786207 00000 n -0028786670 00000 n -0032351974 00000 n -0032400747 00000 n -0036162474 00000 n -0036211247 00000 n -0036694953 00000 n -0036699395 00000 n -0036700140 00000 n -0036700438 00000 n -0036701150 00000 n -0036701448 00000 n -0036702131 00000 n -0036702429 00000 n -0036703087 00000 n -0036703385 00000 n -0036772097 00000 n -0036776041 00000 n -0037071776 00000 n -0037076211 00000 n -0037362442 00000 n -0037366877 00000 n -0038479717 00000 n -0038484307 00000 n -0040049497 00000 n -0040052358 00000 n -0040595134 00000 n -0040598966 00000 n -0043919904 00000 n -0043968677 00000 n -0047073293 00000 n -0047122066 00000 n -0050187400 00000 n -0050236173 00000 n -0054976443 00000 n -0055025216 00000 n -0055307051 00000 n -0055309675 00000 n -0060128752 00000 n -0060177525 00000 n -0064690298 00000 n -0064760651 00000 n -0064771392 00000 n -0064772501 00000 n -0064826867 00000 n -0064827551 00000 n -0064831970 00000 n -0064832309 00000 n -0064938825 00000 n -0064939331 00000 n -0064993081 00000 n -0064993694 00000 n -0065075339 00000 n -0065079360 00000 n -0065102712 00000 n -0065105584 00000 n -0065139153 00000 n -0065142040 00000 n -0065168067 00000 n -0065172335 00000 n -0065502227 00000 n -0065505121 00000 n -0065571608 00000 n -0065573664 00000 n -0065663971 00000 n -0065666859 00000 n -0065799781 00000 n -0065801776 00000 n -0065900676 00000 n -0065902265 00000 n -0065940441 00000 n -0065941479 00000 n -0066026281 00000 n -0066028052 00000 n -0066068692 00000 n -0066070348 00000 n -0066189666 00000 n -0066192907 00000 n -0066596148 00000 n +0001637988 00000 n +0001638173 00000 n +0001638614 00000 n +0001638840 00000 n +0001639025 00000 n +0001639708 00000 n +0001639943 00000 n +0001640130 00000 n +0001640315 00000 n +0001640756 00000 n +0001640982 00000 n +0001641167 00000 n +0001644348 00000 n +0001644574 00000 n +0001644761 00000 n +0001647675 00000 n +0001647880 00000 n +0001651368 00000 n +0001651573 00000 n +0001655649 00000 n +0001655854 00000 n +0001660061 00000 n +0001660266 00000 n +0001663533 00000 n +0001663738 00000 n +0001665561 00000 n +0001665814 00000 n +0001666002 00000 n +0001666191 00000 n +0001666381 00000 n +0001666571 00000 n +0001667973 00000 n +0001668289 00000 n +0001668481 00000 n +0001668674 00000 n +0001668865 00000 n +0001669057 00000 n +0001669250 00000 n +0001669447 00000 n +0001669645 00000 n +0001669844 00000 n +0001670041 00000 n +0001670239 00000 n +0001670438 00000 n +0001673359 00000 n +0001673564 00000 n +0001675250 00000 n +0001675494 00000 n +0001675689 00000 n +0001675885 00000 n +0001676082 00000 n +0001678049 00000 n +0001678275 00000 n +0001678465 00000 n +0001678997 00000 n +0001679241 00000 n +0001679432 00000 n +0001679624 00000 n +0001679813 00000 n +0001680895 00000 n +0001681130 00000 n +0001681320 00000 n +0001681511 00000 n +0001684516 00000 n +0001684721 00000 n +0001687562 00000 n +0001687767 00000 n +0001691642 00000 n +0001691847 00000 n +0001694927 00000 n +0001695132 00000 n +0001697776 00000 n +0001698002 00000 n +0001698196 00000 n +0001698773 00000 n +0001699035 00000 n +0001699230 00000 n +0001699426 00000 n +0001699621 00000 n +0001699817 00000 n +0001700014 00000 n +0001701284 00000 n +0001701537 00000 n +0001701732 00000 n +0001701928 00000 n +0001702125 00000 n +0001702319 00000 n +0001704171 00000 n +0001704406 00000 n +0001704601 00000 n +0001704797 00000 n +0001707801 00000 n +0001708027 00000 n +0001708217 00000 n +0001709614 00000 n +0001709858 00000 n +0001710049 00000 n +0001710241 00000 n +0001710426 00000 n +0001710881 00000 n +0001711107 00000 n +0001711292 00000 n +0001712071 00000 n +0001712306 00000 n +0001712493 00000 n +0001712678 00000 n +0001713134 00000 n +0001713360 00000 n +0001713545 00000 n +0001714172 00000 n +0001714407 00000 n +0001714594 00000 n +0001714779 00000 n +0001715237 00000 n +0001715463 00000 n +0001715648 00000 n +0001716391 00000 n +0001716626 00000 n +0001716813 00000 n +0001716998 00000 n +0001717453 00000 n +0001717679 00000 n +0001717864 00000 n +0001718598 00000 n +0001718833 00000 n +0001719020 00000 n +0001719205 00000 n +0001719663 00000 n +0001719889 00000 n +0001720074 00000 n +0001721824 00000 n +0001722077 00000 n +0001722264 00000 n +0001722454 00000 n +0001722645 00000 n +0001722837 00000 n +0001725040 00000 n +0001725245 00000 n +0001726733 00000 n +0001726959 00000 n +0001727144 00000 n +0001727594 00000 n +0001727820 00000 n +0001728005 00000 n +0001728572 00000 n +0001728807 00000 n +0001728994 00000 n +0001729179 00000 n +0001729630 00000 n +0001729856 00000 n +0001730041 00000 n +0001732281 00000 n +0001732534 00000 n +0001732721 00000 n +0001732906 00000 n +0001733092 00000 n +0001733279 00000 n +0001737321 00000 n +0001737526 00000 n +0001741418 00000 n +0001741623 00000 n +0001745917 00000 n +0001746122 00000 n +0001750307 00000 n +0001750512 00000 n +0001753596 00000 n +0001753840 00000 n +0001754032 00000 n +0001754225 00000 n +0001754419 00000 n +0001757273 00000 n +0001757478 00000 n +0001759835 00000 n +0001760040 00000 n +0001763997 00000 n +0001764202 00000 n +0001767340 00000 n +0001767545 00000 n +0001770797 00000 n +0001771002 00000 n +0001774098 00000 n +0001774303 00000 n +0001776758 00000 n +0001777002 00000 n +0001777193 00000 n +0001777385 00000 n +0001777578 00000 n +0001780479 00000 n +0001780684 00000 n +0001782951 00000 n +0001783195 00000 n +0001783389 00000 n +0001783584 00000 n +0001783780 00000 n +0001787120 00000 n +0001787325 00000 n +0001789435 00000 n +0001789661 00000 n +0001789847 00000 n +0001790492 00000 n +0001790736 00000 n +0001790923 00000 n +0001791111 00000 n +0001791298 00000 n +0001793673 00000 n +0001793935 00000 n +0001794123 00000 n +0001794312 00000 n +0001794505 00000 n +0001794699 00000 n +0001794894 00000 n +0001797612 00000 n +0001797838 00000 n +0001798032 00000 n +0001799176 00000 n +0001799420 00000 n +0001799615 00000 n +0001799811 00000 n +0001800008 00000 n +0001800742 00000 n +0001800986 00000 n +0001801184 00000 n +0001801383 00000 n +0001801582 00000 n +0001802163 00000 n +0001802407 00000 n +0001802607 00000 n +0001802808 00000 n +0001803017 00000 n +0001803693 00000 n +0001803937 00000 n +0001804147 00000 n +0001804358 00000 n +0001804559 00000 n +0001806348 00000 n +0001806583 00000 n +0001806785 00000 n +0001806988 00000 n +0001808762 00000 n +0001809006 00000 n +0001809199 00000 n +0001809393 00000 n +0001809588 00000 n +0001812721 00000 n +0001812926 00000 n +0001814786 00000 n +0001815012 00000 n +0001815200 00000 n +0001815754 00000 n +0001815998 00000 n +0001816187 00000 n +0001816377 00000 n +0001816565 00000 n +0001817958 00000 n +0001818193 00000 n +0001818382 00000 n +0001818572 00000 n +0001821203 00000 n +0001821408 00000 n +0001822492 00000 n +0001822736 00000 n +0001822926 00000 n +0001823117 00000 n +0001823309 00000 n +0001824012 00000 n +0001824310 00000 n +0001824500 00000 n +0001824691 00000 n +0001824883 00000 n +0001825074 00000 n +0001825266 00000 n +0001825459 00000 n +0001825654 00000 n +0001825850 00000 n +0001826046 00000 n +0001826846 00000 n +0001827117 00000 n +0001827310 00000 n +0001827504 00000 n +0001827699 00000 n +0001827890 00000 n +0001828082 00000 n +0001828275 00000 n +0001829809 00000 n +0001830035 00000 n +0001830238 00000 n +0001830800 00000 n +0001831035 00000 n +0001831239 00000 n +0001831443 00000 n +0001832218 00000 n +0001832471 00000 n +0001832668 00000 n +0001832866 00000 n +0001833065 00000 n +0001833254 00000 n +0001833799 00000 n +0001834043 00000 n +0001834233 00000 n +0001834424 00000 n +0001834620 00000 n +0001835714 00000 n +0001835949 00000 n +0001836146 00000 n +0001836344 00000 n +0001837682 00000 n +0001837935 00000 n +0001838124 00000 n +0001838314 00000 n +0001838505 00000 n +0001838699 00000 n +0001840361 00000 n +0001840596 00000 n +0001840791 00000 n +0001840987 00000 n +0001845511 00000 n +0001845716 00000 n +0001849834 00000 n +0001850039 00000 n +0001850917 00000 n +0001851122 00000 n +0001854250 00000 n +0001854455 00000 n +0001858078 00000 n +0001858283 00000 n +0001861565 00000 n +0001861770 00000 n +0001865681 00000 n +0001865886 00000 n +0001869980 00000 n +0001870185 00000 n +0001873786 00000 n +0001873991 00000 n +0001877372 00000 n +0001877577 00000 n +0001881258 00000 n +0001881463 00000 n +0001882733 00000 n +0001882938 00000 n +0001885646 00000 n +0001885851 00000 n +0001889298 00000 n +0001889503 00000 n +0001891309 00000 n +0001891514 00000 n +0001894282 00000 n +0001894487 00000 n +0001897985 00000 n +0001898190 00000 n +0001902594 00000 n +0001902799 00000 n +0001906368 00000 n +0001906573 00000 n +0001909751 00000 n +0001909956 00000 n +0001913052 00000 n +0001913257 00000 n +0001916340 00000 n +0001916545 00000 n +0001919794 00000 n +0001919999 00000 n +0001921187 00000 n +0001921392 00000 n +0001924771 00000 n +0001924976 00000 n +0001928467 00000 n +0001928672 00000 n +0001932302 00000 n +0001932507 00000 n +0001936385 00000 n +0001936590 00000 n +0001939564 00000 n +0001939769 00000 n +0001942949 00000 n +0001943154 00000 n +0001946837 00000 n +0001947042 00000 n +0001951026 00000 n +0001951231 00000 n +0001955319 00000 n +0001955524 00000 n +0001959563 00000 n +0001959768 00000 n +0001965149 00000 n +0001965354 00000 n +0001968451 00000 n +0001968656 00000 n +0001971366 00000 n +0001971571 00000 n +0001974618 00000 n +0001974823 00000 n +0001978808 00000 n +0001979013 00000 n +0001982338 00000 n +0001982543 00000 n +0001985412 00000 n +0001985617 00000 n +0001988985 00000 n +0001989190 00000 n +0001992866 00000 n +0001993071 00000 n +0001997089 00000 n +0001997294 00000 n +0002001165 00000 n +0002001370 00000 n +0002001960 00000 n +0002002165 00000 n +0002005597 00000 n +0002005802 00000 n +0002009452 00000 n +0002009657 00000 n +0002013972 00000 n +0002014177 00000 n +0002018253 00000 n +0002018458 00000 n +0002022844 00000 n +0002023049 00000 n +0002028062 00000 n +0002028267 00000 n +0002032803 00000 n +0002033008 00000 n +0002037141 00000 n +0002037346 00000 n +0002040363 00000 n +0002040568 00000 n +0002044016 00000 n +0002044221 00000 n +0002048446 00000 n +0002048651 00000 n +0002050553 00000 n +0002050758 00000 n +0002053449 00000 n +0002053654 00000 n +0002056718 00000 n +0002056923 00000 n +0002061020 00000 n +0002061225 00000 n +0002065573 00000 n +0002065778 00000 n +0002070191 00000 n +0002070396 00000 n +0002071911 00000 n +0002072116 00000 n +0002075156 00000 n +0002075361 00000 n +0002078138 00000 n +0002078343 00000 n +0002082236 00000 n +0002082441 00000 n +0002086159 00000 n +0002086364 00000 n +0002091176 00000 n +0002091381 00000 n +0002095671 00000 n +0002095876 00000 n +0002100629 00000 n +0002100834 00000 n +0002105446 00000 n +0002105651 00000 n +0002109130 00000 n +0002109335 00000 n +0002113396 00000 n +0002113601 00000 n +0002118306 00000 n +0002118511 00000 n +0002122593 00000 n +0002122798 00000 n +0002127245 00000 n +0002127450 00000 n +0002131351 00000 n +0002131556 00000 n +0002135766 00000 n +0002135971 00000 n +0002136705 00000 n +0002136910 00000 n +0002140656 00000 n +0002140861 00000 n +0002144937 00000 n +0002145142 00000 n +0002148677 00000 n +0002148882 00000 n +0002152224 00000 n +0002152429 00000 n +0002156000 00000 n +0002156205 00000 n +0002160806 00000 n +0002161011 00000 n +0002165460 00000 n +0002165665 00000 n +0002168344 00000 n +0002168549 00000 n +0002172181 00000 n +0002172386 00000 n +0002175932 00000 n +0002176137 00000 n +0002179467 00000 n +0002179672 00000 n +0002183010 00000 n +0002183215 00000 n +0002186219 00000 n +0002186424 00000 n +0002190128 00000 n +0002190333 00000 n +0002194071 00000 n +0002194276 00000 n +0002197697 00000 n +0002197902 00000 n +0002201486 00000 n +0002201691 00000 n +0002205058 00000 n +0002205263 00000 n +0002208653 00000 n +0002208858 00000 n +0002212959 00000 n +0002213164 00000 n +0002216106 00000 n +0002216311 00000 n +0002220360 00000 n +0002220565 00000 n +0002223874 00000 n +0002224079 00000 n +0002227541 00000 n +0002227746 00000 n +0002231404 00000 n +0002231609 00000 n +0002235055 00000 n +0002235260 00000 n +0002238637 00000 n +0002238842 00000 n +0002241783 00000 n +0002241988 00000 n +0002245523 00000 n +0002245728 00000 n +0002249263 00000 n +0002249468 00000 n +0002252619 00000 n +0002252824 00000 n +0002255662 00000 n +0002255867 00000 n +0002259318 00000 n +0002259523 00000 n +0002262929 00000 n +0002263134 00000 n +0002266841 00000 n +0002267046 00000 n +0002271130 00000 n +0002271335 00000 n +0002275479 00000 n +0002275684 00000 n +0002279219 00000 n +0002279424 00000 n +0002279569 00000 n +0002279766 00000 n +0002279934 00000 n +0002280107 00000 n +0002280257 00000 n +0002280405 00000 n +0002280594 00000 n +0002280727 00000 n +0002280935 00000 n +0002281094 00000 n +0002281331 00000 n +0002281635 00000 n +0002281907 00000 n +0002282097 00000 n +0002282251 00000 n +0002282533 00000 n +0002282702 00000 n +0002282931 00000 n +0002283112 00000 n +0002283289 00000 n +0002283470 00000 n +0002283635 00000 n +0002283785 00000 n +0002283954 00000 n +0002284259 00000 n +0002284422 00000 n +0002284726 00000 n +0002284898 00000 n +0002285057 00000 n +0002285211 00000 n +0002285351 00000 n +0002285494 00000 n +0002285778 00000 n +0002285939 00000 n +0002286128 00000 n +0002286368 00000 n +0002286507 00000 n +0002286661 00000 n +0002286821 00000 n +0002286947 00000 n +0002287230 00000 n +0002287359 00000 n +0002287501 00000 n +0002287673 00000 n +0002287816 00000 n +0002287946 00000 n +0002288229 00000 n +0002288404 00000 n +0002288613 00000 n +0002288751 00000 n +0002288895 00000 n +0002289148 00000 n +0002289436 00000 n +0002289572 00000 n +0002289731 00000 n +0002289963 00000 n +0002290195 00000 n +0002290358 00000 n +0002290496 00000 n +0002290647 00000 n +0002290796 00000 n +0002290947 00000 n +0002291076 00000 n +0002291252 00000 n +0002291481 00000 n +0002291639 00000 n +0002291765 00000 n +0002291909 00000 n +0002292063 00000 n +0002292204 00000 n +0002292343 00000 n +0002292619 00000 n +0002292832 00000 n +0002293084 00000 n +0002293359 00000 n +0002293540 00000 n +0002293715 00000 n +0002293866 00000 n +0002294159 00000 n +0002294424 00000 n +0002294562 00000 n +0002294802 00000 n +0002294941 00000 n +0002295179 00000 n +0002295381 00000 n +0002295558 00000 n +0002295796 00000 n +0002296077 00000 n +0002296251 00000 n +0002296571 00000 n +0002296715 00000 n +0002296861 00000 n +0002296997 00000 n +0002297164 00000 n +0002297354 00000 n +0002297515 00000 n +0002297873 00000 n +0002298038 00000 n +0002298314 00000 n +0002298454 00000 n +0002298593 00000 n +0002298776 00000 n +0002298910 00000 n +0002299140 00000 n +0002299327 00000 n +0002299491 00000 n +0002299624 00000 n +0002299754 00000 n +0002299998 00000 n +0002300140 00000 n +0002300291 00000 n +0002300437 00000 n +0002300566 00000 n +0002300795 00000 n +0002300935 00000 n +0002301098 00000 n +0002301257 00000 n +0002301413 00000 n +0002301573 00000 n +0002301731 00000 n +0002301888 00000 n +0002302040 00000 n +0002302188 00000 n +0002302341 00000 n +0002302472 00000 n +0002302642 00000 n +0002302762 00000 n +0002302898 00000 n +0002303087 00000 n +0002303221 00000 n +0002303368 00000 n +0002303569 00000 n +0002303727 00000 n +0002303957 00000 n +0002304147 00000 n +0002304285 00000 n +0002304445 00000 n +0002304637 00000 n +0002304907 00000 n +0002305042 00000 n +0002305225 00000 n +0002305583 00000 n +0002305875 00000 n +0002306133 00000 n +0002306294 00000 n +0002306445 00000 n +0002306596 00000 n +0002306872 00000 n +0002307009 00000 n +0002307166 00000 n +0002307316 00000 n +0002307471 00000 n +0002307611 00000 n +0002307744 00000 n +0002307931 00000 n +0002308078 00000 n +0002308237 00000 n +0002308397 00000 n +0002308551 00000 n +0002308705 00000 n +0002308862 00000 n +0002309016 00000 n +0002309178 00000 n +0002309327 00000 n +0002309488 00000 n +0002309649 00000 n +0002309804 00000 n +0002309965 00000 n +0002310129 00000 n +0002310287 00000 n +0002310445 00000 n +0002310615 00000 n +0002310776 00000 n +0002310934 00000 n +0002311092 00000 n +0002311254 00000 n +0002311413 00000 n +0002311575 00000 n +0002311734 00000 n +0002311893 00000 n +0002312055 00000 n +0002312214 00000 n +0002312373 00000 n +0002312532 00000 n +0002312694 00000 n +0002312853 00000 n +0002313015 00000 n +0002313177 00000 n +0002313336 00000 n +0002313495 00000 n +0002313657 00000 n +0002313816 00000 n +0002313978 00000 n +0002314137 00000 n +0002314296 00000 n +0002314453 00000 n +0002314597 00000 n +0002314758 00000 n +0002314904 00000 n +0002315058 00000 n +0002315225 00000 n +0002315385 00000 n +0002315547 00000 n +0002315703 00000 n +0002315852 00000 n +0002316009 00000 n +0002316157 00000 n +0002316313 00000 n +0002316473 00000 n +0002316637 00000 n +0002316802 00000 n +0002316964 00000 n +0002317117 00000 n +0002317268 00000 n +0002317421 00000 n +0002317572 00000 n +0002317719 00000 n +0002317785 00000 n +0002322635 00000 n +0002330857 00000 n +0002335531 00000 n +0002339909 00000 n +0002346120 00000 n +0002348393 00000 n +0002349766 00000 n +0002349999 00000 n +0002350588 00000 n +0002350742 00000 n +0002352758 00000 n +0002353006 00000 n +0002353924 00000 n +0002354087 00000 n +0002355348 00000 n +0002355581 00000 n +0002356142 00000 n +0002356297 00000 n +0002357502 00000 n +0002357730 00000 n +0002358302 00000 n +0002358451 00000 n +0002360146 00000 n +0002360392 00000 n +0002361012 00000 n +0002361171 00000 n +0002361815 00000 n +0002362060 00000 n +0002362443 00000 n +0002362603 00000 n +0002362729 00000 n +0006067456 00000 n +0006137809 00000 n +0006920120 00000 n +0006924574 00000 n +0007652494 00000 n +0007656940 00000 n +0007945186 00000 n +0007949640 00000 n +0008045494 00000 n +0008048388 00000 n +0008057693 00000 n +0008065338 00000 n +0008083675 00000 n +0008088762 00000 n +0008115316 00000 n +0008126570 00000 n +0008128122 00000 n +0008129869 00000 n +0008139684 00000 n +0008146670 00000 n +0008235320 00000 n +0008242506 00000 n +0008252413 00000 n +0008257900 00000 n +0008273146 00000 n +0008275534 00000 n +0008303599 00000 n +0008312292 00000 n +0008626781 00000 n +0008657869 00000 n +0009022141 00000 n +0009039337 00000 n +0009720232 00000 n +0009738448 00000 n +0010086355 00000 n +0010103553 00000 n +0010276276 00000 n +0010291818 00000 n +0010417671 00000 n +0010450106 00000 n +0010535572 00000 n +0010539752 00000 n +0010541429 00000 n +0010551853 00000 n +0010553763 00000 n +0011176299 00000 n +0011179003 00000 n +0011208230 00000 n +0011208591 00000 n +0011221052 00000 n +0011221396 00000 n +0011224159 00000 n +0011224433 00000 n +0011226464 00000 n +0011226736 00000 n +0011718905 00000 n +0011721367 00000 n +0011894631 00000 n +0011941161 00000 n +0011942008 00000 n +0011942266 00000 n +0011945435 00000 n +0011945731 00000 n +0011954056 00000 n +0011954400 00000 n +0011956472 00000 n +0011957355 00000 n +0011959021 00000 n +0011959775 00000 n +0011960336 00000 n +0011961022 00000 n +0011961583 00000 n +0011962272 00000 n +0011962833 00000 n +0011963587 00000 n +0011966039 00000 n +0011966339 00000 n +0011968790 00000 n +0011969090 00000 n +0011969627 00000 n +0011969927 00000 n +0011973011 00000 n +0011973487 00000 n +0011974439 00000 n +0011974857 00000 n +0011977622 00000 n +0011977898 00000 n +0011988405 00000 n +0011991554 00000 n +0011992054 00000 n +0011992330 00000 n +0011996124 00000 n +0011996531 00000 n +0011997339 00000 n +0011997682 00000 n +0011998607 00000 n +0011998950 00000 n +0012511159 00000 n +0012538065 00000 n +0012546412 00000 n +0012546756 00000 n +0012560971 00000 n +0012561336 00000 n +0012569874 00000 n +0012570223 00000 n +0012578437 00000 n +0012578797 00000 n +0012580379 00000 n +0012580634 00000 n +0012581175 00000 n +0012581549 00000 n +0012582094 00000 n +0012582468 00000 n +0012583014 00000 n +0012583388 00000 n +0012583933 00000 n +0012584307 00000 n +0012584854 00000 n +0012585228 00000 n +0012586747 00000 n +0012587002 00000 n +0012587548 00000 n +0012587922 00000 n +0012589221 00000 n +0012589476 00000 n +0012590033 00000 n +0012590288 00000 n +0012594179 00000 n +0012594597 00000 n +0012595247 00000 n +0012595545 00000 n +0013373843 00000 n +0013376212 00000 n +0013462000 00000 n +0013463399 00000 n +0013513463 00000 n +0013520472 00000 n +0013523282 00000 n +0013530775 00000 n +0013532766 00000 n +0013545609 00000 n +0013547653 00000 n +0013554098 00000 n +0013554422 00000 n +0013557496 00000 n +0013557820 00000 n +0013558756 00000 n +0013559080 00000 n +0013561989 00000 n +0013562331 00000 n +0013593094 00000 n +0013613738 00000 n +0013626988 00000 n +0013627301 00000 n +0013634388 00000 n +0013635087 00000 n +0013665613 00000 n +0013666720 00000 n +0013694664 00000 n +0013695634 00000 n +0013714077 00000 n +0013714656 00000 n +0013752497 00000 n +0013753682 00000 n +0013881027 00000 n +0013882986 00000 n +0013900017 00000 n +0013900551 00000 n +0013956832 00000 n +0013986230 00000 n +0014128340 00000 n +0014130470 00000 n +0014161059 00000 n +0014161421 00000 n +0014171472 00000 n +0014445898 00000 n +0014449516 00000 n +0014539110 00000 n +0014542922 00000 n +0014581189 00000 n +0014582090 00000 n +0015326831 00000 n +0015330951 00000 n +0015761903 00000 n +0015766031 00000 n +0015802959 00000 n +0015806049 00000 n +0016022198 00000 n +0016026021 00000 n +0016106067 00000 n +0016107558 00000 n +0016140474 00000 n +0016143472 00000 n +0016305821 00000 n +0016307494 00000 n +0016728232 00000 n +0016732153 00000 n +0016745067 00000 n +0016745575 00000 n +0017091249 00000 n +0017093972 00000 n +0017440653 00000 n +0017443376 00000 n +0017870314 00000 n +0017873108 00000 n +0017922686 00000 n +0017923345 00000 n +0017938111 00000 n +0017938593 00000 n +0017988316 00000 n +0017988990 00000 n +0017995599 00000 n +0017996522 00000 n +0018556140 00000 n +0018560040 00000 n +0019127590 00000 n +0019131508 00000 n +0019379032 00000 n +0019382851 00000 n +0019423522 00000 n +0019424686 00000 n +0019452381 00000 n +0019453335 00000 n +0019481367 00000 n +0019482471 00000 n +0019499959 00000 n +0019500683 00000 n +0019564927 00000 n +0019567140 00000 n +0019685253 00000 n +0019689133 00000 n +0020883840 00000 n +0022650513 00000 n +0022661949 00000 n +0022662356 00000 n +0022668626 00000 n +0022669018 00000 n +0022673971 00000 n +0022674342 00000 n +0022824577 00000 n +0022826180 00000 n +0022940838 00000 n +0022942791 00000 n +0023064141 00000 n +0023066273 00000 n +0023070326 00000 n +0023071127 00000 n +0023077110 00000 n +0023077871 00000 n +0023197188 00000 n +0023199323 00000 n +0023307986 00000 n +0023310134 00000 n +0023414477 00000 n +0023416435 00000 n +0023521205 00000 n +0023523353 00000 n +0023643303 00000 n +0023645454 00000 n +0023754583 00000 n +0023756804 00000 n +0023867193 00000 n +0023869164 00000 n +0023950585 00000 n +0023951284 00000 n +0023969207 00000 n +0023969819 00000 n +0024509540 00000 n +0024512649 00000 n +0025028189 00000 n +0025031125 00000 n +0025564349 00000 n +0025567217 00000 n +0026106978 00000 n +0026109925 00000 n +0026649466 00000 n +0026652432 00000 n +0026672068 00000 n +0026673005 00000 n +0026700806 00000 n +0026701205 00000 n +0026702752 00000 n +0026703035 00000 n +0026704432 00000 n +0026704715 00000 n +0026962061 00000 n +0026964445 00000 n +0026985810 00000 n +0026986731 00000 n +0027493773 00000 n +0027496720 00000 n +0028036246 00000 n +0028038965 00000 n +0028583412 00000 n +0028586419 00000 n +0028617102 00000 n +0028619014 00000 n +0028644265 00000 n +0028645149 00000 n +0028659961 00000 n +0028660322 00000 n +0028676793 00000 n +0028677132 00000 n +0028695717 00000 n +0028696848 00000 n +0029018211 00000 n +0029020842 00000 n +0029021324 00000 n +0029021598 00000 n +0029022094 00000 n +0029022368 00000 n +0029022898 00000 n +0029023172 00000 n +0029024520 00000 n +0029025092 00000 n +0029026470 00000 n +0029027058 00000 n +0029029882 00000 n +0029030158 00000 n +0029032628 00000 n +0029032904 00000 n +0029033457 00000 n +0029033733 00000 n +0029043201 00000 n +0029043946 00000 n +0029045555 00000 n +0029046144 00000 n +0029047092 00000 n +0029047435 00000 n +0029049448 00000 n +0029049720 00000 n +0029059535 00000 n +0029062479 00000 n +0029103484 00000 n +0029104527 00000 n +0029106219 00000 n +0029107430 00000 n +0029115874 00000 n +0029117010 00000 n +0029117263 00000 n +0029118347 00000 n +0029118600 00000 n +0029119737 00000 n +0029120200 00000 n +0029121751 00000 n +0029122214 00000 n +0029123956 00000 n +0029124419 00000 n +0032689723 00000 n +0032738496 00000 n +0036500223 00000 n +0036548996 00000 n +0037032702 00000 n +0037037144 00000 n +0037037889 00000 n +0037038187 00000 n +0037038899 00000 n +0037039197 00000 n +0037039880 00000 n +0037040178 00000 n +0037040836 00000 n +0037041134 00000 n +0037109846 00000 n +0037113790 00000 n +0037409525 00000 n +0037413960 00000 n +0037700191 00000 n +0037704626 00000 n +0038817466 00000 n +0038822056 00000 n +0040387246 00000 n +0040390107 00000 n +0040932883 00000 n +0040936715 00000 n +0044257653 00000 n +0044306426 00000 n +0047411042 00000 n +0047459815 00000 n +0050525149 00000 n +0050573922 00000 n +0055314192 00000 n +0055362965 00000 n +0055644800 00000 n +0055647424 00000 n +0060466501 00000 n +0060515274 00000 n +0065028047 00000 n +0065098400 00000 n +0065109141 00000 n +0065110250 00000 n +0065164616 00000 n +0065165300 00000 n +0065169719 00000 n +0065170058 00000 n +0065276574 00000 n +0065277080 00000 n +0065330830 00000 n +0065331443 00000 n +0065413088 00000 n +0065417109 00000 n +0065440461 00000 n +0065443333 00000 n +0065476902 00000 n +0065479789 00000 n +0065505816 00000 n +0065510084 00000 n +0065839976 00000 n +0065842870 00000 n +0065909357 00000 n +0065911413 00000 n +0066001720 00000 n +0066004608 00000 n +0066137530 00000 n +0066139525 00000 n +0066238425 00000 n +0066240014 00000 n +0066278190 00000 n +0066279228 00000 n +0066364030 00000 n +0066365801 00000 n +0066406441 00000 n +0066408097 00000 n +0066527415 00000 n +0066530656 00000 n +0066933897 00000 n trailer << -/Size 2649 +/Size 2784 /Root 3 0 R /Info 2 0 R >> startxref -66599519 +66937268 %%EOF diff --git a/site/search/search_index.json b/site/search/search_index.json index 31fffc0..e8b4d1e 100644 --- a/site/search/search_index.json +++ b/site/search/search_index.json @@ -1 +1 @@ -{"config":{"indexing":"full","lang":["en"],"min_search_length":3,"prebuild_index":false,"separator":"[\\s\\-]+"},"docs":[{"location":"index.html","text":"Rapport Track Trends V1.0 Rohmer Maxime Travail de dipl\u00f4me Technicien ES 2023 Introduction R\u00e9sum\u00e9 Track Trends est un outil de r\u00e9cup\u00e9ration et d'analyse de donn\u00e9es de courses de Formule 1. Pour le contexte, en dehors des cours, j'exerce diff\u00e9rentes activit\u00e9s dont celle de Live Ticker F1 pour le 20 minutes. Pour m'aider dans ce travail, j'utilise actuellement la F1TV \u00e0 laquelle je suis abonn\u00e9 qui me propose non seulement un feed vid\u00e9o de meilleure qualit\u00e9 avec des commentaires plus pertinents que ceux de la RTS mais qui aussi me permet d'acc\u00e9der \u00e0 un feed vid\u00e9o tr\u00e8s important : la chaine data. Ce dernier ressemble \u00e0 cela : \"Screenshot du feed data de la f1tv\" (Attention ce n'est pas un joli tableau HTML, mais bien une vid\u00e9o qui contient un tableau.) Sauf que toutes les informations sont \u00e9tal\u00e9es p\u00eale-m\u00eale sans hi\u00e9rarchie ce qui fait que cela me prendrait trop de temps de tout d\u00e9chiffrer \u00e0 chaque fois, ce qui me fait rater des choses int\u00e9ressantes. Le but du projet est donc de fournir un outil qui hi\u00e9rarchise et affiche diff\u00e9remment les donn\u00e9es pour faciliter leur lecture et me permettre de faire de meilleurs commentaires. Abstract Track Trends is a Formula 1 data is a tool that displays and interpret data. To understand everything,first ,a little bit of context. In my free time I have multiple activities and one is to be the Live Ticker F1 for the local journal \"20 minutes\" (Owned by Tamedia). to help me in this work I'm currently using the F1TV to which I'm currently subscribed because it provides me with a better video feed with better commentary than the ones from the RTS (in my opinion) but also because it gives me access to a very important video feed : the data channel You can see in the chapter above an example of the F1TV DATA CHANNEL. [Note : Even tough it looks like a pretty HTML table on wich you could easely get infos... Its not. Its a video feed] You can see a lot of data all well and good BUT! All the data is displayed the same in a big table which make it really hard to read totally in a hurry, which means that I miss a lot of useful information. The point of the project then is to provide a tool that can display those data by taking into account their relevance. So for example a driver that is 10s away from everyone and that is doing some normal lapTimes will be less displayed or even not displayed at all so I can focus on the drivers that are battling each others. This tool would help me not miss the battles and details that are happening in the back and therefore not being broadcasted on TV.And it could be a usefull tool for anyone who wants a better insight of how the race is going by looking at the data. This kind of project already exists in the form of the AWS tool \"F1 Insight\" but it is not avaible to the public. We can only see some of its predictions (that are trash) and data dumps in the live feed when the TV directors feel like it. Description du besoin Comme expliqu\u00e9 dans le r\u00e9sum\u00e9, je suis Live Ticker F1. Mais pour mieux comprendre le besoin que j'ai, je pense qu'il est pertinent de comprendre comment je travaille. Pendant un Grand Prix de Formule 1 j'ai plusieurs t\u00e2ches \u00e0 effectuer : Suivre les diff\u00e9rents \u00e9v\u00e8nements du Grand Prix Changer le titre et la photo de titre du Live Chercher des Tweets ou des Images \u00e0 int\u00e9grer Ecrire les commentaires en faisant attention \u00e0 dire ce qu'il se passe mais aussi l\u2019expliquer, ce que cela implique, mais aussi ce que cela veut dire pour le reste de la course. Comprendre et expliquer les strat\u00e9gies Tout cela toutes les cinq minutes max... Cela veut dire que je dois \u00eatre le plus rapide possible quand je cherche des informations. Et comme le tableau en comporte trop et bien, je suis oblig\u00e9 de le lire en diagonale. Par exemple dans le tableau, les infos que je cherche le plus sont : Le nombre de places gagn\u00e9es (surtout au d\u00e9part) Les \u00e9carts entre les pilotes (surtout ceux qui sont en dessous de deux secondes). Les pneus de chaque pilote et combien de tours, ils ont fait dessus Les temps d'arr\u00eats aux stands Les temps au tour (surtout pour la strat\u00e9gie) Mais pleins d'autres informations existent si on les recoupe sur plusieurs tours. Un outil qui permettrait de mettre en \u00e9vidence les informations importantes serait donc une tr\u00e8s grosse plus-value pour mon travail et s'il est facile \u00e0 installer et \u00e0 utiliser, il se pourrait qu'il devienne indispensable. Cahier des charges Il s'agit d'une version coup\u00e9e du cahier des charges qui ne contient pas l'explication du contexte. Mais l'original est disponible sur ce site \u00e9galement. Il est toutefois normal d'y voir des choses r\u00e9p\u00e9t\u00e9es ou l\u00e9g\u00e8rement diff\u00e9rentes, en effet, il n'a pas \u00e9t\u00e9 \u00e9crit en m\u00eame temps que le reste de ce document. Projet Un outil de style compagnon sous forme d'application C# Windows Form qui r\u00e9cup\u00e8re en temps r\u00e9el les informations de la course et affiche les informations les plus importantes. Le but est non seulement de faciliter mon job, mais aussi faire en sorte d'am\u00e9liorer la plus-value de mon travail en me permettant de fournir des commentaires qui ne sont pas disponibles pour le tout venant qui regarde simplement le flux RTS. Exemples : Les pilotes qui sont proches (moins de 1-2 secondes qui sont donc en train de se battre). Les pilotes qui am\u00e9liorent leur temps au tour et ceux qui perdent le plus de temps Le classement pond\u00e9r\u00e9 tenant compte des futurs arr\u00eats au stand Maintenant afficher diff\u00e9remment les infos, c'est sympa, mais cela serait encore mieux de traiter ces data et de permettre des petites pr\u00e9dictions. Exemples : Pr\u00e9dire les arr\u00eats aux stands en prenant en compte les baisses de performances des pneus Pr\u00e9dire le pneu que le pilote va chausser s'il rentre aux stands dans le prochain tour Pr\u00e9dire dans combien de tour tel pilote va rattraper tel autre pilote Pr\u00e9dire combien de temps le pilote va perdre dans les stands en fonctions des arr\u00eats pr\u00e9c\u00e9dents R\u00e9alisation Malheureusement, la Formula 1 Management ne propose aucune API publique qui puisse nous permettre de faire ce projet \"simplement\". La raison la plus probable \u00e9tant qu'Amazon avec son service AWS propose exactement ce genre de services pour le flux t\u00e9l\u00e9vis\u00e9 et il doit y avoir un contrat d'exclusivit\u00e9. Il existe des API \"Pirates\" faites par la communaut\u00e9, le probl\u00e8me est qu'elles ne sont pas forc\u00e9ment des plus pratiques \u00e0 utiliser. Mais comme je poss\u00e8de un abonnement premium ++ \u00e0 la F1TV, j'ai acc\u00e8s pour chaque grand prix \u00e0 un flux vid\u00e9o nomm\u00e9 : DATA F1 CHANNEL Qui ressemble \u00e0 \u00e7a : \"Exemple de la Data Channel\" Donc la seule fa\u00e7on que je vois de r\u00e9cup\u00e9rer ces donn\u00e9es est de les prendre directement sur ce feed. M\u00eame si le but final de l'application est de faire pleins de choses super avec les datas, le gros du projet va surtout \u00eatre la r\u00e9cup\u00e9ration des donn\u00e9es et leur stockage. Les donn\u00e9es viennent du flux vid\u00e9o et ainsi dans un premier temps, il va falloir r\u00e9cup\u00e9rer d'une mani\u00e8re ou d'une autre des images qui viennent d'un grand prix en direct ou en rediffusion. Ensuite, dans un second temps, il faut lire les informations directement sur l'image en utilisant une librairie pr\u00e9vue pour (exemple Tesseract) et v\u00e9rifier l'int\u00e9grit\u00e9 de ces derni\u00e8res pour qu'on puisse ensuite les stocker. Dans un troisi\u00e8me temps, il faut stocker toutes ces donn\u00e9es dans une forme qui permette d'aller facilement faire des requ\u00eates de r\u00e9cup\u00e9ration et d\u00e9j\u00e0 pr\u00e9parer des m\u00e9thodes qui permettent de r\u00e9cup\u00e9rer des infos importantes (ex : la moyenne des cinq derniers tours, le temps moyen d'arr\u00eat etc.) pour faciliter la derni\u00e8re \u00e9tape Quand tout cela est fait, on peut ensuite s'amuser un peu avec les Data. La derni\u00e8re \u00e9tape est donc l'affichage. L'id\u00e9e est de cr\u00e9er une Windows Form qui contienne toutes ces informations dans un format beaucoup plus lisible et avec laquelle on pourrait interagir pour permettre de plus facilement commenter les Grands Prix. (exemple plus bas avec un croquis de ce \u00e0 quoi l'application pourrait ressembler) Voici la liste des donn\u00e9es qui pourraient \u00eatre affich\u00e9es (Non contractuel, simplement des id\u00e9es). Les pilotes qui sont proches (moins de 1-2 secondes qui sont donc en train de se battre). Les pilotes qui am\u00e9liorent leur temps au tour et ceux qui perdent le plus de temps Le classement pond\u00e9r\u00e9 tenant compte des futurs arr\u00eats au stand La moyenne de temps que les pilotes perdent dans les stands La performance moyenne des 5 types de pneus La moyenne de temps de chaque pilote sur le pneu actuel Le nombre de points que chaque pilote gagnerait selon sa position Le classement de la course Voire m\u00eame si c'est possible : Pr\u00e9dire les arr\u00eats aux stands en prenant en compte les baisses de performances des pneus Pr\u00e9dire le pneu que le pilote va chausser s'il rentre aux stands dans le prochain tour Pr\u00e9dire dans combien de tour tel pilote va rattraper tel autre pilote Pr\u00e9dire combien de temps le pilote va perdre dans les stands en fonctions des arr\u00eats pr\u00e9c\u00e9dents Pr\u00e9dire les temps au tour de chaque pilote selon l'usure des pneus Voici un exemple d'interface possible pour une page : \"Protype de l'app fait sur Figma\" Cas d'utilisation '*'On va consid\u00e9rer que tous les user ont un abonnement F1 TV PRO Un user veut r\u00e9cup\u00e9rer les data : Il ouvre son navigateur et lance la page DATA de la F1 TV Il calibre la capture des data via le programme (pour la premi\u00e8re utilisation). Il confirme que les donn\u00e9es initiales sont bonnes (pour la premi\u00e8re utilisation). Il regarde tranquille son Grand Prix Le programme r\u00e9cup\u00e8re les data : Il r\u00e9cup\u00e8re des images depuis la F1TV Il utilise Tesseract (ou autre) pour en r\u00e9cup\u00e9rer les infos. Il met ces infos dans un Objet Pilote, dans un Objet course avec un attribut tour pour hi\u00e9rarchiser les data Pour ce qui est de l'affichage, l'id\u00e9e est de faire une application C# comme on l'a appris \u00e0 l'\u00e9cole, mais avec assez de style pour qu'elle puisse \u00eatre agr\u00e9able \u00e0 utiliser. Quand le programme affiche les data : Il prend les donn\u00e9es venant directement de la F1TV. Il affiche diff\u00e9remment les donn\u00e9es pour permettre une meilleure lisibilit\u00e9 Il interpr\u00e8te avec des r\u00e8gles plut\u00f4t simples certaines data pour faire des minipr\u00e9dictions ou aider \u00e0 la lecture Il r\u00e9cup\u00e8re des infos d'autres courses pour les comparer et proposer des pr\u00e9dictions plus int\u00e9ressantes Difficult\u00e9s techniques R\u00e9cup\u00e9rer un flux vid\u00e9o plut\u00f4t propre malgr\u00e9 les contres mesures de la F1 TV pour en emp\u00eacher la lecture par un logiciel Si on doit passer par une capture d'\u00e9cran, trouver un moyen de stocker les donn\u00e9es de mani\u00e8re \u00e0 pr\u00e9voir que parfois un tour pourrait avoir plus de donn\u00e9es qu'un autre, que le user peut mettre pause, ou m\u00eame qu\u2019il revienne en arri\u00e8re. D\u00e9velopper des algorithmes pour r\u00e9cup\u00e9rer les donn\u00e9es comme les diff\u00e9rents pneus utilis\u00e9s ou l'activation du DRS ainsi que d\u00e9velopper des moyens de nettoyer les r\u00e9sultats de l'OCR (Par exemple utiliser diff\u00e9rents champs redondants pour comparer les r\u00e9sultats) Stocker les donn\u00e9es sur une base pour les traiter plus tard tout en pr\u00e9voyant un moyen de voir les stats live D\u00e9velopper des algorithmes de pr\u00e9diction qui prennent en compte d'anciennes courses pour tenter de pr\u00e9dire des choses comme les arr\u00eats aux stands par exemple. Diff\u00e9rences sur le cahier des charges Ici je vais parler de l'\u00e9t\u00e2t du projet \u00e0 la date du 12 Juin 2023. A cette date, le projet est fonctionel mais comporte quelques diff\u00e9rences avec le cahier des charges original. Je vais expliquer non seulement ces diff\u00e9rences mais aussi les raisons qui font qu'elles sont la. Pour bien comprendre les diff\u00e9rences il faut s'en r\u00e9f\u00e8rer au cahier des charges original. L'application doit \u00eatre \"Un outil de style compagnon sous forme d'application C# Windows Form qui r\u00e9cup\u00e8re en temps r\u00e9el les informations de la course et affiche les informations les plus importantes\". C'est ca la phrase la plus importante dans tout le CDC. Et je pense que tr\u00e8s honn\u00eatement, ce cahier des charges est rempli ! L'application actuellement disponible sur le r\u00e9po GIT est une application de style compagnion Windows Forms qui r\u00e9cup\u00e8re les infos de la F1TV en temps r\u00e9el et elle affiche les informations qu'elle trouve importante. Donc je dirais que l'objectif g\u00e9n\u00e9ral est remplis. Maintenant c'est dans les d\u00e9tails que cela p\u00eache. Il est mentionn\u00e9 trois exemples d'infos \u00e0 suivre je cite : \"Les pilotes qui sont proches (moins de 1-2 secondes qui sont donc en train de se battre).\" \"Les pilotes qui am\u00e9liorent leur temps au tour et ceux qui perdent le plus de temps\" \"Le classement pond\u00e9r\u00e9 tenant compte des futurs arr\u00eats au stand\" r\u00e9sultats : Dans l'application on peut effectivement voir les pilotes proches (Ce sont ceux qui sont \u00e0 moins de 3 secondes dans le version finale) Dans l'application on peut aussi voir un affichage qui permet de voir les pilotes les plus rapides et les plus lents sur le circuit. On ne peut en revanche pas voir de classement pond\u00e9r\u00e9 selon les arr\u00eats aux stands car l'application a du mal \u00e0 detecter des arr\u00eats. Ensuite pour ce qui est des pr\u00e9dictions il n'y en a aucunes comme ca c'est simple. Si on ne regarde que de tr\u00e8s loin le CDC et le projet final on pourrait dire que c'est plut\u00f4t d\u00e9cevant car il manque beaucoup de choses comme les pr\u00e9dictions et certains affichages. On peut aussi se dire ca en comparant la maquette du CDC et le r\u00e9sultat final. \"Maquette originale du projet faite sur Figma\" \"Maquette originale du projet faite sur Figma\" Clairement un oeuil non avis\u00e9 pourrait \u00eatre tr\u00e8s d\u00e9cu et pourrait dire que c'est un echec. Et moi je vais vous expliquer pourquoi au contraire c'est un total succ\u00e8s. D\u00e9ja, la beaut\u00e9 de l'interface est tr\u00e8s difficile a r\u00e9pliquer en Windows Forms et il faudrait plus d'une semaine de travail pour arriver \u00e0 quelque chose qui pourrait ressembler un tout petit peu \u00e0 la maquette. Ensuite, si on regarde bien, on a quand m\u00eame une application qui nous permet de suivre les informations de la course et qui calcule des choses \u00e0 notre place. C'est d\u00e9ja une grosse plus-value par rapport \u00e0 la page Data de la F1TV. Et finalement, les pr\u00e9dictions, les affichages et le style ce sont les choses les moins compliqu\u00e9es du projet. On ne se rends pas compte que pour simplement afficher les 20 pilotes dans le bon ordre il faut \u00e9norm\u00e9ment de travail. Voici une petite repr\u00e9sentation graphique de la quantit\u00e9 de travail nescessaire pour en arriver \u00e0 l'\u00e9t\u00e2t actuel du projet : \"Graphique repr\u00e9sentant la quantit\u00e9 de travail requise\" Pour en arriver \u00e0 un affichage il a fallu r\u00e9cup\u00e8rer automatiquement les images en utilisant un browser headless ce qui a pris un temps fou \u00e0 mettre en place et il a fallu surtout lire les informations que l'on recevait des images. J'ai pass\u00e9 presque 90% du temps de mon projet \u00e0 d\u00e9velopper des choses qui permettront ensuite de faire de l'affichage. Le fait qu'il y aie quoi que ce soit de logique qui s'affiche cela veut dire que TOUT LE RESTE fonctionne ! Le moindre soucis \u00e0 la r\u00e9cup\u00e9ration des images, ou surtout \u00e0 la reconnaissance de texte et de chiffres et l'affichage est ruin\u00e9. Si j'avais pass\u00e9 ne serait-ce qu'une semaine de plus juste sur l'affichage le r\u00e9sultat final n'aurait rien \u00e0 voir. Le soucis c'est simplement que le cahier des charges ne parle pas du tout du reste du projet et ne parle que du r\u00e9sultat final. Pour toutes ces raisons je dirais que le CDC \u00e9tait trop superficiel mais que l'application est conforme \u00e0 l'id\u00e9e g\u00e9n\u00e9rale de ce dernier et qu'il serait tr\u00e8s facile de la rendre parfaitement conforme maintenant que tout le travail de fond a \u00e9t\u00e9 fait et fonctionne et je pense donc que c'est un succ\u00e8s. Planning pr\u00e9visionnel Mes suiveurs m'ont demand\u00e9 un planning de type GANTT pour ce travail de dipl\u00f4me Je n'ai pas utilis\u00e9 un logiciel particulier pour faire ce dernier, mais je me suis inspir\u00e9 des principes fondamentaux d'un diagramme de ce type. Comme l'original a \u00e9t\u00e9 fait sur Excel, je ne peux pas vraiment l'ins\u00e9rer de mani\u00e8re lisible ici, mais il est disponible dans le dossier Planning. Mais voici un r\u00e9sum\u00e9 de son contenu : T\u00e2ches J'ai d\u00e9cid\u00e9 de d\u00e9composer mon planning en trois grands types de t\u00e2ches. Programmation Documentation Tests L'id\u00e9e est de permettre une meilleure lisibilit\u00e9 et de me permettre \u00e0 moi de me faire plus facilement \u00e0 l'id\u00e9e de ce qu'il m'attend. Voici la liste des t\u00e2ches par rubrique : PT Cette rubrique contient les t\u00e2ches qui n'ont pas leur place dans les trois cat\u00e9gories principales. PT1 / pr\u00e9paration au travail de dipl\u00f4me (2) Cette t\u00e2che est un peu hors cat\u00e9gorie, mais c'est normal, c'est une supert\u00e2che qui regroupe beaucoup de choses. C'est une t\u00e2che qui est planifi\u00e9e pour deux jours et qui normalement devrait \u00eatre faite les deux premiers jours du travail. Le but est de pr\u00e9parer tout ce qui peut \u00eatre pr\u00e9par\u00e9 en avance niveau documentation et mise en place pour ne pas avoir besoin de s'en soucier ensuite. DT Rubrique documentation qui contient toutes les t\u00e2ches en rapport de pr\u00e8s ou de loin avec la documentation du projet. DT1 Cr\u00e9ation du poster (1) Cette t\u00e2che consiste \u00e0 faire une version num\u00e9rique du poster qui soit en accord avec les consignes qu'on nous a donn\u00e9es. Le but est aussi et surtout de faire poster dont je sois fier et que je sois content de montrer. Il y a d\u00e9j\u00e0 des croquis de poster et j'ai clairement pr\u00e9vu de travailler sur \u00e7a pendant les vacances alors, je n'ai mis qu'un jour et je l'ai plac\u00e9 juste avant le rendu de ce dernier. DT2 Documentation Analyse de l'existant (2) Cette t\u00e2che est d\u00e9di\u00e9e \u00e0 l'\u00e9criture de la documentation et plus pr\u00e9cis\u00e9ment de l'analyse de l'existant. Comme il y a pas mal de technologies utilis\u00e9es dans mon projet, j'aimerais faire correctement un vrai debrief de pourquoi j'ai utilis\u00e9 l'une ou l'autre alors, j'ai assign\u00e9 deux jours dessus. DT3 Documentation Analyse organique (5) Cette t\u00e2che est la plus grosse dans la cat\u00e9gorie documentation. Il s'agit de documenter comment l'application fonctionne. J'y ai mis cinq jours et je pense que c'est un minimum car c'est dans cette t\u00e2che que je vais devoir d\u00e9tailler exactement comment fonctionne chaque partie du projet. Ces cinq jours sont \u00e9parpill\u00e9s sur le projet en g\u00e9n\u00e9ral \u00e0 la fin du d\u00e9veloppement de chaque grande partie de projet. Le but est de ne rien oublier et de ne pas avoir \u00e0 tout faire en m\u00eame temps. DT4 Documentation Analyse fonctionnelle (2) Cette t\u00e2che est d\u00e9j\u00e0 moins grosse, elle consiste \u00e0 documenter le fonctionnement de l'application et comment utiliser les composants que j'ai d\u00e9velopp\u00e9s. Je l'ai mis en fin de projet, car comme j'ai l'habitude de faire des analyses fonctionnelles plut\u00f4t pr\u00e9cises, le moindre changement dans l'UI peut tout rendre obsol\u00e8te. J'y ai mis deux jours, car j'aimerais correctement documenter avec de bonnes photos et sc\u00e9narios pour qu'on puisse voir toutes les possibilit\u00e9s de l'application. DT5 Documentation Tests (1) Cette t\u00e2che est un peu plus petite qu'elle ne le devrait. Elle concerne la documentation des diff\u00e9rents tests. Je n'y ai mis qu'un seul jour, car en r\u00e9alit\u00e9 les diff\u00e9rentes t\u00e2ches de tests contiennent aussi beaucoup de documentation, DT6 Documentation Reste (2) Cette t\u00e2che est une t\u00e2che un peu vague. Elle contient toutes les actions autres que j'aurai besoin de faire (Mise au propre, orthographe, g\u00e9n\u00e9ration de PDF ...). J'y ai mis deux jours pour avoir un peu de marge, car ce sont toujours des t\u00e2ches qui paraissent faciles, mais qui \u00e0 la fin prennent beaucoup de temps si on les fait bien. PT Rubrique programmation qui contient toutes les t\u00e2ches qui touchent \u00e0 la programmation et au d\u00e9veloppement de l'application. PT1 Programmation r\u00e9cup\u00e9ration des images (3) Cette t\u00e2che est estim\u00e9e \u00e0 seulement trois jours, il ne faut pas s'y m\u00e9prendre, c'est une des t\u00e2ches les plus dures et lourdes niveaux documentation en explications. Cependant, un POC (Proof Of Concept) assez avanc\u00e9 a d\u00e9j\u00e0 \u00e9t\u00e9 fait et donc cela permet de n'envisager que trois jours, car il suffit de l'impl\u00e9menter et de la paufinner. Cette t\u00e2che consiste \u00e0 prendre en entr\u00e9e un lien de Grand Prix et de sortir une image tous les x secondes de la page DATA. Cela peut sembler simple, mais pour le faire sans prendre d'espace d'\u00e9cran et ne demandant pas \u00e0 l'utilisateur de copier-coller quoi que ce soit o\u00f9 de donner ses identifiants F1TV c'est un challenge. Cela peut paraitre curieux alors de mettre cette t\u00e2che loin dans le planning m\u00eame si c'est la premi\u00e8re \u00e9tape du projet. Encore une fois cela s'explique avec le fait qu'il y a d\u00e9j\u00e0 un POC qui fonctionne \u00e0 peu pr\u00e8s et que donc pr\u00e9f\u00e8re commencer avec des t\u00e2ches plus incertaines dans le cas o\u00f9 elles prendraient plus de temps que pr\u00e9vu. PT2 Programmation OCR (5) Cette t\u00e2che consiste \u00e0 d\u00e9velopper la partie qui reconnait le texte sur les images. C'est tr\u00e8s certainement la t\u00e2che qui risque le plus de d\u00e9border car c'est celle qui est la plus complexe techniquement puisqu'elle demande non seulement la lecture sur image, mais aussi le d\u00e9veloppement d'algorithmes de traitement de cette donn\u00e9e pour \u00eatre s\u00fbr qu'elle a bien \u00e9t\u00e9 lue. J'y ai ainsi allou\u00e9 cinq jours, mais j'esp\u00e8re que j'arriverai \u00e0 gagner du temps sur les autres pour y allouer plus dans le planning effectif, car je suis convaincu que plus, on y passe du temps, meilleur sera le r\u00e9sultat. PT3 Programmation, stockage et mod\u00e8le (5) Cette partie est moins technique, mais concerne le stockage des donn\u00e9es que nous retourne la lecture des images. Mais elle va demander de la r\u00e9flexion et de l'intelligence de programmation, car il faut que cette partie anticipe les besoins de la vue et pr\u00e9pare un terrain fertile qui ne demande pas un refactor quand on passera au d\u00e9veloppement de la vue. C'est pour cela que je lui ai aussi assign\u00e9 cinq jours de travail et elle doit absolument \u00eatre commenc\u00e9e apr\u00e8s la lecture. PT4 Programmation Vue de l'APP (5) Cette partie peut \u00eatre horrible comme tr\u00e8s facile, cela d\u00e9pend compl\u00e8tement de la qualit\u00e9 du travail avant. Si le mod\u00e8le est parfait et que les donn\u00e9es sont int\u00e8gres, cela devrait \u00eatre plut\u00f4t simple de les afficher de mani\u00e8re int\u00e9ressante. Cependant, cette partie d\u00e9bordera s\u00fbrement un peu, car tout le temps gagn\u00e9 avec de bonnes donn\u00e9es sera utilis\u00e9 pour tenter de faire de la pr\u00e9diction. Pour ces raisons, je lui ai assign\u00e9 \u00e9galement cinq jours de travail et elle doit absolument \u00eatre faite apr\u00e8s le mod\u00e8le. PT5 Programmation mise en commun (3) Cette t\u00e2che est aussi un petit peu sp\u00e9ciale, car elle regroupe plusieurs choses. En gros, chaque partie de programmation sera s\u00fbrement assez ind\u00e9pendante et il faudra \u00e0 un moment faire un seul projet C# qui contient tout. Il est difficile d'estimer \u00e0 quel point cela va \u00eatre compliqu\u00e9 alors, j'ai \u00e9t\u00e9 conservateur et j'ai mis trois jours. TT Cette rubrique contient les t\u00e2ches qui sont uniquement des tests. La plupart des t\u00e2ches de programmations contiennent d\u00e9j\u00e0 des tests, mais certaines demandent une attention particuli\u00e8re. TT1 Tests OCR (2) Cette t\u00e2che est une des t\u00e2ches les plus importantes. Son but est de faire un protocole de tests complet qui permette de comparer les diff\u00e9rents algorithmes de reconnaissance de texte. Je l'ai mise apr\u00e8s la reconnaissance, mais m\u00eame maintenant en \u00e9crivant ces lignes, je me dis que dans le planning effectif, elle sera faite pendant la t\u00e2che de programmation. En effet, comment savoir si mon tout nouvel algorithme est r\u00e9ellement mieux que le pr\u00e9c\u00e9dent. Je pr\u00e9vois deux jours, car je pense que faire le dataset va prendre beaucoup de temps, il faut pr\u00e9voir un certain nombre d'images et de texte qui pourront ensuite \u00eatre donn\u00e9es sous forme de tests. C'est certes une t\u00e2che de test, mais c'est aussi de la programmation. TT2 Tests finaux (2) Cette t\u00e2che de tests est un peu vague, elle regroupe les diff\u00e9rents tests pour v\u00e9rifier que les donn\u00e9es sont bien affich\u00e9es correctement. Ce qui serait cool si j'ai du temps en fin de travail de dipl\u00f4me serait de faire un syst\u00e8me de test qui permet d'entrainer le programme \u00e0 mieux reconnaitre certaines choses comme des arr\u00eats aux stands si on lui donne les trois derni\u00e8res ann\u00e9es de grands Prix. J'ai mis une dur\u00e9e arbitraire de deux jours, mais je ne sais pas vraiment combien de temps cela va vraiment durer. Elle est \u00e9videmment \u00e0 effectuer une fois que tout est \u00e0 peu pr\u00e8s termin\u00e9. Planning effectif et diff\u00e9rences Alors ! Ces lignes sont \u00e9crites dans les derniers jours du travail de dipl\u00f4me et j'ai des choses \u00e0 dire. Premi\u00e8rement je suis plut\u00f4t content de mon estimation du travail. Je trouve que j'ai bien estim\u00e9 la quantit\u00e9 de travail et combien de temps les diff\u00e9rentes t\u00e2ches allaient prendre. La plupart des d\u00e9passements sont des impr\u00e9vus et/ou des allers et retours entre d'autres t\u00e2ches. La raison pour laquelle je suis plut\u00f4t content de ma planification, c'est que malgr\u00e9 l'usine \u00e0 Gaz que repr\u00e9sente ce projet et le nombre de soucis que j'ai eu, j'ai quand m\u00eame pu arriver \u00e0 un projet qui fonctionne en suivant plut\u00f4t fid\u00e8lement le planning. Une chose dont je suis plut\u00f4t fier c'est la documentation. En ayant d\u00e9velopp\u00e9 le squelette de l'app d\u00e8s le d\u00e9but du projet ca m'a permis d'avancer au fur et \u00e0 mesure du projet la conscience tranquille. Bon c'est bien joli les fleurs mais clairement c'est loin d'\u00eatre parfait. Au moment de la planification je n'avais pas pr\u00e9vu de faire des allers et retours entre plusieurs t\u00e2ches. Dans le planning effectif on peut voir que un jour je suis sur la PT3 (Stockage) et la PT5 (regroupement des mini projets en un seul gros). J'aurais peut-\u00eatre du inverser l'ordre. Mais il y a deux gros soucis dans mon planning : L'ordre des t\u00e2ches n'\u00e9tait pas bon (mais il a \u00e9t\u00e9 d\u00e9cid\u00e9 comme ca pour que les plus grosse difficult\u00e9es soient faites en premier) ce qui a cr\u00e9\u00e9 pas mal de soucis. Ex : L'\u00e9mulateur de la F1TV a \u00e9t\u00e9 fait tr\u00e8s tard et au final les images r\u00e9cup\u00e8r\u00e9es n'\u00e9taient pas de la m\u00eame qualit\u00e9 que ce que j'avais pr\u00e9vu en d\u00e9veloppant l'OCR en premier. Les Tests ont \u00e9t\u00e9 n\u00e9glig\u00e9s et utilis\u00e9s comme des jours tampons. Ca c'est la plus grosse erreur de planning. Autant les autres sont p\u00e9nibles etc... mais n'ont pas forc\u00e9ment compromis la bonne r\u00e9alisation du projet alors que la les tests ont \u00e9t\u00e9 mal plac\u00e9s et ont au final \u00e9t\u00e9 balay\u00e9s alors que si ils avaient \u00e9t\u00e9 mieux planifi\u00e9s ca ne serait pas arriv\u00e9. Solutions : L'ordre des t\u00e2ches a \u00e9t\u00e9 d\u00e9cid\u00e9 expr\u00e8s de cette facon pour \u00e9viter de prendre trop de risques. L'id\u00e9e \u00e9tait qu'en faisant le plus dur au d\u00e9but, je pourrai facilement changer le cahier des charges. J'ai envie de dire que j'aurais d\u00fb \u00eatre plus confiant mais pour \u00eatre honn\u00eate je pense que c'\u00e9tait un mal pour un bien. Je ne pense pas avoir \"bien\" fait mais je pense que c'est une erreur qui \u00e9tait rentable pour mon niveau de stress dans le projet. Par contre les Tests c'est tout simplement une erreur. J'en parle plus en d\u00e9tail dans la partie test de la documentation mais je vais r\u00e9sumer un peu ici. La documentation a \u00e9t\u00e9 faite d\u00e8s le d\u00e9but du projet. J'ai mis en place le squelette pour qu'ensuite il soit simple d'y ajouter au fur et \u00e0 mesure. J'aurais dur faire exactement pareil avec les tests. Si j'avais fait au moins le squelette des tests au d\u00e9but du projet j'aurais pu beaucoup plus facilement en faire et cela m'aurait fait gagner un temps fou et j'aurais m\u00eame pu faire du TDD (Test Driven Developpement). Je suis persuad\u00e9 que cette b\u00eate erreur de planification m'a c\u00f4ut\u00e9 tr\u00e8s ch\u00e8re car ne pas avoir une bonne strat\u00e9gie de tests a du me faire perdre un temps fou. Pour conclure je suis content car j'ai r\u00e9ussi \u00e0 rendre un projet qui marche en suivant assez bien le planning mais il y a des choses que je vais devoir changer dans mes prochains projets. Analyse fonctionnelle Voir \"Manuel Utilisateur\" tout y est indiqu\u00e9 Analyse Organique Outils utilis\u00e9s Visual Studio 2022 \"Logo de Visual Studio 2022\" C'est l'application que j'ai le plus utilis\u00e9 je pense. Visual Studio 2022 est l'IDE officiel de Microsoft pour coder en C#. C'est l'outil que j'utilise depuis maintenant 6 ans au CFPT et franchement il fait tout ce que je pourrais vouloir. C'est aussi un outil pratique pour utiliser Windows Forms et faire des applications natives Windows. Pas grand chose \u00e0 dire \u00e0 ce sujet \u00e0 part que c'est un outil qui marche bien et qui est gratuit si on prend la community edition. Visual Studio Code \"Logo de Visual Studio Code\" Cet outil est d\u00e9ja un peu plus int\u00e9ressant. C'est le second outil que j'ai le plus utilis\u00e9. J'en ai surtout eu besoin pour \u00e9crire de la doc, mais aussi pour coder en python et pour contr\u00f4ler mkdocs. Visual Studio est un IDE absolument g\u00e9nial qui est tr\u00e8s puissant avec les bonnes extensions. Je l'utilise au quotidien pour tout ce qui est d\u00e9veloppement WEB, Mobile ou pour \u00e9diter des fichiers de configs pour mes drones ou imprimantes 3D. Je peux m\u00eame compiler le firmware pour ces derni\u00e8res en utilisant une extension faite pour. Les possibilit\u00e9s de customisation sont presques infinies et c'est un plaisir d'utiliser ce logiciel gratuit fournis par Microsoft mais qui est am\u00e9lior\u00e9 constamment par des d\u00e9veloppeurs ind\u00e9pendants. Je conseille \u00e0 nimporte quel d\u00e9veloppeur de l'essayer \u00e0 moins qu'il soit uniquement sur C# ou il serait plus int\u00e9ressant d'utiliser visual studio 2022 Material/Mkdocs/Markdown \"Logo de Mkdocs Materials\" Pendant ce projet j'ai utilis\u00e9 exclusivement du markdown avec l'aide de Mkdocs et Materials. Le choix de Markdown a \u00e9t\u00e9 plut\u00f4t simple, c'est une facon facile et efficace de cr\u00e9er de la documentation et on n'avait pas le choix de l'utiliser. On avait \u00e9galement l'obligation (Ou au moins un tr\u00e8s forte incitation) par nos professeurs d'utiliser mkdocs et materials pour que notre documentation ne soit pas simplement une liste de fichiers mais un joli site dans lequel il est agr\u00e9able de chercher des informations. Mkdocs et Materials sont deux outils vraiment fantastiques mais je dois avouer que je n'ai pas assez mis de temps pour apprendre tout leur potentiel. Pour moi ce sont simplement des outils et je veux qu'ils marchent. Je ne suis pas forc\u00e9ment du genre \u00e0 aller changer toutes les couleurs et polices pour avoir la doc parfaite, j'ai pr\u00e9f\u00e9r\u00e9 passer du temps sur mon app. Mais m\u00eame si ces outils offrent une customisation tr\u00e8s avanc\u00e9e, il est tr\u00e8s facile de cr\u00e9er un projet simple et j'aime beaucoup cette simplicit\u00e9. J'ai eu pas mal d'aide de la part de M.Briard pour impl\u00e9menter certaines features et je l'en remercie tr\u00e8s chaudement car sans son aide ce document serait s\u00fbrement un peu moins facile \u00e0 lire (Oui oui ca aurait pu \u00eatre pire, je sais c'est dur \u00e0 imaginer) Figma \"Logo de Figma\" Figma est l'outil que j'ai utilis\u00e9 pour cr\u00e9er mon poster et un certain nombre des diagrammes de cette documentation. J'utilise aussi cet outil d\u00e8s que je vais faire des maquettes de sites ou d'applications. D'ailleurs les maquettes dans le cahier des charges ont \u00e9t\u00e9 faites avec. C'est un outil en ligne parfaitement gratuit qui conserve tout dans le cloud. Franchement je n'ai rien \u00e0 dire, je n'ai pas utilis\u00e9 plus de 15% des features que cet outil propose et je suis d\u00e9ja conquis. Technologies utilis\u00e9es Dans ce projet diff\u00e9rents choix ont \u00e9t\u00e9 faits pour ce qui est des technologies. Certaines ont \u00e9t\u00e9 choisies car elles \u00e9taient les plus simples, les plus pratiques, les plus efficaces ou encore les plus connues et donc ayant le meilleur support. Je vais tenter de r\u00e9sumer ici ces choix mais je reviendrai sur la plupart d'entre eux plus tard quand j'explique ce que je fais avec. Selenium \"Logo de selenium\" Selenium est une librairie \u00e0 la base Node JS qui permet d'automatiser des actions sur un navigateur internet. Le but premier et je pense son utilisation premi\u00e8re est l'automatisation de tests pour des applications WEB. En effet c'est un super outil pour simuler un user faisant un certain nombre d'actions sans apporter de variabilit\u00e9 ce qui fait de supers test unitaires. Cependant je pense que l'autre grande partie des utilisateurs de Selenium l'utilisent pour faire du \"Scrapping\". Et nous sommes un peu dans cette seconde cat\u00e9gorie. Le \"Scrapping\" c'est l'acte d'aller r\u00e9cup\u00e8rer des informations sur des pages web automatiquement pour alimenter sa propre base de donn\u00e9es. En effet, si on arrive \u00e0 passer les protections anti-bot on peut facilemnt utiliser Selenium pour scraper tous les sites qui nous passent par la t\u00eate. Le cahier des charges que j'avais en t\u00eate en cherchant une technologie de contr\u00f4le de navigateur internet \u00e9tait le suivant : Simple Permettant de contr\u00f4ler un navigateur Headless (Voir chapitre \"Simuler un navigateur ?\") Permettant de contr\u00f4ler firefox Ayant un wrapper C# Permettre de changer certaines choses comme les cookies en Live Permettre d'interagir avec les \u00e9l\u00e9ments d'une page Fonctionner Simple car je ne voulais pas avoir \u00e0 passer trop de temps dessus (ca n'a pas bien vieillit lol...). Je voulais que l'on puisse utiliser Firefox car il n'impl\u00e9mente pas les m\u00eames s\u00e9curit\u00e9es que Chrome pour faire simple. J'avais besoin que la lib puisse contr\u00f4ler un Firefox HEADLESS car je ne voulais pas avoir une page web ouvert sur mon ordi quand je commente car c'est de l'espace utilis\u00e9 pour rien. J'avais besoin d'un wrapper C# car c'est le language que j'utilise. Pour finir j'avais besoin d'interragir avec les \u00e9l\u00e9ments de la page pour naviguer dessus et d'ins\u00e8rer des cookies pour me connecter sans avoir \u00e0 passer par le login de la F1TV qui est tr\u00e8s bon pour detecter les bots. Avec un cahier des charges parreil beaucoup de librairies ont \u00e9t\u00e9 abandonn\u00e9es. J'ai pu tester pleins de librairies C# qui arrivaient \u00e0 contr\u00f4ler un Chrome et m\u00eame pas mal qui arrivaient \u00e0 contr\u00f4ler un Chrome Headless. Mais le choix est tr\u00e8s vite restreind quand on veut pouvoir contr\u00f4ler Chrome OU Firefox. A la base mon choix c'\u00e9tait port\u00e9 sur Puppeteer Sharp qui est une librairie qui se veut \u00eatre exactement ce que je veux. \"Logo de Pupeteer\" Je voulais utiliser cette librairie car il y a des plugins qui sont tr\u00e8s orient\u00e9s scrapping, en effet, ils impl\u00e9mentent de nombreuses techniques pour permettre de mieux passer innapercu par les syst\u00e8mes de detection de bots. Sur le papier c'est la librairie parfaite qui correspond parfaitement au cahier des charges que je m'\u00e9tais fix\u00e9 et je pense que si j'utilisais un projet JS elle le serait. Sauf que avec le wrapper C# j'ai eu un certain nombre de probl\u00e8mes: Toutes les versions de la librairie ne fonctionnaient pas. Il fallait faire des tests avec diff\u00e9rentes versions de la librairie et de ses d\u00e9pendences simplement pour faire d\u00e9marrer un browser. Et ca c'est quand ca marchait car il y avait des jours ou des machines ou je n'ai simplement pas pu faire fonctionner la librairie. M\u00eame avec les techniques propos\u00e9es par les plugins \"Stealth\" je n'arrivais pas \u00e0 bypass les s\u00e9curit\u00e9es de la page de login de la F1TV. J'ai essay\u00e9 tout ce que j'ai pu trouver sur internet mais on se fait toujours chopper d\u00e8s que l'on arrive sur la page. Et le pire de tout, impossible de faire fonctionner un vid\u00e9o. J'ai pu faire tout ce que je voulais faire au final en passant par l'utillisation de cookies pour la connexion. Tout ca pour arriver au moment ou il faut lancer la vid\u00e9o, et la, crash. Impossible de faire fonctionner Puppeteer Sharp avec une vid\u00e9o. D\u00e8s qu'elle se lance c'est un crash assur\u00e9 sans message d'erreur clair. Et le soucis c'est que le wrapper C# n'est pas vraiment bien support\u00e9 et que si c'est un bug de la lib je ne risque pas de voir de fix avant un moment si ce n'est jamais. Pour toutes ces raisons, j'ai du abandonner cette librairie ce qui a \u00e9t\u00e9 tr\u00e8s dur car j'avais pass\u00e9 beaucoup de temps dessus \u00e0 essayer de la faire marcher. Ensuite le choix de Selenium \u00e9tait plut\u00f4t simple, c'\u00e9tait la seule option restante. A ce jour je ne connait aucune autre librairie que Puppeteer ou Selenium qui puisse contr\u00f4ler un Firefox Headless en respectant mon cahier des charges et qui soit donc disponible depuis C#. Si je n'arrivais pas \u00e0 faire fonctionner Selenium j'aurai du abandonner l'id\u00e9e de simuler un navigateur tout simplement. Mais j'ai eu la chance que cette librairie fasse tout ce que je pouvais demander. C'est une super lib et m\u00eame si la version C# n'est vraiment pas bien document\u00e9e, la plupart des documentations de la version JS sont pertinentes pour al version C# m\u00eame si ca n'est pas la m\u00eame syntaxe. Pour r\u00e9sumer, j'ai choisis Puppeteer car c'\u00e9tait la seule option viable pour mon besoin. (Note : Par contre si je trouve la personne chez mozilla ou puppeteer qui a d\u00e9cid\u00e9 d'hardcoder la r\u00e9solution maximale du browser Headless que l'on peut override UNIQUEMENT en changeant les variables d'environnement de la machine ET DE NE LE DOCUMENTER QUASI NULLE PART JE JURE QUE CA VA TRES MAL SE PASSER) CSharp \"Logo C#\" Je pense que c'est le choix le plus simple \u00e0 expliquer. C# est un language de programmation orient\u00e9 objet relativement haut niveau qui a \u00e9t\u00e9 cr\u00e9\u00e9 par Microsoft et qui a comme cible le developpement d'applications pour Windows. (On peut evidemment trouver des adaptations pour le faire tourner sur Linux mais ce n'est pas vraiment le but du language) En plus d'\u00eatre un superbe language de programmation, c'est le language que l'on apprend au CFPT informatique. C'est donc un language avec lequel je suis beaucoup plus \u00e0 l'aise que pour d'autres languages comme le Python ou le JS. Mon but n'\u00e9tait pas de faire une application Web et je travaille sous Windows. Je savais que mon projet allait demander un minimum de programmation orient\u00e9e objet. J'ai donc imm\u00e9diattement pens\u00e9 \u00e0 utliser C#. Cependant j'aurais tr\u00e8s bien pu utiliser un language comme python qui m'aurait clairement facilit\u00e9 la t\u00e2che avec des librairies bien plus fournies et plus souvent mises \u00e0 jour. Mais comme je ne suis pas du tout aussi \u00e0 l'aise avec je pense que le C# \u00e9tait la meilleure option. Mes seuls regrets apr\u00e8s coup sont que je trouve les Windows Forms tr\u00e8s moches et qu'il est particuli\u00e8rement difficile de les rendres plus jolies et que les librairies disponibles en C# pour des sc\u00e9narios tr\u00e8s pr\u00e9cis ne sont pas au niveau de celles pour JS et pour Python. Cependant si j'avais \u00e0 refaire le projet je reprendrais C# je pense. Python? \"Logo Python\" Alors ce choix la est plus commpliqu\u00e9 \u00e0 comprendre. Pour tout le projet j'ai tent\u00e9 de garder le C# comme language et de ne pas utiliser autre chose. Cependant j'ai du utiliser une seule fois le Python dans un cas tr\u00e8s pr\u00e9cis. Je n'aime vraiment pas coder en python de base et clairement j'aurais pr\u00e9f\u00e8r\u00e9 ne pas l'utiliser mais je n'avais pas le choix. Le besoin dans le cas du python \u00e9tait le suivant : J'avais besoin d'un moyen de r\u00e9cup\u00e8rer des strings et les d\u00e9coder avec une cl\u00e9 encod\u00e9e avec le syst\u00e8me propri\u00e9taire de windows d'encodage. Le soucis que j'avais avec le C# c'est que les methodes de decryption ne fonctionnent pas pareil que en python et tous les exemples que je pouvais trouver \u00e9taient en python. J'ai essay\u00e9 pendant un sacr\u00e9 moment de faire fonctionner la decryption en C# mais sans succ\u00e8s. J'ai donc directement utilis\u00e9 le python comme faisait toutes les personnes que je pouvais voir sur internet et je pense que ca n'est pas une mauvaise id\u00e9e. En effet, cela veut dire que si \u00e0 un moment Chrome est mis \u00e0 jour, je n'aurai pas besoin d'aller ouvrir tout le code source de mon projet pour tout recompiler, j'aurai simplement besoin de changer ce script. Un des avantages du Python est quand m\u00eame qu'il y beaucoup plus de gens qui codent dessus, et pour ce genre d'utilisation tr\u00e8s sp\u00e9cifiques c'est plut\u00f4t pratique. Le seul probl\u00e8me c'est que cela oblige l'utilisateur \u00e0 avoir python install\u00e9 sur sa machine et que sa version doit \u00eatre compatible... (les joies de python) Firefox \"Logo Firefox Headless\" J'en parle deja plus bas, mais le choix de navigateur est super important. Deja tous les navigateurs n'ont pas un mode Headless(sans t\u00eate, mieux expliqu\u00e9 dans la rubrique \"Simuler un naviguateur ?\"). Par exemple, m\u00eame si Edge est maintenant bas\u00e9 sur chromium, il n'existe pas de moyen de le faire tourner en Headless pour le moment. Autre soucis, les librairies d'automatisation ne supportent pas tous les navigateurs. Par exemple, beaucoup supportent chrome mais tr\u00e8s peu supportent Firefox ou Edge. Donc il me fallait un navigateur qui puisse op\u00e8rer en Headless et qui soit support\u00e9 par plusieurs librairies d'automatisation. Il n'y a que Firefox et Chrome qui sont conforme \u00e0 ces exigeances (Je n'ai pas verifi\u00e9 pour TOUS les navigateurs. Peut-\u00eatre que les Opera GX ont aussi un mode headless super, mais je me suis concentr\u00e9 sur les navigateurs plus grand public). Chrome est support\u00e9 par plus de lib, mais le soucis c'est que la F1TV utilise un lecteur de vid\u00e9o avec DRM (Plus d'infos la dessus dans la partie \"Simuler un navigateur?\") et donc le choix \u00e9tait simple. Il ne restait que Firefox. Tesseract Je pense que le choix le plus simple apr\u00e8s le C# fut l'utilisation de Tesseract. C'est tout simplement l'outil le plus utilis\u00e9 pour faire de l'OCR. A la base c'est une lib Python (Ah tiens encore ?) qui peut \u00eatre redoutablement efficace avec le bon dataset. Il existe d'autres outils mais j'ai d\u00e9cid\u00e9 de prendre celui la \u00e0 cause de son support juste incroyable et de son omnipr\u00e9sence dans la documentation OCR. En plus il est facile \u00e0 utiliser et je ne pense pas encore avoir fait le tour de tout son potentiel dans ce projet. Fonctionnement g\u00e9n\u00e9ral Avant de passer \u00e0 l'explication de chaques parties du projet en d\u00e9tail, je pense qu'il est important de faire un petit point sur comment toutes les parties du projet s'emboitent et fonctionnement ensemble. Comme ca quand vous lirez l'explication d'une \u00e9tape vous serez conscient de \u00e0 quoi elle sert et ou elle s'\u00eenscrit dans le projet principal. Les briques principales Voici trois grosses \u00e9tapes du projet. Pour rappel ce sont des vulgarisations plut\u00f4t larges qui n'ont qu'un seul but, aider \u00e0 la compr\u00e9hension de ce qui vient par la suite. Recup\u00e9ration d'images \"Diagramme simplifi\u00e9 repr\u00e9sentant le processus de r\u00e9cup\u00e8ration des images\" Pour faire simple on peut voir qu'il y a deux parties \u00e0 cette \u00e9tape. La premi\u00e8re en partant du haut repr\u00e9sente un script python qui va chercher des informations dans la base de donn\u00e9es de Chrome qui est en SQLITE. Ces informations dans notre cas sont les cookies de connexion. Dans la seconde \u00e9tape, on peut voir que le programme utilise Selenium avec un navigateur Firefox Headless qui va aller communiquer avec la F1TV qui est le site web qui nous int\u00e9resse et que une des infos que l'on r\u00e9cup\u00e8re est une image de la page en format PNG que l'on envoie au programme C#. Ces deux partie sont li\u00e9es car pour se connecter \u00e0 la F1TV Selenium a besoin des cookies de connexion r\u00e9cup\u00e8r\u00e9s par le programme Python. La premi\u00e8re partie est un processus qui n'est utilis\u00e9 qu'une seule fois au d\u00e9marrage tandis que la r\u00e9cup\u00e9ration d'images et en continu pendant toute la dur\u00e9e de l'utilisation de l'application. OCR \"Diagramme simplifi\u00e9 repr\u00e9sentant le processur d'OCR\" ; On peut voir dans ce diagramme simplifi\u00e9 qu'avec l'aide de ce que contient le fichier \"Config.JSON\" on d\u00e9coupe l'image que l'on a r\u00e9cup\u00e8r\u00e9 au pr\u00e9alable en petits morceaux qui continennent des informations. Ensuite on prend cette image et on lui applique un filtre pour retirer le flou la couleur etc... Puis en utilisant de l'OCR (Optical Character Recognition) on en r\u00e9cup\u00e8re les informations sous forme de texte et on le renvoie dans le programme C# Dans cette partie explicative g\u00e9n\u00e9rale, on ne reviendra pas sur la cr\u00e9ation de ce fichier config. Pour plus d'infos \u00e0 son sujet voir la rubrique (OCR/Fonctionnement g\u00e9n\u00e9ral) Traitement et affichage \"Diagramme simplifi\u00e9 repr\u00e9sentant le processus de traitement et d'affichage\" On peut voir dans ce dernier mini diagramme simplifi\u00e9 que on prend les donn\u00e9es que l'on r\u00e9cup\u00e8r\u00e9 de l'\u00e9tape pr\u00e9c\u00e9dente qui ne sont pas forc\u00e9ment toutes coh\u00e9rentes et qu'on les traite pour leur redonner du sens avant de les stocker dans une base de donn\u00e9es SQLITE. Ensuite cette m\u00eame base de donn\u00e9e fournis les infos nescessaires pour des affichages (Ces affichages sont directements r\u00e9cup\u00e8r\u00e9s depuis le projet en cours de fonctionnement) R\u00e9sum\u00e9 du fonctionnement g\u00e9n\u00e9ral \"Diagramme simplif\u00e9 repr\u00e9sentant le processus g\u00e9n\u00e9ral du projet\" Ce dernier diagramme est un sch\u00e9ma fait pour repr\u00e9senter de la mani\u00e8re la plus simple possible toutes les briques du projet et comment elles s'imbriquent ensemble. La repr\u00e9sentation est un peu diff\u00e9rentes des 3 autre diagramme car le but ici est surtout de montrer le chemin que fait la donn\u00e9e \u00e0 travers les couches Toutes les parties du projet ne sont pas incluses, notamment la partie calibration dans un objectif de simplifier la lecture. Dans l'ordre, on peut voir que pour la partie r\u00e9cup\u00e8ration d'images, le python va r\u00e9cup\u00e8rer les cookies dans la base de donn\u00e9es chrome pour ensuite les retourner \u00e0 Selenium. Selenium va ensuite pouvoir lancer un navigateur (en l'occurence Firefox) et utiliser les cookies r\u00e9cup\u00e8r\u00e9s pour aller sur la page de la F1TV qui va retourner un certain nombre d'infos \u00e0 Selenium. L'info qui nous int\u00e9resse le plus depuis Selenium c'est les images de la page data de la F1Tv et c'est elles que l'on va envoyer dans la partie LOAD du diagramme. Dans cette partie on prend l'image de la F1TV et on la decoupe selon les directives donn\u00e9es par le fichier Config.JSON (il renseigne les zones \u00e0 d\u00e9couper et ce qu'elles repr\u00e9sentent) et apr\u00e8s le d\u00e9coupage on se retrouve avec une zone principale, vingt zones de pilotes et 9 fen\u00eatres de donn\u00e9es par zone de pilote donc 180 fen\u00eatres en tout. Ces fen\u00eatres sont ensuite envoy\u00e9es pour \u00eatre filtr\u00e9es (retirer le flou, mettre en \u00e9vidence les caract\u00e8res, en gros les pr\u00e9parer pour la reconnaissance) dans la partie OCR Dans cette partie, apr\u00e8s avoir filtr\u00e9 les images, on les envoie \u00e0 Tesseract pour qu'il nous retourne des r\u00e9sultats d'OCR. Ces r\u00e9sultats sont ce que Tesseract a trouv\u00e9 sur les image et ils sont retourn\u00e9s sous al forme de Data Pilote. Ex (Position: 1,Tour : 45, Temps au tour : 1:34.683, Pneus: Medium etc....) Finalement ces donn\u00e9es ont envoy\u00e9es dans la partie traitement qui va faire des v\u00e9rifications d'usage pour s'assurer qu'elles sont correctes et quand c'est fait, tout est envoy\u00e9 dans une base de donn\u00e9es SQLITE. On ne montre pas non plus dans ce diagramme la parte affichage des donn\u00e9es car je ne trouve pas pertinent de l'inclure ici. Et voila c'est le fonctionnement tr\u00e8s g\u00e9n\u00e9ral et simplifi\u00e9 de l'application. Je vous invite \u00e0 continuer \u00e0 lire cette documentation pour des informations plus pr\u00e9cises \u00e0 propos de toutes ces \u00e9tapes. Bonne lecture ! R\u00e9cup\u00e9ration des images Voici la premi\u00e8re grande \u00e9tape du projet. Pour rappel, Amazon h\u00e9berge directement le site de la F1TV et poss\u00e8de les droits sur les donn\u00e9es de la F1. C'est sous le nom de AWS (le service d'h\u00e9bergement d'Amazon) que la firme apparait en tant que sponsor. On peut voir ce nom appara\u00eetre assez souvent quand on regarde un Grand Prix car comme ils ont la main-mise sur les donn\u00e9es ils peuvent ins\u00e8rer des bandeaux d'informations sur le flux public sur ce qu'il se passe voir m\u00eame faire des pr\u00e9dictions (Bien qu'un peu bancales) \"Exemple insertion AWS en GP\" Ce service s'appelle F1 Insights (Oui c'est un meilleur nom de projet que F1 Companion mais bon) et c'est, je pense, la raison pour laquelle on ne voit aucune API publique qui permette de correctement se renseigner en don\u00e9es en direct pendant un Grand Prix. Ils ont du d\u00e9gotter un juteux contrat pour s'occuper de toute l'infrastructure digitale de la F1 (du moins publique) en \u00e9change d'une exclusivit\u00e9 totale sur certaines choses comme les Data \"Exemple data d'AWS\" Evidemment je ne fais que conjecturer et ce que j'ai dit n'est pas \u00e0 prendre au pied de la lettre mais c'est une explication possible je pense de pourquoi il est si difficile de trouver des donn\u00e9es sur la F1 facilement en temps r\u00e9el. Il existe bien quelques API un peu bancales publiques, mais le probl\u00e8me c'est qu'elles ne sont vraiment pas suffisante et je ne peux pas leur faire confiance quand je commente. Ce qu'il m'aurait fallut c'est une API publique et officielle qui me permette d'\u00eatre sur que les donn\u00e9es sont les bonnes et qu'elles arrivent le plus vite possible. On pourrait croire que c'est impossible car cela n'existe pas comme je l'ai dit MAIS ! Ce n'est pas compl\u00eatement vrai. En effet depuis que je poss\u00e8de un abonnement \u00e0 la F1TV, il existe une source d'informations tr\u00e8s pr\u00e9cieuse qui m'aide \u00e9norm\u00e9ment dans mon quotidien de commentateur de Formule 1. La \"DATA CHANNEL\". La Data Channel est une page de la F1TV qui permet, pour chaque Grand Prix, de visualiser, sous la forme d'un flux vid\u00e9o, diff\u00e9rentes informations capitales sur la course. \"Exemple de Data Channel\" Le probl\u00e8me, c'est que comme je viens de le dire, ces donn\u00e9es ne sont pas accessibles comme un tableau HTML ou un flux RSS ou un tableau JSON. C'est un flux vid\u00e9o. Il faut savoir qu'entretenir une diffusion de flux vid\u00e9o en 1080P pendant deux heures accessible par des milliers d'abonn\u00e9s est EXTR\u00caMENT cher surtout quand on le compare \u00e0 simplement afficher les donn\u00e9es dans un tableau. Ce qui veut dire que ce choix est d\u00e9lib\u00e9r\u00e9 et a un sens au niveau \u00e9conomique. Je pense donc que c'est justement pour \u00e9viter que des petits malins puissent simplement venir scraper l'int\u00e9gralit\u00e9 des donn\u00e9es qu'ils proposent et fasse sa propre API. (C'est d'ailleurs un des sites avec la meilleure protection anti bot du monde) MAIS ce n'est pas par ce que les donn\u00e9es ne sont pas facile \u00e0 avoir qu'elles sont IMPOSSIBLE \u00e0 avoir. Et c'est la que ce projet entre en jeu. Mais pour d\u00e9coder les donn\u00e9es d'une image il faut dabord ... (roulement de tambours) ... Avoir des images ! Et c'est la que vient se glisser cette partie du projet. Comment faire ? Le but de ce segment est de se concentrer sur la r\u00e9cup\u00e8ration et la mise \u00e0 disposition pour le reste du programme, des images en direct de la F1TV dans la meilleure qualit\u00e9 possible et dans les meilleurs d\u00e9lais. Pour ce faire il y a plusieurs solutions : Reverse engeneer la F1TV pour acc\u00e8der directement au flux sans passer par la plateforme internet et pouvoir prendres images \u00e0 volont\u00e9. Avoir tout simplement une page de la F1TV ouverte sur un \u00e9cran et prendres des screenshots \u00e0 intervals r\u00e9guliers. Simuler un navigateur internet sans qu'il soit affich\u00e9 et le contr\u00f4ler automatiquement pour qu'il prenne des captures. La premi\u00e8re option aurait \u00e9t\u00e9 la plus \u00e9l\u00e9gante mais lors d'un POC que je tentais de r\u00e9aliser je me suis rendu compte que cela serait un peu trop compliqu\u00e9 et long \u00e0 faire. Sans compter le fait que les rediffusions de Grand Prix ne sont pas g\u00e8r\u00e9es de la m\u00eame mani\u00e8re que les diffusions en live. Et que pour faire des Tests en live il faudrait attendre \u00e0 chaque fois un weekend de Grand Prix et le faire en plus du commentaire que je dois produire. Pour toutes ces raisons et bien d'autres je l'ai rang\u00e9e dans la case \"Trop dur, Trop chiant, S\u00fbrement ill\u00e9gal\" (Oui je sais c'est une cat\u00e9gorie bien sp\u00e9cifique mais c'est ma documentation je fais ce que je veux) La troisi\u00e8me option aurait \u00e9t\u00e9 la plus simple (et moins dr\u00f4le) et je suis presque s\u00fbr que je peux impl\u00e9menter cette derni\u00e8re en moins d'une apr\u00e8s-midi. Sauf qu'elle apporte de gros soucis. On ne peux pas garantir l'int\u00e9grit\u00e9 et la continuit\u00e9 des donn\u00e9es si l'utilisateur avance ou fait pause m\u00eame par simple inadvertance. La moindre fen\u00eatre qui s'afficherait devant ruinerait toute la reconnaissance de caract\u00e8res. On ne peut pas contr\u00f4ler la qualit\u00e9 du flux et on est oblig\u00e9 de faire confiance en l'utilisateur On ne peut pas vraiment automatiser quoi que ce soit niveau tests ou m\u00eame pour faire du scrapping auto pour remplir une base de donn\u00e9e. Et finalement le pire inconv\u00e9nient : C'EST NUL ! Je ne pourrais jamais utiliser un projet qui fonctionne de cette facon, je ne peux pas me permettre d'avoir un \u00e9cran inutilisable quand je commente et auquel je dois constamment faire attention pour ne pas perturber la reconnaissance. Pour moi cette option aurait \u00e9t\u00e9 celle \u00e0 choisir en cas d'extr\u00eame urgence et en dernier recours car le projet deviendrait inutile. J'ai donc d\u00e9cid\u00e9 de m'occuper de la seconde option : Simuler un navigateur. Cette option bien que complexe et difficile \u00e0 impl\u00e9menter propose une solution \u00e0 tous les probl\u00eame et permet une r\u00e9cup\u00e8ration quasi sans compromis. Simuler un navigateur ? \"Navigateur Headless(sans t\u00eate)\" Simuler un navigateur internet n'est pas forc\u00e9ment tr\u00e8s difficile. Chromium par exemple offre une panoplie d'outils natifs et \u00e9norm\u00e9ment de librairies existent permettant de facilement et en quelques lignes simuler un Google Chrome et le contr\u00f4ler sans afficher son UI (Interface Utilisateur). \"Chromium logo\" {: style=\"height:150px;width:150px\"} Cependant. La F1TV n'utilise pas simplement un player HTML5 basique. Elle utilise un service de streaming BitMovin qui permet de fournir un stream de bonne qualit\u00e9 et surtout qui impl\u00e9mente les DRM (Digital Right Management) Cela veut dire que quand on ouvre un flux de la F1TV sur chrome et que l'on essaie de prendre une capture d'\u00e9cran, le player se met en noir et ne permet pas de voir quoi que ce soit (Certaines version de Chrome le permettent pendant quelques semaines avant de bloquer \u00e0 nouveau). Ce qui dans notre cas est un immense probl\u00e8me. Mais Firefox ne nous bloque pas de cette facon et il est donc assez facile de passer outre. L'explication sans trop rentrer dans les d\u00e9tails est la suivante : Dans chrome, le player par d\u00e9faut utilise une technologie appell\u00e9e \"PCP\" ou \"Protected Content Playback\" qui leur permet de bloquer au moins une partie des techniques de r\u00e9cup\u00e8ration du flux vid\u00e9o et audio. Cependant Firefox de pas sa nature Open Source utilise \"OpenH264\" pour lire ces m\u00eames flux soumis \u00e0 des DRM et OpenH264 n'impl\u00e9mente pas les m\u00eames restrictions. Sauf que Firefox n'est pas aussi facilement \u00e9mul\u00e9 que chrome et cela r\u00e9duit notre choix de librairies \u00e0 ... Une seule... Qui est Selenium. (Il existe aussi Pupetteer C# mais j'ai rencontr\u00e9 \u00e9norm\u00e9ment de soucis avec cette derni\u00e8re d\u00e8s que je voulais lancer une vid\u00e9o) \"Firefox dev logo\" {: style=\"height:150px;width:150px\"} Mais m\u00eame si la documentation est plut\u00f4t maigre parfois, c'est une bonne librairie qui permet de tr\u00e8s bien contr\u00f4ler une instance de chrome ou de Firefox. Contr\u00f4ler le navigateur Maintenant que l'on sait quel navigateur simuler et avec quelle technologie, on peut passer \u00e0 la r\u00e9alisation. Ce qu'il y a de bien avec Selenium, c'est qu'on a un certain nombre de commandes tr\u00e8s haut niveau qui nous permettent de contr\u00f4ler un navigateur de mani\u00e8re plut\u00f4t pr\u00e9cise. Je vais d\u00e9crire ici la proc\u00e9dure habituelle utilis\u00e9e sous une forme de recette de cuisine pour que l'on puisse facilement comprendre ce qu'il se passe. Durant cette explication je vais parler \u00e0 un moment de Cookies, ne vous en faites pas c'est le sous chapitre suivant qui va vous en parler. Recette de cuisine pour r\u00e9cup\u00e8rer des images de la F1TV : D\u00e9marrer une instance de navigateur avec les bons arguments Ajouter les bons param\u00eatres pour ne pas se faire flag comme un bot Naviguer sur la page de la F1TV Ajouter les cookies de connexion pour avoir acc\u00e8s au contenu de la page Naviguer sur la page du Grand Prix demand\u00e9 Attendre un peu que la page se charge Cliquer sur l'invite de cookies Attendre cinq secondes le temps que la page se reload Cliquer sur le bouton qui permet de passer du feed live \u00e0 la DATA CHANNEL Appuyer sur Espace pour faire apparaitre le bouton d'acc\u00e8s au param\u00eatres Cliquer sur le menu d\u00e9roulant des r\u00e9solution Trouver l'option 1080P et la selectionner Cliquer sur le bouton qui met la vid\u00e9o en plein \u00e9cran Prendre de screenshots \u00e0 intervales r\u00e9guliers Pour faire toutes ces actions on doit r\u00e9cup\u00e8rer les \u00e9l\u00e9ments selon leur ID ou leur classe. Voici un exemple qui r\u00e9cup\u00e8re le bouton de plein \u00e9cran et qui clique dessus : IWebElement fullScreenButton = Driver . FindElement ( By . ClassName ( \"bmpui-ui-fullscreentogglebutton\" )); fullScreenButton . Click (); Ca peut para\u00eetre plut\u00f4t simple dit comme ca et quand tout fonctionne ca l'est mais la difficult\u00e9 vient du fait que \u00e0 peu pr\u00e8s nimporte laquelle de ces \u00e9tapes peut rater et qu'il faut donc faire un bon syst\u00e8me de gestion d'erreurs qui puisse aider l'utilisateur en cas de probl\u00e8me. Parfois il est aussi difficile de trouver un \u00e9l\u00e9ment selon son ID,sa classe, ou sa value. Par exemple l'option qui permet de passer en 1080P peut avoir comme value 1080_9011456 ou 1080_9011200 si on refresh la page. Cela demande de passer par des expression r\u00e9guli\u00e8res ce qui n'est pas compliqu\u00e9 en soi mais c'est toutes ces petites choses qui rendent le processus long \u00e0 mettre en place. Il faut dire aussi que les sites ne sont pas forc\u00e9ment tr\u00e8s content de voir des bots passer car cela peut \u00eatre un risque de DDOS et de Scraping (Comme moi) et donc ils mettent en place des syst\u00e8mes pour nous emp\u00eacher de faire ce que l'on veut On peut utiliser diff\u00e9rntes techniques pour passer outre ces restrictions comme : Changer son UserAgent Changer sa r\u00e9solution Ne pas avoir des patterns trop pr\u00e9visibles Avoir un historique Ne pas cliquer pile sur le milieu des boutons Ne pas cliquer trop vite Passer par un proxy pour ne pas se faire flag Utiliser des librairies plus discr\u00e8tes J'ai eu l'occasion de tester toutes ces methodes pour tenter de passer derri\u00e8re les radars de la F1TV et visiblement j'ai r\u00e9ussi pour les pages principales mais pas pour les pages de Login. Il faut savoir que la bataille entre bots et propri\u00e9taires de sites est un grand jeu du chat et de la souris et que les plateformes innovent constamment leur s\u00e9curit\u00e9. Et il se trouve que la partie login de la F1TV est heberg\u00e9e autre part que le reste du site chez Amazon et que elle poss\u00e8de les meilleures s\u00e9curit\u00e9s que j'aie pu voir. Aucunes des methodes que j'ai cit\u00e9es et d'autres encore que j'ai essay\u00e9 n'ont r\u00e9ussi \u00e0 fourvoyer le syst\u00e8me. J'ai donc \u00e9t\u00e9 oblig\u00e9 de faire appel \u00e0 la connexion par Cookies pour pouvoir acc\u00e8der au reste du site internet. R\u00e9cup\u00e8rer les cookies ? Alors, on va mettre de c\u00f4t\u00e9 toutes les questions de s\u00e9curit\u00e9 et de violation de la vie priv\u00e9e et de protection des donn\u00e9es des utilisateurs pour ce chapitre. Car pour faire simple, je siphonne TOUS les cookies de la persone qui utilise mon app. Alors \u00e9videmment ca n'est pas pour faire des b\u00e9tises avec et c'est pour une \"bonne\" raison, mais bon quand m\u00eame ca peut faire bizarre comme ca. Je pense que vous savez d\u00e9ja ce qu'est un Cookie, mais je vais quand m\u00eame faire un petit point la dessus car c'est important pour la suite. Quand on va sur un site internet et que l'on se connecte avec nos identifiants nous sommes connect\u00e9s sur la session. Cependant, si on quitte le site ou que l'on ferme le navigateur, le site ne peut pas garder en m\u00e9moire que c'est bien vous quand le lendemain vous retournez dessus. Pour palier \u00e0 cette limitation on a invent\u00e9 cette chose magnifique (hem...) que sont les cookies ! Les cookies sont des petits fichiers qui sont stock\u00e9s dans votre navigateur et qui peuvent servir \u00e0 beaucoup de choses comme traquer votre activit\u00e9 sur internet et espionner un peu ou aussi par exemple, servir de jeton de connexion. L'id\u00e9e est que quand vous vous connectez sur le site avec vos identifiants, le site envoie un petit fichier dans votre navigateur qui va servir de jeton. Et donc quand vous reviendrez, le site pourra voir que vous avez le jeton et vous connectera automatiquement. Ca peut para\u00eetre g\u00e9nial, et c'est effectivement bien pratique, cependant ce n'est pas sans risques. En effet, imaginons qu'un acteur malveillant parvienne \u00e0 s'emparer de ces petits fichiers, il pourrait ainsi facilement se faire passer pour vous. Alors un cookie expire \u00e0 un moment donn\u00e9 pour temperer les risques, mais ils sont toujours pr\u00e9sents. Dans notre cas on peut vite comprendre pourquoi cela peut \u00eatre int\u00e9ressant de r\u00e9cup\u00e8rer ces cookies. En effet, si on peut mettre la main sur le jeton de connexion de l'utilisateur de notre application. On pourra se connecter automatiquement \u00e0 la F1TV et aller prendre des photos directement sans que l'utilisateur aie \u00e0 faire quoi que ce soit. Sauf que les cookies ne sont pas stock\u00e9s en clair comme ca. Evidemment Google Chrome a mis en place quelques techniques pour \u00e9viter que nimporte qui puisse s'amuser \u00e0 aller taper dans les cookies de la machine. Tous les cookies sont stock\u00e9s dans une base de donn\u00e9es sqlite avec les noms en clair et les valeurs sont encrypt\u00e9es en utilisant la methode AES 256 qui est une methode de cryptage tr\u00e8s utilis\u00e9e et efficace. Tellement efficace qu'il serait compl\u00eatement inutile de tenter de les decrypter en utilisant de la force brute pour trouver la valeur ou m\u00eame une attaque de dictionnaire ou quoi que ce soit. Si ces valeurs peuvent \u00eatre encod\u00e9es et d\u00e9cod\u00e9es en local sur la machine sans connexion internet, cela veut dire que la cl\u00e9 est stock\u00e9e sur la machine. Et si je peux mettre la mais sur cette cl\u00e9 alors je pourrai lire tous les cookies de la machine. Cette cl\u00e9 est stock\u00e9 dans les fichiers de Google Chrome sous Google\\Chrome\\User Data\\Local State . Et dans ce fichier on peut trouver une liste de donn\u00e9es en cl\u00e9 valeurs et on peut trouver la cl\u00e9 sous os_crypt encrypted_key . On pourrait croire que l'on a d\u00e9ja touch\u00e9 le jackpot mais il reste encore une \u00e9tape. Cette cl\u00e9 est crypt\u00e9e en utilisant le syst\u00e8me d'encryption de Windows. Cette encryption est utilis\u00e9e pour emp\u00eacher des utilisateurs non connect\u00e9s d'acc\u00e8der \u00e0 certaines donn\u00e9es. Mais comme nous sommes connect\u00e9s nous pouvons facilement utiliser les librairies de decryption pour trouver la valeur de cette cl\u00e9. Et \u00e0 partir de la il suffit d'utiliser cette cl\u00e9 pour d\u00e9crypter tous les cookies de la machine pour aller chercher ceux qui nous int\u00e9ressent. Voici un exemple du code python qui permet d'aller chercher la cl\u00e9 d'encryption dans les fichiers de Google Chrome : def get_master_key (): with open ( os . getenv ( \"localappdata\" ) + \" \\\\ Google \\\\ Chrome \\\\ User Data \\\\ Local State\" , \"r\" ) as f : local_state = f . read () local_state = json . loads ( local_state ) master_key = base64 . b64decode ( local_state [ \"os_crypt\" ][ \"encrypted_key\" ]) master_key = master_key [ 5 :] # removing DPAPI master_key = win32crypt . CryptUnprotectData ( master_key , None , None , None , 0 )[ 1 ] print ( \"MASTER KEY :\" ) print ( master_key ) print ( len ( master_key )) return master_key Python ?? Et oui j'ai choisit d'utiliser un srypt python pour aller chercher les cookies. Ce choix a \u00e9t\u00e9 fait pour trois raisons : Le python est un language que je n'aime pas particuli\u00e8rement mais qui poss\u00e8de un \u00e9ventail de librairies absolument fantastique. Et pour ce genre de choses qui demandent une constante mise \u00e0 jour des librairies et qui sont un peu niches le python est une option juste g\u00e9niale. Comme c'est une des parties qui est le plus suceptible de changer vu que Chrome change relativement souvent le syst\u00e8me de stockage des cookies. Dans une optique de facilit\u00e9 de maintenance, avoir un seul fichier qui concerne cette partie du projet et qui est dans un language que plus de gens maitrisent que C# est pratique. Je n'ai pas r\u00e9ussi \u00e0 trouver de librairies C# qui me donne des r\u00e9sultats identiques \u00e0 celles que j'utilise dans ce script python. Pour faire la liaison entre le C# et le python, j'appelle le script depuis mon C# et ensuite le python s'occupe de mettre tous les cookies dans un CSV qui est ensuite lu depuis le C#. Voici la partie python qui \u00e9crit dans le csv : if not cookies_path . exists (): raise ValueError ( \"Cookies file not found\" ) with sqlite3 . connect ( cookies_path ) as connection : connection . row_factory = sqlite3 . Row cursor = connection . cursor () cursor . execute ( \"SELECT * FROM cookies\" ) with open ( 'cookies.csv' , 'a' , newline = '' ) as csvfile : fieldnames = [ 'host_key' , 'name' , 'value' , 'path' , 'expires_utc' , 'is_secure' , 'is_httponly' ] writer = csv . DictWriter ( csvfile , fieldnames = fieldnames ) if csvfile . tell () == 0 : writer . writeheader () for row in cursor . fetchall (): decrypted_value = decrypt_password ( row [ \"encrypted_value\" ], master_key ) writer . writerow ({ 'host_key' : row [ \"host_key\" ], 'name' : row [ \"name\" ], 'value' : decrypted_value , 'path' : row [ \"path\" ], 'expires_utc' : row [ \"expires_utc\" ], 'is_secure' : row [ \"is_secure\" ], 'is_httponly' : row [ \"is_httponly\" ] }) print ( \"Finished CSV\" ) Et la partie C# qui appelle le script et qui lit le CSV : private void StartCookieRecovering () { string scriptPath = PYTHON_COOKIE_RETRIEVAL_FILENAME ; Process process = new Process (); process . StartInfo . FileName = \"python.exe\" ; process . StartInfo . Arguments = scriptPath ; process . StartInfo . UseShellExecute = false ; process . StartInfo . RedirectStandardOutput = true ; process . Start (); string output = process . StandardOutput . ReadToEnd (); process . WaitForExit (); } public string GetCookie ( string host , string name ) { StartCookieRecovering (); string value = \"\" ; List < Cookie > cookies = new List < Cookie >(); using ( var reader = new StreamReader ( COOKIES_CSV_FILENAME )) { // Read the header row and validate column order string header = reader . ReadLine (); string [] expectedColumns = { \"host_key\" , \"name\" , \"value\" , \"path\" , \"expires_utc\" , \"is_secure\" , \"is_httponly\" }; string [] actualColumns = header . Split ( ',' ); for ( int i = 0 ; i < expectedColumns . Length ; i ++) { if ( expectedColumns [ i ] != actualColumns [ i ]) { throw new InvalidOperationException ( $\"Expected column '{expectedColumns[i]}' at index {i} but found '{actualColumns[i]}'\" ); } } // Read each data row and parse values into a Cookie object while (! reader . EndOfStream ) { string line = reader . ReadLine (); string [] fields = line . Split ( ',' ); string hostname = fields [ 0 ]; string cookieName = fields [ 1 ]; if ( hostname == host && cookieName == name ) { value = fields [ 2 ]; } } } return value ; } Maintenant que l'on sait comment simuler et manipuler un navigateur internet, que l'on sait comment se connecter sur le compte F1TV de l'utilisateur sans qu'il n'aie rien \u00e0 faire. On a tous les ingr\u00e9dients pour automatiquement r\u00e9cup\u00e8rer des images de la F1TV du Grand Prix que l'on souhaite. Calibration Maintenant que l'on a des images de la page Data de la F1TV on pourrait croire que c'est tout bon on peut direct passer \u00e0 la partie OCR. Mais que nenni ! Le gros soucis de l'OCR c'est que sa pr\u00e9cision est grandement r\u00e9duite d\u00e8s que l'on augmente la taille de la zone de recherche. M\u00eame simplement deux mots sur une image, si on les prends dans images individuelles on a de grandes chances de trouver quelque chose mais si on les mets les deux sur la m\u00eame et que on tente l'OCR on va avoir de r\u00e9sultats bien moins bons. Et puis il faut aussi voir que selon les donn\u00e9es que je cherche je ne peux pas faire le m\u00eame traitement. Par exemple, savoir si le DRS est allum\u00e9, savoir quels pneus chausse un pilote et depuis combien de tours et savoir quel est le temps de son dernier tour, ce sont des informations qui demandent des traitements qui n'ont rien \u00e0 voir. Il faut donc pouvoir dire au programme d'OCR ou se trouvent les informations et quelle est leur nature pour qu'il puisse les d\u00e9coder. Il faut donc faire une calibration qui puisse donner toutes les infos importantes mais qui en m\u00eame temps soit facile \u00e0 utiliser car un utilisateur doit \u00eatre capable de le faire assez facilement. Voici la liste des informations que l'on doit r\u00e9cup\u00e8rer : La liste des pilotes pr\u00e9sent sur le Grand Prix La position de la zone principale La position de chaque zone de pilote La position de toutes les Window sur chaque zone de pilote Le but a \u00e9t\u00e9 de retirer le plus d'\u00e9tapes possibles \u00e0 l'utilisateur. Techniquement j'aurais pu faire une version compl\u00eatement manuelle mais ca aurait pris trop de temps alors il y a des syst\u00e8mes qui permettent de rendre cette t\u00e2che moins p\u00e9nible. Liste des pilotes Pour la liste des pilotes j'ai pens\u00e9 \u00e0 utiliser une API externe pour avoir une liste dans laquelle on pourrait selectionner des noms de pilotes sauf que j'ai abandonn\u00e9 l'id\u00e9e car je trouvais que le projet avait d\u00e9ja bien assez de points qui d\u00e9pendent de l'exterieur. Il y a donc une liste de pilotes dans laquelle on peut ajouter ou supprimer des noms de pilotes. L'id\u00e9al serait de mettre tous les pilotes de reserve comme ca si un pilote est malade sur une course on a pas besoin de venir changer la liste. Zone principale Pour la zone principale c'est compl\u00eatement manuel, on attend de l'utilisateur deux points x,y sur l'image pour ensuite avoir une id\u00e9e de ou est sens\u00e9 se trouver la zone. \"Exemple de zone principale\" Zones pilotes C'est la que ca devient int\u00e9ressant. L'utilisateur n'a pas besoin de faire quoi que ce soit pour que le programme sache ou sont les zones des pilotes. J'aurais pu le faire manuellement en faisant choisir \u00e0 l'utilisateur de donner deux points qui correspondent \u00e0 la premi\u00e8re zone et extrapoler pour en avoir 20. Sauf que si l'utilisateur n'est pas pr\u00e9cis au pixel pr\u00e8s (et m\u00eame comme ca parfois) le vingti\u00e8me pilote se retrouve avec une zone compl\u00eatement desax\u00e9e. La, le programme va \"simplement\" effectuer une reconaissance de texte sur toute l'image. Les r\u00e9sultats ne nous int\u00e9ressent pas vraiment tout ce que l'on veut c'est la position des textes. Avec les position il est facile de determiner ou sont toutes les zones de pilotes et donc sans que l'utilisateur n'aie \u00e0 toucher quoi que ce soit, d\u00e8s qu'il a donn\u00e9 les infos pour la zone principale, les zones de pilotes sont determin\u00e9es. \"Exemple zone pilote\" Voici un exemple du code utilis\u00e9 pour trouver ou dessiner des zones de pilotes : public void AutoCalibrate () { List < Rectangle > detectedText = new List < Rectangle >(); List < Zone > zones = new List < Zone >(); TesseractEngine engine = new TesseractEngine ( Window . TESS_DATA_FOLDER . FullName , \"eng\" , EngineMode . Default ); Image image = MainZone . ZoneImage ; var tessImage = Pix . LoadFromMemory ( Window . ImageToByte ( image )); Page page = engine . Process ( tessImage ); using ( var iter = page . GetIterator ()) { iter . Begin (); do { Rect boundingBox ; if ( iter . TryGetBoundingBox ( PageIteratorLevel . Word , out boundingBox )) { //var text = iter.GetText(PageIteratorLevel.Word).ToUpper(); //We remove all the rectangles that are definitely too big if ( boundingBox . Height < image . Height / NUMBER_OF_DRIVERS ) { //Now we add a filter to only get the boxes in the right because they are much more reliable in size if ( boundingBox . X1 > image . Width / 2 ) { //Now we check if an other square box has been found roughly in the same y axis bool match = false ; //The tolerance is roughly half the size that a window will be int tolerance = ( image . Height / NUMBER_OF_DRIVERS ) / 2 ; foreach ( Rectangle rect in detectedText ) { if ( rect . Y > boundingBox . Y1 - tolerance && rect . Y < boundingBox . Y1 + tolerance ) { //There already is a rectangle in this line match = true ; } } //if nothing matched we can add it if (! match ) detectedText . Add ( new Rectangle ( boundingBox . X1 , boundingBox . Y1 , boundingBox . Width , boundingBox . Height )); } } } } while ( iter . Next ( PageIteratorLevel . Word )); } //DEBUG int i = 1 ; foreach ( Rectangle Rectangle in detectedText ) { Rectangle windowRectangle ; Size windowSize = new Size ( image . Width , image . Height / NUMBER_OF_DRIVERS ); Point windowLocation = new Point ( 0 , ( Rectangle . Y + Rectangle . Height / 2 ) - windowSize . Height / 2 ); windowRectangle = new Rectangle ( windowLocation , windowSize ); //We add the driver zones Zone driverZone = new Zone ( MainZone . ZoneImage , windowRectangle , \"DriverZone\" ); MainZone . AddZone ( driverZone ); //driverZone.ZoneImage.Save(\"Driver\" + i+\".png\"); i ++; } } Windows pilotes C'est ici que c'est le plus p\u00e9nible pour l'utilisateur, il doit selectionner manuellement les positions des fen\u00eatres de donn\u00e9es. Ensuite d\u00e8s que l'utilisateur a donn\u00e9e une position pour chaque window, on applique les positions pour chaque zone de pilote. Il y a plusieurs types de windows et selon le type le traitement est diff\u00e9rent comme je l'ai dit plus t\u00f4t. Voici des exemples concrets : \"Exemple Window de pneus\" \"Exemple Window temps au tour\" \"Exemple window Drs\" Il est important que toutes ces zones soient transmises avec le plus de pr\u00e9cision possible pour que l'OCR puisse bien faire son boulot. Stockage Ensuite quand l'utilisateur a finit de configurer son flux, la configuration est stock\u00e9e pour qu'il puisse ensuite la r\u00e9utiliser pour tous les autres Grand Prix de l'ann\u00e9e. Le stockage est fait sous format JSON et est fait pour que le programme d'OCR puisse lire dedans toutes les infos nescessaires. Cela fait des fichiers plut\u00f4t gros mais je n'avais pas vraiment le choix. J'ai test\u00e9 une version avec seulement les infos de la premi\u00e8re zone de pilote mais avec l'interpolation, les derniers pilotes se retrouvent avec des zones clairement pas \u00e0 la bonne taille. Voici un exemple de ce \u00e0 quoi ressemble le JSON final : { \"Main\" : { \"x\" : 36 , \"y\" : 343 , \"width\" : 3780 , \"height\" : 1454 , \"DriverZones\" : [ { \"name\" : \"Driver1\" , \"x\" : 0 , \"y\" : 1 , \"width\" : 3780 , \"height\" : 72 , \"Windows\" : [ { \"Position\" : { \"x\" : 45 , \"y\" : 3 , \"width\" : 76 , \"height\" : 65 }, \"GapToLeader\" : { \"x\" : 447 , \"y\" : 1 , \"width\" : 206 , \"height\" : 67 }, \"LapTime\" : { \"x\" : 863 , \"y\" : 3 , \"width\" : 229 , \"height\" : 65 }, \"DRS\" : { \"x\" : 1095 , \"y\" : 1 , \"width\" : 174 , \"height\" : 67 }, \"Tyres\" : { \"x\" : 1274 , \"y\" : 3 , \"width\" : 1448 , \"height\" : 62 }, \"Name\" : { \"x\" : 2724 , \"y\" : 3 , \"width\" : 361 , \"height\" : 65 }, \"Sector1\" : { \"x\" : 3088 , \"y\" : 1 , \"width\" : 239 , \"height\" : 65 }, \"Sector2\" : { \"x\" : 3314 , \"y\" : 4 , \"width\" : 190 , \"height\" : 62 }, \"Sector3\" : { \"x\" : 3493 , \"y\" : 1 , \"width\" : 198 , \"height\" : 67 } } ] }, { \"name\" : \"Driver2\" , \"x\" : 0 , \"y\" : 72 , \"width\" : 3780 , \"height\" : 72 , \"Windows\" : [ { \"Position\" : { \"x\" : 45 , \"y\" : 3 , \"width\" : 76 , \"height\" : 65 }, \"GapToLeader\" : { \"x\" : 447 , \"y\" : 1 , \"width\" : 206 , \"height\" : 67 }, \"LapTime\" : { \"x\" : 863 , \"y\" : 3 , \"width\" : 229 , \"height\" : 65 }, \"DRS\" : { \"x\" : 1095 , \"y\" : 1 , \"width\" : 174 , \"height\" : 67 }, \"Tyres\" : { \"x\" : 1274 , \"y\" : 3 , \"width\" : 1448 , \"height\" : 62 }, \"Name\" : { \"x\" : 2724 , \"y\" : 3 , \"width\" : 361 , \"height\" : 65 }, \"Sector1\" : { \"x\" : 3088 , \"y\" : 1 , \"width\" : 239 , \"height\" : 65 }, \"Sector2\" : { \"x\" : 3314 , \"y\" : 4 , \"width\" : 190 , \"height\" : 62 }, \"Sector3\" : { \"x\" : 3493 , \"y\" : 1 , \"width\" : 198 , \"height\" : 67 } } ] } [ O t her pilo ts ... ] ], \"Drivers\" : [ \"Perez\" , \"Verstappen\" , \"Alonso\" , \"Sainz\" , \"Russel\" , \"Gasly\" , \"Leclerc\" , \"Ocon\" , \"Hulkenberg\" , \"Bottas\" , \"Hamilton\" , \"Albon\" , \"Tsunoda\" , \"Zhou\" , \"Stroll\" , \"De Vries\" , \"Magnussen\" , \"Norris\" , \"Piastri\" , \"Sargeant\" ] } } Et avec tout ca. L'OCR peut d\u00e9marrer dans de bonnes conditions OCR Maintenant que on a des images qui arrivent automatiquement et que l'on sait ou se trouvent les informations sur ces dites images, je vais parler de la seconde partie du projet qui parle du processus de reconnaissance de data sur une image du feed DATA de la F1TV. C'est je pense la partie qui a demand\u00e9 le plus tests et de refactor. Toute la partie OCR a \u00e9t\u00e9 d\u00e9velopp\u00e9e dans un projet \u00e0 part avant d'\u00eatre int\u00e9gr\u00e9e dans le projet final. Il faut savoir que la reconnaissance est diff\u00e9rente celon ce que l'on cherche. Je vais donc d\u00e9composer cette partie du document en sous rubriques selon les donn\u00e9es recherch\u00e9es. Mais avant ca je dois expliquer certains concepts qui seront importants. Fonctionnement g\u00e9n\u00e9ral Voici un screenshot de la page DATA de la F1TV que le programme va recevoir : \"Screen F1TV\" Si on regarde de loin on peut se dire que la structure est plut\u00f4t simple mais c'est loin d'\u00eatre le cas. On peut y voir au moins 4 zones contenant de l'information dans un format diff\u00e9rent. \"Zones principales\" Dans l'exemple ci dessus on peut voir 3 zones mais on aurait \u00e9galement pu comprendre la zone de position des pilotes autour du circuit pour faire 4. Ces 4 zones sont tr\u00e8s diff\u00e9rentes et contiennent d'autres informations. Pour ce travail de dipl\u00f4me je ne m'occupe que de la zone principale. Mais je pense que le titre et les infos de circuit ne prendrait pas tant de temps que ca \u00e0 impl\u00e9menter. J'ai utilis\u00e9 le mot \"Zone\" plus haut et ca n'est pas juste un mot utilis\u00e9 au hasard. C'est le nom de l'objet que j'utilise pour les repr\u00e9senter dans mon programme. Mais comme c'est important de bien comprendre ce concept avant de continuer je vais vous l'expliquer. ZONE : L'objet \"Zone\" parent est un objet qui est une zone d'image. Je m'explique, le but d'une zone est d'\u00eatre un morceau d'une image plus grande. Le but d'une Zone est de contenir une liste de plus petites Zones ou bien une liste de \"Window\" (j'explique ce que c'est juste apr\u00e8s). Elle contient la portion d'image qui la concerne et ses propres dimensions. Le parent zone ne pr\u00e9voit que de pouvoir ajouter ou supprimer des \u00e9l\u00e9ments des listes de zones ou de windows ainsi qu'une methode qui permet d'aller chercher toutes informations des livres qu'elle contient. L'int\u00e9r\u00eat d'une zone est de pouvoir compartimenter une image dans des parties int\u00e9ressantes au niveau de la reconnaissance mais pas de traiter d'information. WINDOW : L'objet \"Window\" est un objet qui peut ressembler beaucoup \u00e0 l'objet \"Zone\". En effet elle aussi est une partie d'une image plus grande et contient ses dimensions, mais elle se distingue en deux points importants. Elle ne contient pas d'autres Zones ou Windows Elle peut retourner les informations \u00e9crites sur son image. Toutes les Window qui h\u00e9ritent du parent Window peuvent impl\u00e9menter une methode qui permet de renvoyer ce qui peut \u00eatre d\u00e9cod\u00e9 sur son image. Les enfants peuvent aussi aller piocher dans les nombresues methodes de r\u00e9cup\u00e8ration de donn\u00e9es contenues dans le parent Window. Mieux vaut r\u00e9utiliser le plus possible que de r\u00e9inventer la roue pour chaque Window. Une analogie un peu bancale pourrait se pr\u00e9senter comme la suivante : La zone est une armoire ou une bibliot\u00e8que. Si c'est une zone qui contient d'autres zones c'est une bibliot\u00e8que et chacune de ces sous-zones sont des armoires. Leur unique but est de contenir de mani\u00e8re ordonn\u00e9e des objets qui eux contiennent de l'information. Les livres ici sont les Windows. Ils contiennet de l'information et sont stock\u00e9s dans des armoires et on y acc\u00e8de en allant dans la bonne bibliot\u00e8que et en allant dans la bonne armoire. Derni\u00e8res choses pour comprendre le diagramme: Il existe une Main Zone qui est une des 4 grandes zones dont je parlais dans la d\u00e9composition de l'image. Il existe aussi des \"Driver Zone\" qui sont de plus petites zones contenues dans la Main Zone qui et qui ne contiennent que les informations d'un pilote. L'objet Window n'est quasi jamais utilis\u00e9, c'est presque tout le temps des enfants de Window plus sp\u00e9cifiques qui sont utilis\u00e9s, le but est que chaque type d'information sur l'image aie son type de window. Voila donc un petit diagramme qui montre le d\u00e9coupage du programme : \"Diagramme explicatif de l'architecture des zones\" Pour visualiser encore un peu mieux comment ce d\u00e9coupage prend forme voici ce que chaque zone et Window contient. Main Zone : \"Exemple zone principale\" Driver Zone : \"Exemple zone de pilote\" Driver Position Window : \"Exemple de fen\u00eatre de position\" Driver name Window : \"Exemple de fen\u00eatre de nom\" Driver LapTime Window : \"Exemple de fen\u00eatre de temps au tour\" Driver Tyre Window : \"Exemple de fen\u00eatre pneus\" Il existe d'autres types de Window mais ce sont les principaux. On se rend assez facilement compte que chacunes de ces windows va avoir besoin d'un traitement sp\u00e9cifique car la mani\u00e8re de reconnaitre le pneu utilis\u00e9 et le temps au tour ne peut pas \u00eatre la m\u00eame. Pour r\u00e9sumer, on a un programme qui prend en entr\u00e9e un fichier de configuration, qui prend des images de la F1TV et les d\u00e9coupe dans des ZONES qui elles m\u00eame sont d\u00e9coup\u00e9es en WINDOWS pour qu'on puisse plus facilement les d\u00e9coder. Maintenant qu'on a une liste de diff\u00e9rent types de zones on peut commencer \u00e0 chercher ce qu'il y a marqu\u00e9 dessus. Pour cela il faut dabord comprendre un petit peu comment l'OCR fonctionne et comment des libraries comme Tesseract fonctionnent pour donner du texte en partant d'une image. Pour faire tr\u00e8s simple, nous avons un mod\u00e8le qui est entrain\u00e9. C'est \u00e0 dire que on donne \u00e0 un programme un tr\u00e8s grand nombre de mots ou de lettres en lui disant ce que contiennent chaques images. Ensuite le programme va cr\u00e9er des matrices de convolutions pour chaque lettre avec comme objectif de detecter les points communs entre les lettres pour cr\u00e9er un alpphabet. Par exemple la matric de la lettre 'H' donnerait un poids important \u00e0 des lignes verticales connect\u00e9es par une ligne centrale. Et si on fournis assez de donn\u00e9es de bonne qualit\u00e9 au mod\u00e8le, les matrices peuvent \u00eatre tr\u00e8s efficace \u00e0 detecter si une lettre est un H ou un M. Il y a pleins d'autres methodes comme l'utilisation d'un dictionnaire de mots de la langue pour permettre la reconnaissance de mots m\u00eame si une lettre au milieu n'est pas comprise ou en ajoutant d'autres informations sur le contexte mais ca ne nous int\u00e9resse pas ici. C'est important de comprendre comment cette reconnaissance de caract\u00e8res avec des matrices fonctionne car cela va nous aider \u00e0 pr\u00e9parer nos donn\u00e9es pour lui rendre la vie facile et augmenter la pr\u00e9cision de nos r\u00e9sultats. Filtres et traitement On peut essayer de donner toutes nos images directement \u00e0 Tesseract pour qu'il reconnaisse tout le texte qu'il y voit mais on risque de se retrouver avec des r\u00e9sultats au mieux inconsistents. Dans notre cas, le soucis est que les chiffres et lettres sont beaucoup trop petits. Ils ne font parfoisd que 10 pixels de haut et cela fait que il n'est pas forc\u00e9ment facile de toujours les diff\u00e9rencier. De plus, comme ils sont petits, les art\u00e9facts d'aliasing sont assez violents et peuvent grandement d\u00e9former une lettre ou un chiffre. Exemple : Prenons le chiffre 9. Dans l'image il peut \u00eatre repr\u00e9sent\u00e9 de cette mani\u00e8re : \"Exemple de chiffre avant post traitement\" On peut voir qu'il est flou, pour nous cela ne pose pas de probl\u00e8me et je pense que \u00e0 peu pr\u00e8s nimporte qui peut dire que c'est un 9. Cependant comme les contours sont flous et m\u00eame si on essaie de retirer le background : \"9 avec anti aliasing\" On voit que le 9 n'est pas clairement d\u00e9finit. En effet on pourrait le comprendre comme : \"Premier exemple de contours\" Ou comme : \"Second exemple de contours\" Voire m\u00eame simplement comme : \"Exemple de coutour g\u00e9n\u00e9reux\" Et on se rend bien compte que les performances de detection ne sont pas les m\u00eames dans ces trois cas. Il faut donc faire un certain post traitement des images pour supprimer les \u00e9l\u00e9ments parasites, les couleurs, et augmenter la visibilit\u00e9 des contours importants. Mais chaque type de donn\u00e9e va avoir des methodes de post traitement diff\u00e9rents. Donc voici les diff\u00e9rents types de reconnaissance et leur post traitements : Texte Alors ce type de reconnaissance est utilis\u00e9 par la WINDOW du nom de pilote et de la position du pilote. C'est je pense la plus simple de toutes car Tesseract est particuli\u00e8rement bien entrain\u00e9 pour. Cette reconnaissance concerne donc des lettres qui font des mots ou des noms. Voici un exemple de la WINDOW nom de pilote en entr\u00e9e : \"Exemple texte cru\" Ce texte peut paraitre bon, cependant quand on le lance dans Tesseract, il ne va pas toujours donner un r\u00e9sultat parfait. Il faut aussi savoir qu'il y a des noms pas mal plus p\u00e9nibles que Tesseract a plus de mal \u00e0 reconnaitres, soit \u00e0 cause des lettres utilis\u00e9es, soit car le nom est un nom d'une autre r\u00e9gion et qui ne veut rien dire en anglais ce qui emp\u00eache l'utilisation de dictionnaire (Ex : Tsunoda est un nom japonais et parfois il est difficile pour Tesseract de le reconnaitre car si une lettre pose probl\u00eame il ne peut pas trouver de contexte qui puisse l'aider). Donc pour le rendre plus facilement lisible et augmenter les chances que toutes les lettres soient d\u00e9couvertes, voici les \u00e9tapes que j'ai mis en place. 1 : J'inverse les couleurs. Je me suis rendu compte que il \u00e9tait souvent plus facile de trouver un noir sur blanc que blanc sur noir. Je ne suis pas sur que cette \u00e9tape soit capitale cependant. \"Texte invers\u00e9\" 2 : Je fais un Treshhold de 165 car avec moins le texte parfois prend trop du background et avec plus les lettres sont trop fines. \"Texte apr\u00e8s Treshold\" 3 : Je fais un Resize de l'image pour avoir une meilleure r\u00e9solution et permettre une meilleure d\u00e9tection. J'augmente la hauteur et la largeur par un facteur 2. J'ai trouv\u00e9 cette valeur suffisante et aller plus haut consomme beaucoup de ressources. \"Texte apr\u00e8s Resize\" 4: Je fais une tr\u00e8s rapide Dilatation du texte pour retirer le flou amen\u00e9 par la methode de Resize. Je n'utilise qu'une valeur de 1 car je ne veux pas trop changer comment le texte est model\u00e9 je veux juste retirer le flou. \"Texte apr\u00e8s Dilatation\" Explication des methodes pr\u00e9cises plus bas Voila pour ce qui est du post processing. Je ne dis pas que ce sont les meilleurs param\u00eatres possibles mais dans mes tests ce sont ceux qui ont le mieux march\u00e9s. C'est aussi les premi\u00e8res methodes que j'ai pu d\u00e9velopper alors forc\u00e9ment elles n'ont pas le niveau de d\u00e9tails de certaines autres. Mais comme m\u00eame avec ce traitement il n'est pas rare que je me retrouve avec une ou deux lettres pas justes, il faut un moyen d'\u00eatre s\u00fbr que c'est le bon nom qui est trouv\u00e9. Ce qu'il y a de pratique avec les noms de pilotes c'est que on sait d\u00e9ja comment ils s'appellent avant le Grand Prix. En effet dans le fichier de configuration de la reconnaissance, il y a une liste de noms de pilotes. Cela veut dire que au lieu de chercher \u00e0 trouver parfaitement les bonnes lettres, on peut simplement essayer de trouver quel nom de pilote ressemble le plus au nom trouv\u00e9 sur l'image. Pour ce faire j'ai utilis\u00e9 une methode appel\u00e9e la distance de Levenshtein. Pour faire simple c'est une methode qui va calculer les distances de lettres pour determiner entre des strings laquelle ressemble le plus \u00e0 une autre. Pour r\u00e9sumer le fonctionnement dans lordre : On prend l'image on la traite On envoie l'image trait\u00e9e \u00e0 Tesseract On trouve quel nom de pilote ressemble le plus \u00e0 ce r\u00e9sultat On renvoie le nom du pilote Chiffres Cette methode en r\u00e9alit\u00e9 utilise simplement la m\u00eame methode que celle qui va r\u00e9cup\u00e8rer le texte sur une image. Cependant, la, on envoie \u00e0 Tesseract l'information qu'il ne peut trouver que des chiffres sur l'image ce qui lui permet d'\u00eatre beaucoup plus pr\u00e9cis et de ne pas confondre un 9 avec un P ou un 11 avec un H PAR EXEMPLE (non pas que ca me soit arriv\u00e9 tr\u00e8s r\u00e9guli\u00e8rement et que ca me soit rest\u00e9 dans la gorge \u00e9videmment) L'avantage c'est que cette methode ne demande m\u00eame pas de traitement de la donn\u00e9e en sortie de Tesseract. On \u00e9sp\u00e8re simplement que le post traitement aura suffit. TEMPS : Cette methode regroupe la d\u00e9tection de temps au tour. Il y a trois grands types de WINDOW qui sont concern\u00e9es : La WINDOW du temps au tour La WINDOW du retard sur le leader La WINDOW des secteurs La grande diff\u00e9rence ce sont les ordres de grandeur. Les temps au tour sont en g\u00e9n\u00e9ral entre 50 secondes et 2 minutes. Tandis que les secteurs sont entre 20 et 30 secondes alors que le retard sur le leader peut-\u00eatre de plusieurs minutes. Cependant, tous ces temps poss\u00e8dent le m\u00eame type de post-traitement avant d'\u00eatre envoy\u00e9s \u00e0 Tesseract. Voici un exemple de temps au tour avant toute transformation : \"Temps au tour avant traitement\" On peut avoir l'impression que ce texte est tout \u00e0 fait lisible et facile \u00e0 d\u00e9coder surtout quand on le voit de loin comme ca. Cependant, il faut imaginer que ces chiffres font 13 pixels de haut en comptant le flou et comme expliqu\u00e9 plus haut ce flou dans ces echelles est terrible. \"Temps au tour zoom\u00e9\" Si on donne cette image \u00e0 Tesseract, les '3' deviennent des '9', des '9' deviennent des '8', des '2' deviennent eux aussi des '9', le tout parfois inversement et de mani\u00e8re compl\u00eatement impr\u00e9visible. Ca n'est simplement pas utilisable. Cette partie est un peu plus complexe car si la detection n'est pas fiable les chiffres sont simplement inutilisables. Si \u00e0 tout moment un temps au tour de 1:39.106 devient 1:32.108 c'est juste pas possible. Voici donc les \u00e9tapes de post-traitement que j'ai mis en place pour leur d\u00e9tection : 1: J'applique un Treshold de 185 pour enlever les ambiguit\u00e9s d'alisaising et avoir une image en noir et blanc claire. La valeur de 185 est assez \u00e9lev\u00e9e car le but est de vraiment garder uniquement les contours. Comme les chiffres se ressemlent beaucoup plu que les lettres, il faut tenter le plus possible de conserver leur formes sp\u00e9cifiques. Je me suis rendu compte que cette valeur \u00e9tait une de celles qui marchent le mieux. \"Temps au tour apr\u00e8s Treshold\" 2: J'applique un Resize de 2 pour augmenter la r\u00e9solution des chiffres et permettre une meilleure d\u00e9tection. Le but est d'avoir plus de pixels et donc de permettre \u00e0 Tesseract de mieux utiliser ses matrices de convolution. \"Temps au tour apr\u00e8s Resize\" 3: Comme le Resize am\u00e8ne du flou, j'utilise une methode de Dilatation qui me permet de retirer ce flou et de remplir un peu plus certaines parties qui ont \u00e9t\u00e9 un peu laiss\u00e9e par le Resize ; \"Temps au tour apr\u00e8s Dilatation\" 4: Contrairement aux mots plus haut, la rondeur ajout\u00e9e par la dilatation n'est pas vraiment d\u00e9sir\u00e9e. En effet, elle peut rendre confuse certains chiffres et emp\u00eacher Tesseract de bien trouver le chiffre. Alors j'applique une Erosion qui me permet de contrecarrer en partie les rondeurs ajout\u00e9es par la dilatation et retrouver des chiffres bien form\u00e9es. Pour l' Erosion et la Dilatation j'ai utilis\u00e9 une valeur de 1 car je ne voulais pas trop changer les chiffres. \"Temps au tour apr\u00e8s Erosion\" Explication des methodes pr\u00e9cises plus bas Et avec ce post processing on retrouve de plut\u00f4ts bon r\u00e9sultats qui demandent peu de traitement. Le traitement d\u00e9pend du type de WINDOW cependant. Pour les secteurs on indique \u00e0 Tesseract que les caract\u00e8res autoris\u00e9s sont : \"0123456789.\" Pour les temps au tour on autorise plut\u00f4t \"0123456789.:\" Et pour les \u00e9carts on autorise \"0123456789.+\" Ensuite on r\u00e9cup\u00e8re une liste de chiffres qui'il va falloir transformer en milisecondes pour faciliter le stockage et l'envoi. Le programme nettoie un peu la chaine avant de la convertir. Par exemple parfois le ':' de 1:34.456 est compris comme un '1' ou un '2' et il faut faire attention \u00e0 detecter quand ca arriver. Je passe les d\u00e9tails du reste du nettoyage car c'est vraiment du cas par cas mais quand on a finit de nettoyer la chaine on peut transformer les chaines de minutes secondes et milisecondes en un total de milisecondes. Pour r\u00e9sumer le fonctionnement dans l'ordre : On prend l'image et on lui applique une s\u00e9rie de filtres On envoie l'image filtr\u00e9e \u00e0 Tesseract On nettoie le r\u00e9sultat Tesseract pour compenser certains biais On convertis le r\u00e9sultat en milisecondes les chiffres (2) Il faut savoir que avec la derni\u00e8re version de l'\u00e9mulateur (dont je vais parler un peu plus tard) Pneus La on arrive sur la partie la plus p\u00e9nible. Pour comprendre la probl\u00e9matique il faut d'abord faire un petit point sur comment les pneus fonctionnent en Formule 1. Depuis 2019 en Formule 1 nous avons 5 grandes familles de pneus : Les pneus tendres Les pneus medium Les pneus durs Les pneus interm\u00e9diaires Les pneus pluie \"Gamme de pneus Pirelli\" Les trois premiers pneus sont des pneus faits pour piste s\u00e8che, le pneu interm\u00e9diaire pour piste humide et le neu pluie pour la pluie. Chaque pneu a sa dur\u00e9e de vie et son niveau de performance propre mais je ne vais pas rentrer dans le d\u00e9tail ici. Tout ce qu'il faut savoir ce que savoir sur quel pneu chaque pilote est et depuis combien de temps il les chausse est une information tr\u00e8s importante. Chaque pneu a une couleur donn\u00e9e qui permet de les diff\u00e9rencier. Voici un exemple de ce \u00e0 quoi une WINDOW de pneus peut ressembler : \"Exemple zone pneus 1\" Mais cette zone peut aussi ressembler \u00e0 ca : \"Exemple zone pneus 2\" Mais aussi \u00e0 ca : \"Exemple zone pneus 3\" Voire m\u00eame ca : \"Exemple zone pneus 4\" Je pense que vous pouvez tout de suite comprendre la difficult\u00e9 que repr\u00e9sente la t\u00e2che de r\u00e9cup\u00e8ration de donn\u00e9es \u00e0 partir de cette image. En gros le fonctionnement de cette zone d'information est assez simple. Au fur et \u00e0 mesure que la course avance, le trait fait de m\u00eame. Le chiffre dans le round tout \u00e0 droite indique le nombre de tour que le pilote a pass\u00e9 sur ce pneu. La couleur indique le type de pneu. Si il y a une lettre \u00e0 la place d'un chiffre c'est que c'est le premier tour sur ce pneu. La lettre indique le type de pneu. Et pas besoin de dire que si on essaie simplement de donner l'image \u00e0 Tesseract on ne r\u00e9cup\u00e8re ni les chiffres ni les lettres correctement si ce n'est pas du tout. Il faut donc utiliser une methode qui permette d'isoler le rond le plus \u00e0 droite, lui appliquer un traitement qui permette \u00e0 Tesseract de lire ce qu'il y a marqu\u00e9 et qui puisse determiner quel pneu est en train d'\u00eatre utilis\u00e9. J'ai d\u00e9cid\u00e9 de m'occuper dans un premier temps de trouver ce rond avant d'appliquer les filtres car plus l'image est petite plus les filtres sont rapides. Le programme va tirer un trait depuis le bord droit de la zone, et il va avancer vers la gauche jusqu'\u00e0 trouver un obstacle. Je d\u00e9tecte un obstacle si le pixel sur lequel est mon trait poss\u00e8de une valeur de plus de 0x50 dans le channel R,G ou B. J'ai trouv\u00e9 en faisant des tests que les couleurs de background de la F1TV ne d\u00e9passaient jamais ces valeurs. Ensuite apr\u00e8s avoir trouv\u00e9 le premier obstacle, je r\u00e9cup\u00e8re une zone qui doit englober le cercle. Voici un exemple avec cette image en entr\u00e9e : \"Zone compl\u00eate\" Elle est automatiquement coup\u00e9e de cette facon : \"Zone coup\u00e9e automatiquement\" Cela me permet d'isoler uniquement ce qui m'int\u00e9resse ce qui est tr\u00e8s pratique pour Tesseract et pour la detection de couleur. Ensuite avec cette image je peux commencer le processus de reconnaissance. Je commence par faire une moyenne de tous les pixels de l'image en excluant les pixels trop sombres qui font s\u00fbrement partie du background ou du chiffre. Ensuite j'utilise une methode qui calcule la diff\u00e9rence entre la couleur obbtenue et la liste de couleurs possible. Il y a cinq couleurs des pneus possibles : \"#ff0000\" pneu tendre/soft \"Couleur d'un pneu tendre\" \"#f5bf00\" pneu medium \"Couleur d'un pneu medium\" \"#a4a5a8\" pneu dur/hard \"Couleur d'un pneu dur\" \"#00a42e\" pneu inter \"Couleur d'un pneu interm\u00e9diaire\" \"#2760a6\" pneu pluie/wet \"Couleur d'un pneu pluie\" Ce qui est pratique c'est que m\u00eame dans les cas ou il n'y a pas beaucoup de couleur comme celui la : \"Pneu dur avec 0 tours\" On arrive \u00e0 une couleur moyenne de : \"Couleur moyenne de l'image ci dessus apr\u00e8s soustraction du background\" Et il est donc assez facile de determiner le type de pneu en question. Attention, les r\u00e9sultats peuvent \u00eatre tr\u00e8s vite d\u00e9rang\u00e9s par la couleur du pneu pr\u00e9c\u00e9dent si le d\u00e9coupage de la fen\u00eatre n'a pas \u00e9t\u00e9 assez pr\u00e9cis. Ensuite il \"suffit\" de lire le chiffre dans le rond et si on arrive pas \u00e0 le lire alors c'est que c'est une lettre et on sait que le nombre de tours est donc de 0. Maintenant vient le moment tr\u00e8s sympatique de la lecture du chiffre. Vous saurez que Tesseract en plus de detester les grandes images et les images avec des couleurs, deteste \u00e9galement les formes dans une image. Donc dans notre cas, le round de couleur autour du chiffre, m\u00eame si il n'est pas complet, il interf\u00e8re avec la reconnaissance et emp\u00eache de bien lire le chiffre. Il faut donc retirer le background et ensuite la couleur. Sauf que comme le chiffre est de la couleur du background, si on retire le background et ensuite la couleur il ne reste plus rien. Il faut donc retirer le background AUTOUR du rond, et ensuite si on retire la couleur il devrait rester le chiffre sur fond blanc. Pour se faire, j'ai tir\u00e9 des traits depuis les bords de l'image jusqu'\u00e0 ce qu'ils rencontrent le rond. Ensuite je retire tous les pixels entre le rond et les bords de l'image ce qui nous donne ceci : \"Zone pneu avec le background en moins\" Ensuite on peu retirer les pixels qui ont une valeur dans un channel RGB plus haute qu'un certain seuil : \"Zone avec le reste des couleurs supprimm\u00e9es\" Et la on a ce que l'on veut ! A partir de la c'est les filtres que l'on connait qui sont utilis\u00e9s pour en faire une image plus facile \u00e0 utiliser par Tesseract. 1 : On effectue un Resize de facteur 4 (oui c'est beaucoup mais en m\u00eame temps le chiffre est vraiment petit \u00e0 la base) qui permet d'avoir une image d'une bien meilleure r\u00e9solution. \"Filtre 1\" 2: On fait une Dilatation de facteur 1 pour retirer tout le flou de l'image pour aider Tesseract \"Resultat\" Et on a un chiffre qui est utilisable par Tesseract ! Explication des methodes pr\u00e9cises plus bas Pour r\u00e9sumer : On prend l'image de la zone et on la crop pour ne garder que la partie essentielle On d\u00e9termine le type de pneu avec la couleur moyenne de la zone On retire le background autour de cette zone On retire la couleur qui reste pour ne garder que le chiffre On augmente la r\u00e9solution du chiffre On rend ce chiffre net On envoie l'image trait\u00e9e et filtr\u00e9e \u00e0 Tesseract On d\u00e9termine le nombre de tours que le pilote a fait avec ses pneus avec le r\u00e9sultat de Tesseract DRS Bon ca c'\u00e9tait plut\u00f4t simple j'ai simplement v\u00e9rifi\u00e9 si la moyenne de vert d\u00e9passait une certaine valeur et puis voila. Filtres et methodes sur les images Dans ce projet on a du utiliser diff\u00e9rentes methodes d'\u00e9dition d'image que ce soit sous forme de filtres ou de modification de l'image directement. Voici un sommaire des methodes utilis\u00e9es et comment elles fonctionnent. Tresholding Cette methode sert \u00e0 passer d'une image en couleurs \u00e0 une image binaire noir blanc. C'est une \u00e9tape tr\u00e8s importante pour l'OCR car elle permet (si bien faite) d'isoler du texte de son background. Un exemple ici : \"Exemple treshold\" Le fonctionnement est assez simple mais il peut \u00eatre fait de diff\u00e9rentes mani\u00e8res mais dans mon cas voici comment l'algorythme fonctionne sachant qu'il demande en entr\u00e9e la Bitmap que l'on veut modifier ainsi que la valeur de Treshold : On parcours chaque pixel de l'image On convertir la couleur du pixel en une valeur de gris pour avoir la m\u00eame valeur en R,G et B (Formule utilis\u00e9e : grey = R x 0.3 + G x 0.59 + B x 0.11) Si le r\u00e9sultat de la valeur de gris est au dessus de la valeur de treshold, le pixel est pass\u00e9 en blanc complet et dans le cas contraire il est pass\u00e9 en noir complet On retourne la Bitmap modifi\u00e9e Un algorythme pas forc\u00e9ment complexe mais qui peut augmenter de mani\u00e8re titanesque les chances de r\u00e9ussir une OCR Resize Cette methode sert \u00e0 augmenter la r\u00e9solution d'une image pour am\u00e9liorer la pr\u00e9cision de l'algorythme de Tesseract. En effet, avec trop peu de pixels, la matrice de convolution n'est pas toujours aussi efficace. Il ne faut pas confondre cette methode d'augmentation de la taille avec une simple interpolation. En effet une augmentation de taille interpol\u00e9e ne vas pas vraiment changer la r\u00e9solution, l'image sera toujours aussi pixelis\u00e9e, seulement, les pixels seront compos\u00e9es de plus de pixels comme dans l'exemple ci dessous : \"Exemple d'interpolation lin\u00e9aire\" Dans mon projet j'utilise de l'interpolation bicubique qui va cr\u00e9er de l'information pour tenter de combler le vide et produire une image r\u00e9ellement plus grande et avec plus de details mais en ajoutant du flou. \"Exemple des diff\u00e9rents types d'interpolation\" Le but est d'aller chercher dans les pixels alentours les couleurs qui sont d\u00e9ja pr\u00e9sente et de jouer avec des poids pour tenter de faire une pr\u00e9diction de ce que ce pixel aurait \u00e9t\u00e9 si l'image avait plus de detail. Voici un exemple assez parlant : \"Exemple interpolation bicubique (avant)\" \"Exemple interpolation bicubique (apr\u00e8s)\" On pourrait croire que c'est inutile mais dans le contexte de Tesseract ajouter des d\u00e9tails pour tenter de simuler une meilleure r\u00e9solution m\u00eame en cr\u00e9ant du flou est int\u00e9ressant pour mieux remplir la matrice de convolution. Mais il est possible de r\u00e9duire ce flou avec d'autres m\u00e9thodes \u00e9galement. (Dans mon code je n'ai pas utilis\u00e9 du code fait main mais j'utilise une librairie qui me permet de le faire) Il faut simplement faire attention car c'est un proc\u00e9d\u00e9 assez lourd en performances. Dilatation et Erosion Cette methode et la suivante font partie des methodes de transformation morphologiques. Ces methodes sont utilis\u00e9es pour accentuer les formes et les epaissir ou les r\u00e9duire et les affiner. Elles poss\u00e8dent l'aventage \u00e9galement de retirer le flou d'une image ce qui est tr\u00e8s pratique si utilis\u00e9 apr\u00e8s l'utilisation de methodes comme Resize . Je ne vais pas trop rentrer dans les d\u00e9tails de ces methodes car leur fonctionnement est un peu plus lourd en math si on veut faire une v\u00e9ritable explication du pourquoi et du comment ca marche aussi bien. Pour notre projet je dirais que l'important est de savoir que ce sont deux outils tr\u00e8s pratiques pour changer la morphologie des lettres et des chiffres et qu'on peut les utiliser pour corriger du flou et/ou des art\u00e9facts apparus lors de la binarisation de l'image ou de la suppression de fond. Remove Background Cette methode est assez simple et est juste une methode qui va passer en revue tous les pixels de l'image et si la couleur d'un pixel s'apparente \u00e0 celle d'un pixel de fond il est pass\u00e9 en noir total ou en blanc total. Le but est de permettre au reste du programme de fonctionner avec des couleurs moins ambigues. Une variante sp\u00e9cialis\u00e9e pour la reconnaissance des pneus appel\u00e9e affectueusement Remove Useless cherche \u00e0 atteindre le m\u00eame bu mais est bien plus soffistiqu\u00e9e et sp\u00e9cialis\u00e9e pour retirer le background autour d'un cercle de couleur pour ensuite retirer la couleur et qu'il ne reste qu'un chiffre. Pour plus de details voir la detection de pneus. Il y aussi d'autre methodes comme un filtre Gaussien ou Highlight countour que j'ai du d\u00e9velopper mais que je n'ai pas utilis\u00e9 donc je ne vais pas en parler ici. Petit point r\u00e9solution Comme on peut l'imaginer la r\u00e9solution est extr\u00eamement importante pour l'OCR. Et en avancant sur le projet de l'\u00e9mulateur je me suis rendu compte qu'il \u00e9tait possible de r\u00e9cup\u00e8rer des images en 4K (Plut\u00f4t 1080 avec l'upscaling du lecteur). Cela est une superbe nouvelle car cela permet de simplifier \u00e9norm\u00e9ment le processing sur les diff\u00e9rentes windows. Quelques exemples pour se faire une id\u00e9e \"Echantillon 720P\" ; \"Echantillon 1080P\" \"Echantillon 4K\" Mais il faut savoir que gr\u00e2ce \u00e0 cette simplification j'ai pu aussi cr\u00e9er d'autres methodes de filtrage pour certaines parties. Mais la simplification \u00e9tait obligatoire car avec des images aussi grande il n'\u00e9tait simplement pas possible de venir appliquer les m\u00eames filtres car le temps de traitement serait beaucoup plus long. J'indique ces changements que apr\u00e8s l'explication d'avant car ce sont des changements un peu de derni\u00e8re minute et que la logique expliqu\u00e9e plus haut a \u00e9t\u00e9 tr\u00e8s importante pour le projet OCR m\u00eame si tout n'est plus forc\u00e9ment utilis\u00e9 maintenant que j'ai des images de meilleure qualit\u00e9. Dans la version actuellement disponible la reconnaissance a \u00e9t\u00e9 simplifi\u00e9e sous cette forme : Le \"GapToLeader\" est d\u00e9cod\u00e9 avec un premier passage de Tresholding \u00e0 165 puis un Resize de 2 et une Dilatation de 1 pour retirer le flou Les \"Sectors\" sont d\u00e9cod\u00e9s en utilisant une toute nouvelle methode VanishOxyAction \u00e0 cause des couleurs parfois appliqu\u00e9es et ensuite simplement une methode de Tresholding de 150 pour rendre le r\u00e9sultat assez propre pour l'OCR. Le \"LapTime\" est dabord pass\u00e9 par un Tresholding tr\u00e8s strict de 185 pour pr\u00e9parer la SobelEdgeDetection qui est \u00e9galement une nouvelle methode qu'il a \u00e9t\u00e9 possible d'utiliser gr\u00e2ce \u00e0 la simplification du reste des processus. Le \"Text\" est d\u00e9cod\u00e9 simplement avec un tresholding de 165 maintenant gr\u00e2ce \u00e0 l'image 4K. Les pneus ont leur propre traitement comme expliqu\u00e9 plus haut auquel on ajoute la Dilatation de 1. Comme on peut le voir le traitement est pas mal plus simple mais cela ne veut pas dire que les autres methodes que je n'utilise plus ne sont pas utiles. La reconnaissance n'est pas encore parfaite et je pense que leur utilisation pourrait aider \u00e0 am\u00e9liorer les r\u00e9sultats. (Et parfois ces anciennes methodes sont utiles dans les traitements personnalis\u00e9s des windows elle m\u00eames comme par exemple les pneus qui utilisent la methode GrayScale pour isoler les couleurs) VanishOxyAction Cette methode est une methode plut\u00f4t simple mais qui est importante. Elle se base beaucoup sur le code de la methode Grayscale et sur la methode Tresholding car elle essaie de regrouper le meilleur des deux en r\u00e8glant quelques soucis que ces derni\u00e8res cr\u00e9\u00e9ent. Le soucis avec la methode grayscale c'est que quand le texte est de couleur (Ce qui arrive souvent pour les temps de secteurs) la methode GrayScale rend les couleurs dans une nuance de gris un peu trop sombre ce qui fait que ensuite la methode de Tresholding d\u00e9fonce tout. \"Exemple de secteur en couleur\" \"Exemple de secteur en grayscale\" L'id\u00e9e est alors de prendre pour chaque pixel et de garder uniquement la valeur de R,G ou B la plus haute et de mettre les deux autres canaux au m\u00eame niveau pour avoir une image blanchie qui puisse \u00eatre ensuite utilis\u00e9e avec la methode de Tresholding sans soucis. \"Exemple de secteur blanchi avec vanishoxyAction\" SobelEdgeDetection On pourrait se dire que avec ce genre de methode le tresholding est inutile ensuite mais ca n'est pas le cas car le tresholding sert ensuite pour rendre les contours plus ou moins aggressif. Car m\u00eame si l'image ressemble \u00e0 une image binaris\u00e9e, il reste des nuances que le treshold va pouvoir utiliser. SobelEdgeDetection Cette methode est une methode assez classique que je n'ai pas design\u00e9 moi m\u00eame alors je ne vais pas trop m'\u00e9pancher dessus. En gros on utilise une matrice et une formule math\u00e9matique pour redessiner une image et le r\u00e9sultat est une image avec des contours. Je ne l'ai utilis\u00e9 que pour les temps au tour car ce sont les plus r\u00e9calcitrants. Cette methode a besoin d'une image pass\u00e9e en noir et blanc au pr\u00e9alable \u00e0 laquelle on applique ensuite les matrrices de filtres. Et avec ces filtres ajout\u00e9s \u00e0 l'image on peut ensuite calculer le \"Gradient\" pour cr\u00e9er les bords. Le seul soucis de cette methode c'est qu'elle est assez gourmande et qu'elle fournit des formes creuses d\u00fb \u00e0 la nature des matrices donn\u00e9es. Voici un exemple de ce dont cette m\u00e9thode est capable : Artefacts de la detection de bords de Sobel Apparemment l'OCR aime assez bien cette methode et elle permet de beaucoup moins souvent oublier les '.' ou ':' Traitement des donn\u00e9es C'est bien gentil de recevoir des r\u00e9sultats de l'OCR, cependant on ne peut pas souvent les utiliser comme tels. En effet les resultats ne sont pas tr\u00e8s constants et demandent d'\u00eatre verifi\u00e9s pour savoir si ils doivent \u00eatre pris en compte. Le post traitement de ces donn\u00e9es d\u00e9pend compl\u00eatement du contexte et donc il est diff\u00e9rent pour chque type de window. Voici un floril\u00e8ge des diff\u00e9rents types de traitements : Traitement du nom de pilote Rien de plus que ce qui est d\u00e9ja d\u00e9taill\u00e9 dans la partie OCR Traitement des pneus Pareil Traitement des temps La par contre c'est int\u00e9ressant. Dans un monde parfait je pourrais simplement prendre les r\u00e9sultats de l'OCR et les traiter directement. Mais comme nous vivons dans un monde ou la souffrance et la douleur sont les seules choses autoris\u00e9es on ne peut pas. Le probl\u00e8me vient du fait que les temps que l'on peut trouver sur la F1TV sont encod\u00e9s avec des '.' et des ':' qui determinent les limites entre les chiffres qui d\u00e9signent les minutes, les secondes et les milisecondes. Et le soucis avec ces s\u00e9parateurs c'est qu'ils aiment bien mettre le chaos dans la reconnaissance. Quand ils ne sont pas compris comme des autres chiffres ils sont parfois simplement oubli\u00e9s ou pris en double c'est un enfer. Il faut donc trouver un moyen de detecter quand cela arrive. Et je n'ai pas trouv\u00e9 de meilleur moyen que de faire du cas par cas. Cela peut para\u00eetre simple quand on parle par exemple des secteurs. On sasit que on attend deux chiffres avant un '.' et trois chiffres apr\u00e8s. Il est donc facile de voir que si je trouve six chiffres et pas de s\u00e9paration le troisi\u00e8me est le s\u00e9parateur mal compris. Mais l'exemple qui d\u00e9truit vraiment tout c'est les \u00e9carts avec le leader. Autant un temps au tour c'est toujours x:xx.xxx et un temps de secteur c'est xx.xxx. Mais un \u00e9cart avec le leader ca peut \u00eatre 0.345 comme 1:12.345. Ce qui fait que quand je 121345 est-ce que c'est 12.345 ou 1:21.345...? Souvent on peut quand m\u00eame d\u00e9duire mais cela demande de pr\u00e9voir presque tous les cas limites ce qui est assez p\u00e9nible. On pourrait se dire qu'il suffit de voir si la valeur est trop en dehors des normes. Le soucis c'est que il n'est pas impossible que un temps au tour ou un \u00e9cart prenne d'un coup une grosse diff\u00e9rence. Cela arrive m\u00eame assez souvent quand des pilotes sortent de la piste. \"Exemple temps au tour\" \"Exemple temps secteur\" Pour ce qui est du DRS et de la position des pilotes, il n'y a pas vraiment de traitement suppl\u00e9mentaire. Non pas car la detection est parfaite, mais par ce que la detection ne peut pas rater de 200 facons. Le DRS ne peut retourner que TRUE ou FALSE et la position du pilote est entre 1 et 20 compris. Le peu de nuance fait que ce sont des cas de figures qui ne demandent pas un traitement particulier au del\u00e0 de l'OCR Stockage des donn\u00e9es Dans ce projet le but n'est pas simplement de trouver les donn\u00e9es et les afficher. L'int\u00e9r\u00eat de les r\u00e9cup\u00e8rer est de pouvoir les comparer \u00e0 d'autres donn\u00e9es pr\u00e9c\u00e9dentes. Le vrai soucis de la F1TV c'est justement que l'on ne peut pas facilement voir les \u00e9volutions. On ne peut voir que des \"photos\" de la situation actuelle de la course. Il faut donc garder en m\u00e9moire les diff\u00e9rentes choses qui se sont pass\u00e9es. Techniquement on pourrait stocker ces donn\u00e9es dans de b\u00eates listes C#. Mais le soucis avec ca c'est que m\u00eame si des outils comme LinQ existent, ca n'est pas le plus pratique quand on veut faire des recherches complexes. Il faut aussi voir que si le projet dans sa forme actuelle aurait peut-\u00eatre pu se satisfaire de listes simples, le but est d'ensuite pouvoir construire sur ces bases pour faire des predictions et des insertions de stats beaucoup plus int\u00e9ressantes qui demandent de faire des requ\u00eates complexe rapidement. Je me suis dit que la meilleure methode serait d'avoir une base de donn\u00e9e dans laquelle je peux faire des requ\u00e8tes SQL. Mais commme je n'ai pas besoin de toutes les features de SQl et que je ne veut pas avoir \u00e0 g\u00e8rer un serveur de base de donn\u00e9e et tout ce qui va avec je me suis dit qu'une bonne option serait d'utiliser SQLITE. \"Logo Sqlite\" ; SQLITE est vraiment pratique car cela me permet d'avoir une DB sans avoir de serveur donc pas vraiment complexe ou quoi que ce soit mais qui conserve les aventages de rapidit\u00e9 et d'utilisation de requetes SQl. J'ai cr\u00e9\u00e9 trois tables dans cette base de donn\u00e9e SQLITE que voici : Base de donn\u00e9e Drivers Colonne Type de Data Description Tag ID INTEGER ID du pilote PRIMARY Name VARCHAR Nom du pilote NOT NULL Pitstops Colonne Type de Data Description Tag Lap INTEGER Tour durant lequel le Pitstop a \u00e9t\u00e9 effectu\u00e9 PRIMARY DriverID INTEGER Pilote qui a effectu\u00e9 le Pitstop PRIMARY Tyre VARCHAR Pneu chauss\u00e9 par le pilote NOT NULL Stats Colonne Type de Data Description Tag Lap INTEGER Tour durant lequel le Pitstop a \u00e9t\u00e9 effectu\u00e9 PRIMARY DriverID INTEGER Pilote qui concern\u00e9 PRIMARY Tyre VARCHAR Pneu chauss\u00e9 par le pilote NOT NULL LapTime INTEGER Temps au tour (MS) NOT NULL Sector1 INTEGER Temps du secteur 1 (MS) NOT NULL Sector2 INTEGER Temps du secteur 2 (MS) NOT NULL Sector3 INTEGER Temps du secteur 3 (MS) NOT NULL GapToLeader INTEGER Ecart avec le leader (MS) NOT NULL Position INTEGER Position pilote NOT NULL La table Drivers sert juste \u00e0 stocker les diff\u00e9rents noms de pilote pour qu'ils soient utilis\u00e9s dans le reste de la DB La table Pitstops n'est pas vraiment utilis\u00e9e dans l'\u00e9tat actuel du projet. Mais le but \u00e9tait de la remplir d\u00e8s que le programme d\u00e9tectais un arr\u00eat aux stands. Le but est ensuite de pouvoir construire un classement pond\u00e8r\u00e9 en fonction des arr\u00eats des diff\u00e9rents pilotes et d'afficher la stats tout le temps sur l'affichage principal. Elle n'est pas vraiment utilis\u00e9e car la detection de pitstop n'a pas pu \u00eatre commpl\u00eat\u00e9e. De par la nature des donn\u00e9es r\u00e9cup\u00e8r\u00e9es des pneus et des positions, c'est tr\u00e8s difficile de detecter avec prescision un arr\u00eat aux stands. La table Stats est la plus importante car elle contient toutes les informations concernant les pilotes \u00e0 chaque tour. L'id\u00e9e est qu'elle soit remplie \u00e0 chaque tour. Les infos ne sont pas scens\u00e9e \u00eatre les infos live mais plut\u00f4t juste une photo \u00e0 chaque tour de la situation de chaque pilote pour ensuite pouvoir faire des commparaisons tourspar tours. Des donn\u00e9es comme le GapToLeader peuvent \u00e9voluer pendant le tour mais on s'en fiche. Ce qui compte vraiment c'est le temps au tour et les secteurs ainsi que les pneus. Quand remplir la base ? Dans ce projet il y a deux type d'information. Les informations live qui sont stock\u00e9es dans des listes et les informations long terme qui sont stock\u00e9es dans la DB. A chaque it\u00e9ration de l'OCR, les donn\u00e9es r\u00e9cup\u00e8r\u00e9es sont stock\u00e9es dans une liste de DRIVERDATA. Les DRIVERDATA sont des structures de donn\u00e9es qui contiennent toutes les infos d'un pilote \u00e0 un instant T. Elles peuvent \u00eatre incompl\u00eates et sont juste la pour faire de petits calculs et determiner quand ins\u00e8rer des donn\u00e9es permanentes. Ce qui nous am\u00e8ne au moment int\u00e9ressant. Comment on d\u00e9termine quand il est int\u00e9ressant d'ins\u00e8rer des informations dans la base de donn\u00e9es. Il y a deux cas de figure ou on pourrait vouloir ins\u00e8rer des infos : Quand un pilote a finit un tour En effet, j'ai estim\u00e9 que les seuls moments ou on veut garder une photo de la situation du pilote c'est quand il passe d'un tour \u00e0 l'autre. Le raisonnement est le suivant : On ne veut pas conserver TOUTES les donn\u00e9es car si on prend une phot toutes les trois secondes, la majorit\u00e9 des informations seront redondantes avec les pr\u00e9c\u00e9dentes. Mais en m\u00eame temps il ne faut pas rater des changements importants de donn\u00e9es. Les seules donn\u00e9es qui changent entre deux passages de l'OCR sont les \u00e9carts entre les pilotes et de temps en temps un nouveau secteur s'affiche. Alors que d'un tour \u00e0 l'autre presque toutes les informations changent. Et on ne perd que les l\u00e9g\u00e8res fluctuations des \u00e9carts entre les pilotes. J'ai donc d\u00e9cid\u00e9 de conserver une photo par tour. Mais c'est bien joli sauf qu'il reste une difficult\u00e9 : Comment savoir qu'un pilote a fait son tour ? Cela peut para\u00eetre simple comme question mais elle est plus difficile qu'il n'y parait. Il faut savoir que en F1 un pilote peut \u00eatre dans son 26\u00e8me tour pendant qu'un autre en est \u00e0 son 24\u00e8me. Chaque pilote a sa propre course et au fur et \u00e0 mesure que les \u00e9carts se creusent il peut y avoir un tour voir plusieurs d'\u00e9cart entre la queue de course et les premiers pilotes. Ensuite il faut savoir qu'il n'est pas marqu\u00e9 sur la f1TV dans quel tour chaque pilote est. Il faut donc le d\u00e9duire en fonction des Data. Voici le code le if qui d\u00e9tecte un nouveau tour if ( DriverDataLogs [ i ][ DriverDataLogs [ i ]. Count - 1 ]. Sector3 != 0 && DriverDataLogs [ i ][ DriverDataLogs [ i ]. Count - 2 ]. Sector3 == 0 && DriverDataLogs [ i ][ DriverDataLogs [ i ]. Count - 2 ]. Position != - 1 && DriverDataLogs [ i ][ DriverDataLogs [ i ]. Count - 1 ]. Position != - 1 ) { //Do stuff } DriverDataLogs est une liste de liste d'informations de pilotes. Chaque DriverDataLogs repr\u00e9sente les 20 photos des donn\u00e9es des pilotes. Cela veut dire que DriverDataLogs[3] repr\u00e9sente toutes les infos des pilotes dans le tour 4 et que DriverDataLogs[3][0] repr\u00e9sente toutes les infos du premier pilote dans le tour 3. Si on analyse un peu ce qui est \u00e9crit avec ces informations, on peut voir que je d\u00e9termine qu'un nouveau tour se d\u00e9finis comme une photo ou le troisi\u00e8me secteur a \u00e9t\u00e9 compl\u00eat\u00e9 et ou il ne l'\u00e9tait pas juste avant. Cela fait sens car quand un pilote compl\u00eate son troisi\u00e8me secteur c'est la que son dernier temps au tour se met \u00e0 jour. Le reste des tests est juste la pour \u00e9viter les faux positifs dans le cas ou un des deux DriverDataLogs[x][x] soit corrompu et que donc la valeur n'aie pas de sens. Cela veut dire que dans des conditions tr\u00e8s sp\u00e9cifiques je pourrais potentiellement rater un tour mais il faudrait vraiment que l'OCR me joue un vilain tour. Quand un pilote a fait un arr\u00eat aux stands Et la on touche le plus difficile. Pourtant un arr\u00eat aau stand ne devrait pas \u00eatre compliqu\u00e9 \u00e0 detecter. C'est quand un pilote change de pneu. Alors il peut changer de pneu en gardant le m\u00eame type de pneu et donc tout repose sur le nombre de tour qu'un pneu fait. Sauf que il faut ajouter \u00e0 cette reflexion qu'un pneu peut \u00eatre chauss\u00e9 sans qu'il soit neuf. Ce qui veut dire que l'on ne peut pas simplement choisir qu'un pilote a chang\u00e9 de pneus quand ses pneus sont \u00e0 1 tour. Il peut tr\u00e8s bien reprendre des pneus de qualif qui peuvent avoir 10 tours dans les pattes. En plus quand le pilote change de pneus il y a un phenomene assez p\u00e9nible qui fait que les deux premiers tours faits avec ne sont pass vraiment d\u00e9chiffrables car ils sont un peu cach\u00e9s derri\u00e8re la lettre qui indique le nouveau pneu chauss\u00e9. Exemple : \"Infographie de pneu qui se chevauche\" Voici le code que j'avais \u00e9crit pour tenter de trouver quand un pilote avait fait un pitstop : if ( data . CurrentTyre . Coumpound != Tyre . Type . Undefined && data . CurrentTyre . NumberOfLaps == 0 && DriverDataLogs [ i ][ DriverDataLogs [ i ]. Count - 2 ]. CurrentTyre . NumberOfLaps != 0 ) { //Do stuff } On peut voir que j'essaie de detecter quand le pneu est \u00e0 0 tours (ce qui est le moment ou il y a une lettre \u00e0 la place d'un num\u00e9ro de tour) et que la photo d'avant montrait un pneu normal. On v\u00e9rifie aussi que le pneu a bien \u00e9t\u00e9 detect\u00e9 en verifiant que le pneu n'est pas de type undefined. Le soucis c'est que ce n'est pas rare que l'OCR nous retourne qu'un pneu est vieux de 0 tours et donc il est absolument impossible de faire confiance \u00e0 cette metric. Si on veut utiliser cette methode pour trouver les Pitstop il va falloir avant tout am\u00e9liorer l'OCR sur ce point. Ce soucis mets en lumi\u00e8re un principe assez important de l'informatique \"Ggarbage in, Garbage out\". Si les donn\u00e9es que je recoit ne sont pas g\u00e9niales, le r\u00e9sultat ne sera pas g\u00e9nial non plus. Ce qui est frustrant c'est que la detection des pneus n'est pas si mal mais entre les chiffres qui se chevauchent ce qui nous fait lire 0 alors que c'est juste un un '1' derri\u00e8re un 'H' ou le 1% du temps ou le programme se trompe, on ne peut pour l'instant tout simplement rien faire de mieux. Affichage des donn\u00e9es Maintenant que l'on a stock\u00e9 toutes ces donn\u00e9es, il faut en faire quelque chose sinon ca ne sert a rien. Afficher les donn\u00e9es est techniquement la partie la plus simple du projet. Il faut prendre les donn\u00e9es qui nous int\u00e9ressent de la base de donn\u00e9es et des r\u00e9sultats de l'OCR et les afficher sur des composants Windows Forms. Il y a deux types d'affichages actuellements mis en place dans le projet sur les trois pr\u00e9vus initialement : Affichage direct L'affichage direct est simplement l'affichage du r\u00e9sultat de l'OCR. Par exemple le classement live ainsi que les \u00e9carts entre les pilotes sont affich\u00e9s directement depuis les r\u00e9sultats de l'OCR. Ce ne sont pas forc\u00e9ment des donn\u00e9es prises dans la base de donn\u00e9e. Voici un exemple : for ( int driverCount = 0 ; driverCount < liveData . Count ; driverCount ++) { DriverData driver = liveData [ driverCount ]; lblDriverName . Text = driver . Name ; lblDriverPosition . Text = driver . Position ; lblDriverLapTime . Text = Reader . ConvertMsToTime ( driver . LapTime ); } C'est l'affichage le plus simple et celui qui est le plus soumis \u00e0 des erreurs. En effet, si un pilote est mal detect\u00e9 on le verra directement mal s'afficher dans la Form principale. C'est \u00e9galement l'affichage le moins int\u00e9ressant car il ne cr\u00e9e aucune information, il ne fait que remontrer les infos que l'on peut d\u00e9ja voir dans la F1TV \"Exemple d'affichage live\" Affichage calcul\u00e9 La encore il y a plusieurs types d'affichages : Affichage Hybride Pour ce qui est des affichages hybrides ce sont des affichages qui vont chercher des informations lives et des informations dans la base de donn\u00e9e. Ils ne font pas de calculs \u00e0 proprement parler mais ils affichent plus d'informations que ce que montre la F1TV. Cela veut dire qu'ils repr\u00e9sentent un d\u00e9but de plusvalue par rapport \u00e0 l'alternative qu'est la page DATA de la F1TV. Ils ne sont pas beaucoup plus durs \u00e0 impl\u00e9menter mais demandent de faire des requ\u00eates \u00e0 la base de donn\u00e9e. Comme exemple d'affichage hybride on a l'affichage des cinq derniers tours d'un pilote. C'est un affichage qui ne demande aucun calcul mais qui permet deja de se rendre compte de si le pilote est enn train de perdre ou gagner du temps ou si il est constant, ce qui n'est pas possible actuellement avec la F1TV \u00e0 moins d'avoir une excellente m\u00e9moire. \"Fen\u00eatre d'informations \u00e0 propos d'un pilote\" Voici un exemmple du type de code necessaire pour afficher ce genre de donn\u00e9es: public List <( int LapTime , int Lap )> GetDriverLaptimes ( string driverName , int numberOfLaptimes ) { int driverId = GetDriverID ( driverName ); List <( int LapTime , int Lap )> lapData = new List <( int LapTime , int Lap )>(); string selectQuery = \"Select LapTime,Lap from Stats WHERE DriverID = @driverID ORDER BY Lap DESC LIMIT @limit\" ; using ( var command = new SQLiteCommand ( selectQuery , Connection )) { command . Parameters . AddWithValue ( \"@driverID\" , driverId ); command . Parameters . AddWithValue ( \"@limit\" , numberOfLaptimes ); SQLiteDataReader reader = command . ExecuteReader (); while ( reader . Read ()) { int lapTime = reader . GetInt32 ( 0 ); int lap = reader . GetInt32 ( 1 ); lapData . Add (( lapTime , lap )); } } return lapData ; } public void Display (){ List <( int LapTime , int Lap )> lapsInfos = Storage . GetDriverLaptimes ( driverName , 5 ); int id = 0 ; foreach (( int LapTime , int Lap ) lapData in lapsInfos ){ Labels [ id ]. Text = LapTime ; id ++; } } Note: Le code montr\u00e9 ici n'est pas forc\u00e9ment le code utilis\u00e9 dans le projet. D'une certaine facon les fen\u00eatres de bataille et de d\u00e9passements sont aussi des hybrides. \"Exemple fen\u00eatre des batailles\" Ici ce sont les batailles qui sont repr\u00e9sent\u00e9es. Aucune donn\u00e9e n'est calcul\u00e9e, c'est litterallement directement les donn\u00e9es de la F1TV, mais la nuance est qu'on ne montre que les pilotes qui sont en train de se battre et que on leur assigne une couleur selon \u00e0 quel point ils sont proches. On a une plus-value sur la F1TV sans pour autant faire de monstres calculs. Pour info, les pilotes consid\u00e8r\u00e9s comme \u00eatant en train de se battre sont les pilotes \u00e0 moins de trois secondes les uns des autres et les couleurs sont suivantes : Vert : Dans la zone de DRS (Moins d'une seconde) Jaune : Plus d'une seconde Noir : Plus de deux secondes \"Exemple fen\u00eatre des d\u00e9passements\" La c'est l'historique des d\u00e9passements qui est affich\u00e9. On pourrait presque dire que c'est un affichage compl\u00eatement calcul\u00e9 car ce ne sont pas des informations disponibles directement sur la F1TV cependant je dirais que cela reste un hybride car il n'y a aucuns calculs. On regarde juste les diff\u00e9rences entre l'ancienne position d'un pilote et la nouvelle et on affiche les changements. Affichage totalement calcul\u00e9 L'affichage compl\u00eatement calcul\u00e9 est un type d'affichage qui ne montre aucune information trouv\u00e9e sur la page de la F1TV. C'est le premier affichage \u00e0 traiter l'information qu'il trouve et il retourne des informations nouvelles. La nuance avec les affichages pr\u00e9dictif est qu'il ne cr\u00e9e pas r\u00e9ellement de l'information, il la d\u00e9duit. Le but est de prendre un certain nombre d'informations trouv\u00e9es sur la page de la F1TV et de calculer des choses pour faire ressortir des tendances \u00e0 l'utilisateur. Cependant on reste sur des informations factuelles. Ce sont des infos d\u00e9duites que techniquement unn humain avec une bonne m\u00e9moire et fort en calcul mental pourrait faire. Mais la c'est fait automatiquement pour tous les pilotes et c'est affich\u00e9 de sorte \u00e0 faire ressortir les valeurs sp\u00e9ciales. Comme c'est un peu plus abstrait, je pense qu'un exemple vaut mieux que 1000 mots. \"Exemple de fen\u00eatre d'informations totalement calcul\u00e9es\" Ci dessus on peut voir un bon exemple. C'est une fen\u00eatre qui montre qui sont les pilotes les plus rapides et les moins rapides et qui montre la diff\u00e9rence de temps au tour. Cette information est totalement d\u00e9duite et n'est en aucun cas trouvable sur la F1TV mais elle n'est pas invent\u00e9e. Elle est simplement calcul\u00e9e. La formule est assez simple, je prend les cinq derniers temps au tour de tous les pilotes. Je fais une moyenne qui donne un temps. Et ensuite je trie les pilotes en fonction de ce temps et je n'affiche que les cinq plus rapide et les cinq plus lents. Ensuite il suffit de prendre le temps le plus rapide et faire une petite soustraction pour avoir l'\u00e9cart. C'est une stat assez int\u00e9ressante car elle lisse les diff\u00e9rences d'un tour \u00e0 l'autre et fait ressortir une tendance. On peut voir pour le grand prix de monaco 2023 par exemple, le moment ou les pneus pluie deviennent plus int\u00e9ressants que les pneus secs car on voit que les pilotes les plus rapides sont les pilotes de fond de grille qui ont chauss\u00e9 les pneus pluie en premier tandis que les plus lents sont les pilotes sur pneus secs vieux. Voici un bout de code qui s'occupe de faire les calculs : List <( int avg , string driverName )> averages = new List <( int avg , string driverName )>(); foreach ( DriverData driver in LiveDriverDataLogs [ LiveDriverDataLogs . Count - 1 ]) { //We want to recover the last 5 lap times List <( int lapTime , int lap )> laps = Storage . GetDriverLaptimes ( driver . Name , 5 ); if ( laps . Count > 0 ) { int avg = 0 ; foreach (( int lapTime , int lap ) lap in laps ) { avg += lap . lapTime ; } avg = avg / laps . Count ; averages . Add (( avg , driver . Name )); } } Affichage pr\u00e9dictif C'est ici que ca devient vraiment dommage, le projet a mannqu\u00e9 de temps pour impl\u00e9menter des affichages pr\u00e9dictifs mais le potentiel est la ! Un affichage pr\u00e9dictif est un affichage qui cr\u00e9e des informations \u00e0 partir des infos qu'il a mais qui fait plus qu'un calcul. Le but est de tenter de deviner quelque chose. Voici des exemples d'affichages pr\u00e9dictifs qui pourraient \u00eatre mis en place averc l'architecture actuelle du projet : Si un pilote a des pneus depuis plus de 20 tours et que son temps au tour est en chute libre depuis cinq tours. Alors ce pilote va peut-\u00eatre devoir s'arr\u00eater. Si un pilote tourne une seconde au tour plus vite que le pilote devant lui et que ce pilote est \u00e0 10 secondes devant, alors il devrait pouvoir le rattraper d'ici dix tours. Si un arr\u00eat au stand est en moyenne de 23 secondes, alors un pilote 3\u00e8me ressortirais potentiellement 7\u00e8me si il s'arr\u00eate maintenant. Tous ces exemples sont des mini algorythmes pr\u00e9dictifs qui pourraient \u00eatre impl\u00e9ment\u00e9s assez facilement dans l'architecture actuelle du projet et pourraient apporter une immense plus-value si ils sont bien param\u00eatr\u00e9s. On peut m\u00eame imaginer que l'algorythme se corrige tout seul si il voit qu'il a eu tort pour que les course suivante il puisse mieux s'en sortir. Les possibilit\u00e9es sont infinies ! Tests Alors la on arrive \u00e0 la GROSSE erreur de ce projet... Si je ne pouvais changer qu'une seule chose \u00e0 ma facon de faire le projet apr\u00e8s coup c'est ici que je ferai le changement. Les tests sont d'une importance absolument capitale mais si ils sont bien faits, c'est surtout un moyen ultra efficace de v\u00e9rifier que du nouveau code est performant et est beaucoup plus pratique \u00e0 utiliser. Je pense sans rire que j'aurais pu gagner plusieurs jours de travail si j'avais travaill\u00e9 diff\u00e9remment vis-a-vis des tests. Comment ca c'est pass\u00e9 D\u00e8s la cr\u00e9ation du planning pr\u00e9visionnel j'ai fait une erreur capitale. J'ai mis les tests en fin de developpement des features... Et je ne leur ai laiss\u00e9 que tr\u00e8s peu de temps tout en les mettant au milieu du chemin critique ce qui les rends particuli\u00e8rement vuln\u00e9rables si une t\u00e2che du chemin critique est retard\u00e9e. En fait dans ce projet je voulais surtout \u00e9viter de faire comme certains projets que l'on a pu avoir pendant notre formation. C'est \u00e0 dire que je ne voulais surtout pas oublier la doc. Alors j'ai agenc\u00e9 le projet pour commencer par les fondations de la doc, puis en incluant les p\u00e9riodes de programmation et entre ces derni\u00e8re ajouter des Tests dans les trous. Le soucis c'est que du coup les projets \u00e9taient un peu le dernier truc dont je devais me soucier ce qui a \u00e9t\u00e9 une tr\u00e8s mauvaise id\u00e9e. Je me suis retrouv\u00e9 \u00e0 devoir mordre sur les jours de tests car les t\u00e2ches de programmation mettaient plus de temps que pr\u00e9vu (qui elles-m\u00eame auraient p\u00fb \u00eatre plus courte avec une bonne utilisation des tests) et je mme suis retrouv\u00e9 \u00e0 passer outre les tests pour avancer sur le reste du projet. J'ai donc du en panique \u00e0 la toute fin du projet construire quelques tests \"unitaires\" dont l'utilit\u00e9 est tr\u00e8s limit\u00e9e car tout le travail a d\u00e9ja \u00e9t\u00e9 fait et que vu la complexit\u00e9 qu'a pris le projet, faire de vrais tests unitaires est devenu un peu trop compliqu\u00e9 pour valoir le coup. Les seuls tests \"unitaires\" (Je l'\u00e9cris entre quotes car ce ne sont pas vraiment des tests unitaires mais plut\u00f4t des tests tout courts car ils ne sont pas sp\u00e9cifiques) qu'il y a dans le projet final sont des tests exclusivement tourn\u00e9s sur l'OCR. Ils sont d\u00e9ja vraiment pratiques car cela me permet de tester d'autres algorythmes d'OCR et voir si les r\u00e9sultats sont meilleurs ou non mais c'est juste un peu trop tard quoi... Les tests unitaires que j'ai impl\u00e9ment\u00e9s sont un peu tous pareils au niveau du fonctionnement : On choisit une image dans une liste d'images pr\u00e9par\u00e9es qui sont scens\u00e9e repr\u00e9senter le type de donn\u00e9es rencontr\u00e9es par l'application en temps normal On lis le nom de l'image que j'ai mis manuellement en indiquant ce qui \u00e9tait marqu\u00e9 sur l'image On fait un coup d'OCR sur l'image et on compare ce r\u00e9sultat avec la valeur que l'on est scens\u00e9 retrouver En pratique on est sur un code de ce style : [TestMethod()] public void SectorOCR_Test () { string directory = @\"./../../TestImages/Sectors/\" ; foreach ( string file in Directory . GetFiles ( directory )) { Bitmap image = ( Bitmap ) Image . FromFile ( file ); DriverSectorWindow sectorsWindow = new DriverSectorWindow ( image , new Rectangle ( 0 , 0 , image . Width , image . Height ), 1 , true ); string [] paths = file . Split ( '/' ); string fileName = paths [ paths . Length - 1 ]; fileName = fileName . Replace ( \".png\" , \"\" ); int timeMS = ( int ) sectorsWindow . DecodePng (); string time = Reader . ConvertMsToTime ( timeMS ); string [] checkDigits = fileName . Split ( '_' ); string [] digitsToCheck = time . Split ( ':' ); if ( time == \"0:00:000\" ) { Assert . AreEqual ( 0 , Convert . ToInt32 ( checkDigits [ 0 ])); } else { //The ConvertMSToTime will always return three chars so we need to make the checkDigits be also three chars while ( checkDigits . Length != 3 ) checkDigits = new [] { \"0\" }. Concat ( checkDigits ). ToArray (); for ( int i = 0 ; i < checkDigits . Length ; i ++) { //We need to convert to int first because sometimes we have \"08\" and \"8\" and in string its not the same but in int it is Assert . AreEqual ( Convert . ToInt32 ( checkDigits [ i ]), Convert . ToInt32 ( digitsToCheck [ i ])); } } } } Tout le code suppl\u00e9mentaire qui ne fait pas partie des \u00e9tapes cit\u00e9es est juste la pour manipuler le format des r\u00e9sultats pour qu'il soit comparable. \"Exemple d'\u00e9chantillons pour les tests\" Ce qui est pratique avec cette approche c'est qu'il est tr\u00e8s facile de rajouter des cas sp\u00e9cifiques et voir comment le programme les g\u00e8re. Si je vois que un certain nombre est souvent mal reconnu je peux faire expr\u00e8s de le mettre dans le dossier et modifier mon code d'OCR jusqu'\u00e0 ce que le test passe. Si j'avais eu plus de temps j'aurais s\u00fbrement pu ajouter de vrais tests unitaires qui testent des fonctions tr\u00e8s pr\u00e9cises. Par exemple verifier que les diff\u00e9rentes Windows sont bien appel\u00e9es et que les zones se cr\u00e9ent correctement ou m\u00eame plus simplement que la lecture du JSON au d\u00e9marrage marche bien. Il faut savoir que m\u00eame si je n'ai pas eu l'occasion d'\u00e9crire beaucoup de tests sous forme de code. Toute la phase de d\u00e9veloppement de l'OCR j'ai pass\u00e9 plus d'une heure par jour \u00e0 analyser les r\u00e9sultats. Je gardais toutes les images des WINDOWS et je notais dans le nom du fichier ce que l'algorythme trouvais et je passais en revue manuellement les centaines de r\u00e9sultats pour isoler ceux qui posaient probl\u00e8me. C'est comme ca que je me suis rendu compte par exemple que, avec cette police, les 4 et les 1 \u00e9taient souvent confondus. Donc m\u00eame si les tests automatis\u00e9s sont clairement insuffisant par rapport \u00e0 ce que j'aurais peut-\u00eatre du faire, j'ai pass\u00e9 \u00e9norm\u00e9ment de temps \u00e0 tester mon application. Comment ca aurait du se passer Si je devais refaire ce projet aujourd'hui je pense que j'utiliserais un peu la m\u00eame technique que pour la doc. J'aurais mis les t\u00e2ches de Tests directement au d\u00e9but du projet et j'aurais determin\u00e9 le squelette de l'application par la m\u00eame occasion. Je pense que j'aurais mis trois jours pour \u00e9crire tous les tests dont j'aurais besoin et j'aurais fait une strat\u00e9gie de TDD (Test Driven Developpement) par ce que je pense que ca marcherait vraiment super bien sur ce type de projet. J'aurais pris je pense 5 une dixaine d'images compl\u00eates de la F1TV de plusieurs GP diff\u00e9rents et j'aurais mis toutes les fen\u00eatres d\u00e9coup\u00e9es dans des fichiers avec des tests comme ceux que j'ai fait pour ce projet. Et comme ca je saurai que mon algo est bon uniquement quand il aura r\u00e9ussi \u00e0 passer tous les tests. Cela r\u00e8glerait le soucis que j'ai eu le plus : Me retrouver \u00e0 devoir changer l'OCR 5 fois par ce que \u00e0 chaque fois que je d\u00e9veloppe une nouvelle feature je me rends compte d'une faiblesse mon algorythme... Non seulement j'aurai eu beaucoup plus de facilit\u00e9 \u00e0 avancer sur le projet, mais en plus je pense que cela m'aurait fait gagner \u00e9norm\u00e9ment de temps non seulement car je n'ai plus \u00e0 tester tout \u00e0 la main mais en plus par ce que ca veut dire que quand l'OCR passe les tests je n'ai plus jamais \u00e0 m'en soucier. Lecons Je pense que dans mes futurs projets je mettrai les tests en d\u00e9but de projet plut\u00f4t que \u00e0 la fin et je ferai en sorte qu'ils fassent partie du chemin critique et que je ne puisse pas passer \u00e0 c\u00f4t\u00e9 sous pretexte que \"Je n'ai pas le temps\". Ecrire des tests c'est jamais marrant et c'est encore moins marrant quand ils nous emp\u00eachent d'avancer. Mais je suis convaincu que au final c'est un gain de temps et de s\u00e9r\u00e9nit\u00e9 incontournable. R\u00e9sum\u00e9 des difficult\u00e9s techniques Ici je vais parler tr\u00e8s rapidement des difficult\u00e9es techniques rencontr\u00e9es. Si vous voulez tout savoir \u00e0 propos des difficult\u00e9es vous pouvez aller lire le journal de bord. C'est aussi pour \u00e9viter de me r\u00e9p\u00e8ter par rapport aux explications des diff\u00e9rents points dans l'analyse organique. Je vais pas non plus parler des difficult\u00e9es rencontr\u00e9e avec des choses que je n'ai pas gard\u00e9 dans le programme final donc il est normal que vous vous disiez qu'il n'y a pas eu tant de difficult\u00e9s que ca. Browser Headless Il y avait plusieurs difficult\u00e9es techniques avec cette histoire de Browser Headless. Deja pouvoir lancer un browser headless et le contr\u00f4ler. C'est difficile car il faut trouver la bonne librairie et ensuite il faut trouver le bon exectuable de geckoDriver qui permette de faire fonctionner l'application m\u00eame si l'utilisateur n'a pas Firefox sur sa machine. Ensuite la seconde difficult\u00e9 est celle de ne pas se faire chopper comme un bot par le site de la F1TV. Il faut savoir qu'\u00e0 ce jour je n'ai toujours pas r\u00e9ussi \u00e0 faire croire \u00e0 la page de login de la F1TV que j'\u00e9tais un user normal en utilisant Selnnium mais au moins maintenant je peux acc\u00e8der aux vid\u00e9os tranquillement. Ce soucis de ne pas pouvoir se connecter avec la page de login \u00e0 la plus grosse difficult\u00e9 technique de cette partie du projet : la connexion automatique. Pour me connecter \u00e0 la F1TV avec un browser headless la seule solution que j'ai trouv\u00e9 a \u00e9t\u00e9 d'utiliser des cookies. Et pour que l'utilisateur n'aie pas \u00e0 aller chercher les siens dans son navigateur il a fallut trouver une technique pour aller les chercher directement sans lui demander son avis. Autre difficutl\u00e9, comme on travaille avec un site web que l'on ne contr\u00f4le pas, il faut trouver un moyen de g\u00e8rer les erreurs et de r\u00e9essayer parfois et attendre quand il faut dans les cas ou le chargement est long etc... Ensuite apr\u00e8s tout ca la derni\u00e8re difficult\u00e9 a \u00e9t\u00e9 de pouvoir contr\u00f4ler le firefox Headless assez bien pour qu'il puisse non seulement naviguer les pages mais aussi qu'il puisse cliquer sur des boutons qui ne s'affichent pas tout le temps. (Je ne vais pas mentioner la difficult\u00e9 que ca a \u00e9t\u00e9 de mettre le browser en 4K pour des raison de sant\u00e9 mentale) OCR Les difficult\u00e9es ici sont dans un autre niveau. Chaque type de donn\u00e9e repr\u00e9sentait sa difficult\u00e9 \u00e0 lui tout seul sans compter l'optimisation. Pour commencer on a le texte pour les noms de pilotes. Il a fallu trouver un syst\u00e8me qui puisse reconnaitre le texte et qui puisse comparer le r\u00e9sultat avec les pilotes que l'on connait. Ensuite il a fallu trouver un moyen de detecter la diff\u00e9rence entre les fen\u00eatres de DRS o\u00f9 il est ouvert ou ferm\u00e9. Il fallait \u00e9galement faire attention \u00e0 ne pas faire de faux positifs. Pour les temps par secteurs il a fallu trouver des filtres qui permettent de bien diff\u00e9rencier les '1' et les '4' sans les confondre et il a aussi fallut trouver un moyen de filter l'image pour que dans le cas ou le texte serait en couleur ca fonctionne quand m\u00eame. (Car oui un filtre de nuances de gris ne marche pas super avec des couleurs sombres) Pour les pneus (le plus dur) il a fallut trouver un moyen de trouver sur toute la longeur de la zone la partie int\u00e9ressante. Ensuite il a fallut trouver une technique pour savoir quel type de pneu c'est en fonction de la couleur moyenne et ensuite le plus dur a \u00e9t\u00e9 d'isoler le chiffre du dessin autour car Tesseract aime pas les formes, le tout automatiquement. Pour les temps au tour il a fallut trouver un moyen de ne pas confondre les ponctuations avec des chiffres tout en ne les ratant pas. Et il a fallu trouver un moyen de detecter quand in\u00e9vitablement cela arrive quand m\u00eame. Et la derni\u00e8re difficult\u00e9 (la plus p\u00e9nible) a \u00e9t\u00e9 de detecter les \u00e9carts entre les pilotes. Il a fallut trouver une facon de decoder le texte en temps mais aussi de faire tout un syst\u00e8me qui d\u00e9tecte et r\u00e8gle les cas ou un ':' a \u00e9t\u00e9 oubli\u00e9 ou confondu tout en ne sachant pas si il \u00e9tait scens\u00e9 y en avoir \u00e0 la base car les valeurs peuvent varier entre '1_23.657' et '0.452'. Stockage Pour ce qui est du stockage la grande difficult\u00e9 a \u00e9t\u00e9 de savoir quand un pilote avait avait finit un tour car chaque pilote finit son tour \u00e0 un moment diff\u00e9rent. Il a \u00e9galement fallut trouver un moyen de savoir les donn\u00e9es d'un pilote \u00e9taient logiques. Une difficult\u00e9 qui n'a pas \u00e9t\u00e9 compl\u00eatement d\u00e9pass\u00e9e est de savoir quand un pilote a fait un arr\u00eat aux stands car la detection de l'age des pneus est plus que mauvaise. Voila. Ce fut une petite liste non exhaustive de quelques difficult\u00e9s techniques que j'ai rencontr\u00e9 pendant ce projet. Optimisation du programme Ici je vais parler des techniques que j'ai utilis\u00e9 pour r\u00e9duire le temps de traitement de chaques images de 50 secondes \u00e0 un peu moins de 3 sur le processeur de mon laptop. En effet, dans les premi\u00e8res version du projet, traiter l'int\u00e9gralit\u00e9 d'une image pouvait prendre presque une minute. Ce qui est compliqu\u00e9 dans ce projet c'est qu'il y a un certain nombres de choses que je ne contr\u00f4le pas. En utilisant Tesseract, je me retrouve avec des incompressibles. En imaginant que l'OCR sur une image prenne 300ms, m\u00eame si j'avais 180 threads capables de faire cette t\u00e2che en m\u00eame temps, le temps de traitement sera toujours d'au moins 300ms. Cr\u00e9er une instance de Tesseract prend \u00e9galement du temps. Ma mission n'est donc pas d'arriver \u00e0 des temps de quelques dixaines de milisecondes mais plut\u00f4t de rajouter le moins de temps possible pendant le traitement et de tenter de faire le plus du choses possible en paralelle. I Ethique du projet [A remplir \u00e0 la fin du projet pour parler des questions ethiques du projet (Ex: Utilisation potentiellement abusive de la F1Tv ou L'histoire des cookies)] Utilisation de Chat GPT [A remplir \u00e0 la fin du projet] Am\u00e9liorations futures [A remplir dans les derni\u00e8res semaines du travail de dipl\u00f4me] Conclusion [A remplir la derni\u00e8re semaine du travail de dipl\u00f4me] Notes de code Glossaire","title":"Rapport Track Trends V1.0"},{"location":"index.html#rapport-track-trends-v10","text":"Rohmer Maxime Travail de dipl\u00f4me Technicien ES 2023","title":"Rapport Track Trends V1.0"},{"location":"index.html#introduction","text":"","title":"Introduction"},{"location":"index.html#resume","text":"Track Trends est un outil de r\u00e9cup\u00e9ration et d'analyse de donn\u00e9es de courses de Formule 1. Pour le contexte, en dehors des cours, j'exerce diff\u00e9rentes activit\u00e9s dont celle de Live Ticker F1 pour le 20 minutes. Pour m'aider dans ce travail, j'utilise actuellement la F1TV \u00e0 laquelle je suis abonn\u00e9 qui me propose non seulement un feed vid\u00e9o de meilleure qualit\u00e9 avec des commentaires plus pertinents que ceux de la RTS mais qui aussi me permet d'acc\u00e9der \u00e0 un feed vid\u00e9o tr\u00e8s important : la chaine data. Ce dernier ressemble \u00e0 cela : \"Screenshot du feed data de la f1tv\" (Attention ce n'est pas un joli tableau HTML, mais bien une vid\u00e9o qui contient un tableau.) Sauf que toutes les informations sont \u00e9tal\u00e9es p\u00eale-m\u00eale sans hi\u00e9rarchie ce qui fait que cela me prendrait trop de temps de tout d\u00e9chiffrer \u00e0 chaque fois, ce qui me fait rater des choses int\u00e9ressantes. Le but du projet est donc de fournir un outil qui hi\u00e9rarchise et affiche diff\u00e9remment les donn\u00e9es pour faciliter leur lecture et me permettre de faire de meilleurs commentaires.","title":"R\u00e9sum\u00e9"},{"location":"index.html#abstract","text":"Track Trends is a Formula 1 data is a tool that displays and interpret data. To understand everything,first ,a little bit of context. In my free time I have multiple activities and one is to be the Live Ticker F1 for the local journal \"20 minutes\" (Owned by Tamedia). to help me in this work I'm currently using the F1TV to which I'm currently subscribed because it provides me with a better video feed with better commentary than the ones from the RTS (in my opinion) but also because it gives me access to a very important video feed : the data channel You can see in the chapter above an example of the F1TV DATA CHANNEL. [Note : Even tough it looks like a pretty HTML table on wich you could easely get infos... Its not. Its a video feed] You can see a lot of data all well and good BUT! All the data is displayed the same in a big table which make it really hard to read totally in a hurry, which means that I miss a lot of useful information. The point of the project then is to provide a tool that can display those data by taking into account their relevance. So for example a driver that is 10s away from everyone and that is doing some normal lapTimes will be less displayed or even not displayed at all so I can focus on the drivers that are battling each others. This tool would help me not miss the battles and details that are happening in the back and therefore not being broadcasted on TV.And it could be a usefull tool for anyone who wants a better insight of how the race is going by looking at the data. This kind of project already exists in the form of the AWS tool \"F1 Insight\" but it is not avaible to the public. We can only see some of its predictions (that are trash) and data dumps in the live feed when the TV directors feel like it.","title":"Abstract"},{"location":"index.html#description-du-besoin","text":"Comme expliqu\u00e9 dans le r\u00e9sum\u00e9, je suis Live Ticker F1. Mais pour mieux comprendre le besoin que j'ai, je pense qu'il est pertinent de comprendre comment je travaille. Pendant un Grand Prix de Formule 1 j'ai plusieurs t\u00e2ches \u00e0 effectuer : Suivre les diff\u00e9rents \u00e9v\u00e8nements du Grand Prix Changer le titre et la photo de titre du Live Chercher des Tweets ou des Images \u00e0 int\u00e9grer Ecrire les commentaires en faisant attention \u00e0 dire ce qu'il se passe mais aussi l\u2019expliquer, ce que cela implique, mais aussi ce que cela veut dire pour le reste de la course. Comprendre et expliquer les strat\u00e9gies Tout cela toutes les cinq minutes max... Cela veut dire que je dois \u00eatre le plus rapide possible quand je cherche des informations. Et comme le tableau en comporte trop et bien, je suis oblig\u00e9 de le lire en diagonale. Par exemple dans le tableau, les infos que je cherche le plus sont : Le nombre de places gagn\u00e9es (surtout au d\u00e9part) Les \u00e9carts entre les pilotes (surtout ceux qui sont en dessous de deux secondes). Les pneus de chaque pilote et combien de tours, ils ont fait dessus Les temps d'arr\u00eats aux stands Les temps au tour (surtout pour la strat\u00e9gie) Mais pleins d'autres informations existent si on les recoupe sur plusieurs tours. Un outil qui permettrait de mettre en \u00e9vidence les informations importantes serait donc une tr\u00e8s grosse plus-value pour mon travail et s'il est facile \u00e0 installer et \u00e0 utiliser, il se pourrait qu'il devienne indispensable.","title":"Description du besoin"},{"location":"index.html#cahier-des-charges","text":"Il s'agit d'une version coup\u00e9e du cahier des charges qui ne contient pas l'explication du contexte. Mais l'original est disponible sur ce site \u00e9galement. Il est toutefois normal d'y voir des choses r\u00e9p\u00e9t\u00e9es ou l\u00e9g\u00e8rement diff\u00e9rentes, en effet, il n'a pas \u00e9t\u00e9 \u00e9crit en m\u00eame temps que le reste de ce document.","title":"Cahier des charges"},{"location":"index.html#projet","text":"Un outil de style compagnon sous forme d'application C# Windows Form qui r\u00e9cup\u00e8re en temps r\u00e9el les informations de la course et affiche les informations les plus importantes. Le but est non seulement de faciliter mon job, mais aussi faire en sorte d'am\u00e9liorer la plus-value de mon travail en me permettant de fournir des commentaires qui ne sont pas disponibles pour le tout venant qui regarde simplement le flux RTS. Exemples : Les pilotes qui sont proches (moins de 1-2 secondes qui sont donc en train de se battre). Les pilotes qui am\u00e9liorent leur temps au tour et ceux qui perdent le plus de temps Le classement pond\u00e9r\u00e9 tenant compte des futurs arr\u00eats au stand Maintenant afficher diff\u00e9remment les infos, c'est sympa, mais cela serait encore mieux de traiter ces data et de permettre des petites pr\u00e9dictions. Exemples : Pr\u00e9dire les arr\u00eats aux stands en prenant en compte les baisses de performances des pneus Pr\u00e9dire le pneu que le pilote va chausser s'il rentre aux stands dans le prochain tour Pr\u00e9dire dans combien de tour tel pilote va rattraper tel autre pilote Pr\u00e9dire combien de temps le pilote va perdre dans les stands en fonctions des arr\u00eats pr\u00e9c\u00e9dents","title":"Projet"},{"location":"index.html#realisation","text":"Malheureusement, la Formula 1 Management ne propose aucune API publique qui puisse nous permettre de faire ce projet \"simplement\". La raison la plus probable \u00e9tant qu'Amazon avec son service AWS propose exactement ce genre de services pour le flux t\u00e9l\u00e9vis\u00e9 et il doit y avoir un contrat d'exclusivit\u00e9. Il existe des API \"Pirates\" faites par la communaut\u00e9, le probl\u00e8me est qu'elles ne sont pas forc\u00e9ment des plus pratiques \u00e0 utiliser. Mais comme je poss\u00e8de un abonnement premium ++ \u00e0 la F1TV, j'ai acc\u00e8s pour chaque grand prix \u00e0 un flux vid\u00e9o nomm\u00e9 : DATA F1 CHANNEL Qui ressemble \u00e0 \u00e7a : \"Exemple de la Data Channel\" Donc la seule fa\u00e7on que je vois de r\u00e9cup\u00e9rer ces donn\u00e9es est de les prendre directement sur ce feed. M\u00eame si le but final de l'application est de faire pleins de choses super avec les datas, le gros du projet va surtout \u00eatre la r\u00e9cup\u00e9ration des donn\u00e9es et leur stockage. Les donn\u00e9es viennent du flux vid\u00e9o et ainsi dans un premier temps, il va falloir r\u00e9cup\u00e9rer d'une mani\u00e8re ou d'une autre des images qui viennent d'un grand prix en direct ou en rediffusion. Ensuite, dans un second temps, il faut lire les informations directement sur l'image en utilisant une librairie pr\u00e9vue pour (exemple Tesseract) et v\u00e9rifier l'int\u00e9grit\u00e9 de ces derni\u00e8res pour qu'on puisse ensuite les stocker. Dans un troisi\u00e8me temps, il faut stocker toutes ces donn\u00e9es dans une forme qui permette d'aller facilement faire des requ\u00eates de r\u00e9cup\u00e9ration et d\u00e9j\u00e0 pr\u00e9parer des m\u00e9thodes qui permettent de r\u00e9cup\u00e9rer des infos importantes (ex : la moyenne des cinq derniers tours, le temps moyen d'arr\u00eat etc.) pour faciliter la derni\u00e8re \u00e9tape Quand tout cela est fait, on peut ensuite s'amuser un peu avec les Data. La derni\u00e8re \u00e9tape est donc l'affichage. L'id\u00e9e est de cr\u00e9er une Windows Form qui contienne toutes ces informations dans un format beaucoup plus lisible et avec laquelle on pourrait interagir pour permettre de plus facilement commenter les Grands Prix. (exemple plus bas avec un croquis de ce \u00e0 quoi l'application pourrait ressembler) Voici la liste des donn\u00e9es qui pourraient \u00eatre affich\u00e9es (Non contractuel, simplement des id\u00e9es). Les pilotes qui sont proches (moins de 1-2 secondes qui sont donc en train de se battre). Les pilotes qui am\u00e9liorent leur temps au tour et ceux qui perdent le plus de temps Le classement pond\u00e9r\u00e9 tenant compte des futurs arr\u00eats au stand La moyenne de temps que les pilotes perdent dans les stands La performance moyenne des 5 types de pneus La moyenne de temps de chaque pilote sur le pneu actuel Le nombre de points que chaque pilote gagnerait selon sa position Le classement de la course Voire m\u00eame si c'est possible : Pr\u00e9dire les arr\u00eats aux stands en prenant en compte les baisses de performances des pneus Pr\u00e9dire le pneu que le pilote va chausser s'il rentre aux stands dans le prochain tour Pr\u00e9dire dans combien de tour tel pilote va rattraper tel autre pilote Pr\u00e9dire combien de temps le pilote va perdre dans les stands en fonctions des arr\u00eats pr\u00e9c\u00e9dents Pr\u00e9dire les temps au tour de chaque pilote selon l'usure des pneus Voici un exemple d'interface possible pour une page : \"Protype de l'app fait sur Figma\"","title":"R\u00e9alisation"},{"location":"index.html#cas-dutilisation","text":"'*'On va consid\u00e9rer que tous les user ont un abonnement F1 TV PRO Un user veut r\u00e9cup\u00e9rer les data : Il ouvre son navigateur et lance la page DATA de la F1 TV Il calibre la capture des data via le programme (pour la premi\u00e8re utilisation). Il confirme que les donn\u00e9es initiales sont bonnes (pour la premi\u00e8re utilisation). Il regarde tranquille son Grand Prix Le programme r\u00e9cup\u00e8re les data : Il r\u00e9cup\u00e8re des images depuis la F1TV Il utilise Tesseract (ou autre) pour en r\u00e9cup\u00e9rer les infos. Il met ces infos dans un Objet Pilote, dans un Objet course avec un attribut tour pour hi\u00e9rarchiser les data Pour ce qui est de l'affichage, l'id\u00e9e est de faire une application C# comme on l'a appris \u00e0 l'\u00e9cole, mais avec assez de style pour qu'elle puisse \u00eatre agr\u00e9able \u00e0 utiliser. Quand le programme affiche les data : Il prend les donn\u00e9es venant directement de la F1TV. Il affiche diff\u00e9remment les donn\u00e9es pour permettre une meilleure lisibilit\u00e9 Il interpr\u00e8te avec des r\u00e8gles plut\u00f4t simples certaines data pour faire des minipr\u00e9dictions ou aider \u00e0 la lecture Il r\u00e9cup\u00e8re des infos d'autres courses pour les comparer et proposer des pr\u00e9dictions plus int\u00e9ressantes","title":"Cas d'utilisation"},{"location":"index.html#difficultes-techniques","text":"R\u00e9cup\u00e9rer un flux vid\u00e9o plut\u00f4t propre malgr\u00e9 les contres mesures de la F1 TV pour en emp\u00eacher la lecture par un logiciel Si on doit passer par une capture d'\u00e9cran, trouver un moyen de stocker les donn\u00e9es de mani\u00e8re \u00e0 pr\u00e9voir que parfois un tour pourrait avoir plus de donn\u00e9es qu'un autre, que le user peut mettre pause, ou m\u00eame qu\u2019il revienne en arri\u00e8re. D\u00e9velopper des algorithmes pour r\u00e9cup\u00e9rer les donn\u00e9es comme les diff\u00e9rents pneus utilis\u00e9s ou l'activation du DRS ainsi que d\u00e9velopper des moyens de nettoyer les r\u00e9sultats de l'OCR (Par exemple utiliser diff\u00e9rents champs redondants pour comparer les r\u00e9sultats) Stocker les donn\u00e9es sur une base pour les traiter plus tard tout en pr\u00e9voyant un moyen de voir les stats live D\u00e9velopper des algorithmes de pr\u00e9diction qui prennent en compte d'anciennes courses pour tenter de pr\u00e9dire des choses comme les arr\u00eats aux stands par exemple.","title":"Difficult\u00e9s techniques"},{"location":"index.html#differences-sur-le-cahier-des-charges","text":"Ici je vais parler de l'\u00e9t\u00e2t du projet \u00e0 la date du 12 Juin 2023. A cette date, le projet est fonctionel mais comporte quelques diff\u00e9rences avec le cahier des charges original. Je vais expliquer non seulement ces diff\u00e9rences mais aussi les raisons qui font qu'elles sont la. Pour bien comprendre les diff\u00e9rences il faut s'en r\u00e9f\u00e8rer au cahier des charges original. L'application doit \u00eatre \"Un outil de style compagnon sous forme d'application C# Windows Form qui r\u00e9cup\u00e8re en temps r\u00e9el les informations de la course et affiche les informations les plus importantes\". C'est ca la phrase la plus importante dans tout le CDC. Et je pense que tr\u00e8s honn\u00eatement, ce cahier des charges est rempli ! L'application actuellement disponible sur le r\u00e9po GIT est une application de style compagnion Windows Forms qui r\u00e9cup\u00e8re les infos de la F1TV en temps r\u00e9el et elle affiche les informations qu'elle trouve importante. Donc je dirais que l'objectif g\u00e9n\u00e9ral est remplis. Maintenant c'est dans les d\u00e9tails que cela p\u00eache. Il est mentionn\u00e9 trois exemples d'infos \u00e0 suivre je cite : \"Les pilotes qui sont proches (moins de 1-2 secondes qui sont donc en train de se battre).\" \"Les pilotes qui am\u00e9liorent leur temps au tour et ceux qui perdent le plus de temps\" \"Le classement pond\u00e9r\u00e9 tenant compte des futurs arr\u00eats au stand\" r\u00e9sultats : Dans l'application on peut effectivement voir les pilotes proches (Ce sont ceux qui sont \u00e0 moins de 3 secondes dans le version finale) Dans l'application on peut aussi voir un affichage qui permet de voir les pilotes les plus rapides et les plus lents sur le circuit. On ne peut en revanche pas voir de classement pond\u00e9r\u00e9 selon les arr\u00eats aux stands car l'application a du mal \u00e0 detecter des arr\u00eats. Ensuite pour ce qui est des pr\u00e9dictions il n'y en a aucunes comme ca c'est simple. Si on ne regarde que de tr\u00e8s loin le CDC et le projet final on pourrait dire que c'est plut\u00f4t d\u00e9cevant car il manque beaucoup de choses comme les pr\u00e9dictions et certains affichages. On peut aussi se dire ca en comparant la maquette du CDC et le r\u00e9sultat final. \"Maquette originale du projet faite sur Figma\" \"Maquette originale du projet faite sur Figma\" Clairement un oeuil non avis\u00e9 pourrait \u00eatre tr\u00e8s d\u00e9cu et pourrait dire que c'est un echec. Et moi je vais vous expliquer pourquoi au contraire c'est un total succ\u00e8s. D\u00e9ja, la beaut\u00e9 de l'interface est tr\u00e8s difficile a r\u00e9pliquer en Windows Forms et il faudrait plus d'une semaine de travail pour arriver \u00e0 quelque chose qui pourrait ressembler un tout petit peu \u00e0 la maquette. Ensuite, si on regarde bien, on a quand m\u00eame une application qui nous permet de suivre les informations de la course et qui calcule des choses \u00e0 notre place. C'est d\u00e9ja une grosse plus-value par rapport \u00e0 la page Data de la F1TV. Et finalement, les pr\u00e9dictions, les affichages et le style ce sont les choses les moins compliqu\u00e9es du projet. On ne se rends pas compte que pour simplement afficher les 20 pilotes dans le bon ordre il faut \u00e9norm\u00e9ment de travail. Voici une petite repr\u00e9sentation graphique de la quantit\u00e9 de travail nescessaire pour en arriver \u00e0 l'\u00e9t\u00e2t actuel du projet : \"Graphique repr\u00e9sentant la quantit\u00e9 de travail requise\" Pour en arriver \u00e0 un affichage il a fallu r\u00e9cup\u00e8rer automatiquement les images en utilisant un browser headless ce qui a pris un temps fou \u00e0 mettre en place et il a fallu surtout lire les informations que l'on recevait des images. J'ai pass\u00e9 presque 90% du temps de mon projet \u00e0 d\u00e9velopper des choses qui permettront ensuite de faire de l'affichage. Le fait qu'il y aie quoi que ce soit de logique qui s'affiche cela veut dire que TOUT LE RESTE fonctionne ! Le moindre soucis \u00e0 la r\u00e9cup\u00e9ration des images, ou surtout \u00e0 la reconnaissance de texte et de chiffres et l'affichage est ruin\u00e9. Si j'avais pass\u00e9 ne serait-ce qu'une semaine de plus juste sur l'affichage le r\u00e9sultat final n'aurait rien \u00e0 voir. Le soucis c'est simplement que le cahier des charges ne parle pas du tout du reste du projet et ne parle que du r\u00e9sultat final. Pour toutes ces raisons je dirais que le CDC \u00e9tait trop superficiel mais que l'application est conforme \u00e0 l'id\u00e9e g\u00e9n\u00e9rale de ce dernier et qu'il serait tr\u00e8s facile de la rendre parfaitement conforme maintenant que tout le travail de fond a \u00e9t\u00e9 fait et fonctionne et je pense donc que c'est un succ\u00e8s.","title":"Diff\u00e9rences sur le cahier des charges"},{"location":"index.html#planning-previsionnel","text":"Mes suiveurs m'ont demand\u00e9 un planning de type GANTT pour ce travail de dipl\u00f4me Je n'ai pas utilis\u00e9 un logiciel particulier pour faire ce dernier, mais je me suis inspir\u00e9 des principes fondamentaux d'un diagramme de ce type. Comme l'original a \u00e9t\u00e9 fait sur Excel, je ne peux pas vraiment l'ins\u00e9rer de mani\u00e8re lisible ici, mais il est disponible dans le dossier Planning. Mais voici un r\u00e9sum\u00e9 de son contenu :","title":"Planning pr\u00e9visionnel"},{"location":"index.html#taches","text":"J'ai d\u00e9cid\u00e9 de d\u00e9composer mon planning en trois grands types de t\u00e2ches. Programmation Documentation Tests L'id\u00e9e est de permettre une meilleure lisibilit\u00e9 et de me permettre \u00e0 moi de me faire plus facilement \u00e0 l'id\u00e9e de ce qu'il m'attend. Voici la liste des t\u00e2ches par rubrique :","title":"T\u00e2ches"},{"location":"index.html#pt","text":"Cette rubrique contient les t\u00e2ches qui n'ont pas leur place dans les trois cat\u00e9gories principales.","title":"PT"},{"location":"index.html#pt1-preparation-au-travail-de-diplome-2","text":"Cette t\u00e2che est un peu hors cat\u00e9gorie, mais c'est normal, c'est une supert\u00e2che qui regroupe beaucoup de choses. C'est une t\u00e2che qui est planifi\u00e9e pour deux jours et qui normalement devrait \u00eatre faite les deux premiers jours du travail. Le but est de pr\u00e9parer tout ce qui peut \u00eatre pr\u00e9par\u00e9 en avance niveau documentation et mise en place pour ne pas avoir besoin de s'en soucier ensuite.","title":"PT1 / pr\u00e9paration au travail de dipl\u00f4me (2)"},{"location":"index.html#dt","text":"Rubrique documentation qui contient toutes les t\u00e2ches en rapport de pr\u00e8s ou de loin avec la documentation du projet.","title":"DT"},{"location":"index.html#dt1-creation-du-poster-1","text":"Cette t\u00e2che consiste \u00e0 faire une version num\u00e9rique du poster qui soit en accord avec les consignes qu'on nous a donn\u00e9es. Le but est aussi et surtout de faire poster dont je sois fier et que je sois content de montrer. Il y a d\u00e9j\u00e0 des croquis de poster et j'ai clairement pr\u00e9vu de travailler sur \u00e7a pendant les vacances alors, je n'ai mis qu'un jour et je l'ai plac\u00e9 juste avant le rendu de ce dernier.","title":"DT1 Cr\u00e9ation du poster (1)"},{"location":"index.html#dt2-documentation-analyse-de-lexistant-2","text":"Cette t\u00e2che est d\u00e9di\u00e9e \u00e0 l'\u00e9criture de la documentation et plus pr\u00e9cis\u00e9ment de l'analyse de l'existant. Comme il y a pas mal de technologies utilis\u00e9es dans mon projet, j'aimerais faire correctement un vrai debrief de pourquoi j'ai utilis\u00e9 l'une ou l'autre alors, j'ai assign\u00e9 deux jours dessus.","title":"DT2 Documentation Analyse de l'existant (2)"},{"location":"index.html#dt3-documentation-analyse-organique-5","text":"Cette t\u00e2che est la plus grosse dans la cat\u00e9gorie documentation. Il s'agit de documenter comment l'application fonctionne. J'y ai mis cinq jours et je pense que c'est un minimum car c'est dans cette t\u00e2che que je vais devoir d\u00e9tailler exactement comment fonctionne chaque partie du projet. Ces cinq jours sont \u00e9parpill\u00e9s sur le projet en g\u00e9n\u00e9ral \u00e0 la fin du d\u00e9veloppement de chaque grande partie de projet. Le but est de ne rien oublier et de ne pas avoir \u00e0 tout faire en m\u00eame temps.","title":"DT3 Documentation Analyse organique (5)"},{"location":"index.html#dt4-documentation-analyse-fonctionnelle-2","text":"Cette t\u00e2che est d\u00e9j\u00e0 moins grosse, elle consiste \u00e0 documenter le fonctionnement de l'application et comment utiliser les composants que j'ai d\u00e9velopp\u00e9s. Je l'ai mis en fin de projet, car comme j'ai l'habitude de faire des analyses fonctionnelles plut\u00f4t pr\u00e9cises, le moindre changement dans l'UI peut tout rendre obsol\u00e8te. J'y ai mis deux jours, car j'aimerais correctement documenter avec de bonnes photos et sc\u00e9narios pour qu'on puisse voir toutes les possibilit\u00e9s de l'application.","title":"DT4 Documentation Analyse fonctionnelle (2)"},{"location":"index.html#dt5-documentation-tests-1","text":"Cette t\u00e2che est un peu plus petite qu'elle ne le devrait. Elle concerne la documentation des diff\u00e9rents tests. Je n'y ai mis qu'un seul jour, car en r\u00e9alit\u00e9 les diff\u00e9rentes t\u00e2ches de tests contiennent aussi beaucoup de documentation,","title":"DT5 Documentation Tests (1)"},{"location":"index.html#dt6-documentation-reste-2","text":"Cette t\u00e2che est une t\u00e2che un peu vague. Elle contient toutes les actions autres que j'aurai besoin de faire (Mise au propre, orthographe, g\u00e9n\u00e9ration de PDF ...). J'y ai mis deux jours pour avoir un peu de marge, car ce sont toujours des t\u00e2ches qui paraissent faciles, mais qui \u00e0 la fin prennent beaucoup de temps si on les fait bien.","title":"DT6 Documentation Reste (2)"},{"location":"index.html#pt_1","text":"Rubrique programmation qui contient toutes les t\u00e2ches qui touchent \u00e0 la programmation et au d\u00e9veloppement de l'application.","title":"PT"},{"location":"index.html#pt1-programmation-recuperation-des-images-3","text":"Cette t\u00e2che est estim\u00e9e \u00e0 seulement trois jours, il ne faut pas s'y m\u00e9prendre, c'est une des t\u00e2ches les plus dures et lourdes niveaux documentation en explications. Cependant, un POC (Proof Of Concept) assez avanc\u00e9 a d\u00e9j\u00e0 \u00e9t\u00e9 fait et donc cela permet de n'envisager que trois jours, car il suffit de l'impl\u00e9menter et de la paufinner. Cette t\u00e2che consiste \u00e0 prendre en entr\u00e9e un lien de Grand Prix et de sortir une image tous les x secondes de la page DATA. Cela peut sembler simple, mais pour le faire sans prendre d'espace d'\u00e9cran et ne demandant pas \u00e0 l'utilisateur de copier-coller quoi que ce soit o\u00f9 de donner ses identifiants F1TV c'est un challenge. Cela peut paraitre curieux alors de mettre cette t\u00e2che loin dans le planning m\u00eame si c'est la premi\u00e8re \u00e9tape du projet. Encore une fois cela s'explique avec le fait qu'il y a d\u00e9j\u00e0 un POC qui fonctionne \u00e0 peu pr\u00e8s et que donc pr\u00e9f\u00e8re commencer avec des t\u00e2ches plus incertaines dans le cas o\u00f9 elles prendraient plus de temps que pr\u00e9vu.","title":"PT1 Programmation r\u00e9cup\u00e9ration des images (3)"},{"location":"index.html#pt2-programmation-ocr-5","text":"Cette t\u00e2che consiste \u00e0 d\u00e9velopper la partie qui reconnait le texte sur les images. C'est tr\u00e8s certainement la t\u00e2che qui risque le plus de d\u00e9border car c'est celle qui est la plus complexe techniquement puisqu'elle demande non seulement la lecture sur image, mais aussi le d\u00e9veloppement d'algorithmes de traitement de cette donn\u00e9e pour \u00eatre s\u00fbr qu'elle a bien \u00e9t\u00e9 lue. J'y ai ainsi allou\u00e9 cinq jours, mais j'esp\u00e8re que j'arriverai \u00e0 gagner du temps sur les autres pour y allouer plus dans le planning effectif, car je suis convaincu que plus, on y passe du temps, meilleur sera le r\u00e9sultat.","title":"PT2 Programmation OCR (5)"},{"location":"index.html#pt3-programmation-stockage-et-modele-5","text":"Cette partie est moins technique, mais concerne le stockage des donn\u00e9es que nous retourne la lecture des images. Mais elle va demander de la r\u00e9flexion et de l'intelligence de programmation, car il faut que cette partie anticipe les besoins de la vue et pr\u00e9pare un terrain fertile qui ne demande pas un refactor quand on passera au d\u00e9veloppement de la vue. C'est pour cela que je lui ai aussi assign\u00e9 cinq jours de travail et elle doit absolument \u00eatre commenc\u00e9e apr\u00e8s la lecture.","title":"PT3 Programmation, stockage et mod\u00e8le (5)"},{"location":"index.html#pt4-programmation-vue-de-lapp-5","text":"Cette partie peut \u00eatre horrible comme tr\u00e8s facile, cela d\u00e9pend compl\u00e8tement de la qualit\u00e9 du travail avant. Si le mod\u00e8le est parfait et que les donn\u00e9es sont int\u00e8gres, cela devrait \u00eatre plut\u00f4t simple de les afficher de mani\u00e8re int\u00e9ressante. Cependant, cette partie d\u00e9bordera s\u00fbrement un peu, car tout le temps gagn\u00e9 avec de bonnes donn\u00e9es sera utilis\u00e9 pour tenter de faire de la pr\u00e9diction. Pour ces raisons, je lui ai assign\u00e9 \u00e9galement cinq jours de travail et elle doit absolument \u00eatre faite apr\u00e8s le mod\u00e8le.","title":"PT4 Programmation Vue de l'APP (5)"},{"location":"index.html#pt5-programmation-mise-en-commun-3","text":"Cette t\u00e2che est aussi un petit peu sp\u00e9ciale, car elle regroupe plusieurs choses. En gros, chaque partie de programmation sera s\u00fbrement assez ind\u00e9pendante et il faudra \u00e0 un moment faire un seul projet C# qui contient tout. Il est difficile d'estimer \u00e0 quel point cela va \u00eatre compliqu\u00e9 alors, j'ai \u00e9t\u00e9 conservateur et j'ai mis trois jours.","title":"PT5 Programmation mise en commun (3)"},{"location":"index.html#tt","text":"Cette rubrique contient les t\u00e2ches qui sont uniquement des tests. La plupart des t\u00e2ches de programmations contiennent d\u00e9j\u00e0 des tests, mais certaines demandent une attention particuli\u00e8re.","title":"TT"},{"location":"index.html#tt1-tests-ocr-2","text":"Cette t\u00e2che est une des t\u00e2ches les plus importantes. Son but est de faire un protocole de tests complet qui permette de comparer les diff\u00e9rents algorithmes de reconnaissance de texte. Je l'ai mise apr\u00e8s la reconnaissance, mais m\u00eame maintenant en \u00e9crivant ces lignes, je me dis que dans le planning effectif, elle sera faite pendant la t\u00e2che de programmation. En effet, comment savoir si mon tout nouvel algorithme est r\u00e9ellement mieux que le pr\u00e9c\u00e9dent. Je pr\u00e9vois deux jours, car je pense que faire le dataset va prendre beaucoup de temps, il faut pr\u00e9voir un certain nombre d'images et de texte qui pourront ensuite \u00eatre donn\u00e9es sous forme de tests. C'est certes une t\u00e2che de test, mais c'est aussi de la programmation.","title":"TT1 Tests OCR (2)"},{"location":"index.html#tt2-tests-finaux-2","text":"Cette t\u00e2che de tests est un peu vague, elle regroupe les diff\u00e9rents tests pour v\u00e9rifier que les donn\u00e9es sont bien affich\u00e9es correctement. Ce qui serait cool si j'ai du temps en fin de travail de dipl\u00f4me serait de faire un syst\u00e8me de test qui permet d'entrainer le programme \u00e0 mieux reconnaitre certaines choses comme des arr\u00eats aux stands si on lui donne les trois derni\u00e8res ann\u00e9es de grands Prix. J'ai mis une dur\u00e9e arbitraire de deux jours, mais je ne sais pas vraiment combien de temps cela va vraiment durer. Elle est \u00e9videmment \u00e0 effectuer une fois que tout est \u00e0 peu pr\u00e8s termin\u00e9.","title":"TT2 Tests finaux (2)"},{"location":"index.html#planning-effectif-et-differences","text":"Alors ! Ces lignes sont \u00e9crites dans les derniers jours du travail de dipl\u00f4me et j'ai des choses \u00e0 dire. Premi\u00e8rement je suis plut\u00f4t content de mon estimation du travail. Je trouve que j'ai bien estim\u00e9 la quantit\u00e9 de travail et combien de temps les diff\u00e9rentes t\u00e2ches allaient prendre. La plupart des d\u00e9passements sont des impr\u00e9vus et/ou des allers et retours entre d'autres t\u00e2ches. La raison pour laquelle je suis plut\u00f4t content de ma planification, c'est que malgr\u00e9 l'usine \u00e0 Gaz que repr\u00e9sente ce projet et le nombre de soucis que j'ai eu, j'ai quand m\u00eame pu arriver \u00e0 un projet qui fonctionne en suivant plut\u00f4t fid\u00e8lement le planning. Une chose dont je suis plut\u00f4t fier c'est la documentation. En ayant d\u00e9velopp\u00e9 le squelette de l'app d\u00e8s le d\u00e9but du projet ca m'a permis d'avancer au fur et \u00e0 mesure du projet la conscience tranquille. Bon c'est bien joli les fleurs mais clairement c'est loin d'\u00eatre parfait. Au moment de la planification je n'avais pas pr\u00e9vu de faire des allers et retours entre plusieurs t\u00e2ches. Dans le planning effectif on peut voir que un jour je suis sur la PT3 (Stockage) et la PT5 (regroupement des mini projets en un seul gros). J'aurais peut-\u00eatre du inverser l'ordre. Mais il y a deux gros soucis dans mon planning : L'ordre des t\u00e2ches n'\u00e9tait pas bon (mais il a \u00e9t\u00e9 d\u00e9cid\u00e9 comme ca pour que les plus grosse difficult\u00e9es soient faites en premier) ce qui a cr\u00e9\u00e9 pas mal de soucis. Ex : L'\u00e9mulateur de la F1TV a \u00e9t\u00e9 fait tr\u00e8s tard et au final les images r\u00e9cup\u00e8r\u00e9es n'\u00e9taient pas de la m\u00eame qualit\u00e9 que ce que j'avais pr\u00e9vu en d\u00e9veloppant l'OCR en premier. Les Tests ont \u00e9t\u00e9 n\u00e9glig\u00e9s et utilis\u00e9s comme des jours tampons. Ca c'est la plus grosse erreur de planning. Autant les autres sont p\u00e9nibles etc... mais n'ont pas forc\u00e9ment compromis la bonne r\u00e9alisation du projet alors que la les tests ont \u00e9t\u00e9 mal plac\u00e9s et ont au final \u00e9t\u00e9 balay\u00e9s alors que si ils avaient \u00e9t\u00e9 mieux planifi\u00e9s ca ne serait pas arriv\u00e9. Solutions : L'ordre des t\u00e2ches a \u00e9t\u00e9 d\u00e9cid\u00e9 expr\u00e8s de cette facon pour \u00e9viter de prendre trop de risques. L'id\u00e9e \u00e9tait qu'en faisant le plus dur au d\u00e9but, je pourrai facilement changer le cahier des charges. J'ai envie de dire que j'aurais d\u00fb \u00eatre plus confiant mais pour \u00eatre honn\u00eate je pense que c'\u00e9tait un mal pour un bien. Je ne pense pas avoir \"bien\" fait mais je pense que c'est une erreur qui \u00e9tait rentable pour mon niveau de stress dans le projet. Par contre les Tests c'est tout simplement une erreur. J'en parle plus en d\u00e9tail dans la partie test de la documentation mais je vais r\u00e9sumer un peu ici. La documentation a \u00e9t\u00e9 faite d\u00e8s le d\u00e9but du projet. J'ai mis en place le squelette pour qu'ensuite il soit simple d'y ajouter au fur et \u00e0 mesure. J'aurais dur faire exactement pareil avec les tests. Si j'avais fait au moins le squelette des tests au d\u00e9but du projet j'aurais pu beaucoup plus facilement en faire et cela m'aurait fait gagner un temps fou et j'aurais m\u00eame pu faire du TDD (Test Driven Developpement). Je suis persuad\u00e9 que cette b\u00eate erreur de planification m'a c\u00f4ut\u00e9 tr\u00e8s ch\u00e8re car ne pas avoir une bonne strat\u00e9gie de tests a du me faire perdre un temps fou. Pour conclure je suis content car j'ai r\u00e9ussi \u00e0 rendre un projet qui marche en suivant assez bien le planning mais il y a des choses que je vais devoir changer dans mes prochains projets.","title":"Planning effectif et diff\u00e9rences"},{"location":"index.html#analyse-fonctionnelle","text":"Voir \"Manuel Utilisateur\" tout y est indiqu\u00e9","title":"Analyse fonctionnelle"},{"location":"index.html#analyse-organique","text":"","title":"Analyse Organique"},{"location":"index.html#outils-utilises","text":"","title":"Outils utilis\u00e9s"},{"location":"index.html#visual-studio-2022","text":"\"Logo de Visual Studio 2022\" C'est l'application que j'ai le plus utilis\u00e9 je pense. Visual Studio 2022 est l'IDE officiel de Microsoft pour coder en C#. C'est l'outil que j'utilise depuis maintenant 6 ans au CFPT et franchement il fait tout ce que je pourrais vouloir. C'est aussi un outil pratique pour utiliser Windows Forms et faire des applications natives Windows. Pas grand chose \u00e0 dire \u00e0 ce sujet \u00e0 part que c'est un outil qui marche bien et qui est gratuit si on prend la community edition.","title":"Visual Studio 2022"},{"location":"index.html#visual-studio-code","text":"\"Logo de Visual Studio Code\" Cet outil est d\u00e9ja un peu plus int\u00e9ressant. C'est le second outil que j'ai le plus utilis\u00e9. J'en ai surtout eu besoin pour \u00e9crire de la doc, mais aussi pour coder en python et pour contr\u00f4ler mkdocs. Visual Studio est un IDE absolument g\u00e9nial qui est tr\u00e8s puissant avec les bonnes extensions. Je l'utilise au quotidien pour tout ce qui est d\u00e9veloppement WEB, Mobile ou pour \u00e9diter des fichiers de configs pour mes drones ou imprimantes 3D. Je peux m\u00eame compiler le firmware pour ces derni\u00e8res en utilisant une extension faite pour. Les possibilit\u00e9s de customisation sont presques infinies et c'est un plaisir d'utiliser ce logiciel gratuit fournis par Microsoft mais qui est am\u00e9lior\u00e9 constamment par des d\u00e9veloppeurs ind\u00e9pendants. Je conseille \u00e0 nimporte quel d\u00e9veloppeur de l'essayer \u00e0 moins qu'il soit uniquement sur C# ou il serait plus int\u00e9ressant d'utiliser visual studio 2022","title":"Visual Studio Code"},{"location":"index.html#materialmkdocsmarkdown","text":"\"Logo de Mkdocs Materials\" Pendant ce projet j'ai utilis\u00e9 exclusivement du markdown avec l'aide de Mkdocs et Materials. Le choix de Markdown a \u00e9t\u00e9 plut\u00f4t simple, c'est une facon facile et efficace de cr\u00e9er de la documentation et on n'avait pas le choix de l'utiliser. On avait \u00e9galement l'obligation (Ou au moins un tr\u00e8s forte incitation) par nos professeurs d'utiliser mkdocs et materials pour que notre documentation ne soit pas simplement une liste de fichiers mais un joli site dans lequel il est agr\u00e9able de chercher des informations. Mkdocs et Materials sont deux outils vraiment fantastiques mais je dois avouer que je n'ai pas assez mis de temps pour apprendre tout leur potentiel. Pour moi ce sont simplement des outils et je veux qu'ils marchent. Je ne suis pas forc\u00e9ment du genre \u00e0 aller changer toutes les couleurs et polices pour avoir la doc parfaite, j'ai pr\u00e9f\u00e9r\u00e9 passer du temps sur mon app. Mais m\u00eame si ces outils offrent une customisation tr\u00e8s avanc\u00e9e, il est tr\u00e8s facile de cr\u00e9er un projet simple et j'aime beaucoup cette simplicit\u00e9. J'ai eu pas mal d'aide de la part de M.Briard pour impl\u00e9menter certaines features et je l'en remercie tr\u00e8s chaudement car sans son aide ce document serait s\u00fbrement un peu moins facile \u00e0 lire (Oui oui ca aurait pu \u00eatre pire, je sais c'est dur \u00e0 imaginer)","title":"Material/Mkdocs/Markdown"},{"location":"index.html#figma","text":"\"Logo de Figma\" Figma est l'outil que j'ai utilis\u00e9 pour cr\u00e9er mon poster et un certain nombre des diagrammes de cette documentation. J'utilise aussi cet outil d\u00e8s que je vais faire des maquettes de sites ou d'applications. D'ailleurs les maquettes dans le cahier des charges ont \u00e9t\u00e9 faites avec. C'est un outil en ligne parfaitement gratuit qui conserve tout dans le cloud. Franchement je n'ai rien \u00e0 dire, je n'ai pas utilis\u00e9 plus de 15% des features que cet outil propose et je suis d\u00e9ja conquis.","title":"Figma"},{"location":"index.html#technologies-utilisees","text":"Dans ce projet diff\u00e9rents choix ont \u00e9t\u00e9 faits pour ce qui est des technologies. Certaines ont \u00e9t\u00e9 choisies car elles \u00e9taient les plus simples, les plus pratiques, les plus efficaces ou encore les plus connues et donc ayant le meilleur support. Je vais tenter de r\u00e9sumer ici ces choix mais je reviendrai sur la plupart d'entre eux plus tard quand j'explique ce que je fais avec.","title":"Technologies utilis\u00e9es"},{"location":"index.html#selenium","text":"\"Logo de selenium\" Selenium est une librairie \u00e0 la base Node JS qui permet d'automatiser des actions sur un navigateur internet. Le but premier et je pense son utilisation premi\u00e8re est l'automatisation de tests pour des applications WEB. En effet c'est un super outil pour simuler un user faisant un certain nombre d'actions sans apporter de variabilit\u00e9 ce qui fait de supers test unitaires. Cependant je pense que l'autre grande partie des utilisateurs de Selenium l'utilisent pour faire du \"Scrapping\". Et nous sommes un peu dans cette seconde cat\u00e9gorie. Le \"Scrapping\" c'est l'acte d'aller r\u00e9cup\u00e8rer des informations sur des pages web automatiquement pour alimenter sa propre base de donn\u00e9es. En effet, si on arrive \u00e0 passer les protections anti-bot on peut facilemnt utiliser Selenium pour scraper tous les sites qui nous passent par la t\u00eate. Le cahier des charges que j'avais en t\u00eate en cherchant une technologie de contr\u00f4le de navigateur internet \u00e9tait le suivant : Simple Permettant de contr\u00f4ler un navigateur Headless (Voir chapitre \"Simuler un navigateur ?\") Permettant de contr\u00f4ler firefox Ayant un wrapper C# Permettre de changer certaines choses comme les cookies en Live Permettre d'interagir avec les \u00e9l\u00e9ments d'une page Fonctionner Simple car je ne voulais pas avoir \u00e0 passer trop de temps dessus (ca n'a pas bien vieillit lol...). Je voulais que l'on puisse utiliser Firefox car il n'impl\u00e9mente pas les m\u00eames s\u00e9curit\u00e9es que Chrome pour faire simple. J'avais besoin que la lib puisse contr\u00f4ler un Firefox HEADLESS car je ne voulais pas avoir une page web ouvert sur mon ordi quand je commente car c'est de l'espace utilis\u00e9 pour rien. J'avais besoin d'un wrapper C# car c'est le language que j'utilise. Pour finir j'avais besoin d'interragir avec les \u00e9l\u00e9ments de la page pour naviguer dessus et d'ins\u00e8rer des cookies pour me connecter sans avoir \u00e0 passer par le login de la F1TV qui est tr\u00e8s bon pour detecter les bots. Avec un cahier des charges parreil beaucoup de librairies ont \u00e9t\u00e9 abandonn\u00e9es. J'ai pu tester pleins de librairies C# qui arrivaient \u00e0 contr\u00f4ler un Chrome et m\u00eame pas mal qui arrivaient \u00e0 contr\u00f4ler un Chrome Headless. Mais le choix est tr\u00e8s vite restreind quand on veut pouvoir contr\u00f4ler Chrome OU Firefox. A la base mon choix c'\u00e9tait port\u00e9 sur Puppeteer Sharp qui est une librairie qui se veut \u00eatre exactement ce que je veux. \"Logo de Pupeteer\" Je voulais utiliser cette librairie car il y a des plugins qui sont tr\u00e8s orient\u00e9s scrapping, en effet, ils impl\u00e9mentent de nombreuses techniques pour permettre de mieux passer innapercu par les syst\u00e8mes de detection de bots. Sur le papier c'est la librairie parfaite qui correspond parfaitement au cahier des charges que je m'\u00e9tais fix\u00e9 et je pense que si j'utilisais un projet JS elle le serait. Sauf que avec le wrapper C# j'ai eu un certain nombre de probl\u00e8mes: Toutes les versions de la librairie ne fonctionnaient pas. Il fallait faire des tests avec diff\u00e9rentes versions de la librairie et de ses d\u00e9pendences simplement pour faire d\u00e9marrer un browser. Et ca c'est quand ca marchait car il y avait des jours ou des machines ou je n'ai simplement pas pu faire fonctionner la librairie. M\u00eame avec les techniques propos\u00e9es par les plugins \"Stealth\" je n'arrivais pas \u00e0 bypass les s\u00e9curit\u00e9es de la page de login de la F1TV. J'ai essay\u00e9 tout ce que j'ai pu trouver sur internet mais on se fait toujours chopper d\u00e8s que l'on arrive sur la page. Et le pire de tout, impossible de faire fonctionner un vid\u00e9o. J'ai pu faire tout ce que je voulais faire au final en passant par l'utillisation de cookies pour la connexion. Tout ca pour arriver au moment ou il faut lancer la vid\u00e9o, et la, crash. Impossible de faire fonctionner Puppeteer Sharp avec une vid\u00e9o. D\u00e8s qu'elle se lance c'est un crash assur\u00e9 sans message d'erreur clair. Et le soucis c'est que le wrapper C# n'est pas vraiment bien support\u00e9 et que si c'est un bug de la lib je ne risque pas de voir de fix avant un moment si ce n'est jamais. Pour toutes ces raisons, j'ai du abandonner cette librairie ce qui a \u00e9t\u00e9 tr\u00e8s dur car j'avais pass\u00e9 beaucoup de temps dessus \u00e0 essayer de la faire marcher. Ensuite le choix de Selenium \u00e9tait plut\u00f4t simple, c'\u00e9tait la seule option restante. A ce jour je ne connait aucune autre librairie que Puppeteer ou Selenium qui puisse contr\u00f4ler un Firefox Headless en respectant mon cahier des charges et qui soit donc disponible depuis C#. Si je n'arrivais pas \u00e0 faire fonctionner Selenium j'aurai du abandonner l'id\u00e9e de simuler un navigateur tout simplement. Mais j'ai eu la chance que cette librairie fasse tout ce que je pouvais demander. C'est une super lib et m\u00eame si la version C# n'est vraiment pas bien document\u00e9e, la plupart des documentations de la version JS sont pertinentes pour al version C# m\u00eame si ca n'est pas la m\u00eame syntaxe. Pour r\u00e9sumer, j'ai choisis Puppeteer car c'\u00e9tait la seule option viable pour mon besoin. (Note : Par contre si je trouve la personne chez mozilla ou puppeteer qui a d\u00e9cid\u00e9 d'hardcoder la r\u00e9solution maximale du browser Headless que l'on peut override UNIQUEMENT en changeant les variables d'environnement de la machine ET DE NE LE DOCUMENTER QUASI NULLE PART JE JURE QUE CA VA TRES MAL SE PASSER)","title":"Selenium"},{"location":"index.html#csharp","text":"\"Logo C#\" Je pense que c'est le choix le plus simple \u00e0 expliquer. C# est un language de programmation orient\u00e9 objet relativement haut niveau qui a \u00e9t\u00e9 cr\u00e9\u00e9 par Microsoft et qui a comme cible le developpement d'applications pour Windows. (On peut evidemment trouver des adaptations pour le faire tourner sur Linux mais ce n'est pas vraiment le but du language) En plus d'\u00eatre un superbe language de programmation, c'est le language que l'on apprend au CFPT informatique. C'est donc un language avec lequel je suis beaucoup plus \u00e0 l'aise que pour d'autres languages comme le Python ou le JS. Mon but n'\u00e9tait pas de faire une application Web et je travaille sous Windows. Je savais que mon projet allait demander un minimum de programmation orient\u00e9e objet. J'ai donc imm\u00e9diattement pens\u00e9 \u00e0 utliser C#. Cependant j'aurais tr\u00e8s bien pu utiliser un language comme python qui m'aurait clairement facilit\u00e9 la t\u00e2che avec des librairies bien plus fournies et plus souvent mises \u00e0 jour. Mais comme je ne suis pas du tout aussi \u00e0 l'aise avec je pense que le C# \u00e9tait la meilleure option. Mes seuls regrets apr\u00e8s coup sont que je trouve les Windows Forms tr\u00e8s moches et qu'il est particuli\u00e8rement difficile de les rendres plus jolies et que les librairies disponibles en C# pour des sc\u00e9narios tr\u00e8s pr\u00e9cis ne sont pas au niveau de celles pour JS et pour Python. Cependant si j'avais \u00e0 refaire le projet je reprendrais C# je pense.","title":"CSharp"},{"location":"index.html#python","text":"\"Logo Python\" Alors ce choix la est plus commpliqu\u00e9 \u00e0 comprendre. Pour tout le projet j'ai tent\u00e9 de garder le C# comme language et de ne pas utiliser autre chose. Cependant j'ai du utiliser une seule fois le Python dans un cas tr\u00e8s pr\u00e9cis. Je n'aime vraiment pas coder en python de base et clairement j'aurais pr\u00e9f\u00e8r\u00e9 ne pas l'utiliser mais je n'avais pas le choix. Le besoin dans le cas du python \u00e9tait le suivant : J'avais besoin d'un moyen de r\u00e9cup\u00e8rer des strings et les d\u00e9coder avec une cl\u00e9 encod\u00e9e avec le syst\u00e8me propri\u00e9taire de windows d'encodage. Le soucis que j'avais avec le C# c'est que les methodes de decryption ne fonctionnent pas pareil que en python et tous les exemples que je pouvais trouver \u00e9taient en python. J'ai essay\u00e9 pendant un sacr\u00e9 moment de faire fonctionner la decryption en C# mais sans succ\u00e8s. J'ai donc directement utilis\u00e9 le python comme faisait toutes les personnes que je pouvais voir sur internet et je pense que ca n'est pas une mauvaise id\u00e9e. En effet, cela veut dire que si \u00e0 un moment Chrome est mis \u00e0 jour, je n'aurai pas besoin d'aller ouvrir tout le code source de mon projet pour tout recompiler, j'aurai simplement besoin de changer ce script. Un des avantages du Python est quand m\u00eame qu'il y beaucoup plus de gens qui codent dessus, et pour ce genre d'utilisation tr\u00e8s sp\u00e9cifiques c'est plut\u00f4t pratique. Le seul probl\u00e8me c'est que cela oblige l'utilisateur \u00e0 avoir python install\u00e9 sur sa machine et que sa version doit \u00eatre compatible... (les joies de python)","title":"Python?"},{"location":"index.html#firefox","text":"\"Logo Firefox Headless\" J'en parle deja plus bas, mais le choix de navigateur est super important. Deja tous les navigateurs n'ont pas un mode Headless(sans t\u00eate, mieux expliqu\u00e9 dans la rubrique \"Simuler un naviguateur ?\"). Par exemple, m\u00eame si Edge est maintenant bas\u00e9 sur chromium, il n'existe pas de moyen de le faire tourner en Headless pour le moment. Autre soucis, les librairies d'automatisation ne supportent pas tous les navigateurs. Par exemple, beaucoup supportent chrome mais tr\u00e8s peu supportent Firefox ou Edge. Donc il me fallait un navigateur qui puisse op\u00e8rer en Headless et qui soit support\u00e9 par plusieurs librairies d'automatisation. Il n'y a que Firefox et Chrome qui sont conforme \u00e0 ces exigeances (Je n'ai pas verifi\u00e9 pour TOUS les navigateurs. Peut-\u00eatre que les Opera GX ont aussi un mode headless super, mais je me suis concentr\u00e9 sur les navigateurs plus grand public). Chrome est support\u00e9 par plus de lib, mais le soucis c'est que la F1TV utilise un lecteur de vid\u00e9o avec DRM (Plus d'infos la dessus dans la partie \"Simuler un navigateur?\") et donc le choix \u00e9tait simple. Il ne restait que Firefox.","title":"Firefox"},{"location":"index.html#tesseract","text":"Je pense que le choix le plus simple apr\u00e8s le C# fut l'utilisation de Tesseract. C'est tout simplement l'outil le plus utilis\u00e9 pour faire de l'OCR. A la base c'est une lib Python (Ah tiens encore ?) qui peut \u00eatre redoutablement efficace avec le bon dataset. Il existe d'autres outils mais j'ai d\u00e9cid\u00e9 de prendre celui la \u00e0 cause de son support juste incroyable et de son omnipr\u00e9sence dans la documentation OCR. En plus il est facile \u00e0 utiliser et je ne pense pas encore avoir fait le tour de tout son potentiel dans ce projet.","title":"Tesseract"},{"location":"index.html#fonctionnement-general","text":"Avant de passer \u00e0 l'explication de chaques parties du projet en d\u00e9tail, je pense qu'il est important de faire un petit point sur comment toutes les parties du projet s'emboitent et fonctionnement ensemble. Comme ca quand vous lirez l'explication d'une \u00e9tape vous serez conscient de \u00e0 quoi elle sert et ou elle s'\u00eenscrit dans le projet principal.","title":"Fonctionnement g\u00e9n\u00e9ral"},{"location":"index.html#les-briques-principales","text":"Voici trois grosses \u00e9tapes du projet. Pour rappel ce sont des vulgarisations plut\u00f4t larges qui n'ont qu'un seul but, aider \u00e0 la compr\u00e9hension de ce qui vient par la suite.","title":"Les briques principales"},{"location":"index.html#recuperation-dimages","text":"\"Diagramme simplifi\u00e9 repr\u00e9sentant le processus de r\u00e9cup\u00e8ration des images\" Pour faire simple on peut voir qu'il y a deux parties \u00e0 cette \u00e9tape. La premi\u00e8re en partant du haut repr\u00e9sente un script python qui va chercher des informations dans la base de donn\u00e9es de Chrome qui est en SQLITE. Ces informations dans notre cas sont les cookies de connexion. Dans la seconde \u00e9tape, on peut voir que le programme utilise Selenium avec un navigateur Firefox Headless qui va aller communiquer avec la F1TV qui est le site web qui nous int\u00e9resse et que une des infos que l'on r\u00e9cup\u00e8re est une image de la page en format PNG que l'on envoie au programme C#. Ces deux partie sont li\u00e9es car pour se connecter \u00e0 la F1TV Selenium a besoin des cookies de connexion r\u00e9cup\u00e8r\u00e9s par le programme Python. La premi\u00e8re partie est un processus qui n'est utilis\u00e9 qu'une seule fois au d\u00e9marrage tandis que la r\u00e9cup\u00e9ration d'images et en continu pendant toute la dur\u00e9e de l'utilisation de l'application.","title":"Recup\u00e9ration d'images"},{"location":"index.html#ocr","text":"\"Diagramme simplifi\u00e9 repr\u00e9sentant le processur d'OCR\" ; On peut voir dans ce diagramme simplifi\u00e9 qu'avec l'aide de ce que contient le fichier \"Config.JSON\" on d\u00e9coupe l'image que l'on a r\u00e9cup\u00e8r\u00e9 au pr\u00e9alable en petits morceaux qui continennent des informations. Ensuite on prend cette image et on lui applique un filtre pour retirer le flou la couleur etc... Puis en utilisant de l'OCR (Optical Character Recognition) on en r\u00e9cup\u00e8re les informations sous forme de texte et on le renvoie dans le programme C# Dans cette partie explicative g\u00e9n\u00e9rale, on ne reviendra pas sur la cr\u00e9ation de ce fichier config. Pour plus d'infos \u00e0 son sujet voir la rubrique (OCR/Fonctionnement g\u00e9n\u00e9ral)","title":"OCR"},{"location":"index.html#traitement-et-affichage","text":"\"Diagramme simplifi\u00e9 repr\u00e9sentant le processus de traitement et d'affichage\" On peut voir dans ce dernier mini diagramme simplifi\u00e9 que on prend les donn\u00e9es que l'on r\u00e9cup\u00e8r\u00e9 de l'\u00e9tape pr\u00e9c\u00e9dente qui ne sont pas forc\u00e9ment toutes coh\u00e9rentes et qu'on les traite pour leur redonner du sens avant de les stocker dans une base de donn\u00e9es SQLITE. Ensuite cette m\u00eame base de donn\u00e9e fournis les infos nescessaires pour des affichages (Ces affichages sont directements r\u00e9cup\u00e8r\u00e9s depuis le projet en cours de fonctionnement)","title":"Traitement et affichage"},{"location":"index.html#resume-du-fonctionnement-general","text":"\"Diagramme simplif\u00e9 repr\u00e9sentant le processus g\u00e9n\u00e9ral du projet\" Ce dernier diagramme est un sch\u00e9ma fait pour repr\u00e9senter de la mani\u00e8re la plus simple possible toutes les briques du projet et comment elles s'imbriquent ensemble. La repr\u00e9sentation est un peu diff\u00e9rentes des 3 autre diagramme car le but ici est surtout de montrer le chemin que fait la donn\u00e9e \u00e0 travers les couches Toutes les parties du projet ne sont pas incluses, notamment la partie calibration dans un objectif de simplifier la lecture. Dans l'ordre, on peut voir que pour la partie r\u00e9cup\u00e8ration d'images, le python va r\u00e9cup\u00e8rer les cookies dans la base de donn\u00e9es chrome pour ensuite les retourner \u00e0 Selenium. Selenium va ensuite pouvoir lancer un navigateur (en l'occurence Firefox) et utiliser les cookies r\u00e9cup\u00e8r\u00e9s pour aller sur la page de la F1TV qui va retourner un certain nombre d'infos \u00e0 Selenium. L'info qui nous int\u00e9resse le plus depuis Selenium c'est les images de la page data de la F1Tv et c'est elles que l'on va envoyer dans la partie LOAD du diagramme. Dans cette partie on prend l'image de la F1TV et on la decoupe selon les directives donn\u00e9es par le fichier Config.JSON (il renseigne les zones \u00e0 d\u00e9couper et ce qu'elles repr\u00e9sentent) et apr\u00e8s le d\u00e9coupage on se retrouve avec une zone principale, vingt zones de pilotes et 9 fen\u00eatres de donn\u00e9es par zone de pilote donc 180 fen\u00eatres en tout. Ces fen\u00eatres sont ensuite envoy\u00e9es pour \u00eatre filtr\u00e9es (retirer le flou, mettre en \u00e9vidence les caract\u00e8res, en gros les pr\u00e9parer pour la reconnaissance) dans la partie OCR Dans cette partie, apr\u00e8s avoir filtr\u00e9 les images, on les envoie \u00e0 Tesseract pour qu'il nous retourne des r\u00e9sultats d'OCR. Ces r\u00e9sultats sont ce que Tesseract a trouv\u00e9 sur les image et ils sont retourn\u00e9s sous al forme de Data Pilote. Ex (Position: 1,Tour : 45, Temps au tour : 1:34.683, Pneus: Medium etc....) Finalement ces donn\u00e9es ont envoy\u00e9es dans la partie traitement qui va faire des v\u00e9rifications d'usage pour s'assurer qu'elles sont correctes et quand c'est fait, tout est envoy\u00e9 dans une base de donn\u00e9es SQLITE. On ne montre pas non plus dans ce diagramme la parte affichage des donn\u00e9es car je ne trouve pas pertinent de l'inclure ici. Et voila c'est le fonctionnement tr\u00e8s g\u00e9n\u00e9ral et simplifi\u00e9 de l'application. Je vous invite \u00e0 continuer \u00e0 lire cette documentation pour des informations plus pr\u00e9cises \u00e0 propos de toutes ces \u00e9tapes. Bonne lecture !","title":"R\u00e9sum\u00e9 du fonctionnement g\u00e9n\u00e9ral"},{"location":"index.html#recuperation-des-images","text":"Voici la premi\u00e8re grande \u00e9tape du projet. Pour rappel, Amazon h\u00e9berge directement le site de la F1TV et poss\u00e8de les droits sur les donn\u00e9es de la F1. C'est sous le nom de AWS (le service d'h\u00e9bergement d'Amazon) que la firme apparait en tant que sponsor. On peut voir ce nom appara\u00eetre assez souvent quand on regarde un Grand Prix car comme ils ont la main-mise sur les donn\u00e9es ils peuvent ins\u00e8rer des bandeaux d'informations sur le flux public sur ce qu'il se passe voir m\u00eame faire des pr\u00e9dictions (Bien qu'un peu bancales) \"Exemple insertion AWS en GP\" Ce service s'appelle F1 Insights (Oui c'est un meilleur nom de projet que F1 Companion mais bon) et c'est, je pense, la raison pour laquelle on ne voit aucune API publique qui permette de correctement se renseigner en don\u00e9es en direct pendant un Grand Prix. Ils ont du d\u00e9gotter un juteux contrat pour s'occuper de toute l'infrastructure digitale de la F1 (du moins publique) en \u00e9change d'une exclusivit\u00e9 totale sur certaines choses comme les Data \"Exemple data d'AWS\" Evidemment je ne fais que conjecturer et ce que j'ai dit n'est pas \u00e0 prendre au pied de la lettre mais c'est une explication possible je pense de pourquoi il est si difficile de trouver des donn\u00e9es sur la F1 facilement en temps r\u00e9el. Il existe bien quelques API un peu bancales publiques, mais le probl\u00e8me c'est qu'elles ne sont vraiment pas suffisante et je ne peux pas leur faire confiance quand je commente. Ce qu'il m'aurait fallut c'est une API publique et officielle qui me permette d'\u00eatre sur que les donn\u00e9es sont les bonnes et qu'elles arrivent le plus vite possible. On pourrait croire que c'est impossible car cela n'existe pas comme je l'ai dit MAIS ! Ce n'est pas compl\u00eatement vrai. En effet depuis que je poss\u00e8de un abonnement \u00e0 la F1TV, il existe une source d'informations tr\u00e8s pr\u00e9cieuse qui m'aide \u00e9norm\u00e9ment dans mon quotidien de commentateur de Formule 1. La \"DATA CHANNEL\". La Data Channel est une page de la F1TV qui permet, pour chaque Grand Prix, de visualiser, sous la forme d'un flux vid\u00e9o, diff\u00e9rentes informations capitales sur la course. \"Exemple de Data Channel\" Le probl\u00e8me, c'est que comme je viens de le dire, ces donn\u00e9es ne sont pas accessibles comme un tableau HTML ou un flux RSS ou un tableau JSON. C'est un flux vid\u00e9o. Il faut savoir qu'entretenir une diffusion de flux vid\u00e9o en 1080P pendant deux heures accessible par des milliers d'abonn\u00e9s est EXTR\u00caMENT cher surtout quand on le compare \u00e0 simplement afficher les donn\u00e9es dans un tableau. Ce qui veut dire que ce choix est d\u00e9lib\u00e9r\u00e9 et a un sens au niveau \u00e9conomique. Je pense donc que c'est justement pour \u00e9viter que des petits malins puissent simplement venir scraper l'int\u00e9gralit\u00e9 des donn\u00e9es qu'ils proposent et fasse sa propre API. (C'est d'ailleurs un des sites avec la meilleure protection anti bot du monde) MAIS ce n'est pas par ce que les donn\u00e9es ne sont pas facile \u00e0 avoir qu'elles sont IMPOSSIBLE \u00e0 avoir. Et c'est la que ce projet entre en jeu. Mais pour d\u00e9coder les donn\u00e9es d'une image il faut dabord ... (roulement de tambours) ... Avoir des images ! Et c'est la que vient se glisser cette partie du projet.","title":"R\u00e9cup\u00e9ration des images"},{"location":"index.html#comment-faire","text":"Le but de ce segment est de se concentrer sur la r\u00e9cup\u00e8ration et la mise \u00e0 disposition pour le reste du programme, des images en direct de la F1TV dans la meilleure qualit\u00e9 possible et dans les meilleurs d\u00e9lais. Pour ce faire il y a plusieurs solutions : Reverse engeneer la F1TV pour acc\u00e8der directement au flux sans passer par la plateforme internet et pouvoir prendres images \u00e0 volont\u00e9. Avoir tout simplement une page de la F1TV ouverte sur un \u00e9cran et prendres des screenshots \u00e0 intervals r\u00e9guliers. Simuler un navigateur internet sans qu'il soit affich\u00e9 et le contr\u00f4ler automatiquement pour qu'il prenne des captures. La premi\u00e8re option aurait \u00e9t\u00e9 la plus \u00e9l\u00e9gante mais lors d'un POC que je tentais de r\u00e9aliser je me suis rendu compte que cela serait un peu trop compliqu\u00e9 et long \u00e0 faire. Sans compter le fait que les rediffusions de Grand Prix ne sont pas g\u00e8r\u00e9es de la m\u00eame mani\u00e8re que les diffusions en live. Et que pour faire des Tests en live il faudrait attendre \u00e0 chaque fois un weekend de Grand Prix et le faire en plus du commentaire que je dois produire. Pour toutes ces raisons et bien d'autres je l'ai rang\u00e9e dans la case \"Trop dur, Trop chiant, S\u00fbrement ill\u00e9gal\" (Oui je sais c'est une cat\u00e9gorie bien sp\u00e9cifique mais c'est ma documentation je fais ce que je veux) La troisi\u00e8me option aurait \u00e9t\u00e9 la plus simple (et moins dr\u00f4le) et je suis presque s\u00fbr que je peux impl\u00e9menter cette derni\u00e8re en moins d'une apr\u00e8s-midi. Sauf qu'elle apporte de gros soucis. On ne peux pas garantir l'int\u00e9grit\u00e9 et la continuit\u00e9 des donn\u00e9es si l'utilisateur avance ou fait pause m\u00eame par simple inadvertance. La moindre fen\u00eatre qui s'afficherait devant ruinerait toute la reconnaissance de caract\u00e8res. On ne peut pas contr\u00f4ler la qualit\u00e9 du flux et on est oblig\u00e9 de faire confiance en l'utilisateur On ne peut pas vraiment automatiser quoi que ce soit niveau tests ou m\u00eame pour faire du scrapping auto pour remplir une base de donn\u00e9e. Et finalement le pire inconv\u00e9nient : C'EST NUL ! Je ne pourrais jamais utiliser un projet qui fonctionne de cette facon, je ne peux pas me permettre d'avoir un \u00e9cran inutilisable quand je commente et auquel je dois constamment faire attention pour ne pas perturber la reconnaissance. Pour moi cette option aurait \u00e9t\u00e9 celle \u00e0 choisir en cas d'extr\u00eame urgence et en dernier recours car le projet deviendrait inutile. J'ai donc d\u00e9cid\u00e9 de m'occuper de la seconde option : Simuler un navigateur. Cette option bien que complexe et difficile \u00e0 impl\u00e9menter propose une solution \u00e0 tous les probl\u00eame et permet une r\u00e9cup\u00e8ration quasi sans compromis.","title":"Comment faire ?"},{"location":"index.html#simuler-un-navigateur","text":"\"Navigateur Headless(sans t\u00eate)\" Simuler un navigateur internet n'est pas forc\u00e9ment tr\u00e8s difficile. Chromium par exemple offre une panoplie d'outils natifs et \u00e9norm\u00e9ment de librairies existent permettant de facilement et en quelques lignes simuler un Google Chrome et le contr\u00f4ler sans afficher son UI (Interface Utilisateur). \"Chromium logo\" {: style=\"height:150px;width:150px\"} Cependant. La F1TV n'utilise pas simplement un player HTML5 basique. Elle utilise un service de streaming BitMovin qui permet de fournir un stream de bonne qualit\u00e9 et surtout qui impl\u00e9mente les DRM (Digital Right Management) Cela veut dire que quand on ouvre un flux de la F1TV sur chrome et que l'on essaie de prendre une capture d'\u00e9cran, le player se met en noir et ne permet pas de voir quoi que ce soit (Certaines version de Chrome le permettent pendant quelques semaines avant de bloquer \u00e0 nouveau). Ce qui dans notre cas est un immense probl\u00e8me. Mais Firefox ne nous bloque pas de cette facon et il est donc assez facile de passer outre. L'explication sans trop rentrer dans les d\u00e9tails est la suivante : Dans chrome, le player par d\u00e9faut utilise une technologie appell\u00e9e \"PCP\" ou \"Protected Content Playback\" qui leur permet de bloquer au moins une partie des techniques de r\u00e9cup\u00e8ration du flux vid\u00e9o et audio. Cependant Firefox de pas sa nature Open Source utilise \"OpenH264\" pour lire ces m\u00eames flux soumis \u00e0 des DRM et OpenH264 n'impl\u00e9mente pas les m\u00eames restrictions. Sauf que Firefox n'est pas aussi facilement \u00e9mul\u00e9 que chrome et cela r\u00e9duit notre choix de librairies \u00e0 ... Une seule... Qui est Selenium. (Il existe aussi Pupetteer C# mais j'ai rencontr\u00e9 \u00e9norm\u00e9ment de soucis avec cette derni\u00e8re d\u00e8s que je voulais lancer une vid\u00e9o) \"Firefox dev logo\" {: style=\"height:150px;width:150px\"} Mais m\u00eame si la documentation est plut\u00f4t maigre parfois, c'est une bonne librairie qui permet de tr\u00e8s bien contr\u00f4ler une instance de chrome ou de Firefox.","title":"Simuler un navigateur ?"},{"location":"index.html#controler-le-navigateur","text":"Maintenant que l'on sait quel navigateur simuler et avec quelle technologie, on peut passer \u00e0 la r\u00e9alisation. Ce qu'il y a de bien avec Selenium, c'est qu'on a un certain nombre de commandes tr\u00e8s haut niveau qui nous permettent de contr\u00f4ler un navigateur de mani\u00e8re plut\u00f4t pr\u00e9cise. Je vais d\u00e9crire ici la proc\u00e9dure habituelle utilis\u00e9e sous une forme de recette de cuisine pour que l'on puisse facilement comprendre ce qu'il se passe. Durant cette explication je vais parler \u00e0 un moment de Cookies, ne vous en faites pas c'est le sous chapitre suivant qui va vous en parler. Recette de cuisine pour r\u00e9cup\u00e8rer des images de la F1TV : D\u00e9marrer une instance de navigateur avec les bons arguments Ajouter les bons param\u00eatres pour ne pas se faire flag comme un bot Naviguer sur la page de la F1TV Ajouter les cookies de connexion pour avoir acc\u00e8s au contenu de la page Naviguer sur la page du Grand Prix demand\u00e9 Attendre un peu que la page se charge Cliquer sur l'invite de cookies Attendre cinq secondes le temps que la page se reload Cliquer sur le bouton qui permet de passer du feed live \u00e0 la DATA CHANNEL Appuyer sur Espace pour faire apparaitre le bouton d'acc\u00e8s au param\u00eatres Cliquer sur le menu d\u00e9roulant des r\u00e9solution Trouver l'option 1080P et la selectionner Cliquer sur le bouton qui met la vid\u00e9o en plein \u00e9cran Prendre de screenshots \u00e0 intervales r\u00e9guliers Pour faire toutes ces actions on doit r\u00e9cup\u00e8rer les \u00e9l\u00e9ments selon leur ID ou leur classe. Voici un exemple qui r\u00e9cup\u00e8re le bouton de plein \u00e9cran et qui clique dessus : IWebElement fullScreenButton = Driver . FindElement ( By . ClassName ( \"bmpui-ui-fullscreentogglebutton\" )); fullScreenButton . Click (); Ca peut para\u00eetre plut\u00f4t simple dit comme ca et quand tout fonctionne ca l'est mais la difficult\u00e9 vient du fait que \u00e0 peu pr\u00e8s nimporte laquelle de ces \u00e9tapes peut rater et qu'il faut donc faire un bon syst\u00e8me de gestion d'erreurs qui puisse aider l'utilisateur en cas de probl\u00e8me. Parfois il est aussi difficile de trouver un \u00e9l\u00e9ment selon son ID,sa classe, ou sa value. Par exemple l'option qui permet de passer en 1080P peut avoir comme value 1080_9011456 ou 1080_9011200 si on refresh la page. Cela demande de passer par des expression r\u00e9guli\u00e8res ce qui n'est pas compliqu\u00e9 en soi mais c'est toutes ces petites choses qui rendent le processus long \u00e0 mettre en place. Il faut dire aussi que les sites ne sont pas forc\u00e9ment tr\u00e8s content de voir des bots passer car cela peut \u00eatre un risque de DDOS et de Scraping (Comme moi) et donc ils mettent en place des syst\u00e8mes pour nous emp\u00eacher de faire ce que l'on veut On peut utiliser diff\u00e9rntes techniques pour passer outre ces restrictions comme : Changer son UserAgent Changer sa r\u00e9solution Ne pas avoir des patterns trop pr\u00e9visibles Avoir un historique Ne pas cliquer pile sur le milieu des boutons Ne pas cliquer trop vite Passer par un proxy pour ne pas se faire flag Utiliser des librairies plus discr\u00e8tes J'ai eu l'occasion de tester toutes ces methodes pour tenter de passer derri\u00e8re les radars de la F1TV et visiblement j'ai r\u00e9ussi pour les pages principales mais pas pour les pages de Login. Il faut savoir que la bataille entre bots et propri\u00e9taires de sites est un grand jeu du chat et de la souris et que les plateformes innovent constamment leur s\u00e9curit\u00e9. Et il se trouve que la partie login de la F1TV est heberg\u00e9e autre part que le reste du site chez Amazon et que elle poss\u00e8de les meilleures s\u00e9curit\u00e9s que j'aie pu voir. Aucunes des methodes que j'ai cit\u00e9es et d'autres encore que j'ai essay\u00e9 n'ont r\u00e9ussi \u00e0 fourvoyer le syst\u00e8me. J'ai donc \u00e9t\u00e9 oblig\u00e9 de faire appel \u00e0 la connexion par Cookies pour pouvoir acc\u00e8der au reste du site internet.","title":"Contr\u00f4ler le navigateur"},{"location":"index.html#recuperer-les-cookies","text":"Alors, on va mettre de c\u00f4t\u00e9 toutes les questions de s\u00e9curit\u00e9 et de violation de la vie priv\u00e9e et de protection des donn\u00e9es des utilisateurs pour ce chapitre. Car pour faire simple, je siphonne TOUS les cookies de la persone qui utilise mon app. Alors \u00e9videmment ca n'est pas pour faire des b\u00e9tises avec et c'est pour une \"bonne\" raison, mais bon quand m\u00eame ca peut faire bizarre comme ca. Je pense que vous savez d\u00e9ja ce qu'est un Cookie, mais je vais quand m\u00eame faire un petit point la dessus car c'est important pour la suite. Quand on va sur un site internet et que l'on se connecte avec nos identifiants nous sommes connect\u00e9s sur la session. Cependant, si on quitte le site ou que l'on ferme le navigateur, le site ne peut pas garder en m\u00e9moire que c'est bien vous quand le lendemain vous retournez dessus. Pour palier \u00e0 cette limitation on a invent\u00e9 cette chose magnifique (hem...) que sont les cookies ! Les cookies sont des petits fichiers qui sont stock\u00e9s dans votre navigateur et qui peuvent servir \u00e0 beaucoup de choses comme traquer votre activit\u00e9 sur internet et espionner un peu ou aussi par exemple, servir de jeton de connexion. L'id\u00e9e est que quand vous vous connectez sur le site avec vos identifiants, le site envoie un petit fichier dans votre navigateur qui va servir de jeton. Et donc quand vous reviendrez, le site pourra voir que vous avez le jeton et vous connectera automatiquement. Ca peut para\u00eetre g\u00e9nial, et c'est effectivement bien pratique, cependant ce n'est pas sans risques. En effet, imaginons qu'un acteur malveillant parvienne \u00e0 s'emparer de ces petits fichiers, il pourrait ainsi facilement se faire passer pour vous. Alors un cookie expire \u00e0 un moment donn\u00e9 pour temperer les risques, mais ils sont toujours pr\u00e9sents. Dans notre cas on peut vite comprendre pourquoi cela peut \u00eatre int\u00e9ressant de r\u00e9cup\u00e8rer ces cookies. En effet, si on peut mettre la main sur le jeton de connexion de l'utilisateur de notre application. On pourra se connecter automatiquement \u00e0 la F1TV et aller prendre des photos directement sans que l'utilisateur aie \u00e0 faire quoi que ce soit. Sauf que les cookies ne sont pas stock\u00e9s en clair comme ca. Evidemment Google Chrome a mis en place quelques techniques pour \u00e9viter que nimporte qui puisse s'amuser \u00e0 aller taper dans les cookies de la machine. Tous les cookies sont stock\u00e9s dans une base de donn\u00e9es sqlite avec les noms en clair et les valeurs sont encrypt\u00e9es en utilisant la methode AES 256 qui est une methode de cryptage tr\u00e8s utilis\u00e9e et efficace. Tellement efficace qu'il serait compl\u00eatement inutile de tenter de les decrypter en utilisant de la force brute pour trouver la valeur ou m\u00eame une attaque de dictionnaire ou quoi que ce soit. Si ces valeurs peuvent \u00eatre encod\u00e9es et d\u00e9cod\u00e9es en local sur la machine sans connexion internet, cela veut dire que la cl\u00e9 est stock\u00e9e sur la machine. Et si je peux mettre la mais sur cette cl\u00e9 alors je pourrai lire tous les cookies de la machine. Cette cl\u00e9 est stock\u00e9 dans les fichiers de Google Chrome sous Google\\Chrome\\User Data\\Local State . Et dans ce fichier on peut trouver une liste de donn\u00e9es en cl\u00e9 valeurs et on peut trouver la cl\u00e9 sous os_crypt encrypted_key . On pourrait croire que l'on a d\u00e9ja touch\u00e9 le jackpot mais il reste encore une \u00e9tape. Cette cl\u00e9 est crypt\u00e9e en utilisant le syst\u00e8me d'encryption de Windows. Cette encryption est utilis\u00e9e pour emp\u00eacher des utilisateurs non connect\u00e9s d'acc\u00e8der \u00e0 certaines donn\u00e9es. Mais comme nous sommes connect\u00e9s nous pouvons facilement utiliser les librairies de decryption pour trouver la valeur de cette cl\u00e9. Et \u00e0 partir de la il suffit d'utiliser cette cl\u00e9 pour d\u00e9crypter tous les cookies de la machine pour aller chercher ceux qui nous int\u00e9ressent. Voici un exemple du code python qui permet d'aller chercher la cl\u00e9 d'encryption dans les fichiers de Google Chrome : def get_master_key (): with open ( os . getenv ( \"localappdata\" ) + \" \\\\ Google \\\\ Chrome \\\\ User Data \\\\ Local State\" , \"r\" ) as f : local_state = f . read () local_state = json . loads ( local_state ) master_key = base64 . b64decode ( local_state [ \"os_crypt\" ][ \"encrypted_key\" ]) master_key = master_key [ 5 :] # removing DPAPI master_key = win32crypt . CryptUnprotectData ( master_key , None , None , None , 0 )[ 1 ] print ( \"MASTER KEY :\" ) print ( master_key ) print ( len ( master_key )) return master_key Python ?? Et oui j'ai choisit d'utiliser un srypt python pour aller chercher les cookies. Ce choix a \u00e9t\u00e9 fait pour trois raisons : Le python est un language que je n'aime pas particuli\u00e8rement mais qui poss\u00e8de un \u00e9ventail de librairies absolument fantastique. Et pour ce genre de choses qui demandent une constante mise \u00e0 jour des librairies et qui sont un peu niches le python est une option juste g\u00e9niale. Comme c'est une des parties qui est le plus suceptible de changer vu que Chrome change relativement souvent le syst\u00e8me de stockage des cookies. Dans une optique de facilit\u00e9 de maintenance, avoir un seul fichier qui concerne cette partie du projet et qui est dans un language que plus de gens maitrisent que C# est pratique. Je n'ai pas r\u00e9ussi \u00e0 trouver de librairies C# qui me donne des r\u00e9sultats identiques \u00e0 celles que j'utilise dans ce script python. Pour faire la liaison entre le C# et le python, j'appelle le script depuis mon C# et ensuite le python s'occupe de mettre tous les cookies dans un CSV qui est ensuite lu depuis le C#. Voici la partie python qui \u00e9crit dans le csv : if not cookies_path . exists (): raise ValueError ( \"Cookies file not found\" ) with sqlite3 . connect ( cookies_path ) as connection : connection . row_factory = sqlite3 . Row cursor = connection . cursor () cursor . execute ( \"SELECT * FROM cookies\" ) with open ( 'cookies.csv' , 'a' , newline = '' ) as csvfile : fieldnames = [ 'host_key' , 'name' , 'value' , 'path' , 'expires_utc' , 'is_secure' , 'is_httponly' ] writer = csv . DictWriter ( csvfile , fieldnames = fieldnames ) if csvfile . tell () == 0 : writer . writeheader () for row in cursor . fetchall (): decrypted_value = decrypt_password ( row [ \"encrypted_value\" ], master_key ) writer . writerow ({ 'host_key' : row [ \"host_key\" ], 'name' : row [ \"name\" ], 'value' : decrypted_value , 'path' : row [ \"path\" ], 'expires_utc' : row [ \"expires_utc\" ], 'is_secure' : row [ \"is_secure\" ], 'is_httponly' : row [ \"is_httponly\" ] }) print ( \"Finished CSV\" ) Et la partie C# qui appelle le script et qui lit le CSV : private void StartCookieRecovering () { string scriptPath = PYTHON_COOKIE_RETRIEVAL_FILENAME ; Process process = new Process (); process . StartInfo . FileName = \"python.exe\" ; process . StartInfo . Arguments = scriptPath ; process . StartInfo . UseShellExecute = false ; process . StartInfo . RedirectStandardOutput = true ; process . Start (); string output = process . StandardOutput . ReadToEnd (); process . WaitForExit (); } public string GetCookie ( string host , string name ) { StartCookieRecovering (); string value = \"\" ; List < Cookie > cookies = new List < Cookie >(); using ( var reader = new StreamReader ( COOKIES_CSV_FILENAME )) { // Read the header row and validate column order string header = reader . ReadLine (); string [] expectedColumns = { \"host_key\" , \"name\" , \"value\" , \"path\" , \"expires_utc\" , \"is_secure\" , \"is_httponly\" }; string [] actualColumns = header . Split ( ',' ); for ( int i = 0 ; i < expectedColumns . Length ; i ++) { if ( expectedColumns [ i ] != actualColumns [ i ]) { throw new InvalidOperationException ( $\"Expected column '{expectedColumns[i]}' at index {i} but found '{actualColumns[i]}'\" ); } } // Read each data row and parse values into a Cookie object while (! reader . EndOfStream ) { string line = reader . ReadLine (); string [] fields = line . Split ( ',' ); string hostname = fields [ 0 ]; string cookieName = fields [ 1 ]; if ( hostname == host && cookieName == name ) { value = fields [ 2 ]; } } } return value ; } Maintenant que l'on sait comment simuler et manipuler un navigateur internet, que l'on sait comment se connecter sur le compte F1TV de l'utilisateur sans qu'il n'aie rien \u00e0 faire. On a tous les ingr\u00e9dients pour automatiquement r\u00e9cup\u00e8rer des images de la F1TV du Grand Prix que l'on souhaite.","title":"R\u00e9cup\u00e8rer les cookies ?"},{"location":"index.html#calibration","text":"Maintenant que l'on a des images de la page Data de la F1TV on pourrait croire que c'est tout bon on peut direct passer \u00e0 la partie OCR. Mais que nenni ! Le gros soucis de l'OCR c'est que sa pr\u00e9cision est grandement r\u00e9duite d\u00e8s que l'on augmente la taille de la zone de recherche. M\u00eame simplement deux mots sur une image, si on les prends dans images individuelles on a de grandes chances de trouver quelque chose mais si on les mets les deux sur la m\u00eame et que on tente l'OCR on va avoir de r\u00e9sultats bien moins bons. Et puis il faut aussi voir que selon les donn\u00e9es que je cherche je ne peux pas faire le m\u00eame traitement. Par exemple, savoir si le DRS est allum\u00e9, savoir quels pneus chausse un pilote et depuis combien de tours et savoir quel est le temps de son dernier tour, ce sont des informations qui demandent des traitements qui n'ont rien \u00e0 voir. Il faut donc pouvoir dire au programme d'OCR ou se trouvent les informations et quelle est leur nature pour qu'il puisse les d\u00e9coder. Il faut donc faire une calibration qui puisse donner toutes les infos importantes mais qui en m\u00eame temps soit facile \u00e0 utiliser car un utilisateur doit \u00eatre capable de le faire assez facilement. Voici la liste des informations que l'on doit r\u00e9cup\u00e8rer : La liste des pilotes pr\u00e9sent sur le Grand Prix La position de la zone principale La position de chaque zone de pilote La position de toutes les Window sur chaque zone de pilote Le but a \u00e9t\u00e9 de retirer le plus d'\u00e9tapes possibles \u00e0 l'utilisateur. Techniquement j'aurais pu faire une version compl\u00eatement manuelle mais ca aurait pris trop de temps alors il y a des syst\u00e8mes qui permettent de rendre cette t\u00e2che moins p\u00e9nible.","title":"Calibration"},{"location":"index.html#liste-des-pilotes","text":"Pour la liste des pilotes j'ai pens\u00e9 \u00e0 utiliser une API externe pour avoir une liste dans laquelle on pourrait selectionner des noms de pilotes sauf que j'ai abandonn\u00e9 l'id\u00e9e car je trouvais que le projet avait d\u00e9ja bien assez de points qui d\u00e9pendent de l'exterieur. Il y a donc une liste de pilotes dans laquelle on peut ajouter ou supprimer des noms de pilotes. L'id\u00e9al serait de mettre tous les pilotes de reserve comme ca si un pilote est malade sur une course on a pas besoin de venir changer la liste.","title":"Liste des pilotes"},{"location":"index.html#zone-principale","text":"Pour la zone principale c'est compl\u00eatement manuel, on attend de l'utilisateur deux points x,y sur l'image pour ensuite avoir une id\u00e9e de ou est sens\u00e9 se trouver la zone. \"Exemple de zone principale\"","title":"Zone principale"},{"location":"index.html#zones-pilotes","text":"C'est la que ca devient int\u00e9ressant. L'utilisateur n'a pas besoin de faire quoi que ce soit pour que le programme sache ou sont les zones des pilotes. J'aurais pu le faire manuellement en faisant choisir \u00e0 l'utilisateur de donner deux points qui correspondent \u00e0 la premi\u00e8re zone et extrapoler pour en avoir 20. Sauf que si l'utilisateur n'est pas pr\u00e9cis au pixel pr\u00e8s (et m\u00eame comme ca parfois) le vingti\u00e8me pilote se retrouve avec une zone compl\u00eatement desax\u00e9e. La, le programme va \"simplement\" effectuer une reconaissance de texte sur toute l'image. Les r\u00e9sultats ne nous int\u00e9ressent pas vraiment tout ce que l'on veut c'est la position des textes. Avec les position il est facile de determiner ou sont toutes les zones de pilotes et donc sans que l'utilisateur n'aie \u00e0 toucher quoi que ce soit, d\u00e8s qu'il a donn\u00e9 les infos pour la zone principale, les zones de pilotes sont determin\u00e9es. \"Exemple zone pilote\" Voici un exemple du code utilis\u00e9 pour trouver ou dessiner des zones de pilotes : public void AutoCalibrate () { List < Rectangle > detectedText = new List < Rectangle >(); List < Zone > zones = new List < Zone >(); TesseractEngine engine = new TesseractEngine ( Window . TESS_DATA_FOLDER . FullName , \"eng\" , EngineMode . Default ); Image image = MainZone . ZoneImage ; var tessImage = Pix . LoadFromMemory ( Window . ImageToByte ( image )); Page page = engine . Process ( tessImage ); using ( var iter = page . GetIterator ()) { iter . Begin (); do { Rect boundingBox ; if ( iter . TryGetBoundingBox ( PageIteratorLevel . Word , out boundingBox )) { //var text = iter.GetText(PageIteratorLevel.Word).ToUpper(); //We remove all the rectangles that are definitely too big if ( boundingBox . Height < image . Height / NUMBER_OF_DRIVERS ) { //Now we add a filter to only get the boxes in the right because they are much more reliable in size if ( boundingBox . X1 > image . Width / 2 ) { //Now we check if an other square box has been found roughly in the same y axis bool match = false ; //The tolerance is roughly half the size that a window will be int tolerance = ( image . Height / NUMBER_OF_DRIVERS ) / 2 ; foreach ( Rectangle rect in detectedText ) { if ( rect . Y > boundingBox . Y1 - tolerance && rect . Y < boundingBox . Y1 + tolerance ) { //There already is a rectangle in this line match = true ; } } //if nothing matched we can add it if (! match ) detectedText . Add ( new Rectangle ( boundingBox . X1 , boundingBox . Y1 , boundingBox . Width , boundingBox . Height )); } } } } while ( iter . Next ( PageIteratorLevel . Word )); } //DEBUG int i = 1 ; foreach ( Rectangle Rectangle in detectedText ) { Rectangle windowRectangle ; Size windowSize = new Size ( image . Width , image . Height / NUMBER_OF_DRIVERS ); Point windowLocation = new Point ( 0 , ( Rectangle . Y + Rectangle . Height / 2 ) - windowSize . Height / 2 ); windowRectangle = new Rectangle ( windowLocation , windowSize ); //We add the driver zones Zone driverZone = new Zone ( MainZone . ZoneImage , windowRectangle , \"DriverZone\" ); MainZone . AddZone ( driverZone ); //driverZone.ZoneImage.Save(\"Driver\" + i+\".png\"); i ++; } }","title":"Zones pilotes"},{"location":"index.html#windows-pilotes","text":"C'est ici que c'est le plus p\u00e9nible pour l'utilisateur, il doit selectionner manuellement les positions des fen\u00eatres de donn\u00e9es. Ensuite d\u00e8s que l'utilisateur a donn\u00e9e une position pour chaque window, on applique les positions pour chaque zone de pilote. Il y a plusieurs types de windows et selon le type le traitement est diff\u00e9rent comme je l'ai dit plus t\u00f4t. Voici des exemples concrets : \"Exemple Window de pneus\" \"Exemple Window temps au tour\" \"Exemple window Drs\" Il est important que toutes ces zones soient transmises avec le plus de pr\u00e9cision possible pour que l'OCR puisse bien faire son boulot.","title":"Windows pilotes"},{"location":"index.html#stockage","text":"Ensuite quand l'utilisateur a finit de configurer son flux, la configuration est stock\u00e9e pour qu'il puisse ensuite la r\u00e9utiliser pour tous les autres Grand Prix de l'ann\u00e9e. Le stockage est fait sous format JSON et est fait pour que le programme d'OCR puisse lire dedans toutes les infos nescessaires. Cela fait des fichiers plut\u00f4t gros mais je n'avais pas vraiment le choix. J'ai test\u00e9 une version avec seulement les infos de la premi\u00e8re zone de pilote mais avec l'interpolation, les derniers pilotes se retrouvent avec des zones clairement pas \u00e0 la bonne taille. Voici un exemple de ce \u00e0 quoi ressemble le JSON final : { \"Main\" : { \"x\" : 36 , \"y\" : 343 , \"width\" : 3780 , \"height\" : 1454 , \"DriverZones\" : [ { \"name\" : \"Driver1\" , \"x\" : 0 , \"y\" : 1 , \"width\" : 3780 , \"height\" : 72 , \"Windows\" : [ { \"Position\" : { \"x\" : 45 , \"y\" : 3 , \"width\" : 76 , \"height\" : 65 }, \"GapToLeader\" : { \"x\" : 447 , \"y\" : 1 , \"width\" : 206 , \"height\" : 67 }, \"LapTime\" : { \"x\" : 863 , \"y\" : 3 , \"width\" : 229 , \"height\" : 65 }, \"DRS\" : { \"x\" : 1095 , \"y\" : 1 , \"width\" : 174 , \"height\" : 67 }, \"Tyres\" : { \"x\" : 1274 , \"y\" : 3 , \"width\" : 1448 , \"height\" : 62 }, \"Name\" : { \"x\" : 2724 , \"y\" : 3 , \"width\" : 361 , \"height\" : 65 }, \"Sector1\" : { \"x\" : 3088 , \"y\" : 1 , \"width\" : 239 , \"height\" : 65 }, \"Sector2\" : { \"x\" : 3314 , \"y\" : 4 , \"width\" : 190 , \"height\" : 62 }, \"Sector3\" : { \"x\" : 3493 , \"y\" : 1 , \"width\" : 198 , \"height\" : 67 } } ] }, { \"name\" : \"Driver2\" , \"x\" : 0 , \"y\" : 72 , \"width\" : 3780 , \"height\" : 72 , \"Windows\" : [ { \"Position\" : { \"x\" : 45 , \"y\" : 3 , \"width\" : 76 , \"height\" : 65 }, \"GapToLeader\" : { \"x\" : 447 , \"y\" : 1 , \"width\" : 206 , \"height\" : 67 }, \"LapTime\" : { \"x\" : 863 , \"y\" : 3 , \"width\" : 229 , \"height\" : 65 }, \"DRS\" : { \"x\" : 1095 , \"y\" : 1 , \"width\" : 174 , \"height\" : 67 }, \"Tyres\" : { \"x\" : 1274 , \"y\" : 3 , \"width\" : 1448 , \"height\" : 62 }, \"Name\" : { \"x\" : 2724 , \"y\" : 3 , \"width\" : 361 , \"height\" : 65 }, \"Sector1\" : { \"x\" : 3088 , \"y\" : 1 , \"width\" : 239 , \"height\" : 65 }, \"Sector2\" : { \"x\" : 3314 , \"y\" : 4 , \"width\" : 190 , \"height\" : 62 }, \"Sector3\" : { \"x\" : 3493 , \"y\" : 1 , \"width\" : 198 , \"height\" : 67 } } ] } [ O t her pilo ts ... ] ], \"Drivers\" : [ \"Perez\" , \"Verstappen\" , \"Alonso\" , \"Sainz\" , \"Russel\" , \"Gasly\" , \"Leclerc\" , \"Ocon\" , \"Hulkenberg\" , \"Bottas\" , \"Hamilton\" , \"Albon\" , \"Tsunoda\" , \"Zhou\" , \"Stroll\" , \"De Vries\" , \"Magnussen\" , \"Norris\" , \"Piastri\" , \"Sargeant\" ] } } Et avec tout ca. L'OCR peut d\u00e9marrer dans de bonnes conditions","title":"Stockage"},{"location":"index.html#ocr_1","text":"Maintenant que on a des images qui arrivent automatiquement et que l'on sait ou se trouvent les informations sur ces dites images, je vais parler de la seconde partie du projet qui parle du processus de reconnaissance de data sur une image du feed DATA de la F1TV. C'est je pense la partie qui a demand\u00e9 le plus tests et de refactor. Toute la partie OCR a \u00e9t\u00e9 d\u00e9velopp\u00e9e dans un projet \u00e0 part avant d'\u00eatre int\u00e9gr\u00e9e dans le projet final. Il faut savoir que la reconnaissance est diff\u00e9rente celon ce que l'on cherche. Je vais donc d\u00e9composer cette partie du document en sous rubriques selon les donn\u00e9es recherch\u00e9es. Mais avant ca je dois expliquer certains concepts qui seront importants.","title":"OCR"},{"location":"index.html#fonctionnement-general_1","text":"Voici un screenshot de la page DATA de la F1TV que le programme va recevoir : \"Screen F1TV\" Si on regarde de loin on peut se dire que la structure est plut\u00f4t simple mais c'est loin d'\u00eatre le cas. On peut y voir au moins 4 zones contenant de l'information dans un format diff\u00e9rent. \"Zones principales\" Dans l'exemple ci dessus on peut voir 3 zones mais on aurait \u00e9galement pu comprendre la zone de position des pilotes autour du circuit pour faire 4. Ces 4 zones sont tr\u00e8s diff\u00e9rentes et contiennent d'autres informations. Pour ce travail de dipl\u00f4me je ne m'occupe que de la zone principale. Mais je pense que le titre et les infos de circuit ne prendrait pas tant de temps que ca \u00e0 impl\u00e9menter. J'ai utilis\u00e9 le mot \"Zone\" plus haut et ca n'est pas juste un mot utilis\u00e9 au hasard. C'est le nom de l'objet que j'utilise pour les repr\u00e9senter dans mon programme. Mais comme c'est important de bien comprendre ce concept avant de continuer je vais vous l'expliquer. ZONE : L'objet \"Zone\" parent est un objet qui est une zone d'image. Je m'explique, le but d'une zone est d'\u00eatre un morceau d'une image plus grande. Le but d'une Zone est de contenir une liste de plus petites Zones ou bien une liste de \"Window\" (j'explique ce que c'est juste apr\u00e8s). Elle contient la portion d'image qui la concerne et ses propres dimensions. Le parent zone ne pr\u00e9voit que de pouvoir ajouter ou supprimer des \u00e9l\u00e9ments des listes de zones ou de windows ainsi qu'une methode qui permet d'aller chercher toutes informations des livres qu'elle contient. L'int\u00e9r\u00eat d'une zone est de pouvoir compartimenter une image dans des parties int\u00e9ressantes au niveau de la reconnaissance mais pas de traiter d'information. WINDOW : L'objet \"Window\" est un objet qui peut ressembler beaucoup \u00e0 l'objet \"Zone\". En effet elle aussi est une partie d'une image plus grande et contient ses dimensions, mais elle se distingue en deux points importants. Elle ne contient pas d'autres Zones ou Windows Elle peut retourner les informations \u00e9crites sur son image. Toutes les Window qui h\u00e9ritent du parent Window peuvent impl\u00e9menter une methode qui permet de renvoyer ce qui peut \u00eatre d\u00e9cod\u00e9 sur son image. Les enfants peuvent aussi aller piocher dans les nombresues methodes de r\u00e9cup\u00e8ration de donn\u00e9es contenues dans le parent Window. Mieux vaut r\u00e9utiliser le plus possible que de r\u00e9inventer la roue pour chaque Window. Une analogie un peu bancale pourrait se pr\u00e9senter comme la suivante : La zone est une armoire ou une bibliot\u00e8que. Si c'est une zone qui contient d'autres zones c'est une bibliot\u00e8que et chacune de ces sous-zones sont des armoires. Leur unique but est de contenir de mani\u00e8re ordonn\u00e9e des objets qui eux contiennent de l'information. Les livres ici sont les Windows. Ils contiennet de l'information et sont stock\u00e9s dans des armoires et on y acc\u00e8de en allant dans la bonne bibliot\u00e8que et en allant dans la bonne armoire. Derni\u00e8res choses pour comprendre le diagramme: Il existe une Main Zone qui est une des 4 grandes zones dont je parlais dans la d\u00e9composition de l'image. Il existe aussi des \"Driver Zone\" qui sont de plus petites zones contenues dans la Main Zone qui et qui ne contiennent que les informations d'un pilote. L'objet Window n'est quasi jamais utilis\u00e9, c'est presque tout le temps des enfants de Window plus sp\u00e9cifiques qui sont utilis\u00e9s, le but est que chaque type d'information sur l'image aie son type de window. Voila donc un petit diagramme qui montre le d\u00e9coupage du programme : \"Diagramme explicatif de l'architecture des zones\" Pour visualiser encore un peu mieux comment ce d\u00e9coupage prend forme voici ce que chaque zone et Window contient. Main Zone : \"Exemple zone principale\" Driver Zone : \"Exemple zone de pilote\" Driver Position Window : \"Exemple de fen\u00eatre de position\" Driver name Window : \"Exemple de fen\u00eatre de nom\" Driver LapTime Window : \"Exemple de fen\u00eatre de temps au tour\" Driver Tyre Window : \"Exemple de fen\u00eatre pneus\" Il existe d'autres types de Window mais ce sont les principaux. On se rend assez facilement compte que chacunes de ces windows va avoir besoin d'un traitement sp\u00e9cifique car la mani\u00e8re de reconnaitre le pneu utilis\u00e9 et le temps au tour ne peut pas \u00eatre la m\u00eame. Pour r\u00e9sumer, on a un programme qui prend en entr\u00e9e un fichier de configuration, qui prend des images de la F1TV et les d\u00e9coupe dans des ZONES qui elles m\u00eame sont d\u00e9coup\u00e9es en WINDOWS pour qu'on puisse plus facilement les d\u00e9coder. Maintenant qu'on a une liste de diff\u00e9rent types de zones on peut commencer \u00e0 chercher ce qu'il y a marqu\u00e9 dessus. Pour cela il faut dabord comprendre un petit peu comment l'OCR fonctionne et comment des libraries comme Tesseract fonctionnent pour donner du texte en partant d'une image. Pour faire tr\u00e8s simple, nous avons un mod\u00e8le qui est entrain\u00e9. C'est \u00e0 dire que on donne \u00e0 un programme un tr\u00e8s grand nombre de mots ou de lettres en lui disant ce que contiennent chaques images. Ensuite le programme va cr\u00e9er des matrices de convolutions pour chaque lettre avec comme objectif de detecter les points communs entre les lettres pour cr\u00e9er un alpphabet. Par exemple la matric de la lettre 'H' donnerait un poids important \u00e0 des lignes verticales connect\u00e9es par une ligne centrale. Et si on fournis assez de donn\u00e9es de bonne qualit\u00e9 au mod\u00e8le, les matrices peuvent \u00eatre tr\u00e8s efficace \u00e0 detecter si une lettre est un H ou un M. Il y a pleins d'autres methodes comme l'utilisation d'un dictionnaire de mots de la langue pour permettre la reconnaissance de mots m\u00eame si une lettre au milieu n'est pas comprise ou en ajoutant d'autres informations sur le contexte mais ca ne nous int\u00e9resse pas ici. C'est important de comprendre comment cette reconnaissance de caract\u00e8res avec des matrices fonctionne car cela va nous aider \u00e0 pr\u00e9parer nos donn\u00e9es pour lui rendre la vie facile et augmenter la pr\u00e9cision de nos r\u00e9sultats.","title":"Fonctionnement g\u00e9n\u00e9ral"},{"location":"index.html#filtres-et-traitement","text":"On peut essayer de donner toutes nos images directement \u00e0 Tesseract pour qu'il reconnaisse tout le texte qu'il y voit mais on risque de se retrouver avec des r\u00e9sultats au mieux inconsistents. Dans notre cas, le soucis est que les chiffres et lettres sont beaucoup trop petits. Ils ne font parfoisd que 10 pixels de haut et cela fait que il n'est pas forc\u00e9ment facile de toujours les diff\u00e9rencier. De plus, comme ils sont petits, les art\u00e9facts d'aliasing sont assez violents et peuvent grandement d\u00e9former une lettre ou un chiffre. Exemple : Prenons le chiffre 9. Dans l'image il peut \u00eatre repr\u00e9sent\u00e9 de cette mani\u00e8re : \"Exemple de chiffre avant post traitement\" On peut voir qu'il est flou, pour nous cela ne pose pas de probl\u00e8me et je pense que \u00e0 peu pr\u00e8s nimporte qui peut dire que c'est un 9. Cependant comme les contours sont flous et m\u00eame si on essaie de retirer le background : \"9 avec anti aliasing\" On voit que le 9 n'est pas clairement d\u00e9finit. En effet on pourrait le comprendre comme : \"Premier exemple de contours\" Ou comme : \"Second exemple de contours\" Voire m\u00eame simplement comme : \"Exemple de coutour g\u00e9n\u00e9reux\" Et on se rend bien compte que les performances de detection ne sont pas les m\u00eames dans ces trois cas. Il faut donc faire un certain post traitement des images pour supprimer les \u00e9l\u00e9ments parasites, les couleurs, et augmenter la visibilit\u00e9 des contours importants. Mais chaque type de donn\u00e9e va avoir des methodes de post traitement diff\u00e9rents. Donc voici les diff\u00e9rents types de reconnaissance et leur post traitements :","title":"Filtres et traitement"},{"location":"index.html#texte","text":"Alors ce type de reconnaissance est utilis\u00e9 par la WINDOW du nom de pilote et de la position du pilote. C'est je pense la plus simple de toutes car Tesseract est particuli\u00e8rement bien entrain\u00e9 pour. Cette reconnaissance concerne donc des lettres qui font des mots ou des noms. Voici un exemple de la WINDOW nom de pilote en entr\u00e9e : \"Exemple texte cru\" Ce texte peut paraitre bon, cependant quand on le lance dans Tesseract, il ne va pas toujours donner un r\u00e9sultat parfait. Il faut aussi savoir qu'il y a des noms pas mal plus p\u00e9nibles que Tesseract a plus de mal \u00e0 reconnaitres, soit \u00e0 cause des lettres utilis\u00e9es, soit car le nom est un nom d'une autre r\u00e9gion et qui ne veut rien dire en anglais ce qui emp\u00eache l'utilisation de dictionnaire (Ex : Tsunoda est un nom japonais et parfois il est difficile pour Tesseract de le reconnaitre car si une lettre pose probl\u00eame il ne peut pas trouver de contexte qui puisse l'aider). Donc pour le rendre plus facilement lisible et augmenter les chances que toutes les lettres soient d\u00e9couvertes, voici les \u00e9tapes que j'ai mis en place. 1 : J'inverse les couleurs. Je me suis rendu compte que il \u00e9tait souvent plus facile de trouver un noir sur blanc que blanc sur noir. Je ne suis pas sur que cette \u00e9tape soit capitale cependant. \"Texte invers\u00e9\" 2 : Je fais un Treshhold de 165 car avec moins le texte parfois prend trop du background et avec plus les lettres sont trop fines. \"Texte apr\u00e8s Treshold\" 3 : Je fais un Resize de l'image pour avoir une meilleure r\u00e9solution et permettre une meilleure d\u00e9tection. J'augmente la hauteur et la largeur par un facteur 2. J'ai trouv\u00e9 cette valeur suffisante et aller plus haut consomme beaucoup de ressources. \"Texte apr\u00e8s Resize\" 4: Je fais une tr\u00e8s rapide Dilatation du texte pour retirer le flou amen\u00e9 par la methode de Resize. Je n'utilise qu'une valeur de 1 car je ne veux pas trop changer comment le texte est model\u00e9 je veux juste retirer le flou. \"Texte apr\u00e8s Dilatation\" Explication des methodes pr\u00e9cises plus bas Voila pour ce qui est du post processing. Je ne dis pas que ce sont les meilleurs param\u00eatres possibles mais dans mes tests ce sont ceux qui ont le mieux march\u00e9s. C'est aussi les premi\u00e8res methodes que j'ai pu d\u00e9velopper alors forc\u00e9ment elles n'ont pas le niveau de d\u00e9tails de certaines autres. Mais comme m\u00eame avec ce traitement il n'est pas rare que je me retrouve avec une ou deux lettres pas justes, il faut un moyen d'\u00eatre s\u00fbr que c'est le bon nom qui est trouv\u00e9. Ce qu'il y a de pratique avec les noms de pilotes c'est que on sait d\u00e9ja comment ils s'appellent avant le Grand Prix. En effet dans le fichier de configuration de la reconnaissance, il y a une liste de noms de pilotes. Cela veut dire que au lieu de chercher \u00e0 trouver parfaitement les bonnes lettres, on peut simplement essayer de trouver quel nom de pilote ressemble le plus au nom trouv\u00e9 sur l'image. Pour ce faire j'ai utilis\u00e9 une methode appel\u00e9e la distance de Levenshtein. Pour faire simple c'est une methode qui va calculer les distances de lettres pour determiner entre des strings laquelle ressemble le plus \u00e0 une autre. Pour r\u00e9sumer le fonctionnement dans lordre : On prend l'image on la traite On envoie l'image trait\u00e9e \u00e0 Tesseract On trouve quel nom de pilote ressemble le plus \u00e0 ce r\u00e9sultat On renvoie le nom du pilote","title":"Texte"},{"location":"index.html#chiffres","text":"Cette methode en r\u00e9alit\u00e9 utilise simplement la m\u00eame methode que celle qui va r\u00e9cup\u00e8rer le texte sur une image. Cependant, la, on envoie \u00e0 Tesseract l'information qu'il ne peut trouver que des chiffres sur l'image ce qui lui permet d'\u00eatre beaucoup plus pr\u00e9cis et de ne pas confondre un 9 avec un P ou un 11 avec un H PAR EXEMPLE (non pas que ca me soit arriv\u00e9 tr\u00e8s r\u00e9guli\u00e8rement et que ca me soit rest\u00e9 dans la gorge \u00e9videmment) L'avantage c'est que cette methode ne demande m\u00eame pas de traitement de la donn\u00e9e en sortie de Tesseract. On \u00e9sp\u00e8re simplement que le post traitement aura suffit. TEMPS : Cette methode regroupe la d\u00e9tection de temps au tour. Il y a trois grands types de WINDOW qui sont concern\u00e9es : La WINDOW du temps au tour La WINDOW du retard sur le leader La WINDOW des secteurs La grande diff\u00e9rence ce sont les ordres de grandeur. Les temps au tour sont en g\u00e9n\u00e9ral entre 50 secondes et 2 minutes. Tandis que les secteurs sont entre 20 et 30 secondes alors que le retard sur le leader peut-\u00eatre de plusieurs minutes. Cependant, tous ces temps poss\u00e8dent le m\u00eame type de post-traitement avant d'\u00eatre envoy\u00e9s \u00e0 Tesseract. Voici un exemple de temps au tour avant toute transformation : \"Temps au tour avant traitement\" On peut avoir l'impression que ce texte est tout \u00e0 fait lisible et facile \u00e0 d\u00e9coder surtout quand on le voit de loin comme ca. Cependant, il faut imaginer que ces chiffres font 13 pixels de haut en comptant le flou et comme expliqu\u00e9 plus haut ce flou dans ces echelles est terrible. \"Temps au tour zoom\u00e9\" Si on donne cette image \u00e0 Tesseract, les '3' deviennent des '9', des '9' deviennent des '8', des '2' deviennent eux aussi des '9', le tout parfois inversement et de mani\u00e8re compl\u00eatement impr\u00e9visible. Ca n'est simplement pas utilisable. Cette partie est un peu plus complexe car si la detection n'est pas fiable les chiffres sont simplement inutilisables. Si \u00e0 tout moment un temps au tour de 1:39.106 devient 1:32.108 c'est juste pas possible. Voici donc les \u00e9tapes de post-traitement que j'ai mis en place pour leur d\u00e9tection : 1: J'applique un Treshold de 185 pour enlever les ambiguit\u00e9s d'alisaising et avoir une image en noir et blanc claire. La valeur de 185 est assez \u00e9lev\u00e9e car le but est de vraiment garder uniquement les contours. Comme les chiffres se ressemlent beaucoup plu que les lettres, il faut tenter le plus possible de conserver leur formes sp\u00e9cifiques. Je me suis rendu compte que cette valeur \u00e9tait une de celles qui marchent le mieux. \"Temps au tour apr\u00e8s Treshold\" 2: J'applique un Resize de 2 pour augmenter la r\u00e9solution des chiffres et permettre une meilleure d\u00e9tection. Le but est d'avoir plus de pixels et donc de permettre \u00e0 Tesseract de mieux utiliser ses matrices de convolution. \"Temps au tour apr\u00e8s Resize\" 3: Comme le Resize am\u00e8ne du flou, j'utilise une methode de Dilatation qui me permet de retirer ce flou et de remplir un peu plus certaines parties qui ont \u00e9t\u00e9 un peu laiss\u00e9e par le Resize ; \"Temps au tour apr\u00e8s Dilatation\" 4: Contrairement aux mots plus haut, la rondeur ajout\u00e9e par la dilatation n'est pas vraiment d\u00e9sir\u00e9e. En effet, elle peut rendre confuse certains chiffres et emp\u00eacher Tesseract de bien trouver le chiffre. Alors j'applique une Erosion qui me permet de contrecarrer en partie les rondeurs ajout\u00e9es par la dilatation et retrouver des chiffres bien form\u00e9es. Pour l' Erosion et la Dilatation j'ai utilis\u00e9 une valeur de 1 car je ne voulais pas trop changer les chiffres. \"Temps au tour apr\u00e8s Erosion\" Explication des methodes pr\u00e9cises plus bas Et avec ce post processing on retrouve de plut\u00f4ts bon r\u00e9sultats qui demandent peu de traitement. Le traitement d\u00e9pend du type de WINDOW cependant. Pour les secteurs on indique \u00e0 Tesseract que les caract\u00e8res autoris\u00e9s sont : \"0123456789.\" Pour les temps au tour on autorise plut\u00f4t \"0123456789.:\" Et pour les \u00e9carts on autorise \"0123456789.+\" Ensuite on r\u00e9cup\u00e8re une liste de chiffres qui'il va falloir transformer en milisecondes pour faciliter le stockage et l'envoi. Le programme nettoie un peu la chaine avant de la convertir. Par exemple parfois le ':' de 1:34.456 est compris comme un '1' ou un '2' et il faut faire attention \u00e0 detecter quand ca arriver. Je passe les d\u00e9tails du reste du nettoyage car c'est vraiment du cas par cas mais quand on a finit de nettoyer la chaine on peut transformer les chaines de minutes secondes et milisecondes en un total de milisecondes. Pour r\u00e9sumer le fonctionnement dans l'ordre : On prend l'image et on lui applique une s\u00e9rie de filtres On envoie l'image filtr\u00e9e \u00e0 Tesseract On nettoie le r\u00e9sultat Tesseract pour compenser certains biais On convertis le r\u00e9sultat en milisecondes","title":"Chiffres"},{"location":"index.html#les-chiffres-2","text":"Il faut savoir que avec la derni\u00e8re version de l'\u00e9mulateur (dont je vais parler un peu plus tard)","title":"les chiffres (2)"},{"location":"index.html#pneus","text":"La on arrive sur la partie la plus p\u00e9nible. Pour comprendre la probl\u00e9matique il faut d'abord faire un petit point sur comment les pneus fonctionnent en Formule 1. Depuis 2019 en Formule 1 nous avons 5 grandes familles de pneus : Les pneus tendres Les pneus medium Les pneus durs Les pneus interm\u00e9diaires Les pneus pluie \"Gamme de pneus Pirelli\" Les trois premiers pneus sont des pneus faits pour piste s\u00e8che, le pneu interm\u00e9diaire pour piste humide et le neu pluie pour la pluie. Chaque pneu a sa dur\u00e9e de vie et son niveau de performance propre mais je ne vais pas rentrer dans le d\u00e9tail ici. Tout ce qu'il faut savoir ce que savoir sur quel pneu chaque pilote est et depuis combien de temps il les chausse est une information tr\u00e8s importante. Chaque pneu a une couleur donn\u00e9e qui permet de les diff\u00e9rencier. Voici un exemple de ce \u00e0 quoi une WINDOW de pneus peut ressembler : \"Exemple zone pneus 1\" Mais cette zone peut aussi ressembler \u00e0 ca : \"Exemple zone pneus 2\" Mais aussi \u00e0 ca : \"Exemple zone pneus 3\" Voire m\u00eame ca : \"Exemple zone pneus 4\" Je pense que vous pouvez tout de suite comprendre la difficult\u00e9 que repr\u00e9sente la t\u00e2che de r\u00e9cup\u00e8ration de donn\u00e9es \u00e0 partir de cette image. En gros le fonctionnement de cette zone d'information est assez simple. Au fur et \u00e0 mesure que la course avance, le trait fait de m\u00eame. Le chiffre dans le round tout \u00e0 droite indique le nombre de tour que le pilote a pass\u00e9 sur ce pneu. La couleur indique le type de pneu. Si il y a une lettre \u00e0 la place d'un chiffre c'est que c'est le premier tour sur ce pneu. La lettre indique le type de pneu. Et pas besoin de dire que si on essaie simplement de donner l'image \u00e0 Tesseract on ne r\u00e9cup\u00e8re ni les chiffres ni les lettres correctement si ce n'est pas du tout. Il faut donc utiliser une methode qui permette d'isoler le rond le plus \u00e0 droite, lui appliquer un traitement qui permette \u00e0 Tesseract de lire ce qu'il y a marqu\u00e9 et qui puisse determiner quel pneu est en train d'\u00eatre utilis\u00e9. J'ai d\u00e9cid\u00e9 de m'occuper dans un premier temps de trouver ce rond avant d'appliquer les filtres car plus l'image est petite plus les filtres sont rapides. Le programme va tirer un trait depuis le bord droit de la zone, et il va avancer vers la gauche jusqu'\u00e0 trouver un obstacle. Je d\u00e9tecte un obstacle si le pixel sur lequel est mon trait poss\u00e8de une valeur de plus de 0x50 dans le channel R,G ou B. J'ai trouv\u00e9 en faisant des tests que les couleurs de background de la F1TV ne d\u00e9passaient jamais ces valeurs. Ensuite apr\u00e8s avoir trouv\u00e9 le premier obstacle, je r\u00e9cup\u00e8re une zone qui doit englober le cercle. Voici un exemple avec cette image en entr\u00e9e : \"Zone compl\u00eate\" Elle est automatiquement coup\u00e9e de cette facon : \"Zone coup\u00e9e automatiquement\" Cela me permet d'isoler uniquement ce qui m'int\u00e9resse ce qui est tr\u00e8s pratique pour Tesseract et pour la detection de couleur. Ensuite avec cette image je peux commencer le processus de reconnaissance. Je commence par faire une moyenne de tous les pixels de l'image en excluant les pixels trop sombres qui font s\u00fbrement partie du background ou du chiffre. Ensuite j'utilise une methode qui calcule la diff\u00e9rence entre la couleur obbtenue et la liste de couleurs possible. Il y a cinq couleurs des pneus possibles : \"#ff0000\" pneu tendre/soft \"Couleur d'un pneu tendre\" \"#f5bf00\" pneu medium \"Couleur d'un pneu medium\" \"#a4a5a8\" pneu dur/hard \"Couleur d'un pneu dur\" \"#00a42e\" pneu inter \"Couleur d'un pneu interm\u00e9diaire\" \"#2760a6\" pneu pluie/wet \"Couleur d'un pneu pluie\" Ce qui est pratique c'est que m\u00eame dans les cas ou il n'y a pas beaucoup de couleur comme celui la : \"Pneu dur avec 0 tours\" On arrive \u00e0 une couleur moyenne de : \"Couleur moyenne de l'image ci dessus apr\u00e8s soustraction du background\" Et il est donc assez facile de determiner le type de pneu en question. Attention, les r\u00e9sultats peuvent \u00eatre tr\u00e8s vite d\u00e9rang\u00e9s par la couleur du pneu pr\u00e9c\u00e9dent si le d\u00e9coupage de la fen\u00eatre n'a pas \u00e9t\u00e9 assez pr\u00e9cis. Ensuite il \"suffit\" de lire le chiffre dans le rond et si on arrive pas \u00e0 le lire alors c'est que c'est une lettre et on sait que le nombre de tours est donc de 0. Maintenant vient le moment tr\u00e8s sympatique de la lecture du chiffre. Vous saurez que Tesseract en plus de detester les grandes images et les images avec des couleurs, deteste \u00e9galement les formes dans une image. Donc dans notre cas, le round de couleur autour du chiffre, m\u00eame si il n'est pas complet, il interf\u00e8re avec la reconnaissance et emp\u00eache de bien lire le chiffre. Il faut donc retirer le background et ensuite la couleur. Sauf que comme le chiffre est de la couleur du background, si on retire le background et ensuite la couleur il ne reste plus rien. Il faut donc retirer le background AUTOUR du rond, et ensuite si on retire la couleur il devrait rester le chiffre sur fond blanc. Pour se faire, j'ai tir\u00e9 des traits depuis les bords de l'image jusqu'\u00e0 ce qu'ils rencontrent le rond. Ensuite je retire tous les pixels entre le rond et les bords de l'image ce qui nous donne ceci : \"Zone pneu avec le background en moins\" Ensuite on peu retirer les pixels qui ont une valeur dans un channel RGB plus haute qu'un certain seuil : \"Zone avec le reste des couleurs supprimm\u00e9es\" Et la on a ce que l'on veut ! A partir de la c'est les filtres que l'on connait qui sont utilis\u00e9s pour en faire une image plus facile \u00e0 utiliser par Tesseract. 1 : On effectue un Resize de facteur 4 (oui c'est beaucoup mais en m\u00eame temps le chiffre est vraiment petit \u00e0 la base) qui permet d'avoir une image d'une bien meilleure r\u00e9solution. \"Filtre 1\" 2: On fait une Dilatation de facteur 1 pour retirer tout le flou de l'image pour aider Tesseract \"Resultat\" Et on a un chiffre qui est utilisable par Tesseract ! Explication des methodes pr\u00e9cises plus bas Pour r\u00e9sumer : On prend l'image de la zone et on la crop pour ne garder que la partie essentielle On d\u00e9termine le type de pneu avec la couleur moyenne de la zone On retire le background autour de cette zone On retire la couleur qui reste pour ne garder que le chiffre On augmente la r\u00e9solution du chiffre On rend ce chiffre net On envoie l'image trait\u00e9e et filtr\u00e9e \u00e0 Tesseract On d\u00e9termine le nombre de tours que le pilote a fait avec ses pneus avec le r\u00e9sultat de Tesseract","title":"Pneus"},{"location":"index.html#drs","text":"Bon ca c'\u00e9tait plut\u00f4t simple j'ai simplement v\u00e9rifi\u00e9 si la moyenne de vert d\u00e9passait une certaine valeur et puis voila.","title":"DRS"},{"location":"index.html#filtres-et-methodes-sur-les-images","text":"Dans ce projet on a du utiliser diff\u00e9rentes methodes d'\u00e9dition d'image que ce soit sous forme de filtres ou de modification de l'image directement. Voici un sommaire des methodes utilis\u00e9es et comment elles fonctionnent. Tresholding Cette methode sert \u00e0 passer d'une image en couleurs \u00e0 une image binaire noir blanc. C'est une \u00e9tape tr\u00e8s importante pour l'OCR car elle permet (si bien faite) d'isoler du texte de son background. Un exemple ici : \"Exemple treshold\" Le fonctionnement est assez simple mais il peut \u00eatre fait de diff\u00e9rentes mani\u00e8res mais dans mon cas voici comment l'algorythme fonctionne sachant qu'il demande en entr\u00e9e la Bitmap que l'on veut modifier ainsi que la valeur de Treshold : On parcours chaque pixel de l'image On convertir la couleur du pixel en une valeur de gris pour avoir la m\u00eame valeur en R,G et B (Formule utilis\u00e9e : grey = R x 0.3 + G x 0.59 + B x 0.11) Si le r\u00e9sultat de la valeur de gris est au dessus de la valeur de treshold, le pixel est pass\u00e9 en blanc complet et dans le cas contraire il est pass\u00e9 en noir complet On retourne la Bitmap modifi\u00e9e Un algorythme pas forc\u00e9ment complexe mais qui peut augmenter de mani\u00e8re titanesque les chances de r\u00e9ussir une OCR Resize Cette methode sert \u00e0 augmenter la r\u00e9solution d'une image pour am\u00e9liorer la pr\u00e9cision de l'algorythme de Tesseract. En effet, avec trop peu de pixels, la matrice de convolution n'est pas toujours aussi efficace. Il ne faut pas confondre cette methode d'augmentation de la taille avec une simple interpolation. En effet une augmentation de taille interpol\u00e9e ne vas pas vraiment changer la r\u00e9solution, l'image sera toujours aussi pixelis\u00e9e, seulement, les pixels seront compos\u00e9es de plus de pixels comme dans l'exemple ci dessous : \"Exemple d'interpolation lin\u00e9aire\" Dans mon projet j'utilise de l'interpolation bicubique qui va cr\u00e9er de l'information pour tenter de combler le vide et produire une image r\u00e9ellement plus grande et avec plus de details mais en ajoutant du flou. \"Exemple des diff\u00e9rents types d'interpolation\" Le but est d'aller chercher dans les pixels alentours les couleurs qui sont d\u00e9ja pr\u00e9sente et de jouer avec des poids pour tenter de faire une pr\u00e9diction de ce que ce pixel aurait \u00e9t\u00e9 si l'image avait plus de detail. Voici un exemple assez parlant : \"Exemple interpolation bicubique (avant)\" \"Exemple interpolation bicubique (apr\u00e8s)\" On pourrait croire que c'est inutile mais dans le contexte de Tesseract ajouter des d\u00e9tails pour tenter de simuler une meilleure r\u00e9solution m\u00eame en cr\u00e9ant du flou est int\u00e9ressant pour mieux remplir la matrice de convolution. Mais il est possible de r\u00e9duire ce flou avec d'autres m\u00e9thodes \u00e9galement. (Dans mon code je n'ai pas utilis\u00e9 du code fait main mais j'utilise une librairie qui me permet de le faire) Il faut simplement faire attention car c'est un proc\u00e9d\u00e9 assez lourd en performances. Dilatation et Erosion Cette methode et la suivante font partie des methodes de transformation morphologiques. Ces methodes sont utilis\u00e9es pour accentuer les formes et les epaissir ou les r\u00e9duire et les affiner. Elles poss\u00e8dent l'aventage \u00e9galement de retirer le flou d'une image ce qui est tr\u00e8s pratique si utilis\u00e9 apr\u00e8s l'utilisation de methodes comme Resize . Je ne vais pas trop rentrer dans les d\u00e9tails de ces methodes car leur fonctionnement est un peu plus lourd en math si on veut faire une v\u00e9ritable explication du pourquoi et du comment ca marche aussi bien. Pour notre projet je dirais que l'important est de savoir que ce sont deux outils tr\u00e8s pratiques pour changer la morphologie des lettres et des chiffres et qu'on peut les utiliser pour corriger du flou et/ou des art\u00e9facts apparus lors de la binarisation de l'image ou de la suppression de fond. Remove Background Cette methode est assez simple et est juste une methode qui va passer en revue tous les pixels de l'image et si la couleur d'un pixel s'apparente \u00e0 celle d'un pixel de fond il est pass\u00e9 en noir total ou en blanc total. Le but est de permettre au reste du programme de fonctionner avec des couleurs moins ambigues. Une variante sp\u00e9cialis\u00e9e pour la reconnaissance des pneus appel\u00e9e affectueusement Remove Useless cherche \u00e0 atteindre le m\u00eame bu mais est bien plus soffistiqu\u00e9e et sp\u00e9cialis\u00e9e pour retirer le background autour d'un cercle de couleur pour ensuite retirer la couleur et qu'il ne reste qu'un chiffre. Pour plus de details voir la detection de pneus. Il y aussi d'autre methodes comme un filtre Gaussien ou Highlight countour que j'ai du d\u00e9velopper mais que je n'ai pas utilis\u00e9 donc je ne vais pas en parler ici.","title":"Filtres et methodes sur les images"},{"location":"index.html#petit-point-resolution","text":"Comme on peut l'imaginer la r\u00e9solution est extr\u00eamement importante pour l'OCR. Et en avancant sur le projet de l'\u00e9mulateur je me suis rendu compte qu'il \u00e9tait possible de r\u00e9cup\u00e8rer des images en 4K (Plut\u00f4t 1080 avec l'upscaling du lecteur). Cela est une superbe nouvelle car cela permet de simplifier \u00e9norm\u00e9ment le processing sur les diff\u00e9rentes windows. Quelques exemples pour se faire une id\u00e9e \"Echantillon 720P\" ; \"Echantillon 1080P\" \"Echantillon 4K\" Mais il faut savoir que gr\u00e2ce \u00e0 cette simplification j'ai pu aussi cr\u00e9er d'autres methodes de filtrage pour certaines parties. Mais la simplification \u00e9tait obligatoire car avec des images aussi grande il n'\u00e9tait simplement pas possible de venir appliquer les m\u00eames filtres car le temps de traitement serait beaucoup plus long. J'indique ces changements que apr\u00e8s l'explication d'avant car ce sont des changements un peu de derni\u00e8re minute et que la logique expliqu\u00e9e plus haut a \u00e9t\u00e9 tr\u00e8s importante pour le projet OCR m\u00eame si tout n'est plus forc\u00e9ment utilis\u00e9 maintenant que j'ai des images de meilleure qualit\u00e9. Dans la version actuellement disponible la reconnaissance a \u00e9t\u00e9 simplifi\u00e9e sous cette forme : Le \"GapToLeader\" est d\u00e9cod\u00e9 avec un premier passage de Tresholding \u00e0 165 puis un Resize de 2 et une Dilatation de 1 pour retirer le flou Les \"Sectors\" sont d\u00e9cod\u00e9s en utilisant une toute nouvelle methode VanishOxyAction \u00e0 cause des couleurs parfois appliqu\u00e9es et ensuite simplement une methode de Tresholding de 150 pour rendre le r\u00e9sultat assez propre pour l'OCR. Le \"LapTime\" est dabord pass\u00e9 par un Tresholding tr\u00e8s strict de 185 pour pr\u00e9parer la SobelEdgeDetection qui est \u00e9galement une nouvelle methode qu'il a \u00e9t\u00e9 possible d'utiliser gr\u00e2ce \u00e0 la simplification du reste des processus. Le \"Text\" est d\u00e9cod\u00e9 simplement avec un tresholding de 165 maintenant gr\u00e2ce \u00e0 l'image 4K. Les pneus ont leur propre traitement comme expliqu\u00e9 plus haut auquel on ajoute la Dilatation de 1. Comme on peut le voir le traitement est pas mal plus simple mais cela ne veut pas dire que les autres methodes que je n'utilise plus ne sont pas utiles. La reconnaissance n'est pas encore parfaite et je pense que leur utilisation pourrait aider \u00e0 am\u00e9liorer les r\u00e9sultats. (Et parfois ces anciennes methodes sont utiles dans les traitements personnalis\u00e9s des windows elle m\u00eames comme par exemple les pneus qui utilisent la methode GrayScale pour isoler les couleurs) VanishOxyAction Cette methode est une methode plut\u00f4t simple mais qui est importante. Elle se base beaucoup sur le code de la methode Grayscale et sur la methode Tresholding car elle essaie de regrouper le meilleur des deux en r\u00e8glant quelques soucis que ces derni\u00e8res cr\u00e9\u00e9ent. Le soucis avec la methode grayscale c'est que quand le texte est de couleur (Ce qui arrive souvent pour les temps de secteurs) la methode GrayScale rend les couleurs dans une nuance de gris un peu trop sombre ce qui fait que ensuite la methode de Tresholding d\u00e9fonce tout. \"Exemple de secteur en couleur\" \"Exemple de secteur en grayscale\" L'id\u00e9e est alors de prendre pour chaque pixel et de garder uniquement la valeur de R,G ou B la plus haute et de mettre les deux autres canaux au m\u00eame niveau pour avoir une image blanchie qui puisse \u00eatre ensuite utilis\u00e9e avec la methode de Tresholding sans soucis. \"Exemple de secteur blanchi avec vanishoxyAction\" SobelEdgeDetection On pourrait se dire que avec ce genre de methode le tresholding est inutile ensuite mais ca n'est pas le cas car le tresholding sert ensuite pour rendre les contours plus ou moins aggressif. Car m\u00eame si l'image ressemble \u00e0 une image binaris\u00e9e, il reste des nuances que le treshold va pouvoir utiliser. SobelEdgeDetection Cette methode est une methode assez classique que je n'ai pas design\u00e9 moi m\u00eame alors je ne vais pas trop m'\u00e9pancher dessus. En gros on utilise une matrice et une formule math\u00e9matique pour redessiner une image et le r\u00e9sultat est une image avec des contours. Je ne l'ai utilis\u00e9 que pour les temps au tour car ce sont les plus r\u00e9calcitrants. Cette methode a besoin d'une image pass\u00e9e en noir et blanc au pr\u00e9alable \u00e0 laquelle on applique ensuite les matrrices de filtres. Et avec ces filtres ajout\u00e9s \u00e0 l'image on peut ensuite calculer le \"Gradient\" pour cr\u00e9er les bords. Le seul soucis de cette methode c'est qu'elle est assez gourmande et qu'elle fournit des formes creuses d\u00fb \u00e0 la nature des matrices donn\u00e9es. Voici un exemple de ce dont cette m\u00e9thode est capable : Artefacts de la detection de bords de Sobel Apparemment l'OCR aime assez bien cette methode et elle permet de beaucoup moins souvent oublier les '.' ou ':'","title":"Petit point r\u00e9solution"},{"location":"index.html#traitement-des-donnees","text":"C'est bien gentil de recevoir des r\u00e9sultats de l'OCR, cependant on ne peut pas souvent les utiliser comme tels. En effet les resultats ne sont pas tr\u00e8s constants et demandent d'\u00eatre verifi\u00e9s pour savoir si ils doivent \u00eatre pris en compte. Le post traitement de ces donn\u00e9es d\u00e9pend compl\u00eatement du contexte et donc il est diff\u00e9rent pour chque type de window. Voici un floril\u00e8ge des diff\u00e9rents types de traitements : Traitement du nom de pilote Rien de plus que ce qui est d\u00e9ja d\u00e9taill\u00e9 dans la partie OCR Traitement des pneus Pareil Traitement des temps La par contre c'est int\u00e9ressant. Dans un monde parfait je pourrais simplement prendre les r\u00e9sultats de l'OCR et les traiter directement. Mais comme nous vivons dans un monde ou la souffrance et la douleur sont les seules choses autoris\u00e9es on ne peut pas. Le probl\u00e8me vient du fait que les temps que l'on peut trouver sur la F1TV sont encod\u00e9s avec des '.' et des ':' qui determinent les limites entre les chiffres qui d\u00e9signent les minutes, les secondes et les milisecondes. Et le soucis avec ces s\u00e9parateurs c'est qu'ils aiment bien mettre le chaos dans la reconnaissance. Quand ils ne sont pas compris comme des autres chiffres ils sont parfois simplement oubli\u00e9s ou pris en double c'est un enfer. Il faut donc trouver un moyen de detecter quand cela arrive. Et je n'ai pas trouv\u00e9 de meilleur moyen que de faire du cas par cas. Cela peut para\u00eetre simple quand on parle par exemple des secteurs. On sasit que on attend deux chiffres avant un '.' et trois chiffres apr\u00e8s. Il est donc facile de voir que si je trouve six chiffres et pas de s\u00e9paration le troisi\u00e8me est le s\u00e9parateur mal compris. Mais l'exemple qui d\u00e9truit vraiment tout c'est les \u00e9carts avec le leader. Autant un temps au tour c'est toujours x:xx.xxx et un temps de secteur c'est xx.xxx. Mais un \u00e9cart avec le leader ca peut \u00eatre 0.345 comme 1:12.345. Ce qui fait que quand je 121345 est-ce que c'est 12.345 ou 1:21.345...? Souvent on peut quand m\u00eame d\u00e9duire mais cela demande de pr\u00e9voir presque tous les cas limites ce qui est assez p\u00e9nible. On pourrait se dire qu'il suffit de voir si la valeur est trop en dehors des normes. Le soucis c'est que il n'est pas impossible que un temps au tour ou un \u00e9cart prenne d'un coup une grosse diff\u00e9rence. Cela arrive m\u00eame assez souvent quand des pilotes sortent de la piste. \"Exemple temps au tour\" \"Exemple temps secteur\" Pour ce qui est du DRS et de la position des pilotes, il n'y a pas vraiment de traitement suppl\u00e9mentaire. Non pas car la detection est parfaite, mais par ce que la detection ne peut pas rater de 200 facons. Le DRS ne peut retourner que TRUE ou FALSE et la position du pilote est entre 1 et 20 compris. Le peu de nuance fait que ce sont des cas de figures qui ne demandent pas un traitement particulier au del\u00e0 de l'OCR","title":"Traitement des donn\u00e9es"},{"location":"index.html#stockage-des-donnees","text":"Dans ce projet le but n'est pas simplement de trouver les donn\u00e9es et les afficher. L'int\u00e9r\u00eat de les r\u00e9cup\u00e8rer est de pouvoir les comparer \u00e0 d'autres donn\u00e9es pr\u00e9c\u00e9dentes. Le vrai soucis de la F1TV c'est justement que l'on ne peut pas facilement voir les \u00e9volutions. On ne peut voir que des \"photos\" de la situation actuelle de la course. Il faut donc garder en m\u00e9moire les diff\u00e9rentes choses qui se sont pass\u00e9es. Techniquement on pourrait stocker ces donn\u00e9es dans de b\u00eates listes C#. Mais le soucis avec ca c'est que m\u00eame si des outils comme LinQ existent, ca n'est pas le plus pratique quand on veut faire des recherches complexes. Il faut aussi voir que si le projet dans sa forme actuelle aurait peut-\u00eatre pu se satisfaire de listes simples, le but est d'ensuite pouvoir construire sur ces bases pour faire des predictions et des insertions de stats beaucoup plus int\u00e9ressantes qui demandent de faire des requ\u00eates complexe rapidement. Je me suis dit que la meilleure methode serait d'avoir une base de donn\u00e9e dans laquelle je peux faire des requ\u00e8tes SQL. Mais commme je n'ai pas besoin de toutes les features de SQl et que je ne veut pas avoir \u00e0 g\u00e8rer un serveur de base de donn\u00e9e et tout ce qui va avec je me suis dit qu'une bonne option serait d'utiliser SQLITE. \"Logo Sqlite\" ; SQLITE est vraiment pratique car cela me permet d'avoir une DB sans avoir de serveur donc pas vraiment complexe ou quoi que ce soit mais qui conserve les aventages de rapidit\u00e9 et d'utilisation de requetes SQl. J'ai cr\u00e9\u00e9 trois tables dans cette base de donn\u00e9e SQLITE que voici :","title":"Stockage des donn\u00e9es"},{"location":"index.html#base-de-donnee","text":"Drivers Colonne Type de Data Description Tag ID INTEGER ID du pilote PRIMARY Name VARCHAR Nom du pilote NOT NULL Pitstops Colonne Type de Data Description Tag Lap INTEGER Tour durant lequel le Pitstop a \u00e9t\u00e9 effectu\u00e9 PRIMARY DriverID INTEGER Pilote qui a effectu\u00e9 le Pitstop PRIMARY Tyre VARCHAR Pneu chauss\u00e9 par le pilote NOT NULL Stats Colonne Type de Data Description Tag Lap INTEGER Tour durant lequel le Pitstop a \u00e9t\u00e9 effectu\u00e9 PRIMARY DriverID INTEGER Pilote qui concern\u00e9 PRIMARY Tyre VARCHAR Pneu chauss\u00e9 par le pilote NOT NULL LapTime INTEGER Temps au tour (MS) NOT NULL Sector1 INTEGER Temps du secteur 1 (MS) NOT NULL Sector2 INTEGER Temps du secteur 2 (MS) NOT NULL Sector3 INTEGER Temps du secteur 3 (MS) NOT NULL GapToLeader INTEGER Ecart avec le leader (MS) NOT NULL Position INTEGER Position pilote NOT NULL La table Drivers sert juste \u00e0 stocker les diff\u00e9rents noms de pilote pour qu'ils soient utilis\u00e9s dans le reste de la DB La table Pitstops n'est pas vraiment utilis\u00e9e dans l'\u00e9tat actuel du projet. Mais le but \u00e9tait de la remplir d\u00e8s que le programme d\u00e9tectais un arr\u00eat aux stands. Le but est ensuite de pouvoir construire un classement pond\u00e8r\u00e9 en fonction des arr\u00eats des diff\u00e9rents pilotes et d'afficher la stats tout le temps sur l'affichage principal. Elle n'est pas vraiment utilis\u00e9e car la detection de pitstop n'a pas pu \u00eatre commpl\u00eat\u00e9e. De par la nature des donn\u00e9es r\u00e9cup\u00e8r\u00e9es des pneus et des positions, c'est tr\u00e8s difficile de detecter avec prescision un arr\u00eat aux stands. La table Stats est la plus importante car elle contient toutes les informations concernant les pilotes \u00e0 chaque tour. L'id\u00e9e est qu'elle soit remplie \u00e0 chaque tour. Les infos ne sont pas scens\u00e9e \u00eatre les infos live mais plut\u00f4t juste une photo \u00e0 chaque tour de la situation de chaque pilote pour ensuite pouvoir faire des commparaisons tourspar tours. Des donn\u00e9es comme le GapToLeader peuvent \u00e9voluer pendant le tour mais on s'en fiche. Ce qui compte vraiment c'est le temps au tour et les secteurs ainsi que les pneus.","title":"Base de donn\u00e9e"},{"location":"index.html#quand-remplir-la-base","text":"Dans ce projet il y a deux type d'information. Les informations live qui sont stock\u00e9es dans des listes et les informations long terme qui sont stock\u00e9es dans la DB. A chaque it\u00e9ration de l'OCR, les donn\u00e9es r\u00e9cup\u00e8r\u00e9es sont stock\u00e9es dans une liste de DRIVERDATA. Les DRIVERDATA sont des structures de donn\u00e9es qui contiennent toutes les infos d'un pilote \u00e0 un instant T. Elles peuvent \u00eatre incompl\u00eates et sont juste la pour faire de petits calculs et determiner quand ins\u00e8rer des donn\u00e9es permanentes. Ce qui nous am\u00e8ne au moment int\u00e9ressant. Comment on d\u00e9termine quand il est int\u00e9ressant d'ins\u00e8rer des informations dans la base de donn\u00e9es. Il y a deux cas de figure ou on pourrait vouloir ins\u00e8rer des infos :","title":"Quand remplir la base ?"},{"location":"index.html#quand-un-pilote-a-finit-un-tour","text":"En effet, j'ai estim\u00e9 que les seuls moments ou on veut garder une photo de la situation du pilote c'est quand il passe d'un tour \u00e0 l'autre. Le raisonnement est le suivant : On ne veut pas conserver TOUTES les donn\u00e9es car si on prend une phot toutes les trois secondes, la majorit\u00e9 des informations seront redondantes avec les pr\u00e9c\u00e9dentes. Mais en m\u00eame temps il ne faut pas rater des changements importants de donn\u00e9es. Les seules donn\u00e9es qui changent entre deux passages de l'OCR sont les \u00e9carts entre les pilotes et de temps en temps un nouveau secteur s'affiche. Alors que d'un tour \u00e0 l'autre presque toutes les informations changent. Et on ne perd que les l\u00e9g\u00e8res fluctuations des \u00e9carts entre les pilotes. J'ai donc d\u00e9cid\u00e9 de conserver une photo par tour. Mais c'est bien joli sauf qu'il reste une difficult\u00e9 : Comment savoir qu'un pilote a fait son tour ? Cela peut para\u00eetre simple comme question mais elle est plus difficile qu'il n'y parait. Il faut savoir que en F1 un pilote peut \u00eatre dans son 26\u00e8me tour pendant qu'un autre en est \u00e0 son 24\u00e8me. Chaque pilote a sa propre course et au fur et \u00e0 mesure que les \u00e9carts se creusent il peut y avoir un tour voir plusieurs d'\u00e9cart entre la queue de course et les premiers pilotes. Ensuite il faut savoir qu'il n'est pas marqu\u00e9 sur la f1TV dans quel tour chaque pilote est. Il faut donc le d\u00e9duire en fonction des Data. Voici le code le if qui d\u00e9tecte un nouveau tour if ( DriverDataLogs [ i ][ DriverDataLogs [ i ]. Count - 1 ]. Sector3 != 0 && DriverDataLogs [ i ][ DriverDataLogs [ i ]. Count - 2 ]. Sector3 == 0 && DriverDataLogs [ i ][ DriverDataLogs [ i ]. Count - 2 ]. Position != - 1 && DriverDataLogs [ i ][ DriverDataLogs [ i ]. Count - 1 ]. Position != - 1 ) { //Do stuff } DriverDataLogs est une liste de liste d'informations de pilotes. Chaque DriverDataLogs repr\u00e9sente les 20 photos des donn\u00e9es des pilotes. Cela veut dire que DriverDataLogs[3] repr\u00e9sente toutes les infos des pilotes dans le tour 4 et que DriverDataLogs[3][0] repr\u00e9sente toutes les infos du premier pilote dans le tour 3. Si on analyse un peu ce qui est \u00e9crit avec ces informations, on peut voir que je d\u00e9termine qu'un nouveau tour se d\u00e9finis comme une photo ou le troisi\u00e8me secteur a \u00e9t\u00e9 compl\u00eat\u00e9 et ou il ne l'\u00e9tait pas juste avant. Cela fait sens car quand un pilote compl\u00eate son troisi\u00e8me secteur c'est la que son dernier temps au tour se met \u00e0 jour. Le reste des tests est juste la pour \u00e9viter les faux positifs dans le cas ou un des deux DriverDataLogs[x][x] soit corrompu et que donc la valeur n'aie pas de sens. Cela veut dire que dans des conditions tr\u00e8s sp\u00e9cifiques je pourrais potentiellement rater un tour mais il faudrait vraiment que l'OCR me joue un vilain tour.","title":"Quand un pilote a finit un tour"},{"location":"index.html#quand-un-pilote-a-fait-un-arret-aux-stands","text":"Et la on touche le plus difficile. Pourtant un arr\u00eat aau stand ne devrait pas \u00eatre compliqu\u00e9 \u00e0 detecter. C'est quand un pilote change de pneu. Alors il peut changer de pneu en gardant le m\u00eame type de pneu et donc tout repose sur le nombre de tour qu'un pneu fait. Sauf que il faut ajouter \u00e0 cette reflexion qu'un pneu peut \u00eatre chauss\u00e9 sans qu'il soit neuf. Ce qui veut dire que l'on ne peut pas simplement choisir qu'un pilote a chang\u00e9 de pneus quand ses pneus sont \u00e0 1 tour. Il peut tr\u00e8s bien reprendre des pneus de qualif qui peuvent avoir 10 tours dans les pattes. En plus quand le pilote change de pneus il y a un phenomene assez p\u00e9nible qui fait que les deux premiers tours faits avec ne sont pass vraiment d\u00e9chiffrables car ils sont un peu cach\u00e9s derri\u00e8re la lettre qui indique le nouveau pneu chauss\u00e9. Exemple : \"Infographie de pneu qui se chevauche\" Voici le code que j'avais \u00e9crit pour tenter de trouver quand un pilote avait fait un pitstop : if ( data . CurrentTyre . Coumpound != Tyre . Type . Undefined && data . CurrentTyre . NumberOfLaps == 0 && DriverDataLogs [ i ][ DriverDataLogs [ i ]. Count - 2 ]. CurrentTyre . NumberOfLaps != 0 ) { //Do stuff } On peut voir que j'essaie de detecter quand le pneu est \u00e0 0 tours (ce qui est le moment ou il y a une lettre \u00e0 la place d'un num\u00e9ro de tour) et que la photo d'avant montrait un pneu normal. On v\u00e9rifie aussi que le pneu a bien \u00e9t\u00e9 detect\u00e9 en verifiant que le pneu n'est pas de type undefined. Le soucis c'est que ce n'est pas rare que l'OCR nous retourne qu'un pneu est vieux de 0 tours et donc il est absolument impossible de faire confiance \u00e0 cette metric. Si on veut utiliser cette methode pour trouver les Pitstop il va falloir avant tout am\u00e9liorer l'OCR sur ce point. Ce soucis mets en lumi\u00e8re un principe assez important de l'informatique \"Ggarbage in, Garbage out\". Si les donn\u00e9es que je recoit ne sont pas g\u00e9niales, le r\u00e9sultat ne sera pas g\u00e9nial non plus. Ce qui est frustrant c'est que la detection des pneus n'est pas si mal mais entre les chiffres qui se chevauchent ce qui nous fait lire 0 alors que c'est juste un un '1' derri\u00e8re un 'H' ou le 1% du temps ou le programme se trompe, on ne peut pour l'instant tout simplement rien faire de mieux.","title":"Quand un pilote a fait un arr\u00eat aux stands"},{"location":"index.html#affichage-des-donnees","text":"Maintenant que l'on a stock\u00e9 toutes ces donn\u00e9es, il faut en faire quelque chose sinon ca ne sert a rien. Afficher les donn\u00e9es est techniquement la partie la plus simple du projet. Il faut prendre les donn\u00e9es qui nous int\u00e9ressent de la base de donn\u00e9es et des r\u00e9sultats de l'OCR et les afficher sur des composants Windows Forms. Il y a deux types d'affichages actuellements mis en place dans le projet sur les trois pr\u00e9vus initialement :","title":"Affichage des donn\u00e9es"},{"location":"index.html#affichage-direct","text":"L'affichage direct est simplement l'affichage du r\u00e9sultat de l'OCR. Par exemple le classement live ainsi que les \u00e9carts entre les pilotes sont affich\u00e9s directement depuis les r\u00e9sultats de l'OCR. Ce ne sont pas forc\u00e9ment des donn\u00e9es prises dans la base de donn\u00e9e. Voici un exemple : for ( int driverCount = 0 ; driverCount < liveData . Count ; driverCount ++) { DriverData driver = liveData [ driverCount ]; lblDriverName . Text = driver . Name ; lblDriverPosition . Text = driver . Position ; lblDriverLapTime . Text = Reader . ConvertMsToTime ( driver . LapTime ); } C'est l'affichage le plus simple et celui qui est le plus soumis \u00e0 des erreurs. En effet, si un pilote est mal detect\u00e9 on le verra directement mal s'afficher dans la Form principale. C'est \u00e9galement l'affichage le moins int\u00e9ressant car il ne cr\u00e9e aucune information, il ne fait que remontrer les infos que l'on peut d\u00e9ja voir dans la F1TV \"Exemple d'affichage live\"","title":"Affichage direct"},{"location":"index.html#affichage-calcule","text":"La encore il y a plusieurs types d'affichages :","title":"Affichage calcul\u00e9"},{"location":"index.html#affichage-hybride","text":"Pour ce qui est des affichages hybrides ce sont des affichages qui vont chercher des informations lives et des informations dans la base de donn\u00e9e. Ils ne font pas de calculs \u00e0 proprement parler mais ils affichent plus d'informations que ce que montre la F1TV. Cela veut dire qu'ils repr\u00e9sentent un d\u00e9but de plusvalue par rapport \u00e0 l'alternative qu'est la page DATA de la F1TV. Ils ne sont pas beaucoup plus durs \u00e0 impl\u00e9menter mais demandent de faire des requ\u00eates \u00e0 la base de donn\u00e9e. Comme exemple d'affichage hybride on a l'affichage des cinq derniers tours d'un pilote. C'est un affichage qui ne demande aucun calcul mais qui permet deja de se rendre compte de si le pilote est enn train de perdre ou gagner du temps ou si il est constant, ce qui n'est pas possible actuellement avec la F1TV \u00e0 moins d'avoir une excellente m\u00e9moire. \"Fen\u00eatre d'informations \u00e0 propos d'un pilote\" Voici un exemmple du type de code necessaire pour afficher ce genre de donn\u00e9es: public List <( int LapTime , int Lap )> GetDriverLaptimes ( string driverName , int numberOfLaptimes ) { int driverId = GetDriverID ( driverName ); List <( int LapTime , int Lap )> lapData = new List <( int LapTime , int Lap )>(); string selectQuery = \"Select LapTime,Lap from Stats WHERE DriverID = @driverID ORDER BY Lap DESC LIMIT @limit\" ; using ( var command = new SQLiteCommand ( selectQuery , Connection )) { command . Parameters . AddWithValue ( \"@driverID\" , driverId ); command . Parameters . AddWithValue ( \"@limit\" , numberOfLaptimes ); SQLiteDataReader reader = command . ExecuteReader (); while ( reader . Read ()) { int lapTime = reader . GetInt32 ( 0 ); int lap = reader . GetInt32 ( 1 ); lapData . Add (( lapTime , lap )); } } return lapData ; } public void Display (){ List <( int LapTime , int Lap )> lapsInfos = Storage . GetDriverLaptimes ( driverName , 5 ); int id = 0 ; foreach (( int LapTime , int Lap ) lapData in lapsInfos ){ Labels [ id ]. Text = LapTime ; id ++; } } Note: Le code montr\u00e9 ici n'est pas forc\u00e9ment le code utilis\u00e9 dans le projet. D'une certaine facon les fen\u00eatres de bataille et de d\u00e9passements sont aussi des hybrides. \"Exemple fen\u00eatre des batailles\" Ici ce sont les batailles qui sont repr\u00e9sent\u00e9es. Aucune donn\u00e9e n'est calcul\u00e9e, c'est litterallement directement les donn\u00e9es de la F1TV, mais la nuance est qu'on ne montre que les pilotes qui sont en train de se battre et que on leur assigne une couleur selon \u00e0 quel point ils sont proches. On a une plus-value sur la F1TV sans pour autant faire de monstres calculs. Pour info, les pilotes consid\u00e8r\u00e9s comme \u00eatant en train de se battre sont les pilotes \u00e0 moins de trois secondes les uns des autres et les couleurs sont suivantes : Vert : Dans la zone de DRS (Moins d'une seconde) Jaune : Plus d'une seconde Noir : Plus de deux secondes \"Exemple fen\u00eatre des d\u00e9passements\" La c'est l'historique des d\u00e9passements qui est affich\u00e9. On pourrait presque dire que c'est un affichage compl\u00eatement calcul\u00e9 car ce ne sont pas des informations disponibles directement sur la F1TV cependant je dirais que cela reste un hybride car il n'y a aucuns calculs. On regarde juste les diff\u00e9rences entre l'ancienne position d'un pilote et la nouvelle et on affiche les changements.","title":"Affichage Hybride"},{"location":"index.html#affichage-totalement-calcule","text":"L'affichage compl\u00eatement calcul\u00e9 est un type d'affichage qui ne montre aucune information trouv\u00e9e sur la page de la F1TV. C'est le premier affichage \u00e0 traiter l'information qu'il trouve et il retourne des informations nouvelles. La nuance avec les affichages pr\u00e9dictif est qu'il ne cr\u00e9e pas r\u00e9ellement de l'information, il la d\u00e9duit. Le but est de prendre un certain nombre d'informations trouv\u00e9es sur la page de la F1TV et de calculer des choses pour faire ressortir des tendances \u00e0 l'utilisateur. Cependant on reste sur des informations factuelles. Ce sont des infos d\u00e9duites que techniquement unn humain avec une bonne m\u00e9moire et fort en calcul mental pourrait faire. Mais la c'est fait automatiquement pour tous les pilotes et c'est affich\u00e9 de sorte \u00e0 faire ressortir les valeurs sp\u00e9ciales. Comme c'est un peu plus abstrait, je pense qu'un exemple vaut mieux que 1000 mots. \"Exemple de fen\u00eatre d'informations totalement calcul\u00e9es\" Ci dessus on peut voir un bon exemple. C'est une fen\u00eatre qui montre qui sont les pilotes les plus rapides et les moins rapides et qui montre la diff\u00e9rence de temps au tour. Cette information est totalement d\u00e9duite et n'est en aucun cas trouvable sur la F1TV mais elle n'est pas invent\u00e9e. Elle est simplement calcul\u00e9e. La formule est assez simple, je prend les cinq derniers temps au tour de tous les pilotes. Je fais une moyenne qui donne un temps. Et ensuite je trie les pilotes en fonction de ce temps et je n'affiche que les cinq plus rapide et les cinq plus lents. Ensuite il suffit de prendre le temps le plus rapide et faire une petite soustraction pour avoir l'\u00e9cart. C'est une stat assez int\u00e9ressante car elle lisse les diff\u00e9rences d'un tour \u00e0 l'autre et fait ressortir une tendance. On peut voir pour le grand prix de monaco 2023 par exemple, le moment ou les pneus pluie deviennent plus int\u00e9ressants que les pneus secs car on voit que les pilotes les plus rapides sont les pilotes de fond de grille qui ont chauss\u00e9 les pneus pluie en premier tandis que les plus lents sont les pilotes sur pneus secs vieux. Voici un bout de code qui s'occupe de faire les calculs : List <( int avg , string driverName )> averages = new List <( int avg , string driverName )>(); foreach ( DriverData driver in LiveDriverDataLogs [ LiveDriverDataLogs . Count - 1 ]) { //We want to recover the last 5 lap times List <( int lapTime , int lap )> laps = Storage . GetDriverLaptimes ( driver . Name , 5 ); if ( laps . Count > 0 ) { int avg = 0 ; foreach (( int lapTime , int lap ) lap in laps ) { avg += lap . lapTime ; } avg = avg / laps . Count ; averages . Add (( avg , driver . Name )); } }","title":"Affichage totalement calcul\u00e9"},{"location":"index.html#affichage-predictif","text":"C'est ici que ca devient vraiment dommage, le projet a mannqu\u00e9 de temps pour impl\u00e9menter des affichages pr\u00e9dictifs mais le potentiel est la ! Un affichage pr\u00e9dictif est un affichage qui cr\u00e9e des informations \u00e0 partir des infos qu'il a mais qui fait plus qu'un calcul. Le but est de tenter de deviner quelque chose. Voici des exemples d'affichages pr\u00e9dictifs qui pourraient \u00eatre mis en place averc l'architecture actuelle du projet : Si un pilote a des pneus depuis plus de 20 tours et que son temps au tour est en chute libre depuis cinq tours. Alors ce pilote va peut-\u00eatre devoir s'arr\u00eater. Si un pilote tourne une seconde au tour plus vite que le pilote devant lui et que ce pilote est \u00e0 10 secondes devant, alors il devrait pouvoir le rattraper d'ici dix tours. Si un arr\u00eat au stand est en moyenne de 23 secondes, alors un pilote 3\u00e8me ressortirais potentiellement 7\u00e8me si il s'arr\u00eate maintenant. Tous ces exemples sont des mini algorythmes pr\u00e9dictifs qui pourraient \u00eatre impl\u00e9ment\u00e9s assez facilement dans l'architecture actuelle du projet et pourraient apporter une immense plus-value si ils sont bien param\u00eatr\u00e9s. On peut m\u00eame imaginer que l'algorythme se corrige tout seul si il voit qu'il a eu tort pour que les course suivante il puisse mieux s'en sortir. Les possibilit\u00e9es sont infinies !","title":"Affichage pr\u00e9dictif"},{"location":"index.html#tests","text":"Alors la on arrive \u00e0 la GROSSE erreur de ce projet... Si je ne pouvais changer qu'une seule chose \u00e0 ma facon de faire le projet apr\u00e8s coup c'est ici que je ferai le changement. Les tests sont d'une importance absolument capitale mais si ils sont bien faits, c'est surtout un moyen ultra efficace de v\u00e9rifier que du nouveau code est performant et est beaucoup plus pratique \u00e0 utiliser. Je pense sans rire que j'aurais pu gagner plusieurs jours de travail si j'avais travaill\u00e9 diff\u00e9remment vis-a-vis des tests.","title":"Tests"},{"location":"index.html#comment-ca-cest-passe","text":"D\u00e8s la cr\u00e9ation du planning pr\u00e9visionnel j'ai fait une erreur capitale. J'ai mis les tests en fin de developpement des features... Et je ne leur ai laiss\u00e9 que tr\u00e8s peu de temps tout en les mettant au milieu du chemin critique ce qui les rends particuli\u00e8rement vuln\u00e9rables si une t\u00e2che du chemin critique est retard\u00e9e. En fait dans ce projet je voulais surtout \u00e9viter de faire comme certains projets que l'on a pu avoir pendant notre formation. C'est \u00e0 dire que je ne voulais surtout pas oublier la doc. Alors j'ai agenc\u00e9 le projet pour commencer par les fondations de la doc, puis en incluant les p\u00e9riodes de programmation et entre ces derni\u00e8re ajouter des Tests dans les trous. Le soucis c'est que du coup les projets \u00e9taient un peu le dernier truc dont je devais me soucier ce qui a \u00e9t\u00e9 une tr\u00e8s mauvaise id\u00e9e. Je me suis retrouv\u00e9 \u00e0 devoir mordre sur les jours de tests car les t\u00e2ches de programmation mettaient plus de temps que pr\u00e9vu (qui elles-m\u00eame auraient p\u00fb \u00eatre plus courte avec une bonne utilisation des tests) et je mme suis retrouv\u00e9 \u00e0 passer outre les tests pour avancer sur le reste du projet. J'ai donc du en panique \u00e0 la toute fin du projet construire quelques tests \"unitaires\" dont l'utilit\u00e9 est tr\u00e8s limit\u00e9e car tout le travail a d\u00e9ja \u00e9t\u00e9 fait et que vu la complexit\u00e9 qu'a pris le projet, faire de vrais tests unitaires est devenu un peu trop compliqu\u00e9 pour valoir le coup. Les seuls tests \"unitaires\" (Je l'\u00e9cris entre quotes car ce ne sont pas vraiment des tests unitaires mais plut\u00f4t des tests tout courts car ils ne sont pas sp\u00e9cifiques) qu'il y a dans le projet final sont des tests exclusivement tourn\u00e9s sur l'OCR. Ils sont d\u00e9ja vraiment pratiques car cela me permet de tester d'autres algorythmes d'OCR et voir si les r\u00e9sultats sont meilleurs ou non mais c'est juste un peu trop tard quoi... Les tests unitaires que j'ai impl\u00e9ment\u00e9s sont un peu tous pareils au niveau du fonctionnement : On choisit une image dans une liste d'images pr\u00e9par\u00e9es qui sont scens\u00e9e repr\u00e9senter le type de donn\u00e9es rencontr\u00e9es par l'application en temps normal On lis le nom de l'image que j'ai mis manuellement en indiquant ce qui \u00e9tait marqu\u00e9 sur l'image On fait un coup d'OCR sur l'image et on compare ce r\u00e9sultat avec la valeur que l'on est scens\u00e9 retrouver En pratique on est sur un code de ce style : [TestMethod()] public void SectorOCR_Test () { string directory = @\"./../../TestImages/Sectors/\" ; foreach ( string file in Directory . GetFiles ( directory )) { Bitmap image = ( Bitmap ) Image . FromFile ( file ); DriverSectorWindow sectorsWindow = new DriverSectorWindow ( image , new Rectangle ( 0 , 0 , image . Width , image . Height ), 1 , true ); string [] paths = file . Split ( '/' ); string fileName = paths [ paths . Length - 1 ]; fileName = fileName . Replace ( \".png\" , \"\" ); int timeMS = ( int ) sectorsWindow . DecodePng (); string time = Reader . ConvertMsToTime ( timeMS ); string [] checkDigits = fileName . Split ( '_' ); string [] digitsToCheck = time . Split ( ':' ); if ( time == \"0:00:000\" ) { Assert . AreEqual ( 0 , Convert . ToInt32 ( checkDigits [ 0 ])); } else { //The ConvertMSToTime will always return three chars so we need to make the checkDigits be also three chars while ( checkDigits . Length != 3 ) checkDigits = new [] { \"0\" }. Concat ( checkDigits ). ToArray (); for ( int i = 0 ; i < checkDigits . Length ; i ++) { //We need to convert to int first because sometimes we have \"08\" and \"8\" and in string its not the same but in int it is Assert . AreEqual ( Convert . ToInt32 ( checkDigits [ i ]), Convert . ToInt32 ( digitsToCheck [ i ])); } } } } Tout le code suppl\u00e9mentaire qui ne fait pas partie des \u00e9tapes cit\u00e9es est juste la pour manipuler le format des r\u00e9sultats pour qu'il soit comparable. \"Exemple d'\u00e9chantillons pour les tests\" Ce qui est pratique avec cette approche c'est qu'il est tr\u00e8s facile de rajouter des cas sp\u00e9cifiques et voir comment le programme les g\u00e8re. Si je vois que un certain nombre est souvent mal reconnu je peux faire expr\u00e8s de le mettre dans le dossier et modifier mon code d'OCR jusqu'\u00e0 ce que le test passe. Si j'avais eu plus de temps j'aurais s\u00fbrement pu ajouter de vrais tests unitaires qui testent des fonctions tr\u00e8s pr\u00e9cises. Par exemple verifier que les diff\u00e9rentes Windows sont bien appel\u00e9es et que les zones se cr\u00e9ent correctement ou m\u00eame plus simplement que la lecture du JSON au d\u00e9marrage marche bien. Il faut savoir que m\u00eame si je n'ai pas eu l'occasion d'\u00e9crire beaucoup de tests sous forme de code. Toute la phase de d\u00e9veloppement de l'OCR j'ai pass\u00e9 plus d'une heure par jour \u00e0 analyser les r\u00e9sultats. Je gardais toutes les images des WINDOWS et je notais dans le nom du fichier ce que l'algorythme trouvais et je passais en revue manuellement les centaines de r\u00e9sultats pour isoler ceux qui posaient probl\u00e8me. C'est comme ca que je me suis rendu compte par exemple que, avec cette police, les 4 et les 1 \u00e9taient souvent confondus. Donc m\u00eame si les tests automatis\u00e9s sont clairement insuffisant par rapport \u00e0 ce que j'aurais peut-\u00eatre du faire, j'ai pass\u00e9 \u00e9norm\u00e9ment de temps \u00e0 tester mon application.","title":"Comment ca c'est pass\u00e9"},{"location":"index.html#comment-ca-aurait-du-se-passer","text":"Si je devais refaire ce projet aujourd'hui je pense que j'utiliserais un peu la m\u00eame technique que pour la doc. J'aurais mis les t\u00e2ches de Tests directement au d\u00e9but du projet et j'aurais determin\u00e9 le squelette de l'application par la m\u00eame occasion. Je pense que j'aurais mis trois jours pour \u00e9crire tous les tests dont j'aurais besoin et j'aurais fait une strat\u00e9gie de TDD (Test Driven Developpement) par ce que je pense que ca marcherait vraiment super bien sur ce type de projet. J'aurais pris je pense 5 une dixaine d'images compl\u00eates de la F1TV de plusieurs GP diff\u00e9rents et j'aurais mis toutes les fen\u00eatres d\u00e9coup\u00e9es dans des fichiers avec des tests comme ceux que j'ai fait pour ce projet. Et comme ca je saurai que mon algo est bon uniquement quand il aura r\u00e9ussi \u00e0 passer tous les tests. Cela r\u00e8glerait le soucis que j'ai eu le plus : Me retrouver \u00e0 devoir changer l'OCR 5 fois par ce que \u00e0 chaque fois que je d\u00e9veloppe une nouvelle feature je me rends compte d'une faiblesse mon algorythme... Non seulement j'aurai eu beaucoup plus de facilit\u00e9 \u00e0 avancer sur le projet, mais en plus je pense que cela m'aurait fait gagner \u00e9norm\u00e9ment de temps non seulement car je n'ai plus \u00e0 tester tout \u00e0 la main mais en plus par ce que ca veut dire que quand l'OCR passe les tests je n'ai plus jamais \u00e0 m'en soucier.","title":"Comment ca aurait du se passer"},{"location":"index.html#lecons","text":"Je pense que dans mes futurs projets je mettrai les tests en d\u00e9but de projet plut\u00f4t que \u00e0 la fin et je ferai en sorte qu'ils fassent partie du chemin critique et que je ne puisse pas passer \u00e0 c\u00f4t\u00e9 sous pretexte que \"Je n'ai pas le temps\". Ecrire des tests c'est jamais marrant et c'est encore moins marrant quand ils nous emp\u00eachent d'avancer. Mais je suis convaincu que au final c'est un gain de temps et de s\u00e9r\u00e9nit\u00e9 incontournable.","title":"Lecons"},{"location":"index.html#resume-des-difficultes-techniques","text":"Ici je vais parler tr\u00e8s rapidement des difficult\u00e9es techniques rencontr\u00e9es. Si vous voulez tout savoir \u00e0 propos des difficult\u00e9es vous pouvez aller lire le journal de bord. C'est aussi pour \u00e9viter de me r\u00e9p\u00e8ter par rapport aux explications des diff\u00e9rents points dans l'analyse organique. Je vais pas non plus parler des difficult\u00e9es rencontr\u00e9e avec des choses que je n'ai pas gard\u00e9 dans le programme final donc il est normal que vous vous disiez qu'il n'y a pas eu tant de difficult\u00e9s que ca.","title":"R\u00e9sum\u00e9 des difficult\u00e9s techniques"},{"location":"index.html#browser-headless","text":"Il y avait plusieurs difficult\u00e9es techniques avec cette histoire de Browser Headless. Deja pouvoir lancer un browser headless et le contr\u00f4ler. C'est difficile car il faut trouver la bonne librairie et ensuite il faut trouver le bon exectuable de geckoDriver qui permette de faire fonctionner l'application m\u00eame si l'utilisateur n'a pas Firefox sur sa machine. Ensuite la seconde difficult\u00e9 est celle de ne pas se faire chopper comme un bot par le site de la F1TV. Il faut savoir qu'\u00e0 ce jour je n'ai toujours pas r\u00e9ussi \u00e0 faire croire \u00e0 la page de login de la F1TV que j'\u00e9tais un user normal en utilisant Selnnium mais au moins maintenant je peux acc\u00e8der aux vid\u00e9os tranquillement. Ce soucis de ne pas pouvoir se connecter avec la page de login \u00e0 la plus grosse difficult\u00e9 technique de cette partie du projet : la connexion automatique. Pour me connecter \u00e0 la F1TV avec un browser headless la seule solution que j'ai trouv\u00e9 a \u00e9t\u00e9 d'utiliser des cookies. Et pour que l'utilisateur n'aie pas \u00e0 aller chercher les siens dans son navigateur il a fallut trouver une technique pour aller les chercher directement sans lui demander son avis. Autre difficutl\u00e9, comme on travaille avec un site web que l'on ne contr\u00f4le pas, il faut trouver un moyen de g\u00e8rer les erreurs et de r\u00e9essayer parfois et attendre quand il faut dans les cas ou le chargement est long etc... Ensuite apr\u00e8s tout ca la derni\u00e8re difficult\u00e9 a \u00e9t\u00e9 de pouvoir contr\u00f4ler le firefox Headless assez bien pour qu'il puisse non seulement naviguer les pages mais aussi qu'il puisse cliquer sur des boutons qui ne s'affichent pas tout le temps. (Je ne vais pas mentioner la difficult\u00e9 que ca a \u00e9t\u00e9 de mettre le browser en 4K pour des raison de sant\u00e9 mentale)","title":"Browser Headless"},{"location":"index.html#ocr_2","text":"Les difficult\u00e9es ici sont dans un autre niveau. Chaque type de donn\u00e9e repr\u00e9sentait sa difficult\u00e9 \u00e0 lui tout seul sans compter l'optimisation. Pour commencer on a le texte pour les noms de pilotes. Il a fallu trouver un syst\u00e8me qui puisse reconnaitre le texte et qui puisse comparer le r\u00e9sultat avec les pilotes que l'on connait. Ensuite il a fallu trouver un moyen de detecter la diff\u00e9rence entre les fen\u00eatres de DRS o\u00f9 il est ouvert ou ferm\u00e9. Il fallait \u00e9galement faire attention \u00e0 ne pas faire de faux positifs. Pour les temps par secteurs il a fallu trouver des filtres qui permettent de bien diff\u00e9rencier les '1' et les '4' sans les confondre et il a aussi fallut trouver un moyen de filter l'image pour que dans le cas ou le texte serait en couleur ca fonctionne quand m\u00eame. (Car oui un filtre de nuances de gris ne marche pas super avec des couleurs sombres) Pour les pneus (le plus dur) il a fallut trouver un moyen de trouver sur toute la longeur de la zone la partie int\u00e9ressante. Ensuite il a fallut trouver une technique pour savoir quel type de pneu c'est en fonction de la couleur moyenne et ensuite le plus dur a \u00e9t\u00e9 d'isoler le chiffre du dessin autour car Tesseract aime pas les formes, le tout automatiquement. Pour les temps au tour il a fallut trouver un moyen de ne pas confondre les ponctuations avec des chiffres tout en ne les ratant pas. Et il a fallu trouver un moyen de detecter quand in\u00e9vitablement cela arrive quand m\u00eame. Et la derni\u00e8re difficult\u00e9 (la plus p\u00e9nible) a \u00e9t\u00e9 de detecter les \u00e9carts entre les pilotes. Il a fallut trouver une facon de decoder le texte en temps mais aussi de faire tout un syst\u00e8me qui d\u00e9tecte et r\u00e8gle les cas ou un ':' a \u00e9t\u00e9 oubli\u00e9 ou confondu tout en ne sachant pas si il \u00e9tait scens\u00e9 y en avoir \u00e0 la base car les valeurs peuvent varier entre '1_23.657' et '0.452'.","title":"OCR"},{"location":"index.html#stockage_1","text":"Pour ce qui est du stockage la grande difficult\u00e9 a \u00e9t\u00e9 de savoir quand un pilote avait avait finit un tour car chaque pilote finit son tour \u00e0 un moment diff\u00e9rent. Il a \u00e9galement fallut trouver un moyen de savoir les donn\u00e9es d'un pilote \u00e9taient logiques. Une difficult\u00e9 qui n'a pas \u00e9t\u00e9 compl\u00eatement d\u00e9pass\u00e9e est de savoir quand un pilote a fait un arr\u00eat aux stands car la detection de l'age des pneus est plus que mauvaise. Voila. Ce fut une petite liste non exhaustive de quelques difficult\u00e9s techniques que j'ai rencontr\u00e9 pendant ce projet.","title":"Stockage"},{"location":"index.html#optimisation-du-programme","text":"Ici je vais parler des techniques que j'ai utilis\u00e9 pour r\u00e9duire le temps de traitement de chaques images de 50 secondes \u00e0 un peu moins de 3 sur le processeur de mon laptop. En effet, dans les premi\u00e8res version du projet, traiter l'int\u00e9gralit\u00e9 d'une image pouvait prendre presque une minute. Ce qui est compliqu\u00e9 dans ce projet c'est qu'il y a un certain nombres de choses que je ne contr\u00f4le pas. En utilisant Tesseract, je me retrouve avec des incompressibles. En imaginant que l'OCR sur une image prenne 300ms, m\u00eame si j'avais 180 threads capables de faire cette t\u00e2che en m\u00eame temps, le temps de traitement sera toujours d'au moins 300ms. Cr\u00e9er une instance de Tesseract prend \u00e9galement du temps. Ma mission n'est donc pas d'arriver \u00e0 des temps de quelques dixaines de milisecondes mais plut\u00f4t de rajouter le moins de temps possible pendant le traitement et de tenter de faire le plus du choses possible en paralelle. I","title":"Optimisation du programme"},{"location":"index.html#ethique-du-projet","text":"[A remplir \u00e0 la fin du projet pour parler des questions ethiques du projet (Ex: Utilisation potentiellement abusive de la F1Tv ou L'histoire des cookies)]","title":"Ethique du projet"},{"location":"index.html#utilisation-de-chat-gpt","text":"[A remplir \u00e0 la fin du projet]","title":"Utilisation de Chat GPT"},{"location":"index.html#ameliorations-futures","text":"[A remplir dans les derni\u00e8res semaines du travail de dipl\u00f4me]","title":"Am\u00e9liorations futures"},{"location":"index.html#conclusion","text":"[A remplir la derni\u00e8re semaine du travail de dipl\u00f4me]","title":"Conclusion"},{"location":"index.html#notes-de-code","text":"","title":"Notes de code"},{"location":"index.html#glossaire","text":"","title":"Glossaire"},{"location":"CahierDesCharges.html","text":"Cahier des charges Cahier des charges \"Track Trends\" Travail de dipl\u00f4me Maxime Rohmer 2023 Contexte Je suis le \"Live Ticker\" charg\u00e9 de la Formule 1 pour le 20 minutes. On peut traduire cela comme commentateur de F1, avec tout de m\u00eame l'importante subtilit\u00e9 que je ne commente pas avec la voix, mais avec le clavier. Mes commentaires sont sous la forme de commentaires \u00e9crits live qui s'ajoutent au fur et \u00e0 mesure de l'\u00e9v\u00e8nement. Par exemple : \"Tour 28/54, Hamilton a fini par s'arr\u00eater et chausser des gommes tendres 13 tours apr\u00e8s Verstappen. L'Anglais va voir plus de 15 secondes \u00e0 rattraper, mais les gommes neuves et plus tendres que son rival devraient lui permettre s'il ne se fait pas trop ralentir par le trafic\". En g\u00e9n\u00e9ral avec un peu plus d'infos quand m\u00eame et cela tous les 3-4 tours Voici quelques exemples de pr\u00e9c\u00e9dents commentaires (Conseil : il y a un bouton pour montrer le feed dans l'ordre chronologique) : \"Commentaire Grand Prix de Belgique 2022\" \"Commentaire du Grand Prix de Singapour 2022\" \"Exemple commentaires\" Pendant un Grand Prix, je dois constamment : \u00c9crire ce qu'il se passe dans le grand prix et expliquer les enjeux Chercher r\u00e9guli\u00e8rement des m\u00e9dias \u00e0 inclure pour diversifier mon live (Tweets, Images etc.) Changer le titre et la description du live en fonction de l'\u00e9volution du Grand prix Et accessoirement regarder le grand prix pour y comprendre quelque chose Avec tout \u00e7a, il est tr\u00e8s difficile de garder un \u0153il sur la page DATA de la F1TV qui fournit pourtant des informations pr\u00e9cieuses. Je me retrouve parfois par exemple \u00e0 ne pas parler de d\u00e9passements dans le peloton, car ils ne sont pas retransmis \u00e0 la t\u00e9l\u00e9 alors que c'est une information importante. Autre exemple, occasionnellement le classement ne refl\u00e8te pas les vraies positions des pilotes. Les arr\u00eats aux stands font que du coup des pilotes qui devraient \u00eatre 15\u00e8mes se retrouvent 8\u1d49 puisqu'ils ne sont pas encore arr\u00eat\u00e9s. Cela peut de temps en temps pr\u00eater \u00e0 confusion. Projet Un outil de style compagnon sous forme d'application C# Windows Form qui r\u00e9cup\u00e8re en temps r\u00e9el les informations de la course et affiche les informations les plus importantes. Le but est non seulement de faciliter mon job, mais aussi faire en sorte d'am\u00e9liorer la plus-value de mon travail en me permettant de fournir des commentaires qui ne sont pas disponibles pour le tout venant qui regarde simplement le flux RTS. Exemples: Les pilotes qui sont proches (moins de 1-2 secondes qui sont donc en train de se battre). Les pilotes qui am\u00e9liorent leur temps au tour et ceux qui perdent le plus de temps Le classement pond\u00e9r\u00e9 tenant compte des futurs arr\u00eats au stand Maintenant afficher diff\u00e9remment les infos, c'est sympa, mais cela serait encore mieux de traiter ces data et de permettre des petites pr\u00e9dictions. Exemples : Pr\u00e9dire les arr\u00eats aux stands en prenant en compte les baisses de performances des pneus Pr\u00e9dire le pneu que le pilote va chausser s'il rentre aux stands dans le prochain tour Pr\u00e9dire dans combien de tour tel pilote va rattraper tel autre pilote Pr\u00e9dire combien de temps le pilote va perdre dans les stands en fonctions des arr\u00eats pr\u00e9c\u00e9dents R\u00e9alisation Malheureusement, la Formula 1 Management ne propose aucune API publique qui puisse nous permettre de faire ce projet \"simplement\". La raison la plus probable \u00e9tant qu'Amazon avec son service AWS propose exactement ce genre de services pour le flux t\u00e9l\u00e9vis\u00e9 et il doit y avoir un contrat d'exclusivit\u00e9. Il existe des API \"Pirates\" faites par la communaut\u00e9, le probl\u00e8me est qu'elles ne sont pas forc\u00e9ment des plus pratiques \u00e0 utiliser. Mais comme je poss\u00e8de un abonnement premium ++ \u00e0 la F1TV, j'ai acc\u00e8s pour chaque grand prix \u00e0 un flux vid\u00e9o nomm\u00e9 : DATA F1 CHANNEL Qui ressemble \u00e0 \u00e7a : \"Data channel exemple\" Donc la seule fa\u00e7on que je vois de r\u00e9cup\u00e9rer ces donn\u00e9es est de les prendre directement sur ce feed. M\u00eame si le but final de l'application est de faire pleins de choses super avec les datas, le gros du projet va surtout \u00eatre la r\u00e9cup\u00e9ration des donn\u00e9es et leur stockage. Les donn\u00e9es viennent du flux vid\u00e9o et ainsi dans un premier temps, il va falloir r\u00e9cup\u00e9rer d'une mani\u00e8re ou d'une autre des images qui viennent d'un grand prix en direct ou en rediffusion. Ensuite, dans un second temps, il faut lire les informations directement sur l'image en utilisant une librairie pr\u00e9vue pour (exemple Tesseract) et v\u00e9rifier l'int\u00e9grit\u00e9 de ces derni\u00e8res pour qu'on puisse ensuite les stocker. Dans un troisi\u00e8me temps, il faut stocker toutes ces donn\u00e9es dans une forme qui permette d'aller facilement faire des requ\u00eates de r\u00e9cup\u00e9ration et d\u00e9j\u00e0 pr\u00e9parer des m\u00e9thodes qui permettent de r\u00e9cup\u00e9rer des infos importantes (ex : la moyenne des cinq derniers tours, le temps moyen d'arr\u00eat etc.) pour faciliter la derni\u00e8re \u00e9tape Quand tout cela est fait, on peut ensuite s'amuser un peu avec les Data. La derni\u00e8re \u00e9tape est donc l'affichage. L'id\u00e9e est de cr\u00e9er une Windows Form qui contienne toutes ces informations dans un format beaucoup plus lisible et avec laquelle on pourrait interagir pour permettre de plus facilement commenter les Grands Prix. (exemple plus bas avec un croquis de ce \u00e0 quoi l'application pourrait ressembler) Voici la liste des donn\u00e9es qui pourraient \u00eatre affich\u00e9es (Non contractuel, simplement des id\u00e9es). Les pilotes qui sont proches (moins de 1-2 secondes qui sont donc en train de se battre). Les pilotes qui am\u00e9liorent leur temps au tour et ceux qui perdent le plus de temps Le classement pond\u00e9r\u00e9 tenant compte des futurs arr\u00eats au stand La moyenne de temps que les pilotes perdent dans les stands La performance moyenne des 5 types de pneus La moyenne de temps de chaque pilote sur le pneu actuel Le nombre de points que chaque pilote gagnerait selon sa position Le classement de la course Voire m\u00eame si c'est possible : Pr\u00e9dire les arr\u00eats aux stands en prenant en compte les baisses de performances des pneus Pr\u00e9dire le pneu que le pilote va chausser s'il rentre aux stands dans le prochain tour Pr\u00e9dire dans combien de tour tel pilote va rattraper tel autre pilote Pr\u00e9dire combien de temps le pilote va perdre dans les stands en fonctions des arr\u00eats pr\u00e9c\u00e9dents Pr\u00e9dire les temps au tour de chaque pilote selon l'usure des pneus Voici un exemple d'interface possible pour une page : \"Proto\" Cas d'utilisation *On va consid\u00e9rer que tous les user ont un abonnement F1 TV PRO Un user veut r\u00e9cup\u00e9rer les data : Il ouvre son navigateur et lance la page DATA de la F1 TV Il calibre la capture des data via le programme (pour la premi\u00e8re utilisation). Il confirme que les donn\u00e9es initiales sont bonnes (pour la premi\u00e8re utilisation). Il regarde tranquille son Grand Prix Le programme r\u00e9cup\u00e8re les data : Il r\u00e9cup\u00e8re des images depuis la F1TV Il utilise Tesseract (ou autre) pour en r\u00e9cup\u00e9rer les infos. Il met ces infos dans un Objet Pilote, dans un Objet course avec un attribut tour pour hi\u00e9rarchiser les data Pour ce qui est de l'affichage, l'id\u00e9e est de faire une application C# comme on l'a appris \u00e0 l'\u00e9cole, mais avec assez de style pour qu'elle puisse \u00eatre agr\u00e9able \u00e0 utiliser. Quand le programme affiche les data : Il prend les donn\u00e9es venant directement de la F1TV. Il affiche diff\u00e9remment les donn\u00e9es pour permettre une meilleure lisibilit\u00e9 Il interpr\u00e8te avec des r\u00e8gles plut\u00f4t simples certaines data pour faire des minipr\u00e9dictions ou aider \u00e0 la lecture Il r\u00e9cup\u00e8re des infos d'autres courses pour les comparer et proposer des pr\u00e9dictions plus int\u00e9ressantes Difficult\u00e9s techniques R\u00e9cup\u00e9rer un flux vid\u00e9o plut\u00f4t propre malgr\u00e9 les contres mesures de la F1 TV pour en emp\u00eacher la lecture par un logiciel Si on doit passer par une capture d'\u00e9cran, trouver un moyen de stocker les donn\u00e9es de mani\u00e8re \u00e0 pr\u00e9voir que parfois un tour pourrait avoir plus de donn\u00e9es qu'un autre, que le user peut mettre pause, ou m\u00eame qu\u2019il revienne en arri\u00e8re. D\u00e9velopper des algorithmes pour r\u00e9cup\u00e9rer les donn\u00e9es comme les diff\u00e9rents pneus utilis\u00e9s ou l'activation du DRS ainsi que d\u00e9velopper des moyens de nettoyer les r\u00e9sultats de l'OCR (Par exemple utiliser diff\u00e9rents champs redondants pour comparer les r\u00e9sultats) Stocker les donn\u00e9es sur une base pour les traiter plus tard tout en pr\u00e9voyant un moyen de voir les stats live D\u00e9velopper des algorithmes de pr\u00e9diction qui prennent en compte d'anciennes courses pour tenter de pr\u00e9dire des choses comme les arr\u00eats aux stands par exemple.","title":"Cahier des charges"},{"location":"CahierDesCharges.html#cahier-des-charges","text":"Cahier des charges \"Track Trends\" Travail de dipl\u00f4me Maxime Rohmer 2023","title":"Cahier des charges"},{"location":"CahierDesCharges.html#contexte","text":"Je suis le \"Live Ticker\" charg\u00e9 de la Formule 1 pour le 20 minutes. On peut traduire cela comme commentateur de F1, avec tout de m\u00eame l'importante subtilit\u00e9 que je ne commente pas avec la voix, mais avec le clavier. Mes commentaires sont sous la forme de commentaires \u00e9crits live qui s'ajoutent au fur et \u00e0 mesure de l'\u00e9v\u00e8nement. Par exemple : \"Tour 28/54, Hamilton a fini par s'arr\u00eater et chausser des gommes tendres 13 tours apr\u00e8s Verstappen. L'Anglais va voir plus de 15 secondes \u00e0 rattraper, mais les gommes neuves et plus tendres que son rival devraient lui permettre s'il ne se fait pas trop ralentir par le trafic\". En g\u00e9n\u00e9ral avec un peu plus d'infos quand m\u00eame et cela tous les 3-4 tours Voici quelques exemples de pr\u00e9c\u00e9dents commentaires (Conseil : il y a un bouton pour montrer le feed dans l'ordre chronologique) : \"Commentaire Grand Prix de Belgique 2022\" \"Commentaire du Grand Prix de Singapour 2022\" \"Exemple commentaires\" Pendant un Grand Prix, je dois constamment : \u00c9crire ce qu'il se passe dans le grand prix et expliquer les enjeux Chercher r\u00e9guli\u00e8rement des m\u00e9dias \u00e0 inclure pour diversifier mon live (Tweets, Images etc.) Changer le titre et la description du live en fonction de l'\u00e9volution du Grand prix Et accessoirement regarder le grand prix pour y comprendre quelque chose Avec tout \u00e7a, il est tr\u00e8s difficile de garder un \u0153il sur la page DATA de la F1TV qui fournit pourtant des informations pr\u00e9cieuses. Je me retrouve parfois par exemple \u00e0 ne pas parler de d\u00e9passements dans le peloton, car ils ne sont pas retransmis \u00e0 la t\u00e9l\u00e9 alors que c'est une information importante. Autre exemple, occasionnellement le classement ne refl\u00e8te pas les vraies positions des pilotes. Les arr\u00eats aux stands font que du coup des pilotes qui devraient \u00eatre 15\u00e8mes se retrouvent 8\u1d49 puisqu'ils ne sont pas encore arr\u00eat\u00e9s. Cela peut de temps en temps pr\u00eater \u00e0 confusion.","title":"Contexte"},{"location":"CahierDesCharges.html#projet","text":"Un outil de style compagnon sous forme d'application C# Windows Form qui r\u00e9cup\u00e8re en temps r\u00e9el les informations de la course et affiche les informations les plus importantes. Le but est non seulement de faciliter mon job, mais aussi faire en sorte d'am\u00e9liorer la plus-value de mon travail en me permettant de fournir des commentaires qui ne sont pas disponibles pour le tout venant qui regarde simplement le flux RTS. Exemples: Les pilotes qui sont proches (moins de 1-2 secondes qui sont donc en train de se battre). Les pilotes qui am\u00e9liorent leur temps au tour et ceux qui perdent le plus de temps Le classement pond\u00e9r\u00e9 tenant compte des futurs arr\u00eats au stand Maintenant afficher diff\u00e9remment les infos, c'est sympa, mais cela serait encore mieux de traiter ces data et de permettre des petites pr\u00e9dictions. Exemples : Pr\u00e9dire les arr\u00eats aux stands en prenant en compte les baisses de performances des pneus Pr\u00e9dire le pneu que le pilote va chausser s'il rentre aux stands dans le prochain tour Pr\u00e9dire dans combien de tour tel pilote va rattraper tel autre pilote Pr\u00e9dire combien de temps le pilote va perdre dans les stands en fonctions des arr\u00eats pr\u00e9c\u00e9dents","title":"Projet"},{"location":"CahierDesCharges.html#realisation","text":"Malheureusement, la Formula 1 Management ne propose aucune API publique qui puisse nous permettre de faire ce projet \"simplement\". La raison la plus probable \u00e9tant qu'Amazon avec son service AWS propose exactement ce genre de services pour le flux t\u00e9l\u00e9vis\u00e9 et il doit y avoir un contrat d'exclusivit\u00e9. Il existe des API \"Pirates\" faites par la communaut\u00e9, le probl\u00e8me est qu'elles ne sont pas forc\u00e9ment des plus pratiques \u00e0 utiliser. Mais comme je poss\u00e8de un abonnement premium ++ \u00e0 la F1TV, j'ai acc\u00e8s pour chaque grand prix \u00e0 un flux vid\u00e9o nomm\u00e9 : DATA F1 CHANNEL Qui ressemble \u00e0 \u00e7a : \"Data channel exemple\" Donc la seule fa\u00e7on que je vois de r\u00e9cup\u00e9rer ces donn\u00e9es est de les prendre directement sur ce feed. M\u00eame si le but final de l'application est de faire pleins de choses super avec les datas, le gros du projet va surtout \u00eatre la r\u00e9cup\u00e9ration des donn\u00e9es et leur stockage. Les donn\u00e9es viennent du flux vid\u00e9o et ainsi dans un premier temps, il va falloir r\u00e9cup\u00e9rer d'une mani\u00e8re ou d'une autre des images qui viennent d'un grand prix en direct ou en rediffusion. Ensuite, dans un second temps, il faut lire les informations directement sur l'image en utilisant une librairie pr\u00e9vue pour (exemple Tesseract) et v\u00e9rifier l'int\u00e9grit\u00e9 de ces derni\u00e8res pour qu'on puisse ensuite les stocker. Dans un troisi\u00e8me temps, il faut stocker toutes ces donn\u00e9es dans une forme qui permette d'aller facilement faire des requ\u00eates de r\u00e9cup\u00e9ration et d\u00e9j\u00e0 pr\u00e9parer des m\u00e9thodes qui permettent de r\u00e9cup\u00e9rer des infos importantes (ex : la moyenne des cinq derniers tours, le temps moyen d'arr\u00eat etc.) pour faciliter la derni\u00e8re \u00e9tape Quand tout cela est fait, on peut ensuite s'amuser un peu avec les Data. La derni\u00e8re \u00e9tape est donc l'affichage. L'id\u00e9e est de cr\u00e9er une Windows Form qui contienne toutes ces informations dans un format beaucoup plus lisible et avec laquelle on pourrait interagir pour permettre de plus facilement commenter les Grands Prix. (exemple plus bas avec un croquis de ce \u00e0 quoi l'application pourrait ressembler) Voici la liste des donn\u00e9es qui pourraient \u00eatre affich\u00e9es (Non contractuel, simplement des id\u00e9es). Les pilotes qui sont proches (moins de 1-2 secondes qui sont donc en train de se battre). Les pilotes qui am\u00e9liorent leur temps au tour et ceux qui perdent le plus de temps Le classement pond\u00e9r\u00e9 tenant compte des futurs arr\u00eats au stand La moyenne de temps que les pilotes perdent dans les stands La performance moyenne des 5 types de pneus La moyenne de temps de chaque pilote sur le pneu actuel Le nombre de points que chaque pilote gagnerait selon sa position Le classement de la course Voire m\u00eame si c'est possible : Pr\u00e9dire les arr\u00eats aux stands en prenant en compte les baisses de performances des pneus Pr\u00e9dire le pneu que le pilote va chausser s'il rentre aux stands dans le prochain tour Pr\u00e9dire dans combien de tour tel pilote va rattraper tel autre pilote Pr\u00e9dire combien de temps le pilote va perdre dans les stands en fonctions des arr\u00eats pr\u00e9c\u00e9dents Pr\u00e9dire les temps au tour de chaque pilote selon l'usure des pneus Voici un exemple d'interface possible pour une page : \"Proto\"","title":"R\u00e9alisation"},{"location":"CahierDesCharges.html#cas-dutilisation","text":"*On va consid\u00e9rer que tous les user ont un abonnement F1 TV PRO Un user veut r\u00e9cup\u00e9rer les data : Il ouvre son navigateur et lance la page DATA de la F1 TV Il calibre la capture des data via le programme (pour la premi\u00e8re utilisation). Il confirme que les donn\u00e9es initiales sont bonnes (pour la premi\u00e8re utilisation). Il regarde tranquille son Grand Prix Le programme r\u00e9cup\u00e8re les data : Il r\u00e9cup\u00e8re des images depuis la F1TV Il utilise Tesseract (ou autre) pour en r\u00e9cup\u00e9rer les infos. Il met ces infos dans un Objet Pilote, dans un Objet course avec un attribut tour pour hi\u00e9rarchiser les data Pour ce qui est de l'affichage, l'id\u00e9e est de faire une application C# comme on l'a appris \u00e0 l'\u00e9cole, mais avec assez de style pour qu'elle puisse \u00eatre agr\u00e9able \u00e0 utiliser. Quand le programme affiche les data : Il prend les donn\u00e9es venant directement de la F1TV. Il affiche diff\u00e9remment les donn\u00e9es pour permettre une meilleure lisibilit\u00e9 Il interpr\u00e8te avec des r\u00e8gles plut\u00f4t simples certaines data pour faire des minipr\u00e9dictions ou aider \u00e0 la lecture Il r\u00e9cup\u00e8re des infos d'autres courses pour les comparer et proposer des pr\u00e9dictions plus int\u00e9ressantes","title":"Cas d'utilisation"},{"location":"CahierDesCharges.html#difficultes-techniques","text":"R\u00e9cup\u00e9rer un flux vid\u00e9o plut\u00f4t propre malgr\u00e9 les contres mesures de la F1 TV pour en emp\u00eacher la lecture par un logiciel Si on doit passer par une capture d'\u00e9cran, trouver un moyen de stocker les donn\u00e9es de mani\u00e8re \u00e0 pr\u00e9voir que parfois un tour pourrait avoir plus de donn\u00e9es qu'un autre, que le user peut mettre pause, ou m\u00eame qu\u2019il revienne en arri\u00e8re. D\u00e9velopper des algorithmes pour r\u00e9cup\u00e9rer les donn\u00e9es comme les diff\u00e9rents pneus utilis\u00e9s ou l'activation du DRS ainsi que d\u00e9velopper des moyens de nettoyer les r\u00e9sultats de l'OCR (Par exemple utiliser diff\u00e9rents champs redondants pour comparer les r\u00e9sultats) Stocker les donn\u00e9es sur une base pour les traiter plus tard tout en pr\u00e9voyant un moyen de voir les stats live D\u00e9velopper des algorithmes de pr\u00e9diction qui prennent en compte d'anciennes courses pour tenter de pr\u00e9dire des choses comme les arr\u00eats aux stands par exemple.","title":"Difficult\u00e9s techniques"},{"location":"ManuelUtilisateur.html","text":"Manuel utilisateur Installation Pour Installer le projet, il faut aller sur le repo qui contient le projet et suivre les \u00e9tapes indiqu\u00e9es dans le ReadMe. Les \u00e9tapes ne sont pas r\u00e9p\u00e9t\u00e9es ici pour \u00e9viter de la redondance et pour \u00e9viter de devoir changer cette documentation si les versions ou les d\u00e9pendances \u00e0 installer changent. A quoi sert l'app ? Track Trends est une application Windows qui sert d'outil pour des abonn\u00e9s de la F1TV qui veulent exploiter le potentiel de la page DATA de la F1TV. L'application est faite pour un seul cas d'utilisation : R\u00e9cup\u00e9rer les infos d'un Grand Prix en cours ou d'une rediffusion et les afficher de mani\u00e8re plus int\u00e9ressante (en mettant en valeur des infos, en construisant un historique et en en interpr\u00e9tant d'autres). L'application est faite pour que l'utilisateur ait le moins de choses \u00e0 faire pour que tout fonctionne. Cela ne veut pas dire que l'utilisateur n'a rien \u00e0 faire et le but de ce document est d'expliquer les diff\u00e9rentes \u00e9tapes n\u00e9cessaires \u00e0 l'utilisation de l'application. Utilisation \"Simple\" Le but de cette section est de vous permettre d'apprendre \u00e0 lancer, stopper et modifier les variables de fonctionnement de l'application. Vous serez donc en mesure d'utiliser le programme correctement. Vous devez commencer par lancer le programme. \"Page de lancement\" Au lancement de l'app, vous devriez avoir une page comme ci-dessus. Il y a beaucoup d'infos, mais pour le moment ce qui nous int\u00e9resse, c'est le menu en haut \u00e0 gauche. \"Contr\u00f4les\" Si c'est la premi\u00e8re fois que vous utilisez l'application, il est possible qu'il n'y ait qu'un seul preset au lieu des quatre ci-dessous voire 0 si vous n'avez pas mis le preset inclus dans l'installation. Si vous n'avez aucun preset, passez directement \u00e0 l'\u00e9tape calibration avant de revenir ici. Comme vous pouvez le voir, en plus des presets s\u00e9lectionnables, il y a quatre boutons (dont deux gris\u00e9s) et une boite de texte avec un lien. Le lien est la chose la plus simple. C'est le lien du Grand Prix que vous voulez analyser. R\u00e9cup\u00e9rer le lien vers le flux Pour remplir la boite de texte pr\u00e9cit\u00e9e, il nous faut un lien et ce lien, on le trouve sur la F1TV . Quand vous vous rendez sur la F1TV la page principale devrait ressembler \u00e0 quelque chose comme \u00e7a (\u00e9videmment le contenu ne sera pas le m\u00eame) : \"Page principale de la F1TV\" Si vous ne vous \u00eates pas d\u00e9j\u00e0 connect\u00e9, connectez-vous et ensuite, allez sur la page du Grand Prix qui vous int\u00e9resse. Pour un Grand Prix en direct, normalement, il y a un endroit o\u00f9 vous pouvez cliquer pour acc\u00e9der au flux directement, et si vous voulez utiliser un Grand Prix en diff\u00e9r\u00e9, vous pouvez aller dans \"202x Season\" ou x est l'ann\u00e9e en cours, en l'occurrence 2023. Et l\u00e0, vous pourrez s\u00e9lectionner un Grand Prix. Dans tous les cas, quand vous avez s\u00e9lectionn\u00e9 votre Grand Prix, vous devriez vous retrouver sur une page de ce style : \"Page d'un Grand Prix sur la F1TV\" Et ici si vous \u00eates sur un Grand Prix en direct, vous pouvez directement copier l'URL de la page et si c'est un Grand Prix en diff\u00e9r\u00e9, vous pouvez directement naviguer avec la barre de progression vid\u00e9o du lecteur de la F1TV, Je conseille de la placer juste apr\u00e8s le d\u00e9part. Vous pouvez prendre le lien avant ou apr\u00e8s avoir chang\u00e9 le timecode de la vid\u00e9o, cela ne change rien, le lien ne contient pas votre progression dans la vid\u00e9o. Ensuite, vous pourrez juste mettre le lien que vous avez r\u00e9cup\u00e9r\u00e9 dans la boite de texte que l'on a vu pr\u00e9c\u00e9demment. Il faut simplement s'assurer que le lien contient bien le terme ?action=play \u00e0 la fin. Boutons Vous n'avez acc\u00e8s qu'\u00e0 deux boutons au lancement de l'application. Le premier nomm\u00e9 'Config' et le second 'Launch' Le bouton 'Config' permet d'ouvrir la page de calibration (voir section Calibration). Le bouton Launch permet de lancer le programme. Le texte peut changer (Par exemple en 'Retry' si le lancement a rat\u00e9) mais son utilit\u00e9 reste la m\u00eame : Lancer le navigateur virtuel qui sera requis pour traiter les donn\u00e9es. Si vous cliquez sur Launch tous les boutons devraient \u00eatre gris\u00e9s, c'est normal. Pendant le lancement du navigateur, l'application ne peut pas \u00eatre utilis\u00e9e pour \u00e9viter des conflits. Il faut juste attendre. Vous aurez \u00e9galement des fen\u00eatres d'invite de commande qui vont s'ouvrir et se fermer, c'est tout \u00e0 fait normal et il ne faut pas interagir avec tant que tout ne s'est pas stabilis\u00e9. Vous devriez voir enfin une fen\u00eatre comme celle ci : \"Page suspecte (Pas de panique, elle ne l'est pas)\" Il ne faut pas fermer cette fen\u00eatre. C'est la seule chose qui nous relie au navigateur virtuel qu'utilise l'application. Il ne faut pas la fermer, par contre, vous pouvez la r\u00e9duire et la laisser en background, c'est d'ailleurs ce que je vous recommande de faire. Peu apr\u00e8s l'ouverture de cette fen\u00eatre, vous devriez avoir acc\u00e8s \u00e0 trois boutons. Bouton 'Config' qui fait la m\u00eame chose qu'avant Bouton 'Re Launch' qui remplace le bouton 'Launch' qui permet de relancer le processus dans le cas ou vous auriez envie de changer de lien ou de preset. Bouton 'Start' lance le processus de r\u00e9cup\u00e9ration de donn\u00e9es. Si vous cliquez sur ce dernier, vous lancerez le programme. Cela peut prendre quelque secondes \u00e0 s'actualiser, mais tr\u00e8s vite vous devriez vous trouver devant une page comme celle-ci : \"D\u00e9but du programme\" Vous n'aurez alors qu'un seul bouton disponible : le bouton 'Stop'. Vous pouvez arr\u00eater le programme quand vous le voulez. ATTENTION : Avant de fermer le programme, merci de stopper d'abord le processus. Si vous stoppez le processus, vous devriez vous retrouver dans la m\u00eame situation que juste apr\u00e8s avoir lanc\u00e9 le navigateur virtuel : \"Arr\u00eat du programme\" Vous pouvez voir en dessous la derni\u00e8re image que le programme a d\u00e9cod\u00e9e et vous avez de nouveau acc\u00e8s aux trois boutons expliqu\u00e9s pr\u00e9c\u00e9demment. Quand l'application a \u00e9t\u00e9 lanc\u00e9e, vous pouvez aussi cliquer sur les donn\u00e9es affich\u00e9es, mais ces comportements sont expliqu\u00e9s dans la section \"Comprendre les donn\u00e9es\" Voil\u00e0 ! Vous savez comment lancer, stopper et modifier les variables de fonctionnement de l'application. Maintenant, vous pouvez passer directement \u00e0 la section \"Comprendre les donn\u00e9es\" si vous voulez apprendre comment utiliser ce que propose le programme ou passer \u00e0 la section \"Calibration\" si vous voulez apprendre \u00e0 configurer l'application et cr\u00e9er des Presets. Calibration Ici, vous apprendrez \u00e0 configurer l'application pour cr\u00e9er vos propres presets et surtout pourquoi vous auriez besoin de le faire et \u00e0 quoi servent ces fameux \"Preset\". Vous serez en mesure d'adapter le fonctionnement de l'application, qu'elle soit conforme aux diff\u00e9rents changements d'interface et de pilotes pr\u00e9sents. Pourquoi calibrer l'application et cr\u00e9er un Preset ? Le programme que vous allez utiliser utilise de l'OCR (Optical Character Recognition). Cela veut dire que le programme va aller regarder chaque image de la F1TV et convertir ce qu'il y a marqu\u00e9 dessus en donn\u00e9es que l'on peut r\u00e9cup\u00e9rer automatiquement. Sauf que pour y arriver, le programme a besoin de savoir o\u00f9 se trouve le texte important et surtout quel type de donn\u00e9e, il est cens\u00e9 trouver \u00e0 tel ou tel endroit. Pour \u00eatre plus pr\u00e9cis, il a \u00e9galement besoin de savoir quels pilotes peuvent se trouver dans la course actuelle. Et pour qu'il sache tout cela, il y a des fichiers de configuration nomm\u00e9s \"Presets\" qui doivent contenir toutes ces informations. Et pour les cr\u00e9er, il existe la page de calibration qui va demander \u00e0 un humain de lui fournir les infos qu'il ne peut pas trouver par lui-m\u00eame. Normalement, il devrait y avoir un Preset fournis par l'application quand vous la t\u00e9l\u00e9chargez depuis le repo mais vous pouvez avoir besoin de faire votre propre \"Preset\" dans deux cas : Quand les pilotes pr\u00e9sents ne sont pas les m\u00eames (Ex : Si un pilote doit \u00eatre remplac\u00e9 ou si de nouveaux pilotes sont arriv\u00e9s ou bien que d'autres aient pris leur retraite) Quand vous voulez utiliser des Grand Prix fait d'une autre ann\u00e9e que celle pour laquelle le \"Preset\" original a \u00e9t\u00e9 pr\u00e9vu. (L'ann\u00e9e devrait \u00eatre mentionn\u00e9e dans le nom du preset) Il est d\u00e9conseill\u00e9 d'utiliser ce projet pour des Grand Prix couru avant 2022, car l'interface de la page Data de la F1TV peut avoir trop chang\u00e9, mais vous pouvez toujours essayer pour voir en faisant votre propre Preset pour des ann\u00e9es comme 2021 ou 2020. Comment cr\u00e9er son Preset Pour cr\u00e9er son Preset, il faut utiliser la page Settings ou Config de l'application. Pour y acc\u00e9der, il faut simplement cliquer sur le bouton \"Config\" de la page principale et vous serez accueilli par une page qui devrait ressembler \u00e0 celle ci dessous : \"Page de config vide\" La seule diff\u00e9rence est que vous aurez s\u00fbrement moins de Presets dans la liste des Presets voir, vous pouvez n'en avoir aucuns. Comme vous pouvez le voir, vous n'avez pas \u00e9norm\u00e9ment d'options disponibles quand vous lancez simplement l'application. Vous n'avez acc\u00e8s qu'aux boutons \"Start the browser\" et \"Add\",\"Remove\". On verra \u00e0 quoi servent ces deux derni\u00e8res plus tard, mais dans un premier temps, on va se pencher sur le bouton Start. Vous pouvez voir qu'en plus de ce bouton, vous pouvez aussi rentrer du texte dans la boite de texte \"Grand Prix URL\" ce qui n'est pas un hasard. Le but, c'est de mettre le lien vers un Grand Prix pour pouvoir avoir une image de test. Pour voir comment r\u00e9cup\u00e9rer cet URL, voir la section (Utilisation \"simple\" \u2192 \"R\u00e9cup\u00e9rer le lien vers le flux\") Quand l'URL a \u00e9t\u00e9 plac\u00e9e au bon endroit, on peut cliquer sur le bouton \"Start\" et attendre. Si vous n'avez pas encore lu la partie \"Utilisation \"simple\"\", vous allez voir des invites de commandes s'ouvrir et se fermer et c'est tout \u00e0 fait normal. Il faut attendre d'avoir une invite de commande qui reste ouverte et qui ressemble \u00e0 celle ci dessous avant de faire quoi que ce soit. Ensuite, vous pourrez simplement r\u00e9duire cette fen\u00eatre et retourner sur la page de configuration. \"Invite de commande suspecte, mais normale\" Ensuite, si vous attendez un peu (le processus peut prendre jusqu'\u00e0 plusieurs dizaines de secondes), vous aurez soit une erreur, soit vous vous retrouverez avec une page qui ressemble \u00e0 \u00e7a : \"Page de config amorc\u00e9e\" Et l\u00e0 on voit que toutes les options ont \u00e9t\u00e9 d\u00e9bloqu\u00e9es. Avant de se pencher sur les nouvelles options, on va rester sur le fonctionnement g\u00e9n\u00e9ral. Le bouton \"Get a newer image\" permet d'avoir une image plus r\u00e9cente de la F1TV. C'est utile par exemple, car comme on le voit sur l'exemple, l'interface de la F1TV n'a pas encore eu le temps de disparaitre. Mais cela peut aussi \u00eatre utile plus tard dans le cas o\u00f9 vous voudriez que certaines infos s'affichent. Le bouton \"Reset Emulator\", lui, permet, comme son nom l'indique, de relancer le navigateur virtuel que l'on a lanc\u00e9 avec le bouton \"Start the browser\". Cela peut \u00eatre utile dans le cas ou l'image ne soit pas l'image que l'on attendait ou si on veut tenter le coup avec un autre URL. Maintenant, on peut passer \u00e0 la cr\u00e9ation des zones et des windows Cr\u00e9ation des Zones et des Windows Sans trop rentrer dans les d\u00e9tails, l'application a besoin de connaitre la localisation de certains \u00e9l\u00e9ments. Elle a besoin de savoir : O\u00f9 se trouve la zone g\u00e9n\u00e9rale des infos pilotes O\u00f9 se trouve chaque pilote O\u00f9 se trouvent les informations pour chacuns de ces pilotes Le programme de calibration est fait pour que vous n'ayez besoin de donner que les informations qu'il ne peut pas deviner. Il y a deux \u00e9tapes : La premi\u00e8re \u00e9tape est de donner les dimensions de la zone principale d'informations. Pour ce faire, il faut dans un premier temps cliquer sur le bouton \"Create the main zone\" qui devrait afficher le texte suivant en dessous apr\u00e8s avoir cliqu\u00e9 : \"Texte indiquant le nombre de points qu'il reste \u00e0 ajouter\" Ensuite, il va falloir cliquer directement sur l'image pour indiquer le coin en haut \u00e0 gauche et le point en bas \u00e0 droite de la zone rectangulaire qui contient les informations. Vous pouvez voir en bleu ci-dessous les coins du rectangle et en rouge l'endroit o\u00f9 il faut cliquer. \"Infographie expliquant o\u00f9 placer les points de la zone principale\" Il faut faire attention \u00e0 bien prendre tous les pilotes MAIS il faut \u00e9galement faire attention \u00e0 ne pas prendre le texte alentours. \"Texte qui ne doit pas \u00eatre dans la zone s\u00e9lectionn\u00e9e\" Ci dessus, on peut voir du texte barr\u00e9 en violet. Il ne faut surtout pas que la zone vienne inclure ces bouts de texte ou toute la calibration pourrait rater. Ensuite, si vous avez bien fait votre travail, au deuxi\u00e8me clic sur la page, vous aurez quelques secondes de flottement et ensuite, vous devriez avoir les contours que vous avez dessin\u00e9s affich\u00e9s en jaune avec pleins de plus petites zones \u00e0 l'int\u00e9rieur comme ci-dessous : \"Zone principale avec les zones de pilotes automatiquement calcul\u00e9es\" Le programme a non seulement pris en compte la zone, mais il a aussi d\u00e9tect\u00e9 automatiquement o\u00f9 se trouvaient les zones de chaque pilote. Si vous n'avez pas un r\u00e9sultat comme celui-l\u00e0 et/ou que les zones ne sont pas bien align\u00e9es sur les pilotes sur l'image, je vous conseille de r\u00e9essayer de cr\u00e9er la zone principale. La seconde \u00e9tape est de montrer o\u00f9 sont les fen\u00eatres d'infos au programme. Vous aurez peut-\u00eatre remarqu\u00e9 qu'en dessous de l'image principale, quand l'affichage jaune a \u00e9t\u00e9 appliqu\u00e9, une image est apparue. Elle devrait ressembler \u00e0 quelque chose dans ce style : \"Image d'une zone de pilote\" C'est une zone de pilote de l'image que l'on voit au-dessus et c'est ici que l'on va indiquer les zones int\u00e9ressantes. Pour ce faire, il faut cliquer sur le bouton \"Create Windows\" et ce message devrait s'afficher un peu en dessous : \"Texte indiquant le nombre de windows \u00e0 ajouter\" Cela nous indique le nombre de fen\u00eatres qu'il nous reste \u00e0 s\u00e9lectionner. La technique est la m\u00eame que pour la grande zone sauf que l\u00e0, il faut le faire neuf fois. Et il faut absolument le faire dans l'ordre de gauche \u00e0 droite. Le but est de tout s\u00e9lectionner et d'arriver \u00e0 ce r\u00e9sultat : \"Exemple de fen\u00eatres d\u00e9coup\u00e9es\" Dans l'ordre, de gauche \u00e0 droite, on veut r\u00e9cup\u00e9rer : La position du pilote Son \u00e9cart avec le leader (en l'occurrence comme c'est le leader que l'on voit, on doit s\u00e9lectionner la fen\u00eatre ou il est marqu\u00e9 \"LEADER\") Son dernier temps au tour La fen\u00eatre DRS L'\u00e9tat de ses pneus Son nom Son temps au secteur 1 Son temps au secteur 2 Son temps au secteur 3 Ajout du nom des pilotes La derni\u00e8re info qui manque \u00e0 notre programme est la liste des pilotes pr\u00e9sents. On peut interagir avec cette liste ici : \"Menu d'interaction avec la liste de pilotes\" Dans la boite de texte, on peut \u00e9crire le nom d'un pilote qui peut \u00eatre trouv\u00e9 sur l'image, on peut l'ajouter \u00e0 la liste et si on a fait une erreur, on peut le retirer. Et c'est \u00e0 peu pr\u00e8s tout. Il ne reste maintenant plus qu'\u00e0 mettre tous les noms. TIP : Il peut \u00eatre int\u00e9ressant d'ajouter le nom des pilotes de r\u00e9serve pour \u00e9viter de venir changer son preset si un pilote n'est pas pr\u00e9sent pour cause de maladie ou de blessure. Il faut simplement faire attention de ne pas non plus mettre trop de noms pour \u00e9viter que le programme puisse confondre. Et voil\u00e0 ! On a toutes les infos n\u00e9cessaires. La page de configuration devrait ressembler \u00e0 \u00e7a : \"Image de la page de config apr\u00e8s avoir ajout\u00e9 toutes les infos\" Il ne reste plus qu'\u00e0 le sauvegarder. Sauvegarder le nouveau Preset Pour sauvegarder le preset, on peut facilement lui donner un nom dans la zone de texte sous les trois boutons de contr\u00f4le des Presets et cliquer sur Save current Preset. Et voil\u00e0, vous savez d\u00e9sormais comment cr\u00e9er vos propres presets et \u00e0 quoi ils servent. Vous pouvez donc adapter le fonctionnement du projet pour qu'il soit conforme aux changements de pilotes et d'interface avec les ann\u00e9es. Vous pouvez ainsi utiliser l'application normalement en s\u00e9lectionnant votre nouveau preset \u00e0 chaque fois. Load un Preset existant Le loading est un peu sp\u00e9cial. Il faut d\u00e9j\u00e0 avoir lanc\u00e9 le navigateur virtuel pour activer les boutons. Ensuite, il suffit de s\u00e9lectionner un preset et de cliquer sur \"Load the Preset\" et attendre un petit peu. L'affichage sera un peu bizarre, mais c'est normal, il ne faut pas s'inqui\u00e9ter si la zone de pilote affich\u00e9e en dessous est correcte. \"Exemple de ce \u00e0 quoi peut ressembler un loading et l'affichage bizarre que \u00e7a implique\" \u00c0 partir de l\u00e0, il est facile de faire son propre preset en changeant juste les noms des pilotes par exemple. Comprendre les donn\u00e9es Ici, vous allez apprendre \u00e0 utiliser l'application et ses donn\u00e9es en comprenant \u00e0 quoi elles servent et comment elles sont affich\u00e9es. \"Image de l'application en cours de fonctionnement depuis quelques minutes\" Il y a 5 types de donn\u00e9es : Overtakes Cette fen\u00eatre est loin d'\u00eatre compl\u00e8tement op\u00e9rationnelle, mais elle permet de voir l'historique des d\u00e9passements et des changements de position. Il faut scroller pour voir les plus r\u00e9cents. Je dirais que pour le moment, c'est la moins int\u00e9ressante et elle ne fonctionne pas toujours super. Last Five Laps \"Image de la fen\u00eatre des cinq derniers tours\" En total contraste avec la fen\u00eatre Overtakes, ici, on a peut-\u00eatre la fen\u00eatre la plus int\u00e9ressante de toutes. On peut voir les pilotes actuellement les plus rapides et plus lents sur le circuit. Le calcul est fait sur la moyenne des cinq derniers tours de chaque pilote. Cela permet de se faire une id\u00e9e de la situation des pilotes. Cela peut servir par exemple \u00e0 d\u00e9tecter quand un pneu est plus rapide que les autres quand on voit des pilotes dans le milieu ou bas de tableau appara\u00eetre dans le plus rapide. Il est par exemple int\u00e9ressant de voir la diff\u00e9rence de vitesse entre les pneus secs et pluie sur un circuit qui commence \u00e0 s\u00e9cher. On peut progressivement voir les pilotes en pneus secs devenir de plus en plus rapides alors que ce sont des pilotes beaucoup moins rapide en temps normal. On peut cliquer sur n'importe lequel de ces pilotes pour voir ses infos appara\u00eetre dans la fen\u00eatre Driver Infos pour voir les cinq derniers tours par exemple ou les pneus qu'il est en train de chausser. Battles \"Fen\u00eatre des batailles\" Cette fen\u00eatre est \u00e9galement assez int\u00e9ressante, car elle permet de voir les pilotes qui sont en train de se battre. Il est estim\u00e9 qu'un pilote qui se bat est un pilote qui est \u00e0 trois secondes ou moins du pilote devant lui. Ne sont affich\u00e9es que les batailles de quatre pilotes maximums dans l'ordre du classement. Si un pilote est entre 2 et 3 secondes de son adversaire, l'\u00e9cart est en blanc. Entre 1 et 2 secondes, il est \u00e9crit en jaune. Dans la zone du DRS (Une seconde ou moins) il est \u00e9crit en vert. On peut aussi cliquer sur le nom d'un pilote pour afficher ses infos dans la fen\u00eatre des infos pilote. Cette fen\u00eatre permet de mieux comprendre qui sont les pilotes qu'il faut garder \u00e0 l'\u0153il \u00e0 la TV ou simplement qui sont les pilotes qui sont tr\u00e8s proches et qui pourraient se mettre la pression pour les arr\u00eats aux stands, car jamais un pilote ne reste \u00e0 moins de trois secondes d'un autre si \u00e7a n'est pas pour tenter quelque chose au niveau strat\u00e9gique. Driver infos \"Fen\u00eatre des infos pilote\" Ici, on peut voir toutes les infos lives d'un pilote. Rien de fou \u00e0 dire sur la partie de gauche, par contre la partie de droite est un peu plus int\u00e9ressante, car elle contient un historique de ses cinq derniers tours (dans la photo, il n'y en a qu'un seul, mais au fur et \u00e0 mesure de la course cela se remplit). On peut non seulement voir les cinq derniers temps au tour, mais on peut aussi cliquer sur chacun d'eux pour voir les secteurs associ\u00e9s. \"Exemple d'affichage des secteurs d'un temps au tour\" ; Live Ranking \"Fen\u00eatre du classement en direct\" Ceci est la fen\u00eatre la plus simple. C'est tout b\u00eatement le classement actuel avec les \u00e9carts avec le leader. Note : On peut \u00e9galement cliquer sur les diff\u00e9rents pilotes pour en afficher les infos dans la fen\u00eatre infos pilote. Erreurs Il est tr\u00e8s probable que si vous utilisez beaucoup cette application, vous allez rencontrer des erreurs. Ici, vous pourrez apprendre ce qu'elles veulent dire et ce que vous pouvez faire pour y rem\u00e9dier. Il n'existe pas un tr\u00e8s grand nombre d'erreurs, mais voici les principales Erreur 100 (Souvent au premier d\u00e9marrage) Cette erreur signale un probl\u00e8me avec la r\u00e9cup\u00e9ration de cookies. Cela peut \u00eatre caus\u00e9 par une mauvaise installation de python ou si vous ne vous \u00eates pas connect\u00e9s r\u00e9cemment \u00e0 la F1TV depuis Chrome ou que vous n'avez tout simplement pas install\u00e9 Chrome sur votre machine. Erreur 101 (Moins r\u00e9current qu'\u00e0 une \u00e9poque) Cette erreur veut dire qu'il y a d\u00e9j\u00e0 une instance de navigateur ouverte. Pour r\u00e9gler cette erreur, regarder dans votre barre des t\u00e2ches les invites de commande ouvertes et fermez celui qui correspond \u00e0 un ancien navigateur. (Si c'est d\u00e9j\u00e0 fait alors en derniers recours, vous pouvez chercher dans le gestionnaire des t\u00e2ches et chercher \"GeckoDriver.exe\") Erreur 102 Cela peut \u00eatre une erreur qui arrive, car vous n'avez pas donn\u00e9 un URL valide pour la F1TV ou par ce que vous ne vous \u00eates pas connect\u00e9 r\u00e9cemment \u00e0 la F1TV depuis chrome (Si vous veniez de le faire alors, attendez un peu et r\u00e9essayez). Parfois cela peut prendre un peu de temps \u00e0 s'actualiser). Erreur 103 L'URL est invalide Erreur 104 L'URL est invalide Erreur 105 Cette erreur indique que soit vous avez donn\u00e9 un URL qui ne correspond \u00e0 aucun Grand Prix, soit que la vid\u00e9o a mis trop de temps \u00e0 charger. Vous pouvez essayer de vous brancher en Ethernet ou simplement r\u00e9essayer si vous \u00eates s\u00fbr de votre URL. Erreur 106 M\u00eame chose que pour la 105","title":"Manuel utilisateur"},{"location":"ManuelUtilisateur.html#manuel-utilisateur","text":"","title":"Manuel utilisateur"},{"location":"ManuelUtilisateur.html#installation","text":"Pour Installer le projet, il faut aller sur le repo qui contient le projet et suivre les \u00e9tapes indiqu\u00e9es dans le ReadMe. Les \u00e9tapes ne sont pas r\u00e9p\u00e9t\u00e9es ici pour \u00e9viter de la redondance et pour \u00e9viter de devoir changer cette documentation si les versions ou les d\u00e9pendances \u00e0 installer changent.","title":"Installation"},{"location":"ManuelUtilisateur.html#a-quoi-sert-lapp","text":"Track Trends est une application Windows qui sert d'outil pour des abonn\u00e9s de la F1TV qui veulent exploiter le potentiel de la page DATA de la F1TV. L'application est faite pour un seul cas d'utilisation : R\u00e9cup\u00e9rer les infos d'un Grand Prix en cours ou d'une rediffusion et les afficher de mani\u00e8re plus int\u00e9ressante (en mettant en valeur des infos, en construisant un historique et en en interpr\u00e9tant d'autres). L'application est faite pour que l'utilisateur ait le moins de choses \u00e0 faire pour que tout fonctionne. Cela ne veut pas dire que l'utilisateur n'a rien \u00e0 faire et le but de ce document est d'expliquer les diff\u00e9rentes \u00e9tapes n\u00e9cessaires \u00e0 l'utilisation de l'application.","title":"A quoi sert l'app ?"},{"location":"ManuelUtilisateur.html#utilisation-simple","text":"Le but de cette section est de vous permettre d'apprendre \u00e0 lancer, stopper et modifier les variables de fonctionnement de l'application. Vous serez donc en mesure d'utiliser le programme correctement. Vous devez commencer par lancer le programme. \"Page de lancement\" Au lancement de l'app, vous devriez avoir une page comme ci-dessus. Il y a beaucoup d'infos, mais pour le moment ce qui nous int\u00e9resse, c'est le menu en haut \u00e0 gauche. \"Contr\u00f4les\" Si c'est la premi\u00e8re fois que vous utilisez l'application, il est possible qu'il n'y ait qu'un seul preset au lieu des quatre ci-dessous voire 0 si vous n'avez pas mis le preset inclus dans l'installation. Si vous n'avez aucun preset, passez directement \u00e0 l'\u00e9tape calibration avant de revenir ici. Comme vous pouvez le voir, en plus des presets s\u00e9lectionnables, il y a quatre boutons (dont deux gris\u00e9s) et une boite de texte avec un lien. Le lien est la chose la plus simple. C'est le lien du Grand Prix que vous voulez analyser.","title":"Utilisation \"Simple\""},{"location":"ManuelUtilisateur.html#recuperer-le-lien-vers-le-flux","text":"Pour remplir la boite de texte pr\u00e9cit\u00e9e, il nous faut un lien et ce lien, on le trouve sur la F1TV . Quand vous vous rendez sur la F1TV la page principale devrait ressembler \u00e0 quelque chose comme \u00e7a (\u00e9videmment le contenu ne sera pas le m\u00eame) : \"Page principale de la F1TV\" Si vous ne vous \u00eates pas d\u00e9j\u00e0 connect\u00e9, connectez-vous et ensuite, allez sur la page du Grand Prix qui vous int\u00e9resse. Pour un Grand Prix en direct, normalement, il y a un endroit o\u00f9 vous pouvez cliquer pour acc\u00e9der au flux directement, et si vous voulez utiliser un Grand Prix en diff\u00e9r\u00e9, vous pouvez aller dans \"202x Season\" ou x est l'ann\u00e9e en cours, en l'occurrence 2023. Et l\u00e0, vous pourrez s\u00e9lectionner un Grand Prix. Dans tous les cas, quand vous avez s\u00e9lectionn\u00e9 votre Grand Prix, vous devriez vous retrouver sur une page de ce style : \"Page d'un Grand Prix sur la F1TV\" Et ici si vous \u00eates sur un Grand Prix en direct, vous pouvez directement copier l'URL de la page et si c'est un Grand Prix en diff\u00e9r\u00e9, vous pouvez directement naviguer avec la barre de progression vid\u00e9o du lecteur de la F1TV, Je conseille de la placer juste apr\u00e8s le d\u00e9part. Vous pouvez prendre le lien avant ou apr\u00e8s avoir chang\u00e9 le timecode de la vid\u00e9o, cela ne change rien, le lien ne contient pas votre progression dans la vid\u00e9o. Ensuite, vous pourrez juste mettre le lien que vous avez r\u00e9cup\u00e9r\u00e9 dans la boite de texte que l'on a vu pr\u00e9c\u00e9demment. Il faut simplement s'assurer que le lien contient bien le terme ?action=play \u00e0 la fin.","title":"R\u00e9cup\u00e9rer le lien vers le flux"},{"location":"ManuelUtilisateur.html#boutons","text":"Vous n'avez acc\u00e8s qu'\u00e0 deux boutons au lancement de l'application. Le premier nomm\u00e9 'Config' et le second 'Launch' Le bouton 'Config' permet d'ouvrir la page de calibration (voir section Calibration). Le bouton Launch permet de lancer le programme. Le texte peut changer (Par exemple en 'Retry' si le lancement a rat\u00e9) mais son utilit\u00e9 reste la m\u00eame : Lancer le navigateur virtuel qui sera requis pour traiter les donn\u00e9es. Si vous cliquez sur Launch tous les boutons devraient \u00eatre gris\u00e9s, c'est normal. Pendant le lancement du navigateur, l'application ne peut pas \u00eatre utilis\u00e9e pour \u00e9viter des conflits. Il faut juste attendre. Vous aurez \u00e9galement des fen\u00eatres d'invite de commande qui vont s'ouvrir et se fermer, c'est tout \u00e0 fait normal et il ne faut pas interagir avec tant que tout ne s'est pas stabilis\u00e9. Vous devriez voir enfin une fen\u00eatre comme celle ci : \"Page suspecte (Pas de panique, elle ne l'est pas)\" Il ne faut pas fermer cette fen\u00eatre. C'est la seule chose qui nous relie au navigateur virtuel qu'utilise l'application. Il ne faut pas la fermer, par contre, vous pouvez la r\u00e9duire et la laisser en background, c'est d'ailleurs ce que je vous recommande de faire. Peu apr\u00e8s l'ouverture de cette fen\u00eatre, vous devriez avoir acc\u00e8s \u00e0 trois boutons. Bouton 'Config' qui fait la m\u00eame chose qu'avant Bouton 'Re Launch' qui remplace le bouton 'Launch' qui permet de relancer le processus dans le cas ou vous auriez envie de changer de lien ou de preset. Bouton 'Start' lance le processus de r\u00e9cup\u00e9ration de donn\u00e9es. Si vous cliquez sur ce dernier, vous lancerez le programme. Cela peut prendre quelque secondes \u00e0 s'actualiser, mais tr\u00e8s vite vous devriez vous trouver devant une page comme celle-ci : \"D\u00e9but du programme\" Vous n'aurez alors qu'un seul bouton disponible : le bouton 'Stop'. Vous pouvez arr\u00eater le programme quand vous le voulez. ATTENTION : Avant de fermer le programme, merci de stopper d'abord le processus. Si vous stoppez le processus, vous devriez vous retrouver dans la m\u00eame situation que juste apr\u00e8s avoir lanc\u00e9 le navigateur virtuel : \"Arr\u00eat du programme\" Vous pouvez voir en dessous la derni\u00e8re image que le programme a d\u00e9cod\u00e9e et vous avez de nouveau acc\u00e8s aux trois boutons expliqu\u00e9s pr\u00e9c\u00e9demment. Quand l'application a \u00e9t\u00e9 lanc\u00e9e, vous pouvez aussi cliquer sur les donn\u00e9es affich\u00e9es, mais ces comportements sont expliqu\u00e9s dans la section \"Comprendre les donn\u00e9es\" Voil\u00e0 ! Vous savez comment lancer, stopper et modifier les variables de fonctionnement de l'application. Maintenant, vous pouvez passer directement \u00e0 la section \"Comprendre les donn\u00e9es\" si vous voulez apprendre comment utiliser ce que propose le programme ou passer \u00e0 la section \"Calibration\" si vous voulez apprendre \u00e0 configurer l'application et cr\u00e9er des Presets.","title":"Boutons"},{"location":"ManuelUtilisateur.html#calibration","text":"Ici, vous apprendrez \u00e0 configurer l'application pour cr\u00e9er vos propres presets et surtout pourquoi vous auriez besoin de le faire et \u00e0 quoi servent ces fameux \"Preset\". Vous serez en mesure d'adapter le fonctionnement de l'application, qu'elle soit conforme aux diff\u00e9rents changements d'interface et de pilotes pr\u00e9sents.","title":"Calibration"},{"location":"ManuelUtilisateur.html#pourquoi-calibrer-lapplication-et-creer-un-preset","text":"Le programme que vous allez utiliser utilise de l'OCR (Optical Character Recognition). Cela veut dire que le programme va aller regarder chaque image de la F1TV et convertir ce qu'il y a marqu\u00e9 dessus en donn\u00e9es que l'on peut r\u00e9cup\u00e9rer automatiquement. Sauf que pour y arriver, le programme a besoin de savoir o\u00f9 se trouve le texte important et surtout quel type de donn\u00e9e, il est cens\u00e9 trouver \u00e0 tel ou tel endroit. Pour \u00eatre plus pr\u00e9cis, il a \u00e9galement besoin de savoir quels pilotes peuvent se trouver dans la course actuelle. Et pour qu'il sache tout cela, il y a des fichiers de configuration nomm\u00e9s \"Presets\" qui doivent contenir toutes ces informations. Et pour les cr\u00e9er, il existe la page de calibration qui va demander \u00e0 un humain de lui fournir les infos qu'il ne peut pas trouver par lui-m\u00eame. Normalement, il devrait y avoir un Preset fournis par l'application quand vous la t\u00e9l\u00e9chargez depuis le repo mais vous pouvez avoir besoin de faire votre propre \"Preset\" dans deux cas : Quand les pilotes pr\u00e9sents ne sont pas les m\u00eames (Ex : Si un pilote doit \u00eatre remplac\u00e9 ou si de nouveaux pilotes sont arriv\u00e9s ou bien que d'autres aient pris leur retraite) Quand vous voulez utiliser des Grand Prix fait d'une autre ann\u00e9e que celle pour laquelle le \"Preset\" original a \u00e9t\u00e9 pr\u00e9vu. (L'ann\u00e9e devrait \u00eatre mentionn\u00e9e dans le nom du preset) Il est d\u00e9conseill\u00e9 d'utiliser ce projet pour des Grand Prix couru avant 2022, car l'interface de la page Data de la F1TV peut avoir trop chang\u00e9, mais vous pouvez toujours essayer pour voir en faisant votre propre Preset pour des ann\u00e9es comme 2021 ou 2020.","title":"Pourquoi calibrer l'application et cr\u00e9er un Preset ?"},{"location":"ManuelUtilisateur.html#comment-creer-son-preset","text":"Pour cr\u00e9er son Preset, il faut utiliser la page Settings ou Config de l'application. Pour y acc\u00e9der, il faut simplement cliquer sur le bouton \"Config\" de la page principale et vous serez accueilli par une page qui devrait ressembler \u00e0 celle ci dessous : \"Page de config vide\" La seule diff\u00e9rence est que vous aurez s\u00fbrement moins de Presets dans la liste des Presets voir, vous pouvez n'en avoir aucuns. Comme vous pouvez le voir, vous n'avez pas \u00e9norm\u00e9ment d'options disponibles quand vous lancez simplement l'application. Vous n'avez acc\u00e8s qu'aux boutons \"Start the browser\" et \"Add\",\"Remove\". On verra \u00e0 quoi servent ces deux derni\u00e8res plus tard, mais dans un premier temps, on va se pencher sur le bouton Start. Vous pouvez voir qu'en plus de ce bouton, vous pouvez aussi rentrer du texte dans la boite de texte \"Grand Prix URL\" ce qui n'est pas un hasard. Le but, c'est de mettre le lien vers un Grand Prix pour pouvoir avoir une image de test. Pour voir comment r\u00e9cup\u00e9rer cet URL, voir la section (Utilisation \"simple\" \u2192 \"R\u00e9cup\u00e9rer le lien vers le flux\") Quand l'URL a \u00e9t\u00e9 plac\u00e9e au bon endroit, on peut cliquer sur le bouton \"Start\" et attendre. Si vous n'avez pas encore lu la partie \"Utilisation \"simple\"\", vous allez voir des invites de commandes s'ouvrir et se fermer et c'est tout \u00e0 fait normal. Il faut attendre d'avoir une invite de commande qui reste ouverte et qui ressemble \u00e0 celle ci dessous avant de faire quoi que ce soit. Ensuite, vous pourrez simplement r\u00e9duire cette fen\u00eatre et retourner sur la page de configuration. \"Invite de commande suspecte, mais normale\" Ensuite, si vous attendez un peu (le processus peut prendre jusqu'\u00e0 plusieurs dizaines de secondes), vous aurez soit une erreur, soit vous vous retrouverez avec une page qui ressemble \u00e0 \u00e7a : \"Page de config amorc\u00e9e\" Et l\u00e0 on voit que toutes les options ont \u00e9t\u00e9 d\u00e9bloqu\u00e9es. Avant de se pencher sur les nouvelles options, on va rester sur le fonctionnement g\u00e9n\u00e9ral. Le bouton \"Get a newer image\" permet d'avoir une image plus r\u00e9cente de la F1TV. C'est utile par exemple, car comme on le voit sur l'exemple, l'interface de la F1TV n'a pas encore eu le temps de disparaitre. Mais cela peut aussi \u00eatre utile plus tard dans le cas o\u00f9 vous voudriez que certaines infos s'affichent. Le bouton \"Reset Emulator\", lui, permet, comme son nom l'indique, de relancer le navigateur virtuel que l'on a lanc\u00e9 avec le bouton \"Start the browser\". Cela peut \u00eatre utile dans le cas ou l'image ne soit pas l'image que l'on attendait ou si on veut tenter le coup avec un autre URL. Maintenant, on peut passer \u00e0 la cr\u00e9ation des zones et des windows","title":"Comment cr\u00e9er son Preset"},{"location":"ManuelUtilisateur.html#creation-des-zones-et-des-windows","text":"Sans trop rentrer dans les d\u00e9tails, l'application a besoin de connaitre la localisation de certains \u00e9l\u00e9ments. Elle a besoin de savoir : O\u00f9 se trouve la zone g\u00e9n\u00e9rale des infos pilotes O\u00f9 se trouve chaque pilote O\u00f9 se trouvent les informations pour chacuns de ces pilotes Le programme de calibration est fait pour que vous n'ayez besoin de donner que les informations qu'il ne peut pas deviner. Il y a deux \u00e9tapes : La premi\u00e8re \u00e9tape est de donner les dimensions de la zone principale d'informations. Pour ce faire, il faut dans un premier temps cliquer sur le bouton \"Create the main zone\" qui devrait afficher le texte suivant en dessous apr\u00e8s avoir cliqu\u00e9 : \"Texte indiquant le nombre de points qu'il reste \u00e0 ajouter\" Ensuite, il va falloir cliquer directement sur l'image pour indiquer le coin en haut \u00e0 gauche et le point en bas \u00e0 droite de la zone rectangulaire qui contient les informations. Vous pouvez voir en bleu ci-dessous les coins du rectangle et en rouge l'endroit o\u00f9 il faut cliquer. \"Infographie expliquant o\u00f9 placer les points de la zone principale\" Il faut faire attention \u00e0 bien prendre tous les pilotes MAIS il faut \u00e9galement faire attention \u00e0 ne pas prendre le texte alentours. \"Texte qui ne doit pas \u00eatre dans la zone s\u00e9lectionn\u00e9e\" Ci dessus, on peut voir du texte barr\u00e9 en violet. Il ne faut surtout pas que la zone vienne inclure ces bouts de texte ou toute la calibration pourrait rater. Ensuite, si vous avez bien fait votre travail, au deuxi\u00e8me clic sur la page, vous aurez quelques secondes de flottement et ensuite, vous devriez avoir les contours que vous avez dessin\u00e9s affich\u00e9s en jaune avec pleins de plus petites zones \u00e0 l'int\u00e9rieur comme ci-dessous : \"Zone principale avec les zones de pilotes automatiquement calcul\u00e9es\" Le programme a non seulement pris en compte la zone, mais il a aussi d\u00e9tect\u00e9 automatiquement o\u00f9 se trouvaient les zones de chaque pilote. Si vous n'avez pas un r\u00e9sultat comme celui-l\u00e0 et/ou que les zones ne sont pas bien align\u00e9es sur les pilotes sur l'image, je vous conseille de r\u00e9essayer de cr\u00e9er la zone principale. La seconde \u00e9tape est de montrer o\u00f9 sont les fen\u00eatres d'infos au programme. Vous aurez peut-\u00eatre remarqu\u00e9 qu'en dessous de l'image principale, quand l'affichage jaune a \u00e9t\u00e9 appliqu\u00e9, une image est apparue. Elle devrait ressembler \u00e0 quelque chose dans ce style : \"Image d'une zone de pilote\" C'est une zone de pilote de l'image que l'on voit au-dessus et c'est ici que l'on va indiquer les zones int\u00e9ressantes. Pour ce faire, il faut cliquer sur le bouton \"Create Windows\" et ce message devrait s'afficher un peu en dessous : \"Texte indiquant le nombre de windows \u00e0 ajouter\" Cela nous indique le nombre de fen\u00eatres qu'il nous reste \u00e0 s\u00e9lectionner. La technique est la m\u00eame que pour la grande zone sauf que l\u00e0, il faut le faire neuf fois. Et il faut absolument le faire dans l'ordre de gauche \u00e0 droite. Le but est de tout s\u00e9lectionner et d'arriver \u00e0 ce r\u00e9sultat : \"Exemple de fen\u00eatres d\u00e9coup\u00e9es\" Dans l'ordre, de gauche \u00e0 droite, on veut r\u00e9cup\u00e9rer : La position du pilote Son \u00e9cart avec le leader (en l'occurrence comme c'est le leader que l'on voit, on doit s\u00e9lectionner la fen\u00eatre ou il est marqu\u00e9 \"LEADER\") Son dernier temps au tour La fen\u00eatre DRS L'\u00e9tat de ses pneus Son nom Son temps au secteur 1 Son temps au secteur 2 Son temps au secteur 3","title":"Cr\u00e9ation des Zones et des Windows"},{"location":"ManuelUtilisateur.html#ajout-du-nom-des-pilotes","text":"La derni\u00e8re info qui manque \u00e0 notre programme est la liste des pilotes pr\u00e9sents. On peut interagir avec cette liste ici : \"Menu d'interaction avec la liste de pilotes\" Dans la boite de texte, on peut \u00e9crire le nom d'un pilote qui peut \u00eatre trouv\u00e9 sur l'image, on peut l'ajouter \u00e0 la liste et si on a fait une erreur, on peut le retirer. Et c'est \u00e0 peu pr\u00e8s tout. Il ne reste maintenant plus qu'\u00e0 mettre tous les noms. TIP : Il peut \u00eatre int\u00e9ressant d'ajouter le nom des pilotes de r\u00e9serve pour \u00e9viter de venir changer son preset si un pilote n'est pas pr\u00e9sent pour cause de maladie ou de blessure. Il faut simplement faire attention de ne pas non plus mettre trop de noms pour \u00e9viter que le programme puisse confondre. Et voil\u00e0 ! On a toutes les infos n\u00e9cessaires. La page de configuration devrait ressembler \u00e0 \u00e7a : \"Image de la page de config apr\u00e8s avoir ajout\u00e9 toutes les infos\" Il ne reste plus qu'\u00e0 le sauvegarder.","title":"Ajout du nom des pilotes"},{"location":"ManuelUtilisateur.html#sauvegarder-le-nouveau-preset","text":"Pour sauvegarder le preset, on peut facilement lui donner un nom dans la zone de texte sous les trois boutons de contr\u00f4le des Presets et cliquer sur Save current Preset. Et voil\u00e0, vous savez d\u00e9sormais comment cr\u00e9er vos propres presets et \u00e0 quoi ils servent. Vous pouvez donc adapter le fonctionnement du projet pour qu'il soit conforme aux changements de pilotes et d'interface avec les ann\u00e9es. Vous pouvez ainsi utiliser l'application normalement en s\u00e9lectionnant votre nouveau preset \u00e0 chaque fois.","title":"Sauvegarder le nouveau Preset"},{"location":"ManuelUtilisateur.html#load-un-preset-existant","text":"Le loading est un peu sp\u00e9cial. Il faut d\u00e9j\u00e0 avoir lanc\u00e9 le navigateur virtuel pour activer les boutons. Ensuite, il suffit de s\u00e9lectionner un preset et de cliquer sur \"Load the Preset\" et attendre un petit peu. L'affichage sera un peu bizarre, mais c'est normal, il ne faut pas s'inqui\u00e9ter si la zone de pilote affich\u00e9e en dessous est correcte. \"Exemple de ce \u00e0 quoi peut ressembler un loading et l'affichage bizarre que \u00e7a implique\" \u00c0 partir de l\u00e0, il est facile de faire son propre preset en changeant juste les noms des pilotes par exemple.","title":"Load un Preset existant"},{"location":"ManuelUtilisateur.html#comprendre-les-donnees","text":"Ici, vous allez apprendre \u00e0 utiliser l'application et ses donn\u00e9es en comprenant \u00e0 quoi elles servent et comment elles sont affich\u00e9es. \"Image de l'application en cours de fonctionnement depuis quelques minutes\" Il y a 5 types de donn\u00e9es :","title":"Comprendre les donn\u00e9es"},{"location":"ManuelUtilisateur.html#overtakes","text":"Cette fen\u00eatre est loin d'\u00eatre compl\u00e8tement op\u00e9rationnelle, mais elle permet de voir l'historique des d\u00e9passements et des changements de position. Il faut scroller pour voir les plus r\u00e9cents. Je dirais que pour le moment, c'est la moins int\u00e9ressante et elle ne fonctionne pas toujours super.","title":"Overtakes"},{"location":"ManuelUtilisateur.html#last-five-laps","text":"\"Image de la fen\u00eatre des cinq derniers tours\" En total contraste avec la fen\u00eatre Overtakes, ici, on a peut-\u00eatre la fen\u00eatre la plus int\u00e9ressante de toutes. On peut voir les pilotes actuellement les plus rapides et plus lents sur le circuit. Le calcul est fait sur la moyenne des cinq derniers tours de chaque pilote. Cela permet de se faire une id\u00e9e de la situation des pilotes. Cela peut servir par exemple \u00e0 d\u00e9tecter quand un pneu est plus rapide que les autres quand on voit des pilotes dans le milieu ou bas de tableau appara\u00eetre dans le plus rapide. Il est par exemple int\u00e9ressant de voir la diff\u00e9rence de vitesse entre les pneus secs et pluie sur un circuit qui commence \u00e0 s\u00e9cher. On peut progressivement voir les pilotes en pneus secs devenir de plus en plus rapides alors que ce sont des pilotes beaucoup moins rapide en temps normal. On peut cliquer sur n'importe lequel de ces pilotes pour voir ses infos appara\u00eetre dans la fen\u00eatre Driver Infos pour voir les cinq derniers tours par exemple ou les pneus qu'il est en train de chausser.","title":"Last Five Laps"},{"location":"ManuelUtilisateur.html#battles","text":"\"Fen\u00eatre des batailles\" Cette fen\u00eatre est \u00e9galement assez int\u00e9ressante, car elle permet de voir les pilotes qui sont en train de se battre. Il est estim\u00e9 qu'un pilote qui se bat est un pilote qui est \u00e0 trois secondes ou moins du pilote devant lui. Ne sont affich\u00e9es que les batailles de quatre pilotes maximums dans l'ordre du classement. Si un pilote est entre 2 et 3 secondes de son adversaire, l'\u00e9cart est en blanc. Entre 1 et 2 secondes, il est \u00e9crit en jaune. Dans la zone du DRS (Une seconde ou moins) il est \u00e9crit en vert. On peut aussi cliquer sur le nom d'un pilote pour afficher ses infos dans la fen\u00eatre des infos pilote. Cette fen\u00eatre permet de mieux comprendre qui sont les pilotes qu'il faut garder \u00e0 l'\u0153il \u00e0 la TV ou simplement qui sont les pilotes qui sont tr\u00e8s proches et qui pourraient se mettre la pression pour les arr\u00eats aux stands, car jamais un pilote ne reste \u00e0 moins de trois secondes d'un autre si \u00e7a n'est pas pour tenter quelque chose au niveau strat\u00e9gique.","title":"Battles"},{"location":"ManuelUtilisateur.html#driver-infos","text":"\"Fen\u00eatre des infos pilote\" Ici, on peut voir toutes les infos lives d'un pilote. Rien de fou \u00e0 dire sur la partie de gauche, par contre la partie de droite est un peu plus int\u00e9ressante, car elle contient un historique de ses cinq derniers tours (dans la photo, il n'y en a qu'un seul, mais au fur et \u00e0 mesure de la course cela se remplit). On peut non seulement voir les cinq derniers temps au tour, mais on peut aussi cliquer sur chacun d'eux pour voir les secteurs associ\u00e9s. \"Exemple d'affichage des secteurs d'un temps au tour\" ;","title":"Driver infos"},{"location":"ManuelUtilisateur.html#live-ranking","text":"\"Fen\u00eatre du classement en direct\" Ceci est la fen\u00eatre la plus simple. C'est tout b\u00eatement le classement actuel avec les \u00e9carts avec le leader. Note : On peut \u00e9galement cliquer sur les diff\u00e9rents pilotes pour en afficher les infos dans la fen\u00eatre infos pilote.","title":"Live Ranking"},{"location":"ManuelUtilisateur.html#erreurs","text":"Il est tr\u00e8s probable que si vous utilisez beaucoup cette application, vous allez rencontrer des erreurs. Ici, vous pourrez apprendre ce qu'elles veulent dire et ce que vous pouvez faire pour y rem\u00e9dier. Il n'existe pas un tr\u00e8s grand nombre d'erreurs, mais voici les principales Erreur 100 (Souvent au premier d\u00e9marrage) Cette erreur signale un probl\u00e8me avec la r\u00e9cup\u00e9ration de cookies. Cela peut \u00eatre caus\u00e9 par une mauvaise installation de python ou si vous ne vous \u00eates pas connect\u00e9s r\u00e9cemment \u00e0 la F1TV depuis Chrome ou que vous n'avez tout simplement pas install\u00e9 Chrome sur votre machine. Erreur 101 (Moins r\u00e9current qu'\u00e0 une \u00e9poque) Cette erreur veut dire qu'il y a d\u00e9j\u00e0 une instance de navigateur ouverte. Pour r\u00e9gler cette erreur, regarder dans votre barre des t\u00e2ches les invites de commande ouvertes et fermez celui qui correspond \u00e0 un ancien navigateur. (Si c'est d\u00e9j\u00e0 fait alors en derniers recours, vous pouvez chercher dans le gestionnaire des t\u00e2ches et chercher \"GeckoDriver.exe\") Erreur 102 Cela peut \u00eatre une erreur qui arrive, car vous n'avez pas donn\u00e9 un URL valide pour la F1TV ou par ce que vous ne vous \u00eates pas connect\u00e9 r\u00e9cemment \u00e0 la F1TV depuis chrome (Si vous veniez de le faire alors, attendez un peu et r\u00e9essayez). Parfois cela peut prendre un peu de temps \u00e0 s'actualiser). Erreur 103 L'URL est invalide Erreur 104 L'URL est invalide Erreur 105 Cette erreur indique que soit vous avez donn\u00e9 un URL qui ne correspond \u00e0 aucun Grand Prix, soit que la vid\u00e9o a mis trop de temps \u00e0 charger. Vous pouvez essayer de vous brancher en Ethernet ou simplement r\u00e9essayer si vous \u00eates s\u00fbr de votre URL. Erreur 106 M\u00eame chose que pour la 105","title":"Erreurs"},{"location":"jdb.html","text":"Journal de bord Mercredi 29 Mars 2023 Premier jour du travail de dipl\u00f4me. Nous avons eu un briefing de mr Garcia et nous avons pu commencer \u00e0 pr\u00e9parer le travail. Nous avons eu les diff\u00e9rents fichiers nescessaires \u00e0 la bonne r\u00e9alisation du projet et je me suis mis \u00e0 faire les fichiers nescessaires La premi\u00e8re chose a \u00e9t\u00e9 de faire ce mkdocs dans lequel j'ai mis un fichier yml plut\u00f4t standart qui risque de changer au fur et \u00e0 mesure. Voici le premier yml : site_name: Documentation Diplome theme: name: material palette: # Palette toggle for light mode - media: \"(prefers-color-scheme: light)\" scheme: default toggle: icon: material/brightness-7 name: Switch to dark mode # Palette toggle for dark mode - media: \"(prefers-color-scheme: dark)\" scheme: slate toggle: icon: material/brightness-4 name: Switch to light mode markdown_extensions: - attr_list - md_in_html plugins: - glightbox - with-pdf Voici un example de \u00e0 quoi ca ressemble en forme de site \"Exemple mkdocs\" Ensuite il m'a fallu faire une version plus \u00e0 jour de mon cahier des charges car je n'y avait pas touch\u00e9 depuis novembre. J'ai envoy\u00e9 un mail \u00e0 mes enseignants pour qu'ils puissent y jeter un oeuil pour \u00eatre s\u00fbr que je n'ai rien chang\u00e9 qui les d\u00e9rangent. Monsieur Jayr m'a demad\u00e9 \u00e0 l'occasion de lui faire un planning type Gantt alors je me suis mis \u00e0 la t\u00e2che. J'ai fait un planning pr\u00e9visionnel et une l\u00e9gende les deux sont dispo dans le dossier planning de ce repertoire. Ensuite je me suis mis \u00e0 tout mettre sur git. A commencer par ce repertoire Et c'est deja la fin de la journ\u00e9e ! Demain j'avance un peu sur la doc avec ce que je peux d\u00e9ja remplir et je finis de pr\u00e9parer ce dont j'ai besoin pour commencer \u00e0 coder. Jeudi 30 Mars 2023 Aujourd'hui selon le planning je dois me charger des dernirers pr\u00e9paratifs pour commencer correctement. J'ai fait expr\u00e8s de prenre du temps pour ca au d\u00e9but pour ne pas me cr\u00e9er de soucis plus loin pendant le travail. Je vais envoyer par mail le planning que j'ai fait \u00e0 mes suiveurs. Ensuite je vais m'attaquer au squelette de la docmentation. Je vais essayer de remplir tout ce que je peux remplir dans un premier temps car cela tout ca de fait pour plus tard quitte \u00e0 modifier quelques aspects au fur et \u00e0 mesure. J'ai aussi d\u00e9sactiv\u00e9 mkdocs with pdf par ce que les r\u00e9sultats ne sont vraiment pas ceux que j'attends et cela ralentis \u00e9norm\u00e9ment le d\u00e9ploiment. J'ai aussi rassembl\u00e9 mes croquis pour le poster : \"Croquis Poster 1\" \"Croquis Poster 2\" On peut voir que dans un premier temps j'ai tent\u00e9 de faire un poster un peu plus stylis\u00e9 et marketing. Cependant apr\u00e8s avoir discut\u00e9 avec Mr Garcia et diff\u00e9rents profs dont un de l'HEPIA et ils m'ont indiqu\u00e9 que ce qui \u00e9tait attendu \u00e9tait moins du marketing qu'un diagramme de fonctionnement. On peut voir sur les derniers posters que le cot\u00e9 technique ressort de plus en plus. Le but sera de faire une version encore plus technique ou on peut voir les diff\u00e9rents fonctionnements de l'application avec les technologies utilis\u00e9es. Le d\u00e9fi cela va \u00eatre de faire un joli poster qui soit en m\u00eame temps vendeur et en m\u00eame temps rempli techniquement. Oh et j'ai eu un probl\u00e8me ou mon calvier et ma souris ne voulaient d'un coup plus fonctionner. Dans mon cas c'\u00e9tait un probl\u00e8me de power management des ports. J'ai eu le soucis sur mon pc fixe \u00e0 la maison et sur mon pc portable \u00e9galement. En gros de ce que j'ai compris le soucis c'est que le pc croit que un port est trop solicit\u00e9 niveau puissance et du coup d\u00e9cide de couper l'alimentation du port USB. J'ai pu r\u00e8gler le soucis en allant dans le device manager sous universal bus controller sous power management et en d\u00e9cochant la case qui indique que windows peut d\u00e9sactiver ce port. Je ne conseille pas ce fix si vous avez des composants de mauvaise qualit\u00e9 car cela pourrait \u00eatre une vraie alerte cependant le fait que mes composants sont plut\u00f4t haut de gamme et le fait que mon clavier et ma souris le fassent en m\u00eame temps et que ils fonctionnaient tr\u00e8s bien depuis plus de 4 ans me font penser que c'est juste une nouvelle mise a jour de windows qui est p\u00e9nible. Demain je vais pouvoir commencer \u00e0 coder pour de bon. Vendredi 31/03/2023 Aujourd'hui on s'occupe de la PT2 qui est la programmation de la r\u00e9cup\u00e8ration des informations des images. Je vais tester IronOcr Source : https://www.c-sharpcorner.com/article/ocr-using-tesseract-in-C-Sharp/ Doc : https://ironsoftware.com/csharp/ocr/docs/ Examples : https://ironsoftware.com/csharp/ocr/examples/simple-csharp-ocr-tesseract/ Avant d'utiliser la librairie je me demande si je dois utiliser un peu de post processing pour aider \u00e0 la reconnaissance. Je peux soit utiliser l'image crop\u00e9e directement : \"Image non trait\u00e9e\" Soit avec un filtre pour passer en noir et blanc laxiste \"Image trait\u00e9e laxiste\" Soit avec un filtre pour passer en noir et blanc stricte \"Image trait\u00e9e stricte\" Il va falloir faire des tests avec tous les noms et les chiffres pour trouver le plus efficace. Bon malheureusment Iron OCR semblait \u00eatre une bonne alternative mais c'est une librairie priv\u00e9e qui demande une license pour \u00eatre utilis\u00e9e. Il va falloir trouver autre chose. En utilisant la librairie \"Tesseract\" qui existe on peut faire de la reconnaissance de texte avec un code plut\u00f4t simple : TesseractEngine engine = new TesseractEngine ( tessDataFolder . FullName , \"eng\" , EngineMode . Default ); var tessImage = Pix . LoadFromMemory ( ImageToByte ( sample )); Page page = engine . Process ( tessImage ); string text = page . GetText (); Voici la methode ImageToByte : https://stackoverflow.com/questions/7350679/convert-a-bitmap-into-a-byte-array public static byte [] ImageToByte ( Image img ) { using ( var stream = new MemoryStream ()) { img . Save ( stream , System . Drawing . Imaging . ImageFormat . Png ); return stream . ToArray (); } } Voici le code pour traiter plusieurs textes sur une seule image : Page page = engine . Process ( tessImage ); // Get the iterator for the page layout using ( var iter = page . GetIterator ()) { // Loop over the elements of the page layout iter . Begin (); do { // Declare a Rect variable to hold the bounding box Rect boundingBox ; // Get the bounding box for the current element if ( iter . TryGetBoundingBox ( PageIteratorLevel . Word , out boundingBox )) { g . DrawRectangle ( Pens . Red , new Rectangle ( boundingBox . X1 , boundingBox . Y1 , boundingBox . Width , boundingBox . Height )); } // Get the text for the current element var text = iter . GetText ( PageIteratorLevel . Word ); tbxResult . Text += text . ToUpper () + Environment . NewLine ; } while ( iter . Next ( PageIteratorLevel . Word )); } Etonnament, avec plus de texte, des noms qui \u00e9taient autrefois mal reconnus sont parfaitement interpr\u00eat\u00e9s. Par exemple voici un exemple de reconnaisance de texte sur tous les pilotes : \"Screenshot de reconnaisance d'image complete\" On voit que le nom Leclerc est mal reconnu. Mais voici ce que cela donne quand on prend une image qui ne contient que le nom Leclerc : \"Screenshot de reconnaissance d'image crop\u00e9e\" On voit ici que le nom Leclerc est tr\u00e8s bien reconnu. Dans le premier exemple on peut voir que Tsunoda est reconnu comme \"Reticin\" ce qui n'est pas exactement pareil (lol) Et quand on isole le nom Tsunoda dans une image seule : \"Screenshot de reconnaissance de Tsunoda\" Il le lit \"RETLELYY\" ce qui n'est toujours pas exactement ca... Une meilleure r\u00e9solution pourrait peut-\u00eatre r\u00e9soudre le probl\u00e8me en partie. Jusqu'ici les images \u00e9taient en presque 720P ce qui donne ceci : \"Tsunoda en 720P\" Et j'ai lanc\u00e9 une r\u00e9cup\u00e8ration d'images en 1080p pour r\u00e9cup\u00e8rer ceci : \"Tsunoda en 1080P\" On peut voir une certaine diff\u00e9rence tout de m\u00eame. Et quand on lance la reconnaissance : \"Reconnaissance Tsunoda en 1080P\" \"Tsunoda n'est plus \u00e9crit \"RETLELYY\" mais \"TSUNDDA\" ce qui n'est pas parfait mais qui est d\u00e9ja beaucoup mieux. J'ai essay\u00e9 de mettre l'engine de Tesseract en mode \"JPN\" comme Tsunoda est un nom japonais mais sans succ\u00e8s j'ai le m\u00eame r\u00e9sultat. Comme la r\u00e9solution est meilleure je me suis dit que peut \u00eatre le filtre de passage en noir et blanc pourrait aider. J'ai \u00e9crit cette petite methode pour convertir l'image en noir et blanc : private static Bitmap ConvertToBlackAndWhite ( Bitmap inputBmp ) { const int BLACK_TO_WHITE_TRESHOLD = 200 ; Bitmap result = new Bitmap ( inputBmp . Width , inputBmp . Height ); for ( int y = 0 ; y < inputBmp . Height ; y ++) { for ( int x = 0 ; x < inputBmp . Width ; x ++) { Color pixelColor = inputBmp . GetPixel ( x , y ); if ( pixelColor . R <= BLACK_TO_WHITE_TRESHOLD && pixelColor . G <= BLACK_TO_WHITE_TRESHOLD && pixelColor . B <= BLACK_TO_WHITE_TRESHOLD ) { pixelColor = Color . FromArgb ( 0 , 0 , 0 ); } else { pixelColor = Color . FromArgb ( 255 , 255 , 255 ); } result . SetPixel ( x , y , pixelColor ); } } return result ; } Rien de bien dingue mais cela fonctionne et je peux jouer avec le BLACK_AND_WHITE_TRESHOLD pour changer son comportement. J'ai dabord test\u00e9 avec un treshold de 100 et le programme a r\u00e9ussi \u00e0 me sortir Tsunoda en deux mots ce qui \u00e9tait d\u00e9ja tr\u00e8s encourageant. Et apr\u00e8s avoir augment\u00e9 le Treshold... Tada : \"Tsunoda 1080P avec filtre\" Le programme arrive bien \u00e0 reconnaitre TSUNODA. Je pense que cette tactique ne fonctionnait pas avant car la resolution \u00e9tait trop faible et l'aliasing se m\u00ealait trop avec le texte pour \u00eatre utilisable. Cependant cette technique ne fonctionne pas sur tous les noms. Par example avec Leclerc : \"Leclerc 1080P avec filtre\" On r\u00e9cup\u00e8re \"Leeler'c\" ce qui n'est pas bon du tout. Mais en modulant le Treshold (ici \u00e0 150) On peut de nouveau voir Leclerc \u00eatre reconnu correctement \"Leclerc 1080P avec filtre 2\" Je pense que pour avoir de bons r\u00e9sultats il va falloir faire un algo qui : D\u00e9coupe l'image en autant de plus petites images pour avoir un mot par image. Teste voir si avec l'image originale un nom correspond \u00e0 la liste de pilotes existant. Si cela ne marche pas, on applique le filtre en modulant le Treshold. Dans le cas ou on aurait pas un match parfait on fait un algo qui cherche le nom le plus proche qui existe dans la liste de noms donn\u00e9s. Seulement voila, il n'y a pas que des lettres que l'on veut r\u00e9cup\u00e8rer. On veut surtout pouvoir r\u00e9cup\u00e8rer les chiffres. Pour les chiffres on va avoir des soucis \u00e9galement... Si on essaie directement la m\u00eame technique sans filtre on a des r\u00e9sultats comme celui ci : \"Tentative de reconnaisance du timing\" La virgule a tendeance \u00e0 se barrer ce qui est particuli\u00e8rement probl\u00e9matique. Cependant comme les chiffres ont beaucoup moins de possibilit\u00e9es que les lettres et qu'il n'y a pas de probl\u00e8me de langue on devrait pouvoir travailler \u00e0 faire des r\u00e8glage que l'on pourra ensuite utiliser. Avec un Treshold de 165 on arrive presque \u00e0 quelque chose d'int\u00e9ressant : \"Tentative 2 de reconnaissance du timing\" Le + n'est clairement pas compris mais ca n'est pas emb\u00eatant car c'est souvent redondant. On arrive cependant \u00e0 isoler 3 et 259. M\u00eame si la virgule n'est pas comprise cela veut dire qu'il est tout de m\u00eame possible de discriminer les secondes des milisecondes. Maintenant avec un temps au tour : \"Reconnaissance du timing au tour\" On arrive sans rien changer aux param\u00eatres \u00e0 isoler minutes secondes et milisecondes. Il semble que la reconnaissance de chiffre soit bien plus efficace que la reconnaissance de lettres. Il va falloir faire un test \u00e0 plus grande \u00e9chelle avec plus d'image pour se rendre compte de la precision. Demain ce qui serait bien cela serait que je fasse un jeu d'images avec des valeurs connues et que je fasse une batterie de tests pour voir \u00e0 quel point je peux faire confiance \u00e0 la reconnaissance des chiffres. Automatiser un syst\u00e8me de test de la sorte me sera tr\u00e8s utile dans le futur pour v\u00e9rifier la non regression de ma reconnaissance de texte quand je tenterai d'y faire des changements. Je suis toujours curieux cependant de voir comment le programme se d\u00e9brouille avec les nombres de tours qui se trouvent dans les icones de pneus. Lundi 3 Avril Aujourd'hui on va faire un programme qui permet de cr\u00e9er un dataset qui permette de tester le programme de reconnaissance. Je pense que le meilleur moyen de faire serait un programme qui cr\u00e9e le dataset et qui ensuite peut tester diff\u00e9rentes methodes de reconnaissance. Par la m\u00eame occasion je peux d\u00e9velopper la technologie qui va permettre de d\u00e9couper une image en 20 lignes ce qui me servira ensuite pour la reconnaissance. Je me rend compte que pour faire un programme de tests je dois d\u00e9ja avoir une id\u00e9e de la structure de mon programme. Pour le moment je r\u00e9flechis \u00e0 un syst\u00e8me de \"Zones\" et de \"Windows\". L'id\u00e9e serait que une Zone est juste une sous partie d'image qui peut encore \u00eatre d\u00e9compos\u00e9 tandis que chaque Window contient une ou plusieurs informations \u00e0 r\u00e9cup\u00e8rer. J'ai essay\u00e9 de d\u00e9couper l'image pour que cela soit plus clair : \"Main zone\" Ici on peut voir que l'image est d\u00e9coup\u00e9e en plusieurs grandes zones. Dans un premier temps on ne s'occupe que de la premi\u00e8re. Ensuite : \"Driver zone #1\" On peut voir la que cette Main zone serait elle m\u00eame d\u00e9compos\u00e9e en plusieurs plus petites zones. Et ensuite chacunes de ces petites zones : \"Driver windows\" Sera d\u00e9compos\u00e9e en plusieurs windows qui elles sont des zones qui contiennent de l'information. En gros on aurait trois types de zone : Les zones qui contiennent d'autres zones Les zones qui contiennent des Windows Les Windows Cependant en y r\u00e9flechissant on pourrait tout \u00e0 fait avoir seulement des zones et des windows en faisant en sorte que les windows peuvent avoir une liste de windows et une liste de zones. Une zone serait compos\u00e9e de : Une image de d\u00e9part Un rectangle qui la positionne sur cette derni\u00e8re Une liste de zones (potentiellement vide) Une liste de windows (potentiellement vide) Une methode qui permet de r\u00e9cup\u00e8rer une image de la zone Une methode qui permet de lancer la reconnaissance sur chaque window Une window serait compos\u00e9e de : Une image de d\u00e9part (cela peut \u00eatre l'image crop\u00e9e de la zone parente peu importe) Un rectangle qui la positionne sur cette derni\u00e8re Une methode qui permet de r\u00e9cup\u00e9rer un image de la window Une methode qui permet de lancer la reconnaisance sur l'image (Chaque type de zone doit l'impl\u00e9menter) Dans chaque window on peut imaginer que la methode qui fait la reconnaissance au lieu de retourner un objet qui peut contenir nimporte quel type d'information peut envoyer ce qu'elle vient de r\u00e9cup\u00e8rer dans une base de donn\u00e9e ou un objet. Par exemple une Zone de pilote pourrait tr\u00e8s bien contenir un objet pilote et le donner \u00e0 ses windows qui rempliraient ce m\u00eame objet. C'est une reflexion plus stockage que OCR mais c'est int\u00e9ressant pour savoir ce que fait une window des donn\u00e9es qu'elle r\u00e9cup\u00e8re. Dans un premier temps je pense que les windows vont simplement \u00e9crire dans un fichier ce qu'elles trouvent chacunes dans le format qu'elles veulent. Pour comprendre pourquoi je me prend la t\u00eate il faut savoir que chaque window peut avoir acc\u00e8s \u00e0 pleins d'informations diff\u00e9rentes. On pourrait dire qu'elles retournent toutes une string sauf que si ca marche pour un temps au tour ou pour un nom de pilote, cela ne marche pas forc\u00e9ment pour un type de pneu ou un DRS ouver. Comme chaque window a plusieurs types de data elle devra elle m\u00eame se charger de comment la traiter ET de la stocker. Voila un diagramme qui r\u00e9sume comment je vois l'impl\u00e9mentation dans un premier temps : \"Diagramme d'explications\" Voici comment se pr\u00e9sente le squellette d'une Zone : public class Zone { private Bitmap FullImage ; private List < Zone > Zones ; private List < Window > Windows ; private Rectangle _bounds ; public Rectangle Bounds { get => _bounds ; private set => _bounds = value ; } public Bitmap ZoneImage { get { Bitmap sample = new Bitmap ( Bounds . Width , Bounds . Height ); Graphics g = Graphics . FromImage ( sample ); g . DrawImage ( FullImage , new Rectangle ( 0 , 0 , sample . Width , sample . Height ), Bounds , GraphicsUnit . Pixel ); return sample ; } } public Zone ( Image fullImage , Rectangle bounds ) { FullImage = ( Bitmap ) fullImage ; Init ( bounds ); } public Zone ( Bitmap fullImage , Rectangle bounds ) { FullImage = fullImage ; Init ( bounds ); } private void Init ( Rectangle bounds ) { Bounds = bounds ; Zones = new List < Zone >(); Windows = new List < Window >(); } public void AddZone ( Rectangle bounds ) { if ( Fits ( bounds )) Zones . Add ( new Zone ( ZoneImage , bounds )); } public void AddWindow ( Rectangle bounds ) { if ( Fits ( bounds )) Windows . Add ( new Window ( ZoneImage , bounds )); } private bool Fits ( Rectangle inputRectangle ) { if ( inputRectangle . X + inputRectangle . Width > Bounds . Width || inputRectangle . Y + inputRectangle . Height > Bounds . Height || inputRectangle . X < 0 || inputRectangle . Y < 0 ) { return false ; } else { return true ; } } } Le but est ensuite de cr\u00e9er diff\u00e9rent types de Zones. Par exemple la MainZone devra d\u00e9couper son contenu en 20 parties \u00e9gales pour tenter de chopper les 20 pilotes. Il serait cool de trouver un moyen de calibrer automatiquement. C'est peut-\u00eatre possible de calibrer avec de la reconnaissance de texte, on peut essayer de lancer la reconnaissance et voir ou on trouve du texte avec un peu de chance cela pourrait donner les positions et avec ca on peut peut-\u00eatre determiner des lignes. Et voici le squelette d'une window g\u00e9n\u00e9rique using System ; using System.Collections.Generic ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; using System.Drawing ; namespace OCR_tester { public class Window { private Bitmap FullImage ; private Rectangle _bounds ; public Rectangle Bounds { get => _bounds ; private set => _bounds = value ; } public Bitmap WindowImage { get { Bitmap sample = new Bitmap ( Bounds . Width , Bounds . Height ); Graphics g = Graphics . FromImage ( sample ); g . DrawImage ( FullImage , new Rectangle ( 0 , 0 , sample . Width , sample . Height ), Bounds , GraphicsUnit . Pixel ); return sample ; } } public Window ( Bitmap fullImage , Rectangle bounds ) { FullImage = fullImage ; Bounds = bounds ; } public virtual void RecoverInformations () { //Each Window type will have to implement its own way to recover the informations stored in the Window Image } } } Chaque Window pourra ainsi elle m\u00eame impl\u00e9menter la r\u00e9cup\u00e8ration d'informations. La facon de les retourner/stocker est encore un peu floue. Par exemple pour un temps au tour on peut imaginer que il fait une petite v\u00e9rification dans l'objet pilote et dans le tableau des tours si il n'y a pas deja une valeur et si il n'y en a pas une alors il peut l'ajouter. Maintenant je vais essayer de cr\u00e9er une Main window qui se calibre toute seule. Alors apr\u00e8s avoir bien gal\u00e8r\u00e9 avec l'interface pour permettre au user de cliquer sur la form pour voir les zones qu'il cr\u00e9e, j'ai pu cr\u00e9er un zone qui fait les dimensions de MainZone et j'ai pu lancer la reconnaissance sur l'image et voir ou il trouve du texte : \"MainZone avec carr\u00e9s de texte\" Maintenant il faut que je nettoie la liste de rectangle pour exclure ceux qui sont trop grands pour \u00eatre sur une seule ligne, ceux qui indiquent le nombre de tour en haut et ceux qui n'ont pas d'int\u00e9r\u00eats. On pourra ensuite isoler les lignes et cr\u00e9er une liste d'images. Pour ce qui est de la ligne qui contient les \"Gap interval last lap\" et des chiffres sur les tours pour les pneus etc je vais juste demander \u00e0 l'utilisateur de ne pas les prendre dans la screenshot. Comme ils contiennent des mots qui peuvent \u00eatre utilis\u00e9s plus loin dans les data je ne peux pas les blacklister et faire un syst\u00e8me qui s'occupe de les enlever si ils existent selon le position y me prendrait trop de temps pour rien. Apr\u00e8s avoir filtr\u00e9 un peu les resultats et enlev\u00e9 les zones beaucoup trop grandes, on se retrouve d\u00e9ja plus qu'avec ca : \"MainZone avec de meilleurs carr\u00e9s\" Comme on peut le voir, du c\u00f4t\u00e9 gauche de l'image on a beaucoup de choses reconnues mais avec beaucoup de tailles diff\u00e9rentes ce qui n'est pas id\u00e9al. Alors j'ajoute un filtre qui permet de ne selectionner que les data sur la droite. \"MainZone avec de meilleurs carr\u00e9s\" Maintenant il devrait \u00eatre possible de faire un algorythme qui ne prend que un seul carr\u00e9 par ligne. \"MainZone avec un seul carr\u00e9 par ligne\" Maintenant que on sait ou se trouve chaque ligne on peut faire un petit traitement et d\u00e9couper l'image en plusieurs windows. Et voila : \"Mainzone auto calibr\u00e9e\" Maintenant le programme peut cr\u00e9er des zones pour chaque pilote \"Images pilotes\" \"Zone d'un pilote\" Maintenant il faut que j'impl\u00e9mente un syst\u00e8me un peu similaire pour cr\u00e9er des windows. Voici la methode que j'ai cr\u00e9\u00e9 pour l'autocalibration : public void AutoCalibrate () { List < Rectangle > detectedText = new List < Rectangle >(); Zones = new List < Zone >(); TesseractEngine engine = new TesseractEngine ( Window . tessDataFolder . FullName , \"eng\" , EngineMode . Default ); Image image = ZoneImage ; var tessImage = Pix . LoadFromMemory ( Window . ImageToByte ( image )); Page page = engine . Process ( tessImage ); using ( var iter = page . GetIterator ()) { iter . Begin (); do { Rect boundingBox ; if ( iter . TryGetBoundingBox ( PageIteratorLevel . Word , out boundingBox )) { //var text = iter.GetText(PageIteratorLevel.Word).ToUpper(); //We remove all the rectangles that are definitely too big if ( boundingBox . Height < image . Height / NUMBER_OF_DRIVERS ) { //Now we add a filter to only get the boxes in the right because they are much more reliable in size if ( boundingBox . X1 > image . Width / 2 ) { //Now we check if an other square box has been found roughly in the same y axis bool match = false ; //The tolerance is roughly half the size that a window will be int tolerance = ( image . Height / NUMBER_OF_DRIVERS ) / 2 ; foreach ( Rectangle rect in detectedText ) { if ( rect . Y > boundingBox . Y1 - tolerance && rect . Y < boundingBox . Y1 + tolerance ) { //There already is a rectangle in this line match = true ; } } //if nothing matched we can add it if (! match ) detectedText . Add ( new Rectangle ( boundingBox . X1 , boundingBox . Y1 , boundingBox . Width , boundingBox . Height )); } } } } while ( iter . Next ( PageIteratorLevel . Word )); } foreach ( Rectangle Rectangle in detectedText ) { Rectangle windowRectangle ; Size windowSize = new Size ( image . Width , image . Height / NUMBER_OF_DRIVERS ); Point windowLocation = new Point ( 0 , ( Rectangle . Y + Rectangle . Height / 2 ) - windowSize . Height / 2 ); windowRectangle = new Rectangle ( windowLocation , windowSize ); Zones . Add ( new Zone ( ZoneImage , windowRectangle )); } } Ca peut paraitre pas \u00e9norme comme code mais pour tout mettre en place ca demande quand m\u00eame pas mal de reflexion. J'ai du clean un peu le code que j'avais fait pour permettre la selection de zones et ajouter la possibilit\u00e9 d'ajouter des windows sur une zone. J'ai juste quelques difficult\u00e9es \u00e0 les ajouter correctement, j'ai un offset tout pourri qui se met tout le temps \"Sainz coup\u00e9\" \"Perez coup\u00e9\" Cela doit \u00eatre un soucis lors de la detection de clic qui met un offset en trop. C'est vraiment p\u00e9nible en tout cas. Certes c'est moins fun de devoir manuellement indiquer ou sont les windows sur une ligne de pilote, mais je ne vois vraiment pas comment faire cela automatiquement. Le but c'est de faire une configuration qui puisse \u00eatre sauvegard\u00e9e comme ca pas besoin d'\u00e0 chaques fois le refaire. C'est bon ! J'avais juste oubli\u00e9 de changer le calcul d'offset entre le code de la zone et de la window. Note pour plus tard, il serait peut-\u00eatre judicieux de faire quelque chose pour la vue, les windows et les Zones ont le m\u00eame exact comportement pour la vue ce qui fait dupliquer du code. Mais au moins maintenant ca fonctionne : \"Ocr tester screenshot\" Et le programme va directement cr\u00e9er un dossier par pilote avec toutes les images de chaque Data le concernant : \"Dossier Perez\" ; Et c'est tout pour aujourd'hui je pense. Ce qui serait cool demain c'est que je puisse stocker d'une mani\u00e8re ou d'une autre ces fichiers de calibration et que je puisse les transf\u00e8rer vers le programme qui va s'occuper de d\u00e9coder et commencer gentillement \u00e0 d\u00e9coder les diff\u00e9rents types de data. Note pour quand je ferai les tests. Je pense que la meilleure id\u00e9e serait que je prenne pleins de photos du style et que je les mette dans un fichier CSV ou JSON avec leur contenu. Et ensuite je le fais passer en tests pour calculer la prescision de mon algo de d\u00e9codage. Pour le moment on est plut\u00f4t dans les clouts niveau planning. Mardi 4 Avril Aujourd'hui je suis scens\u00e9 plut\u00f4t bosser sur l'interpretation des donn\u00e9es, mais une id\u00e9e m'a taraud\u00e9 l'esprit toute la nuit. Est-ce que je ne pourrais pas quand m\u00eame essayer de d\u00e9composer la zone de pilote directment comme pour la Main zone. Pour ce faire j'ai tent\u00e9 de faire comme pour la main zone c'est \u00e0 dire lancer la reconnaissance pour savoir ou \u00e9taient tous les champs de donn\u00e9es mais malheureusement je ne pense pas que cela va \u00eatre possible. En effet non seulement ici les champs sont de tailles tr\u00e8s vari\u00e9es, mais en plus la reconnaissance n'arrive pas \u00e0 en r\u00e9cup\u00e8rer le m\u00eame nombre sur chaque ligne ce qui risque d'\u00eatre complexe \u00e0 utiliser ensuite. La preuve : \"Tentative d'auto calibration\" ; Cependant tout n'est pas perdu ! Il y a peut-\u00eatre un moyen qui serait mieux en tous points. Le soucis avec ce type de reconnaissance c'est qu'on utilise beaucoup de ressources inutiles. On peut peut-\u00eatre hard coder la valeur des diviseurs et les utiliser pour cr\u00e9er des zones. Ok alors visiblement c'est un probl\u00e8me car il semble y avoir d'autres pixels de cette couleur dans l'image (Qui l'aurait cru lol) \"Tentative 2\" J'a tent\u00e9 de r\u00e9duire la tol\u00e9rance mais le soucis c'est que c'est soit trop soit pas assez Derni\u00e8re tentative, j'ai essay\u00e9 de prendre plusieurs pixels en hauteur pour chaque incr\u00e9ment de X et en faire la moyenne, et m\u00eame comme ca, impossible de trouver de mani\u00e8re efficace les zones. Je pense que je vais donc revert tous mes changements pour revenir \u00e0 la version ou on les choisissait manuellement. Pas mal de temps perdu mais bon c'est comme ca ca arrive Bon j'ai fait un revert mais j'ai ajout\u00e9 une feature importante. Les zones font la largeur indiqu\u00e9e par l'utilisateur mais elles font la hauteur max comme ca toutes les window font la m\u00eame hauteur et ca permet \u00e0 l'utilisateur de ne pas forc\u00e9ment \u00eatre ultra pr\u00e9cis dans sa selection. Ce qui nous donne : \"Resultat final\" Maintenant je dirais que les deux prochaines choses \u00e0 faire seraient de stocker ces zones dans un fichier JSON ou autre pour que la calibration puisse \u00eatre envoy\u00e9e directement dans le logiciel de reconnaissance et ensuite de faire une calibration sur des images qui font la taille qu'on aura pendant les Grands Prix. Pour le moment elles sont au format 16:10 qui est le format d'\u00e9crant de mon laptop. Pour le stockage j'imagine un fichier qui donne des indications assez simples qui permettent de reconstruire le total des zones quand il est import\u00e9 plutot que d'\u00e9crire les coordonn\u00e9es en dur pour chacunes. Chaque Grande zone va impl\u00e9menter une methode qui s'occupe de mettre tous ses enfants dans un fichier. { \"MainZone\" :{ \"x\" : 10 , \"y\" : 20 , \"width\" : 1450 , \"height\" : 1340 , \"DriverZone\" :{ \"x\" : 0 , \"y\" : 23 , \"height\" : 25 , \"Windows\" :[ { \"DriverPositionWindow\" :{ \"x\" : 0 , \"y\" : 0 , \"width\" : 35 } }, { \"DriverPositionChangesWindow\" :{ \"x\" : 0 , \"y\" : 0 , \"width\" : 45 } } ] } } } C'est le r\u00e9sultat auquel j'aimerais arriver. Mais pour y arriver il faut encore que je cr\u00e9e les diff\u00e9rents types de window. Cela veut dire que je dois d\u00e9cider quelles informations je vais r\u00e9cup\u00e8rer de la page. Par exemple je vais conserver la position du pilote mais au final les changements de positions sont difficiles \u00e0 lire et sont redondants. Si je garde un historique des positions des pilotes je peux calculer moi m\u00eame les changements. Pareil pour gap avec la voiture devant. Je pense que je vais juste garder l'information des \u00e9carts absolus et ensuite je pourrai toujours calculer la diff\u00e9rence entre les pilotes. Ca peut para\u00eetre b\u00eate car cela rajoute du calcul mais en r\u00e9alit\u00e9 le calcul de l'OCR est extr\u00eamement gourmand alors il faut que j'\u00e9vite le plus possible d'y faire recours. Il est bien plus rapide de calculer les \u00e9carts que d'essayer de reconnaitre le texte et le convertir en chiffre. J'ai visiblement ajout\u00e9 un bug dans mon code. Maintenant tous les pilotes ont la m\u00eame image quand on les selectionne. Mais visiblement ca n'\u00e9tait pas le cas avant car j'avais pu prendres des images de chaque pilote. J'ai pass\u00e9 3 minutes \u00e0 fixer un bug stupide j'ai un peu envie de br\u00fbler ma place de travail... Mais bon au moins maintenant cela fonctionne ! Toutes les images sont r\u00e9cup\u00e8r\u00e9es et ont un format correct avec le bon nom : \"Verstappen folder\" Avec un peu de code tr\u00e8s moche j'ai pu cr\u00e9er un fichier JSON qui contient les diff\u00e9rentes infos. Cependant en exportant TOUT on se retrouve avec un fichier de 1200 lignes ce qui n'est pas optimal. Mais quand on regarde, il devrait \u00eatre possible de faire un fichier qui ne contient que les infos d'un seul pilote car ensuite il y a simplement un offset \u00e0 appliquer sur la zone et les windows. Je vais donc pouvoir commencer enfin le logiciel de d\u00e9codage qui prend en entr\u00e9e un fichier JSON comme celui ci qui a \u00e9t\u00e9 g\u00e9n\u00e8r\u00e9 avec le programme de calibration. { \"Main\" : { \"x\" : 40 , \"y\" : 230 , \"width\" : 1845 , \"height\" : 719 , \"Zones\" : [ { \"DriverZone\" : { \"x\" : 0 , \"y\" : 3 , \"width\" : 1845 , \"height\" : 35 , \"Windows\" : [ { \"Position\" : { \"x\" : 2 , \"y\" : 0 , \"width\" : 32 }, \"GapToLeader\" : { \"x\" : 204 , \"y\" : 0 , \"width\" : 96 }, \"LapTime\" : { \"x\" : 413 , \"y\" : 0 , \"width\" : 105 }, \"Drs\" : { \"x\" : 526 , \"y\" : 0 , \"width\" : 81 }, e t c... } ] } } ] } } Dans le futur il faudrait ajouter d'autres choses comme par exemple les diff\u00e9rents pilotes pr\u00e9sents sur le Grand Prix et ce genre d'infos. Quoique je vais l'ajouter d\u00e9ja maintenant et plus tard je mettrai en place la feature acessible depuis l'interface. Mais le hardcoder maintenant me permet d\u00e9ja de mieux coder l'autre c\u00f4t\u00e9. Ce programme n'est en aucun cas termin\u00e9 et je vais devoir travailler encore un peu dessus pour qu'il soit utilisable correctement mais au moins il fonctionne \u00e0 peu pr\u00e8s. Exemple du json avec les noms de pilotes: { \"Main\" : { \"x\" : 37 , \"y\" : 238 , \"width\" : 1851 , \"height\" : 713 , \"Zones\" : [ { \"DriverZone\" : { \"x\" : 0 , \"y\" : -5 , \"width\" : 1851 , \"height\" : 35 } } ] }, \"Drivers\" : [ \"Leclerc\" , \"Verstappen\" , e t c... ] } Maintenant je vais m'attaquer au d\u00e9codage. Demain je dois finir le d\u00e9codage du JSON et je dois commencer \u00e0 impl\u00e9menter la reconnaissance des textes. Voire m\u00eame des pneus etc si j'y arrive. Mercredi 5 Avril Bon la il faut vraiment que je finisse assez vite la lecture du JSON et la reconstruction des zones pour commencer la reconnaissance. J'ai pris beaucoup de temps \u00e0 faire le programme de calibration mais je pense que c'est essentiel de prendre ce temps maintenant. (BTW il faudra quand m\u00eame retourner faire une plus jolie version par ce que la ca marche mais c'est tout) Bon apr\u00e8s pas mal de boulot je pense avoir r\u00e9ussi. Dans le nouveau programme on arrive \u00e0 r\u00e9cup\u00e8rer les diff\u00e9rentes zones : \"JSON decode result\" Un conseil de notre professeur M.Bonvin a \u00e9t\u00e9 de cr\u00e9er des Releases de versions qui ne fonctionnent pas ou pas tr\u00e8s bien. J'ai donc publi\u00e9 une premi\u00e8re release de l'OCR_TEST qui fonctionne vite fait. J'ai seulement un petit soucis, comme je recr\u00e9e compl\u00eatement la structure des driver zones avec seulement la premi\u00e8re, il y a un petit d\u00e9calage car entre les zones il y avait un gap. Ce qui fait que si la premi\u00e8re zone est parfaitement centr\u00e9e : \"Centered driver\" La vingti\u00e8me ne l'est plus exactement : \"Uncentered Driver\" Pour ca j'ai essay\u00e9 de mettre un espacement arbitraire mais c'est complexe. Je vais plut\u00f4t tenter de faire une diff\u00e9rence entre la taille de la zone compl\u00eate et de la taille additionn\u00e9e de toutes les fen\u00eatre et diviser le resultat entre toutes les fen\u00eatres. Ca n'est pas parfait mais au moins maintenant les donn\u00e9es ne touchent plus les bords de la fen\u00eatre. Et voila ! Maintenant avec le fichier de configuration en Json on arrive \u00e0 r\u00e9cup\u00e8rer toutes les infos comme si elles avaient \u00e9t\u00e9 envoy\u00e9es directement depuis l'app de calibration mais sans le processing time ! \"Verstappen folder 2 On peut donc ENFIN passer au d\u00e9codage de ces FICHUES donn\u00e9es. Je vais pouvoir impl\u00e9menter ce que j'ai fait dans le projet de test de d\u00e9codage. Gr\u00e2ce \u00e0 mon d\u00e9coupage initial qui m'a pris du temps \u00e0 impl\u00e9menter on a enfin un truc qui marche m\u00eame si je n'ai impl\u00e9ment\u00e9 que la reconnaissance de noms. \"Image reconnaissance propre\" Si on se rappelle du syst\u00e8me de window et de zones dans le diagramme plus haut, c'est assez facile de comprendre comment je m'y suis pris. En gros on des listes et des listes de listes de zones, c'est la partie un peu plus technique car il y a des zones qui peuvent contenir d'autres zones etc. Je vais commencer par la reconnaissance de noms. Voici le tableau de pilotes de 2023 \"Drivers\" : [ \"Leclerc\" , \"Verstappen\" , \"Hamilton\" , \"Alonso\" , \"Russel\" , \"Gasly\" , \"Stroll\" , \"Sainz\" , \"Hulkenberg\" , \"Norris\" , \"Tsunoda\" , \"Piastri\" , \"Zhou\" , \"Ocon\" , \"Magnussen\" , \"Perez\" , \"Sargeant\" , \"De Vries\" , \"Bottas\" , \"Albon\" ] ET voici le tableau de pilotes de 2022 : \"Drivers\" : [ \"Leclerc\" , \"Verstappen\" , \"Sainz\" , \"Perez\" , \"Hamilton\" , \"Russel\" , \"Magnussen\" , \"Gasly\" , \"Ocon\" , \"Alonso\" , \"Tsunoda\" , \"Bottas\" , \"Zhou\" , \"Albon\" , \"Stroll\" , \"Schumacher\" , \"Hulkenberg\" , \"Norris\" , \"Latifi\" , \"Ricciardo\" ] Je les notes ici car J'ai souvent besoin de changer selon le dataset que j'utilise. Dans le futur je ferai s\u00fbrement un grand dataset qui prend des pilotes de reserves et des pilotes juniors pour que dans le cas ou un pilote est remplac\u00e9 dans l'ann\u00e9e il n'y a pas besoin de tout recalibrer avec l'application. Apr\u00e8s une discussion avec M.Bonvin j'ai d\u00e9cid\u00e9 de tester 3 valeurs de convertion en noir et blanc et si je ne trouve pas un match exact je prend le nom le plus proche. Pour trouver la string la plus proche je pense que je vais utiliser quelque chose qui s'appelle la technique de Levenshtein. De ce que j'ai compris c'est un algorythme qui permet de donner une metric de diff\u00e9rence entre deux strings. Bon et \u00e9videmment il ne faut pas se tromper dans la liste des pilotes GENRE NE PAS OUBLIER QUE GEORGE RUSSELL COMPORTE DEUX WFNEWIEWV DE \"L\" A LA FIN DE SON NOM CE QUI POURRAIT ENGRANGER 2H DE DEBUGGING POUR RIEN ASK ME HOW I KNOW joker laugh J'ai vraiment un soucis avec Tsunoda, Il a trop tendeance \u00e0 le confondre avec \"TSUNDDA\" et pour des raisons obscures, quand j'applique l'algorythme de Levenshtein le plus proche n'est pas \"Tsunoda\" mais \"Sainz\" iniuvbwdiucbiubisc POURQUOI !!??!! Je pense que cela demande moins de changements de lettres enfin bon c'est quand m\u00eame pas id\u00e9al. Il va falloir que je trouve un moyen de le repond\u00e9rer. C'est dommage par ce que cela marche super avec Alonso Verstappen et Albon. J'ai un peu modifi\u00e9 la methode et j'ai fait en sorte d'envoyer tous les noms en majuscules en me disant que cela pourrait r\u00e9duire le nombre de changements. Et ca a march\u00e9 !! Cela va s\u00fbrement demander plus de tests pour \u00eatre bien s\u00fbr que tout fonctionne nikel, cependant pour le moment ca marche parfaitement avec les pilotes de 2022. Pour ce qui est de la reconnaissance de chiffres, j'ai d\u00e9ja fait une partie du boulot le premier jour alors je vais juste reprendre \u00e0 partir de l\u00e0. Je r\u00e9cup\u00e8re une string de ce type \"1:35.123\" le soucis c'est que les : se transforment parfois en . ou inversement mais bon ca devrait pas \u00eatre trop dur \u00e0 g\u00e8rer. Il faut que je transforme cette string en nombre de milisecondes (Du moins je pense que c'est le meilleur moyen pour ensuite pouvoir facilement comparer et stocker l'information). Cela fait que 1:35:123 en milisecondes donne : 1 * 1000 * 60 => 60'000 35 * 1000 => 35'000 123 => 123 Total : 60'000+35'000+123 => 95'123ms Et pour l'affichage : Minutes = ms / 60'000 secondes = (ms - (minutes/60'000))/1000 ms = ms - ((minutes 60'000) + (secondes * 1000)) Et on se retrouve avec 1:35:123 Maintenant apr\u00e8s un peu de temps pour nettoyer la string etc on se retrouve avec un r\u00e9sultat comme le suivant : Position : 0 Gap to leader : 0:0:0 Lap time : 2:15:123 DRS : False Tyre : Undefined laps with the tyre : 0 Driver name : LECLERC Sector 1 : 0:31:323 Sector 2 : 0:42:340 Sector 3 : 0:0:0 Evidemment pareil pour les autres pilotes Et je me rend compte que j'ai encore tout cass\u00e9 car le laptime ne devrait pas \u00eatre 2:15 mais 1:35... Voila apr\u00e8s une heure de debugging et des ajouts pour nettoyer les chaines on se retrouve avec : Position : 0 Gap to leader : 0:0:0 Lap time : 1:35:123 DRS : False Tyre : Undefined laps with the tyre : 0 Driver name : LECLERC Sector 1 : 0:31:323 Sector 2 : 0:42:340 Sector 3 : 0:0:0 Note: le traitement commence \u00e0 devenir long, il serait peut-\u00eatre int\u00e9ressant d'utiliser un seul Tesseract Engine ou de voir ce qui prend autant de temps, on d\u00e9passe la seconde de traitement ce qui est un peu ma limite. Apr\u00e8s on peut toujours tester de rajouter du multicore processing mais c'est pour une autre fois. Demain je m'occupe de r\u00e8gler les soucis que j'ai avec la prescision de ces temps au tour et j'\u00e9sp\u00e8re pouvoir m'occuper aussi de la position des pneus et du DRS. J'aimerais finir tout ca cette semaine. Jeudi 6 Avril Une id\u00e9e m'est pass\u00e9e par la t\u00eate pendant que je dormais, dans la liste des pilotes, quand ils sont \u00e0 plus d'un tour de retard avec le leader (Ce qui arrive normalement dans presque tous les Grand Prix) on a pas des minutes mais une string qui montre \"+1 Lap\" ou \"+2Laps\" ce qui est \u00e9videmment un probl\u00e8me. Je pense qu'une bonne facon d'envoyer l'info serait de retourner -1 -2etc... \u00e0 la place des milisecondes, mais encore faut-il detecter le nombre de tours Je devrais \u00eatre en train de commencer la documentation de commment tout ce que j'ai fait fonctionne. Cependant je ne me vois pas faire ca tant que je n'ai pas au moins r\u00e9cup\u00e8r\u00e9 toutes les infos au moins un peu proprement. Cela veut dire que je commence officiellement \u00e0 prendre du retard. (Sachant que si je finis tout aujourd'hui une journ\u00e9e de doc suffira largement le terme est un peu exag\u00e8r\u00e9 mais bon) Bon pour la reconnaissance des temps c'est sp\u00e9cial... Le filtre semble ne pas changer grand chose ce qui est probl\u00e9matique et ca n'est vraiment pas fiable. Voici quelques expemples avec un treshold de 100: \"11ZSD\" Cette image est comprise comme \"11ZSD\" 42340 Cette image est comprise comme \"42340\" \"ZZAEB\" Et celle ci \"ZZAEB\"... Ce qui... n'est pas bon du tout... J'ai essay\u00e9 de trouver un fichier d'entrainement sp\u00e9cifiquement fait pour les digits. J'ai essay\u00e9 de blacklister les chars non voulus pour tenter d'obliger Tesseract \u00e0 trouver des chiffres. Avec la premi\u00e8re option, les r\u00e9sultats ne sont pas meilleurs voire pires. Avec la seconde option c'est d\u00e9ja pas mal mieux mais on perd compl\u00e8tement la possibilit\u00e9 de detecter les mots comme \"LEADER\" ou \"LAP\" et de toute facon ca n'est pas parfait. Le soucis c'est que si je n'ai pas des donn\u00e9es fiables c'est juste impossible de faire des calculs et de l'affichage correct... Il faut absolument que je trouve une solution. J'ai essay\u00e9 d'utiliser de l'interpolation our augmenter la taille de l'image et ensuite appliquer mon filtre pour retirer le flou mais sans succ\u00e8s... Pourtant la on se retrouve avec des images plut\u00f4t claires : \"Clear1\" Ici le programme trouve \"44301\" \"Clear2\" Et ici \"A5151\"... On a toujours les m\u00eames probl\u00e8mes. Bon je suis all\u00e9 me renseigner sur l'OCR et je me suis dit que j'allais tenter de faire les choses proprement. Je vais faire passer plusieurs \u00e9tapes de postProcessing avant de donner l'image \u00e0 Tesseract. GrayScale Tresholding InvertColors Scaling Dilatation Ce qui donne : \"Original\" \"Grayscale\" \"InvertColors\" ; \"Resize\" ; \"Dilatation\" Ce qui ne change : Roulement de tambour RIEN kjd viuwvuirnvoirenbf Tout ca pour rien... C'EST BON !!! Bon en fait au final le probl\u00e8me \u00e9tait une mauvaise configuration de Tesseract. Je vais devoir un peu nettoyer tout ca. Mais avec les changements de l'image on a des r\u00e9sultats BEAUCOUP plus pr\u00e9cis et potentiellement utilisables. La je vais devoir faire un serieux travail de nettoyage et simplification de mon code par ce que la c'est vraiment un chantier vu le nombre de choses que j'ai du essayer. J'ai du aussi beaucoup modifier la gestion de l'image ce qui donne : \"Clean\" Et la on a des r\u00e9sultats qui sont vraiment bons. J'ai pu ajouter assez facilement la detection de position comme c'est simplement un chiffre. On se retrouve maintenant avec ce genre de retours : Position : 1 Gap to leader : 8:33:51 Lap time : 2:19:123 DRS : False Tyre : Undefined laps with the tyre : 0 Driver name : LECLERC Sector 1 : 0:31:828 Sector 2 : 0:42:940 Sector 3 : 0:0:0 Position : 2 Gap to leader : 0:3:259 Lap time : 23:12:392 DRS : False Tyre : Undefined laps with the tyre : 0 Driver name : VERSTAPPEN Sector 1 : 0:38:119 Sector 2 : 0:0:0 Sector 3 : 0:0:0 Il ne manque plus que l'impl\u00e9mentation de la reconnaissance du DRS et des Pneus Et non... je viens de me rendre compte que mon programme a encore cass\u00e9 car le tap time ne peut pas \u00eatre 23 min lol. J'ai un nouveau magnifique probl\u00e8me... Les points et les deux points sont interpr\u00eat\u00e9s comme des chiffres ... Give me a F * * break... J'ai du mal \u00e0 comprendre pourquoi ils ne sont d\u00e9tect\u00e9s comme tels que maintenant. Bon alors il semblerait les temps au tour aie besoin d'un ordre tr\u00e8s pr\u00e9cis pour fonctionner. Grayscale InvertColors Tresholding Resize * 2 Resize * 2 Et la on a des r\u00e9sultats un peu mieux. Bon demain il faut absolument que je me charge de r\u00e8gler tous ces probl\u00e8mes et que je commence la reconnaissance des pneus et de DRS par ce que je commence \u00e0 \u00eatre en retard. Vendredi 6 Avril 2023 Alors aujourd'hui c'est le dernier jour avant de commencer \u00e0 \u00eatre en retard pour de bon. J'ai r\u00e9ussi \u00e0 r\u00e8gler le probl\u00e8me des temps au tour, des gaps, et des secteurs. Dans le processus j'ai cass\u00e9 la detection de position mais ca devrait pas \u00eatre TROP compliqu\u00e9. Et voila ... Apr\u00e8s seulement plus de dix heures de gal\u00e8re, si on donne cette image au programme et le bon JSON le programme nous retourne : Position : 1 Gap to leader : 0:05:059 Lap time : 1:39:123 DRS : False Tyre : Undefined laps with the tyre : 0 Driver name : LECLERC Sector 1 : 0:31:828 Sector 2 : 0:42:940 Sector 3 : 0:00:000 Position : 2 Gap to leader : 0:03:259 Lap time : 1:39:392 DRS : False Tyre : Undefined laps with the tyre : 0 Driver name : VERSTAPPEN Sector 1 : 0:31:749 Sector 2 : 0:00:000 Sector 3 : 0:00:000 Evidemment le GapToLeader est faux sur leclerc car il est leader mais bon ca je pourrai toujours Hardcoder que le premier a jamais de GapToLeader. Bon j'ai eu beaucoup de soucis que je ne vais pas mentionner ici car ce sont simplement des soucis de logique de programmation pour trouver un DRS ouvert ou non. Au final la technique que j'utilise et qui marche plut\u00f4t bien pour le DRS est que je prend la premi\u00e8re image de DRS et je la d\u00e9clare comme valeur \u00e9talon d'un DRS non actif, en effet dans 99% des cas le leader n'a pas de DRS (cela peut arriver alors il faudra donc juste verifier que les pilotes sont bien \u00e0 moins de deux secondes les uns des autres pour confirmer). Ensuite cette valeur \u00e9talon je la calcule en fonction du nombre de pixels verts dans l'image et si il y a plus de 30% de pixels verts en plus c'est que le DRS est activ\u00e9 ex: Ceci est un DRS ferm\u00e9: \"Closed DRS\" Ceci est un DRS ouvert: \"Open DRS\" Cela marche \u00e0 peu pr\u00e8s tout le temps mais dans le pire des cas on peut toujours verifier que les pilotes sont bien proches pour detecter les potentiels rares cas de faux positifs. J'ai pu augmenter les performances en utilisant un seul engine pour tout le monde et en arr\u00eatant d'utiliser GetPixel et SetPixel qui sont simplement des horreurs \u00e0 utiliser. Mais elles ne sont pas encore bonnes Le soucis avec la detection de pneus cependant, c'est qu'il n'est pas possible d'utiliser la reconnaissance pour savoir ou regarder la couleur car cela ne marcherait pas. Je ne peux pas faire trop de post processing car je dois conserver la couleur Je ne peux pas hardocder un endroit ou aller regarder car cela \u00e9volue tout le long du Grand Prix. Bref c'est la gal\u00e8re. En y r\u00e9flechissant je me suis dit qu'une bonne id\u00e9e pourrait \u00eatre de partir de la droite de la zone du pneu en regardant au milieu de la hauteur. Puis continuer vers la gauche jusqu'\u00e0 ce que je rencontre une couleur diff\u00e9rente. Je pourrai ensuite faire une zone un peu vers la gauche qui devrait contenir les infos du pneu et sur laquelle il sera possible de faire de le reconnaissance de couleur et de la reconnaissance de chiffres. J'ai d\u00e9termin\u00e9 que le background n'\u00e9tait jamais plus clair que #505050 et que donc nimporte quelle couleur qui aurait plus que 50 dans un seul des channels serait consid\u00e8r\u00e9e comme une couleur cassant le background Pour arriver \u00e0 cette conclusion je me suis amus\u00e9 un peu avec les couleurs pour jouer avec les limites de mon algorythme : \"Color fun\" Et je crois que j'ai eu une bonne id\u00e9e, avec une petite methode bien faite on arrive \u00e0 de supers r\u00e9sultats : private Rectangle FindTyreZone () { Bitmap bmp = WindowImage ; int currentPosition = bmp . Width ; int height = bmp . Height / 2 ; Color limitColor = Color . FromArgb ( 0 x50 , 0 x50 , 0 x50 ); Color currentColor = Color . FromArgb ( 0 , 0 , 0 ); Size newWindowSize = new Size ( bmp . Height , bmp . Height ); while ( currentColor . R <= limitColor . R && currentColor . G <= limitColor . G && currentColor . B <= limitColor . B && currentPosition > 0 ) { currentPosition --; currentColor = bmp . GetPixel ( currentPosition , height ); } //Its here to let the new window include a little bit of the right side int offset = Convert . ToInt32 (( float ) newWindowSize . Width / 100f * 20f ); int CorrectedX = currentPosition - ( newWindowSize . Width - offset ); if ( CorrectedX <= 0 ) return new Rectangle ( 0 , 0 , newWindowSize . Width , newWindowSize . Height ); return new Rectangle ( CorrectedX , 0 , newWindowSize . Width , newWindowSize . Height ); } \"Tyres\" Maintenant cela devrait \u00eatre beaucoup plus simple de trouver la couleur g\u00e9n\u00e9rale et le nombre de tours. Donc ce que je fais c'est que je fais une reconnaissance de texte sur l'image r\u00e9duite. Si je trouve une lettre c'est facile Ca me donne le type de pneu et ca me dit que c'est le premier tour avec. Si c'est un nombre alors je fais la moyenne de toutes les couleurs de l'image et je prend la couleur de pneu la plus proche. Voici les diff\u00e9rentes couleurs de pneus : SOFT : #FF0000 MEDIUM : #f5bf00 HARD : #d9d8d4 INTER : #00a42e WET : #2760a6 \"Tyre colors\" Les couleurs de pneus peuvent changer de temps \u00e0 autres, par exemple cette r\u00e8gle de pneus est arriv\u00e9e en 2019 et avant il y avait beaucoup plus de couleurs mais dans une volont\u00e9 de rendre le sport plus facile \u00e0 comprendre \u00e0 la t\u00e9l\u00e9 cela a \u00e9t\u00e9 simplifi\u00e9. Je ne pense pas que cela va changer dans les ann\u00e9es qui viennent alors tout est hardcod\u00e9. Je pense que j'ai des soucis avec la detection de texte et de couleur car ma zone est trop grande. Alors bon j'\u00e9crit ces lignes apres des heures de tests. Il semble que la principale difficult\u00e9 avec ces pneus c'est que les chiffres ou lettres sont minuscules. Il est donc extr\u00eamement difficile de faire une reconnaissance ne serait-ce qu'un peu fiable.. Je fais de mon mieux pour tenter de r\u00e8gler le soucis cependant c'est vraiment complexe. Je commence \u00e0 devenir fou, je tente tout et nimporte quoi pour permettre \u00e0 mon algo de fonctionner et m\u00eame quand je fais du post processing comme pas possible il me retourne toujours nimporte quoi... \"5i t'inqui\u00e8tes\" Ici le programme va trouver '5i'... En fait c'est complexe d'expliquer tout ce que je fais car je change tout en boucle en essayant et en ratant ce qui prend des heures. Pour aujourd'hui j'abandonne je vais simplement rentrer chez moi et y r\u00e9flechir cette nuit mais je ne vois pas comment mieux faire la... C'est terrible par ce que je sens que je ne suis pas bien loin. Vacances Bon je vais un peu laisser de c\u00f4t\u00e9 la detection de chiffres pour me pencher un peu plus sur la d\u00e9tection de couleur. Par ce que techniquement si j'arrive \u00e0 toujours parfaitement la detecter alors je pourrais me passer des chiffres car ils sont redondant si je construit un historique de pneus. J'ai r\u00e9ussi \u00e0 fix mon probl\u00e8me de mauvaise detection de couleur de pneus. Du moins je crois. Seulement j'ai quand m\u00eame un souci, les fen\u00eatres de pneus avec une lettre n'ont pas assez de couleur pour \u00eatre d\u00e9tect\u00e9s. Je vais donc essayer de detecter les cinq lettres possibles et si il ne trouve pas alors je pourrai tenter de detecter les chiffres sans lettres ce qui devrait grandement aider. Le but est encore une fois de r\u00e9duire les possibilit\u00e9s de Tesseract. Je me rend de plus en plus compte que le plus important c'est de r\u00e9duire le scope le plus possible. Moins il y a de mots et lettres et de chiffres possibles meilleure sera la reconnaissance. Bon ca ne veut toujours pas marcher maintenant le 11 est interpr\u00eat\u00e9 comme trois I ou comme un M... J'en ai marre sans rire c'est vraiment p\u00e9nible. Alors j'\u00e9crit ces lignes deux jours plus tard et me rend compte avec horreur que toutes mes modifications sur ce journal de bord n'ont pas \u00e9t\u00e9 auvegard\u00e9e... yess.. Bon pour faire simple, j'ai r\u00e9ussi \u00e0 rendre la detection de couleurs bien plus efficace en r\u00e9duisant la taille de l'image et en ne prenant pas en compte les couleurs que l'on d\u00e9tecte comme \u00e9tant partie int\u00e9grante du background. Par exemple quand on a une image comme celle ci : \"Avec background\" qui contient un background alors que ci dessous, on l'a enlev\u00e9. \"Sans background\" La diff\u00e9rence est t\u00e9nue mais elle permet de grandement am\u00e9liorer la prescision de la reconnaissance de couleurs. Pour ce qui est du nombre de tours je me suis rendu compte que cela n'\u00e9tait d\u00e9ja pas tr\u00e8s utile car avec l'historique on devrait pouvoir le d\u00e9duire. Mais bon pour la forme je me suis dit que cela serait quand m\u00eame une bonne id\u00e9e de v\u00e9rifier avec la reconnaissance. J'\u00e9tais quasi certain que le soucis \u00e9tait le fait que l'on voie le contour du logo de pneu qui faisait que la reconnaissance avait du mal. Et j'avais raison ! En les enlevant (Ce qui n'a pas \u00e9t\u00e9 simple) J'ai pu avoir des chiffres beaucoup plus proches de la r\u00e9alit\u00e9. En m\u00eame temps je ne vois pas bien comment j'aurais pu faire mieux : \"Super 11\" Je suis quand m\u00eame assez fier de voir que j'ai r\u00e9ussi \u00e0 part de l'image que on peut voir un peu plus haut et automatiquement la transormer en celle ci-dessus. J'ai donc pu retirer le round autour du chiffre et cela m'a permit de pouvoir d\u00e9zoomer un peu et c'est avec ca que les lettres ont pu \u00eatre mieux reconnues : \"Super H\" \"Super M\" Maintenant je pense qu'il ne reste \"plus qu'\u00e0\" nettoyer un peu tout ce code qui traine de partout pour tout faire fonctionner et impl\u00e9menter un peu de parrallel processing ainsi que de l'asynchrone pour ne pas bloquer le reste du programme. Par ce qu'il faut savoir que en l'\u00e9t\u00e2t, le programme met 25 secondes \u00e0 d\u00e9marrer et consomme presque 2GB de Ram. Certes cela ne veut pas dire que la reconnaissance \u00e0 elle seule prend 25 secondes car au d\u00e9marrage il y a aussi la lecture du fichier de config et la cr\u00e9ation des window etc.. En r\u00e9alit\u00e9 la partie strictement OCR prend dans les 12s si on en croit la fonction stopWatch de C#. Et quand on change d'image la reconnaissance prend 9s. Dans tout les cas c'est BEAUCOUP trop. J'aurais eu comme objectif de faire une reconnaissance toutes les secondes. Je ne sais pas bien si cela va \u00eatre possible mais en tout cas le but va \u00eatre de s'en rapprocher. Pour \u00eatre plus exact et permettre une comparaison, voici les stats exactes Avec un fichier d'images vide : Loading - 11.8s Splitting d'images - 90ms OCR - 12.5s Avec un fichier d'images plein : Loading - 10.8s Splitting d'images - 80ms Ocr - 11.6s En passant d'une image \u00e0 l'autre : Loading - NaN Splitting d'images - 50ms Ocr - 8.8s Donc on peut voir que les deux endroits ou le programme prend le plus de temps c'est au premier d\u00e9marrage quand il faut lire le fichier et setup les windows etc... Et l'OCR qui prend un temps fou. Ce qui est pratique c'est que les presque 2gb de ram sont utilis\u00e9s que au lancement et ensuite l'application n'en utilise que quelques centaines de mb. Le processeur lui tourne entre 10 et 20% ce qui ne va pas durer :) Je vais m'occuper dabord du loading. J'ai essay\u00e9 d'utiliser un Parrallel.For au moment de la cr\u00e9ation des windows, le probl\u00e8me c'est que visiblement les objets windows sont beaucoup trops complexes et utilisent trop de ressources partag\u00e9es pour \u00eatre vraiment thread Safe. J'\u00e9sp\u00e8re que je n'aurais pas trop de soucis avec ca qu'en j'en viendrai \u00e0 l'optimisation de l'OCR... Ce qui me rend fou c'est que cette boucle toute nulle prend plus de dix secondes \u00e0 s'executer et je ne comprend pas bien pourquoi. for ( int i = 0 ; i < NUMBER_OF_DRIVERS ; i ++) { Point tmpPos = new Point ( 0 , FirstZonePosition . Y + i * FirstZoneSize . Height - Convert . ToInt32 ( i * offset ) /*- (i* (FirstZoneSize.Height / 32))*/ ); Zone newDriverZone = new Zone ( MainZoneImage , new Rectangle ( tmpPos , FirstZoneSize )); Bitmap zoneImg = newDriverZone . ZoneImage ; newDriverZone . AddWindow ( new DriverPositionWindow ( zoneImg , new Rectangle ( driverPositionPosition , driverPositionArea ))); newDriverZone . AddWindow ( new DriverGapToLeaderWindow ( zoneImg , new Rectangle ( driverGapToLeaderPosition , driverGapToLeaderArea ))); newDriverZone . AddWindow ( new DriverLapTimeWindow ( zoneImg , new Rectangle ( driverLapTimePosition , driverLapTimeArea ))); newDriverZone . AddWindow ( new DriverDrsWindow ( zoneImg , new Rectangle ( driverDrsPosition , driverDrsArea ))); newDriverZone . AddWindow ( new DriverTyresWindow ( zoneImg , new Rectangle ( driverTyresPosition , driverTyresArea ))); newDriverZone . AddWindow ( new DriverNameWindow ( zoneImg , new Rectangle ( driverNamePosition , driverNameArea ))); newDriverZone . AddWindow ( new DriverSector1Window ( zoneImg , new Rectangle ( driverSector1Position , driverSector1Area ))); newDriverZone . AddWindow ( new DriverSector2Window ( zoneImg , new Rectangle ( driverSector2Position , driverSector2Area ))); newDriverZone . AddWindow ( new DriverSector3Window ( zoneImg , new Rectangle ( driverSector3Position , driverSector3Area ))); MainZone . AddZone ( newDriverZone ); } Alors que Zone.AddWindow c'est simplement : public virtual void AddWindow ( Window window ) { Windows . Add ( window ); } Et windows est simplement une liste. Donc ca ne peut pas \u00eatre ca qui prend du temps. Et les windows que je cr\u00e9\u00e9 ont ca comme code : public DriverPositionWindow ( Bitmap image , Rectangle bounds ) : base ( image , bounds ) { Name = \"Position\" ; } Sachant que le constructeur de base d'une Window c'est : public Window ( Bitmap image , Rectangle bounds ) { Image = image ; Bounds = bounds ; Engine = new TesseractEngine ( TESS_DATA_FOLDER . FullName , \"eng\" , EngineMode . Default ); Engine . DefaultPageSegMode = PageSegMode . SingleLine ; } Sachant que TesseractEngine est en statique et que donc il ne devrait... OHLLALALALALALALALALA je suis un imb\u00e9cile... J'ai juste \u00e0 changer ce constructeur avec ca: if ( Engine == null ) { Engine = new TesseractEngine ( TESS_DATA_FOLDER . FullName , \"eng\" , EngineMode . Default ); Engine . DefaultPageSegMode = PageSegMode . SingleLine ; } ET le loading ne prend plus que 2-300 ms... Bon c'est une tr\u00e8s belle am\u00e9lioration pour pas tr\u00e8s ch\u00e8r mais bon c'est un peu b\u00eate... Bon je pense que 2-300ms c'est une dur\u00e9e correcte surtout que ca n'est appel\u00e9 qu'une fois pour le lancement. On peut passer \u00e0 la suite maintenant. Alors il y a un grand soucis avec la parallellisation de l'OCR... Tesseract n'est pas par d\u00e9faut une classe \"Thread safe\" ce qui veut dire que je ne peut utiliser de parallell.Foreach sur mes windows pour acc\u00e8l\u00e8rer le traitement drastiquement. Je pourrais par exemple avoir une instance de Tesseract par window sauf que cela fait 20 pilotes * 9 windows chacuns ce qui donne 180 instances ce qui n'est tout simplement pas raisonnable. Je vais donc essayer de voir avec l'utilisation de methodes asynchrones qui me permettraient de faire un genre de flux tendu de reconnaissance. J'avoue que la je navigue un peu \u00e0 vue, je me base sur diff\u00e9rentes infos que je trouve sur des sites un peu perdus et sur chatGPT, j'esp\u00e8re que j'arriverai \u00e0 trouver une solution car 10 secondes de reconnaissance c'est vraiment beaucoup trop. Alors le soucis avec un Engine unique entre toutes les windows c'est qu'il n'est pas possible de process plusieurs images \u00e0 la fois. Je vais donc retirer l'engine unique pour voir si en cr\u00e9er un par window me permet de passer en multithreading. La grande question sera : Est-ce que les ressources suppl\u00e9mentaires que vont prendre la cr\u00e9ation de tous ces engines va compenser enti\u00e8rement le temps gagn\u00e9 avec la paralellisation. Pour stocker les donn\u00e9es dans un premier temps je vais cr\u00e9er un objet DriverData. Ce qu'il y a de pratique avec ca, c'est que je pourrais ajouter du code de v\u00e9rification de certaines donn\u00e9es directement dedans avant de les donner \u00e0 la suite du programme. Et on peut m\u00eame imaginer une impl\u00e9mentation d'une liste de DriverData pour avoir l'historique. Ce qui serait cool ca serait de grouper toutes ces data avec un num\u00e9ro de tour. Placer ensuite la liste de Data dans une DB serait ainsi super simple. Mais il va falloir savoir quoi mettre, quelles infos sont redondantes et prendre en compte le fait que un tour affich\u00e9 sur la page de la F1TV n'est accompli que par certains des premiers pilotes. D'autres pilotes peuvent \u00eatre dans des tours pr\u00e9c\u00e9dents si ils ont du retard. Il faudra r\u00e9fl\u00e9chir \u00e0 cela quand je viendrai au mod\u00e8le. Bon pour y arriver j'ai du faire de gros changements et le r\u00e9sultat n'est peut-\u00eatre pas aussi cool que ce que j'aurais voulut... Voici un petit point sur les performances maintenant J'ai \u00e9galement d\u00e9sactiv\u00e9 le dump d'images. Pour le moment j'ai tout mis en commentaire mais cela pourrait \u00eatre int\u00e9ressant de faire en sorte de pouvoir l'activer en changeant une ou deux variables Au d\u00e9marrage : Loading - 113ms Splitting d'images - 14ms Ocr - 7s En passant d'une image \u00e0 l'autre : Loading - 113ms Splitting d'images - 13ms Ocr - 5s Alors clairement les stats montrent qu'il y a eu un changement mesurable mais bon je pensais pouvoir en gagner un peu plus... Je soupconne la cr\u00e9ation d'engines d'\u00eatre \u00e0 l'origine de ces performances presque d\u00e9cevantes. Autre soucis, il semble que plus je change d'image plus la detection est lente et plus je consomme de RAM. Il va falloir que je travaille encore un peu. J'ai tent\u00e9 de mettre un stopwatch sur une des cr\u00e9ations d'engine Tesseract et le r\u00e9sultat me parait fou... Plus d'une seconde c'est dingue. J'ai test\u00e9 dans d'autres endroits du code et effectivement il semble que la cr\u00e9ation d'un engine prenne entre une et deux secondes ce qui est une ETERNITEE what ! Donc il faut optimiser tout ca. Une id\u00e9e serait de d\u00e9composer le threading mais cela me demanderait un gros refactor et je n'ai pas envie d'en refaire un la... Sinon, une fois qu'ils sont cr\u00e9\u00e9s ils ne prennent pas de temps du tout. Cr\u00e9er une fois tous les engines et ensuite les utiliser pourrait \u00eatre une bonne id\u00e9e. Cela prendrait longtemps au load mais ensuite les reconnaissances devraient \u00eatre super rapides. Ok alors ca c'est d\u00e9ja plus ce \u00e0 quoi je m'attendais ! On est de nouveau \u00e0 plus de 10s de loading time mais on est descendu \u00e0 deux secondes par OCR. (Bon autre soucis, l'utilisation de la RAM est ridicule plus de 2gb mais ce qui m'inqui\u00e8te c'est que j'ai l'impression qu'elle augmente plus on change d'image) J'ai r\u00e8gl\u00e9 (en partie) le soucis en obligeant le GC (Garbage Collector) \u00e0 collecter apr\u00e8s chaque detection. m\u00eame apr\u00e8s 50 detections l'utilisation de la ram se stabilize autour des 2GB. Bon en paralellisant la cr\u00e9ation des Engines le soucis c'est que cela demande d'allouer beaucoup trop de m\u00e9moire d'un coup alors le programme se fige pendant genre cinq secondes avant de tout cr\u00e9er. Du coup m\u00eame si la cr\u00e9ation est plus rapide, on se retrouve avec un temps total plus long... Je pense que l'on va devoir se contenter de ces dix secondes. Bon la j'allais tenter de faire la documentation mais je viens de me rendre compte que la detection de temps au tour est pas vraiment encore id\u00e9ale... J'ai r\u00e9ussi \u00e0 changer un petit peu le programme de reconnaissance pour rendre la reconnaissance un peu meilleure mais cela a drastiquement augment\u00e9 le temps requis pour d\u00e9coder... On arrive \u00e0 3.5 secondes. Je vais tenter de rajouter un peu de parralell processing sur les boucles de traitement voir si cela peut aider. Alors effectivement cela aide pas mal, on arrive maintenant \u00e0 faire une detection presque tout le temps en dessous de la seconde. Et j'ai aussi du changer un peu le fonctionnement de la detection des Temps au tour. Et voila je pense que je vais m'arr\u00eater la pour la partie d\u00e9codage. Je ne pense pas que je peux facilement faire mieux que ca et il faut que j'avance dans d'autres parties du projet. Je vais pouvoir commencer \u00e0 documenter un peu toute la partie OCR. Il faut que je prenne le temps de le faire bien car c'est la partie la plus int\u00e9ressante du projet et ou je pense que j'aurai le plus essay\u00e9 de choses qui vallent le coup d\u00eatres racont\u00e9es. J'ai aussi pass\u00e9 pas mal de temps sur le poster du projet. J'avais fait des croquis au crayon de ce \u00e0 quoi je pensais, cependant apr\u00e8s de longues discussions avec M.Garcia ils n'\u00e9taient pas forc\u00e9ment tr\u00e8s bons car ils ne repr\u00e9sentent pas assez bien le fonctionnement du projet et sont un peu trop marketings. Du coup j'ai fait une premi\u00e8re version au propre : \"Poster V1\" Mais je n'\u00e9tais pas forc\u00e9ment content du r\u00e9sultat et il manquait des choses je trouve comme par exemple l'utilisation de Selenium. J'ai donc repass\u00e9 des heures \u00e0 faire une seconde version : \"Poster V2\" La police d'\u00e9criture n'est pas encore la bonne mais cela va venir. Mais je pr\u00e9f\u00e8re d\u00e9ja beaucoup cette version \u00e0 la premi\u00e8re. Je ne sais pas encore si la version finale sera une version plus travaill\u00e9e de ce poster ou compl\u00eatement autre chose mais pour l'instant je suis \u00e0 peu pr\u00e8s content de cette version. Je le trouve un tout petit peu trop brouillon ou avec trop d'infos mais il m'a \u00e9t\u00e9 de nombreuses fois reproch\u00e9 de ne pas assez montrer le fonctionnememt interne et je ne peux pas faire plus simple. L'ajout des nombres pour compartimenter le projet ajoute de la structure mais je me demande si cela suffit. Maintenant que je suis \u00e0 peu pr\u00e8s content de mon code pour l'OCR je vais commencer sa documentation. (Uniquement son fonctionnement interne pas comment s'en servir car cela va changer) Bon j'ai cr\u00e9\u00e9 u nouveau projet selenium mais m\u00eame avec les bonnes libraries je n'arrivais pas \u00e0 faire fonctionner firefox j'avais toujours une erreur \"OpenQA.Selenium.WebDriverException: 'Cannot start the driver service on http://localhost:51481/'\" et j'ai pu r\u00e8gler le probl\u00e8me en t\u00e9l\u00e9chargeant directement le gecko driver depuis le git https://github.com/mozilla/geckodriver/releases et utiliser le fichier directement dans le service : var service = FirefoxDriverService . CreateDefaultService ( AppDomain . CurrentDomain . BaseDirectory + @\"geckodriver-v0.27.0-win32\\geckodriver.exe\" ); FirefoxOptions options = new FirefoxOptions (); var driver = new FirefoxDriver ( service , options ); Le seul probl\u00e8me c'est que du coup il faut tout le temps d\u00e9placer le fichier dans le dossier bin si je clone le projet. Il faudra faire un installeur dans la version finale qui s'occupe de tout je pense. Je me suis dit que j'allais garder la doc pour le retour des vacances quand j'aurai un bureau un clavier et un setup complet un peu propres. Bon il va falloir que je parle de la r\u00e9cup\u00e9ration de cookie. J'ai d\u00e9ja pu travailler lors d'un poc sur la meilleure facon de prendres des screenshots de la F1TV : Avoir une page chrome ouverte avec le feed en plein \u00e9cran et un programme qui prend des captures d'\u00e9crans. Avoir une cam\u00e9ra qui prend en photo l'\u00e9cran au cas ou chrome et Firefox emp\u00eachent la prise de captures d'\u00e9crans. R\u00e9cup\u00e8rer directement le feed en faisant du reverse engeneering de la plateforme. Simuler un chrome en background qui prenne des screenshot sans qu'on aie \u00e0 le voir. Dans toutes ces options, je dirais que la pire \u00e9tait celle de la cam\u00e9ra qui filme l'\u00e9cran, mais \u00e0 l'\u00e9poque c'\u00e9tait encore envisageable comme solution de dernier recours. Le soucis de cette solution c'est l'horreur que serait la partie OCR avec une image de tr\u00e8s mauvaise qualit\u00e9. Une autre option qui m'aurait vraiment emb\u00eat\u00e9 aurait \u00e9t\u00e9 de devoir garder une page de Chrome ou Firefox ouverte quelque part sur un \u00e9cran pour que le programme puisse prendres des captures d'\u00e9crans. C'est de loin l'option la plus simple et la plus logique mais elle poss\u00e8de pour moi de tr\u00e8s gros points noirs : On ne peut pas certifier l'int\u00e9grit\u00e9 des donn\u00e9es car l'utilisateur a le contr\u00f4le total sur le feed. Il peut mettre pause, avancer, reculer, tout casser sans faire expr\u00e8s en ouvrant autre chose sur son ordi qui se mette pile devant. Bref c'est un peu bancale. Et surtout on bloque une partie non significative de l'\u00e9cran de l'utilisateur avec des infos redondantes. Et je peux vous dire que quand je commente la F1 j'ai besoin de beaucoup d'informations et que chaque centim\u00e8tre d'\u00e9cran est crucia\u00e9 ! Alors avoir un \u00e9cran complet bloqu\u00e9 est juste un point bloquant qui m'emp\u00eacherait d'utiliser l'app aussi bonne soit-elle dans ses pr\u00e9dictions. Mais bon si aucune autre methode ne fonctionne ce qui est bien c'est que celle la est plut\u00f4t simple \u00e0 mettre en place. Ensuite reverse engeneer le feed serait l'option la plus classe, cependant c'est la plus complexe et la plus bancale au niveau l\u00e9gal haha. L'id\u00e9e serait de r\u00e9cup\u00e8rer le lien vers le broadcast g\u00e9n\u00e9ral et de comprendre comment il fonctionne pour le d\u00e9coder nous m\u00eame pendant un Grand Prix. Seuls soucis : Il n'est pas possible de faire des tests en dehors des periodes de Grand Prix (Et je rappelle que c'est des p\u00e9riodes ou je travaille en plus) Difficile de faire un syst\u00e8me qui marche pareil pour les rediffusions et les lives. (En effet les liens des rediff sont beaucoup plus simple \u00e0 r\u00e9cup\u00e8rer mais ne fonctionnent pas du tout pareil et pour tester l'app il est essentiel de pouvoir s'entrainer sur des anciens Grand Prix) Dernier GROS soucis, je ne sais tout simplement pas faire ca lol. Je ne sais pas comment faire. Peut-\u00eatre que avec des profs qui m'aident et chat gpt ainsi qu'internet je pourrais potentiellement n\u00e9gocier un truc mais c'est hautement improbable et cela serait une perte de temps folle si je n'y arrive pas. Derni\u00e8re option que je trouve la plus s\u00e9duisante. Simuler une instance de Chrome ou de Firefox (Le soucis avec chrome c'est qu'il impl\u00e9mente l'utilisation de DRM dans les vid\u00e9os qui fait qu'il est tr\u00e8s difficile de passer outre la s\u00e9curit\u00e9 avec un bot) pour ensuite prendre des captures d'\u00e9crans automatiquement. Cette solutions offre pleins d'avantages : Pas de place prise sur l'\u00e9cran L'int\u00e9grit\u00e9 des donn\u00e9es est assur\u00e9e car c'est le programme qui d\u00e9cide d'ou partir et de si il met pause ou non C'est une option complexe mais beaucoup moins que le reverse engeneering Elle permet de ne demander presque aucun input de la part de l'utilisateur. Mais elle pose quelques probl\u00e9matiques : Comment se connecter automatiquement sans \u00eatre detect\u00e9 par un Bot et sans demander \u00e0 l'utilisateur ses identifiants (Pour des raisons \u00e9videntes qui sont : QUI VA METTRE SES IDENTIFIANTS SUR UNE VIEILLE APP COMME LA MIENNE??) Comment faire en sorte que le programme prenne les meilleures captures dans la meilleure qualit\u00e9 et en plein \u00e9cran. Mais j'ai d\u00e9cid\u00e9 de partir sur cette option. Pour ce faire j'utilise Selenium. J'ai pu tester Puppetteer Sharp et m\u00eame si dans un premier temps j'ai pu avancer asez vite, malheureusement il y a des bugs qui rendent son utilisation impossible dans notre contexte. J'ai donc d\u00e9cid\u00e9 de tout faire en utilisant un portage de Selenium dans mon programme. Voici un exemple de code qui va ouvrir FireFox et qui va lancer un RickRoll var service = FirefoxDriverService . CreateDefaultService ( AppDomain . CurrentDomain . BaseDirectory + @\"geckodriver-v0.27.0-win32\\geckodriver.exe\" ); service . Host = \"127.0.0.1\" ; service . Port = 5555 ; FirefoxOptions options = new FirefoxOptions (); options . AddArgument ( \"--disable-headless\" ); var driver = new FirefoxDriver ( service , options ); driver . Navigate (). GoToUrl ( \"https://www.youtube.com/watch?v=dQw4w9WgXcQ&autoplay=1&mute=1\" ); Dans cet exemple on d\u00e9sactive le \"Headless\" pour qu'on puisse voir ce que fait l'app car sinon tout est invisible. Alors dans les faits la vid\u00e9o youtube ne se lance pas du tout car il y a des pubs et des prompts de cookies que l'on doit accepter etc... ce qui montre les diff\u00e9rents challenges que l'on va devoir surmonter pour vraiment faire ce que l'on veut. Mais un petit d\u00e9tail extr\u00eamement important, la F1TV est un programme payant un peu comme netflix. Ce qui veut dire que pour acc\u00e8der au contenu il faut \u00eatre connect\u00e9. Sauf que une instance de firefox cr\u00e9\u00e9 par Selenium est comme une page de naviguation priv\u00e9e, ce qui veut dire que si on va sur la page de la F1TV on est pas connect\u00e9s. Je pourrais tout \u00e0 fait demander \u00e0 l'utilisateur de me donner ses identifiants pour que j'aille ensuite automatiquement me connecter sauf que cela pose deux soucis: Personne ne voudra mettre ses identifiants sur mon programme La page de login de la F1TV a \u00e9t\u00e9 prot\u00e8g\u00e9e avec la meilleure technologie de detection de bots que je connaisse. Presque aucun site n'arrive \u00e0 me detecter sauf eux ! Donc c'est tout simplement impossible d'utiliser cette technique. Ensuite je me suis rappel\u00e9 que ce que la page stocke pour me permettre de rester connect\u00e9 ce sont des cookies. Et si je mets le bon cookies dans Selenium alors je serai connect\u00e9. Dans un premier temps je voulais faire un syst\u00e8me ou l'utilisateur irait prendre dans son chrome son cookie et le copie colle dans mon programme mais c'est immonde. C'est alors que vient la partie r\u00e9cup\u00e8ration de cookies ! Tous les cookies de chrome sont stock\u00e9s dans une base de donn\u00e9es SQLITE. On pourrait se dire Banco il suffit d'aller dedans et de retrouver tous les cookies et se connecter. Sauf que, pas b\u00eates, les \u00e9quipes de chrome ont d\u00e9cid\u00e9 que c'\u00e9tait une bonne id\u00e9e d'encoder les cookies pour que tout le monde ne puisse pas venir y mettre son nez... En effet les cookies peuvent contenir des informations importantes. Cela fait que pour utiliser ces cookies il faut pouvoir les d\u00e9coder. Mon hypoth\u00e8se a \u00e9t\u00e9 que si ces cookies peuvent \u00eatre lus par Chrome m\u00eame hors connexion, c'est que la cl\u00e9 de d\u00e9codage existe sur l'appareil et qu'il suffit de la trouver. ET C'EST LE CAS! Apr\u00e8s pas mal de recherches j'ai pu voir que la cl\u00e9 de d\u00e9codage existe bel et bien et qu'il suffit de la d\u00e9coder en utilisant la librairie DPAPI pour la lire. Avec cette cl\u00e9 on peut ensuite d\u00e9coder les cookies et leurs valeurs ce qui veut dire qu'il est th\u00e9oriquement possible d'automatiser le processus sans que l'utilisateur n'aie rien \u00e0 faire. J'ai d\u00e9cid\u00e9 de faire la partie r\u00e9cup\u00e8ration en python pour deux raison : Je n'arrivais pas \u00e0 trouver une bonne impl\u00e9mentation de DPAPI en C# qui me permettait de d\u00e9coder la cl\u00e9. Il existe beaucoup plus de documentation en Python pour ce qui est de la cryptographie et donc si Chrome change de fonctionnement il sera beaucoup plus simple de changer cette partie en particulier sans avoir \u00e0 recompiler le code C#. J'ai donc avec l'aide d'internet et de ChatGPT cr\u00e9\u00e9 ce script : def get_master_key (): with open ( os . getenv ( \"localappdata\" ) + \" \\\\ Google \\\\ Chrome \\\\ User Data \\\\ Local State\" , \"r\" ) as f : local_state = f . read () local_state = json . loads ( local_state ) master_key = base64 . b64decode ( local_state [ \"os_crypt\" ][ \"encrypted_key\" ]) master_key = master_key [ 5 :] # removing DPAPI master_key = win32crypt . CryptUnprotectData ( master_key , None , None , None , 0 )[ 1 ] print ( \"MASTER KEY :\" ) print ( master_key ) print ( len ( master_key )) return master_key def decrypt_payload ( cipher , payload ): return cipher . decrypt ( payload ) def generate_cipher ( aes_key , iv ): return AES . new ( aes_key , AES . MODE_GCM , iv ) def decrypt_password ( buff , master_key ): try : iv = buff [ 3 : 15 ] payload = buff [ 15 :] cipher = generate_cipher ( master_key , iv ) decrypted_pass = decrypt_payload ( cipher , payload ) decrypted_pass = decrypted_pass [: - 16 ] . decode () # remove suffix bytes return decrypted_pass except Exception : # print(\"Probably saved password from Chrome version older than v80\\n\") # print(str(e)) return \"Chrome < 80\" master_key = get_master_key () cookies_path = Path ( os . getenv ( \"localappdata\" ) + \" \\\\ Google \\\\ Chrome \\\\ User Data \\\\ Default \\\\ Network \\\\ Cookies\" ) if not cookies_path . exists (): raise ValueError ( \"Cookies file not found\" ) with sqlite3 . connect ( cookies_path ) as connection : connection . row_factory = sqlite3 . Row cursor = connection . cursor () cursor . execute ( \"SELECT * FROM cookies\" ) with open ( 'cookies.csv' , 'a' , newline = '' ) as csvfile : fieldnames = [ 'host_key' , 'name' , 'value' , 'path' , 'expires_utc' , 'is_secure' , 'is_httponly' ] writer = csv . DictWriter ( csvfile , fieldnames = fieldnames ) if csvfile . tell () == 0 : writer . writeheader () for row in cursor . fetchall (): decrypted_value = decrypt_password ( row [ \"encrypted_value\" ], master_key ) writer . writerow ({ 'host_key' : row [ \"host_key\" ], 'name' : row [ \"name\" ], 'value' : decrypted_value , 'path' : row [ \"path\" ], 'expires_utc' : row [ \"expires_utc\" ], 'is_secure' : row [ \"is_secure\" ], 'is_httponly' : row [ \"is_httponly\" ] }) print ( \"Finished CSV\" ) Ce programme va faire tout ce que j'ai expliqu\u00e9 et va ensuite stocker les r\u00e9sultats dans un CSV pour qu'il soit facile d'y acc\u00e8der depuis le C#. Alors oui cela pose certaines questions de s\u00e9curit\u00e9. Car en effet je prend tous les cookies, les d\u00e9code et les stocke. Ce qui veut dire que je pourrais tout \u00e0 fait envoyer ces donn\u00e9es quelque part, par exemple un compte Netflix, et me rincer. Si je devais rendre le projet ouvert au public je pense qu'il faudra que cela soit mentionn\u00e9 clairement et que le projet soit open source pour que les utilisateurs puissent verifier que je ne fais pas ca. Maintenant de l'autre c\u00f4t\u00e9 j'ai juste \u00e0 lire le CSV et le tour est jou\u00e9 ! (Trouver cette solution m'a pris une semaine de vacances \u00e0 l'\u00e9poque) Bon j'ai r\u00e9ussi \u00e0 faire le programme se connecter et naviguer etc.. Par contre quelque chose que j'ai voulu ajouter et qui m'a pris pas mal de temps c'est de faire en sorte de pouvoir selectionner la qualit\u00e9. Pour changer la qualit\u00e9 du feed il faut cliquer sur settings et ensuite prendre le menu deroulant et selectioner 1080p. Le soucis c'est le que la value du select est jamais la m\u00eame. Elle commence toujours pas \"1080_\" mais ensuite ca peut \u00eatre \"1080_45930285\" ou \"1080_56801\" la suite est apparemment random. J'ai donc du utiliser ce code pour le selectioner quand m\u00eame : IWebElement settingsButton = driver . FindElement ( By . ClassName ( \"bmpui-ui-settingstogglebutton\" )); settingsButton . Click (); IWebElement selectElement = driver . FindElement ( By . ClassName ( \"bmpui-ui-videoqualityselectbox\" )); SelectElement select = new SelectElement ( selectElement ); IWebElement selectOption = selectElement . FindElement ( By . CssSelector ( \"option[value^='1080_']\" )); selectOption . Click (); Sauf que pour que cela marche je dois avant cliquer sur le bouton des settings le probl\u00e8me c'est qu'il est invisible alors on doit le faire apparaitre. J'ai tent\u00e9 de le faire aparaitre en bougeant la souris, en cliquant \u00e0 un endroit pr\u00e9cis, impossible de le faire marcher correctement. Puis j'ai eu l'id\u00e9e de mettre pause en envoyant un appui sur la touche Espace et ca a permit de d\u00e9couvrir le bouton et permettre qu'on clique dessus. Ca peut paraitre tout b\u00eate mais rien que ca, ca m'a pris un temps consid\u00e9rable. Bon pour ce qui est du timecode de la vid\u00e9o. Je pense qu'il serait trop complexe de faire en sorte que selenium change le slider de progression de la vid\u00e9o. Alors j'ai fait quelques tests et apparemment, si on quitte la F1TV sur un timecode de la vid\u00e9o que on donne au programme, comme il r\u00e9cup\u00e8re tous les cookies de la F1TV il commencera de la. Donc si on veut utiliser le programme avec des Grand Prix ayant d\u00e9ja eu lieu, on peut le faire, seulement il faudra juste au pr\u00e9alable avoir choisit le bon timecode dans le page de la F1TV avant de le lancer. Ce qui est int\u00e9ressant c'est que la page de la F1TV ressemble \u00e0 ca au d\u00e9part : \"Empty F1TV\" Je pense qu'une bonne id\u00e9e serait de dire au programme que c'est la grille de d\u00e9part et ensuite d\u00e8s qu'il d\u00e9tecte un secteur il sait que la course a commenc\u00e9. Lundi 24 Avril 2023 Aujourd'hui c'est jour de documentation. J'ai pas mal travaill\u00e9 pendant les vacances mais je n'ai pas encore pu faire de vraie documentation correcte du fonctionnement. Du coup je vais m'en charger aujourd'hui et peut-\u00eatre un peu demain. Ok normalement je ne devrais faire que de la documentation mais je ne peux pas passer \u00e0 cot\u00e9 de ca... Le probl\u00e8me que j'ai avec les pneus ou parfois il d\u00e9tecte un H au lieu d'un '11' et ce genre de choses c'est \u00e0 cause de ma methode \"RemoveBG\" Qui va retirer tous les pixels plus sombres que le background. Sauf que cela va aussi retirer des pixels dans le chiffre lui m\u00eame et qui va donc defigurer les 11 : \"diformed 11\" \"diformed 11\" J'ai r\u00e9ussi \u00e0 les changer en : \"less diformed\" \"less diformed\" Mais au final cela n'a pas augment\u00e9 la pr\u00e9cision de la reconnaissance. Je pense que je vais donc devoir encore changer. Je pense que une bonne facon de trouver serait dabord de trouver la couleur du pneu. Et si il n'y a pas assez de couleur alors c'est que le pneu contient une lettre. Le but est d'arr\u00eater de chercher des lettres ou des chiffres. Comme ca les 11 arr\u00eateront d'\u00eatre pris pour des 'H' En fait on peut faire encore plus simple que ca. On peut simplement regarder la couleur dominante et determiner le pneu. En effet m\u00eame si il y a une lettre sur fond noir pour d\u00e9crire le pneu, mon methode de r\u00e9cup\u00e8ration de la couleur dominante ommet les pixels trop noirs alors il est quand m\u00eame possible de determiner le type de pneus. Et tout simplement si il n'arrive pas \u00e0 lire le chiffre c'est que c'est une lettre et que donc on est \u00e0 0 tours. Cela marche plut\u00f4t bien et cela simplifie pas mal le processing. Voila, la je vais me remettre \u00e0 la documentation sinon je vais encore prendre du retard. Mardi 25 Avril 2023 Encore une fois j'ai pris du temps de doc pour changer des choses sur la partie OCR. Mais en m\u00eame temps en documentant je vois des choses que j'ai soit mal fait soit que je pourrais faire mieux en changeant tr\u00e8s peu de choses. J'\u00e9sp\u00e8re que les changement que j'ai fait vont aider au moins \u00e0 la coh\u00e9rence du code et un peu pour les performances. Il semble que dans les conditions que j'ai test\u00e9 le nombre de tour soit plut\u00f4t fiable mais je pense que je devrai faire un peu de travail en aval dans la r\u00e9cup\u00e9ration de ces donn\u00e9es car je sens que cela va poser probl\u00e8me quelques fois. Je pense que en utilisant bien l'historique on peut potentiellement se passer de l'utilisation de ce chiffre pas toujours compl\u00eatement fiable. Mais sinon aujourd'hui c'est encore une fois un gros jour de doc. J'essaie d'expliquer les diff\u00e9rents proc\u00e9d\u00e9s avant de les oublier. J'essaie aussi de donner un maximum d'exemples sous formes de photos interm\u00e9diaires mais ca me prend pas mal de temps car il faut que j'ajoute un peu partout dans le code des lignes pour sortir des images interm\u00e9diaires. En plus de la documentation je me suis aussi beaucoup occup\u00e9 de nettoyer mon code et je suis assez content par ce que m\u00eame en ayant du rajouter des couches de complexit\u00e9 pour mieux reconnaitres les temps au tour j'arrive \u00e0 un temps de processing parfois en dessous des 2 secondes ce que je trouve honorable. Quand j'aurai finit de nettoyer tous mes fichiers je ferai une release sur gitea et ce sera la version que j'utiliserai quand je voudrai faire un merge avec les autres parties du projet. J'ai beaucoup beaucoup boss\u00e9 aujourd'hui et je sui bien mort. Faire autant de documentation et de nettoyage de code c'est pas forc\u00e9ment bon pour le cerveau je crois. J'ai besoin d'une sieste. Demain je pense que je vais commencer \u00e0 avancer sur la partie r\u00e9cup\u00e8ration des images. Je sais que la je fais un peu passer les tests \u00e0 la trappe mais d\u00e9ja j'en ai fait tout le long du d\u00e9veloppement de OCR_DECODE et il faut vraiment que j'avance, quitte \u00e0 revenir dessus quand j'aurai merge les deux projets ensemble. 26 Avril 2023 Aujourd'hui je vais devoir m'occuper de la partie r\u00e9cup\u00e9ration des images. J'ai d\u00e9ja eu l'occasion d'avancer sur ce projet pendant mopn poc et mes vacances. Donc la le but ca va \u00eatre de voir ce qui manque comme v\u00e9ritables features et ensuite je vais pouvoir m'occuper de la vue et de son int\u00e9gration avec le d\u00e9codage. Ok donc maintenant que j'au un programme qui arrive \u00e0 prendre des images depuis la F1TV correctement et en bonne r\u00e9solution. Je pense qu'il est temps de passer \u00e0 l'impl\u00e9mentation de la Forme que ca va prendre. C'est important de se poser au moins cinq minutes la question de comment je pr\u00e9vois de faire car m\u00eame si ca n'est pas la version finale, cette derni\u00e8re prendra tr\u00e8s fort inspiration du desing que je vais faire. Dans cette form j'aurais besoin de : Pouvoir selectionner un Grand Prix en ins\u00e8rant l'URL du feed. Pouvoir lancer la calibration si besoin Indiquer le titre et la date du Grand Prix Indiquer si le Grand Prix vient de commencer ou si il y a d\u00e9ja un certain nombre de tours lanc\u00e9s. Et c'est \u00e0 peu pr\u00e8s tout en fait... J'ai tellement pouss\u00e9 pour avoir un programme qui fait tout tout seul que il ne me faut pas grand chose de plus. Je pense que ce qui serait pas mal ca serait du coup d'utiliser ce temps pour bien impl\u00e9menter la calibration qui elle aura besoin d'une UI un peu plus bal\u00e8ze. On pourrait m\u00eame imaginer que la calibration fasse partie int\u00e9grante des settings... Ca serait peut-\u00eatre bien que quand l'application se lance on se retrouve sur la page principale d'affichage de donn\u00e9es et qu'on puisse simplement cliquer sur la page options qui contient la page calibration et qui permet de rentrer les infos du Grand Prix. Je pense que je vais faire ca. Voici l'interface que j'ai d\u00e9velopp\u00e9e pour regrouper tout ca : \"Screen\" La police le style le placement et les couleurs ne sont pas d\u00e9finitfs, cependant je pense que c'est un bon d\u00e9but. Le but maintenant va \u00eatre de permettre de faire fonctionner la calibration et la r\u00e9cup\u00e8ration d'images. Si j'arrive \u00e0 faire fonctionner ces deux choses sur un m\u00eame projet avant la fin de la semaine cela serait super ! Bon J'ai pu avancer sur l'int\u00e8gration de Selenium mais cela prend un peu de temps car je veux impl\u00e9metner un moyen de pouvoir prendre une Screenshot \u00e0 nimporte quel moment et pas juste en boucle. Demain je finis de faire fonctionner ca et ensuite je commence le cablage du reste. Jeudi 27 Avril 2023 C'est assez dur de faire l'importation car il y a des petites diff\u00e9rences qui obligent \u00e0 presque tout r\u00e9\u00e9crire. En fait le programme de calibration avait d\u00e9ja impl\u00e9ment\u00e9 la fonction de Windows et de Zones mais il fonctionnait juste assez diff\u00e9remment pour qu'il faille tout refaire. La je suis en train de perdre \u00e9norm\u00e9ment de temps \u00e0 cause d'un soucis de coordonn\u00e9es. J'ai repris le code de la calibration pour detecter ou l'utilisateur a cliqu\u00e9 pour cr\u00e9er les zones. Cependant, je n'arrive pas \u00e0 le faire fonctionner correctement. La zone est tout le temps d\u00e9cal\u00e9e en haut et en bas mais pas de la m\u00eame facon. En haut, la valeur Y est trop grande alors que en bas la valeur Y est trop petite... Je ne comprends pas bien pourquoi. Si c'\u00e9tait un simple d\u00e9calage cela ne serait pas compliqu\u00e9 \u00e0 g\u00e8rer mais la... J'ai un soucis \u00e9galement avec la r\u00e9solution des screenshots que je r\u00e9cup\u00e8re en full Headless. Voici un exemple de r\u00e9solution que j'arrive \u00e0 r\u00e9cup\u00e8rer sans le headless : \"High Res\" \"Low Res\" Il y a clairement un soucis et le probl\u00e8me c'est que avec une r\u00e9solution pareille, impossible de faire une reconnaissance correcte. BON J?EN PEUX PLUS LA. Ca fait des heures que je bosse sur ce probl\u00e8me d\u00e9bile et impossible de trouver une solution. J'ai essay\u00e9 cinq facons de forcer le browser headless a prendre une plus haute r\u00e9solution aucune ne fonctionne je ne comprends pas. A chaque fois que je me retrouve avec une r\u00e9solution de 1366 x 768 Ou une variante de basse r\u00e9solution du style. J'en peux plus je ne trouve aucune r\u00e9ponse sur internet ni m\u00eame avec chatGPT. Super... La seule chose que j'ai pu faire qui change quelque chose fait que les images font maintenant du 926x517... j'ai un peu envie de commentre un crime de guerre au plus vite. Vendredi 28 Avril 2023 Une des solutions que je n'ai pas encore essay\u00e9 est de changer ma version de GeckoDriver. Sauf que ca m'oblige \u00e0 changer les versions de mes libraries ce qui est tr\u00e8s p\u00e9nible, je vais continuer le debugging dans le projet Selenium_clean. Il faut savoir que la librairie de Selenium que j'utilise est bloqu\u00e9e en 0.27 ce qui fait que je ne peux utiliser qu'une version obsol\u00e8te du Gecko Driver. J'ai tent\u00e9 de changer vers une version en 64 bits du GeckoDriver 0.27 mais pareil, je me retrouve toujours avec des images de M. J'essaie toutes les solutions que je trouve sur internet aucune ne convient c'est infernal. J'essaie de changer la r\u00e9solution DPI, j'essaie de changer les param\u00eatres par d\u00e9faut des player de Firefox, j'essaie de changer la r\u00e9solution pendant et au d\u00e9but de l'execution IMPOSSIBLE DE FAIRE MARCHER CETTE MERDE C'EST PAS POSSIBLE !!! J'ai essay\u00e9 avec chrome mais je ne peux pas l'utiliser car les DRM m'emp\u00eacheront de prendre des screenshot du flux vid\u00e9o. J'ai essay\u00e9 de faire tourner avec edge mais edge ne peut pas tourner en headless. JE VAIS DEVENIR FOUF FPWQOVMQEKOVNVIBDBJDAIVOBI. ET MAINTENANT JE N'ARRIVE PLUS A FAIRE DE PROJET AVEC SELENIUM VOIWQNV(UEWQBVU)WEQN=OEJNIVIUWVBWUEV ON CHERCHE A ME FAIRE PETER UN PLOMB C'EST PAS POSSIBLE GIWEGUWEQN VOICI UN EXEMPLE DU CODE QUE JE DEMANDE A UN NOUVEAU PROJET AVEC EXACTEMENT LES MEMES LIBRARIES INSTALLEES : // Create a new FirefoxDriver instance IWebDriver driver = new FirefoxDriver (); // Navigate to the specified URL driver . Navigate (). GoToUrl ( \"https://www.example.com\" ); // Do something with the driver (e.g., find elements or take screenshots) // Quit the driver driver . Quit (); Je ne demande que ca ET MEME CA CA NE VEUT PAS FONCTIONNER VOIWENB)IWUQENV Oui je suis un peu \u00e9nerv\u00e9 ca se voit? A bon? Et maintenant NUGGET ne fonctionne plus... j'en peux plus la. Je ne peux plus t\u00e9l\u00e9charger de librairie sur aucun de mes projets... J'ai tent\u00e9 de supprimer le fichier de config et red\u00e9marrer Visual Studio mais cela ne fait rien. J'ai aussi tent\u00e9 de faire un 'nugget restore' toujours rien. Bon apparemment je ne suis pas le seul qui ne peut pas acc\u00e8der \u00e0 Nuget donc bon c'est pas juste chez moi qu'il y a un soucis. Mais m\u00eame en mettant ma 4G pour me connecter, je n'arrive pas \u00e0 acc\u00e8der \u00e0 certains sites y compris Nuget et je ne peux pas download de librairies... Je ne comprends pas ce qui se passe et du coup je ne peux juste pas bosser... J'ai red\u00e9marr\u00e9 trois fois mon pc et visual studio, j'ai essay\u00e9 de changer mes settings DNS etc... impossible de bosser. Je crois que je n'aurais pas du me reveiller aujourd'hui. Bon je vais tenter d'avancer sur mon poster en attendant que le r\u00e9seau soit en meilleur \u00e9tat. Lundi 1 Mai 2023 Bon je bosse depuis chez moi donc j'esp\u00e8re que Nuget va mieux fonctionner. Apr\u00e8s un weekend \u00e0 r\u00e9fl\u00e9chir au sujet de cette resolution je me suis dit deux choses. La seule personne sur internet que j'ai vu avoir le meme soucis avait une r\u00e9solution de 1920x1200 comme moi. Cela veut donc s\u00fbrement dire que le soucis vient de cette r\u00e9solution de laptop comme moi. Si vraiment je n'arrive pas dans un premier temps \u00e0 faire fonctionner le Headless correctement, je peux toujours laisser la page de c\u00f4t\u00e9 et m'occuper du reste du programme. Certes ca serait vraiment infernal d'avoir \u00e0 garder une page chrome ouvert en tous temps et en plus elle doit \u00eatre en plein \u00e9cran mais bon... Si il n'y a vraiment pas d'autres solutions malheureusement je serai bien oblig\u00e9. BON ! JE N'ARRIVE MEME PLUS A FAIRE UN PROJET QUI UTILISE SELENIUM ET QUI MARCHE JE VAIS FAIRE BR\u00dbLER GENEVE. C'est pas possible serieux, je ne comprends pas j'essaie tout ce que je trouve et impossible de juste lancer firefox c'est du grand nimporte quoi. Je prend les m\u00eame putain de librairies que sur les autres projets les m\u00eames versions, je prend le m\u00eame exact code. Sur le nouveau projet impossible de le faire fonctionner. Je commence \u00e0 croire que on essaie de me faire p\u00eater un cable. Du coup dans un \u00e9lan de d\u00e9sespoir je vais tenter de passer sur une autre librairie qui avec un peu de chance marche et en plus me permettrais de prendre des foutues screenshot dans le bon format. Les deux seules librairies qui pourraient potentiellement faire l'affaire sont les librairies : PhantomJS CefSharp Je vais les tester et simplement prier pour qu'elles fonctionnent et que je puisse faire ce que je veux avec. Alors pour le moment avec CEFSharp j'arrive \u00e0 lancer une instance de chrome et prendre une screenshot avec ce code : CefSettings settings = new CefSettings (); settings . CachePath = Path . Combine ( Environment . GetFolderPath ( Environment . SpecialFolder . LocalApplicationData ), \"CefSharp\\\\Cache\" ); // Set cache path settings . LogSeverity = LogSeverity . Disable ; // Disable logging Cef . Initialize ( settings ); // Initialize CEF using ( var browser = new ChromiumWebBrowser ( \"www.google.com\" , new BrowserSettings ())) // Launch Chromium in off-screen mode { browser . Load ( \"https://www.example.com\" ); // Navigate to the test URL browser . Size = new Size ( 1920 , 1080 ); // Set the browser size to 1920x1080 browser . ScreenshotAsync (). ContinueWith ( task => { var bitmap = task . Result ; bitmap . Save ( \"screenshot.png\" , System . Drawing . Imaging . ImageFormat . Png ); // Take a screenshot and save it as a PNG file }). Wait (); } Cef . Shutdown (); // Shutdown CEF Avec ca il faut ces using : using System ; using System.Drawing ; using System.IO ; using CefSharp ; using CefSharp.OffScreen ; C'est assez prometteur m\u00eame si il faut encore beaucoup pour remplacer selenium. Ah bah lol en fait non on peut pas utiliser cette librarie pour faire tourner firefox... J'EN AI MARRE J'AVAIS CHERCHE PRECISEMENT UNE LIB QUI MARCHE AVEC FIREFOX Et phantomJS non plus ne fonctionne pas avec firefox... J'en ai marre. Donc je vais plut\u00f4t partir sur la librairie GeckoFX qui semble pouvoir contr\u00f4ler une instance de firefox. Mais j'avais justement pris un putain de projet C# et pas JS pour ne pas me taper ces probl\u00e8mes de librairies... Et si cette option ne fonctionne pas mon dernier espoir sera de directement int\u00e9ragir avec le geckodriver.exe et la ca risque de pas \u00eatre dr\u00f4le. JE NE COMPRENDS RIEN !!!!! Ca n'a aucun sens la doc est inexistante le seul lien qui pourrait amener sur une doc envoie sur la page principale de bitbucket. Tous les exemples de code que je trouve ne fonctionnent pas. Je n'arrive \u00e0 rien je commence \u00e0 devenir fou. Tout ce travail pour rien c'est pas possible. M\u00eame en essayant directement d'int\u00e9ragir avec le process geckodriver.exe je ne peux pas arriver \u00e0 mes fins. J'arrive \u00e0 lancer le service et tout, mais je n'arrive pas \u00e0 vraiment contr\u00f4ler ce qu'il se passe donc impossible de venir prendre des screenshot. Je ne sais tout simplement pas quoi faire ... Je suis bloqu\u00e9. Je me suis cass\u00e9 la t\u00eate \u00e0 faire un truc qui marchait bien avec selenium et tout. Mais maintenant plus rien ne fonctionne du jour au lendemain et il n'y a simplement aucune alternative. Je vais essayer de changer directement le projet Selenium_Clean mais bon ca va pas \u00eatre dr\u00f4le. Ok alors j'ai tout repris depuis le d\u00e9but et je crois que j'ai enfin une solution. Pour la trouver j'ai re-essay\u00e9 toutes les techniques que j'avais tent\u00e9 avant mais dans l'ordre et en les isolant \u00e0 chaque fois. Cela inclus : Tenter de changer la densit\u00e9 de pixels. En effet je me suis dit que comme la r\u00e9solution \u00e9tait plus basse le soucis \u00e9tait que le virtual screen avait simplement une DPI r\u00e9duite. profile.SetPreference(\"layout.css.devPixelsPerPx\", \"2.0\"); J'ai aussi tent\u00e9 de r\u00e9duire \u00e0 un seule le nombre de process de Firefox. J'ai pu lire sur internet que parfois cela pouvait influer sur les performances du renderer. profile.SetPreference(\"dom.ipc.processCount\", 1); Ensuite j'ai tent\u00e9 tout b\u00eatement de rajouter dans la liste des arguments la taille voulue de l'\u00e9cran. options.AddArgument(\"--window-size=1920,1080\"); Mais comme cela ne foncionnait pas, je me suis rabattu sur un script JS pour tenter de forcer la fen\u00eatre \u00e0 \u00eatre plus grande. js.ExecuteScript(\"window.resizeTo(1920, 1080);\"); Comme cela n'a pas march\u00e9 j'ai pu lire que cela pouvait \u00eatre la taille int\u00e9rieure qui devait \u00eatre chang\u00e9e js.ExecuteScript(\"window.innerWidth = 1920; window.innerHeight = 1080;\"); Encore une fois sans succ\u00e8s. J'ai ensuite tent\u00e9 d'utiliser trois autres versions du GeckoDriver, 0.27,0.26,0.25 et aucune ne m'aidait. Mais en fait la seule chose qui a chang\u00e9 quoi que ce soit \u00e9tait la technique suivante : Changer la window size en utilisant : options . AddArgument ( \"--width=1920\" ); options . AddArgument ( \"--height=1200\" ); Ca ne marchait pas car j'utilisais une autre methode pour resize en m\u00eame temps, qui elle ne marchait pas mais qui emp\u00eachait celle la de marcher. Ensuite le soucis que j'avais c'est que en mettant 1920-1080 je me retrouvais avec 1920-998 ou un truc du genre ce qui n'\u00e9tait pas normal alors je me disais que cette technique ne marchait pas non plus et je l'ai pass\u00e9e. Alors tout n'est pas encore gagn\u00e9, il faut que j'arrive \u00e0 impl\u00e9menter ca dans un plus gros projet et que la vid\u00e9o puisse \u00eatre prise seule. Demain je m'occupe de ca. Mardi 2 Mai 2023 Bon aujourd'hui je change le programme principal. Le soucis que j'ai c'est que en ajoutant ce syst\u00e8me de resize, maintenant la page fait 100x100 et est grise. Il doit y avoir une technique que j'ai oubli\u00e9 de retirer ou un comportement un peu bizarrre. Bon clairement je ne sais pas QUI DECIDE DE ME POURRIR LA VIE mais il est fort. J'ai t\u00e9l\u00e9charger EXACTEMENT les m\u00eames librairies que sur mon autre projet et j'utilise l'EXACT m\u00eame geckodriver.exe mais dans le projet principal impossible de lui faire chier une image m\u00eame avec l'EXACT m\u00eame code. POURQUOI VOUS ME FAITES CA????= La je ne comprend vraiment pas ce qui peut se passer pour que rien ne fonctionne alors que tout est pareil. JE VIENS DE TOUT VERIFIER TOUT EST PAREIL JE NE COMPRENDS PAS. Bon apr\u00e8s avoir supprim\u00e9 l'int\u00e9gralit\u00e9 de ma classe Emulator cela semble marcher un peu mieux. Je ne vais pas m'\u00e9tendre sur la castrophe niveau temps que cela repr\u00e9sente. Si au moins j'arrive \u00e0 faire fonctionner quelque chose je suis content. Maintenant j'ai un soucis un peu sp\u00e9cial. Depuis que j'ai chang\u00e9 la r\u00e9solution, il semble que le programme aie du mal \u00e0 cliquer sur l'icone de settings. En prenant des screenshots du moment ou l'erreur apparait, j'ai pu me rendre compte que en fait le stream est toujours en train de charger et c'est pour ca que on arrive pas \u00e0 trouver le bouton : \"ERROR 105\" \"ERROR 105\" Je pense que je n'ai le soucis que maintenant car le flux en 1080p se lance moins vite. Je vais essayer de voir si je peux detecter un \u00e9l\u00e9ment d'HTML qui correspond au loading comme ca je peux attendre qu'il disparaisse. Sinon je peux aussi juste essayer de trouver le bouton en boucle pendant une dixaine de secondes. Bon la j'essaie pendant genre plus de 50 secondes et ca ne marche toujours pas. Il semblerait que au final le probl\u00e8me vienne du GP d'azerbidjan. En effet, quand je teste un autre Grand Prix tout va bien. ET MERDE ! J'ai r\u00e9ussi \u00e0 avoir des images en 1080P mais d\u00e9s que je passe l'image en plein \u00e9cran c'est de nouveau du 1366X768 Avant de mettre en plein \u00e9cran: \"Before fullscreen\" Apr\u00e8s: \"After fullscreen\" On peut voir sur l'image que l'option 1080P est effectivement bien selectionn\u00e9e mais il doit y avoir un param\u00e8tre de Firefox qui s'occupe de la r\u00e9solution d'un player vid\u00e9o. Il va juste falloir trouver ce param\u00eatre... J'ai essay\u00e9 d'utiliser : Driver.Manage().Window.Size = new System.Drawing.Size(windowWidth, windowHeight); Sans succ\u00e8s. options.AddArgument(\"--start-maximized\"); Pareil Driver.Manage().Window.Maximize(); Toujours rien profile.SetPreference(\"full-screen-api.ignore-widgets\", true); Nada profile.SetPreference(\"media.hardware-video-decoding.enabled\", true); Toujours pas J'ai vraiment cru que j'avais trouv\u00e9 la solution en trouvant cette commande profile.SetPreference(\"full-screen-api.enabled\", true); Mais non toujours pas... Je commence \u00e0 perdre patience. C'EST BON. Apr\u00e8s litt\u00e9rallement 3h de debugging avec M.Bonvin (Que je remercie IMMENSEMENT) on a r\u00e9ussi \u00e0 trouver au fin fond d'un thread github que la valeur \u00e9tait hard cod\u00e9e dans les variables d'environnement et que donc quoi que je fasse je n'aurais pas pu le changer. En fait la seul moyen de tout r\u00e8gler a \u00e9t\u00e9 de changer les variables d'environnement de ma machine: MOZ_HEADLESS_WIDTH et MOZ_HEADLESS_HEIGHT . Et ce qu'il y a de bien c'est que maintenant je peux mettre de la 4K et cela permet de faire un meilleur upscaling. Recrutement Payerne Mai 2023 J'ai du faire mon recrutement \u00e0 Payerne Mercredi et Jeudi. Si vous \u00eates curieux je peux vous dire que comme il n'y avait presque plus de places cet \u00e9t\u00e9 je ferai Canonnier Lance mines. C'\u00e9tait assez frustrant d'avoir perdu deux jours de travail mais on va faire avec. Vendredi 5 Mai 2023 Bon malgr\u00e9s les courbatures il faut que je me mette au boulot un peu serieusement par ce que sinon ca va \u00eatre compliqu\u00e9 de rattraper mon retard. La derni\u00e8re fois si je me souviens bien j'avais r\u00e9ussi \u00e0 trouver un moyen de prendres des images en bonne r\u00e9solution. Il faut maintenant que je commence \u00e0 faire fonctionner la calibration et ce qui serait bien ca serait que je commence \u00e0 ajouter la partie OCR au projet. Il faut que je me d\u00e9p\u00eache car Lundi je dois m'occuper du Poster. OK j'ai compris le soucis que j'avais quand j'essayais de faire la calibration. J'avais mis l'image en ZOOM ce qui fait que si la hauteur n'\u00e9tait pas la bonne, l'image \u00e9tait recentr\u00e9e ce qui fait que cela faussait totalement les r\u00e9sultats. Quand on fait en sorte que l'image prenne toute la place, les coordonn\u00e9es sont prises correctement. Voici un exemple d'ou en est la partie calibration. \"Exemple settings UI\" Normalement il me suffit d'impl\u00e9menter les windows, et on devrait relativement facilement ajouter les pilotes. Et voila. J'ai pu impl\u00e9menter les windows et les pilotes. Et je peux aussi exporter des presets et les loader. Bon le loading est un peu beugg\u00e9 au niveau de l'affichage mais il semble qu'il fonctionne bien quand je save les images. Lundi je m'occupe du poster etc.. mais je pense que la suite va \u00eatre l'impl\u00e9mentation de l'OCR. Lundi 8 Mai 2023 Aujourd'hui c'est journ\u00e9e Poster. Je pense que je ne vais pas finir la journ\u00e9e content car les limitations sont un peu trop pr\u00e9sentes. J'ai fait une version que Garcia pourrait accepter, c'est \u00e0 dire en noir et blanc et avec un tout petit peu plus de d\u00e9tail. \"Poster V3\" Le truc c'est que en blanc je trouve que ca ne marche pas super. Et le concept d'avoir trois parties au projet qui se posent autour d'un circuit c'est peut-\u00eatre pas la meilleure id\u00e9e. Je me suis dit que la bonne id\u00e9e serait peut-\u00eatre de prendre un autre circuit pour qu'il y aie bien trois parties : \"Poster V4\" Clairement ce poster doit faire partie des pires. C'est pas clair et ca part dans tous les sens. Je vais essayer avec un autre layout de circuit. \"Poster V5\" Je me suis ensuite dit que le circuit n'\u00e9tait peut \u00eatre tout simplement pas une bonne id\u00e9e. J'ai donc essay\u00e9 de faire quelque chose de plus classique avec juste un peu de background pour qu'on puisse \u00e9viter le soucis de la page blanche derri\u00e8re : \"Poster V6\" Puis je me suis dit que finalement le circuit me manquait. Alors j'ai d\u00e9cid\u00e9 de combiner le background et le circuit ainsi que simplifier l\u00e9g\u00e8rement les diagrammes en retouchant un peu tout le reste on pouvait arriver \u00e0 quelque chose de sympatique : \"Poster V7\" Je ne suis pas content \u00e0 100% mais bon je pense que je vais m'en satisfaire. Pour donner une id\u00e9e de la gal\u00e8re que c'est de cr\u00e9er un poster, voici ce \u00e0 quoi ressemble mon espace de travail Figma : \"Bordel Figma\" Je ne suis pas un graphiste et ca se voit '^^. Je pense que comme il me reste un peu de temps aujourd'hui, je vais faire un peu de documentation de la partie r\u00e9cup\u00e8ration d'images. En effet, je pense que je n'aurai plus besoin de changer grand chose \u00e0 ce niveau. Mais je ne ferai pas la partie analyse fonctionnelle car l'interface n'est clairement pas termin\u00e9e. En fait j'avais oubli\u00e9 mais j'ai eu un rendez vous m\u00e9dical du coup je n'ai pas eu trop le temps de faire la doc que je voulais. Mais au moins je pense avoir finit mon travail sur le poster et le abstract en Anglais qui sont les deux gros livrables \u00e0 venir. Mardi 9 Mai 2023 Bon je viens de me rendre compte que apparemment on doit rendre l'abstract anglais, le Poster, ET LE PROJET. Je pense que mes deux jours \u00e0 l'arm\u00e9e m'ont fait perdre un peu la notion du temps car j'avais l'impression que l'evaluation interm\u00e9diaire 1 \u00e9tait il y a genre moins d'une semaine. Donc aujourd'hui je ne vais pas trop avancer sur le code et vraiment me focus sur la documentation de la r\u00e9cup\u00e8ration d'images. Je pense que je vais aussi ajouter la partie calibration \u00e0 la documentation. Je pense que c'est important que je prenne le temps maintenant car sinon le prof aura l'impression que ca n'a pas trop avanc\u00e9 depuis la derni\u00e8re fois. Et puis je pense que la partie calibration et r\u00e9cup\u00e8ration d'images ne va pas trop changer et la partie calibration encore moins. La partie anglaise je fais la revoir un peu mais je l'avais d\u00e9ja faite pendant les premiers jours alors ca devrait aller. Pour le rendu il nous \u00e9tait demand\u00e9 de fournir un fichier PDF avec tout dedans avec une table des mati\u00e8res notre code source etc... Pour ce faire j'ai du changer le mkdocs.yml et installer des packages. Voici les changements :: site_name: Documentation Track Trends site_author: Rohmer Maxime copyright: \u00a9CFPTI Tech2 theme: name: material palette: # Palette toggle for light mode - media: \"(prefers-color-scheme: light)\" scheme: default toggle: icon: material/brightness-7 name: Switch to dark mode # Palette toggle for dark mode - media: \"(prefers-color-scheme: dark)\" scheme: slate toggle: icon: material/brightness-4 name: Switch to light mode markdown_extensions: - attr_list - md_in_html - pymdownx.highlight plugins: - glightbox - search - img2fig - with-pdf: cover_subtitle: Vroum Vroum enabled_if_env: ENABLE_PDF_EXPORT - annexes-integration: annexes: # Required (at least 1) - ConfigurationTool.cs: Code/ConfigurationTool.cs # An path to an annex with its title - DriverGapToLeaderWindow.cs: Code/DriverGapToLeaderWindow.cs # An path to an annex with its title - DriverPositionWindow.cs: Code/DriverPositionWindow.cs # An path to an annex with its title - F1TVEmulator.cs: Code/F1TVEmulator.cs # An path to an annex with its title - Program.cs: Code/Program.cs # An path to an annex with its title - Window.cs: Code/Window.cs # An path to an annex with its title - DriverData.cs: Code/DriverData.cs # An path to an annex with its title - DriverLapTimeWindow.cs: Code/DriverLapTimeWindow.cs # An path to an annex with its title - DriverSectorWindow.cs: Code/DriverSectorWindow.cs # An path to an annex with its title - Form1.cs: Code/Form1.cs # An path to an annex with its title - Reader.cs: Code/Reader.cs # An path to an annex with its title - Zone.cs: Code/Zone.cs # An path to an annex with its title - DriverDrsWindow.cs: Code/DriverDrsWindow.cs # An path to an annex with its title - DriverNameWindow.cs: Code/DriverNameWindow.cs # An path to an annex with its title - DriverTyresWindow.cs: Code/DriverTyresWindow.cs # An path to an annex with its title - OcrImage.cs: Code/OcrImage.cs # An path to an annex with its title - Settings.cs: Code/Settings.cs # An path to an annex with its title - recoverCookiesCSV.py: Code/recoverCookiesCSV.py # An path to an annex with its title Je remercie Monsieur Briard le sultan officiel de Mkdocs de la classe de m'avoir aid\u00e9 pour cette partie et avoir cr\u00e9\u00e9 un plugin qui me permet de mettre mon code source directement dans le pdf. Bon au final j'ai quand m\u00eame chang\u00e9 mon poster \"Poster V8\" Mais je suis trop attach\u00e9 \u00e0 l'ancien concept alors je vais plut\u00f4t utiliser ca : \"Poster V9\" Je pense que cette version est meilleure m\u00eame si elle est encore plus en bordel par ce que le texte permet de se faire une meilleure id\u00e9e de l'utilis\u00e9 de chaque partie. Mercredi 10 Mai 2023 Bon hier je n'ai pas eu le temps de finir la documentation de la recup\u00e8ration d'images et de la calibration. Il faudra donc que je repasse un coup dessus en fin de semaine je pense. Mais la j'aimerais avancer sur la mise en commun du projet, comme la configuration fonctionne plut\u00f4t pas mal je pense que je vais juste vite fait aller commenter les methodes qui ne le sont pas encore et ensuite je vais passer \u00e0 l'impl\u00e9mentation de l'OCR. Je suis presque certain que l'OCR va avoir besoin de plus de r\u00e8glages mais bon on verra bien. Je me rend compte en commentant que la methode de load serait plus efficace avec un tout petit peu plus d'infos de la part du JSON. J'aurais pu ajouter l'offset entre chaque Driver Zone pour eviter un l\u00e8ger drift lors de la reconstruction. Mais bon rien de grave donc je pense que je vais le laisser comme ca pour le moment \u00e0 moins que ca me pose soucis plus tard. J'ai eu quelques soucis avec les images en 4K. Du coup j'ai descendu les variables d'environnement \u00e0 1920x1080 En fait il y a parfois un soucis un peu p\u00e9nible avec l'OCR. Parfois pour un temps comme ci dessous: \"1:45.140\" Le programme ne va pas bien comprendre les ponctuations et il va donner : 1115140 La il y a deux probl\u00e8mes... Le 1:xx.xxx est compris comme 11xxxxx et le 4 s'est transform\u00e9 en 1... J'ai cr\u00e9\u00e9 ce \"petit\" bout de code pour g\u00e8rer les fois ou les '.' et les ':' ont mal \u00e9t\u00e9 interpr\u00eat\u00e9s if ( rawNumbers . Count == 1 ) { //If this code is used it means that its bad ... //The methods that comes are really not that great and are juste quick fixes try { result = Convert . ToInt32 ( rawNumbers [ 0 ]); switch ( windowType ) { case OcrImage . WindowType . Sector : //The usual sector is in this form : 33.456 if ( rawNumbers [ 0 ]. Length == 6 ) { //The '.' has been understood like a number result = 0 ; result += Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ] + rawNumbers [ 0 ][ 1 ]) * 1000 ; result += Convert . ToInt32 ( rawNumbers [ 0 ][ 3 ] + rawNumbers [ 0 ][ 4 ] + rawNumbers [ 0 ][ 5 ]); } if ( rawNumbers [ 0 ]. Length == 5 ) { //The '.' has been overlooked result = 0 ; result += Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ] + rawNumbers [ 0 ][ 1 ]) * 1000 ; result += Convert . ToInt32 ( rawNumbers [ 0 ][ 2 ] + rawNumbers [ 0 ][ 3 ] + rawNumbers [ 0 ][ 4 ]); } break ; case OcrImage . WindowType . LapTime : //The usual Lap time is in this form : 1:45:345 if ( rawNumbers [ 0 ]. Length == 6 ) { //The '.' and ':' have been overlooked //I Know Im skipping the cases where there are more than 9 minuts but it happens so rarely that... we dont care result = 0 ; result += Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]) * 60000 ; result += Convert . ToInt32 ( rawNumbers [ 0 ][ 1 ] + rawNumbers [ 0 ][ 2 ]) * 1000 ; result += Convert . ToInt32 ( rawNumbers [ 0 ][ 3 ] + rawNumbers [ 0 ][ 4 ] + rawNumbers [ 0 ][ 5 ]); } if ( rawNumbers [ 0 ]. Length == 7 ) { //There is two possibilities //Either 1:45.140 has been interpreted as 1145.10 or 1:451140. We will assume its the first one result = 0 ; result += Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]) * 60000 ; result += Convert . ToInt32 ( rawNumbers [ 0 ][ 2 ] + rawNumbers [ 0 ][ 3 ]) * 1000 ; result += Convert . ToInt32 ( rawNumbers [ 0 ][ 4 ] + rawNumbers [ 0 ][ 5 ] + rawNumbers [ 0 ][ 6 ]); } break ; case OcrImage . WindowType . Gap : //The usual Gap is in this form : + 34.567 if ( rawNumbers [ 0 ]. Length == 5 ) { //The '.' has been overlooked result += Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ] + rawNumbers [ 0 ][ 1 ]) * 1000 ; result += Convert . ToInt32 ( rawNumbers [ 0 ][ 2 ] + rawNumbers [ 0 ][ 3 ] + rawNumbers [ 0 ][ 4 ]); } break ; } if ( rawNumbers [ 0 ]. Length > 6 ) { //The number definitely has been interpreted wrong } } catch { //It can be because the input is empty or because its the LEADER bracket result = 0 ; } } else { //Auuuugh result = 0 ; } ConfigFile = \"./Presets/Clean_2023.json\" ; string gpUrl = \"https://f1tv.formula1.com/detail/1000006688/2023-azerbaijan-grand-prix?action=play\" ; Bon je n'arrive pas \u00e0 faire fonctionner l'OCR sans tout faire crash \u00e0 chaque fois. Je vais abandonner le travail de la journ\u00e9e pour revenir au point initial... C'est tr\u00e8s frustrant mais bon je ne vois pas comment faire mieux. Rien ne marche alors qu'avant ca marchant super sur le projet OCR normal. Va savoir pourquoi m\u00eame comme ca, impossible de faire marcher l'OCR. Il y a un soucis au niveau de l'ASYNC qui me fait crash tout le temps en me disant qu'un objet est deja en train d'\u00eatre utilis\u00e9. Ca marchait nikel dans mes premi\u00e8res version je ne vois pas pourquoi ca p\u00eate maintenant. Je pense que je vois \u00e0 peu pr\u00e8s le soucis. public virtual async Task < DriverData > Decode ( List < string > driverList ) { int sectorCount = 0 ; DriverData result = new DriverData (); Parallel . ForEach ( Windows , async w => { // A switch would be prettier but I dont think its supported in this C# version if ( w is DriverNameWindow ) result . Name = ( string ) await ( w as DriverNameWindow ). DecodePng ( driverList ); if ( w is DriverDrsWindow ) result . DRS = ( bool ) await ( w as DriverDrsWindow ). DecodePng (); if ( w is DriverGapToLeaderWindow ) result . GapToLeader = ( int ) await ( w as DriverGapToLeaderWindow ). DecodePng (); if ( w is DriverLapTimeWindow ) result . LapTime = ( int ) await ( w as DriverLapTimeWindow ). DecodePng (); if ( w is DriverPositionWindow ) result . Position = ( int ) await ( w as DriverPositionWindow ). DecodePng (); if ( w is DriverSectorWindow ) { sectorCount ++; if ( sectorCount == 1 ) result . Sector1 = ( int ) await ( w as DriverSectorWindow ). DecodePng (); if ( sectorCount == 2 ) result . Sector2 = ( int ) await ( w as DriverSectorWindow ). DecodePng (); if ( sectorCount == 3 ) result . Sector3 = ( int ) await ( w as DriverSectorWindow ). DecodePng (); } if ( w is DriverTyresWindow ) result . CurrentTyre = ( Tyre ) await ( w as DriverTyresWindow ). DecodePng (); }); return result ; } Ca c'est ma methode de decoding de chaque Driver Zone. Le message d'erreur me parle d'une windowImage quand il dit qu'un objet est d\u00e9ja utilis\u00e9. Ma conjecture c'est que en essayant de faire toutes les windows en m\u00eame temps. Elles veulent parfois acc\u00e8der \u00e0 l'image principale en m\u00eame temps. Ce qui evidemment pose probl\u00e8me. Je pense que le fix le plus simple serait de faire le traitement sans le parallele quitte \u00e0 exporter ce fonctionnement sur chaque zone en elle m\u00eame pour ne pas perdre trop de performances. Ok je crois que je vois ou est le soucis. En fait dans cette version du programme c'est toujours la premi\u00e8re image qui \u00e9tait juste tout le temps prise et dans la premi\u00e8re image on a une partie des chiffres qui est bloqu\u00e9e par l'UI de la fen\u00eatre... lol... EN FAIT J'avais un soucis dans ma gestion des chiffres mal faits. Visiblement parfois quand je ne prenais pas en compte un :, un LapTime etait compris comme un Gap to leader ou un Secteur Bon j'en ai tellement marre... Je n'arrive tout simplement PAS \u00e0 faire fonctionner l'OCR ca crash tout le temps j'en peux plus. J'ai tent\u00e9 de r\u00e8gler les probl\u00e8mes de mauvaises detections de secteurs et temps au tour qui font crasher l'app : if ( rawNumbers . Count == 2 ) { //ss:ms result = ( Convert . ToInt32 ( rawNumbers [ 0 ]) * 1000 ) + Convert . ToInt32 ( rawNumbers [ 1 ]); if ( result > ( 60000 + 999 )) { if ( windowType == OcrImage . WindowType . LapTime ) { result = 0 ; result += Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]) * 60000 ; result += Convert . ToInt32 ( rawNumbers [ 0 ][ 2 ]. ToString () + rawNumbers [ 0 ][ 3 ]. ToString ()) * 1000 ; result += Convert . ToInt32 ( rawNumbers [ 1 ]); } if ( windowType == OcrImage . WindowType . Sector ) { int seconds = 0 ; if ( rawNumbers [ 0 ]. Length == 3 ) { //We have one char that we need to delete //For no apparent reason im going to delete the first seconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 1 ]. ToString () + rawNumbers [ 0 ][ 2 ]. ToString ()); } else { seconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]. ToString () + rawNumbers [ 0 ][ 1 ]. ToString ()); } int ms = Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]. ToString () + rawNumbers [ 0 ][ 1 ]. ToString () + rawNumbers [ 0 ][ 2 ]. ToString ()); result = seconds * 1000 + ms ; } } } Mais toujours impossible de faire fonctionner cette M**** C'est juste infernal. Je pense que je vais encore tout retirer et remplacer par ce que j'ai dans mon projet OCR original. Donc c'est une journ\u00e9e de perdue compl\u00eatement... C'est extr\u00eamement frustrant. Apr\u00e8s des heures de debug j'ai enfin r\u00e9ussi \u00e0 faire fonctionner le programme de temps en temps. Mais j'ai toujours le soucis que l'image ne veut pas changer alors que je fais tout pour et que l'OCR est nulle \u00e0 chier du coup... Jeudi 11 Mai 2023 Bon apr\u00e8s une bonne nuit de sommeil je vais reprendre les choses depuis le d\u00e9but. J'ai deux soucis : L'OCR pue du derche L'Image que l'on d\u00e9code ne change pas Pour la premi\u00e8re partie j'ai ma petite th\u00e9orie. Je pense que comme je donne des images 4K alors que le feed est en 1080P, il y a d\u00e9ja un genre d'interpolation qui est faite. Je pense donc qu'il faut que j'adapte mon engine pour qu'il fonctionne avec cette r\u00e9solution. Je me suis demand\u00e9 si ca n'\u00e9tait pas mieux de prendre en compte les deux r\u00e9solutions pour les pc un peu moins bal\u00e8zes et j'ai d\u00e9cid\u00e9 de n'en avoir rien a faire. On verra dans le futur si c'est une feature que je voudrais ajouter mais c'est en dehors du scope du dipl\u00f4me je pense. Pour la seconde partie, je pense qu'il faut que j'aille voir du c\u00f4te de OCR_Decode et de OCR Tester pour voir comment je faisais. Je dois forc\u00e9ment oublier un truc. Bon ca commence mal, quand je vais voir dans le projet OCR_Decode, le changement d'image est exactement le m\u00eame et il fonctionne alors que de mon c\u00f4t\u00e9 ca n'est pas le cas. Alors deux choses. Je me rend compte que le changement d'images n'a AUCUN effet sur la detection de texte, et seconde chose, le d\u00e9calage est trop grand entre les windows. Des que le soucis d'image est r\u00e8gl\u00e9 il va falloir que je change drastiquement ma facon de stocker la config en JSON. Il faut que je conserve les \u00e9carts. Sinon regardez ce que ca donne quand on arrive au dernier pilote : \"Zone de pilote d\u00e9cal\u00e9e\" Je commence \u00e0 devenir FOU. Je n'arrive pas \u00e0 changer cette foutue image wtf... J'ai beau tenter par tous les moyens de la changer par une image noire, l'image semble toujours rester celle du d\u00e9part. Bon j'ai enfin trouv\u00e9 pourquoi et je n'ai pas envie de dire comment j'ai trouv\u00e9... Je pense que l'on a tous droit \u00e0 son petit jardin secret. Maintenant ca veut dire que je peux me focus sur le concept important qui est le changement de la cr\u00e9ation et de la lecture des JSON. Voici un exemple de preset JSON : { \"Main\" : { \"x\" : 40 , \"y\" : 355 , \"width\" : 3784 , \"height\" : 1438 , \"Zones\" : [ { \"DriverZone\" : { \"x\" : 0 , \"y\" : -10 , \"width\" : 3784 , \"height\" : 71 , \"Windows\" : [ { \"Position\" : { \"x\" : 47 , \"y\" : 11 , \"width\" : 72 }, \"GapToLeader\" : { \"x\" : 445 , \"y\" : 13 , \"width\" : 201 }, \"LapTime\" : { \"x\" : 859 , \"y\" : 14 , \"width\" : 221 }, \"DRS\" : { \"x\" : 1094 , \"y\" : 13 , \"width\" : 173 }, \"Tyres\" : { \"x\" : 1270 , \"y\" : 11 , \"width\" : 1452 }, \"Name\" : { \"x\" : 2727 , \"y\" : 11 , \"width\" : 351 }, \"Sector1\" : { \"x\" : 3083 , \"y\" : 10 , \"width\" : 253 }, \"Sector2\" : { \"x\" : 3339 , \"y\" : 14 , \"width\" : 195 }, \"Sector3\" : { \"x\" : 3518 , \"y\" : 14 , \"width\" : 250 } } ] } } ] }, \"Drivers\" : [ \"Perez\" , \"Leclerc\" , \"Sainz\" , \"Alonso\" , \"Stroll\" , \"Russel\" , \"Verstappen\" , \"Zhou\" , \"Ocon\" , \"Hulkenberg\" , \"Hamilton\" , \"Norris\" , \"Tsunoda\" , \"Magnussen\" , \"Piastri\" , \"Albon\" , \"Gasly\" , \"Sargeant\" , \"Bottas\" , \"De Vries\" ] } Je pense que ce qui serait bien ce serait de rajouter un \"offsets\" qui contienne les 19 \u00e9carts restants. Bon... la structure de ma fabrication de JSON etait trop confuse je trouve alors je l'ai compl\u00eatement refaite. J'ai aussi abandonn\u00e9 l'id\u00e9e de faire un fichier le plus petit possible car au final on s'en fiche et le plus important c'est que toutes les windows et les zones soient aux bons endroits. Ca nous fait un fichier d'environs 1300 lignes mais au moins le code pour la serialisation est plut\u00f4t clean : public void SaveToJson ( List < string > drivers , string configName ) { string JSON = \"\" ; JsonObject jsonFileObject = new JsonObject (); //Creating the mainZone object JsonObject mainZoneObject = new JsonObject (); mainZoneObject . Add ( \"x\" , MainZone . Bounds . X ); mainZoneObject . Add ( \"y\" , MainZone . Bounds . Y ); mainZoneObject . Add ( \"width\" , MainZone . Bounds . Width ); mainZoneObject . Add ( \"height\" , MainZone . Bounds . Height ); JsonArray driverZonesArray = new JsonArray (); int DriverID = 0 ; foreach ( Zone driverZone in MainZone . Zones ) { DriverID ++; JsonObject driverZoneObject = new JsonObject (); driverZoneObject . Add ( \"name\" , \"Driver\" + DriverID ); driverZoneObject . Add ( \"x\" , driverZone . Bounds . X ); driverZoneObject . Add ( \"y\" , driverZone . Bounds . Y ); driverZoneObject . Add ( \"width\" , driverZone . Bounds . Width ); driverZoneObject . Add ( \"height\" , driverZone . Bounds . Height ); JsonArray windowsArray = new JsonArray (); JsonObject windowObject = new JsonObject (); foreach ( Window window in driverZone . Windows ) { windowObject . Add ( window . Name , new JsonObject { { \"x\" , window . Bounds . X }, { \"y\" , window . Bounds . Y }, { \"width\" , window . Bounds . Width }, { \"height\" , window . Bounds . Height } }); } windowsArray . Add ( windowObject ); driverZoneObject . Add ( \"Windows\" , windowsArray ); driverZonesArray . Add ( driverZoneObject ); } mainZoneObject . Add ( \"DriverZones\" , driverZonesArray ); JsonArray driversArray = new JsonArray (); foreach ( string driver in drivers ) { driversArray . Add ( driver ); } mainZoneObject . Add ( \"Drivers\" , driversArray ); jsonFileObject . Add ( \"Main\" , mainZoneObject ); JSON = jsonFileObject . ToString (); //Saving the file string path = CONFIGS_FOLDER_NAME + configName ; if ( File . Exists ( path + \".json\" )) { //We need to create a new name int count = 2 ; while ( File . Exists ( path + \"_\" + count + \".json\" )) { count ++; } path += \"_\" + count + \".json\" ; } else { path += \".json\" ; } File . WriteAllText ( path , JSON ); } Et normalement la lecture devrait \u00eatre encore plus simple. En fait c'\u00e9tait pas beaucoup plus simple mais au moins maintenant ca marche. Je vais pas mettre le code de lecture ici car c'est un peu trop long donc il va falloir me croire sur parole. (Ou aller sur Git) Bon bah on est au m\u00eame endroit qu'hier... Bon pour demain le plan de bataille ca va \u00eatre : Changer compl\u00eatement la methode \"GetTimeFromPng\" pour qu'elle prenne en compte toutes les possibilit\u00e9s de bugs et d'oubli de '.' ou de ':' mais pas selon le nombre de blocs mais selon le type de temps que l'on cherche Pour le moment je regarde le nombre de blocs et si il y en a deux alors c'est que c'est un temps de secteur. En fait non cela peut aussi \u00eatre un temps au tour qui a rat\u00e9 un point. Il faut que je bosse juste un peu vite fait la dessus et que j'arr\u00eate de putain de crasher d\u00e8s que un truc est pas au bon format. Ensuite quand ca aura arr\u00eat\u00e9 de crasher je vais reprendre l'OCR et voir pourquoi les resultats sont nuls a chier comme ca. Et le but c'est que demain soir j'ai une reconnaissance de caract\u00e8res plus proche de ce que j'avais dans d'autres projets... J'y croit 0 mais bon l'espoir fait vivre comme on dit. vendredi 12 Mai 2023 Bon aujourd'hui il faut que ca marche. On va y aller par \u00e9tape. Je vais revoir toutes les methodes d'OCR et essayer de r\u00e9apliquer les filtres differemment et revenir au point de d\u00e9part. Avant de commencer je note plusieurs soucis avec les premiers tests : Les positions des pilotes ont l'air pas mal (Pas besoin de tout changer mais peut-\u00eatre simplement checker que les filtres sont bons) L'\u00e9cart avec le leader est \u00e9tonnamment pas mal aussi Le temps au tour est tout simplement horrible. Aucun n'est juste et de tr\u00e8s loin m\u00eame si les d\u00e9cimales ne sont pas forc\u00e9ment loin Le DRS je n'ai pas eu l'occasion de bien le tester mais je dirais que ca devrait \u00eatre bon (\u00e0 verifier quand le reste sera bon) Les pneus ne sont \u00e9tonnamment pas SI horribles, m\u00eame si parfois les lettres sont prises comme des chiffres Les noms de pilotes sont tr\u00e8s bon (pas \u00e9tonnant vu le syst\u00e8me de distance de Levenstein donc ca m\u00e9rite quand m\u00eame un petit check) Les secteurs sont en g\u00e9n\u00e9ral horribles mais pas toujours. C'est peut-\u00eatre un soucis de d\u00e9cimale ou des 4 qui se transforment en 1 J'ai remarqu\u00e9 que les 4 sont souvent pris comme des 1. Peut-\u00eatre que en ayant des images 4K l'interpolation est un peu diff\u00e9rente de ce que j'ai l'habitude de voir. Mais donc le plan aujourd'hui c'est de checker tous ces points et les faire fonctionner (youpi...) J'ai d\u00e9sactiv\u00e9 toutes les methodes de cette facon : int sectorCount = 0 ; DriverData result = new DriverData (); foreach ( Window w in Windows ) { // A switch would be prettier but I dont think its supported in this C# version if ( w is DriverNameWindow ) //result.Name = (string)await (w as DriverNameWindow).DecodePng(driverList); result . Name = \"Unknown\" ; if ( w is DriverDrsWindow ) //result.DRS = (bool)await (w as DriverDrsWindow).DecodePng(); result . DRS = false ; if ( w is DriverGapToLeaderWindow ) //result.GapToLeader = (int)await (w as DriverGapToLeaderWindow).DecodePng(); result . GapToLeader = 0 ; if ( w is DriverLapTimeWindow ) //result.LapTime = (int)await (w as DriverLapTimeWindow).DecodePng(); result . LapTime = 0 ; if ( w is DriverPositionWindow ) //result.Position = (int)await (w as DriverPositionWindow).DecodePng(); result . Position = 0 ; if ( w is DriverSectorWindow ) { sectorCount ++; if ( sectorCount == 1 ) //result.Sector1 = (int)await (w as DriverSectorWindow).DecodePng(); result . Sector1 = 0 ; if ( sectorCount == 2 ) //result.Sector2 = (int)await (w as DriverSectorWindow).DecodePng(); result . Sector2 = 0 ; if ( sectorCount == 3 ) //result.Sector3 = (int)await (w as DriverSectorWindow).DecodePng(); result . Sector3 = 0 ; } if ( w is DriverTyresWindow ) //result.CurrentTyre = (Tyre)await (w as DriverTyresWindow).DecodePng(); result . CurrentTyre = new Tyre ( Tyre . Type . Undefined , 0 ); } return result ; Le but c'est que ensuite je puisse y aller \u00e9tape par \u00e9tape. Position : Alors pour cette reconnaissance je dirais que la 4K fait des merveilles qui permettent de retirer du processing. La position apr\u00e8s un simple Treshold est assez bien reconnue et la dilataion et/ou Erosion ne sont pas nescessaires finalement. On va donc pouvoir gagner un certain temps et c'est un bon signe pour la suite. On peut aussi noter que quand un pilote est hors course toutes ses valeurs sont gris\u00e9es et sa position est prise comme un -1 Sectors, alors j'ai refait toute la partie qui concerne les secteurs et qui les nettoie. Et je me suis rendu compte qu'ils \u00e9taient bien souvent juste, le seul truc c'est que ils s'affichent de mani\u00e8re un peu sp\u00e9ciale. En fait dans la page de la F1TV les secteurs peuvent faire plus de 60 secondes sans passer sur un affichage de minutes. Ce qui fait que c'est un peu bizarre \u00e0 regarder mais c'est parfaitement juste. J'ai aussi pu simplifier la reconnaissance gr\u00e2ce \u00e0 l'image de meilleure qualit\u00e9 et maintenant les temps de secteur sont plut\u00f4t corrects. En fait le plus long et complexe c'est de pr\u00e9voir les cas particuliers ou un '.' a \u00e9t\u00e9 mal interpr\u00eat\u00e9... Et en parlant de ca, je vais aller m'occuper des temps au tour qui ajoutent une couche de complexit\u00e9 avec un '.' ET un ':' qui peuvent \u00eatre oubli\u00e9s... Oh et j'y pense, un truc malin pourrait \u00eatre de comparer les temps au tour et les temps de secteur. Ils devraient concorder normalement je pense. Ok je viens de finir la gestion des temps au tour... J'ai un code de genre 170 lignes pour juste nettoyer le resultat dans le cas ou des '.' n'ont pas \u00e9t\u00e9 trouv\u00e9s ou des ':' ont \u00e9t\u00e9 n'ont pas \u00e9t\u00e9 trouv\u00e9 ou si l'un des deux s'est transform\u00e9 en chiffre etc.. etc.. etc.. Le soucis c'est que la maintenant je me rend compte que les \u00e9carts entre les pilotes vont juste \u00eatre un enfer \u00e0 nettoyer... Ils peuvent aussi bien \u00eatre \"0.760\" comme \"1:34.456\" du coup... je sais pas vraiment comment faire pour tout nettoyer. Je pense que je vais juste en avoir rien \u00e0 faire et tant pis si de temps en temps c'est pas g\u00e9nial. Bon du coup j'ai pas pris en compte TOUS les cas possibles mais d\u00e9ja un certain nombre et c'est d\u00e9ja pas mal. Sur les diff\u00e9rents Grand Prix d'exemples ca a l'air de plut\u00f4t bien tourner ! Mais ca demande tellement de tests et de code que c'est un peu ridicule... La methode \"GetTimeFromPng\" fait d\u00e9ja presque 430 lignes \u00e0 cause de tous les cas possibles et tous les try catch. Ca peut para\u00eetre peu \u00e9l\u00e9gant mais j'ai essay\u00e9 de mettre des commentaires un peu partout pour permettre \u00e0 nimporte qui de comprendre ce qui se passe. J'ai aussi pu faire les pneus et maintenant (roulement de tambour) Ca marche (presque) En fait j'ai des soucis parfois quand les pneus sont un peu cach\u00e9s dans les permiers tours : Pneus cach\u00e9s Le soucis c'est que du coup le chiffre est un peu illisible... mais je pense que avec l'historique il devrait y avoir moyen de ne pas prendre en compte les chiffres de pneus pendant cinq tours apr\u00e8s le changement de pneu ou de simplement tenter de faire les calculs de pneus. Pour conclure la journ\u00e9e je pense que je devrais avoir le temps de faire un syst\u00e8me qui permet de refresh \u00e0 volont\u00e9. Par contre je viens de d\u00e9couvrir que quand un temps de secteur est en couleur on arrive pas \u00e0 le lire. Ah et la detection prend un peu moins de trois secondes sur mon pc je crois. Mais c'est seulement si les driver zones sont faites en m\u00eame temps mais en faisant ca de temps en temps ca crash et \u00e0 chaques fois c'est d'un endroit diff\u00e9rent du coup je comprend pas vraiment. Sinon ca prend dix secondes. Lundi 15 Mai 2023 Aujourd'hui c'est journ\u00e9e poster et visites. Comme on va avoir des visites de premi\u00e8res ann\u00e9es voire de terminales et que le soir c'est visite des parents. Je pense que j'ai finit de tout regrouper (\u00e0 part \u00e9videmment le traitement et le stockage des donn\u00e9es) ce qui veut dire que je suis pas dans une superbe posture. Il va falloir que je sois tr\u00e8s efficace dans la partie stockage de donn\u00e9es et mise en place du mod\u00e8le si je veux avoir une chance de rendre un joli travail de dipl\u00f4me. (et m\u00eame comme ca je peux voir que le temps commence \u00e0 manquer) Dans l'id\u00e9al je devrais avoir termin\u00e9 la partie stockage jeudi... Ce qui veut dire que je n'ai que trois jours pour le faire et que en plus jeudi je dois travailler depuis la maison. Ca va pas \u00eatre simple. Mais aujourd'hui je vais m'occuper d'adapter la documentation de l'OCR et faire la documentation de toute la partie r\u00e9cup\u00e8ration d'images et de la calibration. Bon au final la journ\u00e9e a \u00e9t\u00e9 un peu difficile. On a pas vraiment pu travailler l'apr\u00e8s midi car il a fallu pr\u00e9senter le projet environs 10 fois \u00e0 toutes les classes et \u00e0 des parents voire futurs experts. Les d\u00e9mos ont plut\u00f4t bien fonctionn\u00e9es j'en suis assez content. Mais ca veut dire que la partie doc a pas forc\u00e9ment pu \u00eatre totalement compl\u00eat\u00e9e mais demain il va falloir que je m'occupe de la suite du projet. Mardi 16 Mai 2023 Bon aujourd'hui c'est la partie stockage qui doit \u00eatre faite. Il y a plusieurs solutions possibles \u00e0 ce probl\u00e8me. Mais comme je n'ai besoin que d'une base de donn\u00e9e locale et que je ne veux pas que chaque utilisateur doive installer un serveur sur sa machine je pense que je vais utiliser une base de donn\u00e9es SQLITE. Il y a eu une petit intervention de mr Bonvin qui est venu me donner une id\u00e9e pour la partie OCR. En fait j'avais un soucis quand je voulais d\u00e9coder du texte de couleur. M\u00eame en appliquant un filtre de gris je n'arrivais pas \u00e0 faire reconnaitre les chiffres. Et il m'a dit que une bonne id\u00e9e cela pourrait de prendre la valeur max de chaque channel et de la faire appliquer \u00e0 tous ce qui blanchit assez bien l'image. J'ai d\u00e9cid\u00e9 d'exag\u00e8rer le blanchiment et cela donne des r\u00e9sultats plut\u00f4t... int\u00e9ressants... \"Filtre vanish oxy action sur un secteur violet\" Le soucis c'est que le violet est une couleur quand m\u00eame assez sombre alors il va falloir que je fasse un syst\u00e8me de treshold un peu sp\u00e9cial qui soit un peu plus sympa et qui prenne plus facilement des couleurs plus basses. Une methode \u00e0 laquelle j'ai pens\u00e9 pour detecter dans quel tour chaque pilote est serait de garder en m\u00e9moire toutes les infos de chaques pilotes au fur et \u00e0 mesure, et d\u00e8s qu'on ne recoit plus d'infos des secteurs ou que le temps au tour a chang\u00e9 on peut savoir qu'il faut passer au tour suivant. Pour detecter les arr\u00eats aux stands je peux essayer de detecter un changement de type de pneus ou de nombre de tours detect\u00e9s sur le m\u00eame pneu Au d\u00e9part je me disais que je pourrais peut-\u00eatre faire une base de donn\u00e9e SQLITE locale qui puisse \u00eatre reprise d'un Grand Prix \u00e0 un autre. Mais je me suis dit que de faire des statistiques inter Grand Prix \u00e9tait un peu en dehors du scope du projet. La base de donn\u00e9e sera donc cr\u00e9\u00e9e \u00e0 chaque d\u00e9marrage de l'app La mani\u00e8re dont je vois les choses en ce moment est qu'on aie deux sources de donn\u00e9es dans l'affichage final. On aurait une partie des infos qui seraient en direct depuis la detection : Les ecarts entre pilotes La position des pilotes Le dernier temps au tour Les derniers secteurs Les pneus Mais on aurait aussi des rubriques cr\u00e9\u00e9es de toutes pi\u00e8ces par des infos qui viennent de la BD Voici les rubriques qui pourraient \u00eatre int\u00e9ressantes \u00e0 voir dans l'interface finale : Les 3 ou 5 pilotes les plus rapides ces cinq derniers tours Le pilote qui a le plus fait de d\u00e9passements Les batailles en cours Les 3 pilotes les plus lents Un classement pond\u00e9r\u00e9 avec les 20s de moins pour tous les pilotes qui ne se sont pas encore arr\u00eat\u00e9s En gros l'id\u00e9e serait que on update une fois par tour et par pilote la base de donn\u00e9e avec des infos comme le temps au tour, le type de pneu etc... Voici les trois tables que je vais cr\u00e9er : Drivers Colonne Type de Data Description Tag ID INTEGER ID du pilote PRIMARY Name VARCHAR Nom du pilote NOT NULL Pitstops Colonne Type de Data Description Tag Lap INTEGER Tour durant lequel le Pitstop a \u00e9t\u00e9 effectu\u00e9 PRIMARY DriverID INTEGER Pilote qui a effectu\u00e9 le Pitstop PRIMARY Tyre VARCHAR Pneu chauss\u00e9 par le pilote NOT NULL Stats Colonne Type de Data Description Tag Lap INTEGER Tour durant lequel le Pitstop a \u00e9t\u00e9 effectu\u00e9 PRIMARY DriverID INTEGER Pilote qui concern\u00e9 PRIMARY Tyre VARCHAR Pneu chauss\u00e9 par le pilote NOT NULL LapTime INTEGER Temps au tour (MS) NOT NULL Sector1 INTEGER Temps du secteur 1 (MS) NOT NULL Sector2 INTEGER Temps du secteur 2 (MS) NOT NULL Sector3 INTEGER Temps du secteur 3 (MS) NOT NULL GapToLeader INTEGER Ecart avec le leader (MS) NOT NULL Position INTEGER Position pilote NOT NULL Ca n'est pas forc\u00e9ment d\u00e9finitif mais je pense que c'est d\u00e9ja un bon d\u00e9but pour faire des rubriques sympa. Je suis en train de tenter d'impl\u00e9menter le code pour permettre ensuite d'ajouter et retirer des choses facilement. Mercredi 17 Mai 2023 Aujourd'hui le but c'est de remplir la base SQLITE avec des infos. Si j'arrive \u00e0 tout remplir alors ca devrait pas \u00eatre trop compliqu\u00e9 de venir faire des requ\u00e8tes qui donnent de bonnes infos. Mais la probl\u00e9matique principale va \u00eatre de d\u00e9cider QUAND ins\u00e8rer des choses dans la base de donn\u00e9e. Je pense que le meilleur moyen serait de garder une liste de DriverData par pilote en piste qui puisse contenir toutes les data que l'on recoit. Et \u00e0 chaques fois que l'on veut ajouter \u00e0 cette liste on v\u00e9rifie si un tour a \u00e9t\u00e9 fait pour envoyer les data pr\u00e9c\u00e9dente et r\u00e9initialiser la liste. Il faut donc une liste de 20 listes de DriverData et une liste de int qui repr\u00e9senteront le num\u00e9ro du tour dans lequel chaque pilote se trouve. Pour detecter un arr\u00eat je pense que la meilleure mani\u00e8re est de regarder si le pilote a chang\u00e9 de place ou de type de pneu. Si je prend que les fois ou le pilote change place ET de pneus alors certains arr\u00eats pour ceux qui sont loins devant ou loins derri\u00e8re pourraient ne pas \u00eatre detect\u00e9s. Et si je ne prend que le changement de pneus cela pose un soucis car un pneu pourrait avoir \u00e9t\u00e9 chang\u00e9 pour un autre du m\u00eame type. Et parfois les valeurs de tours faits avec le pneu ne sont pas toujours bien lues et parfois sont compliqu\u00e9es \u00e0 retrouver car tous les pneus ne sont pas neuf quand ils sont chauss\u00e9s. Je crois que la detection de tours et des arr\u00eats aux stands est sur la bonne voie. Le seul soucis que j'ai c'est que pour faire du debug je suis un peu oblig\u00e9 d'attendre pendant 10min si je veux avoir de quoi faire des stats un peu sympa. Je me rend compte que parfois j'obtiens des r\u00e9sultats un peu bizarres mais que c'est la f1TV qui les donne. Par exemple de cas ou Alex Albon n'a que deux tours sur ses pneus alors que tout le monde devant et derri\u00e8re lui en a 3 et que on est au tour 4. \"wtf...?\" Ah et aussi parfois quand les pilotes se d\u00e9passent on se retrouve dans des situations plut\u00f4t rigolotes : \"Wtf...??\" COMMENT JE FAIS POUR DETECTER CA WIONDVIDNJDODVNSDIC Bon je me rend compte que clairement si je veux que mes data soient plus utiles il faudrait que je fasse un tout petit peu plus de taff sur quelques points dans l'OCR. Le nombre de tours des pneus (Les num\u00e9ros sont vraiment mal detect\u00e9s et parfois m\u00eame la couleur est pas dingue) Les 4 qui sont pris pour des 1 ou des 11 (pour les temps et les pneus) apr\u00e8s un test de plus longue haleine je suis content de voir que au moins mon programme peut tourner plus d'une heure sans crasher et qu'il peut \u00eatre fiable quand il veut. Jeudi 18 Mai 2023 Aujourd'hui c'est t\u00e9l\u00e9Travail forc\u00e9 et j'\u00e9tais scens\u00e9 aller au Grand Prix d'Imola ce qui malheureusement ne pourra pas se faire pour des raisons d'inondations. En effet la r\u00e9gion est clairement pas en \u00e9tat de recevoir un Grand Prix de Formule 1 et donc ce weekend c'est maison. Le but du jour c'est d'avancer la doc et de tenter d'am\u00e9liorer l'OCR pour que Lundi il soit relativement facile d'avancer sur l'interface de l'app finale. Je suis en train d'explorer une methode de detection de bords de sobel. Le seul soucis c'est que les r\u00e9sultats sont bons mais avec un vide au milieu des chiffres. Cela veut dire que parfois le temps est mal detect\u00e9. Mais il semble que pour le reste du temps cela se passe plut\u00f4t bien. Ca vaut peut \u00eatre le coup de modifier la gestion des erreurs. \"Artefacts de detection de sobel\" En fait le soucis avec ces artefacts c'est que parfois le temps au tour n'est tout simplement pas detect\u00e9. Dans l'exemple ci dessus, la reconnaissance de caract\u00e8res ne trouve tout simplement rien. Il faut donc que je trouve un moyen de corriger ces soucis. Il semblerait que en appliquant un tresholding un peu plus s\u00e9v\u00e8re en amont on arrive \u00e0 r\u00e9duire les artefacts \"Artefacts all\u00e8g\u00e9s\" ; Je crois qu'il faut faire attention avec les 'Bitmap.save' quand on utilise de l'asynchrone. le GDI+ aime pas des masses. Lundi 22 Mai 2023 BON ! Il ne reste plus beaucoup de temps ! Selon le planning cette semaine est la derni\u00e8re semaine de programmation. Il va donc falloir CHARBONNER !! Il ne me reste plus que une t\u00e2che \u00e0 vraiment faire (\u00e0 part les tests mais euuuu voila bon). J'essaie d'impl\u00e9menter un peu plus d'error handling mais c'est pas facile... Il y a tellement de choses qui peuvent mal tourner c'est infernal. Une chose qui serait bien serait de rajouter des points d'attente variables dans le code de l'emulateur un peu partout pour eviter de se retrouver bloqu\u00e9 \u00e0 chaque fois. L'int\u00e9r\u00eat serait que des gens avec une moins bonne connexion pourraient quand m\u00eame profiter du programme sans qu'il crashe 300 fois. Ce qui est frustrant c'est que va savoir pourquoi, maintenant, on arrive quasi jamais a avoir la page data... Genre sans deconner c'est une fois sur 5 que l'emulateur nous ressort la page Data et pas juste le feed. C'est absolument infernal. Je ne comprends pas pourquoi en plus. L'emulateur arrive bien \u00e0 cliquer sur le bon bouton mais m\u00eame comme ca ca ne veut pas. CA NA AUCUN SENS BORDEL. Sur une image Jjai de supers resultats pour les temps au tour mais d\u00e8s que l'image change PAF plus aucun temps n'est detect\u00e9. Ah non c'est bon c'est juste que VA SAVOIR POURQUOI les images sont en putain de resolution DEGEULASSE. Je ne comprends pas pourquoi ce matin particuli\u00e8rement le projet marche si mal. Par ce que d\u00e8s que l'image revient \u00e0 une r\u00e9solution normale c'est bon. Un autre soucis que j'ai est que je n'arrive pas \u00e0 paralleliser l'OCR ce qui fait que elle peut prendre parfois plus de 15 secondes. Et le probl\u00e8me avec ca c'est que la detection de tours et de pitstop est grandement impact\u00e9e si on a pas assez de data assez souvent. Je vais me focus sur le reste en attendant mais d\u00e8s que M.Bonvin apparait dans les parages je vais devoir l'alpaguer. J'ai ajout\u00e9 la possibilit\u00e9 d'essayer plusieurs fois de trouver le bouton fullscreen et de cliquer dessus plut\u00f4t que d'attendre dix secondes comme un con et esp\u00e8rer que ca fonctionne. Mais si apr\u00e8s 15 secondes d'essais il n'y arrive pas cela fait quand m\u00eame p\u00eater une erreur. Je pense que je vais m'occuper de la page de configuration maintenant. Voici \u00e0 quoi ressemblait la page de settings ce matin quand je suis arriv\u00e9. \"Ancienne page de settings\" Comme je pense que l'UI de cette page ne va pas vraiment changer d'ici la fin du projet je peux me permettre de lui faire une petite beaut\u00e9 car apr\u00e8s je ne pense pas y retoucher. Pour ca j'ai plusieurs \u00e9tapes comme choisir une palette de couleur, retirer l'inutile et choisir judicieusement le placement des items sur la form pour que cela soit le plus intuitif possible. J'y pense, il fuadrait peut-\u00eatre que je me trouve un logo ca pourrait rendre bien. Voila alors j'ai chang\u00e9 un tout petit peu ce \u00e0 quoi ressemble la page de settings et j'ai ajout\u00e9 du responsive pour que le user puisse mettre l'application en plein \u00e9cran. \"Nouvelle page de configuration\" Mais il manque un peu de couleurs et de d\u00e9tails pour que cela rende vraiment bien. Et apr\u00e8s quelques tentatives on se retrouve avec une page plut\u00f4t sympa je trouve : \"Nouvelle page de config\" Et elle est responsive : \"Nouvelle page de config en plein \u00e9cran\" Et j'ai fait quelques changements pour ce qui est des zones qui s'affichent pour qu'on les voie mieux. \"Nouvelle page de config en action\" Je trouve que franchement ca rend pas mal. Le reste de l'app sera dans ce style. J'ai mis pas mal de temps \u00e0 cr\u00e9er cette page, mais je pense que c'est important que la page de config soit propre. Et en plus tout le temps que j'ai pass\u00e9 ici n'est pas perdu car ensuite j'aurai simplement \u00e0 suivre les m\u00eames directives de style pour le reste de l'UI. Il faut aussi savoir que Windows Form n'est ps forc\u00e9ment le meilleur outil pour travailler avec le design. Truc tout b\u00eate par exemple qui m'a fait perdre 30 minutes. Il est impossible de retirer les bordures des objets \"GroupBox\". Ce que j'ai donc du faire ca a \u00e9t\u00e9 de dessiner un rectangle autour de la couleur du background pour que l'on ne voit plus les bordures et ensuite j'ai du redessiner le texte pour qu'il puisse s'afficher quand m\u00eame. C'est pleins de petites choses comme ca qui sont plut\u00f4t p\u00e9nibles et qui font perdre du temps mais je pense que c'est rentable de s'y attarder. Maintenant ce que je vais faire aujourd'hui et demain c'est l'affichage general de l'app. Je pense que je vais commencer par mettre des placeholder de l'app finale comme ca je saurai quoi implementer comme methodes de r\u00e9cup\u00e8ration demain. J'aimerais quand m\u00eame faire une interface sympa m\u00eame si les data sont pas parfaites. Par ce que je me dis que au pire si je montre une interface qui donne des infos inexacte mais qui a la bonne logique c'est toujours mieux que de ne pas montrer ce que ca pourrait faire avec des donn\u00e9es un peu plus int\u00e8gres. Autre point \u00e0 noter, je me suis rendu compte que ca pourrait \u00eatre potentiellement pas mal de trouver un moyen rapide de lancer l'appli avec un Grand Prix. Genre permettre de selectionner le preset et l'URL du Grand Prix sans avoir \u00e0 passer par la page de configuration. Je me suis rendu compte que c'\u00e9tait super chiant de devoir \u00e0 chaque fois le faire (m\u00eame si je me rends compte que normalement un user ne devrait pas lancer l'app autant) Voila ue premi\u00e8re version de l'App avec tous les placeholders : \"Premi\u00e8re version de la page principale\" Et c'est tout pour aujourd'hui ! Ce fut une journ\u00e9e remplie. Mardi 23 Mai 2023 Aujourd'hui le but c'est de remplir le framework de hier avec les bonnes Data. Je ne sais pas si je peux tout finir en un jour mais on va essayer. Bon j'ai eu une discussion anim\u00e9e avec M.Bonvin et il semble que je sois oblig\u00e9 de refaire \u00e0 peu pr\u00e8s tout mon code pour le rendre ne serait-ce qu'un peu optimis\u00e9. Bon au final j'ai perdu 6H de travail \u00e0 tenter de convertir mon code dans une version un peu plus optimis\u00e9e... Mais je me rend compte que c'est juste impossible... Il me faudrait au moins plusieurs jours pour faire correctement ce refactor et donc je vais tout simplement faire un git restore... C'est extr\u00eament frustrant mais bon... Pas le choix il semble. J'ai du \u00e9crire au moins 600 lignes de code et tout pars en fum\u00e9e. C'est une d\u00e9bauche d'\u00e9nergie absolument ph\u00e9nomenale. Apr\u00e8s ca valait le coup de tenter je pense. (J'ai envie de mourir) EN FAIT C'EST BON !! Il fallait juste que je croie en mon code original !!! J'ai r\u00e9ussi \u00e0 paralelliser mon ancien code. Il ne manquait presque rien mais M.Bonvin voulait absolument que je change le reste. Maintenant j'ai une detection qui se fait en quelques secondes c'est genial. Mercredi 24 Mai 2023 Alors hier je n'ai pas bien eu le temps d'expliquer ce que voulait que M.Bonvin. En fait mon programme actuellement utilise un d\u00e9coupage qui peut par\u00e2itre complexe. Et de par sa nature, il pensait qu'il \u00e9tait simplement impossible de paralelliser le traitement car trop complexe et trop couteux. Il voulait donc que je passe sur un traitement plus simple. L'id\u00e9e \u00e9tait que on s'occupe dabord de faire une liste de toutes les Windows et de les traiter toutes \u00e0 la fois pour \u00e9viter que les boucles soient trop complexes. Sauf que pour impl\u00e9menter un truc pareil c'est \u00e9norm\u00e9ment de code car cela va \u00e0 l'encontre totale de la facon dont mon projet fonctionne actuellement. Mais comme j'\u00e9tais ouvert \u00e0 d'autres solutions. J'ai pass\u00e9 six heures \u00e0 tenter de l'impl\u00e9menter. Il en aurait fallu au minimum deux jours soyons clair. Et en fait on s'est retrouv\u00e9s devant pleins de probl\u00e8mes qui ne se posent pas dans mon architecture originale. Par exemple. On a pas trouv\u00e9 de methode simple pour d\u00e9couper les images des fen\u00eatres de mani\u00e8re thread safe. Il aurait donc fallu ajouter des boucles en pr\u00e9alable pour tout d\u00e9couper et le faire de mani\u00e8re s\u00e9quencielle. Ensuite vient le probl\u00e8me que si on traite toutes les donn\u00e9es dans des boucless paralelle on perds leur position originale donc il faut faire une classe pour stocker les r\u00e9sultats temporaires. Il y a aussi le soucis que les Windows ont certe une position mais elle est relative au parent et \u00e0 l'image parente. Donc il faudra faire un syst\u00e8me qui convertis les windows en position absolue sur l'image. Ca peut para\u00eetre \u00eatre de simples changements mais deja il y en a pas mal d'autres et franchement m\u00eame si l'id\u00e9e originale aurait pu simplifier les choses. Les sacrifices que l'on doit faire pour la faire marcher sont juste trop moches et \u00e0 mon avis ne sont pas du tout aussi logiques que mon d\u00e9coupage original. Cette exp\u00e9rience m'a quand m\u00eame permis de me rendre compte des endroits dans mon code qui sont plus ou moins difficile \u00e0 maintenir et cela m'a fait me rendre compte que ma solution n'\u00e9tait pas forc\u00e9ment la plus simple pour tout le monde mais que mine de rien elle peut \u00eatre efficace. La je suis en train de rajouter les routes pour la vue. Je me suis dit que ca serait une bonne id\u00e9e de permettre aux users de cliquer sur un pilote pour avoir ses infos. Mais je me suis dit que ce qui serait encore plus cool serait de pouvoir cliquer sur un des temps au tour d'un pilote et qu'une petite fen\u00eatre s'ouvre pour indiquer les temps par secteurs. Mais en faisant ca je me rends compte qu'il y a quelques soucis dans la facon que je conserve les infos dans la DB et je peux voir directement quand la reconnaissance a du mal avec certains pilotes ou des positions. Ca arrive plus souvent que ce que je voudrais que un pilote soit mal detect\u00e9. Mais ce qui est dr\u00f4le c'est que c'est parfois sur une deux voire trois reconnaissance que le pilote n'est plus reconnu mais ensuite tout va bien. Il faut que je travaille un peu plus sur le filtrage de ces donn\u00e9es limites et peut-\u00eatre de voir si la reconnaissance de la position pourrait \u00eatre un peu v\u00e9rifi\u00e9e. Bon pour \u00eatre honn\u00eate je ne pense pas que le code qui concerne l'affichage soit le meilleur code que j'aie pu produire dans ma vie de d\u00e9veloppeur mais en m\u00eame temps je n'ai pas forc\u00e9ment le temps de le rendre magnifique. La le but est simplement que tout marche. (Et c'est un peu la m\u00eame phylosophie dans tout le reste du projet lol) Demain il me reste pas mal de choses \u00e0 faire et c'est la derni\u00e8re journ\u00e9e ou je peux les faire. Rendre la form plus jolie et changer les couleurs Rendre la form Responsive Ajouter les bons messages d'erreur qui vont bien Modifier les messageBox d'erreur pour qu'elles soient plus agr\u00e9ables \u00e0 utiliser Clean un peu le code mod\u00e8le vue controller Si j'ai le temps ajouter les bons commentaires les bonnes ent\u00eates partout Jeudi 25 Mai 2023 Bon bah le but aujourd'hui c'est de finaliser un peu le projet car la semaine prochaine c'est doc. Pas grand chose \u00e0 dire. J'ai pass\u00e9 la journ\u00e9e \u00e0 fix des petits bugs par ci par la. Voici des exemples de ce \u00e0 quoi ressemble l'app \u00e0 la fin de la journ\u00e9e : \"Screenshot de la page principale\" \"Screenshot de la page principale\" On se rend jamais compte mais c'est tellement long de r\u00e8gler chaque petit soucis un par un. Il y a tellement de possibilit\u00e9s de choses qui peuvent mal tourner ou qui ont un comportement diff\u00e9rent selon l'ordre dans lequel on fait les choses. Mais dans l'ensemble, m\u00eame si on est pas sur la meilleure interface que l'on aie vu dans l'histoire. Je trouve que elle fait quand m\u00eame le taff. Vendredi 26 Mai 2023 Aujourd'hui c'est d\u00e9part pour Monaco mais comme l'avion etait bien en retard j'ai pu avancer sur le nettoyage du code. Grand Prix de Monaco [Insert photos] Lundi 29 Mai 2023 Mon vol pour Geneve hier soit a \u00e9t\u00e9 annul\u00e9 et je dois donc prendre une deviation car tous les vols pour Geneve sont pleins. Je dois partir a 7h30 pour prende l'avion de 9H pour Nantes et de la bas je dois prendre un avion \u00e0 17h pour arriver \u00e0 18h30 \u00e0 l'a\u00e9roport de Geneve. C'est pas pratique car j'avais pr\u00e9vu d'avancer aujourd'hui et je suis oblig\u00e9 d'avancer comme je peux dans l'a\u00e9roport. J'avance encore sur le nettoyage rapide du code. Le but est que demain je puisse sortir la premi\u00e8re release en Beta et que je mette vraiment serieusement \u00e0 la Documentation. M.Jayr m'a \u00e9galement demand\u00e9 de lui donner le document d'\u00e9valuation interm\u00e9diaire. Il ne faut pas que j'oublie demain. J'ai mis des notes sur mon code au cas ou des gens viennent \u00e0 le lire. J'y d\u00e9cris les choses que j'aurais fait diff\u00e9remment ou qui pourraient para\u00eetre bizarre au tout venant. Mardi 30 Mai 2023 Bon aujourd'hui je dois encore avancer sur la partie nettoyage de code et avant de sortir la premi\u00e8re release Beta je vais tenter d'installer le projet sur un autre pc pour voir ce que je n'ai pas mentionn\u00e9 dans mon ReadMe. Bon j'ai pu rendre \u00e0 M.Jayr mon evaluation interm\u00e9diaire et j'ai fait les derni\u00e8res modifications sur le projet pour que je puisse sortir une release correcte. Maintenant je vais me mettre \u00e0 la documentation. Il va falloir que je revoie ce que j'ai d\u00e9ja \u00e9crit en ce qui concerne l'OCR car j'ai fait des modifications depuis et j'ai ajout\u00e9 la methode de SOBEL. Il faut peut-\u00eatre aussi que je parle vite fait dans la partie Emulation que j'ai du changer les variables d'environnement pour faire fonctionner le syst\u00e8me en 4K. Mercredi 31 Mai 2023 Doc Jeudi 1 Juin 2023 Bon je me suis rendu compte que je n'avais fait vraiment aucuns tests et que c'est franchement bof. Je pense que ce que je devrais faire pour faire des tests unitaires c'est prendre des exemples de chaque type de windows possibles en plusieurs exemplaires. Ensuite je note le r\u00e9sultat que j'attends et je regarde si ca me retourne la bonne valeur. Mais ca veut dire que ca va me prendre pas mal de temps de tout mettre en place mais ca m'aurait s\u00fbrement fait gagner beaucoup de temps si je l'avais fait d\u00e8s le d\u00e9but... Je pense que une bonne id\u00e9e serait de prendre trois Grand Prix et de prendre une photo de chaque type de window au d\u00e9but et \u00e0 la fin. Plus je regarde plus je me rend compte que ce pojet aurait carr\u00e9ment du \u00eatre en TDD (Test Driven Developement) par ce que ca m'aurait fait gagner un temps FOU. OK JE SUIS DEBILE POURQUOI J'AI PAS FAIT CA PLUS T\u00d4T ??? En fait ce que j'aurais du faire c'est prendre de gros \u00e9chantillons de toutes les types de windows et j'aurais un parfait framework pour savoir si j'ai am\u00e9lior\u00e9 mon OCR ou non. Voici les exemples que je vais utiliser pour verifier le bon fonctionnement de l'OCR : \"Dataset Ecarts\" ; \"Dataset Tours\" ; \"Dataset Noms\" ; \"Dataset Positions\" ; \"Dataset Sectors\" ; \"Dataset Tyres\" ; Je pense que c'est un set assez correct car j'ai essay\u00e9 de prendre un peu tous les cas possibles. Le seul qui m'inqui\u00e8te un peu c'est celui des pneus mais bon. C'est aussi celui qui m'inqui\u00e8te le plus en temps normal. Non mais c'est juste g\u00e9nial les tests en fait... j'avais pas vu que parfois ma detection de GAP TO LEADER comprenait le \"+1:34.567\" en \"61:34.567\" car le '+' \u00e9tait interpr\u00eat\u00e9 comme un 6. Sans les tests je ne m'en serais pas rendu compte. Ce qui est g\u00e9nial c'est que ca veut dire que si je veux am\u00e9liorer mon OCR j'ai juste \u00e0 mettre plus d'exemples dans le dossier de tests et de run les tests et voir ou il a des soucis. C'est un peu tard mais ca m'aurait fait gagner TELLEMENT de temps c'est absolument ridicule. Vendredi 2 Juin 2023 Aujourd'hui c'est de nouveau doc. Mais la je pense qu'il faut que je rajoute une rubrique \"Fonctionnement g\u00e9n\u00e9ral\" qui r\u00e9sume tr\u00e8s simplement toutes les \u00e9tapes du projet avec un bon diagramme. En fait c'est beaucoup plus dur que ce que je pensais de faire un bon diagramme qui explique tout sans \u00eatre illisible. J'ai mis une heure trente \u00e0 faire celui la : \"Diagramme fonctionnement g\u00e9n\u00e9ral\" J'ai pris pas mal de temps aussi \u00e0 faire ces trois autre diagrammes un peu plus graphiques qui montrent de mani\u00e8re un poil plus abstraite le fonctionnement des trois grosses parties du projet. \"Diagramme recup\u00e9ration d'images\" \"Diagramme OCR\" \"Diagramme Traitement\" Je pense qu'ils sont un peu plus faciles \u00e0 comprendre que le gros diagramme g\u00e9n\u00e9ral. Ce que je me dis c'est que je vais faire une section fonctionnement g\u00e9n\u00e9ral ou je vais expliquer les trois parties avec les petits diagramme et r\u00e9sumer avec le grand diagramme. Lundi 5 Juin 2023 Ce weekend j'ai voulu essayer le projet pour le Grand Prix de Barcelone qui s'est sold\u00e9 en un \u00e9chec cuisant... J'ai eu trois soucis pour l'utilisation du programme. Les voici dans l'ordre croissant d'importance et de difficult\u00e9 \u00e0 r\u00e8gler : Mon Laptop est incapable de rester plus d'une heure allum\u00e9 m\u00eame compl\u00eatement charg\u00e9 \u00e0 100% Le WIFI de chez moi a du mal \u00e0 g\u00e8rer plusieurs flux 1080p en m\u00eame temps et donc le temps de chargement est trop long ce qui me fait des erreurs 105 \"Ce que voyait le programme pendant les erreurs 105 ce dimanche\" Le fait que quand un flux est en live, quand on clique dessus, un nouveau bouton appar\u00e2it qui n'\u00e9tait pas pr\u00e9vu et qui nous propose de regarder depuis le d\u00e9but ou en live. Le soucis avec ce bouton c'est qu'il n'est pr\u00e9sent que pour les sessions live... Il va donc falloir attendre le prochain GP (Canada 18 Juin) pour faire un test en conditions r\u00e9elles. \"Ce que voyait le programme avant que j'essaie d'impl\u00e9menter le click auto\" J'ai essay\u00e9 de r\u00e8gler le probl\u00e8me en Live, le soucis c'est que j'ai un commentaire \u00e0 fournir pendant la course et donc je n'ai pas eu le temps de plus me pencher sur le cas. Le weekend du prochain Grand Prix je vais essayer de tester sur les sc\u00e9ances d'essais libres.le click du bouton et j'amenerai mon cable chez moi. Bon sinon aujourd'hui, comme d'hab, Doc... Je vais faire le manuel utilisateur. J'ai fait un manuel qui d\u00e9crit \u00e0 peu pr\u00e8s tout ce qui'il faut savoir pour bien utiliser l'app. Cela fait un document un peu long mais je pense que c'est nescessaire car c'est vraiment pas une app facile \u00e0 comprendre quand on ne vient pas du milieu de la F1 (et m\u00eame la...) Mardi 6 Juin 2023 Aujourd'hui je vais continuer \u00e0 documenter... Ma methode pour l'instant c'est juste de remplir les titres que j'ai pr\u00e9vu au d\u00e9part. Ensuite \u00e0 partir de jeudi (je pense que c'est \u00e0 partir de cette date que j'aurai un peu tout rempli) j'aimerais bien relire la grille d'\u00e9valuation et ensuite faire une lecture de mon journal de bord pour v\u00e9rifier que je n'ai rien oubli\u00e9. Et le but c'est de finir la doc Vendredi soir pour faire une derni\u00e8re release doc + projet. Un coll\u00e8gue M.Briard m'a pas mal aid\u00e9 avec la configuration de mon mkdocs et il a d\u00e9velopp\u00e9 une extension pour ajouter le code source au PDF final. La il est en train de regarder si il peut trouver un moyen de faire une table des figures qui nous est demand\u00e9e. (j'ai plus de 200 images dans ma documentation alors si c'est possible de ne pas avoir \u00e0 faire une table des figures \u00e0 la main je prends) Mercredi 7 Juin La je suis en train de parler de l'optimisation de mon application et je viens de me rappeller qu'il manquait des methodes avec de la paralellisation alors je vais les convertir avant de continuer la doc. En fait je viens de me rendre compte qu'aucunes de mes methodes de filtres n'\u00e9taient en parralel... Je ne sais pas si jaurai le temps de le faire aujourd'hui en fait public static Bitmap Grayscale ( Bitmap inputBitmap ) { Rectangle rect = new Rectangle ( 0 , 0 , inputBitmap . Width , inputBitmap . Height ); BitmapData bmpData = inputBitmap . LockBits ( rect , ImageLockMode . ReadWrite , inputBitmap . PixelFormat ); int bytesPerPixel = Bitmap . GetPixelFormatSize ( inputBitmap . PixelFormat ) / 8 ; unsafe { byte * ptr = ( byte *) bmpData . Scan0 . ToPointer (); for ( int y = 0 ; y < inputBitmap . Height ; y ++) { byte * currentLine = ptr + ( y * bmpData . Stride ); for ( int x = 0 ; x < inputBitmap . Width ; x ++) { byte * pixel = currentLine + ( x * bytesPerPixel ); byte blue = pixel [ 0 ]; byte green = pixel [ 1 ]; byte red = pixel [ 2 ]; //Those a specific values to correct the weights so its more pleasing to the human eye int gray = ( int )( red * 0.3 + green * 0.59 + blue * 0.11 ); //This is not a proper treshold method but it is helping the sobel edge detection if ( gray <= F1TV_BACKGROUND_TRESHOLD . R ) { pixel [ 0 ] = pixel [ 1 ] = pixel [ 2 ] = 0 ; } else { pixel [ 0 ] = pixel [ 1 ] = pixel [ 2 ] = ( byte ) gray ; } } } } inputBitmap . UnlockBits ( bmpData ); return inputBitmap ; }","title":"Journal de bord"},{"location":"jdb.html#journal-de-bord","text":"","title":"Journal de bord"},{"location":"jdb.html#mercredi-29-mars-2023","text":"Premier jour du travail de dipl\u00f4me. Nous avons eu un briefing de mr Garcia et nous avons pu commencer \u00e0 pr\u00e9parer le travail. Nous avons eu les diff\u00e9rents fichiers nescessaires \u00e0 la bonne r\u00e9alisation du projet et je me suis mis \u00e0 faire les fichiers nescessaires La premi\u00e8re chose a \u00e9t\u00e9 de faire ce mkdocs dans lequel j'ai mis un fichier yml plut\u00f4t standart qui risque de changer au fur et \u00e0 mesure. Voici le premier yml : site_name: Documentation Diplome theme: name: material palette: # Palette toggle for light mode - media: \"(prefers-color-scheme: light)\" scheme: default toggle: icon: material/brightness-7 name: Switch to dark mode # Palette toggle for dark mode - media: \"(prefers-color-scheme: dark)\" scheme: slate toggle: icon: material/brightness-4 name: Switch to light mode markdown_extensions: - attr_list - md_in_html plugins: - glightbox - with-pdf Voici un example de \u00e0 quoi ca ressemble en forme de site \"Exemple mkdocs\" Ensuite il m'a fallu faire une version plus \u00e0 jour de mon cahier des charges car je n'y avait pas touch\u00e9 depuis novembre. J'ai envoy\u00e9 un mail \u00e0 mes enseignants pour qu'ils puissent y jeter un oeuil pour \u00eatre s\u00fbr que je n'ai rien chang\u00e9 qui les d\u00e9rangent. Monsieur Jayr m'a demad\u00e9 \u00e0 l'occasion de lui faire un planning type Gantt alors je me suis mis \u00e0 la t\u00e2che. J'ai fait un planning pr\u00e9visionnel et une l\u00e9gende les deux sont dispo dans le dossier planning de ce repertoire. Ensuite je me suis mis \u00e0 tout mettre sur git. A commencer par ce repertoire Et c'est deja la fin de la journ\u00e9e ! Demain j'avance un peu sur la doc avec ce que je peux d\u00e9ja remplir et je finis de pr\u00e9parer ce dont j'ai besoin pour commencer \u00e0 coder.","title":"Mercredi 29 Mars 2023"},{"location":"jdb.html#jeudi-30-mars-2023","text":"Aujourd'hui selon le planning je dois me charger des dernirers pr\u00e9paratifs pour commencer correctement. J'ai fait expr\u00e8s de prenre du temps pour ca au d\u00e9but pour ne pas me cr\u00e9er de soucis plus loin pendant le travail. Je vais envoyer par mail le planning que j'ai fait \u00e0 mes suiveurs. Ensuite je vais m'attaquer au squelette de la docmentation. Je vais essayer de remplir tout ce que je peux remplir dans un premier temps car cela tout ca de fait pour plus tard quitte \u00e0 modifier quelques aspects au fur et \u00e0 mesure. J'ai aussi d\u00e9sactiv\u00e9 mkdocs with pdf par ce que les r\u00e9sultats ne sont vraiment pas ceux que j'attends et cela ralentis \u00e9norm\u00e9ment le d\u00e9ploiment. J'ai aussi rassembl\u00e9 mes croquis pour le poster : \"Croquis Poster 1\" \"Croquis Poster 2\" On peut voir que dans un premier temps j'ai tent\u00e9 de faire un poster un peu plus stylis\u00e9 et marketing. Cependant apr\u00e8s avoir discut\u00e9 avec Mr Garcia et diff\u00e9rents profs dont un de l'HEPIA et ils m'ont indiqu\u00e9 que ce qui \u00e9tait attendu \u00e9tait moins du marketing qu'un diagramme de fonctionnement. On peut voir sur les derniers posters que le cot\u00e9 technique ressort de plus en plus. Le but sera de faire une version encore plus technique ou on peut voir les diff\u00e9rents fonctionnements de l'application avec les technologies utilis\u00e9es. Le d\u00e9fi cela va \u00eatre de faire un joli poster qui soit en m\u00eame temps vendeur et en m\u00eame temps rempli techniquement. Oh et j'ai eu un probl\u00e8me ou mon calvier et ma souris ne voulaient d'un coup plus fonctionner. Dans mon cas c'\u00e9tait un probl\u00e8me de power management des ports. J'ai eu le soucis sur mon pc fixe \u00e0 la maison et sur mon pc portable \u00e9galement. En gros de ce que j'ai compris le soucis c'est que le pc croit que un port est trop solicit\u00e9 niveau puissance et du coup d\u00e9cide de couper l'alimentation du port USB. J'ai pu r\u00e8gler le soucis en allant dans le device manager sous universal bus controller sous power management et en d\u00e9cochant la case qui indique que windows peut d\u00e9sactiver ce port. Je ne conseille pas ce fix si vous avez des composants de mauvaise qualit\u00e9 car cela pourrait \u00eatre une vraie alerte cependant le fait que mes composants sont plut\u00f4t haut de gamme et le fait que mon clavier et ma souris le fassent en m\u00eame temps et que ils fonctionnaient tr\u00e8s bien depuis plus de 4 ans me font penser que c'est juste une nouvelle mise a jour de windows qui est p\u00e9nible. Demain je vais pouvoir commencer \u00e0 coder pour de bon.","title":"Jeudi 30 Mars 2023"},{"location":"jdb.html#vendredi-31032023","text":"Aujourd'hui on s'occupe de la PT2 qui est la programmation de la r\u00e9cup\u00e8ration des informations des images. Je vais tester IronOcr Source : https://www.c-sharpcorner.com/article/ocr-using-tesseract-in-C-Sharp/ Doc : https://ironsoftware.com/csharp/ocr/docs/ Examples : https://ironsoftware.com/csharp/ocr/examples/simple-csharp-ocr-tesseract/ Avant d'utiliser la librairie je me demande si je dois utiliser un peu de post processing pour aider \u00e0 la reconnaissance. Je peux soit utiliser l'image crop\u00e9e directement : \"Image non trait\u00e9e\" Soit avec un filtre pour passer en noir et blanc laxiste \"Image trait\u00e9e laxiste\" Soit avec un filtre pour passer en noir et blanc stricte \"Image trait\u00e9e stricte\" Il va falloir faire des tests avec tous les noms et les chiffres pour trouver le plus efficace. Bon malheureusment Iron OCR semblait \u00eatre une bonne alternative mais c'est une librairie priv\u00e9e qui demande une license pour \u00eatre utilis\u00e9e. Il va falloir trouver autre chose. En utilisant la librairie \"Tesseract\" qui existe on peut faire de la reconnaissance de texte avec un code plut\u00f4t simple : TesseractEngine engine = new TesseractEngine ( tessDataFolder . FullName , \"eng\" , EngineMode . Default ); var tessImage = Pix . LoadFromMemory ( ImageToByte ( sample )); Page page = engine . Process ( tessImage ); string text = page . GetText (); Voici la methode ImageToByte : https://stackoverflow.com/questions/7350679/convert-a-bitmap-into-a-byte-array public static byte [] ImageToByte ( Image img ) { using ( var stream = new MemoryStream ()) { img . Save ( stream , System . Drawing . Imaging . ImageFormat . Png ); return stream . ToArray (); } } Voici le code pour traiter plusieurs textes sur une seule image : Page page = engine . Process ( tessImage ); // Get the iterator for the page layout using ( var iter = page . GetIterator ()) { // Loop over the elements of the page layout iter . Begin (); do { // Declare a Rect variable to hold the bounding box Rect boundingBox ; // Get the bounding box for the current element if ( iter . TryGetBoundingBox ( PageIteratorLevel . Word , out boundingBox )) { g . DrawRectangle ( Pens . Red , new Rectangle ( boundingBox . X1 , boundingBox . Y1 , boundingBox . Width , boundingBox . Height )); } // Get the text for the current element var text = iter . GetText ( PageIteratorLevel . Word ); tbxResult . Text += text . ToUpper () + Environment . NewLine ; } while ( iter . Next ( PageIteratorLevel . Word )); } Etonnament, avec plus de texte, des noms qui \u00e9taient autrefois mal reconnus sont parfaitement interpr\u00eat\u00e9s. Par exemple voici un exemple de reconnaisance de texte sur tous les pilotes : \"Screenshot de reconnaisance d'image complete\" On voit que le nom Leclerc est mal reconnu. Mais voici ce que cela donne quand on prend une image qui ne contient que le nom Leclerc : \"Screenshot de reconnaissance d'image crop\u00e9e\" On voit ici que le nom Leclerc est tr\u00e8s bien reconnu. Dans le premier exemple on peut voir que Tsunoda est reconnu comme \"Reticin\" ce qui n'est pas exactement pareil (lol) Et quand on isole le nom Tsunoda dans une image seule : \"Screenshot de reconnaissance de Tsunoda\" Il le lit \"RETLELYY\" ce qui n'est toujours pas exactement ca... Une meilleure r\u00e9solution pourrait peut-\u00eatre r\u00e9soudre le probl\u00e8me en partie. Jusqu'ici les images \u00e9taient en presque 720P ce qui donne ceci : \"Tsunoda en 720P\" Et j'ai lanc\u00e9 une r\u00e9cup\u00e8ration d'images en 1080p pour r\u00e9cup\u00e8rer ceci : \"Tsunoda en 1080P\" On peut voir une certaine diff\u00e9rence tout de m\u00eame. Et quand on lance la reconnaissance : \"Reconnaissance Tsunoda en 1080P\" \"Tsunoda n'est plus \u00e9crit \"RETLELYY\" mais \"TSUNDDA\" ce qui n'est pas parfait mais qui est d\u00e9ja beaucoup mieux. J'ai essay\u00e9 de mettre l'engine de Tesseract en mode \"JPN\" comme Tsunoda est un nom japonais mais sans succ\u00e8s j'ai le m\u00eame r\u00e9sultat. Comme la r\u00e9solution est meilleure je me suis dit que peut \u00eatre le filtre de passage en noir et blanc pourrait aider. J'ai \u00e9crit cette petite methode pour convertir l'image en noir et blanc : private static Bitmap ConvertToBlackAndWhite ( Bitmap inputBmp ) { const int BLACK_TO_WHITE_TRESHOLD = 200 ; Bitmap result = new Bitmap ( inputBmp . Width , inputBmp . Height ); for ( int y = 0 ; y < inputBmp . Height ; y ++) { for ( int x = 0 ; x < inputBmp . Width ; x ++) { Color pixelColor = inputBmp . GetPixel ( x , y ); if ( pixelColor . R <= BLACK_TO_WHITE_TRESHOLD && pixelColor . G <= BLACK_TO_WHITE_TRESHOLD && pixelColor . B <= BLACK_TO_WHITE_TRESHOLD ) { pixelColor = Color . FromArgb ( 0 , 0 , 0 ); } else { pixelColor = Color . FromArgb ( 255 , 255 , 255 ); } result . SetPixel ( x , y , pixelColor ); } } return result ; } Rien de bien dingue mais cela fonctionne et je peux jouer avec le BLACK_AND_WHITE_TRESHOLD pour changer son comportement. J'ai dabord test\u00e9 avec un treshold de 100 et le programme a r\u00e9ussi \u00e0 me sortir Tsunoda en deux mots ce qui \u00e9tait d\u00e9ja tr\u00e8s encourageant. Et apr\u00e8s avoir augment\u00e9 le Treshold... Tada : \"Tsunoda 1080P avec filtre\" Le programme arrive bien \u00e0 reconnaitre TSUNODA. Je pense que cette tactique ne fonctionnait pas avant car la resolution \u00e9tait trop faible et l'aliasing se m\u00ealait trop avec le texte pour \u00eatre utilisable. Cependant cette technique ne fonctionne pas sur tous les noms. Par example avec Leclerc : \"Leclerc 1080P avec filtre\" On r\u00e9cup\u00e8re \"Leeler'c\" ce qui n'est pas bon du tout. Mais en modulant le Treshold (ici \u00e0 150) On peut de nouveau voir Leclerc \u00eatre reconnu correctement \"Leclerc 1080P avec filtre 2\" Je pense que pour avoir de bons r\u00e9sultats il va falloir faire un algo qui : D\u00e9coupe l'image en autant de plus petites images pour avoir un mot par image. Teste voir si avec l'image originale un nom correspond \u00e0 la liste de pilotes existant. Si cela ne marche pas, on applique le filtre en modulant le Treshold. Dans le cas ou on aurait pas un match parfait on fait un algo qui cherche le nom le plus proche qui existe dans la liste de noms donn\u00e9s. Seulement voila, il n'y a pas que des lettres que l'on veut r\u00e9cup\u00e8rer. On veut surtout pouvoir r\u00e9cup\u00e8rer les chiffres. Pour les chiffres on va avoir des soucis \u00e9galement... Si on essaie directement la m\u00eame technique sans filtre on a des r\u00e9sultats comme celui ci : \"Tentative de reconnaisance du timing\" La virgule a tendeance \u00e0 se barrer ce qui est particuli\u00e8rement probl\u00e9matique. Cependant comme les chiffres ont beaucoup moins de possibilit\u00e9es que les lettres et qu'il n'y a pas de probl\u00e8me de langue on devrait pouvoir travailler \u00e0 faire des r\u00e8glage que l'on pourra ensuite utiliser. Avec un Treshold de 165 on arrive presque \u00e0 quelque chose d'int\u00e9ressant : \"Tentative 2 de reconnaissance du timing\" Le + n'est clairement pas compris mais ca n'est pas emb\u00eatant car c'est souvent redondant. On arrive cependant \u00e0 isoler 3 et 259. M\u00eame si la virgule n'est pas comprise cela veut dire qu'il est tout de m\u00eame possible de discriminer les secondes des milisecondes. Maintenant avec un temps au tour : \"Reconnaissance du timing au tour\" On arrive sans rien changer aux param\u00eatres \u00e0 isoler minutes secondes et milisecondes. Il semble que la reconnaissance de chiffre soit bien plus efficace que la reconnaissance de lettres. Il va falloir faire un test \u00e0 plus grande \u00e9chelle avec plus d'image pour se rendre compte de la precision. Demain ce qui serait bien cela serait que je fasse un jeu d'images avec des valeurs connues et que je fasse une batterie de tests pour voir \u00e0 quel point je peux faire confiance \u00e0 la reconnaissance des chiffres. Automatiser un syst\u00e8me de test de la sorte me sera tr\u00e8s utile dans le futur pour v\u00e9rifier la non regression de ma reconnaissance de texte quand je tenterai d'y faire des changements. Je suis toujours curieux cependant de voir comment le programme se d\u00e9brouille avec les nombres de tours qui se trouvent dans les icones de pneus.","title":"Vendredi 31/03/2023"},{"location":"jdb.html#lundi-3-avril","text":"Aujourd'hui on va faire un programme qui permet de cr\u00e9er un dataset qui permette de tester le programme de reconnaissance. Je pense que le meilleur moyen de faire serait un programme qui cr\u00e9e le dataset et qui ensuite peut tester diff\u00e9rentes methodes de reconnaissance. Par la m\u00eame occasion je peux d\u00e9velopper la technologie qui va permettre de d\u00e9couper une image en 20 lignes ce qui me servira ensuite pour la reconnaissance. Je me rend compte que pour faire un programme de tests je dois d\u00e9ja avoir une id\u00e9e de la structure de mon programme. Pour le moment je r\u00e9flechis \u00e0 un syst\u00e8me de \"Zones\" et de \"Windows\". L'id\u00e9e serait que une Zone est juste une sous partie d'image qui peut encore \u00eatre d\u00e9compos\u00e9 tandis que chaque Window contient une ou plusieurs informations \u00e0 r\u00e9cup\u00e8rer. J'ai essay\u00e9 de d\u00e9couper l'image pour que cela soit plus clair : \"Main zone\" Ici on peut voir que l'image est d\u00e9coup\u00e9e en plusieurs grandes zones. Dans un premier temps on ne s'occupe que de la premi\u00e8re. Ensuite : \"Driver zone #1\" On peut voir la que cette Main zone serait elle m\u00eame d\u00e9compos\u00e9e en plusieurs plus petites zones. Et ensuite chacunes de ces petites zones : \"Driver windows\" Sera d\u00e9compos\u00e9e en plusieurs windows qui elles sont des zones qui contiennent de l'information. En gros on aurait trois types de zone : Les zones qui contiennent d'autres zones Les zones qui contiennent des Windows Les Windows Cependant en y r\u00e9flechissant on pourrait tout \u00e0 fait avoir seulement des zones et des windows en faisant en sorte que les windows peuvent avoir une liste de windows et une liste de zones. Une zone serait compos\u00e9e de : Une image de d\u00e9part Un rectangle qui la positionne sur cette derni\u00e8re Une liste de zones (potentiellement vide) Une liste de windows (potentiellement vide) Une methode qui permet de r\u00e9cup\u00e8rer une image de la zone Une methode qui permet de lancer la reconnaissance sur chaque window Une window serait compos\u00e9e de : Une image de d\u00e9part (cela peut \u00eatre l'image crop\u00e9e de la zone parente peu importe) Un rectangle qui la positionne sur cette derni\u00e8re Une methode qui permet de r\u00e9cup\u00e9rer un image de la window Une methode qui permet de lancer la reconnaisance sur l'image (Chaque type de zone doit l'impl\u00e9menter) Dans chaque window on peut imaginer que la methode qui fait la reconnaissance au lieu de retourner un objet qui peut contenir nimporte quel type d'information peut envoyer ce qu'elle vient de r\u00e9cup\u00e8rer dans une base de donn\u00e9e ou un objet. Par exemple une Zone de pilote pourrait tr\u00e8s bien contenir un objet pilote et le donner \u00e0 ses windows qui rempliraient ce m\u00eame objet. C'est une reflexion plus stockage que OCR mais c'est int\u00e9ressant pour savoir ce que fait une window des donn\u00e9es qu'elle r\u00e9cup\u00e8re. Dans un premier temps je pense que les windows vont simplement \u00e9crire dans un fichier ce qu'elles trouvent chacunes dans le format qu'elles veulent. Pour comprendre pourquoi je me prend la t\u00eate il faut savoir que chaque window peut avoir acc\u00e8s \u00e0 pleins d'informations diff\u00e9rentes. On pourrait dire qu'elles retournent toutes une string sauf que si ca marche pour un temps au tour ou pour un nom de pilote, cela ne marche pas forc\u00e9ment pour un type de pneu ou un DRS ouver. Comme chaque window a plusieurs types de data elle devra elle m\u00eame se charger de comment la traiter ET de la stocker. Voila un diagramme qui r\u00e9sume comment je vois l'impl\u00e9mentation dans un premier temps : \"Diagramme d'explications\" Voici comment se pr\u00e9sente le squellette d'une Zone : public class Zone { private Bitmap FullImage ; private List < Zone > Zones ; private List < Window > Windows ; private Rectangle _bounds ; public Rectangle Bounds { get => _bounds ; private set => _bounds = value ; } public Bitmap ZoneImage { get { Bitmap sample = new Bitmap ( Bounds . Width , Bounds . Height ); Graphics g = Graphics . FromImage ( sample ); g . DrawImage ( FullImage , new Rectangle ( 0 , 0 , sample . Width , sample . Height ), Bounds , GraphicsUnit . Pixel ); return sample ; } } public Zone ( Image fullImage , Rectangle bounds ) { FullImage = ( Bitmap ) fullImage ; Init ( bounds ); } public Zone ( Bitmap fullImage , Rectangle bounds ) { FullImage = fullImage ; Init ( bounds ); } private void Init ( Rectangle bounds ) { Bounds = bounds ; Zones = new List < Zone >(); Windows = new List < Window >(); } public void AddZone ( Rectangle bounds ) { if ( Fits ( bounds )) Zones . Add ( new Zone ( ZoneImage , bounds )); } public void AddWindow ( Rectangle bounds ) { if ( Fits ( bounds )) Windows . Add ( new Window ( ZoneImage , bounds )); } private bool Fits ( Rectangle inputRectangle ) { if ( inputRectangle . X + inputRectangle . Width > Bounds . Width || inputRectangle . Y + inputRectangle . Height > Bounds . Height || inputRectangle . X < 0 || inputRectangle . Y < 0 ) { return false ; } else { return true ; } } } Le but est ensuite de cr\u00e9er diff\u00e9rent types de Zones. Par exemple la MainZone devra d\u00e9couper son contenu en 20 parties \u00e9gales pour tenter de chopper les 20 pilotes. Il serait cool de trouver un moyen de calibrer automatiquement. C'est peut-\u00eatre possible de calibrer avec de la reconnaissance de texte, on peut essayer de lancer la reconnaissance et voir ou on trouve du texte avec un peu de chance cela pourrait donner les positions et avec ca on peut peut-\u00eatre determiner des lignes. Et voici le squelette d'une window g\u00e9n\u00e9rique using System ; using System.Collections.Generic ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; using System.Drawing ; namespace OCR_tester { public class Window { private Bitmap FullImage ; private Rectangle _bounds ; public Rectangle Bounds { get => _bounds ; private set => _bounds = value ; } public Bitmap WindowImage { get { Bitmap sample = new Bitmap ( Bounds . Width , Bounds . Height ); Graphics g = Graphics . FromImage ( sample ); g . DrawImage ( FullImage , new Rectangle ( 0 , 0 , sample . Width , sample . Height ), Bounds , GraphicsUnit . Pixel ); return sample ; } } public Window ( Bitmap fullImage , Rectangle bounds ) { FullImage = fullImage ; Bounds = bounds ; } public virtual void RecoverInformations () { //Each Window type will have to implement its own way to recover the informations stored in the Window Image } } } Chaque Window pourra ainsi elle m\u00eame impl\u00e9menter la r\u00e9cup\u00e8ration d'informations. La facon de les retourner/stocker est encore un peu floue. Par exemple pour un temps au tour on peut imaginer que il fait une petite v\u00e9rification dans l'objet pilote et dans le tableau des tours si il n'y a pas deja une valeur et si il n'y en a pas une alors il peut l'ajouter. Maintenant je vais essayer de cr\u00e9er une Main window qui se calibre toute seule. Alors apr\u00e8s avoir bien gal\u00e8r\u00e9 avec l'interface pour permettre au user de cliquer sur la form pour voir les zones qu'il cr\u00e9e, j'ai pu cr\u00e9er un zone qui fait les dimensions de MainZone et j'ai pu lancer la reconnaissance sur l'image et voir ou il trouve du texte : \"MainZone avec carr\u00e9s de texte\" Maintenant il faut que je nettoie la liste de rectangle pour exclure ceux qui sont trop grands pour \u00eatre sur une seule ligne, ceux qui indiquent le nombre de tour en haut et ceux qui n'ont pas d'int\u00e9r\u00eats. On pourra ensuite isoler les lignes et cr\u00e9er une liste d'images. Pour ce qui est de la ligne qui contient les \"Gap interval last lap\" et des chiffres sur les tours pour les pneus etc je vais juste demander \u00e0 l'utilisateur de ne pas les prendre dans la screenshot. Comme ils contiennent des mots qui peuvent \u00eatre utilis\u00e9s plus loin dans les data je ne peux pas les blacklister et faire un syst\u00e8me qui s'occupe de les enlever si ils existent selon le position y me prendrait trop de temps pour rien. Apr\u00e8s avoir filtr\u00e9 un peu les resultats et enlev\u00e9 les zones beaucoup trop grandes, on se retrouve d\u00e9ja plus qu'avec ca : \"MainZone avec de meilleurs carr\u00e9s\" Comme on peut le voir, du c\u00f4t\u00e9 gauche de l'image on a beaucoup de choses reconnues mais avec beaucoup de tailles diff\u00e9rentes ce qui n'est pas id\u00e9al. Alors j'ajoute un filtre qui permet de ne selectionner que les data sur la droite. \"MainZone avec de meilleurs carr\u00e9s\" Maintenant il devrait \u00eatre possible de faire un algorythme qui ne prend que un seul carr\u00e9 par ligne. \"MainZone avec un seul carr\u00e9 par ligne\" Maintenant que on sait ou se trouve chaque ligne on peut faire un petit traitement et d\u00e9couper l'image en plusieurs windows. Et voila : \"Mainzone auto calibr\u00e9e\" Maintenant le programme peut cr\u00e9er des zones pour chaque pilote \"Images pilotes\" \"Zone d'un pilote\" Maintenant il faut que j'impl\u00e9mente un syst\u00e8me un peu similaire pour cr\u00e9er des windows. Voici la methode que j'ai cr\u00e9\u00e9 pour l'autocalibration : public void AutoCalibrate () { List < Rectangle > detectedText = new List < Rectangle >(); Zones = new List < Zone >(); TesseractEngine engine = new TesseractEngine ( Window . tessDataFolder . FullName , \"eng\" , EngineMode . Default ); Image image = ZoneImage ; var tessImage = Pix . LoadFromMemory ( Window . ImageToByte ( image )); Page page = engine . Process ( tessImage ); using ( var iter = page . GetIterator ()) { iter . Begin (); do { Rect boundingBox ; if ( iter . TryGetBoundingBox ( PageIteratorLevel . Word , out boundingBox )) { //var text = iter.GetText(PageIteratorLevel.Word).ToUpper(); //We remove all the rectangles that are definitely too big if ( boundingBox . Height < image . Height / NUMBER_OF_DRIVERS ) { //Now we add a filter to only get the boxes in the right because they are much more reliable in size if ( boundingBox . X1 > image . Width / 2 ) { //Now we check if an other square box has been found roughly in the same y axis bool match = false ; //The tolerance is roughly half the size that a window will be int tolerance = ( image . Height / NUMBER_OF_DRIVERS ) / 2 ; foreach ( Rectangle rect in detectedText ) { if ( rect . Y > boundingBox . Y1 - tolerance && rect . Y < boundingBox . Y1 + tolerance ) { //There already is a rectangle in this line match = true ; } } //if nothing matched we can add it if (! match ) detectedText . Add ( new Rectangle ( boundingBox . X1 , boundingBox . Y1 , boundingBox . Width , boundingBox . Height )); } } } } while ( iter . Next ( PageIteratorLevel . Word )); } foreach ( Rectangle Rectangle in detectedText ) { Rectangle windowRectangle ; Size windowSize = new Size ( image . Width , image . Height / NUMBER_OF_DRIVERS ); Point windowLocation = new Point ( 0 , ( Rectangle . Y + Rectangle . Height / 2 ) - windowSize . Height / 2 ); windowRectangle = new Rectangle ( windowLocation , windowSize ); Zones . Add ( new Zone ( ZoneImage , windowRectangle )); } } Ca peut paraitre pas \u00e9norme comme code mais pour tout mettre en place ca demande quand m\u00eame pas mal de reflexion. J'ai du clean un peu le code que j'avais fait pour permettre la selection de zones et ajouter la possibilit\u00e9 d'ajouter des windows sur une zone. J'ai juste quelques difficult\u00e9es \u00e0 les ajouter correctement, j'ai un offset tout pourri qui se met tout le temps \"Sainz coup\u00e9\" \"Perez coup\u00e9\" Cela doit \u00eatre un soucis lors de la detection de clic qui met un offset en trop. C'est vraiment p\u00e9nible en tout cas. Certes c'est moins fun de devoir manuellement indiquer ou sont les windows sur une ligne de pilote, mais je ne vois vraiment pas comment faire cela automatiquement. Le but c'est de faire une configuration qui puisse \u00eatre sauvegard\u00e9e comme ca pas besoin d'\u00e0 chaques fois le refaire. C'est bon ! J'avais juste oubli\u00e9 de changer le calcul d'offset entre le code de la zone et de la window. Note pour plus tard, il serait peut-\u00eatre judicieux de faire quelque chose pour la vue, les windows et les Zones ont le m\u00eame exact comportement pour la vue ce qui fait dupliquer du code. Mais au moins maintenant ca fonctionne : \"Ocr tester screenshot\" Et le programme va directement cr\u00e9er un dossier par pilote avec toutes les images de chaque Data le concernant : \"Dossier Perez\" ; Et c'est tout pour aujourd'hui je pense. Ce qui serait cool demain c'est que je puisse stocker d'une mani\u00e8re ou d'une autre ces fichiers de calibration et que je puisse les transf\u00e8rer vers le programme qui va s'occuper de d\u00e9coder et commencer gentillement \u00e0 d\u00e9coder les diff\u00e9rents types de data. Note pour quand je ferai les tests. Je pense que la meilleure id\u00e9e serait que je prenne pleins de photos du style et que je les mette dans un fichier CSV ou JSON avec leur contenu. Et ensuite je le fais passer en tests pour calculer la prescision de mon algo de d\u00e9codage. Pour le moment on est plut\u00f4t dans les clouts niveau planning.","title":"Lundi 3 Avril"},{"location":"jdb.html#mardi-4-avril","text":"Aujourd'hui je suis scens\u00e9 plut\u00f4t bosser sur l'interpretation des donn\u00e9es, mais une id\u00e9e m'a taraud\u00e9 l'esprit toute la nuit. Est-ce que je ne pourrais pas quand m\u00eame essayer de d\u00e9composer la zone de pilote directment comme pour la Main zone. Pour ce faire j'ai tent\u00e9 de faire comme pour la main zone c'est \u00e0 dire lancer la reconnaissance pour savoir ou \u00e9taient tous les champs de donn\u00e9es mais malheureusement je ne pense pas que cela va \u00eatre possible. En effet non seulement ici les champs sont de tailles tr\u00e8s vari\u00e9es, mais en plus la reconnaissance n'arrive pas \u00e0 en r\u00e9cup\u00e8rer le m\u00eame nombre sur chaque ligne ce qui risque d'\u00eatre complexe \u00e0 utiliser ensuite. La preuve : \"Tentative d'auto calibration\" ; Cependant tout n'est pas perdu ! Il y a peut-\u00eatre un moyen qui serait mieux en tous points. Le soucis avec ce type de reconnaissance c'est qu'on utilise beaucoup de ressources inutiles. On peut peut-\u00eatre hard coder la valeur des diviseurs et les utiliser pour cr\u00e9er des zones. Ok alors visiblement c'est un probl\u00e8me car il semble y avoir d'autres pixels de cette couleur dans l'image (Qui l'aurait cru lol) \"Tentative 2\" J'a tent\u00e9 de r\u00e9duire la tol\u00e9rance mais le soucis c'est que c'est soit trop soit pas assez Derni\u00e8re tentative, j'ai essay\u00e9 de prendre plusieurs pixels en hauteur pour chaque incr\u00e9ment de X et en faire la moyenne, et m\u00eame comme ca, impossible de trouver de mani\u00e8re efficace les zones. Je pense que je vais donc revert tous mes changements pour revenir \u00e0 la version ou on les choisissait manuellement. Pas mal de temps perdu mais bon c'est comme ca ca arrive Bon j'ai fait un revert mais j'ai ajout\u00e9 une feature importante. Les zones font la largeur indiqu\u00e9e par l'utilisateur mais elles font la hauteur max comme ca toutes les window font la m\u00eame hauteur et ca permet \u00e0 l'utilisateur de ne pas forc\u00e9ment \u00eatre ultra pr\u00e9cis dans sa selection. Ce qui nous donne : \"Resultat final\" Maintenant je dirais que les deux prochaines choses \u00e0 faire seraient de stocker ces zones dans un fichier JSON ou autre pour que la calibration puisse \u00eatre envoy\u00e9e directement dans le logiciel de reconnaissance et ensuite de faire une calibration sur des images qui font la taille qu'on aura pendant les Grands Prix. Pour le moment elles sont au format 16:10 qui est le format d'\u00e9crant de mon laptop. Pour le stockage j'imagine un fichier qui donne des indications assez simples qui permettent de reconstruire le total des zones quand il est import\u00e9 plutot que d'\u00e9crire les coordonn\u00e9es en dur pour chacunes. Chaque Grande zone va impl\u00e9menter une methode qui s'occupe de mettre tous ses enfants dans un fichier. { \"MainZone\" :{ \"x\" : 10 , \"y\" : 20 , \"width\" : 1450 , \"height\" : 1340 , \"DriverZone\" :{ \"x\" : 0 , \"y\" : 23 , \"height\" : 25 , \"Windows\" :[ { \"DriverPositionWindow\" :{ \"x\" : 0 , \"y\" : 0 , \"width\" : 35 } }, { \"DriverPositionChangesWindow\" :{ \"x\" : 0 , \"y\" : 0 , \"width\" : 45 } } ] } } } C'est le r\u00e9sultat auquel j'aimerais arriver. Mais pour y arriver il faut encore que je cr\u00e9e les diff\u00e9rents types de window. Cela veut dire que je dois d\u00e9cider quelles informations je vais r\u00e9cup\u00e8rer de la page. Par exemple je vais conserver la position du pilote mais au final les changements de positions sont difficiles \u00e0 lire et sont redondants. Si je garde un historique des positions des pilotes je peux calculer moi m\u00eame les changements. Pareil pour gap avec la voiture devant. Je pense que je vais juste garder l'information des \u00e9carts absolus et ensuite je pourrai toujours calculer la diff\u00e9rence entre les pilotes. Ca peut para\u00eetre b\u00eate car cela rajoute du calcul mais en r\u00e9alit\u00e9 le calcul de l'OCR est extr\u00eamement gourmand alors il faut que j'\u00e9vite le plus possible d'y faire recours. Il est bien plus rapide de calculer les \u00e9carts que d'essayer de reconnaitre le texte et le convertir en chiffre. J'ai visiblement ajout\u00e9 un bug dans mon code. Maintenant tous les pilotes ont la m\u00eame image quand on les selectionne. Mais visiblement ca n'\u00e9tait pas le cas avant car j'avais pu prendres des images de chaque pilote. J'ai pass\u00e9 3 minutes \u00e0 fixer un bug stupide j'ai un peu envie de br\u00fbler ma place de travail... Mais bon au moins maintenant cela fonctionne ! Toutes les images sont r\u00e9cup\u00e8r\u00e9es et ont un format correct avec le bon nom : \"Verstappen folder\" Avec un peu de code tr\u00e8s moche j'ai pu cr\u00e9er un fichier JSON qui contient les diff\u00e9rentes infos. Cependant en exportant TOUT on se retrouve avec un fichier de 1200 lignes ce qui n'est pas optimal. Mais quand on regarde, il devrait \u00eatre possible de faire un fichier qui ne contient que les infos d'un seul pilote car ensuite il y a simplement un offset \u00e0 appliquer sur la zone et les windows. Je vais donc pouvoir commencer enfin le logiciel de d\u00e9codage qui prend en entr\u00e9e un fichier JSON comme celui ci qui a \u00e9t\u00e9 g\u00e9n\u00e8r\u00e9 avec le programme de calibration. { \"Main\" : { \"x\" : 40 , \"y\" : 230 , \"width\" : 1845 , \"height\" : 719 , \"Zones\" : [ { \"DriverZone\" : { \"x\" : 0 , \"y\" : 3 , \"width\" : 1845 , \"height\" : 35 , \"Windows\" : [ { \"Position\" : { \"x\" : 2 , \"y\" : 0 , \"width\" : 32 }, \"GapToLeader\" : { \"x\" : 204 , \"y\" : 0 , \"width\" : 96 }, \"LapTime\" : { \"x\" : 413 , \"y\" : 0 , \"width\" : 105 }, \"Drs\" : { \"x\" : 526 , \"y\" : 0 , \"width\" : 81 }, e t c... } ] } } ] } } Dans le futur il faudrait ajouter d'autres choses comme par exemple les diff\u00e9rents pilotes pr\u00e9sents sur le Grand Prix et ce genre d'infos. Quoique je vais l'ajouter d\u00e9ja maintenant et plus tard je mettrai en place la feature acessible depuis l'interface. Mais le hardcoder maintenant me permet d\u00e9ja de mieux coder l'autre c\u00f4t\u00e9. Ce programme n'est en aucun cas termin\u00e9 et je vais devoir travailler encore un peu dessus pour qu'il soit utilisable correctement mais au moins il fonctionne \u00e0 peu pr\u00e8s. Exemple du json avec les noms de pilotes: { \"Main\" : { \"x\" : 37 , \"y\" : 238 , \"width\" : 1851 , \"height\" : 713 , \"Zones\" : [ { \"DriverZone\" : { \"x\" : 0 , \"y\" : -5 , \"width\" : 1851 , \"height\" : 35 } } ] }, \"Drivers\" : [ \"Leclerc\" , \"Verstappen\" , e t c... ] } Maintenant je vais m'attaquer au d\u00e9codage. Demain je dois finir le d\u00e9codage du JSON et je dois commencer \u00e0 impl\u00e9menter la reconnaissance des textes. Voire m\u00eame des pneus etc si j'y arrive.","title":"Mardi 4 Avril"},{"location":"jdb.html#mercredi-5-avril","text":"Bon la il faut vraiment que je finisse assez vite la lecture du JSON et la reconstruction des zones pour commencer la reconnaissance. J'ai pris beaucoup de temps \u00e0 faire le programme de calibration mais je pense que c'est essentiel de prendre ce temps maintenant. (BTW il faudra quand m\u00eame retourner faire une plus jolie version par ce que la ca marche mais c'est tout) Bon apr\u00e8s pas mal de boulot je pense avoir r\u00e9ussi. Dans le nouveau programme on arrive \u00e0 r\u00e9cup\u00e8rer les diff\u00e9rentes zones : \"JSON decode result\" Un conseil de notre professeur M.Bonvin a \u00e9t\u00e9 de cr\u00e9er des Releases de versions qui ne fonctionnent pas ou pas tr\u00e8s bien. J'ai donc publi\u00e9 une premi\u00e8re release de l'OCR_TEST qui fonctionne vite fait. J'ai seulement un petit soucis, comme je recr\u00e9e compl\u00eatement la structure des driver zones avec seulement la premi\u00e8re, il y a un petit d\u00e9calage car entre les zones il y avait un gap. Ce qui fait que si la premi\u00e8re zone est parfaitement centr\u00e9e : \"Centered driver\" La vingti\u00e8me ne l'est plus exactement : \"Uncentered Driver\" Pour ca j'ai essay\u00e9 de mettre un espacement arbitraire mais c'est complexe. Je vais plut\u00f4t tenter de faire une diff\u00e9rence entre la taille de la zone compl\u00eate et de la taille additionn\u00e9e de toutes les fen\u00eatre et diviser le resultat entre toutes les fen\u00eatres. Ca n'est pas parfait mais au moins maintenant les donn\u00e9es ne touchent plus les bords de la fen\u00eatre. Et voila ! Maintenant avec le fichier de configuration en Json on arrive \u00e0 r\u00e9cup\u00e8rer toutes les infos comme si elles avaient \u00e9t\u00e9 envoy\u00e9es directement depuis l'app de calibration mais sans le processing time ! \"Verstappen folder 2 On peut donc ENFIN passer au d\u00e9codage de ces FICHUES donn\u00e9es. Je vais pouvoir impl\u00e9menter ce que j'ai fait dans le projet de test de d\u00e9codage. Gr\u00e2ce \u00e0 mon d\u00e9coupage initial qui m'a pris du temps \u00e0 impl\u00e9menter on a enfin un truc qui marche m\u00eame si je n'ai impl\u00e9ment\u00e9 que la reconnaissance de noms. \"Image reconnaissance propre\" Si on se rappelle du syst\u00e8me de window et de zones dans le diagramme plus haut, c'est assez facile de comprendre comment je m'y suis pris. En gros on des listes et des listes de listes de zones, c'est la partie un peu plus technique car il y a des zones qui peuvent contenir d'autres zones etc. Je vais commencer par la reconnaissance de noms. Voici le tableau de pilotes de 2023 \"Drivers\" : [ \"Leclerc\" , \"Verstappen\" , \"Hamilton\" , \"Alonso\" , \"Russel\" , \"Gasly\" , \"Stroll\" , \"Sainz\" , \"Hulkenberg\" , \"Norris\" , \"Tsunoda\" , \"Piastri\" , \"Zhou\" , \"Ocon\" , \"Magnussen\" , \"Perez\" , \"Sargeant\" , \"De Vries\" , \"Bottas\" , \"Albon\" ] ET voici le tableau de pilotes de 2022 : \"Drivers\" : [ \"Leclerc\" , \"Verstappen\" , \"Sainz\" , \"Perez\" , \"Hamilton\" , \"Russel\" , \"Magnussen\" , \"Gasly\" , \"Ocon\" , \"Alonso\" , \"Tsunoda\" , \"Bottas\" , \"Zhou\" , \"Albon\" , \"Stroll\" , \"Schumacher\" , \"Hulkenberg\" , \"Norris\" , \"Latifi\" , \"Ricciardo\" ] Je les notes ici car J'ai souvent besoin de changer selon le dataset que j'utilise. Dans le futur je ferai s\u00fbrement un grand dataset qui prend des pilotes de reserves et des pilotes juniors pour que dans le cas ou un pilote est remplac\u00e9 dans l'ann\u00e9e il n'y a pas besoin de tout recalibrer avec l'application. Apr\u00e8s une discussion avec M.Bonvin j'ai d\u00e9cid\u00e9 de tester 3 valeurs de convertion en noir et blanc et si je ne trouve pas un match exact je prend le nom le plus proche. Pour trouver la string la plus proche je pense que je vais utiliser quelque chose qui s'appelle la technique de Levenshtein. De ce que j'ai compris c'est un algorythme qui permet de donner une metric de diff\u00e9rence entre deux strings. Bon et \u00e9videmment il ne faut pas se tromper dans la liste des pilotes GENRE NE PAS OUBLIER QUE GEORGE RUSSELL COMPORTE DEUX WFNEWIEWV DE \"L\" A LA FIN DE SON NOM CE QUI POURRAIT ENGRANGER 2H DE DEBUGGING POUR RIEN ASK ME HOW I KNOW joker laugh J'ai vraiment un soucis avec Tsunoda, Il a trop tendeance \u00e0 le confondre avec \"TSUNDDA\" et pour des raisons obscures, quand j'applique l'algorythme de Levenshtein le plus proche n'est pas \"Tsunoda\" mais \"Sainz\" iniuvbwdiucbiubisc POURQUOI !!??!! Je pense que cela demande moins de changements de lettres enfin bon c'est quand m\u00eame pas id\u00e9al. Il va falloir que je trouve un moyen de le repond\u00e9rer. C'est dommage par ce que cela marche super avec Alonso Verstappen et Albon. J'ai un peu modifi\u00e9 la methode et j'ai fait en sorte d'envoyer tous les noms en majuscules en me disant que cela pourrait r\u00e9duire le nombre de changements. Et ca a march\u00e9 !! Cela va s\u00fbrement demander plus de tests pour \u00eatre bien s\u00fbr que tout fonctionne nikel, cependant pour le moment ca marche parfaitement avec les pilotes de 2022. Pour ce qui est de la reconnaissance de chiffres, j'ai d\u00e9ja fait une partie du boulot le premier jour alors je vais juste reprendre \u00e0 partir de l\u00e0. Je r\u00e9cup\u00e8re une string de ce type \"1:35.123\" le soucis c'est que les : se transforment parfois en . ou inversement mais bon ca devrait pas \u00eatre trop dur \u00e0 g\u00e8rer. Il faut que je transforme cette string en nombre de milisecondes (Du moins je pense que c'est le meilleur moyen pour ensuite pouvoir facilement comparer et stocker l'information). Cela fait que 1:35:123 en milisecondes donne : 1 * 1000 * 60 => 60'000 35 * 1000 => 35'000 123 => 123 Total : 60'000+35'000+123 => 95'123ms Et pour l'affichage : Minutes = ms / 60'000 secondes = (ms - (minutes/60'000))/1000 ms = ms - ((minutes 60'000) + (secondes * 1000)) Et on se retrouve avec 1:35:123 Maintenant apr\u00e8s un peu de temps pour nettoyer la string etc on se retrouve avec un r\u00e9sultat comme le suivant : Position : 0 Gap to leader : 0:0:0 Lap time : 2:15:123 DRS : False Tyre : Undefined laps with the tyre : 0 Driver name : LECLERC Sector 1 : 0:31:323 Sector 2 : 0:42:340 Sector 3 : 0:0:0 Evidemment pareil pour les autres pilotes Et je me rend compte que j'ai encore tout cass\u00e9 car le laptime ne devrait pas \u00eatre 2:15 mais 1:35... Voila apr\u00e8s une heure de debugging et des ajouts pour nettoyer les chaines on se retrouve avec : Position : 0 Gap to leader : 0:0:0 Lap time : 1:35:123 DRS : False Tyre : Undefined laps with the tyre : 0 Driver name : LECLERC Sector 1 : 0:31:323 Sector 2 : 0:42:340 Sector 3 : 0:0:0 Note: le traitement commence \u00e0 devenir long, il serait peut-\u00eatre int\u00e9ressant d'utiliser un seul Tesseract Engine ou de voir ce qui prend autant de temps, on d\u00e9passe la seconde de traitement ce qui est un peu ma limite. Apr\u00e8s on peut toujours tester de rajouter du multicore processing mais c'est pour une autre fois. Demain je m'occupe de r\u00e8gler les soucis que j'ai avec la prescision de ces temps au tour et j'\u00e9sp\u00e8re pouvoir m'occuper aussi de la position des pneus et du DRS. J'aimerais finir tout ca cette semaine.","title":"Mercredi 5 Avril"},{"location":"jdb.html#jeudi-6-avril","text":"Une id\u00e9e m'est pass\u00e9e par la t\u00eate pendant que je dormais, dans la liste des pilotes, quand ils sont \u00e0 plus d'un tour de retard avec le leader (Ce qui arrive normalement dans presque tous les Grand Prix) on a pas des minutes mais une string qui montre \"+1 Lap\" ou \"+2Laps\" ce qui est \u00e9videmment un probl\u00e8me. Je pense qu'une bonne facon d'envoyer l'info serait de retourner -1 -2etc... \u00e0 la place des milisecondes, mais encore faut-il detecter le nombre de tours Je devrais \u00eatre en train de commencer la documentation de commment tout ce que j'ai fait fonctionne. Cependant je ne me vois pas faire ca tant que je n'ai pas au moins r\u00e9cup\u00e8r\u00e9 toutes les infos au moins un peu proprement. Cela veut dire que je commence officiellement \u00e0 prendre du retard. (Sachant que si je finis tout aujourd'hui une journ\u00e9e de doc suffira largement le terme est un peu exag\u00e8r\u00e9 mais bon) Bon pour la reconnaissance des temps c'est sp\u00e9cial... Le filtre semble ne pas changer grand chose ce qui est probl\u00e9matique et ca n'est vraiment pas fiable. Voici quelques expemples avec un treshold de 100: \"11ZSD\" Cette image est comprise comme \"11ZSD\" 42340 Cette image est comprise comme \"42340\" \"ZZAEB\" Et celle ci \"ZZAEB\"... Ce qui... n'est pas bon du tout... J'ai essay\u00e9 de trouver un fichier d'entrainement sp\u00e9cifiquement fait pour les digits. J'ai essay\u00e9 de blacklister les chars non voulus pour tenter d'obliger Tesseract \u00e0 trouver des chiffres. Avec la premi\u00e8re option, les r\u00e9sultats ne sont pas meilleurs voire pires. Avec la seconde option c'est d\u00e9ja pas mal mieux mais on perd compl\u00e8tement la possibilit\u00e9 de detecter les mots comme \"LEADER\" ou \"LAP\" et de toute facon ca n'est pas parfait. Le soucis c'est que si je n'ai pas des donn\u00e9es fiables c'est juste impossible de faire des calculs et de l'affichage correct... Il faut absolument que je trouve une solution. J'ai essay\u00e9 d'utiliser de l'interpolation our augmenter la taille de l'image et ensuite appliquer mon filtre pour retirer le flou mais sans succ\u00e8s... Pourtant la on se retrouve avec des images plut\u00f4t claires : \"Clear1\" Ici le programme trouve \"44301\" \"Clear2\" Et ici \"A5151\"... On a toujours les m\u00eames probl\u00e8mes. Bon je suis all\u00e9 me renseigner sur l'OCR et je me suis dit que j'allais tenter de faire les choses proprement. Je vais faire passer plusieurs \u00e9tapes de postProcessing avant de donner l'image \u00e0 Tesseract. GrayScale Tresholding InvertColors Scaling Dilatation Ce qui donne : \"Original\" \"Grayscale\" \"InvertColors\" ; \"Resize\" ; \"Dilatation\" Ce qui ne change : Roulement de tambour RIEN kjd viuwvuirnvoirenbf Tout ca pour rien... C'EST BON !!! Bon en fait au final le probl\u00e8me \u00e9tait une mauvaise configuration de Tesseract. Je vais devoir un peu nettoyer tout ca. Mais avec les changements de l'image on a des r\u00e9sultats BEAUCOUP plus pr\u00e9cis et potentiellement utilisables. La je vais devoir faire un serieux travail de nettoyage et simplification de mon code par ce que la c'est vraiment un chantier vu le nombre de choses que j'ai du essayer. J'ai du aussi beaucoup modifier la gestion de l'image ce qui donne : \"Clean\" Et la on a des r\u00e9sultats qui sont vraiment bons. J'ai pu ajouter assez facilement la detection de position comme c'est simplement un chiffre. On se retrouve maintenant avec ce genre de retours : Position : 1 Gap to leader : 8:33:51 Lap time : 2:19:123 DRS : False Tyre : Undefined laps with the tyre : 0 Driver name : LECLERC Sector 1 : 0:31:828 Sector 2 : 0:42:940 Sector 3 : 0:0:0 Position : 2 Gap to leader : 0:3:259 Lap time : 23:12:392 DRS : False Tyre : Undefined laps with the tyre : 0 Driver name : VERSTAPPEN Sector 1 : 0:38:119 Sector 2 : 0:0:0 Sector 3 : 0:0:0 Il ne manque plus que l'impl\u00e9mentation de la reconnaissance du DRS et des Pneus Et non... je viens de me rendre compte que mon programme a encore cass\u00e9 car le tap time ne peut pas \u00eatre 23 min lol. J'ai un nouveau magnifique probl\u00e8me... Les points et les deux points sont interpr\u00eat\u00e9s comme des chiffres ... Give me a F * * break... J'ai du mal \u00e0 comprendre pourquoi ils ne sont d\u00e9tect\u00e9s comme tels que maintenant. Bon alors il semblerait les temps au tour aie besoin d'un ordre tr\u00e8s pr\u00e9cis pour fonctionner. Grayscale InvertColors Tresholding Resize * 2 Resize * 2 Et la on a des r\u00e9sultats un peu mieux. Bon demain il faut absolument que je me charge de r\u00e8gler tous ces probl\u00e8mes et que je commence la reconnaissance des pneus et de DRS par ce que je commence \u00e0 \u00eatre en retard.","title":"Jeudi 6 Avril"},{"location":"jdb.html#vendredi-6-avril-2023","text":"Alors aujourd'hui c'est le dernier jour avant de commencer \u00e0 \u00eatre en retard pour de bon. J'ai r\u00e9ussi \u00e0 r\u00e8gler le probl\u00e8me des temps au tour, des gaps, et des secteurs. Dans le processus j'ai cass\u00e9 la detection de position mais ca devrait pas \u00eatre TROP compliqu\u00e9. Et voila ... Apr\u00e8s seulement plus de dix heures de gal\u00e8re, si on donne cette image au programme et le bon JSON le programme nous retourne : Position : 1 Gap to leader : 0:05:059 Lap time : 1:39:123 DRS : False Tyre : Undefined laps with the tyre : 0 Driver name : LECLERC Sector 1 : 0:31:828 Sector 2 : 0:42:940 Sector 3 : 0:00:000 Position : 2 Gap to leader : 0:03:259 Lap time : 1:39:392 DRS : False Tyre : Undefined laps with the tyre : 0 Driver name : VERSTAPPEN Sector 1 : 0:31:749 Sector 2 : 0:00:000 Sector 3 : 0:00:000 Evidemment le GapToLeader est faux sur leclerc car il est leader mais bon ca je pourrai toujours Hardcoder que le premier a jamais de GapToLeader. Bon j'ai eu beaucoup de soucis que je ne vais pas mentionner ici car ce sont simplement des soucis de logique de programmation pour trouver un DRS ouvert ou non. Au final la technique que j'utilise et qui marche plut\u00f4t bien pour le DRS est que je prend la premi\u00e8re image de DRS et je la d\u00e9clare comme valeur \u00e9talon d'un DRS non actif, en effet dans 99% des cas le leader n'a pas de DRS (cela peut arriver alors il faudra donc juste verifier que les pilotes sont bien \u00e0 moins de deux secondes les uns des autres pour confirmer). Ensuite cette valeur \u00e9talon je la calcule en fonction du nombre de pixels verts dans l'image et si il y a plus de 30% de pixels verts en plus c'est que le DRS est activ\u00e9 ex: Ceci est un DRS ferm\u00e9: \"Closed DRS\" Ceci est un DRS ouvert: \"Open DRS\" Cela marche \u00e0 peu pr\u00e8s tout le temps mais dans le pire des cas on peut toujours verifier que les pilotes sont bien proches pour detecter les potentiels rares cas de faux positifs. J'ai pu augmenter les performances en utilisant un seul engine pour tout le monde et en arr\u00eatant d'utiliser GetPixel et SetPixel qui sont simplement des horreurs \u00e0 utiliser. Mais elles ne sont pas encore bonnes Le soucis avec la detection de pneus cependant, c'est qu'il n'est pas possible d'utiliser la reconnaissance pour savoir ou regarder la couleur car cela ne marcherait pas. Je ne peux pas faire trop de post processing car je dois conserver la couleur Je ne peux pas hardocder un endroit ou aller regarder car cela \u00e9volue tout le long du Grand Prix. Bref c'est la gal\u00e8re. En y r\u00e9flechissant je me suis dit qu'une bonne id\u00e9e pourrait \u00eatre de partir de la droite de la zone du pneu en regardant au milieu de la hauteur. Puis continuer vers la gauche jusqu'\u00e0 ce que je rencontre une couleur diff\u00e9rente. Je pourrai ensuite faire une zone un peu vers la gauche qui devrait contenir les infos du pneu et sur laquelle il sera possible de faire de le reconnaissance de couleur et de la reconnaissance de chiffres. J'ai d\u00e9termin\u00e9 que le background n'\u00e9tait jamais plus clair que #505050 et que donc nimporte quelle couleur qui aurait plus que 50 dans un seul des channels serait consid\u00e8r\u00e9e comme une couleur cassant le background Pour arriver \u00e0 cette conclusion je me suis amus\u00e9 un peu avec les couleurs pour jouer avec les limites de mon algorythme : \"Color fun\" Et je crois que j'ai eu une bonne id\u00e9e, avec une petite methode bien faite on arrive \u00e0 de supers r\u00e9sultats : private Rectangle FindTyreZone () { Bitmap bmp = WindowImage ; int currentPosition = bmp . Width ; int height = bmp . Height / 2 ; Color limitColor = Color . FromArgb ( 0 x50 , 0 x50 , 0 x50 ); Color currentColor = Color . FromArgb ( 0 , 0 , 0 ); Size newWindowSize = new Size ( bmp . Height , bmp . Height ); while ( currentColor . R <= limitColor . R && currentColor . G <= limitColor . G && currentColor . B <= limitColor . B && currentPosition > 0 ) { currentPosition --; currentColor = bmp . GetPixel ( currentPosition , height ); } //Its here to let the new window include a little bit of the right side int offset = Convert . ToInt32 (( float ) newWindowSize . Width / 100f * 20f ); int CorrectedX = currentPosition - ( newWindowSize . Width - offset ); if ( CorrectedX <= 0 ) return new Rectangle ( 0 , 0 , newWindowSize . Width , newWindowSize . Height ); return new Rectangle ( CorrectedX , 0 , newWindowSize . Width , newWindowSize . Height ); } \"Tyres\" Maintenant cela devrait \u00eatre beaucoup plus simple de trouver la couleur g\u00e9n\u00e9rale et le nombre de tours. Donc ce que je fais c'est que je fais une reconnaissance de texte sur l'image r\u00e9duite. Si je trouve une lettre c'est facile Ca me donne le type de pneu et ca me dit que c'est le premier tour avec. Si c'est un nombre alors je fais la moyenne de toutes les couleurs de l'image et je prend la couleur de pneu la plus proche. Voici les diff\u00e9rentes couleurs de pneus : SOFT : #FF0000 MEDIUM : #f5bf00 HARD : #d9d8d4 INTER : #00a42e WET : #2760a6 \"Tyre colors\" Les couleurs de pneus peuvent changer de temps \u00e0 autres, par exemple cette r\u00e8gle de pneus est arriv\u00e9e en 2019 et avant il y avait beaucoup plus de couleurs mais dans une volont\u00e9 de rendre le sport plus facile \u00e0 comprendre \u00e0 la t\u00e9l\u00e9 cela a \u00e9t\u00e9 simplifi\u00e9. Je ne pense pas que cela va changer dans les ann\u00e9es qui viennent alors tout est hardcod\u00e9. Je pense que j'ai des soucis avec la detection de texte et de couleur car ma zone est trop grande. Alors bon j'\u00e9crit ces lignes apres des heures de tests. Il semble que la principale difficult\u00e9 avec ces pneus c'est que les chiffres ou lettres sont minuscules. Il est donc extr\u00eamement difficile de faire une reconnaissance ne serait-ce qu'un peu fiable.. Je fais de mon mieux pour tenter de r\u00e8gler le soucis cependant c'est vraiment complexe. Je commence \u00e0 devenir fou, je tente tout et nimporte quoi pour permettre \u00e0 mon algo de fonctionner et m\u00eame quand je fais du post processing comme pas possible il me retourne toujours nimporte quoi... \"5i t'inqui\u00e8tes\" Ici le programme va trouver '5i'... En fait c'est complexe d'expliquer tout ce que je fais car je change tout en boucle en essayant et en ratant ce qui prend des heures. Pour aujourd'hui j'abandonne je vais simplement rentrer chez moi et y r\u00e9flechir cette nuit mais je ne vois pas comment mieux faire la... C'est terrible par ce que je sens que je ne suis pas bien loin.","title":"Vendredi 6 Avril 2023"},{"location":"jdb.html#vacances","text":"Bon je vais un peu laisser de c\u00f4t\u00e9 la detection de chiffres pour me pencher un peu plus sur la d\u00e9tection de couleur. Par ce que techniquement si j'arrive \u00e0 toujours parfaitement la detecter alors je pourrais me passer des chiffres car ils sont redondant si je construit un historique de pneus. J'ai r\u00e9ussi \u00e0 fix mon probl\u00e8me de mauvaise detection de couleur de pneus. Du moins je crois. Seulement j'ai quand m\u00eame un souci, les fen\u00eatres de pneus avec une lettre n'ont pas assez de couleur pour \u00eatre d\u00e9tect\u00e9s. Je vais donc essayer de detecter les cinq lettres possibles et si il ne trouve pas alors je pourrai tenter de detecter les chiffres sans lettres ce qui devrait grandement aider. Le but est encore une fois de r\u00e9duire les possibilit\u00e9s de Tesseract. Je me rend de plus en plus compte que le plus important c'est de r\u00e9duire le scope le plus possible. Moins il y a de mots et lettres et de chiffres possibles meilleure sera la reconnaissance. Bon ca ne veut toujours pas marcher maintenant le 11 est interpr\u00eat\u00e9 comme trois I ou comme un M... J'en ai marre sans rire c'est vraiment p\u00e9nible. Alors j'\u00e9crit ces lignes deux jours plus tard et me rend compte avec horreur que toutes mes modifications sur ce journal de bord n'ont pas \u00e9t\u00e9 auvegard\u00e9e... yess.. Bon pour faire simple, j'ai r\u00e9ussi \u00e0 rendre la detection de couleurs bien plus efficace en r\u00e9duisant la taille de l'image et en ne prenant pas en compte les couleurs que l'on d\u00e9tecte comme \u00e9tant partie int\u00e9grante du background. Par exemple quand on a une image comme celle ci : \"Avec background\" qui contient un background alors que ci dessous, on l'a enlev\u00e9. \"Sans background\" La diff\u00e9rence est t\u00e9nue mais elle permet de grandement am\u00e9liorer la prescision de la reconnaissance de couleurs. Pour ce qui est du nombre de tours je me suis rendu compte que cela n'\u00e9tait d\u00e9ja pas tr\u00e8s utile car avec l'historique on devrait pouvoir le d\u00e9duire. Mais bon pour la forme je me suis dit que cela serait quand m\u00eame une bonne id\u00e9e de v\u00e9rifier avec la reconnaissance. J'\u00e9tais quasi certain que le soucis \u00e9tait le fait que l'on voie le contour du logo de pneu qui faisait que la reconnaissance avait du mal. Et j'avais raison ! En les enlevant (Ce qui n'a pas \u00e9t\u00e9 simple) J'ai pu avoir des chiffres beaucoup plus proches de la r\u00e9alit\u00e9. En m\u00eame temps je ne vois pas bien comment j'aurais pu faire mieux : \"Super 11\" Je suis quand m\u00eame assez fier de voir que j'ai r\u00e9ussi \u00e0 part de l'image que on peut voir un peu plus haut et automatiquement la transormer en celle ci-dessus. J'ai donc pu retirer le round autour du chiffre et cela m'a permit de pouvoir d\u00e9zoomer un peu et c'est avec ca que les lettres ont pu \u00eatre mieux reconnues : \"Super H\" \"Super M\" Maintenant je pense qu'il ne reste \"plus qu'\u00e0\" nettoyer un peu tout ce code qui traine de partout pour tout faire fonctionner et impl\u00e9menter un peu de parrallel processing ainsi que de l'asynchrone pour ne pas bloquer le reste du programme. Par ce qu'il faut savoir que en l'\u00e9t\u00e2t, le programme met 25 secondes \u00e0 d\u00e9marrer et consomme presque 2GB de Ram. Certes cela ne veut pas dire que la reconnaissance \u00e0 elle seule prend 25 secondes car au d\u00e9marrage il y a aussi la lecture du fichier de config et la cr\u00e9ation des window etc.. En r\u00e9alit\u00e9 la partie strictement OCR prend dans les 12s si on en croit la fonction stopWatch de C#. Et quand on change d'image la reconnaissance prend 9s. Dans tout les cas c'est BEAUCOUP trop. J'aurais eu comme objectif de faire une reconnaissance toutes les secondes. Je ne sais pas bien si cela va \u00eatre possible mais en tout cas le but va \u00eatre de s'en rapprocher. Pour \u00eatre plus exact et permettre une comparaison, voici les stats exactes Avec un fichier d'images vide : Loading - 11.8s Splitting d'images - 90ms OCR - 12.5s Avec un fichier d'images plein : Loading - 10.8s Splitting d'images - 80ms Ocr - 11.6s En passant d'une image \u00e0 l'autre : Loading - NaN Splitting d'images - 50ms Ocr - 8.8s Donc on peut voir que les deux endroits ou le programme prend le plus de temps c'est au premier d\u00e9marrage quand il faut lire le fichier et setup les windows etc... Et l'OCR qui prend un temps fou. Ce qui est pratique c'est que les presque 2gb de ram sont utilis\u00e9s que au lancement et ensuite l'application n'en utilise que quelques centaines de mb. Le processeur lui tourne entre 10 et 20% ce qui ne va pas durer :) Je vais m'occuper dabord du loading. J'ai essay\u00e9 d'utiliser un Parrallel.For au moment de la cr\u00e9ation des windows, le probl\u00e8me c'est que visiblement les objets windows sont beaucoup trops complexes et utilisent trop de ressources partag\u00e9es pour \u00eatre vraiment thread Safe. J'\u00e9sp\u00e8re que je n'aurais pas trop de soucis avec ca qu'en j'en viendrai \u00e0 l'optimisation de l'OCR... Ce qui me rend fou c'est que cette boucle toute nulle prend plus de dix secondes \u00e0 s'executer et je ne comprend pas bien pourquoi. for ( int i = 0 ; i < NUMBER_OF_DRIVERS ; i ++) { Point tmpPos = new Point ( 0 , FirstZonePosition . Y + i * FirstZoneSize . Height - Convert . ToInt32 ( i * offset ) /*- (i* (FirstZoneSize.Height / 32))*/ ); Zone newDriverZone = new Zone ( MainZoneImage , new Rectangle ( tmpPos , FirstZoneSize )); Bitmap zoneImg = newDriverZone . ZoneImage ; newDriverZone . AddWindow ( new DriverPositionWindow ( zoneImg , new Rectangle ( driverPositionPosition , driverPositionArea ))); newDriverZone . AddWindow ( new DriverGapToLeaderWindow ( zoneImg , new Rectangle ( driverGapToLeaderPosition , driverGapToLeaderArea ))); newDriverZone . AddWindow ( new DriverLapTimeWindow ( zoneImg , new Rectangle ( driverLapTimePosition , driverLapTimeArea ))); newDriverZone . AddWindow ( new DriverDrsWindow ( zoneImg , new Rectangle ( driverDrsPosition , driverDrsArea ))); newDriverZone . AddWindow ( new DriverTyresWindow ( zoneImg , new Rectangle ( driverTyresPosition , driverTyresArea ))); newDriverZone . AddWindow ( new DriverNameWindow ( zoneImg , new Rectangle ( driverNamePosition , driverNameArea ))); newDriverZone . AddWindow ( new DriverSector1Window ( zoneImg , new Rectangle ( driverSector1Position , driverSector1Area ))); newDriverZone . AddWindow ( new DriverSector2Window ( zoneImg , new Rectangle ( driverSector2Position , driverSector2Area ))); newDriverZone . AddWindow ( new DriverSector3Window ( zoneImg , new Rectangle ( driverSector3Position , driverSector3Area ))); MainZone . AddZone ( newDriverZone ); } Alors que Zone.AddWindow c'est simplement : public virtual void AddWindow ( Window window ) { Windows . Add ( window ); } Et windows est simplement une liste. Donc ca ne peut pas \u00eatre ca qui prend du temps. Et les windows que je cr\u00e9\u00e9 ont ca comme code : public DriverPositionWindow ( Bitmap image , Rectangle bounds ) : base ( image , bounds ) { Name = \"Position\" ; } Sachant que le constructeur de base d'une Window c'est : public Window ( Bitmap image , Rectangle bounds ) { Image = image ; Bounds = bounds ; Engine = new TesseractEngine ( TESS_DATA_FOLDER . FullName , \"eng\" , EngineMode . Default ); Engine . DefaultPageSegMode = PageSegMode . SingleLine ; } Sachant que TesseractEngine est en statique et que donc il ne devrait... OHLLALALALALALALALALA je suis un imb\u00e9cile... J'ai juste \u00e0 changer ce constructeur avec ca: if ( Engine == null ) { Engine = new TesseractEngine ( TESS_DATA_FOLDER . FullName , \"eng\" , EngineMode . Default ); Engine . DefaultPageSegMode = PageSegMode . SingleLine ; } ET le loading ne prend plus que 2-300 ms... Bon c'est une tr\u00e8s belle am\u00e9lioration pour pas tr\u00e8s ch\u00e8r mais bon c'est un peu b\u00eate... Bon je pense que 2-300ms c'est une dur\u00e9e correcte surtout que ca n'est appel\u00e9 qu'une fois pour le lancement. On peut passer \u00e0 la suite maintenant. Alors il y a un grand soucis avec la parallellisation de l'OCR... Tesseract n'est pas par d\u00e9faut une classe \"Thread safe\" ce qui veut dire que je ne peut utiliser de parallell.Foreach sur mes windows pour acc\u00e8l\u00e8rer le traitement drastiquement. Je pourrais par exemple avoir une instance de Tesseract par window sauf que cela fait 20 pilotes * 9 windows chacuns ce qui donne 180 instances ce qui n'est tout simplement pas raisonnable. Je vais donc essayer de voir avec l'utilisation de methodes asynchrones qui me permettraient de faire un genre de flux tendu de reconnaissance. J'avoue que la je navigue un peu \u00e0 vue, je me base sur diff\u00e9rentes infos que je trouve sur des sites un peu perdus et sur chatGPT, j'esp\u00e8re que j'arriverai \u00e0 trouver une solution car 10 secondes de reconnaissance c'est vraiment beaucoup trop. Alors le soucis avec un Engine unique entre toutes les windows c'est qu'il n'est pas possible de process plusieurs images \u00e0 la fois. Je vais donc retirer l'engine unique pour voir si en cr\u00e9er un par window me permet de passer en multithreading. La grande question sera : Est-ce que les ressources suppl\u00e9mentaires que vont prendre la cr\u00e9ation de tous ces engines va compenser enti\u00e8rement le temps gagn\u00e9 avec la paralellisation. Pour stocker les donn\u00e9es dans un premier temps je vais cr\u00e9er un objet DriverData. Ce qu'il y a de pratique avec ca, c'est que je pourrais ajouter du code de v\u00e9rification de certaines donn\u00e9es directement dedans avant de les donner \u00e0 la suite du programme. Et on peut m\u00eame imaginer une impl\u00e9mentation d'une liste de DriverData pour avoir l'historique. Ce qui serait cool ca serait de grouper toutes ces data avec un num\u00e9ro de tour. Placer ensuite la liste de Data dans une DB serait ainsi super simple. Mais il va falloir savoir quoi mettre, quelles infos sont redondantes et prendre en compte le fait que un tour affich\u00e9 sur la page de la F1TV n'est accompli que par certains des premiers pilotes. D'autres pilotes peuvent \u00eatre dans des tours pr\u00e9c\u00e9dents si ils ont du retard. Il faudra r\u00e9fl\u00e9chir \u00e0 cela quand je viendrai au mod\u00e8le. Bon pour y arriver j'ai du faire de gros changements et le r\u00e9sultat n'est peut-\u00eatre pas aussi cool que ce que j'aurais voulut... Voici un petit point sur les performances maintenant J'ai \u00e9galement d\u00e9sactiv\u00e9 le dump d'images. Pour le moment j'ai tout mis en commentaire mais cela pourrait \u00eatre int\u00e9ressant de faire en sorte de pouvoir l'activer en changeant une ou deux variables Au d\u00e9marrage : Loading - 113ms Splitting d'images - 14ms Ocr - 7s En passant d'une image \u00e0 l'autre : Loading - 113ms Splitting d'images - 13ms Ocr - 5s Alors clairement les stats montrent qu'il y a eu un changement mesurable mais bon je pensais pouvoir en gagner un peu plus... Je soupconne la cr\u00e9ation d'engines d'\u00eatre \u00e0 l'origine de ces performances presque d\u00e9cevantes. Autre soucis, il semble que plus je change d'image plus la detection est lente et plus je consomme de RAM. Il va falloir que je travaille encore un peu. J'ai tent\u00e9 de mettre un stopwatch sur une des cr\u00e9ations d'engine Tesseract et le r\u00e9sultat me parait fou... Plus d'une seconde c'est dingue. J'ai test\u00e9 dans d'autres endroits du code et effectivement il semble que la cr\u00e9ation d'un engine prenne entre une et deux secondes ce qui est une ETERNITEE what ! Donc il faut optimiser tout ca. Une id\u00e9e serait de d\u00e9composer le threading mais cela me demanderait un gros refactor et je n'ai pas envie d'en refaire un la... Sinon, une fois qu'ils sont cr\u00e9\u00e9s ils ne prennent pas de temps du tout. Cr\u00e9er une fois tous les engines et ensuite les utiliser pourrait \u00eatre une bonne id\u00e9e. Cela prendrait longtemps au load mais ensuite les reconnaissances devraient \u00eatre super rapides. Ok alors ca c'est d\u00e9ja plus ce \u00e0 quoi je m'attendais ! On est de nouveau \u00e0 plus de 10s de loading time mais on est descendu \u00e0 deux secondes par OCR. (Bon autre soucis, l'utilisation de la RAM est ridicule plus de 2gb mais ce qui m'inqui\u00e8te c'est que j'ai l'impression qu'elle augmente plus on change d'image) J'ai r\u00e8gl\u00e9 (en partie) le soucis en obligeant le GC (Garbage Collector) \u00e0 collecter apr\u00e8s chaque detection. m\u00eame apr\u00e8s 50 detections l'utilisation de la ram se stabilize autour des 2GB. Bon en paralellisant la cr\u00e9ation des Engines le soucis c'est que cela demande d'allouer beaucoup trop de m\u00e9moire d'un coup alors le programme se fige pendant genre cinq secondes avant de tout cr\u00e9er. Du coup m\u00eame si la cr\u00e9ation est plus rapide, on se retrouve avec un temps total plus long... Je pense que l'on va devoir se contenter de ces dix secondes. Bon la j'allais tenter de faire la documentation mais je viens de me rendre compte que la detection de temps au tour est pas vraiment encore id\u00e9ale... J'ai r\u00e9ussi \u00e0 changer un petit peu le programme de reconnaissance pour rendre la reconnaissance un peu meilleure mais cela a drastiquement augment\u00e9 le temps requis pour d\u00e9coder... On arrive \u00e0 3.5 secondes. Je vais tenter de rajouter un peu de parralell processing sur les boucles de traitement voir si cela peut aider. Alors effectivement cela aide pas mal, on arrive maintenant \u00e0 faire une detection presque tout le temps en dessous de la seconde. Et j'ai aussi du changer un peu le fonctionnement de la detection des Temps au tour. Et voila je pense que je vais m'arr\u00eater la pour la partie d\u00e9codage. Je ne pense pas que je peux facilement faire mieux que ca et il faut que j'avance dans d'autres parties du projet. Je vais pouvoir commencer \u00e0 documenter un peu toute la partie OCR. Il faut que je prenne le temps de le faire bien car c'est la partie la plus int\u00e9ressante du projet et ou je pense que j'aurai le plus essay\u00e9 de choses qui vallent le coup d\u00eatres racont\u00e9es. J'ai aussi pass\u00e9 pas mal de temps sur le poster du projet. J'avais fait des croquis au crayon de ce \u00e0 quoi je pensais, cependant apr\u00e8s de longues discussions avec M.Garcia ils n'\u00e9taient pas forc\u00e9ment tr\u00e8s bons car ils ne repr\u00e9sentent pas assez bien le fonctionnement du projet et sont un peu trop marketings. Du coup j'ai fait une premi\u00e8re version au propre : \"Poster V1\" Mais je n'\u00e9tais pas forc\u00e9ment content du r\u00e9sultat et il manquait des choses je trouve comme par exemple l'utilisation de Selenium. J'ai donc repass\u00e9 des heures \u00e0 faire une seconde version : \"Poster V2\" La police d'\u00e9criture n'est pas encore la bonne mais cela va venir. Mais je pr\u00e9f\u00e8re d\u00e9ja beaucoup cette version \u00e0 la premi\u00e8re. Je ne sais pas encore si la version finale sera une version plus travaill\u00e9e de ce poster ou compl\u00eatement autre chose mais pour l'instant je suis \u00e0 peu pr\u00e8s content de cette version. Je le trouve un tout petit peu trop brouillon ou avec trop d'infos mais il m'a \u00e9t\u00e9 de nombreuses fois reproch\u00e9 de ne pas assez montrer le fonctionnememt interne et je ne peux pas faire plus simple. L'ajout des nombres pour compartimenter le projet ajoute de la structure mais je me demande si cela suffit. Maintenant que je suis \u00e0 peu pr\u00e8s content de mon code pour l'OCR je vais commencer sa documentation. (Uniquement son fonctionnement interne pas comment s'en servir car cela va changer) Bon j'ai cr\u00e9\u00e9 u nouveau projet selenium mais m\u00eame avec les bonnes libraries je n'arrivais pas \u00e0 faire fonctionner firefox j'avais toujours une erreur \"OpenQA.Selenium.WebDriverException: 'Cannot start the driver service on http://localhost:51481/'\" et j'ai pu r\u00e8gler le probl\u00e8me en t\u00e9l\u00e9chargeant directement le gecko driver depuis le git https://github.com/mozilla/geckodriver/releases et utiliser le fichier directement dans le service : var service = FirefoxDriverService . CreateDefaultService ( AppDomain . CurrentDomain . BaseDirectory + @\"geckodriver-v0.27.0-win32\\geckodriver.exe\" ); FirefoxOptions options = new FirefoxOptions (); var driver = new FirefoxDriver ( service , options ); Le seul probl\u00e8me c'est que du coup il faut tout le temps d\u00e9placer le fichier dans le dossier bin si je clone le projet. Il faudra faire un installeur dans la version finale qui s'occupe de tout je pense. Je me suis dit que j'allais garder la doc pour le retour des vacances quand j'aurai un bureau un clavier et un setup complet un peu propres. Bon il va falloir que je parle de la r\u00e9cup\u00e9ration de cookie. J'ai d\u00e9ja pu travailler lors d'un poc sur la meilleure facon de prendres des screenshots de la F1TV : Avoir une page chrome ouverte avec le feed en plein \u00e9cran et un programme qui prend des captures d'\u00e9crans. Avoir une cam\u00e9ra qui prend en photo l'\u00e9cran au cas ou chrome et Firefox emp\u00eachent la prise de captures d'\u00e9crans. R\u00e9cup\u00e8rer directement le feed en faisant du reverse engeneering de la plateforme. Simuler un chrome en background qui prenne des screenshot sans qu'on aie \u00e0 le voir. Dans toutes ces options, je dirais que la pire \u00e9tait celle de la cam\u00e9ra qui filme l'\u00e9cran, mais \u00e0 l'\u00e9poque c'\u00e9tait encore envisageable comme solution de dernier recours. Le soucis de cette solution c'est l'horreur que serait la partie OCR avec une image de tr\u00e8s mauvaise qualit\u00e9. Une autre option qui m'aurait vraiment emb\u00eat\u00e9 aurait \u00e9t\u00e9 de devoir garder une page de Chrome ou Firefox ouverte quelque part sur un \u00e9cran pour que le programme puisse prendres des captures d'\u00e9crans. C'est de loin l'option la plus simple et la plus logique mais elle poss\u00e8de pour moi de tr\u00e8s gros points noirs : On ne peut pas certifier l'int\u00e9grit\u00e9 des donn\u00e9es car l'utilisateur a le contr\u00f4le total sur le feed. Il peut mettre pause, avancer, reculer, tout casser sans faire expr\u00e8s en ouvrant autre chose sur son ordi qui se mette pile devant. Bref c'est un peu bancale. Et surtout on bloque une partie non significative de l'\u00e9cran de l'utilisateur avec des infos redondantes. Et je peux vous dire que quand je commente la F1 j'ai besoin de beaucoup d'informations et que chaque centim\u00e8tre d'\u00e9cran est crucia\u00e9 ! Alors avoir un \u00e9cran complet bloqu\u00e9 est juste un point bloquant qui m'emp\u00eacherait d'utiliser l'app aussi bonne soit-elle dans ses pr\u00e9dictions. Mais bon si aucune autre methode ne fonctionne ce qui est bien c'est que celle la est plut\u00f4t simple \u00e0 mettre en place. Ensuite reverse engeneer le feed serait l'option la plus classe, cependant c'est la plus complexe et la plus bancale au niveau l\u00e9gal haha. L'id\u00e9e serait de r\u00e9cup\u00e8rer le lien vers le broadcast g\u00e9n\u00e9ral et de comprendre comment il fonctionne pour le d\u00e9coder nous m\u00eame pendant un Grand Prix. Seuls soucis : Il n'est pas possible de faire des tests en dehors des periodes de Grand Prix (Et je rappelle que c'est des p\u00e9riodes ou je travaille en plus) Difficile de faire un syst\u00e8me qui marche pareil pour les rediffusions et les lives. (En effet les liens des rediff sont beaucoup plus simple \u00e0 r\u00e9cup\u00e8rer mais ne fonctionnent pas du tout pareil et pour tester l'app il est essentiel de pouvoir s'entrainer sur des anciens Grand Prix) Dernier GROS soucis, je ne sais tout simplement pas faire ca lol. Je ne sais pas comment faire. Peut-\u00eatre que avec des profs qui m'aident et chat gpt ainsi qu'internet je pourrais potentiellement n\u00e9gocier un truc mais c'est hautement improbable et cela serait une perte de temps folle si je n'y arrive pas. Derni\u00e8re option que je trouve la plus s\u00e9duisante. Simuler une instance de Chrome ou de Firefox (Le soucis avec chrome c'est qu'il impl\u00e9mente l'utilisation de DRM dans les vid\u00e9os qui fait qu'il est tr\u00e8s difficile de passer outre la s\u00e9curit\u00e9 avec un bot) pour ensuite prendre des captures d'\u00e9crans automatiquement. Cette solutions offre pleins d'avantages : Pas de place prise sur l'\u00e9cran L'int\u00e9grit\u00e9 des donn\u00e9es est assur\u00e9e car c'est le programme qui d\u00e9cide d'ou partir et de si il met pause ou non C'est une option complexe mais beaucoup moins que le reverse engeneering Elle permet de ne demander presque aucun input de la part de l'utilisateur. Mais elle pose quelques probl\u00e9matiques : Comment se connecter automatiquement sans \u00eatre detect\u00e9 par un Bot et sans demander \u00e0 l'utilisateur ses identifiants (Pour des raisons \u00e9videntes qui sont : QUI VA METTRE SES IDENTIFIANTS SUR UNE VIEILLE APP COMME LA MIENNE??) Comment faire en sorte que le programme prenne les meilleures captures dans la meilleure qualit\u00e9 et en plein \u00e9cran. Mais j'ai d\u00e9cid\u00e9 de partir sur cette option. Pour ce faire j'utilise Selenium. J'ai pu tester Puppetteer Sharp et m\u00eame si dans un premier temps j'ai pu avancer asez vite, malheureusement il y a des bugs qui rendent son utilisation impossible dans notre contexte. J'ai donc d\u00e9cid\u00e9 de tout faire en utilisant un portage de Selenium dans mon programme. Voici un exemple de code qui va ouvrir FireFox et qui va lancer un RickRoll var service = FirefoxDriverService . CreateDefaultService ( AppDomain . CurrentDomain . BaseDirectory + @\"geckodriver-v0.27.0-win32\\geckodriver.exe\" ); service . Host = \"127.0.0.1\" ; service . Port = 5555 ; FirefoxOptions options = new FirefoxOptions (); options . AddArgument ( \"--disable-headless\" ); var driver = new FirefoxDriver ( service , options ); driver . Navigate (). GoToUrl ( \"https://www.youtube.com/watch?v=dQw4w9WgXcQ&autoplay=1&mute=1\" ); Dans cet exemple on d\u00e9sactive le \"Headless\" pour qu'on puisse voir ce que fait l'app car sinon tout est invisible. Alors dans les faits la vid\u00e9o youtube ne se lance pas du tout car il y a des pubs et des prompts de cookies que l'on doit accepter etc... ce qui montre les diff\u00e9rents challenges que l'on va devoir surmonter pour vraiment faire ce que l'on veut. Mais un petit d\u00e9tail extr\u00eamement important, la F1TV est un programme payant un peu comme netflix. Ce qui veut dire que pour acc\u00e8der au contenu il faut \u00eatre connect\u00e9. Sauf que une instance de firefox cr\u00e9\u00e9 par Selenium est comme une page de naviguation priv\u00e9e, ce qui veut dire que si on va sur la page de la F1TV on est pas connect\u00e9s. Je pourrais tout \u00e0 fait demander \u00e0 l'utilisateur de me donner ses identifiants pour que j'aille ensuite automatiquement me connecter sauf que cela pose deux soucis: Personne ne voudra mettre ses identifiants sur mon programme La page de login de la F1TV a \u00e9t\u00e9 prot\u00e8g\u00e9e avec la meilleure technologie de detection de bots que je connaisse. Presque aucun site n'arrive \u00e0 me detecter sauf eux ! Donc c'est tout simplement impossible d'utiliser cette technique. Ensuite je me suis rappel\u00e9 que ce que la page stocke pour me permettre de rester connect\u00e9 ce sont des cookies. Et si je mets le bon cookies dans Selenium alors je serai connect\u00e9. Dans un premier temps je voulais faire un syst\u00e8me ou l'utilisateur irait prendre dans son chrome son cookie et le copie colle dans mon programme mais c'est immonde. C'est alors que vient la partie r\u00e9cup\u00e8ration de cookies ! Tous les cookies de chrome sont stock\u00e9s dans une base de donn\u00e9es SQLITE. On pourrait se dire Banco il suffit d'aller dedans et de retrouver tous les cookies et se connecter. Sauf que, pas b\u00eates, les \u00e9quipes de chrome ont d\u00e9cid\u00e9 que c'\u00e9tait une bonne id\u00e9e d'encoder les cookies pour que tout le monde ne puisse pas venir y mettre son nez... En effet les cookies peuvent contenir des informations importantes. Cela fait que pour utiliser ces cookies il faut pouvoir les d\u00e9coder. Mon hypoth\u00e8se a \u00e9t\u00e9 que si ces cookies peuvent \u00eatre lus par Chrome m\u00eame hors connexion, c'est que la cl\u00e9 de d\u00e9codage existe sur l'appareil et qu'il suffit de la trouver. ET C'EST LE CAS! Apr\u00e8s pas mal de recherches j'ai pu voir que la cl\u00e9 de d\u00e9codage existe bel et bien et qu'il suffit de la d\u00e9coder en utilisant la librairie DPAPI pour la lire. Avec cette cl\u00e9 on peut ensuite d\u00e9coder les cookies et leurs valeurs ce qui veut dire qu'il est th\u00e9oriquement possible d'automatiser le processus sans que l'utilisateur n'aie rien \u00e0 faire. J'ai d\u00e9cid\u00e9 de faire la partie r\u00e9cup\u00e8ration en python pour deux raison : Je n'arrivais pas \u00e0 trouver une bonne impl\u00e9mentation de DPAPI en C# qui me permettait de d\u00e9coder la cl\u00e9. Il existe beaucoup plus de documentation en Python pour ce qui est de la cryptographie et donc si Chrome change de fonctionnement il sera beaucoup plus simple de changer cette partie en particulier sans avoir \u00e0 recompiler le code C#. J'ai donc avec l'aide d'internet et de ChatGPT cr\u00e9\u00e9 ce script : def get_master_key (): with open ( os . getenv ( \"localappdata\" ) + \" \\\\ Google \\\\ Chrome \\\\ User Data \\\\ Local State\" , \"r\" ) as f : local_state = f . read () local_state = json . loads ( local_state ) master_key = base64 . b64decode ( local_state [ \"os_crypt\" ][ \"encrypted_key\" ]) master_key = master_key [ 5 :] # removing DPAPI master_key = win32crypt . CryptUnprotectData ( master_key , None , None , None , 0 )[ 1 ] print ( \"MASTER KEY :\" ) print ( master_key ) print ( len ( master_key )) return master_key def decrypt_payload ( cipher , payload ): return cipher . decrypt ( payload ) def generate_cipher ( aes_key , iv ): return AES . new ( aes_key , AES . MODE_GCM , iv ) def decrypt_password ( buff , master_key ): try : iv = buff [ 3 : 15 ] payload = buff [ 15 :] cipher = generate_cipher ( master_key , iv ) decrypted_pass = decrypt_payload ( cipher , payload ) decrypted_pass = decrypted_pass [: - 16 ] . decode () # remove suffix bytes return decrypted_pass except Exception : # print(\"Probably saved password from Chrome version older than v80\\n\") # print(str(e)) return \"Chrome < 80\" master_key = get_master_key () cookies_path = Path ( os . getenv ( \"localappdata\" ) + \" \\\\ Google \\\\ Chrome \\\\ User Data \\\\ Default \\\\ Network \\\\ Cookies\" ) if not cookies_path . exists (): raise ValueError ( \"Cookies file not found\" ) with sqlite3 . connect ( cookies_path ) as connection : connection . row_factory = sqlite3 . Row cursor = connection . cursor () cursor . execute ( \"SELECT * FROM cookies\" ) with open ( 'cookies.csv' , 'a' , newline = '' ) as csvfile : fieldnames = [ 'host_key' , 'name' , 'value' , 'path' , 'expires_utc' , 'is_secure' , 'is_httponly' ] writer = csv . DictWriter ( csvfile , fieldnames = fieldnames ) if csvfile . tell () == 0 : writer . writeheader () for row in cursor . fetchall (): decrypted_value = decrypt_password ( row [ \"encrypted_value\" ], master_key ) writer . writerow ({ 'host_key' : row [ \"host_key\" ], 'name' : row [ \"name\" ], 'value' : decrypted_value , 'path' : row [ \"path\" ], 'expires_utc' : row [ \"expires_utc\" ], 'is_secure' : row [ \"is_secure\" ], 'is_httponly' : row [ \"is_httponly\" ] }) print ( \"Finished CSV\" ) Ce programme va faire tout ce que j'ai expliqu\u00e9 et va ensuite stocker les r\u00e9sultats dans un CSV pour qu'il soit facile d'y acc\u00e8der depuis le C#. Alors oui cela pose certaines questions de s\u00e9curit\u00e9. Car en effet je prend tous les cookies, les d\u00e9code et les stocke. Ce qui veut dire que je pourrais tout \u00e0 fait envoyer ces donn\u00e9es quelque part, par exemple un compte Netflix, et me rincer. Si je devais rendre le projet ouvert au public je pense qu'il faudra que cela soit mentionn\u00e9 clairement et que le projet soit open source pour que les utilisateurs puissent verifier que je ne fais pas ca. Maintenant de l'autre c\u00f4t\u00e9 j'ai juste \u00e0 lire le CSV et le tour est jou\u00e9 ! (Trouver cette solution m'a pris une semaine de vacances \u00e0 l'\u00e9poque) Bon j'ai r\u00e9ussi \u00e0 faire le programme se connecter et naviguer etc.. Par contre quelque chose que j'ai voulu ajouter et qui m'a pris pas mal de temps c'est de faire en sorte de pouvoir selectionner la qualit\u00e9. Pour changer la qualit\u00e9 du feed il faut cliquer sur settings et ensuite prendre le menu deroulant et selectioner 1080p. Le soucis c'est le que la value du select est jamais la m\u00eame. Elle commence toujours pas \"1080_\" mais ensuite ca peut \u00eatre \"1080_45930285\" ou \"1080_56801\" la suite est apparemment random. J'ai donc du utiliser ce code pour le selectioner quand m\u00eame : IWebElement settingsButton = driver . FindElement ( By . ClassName ( \"bmpui-ui-settingstogglebutton\" )); settingsButton . Click (); IWebElement selectElement = driver . FindElement ( By . ClassName ( \"bmpui-ui-videoqualityselectbox\" )); SelectElement select = new SelectElement ( selectElement ); IWebElement selectOption = selectElement . FindElement ( By . CssSelector ( \"option[value^='1080_']\" )); selectOption . Click (); Sauf que pour que cela marche je dois avant cliquer sur le bouton des settings le probl\u00e8me c'est qu'il est invisible alors on doit le faire apparaitre. J'ai tent\u00e9 de le faire aparaitre en bougeant la souris, en cliquant \u00e0 un endroit pr\u00e9cis, impossible de le faire marcher correctement. Puis j'ai eu l'id\u00e9e de mettre pause en envoyant un appui sur la touche Espace et ca a permit de d\u00e9couvrir le bouton et permettre qu'on clique dessus. Ca peut paraitre tout b\u00eate mais rien que ca, ca m'a pris un temps consid\u00e9rable. Bon pour ce qui est du timecode de la vid\u00e9o. Je pense qu'il serait trop complexe de faire en sorte que selenium change le slider de progression de la vid\u00e9o. Alors j'ai fait quelques tests et apparemment, si on quitte la F1TV sur un timecode de la vid\u00e9o que on donne au programme, comme il r\u00e9cup\u00e8re tous les cookies de la F1TV il commencera de la. Donc si on veut utiliser le programme avec des Grand Prix ayant d\u00e9ja eu lieu, on peut le faire, seulement il faudra juste au pr\u00e9alable avoir choisit le bon timecode dans le page de la F1TV avant de le lancer. Ce qui est int\u00e9ressant c'est que la page de la F1TV ressemble \u00e0 ca au d\u00e9part : \"Empty F1TV\" Je pense qu'une bonne id\u00e9e serait de dire au programme que c'est la grille de d\u00e9part et ensuite d\u00e8s qu'il d\u00e9tecte un secteur il sait que la course a commenc\u00e9.","title":"Vacances"},{"location":"jdb.html#lundi-24-avril-2023","text":"Aujourd'hui c'est jour de documentation. J'ai pas mal travaill\u00e9 pendant les vacances mais je n'ai pas encore pu faire de vraie documentation correcte du fonctionnement. Du coup je vais m'en charger aujourd'hui et peut-\u00eatre un peu demain. Ok normalement je ne devrais faire que de la documentation mais je ne peux pas passer \u00e0 cot\u00e9 de ca... Le probl\u00e8me que j'ai avec les pneus ou parfois il d\u00e9tecte un H au lieu d'un '11' et ce genre de choses c'est \u00e0 cause de ma methode \"RemoveBG\" Qui va retirer tous les pixels plus sombres que le background. Sauf que cela va aussi retirer des pixels dans le chiffre lui m\u00eame et qui va donc defigurer les 11 : \"diformed 11\" \"diformed 11\" J'ai r\u00e9ussi \u00e0 les changer en : \"less diformed\" \"less diformed\" Mais au final cela n'a pas augment\u00e9 la pr\u00e9cision de la reconnaissance. Je pense que je vais donc devoir encore changer. Je pense que une bonne facon de trouver serait dabord de trouver la couleur du pneu. Et si il n'y a pas assez de couleur alors c'est que le pneu contient une lettre. Le but est d'arr\u00eater de chercher des lettres ou des chiffres. Comme ca les 11 arr\u00eateront d'\u00eatre pris pour des 'H' En fait on peut faire encore plus simple que ca. On peut simplement regarder la couleur dominante et determiner le pneu. En effet m\u00eame si il y a une lettre sur fond noir pour d\u00e9crire le pneu, mon methode de r\u00e9cup\u00e8ration de la couleur dominante ommet les pixels trop noirs alors il est quand m\u00eame possible de determiner le type de pneus. Et tout simplement si il n'arrive pas \u00e0 lire le chiffre c'est que c'est une lettre et que donc on est \u00e0 0 tours. Cela marche plut\u00f4t bien et cela simplifie pas mal le processing. Voila, la je vais me remettre \u00e0 la documentation sinon je vais encore prendre du retard.","title":"Lundi 24 Avril 2023"},{"location":"jdb.html#mardi-25-avril-2023","text":"Encore une fois j'ai pris du temps de doc pour changer des choses sur la partie OCR. Mais en m\u00eame temps en documentant je vois des choses que j'ai soit mal fait soit que je pourrais faire mieux en changeant tr\u00e8s peu de choses. J'\u00e9sp\u00e8re que les changement que j'ai fait vont aider au moins \u00e0 la coh\u00e9rence du code et un peu pour les performances. Il semble que dans les conditions que j'ai test\u00e9 le nombre de tour soit plut\u00f4t fiable mais je pense que je devrai faire un peu de travail en aval dans la r\u00e9cup\u00e9ration de ces donn\u00e9es car je sens que cela va poser probl\u00e8me quelques fois. Je pense que en utilisant bien l'historique on peut potentiellement se passer de l'utilisation de ce chiffre pas toujours compl\u00eatement fiable. Mais sinon aujourd'hui c'est encore une fois un gros jour de doc. J'essaie d'expliquer les diff\u00e9rents proc\u00e9d\u00e9s avant de les oublier. J'essaie aussi de donner un maximum d'exemples sous formes de photos interm\u00e9diaires mais ca me prend pas mal de temps car il faut que j'ajoute un peu partout dans le code des lignes pour sortir des images interm\u00e9diaires. En plus de la documentation je me suis aussi beaucoup occup\u00e9 de nettoyer mon code et je suis assez content par ce que m\u00eame en ayant du rajouter des couches de complexit\u00e9 pour mieux reconnaitres les temps au tour j'arrive \u00e0 un temps de processing parfois en dessous des 2 secondes ce que je trouve honorable. Quand j'aurai finit de nettoyer tous mes fichiers je ferai une release sur gitea et ce sera la version que j'utiliserai quand je voudrai faire un merge avec les autres parties du projet. J'ai beaucoup beaucoup boss\u00e9 aujourd'hui et je sui bien mort. Faire autant de documentation et de nettoyage de code c'est pas forc\u00e9ment bon pour le cerveau je crois. J'ai besoin d'une sieste. Demain je pense que je vais commencer \u00e0 avancer sur la partie r\u00e9cup\u00e8ration des images. Je sais que la je fais un peu passer les tests \u00e0 la trappe mais d\u00e9ja j'en ai fait tout le long du d\u00e9veloppement de OCR_DECODE et il faut vraiment que j'avance, quitte \u00e0 revenir dessus quand j'aurai merge les deux projets ensemble.","title":"Mardi 25 Avril 2023"},{"location":"jdb.html#26-avril-2023","text":"Aujourd'hui je vais devoir m'occuper de la partie r\u00e9cup\u00e9ration des images. J'ai d\u00e9ja eu l'occasion d'avancer sur ce projet pendant mopn poc et mes vacances. Donc la le but ca va \u00eatre de voir ce qui manque comme v\u00e9ritables features et ensuite je vais pouvoir m'occuper de la vue et de son int\u00e9gration avec le d\u00e9codage. Ok donc maintenant que j'au un programme qui arrive \u00e0 prendre des images depuis la F1TV correctement et en bonne r\u00e9solution. Je pense qu'il est temps de passer \u00e0 l'impl\u00e9mentation de la Forme que ca va prendre. C'est important de se poser au moins cinq minutes la question de comment je pr\u00e9vois de faire car m\u00eame si ca n'est pas la version finale, cette derni\u00e8re prendra tr\u00e8s fort inspiration du desing que je vais faire. Dans cette form j'aurais besoin de : Pouvoir selectionner un Grand Prix en ins\u00e8rant l'URL du feed. Pouvoir lancer la calibration si besoin Indiquer le titre et la date du Grand Prix Indiquer si le Grand Prix vient de commencer ou si il y a d\u00e9ja un certain nombre de tours lanc\u00e9s. Et c'est \u00e0 peu pr\u00e8s tout en fait... J'ai tellement pouss\u00e9 pour avoir un programme qui fait tout tout seul que il ne me faut pas grand chose de plus. Je pense que ce qui serait pas mal ca serait du coup d'utiliser ce temps pour bien impl\u00e9menter la calibration qui elle aura besoin d'une UI un peu plus bal\u00e8ze. On pourrait m\u00eame imaginer que la calibration fasse partie int\u00e9grante des settings... Ca serait peut-\u00eatre bien que quand l'application se lance on se retrouve sur la page principale d'affichage de donn\u00e9es et qu'on puisse simplement cliquer sur la page options qui contient la page calibration et qui permet de rentrer les infos du Grand Prix. Je pense que je vais faire ca. Voici l'interface que j'ai d\u00e9velopp\u00e9e pour regrouper tout ca : \"Screen\" La police le style le placement et les couleurs ne sont pas d\u00e9finitfs, cependant je pense que c'est un bon d\u00e9but. Le but maintenant va \u00eatre de permettre de faire fonctionner la calibration et la r\u00e9cup\u00e8ration d'images. Si j'arrive \u00e0 faire fonctionner ces deux choses sur un m\u00eame projet avant la fin de la semaine cela serait super ! Bon J'ai pu avancer sur l'int\u00e8gration de Selenium mais cela prend un peu de temps car je veux impl\u00e9metner un moyen de pouvoir prendre une Screenshot \u00e0 nimporte quel moment et pas juste en boucle. Demain je finis de faire fonctionner ca et ensuite je commence le cablage du reste.","title":"26 Avril 2023"},{"location":"jdb.html#jeudi-27-avril-2023","text":"C'est assez dur de faire l'importation car il y a des petites diff\u00e9rences qui obligent \u00e0 presque tout r\u00e9\u00e9crire. En fait le programme de calibration avait d\u00e9ja impl\u00e9ment\u00e9 la fonction de Windows et de Zones mais il fonctionnait juste assez diff\u00e9remment pour qu'il faille tout refaire. La je suis en train de perdre \u00e9norm\u00e9ment de temps \u00e0 cause d'un soucis de coordonn\u00e9es. J'ai repris le code de la calibration pour detecter ou l'utilisateur a cliqu\u00e9 pour cr\u00e9er les zones. Cependant, je n'arrive pas \u00e0 le faire fonctionner correctement. La zone est tout le temps d\u00e9cal\u00e9e en haut et en bas mais pas de la m\u00eame facon. En haut, la valeur Y est trop grande alors que en bas la valeur Y est trop petite... Je ne comprends pas bien pourquoi. Si c'\u00e9tait un simple d\u00e9calage cela ne serait pas compliqu\u00e9 \u00e0 g\u00e8rer mais la... J'ai un soucis \u00e9galement avec la r\u00e9solution des screenshots que je r\u00e9cup\u00e8re en full Headless. Voici un exemple de r\u00e9solution que j'arrive \u00e0 r\u00e9cup\u00e8rer sans le headless : \"High Res\" \"Low Res\" Il y a clairement un soucis et le probl\u00e8me c'est que avec une r\u00e9solution pareille, impossible de faire une reconnaissance correcte. BON J?EN PEUX PLUS LA. Ca fait des heures que je bosse sur ce probl\u00e8me d\u00e9bile et impossible de trouver une solution. J'ai essay\u00e9 cinq facons de forcer le browser headless a prendre une plus haute r\u00e9solution aucune ne fonctionne je ne comprends pas. A chaque fois que je me retrouve avec une r\u00e9solution de 1366 x 768 Ou une variante de basse r\u00e9solution du style. J'en peux plus je ne trouve aucune r\u00e9ponse sur internet ni m\u00eame avec chatGPT. Super... La seule chose que j'ai pu faire qui change quelque chose fait que les images font maintenant du 926x517... j'ai un peu envie de commentre un crime de guerre au plus vite.","title":"Jeudi 27 Avril 2023"},{"location":"jdb.html#vendredi-28-avril-2023","text":"Une des solutions que je n'ai pas encore essay\u00e9 est de changer ma version de GeckoDriver. Sauf que ca m'oblige \u00e0 changer les versions de mes libraries ce qui est tr\u00e8s p\u00e9nible, je vais continuer le debugging dans le projet Selenium_clean. Il faut savoir que la librairie de Selenium que j'utilise est bloqu\u00e9e en 0.27 ce qui fait que je ne peux utiliser qu'une version obsol\u00e8te du Gecko Driver. J'ai tent\u00e9 de changer vers une version en 64 bits du GeckoDriver 0.27 mais pareil, je me retrouve toujours avec des images de M. J'essaie toutes les solutions que je trouve sur internet aucune ne convient c'est infernal. J'essaie de changer la r\u00e9solution DPI, j'essaie de changer les param\u00eatres par d\u00e9faut des player de Firefox, j'essaie de changer la r\u00e9solution pendant et au d\u00e9but de l'execution IMPOSSIBLE DE FAIRE MARCHER CETTE MERDE C'EST PAS POSSIBLE !!! J'ai essay\u00e9 avec chrome mais je ne peux pas l'utiliser car les DRM m'emp\u00eacheront de prendre des screenshot du flux vid\u00e9o. J'ai essay\u00e9 de faire tourner avec edge mais edge ne peut pas tourner en headless. JE VAIS DEVENIR FOUF FPWQOVMQEKOVNVIBDBJDAIVOBI. ET MAINTENANT JE N'ARRIVE PLUS A FAIRE DE PROJET AVEC SELENIUM VOIWQNV(UEWQBVU)WEQN=OEJNIVIUWVBWUEV ON CHERCHE A ME FAIRE PETER UN PLOMB C'EST PAS POSSIBLE GIWEGUWEQN VOICI UN EXEMPLE DU CODE QUE JE DEMANDE A UN NOUVEAU PROJET AVEC EXACTEMENT LES MEMES LIBRARIES INSTALLEES : // Create a new FirefoxDriver instance IWebDriver driver = new FirefoxDriver (); // Navigate to the specified URL driver . Navigate (). GoToUrl ( \"https://www.example.com\" ); // Do something with the driver (e.g., find elements or take screenshots) // Quit the driver driver . Quit (); Je ne demande que ca ET MEME CA CA NE VEUT PAS FONCTIONNER VOIWENB)IWUQENV Oui je suis un peu \u00e9nerv\u00e9 ca se voit? A bon? Et maintenant NUGGET ne fonctionne plus... j'en peux plus la. Je ne peux plus t\u00e9l\u00e9charger de librairie sur aucun de mes projets... J'ai tent\u00e9 de supprimer le fichier de config et red\u00e9marrer Visual Studio mais cela ne fait rien. J'ai aussi tent\u00e9 de faire un 'nugget restore' toujours rien. Bon apparemment je ne suis pas le seul qui ne peut pas acc\u00e8der \u00e0 Nuget donc bon c'est pas juste chez moi qu'il y a un soucis. Mais m\u00eame en mettant ma 4G pour me connecter, je n'arrive pas \u00e0 acc\u00e8der \u00e0 certains sites y compris Nuget et je ne peux pas download de librairies... Je ne comprends pas ce qui se passe et du coup je ne peux juste pas bosser... J'ai red\u00e9marr\u00e9 trois fois mon pc et visual studio, j'ai essay\u00e9 de changer mes settings DNS etc... impossible de bosser. Je crois que je n'aurais pas du me reveiller aujourd'hui. Bon je vais tenter d'avancer sur mon poster en attendant que le r\u00e9seau soit en meilleur \u00e9tat.","title":"Vendredi 28 Avril 2023"},{"location":"jdb.html#lundi-1-mai-2023","text":"Bon je bosse depuis chez moi donc j'esp\u00e8re que Nuget va mieux fonctionner. Apr\u00e8s un weekend \u00e0 r\u00e9fl\u00e9chir au sujet de cette resolution je me suis dit deux choses. La seule personne sur internet que j'ai vu avoir le meme soucis avait une r\u00e9solution de 1920x1200 comme moi. Cela veut donc s\u00fbrement dire que le soucis vient de cette r\u00e9solution de laptop comme moi. Si vraiment je n'arrive pas dans un premier temps \u00e0 faire fonctionner le Headless correctement, je peux toujours laisser la page de c\u00f4t\u00e9 et m'occuper du reste du programme. Certes ca serait vraiment infernal d'avoir \u00e0 garder une page chrome ouvert en tous temps et en plus elle doit \u00eatre en plein \u00e9cran mais bon... Si il n'y a vraiment pas d'autres solutions malheureusement je serai bien oblig\u00e9. BON ! JE N'ARRIVE MEME PLUS A FAIRE UN PROJET QUI UTILISE SELENIUM ET QUI MARCHE JE VAIS FAIRE BR\u00dbLER GENEVE. C'est pas possible serieux, je ne comprends pas j'essaie tout ce que je trouve et impossible de juste lancer firefox c'est du grand nimporte quoi. Je prend les m\u00eame putain de librairies que sur les autres projets les m\u00eames versions, je prend le m\u00eame exact code. Sur le nouveau projet impossible de le faire fonctionner. Je commence \u00e0 croire que on essaie de me faire p\u00eater un cable. Du coup dans un \u00e9lan de d\u00e9sespoir je vais tenter de passer sur une autre librairie qui avec un peu de chance marche et en plus me permettrais de prendre des foutues screenshot dans le bon format. Les deux seules librairies qui pourraient potentiellement faire l'affaire sont les librairies : PhantomJS CefSharp Je vais les tester et simplement prier pour qu'elles fonctionnent et que je puisse faire ce que je veux avec. Alors pour le moment avec CEFSharp j'arrive \u00e0 lancer une instance de chrome et prendre une screenshot avec ce code : CefSettings settings = new CefSettings (); settings . CachePath = Path . Combine ( Environment . GetFolderPath ( Environment . SpecialFolder . LocalApplicationData ), \"CefSharp\\\\Cache\" ); // Set cache path settings . LogSeverity = LogSeverity . Disable ; // Disable logging Cef . Initialize ( settings ); // Initialize CEF using ( var browser = new ChromiumWebBrowser ( \"www.google.com\" , new BrowserSettings ())) // Launch Chromium in off-screen mode { browser . Load ( \"https://www.example.com\" ); // Navigate to the test URL browser . Size = new Size ( 1920 , 1080 ); // Set the browser size to 1920x1080 browser . ScreenshotAsync (). ContinueWith ( task => { var bitmap = task . Result ; bitmap . Save ( \"screenshot.png\" , System . Drawing . Imaging . ImageFormat . Png ); // Take a screenshot and save it as a PNG file }). Wait (); } Cef . Shutdown (); // Shutdown CEF Avec ca il faut ces using : using System ; using System.Drawing ; using System.IO ; using CefSharp ; using CefSharp.OffScreen ; C'est assez prometteur m\u00eame si il faut encore beaucoup pour remplacer selenium. Ah bah lol en fait non on peut pas utiliser cette librarie pour faire tourner firefox... J'EN AI MARRE J'AVAIS CHERCHE PRECISEMENT UNE LIB QUI MARCHE AVEC FIREFOX Et phantomJS non plus ne fonctionne pas avec firefox... J'en ai marre. Donc je vais plut\u00f4t partir sur la librairie GeckoFX qui semble pouvoir contr\u00f4ler une instance de firefox. Mais j'avais justement pris un putain de projet C# et pas JS pour ne pas me taper ces probl\u00e8mes de librairies... Et si cette option ne fonctionne pas mon dernier espoir sera de directement int\u00e9ragir avec le geckodriver.exe et la ca risque de pas \u00eatre dr\u00f4le. JE NE COMPRENDS RIEN !!!!! Ca n'a aucun sens la doc est inexistante le seul lien qui pourrait amener sur une doc envoie sur la page principale de bitbucket. Tous les exemples de code que je trouve ne fonctionnent pas. Je n'arrive \u00e0 rien je commence \u00e0 devenir fou. Tout ce travail pour rien c'est pas possible. M\u00eame en essayant directement d'int\u00e9ragir avec le process geckodriver.exe je ne peux pas arriver \u00e0 mes fins. J'arrive \u00e0 lancer le service et tout, mais je n'arrive pas \u00e0 vraiment contr\u00f4ler ce qu'il se passe donc impossible de venir prendre des screenshot. Je ne sais tout simplement pas quoi faire ... Je suis bloqu\u00e9. Je me suis cass\u00e9 la t\u00eate \u00e0 faire un truc qui marchait bien avec selenium et tout. Mais maintenant plus rien ne fonctionne du jour au lendemain et il n'y a simplement aucune alternative. Je vais essayer de changer directement le projet Selenium_Clean mais bon ca va pas \u00eatre dr\u00f4le. Ok alors j'ai tout repris depuis le d\u00e9but et je crois que j'ai enfin une solution. Pour la trouver j'ai re-essay\u00e9 toutes les techniques que j'avais tent\u00e9 avant mais dans l'ordre et en les isolant \u00e0 chaque fois. Cela inclus : Tenter de changer la densit\u00e9 de pixels. En effet je me suis dit que comme la r\u00e9solution \u00e9tait plus basse le soucis \u00e9tait que le virtual screen avait simplement une DPI r\u00e9duite. profile.SetPreference(\"layout.css.devPixelsPerPx\", \"2.0\"); J'ai aussi tent\u00e9 de r\u00e9duire \u00e0 un seule le nombre de process de Firefox. J'ai pu lire sur internet que parfois cela pouvait influer sur les performances du renderer. profile.SetPreference(\"dom.ipc.processCount\", 1); Ensuite j'ai tent\u00e9 tout b\u00eatement de rajouter dans la liste des arguments la taille voulue de l'\u00e9cran. options.AddArgument(\"--window-size=1920,1080\"); Mais comme cela ne foncionnait pas, je me suis rabattu sur un script JS pour tenter de forcer la fen\u00eatre \u00e0 \u00eatre plus grande. js.ExecuteScript(\"window.resizeTo(1920, 1080);\"); Comme cela n'a pas march\u00e9 j'ai pu lire que cela pouvait \u00eatre la taille int\u00e9rieure qui devait \u00eatre chang\u00e9e js.ExecuteScript(\"window.innerWidth = 1920; window.innerHeight = 1080;\"); Encore une fois sans succ\u00e8s. J'ai ensuite tent\u00e9 d'utiliser trois autres versions du GeckoDriver, 0.27,0.26,0.25 et aucune ne m'aidait. Mais en fait la seule chose qui a chang\u00e9 quoi que ce soit \u00e9tait la technique suivante : Changer la window size en utilisant : options . AddArgument ( \"--width=1920\" ); options . AddArgument ( \"--height=1200\" ); Ca ne marchait pas car j'utilisais une autre methode pour resize en m\u00eame temps, qui elle ne marchait pas mais qui emp\u00eachait celle la de marcher. Ensuite le soucis que j'avais c'est que en mettant 1920-1080 je me retrouvais avec 1920-998 ou un truc du genre ce qui n'\u00e9tait pas normal alors je me disais que cette technique ne marchait pas non plus et je l'ai pass\u00e9e. Alors tout n'est pas encore gagn\u00e9, il faut que j'arrive \u00e0 impl\u00e9menter ca dans un plus gros projet et que la vid\u00e9o puisse \u00eatre prise seule. Demain je m'occupe de ca.","title":"Lundi 1 Mai 2023"},{"location":"jdb.html#mardi-2-mai-2023","text":"Bon aujourd'hui je change le programme principal. Le soucis que j'ai c'est que en ajoutant ce syst\u00e8me de resize, maintenant la page fait 100x100 et est grise. Il doit y avoir une technique que j'ai oubli\u00e9 de retirer ou un comportement un peu bizarrre. Bon clairement je ne sais pas QUI DECIDE DE ME POURRIR LA VIE mais il est fort. J'ai t\u00e9l\u00e9charger EXACTEMENT les m\u00eames librairies que sur mon autre projet et j'utilise l'EXACT m\u00eame geckodriver.exe mais dans le projet principal impossible de lui faire chier une image m\u00eame avec l'EXACT m\u00eame code. POURQUOI VOUS ME FAITES CA????= La je ne comprend vraiment pas ce qui peut se passer pour que rien ne fonctionne alors que tout est pareil. JE VIENS DE TOUT VERIFIER TOUT EST PAREIL JE NE COMPRENDS PAS. Bon apr\u00e8s avoir supprim\u00e9 l'int\u00e9gralit\u00e9 de ma classe Emulator cela semble marcher un peu mieux. Je ne vais pas m'\u00e9tendre sur la castrophe niveau temps que cela repr\u00e9sente. Si au moins j'arrive \u00e0 faire fonctionner quelque chose je suis content. Maintenant j'ai un soucis un peu sp\u00e9cial. Depuis que j'ai chang\u00e9 la r\u00e9solution, il semble que le programme aie du mal \u00e0 cliquer sur l'icone de settings. En prenant des screenshots du moment ou l'erreur apparait, j'ai pu me rendre compte que en fait le stream est toujours en train de charger et c'est pour ca que on arrive pas \u00e0 trouver le bouton : \"ERROR 105\" \"ERROR 105\" Je pense que je n'ai le soucis que maintenant car le flux en 1080p se lance moins vite. Je vais essayer de voir si je peux detecter un \u00e9l\u00e9ment d'HTML qui correspond au loading comme ca je peux attendre qu'il disparaisse. Sinon je peux aussi juste essayer de trouver le bouton en boucle pendant une dixaine de secondes. Bon la j'essaie pendant genre plus de 50 secondes et ca ne marche toujours pas. Il semblerait que au final le probl\u00e8me vienne du GP d'azerbidjan. En effet, quand je teste un autre Grand Prix tout va bien. ET MERDE ! J'ai r\u00e9ussi \u00e0 avoir des images en 1080P mais d\u00e9s que je passe l'image en plein \u00e9cran c'est de nouveau du 1366X768 Avant de mettre en plein \u00e9cran: \"Before fullscreen\" Apr\u00e8s: \"After fullscreen\" On peut voir sur l'image que l'option 1080P est effectivement bien selectionn\u00e9e mais il doit y avoir un param\u00e8tre de Firefox qui s'occupe de la r\u00e9solution d'un player vid\u00e9o. Il va juste falloir trouver ce param\u00eatre... J'ai essay\u00e9 d'utiliser : Driver.Manage().Window.Size = new System.Drawing.Size(windowWidth, windowHeight); Sans succ\u00e8s. options.AddArgument(\"--start-maximized\"); Pareil Driver.Manage().Window.Maximize(); Toujours rien profile.SetPreference(\"full-screen-api.ignore-widgets\", true); Nada profile.SetPreference(\"media.hardware-video-decoding.enabled\", true); Toujours pas J'ai vraiment cru que j'avais trouv\u00e9 la solution en trouvant cette commande profile.SetPreference(\"full-screen-api.enabled\", true); Mais non toujours pas... Je commence \u00e0 perdre patience. C'EST BON. Apr\u00e8s litt\u00e9rallement 3h de debugging avec M.Bonvin (Que je remercie IMMENSEMENT) on a r\u00e9ussi \u00e0 trouver au fin fond d'un thread github que la valeur \u00e9tait hard cod\u00e9e dans les variables d'environnement et que donc quoi que je fasse je n'aurais pas pu le changer. En fait la seul moyen de tout r\u00e8gler a \u00e9t\u00e9 de changer les variables d'environnement de ma machine: MOZ_HEADLESS_WIDTH et MOZ_HEADLESS_HEIGHT . Et ce qu'il y a de bien c'est que maintenant je peux mettre de la 4K et cela permet de faire un meilleur upscaling.","title":"Mardi 2 Mai 2023"},{"location":"jdb.html#recrutement-payerne-mai-2023","text":"J'ai du faire mon recrutement \u00e0 Payerne Mercredi et Jeudi. Si vous \u00eates curieux je peux vous dire que comme il n'y avait presque plus de places cet \u00e9t\u00e9 je ferai Canonnier Lance mines. C'\u00e9tait assez frustrant d'avoir perdu deux jours de travail mais on va faire avec.","title":"Recrutement Payerne Mai 2023"},{"location":"jdb.html#vendredi-5-mai-2023","text":"Bon malgr\u00e9s les courbatures il faut que je me mette au boulot un peu serieusement par ce que sinon ca va \u00eatre compliqu\u00e9 de rattraper mon retard. La derni\u00e8re fois si je me souviens bien j'avais r\u00e9ussi \u00e0 trouver un moyen de prendres des images en bonne r\u00e9solution. Il faut maintenant que je commence \u00e0 faire fonctionner la calibration et ce qui serait bien ca serait que je commence \u00e0 ajouter la partie OCR au projet. Il faut que je me d\u00e9p\u00eache car Lundi je dois m'occuper du Poster. OK j'ai compris le soucis que j'avais quand j'essayais de faire la calibration. J'avais mis l'image en ZOOM ce qui fait que si la hauteur n'\u00e9tait pas la bonne, l'image \u00e9tait recentr\u00e9e ce qui fait que cela faussait totalement les r\u00e9sultats. Quand on fait en sorte que l'image prenne toute la place, les coordonn\u00e9es sont prises correctement. Voici un exemple d'ou en est la partie calibration. \"Exemple settings UI\" Normalement il me suffit d'impl\u00e9menter les windows, et on devrait relativement facilement ajouter les pilotes. Et voila. J'ai pu impl\u00e9menter les windows et les pilotes. Et je peux aussi exporter des presets et les loader. Bon le loading est un peu beugg\u00e9 au niveau de l'affichage mais il semble qu'il fonctionne bien quand je save les images. Lundi je m'occupe du poster etc.. mais je pense que la suite va \u00eatre l'impl\u00e9mentation de l'OCR.","title":"Vendredi 5 Mai 2023"},{"location":"jdb.html#lundi-8-mai-2023","text":"Aujourd'hui c'est journ\u00e9e Poster. Je pense que je ne vais pas finir la journ\u00e9e content car les limitations sont un peu trop pr\u00e9sentes. J'ai fait une version que Garcia pourrait accepter, c'est \u00e0 dire en noir et blanc et avec un tout petit peu plus de d\u00e9tail. \"Poster V3\" Le truc c'est que en blanc je trouve que ca ne marche pas super. Et le concept d'avoir trois parties au projet qui se posent autour d'un circuit c'est peut-\u00eatre pas la meilleure id\u00e9e. Je me suis dit que la bonne id\u00e9e serait peut-\u00eatre de prendre un autre circuit pour qu'il y aie bien trois parties : \"Poster V4\" Clairement ce poster doit faire partie des pires. C'est pas clair et ca part dans tous les sens. Je vais essayer avec un autre layout de circuit. \"Poster V5\" Je me suis ensuite dit que le circuit n'\u00e9tait peut \u00eatre tout simplement pas une bonne id\u00e9e. J'ai donc essay\u00e9 de faire quelque chose de plus classique avec juste un peu de background pour qu'on puisse \u00e9viter le soucis de la page blanche derri\u00e8re : \"Poster V6\" Puis je me suis dit que finalement le circuit me manquait. Alors j'ai d\u00e9cid\u00e9 de combiner le background et le circuit ainsi que simplifier l\u00e9g\u00e8rement les diagrammes en retouchant un peu tout le reste on pouvait arriver \u00e0 quelque chose de sympatique : \"Poster V7\" Je ne suis pas content \u00e0 100% mais bon je pense que je vais m'en satisfaire. Pour donner une id\u00e9e de la gal\u00e8re que c'est de cr\u00e9er un poster, voici ce \u00e0 quoi ressemble mon espace de travail Figma : \"Bordel Figma\" Je ne suis pas un graphiste et ca se voit '^^. Je pense que comme il me reste un peu de temps aujourd'hui, je vais faire un peu de documentation de la partie r\u00e9cup\u00e8ration d'images. En effet, je pense que je n'aurai plus besoin de changer grand chose \u00e0 ce niveau. Mais je ne ferai pas la partie analyse fonctionnelle car l'interface n'est clairement pas termin\u00e9e. En fait j'avais oubli\u00e9 mais j'ai eu un rendez vous m\u00e9dical du coup je n'ai pas eu trop le temps de faire la doc que je voulais. Mais au moins je pense avoir finit mon travail sur le poster et le abstract en Anglais qui sont les deux gros livrables \u00e0 venir.","title":"Lundi 8 Mai 2023"},{"location":"jdb.html#mardi-9-mai-2023","text":"Bon je viens de me rendre compte que apparemment on doit rendre l'abstract anglais, le Poster, ET LE PROJET. Je pense que mes deux jours \u00e0 l'arm\u00e9e m'ont fait perdre un peu la notion du temps car j'avais l'impression que l'evaluation interm\u00e9diaire 1 \u00e9tait il y a genre moins d'une semaine. Donc aujourd'hui je ne vais pas trop avancer sur le code et vraiment me focus sur la documentation de la r\u00e9cup\u00e8ration d'images. Je pense que je vais aussi ajouter la partie calibration \u00e0 la documentation. Je pense que c'est important que je prenne le temps maintenant car sinon le prof aura l'impression que ca n'a pas trop avanc\u00e9 depuis la derni\u00e8re fois. Et puis je pense que la partie calibration et r\u00e9cup\u00e8ration d'images ne va pas trop changer et la partie calibration encore moins. La partie anglaise je fais la revoir un peu mais je l'avais d\u00e9ja faite pendant les premiers jours alors ca devrait aller. Pour le rendu il nous \u00e9tait demand\u00e9 de fournir un fichier PDF avec tout dedans avec une table des mati\u00e8res notre code source etc... Pour ce faire j'ai du changer le mkdocs.yml et installer des packages. Voici les changements :: site_name: Documentation Track Trends site_author: Rohmer Maxime copyright: \u00a9CFPTI Tech2 theme: name: material palette: # Palette toggle for light mode - media: \"(prefers-color-scheme: light)\" scheme: default toggle: icon: material/brightness-7 name: Switch to dark mode # Palette toggle for dark mode - media: \"(prefers-color-scheme: dark)\" scheme: slate toggle: icon: material/brightness-4 name: Switch to light mode markdown_extensions: - attr_list - md_in_html - pymdownx.highlight plugins: - glightbox - search - img2fig - with-pdf: cover_subtitle: Vroum Vroum enabled_if_env: ENABLE_PDF_EXPORT - annexes-integration: annexes: # Required (at least 1) - ConfigurationTool.cs: Code/ConfigurationTool.cs # An path to an annex with its title - DriverGapToLeaderWindow.cs: Code/DriverGapToLeaderWindow.cs # An path to an annex with its title - DriverPositionWindow.cs: Code/DriverPositionWindow.cs # An path to an annex with its title - F1TVEmulator.cs: Code/F1TVEmulator.cs # An path to an annex with its title - Program.cs: Code/Program.cs # An path to an annex with its title - Window.cs: Code/Window.cs # An path to an annex with its title - DriverData.cs: Code/DriverData.cs # An path to an annex with its title - DriverLapTimeWindow.cs: Code/DriverLapTimeWindow.cs # An path to an annex with its title - DriverSectorWindow.cs: Code/DriverSectorWindow.cs # An path to an annex with its title - Form1.cs: Code/Form1.cs # An path to an annex with its title - Reader.cs: Code/Reader.cs # An path to an annex with its title - Zone.cs: Code/Zone.cs # An path to an annex with its title - DriverDrsWindow.cs: Code/DriverDrsWindow.cs # An path to an annex with its title - DriverNameWindow.cs: Code/DriverNameWindow.cs # An path to an annex with its title - DriverTyresWindow.cs: Code/DriverTyresWindow.cs # An path to an annex with its title - OcrImage.cs: Code/OcrImage.cs # An path to an annex with its title - Settings.cs: Code/Settings.cs # An path to an annex with its title - recoverCookiesCSV.py: Code/recoverCookiesCSV.py # An path to an annex with its title Je remercie Monsieur Briard le sultan officiel de Mkdocs de la classe de m'avoir aid\u00e9 pour cette partie et avoir cr\u00e9\u00e9 un plugin qui me permet de mettre mon code source directement dans le pdf. Bon au final j'ai quand m\u00eame chang\u00e9 mon poster \"Poster V8\" Mais je suis trop attach\u00e9 \u00e0 l'ancien concept alors je vais plut\u00f4t utiliser ca : \"Poster V9\" Je pense que cette version est meilleure m\u00eame si elle est encore plus en bordel par ce que le texte permet de se faire une meilleure id\u00e9e de l'utilis\u00e9 de chaque partie.","title":"Mardi 9 Mai 2023"},{"location":"jdb.html#mercredi-10-mai-2023","text":"Bon hier je n'ai pas eu le temps de finir la documentation de la recup\u00e8ration d'images et de la calibration. Il faudra donc que je repasse un coup dessus en fin de semaine je pense. Mais la j'aimerais avancer sur la mise en commun du projet, comme la configuration fonctionne plut\u00f4t pas mal je pense que je vais juste vite fait aller commenter les methodes qui ne le sont pas encore et ensuite je vais passer \u00e0 l'impl\u00e9mentation de l'OCR. Je suis presque certain que l'OCR va avoir besoin de plus de r\u00e8glages mais bon on verra bien. Je me rend compte en commentant que la methode de load serait plus efficace avec un tout petit peu plus d'infos de la part du JSON. J'aurais pu ajouter l'offset entre chaque Driver Zone pour eviter un l\u00e8ger drift lors de la reconstruction. Mais bon rien de grave donc je pense que je vais le laisser comme ca pour le moment \u00e0 moins que ca me pose soucis plus tard. J'ai eu quelques soucis avec les images en 4K. Du coup j'ai descendu les variables d'environnement \u00e0 1920x1080 En fait il y a parfois un soucis un peu p\u00e9nible avec l'OCR. Parfois pour un temps comme ci dessous: \"1:45.140\" Le programme ne va pas bien comprendre les ponctuations et il va donner : 1115140 La il y a deux probl\u00e8mes... Le 1:xx.xxx est compris comme 11xxxxx et le 4 s'est transform\u00e9 en 1... J'ai cr\u00e9\u00e9 ce \"petit\" bout de code pour g\u00e8rer les fois ou les '.' et les ':' ont mal \u00e9t\u00e9 interpr\u00eat\u00e9s if ( rawNumbers . Count == 1 ) { //If this code is used it means that its bad ... //The methods that comes are really not that great and are juste quick fixes try { result = Convert . ToInt32 ( rawNumbers [ 0 ]); switch ( windowType ) { case OcrImage . WindowType . Sector : //The usual sector is in this form : 33.456 if ( rawNumbers [ 0 ]. Length == 6 ) { //The '.' has been understood like a number result = 0 ; result += Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ] + rawNumbers [ 0 ][ 1 ]) * 1000 ; result += Convert . ToInt32 ( rawNumbers [ 0 ][ 3 ] + rawNumbers [ 0 ][ 4 ] + rawNumbers [ 0 ][ 5 ]); } if ( rawNumbers [ 0 ]. Length == 5 ) { //The '.' has been overlooked result = 0 ; result += Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ] + rawNumbers [ 0 ][ 1 ]) * 1000 ; result += Convert . ToInt32 ( rawNumbers [ 0 ][ 2 ] + rawNumbers [ 0 ][ 3 ] + rawNumbers [ 0 ][ 4 ]); } break ; case OcrImage . WindowType . LapTime : //The usual Lap time is in this form : 1:45:345 if ( rawNumbers [ 0 ]. Length == 6 ) { //The '.' and ':' have been overlooked //I Know Im skipping the cases where there are more than 9 minuts but it happens so rarely that... we dont care result = 0 ; result += Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]) * 60000 ; result += Convert . ToInt32 ( rawNumbers [ 0 ][ 1 ] + rawNumbers [ 0 ][ 2 ]) * 1000 ; result += Convert . ToInt32 ( rawNumbers [ 0 ][ 3 ] + rawNumbers [ 0 ][ 4 ] + rawNumbers [ 0 ][ 5 ]); } if ( rawNumbers [ 0 ]. Length == 7 ) { //There is two possibilities //Either 1:45.140 has been interpreted as 1145.10 or 1:451140. We will assume its the first one result = 0 ; result += Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]) * 60000 ; result += Convert . ToInt32 ( rawNumbers [ 0 ][ 2 ] + rawNumbers [ 0 ][ 3 ]) * 1000 ; result += Convert . ToInt32 ( rawNumbers [ 0 ][ 4 ] + rawNumbers [ 0 ][ 5 ] + rawNumbers [ 0 ][ 6 ]); } break ; case OcrImage . WindowType . Gap : //The usual Gap is in this form : + 34.567 if ( rawNumbers [ 0 ]. Length == 5 ) { //The '.' has been overlooked result += Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ] + rawNumbers [ 0 ][ 1 ]) * 1000 ; result += Convert . ToInt32 ( rawNumbers [ 0 ][ 2 ] + rawNumbers [ 0 ][ 3 ] + rawNumbers [ 0 ][ 4 ]); } break ; } if ( rawNumbers [ 0 ]. Length > 6 ) { //The number definitely has been interpreted wrong } } catch { //It can be because the input is empty or because its the LEADER bracket result = 0 ; } } else { //Auuuugh result = 0 ; } ConfigFile = \"./Presets/Clean_2023.json\" ; string gpUrl = \"https://f1tv.formula1.com/detail/1000006688/2023-azerbaijan-grand-prix?action=play\" ; Bon je n'arrive pas \u00e0 faire fonctionner l'OCR sans tout faire crash \u00e0 chaque fois. Je vais abandonner le travail de la journ\u00e9e pour revenir au point initial... C'est tr\u00e8s frustrant mais bon je ne vois pas comment faire mieux. Rien ne marche alors qu'avant ca marchant super sur le projet OCR normal. Va savoir pourquoi m\u00eame comme ca, impossible de faire marcher l'OCR. Il y a un soucis au niveau de l'ASYNC qui me fait crash tout le temps en me disant qu'un objet est deja en train d'\u00eatre utilis\u00e9. Ca marchait nikel dans mes premi\u00e8res version je ne vois pas pourquoi ca p\u00eate maintenant. Je pense que je vois \u00e0 peu pr\u00e8s le soucis. public virtual async Task < DriverData > Decode ( List < string > driverList ) { int sectorCount = 0 ; DriverData result = new DriverData (); Parallel . ForEach ( Windows , async w => { // A switch would be prettier but I dont think its supported in this C# version if ( w is DriverNameWindow ) result . Name = ( string ) await ( w as DriverNameWindow ). DecodePng ( driverList ); if ( w is DriverDrsWindow ) result . DRS = ( bool ) await ( w as DriverDrsWindow ). DecodePng (); if ( w is DriverGapToLeaderWindow ) result . GapToLeader = ( int ) await ( w as DriverGapToLeaderWindow ). DecodePng (); if ( w is DriverLapTimeWindow ) result . LapTime = ( int ) await ( w as DriverLapTimeWindow ). DecodePng (); if ( w is DriverPositionWindow ) result . Position = ( int ) await ( w as DriverPositionWindow ). DecodePng (); if ( w is DriverSectorWindow ) { sectorCount ++; if ( sectorCount == 1 ) result . Sector1 = ( int ) await ( w as DriverSectorWindow ). DecodePng (); if ( sectorCount == 2 ) result . Sector2 = ( int ) await ( w as DriverSectorWindow ). DecodePng (); if ( sectorCount == 3 ) result . Sector3 = ( int ) await ( w as DriverSectorWindow ). DecodePng (); } if ( w is DriverTyresWindow ) result . CurrentTyre = ( Tyre ) await ( w as DriverTyresWindow ). DecodePng (); }); return result ; } Ca c'est ma methode de decoding de chaque Driver Zone. Le message d'erreur me parle d'une windowImage quand il dit qu'un objet est d\u00e9ja utilis\u00e9. Ma conjecture c'est que en essayant de faire toutes les windows en m\u00eame temps. Elles veulent parfois acc\u00e8der \u00e0 l'image principale en m\u00eame temps. Ce qui evidemment pose probl\u00e8me. Je pense que le fix le plus simple serait de faire le traitement sans le parallele quitte \u00e0 exporter ce fonctionnement sur chaque zone en elle m\u00eame pour ne pas perdre trop de performances. Ok je crois que je vois ou est le soucis. En fait dans cette version du programme c'est toujours la premi\u00e8re image qui \u00e9tait juste tout le temps prise et dans la premi\u00e8re image on a une partie des chiffres qui est bloqu\u00e9e par l'UI de la fen\u00eatre... lol... EN FAIT J'avais un soucis dans ma gestion des chiffres mal faits. Visiblement parfois quand je ne prenais pas en compte un :, un LapTime etait compris comme un Gap to leader ou un Secteur Bon j'en ai tellement marre... Je n'arrive tout simplement PAS \u00e0 faire fonctionner l'OCR ca crash tout le temps j'en peux plus. J'ai tent\u00e9 de r\u00e8gler les probl\u00e8mes de mauvaises detections de secteurs et temps au tour qui font crasher l'app : if ( rawNumbers . Count == 2 ) { //ss:ms result = ( Convert . ToInt32 ( rawNumbers [ 0 ]) * 1000 ) + Convert . ToInt32 ( rawNumbers [ 1 ]); if ( result > ( 60000 + 999 )) { if ( windowType == OcrImage . WindowType . LapTime ) { result = 0 ; result += Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]) * 60000 ; result += Convert . ToInt32 ( rawNumbers [ 0 ][ 2 ]. ToString () + rawNumbers [ 0 ][ 3 ]. ToString ()) * 1000 ; result += Convert . ToInt32 ( rawNumbers [ 1 ]); } if ( windowType == OcrImage . WindowType . Sector ) { int seconds = 0 ; if ( rawNumbers [ 0 ]. Length == 3 ) { //We have one char that we need to delete //For no apparent reason im going to delete the first seconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 1 ]. ToString () + rawNumbers [ 0 ][ 2 ]. ToString ()); } else { seconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]. ToString () + rawNumbers [ 0 ][ 1 ]. ToString ()); } int ms = Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]. ToString () + rawNumbers [ 0 ][ 1 ]. ToString () + rawNumbers [ 0 ][ 2 ]. ToString ()); result = seconds * 1000 + ms ; } } } Mais toujours impossible de faire fonctionner cette M**** C'est juste infernal. Je pense que je vais encore tout retirer et remplacer par ce que j'ai dans mon projet OCR original. Donc c'est une journ\u00e9e de perdue compl\u00eatement... C'est extr\u00eamement frustrant. Apr\u00e8s des heures de debug j'ai enfin r\u00e9ussi \u00e0 faire fonctionner le programme de temps en temps. Mais j'ai toujours le soucis que l'image ne veut pas changer alors que je fais tout pour et que l'OCR est nulle \u00e0 chier du coup...","title":"Mercredi 10 Mai 2023"},{"location":"jdb.html#jeudi-11-mai-2023","text":"Bon apr\u00e8s une bonne nuit de sommeil je vais reprendre les choses depuis le d\u00e9but. J'ai deux soucis : L'OCR pue du derche L'Image que l'on d\u00e9code ne change pas Pour la premi\u00e8re partie j'ai ma petite th\u00e9orie. Je pense que comme je donne des images 4K alors que le feed est en 1080P, il y a d\u00e9ja un genre d'interpolation qui est faite. Je pense donc qu'il faut que j'adapte mon engine pour qu'il fonctionne avec cette r\u00e9solution. Je me suis demand\u00e9 si ca n'\u00e9tait pas mieux de prendre en compte les deux r\u00e9solutions pour les pc un peu moins bal\u00e8zes et j'ai d\u00e9cid\u00e9 de n'en avoir rien a faire. On verra dans le futur si c'est une feature que je voudrais ajouter mais c'est en dehors du scope du dipl\u00f4me je pense. Pour la seconde partie, je pense qu'il faut que j'aille voir du c\u00f4te de OCR_Decode et de OCR Tester pour voir comment je faisais. Je dois forc\u00e9ment oublier un truc. Bon ca commence mal, quand je vais voir dans le projet OCR_Decode, le changement d'image est exactement le m\u00eame et il fonctionne alors que de mon c\u00f4t\u00e9 ca n'est pas le cas. Alors deux choses. Je me rend compte que le changement d'images n'a AUCUN effet sur la detection de texte, et seconde chose, le d\u00e9calage est trop grand entre les windows. Des que le soucis d'image est r\u00e8gl\u00e9 il va falloir que je change drastiquement ma facon de stocker la config en JSON. Il faut que je conserve les \u00e9carts. Sinon regardez ce que ca donne quand on arrive au dernier pilote : \"Zone de pilote d\u00e9cal\u00e9e\" Je commence \u00e0 devenir FOU. Je n'arrive pas \u00e0 changer cette foutue image wtf... J'ai beau tenter par tous les moyens de la changer par une image noire, l'image semble toujours rester celle du d\u00e9part. Bon j'ai enfin trouv\u00e9 pourquoi et je n'ai pas envie de dire comment j'ai trouv\u00e9... Je pense que l'on a tous droit \u00e0 son petit jardin secret. Maintenant ca veut dire que je peux me focus sur le concept important qui est le changement de la cr\u00e9ation et de la lecture des JSON. Voici un exemple de preset JSON : { \"Main\" : { \"x\" : 40 , \"y\" : 355 , \"width\" : 3784 , \"height\" : 1438 , \"Zones\" : [ { \"DriverZone\" : { \"x\" : 0 , \"y\" : -10 , \"width\" : 3784 , \"height\" : 71 , \"Windows\" : [ { \"Position\" : { \"x\" : 47 , \"y\" : 11 , \"width\" : 72 }, \"GapToLeader\" : { \"x\" : 445 , \"y\" : 13 , \"width\" : 201 }, \"LapTime\" : { \"x\" : 859 , \"y\" : 14 , \"width\" : 221 }, \"DRS\" : { \"x\" : 1094 , \"y\" : 13 , \"width\" : 173 }, \"Tyres\" : { \"x\" : 1270 , \"y\" : 11 , \"width\" : 1452 }, \"Name\" : { \"x\" : 2727 , \"y\" : 11 , \"width\" : 351 }, \"Sector1\" : { \"x\" : 3083 , \"y\" : 10 , \"width\" : 253 }, \"Sector2\" : { \"x\" : 3339 , \"y\" : 14 , \"width\" : 195 }, \"Sector3\" : { \"x\" : 3518 , \"y\" : 14 , \"width\" : 250 } } ] } } ] }, \"Drivers\" : [ \"Perez\" , \"Leclerc\" , \"Sainz\" , \"Alonso\" , \"Stroll\" , \"Russel\" , \"Verstappen\" , \"Zhou\" , \"Ocon\" , \"Hulkenberg\" , \"Hamilton\" , \"Norris\" , \"Tsunoda\" , \"Magnussen\" , \"Piastri\" , \"Albon\" , \"Gasly\" , \"Sargeant\" , \"Bottas\" , \"De Vries\" ] } Je pense que ce qui serait bien ce serait de rajouter un \"offsets\" qui contienne les 19 \u00e9carts restants. Bon... la structure de ma fabrication de JSON etait trop confuse je trouve alors je l'ai compl\u00eatement refaite. J'ai aussi abandonn\u00e9 l'id\u00e9e de faire un fichier le plus petit possible car au final on s'en fiche et le plus important c'est que toutes les windows et les zones soient aux bons endroits. Ca nous fait un fichier d'environs 1300 lignes mais au moins le code pour la serialisation est plut\u00f4t clean : public void SaveToJson ( List < string > drivers , string configName ) { string JSON = \"\" ; JsonObject jsonFileObject = new JsonObject (); //Creating the mainZone object JsonObject mainZoneObject = new JsonObject (); mainZoneObject . Add ( \"x\" , MainZone . Bounds . X ); mainZoneObject . Add ( \"y\" , MainZone . Bounds . Y ); mainZoneObject . Add ( \"width\" , MainZone . Bounds . Width ); mainZoneObject . Add ( \"height\" , MainZone . Bounds . Height ); JsonArray driverZonesArray = new JsonArray (); int DriverID = 0 ; foreach ( Zone driverZone in MainZone . Zones ) { DriverID ++; JsonObject driverZoneObject = new JsonObject (); driverZoneObject . Add ( \"name\" , \"Driver\" + DriverID ); driverZoneObject . Add ( \"x\" , driverZone . Bounds . X ); driverZoneObject . Add ( \"y\" , driverZone . Bounds . Y ); driverZoneObject . Add ( \"width\" , driverZone . Bounds . Width ); driverZoneObject . Add ( \"height\" , driverZone . Bounds . Height ); JsonArray windowsArray = new JsonArray (); JsonObject windowObject = new JsonObject (); foreach ( Window window in driverZone . Windows ) { windowObject . Add ( window . Name , new JsonObject { { \"x\" , window . Bounds . X }, { \"y\" , window . Bounds . Y }, { \"width\" , window . Bounds . Width }, { \"height\" , window . Bounds . Height } }); } windowsArray . Add ( windowObject ); driverZoneObject . Add ( \"Windows\" , windowsArray ); driverZonesArray . Add ( driverZoneObject ); } mainZoneObject . Add ( \"DriverZones\" , driverZonesArray ); JsonArray driversArray = new JsonArray (); foreach ( string driver in drivers ) { driversArray . Add ( driver ); } mainZoneObject . Add ( \"Drivers\" , driversArray ); jsonFileObject . Add ( \"Main\" , mainZoneObject ); JSON = jsonFileObject . ToString (); //Saving the file string path = CONFIGS_FOLDER_NAME + configName ; if ( File . Exists ( path + \".json\" )) { //We need to create a new name int count = 2 ; while ( File . Exists ( path + \"_\" + count + \".json\" )) { count ++; } path += \"_\" + count + \".json\" ; } else { path += \".json\" ; } File . WriteAllText ( path , JSON ); } Et normalement la lecture devrait \u00eatre encore plus simple. En fait c'\u00e9tait pas beaucoup plus simple mais au moins maintenant ca marche. Je vais pas mettre le code de lecture ici car c'est un peu trop long donc il va falloir me croire sur parole. (Ou aller sur Git) Bon bah on est au m\u00eame endroit qu'hier... Bon pour demain le plan de bataille ca va \u00eatre : Changer compl\u00eatement la methode \"GetTimeFromPng\" pour qu'elle prenne en compte toutes les possibilit\u00e9s de bugs et d'oubli de '.' ou de ':' mais pas selon le nombre de blocs mais selon le type de temps que l'on cherche Pour le moment je regarde le nombre de blocs et si il y en a deux alors c'est que c'est un temps de secteur. En fait non cela peut aussi \u00eatre un temps au tour qui a rat\u00e9 un point. Il faut que je bosse juste un peu vite fait la dessus et que j'arr\u00eate de putain de crasher d\u00e8s que un truc est pas au bon format. Ensuite quand ca aura arr\u00eat\u00e9 de crasher je vais reprendre l'OCR et voir pourquoi les resultats sont nuls a chier comme ca. Et le but c'est que demain soir j'ai une reconnaissance de caract\u00e8res plus proche de ce que j'avais dans d'autres projets... J'y croit 0 mais bon l'espoir fait vivre comme on dit.","title":"Jeudi 11 Mai 2023"},{"location":"jdb.html#vendredi-12-mai-2023","text":"Bon aujourd'hui il faut que ca marche. On va y aller par \u00e9tape. Je vais revoir toutes les methodes d'OCR et essayer de r\u00e9apliquer les filtres differemment et revenir au point de d\u00e9part. Avant de commencer je note plusieurs soucis avec les premiers tests : Les positions des pilotes ont l'air pas mal (Pas besoin de tout changer mais peut-\u00eatre simplement checker que les filtres sont bons) L'\u00e9cart avec le leader est \u00e9tonnamment pas mal aussi Le temps au tour est tout simplement horrible. Aucun n'est juste et de tr\u00e8s loin m\u00eame si les d\u00e9cimales ne sont pas forc\u00e9ment loin Le DRS je n'ai pas eu l'occasion de bien le tester mais je dirais que ca devrait \u00eatre bon (\u00e0 verifier quand le reste sera bon) Les pneus ne sont \u00e9tonnamment pas SI horribles, m\u00eame si parfois les lettres sont prises comme des chiffres Les noms de pilotes sont tr\u00e8s bon (pas \u00e9tonnant vu le syst\u00e8me de distance de Levenstein donc ca m\u00e9rite quand m\u00eame un petit check) Les secteurs sont en g\u00e9n\u00e9ral horribles mais pas toujours. C'est peut-\u00eatre un soucis de d\u00e9cimale ou des 4 qui se transforment en 1 J'ai remarqu\u00e9 que les 4 sont souvent pris comme des 1. Peut-\u00eatre que en ayant des images 4K l'interpolation est un peu diff\u00e9rente de ce que j'ai l'habitude de voir. Mais donc le plan aujourd'hui c'est de checker tous ces points et les faire fonctionner (youpi...) J'ai d\u00e9sactiv\u00e9 toutes les methodes de cette facon : int sectorCount = 0 ; DriverData result = new DriverData (); foreach ( Window w in Windows ) { // A switch would be prettier but I dont think its supported in this C# version if ( w is DriverNameWindow ) //result.Name = (string)await (w as DriverNameWindow).DecodePng(driverList); result . Name = \"Unknown\" ; if ( w is DriverDrsWindow ) //result.DRS = (bool)await (w as DriverDrsWindow).DecodePng(); result . DRS = false ; if ( w is DriverGapToLeaderWindow ) //result.GapToLeader = (int)await (w as DriverGapToLeaderWindow).DecodePng(); result . GapToLeader = 0 ; if ( w is DriverLapTimeWindow ) //result.LapTime = (int)await (w as DriverLapTimeWindow).DecodePng(); result . LapTime = 0 ; if ( w is DriverPositionWindow ) //result.Position = (int)await (w as DriverPositionWindow).DecodePng(); result . Position = 0 ; if ( w is DriverSectorWindow ) { sectorCount ++; if ( sectorCount == 1 ) //result.Sector1 = (int)await (w as DriverSectorWindow).DecodePng(); result . Sector1 = 0 ; if ( sectorCount == 2 ) //result.Sector2 = (int)await (w as DriverSectorWindow).DecodePng(); result . Sector2 = 0 ; if ( sectorCount == 3 ) //result.Sector3 = (int)await (w as DriverSectorWindow).DecodePng(); result . Sector3 = 0 ; } if ( w is DriverTyresWindow ) //result.CurrentTyre = (Tyre)await (w as DriverTyresWindow).DecodePng(); result . CurrentTyre = new Tyre ( Tyre . Type . Undefined , 0 ); } return result ; Le but c'est que ensuite je puisse y aller \u00e9tape par \u00e9tape. Position : Alors pour cette reconnaissance je dirais que la 4K fait des merveilles qui permettent de retirer du processing. La position apr\u00e8s un simple Treshold est assez bien reconnue et la dilataion et/ou Erosion ne sont pas nescessaires finalement. On va donc pouvoir gagner un certain temps et c'est un bon signe pour la suite. On peut aussi noter que quand un pilote est hors course toutes ses valeurs sont gris\u00e9es et sa position est prise comme un -1 Sectors, alors j'ai refait toute la partie qui concerne les secteurs et qui les nettoie. Et je me suis rendu compte qu'ils \u00e9taient bien souvent juste, le seul truc c'est que ils s'affichent de mani\u00e8re un peu sp\u00e9ciale. En fait dans la page de la F1TV les secteurs peuvent faire plus de 60 secondes sans passer sur un affichage de minutes. Ce qui fait que c'est un peu bizarre \u00e0 regarder mais c'est parfaitement juste. J'ai aussi pu simplifier la reconnaissance gr\u00e2ce \u00e0 l'image de meilleure qualit\u00e9 et maintenant les temps de secteur sont plut\u00f4t corrects. En fait le plus long et complexe c'est de pr\u00e9voir les cas particuliers ou un '.' a \u00e9t\u00e9 mal interpr\u00eat\u00e9... Et en parlant de ca, je vais aller m'occuper des temps au tour qui ajoutent une couche de complexit\u00e9 avec un '.' ET un ':' qui peuvent \u00eatre oubli\u00e9s... Oh et j'y pense, un truc malin pourrait \u00eatre de comparer les temps au tour et les temps de secteur. Ils devraient concorder normalement je pense. Ok je viens de finir la gestion des temps au tour... J'ai un code de genre 170 lignes pour juste nettoyer le resultat dans le cas ou des '.' n'ont pas \u00e9t\u00e9 trouv\u00e9s ou des ':' ont \u00e9t\u00e9 n'ont pas \u00e9t\u00e9 trouv\u00e9 ou si l'un des deux s'est transform\u00e9 en chiffre etc.. etc.. etc.. Le soucis c'est que la maintenant je me rend compte que les \u00e9carts entre les pilotes vont juste \u00eatre un enfer \u00e0 nettoyer... Ils peuvent aussi bien \u00eatre \"0.760\" comme \"1:34.456\" du coup... je sais pas vraiment comment faire pour tout nettoyer. Je pense que je vais juste en avoir rien \u00e0 faire et tant pis si de temps en temps c'est pas g\u00e9nial. Bon du coup j'ai pas pris en compte TOUS les cas possibles mais d\u00e9ja un certain nombre et c'est d\u00e9ja pas mal. Sur les diff\u00e9rents Grand Prix d'exemples ca a l'air de plut\u00f4t bien tourner ! Mais ca demande tellement de tests et de code que c'est un peu ridicule... La methode \"GetTimeFromPng\" fait d\u00e9ja presque 430 lignes \u00e0 cause de tous les cas possibles et tous les try catch. Ca peut para\u00eetre peu \u00e9l\u00e9gant mais j'ai essay\u00e9 de mettre des commentaires un peu partout pour permettre \u00e0 nimporte qui de comprendre ce qui se passe. J'ai aussi pu faire les pneus et maintenant (roulement de tambour) Ca marche (presque) En fait j'ai des soucis parfois quand les pneus sont un peu cach\u00e9s dans les permiers tours : Pneus cach\u00e9s Le soucis c'est que du coup le chiffre est un peu illisible... mais je pense que avec l'historique il devrait y avoir moyen de ne pas prendre en compte les chiffres de pneus pendant cinq tours apr\u00e8s le changement de pneu ou de simplement tenter de faire les calculs de pneus. Pour conclure la journ\u00e9e je pense que je devrais avoir le temps de faire un syst\u00e8me qui permet de refresh \u00e0 volont\u00e9. Par contre je viens de d\u00e9couvrir que quand un temps de secteur est en couleur on arrive pas \u00e0 le lire. Ah et la detection prend un peu moins de trois secondes sur mon pc je crois. Mais c'est seulement si les driver zones sont faites en m\u00eame temps mais en faisant ca de temps en temps ca crash et \u00e0 chaques fois c'est d'un endroit diff\u00e9rent du coup je comprend pas vraiment. Sinon ca prend dix secondes.","title":"vendredi 12 Mai 2023"},{"location":"jdb.html#lundi-15-mai-2023","text":"Aujourd'hui c'est journ\u00e9e poster et visites. Comme on va avoir des visites de premi\u00e8res ann\u00e9es voire de terminales et que le soir c'est visite des parents. Je pense que j'ai finit de tout regrouper (\u00e0 part \u00e9videmment le traitement et le stockage des donn\u00e9es) ce qui veut dire que je suis pas dans une superbe posture. Il va falloir que je sois tr\u00e8s efficace dans la partie stockage de donn\u00e9es et mise en place du mod\u00e8le si je veux avoir une chance de rendre un joli travail de dipl\u00f4me. (et m\u00eame comme ca je peux voir que le temps commence \u00e0 manquer) Dans l'id\u00e9al je devrais avoir termin\u00e9 la partie stockage jeudi... Ce qui veut dire que je n'ai que trois jours pour le faire et que en plus jeudi je dois travailler depuis la maison. Ca va pas \u00eatre simple. Mais aujourd'hui je vais m'occuper d'adapter la documentation de l'OCR et faire la documentation de toute la partie r\u00e9cup\u00e8ration d'images et de la calibration. Bon au final la journ\u00e9e a \u00e9t\u00e9 un peu difficile. On a pas vraiment pu travailler l'apr\u00e8s midi car il a fallu pr\u00e9senter le projet environs 10 fois \u00e0 toutes les classes et \u00e0 des parents voire futurs experts. Les d\u00e9mos ont plut\u00f4t bien fonctionn\u00e9es j'en suis assez content. Mais ca veut dire que la partie doc a pas forc\u00e9ment pu \u00eatre totalement compl\u00eat\u00e9e mais demain il va falloir que je m'occupe de la suite du projet.","title":"Lundi 15 Mai 2023"},{"location":"jdb.html#mardi-16-mai-2023","text":"Bon aujourd'hui c'est la partie stockage qui doit \u00eatre faite. Il y a plusieurs solutions possibles \u00e0 ce probl\u00e8me. Mais comme je n'ai besoin que d'une base de donn\u00e9e locale et que je ne veux pas que chaque utilisateur doive installer un serveur sur sa machine je pense que je vais utiliser une base de donn\u00e9es SQLITE. Il y a eu une petit intervention de mr Bonvin qui est venu me donner une id\u00e9e pour la partie OCR. En fait j'avais un soucis quand je voulais d\u00e9coder du texte de couleur. M\u00eame en appliquant un filtre de gris je n'arrivais pas \u00e0 faire reconnaitre les chiffres. Et il m'a dit que une bonne id\u00e9e cela pourrait de prendre la valeur max de chaque channel et de la faire appliquer \u00e0 tous ce qui blanchit assez bien l'image. J'ai d\u00e9cid\u00e9 d'exag\u00e8rer le blanchiment et cela donne des r\u00e9sultats plut\u00f4t... int\u00e9ressants... \"Filtre vanish oxy action sur un secteur violet\" Le soucis c'est que le violet est une couleur quand m\u00eame assez sombre alors il va falloir que je fasse un syst\u00e8me de treshold un peu sp\u00e9cial qui soit un peu plus sympa et qui prenne plus facilement des couleurs plus basses. Une methode \u00e0 laquelle j'ai pens\u00e9 pour detecter dans quel tour chaque pilote est serait de garder en m\u00e9moire toutes les infos de chaques pilotes au fur et \u00e0 mesure, et d\u00e8s qu'on ne recoit plus d'infos des secteurs ou que le temps au tour a chang\u00e9 on peut savoir qu'il faut passer au tour suivant. Pour detecter les arr\u00eats aux stands je peux essayer de detecter un changement de type de pneus ou de nombre de tours detect\u00e9s sur le m\u00eame pneu Au d\u00e9part je me disais que je pourrais peut-\u00eatre faire une base de donn\u00e9e SQLITE locale qui puisse \u00eatre reprise d'un Grand Prix \u00e0 un autre. Mais je me suis dit que de faire des statistiques inter Grand Prix \u00e9tait un peu en dehors du scope du projet. La base de donn\u00e9e sera donc cr\u00e9\u00e9e \u00e0 chaque d\u00e9marrage de l'app La mani\u00e8re dont je vois les choses en ce moment est qu'on aie deux sources de donn\u00e9es dans l'affichage final. On aurait une partie des infos qui seraient en direct depuis la detection : Les ecarts entre pilotes La position des pilotes Le dernier temps au tour Les derniers secteurs Les pneus Mais on aurait aussi des rubriques cr\u00e9\u00e9es de toutes pi\u00e8ces par des infos qui viennent de la BD Voici les rubriques qui pourraient \u00eatre int\u00e9ressantes \u00e0 voir dans l'interface finale : Les 3 ou 5 pilotes les plus rapides ces cinq derniers tours Le pilote qui a le plus fait de d\u00e9passements Les batailles en cours Les 3 pilotes les plus lents Un classement pond\u00e9r\u00e9 avec les 20s de moins pour tous les pilotes qui ne se sont pas encore arr\u00eat\u00e9s En gros l'id\u00e9e serait que on update une fois par tour et par pilote la base de donn\u00e9e avec des infos comme le temps au tour, le type de pneu etc... Voici les trois tables que je vais cr\u00e9er : Drivers Colonne Type de Data Description Tag ID INTEGER ID du pilote PRIMARY Name VARCHAR Nom du pilote NOT NULL Pitstops Colonne Type de Data Description Tag Lap INTEGER Tour durant lequel le Pitstop a \u00e9t\u00e9 effectu\u00e9 PRIMARY DriverID INTEGER Pilote qui a effectu\u00e9 le Pitstop PRIMARY Tyre VARCHAR Pneu chauss\u00e9 par le pilote NOT NULL Stats Colonne Type de Data Description Tag Lap INTEGER Tour durant lequel le Pitstop a \u00e9t\u00e9 effectu\u00e9 PRIMARY DriverID INTEGER Pilote qui concern\u00e9 PRIMARY Tyre VARCHAR Pneu chauss\u00e9 par le pilote NOT NULL LapTime INTEGER Temps au tour (MS) NOT NULL Sector1 INTEGER Temps du secteur 1 (MS) NOT NULL Sector2 INTEGER Temps du secteur 2 (MS) NOT NULL Sector3 INTEGER Temps du secteur 3 (MS) NOT NULL GapToLeader INTEGER Ecart avec le leader (MS) NOT NULL Position INTEGER Position pilote NOT NULL Ca n'est pas forc\u00e9ment d\u00e9finitif mais je pense que c'est d\u00e9ja un bon d\u00e9but pour faire des rubriques sympa. Je suis en train de tenter d'impl\u00e9menter le code pour permettre ensuite d'ajouter et retirer des choses facilement.","title":"Mardi 16 Mai 2023"},{"location":"jdb.html#mercredi-17-mai-2023","text":"Aujourd'hui le but c'est de remplir la base SQLITE avec des infos. Si j'arrive \u00e0 tout remplir alors ca devrait pas \u00eatre trop compliqu\u00e9 de venir faire des requ\u00e8tes qui donnent de bonnes infos. Mais la probl\u00e9matique principale va \u00eatre de d\u00e9cider QUAND ins\u00e8rer des choses dans la base de donn\u00e9e. Je pense que le meilleur moyen serait de garder une liste de DriverData par pilote en piste qui puisse contenir toutes les data que l'on recoit. Et \u00e0 chaques fois que l'on veut ajouter \u00e0 cette liste on v\u00e9rifie si un tour a \u00e9t\u00e9 fait pour envoyer les data pr\u00e9c\u00e9dente et r\u00e9initialiser la liste. Il faut donc une liste de 20 listes de DriverData et une liste de int qui repr\u00e9senteront le num\u00e9ro du tour dans lequel chaque pilote se trouve. Pour detecter un arr\u00eat je pense que la meilleure mani\u00e8re est de regarder si le pilote a chang\u00e9 de place ou de type de pneu. Si je prend que les fois ou le pilote change place ET de pneus alors certains arr\u00eats pour ceux qui sont loins devant ou loins derri\u00e8re pourraient ne pas \u00eatre detect\u00e9s. Et si je ne prend que le changement de pneus cela pose un soucis car un pneu pourrait avoir \u00e9t\u00e9 chang\u00e9 pour un autre du m\u00eame type. Et parfois les valeurs de tours faits avec le pneu ne sont pas toujours bien lues et parfois sont compliqu\u00e9es \u00e0 retrouver car tous les pneus ne sont pas neuf quand ils sont chauss\u00e9s. Je crois que la detection de tours et des arr\u00eats aux stands est sur la bonne voie. Le seul soucis que j'ai c'est que pour faire du debug je suis un peu oblig\u00e9 d'attendre pendant 10min si je veux avoir de quoi faire des stats un peu sympa. Je me rend compte que parfois j'obtiens des r\u00e9sultats un peu bizarres mais que c'est la f1TV qui les donne. Par exemple de cas ou Alex Albon n'a que deux tours sur ses pneus alors que tout le monde devant et derri\u00e8re lui en a 3 et que on est au tour 4. \"wtf...?\" Ah et aussi parfois quand les pilotes se d\u00e9passent on se retrouve dans des situations plut\u00f4t rigolotes : \"Wtf...??\" COMMENT JE FAIS POUR DETECTER CA WIONDVIDNJDODVNSDIC Bon je me rend compte que clairement si je veux que mes data soient plus utiles il faudrait que je fasse un tout petit peu plus de taff sur quelques points dans l'OCR. Le nombre de tours des pneus (Les num\u00e9ros sont vraiment mal detect\u00e9s et parfois m\u00eame la couleur est pas dingue) Les 4 qui sont pris pour des 1 ou des 11 (pour les temps et les pneus) apr\u00e8s un test de plus longue haleine je suis content de voir que au moins mon programme peut tourner plus d'une heure sans crasher et qu'il peut \u00eatre fiable quand il veut.","title":"Mercredi 17 Mai 2023"},{"location":"jdb.html#jeudi-18-mai-2023","text":"Aujourd'hui c'est t\u00e9l\u00e9Travail forc\u00e9 et j'\u00e9tais scens\u00e9 aller au Grand Prix d'Imola ce qui malheureusement ne pourra pas se faire pour des raisons d'inondations. En effet la r\u00e9gion est clairement pas en \u00e9tat de recevoir un Grand Prix de Formule 1 et donc ce weekend c'est maison. Le but du jour c'est d'avancer la doc et de tenter d'am\u00e9liorer l'OCR pour que Lundi il soit relativement facile d'avancer sur l'interface de l'app finale. Je suis en train d'explorer une methode de detection de bords de sobel. Le seul soucis c'est que les r\u00e9sultats sont bons mais avec un vide au milieu des chiffres. Cela veut dire que parfois le temps est mal detect\u00e9. Mais il semble que pour le reste du temps cela se passe plut\u00f4t bien. Ca vaut peut \u00eatre le coup de modifier la gestion des erreurs. \"Artefacts de detection de sobel\" En fait le soucis avec ces artefacts c'est que parfois le temps au tour n'est tout simplement pas detect\u00e9. Dans l'exemple ci dessus, la reconnaissance de caract\u00e8res ne trouve tout simplement rien. Il faut donc que je trouve un moyen de corriger ces soucis. Il semblerait que en appliquant un tresholding un peu plus s\u00e9v\u00e8re en amont on arrive \u00e0 r\u00e9duire les artefacts \"Artefacts all\u00e8g\u00e9s\" ; Je crois qu'il faut faire attention avec les 'Bitmap.save' quand on utilise de l'asynchrone. le GDI+ aime pas des masses.","title":"Jeudi 18 Mai 2023"},{"location":"jdb.html#lundi-22-mai-2023","text":"BON ! Il ne reste plus beaucoup de temps ! Selon le planning cette semaine est la derni\u00e8re semaine de programmation. Il va donc falloir CHARBONNER !! Il ne me reste plus que une t\u00e2che \u00e0 vraiment faire (\u00e0 part les tests mais euuuu voila bon). J'essaie d'impl\u00e9menter un peu plus d'error handling mais c'est pas facile... Il y a tellement de choses qui peuvent mal tourner c'est infernal. Une chose qui serait bien serait de rajouter des points d'attente variables dans le code de l'emulateur un peu partout pour eviter de se retrouver bloqu\u00e9 \u00e0 chaque fois. L'int\u00e9r\u00eat serait que des gens avec une moins bonne connexion pourraient quand m\u00eame profiter du programme sans qu'il crashe 300 fois. Ce qui est frustrant c'est que va savoir pourquoi, maintenant, on arrive quasi jamais a avoir la page data... Genre sans deconner c'est une fois sur 5 que l'emulateur nous ressort la page Data et pas juste le feed. C'est absolument infernal. Je ne comprends pas pourquoi en plus. L'emulateur arrive bien \u00e0 cliquer sur le bon bouton mais m\u00eame comme ca ca ne veut pas. CA NA AUCUN SENS BORDEL. Sur une image Jjai de supers resultats pour les temps au tour mais d\u00e8s que l'image change PAF plus aucun temps n'est detect\u00e9. Ah non c'est bon c'est juste que VA SAVOIR POURQUOI les images sont en putain de resolution DEGEULASSE. Je ne comprends pas pourquoi ce matin particuli\u00e8rement le projet marche si mal. Par ce que d\u00e8s que l'image revient \u00e0 une r\u00e9solution normale c'est bon. Un autre soucis que j'ai est que je n'arrive pas \u00e0 paralleliser l'OCR ce qui fait que elle peut prendre parfois plus de 15 secondes. Et le probl\u00e8me avec ca c'est que la detection de tours et de pitstop est grandement impact\u00e9e si on a pas assez de data assez souvent. Je vais me focus sur le reste en attendant mais d\u00e8s que M.Bonvin apparait dans les parages je vais devoir l'alpaguer. J'ai ajout\u00e9 la possibilit\u00e9 d'essayer plusieurs fois de trouver le bouton fullscreen et de cliquer dessus plut\u00f4t que d'attendre dix secondes comme un con et esp\u00e8rer que ca fonctionne. Mais si apr\u00e8s 15 secondes d'essais il n'y arrive pas cela fait quand m\u00eame p\u00eater une erreur. Je pense que je vais m'occuper de la page de configuration maintenant. Voici \u00e0 quoi ressemblait la page de settings ce matin quand je suis arriv\u00e9. \"Ancienne page de settings\" Comme je pense que l'UI de cette page ne va pas vraiment changer d'ici la fin du projet je peux me permettre de lui faire une petite beaut\u00e9 car apr\u00e8s je ne pense pas y retoucher. Pour ca j'ai plusieurs \u00e9tapes comme choisir une palette de couleur, retirer l'inutile et choisir judicieusement le placement des items sur la form pour que cela soit le plus intuitif possible. J'y pense, il fuadrait peut-\u00eatre que je me trouve un logo ca pourrait rendre bien. Voila alors j'ai chang\u00e9 un tout petit peu ce \u00e0 quoi ressemble la page de settings et j'ai ajout\u00e9 du responsive pour que le user puisse mettre l'application en plein \u00e9cran. \"Nouvelle page de configuration\" Mais il manque un peu de couleurs et de d\u00e9tails pour que cela rende vraiment bien. Et apr\u00e8s quelques tentatives on se retrouve avec une page plut\u00f4t sympa je trouve : \"Nouvelle page de config\" Et elle est responsive : \"Nouvelle page de config en plein \u00e9cran\" Et j'ai fait quelques changements pour ce qui est des zones qui s'affichent pour qu'on les voie mieux. \"Nouvelle page de config en action\" Je trouve que franchement ca rend pas mal. Le reste de l'app sera dans ce style. J'ai mis pas mal de temps \u00e0 cr\u00e9er cette page, mais je pense que c'est important que la page de config soit propre. Et en plus tout le temps que j'ai pass\u00e9 ici n'est pas perdu car ensuite j'aurai simplement \u00e0 suivre les m\u00eames directives de style pour le reste de l'UI. Il faut aussi savoir que Windows Form n'est ps forc\u00e9ment le meilleur outil pour travailler avec le design. Truc tout b\u00eate par exemple qui m'a fait perdre 30 minutes. Il est impossible de retirer les bordures des objets \"GroupBox\". Ce que j'ai donc du faire ca a \u00e9t\u00e9 de dessiner un rectangle autour de la couleur du background pour que l'on ne voit plus les bordures et ensuite j'ai du redessiner le texte pour qu'il puisse s'afficher quand m\u00eame. C'est pleins de petites choses comme ca qui sont plut\u00f4t p\u00e9nibles et qui font perdre du temps mais je pense que c'est rentable de s'y attarder. Maintenant ce que je vais faire aujourd'hui et demain c'est l'affichage general de l'app. Je pense que je vais commencer par mettre des placeholder de l'app finale comme ca je saurai quoi implementer comme methodes de r\u00e9cup\u00e8ration demain. J'aimerais quand m\u00eame faire une interface sympa m\u00eame si les data sont pas parfaites. Par ce que je me dis que au pire si je montre une interface qui donne des infos inexacte mais qui a la bonne logique c'est toujours mieux que de ne pas montrer ce que ca pourrait faire avec des donn\u00e9es un peu plus int\u00e8gres. Autre point \u00e0 noter, je me suis rendu compte que ca pourrait \u00eatre potentiellement pas mal de trouver un moyen rapide de lancer l'appli avec un Grand Prix. Genre permettre de selectionner le preset et l'URL du Grand Prix sans avoir \u00e0 passer par la page de configuration. Je me suis rendu compte que c'\u00e9tait super chiant de devoir \u00e0 chaque fois le faire (m\u00eame si je me rends compte que normalement un user ne devrait pas lancer l'app autant) Voila ue premi\u00e8re version de l'App avec tous les placeholders : \"Premi\u00e8re version de la page principale\" Et c'est tout pour aujourd'hui ! Ce fut une journ\u00e9e remplie.","title":"Lundi 22 Mai 2023"},{"location":"jdb.html#mardi-23-mai-2023","text":"Aujourd'hui le but c'est de remplir le framework de hier avec les bonnes Data. Je ne sais pas si je peux tout finir en un jour mais on va essayer. Bon j'ai eu une discussion anim\u00e9e avec M.Bonvin et il semble que je sois oblig\u00e9 de refaire \u00e0 peu pr\u00e8s tout mon code pour le rendre ne serait-ce qu'un peu optimis\u00e9. Bon au final j'ai perdu 6H de travail \u00e0 tenter de convertir mon code dans une version un peu plus optimis\u00e9e... Mais je me rend compte que c'est juste impossible... Il me faudrait au moins plusieurs jours pour faire correctement ce refactor et donc je vais tout simplement faire un git restore... C'est extr\u00eament frustrant mais bon... Pas le choix il semble. J'ai du \u00e9crire au moins 600 lignes de code et tout pars en fum\u00e9e. C'est une d\u00e9bauche d'\u00e9nergie absolument ph\u00e9nomenale. Apr\u00e8s ca valait le coup de tenter je pense. (J'ai envie de mourir) EN FAIT C'EST BON !! Il fallait juste que je croie en mon code original !!! J'ai r\u00e9ussi \u00e0 paralelliser mon ancien code. Il ne manquait presque rien mais M.Bonvin voulait absolument que je change le reste. Maintenant j'ai une detection qui se fait en quelques secondes c'est genial.","title":"Mardi 23 Mai 2023"},{"location":"jdb.html#mercredi-24-mai-2023","text":"Alors hier je n'ai pas bien eu le temps d'expliquer ce que voulait que M.Bonvin. En fait mon programme actuellement utilise un d\u00e9coupage qui peut par\u00e2itre complexe. Et de par sa nature, il pensait qu'il \u00e9tait simplement impossible de paralelliser le traitement car trop complexe et trop couteux. Il voulait donc que je passe sur un traitement plus simple. L'id\u00e9e \u00e9tait que on s'occupe dabord de faire une liste de toutes les Windows et de les traiter toutes \u00e0 la fois pour \u00e9viter que les boucles soient trop complexes. Sauf que pour impl\u00e9menter un truc pareil c'est \u00e9norm\u00e9ment de code car cela va \u00e0 l'encontre totale de la facon dont mon projet fonctionne actuellement. Mais comme j'\u00e9tais ouvert \u00e0 d'autres solutions. J'ai pass\u00e9 six heures \u00e0 tenter de l'impl\u00e9menter. Il en aurait fallu au minimum deux jours soyons clair. Et en fait on s'est retrouv\u00e9s devant pleins de probl\u00e8mes qui ne se posent pas dans mon architecture originale. Par exemple. On a pas trouv\u00e9 de methode simple pour d\u00e9couper les images des fen\u00eatres de mani\u00e8re thread safe. Il aurait donc fallu ajouter des boucles en pr\u00e9alable pour tout d\u00e9couper et le faire de mani\u00e8re s\u00e9quencielle. Ensuite vient le probl\u00e8me que si on traite toutes les donn\u00e9es dans des boucless paralelle on perds leur position originale donc il faut faire une classe pour stocker les r\u00e9sultats temporaires. Il y a aussi le soucis que les Windows ont certe une position mais elle est relative au parent et \u00e0 l'image parente. Donc il faudra faire un syst\u00e8me qui convertis les windows en position absolue sur l'image. Ca peut para\u00eetre \u00eatre de simples changements mais deja il y en a pas mal d'autres et franchement m\u00eame si l'id\u00e9e originale aurait pu simplifier les choses. Les sacrifices que l'on doit faire pour la faire marcher sont juste trop moches et \u00e0 mon avis ne sont pas du tout aussi logiques que mon d\u00e9coupage original. Cette exp\u00e9rience m'a quand m\u00eame permis de me rendre compte des endroits dans mon code qui sont plus ou moins difficile \u00e0 maintenir et cela m'a fait me rendre compte que ma solution n'\u00e9tait pas forc\u00e9ment la plus simple pour tout le monde mais que mine de rien elle peut \u00eatre efficace. La je suis en train de rajouter les routes pour la vue. Je me suis dit que ca serait une bonne id\u00e9e de permettre aux users de cliquer sur un pilote pour avoir ses infos. Mais je me suis dit que ce qui serait encore plus cool serait de pouvoir cliquer sur un des temps au tour d'un pilote et qu'une petite fen\u00eatre s'ouvre pour indiquer les temps par secteurs. Mais en faisant ca je me rends compte qu'il y a quelques soucis dans la facon que je conserve les infos dans la DB et je peux voir directement quand la reconnaissance a du mal avec certains pilotes ou des positions. Ca arrive plus souvent que ce que je voudrais que un pilote soit mal detect\u00e9. Mais ce qui est dr\u00f4le c'est que c'est parfois sur une deux voire trois reconnaissance que le pilote n'est plus reconnu mais ensuite tout va bien. Il faut que je travaille un peu plus sur le filtrage de ces donn\u00e9es limites et peut-\u00eatre de voir si la reconnaissance de la position pourrait \u00eatre un peu v\u00e9rifi\u00e9e. Bon pour \u00eatre honn\u00eate je ne pense pas que le code qui concerne l'affichage soit le meilleur code que j'aie pu produire dans ma vie de d\u00e9veloppeur mais en m\u00eame temps je n'ai pas forc\u00e9ment le temps de le rendre magnifique. La le but est simplement que tout marche. (Et c'est un peu la m\u00eame phylosophie dans tout le reste du projet lol) Demain il me reste pas mal de choses \u00e0 faire et c'est la derni\u00e8re journ\u00e9e ou je peux les faire. Rendre la form plus jolie et changer les couleurs Rendre la form Responsive Ajouter les bons messages d'erreur qui vont bien Modifier les messageBox d'erreur pour qu'elles soient plus agr\u00e9ables \u00e0 utiliser Clean un peu le code mod\u00e8le vue controller Si j'ai le temps ajouter les bons commentaires les bonnes ent\u00eates partout","title":"Mercredi 24 Mai 2023"},{"location":"jdb.html#jeudi-25-mai-2023","text":"Bon bah le but aujourd'hui c'est de finaliser un peu le projet car la semaine prochaine c'est doc. Pas grand chose \u00e0 dire. J'ai pass\u00e9 la journ\u00e9e \u00e0 fix des petits bugs par ci par la. Voici des exemples de ce \u00e0 quoi ressemble l'app \u00e0 la fin de la journ\u00e9e : \"Screenshot de la page principale\" \"Screenshot de la page principale\" On se rend jamais compte mais c'est tellement long de r\u00e8gler chaque petit soucis un par un. Il y a tellement de possibilit\u00e9s de choses qui peuvent mal tourner ou qui ont un comportement diff\u00e9rent selon l'ordre dans lequel on fait les choses. Mais dans l'ensemble, m\u00eame si on est pas sur la meilleure interface que l'on aie vu dans l'histoire. Je trouve que elle fait quand m\u00eame le taff.","title":"Jeudi 25 Mai 2023"},{"location":"jdb.html#vendredi-26-mai-2023","text":"Aujourd'hui c'est d\u00e9part pour Monaco mais comme l'avion etait bien en retard j'ai pu avancer sur le nettoyage du code.","title":"Vendredi 26 Mai 2023"},{"location":"jdb.html#grand-prix-de-monaco","text":"[Insert photos]","title":"Grand Prix de Monaco"},{"location":"jdb.html#lundi-29-mai-2023","text":"Mon vol pour Geneve hier soit a \u00e9t\u00e9 annul\u00e9 et je dois donc prendre une deviation car tous les vols pour Geneve sont pleins. Je dois partir a 7h30 pour prende l'avion de 9H pour Nantes et de la bas je dois prendre un avion \u00e0 17h pour arriver \u00e0 18h30 \u00e0 l'a\u00e9roport de Geneve. C'est pas pratique car j'avais pr\u00e9vu d'avancer aujourd'hui et je suis oblig\u00e9 d'avancer comme je peux dans l'a\u00e9roport. J'avance encore sur le nettoyage rapide du code. Le but est que demain je puisse sortir la premi\u00e8re release en Beta et que je mette vraiment serieusement \u00e0 la Documentation. M.Jayr m'a \u00e9galement demand\u00e9 de lui donner le document d'\u00e9valuation interm\u00e9diaire. Il ne faut pas que j'oublie demain. J'ai mis des notes sur mon code au cas ou des gens viennent \u00e0 le lire. J'y d\u00e9cris les choses que j'aurais fait diff\u00e9remment ou qui pourraient para\u00eetre bizarre au tout venant.","title":"Lundi 29 Mai 2023"},{"location":"jdb.html#mardi-30-mai-2023","text":"Bon aujourd'hui je dois encore avancer sur la partie nettoyage de code et avant de sortir la premi\u00e8re release Beta je vais tenter d'installer le projet sur un autre pc pour voir ce que je n'ai pas mentionn\u00e9 dans mon ReadMe. Bon j'ai pu rendre \u00e0 M.Jayr mon evaluation interm\u00e9diaire et j'ai fait les derni\u00e8res modifications sur le projet pour que je puisse sortir une release correcte. Maintenant je vais me mettre \u00e0 la documentation. Il va falloir que je revoie ce que j'ai d\u00e9ja \u00e9crit en ce qui concerne l'OCR car j'ai fait des modifications depuis et j'ai ajout\u00e9 la methode de SOBEL. Il faut peut-\u00eatre aussi que je parle vite fait dans la partie Emulation que j'ai du changer les variables d'environnement pour faire fonctionner le syst\u00e8me en 4K.","title":"Mardi 30 Mai 2023"},{"location":"jdb.html#mercredi-31-mai-2023","text":"Doc","title":"Mercredi 31 Mai 2023"},{"location":"jdb.html#jeudi-1-juin-2023","text":"Bon je me suis rendu compte que je n'avais fait vraiment aucuns tests et que c'est franchement bof. Je pense que ce que je devrais faire pour faire des tests unitaires c'est prendre des exemples de chaque type de windows possibles en plusieurs exemplaires. Ensuite je note le r\u00e9sultat que j'attends et je regarde si ca me retourne la bonne valeur. Mais ca veut dire que ca va me prendre pas mal de temps de tout mettre en place mais ca m'aurait s\u00fbrement fait gagner beaucoup de temps si je l'avais fait d\u00e8s le d\u00e9but... Je pense que une bonne id\u00e9e serait de prendre trois Grand Prix et de prendre une photo de chaque type de window au d\u00e9but et \u00e0 la fin. Plus je regarde plus je me rend compte que ce pojet aurait carr\u00e9ment du \u00eatre en TDD (Test Driven Developement) par ce que ca m'aurait fait gagner un temps FOU. OK JE SUIS DEBILE POURQUOI J'AI PAS FAIT CA PLUS T\u00d4T ??? En fait ce que j'aurais du faire c'est prendre de gros \u00e9chantillons de toutes les types de windows et j'aurais un parfait framework pour savoir si j'ai am\u00e9lior\u00e9 mon OCR ou non. Voici les exemples que je vais utiliser pour verifier le bon fonctionnement de l'OCR : \"Dataset Ecarts\" ; \"Dataset Tours\" ; \"Dataset Noms\" ; \"Dataset Positions\" ; \"Dataset Sectors\" ; \"Dataset Tyres\" ; Je pense que c'est un set assez correct car j'ai essay\u00e9 de prendre un peu tous les cas possibles. Le seul qui m'inqui\u00e8te un peu c'est celui des pneus mais bon. C'est aussi celui qui m'inqui\u00e8te le plus en temps normal. Non mais c'est juste g\u00e9nial les tests en fait... j'avais pas vu que parfois ma detection de GAP TO LEADER comprenait le \"+1:34.567\" en \"61:34.567\" car le '+' \u00e9tait interpr\u00eat\u00e9 comme un 6. Sans les tests je ne m'en serais pas rendu compte. Ce qui est g\u00e9nial c'est que ca veut dire que si je veux am\u00e9liorer mon OCR j'ai juste \u00e0 mettre plus d'exemples dans le dossier de tests et de run les tests et voir ou il a des soucis. C'est un peu tard mais ca m'aurait fait gagner TELLEMENT de temps c'est absolument ridicule.","title":"Jeudi 1 Juin 2023"},{"location":"jdb.html#vendredi-2-juin-2023","text":"Aujourd'hui c'est de nouveau doc. Mais la je pense qu'il faut que je rajoute une rubrique \"Fonctionnement g\u00e9n\u00e9ral\" qui r\u00e9sume tr\u00e8s simplement toutes les \u00e9tapes du projet avec un bon diagramme. En fait c'est beaucoup plus dur que ce que je pensais de faire un bon diagramme qui explique tout sans \u00eatre illisible. J'ai mis une heure trente \u00e0 faire celui la : \"Diagramme fonctionnement g\u00e9n\u00e9ral\" J'ai pris pas mal de temps aussi \u00e0 faire ces trois autre diagrammes un peu plus graphiques qui montrent de mani\u00e8re un poil plus abstraite le fonctionnement des trois grosses parties du projet. \"Diagramme recup\u00e9ration d'images\" \"Diagramme OCR\" \"Diagramme Traitement\" Je pense qu'ils sont un peu plus faciles \u00e0 comprendre que le gros diagramme g\u00e9n\u00e9ral. Ce que je me dis c'est que je vais faire une section fonctionnement g\u00e9n\u00e9ral ou je vais expliquer les trois parties avec les petits diagramme et r\u00e9sumer avec le grand diagramme.","title":"Vendredi 2 Juin 2023"},{"location":"jdb.html#lundi-5-juin-2023","text":"Ce weekend j'ai voulu essayer le projet pour le Grand Prix de Barcelone qui s'est sold\u00e9 en un \u00e9chec cuisant... J'ai eu trois soucis pour l'utilisation du programme. Les voici dans l'ordre croissant d'importance et de difficult\u00e9 \u00e0 r\u00e8gler : Mon Laptop est incapable de rester plus d'une heure allum\u00e9 m\u00eame compl\u00eatement charg\u00e9 \u00e0 100% Le WIFI de chez moi a du mal \u00e0 g\u00e8rer plusieurs flux 1080p en m\u00eame temps et donc le temps de chargement est trop long ce qui me fait des erreurs 105 \"Ce que voyait le programme pendant les erreurs 105 ce dimanche\" Le fait que quand un flux est en live, quand on clique dessus, un nouveau bouton appar\u00e2it qui n'\u00e9tait pas pr\u00e9vu et qui nous propose de regarder depuis le d\u00e9but ou en live. Le soucis avec ce bouton c'est qu'il n'est pr\u00e9sent que pour les sessions live... Il va donc falloir attendre le prochain GP (Canada 18 Juin) pour faire un test en conditions r\u00e9elles. \"Ce que voyait le programme avant que j'essaie d'impl\u00e9menter le click auto\" J'ai essay\u00e9 de r\u00e8gler le probl\u00e8me en Live, le soucis c'est que j'ai un commentaire \u00e0 fournir pendant la course et donc je n'ai pas eu le temps de plus me pencher sur le cas. Le weekend du prochain Grand Prix je vais essayer de tester sur les sc\u00e9ances d'essais libres.le click du bouton et j'amenerai mon cable chez moi. Bon sinon aujourd'hui, comme d'hab, Doc... Je vais faire le manuel utilisateur. J'ai fait un manuel qui d\u00e9crit \u00e0 peu pr\u00e8s tout ce qui'il faut savoir pour bien utiliser l'app. Cela fait un document un peu long mais je pense que c'est nescessaire car c'est vraiment pas une app facile \u00e0 comprendre quand on ne vient pas du milieu de la F1 (et m\u00eame la...)","title":"Lundi 5 Juin 2023"},{"location":"jdb.html#mardi-6-juin-2023","text":"Aujourd'hui je vais continuer \u00e0 documenter... Ma methode pour l'instant c'est juste de remplir les titres que j'ai pr\u00e9vu au d\u00e9part. Ensuite \u00e0 partir de jeudi (je pense que c'est \u00e0 partir de cette date que j'aurai un peu tout rempli) j'aimerais bien relire la grille d'\u00e9valuation et ensuite faire une lecture de mon journal de bord pour v\u00e9rifier que je n'ai rien oubli\u00e9. Et le but c'est de finir la doc Vendredi soir pour faire une derni\u00e8re release doc + projet. Un coll\u00e8gue M.Briard m'a pas mal aid\u00e9 avec la configuration de mon mkdocs et il a d\u00e9velopp\u00e9 une extension pour ajouter le code source au PDF final. La il est en train de regarder si il peut trouver un moyen de faire une table des figures qui nous est demand\u00e9e. (j'ai plus de 200 images dans ma documentation alors si c'est possible de ne pas avoir \u00e0 faire une table des figures \u00e0 la main je prends)","title":"Mardi 6 Juin 2023"},{"location":"jdb.html#mercredi-7-juin","text":"La je suis en train de parler de l'optimisation de mon application et je viens de me rappeller qu'il manquait des methodes avec de la paralellisation alors je vais les convertir avant de continuer la doc. En fait je viens de me rendre compte qu'aucunes de mes methodes de filtres n'\u00e9taient en parralel... Je ne sais pas si jaurai le temps de le faire aujourd'hui en fait public static Bitmap Grayscale ( Bitmap inputBitmap ) { Rectangle rect = new Rectangle ( 0 , 0 , inputBitmap . Width , inputBitmap . Height ); BitmapData bmpData = inputBitmap . LockBits ( rect , ImageLockMode . ReadWrite , inputBitmap . PixelFormat ); int bytesPerPixel = Bitmap . GetPixelFormatSize ( inputBitmap . PixelFormat ) / 8 ; unsafe { byte * ptr = ( byte *) bmpData . Scan0 . ToPointer (); for ( int y = 0 ; y < inputBitmap . Height ; y ++) { byte * currentLine = ptr + ( y * bmpData . Stride ); for ( int x = 0 ; x < inputBitmap . Width ; x ++) { byte * pixel = currentLine + ( x * bytesPerPixel ); byte blue = pixel [ 0 ]; byte green = pixel [ 1 ]; byte red = pixel [ 2 ]; //Those a specific values to correct the weights so its more pleasing to the human eye int gray = ( int )( red * 0.3 + green * 0.59 + blue * 0.11 ); //This is not a proper treshold method but it is helping the sobel edge detection if ( gray <= F1TV_BACKGROUND_TRESHOLD . R ) { pixel [ 0 ] = pixel [ 1 ] = pixel [ 2 ] = 0 ; } else { pixel [ 0 ] = pixel [ 1 ] = pixel [ 2 ] = ( byte ) gray ; } } } } inputBitmap . UnlockBits ( bmpData ); return inputBitmap ; }","title":"Mercredi 7 Juin"},{"location":"Code/ConfigurationTool.html","text":"ConfigurationTool.cs /// Author : Maxime Rohmer /// Date : 30/05/2023 /// File : ConfigurationTool.cs /// Brief : Class that contains all the methods used to create config files for the main programm /// Version : Alpha 1.0 using System ; using System.Collections.Generic ; using System.Drawing ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; using Tesseract ; using System.IO ; using System.Text.Json ; using System.Text.Json.Nodes ; namespace TrackTrends { public class ConfigurationTool { public Zone MainZone ; public const int NUMBER_OF_DRIVERS = 20 ; public const int NUMBER_OF_ZONES = 9 ; public const string CONFIGS_FOLDER_NAME = \"./Presets/\" ; ///

    /// Creates the configuration tool. It can only be created if you already have the dimensions of the main zone /// /// The full image coming from the F1TV Data Channel /// The dimensions of the zone where all the drivers data are situated public ConfigurationTool ( Bitmap fullImage , Rectangle mainZoneDimensions ) { MainZone = new Zone ( fullImage , mainZoneDimensions , \"Main\" ); AutoCalibrate (); } /// /// Resets the main zone /// public void ResetMainZone () { MainZone . ResetZones (); } /// /// Reset the windows /// public void ResetWindows () { MainZone . ResetWindows (); } /// /// Save the current config in a JSON file stored in /Presets/ /// /// A list of all the drivers in the GP. IMPORTANT, they need to ALL be mentionned or the program wont be able to detect the missing ones and will F up everything /// The name the config should have public void SaveToJson ( List < string > drivers , string configName ) { string JSON = \"\" ; JsonObject jsonFileObject = new JsonObject (); //Creates the mainZone object JsonObject mainZoneObject = new JsonObject (); mainZoneObject . Add ( \"x\" , MainZone . Bounds . X ); mainZoneObject . Add ( \"y\" , MainZone . Bounds . Y ); mainZoneObject . Add ( \"width\" , MainZone . Bounds . Width ); mainZoneObject . Add ( \"height\" , MainZone . Bounds . Height ); JsonArray driverZonesArray = new JsonArray (); //Creates all the subzones that contain driver infos int DriverID = 0 ; foreach ( Zone driverZone in MainZone . Zones ) { DriverID ++; JsonObject driverZoneObject = new JsonObject (); driverZoneObject . Add ( \"name\" , \"Driver\" + DriverID ); driverZoneObject . Add ( \"x\" , driverZone . Bounds . X ); driverZoneObject . Add ( \"y\" , driverZone . Bounds . Y ); driverZoneObject . Add ( \"width\" , driverZone . Bounds . Width ); driverZoneObject . Add ( \"height\" , driverZone . Bounds . Height ); JsonArray windowsArray = new JsonArray (); JsonObject windowObject = new JsonObject (); //Creates all the windows of the current driver zone //Note : We store ALL the windows and zones in the JSON because they are not spaced exactly the same on the main zone foreach ( Window window in driverZone . Windows ) { windowObject . Add ( window . Name , new JsonObject { { \"x\" , window . Bounds . X }, { \"y\" , window . Bounds . Y }, { \"width\" , window . Bounds . Width }, { \"height\" , window . Bounds . Height } }); } windowsArray . Add ( windowObject ); driverZoneObject . Add ( \"Windows\" , windowsArray ); driverZonesArray . Add ( driverZoneObject ); } mainZoneObject . Add ( \"DriverZones\" , driverZonesArray ); JsonArray driversArray = new JsonArray (); foreach ( string driver in drivers ) { driversArray . Add ( driver ); } mainZoneObject . Add ( \"Drivers\" , driversArray ); jsonFileObject . Add ( \"Main\" , mainZoneObject ); JSON = jsonFileObject . ToString (); //Saving the file string path = CONFIGS_FOLDER_NAME + configName ; if ( File . Exists ( path + \".json\" )) { //We need to create a new name int count = 2 ; while ( File . Exists ( path + \"_\" + count + \".json\" )) { count ++; } path += \"_\" + count + \".json\" ; } else { path += \".json\" ; } File . WriteAllText ( path , JSON ); } /// /// Adds a window in the windows list /// Be carefull of the order. It cant be random or it will crash. The programm expect the first to be position, second Gap to leader etc... /// /// The bounds of the window public void AddWindows ( List < Rectangle > rectangles ) { foreach ( Zone driverZone in MainZone . Zones ) { Bitmap zoneImage = driverZone . ZoneImage ; for ( int i = 1 ; i <= rectangles . Count ; i ++) { switch ( i ) { case 1 : //First zone should be the driver's Position driverZone . AddWindow ( new DriverPositionWindow ( driverZone . ZoneImage , rectangles [ i - 1 ], false )); break ; case 2 : //Second zone should be the Gap to leader driverZone . AddWindow ( new DriverGapToLeaderWindow ( driverZone . ZoneImage , rectangles [ i - 1 ], false )); break ; case 3 : //Third zone should be the driver's Lap Time driverZone . AddWindow ( new DriverLapTimeWindow ( driverZone . ZoneImage , rectangles [ i - 1 ], false )); break ; case 4 : //Fourth zone should be the driver's DRS status driverZone . AddWindow ( new DriverDrsWindow ( driverZone . ZoneImage , rectangles [ i - 1 ], false )); break ; case 5 : //Fifth zone should be the driver's Tyre's informations driverZone . AddWindow ( new DriverTyresWindow ( driverZone . ZoneImage , rectangles [ i - 1 ], false )); break ; case 6 : //Sixth zone should be the driver's Name driverZone . AddWindow ( new DriverNameWindow ( driverZone . ZoneImage , rectangles [ i - 1 ], false )); break ; case 7 : //Seventh zone should be the driver's First Sector driverZone . AddWindow ( new DriverSectorWindow ( driverZone . ZoneImage , rectangles [ i - 1 ], 1 , false )); break ; case 8 : //Zone number eight should be the driver's Second Sector driverZone . AddWindow ( new DriverSectorWindow ( driverZone . ZoneImage , rectangles [ i - 1 ], 2 , false )); break ; case 9 : //Zone number nine should be the driver's Position Sector driverZone . AddWindow ( new DriverSectorWindow ( driverZone . ZoneImage , rectangles [ i - 1 ], 3 , false )); break ; } } } } /// /// This will automatically create all the driver zones at the correct places if the main zone has been weel positionned /// You cant just divide the image by the number of pilots or it will be messy and inconsistent at the end (Garbage in Garbage Out) /// public void AutoCalibrate () { List < Rectangle > detectedText = new List < Rectangle >(); List < Zone > zones = new List < Zone >(); TesseractEngine engine = new TesseractEngine ( Window . TESS_DATA_FOLDER . FullName , \"eng\" , EngineMode . Default ); Image image = MainZone . ZoneImage ; var tessImage = Pix . LoadFromMemory ( Window . ImageToByte ( image )); Page page = engine . Process ( tessImage ); //Runs a quick OCR detection. Not to detect any content but just to detect where is all the text positionned. //For each row it decides the best Zone location and adds it to the Driver zone list using ( var iter = page . GetIterator ()) { iter . Begin (); do { Rect boundingBox ; if ( iter . TryGetBoundingBox ( PageIteratorLevel . Word , out boundingBox )) { //We remove all the rectangles that are definitely too big if ( boundingBox . Height < image . Height / NUMBER_OF_DRIVERS ) { //Now we add a filter to only get the boxes in the right because they are much more reliable in size if ( boundingBox . X1 > image . Width / 2 ) { //Now we check if an other square box has been found roughly in the same y axis bool match = false ; //The tolerance is roughly half the size that a window will be int tolerance = ( image . Height / NUMBER_OF_DRIVERS ) / 2 ; foreach ( Rectangle rect in detectedText ) { if ( rect . Y > boundingBox . Y1 - tolerance && rect . Y < boundingBox . Y1 + tolerance ) { //There already is a rectangle in this line match = true ; } } //if nothing matched we can add it if (! match ) detectedText . Add ( new Rectangle ( boundingBox . X1 , boundingBox . Y1 , boundingBox . Width , boundingBox . Height )); } } } } while ( iter . Next ( PageIteratorLevel . Word )); } //DEBUG int i = 1 ; foreach ( Rectangle Rectangle in detectedText ) { Rectangle windowRectangle ; Size windowSize = new Size ( image . Width , image . Height / NUMBER_OF_DRIVERS ); Point windowLocation = new Point ( 0 , ( Rectangle . Y + Rectangle . Height / 2 ) - windowSize . Height / 2 ); windowRectangle = new Rectangle ( windowLocation , windowSize ); //We add the driver zones Zone driverZone = new Zone ( MainZone . ZoneImage , windowRectangle , \"DriverZone\" ); MainZone . AddZone ( driverZone ); //driverZone.ZoneImage.Save(\"Driver\" + i+\".png\"); i ++; } } } }","title":"ConfigurationTool.cs"},{"location":"Code/ConfigurationTool.html#configurationtoolcs","text":"/// Author : Maxime Rohmer /// Date : 30/05/2023 /// File : ConfigurationTool.cs /// Brief : Class that contains all the methods used to create config files for the main programm /// Version : Alpha 1.0 using System ; using System.Collections.Generic ; using System.Drawing ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; using Tesseract ; using System.IO ; using System.Text.Json ; using System.Text.Json.Nodes ; namespace TrackTrends { public class ConfigurationTool { public Zone MainZone ; public const int NUMBER_OF_DRIVERS = 20 ; public const int NUMBER_OF_ZONES = 9 ; public const string CONFIGS_FOLDER_NAME = \"./Presets/\" ; /// /// Creates the configuration tool. It can only be created if you already have the dimensions of the main zone /// /// The full image coming from the F1TV Data Channel /// The dimensions of the zone where all the drivers data are situated public ConfigurationTool ( Bitmap fullImage , Rectangle mainZoneDimensions ) { MainZone = new Zone ( fullImage , mainZoneDimensions , \"Main\" ); AutoCalibrate (); } /// /// Resets the main zone /// public void ResetMainZone () { MainZone . ResetZones (); } /// /// Reset the windows /// public void ResetWindows () { MainZone . ResetWindows (); } /// /// Save the current config in a JSON file stored in /Presets/ /// /// A list of all the drivers in the GP. IMPORTANT, they need to ALL be mentionned or the program wont be able to detect the missing ones and will F up everything /// The name the config should have public void SaveToJson ( List < string > drivers , string configName ) { string JSON = \"\" ; JsonObject jsonFileObject = new JsonObject (); //Creates the mainZone object JsonObject mainZoneObject = new JsonObject (); mainZoneObject . Add ( \"x\" , MainZone . Bounds . X ); mainZoneObject . Add ( \"y\" , MainZone . Bounds . Y ); mainZoneObject . Add ( \"width\" , MainZone . Bounds . Width ); mainZoneObject . Add ( \"height\" , MainZone . Bounds . Height ); JsonArray driverZonesArray = new JsonArray (); //Creates all the subzones that contain driver infos int DriverID = 0 ; foreach ( Zone driverZone in MainZone . Zones ) { DriverID ++; JsonObject driverZoneObject = new JsonObject (); driverZoneObject . Add ( \"name\" , \"Driver\" + DriverID ); driverZoneObject . Add ( \"x\" , driverZone . Bounds . X ); driverZoneObject . Add ( \"y\" , driverZone . Bounds . Y ); driverZoneObject . Add ( \"width\" , driverZone . Bounds . Width ); driverZoneObject . Add ( \"height\" , driverZone . Bounds . Height ); JsonArray windowsArray = new JsonArray (); JsonObject windowObject = new JsonObject (); //Creates all the windows of the current driver zone //Note : We store ALL the windows and zones in the JSON because they are not spaced exactly the same on the main zone foreach ( Window window in driverZone . Windows ) { windowObject . Add ( window . Name , new JsonObject { { \"x\" , window . Bounds . X }, { \"y\" , window . Bounds . Y }, { \"width\" , window . Bounds . Width }, { \"height\" , window . Bounds . Height } }); } windowsArray . Add ( windowObject ); driverZoneObject . Add ( \"Windows\" , windowsArray ); driverZonesArray . Add ( driverZoneObject ); } mainZoneObject . Add ( \"DriverZones\" , driverZonesArray ); JsonArray driversArray = new JsonArray (); foreach ( string driver in drivers ) { driversArray . Add ( driver ); } mainZoneObject . Add ( \"Drivers\" , driversArray ); jsonFileObject . Add ( \"Main\" , mainZoneObject ); JSON = jsonFileObject . ToString (); //Saving the file string path = CONFIGS_FOLDER_NAME + configName ; if ( File . Exists ( path + \".json\" )) { //We need to create a new name int count = 2 ; while ( File . Exists ( path + \"_\" + count + \".json\" )) { count ++; } path += \"_\" + count + \".json\" ; } else { path += \".json\" ; } File . WriteAllText ( path , JSON ); } /// /// Adds a window in the windows list /// Be carefull of the order. It cant be random or it will crash. The programm expect the first to be position, second Gap to leader etc... /// /// The bounds of the window public void AddWindows ( List < Rectangle > rectangles ) { foreach ( Zone driverZone in MainZone . Zones ) { Bitmap zoneImage = driverZone . ZoneImage ; for ( int i = 1 ; i <= rectangles . Count ; i ++) { switch ( i ) { case 1 : //First zone should be the driver's Position driverZone . AddWindow ( new DriverPositionWindow ( driverZone . ZoneImage , rectangles [ i - 1 ], false )); break ; case 2 : //Second zone should be the Gap to leader driverZone . AddWindow ( new DriverGapToLeaderWindow ( driverZone . ZoneImage , rectangles [ i - 1 ], false )); break ; case 3 : //Third zone should be the driver's Lap Time driverZone . AddWindow ( new DriverLapTimeWindow ( driverZone . ZoneImage , rectangles [ i - 1 ], false )); break ; case 4 : //Fourth zone should be the driver's DRS status driverZone . AddWindow ( new DriverDrsWindow ( driverZone . ZoneImage , rectangles [ i - 1 ], false )); break ; case 5 : //Fifth zone should be the driver's Tyre's informations driverZone . AddWindow ( new DriverTyresWindow ( driverZone . ZoneImage , rectangles [ i - 1 ], false )); break ; case 6 : //Sixth zone should be the driver's Name driverZone . AddWindow ( new DriverNameWindow ( driverZone . ZoneImage , rectangles [ i - 1 ], false )); break ; case 7 : //Seventh zone should be the driver's First Sector driverZone . AddWindow ( new DriverSectorWindow ( driverZone . ZoneImage , rectangles [ i - 1 ], 1 , false )); break ; case 8 : //Zone number eight should be the driver's Second Sector driverZone . AddWindow ( new DriverSectorWindow ( driverZone . ZoneImage , rectangles [ i - 1 ], 2 , false )); break ; case 9 : //Zone number nine should be the driver's Position Sector driverZone . AddWindow ( new DriverSectorWindow ( driverZone . ZoneImage , rectangles [ i - 1 ], 3 , false )); break ; } } } } /// /// This will automatically create all the driver zones at the correct places if the main zone has been weel positionned /// You cant just divide the image by the number of pilots or it will be messy and inconsistent at the end (Garbage in Garbage Out) /// public void AutoCalibrate () { List < Rectangle > detectedText = new List < Rectangle >(); List < Zone > zones = new List < Zone >(); TesseractEngine engine = new TesseractEngine ( Window . TESS_DATA_FOLDER . FullName , \"eng\" , EngineMode . Default ); Image image = MainZone . ZoneImage ; var tessImage = Pix . LoadFromMemory ( Window . ImageToByte ( image )); Page page = engine . Process ( tessImage ); //Runs a quick OCR detection. Not to detect any content but just to detect where is all the text positionned. //For each row it decides the best Zone location and adds it to the Driver zone list using ( var iter = page . GetIterator ()) { iter . Begin (); do { Rect boundingBox ; if ( iter . TryGetBoundingBox ( PageIteratorLevel . Word , out boundingBox )) { //We remove all the rectangles that are definitely too big if ( boundingBox . Height < image . Height / NUMBER_OF_DRIVERS ) { //Now we add a filter to only get the boxes in the right because they are much more reliable in size if ( boundingBox . X1 > image . Width / 2 ) { //Now we check if an other square box has been found roughly in the same y axis bool match = false ; //The tolerance is roughly half the size that a window will be int tolerance = ( image . Height / NUMBER_OF_DRIVERS ) / 2 ; foreach ( Rectangle rect in detectedText ) { if ( rect . Y > boundingBox . Y1 - tolerance && rect . Y < boundingBox . Y1 + tolerance ) { //There already is a rectangle in this line match = true ; } } //if nothing matched we can add it if (! match ) detectedText . Add ( new Rectangle ( boundingBox . X1 , boundingBox . Y1 , boundingBox . Width , boundingBox . Height )); } } } } while ( iter . Next ( PageIteratorLevel . Word )); } //DEBUG int i = 1 ; foreach ( Rectangle Rectangle in detectedText ) { Rectangle windowRectangle ; Size windowSize = new Size ( image . Width , image . Height / NUMBER_OF_DRIVERS ); Point windowLocation = new Point ( 0 , ( Rectangle . Y + Rectangle . Height / 2 ) - windowSize . Height / 2 ); windowRectangle = new Rectangle ( windowLocation , windowSize ); //We add the driver zones Zone driverZone = new Zone ( MainZone . ZoneImage , windowRectangle , \"DriverZone\" ); MainZone . AddZone ( driverZone ); //driverZone.ZoneImage.Save(\"Driver\" + i+\".png\"); i ++; } } } }","title":"ConfigurationTool.cs"},{"location":"Code/DriverData.html","text":"DriverData.cs /// Author : Maxime Rohmer /// Date : 30/05/2023 /// File : DriverData.cs /// Brief : File containing classes that behave just like structures to store data about drivers /// Version : Alpha 1.0 using System ; using System.Collections.Generic ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; namespace TrackTrends { public class DriverData { public bool DRS ; //True = Drs is opened public int GapToLeader ; //In ms public int LapTime ; //In ms public string Name ; //Ex: LECLERC public int Position ; //Ex: 1 public int Sector1 ; //in ms public int Sector2 ; //in ms public int Sector3 ; //in ms public Tyre CurrentTyre ; //Ex Soft 11 laps public DriverData ( bool dRS , int gapToLeader , int lapTime , string name , int position , int sector1 , int sector2 , int sector3 , Tyre tyre ) { DRS = dRS ; GapToLeader = gapToLeader ; LapTime = lapTime ; Name = name ; Position = position ; Sector1 = sector1 ; Sector2 = sector2 ; Sector3 = sector3 ; CurrentTyre = tyre ; } /// /// Creates a default driver data with empty values /// public DriverData () { DRS = false ; GapToLeader = - 1 ; LapTime = - 1 ; Name = \"Unknown\" ; Position = - 1 ; Sector1 = - 1 ; Sector2 = - 1 ; Sector3 = - 1 ; CurrentTyre = new Tyre ( Tyre . Type . Undefined , - 1 ); } /// /// Method that displays all the data found in a string /// /// string containing all the driver datas public override string ToString () { string result = \"\" ; //Position result += \"Position : \" + Position + Environment . NewLine ; //Gap result += \"GapToLeader : \" + Reader . ConvertMsToTime ( GapToLeader ) + Environment . NewLine ; //LapTime result += \"LapTime : \" + Reader . ConvertMsToTime ( LapTime ) + Environment . NewLine ; //DRS result += \"DRS : \" + DRS + Environment . NewLine ; //Tyres result += \"Uses \" + CurrentTyre . Coumpound + \" tyre \" + CurrentTyre . NumberOfLaps + \" laps old\" + Environment . NewLine ; //Name result += \"DriverName : \" + Name + Environment . NewLine ; //Sector 1 result += \"Sector1 : \" + Reader . ConvertMsToTime ( Sector1 ) + Environment . NewLine ; //Sector 1 result += \"Sector2 : \" + Reader . ConvertMsToTime ( Sector2 ) + Environment . NewLine ; //Sector 1 result += \"Sector3 : \" + Reader . ConvertMsToTime ( Sector3 ) + Environment . NewLine ; return result ; } } //Structure to store tyres infos public struct Tyre { //If new tyres were to be added you will have to need to change this enum public enum Type { Soft , Medium , Hard , Inter , Wet , Undefined } public Type Coumpound ; public int NumberOfLaps ; public Tyre ( Type type , int laps ) { Coumpound = type ; NumberOfLaps = laps ; } } }","title":"DriverData.cs"},{"location":"Code/DriverData.html#driverdatacs","text":"/// Author : Maxime Rohmer /// Date : 30/05/2023 /// File : DriverData.cs /// Brief : File containing classes that behave just like structures to store data about drivers /// Version : Alpha 1.0 using System ; using System.Collections.Generic ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; namespace TrackTrends { public class DriverData { public bool DRS ; //True = Drs is opened public int GapToLeader ; //In ms public int LapTime ; //In ms public string Name ; //Ex: LECLERC public int Position ; //Ex: 1 public int Sector1 ; //in ms public int Sector2 ; //in ms public int Sector3 ; //in ms public Tyre CurrentTyre ; //Ex Soft 11 laps public DriverData ( bool dRS , int gapToLeader , int lapTime , string name , int position , int sector1 , int sector2 , int sector3 , Tyre tyre ) { DRS = dRS ; GapToLeader = gapToLeader ; LapTime = lapTime ; Name = name ; Position = position ; Sector1 = sector1 ; Sector2 = sector2 ; Sector3 = sector3 ; CurrentTyre = tyre ; } /// /// Creates a default driver data with empty values /// public DriverData () { DRS = false ; GapToLeader = - 1 ; LapTime = - 1 ; Name = \"Unknown\" ; Position = - 1 ; Sector1 = - 1 ; Sector2 = - 1 ; Sector3 = - 1 ; CurrentTyre = new Tyre ( Tyre . Type . Undefined , - 1 ); } /// /// Method that displays all the data found in a string /// /// string containing all the driver datas public override string ToString () { string result = \"\" ; //Position result += \"Position : \" + Position + Environment . NewLine ; //Gap result += \"GapToLeader : \" + Reader . ConvertMsToTime ( GapToLeader ) + Environment . NewLine ; //LapTime result += \"LapTime : \" + Reader . ConvertMsToTime ( LapTime ) + Environment . NewLine ; //DRS result += \"DRS : \" + DRS + Environment . NewLine ; //Tyres result += \"Uses \" + CurrentTyre . Coumpound + \" tyre \" + CurrentTyre . NumberOfLaps + \" laps old\" + Environment . NewLine ; //Name result += \"DriverName : \" + Name + Environment . NewLine ; //Sector 1 result += \"Sector1 : \" + Reader . ConvertMsToTime ( Sector1 ) + Environment . NewLine ; //Sector 1 result += \"Sector2 : \" + Reader . ConvertMsToTime ( Sector2 ) + Environment . NewLine ; //Sector 1 result += \"Sector3 : \" + Reader . ConvertMsToTime ( Sector3 ) + Environment . NewLine ; return result ; } } //Structure to store tyres infos public struct Tyre { //If new tyres were to be added you will have to need to change this enum public enum Type { Soft , Medium , Hard , Inter , Wet , Undefined } public Type Coumpound ; public int NumberOfLaps ; public Tyre ( Type type , int laps ) { Coumpound = type ; NumberOfLaps = laps ; } } }","title":"DriverData.cs"},{"location":"Code/DriverGapToLeaderWindow.html","text":"DriverGapToLeaderWindow.cs /// Author : Maxime Rohmer /// Date : 30/05/2023 /// File : DriverGapToLeaderWindow.cs /// Brief : Window containing infos about the gap to the leader of a driver /// Version : Alpha 1.0 using System ; using System.Collections.Generic ; using System.Drawing ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; namespace TrackTrends { public class DriverGapToLeaderWindow : Window { public DriverGapToLeaderWindow ( Bitmap image , Rectangle bounds , bool generateEngine = true ) : base ( image , bounds , generateEngine ) { Name = \"GapToLeader\" ; } /// /// Decodes the gap to leader using Tesseract OCR /// /// Returns the gap to the leader in miliseconds (int) public override object DecodePng () { int result = GetTimeFromPng ( WindowImage , OcrImage . WindowType . Gap , Engine ); return result ; } } }","title":"DriverGapToLeaderWindow.cs"},{"location":"Code/DriverGapToLeaderWindow.html#drivergaptoleaderwindowcs","text":"/// Author : Maxime Rohmer /// Date : 30/05/2023 /// File : DriverGapToLeaderWindow.cs /// Brief : Window containing infos about the gap to the leader of a driver /// Version : Alpha 1.0 using System ; using System.Collections.Generic ; using System.Drawing ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; namespace TrackTrends { public class DriverGapToLeaderWindow : Window { public DriverGapToLeaderWindow ( Bitmap image , Rectangle bounds , bool generateEngine = true ) : base ( image , bounds , generateEngine ) { Name = \"GapToLeader\" ; } /// /// Decodes the gap to leader using Tesseract OCR /// /// Returns the gap to the leader in miliseconds (int) public override object DecodePng () { int result = GetTimeFromPng ( WindowImage , OcrImage . WindowType . Gap , Engine ); return result ; } } }","title":"DriverGapToLeaderWindow.cs"},{"location":"Code/DriverNameWindow.html","text":"DriverNameWindow.cs /// Author : Maxime Rohmer /// Date : 30/05/2023 /// File : DriverNameWindow /// Brief : Window containing infos about the name of the driver /// Version : Alpha 1.0 using System ; using System.Collections.Generic ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; using System.Drawing ; namespace TrackTrends { public class DriverNameWindow : Window { public DriverNameWindow ( Bitmap image , Rectangle bounds , bool generateEngine = true ) : base ( image , bounds , generateEngine ) { Name = \"Name\" ; } /// /// Decodes using OCR wich driver name is in the image /// /// A list of all the names that can be on the image /// a string representing the found driver name. It will be one of the ones given in the list public override object DecodePng ( List < string > DriverList ) { string result = \"\" ; result = GetStringFromPng ( WindowImage , Engine ); if (! IsADriver ( DriverList , result )) { //I put everything in uppercase to try to lower the chances of bad answers result = FindClosestMatch ( DriverList . ConvertAll ( d => d . ToUpper ()), result . ToUpper ()); } return result ; } /// /// Verifies that the name found in the OCR is a valid name /// /// The list of all the drivers name that can be found in the image /// The driver you want to be sure if it exists or not /// If ye or no the driver exists private static bool IsADriver ( List < string > driverList , string potentialDriver ) { bool result = false ; //I cant use drivers.Contains because it has missmatched cases and all foreach ( string name in driverList ) { if ( name . ToUpper () == potentialDriver . ToUpper ()) result = true ; } return result ; } } }","title":"DriverNameWindow.cs"},{"location":"Code/DriverNameWindow.html#drivernamewindowcs","text":"/// Author : Maxime Rohmer /// Date : 30/05/2023 /// File : DriverNameWindow /// Brief : Window containing infos about the name of the driver /// Version : Alpha 1.0 using System ; using System.Collections.Generic ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; using System.Drawing ; namespace TrackTrends { public class DriverNameWindow : Window { public DriverNameWindow ( Bitmap image , Rectangle bounds , bool generateEngine = true ) : base ( image , bounds , generateEngine ) { Name = \"Name\" ; } /// /// Decodes using OCR wich driver name is in the image /// /// A list of all the names that can be on the image /// a string representing the found driver name. It will be one of the ones given in the list public override object DecodePng ( List < string > DriverList ) { string result = \"\" ; result = GetStringFromPng ( WindowImage , Engine ); if (! IsADriver ( DriverList , result )) { //I put everything in uppercase to try to lower the chances of bad answers result = FindClosestMatch ( DriverList . ConvertAll ( d => d . ToUpper ()), result . ToUpper ()); } return result ; } /// /// Verifies that the name found in the OCR is a valid name /// /// The list of all the drivers name that can be found in the image /// The driver you want to be sure if it exists or not /// If ye or no the driver exists private static bool IsADriver ( List < string > driverList , string potentialDriver ) { bool result = false ; //I cant use drivers.Contains because it has missmatched cases and all foreach ( string name in driverList ) { if ( name . ToUpper () == potentialDriver . ToUpper ()) result = true ; } return result ; } } }","title":"DriverNameWindow.cs"},{"location":"Code/DriverSectorWindow.html","text":"DriverSectorWindow.cs /// Author : Maxime Rohmer /// Date : 30/05/2023 /// File : DriverSectorWindow.cs /// Brief : Window containing infos about a driver sector time. Can be the first second or third, does not matter. /// Version : Alpha 1.0 using System ; using System.Collections.Generic ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; using System.Drawing ; namespace TrackTrends { public class DriverSectorWindow : Window { public DriverSectorWindow ( Bitmap image , Rectangle bounds , int sectorId , bool generateEngine = true ) : base ( image , bounds , generateEngine ) { Name = \"Sector\" + sectorId ; } /// /// Decodes the sector /// /// the sector time in int (ms) public override object DecodePng () { int ocrResult = GetTimeFromPng ( WindowImage , OcrImage . WindowType . Sector , Engine ); return ocrResult ; } } }","title":"DriverSectorWindow.cs"},{"location":"Code/DriverSectorWindow.html#driversectorwindowcs","text":"/// Author : Maxime Rohmer /// Date : 30/05/2023 /// File : DriverSectorWindow.cs /// Brief : Window containing infos about a driver sector time. Can be the first second or third, does not matter. /// Version : Alpha 1.0 using System ; using System.Collections.Generic ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; using System.Drawing ; namespace TrackTrends { public class DriverSectorWindow : Window { public DriverSectorWindow ( Bitmap image , Rectangle bounds , int sectorId , bool generateEngine = true ) : base ( image , bounds , generateEngine ) { Name = \"Sector\" + sectorId ; } /// /// Decodes the sector /// /// the sector time in int (ms) public override object DecodePng () { int ocrResult = GetTimeFromPng ( WindowImage , OcrImage . WindowType . Sector , Engine ); return ocrResult ; } } }","title":"DriverSectorWindow.cs"},{"location":"Code/F1TVEmulator.html","text":"F1TVEmulator.cs /// Author : Maxime Rohmer /// Date : 30/05/2023 /// File : F1TVEmulator.cs /// Brief : Class that contains methods to emulate a browser and navigate the F1TV website /// Version : Alpha 1.0 using OpenQA.Selenium ; using OpenQA.Selenium.Firefox ; using OpenQA.Selenium.Interactions ; using OpenQA.Selenium.Support.UI ; using System ; using System.Collections.Generic ; using System.Diagnostics ; using System.Drawing ; using System.IO ; using System.Linq ; using System.Text ; using System.Threading ; using System.Threading.Tasks ; namespace TrackTrends { internal class F1TVEmulator { public const string COOKIE_HOST = \".formula1.com\" ; public const string PYTHON_COOKIE_RETRIEVAL_FILENAME = \"recoverCookiesCSV.py\" ; public const string GECKODRIVER_FILENAME = @\"geckodriver-v0.27.0-win64\\geckodriver.exe\" ; //BE CAREFULL IF YOU CHANGE IT HERE YOU NEED TO CHANGE IT IN THE PYTHON SCRIPT TOO public const string COOKIES_CSV_FILENAME = \"cookies.csv\" ; private FirefoxDriver Driver ; private bool _ready ; private string _grandPrixUrl ; public string GrandPrixUrl { get => _grandPrixUrl ; private set => _grandPrixUrl = value ; } public bool Ready { get => _ready ; set => _ready = value ; } public F1TVEmulator ( string grandPrixUrl ) { GrandPrixUrl = grandPrixUrl ; Ready = false ; } /// /// Will start the python programm that runs the Cookie Recovering /// private void StartCookieRecovering () { string scriptPath = PYTHON_COOKIE_RETRIEVAL_FILENAME ; Process process = new Process (); process . StartInfo . FileName = \"python.exe\" ; process . StartInfo . Arguments = scriptPath ; process . StartInfo . UseShellExecute = false ; process . StartInfo . RedirectStandardOutput = true ; process . Start (); string output = process . StandardOutput . ReadToEnd (); process . WaitForExit (); } /// /// Method that will recover the needed cookies in the DB /// /// The host of the wanted cookie ex: ./formula1.com /// The name of the wanted cookie ex: login /// returns the value of the cookie if it has been found /// public string GetCookie ( string host , string name ) { StartCookieRecovering (); string value = \"\" ; List < Cookie > cookies = new List < Cookie >(); if ( File . Exists ( COOKIES_CSV_FILENAME )) { using ( var reader = new StreamReader ( COOKIES_CSV_FILENAME )) { // Read the header row and validate column order string header = reader . ReadLine (); string [] expectedColumns = { \"host_key\" , \"name\" , \"value\" , \"path\" , \"expires_utc\" , \"is_secure\" , \"is_httponly\" }; string [] actualColumns = header . Split ( ',' ); for ( int i = 0 ; i < expectedColumns . Length ; i ++) { if ( expectedColumns [ i ] != actualColumns [ i ]) { throw new InvalidOperationException ( $\"Expected column '{expectedColumns[i]}' at index {i} but found '{actualColumns[i]}'\" ); } } // Read each data row and parse values into a Cookie object while (! reader . EndOfStream ) { string line = reader . ReadLine (); string [] fields = line . Split ( ',' ); string hostname = fields [ 0 ]; string cookieName = fields [ 1 ]; if ( hostname == host && cookieName == name ) { value = fields [ 2 ]; } } } } return value ; } /// /// Starts the headless browser /// /// Error code 1xx public async Task < int > Start () { Ready = false ; string loginCookieName = \"login\" ; string loginSessionCookieName = \"login-session\" ; string loginCookieValue = GetCookie ( COOKIE_HOST , loginCookieName ); string loginSessionValue = GetCookie ( COOKIE_HOST , loginSessionCookieName ); //Cookie retreival has gone wrong (usually its because of python not being installed properly) if ( loginCookieValue == \"\" || loginSessionValue == \"\" ) return 100 ; var service = FirefoxDriverService . CreateDefaultService ( GECKODRIVER_FILENAME ); service . Host = \"127.0.0.1\" ; service . Port = 5555 ; FirefoxProfile profile = new FirefoxProfile (); FirefoxOptions options = new FirefoxOptions (); //profile.SetPreference(\"full-screen-api.ignore-widgets\", true); //profile.SetPreference(\"media.hardware-video-decoding.enabled\", true); //profile.SetPreference(\"full-screen-api.enabled\", true); options . Profile = profile ; profile . SetPreference ( \"layout.css.devPixelsPerPx\" , \"1.0\" ); options . AcceptInsecureCertificates = true ; options . AddArgument ( \"--headless\" ); //options.AddArgument(\"--start-maximized\"); //options.AddArgument(\"--window-size=1920x1080\"); //options.AddArgument(\"--width=\" + windowWidth); //options.AddArgument(\"--height=\" + windowHeight); //options.AddArgument(\"-window-size=1920x1080\"); //options.AddArgument(\"--width=1920\"); //options.AddArgument(\"--height=1080\"); //profile try { Driver = new FirefoxDriver ( service , options ); } catch { Ready = false ; return 101 ; } Actions actions = new Actions ( Driver ); var loginCookie = new Cookie ( loginCookieName , loginCookieValue , COOKIE_HOST , \"/\" , DateTime . Now . AddDays ( 5 )); var loginSessionCookie = new Cookie ( loginSessionCookieName , loginSessionValue , COOKIE_HOST , \"/\" , DateTime . Now . AddDays ( 5 )); Driver . Navigate (). GoToUrl ( \"https://f1tv.formula1.com/\" ); Driver . Manage (). Cookies . AddCookie ( loginCookie ); Driver . Manage (). Cookies . AddCookie ( loginSessionCookie ); try { Driver . Navigate (). GoToUrl ( GrandPrixUrl ); } catch { //The url is not a valid url Driver . Dispose (); return 103 ; } //Waits for the page to fully load Driver . Manage (). Timeouts (). PageLoad = TimeSpan . FromSeconds ( 30 ); //Removes the cookie prompt try { IWebElement conscentButton = Driver . FindElement ( By . Id ( \"truste-consent-button\" )); conscentButton . Click (); } catch { //Could not locate the cookie button Screenshot ( \"ERROR104\" ); Driver . Dispose (); return 104 ; } //Again waits for the page to fully load (when you accept cookies it takes a little time for the page to load) //Cannot use The timeout because the feed loading is not really loading so there is not event or anything Thread . Sleep ( 5000 ); //Switches to the Data channel try { IWebElement dataChannelButton = Driver . FindElement ( By . ClassName ( \"data-button\" )); dataChannelButton . Click (); } catch { //If the data button does not exists its because the user is not connected Screenshot ( \"ERROR102\" ); Driver . Dispose (); return 102 ; } //Open settings // Press the space key, this should make the setting button visible // It does not matter if the feed is paused because when changing channel it autoplays actions . SendKeys ( OpenQA . Selenium . Keys . Space ). Perform (); //Clicks on the settings Icon int settingsClickTries = 0 ; bool settingsClickSuccess = false ; while ( settingsClickTries < 100 && ! settingsClickSuccess ) { Thread . Sleep ( 100 ); try { IWebElement settingsButton = Driver . FindElement ( By . ClassName ( \"bmpui-ui-settingstogglebutton\" )); settingsButton . Click (); IWebElement selectElement = Driver . FindElement ( By . ClassName ( \"bmpui-ui-videoqualityselectbox\" )); SelectElement select = new SelectElement ( selectElement ); IWebElement selectOption = selectElement . FindElement ( By . CssSelector ( \"option[value^='1080_']\" )); selectOption . Click (); settingsClickSuccess = true ; } catch { //Sometimes it can crash because it could not get the options to show up in time. When it happens just retry settingsClickSuccess = false ; settingsClickTries ++; } } if (! settingsClickSuccess ) { Screenshot ( \"ERROR105\" ); Driver . Dispose (); return 105 ; } Screenshot ( \"BEFOREFULLSCREEN\" ); //Makes the feed fullscreen int fullScreenClickTries = 0 ; bool fullScreenClickSuccess = false ; Driver . Manage (). Window . Maximize (); //WebDriverWait wait = new WebDriverWait(Driver, TimeSpan.FromSeconds(10)); while ( fullScreenClickTries < 100 && ! fullScreenClickSuccess ) { Thread . Sleep ( 150 ); try { IWebElement fullScreenButton = Driver . FindElement ( By . ClassName ( \"bmpui-ui-fullscreentogglebutton\" )); fullScreenButton . Click (); fullScreenClickSuccess = true ; } catch { fullScreenClickSuccess = false ; fullScreenClickTries ++; } } if (! fullScreenClickSuccess ) { Screenshot ( \"ERROR106\" ); Driver . Dispose (); return 106 ; } Screenshot ( \"AFTERFULLSCREEN\" ); //STARTUP FINISHED READY TO SCREENSHOT Ready = true ; return 0 ; } /// /// Takes a screenshot of what the headless browser is displaying /// /// Optional ! The name of the picture so it can be saved /// Returns the screenshot in the bitmap format public Bitmap Screenshot ( string name = \"TEST\" ) { Bitmap result = new Bitmap ( 4242 , 6969 ); try { //Screenshot scrsht = ((ITakesScreenshot)Driver).GetScreenshot(); //profileriver.SetPreferencC:\\Users\\Moi\\source\\repos\\Test_Merge\\README.mde(\"layout.css.devPixelsPerPx\", \"1.0\"); //Screenshot scrsht = Driver.GetFullPageScreenshot(); Screenshot scrsht = Driver . GetScreenshot (); byte [] screenshotBytes = Convert . FromBase64String ( scrsht . AsBase64EncodedString ); MemoryStream stream = new MemoryStream ( screenshotBytes ); result = new Bitmap ( stream ); //result.Save(name + \".png\"); scrsht . SaveAsFile ( name + \".png\" ); } catch { //Nothing for now } return result ; } /// /// Stops the Emulation. Note: if you plan to start it again please use ResetDriver() instead /// public void Stop () { Ready = false ; if ( Driver != null ) Driver . Dispose (); } /// /// Resets the emulation /// public void ResetDriver () { Ready = false ; if ( Driver != null ) Driver . Dispose (); Driver = null ; } } }","title":"F1TVEmulator.cs"},{"location":"Code/F1TVEmulator.html#f1tvemulatorcs","text":"/// Author : Maxime Rohmer /// Date : 30/05/2023 /// File : F1TVEmulator.cs /// Brief : Class that contains methods to emulate a browser and navigate the F1TV website /// Version : Alpha 1.0 using OpenQA.Selenium ; using OpenQA.Selenium.Firefox ; using OpenQA.Selenium.Interactions ; using OpenQA.Selenium.Support.UI ; using System ; using System.Collections.Generic ; using System.Diagnostics ; using System.Drawing ; using System.IO ; using System.Linq ; using System.Text ; using System.Threading ; using System.Threading.Tasks ; namespace TrackTrends { internal class F1TVEmulator { public const string COOKIE_HOST = \".formula1.com\" ; public const string PYTHON_COOKIE_RETRIEVAL_FILENAME = \"recoverCookiesCSV.py\" ; public const string GECKODRIVER_FILENAME = @\"geckodriver-v0.27.0-win64\\geckodriver.exe\" ; //BE CAREFULL IF YOU CHANGE IT HERE YOU NEED TO CHANGE IT IN THE PYTHON SCRIPT TOO public const string COOKIES_CSV_FILENAME = \"cookies.csv\" ; private FirefoxDriver Driver ; private bool _ready ; private string _grandPrixUrl ; public string GrandPrixUrl { get => _grandPrixUrl ; private set => _grandPrixUrl = value ; } public bool Ready { get => _ready ; set => _ready = value ; } public F1TVEmulator ( string grandPrixUrl ) { GrandPrixUrl = grandPrixUrl ; Ready = false ; } /// /// Will start the python programm that runs the Cookie Recovering /// private void StartCookieRecovering () { string scriptPath = PYTHON_COOKIE_RETRIEVAL_FILENAME ; Process process = new Process (); process . StartInfo . FileName = \"python.exe\" ; process . StartInfo . Arguments = scriptPath ; process . StartInfo . UseShellExecute = false ; process . StartInfo . RedirectStandardOutput = true ; process . Start (); string output = process . StandardOutput . ReadToEnd (); process . WaitForExit (); } /// /// Method that will recover the needed cookies in the DB /// /// The host of the wanted cookie ex: ./formula1.com /// The name of the wanted cookie ex: login /// returns the value of the cookie if it has been found /// public string GetCookie ( string host , string name ) { StartCookieRecovering (); string value = \"\" ; List < Cookie > cookies = new List < Cookie >(); if ( File . Exists ( COOKIES_CSV_FILENAME )) { using ( var reader = new StreamReader ( COOKIES_CSV_FILENAME )) { // Read the header row and validate column order string header = reader . ReadLine (); string [] expectedColumns = { \"host_key\" , \"name\" , \"value\" , \"path\" , \"expires_utc\" , \"is_secure\" , \"is_httponly\" }; string [] actualColumns = header . Split ( ',' ); for ( int i = 0 ; i < expectedColumns . Length ; i ++) { if ( expectedColumns [ i ] != actualColumns [ i ]) { throw new InvalidOperationException ( $\"Expected column '{expectedColumns[i]}' at index {i} but found '{actualColumns[i]}'\" ); } } // Read each data row and parse values into a Cookie object while (! reader . EndOfStream ) { string line = reader . ReadLine (); string [] fields = line . Split ( ',' ); string hostname = fields [ 0 ]; string cookieName = fields [ 1 ]; if ( hostname == host && cookieName == name ) { value = fields [ 2 ]; } } } } return value ; } /// /// Starts the headless browser /// /// Error code 1xx public async Task < int > Start () { Ready = false ; string loginCookieName = \"login\" ; string loginSessionCookieName = \"login-session\" ; string loginCookieValue = GetCookie ( COOKIE_HOST , loginCookieName ); string loginSessionValue = GetCookie ( COOKIE_HOST , loginSessionCookieName ); //Cookie retreival has gone wrong (usually its because of python not being installed properly) if ( loginCookieValue == \"\" || loginSessionValue == \"\" ) return 100 ; var service = FirefoxDriverService . CreateDefaultService ( GECKODRIVER_FILENAME ); service . Host = \"127.0.0.1\" ; service . Port = 5555 ; FirefoxProfile profile = new FirefoxProfile (); FirefoxOptions options = new FirefoxOptions (); //profile.SetPreference(\"full-screen-api.ignore-widgets\", true); //profile.SetPreference(\"media.hardware-video-decoding.enabled\", true); //profile.SetPreference(\"full-screen-api.enabled\", true); options . Profile = profile ; profile . SetPreference ( \"layout.css.devPixelsPerPx\" , \"1.0\" ); options . AcceptInsecureCertificates = true ; options . AddArgument ( \"--headless\" ); //options.AddArgument(\"--start-maximized\"); //options.AddArgument(\"--window-size=1920x1080\"); //options.AddArgument(\"--width=\" + windowWidth); //options.AddArgument(\"--height=\" + windowHeight); //options.AddArgument(\"-window-size=1920x1080\"); //options.AddArgument(\"--width=1920\"); //options.AddArgument(\"--height=1080\"); //profile try { Driver = new FirefoxDriver ( service , options ); } catch { Ready = false ; return 101 ; } Actions actions = new Actions ( Driver ); var loginCookie = new Cookie ( loginCookieName , loginCookieValue , COOKIE_HOST , \"/\" , DateTime . Now . AddDays ( 5 )); var loginSessionCookie = new Cookie ( loginSessionCookieName , loginSessionValue , COOKIE_HOST , \"/\" , DateTime . Now . AddDays ( 5 )); Driver . Navigate (). GoToUrl ( \"https://f1tv.formula1.com/\" ); Driver . Manage (). Cookies . AddCookie ( loginCookie ); Driver . Manage (). Cookies . AddCookie ( loginSessionCookie ); try { Driver . Navigate (). GoToUrl ( GrandPrixUrl ); } catch { //The url is not a valid url Driver . Dispose (); return 103 ; } //Waits for the page to fully load Driver . Manage (). Timeouts (). PageLoad = TimeSpan . FromSeconds ( 30 ); //Removes the cookie prompt try { IWebElement conscentButton = Driver . FindElement ( By . Id ( \"truste-consent-button\" )); conscentButton . Click (); } catch { //Could not locate the cookie button Screenshot ( \"ERROR104\" ); Driver . Dispose (); return 104 ; } //Again waits for the page to fully load (when you accept cookies it takes a little time for the page to load) //Cannot use The timeout because the feed loading is not really loading so there is not event or anything Thread . Sleep ( 5000 ); //Switches to the Data channel try { IWebElement dataChannelButton = Driver . FindElement ( By . ClassName ( \"data-button\" )); dataChannelButton . Click (); } catch { //If the data button does not exists its because the user is not connected Screenshot ( \"ERROR102\" ); Driver . Dispose (); return 102 ; } //Open settings // Press the space key, this should make the setting button visible // It does not matter if the feed is paused because when changing channel it autoplays actions . SendKeys ( OpenQA . Selenium . Keys . Space ). Perform (); //Clicks on the settings Icon int settingsClickTries = 0 ; bool settingsClickSuccess = false ; while ( settingsClickTries < 100 && ! settingsClickSuccess ) { Thread . Sleep ( 100 ); try { IWebElement settingsButton = Driver . FindElement ( By . ClassName ( \"bmpui-ui-settingstogglebutton\" )); settingsButton . Click (); IWebElement selectElement = Driver . FindElement ( By . ClassName ( \"bmpui-ui-videoqualityselectbox\" )); SelectElement select = new SelectElement ( selectElement ); IWebElement selectOption = selectElement . FindElement ( By . CssSelector ( \"option[value^='1080_']\" )); selectOption . Click (); settingsClickSuccess = true ; } catch { //Sometimes it can crash because it could not get the options to show up in time. When it happens just retry settingsClickSuccess = false ; settingsClickTries ++; } } if (! settingsClickSuccess ) { Screenshot ( \"ERROR105\" ); Driver . Dispose (); return 105 ; } Screenshot ( \"BEFOREFULLSCREEN\" ); //Makes the feed fullscreen int fullScreenClickTries = 0 ; bool fullScreenClickSuccess = false ; Driver . Manage (). Window . Maximize (); //WebDriverWait wait = new WebDriverWait(Driver, TimeSpan.FromSeconds(10)); while ( fullScreenClickTries < 100 && ! fullScreenClickSuccess ) { Thread . Sleep ( 150 ); try { IWebElement fullScreenButton = Driver . FindElement ( By . ClassName ( \"bmpui-ui-fullscreentogglebutton\" )); fullScreenButton . Click (); fullScreenClickSuccess = true ; } catch { fullScreenClickSuccess = false ; fullScreenClickTries ++; } } if (! fullScreenClickSuccess ) { Screenshot ( \"ERROR106\" ); Driver . Dispose (); return 106 ; } Screenshot ( \"AFTERFULLSCREEN\" ); //STARTUP FINISHED READY TO SCREENSHOT Ready = true ; return 0 ; } /// /// Takes a screenshot of what the headless browser is displaying /// /// Optional ! The name of the picture so it can be saved /// Returns the screenshot in the bitmap format public Bitmap Screenshot ( string name = \"TEST\" ) { Bitmap result = new Bitmap ( 4242 , 6969 ); try { //Screenshot scrsht = ((ITakesScreenshot)Driver).GetScreenshot(); //profileriver.SetPreferencC:\\Users\\Moi\\source\\repos\\Test_Merge\\README.mde(\"layout.css.devPixelsPerPx\", \"1.0\"); //Screenshot scrsht = Driver.GetFullPageScreenshot(); Screenshot scrsht = Driver . GetScreenshot (); byte [] screenshotBytes = Convert . FromBase64String ( scrsht . AsBase64EncodedString ); MemoryStream stream = new MemoryStream ( screenshotBytes ); result = new Bitmap ( stream ); //result.Save(name + \".png\"); scrsht . SaveAsFile ( name + \".png\" ); } catch { //Nothing for now } return result ; } /// /// Stops the Emulation. Note: if you plan to start it again please use ResetDriver() instead /// public void Stop () { Ready = false ; if ( Driver != null ) Driver . Dispose (); } /// /// Resets the emulation /// public void ResetDriver () { Ready = false ; if ( Driver != null ) Driver . Dispose (); Driver = null ; } } }","title":"F1TVEmulator.cs"},{"location":"Code/Form1.html","text":"Form1.cs using System ; using System.Collections.Generic ; using System.ComponentModel ; using System.Data ; using System.Diagnostics ; using System.Drawing ; using System.Linq ; using System.Text ; using System.Threading ; using System.Threading.Tasks ; using System.Windows.Forms ; using System.IO ; namespace TrackTrends { public partial class Main : Form { //private Reader Reader = null; private F1TVEmulator Emulator = null ; private DataWrapper Wrapper = null ; private bool cancelRequested = false ; private SemaphoreSlim semaphore = new SemaphoreSlim ( 1 ); string ConfigFile = \"\" ; string GpUrl = \"\" ; //For the responsive content Size oldSize = new Size (); Size oldRankingSize = new Size (); Size oldLapTimesSize = new Size (); Size oldBattles = new Size (); Size oldPnlBattles = new Size (); Size oldPnlRankings = new Size (); Size oldPnlFastest = new Size (); Size oldPnlSlowest = new Size (); Point oldRankingPosition = new Point (); Point oldBattlePosition = new Point (); Point oldDriverInfoPosition = new Point (); Point olPnlFastestPosition = new Point (); Point oldPnlSlowestPosition = new Point (); public Main () { InitializeComponent (); } public async void RefreshUI () { if ( Directory . Exists ( ConfigurationTool . CONFIGS_FOLDER_NAME )) { lsbPresets . DataSource = null ; lsbPresets . DataSource = Directory . GetFiles ( ConfigurationTool . CONFIGS_FOLDER_NAME ); } } private async void btnSettings_Click ( object sender , EventArgs e ) { if ( Emulator != null ) Emulator . ResetDriver (); btnStartDecoding . Enabled = false ; btnStopUpdating . Enabled = false ; btnResetEmulator . Text = \"Launch\" ; Emulator = null ; Wrapper = null ; GC . Collect (); Settings settingsForm = new Settings (); settingsForm . ShowDialog (); RefreshUI (); //MessageBox.Show(settingsForm.GrandPrixUrl + Environment.NewLine + settingsForm.GrandPrixName + Environment.NewLine + settingsForm.GrandPrixYear); if ( settingsForm . GrandPrixUrl != \"\" && settingsForm . SelectedConfigFile != \"\" ) { GpUrl = settingsForm . GrandPrixUrl ; tbxGpUrl . Text = GpUrl ; if ( File . Exists ( settingsForm . SelectedConfigFile )) { ConfigFile = settingsForm . SelectedConfigFile ; for ( int i = 0 ; i < lsbPresets . Items . Count ; i ++) { if ( lsbPresets . Items [ i ]. ToString () == ConfigFile ) lsbPresets . SelectedIndex = i ; } } else { MessageBox . Show ( \"The config file has not been found please return to the config and change it\" ); } } else { //WE dont care anymore, the user will choose its Grand Prix himself in the main program //MessageBox.Show(\"There is no URL for the Grand Prix you want to decode. Please return to the config and add a valid one\"); } } private async void Form1_Load ( object sender , EventArgs e ) { //Those are the default values but they will need to be changed later when the configuration has been done ConfigFile = \"./Presets/Clean_4K_2023.json\" ; GpUrl = \"https://f1tv.formula1.com/detail/1000006688/2023-azerbaijan-grand-prix?action=play\" ; tbxGpUrl . Text = GpUrl ; oldSize = this . Size ; oldRankingSize = gpbxRanking . Size ; oldLapTimesSize = gpbxLapTimes . Size ; oldBattles = gpbxBattles . Size ; oldPnlRankings = pnlLiveRanking . Size ; oldPnlBattles = pnlBattles . Size ; oldPnlFastest = pnlFastest . Size ; oldPnlSlowest = pnlSlowest . Size ; oldRankingPosition = gpbxRanking . Location ; oldBattlePosition = gpbxBattles . Location ; oldDriverInfoPosition = gpbxDriverInfos . Location ; olPnlFastestPosition = pnlFastest . Location ; oldPnlSlowestPosition = pnlSlowest . Location ; tip1 . SetToolTip ( btnResetEmulator , \"Starts or restarts the emulator. You need to start this to use the app\" ); tip1 . SetToolTip ( btnSettings , \"Opens the configuration menu\" ); tip1 . SetToolTip ( tbxGpUrl , \"Insert the URL of the Grand Prix you want to track. Dont forget the \\\"?action=play\\\" at the end\" ); tip1 . SetToolTip ( lsbPresets , \"Select a configuration preset to use with the decoding\" ); tip1 . SetToolTip ( pbxResult , \"A preview of what the program sees. You should see the DATA page of the F1TV here\" ); tip1 . SetToolTip ( lsbOvertakes , \"A list of all the activity. You can scroll to see the most recent overtakes\" ); tip1 . SetToolTip ( gpbxBattles , \"The four first battles in the field. A battle is two drivers less than 3 seconds apart\" ); tip1 . SetToolTip ( gpbxLapTimes , \"The fastest and slowest drivers on track at the moment. It takes the average lapTime of the last 5 laps to choose who is the fastes or the slowest\" ); RefreshUI (); } private async void btnUpdate_Click ( object sender , EventArgs e ) { cancelRequested = false ; if ( Emulator != null && Wrapper != null ) { // Disable UI controls to prevent re-entrancy btnResetEmulator . Enabled = false ; btnStartDecoding . Enabled = false ; btnStopUpdating . Enabled = true ; btnSettings . Enabled = false ; while (! cancelRequested ) { await semaphore . WaitAsync (); try { // Start the time-consuming task on a separate thread await Task . Run ( async () => { Stopwatch sw = new Stopwatch (); sw . Start (); Bitmap screen = Emulator . Screenshot (); screen . Save ( \"HopefullyDataScreenshot.png\" ); Invoke (( MethodInvoker ) delegate { pbxResult . Image = ( Bitmap ) screen . Clone (); }); Wrapper . ChangeImage ( screen ); int errorCode = Wrapper . Refresh (); sw . Stop (); // Task completed Invoke (( MethodInvoker ) delegate { DisplayResults ( errorCode , sw , screen ); DisplayBattles (); DisplayDeltas (); DisplayOvertakes (); }); }); } finally { semaphore . Release (); } } // Re-enable UI controls btnStopUpdating . Text = \"Stop\" ; btnStartDecoding . Enabled = true ; btnStopUpdating . Enabled = false ; btnResetEmulator . Enabled = true ; btnSettings . Enabled = true ; } } private void DisplayOvertakes () { Wrapper . DisplayOvertakes ( lsbOvertakes ); } private void DisplayBattles () { Wrapper . DisplayBattles ( pnlBattles , this ); } private void DisplayDeltas () { Wrapper . DisplayTimesDeltas ( pnlFastest , pnlSlowest , this ); } private void Form1_FormClosing ( object sender , FormClosingEventArgs e ) { if ( Emulator != null ) { Emulator . Stop (); } } private void DisplayResults ( int errorCode , Stopwatch sw , Bitmap screen ) { if ( errorCode != 0 ) { cancelRequested = true ; MessageBox . Show ( \"An error has occured while trying to recover data from live feed. This can happen sometimes. I would advise you to restart a few times. If the problem persists check your configuration.\" ); } else { Wrapper . DisplayLiveRanking ( pnlLiveRanking , this ); } } private void btnStopUpdating_Click ( object sender , EventArgs e ) { // Set the cancellation flag cancelRequested = true ; btnStopUpdating . Enabled = false ; btnResetEmulator . Enabled = false ; btnStopUpdating . Text = \"Stopping\" ; } private async void button1_Click ( object sender , EventArgs e ) { lsbOvertakes . Items . Clear (); btnResetEmulator . Text = \"Launching\" ; btnResetEmulator . Enabled = false ; btnSettings . Enabled = true ; btnStartDecoding . Enabled = false ; btnStopUpdating . Enabled = false ; btnSettings . Enabled = false ; int errorCode = - 1 ; await Task . Run ( async () => { if ( Emulator != null ) Emulator . ResetDriver (); Emulator = null ; Wrapper = null ; GC . Collect (); Emulator = new F1TVEmulator ( GpUrl ); errorCode = await Emulator . Start (); }); if ( errorCode != 0 ) { string message = \"\" ; switch ( errorCode ) { case 100 : message = \"Error \" + errorCode + \" Could not recover cookies. It could be because of an improper installation of python or bad cookies in the chrome database. Please try to log on to the F1TV using chrome again\" ; break ; case 101 : message = \"Error \" + errorCode + \" Could not start the driver. It could be because an other instance is runnin make sure you closed them all before trying again\" ; break ; case 102 : message = \"Error \" + errorCode + \" Could not navigate on the F1TV site. Make sure the correct URL has been given and that you logged from chrome. It can take a few minutes to update\" ; break ; case 103 : message = \"Error \" + errorCode + \" The url is not a valid url\" ; break ; case 104 : message = \"Error \" + errorCode + \" The url is not a valid url\" ; break ; case 105 : message = \"Error \" + errorCode + \" There has been an error trying to emulate button presses. Please try again\" ; break ; case 106 : message = \"Error \" + errorCode + \" There has been an error trying to emulate button presses. Please try again\" ; break ; default : message = \"Could not start the emulator Error \" + errorCode ; break ; } MessageBox . Show ( message ); btnResetEmulator . Enabled = true ; btnSettings . Enabled = true ; btnResetEmulator . Text = \"Retry\" ; } else { Wrapper = new DataWrapper ( ConfigFile , Emulator . Screenshot ()); btnResetEmulator . Text = \"Re launch\" ; btnResetEmulator . Enabled = true ; btnSettings . Enabled = true ; btnStartDecoding . Enabled = true ; } } private void removeBorders ( object sender , PaintEventArgs e ) { GroupBox gpbx = ( GroupBox ) sender ; using ( Pen pen = new Pen ( gpbx . BackColor , 50 )) { e . Graphics . DrawRectangle ( pen , 0 , 0 , gpbx . Width - 1 , gpbx . Height - 1 ); e . Graphics . DrawRectangle ( pen , 0 , 0 , gpbx . Width - 1 , gpbx . Height - 1 ); } using ( var brush = new SolidBrush ( gpbx . ForeColor )) { var textPosition = new Point ( 5 , 0 ); // Adjust the X and Y values as needed e . Graphics . DrawString ( gpbx . Text , gpbx . Font , brush , textPosition ); } } private void lsbPresets_SelectedIndexChanged ( object sender , EventArgs e ) { if ( lsbPresets . SelectedIndex >= 0 ) ConfigFile = lsbPresets . Items [ lsbPresets . SelectedIndex ]. ToString (); } private void textBox1_TextChanged ( object sender , EventArgs e ) { if ( tbxGpUrl . Text != \"\" ) GpUrl = tbxGpUrl . Text ; } public void btnDriver_Click ( object sender , EventArgs e ) { //Removes the cover if ( pnlCover . Visible = true ) pnlCover . Visible = false ; //Happens when a driver button has been clicked //MessageBox.Show((sender as Button).Name + \" has been selected\"); Button btn = ( sender as Button ); string [] parts = btn . Name . Split ( '_' ); DriverData driver = Wrapper . GetFullDriverData ( parts [ 0 ], pnlCurrentDriverLapsHistory , this ); lblCurrentDriverName . Text = driver . Name ; lblCurrentDriverPosition . Text = driver . Position . ToString (); lblCurrentDriverGapToLeader . Text = Reader . ConvertMsToTime ( driver . GapToLeader ); lblCurrentDriverLapTime . Text = Reader . ConvertMsToTime ( driver . LapTime ); lblCurrentDriverTyreAge . Text = driver . CurrentTyre . NumberOfLaps . ToString (); if ( driver . DRS ) { lblCurrentDriverDRS . Text = \"Open\" ; lblCurrentDriverDRS . ForeColor = Color . FromArgb ( 0 , 164 , 46 ); } else { lblCurrentDriverDRS . Text = \"Closed\" ; lblCurrentDriverDRS . ForeColor = Color . Black ; } switch ( driver . CurrentTyre . Coumpound ) { case Tyre . Type . Undefined : lblCurrentDriverTyreType . Text = \"uuuuh...\" ; lblCurrentDriverTyreType . ForeColor = Color . Violet ; break ; case Tyre . Type . Hard : lblCurrentDriverTyreType . Text = \"Hard\" ; lblCurrentDriverTyreType . ForeColor = Color . FromArgb ( 164 , 165 , 168 ); break ; case Tyre . Type . Medium : lblCurrentDriverTyreType . Text = \"Medium\" ; lblCurrentDriverTyreType . ForeColor = Color . FromArgb ( 245 , 191 , 0 ); break ; case Tyre . Type . Soft : lblCurrentDriverTyreType . Text = \"Soft\" ; lblCurrentDriverTyreType . ForeColor = Color . FromArgb ( 255 , 0 , 0 ); break ; case Tyre . Type . Inter : lblCurrentDriverTyreType . Text = \"Intermediate\" ; lblCurrentDriverTyreType . ForeColor = Color . FromArgb ( 0 , 164 , 46 ); break ; case Tyre . Type . Wet : lblCurrentDriverTyreType . Text = \"Wet\" ; lblCurrentDriverTyreType . ForeColor = Color . FromArgb ( 39 , 96 , 166 ); break ; } } public void btnLapTime_Click ( object sender , EventArgs e ) { //Happens when a lapTime has been clicked Button btn = sender as Button ; string [] parts = btn . Name . Split ( '_' ); Wrapper . DisplayLapTimeInfos ( parts [ 0 ], Convert . ToInt32 ( parts [ 1 ]), btn . Text ); } private void Main_Resize ( object sender , EventArgs e ) { int xDiff = this . Width - oldSize . Width ; int yDiff = this . Height - oldSize . Height ; int padding = 10 ; //This will take half the newly created space gpbxRanking . Size = new Size ( oldRankingSize . Width + xDiff / 2 , oldRankingSize . Height + yDiff ); gpbxRanking . Location = new Point ( oldRankingPosition . X + xDiff / 2 , gpbxRanking . Location . Y ); //Will take half the new height and half the new height gpbxLapTimes . Size = new Size ( oldLapTimesSize . Width + xDiff / 2 , oldLapTimesSize . Height + yDiff / 2 ); //Will take half the new height and half the new width gpbxBattles . Size = new Size ( oldBattles . Width + xDiff / 2 , oldBattles . Height + yDiff / 2 ); gpbxBattles . Location = new Point ( gpbxBattles . Location . X , oldBattlePosition . Y + yDiff / 2 ); //The infos wont change width but will need to be centerd Point startOfZone = new Point ( gpbxOvertakes . Width + gpbxOvertakes . Location . X , gpbxOvertakes . Location . Y ); Point endOfZone = new Point ( gpbxRanking . Location . X , gpbxOvertakes . Location . Y ); int totalWidth = endOfZone . X - startOfZone . X ; gpbxDriverInfos . Location = new Point ( startOfZone . X + ( totalWidth / 2 - gpbxDriverInfos . Width / 2 ), oldDriverInfoPosition . Y + yDiff ); //Now resizing internals pnlFastest . Size = new Size ( oldPnlFastest . Width + xDiff / 4 , oldPnlFastest . Height + yDiff / 4 ); pnlFastest . Location = new Point ( olPnlFastestPosition . X , olPnlFastestPosition . Y + yDiff / 4 ); pnlSlowest . Size = new Size ( oldPnlSlowest . Width + xDiff / 4 , oldPnlSlowest . Height + yDiff / 4 ); pnlSlowest . Location = new Point ( oldPnlSlowestPosition . X + xDiff / 4 , oldPnlSlowestPosition . Y + yDiff / 4 ); pnlBattles . Size = new Size ( oldPnlBattles . Width + xDiff / 2 , oldPnlBattles . Height + yDiff / 2 ); pnlLiveRanking . Size = new Size ( oldPnlRankings . Width + xDiff / 2 , oldPnlRankings . Height + yDiff ); } } }","title":"Form1.cs"},{"location":"Code/Form1.html#form1cs","text":"using System ; using System.Collections.Generic ; using System.ComponentModel ; using System.Data ; using System.Diagnostics ; using System.Drawing ; using System.Linq ; using System.Text ; using System.Threading ; using System.Threading.Tasks ; using System.Windows.Forms ; using System.IO ; namespace TrackTrends { public partial class Main : Form { //private Reader Reader = null; private F1TVEmulator Emulator = null ; private DataWrapper Wrapper = null ; private bool cancelRequested = false ; private SemaphoreSlim semaphore = new SemaphoreSlim ( 1 ); string ConfigFile = \"\" ; string GpUrl = \"\" ; //For the responsive content Size oldSize = new Size (); Size oldRankingSize = new Size (); Size oldLapTimesSize = new Size (); Size oldBattles = new Size (); Size oldPnlBattles = new Size (); Size oldPnlRankings = new Size (); Size oldPnlFastest = new Size (); Size oldPnlSlowest = new Size (); Point oldRankingPosition = new Point (); Point oldBattlePosition = new Point (); Point oldDriverInfoPosition = new Point (); Point olPnlFastestPosition = new Point (); Point oldPnlSlowestPosition = new Point (); public Main () { InitializeComponent (); } public async void RefreshUI () { if ( Directory . Exists ( ConfigurationTool . CONFIGS_FOLDER_NAME )) { lsbPresets . DataSource = null ; lsbPresets . DataSource = Directory . GetFiles ( ConfigurationTool . CONFIGS_FOLDER_NAME ); } } private async void btnSettings_Click ( object sender , EventArgs e ) { if ( Emulator != null ) Emulator . ResetDriver (); btnStartDecoding . Enabled = false ; btnStopUpdating . Enabled = false ; btnResetEmulator . Text = \"Launch\" ; Emulator = null ; Wrapper = null ; GC . Collect (); Settings settingsForm = new Settings (); settingsForm . ShowDialog (); RefreshUI (); //MessageBox.Show(settingsForm.GrandPrixUrl + Environment.NewLine + settingsForm.GrandPrixName + Environment.NewLine + settingsForm.GrandPrixYear); if ( settingsForm . GrandPrixUrl != \"\" && settingsForm . SelectedConfigFile != \"\" ) { GpUrl = settingsForm . GrandPrixUrl ; tbxGpUrl . Text = GpUrl ; if ( File . Exists ( settingsForm . SelectedConfigFile )) { ConfigFile = settingsForm . SelectedConfigFile ; for ( int i = 0 ; i < lsbPresets . Items . Count ; i ++) { if ( lsbPresets . Items [ i ]. ToString () == ConfigFile ) lsbPresets . SelectedIndex = i ; } } else { MessageBox . Show ( \"The config file has not been found please return to the config and change it\" ); } } else { //WE dont care anymore, the user will choose its Grand Prix himself in the main program //MessageBox.Show(\"There is no URL for the Grand Prix you want to decode. Please return to the config and add a valid one\"); } } private async void Form1_Load ( object sender , EventArgs e ) { //Those are the default values but they will need to be changed later when the configuration has been done ConfigFile = \"./Presets/Clean_4K_2023.json\" ; GpUrl = \"https://f1tv.formula1.com/detail/1000006688/2023-azerbaijan-grand-prix?action=play\" ; tbxGpUrl . Text = GpUrl ; oldSize = this . Size ; oldRankingSize = gpbxRanking . Size ; oldLapTimesSize = gpbxLapTimes . Size ; oldBattles = gpbxBattles . Size ; oldPnlRankings = pnlLiveRanking . Size ; oldPnlBattles = pnlBattles . Size ; oldPnlFastest = pnlFastest . Size ; oldPnlSlowest = pnlSlowest . Size ; oldRankingPosition = gpbxRanking . Location ; oldBattlePosition = gpbxBattles . Location ; oldDriverInfoPosition = gpbxDriverInfos . Location ; olPnlFastestPosition = pnlFastest . Location ; oldPnlSlowestPosition = pnlSlowest . Location ; tip1 . SetToolTip ( btnResetEmulator , \"Starts or restarts the emulator. You need to start this to use the app\" ); tip1 . SetToolTip ( btnSettings , \"Opens the configuration menu\" ); tip1 . SetToolTip ( tbxGpUrl , \"Insert the URL of the Grand Prix you want to track. Dont forget the \\\"?action=play\\\" at the end\" ); tip1 . SetToolTip ( lsbPresets , \"Select a configuration preset to use with the decoding\" ); tip1 . SetToolTip ( pbxResult , \"A preview of what the program sees. You should see the DATA page of the F1TV here\" ); tip1 . SetToolTip ( lsbOvertakes , \"A list of all the activity. You can scroll to see the most recent overtakes\" ); tip1 . SetToolTip ( gpbxBattles , \"The four first battles in the field. A battle is two drivers less than 3 seconds apart\" ); tip1 . SetToolTip ( gpbxLapTimes , \"The fastest and slowest drivers on track at the moment. It takes the average lapTime of the last 5 laps to choose who is the fastes or the slowest\" ); RefreshUI (); } private async void btnUpdate_Click ( object sender , EventArgs e ) { cancelRequested = false ; if ( Emulator != null && Wrapper != null ) { // Disable UI controls to prevent re-entrancy btnResetEmulator . Enabled = false ; btnStartDecoding . Enabled = false ; btnStopUpdating . Enabled = true ; btnSettings . Enabled = false ; while (! cancelRequested ) { await semaphore . WaitAsync (); try { // Start the time-consuming task on a separate thread await Task . Run ( async () => { Stopwatch sw = new Stopwatch (); sw . Start (); Bitmap screen = Emulator . Screenshot (); screen . Save ( \"HopefullyDataScreenshot.png\" ); Invoke (( MethodInvoker ) delegate { pbxResult . Image = ( Bitmap ) screen . Clone (); }); Wrapper . ChangeImage ( screen ); int errorCode = Wrapper . Refresh (); sw . Stop (); // Task completed Invoke (( MethodInvoker ) delegate { DisplayResults ( errorCode , sw , screen ); DisplayBattles (); DisplayDeltas (); DisplayOvertakes (); }); }); } finally { semaphore . Release (); } } // Re-enable UI controls btnStopUpdating . Text = \"Stop\" ; btnStartDecoding . Enabled = true ; btnStopUpdating . Enabled = false ; btnResetEmulator . Enabled = true ; btnSettings . Enabled = true ; } } private void DisplayOvertakes () { Wrapper . DisplayOvertakes ( lsbOvertakes ); } private void DisplayBattles () { Wrapper . DisplayBattles ( pnlBattles , this ); } private void DisplayDeltas () { Wrapper . DisplayTimesDeltas ( pnlFastest , pnlSlowest , this ); } private void Form1_FormClosing ( object sender , FormClosingEventArgs e ) { if ( Emulator != null ) { Emulator . Stop (); } } private void DisplayResults ( int errorCode , Stopwatch sw , Bitmap screen ) { if ( errorCode != 0 ) { cancelRequested = true ; MessageBox . Show ( \"An error has occured while trying to recover data from live feed. This can happen sometimes. I would advise you to restart a few times. If the problem persists check your configuration.\" ); } else { Wrapper . DisplayLiveRanking ( pnlLiveRanking , this ); } } private void btnStopUpdating_Click ( object sender , EventArgs e ) { // Set the cancellation flag cancelRequested = true ; btnStopUpdating . Enabled = false ; btnResetEmulator . Enabled = false ; btnStopUpdating . Text = \"Stopping\" ; } private async void button1_Click ( object sender , EventArgs e ) { lsbOvertakes . Items . Clear (); btnResetEmulator . Text = \"Launching\" ; btnResetEmulator . Enabled = false ; btnSettings . Enabled = true ; btnStartDecoding . Enabled = false ; btnStopUpdating . Enabled = false ; btnSettings . Enabled = false ; int errorCode = - 1 ; await Task . Run ( async () => { if ( Emulator != null ) Emulator . ResetDriver (); Emulator = null ; Wrapper = null ; GC . Collect (); Emulator = new F1TVEmulator ( GpUrl ); errorCode = await Emulator . Start (); }); if ( errorCode != 0 ) { string message = \"\" ; switch ( errorCode ) { case 100 : message = \"Error \" + errorCode + \" Could not recover cookies. It could be because of an improper installation of python or bad cookies in the chrome database. Please try to log on to the F1TV using chrome again\" ; break ; case 101 : message = \"Error \" + errorCode + \" Could not start the driver. It could be because an other instance is runnin make sure you closed them all before trying again\" ; break ; case 102 : message = \"Error \" + errorCode + \" Could not navigate on the F1TV site. Make sure the correct URL has been given and that you logged from chrome. It can take a few minutes to update\" ; break ; case 103 : message = \"Error \" + errorCode + \" The url is not a valid url\" ; break ; case 104 : message = \"Error \" + errorCode + \" The url is not a valid url\" ; break ; case 105 : message = \"Error \" + errorCode + \" There has been an error trying to emulate button presses. Please try again\" ; break ; case 106 : message = \"Error \" + errorCode + \" There has been an error trying to emulate button presses. Please try again\" ; break ; default : message = \"Could not start the emulator Error \" + errorCode ; break ; } MessageBox . Show ( message ); btnResetEmulator . Enabled = true ; btnSettings . Enabled = true ; btnResetEmulator . Text = \"Retry\" ; } else { Wrapper = new DataWrapper ( ConfigFile , Emulator . Screenshot ()); btnResetEmulator . Text = \"Re launch\" ; btnResetEmulator . Enabled = true ; btnSettings . Enabled = true ; btnStartDecoding . Enabled = true ; } } private void removeBorders ( object sender , PaintEventArgs e ) { GroupBox gpbx = ( GroupBox ) sender ; using ( Pen pen = new Pen ( gpbx . BackColor , 50 )) { e . Graphics . DrawRectangle ( pen , 0 , 0 , gpbx . Width - 1 , gpbx . Height - 1 ); e . Graphics . DrawRectangle ( pen , 0 , 0 , gpbx . Width - 1 , gpbx . Height - 1 ); } using ( var brush = new SolidBrush ( gpbx . ForeColor )) { var textPosition = new Point ( 5 , 0 ); // Adjust the X and Y values as needed e . Graphics . DrawString ( gpbx . Text , gpbx . Font , brush , textPosition ); } } private void lsbPresets_SelectedIndexChanged ( object sender , EventArgs e ) { if ( lsbPresets . SelectedIndex >= 0 ) ConfigFile = lsbPresets . Items [ lsbPresets . SelectedIndex ]. ToString (); } private void textBox1_TextChanged ( object sender , EventArgs e ) { if ( tbxGpUrl . Text != \"\" ) GpUrl = tbxGpUrl . Text ; } public void btnDriver_Click ( object sender , EventArgs e ) { //Removes the cover if ( pnlCover . Visible = true ) pnlCover . Visible = false ; //Happens when a driver button has been clicked //MessageBox.Show((sender as Button).Name + \" has been selected\"); Button btn = ( sender as Button ); string [] parts = btn . Name . Split ( '_' ); DriverData driver = Wrapper . GetFullDriverData ( parts [ 0 ], pnlCurrentDriverLapsHistory , this ); lblCurrentDriverName . Text = driver . Name ; lblCurrentDriverPosition . Text = driver . Position . ToString (); lblCurrentDriverGapToLeader . Text = Reader . ConvertMsToTime ( driver . GapToLeader ); lblCurrentDriverLapTime . Text = Reader . ConvertMsToTime ( driver . LapTime ); lblCurrentDriverTyreAge . Text = driver . CurrentTyre . NumberOfLaps . ToString (); if ( driver . DRS ) { lblCurrentDriverDRS . Text = \"Open\" ; lblCurrentDriverDRS . ForeColor = Color . FromArgb ( 0 , 164 , 46 ); } else { lblCurrentDriverDRS . Text = \"Closed\" ; lblCurrentDriverDRS . ForeColor = Color . Black ; } switch ( driver . CurrentTyre . Coumpound ) { case Tyre . Type . Undefined : lblCurrentDriverTyreType . Text = \"uuuuh...\" ; lblCurrentDriverTyreType . ForeColor = Color . Violet ; break ; case Tyre . Type . Hard : lblCurrentDriverTyreType . Text = \"Hard\" ; lblCurrentDriverTyreType . ForeColor = Color . FromArgb ( 164 , 165 , 168 ); break ; case Tyre . Type . Medium : lblCurrentDriverTyreType . Text = \"Medium\" ; lblCurrentDriverTyreType . ForeColor = Color . FromArgb ( 245 , 191 , 0 ); break ; case Tyre . Type . Soft : lblCurrentDriverTyreType . Text = \"Soft\" ; lblCurrentDriverTyreType . ForeColor = Color . FromArgb ( 255 , 0 , 0 ); break ; case Tyre . Type . Inter : lblCurrentDriverTyreType . Text = \"Intermediate\" ; lblCurrentDriverTyreType . ForeColor = Color . FromArgb ( 0 , 164 , 46 ); break ; case Tyre . Type . Wet : lblCurrentDriverTyreType . Text = \"Wet\" ; lblCurrentDriverTyreType . ForeColor = Color . FromArgb ( 39 , 96 , 166 ); break ; } } public void btnLapTime_Click ( object sender , EventArgs e ) { //Happens when a lapTime has been clicked Button btn = sender as Button ; string [] parts = btn . Name . Split ( '_' ); Wrapper . DisplayLapTimeInfos ( parts [ 0 ], Convert . ToInt32 ( parts [ 1 ]), btn . Text ); } private void Main_Resize ( object sender , EventArgs e ) { int xDiff = this . Width - oldSize . Width ; int yDiff = this . Height - oldSize . Height ; int padding = 10 ; //This will take half the newly created space gpbxRanking . Size = new Size ( oldRankingSize . Width + xDiff / 2 , oldRankingSize . Height + yDiff ); gpbxRanking . Location = new Point ( oldRankingPosition . X + xDiff / 2 , gpbxRanking . Location . Y ); //Will take half the new height and half the new height gpbxLapTimes . Size = new Size ( oldLapTimesSize . Width + xDiff / 2 , oldLapTimesSize . Height + yDiff / 2 ); //Will take half the new height and half the new width gpbxBattles . Size = new Size ( oldBattles . Width + xDiff / 2 , oldBattles . Height + yDiff / 2 ); gpbxBattles . Location = new Point ( gpbxBattles . Location . X , oldBattlePosition . Y + yDiff / 2 ); //The infos wont change width but will need to be centerd Point startOfZone = new Point ( gpbxOvertakes . Width + gpbxOvertakes . Location . X , gpbxOvertakes . Location . Y ); Point endOfZone = new Point ( gpbxRanking . Location . X , gpbxOvertakes . Location . Y ); int totalWidth = endOfZone . X - startOfZone . X ; gpbxDriverInfos . Location = new Point ( startOfZone . X + ( totalWidth / 2 - gpbxDriverInfos . Width / 2 ), oldDriverInfoPosition . Y + yDiff ); //Now resizing internals pnlFastest . Size = new Size ( oldPnlFastest . Width + xDiff / 4 , oldPnlFastest . Height + yDiff / 4 ); pnlFastest . Location = new Point ( olPnlFastestPosition . X , olPnlFastestPosition . Y + yDiff / 4 ); pnlSlowest . Size = new Size ( oldPnlSlowest . Width + xDiff / 4 , oldPnlSlowest . Height + yDiff / 4 ); pnlSlowest . Location = new Point ( oldPnlSlowestPosition . X + xDiff / 4 , oldPnlSlowestPosition . Y + yDiff / 4 ); pnlBattles . Size = new Size ( oldPnlBattles . Width + xDiff / 2 , oldPnlBattles . Height + yDiff / 2 ); pnlLiveRanking . Size = new Size ( oldPnlRankings . Width + xDiff / 2 , oldPnlRankings . Height + yDiff ); } } }","title":"Form1.cs"},{"location":"Code/Program.html","text":"Program.cs using System ; using System.Collections.Generic ; using System.Linq ; using System.Threading.Tasks ; using System.Windows.Forms ; namespace TrackTrends { internal static class Program { /// /// The main entry point for the application. /// [STAThread] static void Main () { Application . EnableVisualStyles (); Application . SetCompatibleTextRenderingDefault ( false ); Application . Run ( new Main ()); } } }","title":"Program.cs"},{"location":"Code/Program.html#programcs","text":"using System ; using System.Collections.Generic ; using System.Linq ; using System.Threading.Tasks ; using System.Windows.Forms ; namespace TrackTrends { internal static class Program { /// /// The main entry point for the application. /// [STAThread] static void Main () { Application . EnableVisualStyles (); Application . SetCompatibleTextRenderingDefault ( false ); Application . Run ( new Main ()); } } }","title":"Program.cs"},{"location":"Code/Settings.Designer.html","text":"Settings.Designer.cs namespace TrackTrends { partial class Settings { /// /// Required designer variable. /// private System . ComponentModel . IContainer components = null ; /// /// Clean up any resources being used. /// /// true if managed resources should be disposed; otherwise, false. protected override void Dispose ( bool disposing ) { if ( disposing && ( components != null )) { components . Dispose (); } base . Dispose ( disposing ); } #region Windows Form Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent () { this . components = new System . ComponentModel . Container (); this . label1 = new System . Windows . Forms . Label (); this . label2 = new System . Windows . Forms . Label (); this . gpbxRaceSettings = new System . Windows . Forms . GroupBox (); this . tbxGpUrl = new System . Windows . Forms . TextBox (); this . gpbxDriverList = new System . Windows . Forms . GroupBox (); this . lsbDrivers = new System . Windows . Forms . ListBox (); this . btnRemoveDriver = new System . Windows . Forms . Button (); this . btnAddDriver = new System . Windows . Forms . Button (); this . tbxDriverName = new System . Windows . Forms . TextBox (); this . gpbxPreview = new System . Windows . Forms . GroupBox (); this . lblWindowsRemaining = new System . Windows . Forms . Label (); this . btnResetDriver = new System . Windows . Forms . Button (); this . btnRefresh = new System . Windows . Forms . Button (); this . lblWindowPointsRemaining = new System . Windows . Forms . Label (); this . lblZonePointsRemaning = new System . Windows . Forms . Label (); this . btnCreateWindow = new System . Windows . Forms . Button (); this . pbxPreview = new System . Windows . Forms . PictureBox (); this . btnCreatZone = new System . Windows . Forms . Button (); this . gpbxWindowPreview = new System . Windows . Forms . GroupBox (); this . pbxWindowPreview = new System . Windows . Forms . PictureBox (); this . btnLoadPreset = new System . Windows . Forms . Button (); this . lsbPresets = new System . Windows . Forms . ListBox (); this . tbxPresetName = new System . Windows . Forms . TextBox (); this . btnSavePreset = new System . Windows . Forms . Button (); this . gpbxPresets = new System . Windows . Forms . GroupBox (); this . btnDeletePreset = new System . Windows . Forms . Button (); this . tip1 = new System . Windows . Forms . ToolTip ( this . components ); this . gpbxRaceSettings . SuspendLayout (); this . gpbxDriverList . SuspendLayout (); this . gpbxPreview . SuspendLayout (); (( System . ComponentModel . ISupportInitialize )( this . pbxPreview )). BeginInit (); this . gpbxWindowPreview . SuspendLayout (); (( System . ComponentModel . ISupportInitialize )( this . pbxWindowPreview )). BeginInit (); this . gpbxPresets . SuspendLayout (); this . SuspendLayout (); // // label1 // this . label1 . AutoSize = true ; this . label1 . Font = new System . Drawing . Font ( \"Microsoft YaHei UI\" , 19.8F , System . Drawing . FontStyle . Regular , System . Drawing . GraphicsUnit . Point , (( byte )( 0 ))); this . label1 . ForeColor = System . Drawing . Color . White ; this . label1 . Location = new System . Drawing . Point ( 12 , 14 ); this . label1 . Name = \"label1\" ; this . label1 . Size = new System . Drawing . Size ( 309 , 43 ); this . label1 . TabIndex = 0 ; this . label1 . Text = \"Configuration tool\" ; // // label2 // this . label2 . AutoSize = true ; this . label2 . Font = new System . Drawing . Font ( \"Microsoft YaHei UI\" , 10.2F , System . Drawing . FontStyle . Regular , System . Drawing . GraphicsUnit . Point , (( byte )( 0 ))); this . label2 . ForeColor = System . Drawing . Color . White ; this . label2 . Location = new System . Drawing . Point ( 3 , 25 ); this . label2 . Name = \"label2\" ; this . label2 . Size = new System . Drawing . Size ( 132 , 23 ); this . label2 . TabIndex = 1 ; this . label2 . Text = \"Grand Prix URL\" ; // // gpbxRaceSettings // this . gpbxRaceSettings . Anchor = (( System . Windows . Forms . AnchorStyles )(( System . Windows . Forms . AnchorStyles . Top | System . Windows . Forms . AnchorStyles . Right ))); this . gpbxRaceSettings . BackColor = System . Drawing . Color . FromArgb ((( int )((( byte )( 79 )))), (( int )((( byte )( 79 )))), (( int )((( byte )( 79 ))))); this . gpbxRaceSettings . Controls . Add ( this . tbxGpUrl ); this . gpbxRaceSettings . Controls . Add ( this . label2 ); this . gpbxRaceSettings . Font = new System . Drawing . Font ( \"Microsoft YaHei UI\" , 10.2F , System . Drawing . FontStyle . Regular , System . Drawing . GraphicsUnit . Point , (( byte )( 0 ))); this . gpbxRaceSettings . ForeColor = System . Drawing . Color . White ; this . gpbxRaceSettings . Location = new System . Drawing . Point ( 733 , 9 ); this . gpbxRaceSettings . Name = \"gpbxRaceSettings\" ; this . gpbxRaceSettings . Padding = new System . Windows . Forms . Padding ( 0 ); this . gpbxRaceSettings . Size = new System . Drawing . Size ( 521 , 58 ); this . gpbxRaceSettings . TabIndex = 2 ; this . gpbxRaceSettings . TabStop = false ; this . gpbxRaceSettings . Text = \"RaceSettings\" ; this . gpbxRaceSettings . Paint += new System . Windows . Forms . PaintEventHandler ( this . removeBorders ); // // tbxGpUrl // this . tbxGpUrl . BackColor = System . Drawing . Color . FromArgb ((( int )((( byte )( 51 )))), (( int )((( byte )( 51 )))), (( int )((( byte )( 51 ))))); this . tbxGpUrl . BorderStyle = System . Windows . Forms . BorderStyle . None ; this . tbxGpUrl . Font = new System . Drawing . Font ( \"Microsoft YaHei UI\" , 10.2F , System . Drawing . FontStyle . Regular , System . Drawing . GraphicsUnit . Point , (( byte )( 0 ))); this . tbxGpUrl . ForeColor = System . Drawing . Color . White ; this . tbxGpUrl . Location = new System . Drawing . Point ( 141 , 25 ); this . tbxGpUrl . Name = \"tbxGpUrl\" ; this . tbxGpUrl . Size = new System . Drawing . Size ( 367 , 22 ); this . tbxGpUrl . TabIndex = 4 ; this . tbxGpUrl . TextChanged += new System . EventHandler ( this . tbxGpUrl_TextChanged ); // // gpbxDriverList // this . gpbxDriverList . Anchor = (( System . Windows . Forms . AnchorStyles )(( System . Windows . Forms . AnchorStyles . Top | System . Windows . Forms . AnchorStyles . Right ))); this . gpbxDriverList . BackColor = System . Drawing . Color . FromArgb ((( int )((( byte )( 79 )))), (( int )((( byte )( 79 )))), (( int )((( byte )( 79 ))))); this . gpbxDriverList . Controls . Add ( this . lsbDrivers ); this . gpbxDriverList . Controls . Add ( this . btnRemoveDriver ); this . gpbxDriverList . Controls . Add ( this . btnAddDriver ); this . gpbxDriverList . Controls . Add ( this . tbxDriverName ); this . gpbxDriverList . FlatStyle = System . Windows . Forms . FlatStyle . Popup ; this . gpbxDriverList . Font = new System . Drawing . Font ( \"Microsoft YaHei UI\" , 10F ); this . gpbxDriverList . ForeColor = System . Drawing . Color . White ; this . gpbxDriverList . Location = new System . Drawing . Point ( 995 , 73 ); this . gpbxDriverList . Name = \"gpbxDriverList\" ; this . gpbxDriverList . Padding = new System . Windows . Forms . Padding ( 0 ); this . gpbxDriverList . Size = new System . Drawing . Size ( 259 , 269 ); this . gpbxDriverList . TabIndex = 3 ; this . gpbxDriverList . TabStop = false ; this . gpbxDriverList . Text = \"DriverList\" ; this . gpbxDriverList . Paint += new System . Windows . Forms . PaintEventHandler ( this . removeBorders ); // // lsbDrivers // this . lsbDrivers . BackColor = System . Drawing . Color . FromArgb ((( int )((( byte )( 51 )))), (( int )((( byte )( 51 )))), (( int )((( byte )( 51 ))))); this . lsbDrivers . BorderStyle = System . Windows . Forms . BorderStyle . None ; this . lsbDrivers . Font = new System . Drawing . Font ( \"Microsoft YaHei UI\" , 10F ); this . lsbDrivers . ForeColor = System . Drawing . Color . FromArgb ((( int )((( byte )( 252 )))), (( int )((( byte )( 252 )))), (( int )((( byte )( 252 ))))); this . lsbDrivers . FormattingEnabled = true ; this . lsbDrivers . ItemHeight = 23 ; this . lsbDrivers . Location = new System . Drawing . Point ( 10 , 23 ); this . lsbDrivers . Name = \"lsbDrivers\" ; this . lsbDrivers . Size = new System . Drawing . Size ( 243 , 138 ); this . lsbDrivers . TabIndex = 10 ; // // btnRemoveDriver // this . btnRemoveDriver . BackColor = System . Drawing . Color . FromArgb ((( int )((( byte )( 51 )))), (( int )((( byte )( 51 )))), (( int )((( byte )( 51 ))))); this . btnRemoveDriver . FlatStyle = System . Windows . Forms . FlatStyle . Popup ; this . btnRemoveDriver . Font = new System . Drawing . Font ( \"Microsoft YaHei UI\" , 10.2F , System . Drawing . FontStyle . Regular , System . Drawing . GraphicsUnit . Point , (( byte )( 0 ))); this . btnRemoveDriver . ForeColor = System . Drawing . Color . White ; this . btnRemoveDriver . Location = new System . Drawing . Point ( 132 , 167 ); this . btnRemoveDriver . Name = \"btnRemoveDriver\" ; this . btnRemoveDriver . Size = new System . Drawing . Size ( 121 , 62 ); this . btnRemoveDriver . TabIndex = 9 ; this . btnRemoveDriver . Text = \"Remove\" ; this . btnRemoveDriver . UseVisualStyleBackColor = false ; this . btnRemoveDriver . Click += new System . EventHandler ( this . btnRemoveDriver_Click ); // // btnAddDriver // this . btnAddDriver . BackColor = System . Drawing . Color . FromArgb ((( int )((( byte )( 51 )))), (( int )((( byte )( 51 )))), (( int )((( byte )( 51 ))))); this . btnAddDriver . FlatStyle = System . Windows . Forms . FlatStyle . Popup ; this . btnAddDriver . Font = new System . Drawing . Font ( \"Microsoft YaHei UI\" , 10.2F , System . Drawing . FontStyle . Regular , System . Drawing . GraphicsUnit . Point , (( byte )( 0 ))); this . btnAddDriver . ForeColor = System . Drawing . Color . White ; this . btnAddDriver . Location = new System . Drawing . Point ( 10 , 167 ); this . btnAddDriver . Name = \"btnAddDriver\" ; this . btnAddDriver . Size = new System . Drawing . Size ( 116 , 62 ); this . btnAddDriver . TabIndex = 8 ; this . btnAddDriver . Text = \"Add\" ; this . btnAddDriver . UseVisualStyleBackColor = false ; this . btnAddDriver . Click += new System . EventHandler ( this . btnAddDriver_Click ); // // tbxDriverName // this . tbxDriverName . BackColor = System . Drawing . Color . FromArgb ((( int )((( byte )( 51 )))), (( int )((( byte )( 51 )))), (( int )((( byte )( 51 ))))); this . tbxDriverName . BorderStyle = System . Windows . Forms . BorderStyle . None ; this . tbxDriverName . Font = new System . Drawing . Font ( \"Microsoft YaHei UI\" , 11F ); this . tbxDriverName . ForeColor = System . Drawing . Color . FromArgb ((( int )((( byte )( 252 )))), (( int )((( byte )( 252 )))), (( int )((( byte )( 252 ))))); this . tbxDriverName . Location = new System . Drawing . Point ( 10 , 235 ); this . tbxDriverName . Name = \"tbxDriverName\" ; this . tbxDriverName . Size = new System . Drawing . Size ( 243 , 24 ); this . tbxDriverName . TabIndex = 7 ; // // gpbxPreview // this . gpbxPreview . BackColor = System . Drawing . Color . FromArgb ((( int )((( byte )( 79 )))), (( int )((( byte )( 79 )))), (( int )((( byte )( 79 ))))); this . gpbxPreview . Controls . Add ( this . lblWindowsRemaining ); this . gpbxPreview . Controls . Add ( this . btnResetDriver ); this . gpbxPreview . Controls . Add ( this . btnRefresh ); this . gpbxPreview . Controls . Add ( this . lblWindowPointsRemaining ); this . gpbxPreview . Controls . Add ( this . lblZonePointsRemaning ); this . gpbxPreview . Controls . Add ( this . btnCreateWindow ); this . gpbxPreview . Controls . Add ( this . pbxPreview ); this . gpbxPreview . Controls . Add ( this . btnCreatZone ); this . gpbxPreview . FlatStyle = System . Windows . Forms . FlatStyle . Flat ; this . gpbxPreview . Font = new System . Drawing . Font ( \"Microsoft YaHei UI\" , 10F ); this . gpbxPreview . ForeColor = System . Drawing . Color . White ; this . gpbxPreview . Location = new System . Drawing . Point ( 18 , 73 ); this . gpbxPreview . Name = \"gpbxPreview\" ; this . gpbxPreview . Padding = new System . Windows . Forms . Padding ( 0 ); this . gpbxPreview . Size = new System . Drawing . Size ( 968 , 608 ); this . gpbxPreview . TabIndex = 4 ; this . gpbxPreview . TabStop = false ; this . gpbxPreview . Text = \"Preview\" ; this . gpbxPreview . Paint += new System . Windows . Forms . PaintEventHandler ( this . removeBorders ); // // lblWindowsRemaining // this . lblWindowsRemaining . AutoSize = true ; this . lblWindowsRemaining . BackColor = System . Drawing . Color . Transparent ; this . lblWindowsRemaining . ForeColor = System . Drawing . Color . White ; this . lblWindowsRemaining . Location = new System . Drawing . Point ( 215 , 82 ); this . lblWindowsRemaining . Name = \"lblWindowsRemaining\" ; this . lblWindowsRemaining . Size = new System . Drawing . Size ( 183 , 23 ); this . lblWindowsRemaining . TabIndex = 6 ; this . lblWindowsRemaining . Text = \"7 windows remaining\" ; // // btnResetDriver // this . btnResetDriver . Anchor = (( System . Windows . Forms . AnchorStyles )(( System . Windows . Forms . AnchorStyles . Top | System . Windows . Forms . AnchorStyles . Right ))); this . btnResetDriver . BackColor = System . Drawing . Color . FromArgb ((( int )((( byte )( 51 )))), (( int )((( byte )( 51 )))), (( int )((( byte )( 51 ))))); this . btnResetDriver . Enabled = false ; this . btnResetDriver . FlatStyle = System . Windows . Forms . FlatStyle . Popup ; this . btnResetDriver . ForeColor = System . Drawing . Color . White ; this . btnResetDriver . Location = new System . Drawing . Point ( 748 , 20 ); this . btnResetDriver . Name = \"btnResetDriver\" ; this . btnResetDriver . Size = new System . Drawing . Size ( 211 , 33 ); this . btnResetDriver . TabIndex = 2 ; this . btnResetDriver . Text = \"Reset the emulator\" ; this . btnResetDriver . UseVisualStyleBackColor = false ; this . btnResetDriver . Click += new System . EventHandler ( this . btnResetDriver_Click ); // // btnRefresh // this . btnRefresh . Anchor = (( System . Windows . Forms . AnchorStyles )(( System . Windows . Forms . AnchorStyles . Top | System . Windows . Forms . AnchorStyles . Right ))); this . btnRefresh . BackColor = System . Drawing . Color . FromArgb ((( int )((( byte )( 51 )))), (( int )((( byte )( 51 )))), (( int )((( byte )( 51 ))))); this . btnRefresh . FlatStyle = System . Windows . Forms . FlatStyle . Popup ; this . btnRefresh . ForeColor = System . Drawing . Color . White ; this . btnRefresh . Location = new System . Drawing . Point ( 549 , 20 ); this . btnRefresh . Name = \"btnRefresh\" ; this . btnRefresh . Size = new System . Drawing . Size ( 193 , 33 ); this . btnRefresh . TabIndex = 1 ; this . btnRefresh . Text = \"Start the browser\" ; this . btnRefresh . UseVisualStyleBackColor = false ; this . btnRefresh . Click += new System . EventHandler ( this . btnRefresh_Click ); // // lblWindowPointsRemaining // this . lblWindowPointsRemaining . AutoSize = true ; this . lblWindowPointsRemaining . ForeColor = System . Drawing . Color . White ; this . lblWindowPointsRemaining . Location = new System . Drawing . Point ( 215 , 59 ); this . lblWindowPointsRemaining . Name = \"lblWindowPointsRemaining\" ; this . lblWindowPointsRemaining . Size = new System . Drawing . Size ( 163 , 23 ); this . lblWindowPointsRemaining . TabIndex = 4 ; this . lblWindowPointsRemaining . Text = \"0 points remaining\" ; // // lblZonePointsRemaning // this . lblZonePointsRemaning . AutoSize = true ; this . lblZonePointsRemaning . ForeColor = System . Drawing . Color . White ; this . lblZonePointsRemaning . Location = new System . Drawing . Point ( 19 , 59 ); this . lblZonePointsRemaning . Name = \"lblZonePointsRemaning\" ; this . lblZonePointsRemaning . Size = new System . Drawing . Size ( 163 , 23 ); this . lblZonePointsRemaning . TabIndex = 5 ; this . lblZonePointsRemaning . Text = \"0 points remaining\" ; // // btnCreateWindow // this . btnCreateWindow . BackColor = System . Drawing . Color . FromArgb ((( int )((( byte )( 51 )))), (( int )((( byte )( 51 )))), (( int )((( byte )( 51 ))))); this . btnCreateWindow . Enabled = false ; this . btnCreateWindow . FlatStyle = System . Windows . Forms . FlatStyle . Popup ; this . btnCreateWindow . ForeColor = System . Drawing . Color . White ; this . btnCreateWindow . Location = new System . Drawing . Point ( 213 , 23 ); this . btnCreateWindow . Name = \"btnCreateWindow\" ; this . btnCreateWindow . Size = new System . Drawing . Size ( 201 , 33 ); this . btnCreateWindow . TabIndex = 2 ; this . btnCreateWindow . Text = \"Create the windows\" ; this . btnCreateWindow . UseVisualStyleBackColor = false ; this . btnCreateWindow . Click += new System . EventHandler ( this . btnCreateWindow_Click ); // // pbxPreview // this . pbxPreview . BackColor = System . Drawing . Color . FromArgb ((( int )((( byte )( 51 )))), (( int )((( byte )( 51 )))), (( int )((( byte )( 51 ))))); this . pbxPreview . Location = new System . Drawing . Point ( 10 , 62 ); this . pbxPreview . Name = \"pbxPreview\" ; this . pbxPreview . Size = new System . Drawing . Size ( 950 , 540 ); this . pbxPreview . SizeMode = System . Windows . Forms . PictureBoxSizeMode . StretchImage ; this . pbxPreview . TabIndex = 0 ; this . pbxPreview . TabStop = false ; this . pbxPreview . Click += new System . EventHandler ( this . pbxMain_Click ); this . pbxPreview . MouseClick += new System . Windows . Forms . MouseEventHandler ( this . pbxMain_MouseClick ); // // btnCreatZone // this . btnCreatZone . BackColor = System . Drawing . Color . FromArgb ((( int )((( byte )( 51 )))), (( int )((( byte )( 51 )))), (( int )((( byte )( 51 ))))); this . btnCreatZone . Enabled = false ; this . btnCreatZone . FlatStyle = System . Windows . Forms . FlatStyle . Popup ; this . btnCreatZone . ForeColor = System . Drawing . Color . White ; this . btnCreatZone . Location = new System . Drawing . Point ( 6 , 23 ); this . btnCreatZone . Name = \"btnCreatZone\" ; this . btnCreatZone . Size = new System . Drawing . Size ( 201 , 33 ); this . btnCreatZone . TabIndex = 1 ; this . btnCreatZone . Text = \"Create the main zone\" ; this . btnCreatZone . UseVisualStyleBackColor = false ; this . btnCreatZone . Click += new System . EventHandler ( this . btnCreatZone_Click ); // // gpbxWindowPreview // this . gpbxWindowPreview . Anchor = (( System . Windows . Forms . AnchorStyles )(( System . Windows . Forms . AnchorStyles . Bottom | System . Windows . Forms . AnchorStyles . Left ))); this . gpbxWindowPreview . BackColor = System . Drawing . Color . FromArgb ((( int )((( byte )( 79 )))), (( int )((( byte )( 79 )))), (( int )((( byte )( 79 ))))); this . gpbxWindowPreview . Controls . Add ( this . pbxWindowPreview ); this . gpbxWindowPreview . FlatStyle = System . Windows . Forms . FlatStyle . Popup ; this . gpbxWindowPreview . Font = new System . Drawing . Font ( \"Microsoft YaHei UI\" , 10F ); this . gpbxWindowPreview . ForeColor = System . Drawing . Color . White ; this . gpbxWindowPreview . Location = new System . Drawing . Point ( 18 , 688 ); this . gpbxWindowPreview . Name = \"gpbxWindowPreview\" ; this . gpbxWindowPreview . Padding = new System . Windows . Forms . Padding ( 0 ); this . gpbxWindowPreview . Size = new System . Drawing . Size ( 1237 , 88 ); this . gpbxWindowPreview . TabIndex = 5 ; this . gpbxWindowPreview . TabStop = false ; this . gpbxWindowPreview . Text = \"DriverZonePreview\" ; this . gpbxWindowPreview . Paint += new System . Windows . Forms . PaintEventHandler ( this . removeBorders ); // // pbxWindowPreview // this . pbxWindowPreview . BackColor = System . Drawing . Color . FromArgb ((( int )((( byte )( 51 )))), (( int )((( byte )( 51 )))), (( int )((( byte )( 51 ))))); this . pbxWindowPreview . Location = new System . Drawing . Point ( 6 , 30 ); this . pbxWindowPreview . Name = \"pbxWindowPreview\" ; this . pbxWindowPreview . Size = new System . Drawing . Size ( 1225 , 50 ); this . pbxWindowPreview . SizeMode = System . Windows . Forms . PictureBoxSizeMode . StretchImage ; this . pbxWindowPreview . TabIndex = 0 ; this . pbxWindowPreview . TabStop = false ; this . pbxWindowPreview . Click += new System . EventHandler ( this . pbxDriverZone_Click ); this . pbxWindowPreview . MouseClick += new System . Windows . Forms . MouseEventHandler ( this . pbxDriverZone_MouseClick ); // // btnLoadPreset // this . btnLoadPreset . BackColor = System . Drawing . Color . FromArgb ((( int )((( byte )( 51 )))), (( int )((( byte )( 51 )))), (( int )((( byte )( 51 ))))); this . btnLoadPreset . FlatStyle = System . Windows . Forms . FlatStyle . Popup ; this . btnLoadPreset . ForeColor = System . Drawing . Color . White ; this . btnLoadPreset . Location = new System . Drawing . Point ( 10 , 213 ); this . btnLoadPreset . Name = \"btnLoadPreset\" ; this . btnLoadPreset . Size = new System . Drawing . Size ( 243 , 40 ); this . btnLoadPreset . TabIndex = 10 ; this . btnLoadPreset . Text = \"Load the preset\" ; this . btnLoadPreset . UseVisualStyleBackColor = false ; this . btnLoadPreset . Click += new System . EventHandler ( this . btnLoadPreset_Click ); // // lsbPresets // this . lsbPresets . BackColor = System . Drawing . Color . FromArgb ((( int )((( byte )( 51 )))), (( int )((( byte )( 51 )))), (( int )((( byte )( 51 ))))); this . lsbPresets . BorderStyle = System . Windows . Forms . BorderStyle . None ; this . lsbPresets . Font = new System . Drawing . Font ( \"Microsoft YaHei UI\" , 10F ); this . lsbPresets . ForeColor = System . Drawing . Color . FromArgb ((( int )((( byte )( 252 )))), (( int )((( byte )( 252 )))), (( int )((( byte )( 252 ))))); this . lsbPresets . FormattingEnabled = true ; this . lsbPresets . ItemHeight = 23 ; this . lsbPresets . Location = new System . Drawing . Point ( 10 , 23 ); this . lsbPresets . Name = \"lsbPresets\" ; this . lsbPresets . Size = new System . Drawing . Size ( 243 , 138 ); this . lsbPresets . TabIndex = 8 ; this . lsbPresets . SelectedIndexChanged += new System . EventHandler ( this . lsbPresets_SelectedIndexChanged ); // // tbxPresetName // this . tbxPresetName . BackColor = System . Drawing . Color . FromArgb ((( int )((( byte )( 51 )))), (( int )((( byte )( 51 )))), (( int )((( byte )( 51 ))))); this . tbxPresetName . BorderStyle = System . Windows . Forms . BorderStyle . None ; this . tbxPresetName . Font = new System . Drawing . Font ( \"Microsoft YaHei UI\" , 11F ); this . tbxPresetName . ForeColor = System . Drawing . Color . White ; this . tbxPresetName . Location = new System . Drawing . Point ( 10 , 303 ); this . tbxPresetName . Name = \"tbxPresetName\" ; this . tbxPresetName . Size = new System . Drawing . Size ( 243 , 24 ); this . tbxPresetName . TabIndex = 7 ; // // btnSavePreset // this . btnSavePreset . BackColor = System . Drawing . Color . FromArgb ((( int )((( byte )( 51 )))), (( int )((( byte )( 51 )))), (( int )((( byte )( 51 ))))); this . btnSavePreset . FlatStyle = System . Windows . Forms . FlatStyle . Popup ; this . btnSavePreset . ForeColor = System . Drawing . Color . White ; this . btnSavePreset . Location = new System . Drawing . Point ( 10 , 259 ); this . btnSavePreset . Name = \"btnSavePreset\" ; this . btnSavePreset . Size = new System . Drawing . Size ( 243 , 40 ); this . btnSavePreset . TabIndex = 7 ; this . btnSavePreset . Text = \"Save current preset\" ; this . btnSavePreset . UseVisualStyleBackColor = false ; this . btnSavePreset . Click += new System . EventHandler ( this . btnSavePreset_Click ); // // gpbxPresets // this . gpbxPresets . Anchor = (( System . Windows . Forms . AnchorStyles )(( System . Windows . Forms . AnchorStyles . Top | System . Windows . Forms . AnchorStyles . Right ))); this . gpbxPresets . BackColor = System . Drawing . Color . FromArgb ((( int )((( byte )( 79 )))), (( int )((( byte )( 79 )))), (( int )((( byte )( 79 ))))); this . gpbxPresets . Controls . Add ( this . btnSavePreset ); this . gpbxPresets . Controls . Add ( this . btnDeletePreset ); this . gpbxPresets . Controls . Add ( this . tbxPresetName ); this . gpbxPresets . Controls . Add ( this . btnLoadPreset ); this . gpbxPresets . Controls . Add ( this . lsbPresets ); this . gpbxPresets . FlatStyle = System . Windows . Forms . FlatStyle . Popup ; this . gpbxPresets . Font = new System . Drawing . Font ( \"Microsoft YaHei UI\" , 10F ); this . gpbxPresets . ForeColor = System . Drawing . Color . White ; this . gpbxPresets . Location = new System . Drawing . Point ( 995 , 348 ); this . gpbxPresets . Name = \"gpbxPresets\" ; this . gpbxPresets . Padding = new System . Windows . Forms . Padding ( 0 ); this . gpbxPresets . Size = new System . Drawing . Size ( 259 , 333 ); this . gpbxPresets . TabIndex = 6 ; this . gpbxPresets . TabStop = false ; this . gpbxPresets . Text = \"Presets\" ; this . gpbxPresets . Paint += new System . Windows . Forms . PaintEventHandler ( this . removeBorders ); // // btnDeletePreset // this . btnDeletePreset . BackColor = System . Drawing . Color . FromArgb ((( int )((( byte )( 51 )))), (( int )((( byte )( 51 )))), (( int )((( byte )( 51 ))))); this . btnDeletePreset . FlatStyle = System . Windows . Forms . FlatStyle . Popup ; this . btnDeletePreset . ForeColor = System . Drawing . Color . White ; this . btnDeletePreset . Location = new System . Drawing . Point ( 10 , 167 ); this . btnDeletePreset . Name = \"btnDeletePreset\" ; this . btnDeletePreset . Size = new System . Drawing . Size ( 243 , 40 ); this . btnDeletePreset . TabIndex = 11 ; this . btnDeletePreset . Text = \"Delete the preset\" ; this . btnDeletePreset . UseVisualStyleBackColor = false ; this . btnDeletePreset . Click += new System . EventHandler ( this . btnDeletePreset_Click ); // // Settings // this . AutoScaleDimensions = new System . Drawing . SizeF ( 8F , 19F ); this . AutoScaleMode = System . Windows . Forms . AutoScaleMode . Font ; this . BackColor = System . Drawing . Color . FromArgb ((( int )((( byte )( 51 )))), (( int )((( byte )( 51 )))), (( int )((( byte )( 51 ))))); this . ClientSize = new System . Drawing . Size ( 1266 , 788 ); this . Controls . Add ( this . gpbxPresets ); this . Controls . Add ( this . gpbxWindowPreview ); this . Controls . Add ( this . gpbxPreview ); this . Controls . Add ( this . gpbxDriverList ); this . Controls . Add ( this . label1 ); this . Controls . Add ( this . gpbxRaceSettings ); this . Font = new System . Drawing . Font ( \"Microsoft YaHei UI\" , 7.8F , System . Drawing . FontStyle . Regular , System . Drawing . GraphicsUnit . Point , (( byte )( 0 ))); this . Margin = new System . Windows . Forms . Padding ( 3 , 4 , 3 , 4 ); this . MinimumSize = new System . Drawing . Size ( 1284 , 835 ); this . Name = \"Settings\" ; this . StartPosition = System . Windows . Forms . FormStartPosition . CenterScreen ; this . Text = \"Settings\" ; this . FormClosing += new System . Windows . Forms . FormClosingEventHandler ( this . Settings_FormClosing ); this . Resize += new System . EventHandler ( this . Settings_Resize ); this . gpbxRaceSettings . ResumeLayout ( false ); this . gpbxRaceSettings . PerformLayout (); this . gpbxDriverList . ResumeLayout ( false ); this . gpbxDriverList . PerformLayout (); this . gpbxPreview . ResumeLayout ( false ); this . gpbxPreview . PerformLayout (); (( System . ComponentModel . ISupportInitialize )( this . pbxPreview )). EndInit (); this . gpbxWindowPreview . ResumeLayout ( false ); (( System . ComponentModel . ISupportInitialize )( this . pbxWindowPreview )). EndInit (); this . gpbxPresets . ResumeLayout ( false ); this . gpbxPresets . PerformLayout (); this . ResumeLayout ( false ); this . PerformLayout (); } #endregion private System . Windows . Forms . Label label1 ; private System . Windows . Forms . Label label2 ; private System . Windows . Forms . GroupBox gpbxRaceSettings ; private System . Windows . Forms . TextBox tbxGpUrl ; private System . Windows . Forms . GroupBox gpbxDriverList ; private System . Windows . Forms . ListBox lsbDrivers ; private System . Windows . Forms . Button btnRemoveDriver ; private System . Windows . Forms . Button btnAddDriver ; private System . Windows . Forms . TextBox tbxDriverName ; private System . Windows . Forms . GroupBox gpbxPreview ; private System . Windows . Forms . PictureBox pbxPreview ; private System . Windows . Forms . GroupBox gpbxWindowPreview ; private System . Windows . Forms . PictureBox pbxWindowPreview ; private System . Windows . Forms . Button btnCreateWindow ; private System . Windows . Forms . Button btnCreatZone ; private System . Windows . Forms . ListBox lsbPresets ; private System . Windows . Forms . TextBox tbxPresetName ; private System . Windows . Forms . Button btnSavePreset ; private System . Windows . Forms . Label lblWindowsRemaining ; private System . Windows . Forms . Label lblZonePointsRemaning ; private System . Windows . Forms . Label lblWindowPointsRemaining ; private System . Windows . Forms . Button btnRefresh ; private System . Windows . Forms . Button btnResetDriver ; private System . Windows . Forms . Button btnLoadPreset ; private System . Windows . Forms . GroupBox gpbxPresets ; private System . Windows . Forms . Button btnDeletePreset ; private System . Windows . Forms . ToolTip tip1 ; } }","title":"Settings.Designer.cs"},{"location":"Code/Settings.Designer.html#settingsdesignercs","text":"namespace TrackTrends { partial class Settings { /// /// Required designer variable. /// private System . ComponentModel . IContainer components = null ; /// /// Clean up any resources being used. /// /// true if managed resources should be disposed; otherwise, false. protected override void Dispose ( bool disposing ) { if ( disposing && ( components != null )) { components . Dispose (); } base . Dispose ( disposing ); } #region Windows Form Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent () { this . components = new System . ComponentModel . Container (); this . label1 = new System . Windows . Forms . Label (); this . label2 = new System . Windows . Forms . Label (); this . gpbxRaceSettings = new System . Windows . Forms . GroupBox (); this . tbxGpUrl = new System . Windows . Forms . TextBox (); this . gpbxDriverList = new System . Windows . Forms . GroupBox (); this . lsbDrivers = new System . Windows . Forms . ListBox (); this . btnRemoveDriver = new System . Windows . Forms . Button (); this . btnAddDriver = new System . Windows . Forms . Button (); this . tbxDriverName = new System . Windows . Forms . TextBox (); this . gpbxPreview = new System . Windows . Forms . GroupBox (); this . lblWindowsRemaining = new System . Windows . Forms . Label (); this . btnResetDriver = new System . Windows . Forms . Button (); this . btnRefresh = new System . Windows . Forms . Button (); this . lblWindowPointsRemaining = new System . Windows . Forms . Label (); this . lblZonePointsRemaning = new System . Windows . Forms . Label (); this . btnCreateWindow = new System . Windows . Forms . Button (); this . pbxPreview = new System . Windows . Forms . PictureBox (); this . btnCreatZone = new System . Windows . Forms . Button (); this . gpbxWindowPreview = new System . Windows . Forms . GroupBox (); this . pbxWindowPreview = new System . Windows . Forms . PictureBox (); this . btnLoadPreset = new System . Windows . Forms . Button (); this . lsbPresets = new System . Windows . Forms . ListBox (); this . tbxPresetName = new System . Windows . Forms . TextBox (); this . btnSavePreset = new System . Windows . Forms . Button (); this . gpbxPresets = new System . Windows . Forms . GroupBox (); this . btnDeletePreset = new System . Windows . Forms . Button (); this . tip1 = new System . Windows . Forms . ToolTip ( this . components ); this . gpbxRaceSettings . SuspendLayout (); this . gpbxDriverList . SuspendLayout (); this . gpbxPreview . SuspendLayout (); (( System . ComponentModel . ISupportInitialize )( this . pbxPreview )). BeginInit (); this . gpbxWindowPreview . SuspendLayout (); (( System . ComponentModel . ISupportInitialize )( this . pbxWindowPreview )). BeginInit (); this . gpbxPresets . SuspendLayout (); this . SuspendLayout (); // // label1 // this . label1 . AutoSize = true ; this . label1 . Font = new System . Drawing . Font ( \"Microsoft YaHei UI\" , 19.8F , System . Drawing . FontStyle . Regular , System . Drawing . GraphicsUnit . Point , (( byte )( 0 ))); this . label1 . ForeColor = System . Drawing . Color . White ; this . label1 . Location = new System . Drawing . Point ( 12 , 14 ); this . label1 . Name = \"label1\" ; this . label1 . Size = new System . Drawing . Size ( 309 , 43 ); this . label1 . TabIndex = 0 ; this . label1 . Text = \"Configuration tool\" ; // // label2 // this . label2 . AutoSize = true ; this . label2 . Font = new System . Drawing . Font ( \"Microsoft YaHei UI\" , 10.2F , System . Drawing . FontStyle . Regular , System . Drawing . GraphicsUnit . Point , (( byte )( 0 ))); this . label2 . ForeColor = System . Drawing . Color . White ; this . label2 . Location = new System . Drawing . Point ( 3 , 25 ); this . label2 . Name = \"label2\" ; this . label2 . Size = new System . Drawing . Size ( 132 , 23 ); this . label2 . TabIndex = 1 ; this . label2 . Text = \"Grand Prix URL\" ; // // gpbxRaceSettings // this . gpbxRaceSettings . Anchor = (( System . Windows . Forms . AnchorStyles )(( System . Windows . Forms . AnchorStyles . Top | System . Windows . Forms . AnchorStyles . Right ))); this . gpbxRaceSettings . BackColor = System . Drawing . Color . FromArgb ((( int )((( byte )( 79 )))), (( int )((( byte )( 79 )))), (( int )((( byte )( 79 ))))); this . gpbxRaceSettings . Controls . Add ( this . tbxGpUrl ); this . gpbxRaceSettings . Controls . Add ( this . label2 ); this . gpbxRaceSettings . Font = new System . Drawing . Font ( \"Microsoft YaHei UI\" , 10.2F , System . Drawing . FontStyle . Regular , System . Drawing . GraphicsUnit . Point , (( byte )( 0 ))); this . gpbxRaceSettings . ForeColor = System . Drawing . Color . White ; this . gpbxRaceSettings . Location = new System . Drawing . Point ( 733 , 9 ); this . gpbxRaceSettings . Name = \"gpbxRaceSettings\" ; this . gpbxRaceSettings . Padding = new System . Windows . Forms . Padding ( 0 ); this . gpbxRaceSettings . Size = new System . Drawing . Size ( 521 , 58 ); this . gpbxRaceSettings . TabIndex = 2 ; this . gpbxRaceSettings . TabStop = false ; this . gpbxRaceSettings . Text = \"RaceSettings\" ; this . gpbxRaceSettings . Paint += new System . Windows . Forms . PaintEventHandler ( this . removeBorders ); // // tbxGpUrl // this . tbxGpUrl . BackColor = System . Drawing . Color . FromArgb ((( int )((( byte )( 51 )))), (( int )((( byte )( 51 )))), (( int )((( byte )( 51 ))))); this . tbxGpUrl . BorderStyle = System . Windows . Forms . BorderStyle . None ; this . tbxGpUrl . Font = new System . Drawing . Font ( \"Microsoft YaHei UI\" , 10.2F , System . Drawing . FontStyle . Regular , System . Drawing . GraphicsUnit . Point , (( byte )( 0 ))); this . tbxGpUrl . ForeColor = System . Drawing . Color . White ; this . tbxGpUrl . Location = new System . Drawing . Point ( 141 , 25 ); this . tbxGpUrl . Name = \"tbxGpUrl\" ; this . tbxGpUrl . Size = new System . Drawing . Size ( 367 , 22 ); this . tbxGpUrl . TabIndex = 4 ; this . tbxGpUrl . TextChanged += new System . EventHandler ( this . tbxGpUrl_TextChanged ); // // gpbxDriverList // this . gpbxDriverList . Anchor = (( System . Windows . Forms . AnchorStyles )(( System . Windows . Forms . AnchorStyles . Top | System . Windows . Forms . AnchorStyles . Right ))); this . gpbxDriverList . BackColor = System . Drawing . Color . FromArgb ((( int )((( byte )( 79 )))), (( int )((( byte )( 79 )))), (( int )((( byte )( 79 ))))); this . gpbxDriverList . Controls . Add ( this . lsbDrivers ); this . gpbxDriverList . Controls . Add ( this . btnRemoveDriver ); this . gpbxDriverList . Controls . Add ( this . btnAddDriver ); this . gpbxDriverList . Controls . Add ( this . tbxDriverName ); this . gpbxDriverList . FlatStyle = System . Windows . Forms . FlatStyle . Popup ; this . gpbxDriverList . Font = new System . Drawing . Font ( \"Microsoft YaHei UI\" , 10F ); this . gpbxDriverList . ForeColor = System . Drawing . Color . White ; this . gpbxDriverList . Location = new System . Drawing . Point ( 995 , 73 ); this . gpbxDriverList . Name = \"gpbxDriverList\" ; this . gpbxDriverList . Padding = new System . Windows . Forms . Padding ( 0 ); this . gpbxDriverList . Size = new System . Drawing . Size ( 259 , 269 ); this . gpbxDriverList . TabIndex = 3 ; this . gpbxDriverList . TabStop = false ; this . gpbxDriverList . Text = \"DriverList\" ; this . gpbxDriverList . Paint += new System . Windows . Forms . PaintEventHandler ( this . removeBorders ); // // lsbDrivers // this . lsbDrivers . BackColor = System . Drawing . Color . FromArgb ((( int )((( byte )( 51 )))), (( int )((( byte )( 51 )))), (( int )((( byte )( 51 ))))); this . lsbDrivers . BorderStyle = System . Windows . Forms . BorderStyle . None ; this . lsbDrivers . Font = new System . Drawing . Font ( \"Microsoft YaHei UI\" , 10F ); this . lsbDrivers . ForeColor = System . Drawing . Color . FromArgb ((( int )((( byte )( 252 )))), (( int )((( byte )( 252 )))), (( int )((( byte )( 252 ))))); this . lsbDrivers . FormattingEnabled = true ; this . lsbDrivers . ItemHeight = 23 ; this . lsbDrivers . Location = new System . Drawing . Point ( 10 , 23 ); this . lsbDrivers . Name = \"lsbDrivers\" ; this . lsbDrivers . Size = new System . Drawing . Size ( 243 , 138 ); this . lsbDrivers . TabIndex = 10 ; // // btnRemoveDriver // this . btnRemoveDriver . BackColor = System . Drawing . Color . FromArgb ((( int )((( byte )( 51 )))), (( int )((( byte )( 51 )))), (( int )((( byte )( 51 ))))); this . btnRemoveDriver . FlatStyle = System . Windows . Forms . FlatStyle . Popup ; this . btnRemoveDriver . Font = new System . Drawing . Font ( \"Microsoft YaHei UI\" , 10.2F , System . Drawing . FontStyle . Regular , System . Drawing . GraphicsUnit . Point , (( byte )( 0 ))); this . btnRemoveDriver . ForeColor = System . Drawing . Color . White ; this . btnRemoveDriver . Location = new System . Drawing . Point ( 132 , 167 ); this . btnRemoveDriver . Name = \"btnRemoveDriver\" ; this . btnRemoveDriver . Size = new System . Drawing . Size ( 121 , 62 ); this . btnRemoveDriver . TabIndex = 9 ; this . btnRemoveDriver . Text = \"Remove\" ; this . btnRemoveDriver . UseVisualStyleBackColor = false ; this . btnRemoveDriver . Click += new System . EventHandler ( this . btnRemoveDriver_Click ); // // btnAddDriver // this . btnAddDriver . BackColor = System . Drawing . Color . FromArgb ((( int )((( byte )( 51 )))), (( int )((( byte )( 51 )))), (( int )((( byte )( 51 ))))); this . btnAddDriver . FlatStyle = System . Windows . Forms . FlatStyle . Popup ; this . btnAddDriver . Font = new System . Drawing . Font ( \"Microsoft YaHei UI\" , 10.2F , System . Drawing . FontStyle . Regular , System . Drawing . GraphicsUnit . Point , (( byte )( 0 ))); this . btnAddDriver . ForeColor = System . Drawing . Color . White ; this . btnAddDriver . Location = new System . Drawing . Point ( 10 , 167 ); this . btnAddDriver . Name = \"btnAddDriver\" ; this . btnAddDriver . Size = new System . Drawing . Size ( 116 , 62 ); this . btnAddDriver . TabIndex = 8 ; this . btnAddDriver . Text = \"Add\" ; this . btnAddDriver . UseVisualStyleBackColor = false ; this . btnAddDriver . Click += new System . EventHandler ( this . btnAddDriver_Click ); // // tbxDriverName // this . tbxDriverName . BackColor = System . Drawing . Color . FromArgb ((( int )((( byte )( 51 )))), (( int )((( byte )( 51 )))), (( int )((( byte )( 51 ))))); this . tbxDriverName . BorderStyle = System . Windows . Forms . BorderStyle . None ; this . tbxDriverName . Font = new System . Drawing . Font ( \"Microsoft YaHei UI\" , 11F ); this . tbxDriverName . ForeColor = System . Drawing . Color . FromArgb ((( int )((( byte )( 252 )))), (( int )((( byte )( 252 )))), (( int )((( byte )( 252 ))))); this . tbxDriverName . Location = new System . Drawing . Point ( 10 , 235 ); this . tbxDriverName . Name = \"tbxDriverName\" ; this . tbxDriverName . Size = new System . Drawing . Size ( 243 , 24 ); this . tbxDriverName . TabIndex = 7 ; // // gpbxPreview // this . gpbxPreview . BackColor = System . Drawing . Color . FromArgb ((( int )((( byte )( 79 )))), (( int )((( byte )( 79 )))), (( int )((( byte )( 79 ))))); this . gpbxPreview . Controls . Add ( this . lblWindowsRemaining ); this . gpbxPreview . Controls . Add ( this . btnResetDriver ); this . gpbxPreview . Controls . Add ( this . btnRefresh ); this . gpbxPreview . Controls . Add ( this . lblWindowPointsRemaining ); this . gpbxPreview . Controls . Add ( this . lblZonePointsRemaning ); this . gpbxPreview . Controls . Add ( this . btnCreateWindow ); this . gpbxPreview . Controls . Add ( this . pbxPreview ); this . gpbxPreview . Controls . Add ( this . btnCreatZone ); this . gpbxPreview . FlatStyle = System . Windows . Forms . FlatStyle . Flat ; this . gpbxPreview . Font = new System . Drawing . Font ( \"Microsoft YaHei UI\" , 10F ); this . gpbxPreview . ForeColor = System . Drawing . Color . White ; this . gpbxPreview . Location = new System . Drawing . Point ( 18 , 73 ); this . gpbxPreview . Name = \"gpbxPreview\" ; this . gpbxPreview . Padding = new System . Windows . Forms . Padding ( 0 ); this . gpbxPreview . Size = new System . Drawing . Size ( 968 , 608 ); this . gpbxPreview . TabIndex = 4 ; this . gpbxPreview . TabStop = false ; this . gpbxPreview . Text = \"Preview\" ; this . gpbxPreview . Paint += new System . Windows . Forms . PaintEventHandler ( this . removeBorders ); // // lblWindowsRemaining // this . lblWindowsRemaining . AutoSize = true ; this . lblWindowsRemaining . BackColor = System . Drawing . Color . Transparent ; this . lblWindowsRemaining . ForeColor = System . Drawing . Color . White ; this . lblWindowsRemaining . Location = new System . Drawing . Point ( 215 , 82 ); this . lblWindowsRemaining . Name = \"lblWindowsRemaining\" ; this . lblWindowsRemaining . Size = new System . Drawing . Size ( 183 , 23 ); this . lblWindowsRemaining . TabIndex = 6 ; this . lblWindowsRemaining . Text = \"7 windows remaining\" ; // // btnResetDriver // this . btnResetDriver . Anchor = (( System . Windows . Forms . AnchorStyles )(( System . Windows . Forms . AnchorStyles . Top | System . Windows . Forms . AnchorStyles . Right ))); this . btnResetDriver . BackColor = System . Drawing . Color . FromArgb ((( int )((( byte )( 51 )))), (( int )((( byte )( 51 )))), (( int )((( byte )( 51 ))))); this . btnResetDriver . Enabled = false ; this . btnResetDriver . FlatStyle = System . Windows . Forms . FlatStyle . Popup ; this . btnResetDriver . ForeColor = System . Drawing . Color . White ; this . btnResetDriver . Location = new System . Drawing . Point ( 748 , 20 ); this . btnResetDriver . Name = \"btnResetDriver\" ; this . btnResetDriver . Size = new System . Drawing . Size ( 211 , 33 ); this . btnResetDriver . TabIndex = 2 ; this . btnResetDriver . Text = \"Reset the emulator\" ; this . btnResetDriver . UseVisualStyleBackColor = false ; this . btnResetDriver . Click += new System . EventHandler ( this . btnResetDriver_Click ); // // btnRefresh // this . btnRefresh . Anchor = (( System . Windows . Forms . AnchorStyles )(( System . Windows . Forms . AnchorStyles . Top | System . Windows . Forms . AnchorStyles . Right ))); this . btnRefresh . BackColor = System . Drawing . Color . FromArgb ((( int )((( byte )( 51 )))), (( int )((( byte )( 51 )))), (( int )((( byte )( 51 ))))); this . btnRefresh . FlatStyle = System . Windows . Forms . FlatStyle . Popup ; this . btnRefresh . ForeColor = System . Drawing . Color . White ; this . btnRefresh . Location = new System . Drawing . Point ( 549 , 20 ); this . btnRefresh . Name = \"btnRefresh\" ; this . btnRefresh . Size = new System . Drawing . Size ( 193 , 33 ); this . btnRefresh . TabIndex = 1 ; this . btnRefresh . Text = \"Start the browser\" ; this . btnRefresh . UseVisualStyleBackColor = false ; this . btnRefresh . Click += new System . EventHandler ( this . btnRefresh_Click ); // // lblWindowPointsRemaining // this . lblWindowPointsRemaining . AutoSize = true ; this . lblWindowPointsRemaining . ForeColor = System . Drawing . Color . White ; this . lblWindowPointsRemaining . Location = new System . Drawing . Point ( 215 , 59 ); this . lblWindowPointsRemaining . Name = \"lblWindowPointsRemaining\" ; this . lblWindowPointsRemaining . Size = new System . Drawing . Size ( 163 , 23 ); this . lblWindowPointsRemaining . TabIndex = 4 ; this . lblWindowPointsRemaining . Text = \"0 points remaining\" ; // // lblZonePointsRemaning // this . lblZonePointsRemaning . AutoSize = true ; this . lblZonePointsRemaning . ForeColor = System . Drawing . Color . White ; this . lblZonePointsRemaning . Location = new System . Drawing . Point ( 19 , 59 ); this . lblZonePointsRemaning . Name = \"lblZonePointsRemaning\" ; this . lblZonePointsRemaning . Size = new System . Drawing . Size ( 163 , 23 ); this . lblZonePointsRemaning . TabIndex = 5 ; this . lblZonePointsRemaning . Text = \"0 points remaining\" ; // // btnCreateWindow // this . btnCreateWindow . BackColor = System . Drawing . Color . FromArgb ((( int )((( byte )( 51 )))), (( int )((( byte )( 51 )))), (( int )((( byte )( 51 ))))); this . btnCreateWindow . Enabled = false ; this . btnCreateWindow . FlatStyle = System . Windows . Forms . FlatStyle . Popup ; this . btnCreateWindow . ForeColor = System . Drawing . Color . White ; this . btnCreateWindow . Location = new System . Drawing . Point ( 213 , 23 ); this . btnCreateWindow . Name = \"btnCreateWindow\" ; this . btnCreateWindow . Size = new System . Drawing . Size ( 201 , 33 ); this . btnCreateWindow . TabIndex = 2 ; this . btnCreateWindow . Text = \"Create the windows\" ; this . btnCreateWindow . UseVisualStyleBackColor = false ; this . btnCreateWindow . Click += new System . EventHandler ( this . btnCreateWindow_Click ); // // pbxPreview // this . pbxPreview . BackColor = System . Drawing . Color . FromArgb ((( int )((( byte )( 51 )))), (( int )((( byte )( 51 )))), (( int )((( byte )( 51 ))))); this . pbxPreview . Location = new System . Drawing . Point ( 10 , 62 ); this . pbxPreview . Name = \"pbxPreview\" ; this . pbxPreview . Size = new System . Drawing . Size ( 950 , 540 ); this . pbxPreview . SizeMode = System . Windows . Forms . PictureBoxSizeMode . StretchImage ; this . pbxPreview . TabIndex = 0 ; this . pbxPreview . TabStop = false ; this . pbxPreview . Click += new System . EventHandler ( this . pbxMain_Click ); this . pbxPreview . MouseClick += new System . Windows . Forms . MouseEventHandler ( this . pbxMain_MouseClick ); // // btnCreatZone // this . btnCreatZone . BackColor = System . Drawing . Color . FromArgb ((( int )((( byte )( 51 )))), (( int )((( byte )( 51 )))), (( int )((( byte )( 51 ))))); this . btnCreatZone . Enabled = false ; this . btnCreatZone . FlatStyle = System . Windows . Forms . FlatStyle . Popup ; this . btnCreatZone . ForeColor = System . Drawing . Color . White ; this . btnCreatZone . Location = new System . Drawing . Point ( 6 , 23 ); this . btnCreatZone . Name = \"btnCreatZone\" ; this . btnCreatZone . Size = new System . Drawing . Size ( 201 , 33 ); this . btnCreatZone . TabIndex = 1 ; this . btnCreatZone . Text = \"Create the main zone\" ; this . btnCreatZone . UseVisualStyleBackColor = false ; this . btnCreatZone . Click += new System . EventHandler ( this . btnCreatZone_Click ); // // gpbxWindowPreview // this . gpbxWindowPreview . Anchor = (( System . Windows . Forms . AnchorStyles )(( System . Windows . Forms . AnchorStyles . Bottom | System . Windows . Forms . AnchorStyles . Left ))); this . gpbxWindowPreview . BackColor = System . Drawing . Color . FromArgb ((( int )((( byte )( 79 )))), (( int )((( byte )( 79 )))), (( int )((( byte )( 79 ))))); this . gpbxWindowPreview . Controls . Add ( this . pbxWindowPreview ); this . gpbxWindowPreview . FlatStyle = System . Windows . Forms . FlatStyle . Popup ; this . gpbxWindowPreview . Font = new System . Drawing . Font ( \"Microsoft YaHei UI\" , 10F ); this . gpbxWindowPreview . ForeColor = System . Drawing . Color . White ; this . gpbxWindowPreview . Location = new System . Drawing . Point ( 18 , 688 ); this . gpbxWindowPreview . Name = \"gpbxWindowPreview\" ; this . gpbxWindowPreview . Padding = new System . Windows . Forms . Padding ( 0 ); this . gpbxWindowPreview . Size = new System . Drawing . Size ( 1237 , 88 ); this . gpbxWindowPreview . TabIndex = 5 ; this . gpbxWindowPreview . TabStop = false ; this . gpbxWindowPreview . Text = \"DriverZonePreview\" ; this . gpbxWindowPreview . Paint += new System . Windows . Forms . PaintEventHandler ( this . removeBorders ); // // pbxWindowPreview // this . pbxWindowPreview . BackColor = System . Drawing . Color . FromArgb ((( int )((( byte )( 51 )))), (( int )((( byte )( 51 )))), (( int )((( byte )( 51 ))))); this . pbxWindowPreview . Location = new System . Drawing . Point ( 6 , 30 ); this . pbxWindowPreview . Name = \"pbxWindowPreview\" ; this . pbxWindowPreview . Size = new System . Drawing . Size ( 1225 , 50 ); this . pbxWindowPreview . SizeMode = System . Windows . Forms . PictureBoxSizeMode . StretchImage ; this . pbxWindowPreview . TabIndex = 0 ; this . pbxWindowPreview . TabStop = false ; this . pbxWindowPreview . Click += new System . EventHandler ( this . pbxDriverZone_Click ); this . pbxWindowPreview . MouseClick += new System . Windows . Forms . MouseEventHandler ( this . pbxDriverZone_MouseClick ); // // btnLoadPreset // this . btnLoadPreset . BackColor = System . Drawing . Color . FromArgb ((( int )((( byte )( 51 )))), (( int )((( byte )( 51 )))), (( int )((( byte )( 51 ))))); this . btnLoadPreset . FlatStyle = System . Windows . Forms . FlatStyle . Popup ; this . btnLoadPreset . ForeColor = System . Drawing . Color . White ; this . btnLoadPreset . Location = new System . Drawing . Point ( 10 , 213 ); this . btnLoadPreset . Name = \"btnLoadPreset\" ; this . btnLoadPreset . Size = new System . Drawing . Size ( 243 , 40 ); this . btnLoadPreset . TabIndex = 10 ; this . btnLoadPreset . Text = \"Load the preset\" ; this . btnLoadPreset . UseVisualStyleBackColor = false ; this . btnLoadPreset . Click += new System . EventHandler ( this . btnLoadPreset_Click ); // // lsbPresets // this . lsbPresets . BackColor = System . Drawing . Color . FromArgb ((( int )((( byte )( 51 )))), (( int )((( byte )( 51 )))), (( int )((( byte )( 51 ))))); this . lsbPresets . BorderStyle = System . Windows . Forms . BorderStyle . None ; this . lsbPresets . Font = new System . Drawing . Font ( \"Microsoft YaHei UI\" , 10F ); this . lsbPresets . ForeColor = System . Drawing . Color . FromArgb ((( int )((( byte )( 252 )))), (( int )((( byte )( 252 )))), (( int )((( byte )( 252 ))))); this . lsbPresets . FormattingEnabled = true ; this . lsbPresets . ItemHeight = 23 ; this . lsbPresets . Location = new System . Drawing . Point ( 10 , 23 ); this . lsbPresets . Name = \"lsbPresets\" ; this . lsbPresets . Size = new System . Drawing . Size ( 243 , 138 ); this . lsbPresets . TabIndex = 8 ; this . lsbPresets . SelectedIndexChanged += new System . EventHandler ( this . lsbPresets_SelectedIndexChanged ); // // tbxPresetName // this . tbxPresetName . BackColor = System . Drawing . Color . FromArgb ((( int )((( byte )( 51 )))), (( int )((( byte )( 51 )))), (( int )((( byte )( 51 ))))); this . tbxPresetName . BorderStyle = System . Windows . Forms . BorderStyle . None ; this . tbxPresetName . Font = new System . Drawing . Font ( \"Microsoft YaHei UI\" , 11F ); this . tbxPresetName . ForeColor = System . Drawing . Color . White ; this . tbxPresetName . Location = new System . Drawing . Point ( 10 , 303 ); this . tbxPresetName . Name = \"tbxPresetName\" ; this . tbxPresetName . Size = new System . Drawing . Size ( 243 , 24 ); this . tbxPresetName . TabIndex = 7 ; // // btnSavePreset // this . btnSavePreset . BackColor = System . Drawing . Color . FromArgb ((( int )((( byte )( 51 )))), (( int )((( byte )( 51 )))), (( int )((( byte )( 51 ))))); this . btnSavePreset . FlatStyle = System . Windows . Forms . FlatStyle . Popup ; this . btnSavePreset . ForeColor = System . Drawing . Color . White ; this . btnSavePreset . Location = new System . Drawing . Point ( 10 , 259 ); this . btnSavePreset . Name = \"btnSavePreset\" ; this . btnSavePreset . Size = new System . Drawing . Size ( 243 , 40 ); this . btnSavePreset . TabIndex = 7 ; this . btnSavePreset . Text = \"Save current preset\" ; this . btnSavePreset . UseVisualStyleBackColor = false ; this . btnSavePreset . Click += new System . EventHandler ( this . btnSavePreset_Click ); // // gpbxPresets // this . gpbxPresets . Anchor = (( System . Windows . Forms . AnchorStyles )(( System . Windows . Forms . AnchorStyles . Top | System . Windows . Forms . AnchorStyles . Right ))); this . gpbxPresets . BackColor = System . Drawing . Color . FromArgb ((( int )((( byte )( 79 )))), (( int )((( byte )( 79 )))), (( int )((( byte )( 79 ))))); this . gpbxPresets . Controls . Add ( this . btnSavePreset ); this . gpbxPresets . Controls . Add ( this . btnDeletePreset ); this . gpbxPresets . Controls . Add ( this . tbxPresetName ); this . gpbxPresets . Controls . Add ( this . btnLoadPreset ); this . gpbxPresets . Controls . Add ( this . lsbPresets ); this . gpbxPresets . FlatStyle = System . Windows . Forms . FlatStyle . Popup ; this . gpbxPresets . Font = new System . Drawing . Font ( \"Microsoft YaHei UI\" , 10F ); this . gpbxPresets . ForeColor = System . Drawing . Color . White ; this . gpbxPresets . Location = new System . Drawing . Point ( 995 , 348 ); this . gpbxPresets . Name = \"gpbxPresets\" ; this . gpbxPresets . Padding = new System . Windows . Forms . Padding ( 0 ); this . gpbxPresets . Size = new System . Drawing . Size ( 259 , 333 ); this . gpbxPresets . TabIndex = 6 ; this . gpbxPresets . TabStop = false ; this . gpbxPresets . Text = \"Presets\" ; this . gpbxPresets . Paint += new System . Windows . Forms . PaintEventHandler ( this . removeBorders ); // // btnDeletePreset // this . btnDeletePreset . BackColor = System . Drawing . Color . FromArgb ((( int )((( byte )( 51 )))), (( int )((( byte )( 51 )))), (( int )((( byte )( 51 ))))); this . btnDeletePreset . FlatStyle = System . Windows . Forms . FlatStyle . Popup ; this . btnDeletePreset . ForeColor = System . Drawing . Color . White ; this . btnDeletePreset . Location = new System . Drawing . Point ( 10 , 167 ); this . btnDeletePreset . Name = \"btnDeletePreset\" ; this . btnDeletePreset . Size = new System . Drawing . Size ( 243 , 40 ); this . btnDeletePreset . TabIndex = 11 ; this . btnDeletePreset . Text = \"Delete the preset\" ; this . btnDeletePreset . UseVisualStyleBackColor = false ; this . btnDeletePreset . Click += new System . EventHandler ( this . btnDeletePreset_Click ); // // Settings // this . AutoScaleDimensions = new System . Drawing . SizeF ( 8F , 19F ); this . AutoScaleMode = System . Windows . Forms . AutoScaleMode . Font ; this . BackColor = System . Drawing . Color . FromArgb ((( int )((( byte )( 51 )))), (( int )((( byte )( 51 )))), (( int )((( byte )( 51 ))))); this . ClientSize = new System . Drawing . Size ( 1266 , 788 ); this . Controls . Add ( this . gpbxPresets ); this . Controls . Add ( this . gpbxWindowPreview ); this . Controls . Add ( this . gpbxPreview ); this . Controls . Add ( this . gpbxDriverList ); this . Controls . Add ( this . label1 ); this . Controls . Add ( this . gpbxRaceSettings ); this . Font = new System . Drawing . Font ( \"Microsoft YaHei UI\" , 7.8F , System . Drawing . FontStyle . Regular , System . Drawing . GraphicsUnit . Point , (( byte )( 0 ))); this . Margin = new System . Windows . Forms . Padding ( 3 , 4 , 3 , 4 ); this . MinimumSize = new System . Drawing . Size ( 1284 , 835 ); this . Name = \"Settings\" ; this . StartPosition = System . Windows . Forms . FormStartPosition . CenterScreen ; this . Text = \"Settings\" ; this . FormClosing += new System . Windows . Forms . FormClosingEventHandler ( this . Settings_FormClosing ); this . Resize += new System . EventHandler ( this . Settings_Resize ); this . gpbxRaceSettings . ResumeLayout ( false ); this . gpbxRaceSettings . PerformLayout (); this . gpbxDriverList . ResumeLayout ( false ); this . gpbxDriverList . PerformLayout (); this . gpbxPreview . ResumeLayout ( false ); this . gpbxPreview . PerformLayout (); (( System . ComponentModel . ISupportInitialize )( this . pbxPreview )). EndInit (); this . gpbxWindowPreview . ResumeLayout ( false ); (( System . ComponentModel . ISupportInitialize )( this . pbxWindowPreview )). EndInit (); this . gpbxPresets . ResumeLayout ( false ); this . gpbxPresets . PerformLayout (); this . ResumeLayout ( false ); this . PerformLayout (); } #endregion private System . Windows . Forms . Label label1 ; private System . Windows . Forms . Label label2 ; private System . Windows . Forms . GroupBox gpbxRaceSettings ; private System . Windows . Forms . TextBox tbxGpUrl ; private System . Windows . Forms . GroupBox gpbxDriverList ; private System . Windows . Forms . ListBox lsbDrivers ; private System . Windows . Forms . Button btnRemoveDriver ; private System . Windows . Forms . Button btnAddDriver ; private System . Windows . Forms . TextBox tbxDriverName ; private System . Windows . Forms . GroupBox gpbxPreview ; private System . Windows . Forms . PictureBox pbxPreview ; private System . Windows . Forms . GroupBox gpbxWindowPreview ; private System . Windows . Forms . PictureBox pbxWindowPreview ; private System . Windows . Forms . Button btnCreateWindow ; private System . Windows . Forms . Button btnCreatZone ; private System . Windows . Forms . ListBox lsbPresets ; private System . Windows . Forms . TextBox tbxPresetName ; private System . Windows . Forms . Button btnSavePreset ; private System . Windows . Forms . Label lblWindowsRemaining ; private System . Windows . Forms . Label lblZonePointsRemaning ; private System . Windows . Forms . Label lblWindowPointsRemaining ; private System . Windows . Forms . Button btnRefresh ; private System . Windows . Forms . Button btnResetDriver ; private System . Windows . Forms . Button btnLoadPreset ; private System . Windows . Forms . GroupBox gpbxPresets ; private System . Windows . Forms . Button btnDeletePreset ; private System . Windows . Forms . ToolTip tip1 ; } }","title":"Settings.Designer.cs"},{"location":"Code/SqliteStorage.html","text":"SqliteStorage.cs /// Author : Maxime Rohmer /// Date : 30/05/2023 /// File : SqliteStorage.cs /// Brief : Class that controls the sqlite database /// Version : Alpha 1.0 using System ; using System.Collections.Generic ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; using System.Data.SQLite ; using System.IO ; using System.Windows.Forms ; namespace TrackTrends { public class SqliteStorage { private const string DATABASE_FOLDER = \"./Data\" ; private const string DATABASE_FILE = \"/database.sqlite\" ; private const string CONNECTION_STRING = \"Data Source=\" + DATABASE_FOLDER + DATABASE_FILE + \";Version=3;\" ; private SQLiteConnection Connection ; /// /// Creates a new Sqlite Storage and initialize the database /// public SqliteStorage () { Load (); } /// /// Loads a fresh new Database or create a new one if it does not exist. /// private void Load () { if (! Directory . Exists ( DATABASE_FOLDER )) Directory . CreateDirectory ( DATABASE_FOLDER ); if (! File . Exists ( DATABASE_FOLDER + DATABASE_FILE )) { SQLiteConnection . CreateFile ( DATABASE_FOLDER + DATABASE_FILE ); } else { //We are not using the existing DataBase File . Delete ( DATABASE_FOLDER + DATABASE_FILE ); } Connection = new SQLiteConnection ( CONNECTION_STRING ); Connection . Open (); //Create the drivers table string createDriversTableQuery = @\"CREATE TABLE IF NOT EXISTS Drivers (ID INTEGER PRIMARY KEY AUTOINCREMENT, Name VARCHAR NOT NULL);\" ; using ( var command = new SQLiteCommand ( createDriversTableQuery , Connection )) { command . ExecuteNonQuery (); } //Create the drivers table string createPitstopTableQuery = @\"CREATE TABLE Pitstops (Lap INTEGER NOT NULL, DriverID INTEGER NOT NULL, Tyre VARCHAR, PRIMARY KEY (Lap,DriverID));\" ; using ( var command = new SQLiteCommand ( createPitstopTableQuery , Connection )) { command . ExecuteNonQuery (); } //Create the stats string createStatsTableQuery = @\"CREATE TABLE IF NOT EXISTS Stats (Lap INTEGER NOT NULL, DriverID INTEGER NOT NULL, Tyre VARCHAR NOT NULL, LapTime INTEGER NOT NULL, Sector1 INTEGER NOT NULL, Sector2 INTEGER NOT NULL, Sector3 INTEGER NOT NULL, GapToLeader INTEGER NOT NULL, Position INTEGER NOT NULL, PRIMARY KEY (Lap, DriverID));\" ; using ( var command = new SQLiteCommand ( createStatsTableQuery , Connection )) { command . ExecuteNonQuery (); } } /// /// Adds a driver into the drivers table. Meant to be used at the start of the programm /// /// The name of the driver. (non case sensitive) public void AddDriver ( string name ) { string insertQuery = \"INSERT INTO Drivers (Name) VALUES (@name);\" ; using ( var command = new SQLiteCommand ( insertQuery , Connection )) { command . Parameters . AddWithValue ( \"@Name\" , name ); try { command . ExecuteNonQuery (); } catch { //MessageBox.Show(\"An error has occured while trying to insert a new driver into de Database\"); } } } /// /// Searches for a driver and returns its id if it has been found /// /// Name of the driver (non case sensitive) /// private int GetDriverID ( string name ) { string selectQuery = \"SELECT ID FROM Drivers where Name LIKE @driverName\" ; int result = 0 ; using ( var command = new SQLiteCommand ( selectQuery , Connection )) { command . Parameters . AddWithValue ( \"@driverName\" , name ); try { using ( var reader = command . ExecuteReader ()) { while ( reader . Read ()) { result = reader . GetInt32 ( 0 ); } } } catch { //MessageBox.Show(\"There has been an error while trying to retrieve the ID of a Driver from the database\"); } } return result ; } /// /// Gets the sectors from a lapTime. Sectors are subdivisions of a laptime (could be usefull to validate one or the other) /// /// The name of the driver who has done the lap /// The lap at wich the driver has done the time /// A list of the different sectors time in int (ms) public List < int > GetSectorsFromLapTime ( string driverName , int lap ) { int driverId = GetDriverID ( driverName ); string selectQuery = \"SELECT Sector1,Sector2,Sector3 FROM Stats WHERE DriverID = @driverID AND Lap = @lap\" ; List < int > result = new List < int >(); using ( var command = new SQLiteCommand ( selectQuery , Connection )) { command . Parameters . AddWithValue ( \"@driverID\" , driverId ); command . Parameters . AddWithValue ( \"@lap\" , lap ); try { SQLiteDataReader reader = command . ExecuteReader (); while ( reader . Read ()) { result . Add ( reader . GetInt32 ( 0 )); result . Add ( reader . GetInt32 ( 1 )); result . Add ( reader . GetInt32 ( 2 )); } } catch { //MessageBox.Show(\"There has been an error while trying to retrieve the ID of a Driver from the database\"); } } return result ; } /// /// Get the laptime history of a driver /// /// The name of the driver /// The number of lapTimes you want /// A list of tuples with the lap and the laptime. It will only return the amount it found so even if you ask 5 expect getting less or even 0 public List <( int LapTime , int Lap )> GetDriverLaptimes ( string driverName , int numberOfLaptimes ) { int driverId = GetDriverID ( driverName ); List <( int LapTime , int Lap )> lapData = new List <( int LapTime , int Lap )>(); string selectQuery = \"Select LapTime,Lap from Stats WHERE DriverID = @driverID ORDER BY Lap DESC LIMIT @limit\" ; using ( var command = new SQLiteCommand ( selectQuery , Connection )) { command . Parameters . AddWithValue ( \"@driverID\" , driverId ); command . Parameters . AddWithValue ( \"@limit\" , numberOfLaptimes ); try { SQLiteDataReader reader = command . ExecuteReader (); while ( reader . Read ()) { int lapTime = reader . GetInt32 ( 0 ); int lap = reader . GetInt32 ( 1 ); lapData . Add (( lapTime , lap )); } } catch { //MessageBox.Show(\"There has been an error while trying to retrieve the ID of a Driver from the database\"); } } return lapData ; } /// /// Add a pitstop into the db /// /// The name of the driver who made his pitstop /// The lap where he stopped /// The tyre he took out public void AddPitstop ( string driverName , int lap , string tyre ) { string insertQuery = \"INSERT INTO Pitstops (Lap,DriverID,Tyre) VALUES (@Lap,@DriverID,@Tyre)\" ; using ( var command = new SQLiteCommand ( insertQuery , Connection )) { command . Parameters . AddWithValue ( \"@Lap\" , lap ); command . Parameters . AddWithValue ( \"@DriverID\" , GetDriverID ( driverName )); command . Parameters . AddWithValue ( \"@Tyre\" , tyre ); try { command . ExecuteNonQuery (); } catch { //MessageBox.Show(\"An error has occured while trying to insert a new pitstop into the DB\" + Environment.NewLine + \"Request :\"+ command.ToString()); } } } /// /// Adds drivers info into the DB (it should only be once per lap) /// /// The Driver data /// The lap from wich the datas are from public void AddDriverStat ( DriverData data , int lap ) { string insertQuery = \"INSERT INTO Stats (Lap,DriverID,Tyre,LapTime,Sector1,Sector2,Sector3,GapToLeader,Position) VALUES (@Lap,@DriverID,@Tyre,@LapTime,@Sector1,@Sector2,@Sector3,@GapToLeader,@Position);\" ; using ( var command = new SQLiteCommand ( insertQuery , Connection )) { command . Parameters . AddWithValue ( \"@Lap\" , lap ); command . Parameters . AddWithValue ( \"@DriverID\" , GetDriverID ( data . Name )); command . Parameters . AddWithValue ( \"@Tyre\" , data . CurrentTyre . Coumpound . ToString ()); command . Parameters . AddWithValue ( \"@LapTime\" , data . LapTime ); command . Parameters . AddWithValue ( \"@Sector1\" , data . Sector1 ); command . Parameters . AddWithValue ( \"@Sector2\" , data . Sector2 ); command . Parameters . AddWithValue ( \"@Sector3\" , data . Sector3 ); command . Parameters . AddWithValue ( \"@GapToLeader\" , data . GapToLeader ); command . Parameters . AddWithValue ( \"@Position\" , data . Position ); try { command . ExecuteNonQuery (); } catch { //MessageBox.Show(\"An error has occured while trying to insert infos about a driver\"); } } } } }","title":"SqliteStorage.cs"},{"location":"Code/SqliteStorage.html#sqlitestoragecs","text":"/// Author : Maxime Rohmer /// Date : 30/05/2023 /// File : SqliteStorage.cs /// Brief : Class that controls the sqlite database /// Version : Alpha 1.0 using System ; using System.Collections.Generic ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; using System.Data.SQLite ; using System.IO ; using System.Windows.Forms ; namespace TrackTrends { public class SqliteStorage { private const string DATABASE_FOLDER = \"./Data\" ; private const string DATABASE_FILE = \"/database.sqlite\" ; private const string CONNECTION_STRING = \"Data Source=\" + DATABASE_FOLDER + DATABASE_FILE + \";Version=3;\" ; private SQLiteConnection Connection ; /// /// Creates a new Sqlite Storage and initialize the database /// public SqliteStorage () { Load (); } /// /// Loads a fresh new Database or create a new one if it does not exist. /// private void Load () { if (! Directory . Exists ( DATABASE_FOLDER )) Directory . CreateDirectory ( DATABASE_FOLDER ); if (! File . Exists ( DATABASE_FOLDER + DATABASE_FILE )) { SQLiteConnection . CreateFile ( DATABASE_FOLDER + DATABASE_FILE ); } else { //We are not using the existing DataBase File . Delete ( DATABASE_FOLDER + DATABASE_FILE ); } Connection = new SQLiteConnection ( CONNECTION_STRING ); Connection . Open (); //Create the drivers table string createDriversTableQuery = @\"CREATE TABLE IF NOT EXISTS Drivers (ID INTEGER PRIMARY KEY AUTOINCREMENT, Name VARCHAR NOT NULL);\" ; using ( var command = new SQLiteCommand ( createDriversTableQuery , Connection )) { command . ExecuteNonQuery (); } //Create the drivers table string createPitstopTableQuery = @\"CREATE TABLE Pitstops (Lap INTEGER NOT NULL, DriverID INTEGER NOT NULL, Tyre VARCHAR, PRIMARY KEY (Lap,DriverID));\" ; using ( var command = new SQLiteCommand ( createPitstopTableQuery , Connection )) { command . ExecuteNonQuery (); } //Create the stats string createStatsTableQuery = @\"CREATE TABLE IF NOT EXISTS Stats (Lap INTEGER NOT NULL, DriverID INTEGER NOT NULL, Tyre VARCHAR NOT NULL, LapTime INTEGER NOT NULL, Sector1 INTEGER NOT NULL, Sector2 INTEGER NOT NULL, Sector3 INTEGER NOT NULL, GapToLeader INTEGER NOT NULL, Position INTEGER NOT NULL, PRIMARY KEY (Lap, DriverID));\" ; using ( var command = new SQLiteCommand ( createStatsTableQuery , Connection )) { command . ExecuteNonQuery (); } } /// /// Adds a driver into the drivers table. Meant to be used at the start of the programm /// /// The name of the driver. (non case sensitive) public void AddDriver ( string name ) { string insertQuery = \"INSERT INTO Drivers (Name) VALUES (@name);\" ; using ( var command = new SQLiteCommand ( insertQuery , Connection )) { command . Parameters . AddWithValue ( \"@Name\" , name ); try { command . ExecuteNonQuery (); } catch { //MessageBox.Show(\"An error has occured while trying to insert a new driver into de Database\"); } } } /// /// Searches for a driver and returns its id if it has been found /// /// Name of the driver (non case sensitive) /// private int GetDriverID ( string name ) { string selectQuery = \"SELECT ID FROM Drivers where Name LIKE @driverName\" ; int result = 0 ; using ( var command = new SQLiteCommand ( selectQuery , Connection )) { command . Parameters . AddWithValue ( \"@driverName\" , name ); try { using ( var reader = command . ExecuteReader ()) { while ( reader . Read ()) { result = reader . GetInt32 ( 0 ); } } } catch { //MessageBox.Show(\"There has been an error while trying to retrieve the ID of a Driver from the database\"); } } return result ; } /// /// Gets the sectors from a lapTime. Sectors are subdivisions of a laptime (could be usefull to validate one or the other) /// /// The name of the driver who has done the lap /// The lap at wich the driver has done the time /// A list of the different sectors time in int (ms) public List < int > GetSectorsFromLapTime ( string driverName , int lap ) { int driverId = GetDriverID ( driverName ); string selectQuery = \"SELECT Sector1,Sector2,Sector3 FROM Stats WHERE DriverID = @driverID AND Lap = @lap\" ; List < int > result = new List < int >(); using ( var command = new SQLiteCommand ( selectQuery , Connection )) { command . Parameters . AddWithValue ( \"@driverID\" , driverId ); command . Parameters . AddWithValue ( \"@lap\" , lap ); try { SQLiteDataReader reader = command . ExecuteReader (); while ( reader . Read ()) { result . Add ( reader . GetInt32 ( 0 )); result . Add ( reader . GetInt32 ( 1 )); result . Add ( reader . GetInt32 ( 2 )); } } catch { //MessageBox.Show(\"There has been an error while trying to retrieve the ID of a Driver from the database\"); } } return result ; } /// /// Get the laptime history of a driver /// /// The name of the driver /// The number of lapTimes you want /// A list of tuples with the lap and the laptime. It will only return the amount it found so even if you ask 5 expect getting less or even 0 public List <( int LapTime , int Lap )> GetDriverLaptimes ( string driverName , int numberOfLaptimes ) { int driverId = GetDriverID ( driverName ); List <( int LapTime , int Lap )> lapData = new List <( int LapTime , int Lap )>(); string selectQuery = \"Select LapTime,Lap from Stats WHERE DriverID = @driverID ORDER BY Lap DESC LIMIT @limit\" ; using ( var command = new SQLiteCommand ( selectQuery , Connection )) { command . Parameters . AddWithValue ( \"@driverID\" , driverId ); command . Parameters . AddWithValue ( \"@limit\" , numberOfLaptimes ); try { SQLiteDataReader reader = command . ExecuteReader (); while ( reader . Read ()) { int lapTime = reader . GetInt32 ( 0 ); int lap = reader . GetInt32 ( 1 ); lapData . Add (( lapTime , lap )); } } catch { //MessageBox.Show(\"There has been an error while trying to retrieve the ID of a Driver from the database\"); } } return lapData ; } /// /// Add a pitstop into the db /// /// The name of the driver who made his pitstop /// The lap where he stopped /// The tyre he took out public void AddPitstop ( string driverName , int lap , string tyre ) { string insertQuery = \"INSERT INTO Pitstops (Lap,DriverID,Tyre) VALUES (@Lap,@DriverID,@Tyre)\" ; using ( var command = new SQLiteCommand ( insertQuery , Connection )) { command . Parameters . AddWithValue ( \"@Lap\" , lap ); command . Parameters . AddWithValue ( \"@DriverID\" , GetDriverID ( driverName )); command . Parameters . AddWithValue ( \"@Tyre\" , tyre ); try { command . ExecuteNonQuery (); } catch { //MessageBox.Show(\"An error has occured while trying to insert a new pitstop into the DB\" + Environment.NewLine + \"Request :\"+ command.ToString()); } } } /// /// Adds drivers info into the DB (it should only be once per lap) /// /// The Driver data /// The lap from wich the datas are from public void AddDriverStat ( DriverData data , int lap ) { string insertQuery = \"INSERT INTO Stats (Lap,DriverID,Tyre,LapTime,Sector1,Sector2,Sector3,GapToLeader,Position) VALUES (@Lap,@DriverID,@Tyre,@LapTime,@Sector1,@Sector2,@Sector3,@GapToLeader,@Position);\" ; using ( var command = new SQLiteCommand ( insertQuery , Connection )) { command . Parameters . AddWithValue ( \"@Lap\" , lap ); command . Parameters . AddWithValue ( \"@DriverID\" , GetDriverID ( data . Name )); command . Parameters . AddWithValue ( \"@Tyre\" , data . CurrentTyre . Coumpound . ToString ()); command . Parameters . AddWithValue ( \"@LapTime\" , data . LapTime ); command . Parameters . AddWithValue ( \"@Sector1\" , data . Sector1 ); command . Parameters . AddWithValue ( \"@Sector2\" , data . Sector2 ); command . Parameters . AddWithValue ( \"@Sector3\" , data . Sector3 ); command . Parameters . AddWithValue ( \"@GapToLeader\" , data . GapToLeader ); command . Parameters . AddWithValue ( \"@Position\" , data . Position ); try { command . ExecuteNonQuery (); } catch { //MessageBox.Show(\"An error has occured while trying to insert infos about a driver\"); } } } } }","title":"SqliteStorage.cs"},{"location":"Code/Zone.html","text":"Zone.cs /// Author : Maxime Rohmer /// Date : 30/05/2023 /// File : Zone.cs /// Brief : Class that contains all the methods and infos for a zone. This is designed to be potentially be inherited. /// Version : Alpha 1.0 using System ; using System.Collections.Generic ; using System.Drawing ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; namespace TrackTrends { public class Zone { private Rectangle _bounds ; private List < Zone > _zones ; private List < Window > _windows ; private Bitmap _image ; private string _name ; public Bitmap ZoneImage { get { //This little trickery lets you have the image that the zone sees Bitmap sample = new Bitmap ( Bounds . Width , Bounds . Height ); Graphics g = Graphics . FromImage ( sample ); g . DrawImage ( Image , new Rectangle ( 0 , 0 , sample . Width , sample . Height ), Bounds , GraphicsUnit . Pixel ); return sample ; } } public Bitmap Image { get { return _image ; } set { //It automatically sets the image for the contained windows and zones _image = value ; foreach ( Window w in Windows ) { w . Image = ZoneImage ; } foreach ( Zone z in Zones ) { z . Image = Image ; } } } public Rectangle Bounds { get => _bounds ; protected set => _bounds = value ; } public List < Zone > Zones { get => _zones ; protected set => _zones = value ; } public List < Window > Windows { get => _windows ; protected set => _windows = value ; } public string Name { get => _name ; protected set => _name = value ; } /// /// Creates a new Zone /// /// Image of the parent zone /// The position and size of the zone /// THe name of the zone (usefull for the JSON formatting) public Zone ( Bitmap image , Rectangle bounds , string name ) { Windows = new List < Window >(); Zones = new List < Zone >(); Name = name ; //You cant set the image in the CTOR because the processing is impossible at first initiation _image = image ; Bounds = bounds ; } /// /// Adds a zone to the list of zones /// /// The zone you want to add public virtual void AddZone ( Zone zone ) { Zones . Add ( zone ); } /// /// Add a window to the list of windows /// /// the window you want to add public virtual void AddWindow ( Window window ) { Windows . Add ( window ); } /// /// Calls all the windows to do OCR and to give back the results so we can send them to the model /// /// A list of all the driver in the race to help with text recognition /// A driver data object that contains all the infos about a driver public virtual DriverData Decode ( List < string > driverList ) { int sectorCount = 0 ; DriverData result = new DriverData (); foreach ( Window w in Windows ) { // A switch would be prettier but I dont think its supported in this C# version if ( w is DriverNameWindow ) result . Name = ( string )( w as DriverNameWindow ). DecodePng ( driverList ); if ( w is DriverDrsWindow ) result . DRS = ( bool )( w as DriverDrsWindow ). DecodePng (); if ( w is DriverGapToLeaderWindow ) result . GapToLeader = ( int )( w as DriverGapToLeaderWindow ). DecodePng (); if ( w is DriverLapTimeWindow ) result . LapTime = ( int )( w as DriverLapTimeWindow ). DecodePng (); if ( w is DriverPositionWindow ) result . Position = ( int )( w as DriverPositionWindow ). DecodePng (); if ( w is DriverSectorWindow ) { sectorCount ++; if ( sectorCount == 1 ) result . Sector1 = ( int )( w as DriverSectorWindow ). DecodePng (); if ( sectorCount == 2 ) result . Sector2 = ( int )( w as DriverSectorWindow ). DecodePng (); if ( sectorCount == 3 ) result . Sector3 = ( int )( w as DriverSectorWindow ). DecodePng (); } if ( w is DriverTyresWindow ) result . CurrentTyre = ( Tyre )( w as DriverTyresWindow ). DecodePng (); } return result ; } public virtual Bitmap Draw () { Bitmap img ; //If its the main zone we want to see everything if ( Zones . Count > 0 ) { img = Image ; } else { img = ZoneImage ; } Graphics g = Graphics . FromImage ( img ); //If its the main zone we need to visualize the Zone bounds displayed if ( Zones . Count > 0 ) g . DrawRectangle ( new Pen ( new SolidBrush ( Color . FromArgb ( 249 , 194 , 46 )), 5 ), Bounds ); foreach ( Zone z in Zones ) { Rectangle newBounds = new Rectangle ( z . Bounds . X , z . Bounds . Y + Bounds . Y , z . Bounds . Width , z . Bounds . Height ); g . DrawRectangle ( new Pen ( new SolidBrush ( Color . FromArgb ( 249 , 194 , 46 )), 5 ), newBounds ); } foreach ( Window w in Windows ) { g . DrawRectangle ( new Pen ( new SolidBrush ( Color . FromArgb ( 252 , 252 , 252 )), 5 ), w . Bounds ); } return img ; } public void ResetZones () { Zones . Clear (); } public void ResetWindows () { foreach ( Zone z in Zones ) { z . ResetWindows (); } Windows . Clear (); } /// /// Checks if the given Rectangle fits in the current zone /// /// The Rectangle you want to check the fittment /// protected bool Fits ( Rectangle inputRectangle ) { if ( inputRectangle . X + inputRectangle . Width > Bounds . Width || inputRectangle . Y + inputRectangle . Height > Bounds . Height || inputRectangle . X < 0 || inputRectangle . Y < 0 ) { return false ; } else { return true ; } } } }","title":"Zone.cs"},{"location":"Code/Zone.html#zonecs","text":"/// Author : Maxime Rohmer /// Date : 30/05/2023 /// File : Zone.cs /// Brief : Class that contains all the methods and infos for a zone. This is designed to be potentially be inherited. /// Version : Alpha 1.0 using System ; using System.Collections.Generic ; using System.Drawing ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; namespace TrackTrends { public class Zone { private Rectangle _bounds ; private List < Zone > _zones ; private List < Window > _windows ; private Bitmap _image ; private string _name ; public Bitmap ZoneImage { get { //This little trickery lets you have the image that the zone sees Bitmap sample = new Bitmap ( Bounds . Width , Bounds . Height ); Graphics g = Graphics . FromImage ( sample ); g . DrawImage ( Image , new Rectangle ( 0 , 0 , sample . Width , sample . Height ), Bounds , GraphicsUnit . Pixel ); return sample ; } } public Bitmap Image { get { return _image ; } set { //It automatically sets the image for the contained windows and zones _image = value ; foreach ( Window w in Windows ) { w . Image = ZoneImage ; } foreach ( Zone z in Zones ) { z . Image = Image ; } } } public Rectangle Bounds { get => _bounds ; protected set => _bounds = value ; } public List < Zone > Zones { get => _zones ; protected set => _zones = value ; } public List < Window > Windows { get => _windows ; protected set => _windows = value ; } public string Name { get => _name ; protected set => _name = value ; } /// /// Creates a new Zone /// /// Image of the parent zone /// The position and size of the zone /// THe name of the zone (usefull for the JSON formatting) public Zone ( Bitmap image , Rectangle bounds , string name ) { Windows = new List < Window >(); Zones = new List < Zone >(); Name = name ; //You cant set the image in the CTOR because the processing is impossible at first initiation _image = image ; Bounds = bounds ; } /// /// Adds a zone to the list of zones /// /// The zone you want to add public virtual void AddZone ( Zone zone ) { Zones . Add ( zone ); } /// /// Add a window to the list of windows /// /// the window you want to add public virtual void AddWindow ( Window window ) { Windows . Add ( window ); } /// /// Calls all the windows to do OCR and to give back the results so we can send them to the model /// /// A list of all the driver in the race to help with text recognition /// A driver data object that contains all the infos about a driver public virtual DriverData Decode ( List < string > driverList ) { int sectorCount = 0 ; DriverData result = new DriverData (); foreach ( Window w in Windows ) { // A switch would be prettier but I dont think its supported in this C# version if ( w is DriverNameWindow ) result . Name = ( string )( w as DriverNameWindow ). DecodePng ( driverList ); if ( w is DriverDrsWindow ) result . DRS = ( bool )( w as DriverDrsWindow ). DecodePng (); if ( w is DriverGapToLeaderWindow ) result . GapToLeader = ( int )( w as DriverGapToLeaderWindow ). DecodePng (); if ( w is DriverLapTimeWindow ) result . LapTime = ( int )( w as DriverLapTimeWindow ). DecodePng (); if ( w is DriverPositionWindow ) result . Position = ( int )( w as DriverPositionWindow ). DecodePng (); if ( w is DriverSectorWindow ) { sectorCount ++; if ( sectorCount == 1 ) result . Sector1 = ( int )( w as DriverSectorWindow ). DecodePng (); if ( sectorCount == 2 ) result . Sector2 = ( int )( w as DriverSectorWindow ). DecodePng (); if ( sectorCount == 3 ) result . Sector3 = ( int )( w as DriverSectorWindow ). DecodePng (); } if ( w is DriverTyresWindow ) result . CurrentTyre = ( Tyre )( w as DriverTyresWindow ). DecodePng (); } return result ; } public virtual Bitmap Draw () { Bitmap img ; //If its the main zone we want to see everything if ( Zones . Count > 0 ) { img = Image ; } else { img = ZoneImage ; } Graphics g = Graphics . FromImage ( img ); //If its the main zone we need to visualize the Zone bounds displayed if ( Zones . Count > 0 ) g . DrawRectangle ( new Pen ( new SolidBrush ( Color . FromArgb ( 249 , 194 , 46 )), 5 ), Bounds ); foreach ( Zone z in Zones ) { Rectangle newBounds = new Rectangle ( z . Bounds . X , z . Bounds . Y + Bounds . Y , z . Bounds . Width , z . Bounds . Height ); g . DrawRectangle ( new Pen ( new SolidBrush ( Color . FromArgb ( 249 , 194 , 46 )), 5 ), newBounds ); } foreach ( Window w in Windows ) { g . DrawRectangle ( new Pen ( new SolidBrush ( Color . FromArgb ( 252 , 252 , 252 )), 5 ), w . Bounds ); } return img ; } public void ResetZones () { Zones . Clear (); } public void ResetWindows () { foreach ( Zone z in Zones ) { z . ResetWindows (); } Windows . Clear (); } /// /// Checks if the given Rectangle fits in the current zone /// /// The Rectangle you want to check the fittment /// protected bool Fits ( Rectangle inputRectangle ) { if ( inputRectangle . X + inputRectangle . Width > Bounds . Width || inputRectangle . Y + inputRectangle . Height > Bounds . Height || inputRectangle . X < 0 || inputRectangle . Y < 0 ) { return false ; } else { return true ; } } } }","title":"Zone.cs"},{"location":"Code/DataWrapper.html","text":"DataWrapper.cs /// Author : Maxime Rohmer /// Date : 30/05/2023 /// File : DataWrapper.cs /// Brief : Class that is used to interface between the main Form (vue) and the Storage (wich is a class that wraps the sqlite database, so the model) its almost MVC :D /// Version : Alpha 1.0 using System ; using System.Collections.Generic ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; using System.Windows.Forms ; using System.Drawing ; namespace TrackTrends { internal class DataWrapper { private Reader Reader ; private SqliteStorage Storage ; List < List < DriverData >> LiveDriverDataLogs = new List < List < DriverData >>(); //Note : It could be usefull to get the mainForm at the start of the programm and not have to take it in half of the methods. /// /// Constructs a new DataWrapper. It needs the config file so it can create a Reader, It also needs a first screenshot for the same reason /// /// The JSON config file that is created by the configuration tool /// A screenshot of the public DataWrapper ( string configFile , Bitmap screenshot ) { Reader = new Reader ( configFile , screenshot , true ); //The Storage is here and on the Reader. It seems bad but it is ok as we dont use it at all to insert data and are only using it here to read some. The reader takes care of the inserts (Note: We could technically do both here but I did not find it usefull to transfer everything here) Storage = Reader . Storage ; } /// /// Refreshes the controller so it has the latest driver datas (Be sure to call it everytime you need to use any other method and expects the data to be up to date) /// /// Error code, 0 is success, 1 is not (Note: Maybe it could be interesting in the future to add some more error handling here) public int Refresh () { LiveDriverDataLogs . Add ( Reader . Decode ( Reader . MainZones , Reader . Drivers )); if ( LiveDriverDataLogs . Count > 0 ) return 0 ; return 1 ; } /// /// Changes the image to the newest screenshot in all of the zones and windows /// /// The new screenshot to put everywhere (Do not mix resolutions) public void ChangeImage ( Bitmap image ) { Reader . ChangeImage ( image ); } /// /// Gets all the data from one driver and also displays into the given panel the last five laps (or less if its the sart of the race) Note: Its responsive :D /// /// The name of the driver (should not be case sensitive but it MUST already exist in the first list that has been inserted into the DB) /// The pannel where you want the five last laps to be displayed /// The Main form. /// public DriverData GetFullDriverData ( string driverName , Panel lastFiveLapsPanel , Main form1 ) { //Note : I know that its a bad idea to ask the Form in this method and some others because it means that it wont work with any main form. And to that Ill say that... your right ! DriverData result = new DriverData (); if ( LiveDriverDataLogs . Count > 0 ) { //Searches the most recent live data from the given driverName foreach ( DriverData data in LiveDriverDataLogs [ LiveDriverDataLogs . Count - 1 ]) { if ( data . Name == driverName ) result = data ; } if ( result . Name != \"\" ) { //Recovers and displays the last five laps from the driver lastFiveLapsPanel . Controls . Clear (); Size labelDimensions = new Size ( lastFiveLapsPanel . Width , lastFiveLapsPanel . Height / 5 ); List <( int LapTime , int Lap )> lapsInfos = Storage . GetDriverLaptimes ( driverName , 5 ); int id = 0 ; foreach (( int LapTime , int Lap ) lapData in lapsInfos ) { //Hardcodes the new button. //Note : It could be smart to have like a default button for all the methods to use without needing to rewrite everything. Button newButton = new Button (); lastFiveLapsPanel . Controls . Add ( newButton ); newButton . Name = driverName + \"_\" + lapData . Lap ; newButton . Text = Reader . ConvertMsToTime ( lapData . LapTime ); newButton . Size = labelDimensions ; newButton . FlatStyle = FlatStyle . Popup ; newButton . Click += form1 . btnLapTime_Click ; newButton . Location = new Point ( 0 , id * newButton . Height ); id ++; } } } return result ; } /// /// Runs trough every drivers live data to recover the drivers that are close to each others /// /// The control that will host the displayed battles /// The main form. It needs to have a method called 'btnDriver_Click' so it can reads the buttons clicks public void DisplayBattles ( Panel pnlBattles , Main form1 ) { DriverData oldDriver = null ; List <( DriverData d1 , DriverData d2 , int gap )> battles = new List <( DriverData d1 , DriverData d2 , int gap )>(); //Search trough all the drivers and finds the one battling foreach ( DriverData driver in LiveDriverDataLogs [ LiveDriverDataLogs . Count - 1 ]) { if ( oldDriver != null && driver . Position != - 1 && oldDriver . Position != - 1 ) { if ( driver . GapToLeader < oldDriver . GapToLeader ) { //There is a problem with the drivers gaps } else { int gap = driver . GapToLeader - oldDriver . GapToLeader ; //3000ms is 3s. If drivers are that close then they are definitely in battle. If they are farther then maybe not if ( gap <= 3000 ) { battles . Add (( oldDriver , driver , gap )); } } oldDriver = driver ; } else { oldDriver = driver ; } } //We will only display 4 battles max int maxBattles = 4 ; if ( battles . Count > 0 ) { pnlBattles . Controls . Clear (); int maxUiHeight = Math . Max ( pnlBattles . Height / maxBattles , pnlBattles . Height / battles . Count ); int id = 0 ; foreach (( DriverData d1 , DriverData d2 , int gap ) battle in battles ) { if ( id < maxBattles ) { //*hardcoding* the different controls that needs to be added to the panel. //Note : this stuff could totally be handled by the Form with method returning a list of the drivers. It was just easier for me at the time to code it this way but its not the prettiest Button btnFirstDriver = new Button (); Button btnSecondDriver = new Button (); Label lblGap = new Label (); pnlBattles . Controls . Add ( btnFirstDriver ); pnlBattles . Controls . Add ( lblGap ); pnlBattles . Controls . Add ( btnSecondDriver ); btnFirstDriver . Anchor = AnchorStyles . Left | AnchorStyles . Top ; btnSecondDriver . Anchor = AnchorStyles . Right | AnchorStyles . Top ; lblGap . Anchor = AnchorStyles . Right | AnchorStyles . Left | AnchorStyles . Top ; lblGap . TextAlign = ContentAlignment . MiddleCenter ; lblGap . Font = new Font ( lblGap . Font . FontFamily , 15 ); btnFirstDriver . Click += form1 . btnDriver_Click ; btnSecondDriver . Click += form1 . btnDriver_Click ; btnFirstDriver . FlatStyle = FlatStyle . Popup ; btnSecondDriver . FlatStyle = FlatStyle . Popup ; lblGap . FlatStyle = FlatStyle . Popup ; btnFirstDriver . Size = new Size ( pnlBattles . Width / 3 , maxUiHeight ); btnSecondDriver . Size = new Size ( pnlBattles . Width / 3 , maxUiHeight ); lblGap . Size = new Size ( pnlBattles . Width / 3 , maxUiHeight ); btnFirstDriver . Location = new Point ( pnlBattles . Width / 3 * 0 , id * maxUiHeight ); lblGap . Location = new Point ( pnlBattles . Width / 3 * 1 , id * maxUiHeight ); btnSecondDriver . Location = new Point ( pnlBattles . Width / 3 * 2 , id * maxUiHeight ); btnFirstDriver . Text = battle . d1 . Name ; lblGap . Text = \"+ \" + Reader . ConvertMsToTime ( battle . gap ); if ( battle . gap <= 2000 ) lblGap . ForeColor = Color . Yellow ; if ( battle . gap <= 1000 ) lblGap . ForeColor = Color . Green ; btnSecondDriver . Text = battle . d2 . Name ; btnFirstDriver . Name = battle . d1 . Name + \"_\" + id ; lblGap . Name = \"lbl_Gap_\" + id ; btnSecondDriver . Name = battle . d2 . Name + \"_\" + id ; } else { break ; } id ++; } } } /// /// Searches the fastest and slowests drivers and displays them in the given panels /// /// Panel that will contain the constructed controls /// Panel that will contain the constructed controls /// The main form that needs to implement the method btnDriver_Click to allow it to recover custom buttons click public void DisplayTimesDeltas ( Panel pnlFastest , Panel pnlSlowest , Main form1 ) { List <( int avg , string driverName )> averages = new List <( int avg , string driverName )>(); foreach ( DriverData driver in LiveDriverDataLogs [ LiveDriverDataLogs . Count - 1 ]) { //We want to recover the last 5 lap times List <( int lapTime , int lap )> laps = Storage . GetDriverLaptimes ( driver . Name , 5 ); if ( laps . Count > 0 ) { int avg = 0 ; foreach (( int lapTime , int lap ) lap in laps ) { avg += lap . lapTime ; } avg = avg / laps . Count ; averages . Add (( avg , driver . Name )); } } int numberOfDriversToShow = 5 ; if ( averages . Count > 0 && averages . Count > numberOfDriversToShow ) { averages = averages . OrderBy ( item => item . avg ). ToList (); pnlFastest . Controls . Clear (); pnlSlowest . Controls . Clear (); int maxUiSize = pnlFastest . Height / numberOfDriversToShow ; //Displays the fastest drivers for ( int i = 0 ; i < numberOfDriversToShow ; i ++) { Button newButton = new Button (); ( int avg , string driver ) data = averages [ i ]; pnlFastest . Controls . Add ( newButton ); newButton . Size = new Size ( pnlFastest . Width , maxUiSize ); newButton . Location = new Point ( 0 , i * maxUiSize ); newButton . Text = data . driver ; newButton . FlatStyle = FlatStyle . Popup ; newButton . Name = data . driver + \"_fastest_\" + i ; newButton . Click += form1 . btnDriver_Click ; //We take the average time lost per lap if ( i != 0 ) newButton . Text += \" + \" + Reader . ConvertMsToTime ( Convert . ToInt32 ((( float ) data . avg - ( float ) averages [ 0 ]. avg ) / 5.0f )); } //Displays the slowests drivers int badId = 0 ; for ( int i = averages . Count - 1 ; i >= averages . Count - numberOfDriversToShow ; i --) { Button newButton = new Button (); ( int avg , string driver ) data = averages [ i ]; pnlSlowest . Controls . Add ( newButton ); newButton . Size = new Size ( pnlFastest . Width , maxUiSize ); newButton . Location = new Point ( 0 , badId * maxUiSize ); newButton . Text = data . driver ; newButton . FlatStyle = FlatStyle . Popup ; newButton . Name = data . driver + \"_slowest_\" + i ; newButton . Click += form1 . btnDriver_Click ; //We take the average time lost per lap newButton . Text += \" + \" + Reader . ConvertMsToTime ( Convert . ToInt32 ((( float ) data . avg - ( float ) averages [ 0 ]. avg ) / 5.0f )); badId ++; } } } /// /// Will add to the list of overtakes the different changes of position /// /// The listbox containing all the infos public void DisplayOvertakes ( ListBox lsbResult ) { //Note : This method SHOULD REALLY not do this but just return a string or a list of string with the new overtakes so the form can handle it as it wishes if ( LiveDriverDataLogs . Count > 1 ) { List < DriverData > oldList = LiveDriverDataLogs [ LiveDriverDataLogs . Count - 2 ]; List < DriverData > newList = LiveDriverDataLogs [ LiveDriverDataLogs . Count - 1 ]; for ( int i = 0 ; i < LiveDriverDataLogs [ LiveDriverDataLogs . Count - 1 ]. Count ; i ++) { if ( oldList [ i ]. Name != newList [ i ]. Name ) { //There has been a change in the standings for ( int y = 0 ; y < oldList . Count ; y ++) { if ( newList [ y ]. Name == oldList [ i ]. Name ) { //We found its new location if ( y > i ) { //The driver overtook someone lsbResult . Items . Add ( newList [ y ]. Name + \" climbed to \" + y ); } else { //The driver got overtook by someone lsbResult . Items . Add ( newList [ y ]. Name + \" fell to \" + y ); } } } } } } } /// /// Displays a messageBox containing the infos about a lap time /// /// The name of the driver that has done the lapTime /// The number of the lap on wich the lapTime has been set (CAUTION ITS NOT THE RACING LAP ITS FROM THE DB) /// The time (in ms) of the lap public void DisplayLapTimeInfos ( string driverName , int Lap , string LapTime ) { List < int > sectors = Storage . GetSectorsFromLapTime ( driverName , Lap ); string message = \"Lap time infos\" + Environment . NewLine ; message += LapTime + Environment . NewLine ; if ( sectors . Count > 0 ) message += \"Sector 1 : \" + Reader . ConvertMsToTime ( sectors [ 0 ]) + Environment . NewLine ; if ( sectors . Count > 1 ) message += \"Sector 2 : \" + Reader . ConvertMsToTime ( sectors [ 1 ]) + Environment . NewLine ; if ( sectors . Count > 2 ) message += \"Sector 3 : \" + Reader . ConvertMsToTime ( sectors [ 2 ]) + Environment . NewLine ; MessageBox . Show ( message ); } /// /// Displays the live ranking with the names of the drivers and their gap to the leader in the right order /// /// The control that will host all the new controls /// The main form public void DisplayLiveRanking ( Panel pnl , Main form1 ) { if ( LiveDriverDataLogs . Count > 0 ) { pnl . Controls . Clear (); //Gets the last item that should be the most recent data List < DriverData > liveData = LiveDriverDataLogs [ LiveDriverDataLogs . Count - 1 ]; Button [] buttons = new Button [ liveData . Count ]; Size buttonDimensions = new Size ( pnl . Width , pnl . Height / liveData . Count ); for ( int driverCount = 0 ; driverCount < liveData . Count ; driverCount ++) { Button newButton = new Button (); newButton . Size = buttonDimensions ; newButton . Location = new Point ( 0 , driverCount * buttonDimensions . Height ); newButton . FlatStyle = FlatStyle . Popup ; DriverData driver = liveData [ driverCount ]; if ( driver . Position == - 1 ) { //Its a DNF newButton . Enabled = false ; } if ( driver . Position > 1 ) { newButton . Text = driver . Name + \" +\" + Reader . ConvertMsToTime ( driver . GapToLeader ); } else { newButton . Text = driver . Name ; } newButton . Name = liveData [ driverCount ]. Name ; newButton . TextAlign = ContentAlignment . MiddleLeft ; newButton . FlatStyle = FlatStyle . Popup ; newButton . Click += form1 . btnDriver_Click ; buttons [ driverCount ] = newButton ; } //Note : It could be better to have this directly in the same loop foreach ( Button button in buttons ) { pnl . Controls . Add ( button ); } } } } }","title":"DataWrapper.cs"},{"location":"Code/DataWrapper.html#datawrappercs","text":"/// Author : Maxime Rohmer /// Date : 30/05/2023 /// File : DataWrapper.cs /// Brief : Class that is used to interface between the main Form (vue) and the Storage (wich is a class that wraps the sqlite database, so the model) its almost MVC :D /// Version : Alpha 1.0 using System ; using System.Collections.Generic ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; using System.Windows.Forms ; using System.Drawing ; namespace TrackTrends { internal class DataWrapper { private Reader Reader ; private SqliteStorage Storage ; List < List < DriverData >> LiveDriverDataLogs = new List < List < DriverData >>(); //Note : It could be usefull to get the mainForm at the start of the programm and not have to take it in half of the methods. /// /// Constructs a new DataWrapper. It needs the config file so it can create a Reader, It also needs a first screenshot for the same reason /// /// The JSON config file that is created by the configuration tool /// A screenshot of the public DataWrapper ( string configFile , Bitmap screenshot ) { Reader = new Reader ( configFile , screenshot , true ); //The Storage is here and on the Reader. It seems bad but it is ok as we dont use it at all to insert data and are only using it here to read some. The reader takes care of the inserts (Note: We could technically do both here but I did not find it usefull to transfer everything here) Storage = Reader . Storage ; } /// /// Refreshes the controller so it has the latest driver datas (Be sure to call it everytime you need to use any other method and expects the data to be up to date) /// /// Error code, 0 is success, 1 is not (Note: Maybe it could be interesting in the future to add some more error handling here) public int Refresh () { LiveDriverDataLogs . Add ( Reader . Decode ( Reader . MainZones , Reader . Drivers )); if ( LiveDriverDataLogs . Count > 0 ) return 0 ; return 1 ; } /// /// Changes the image to the newest screenshot in all of the zones and windows /// /// The new screenshot to put everywhere (Do not mix resolutions) public void ChangeImage ( Bitmap image ) { Reader . ChangeImage ( image ); } /// /// Gets all the data from one driver and also displays into the given panel the last five laps (or less if its the sart of the race) Note: Its responsive :D /// /// The name of the driver (should not be case sensitive but it MUST already exist in the first list that has been inserted into the DB) /// The pannel where you want the five last laps to be displayed /// The Main form. /// public DriverData GetFullDriverData ( string driverName , Panel lastFiveLapsPanel , Main form1 ) { //Note : I know that its a bad idea to ask the Form in this method and some others because it means that it wont work with any main form. And to that Ill say that... your right ! DriverData result = new DriverData (); if ( LiveDriverDataLogs . Count > 0 ) { //Searches the most recent live data from the given driverName foreach ( DriverData data in LiveDriverDataLogs [ LiveDriverDataLogs . Count - 1 ]) { if ( data . Name == driverName ) result = data ; } if ( result . Name != \"\" ) { //Recovers and displays the last five laps from the driver lastFiveLapsPanel . Controls . Clear (); Size labelDimensions = new Size ( lastFiveLapsPanel . Width , lastFiveLapsPanel . Height / 5 ); List <( int LapTime , int Lap )> lapsInfos = Storage . GetDriverLaptimes ( driverName , 5 ); int id = 0 ; foreach (( int LapTime , int Lap ) lapData in lapsInfos ) { //Hardcodes the new button. //Note : It could be smart to have like a default button for all the methods to use without needing to rewrite everything. Button newButton = new Button (); lastFiveLapsPanel . Controls . Add ( newButton ); newButton . Name = driverName + \"_\" + lapData . Lap ; newButton . Text = Reader . ConvertMsToTime ( lapData . LapTime ); newButton . Size = labelDimensions ; newButton . FlatStyle = FlatStyle . Popup ; newButton . Click += form1 . btnLapTime_Click ; newButton . Location = new Point ( 0 , id * newButton . Height ); id ++; } } } return result ; } /// /// Runs trough every drivers live data to recover the drivers that are close to each others /// /// The control that will host the displayed battles /// The main form. It needs to have a method called 'btnDriver_Click' so it can reads the buttons clicks public void DisplayBattles ( Panel pnlBattles , Main form1 ) { DriverData oldDriver = null ; List <( DriverData d1 , DriverData d2 , int gap )> battles = new List <( DriverData d1 , DriverData d2 , int gap )>(); //Search trough all the drivers and finds the one battling foreach ( DriverData driver in LiveDriverDataLogs [ LiveDriverDataLogs . Count - 1 ]) { if ( oldDriver != null && driver . Position != - 1 && oldDriver . Position != - 1 ) { if ( driver . GapToLeader < oldDriver . GapToLeader ) { //There is a problem with the drivers gaps } else { int gap = driver . GapToLeader - oldDriver . GapToLeader ; //3000ms is 3s. If drivers are that close then they are definitely in battle. If they are farther then maybe not if ( gap <= 3000 ) { battles . Add (( oldDriver , driver , gap )); } } oldDriver = driver ; } else { oldDriver = driver ; } } //We will only display 4 battles max int maxBattles = 4 ; if ( battles . Count > 0 ) { pnlBattles . Controls . Clear (); int maxUiHeight = Math . Max ( pnlBattles . Height / maxBattles , pnlBattles . Height / battles . Count ); int id = 0 ; foreach (( DriverData d1 , DriverData d2 , int gap ) battle in battles ) { if ( id < maxBattles ) { //*hardcoding* the different controls that needs to be added to the panel. //Note : this stuff could totally be handled by the Form with method returning a list of the drivers. It was just easier for me at the time to code it this way but its not the prettiest Button btnFirstDriver = new Button (); Button btnSecondDriver = new Button (); Label lblGap = new Label (); pnlBattles . Controls . Add ( btnFirstDriver ); pnlBattles . Controls . Add ( lblGap ); pnlBattles . Controls . Add ( btnSecondDriver ); btnFirstDriver . Anchor = AnchorStyles . Left | AnchorStyles . Top ; btnSecondDriver . Anchor = AnchorStyles . Right | AnchorStyles . Top ; lblGap . Anchor = AnchorStyles . Right | AnchorStyles . Left | AnchorStyles . Top ; lblGap . TextAlign = ContentAlignment . MiddleCenter ; lblGap . Font = new Font ( lblGap . Font . FontFamily , 15 ); btnFirstDriver . Click += form1 . btnDriver_Click ; btnSecondDriver . Click += form1 . btnDriver_Click ; btnFirstDriver . FlatStyle = FlatStyle . Popup ; btnSecondDriver . FlatStyle = FlatStyle . Popup ; lblGap . FlatStyle = FlatStyle . Popup ; btnFirstDriver . Size = new Size ( pnlBattles . Width / 3 , maxUiHeight ); btnSecondDriver . Size = new Size ( pnlBattles . Width / 3 , maxUiHeight ); lblGap . Size = new Size ( pnlBattles . Width / 3 , maxUiHeight ); btnFirstDriver . Location = new Point ( pnlBattles . Width / 3 * 0 , id * maxUiHeight ); lblGap . Location = new Point ( pnlBattles . Width / 3 * 1 , id * maxUiHeight ); btnSecondDriver . Location = new Point ( pnlBattles . Width / 3 * 2 , id * maxUiHeight ); btnFirstDriver . Text = battle . d1 . Name ; lblGap . Text = \"+ \" + Reader . ConvertMsToTime ( battle . gap ); if ( battle . gap <= 2000 ) lblGap . ForeColor = Color . Yellow ; if ( battle . gap <= 1000 ) lblGap . ForeColor = Color . Green ; btnSecondDriver . Text = battle . d2 . Name ; btnFirstDriver . Name = battle . d1 . Name + \"_\" + id ; lblGap . Name = \"lbl_Gap_\" + id ; btnSecondDriver . Name = battle . d2 . Name + \"_\" + id ; } else { break ; } id ++; } } } /// /// Searches the fastest and slowests drivers and displays them in the given panels /// /// Panel that will contain the constructed controls /// Panel that will contain the constructed controls /// The main form that needs to implement the method btnDriver_Click to allow it to recover custom buttons click public void DisplayTimesDeltas ( Panel pnlFastest , Panel pnlSlowest , Main form1 ) { List <( int avg , string driverName )> averages = new List <( int avg , string driverName )>(); foreach ( DriverData driver in LiveDriverDataLogs [ LiveDriverDataLogs . Count - 1 ]) { //We want to recover the last 5 lap times List <( int lapTime , int lap )> laps = Storage . GetDriverLaptimes ( driver . Name , 5 ); if ( laps . Count > 0 ) { int avg = 0 ; foreach (( int lapTime , int lap ) lap in laps ) { avg += lap . lapTime ; } avg = avg / laps . Count ; averages . Add (( avg , driver . Name )); } } int numberOfDriversToShow = 5 ; if ( averages . Count > 0 && averages . Count > numberOfDriversToShow ) { averages = averages . OrderBy ( item => item . avg ). ToList (); pnlFastest . Controls . Clear (); pnlSlowest . Controls . Clear (); int maxUiSize = pnlFastest . Height / numberOfDriversToShow ; //Displays the fastest drivers for ( int i = 0 ; i < numberOfDriversToShow ; i ++) { Button newButton = new Button (); ( int avg , string driver ) data = averages [ i ]; pnlFastest . Controls . Add ( newButton ); newButton . Size = new Size ( pnlFastest . Width , maxUiSize ); newButton . Location = new Point ( 0 , i * maxUiSize ); newButton . Text = data . driver ; newButton . FlatStyle = FlatStyle . Popup ; newButton . Name = data . driver + \"_fastest_\" + i ; newButton . Click += form1 . btnDriver_Click ; //We take the average time lost per lap if ( i != 0 ) newButton . Text += \" + \" + Reader . ConvertMsToTime ( Convert . ToInt32 ((( float ) data . avg - ( float ) averages [ 0 ]. avg ) / 5.0f )); } //Displays the slowests drivers int badId = 0 ; for ( int i = averages . Count - 1 ; i >= averages . Count - numberOfDriversToShow ; i --) { Button newButton = new Button (); ( int avg , string driver ) data = averages [ i ]; pnlSlowest . Controls . Add ( newButton ); newButton . Size = new Size ( pnlFastest . Width , maxUiSize ); newButton . Location = new Point ( 0 , badId * maxUiSize ); newButton . Text = data . driver ; newButton . FlatStyle = FlatStyle . Popup ; newButton . Name = data . driver + \"_slowest_\" + i ; newButton . Click += form1 . btnDriver_Click ; //We take the average time lost per lap newButton . Text += \" + \" + Reader . ConvertMsToTime ( Convert . ToInt32 ((( float ) data . avg - ( float ) averages [ 0 ]. avg ) / 5.0f )); badId ++; } } } /// /// Will add to the list of overtakes the different changes of position /// /// The listbox containing all the infos public void DisplayOvertakes ( ListBox lsbResult ) { //Note : This method SHOULD REALLY not do this but just return a string or a list of string with the new overtakes so the form can handle it as it wishes if ( LiveDriverDataLogs . Count > 1 ) { List < DriverData > oldList = LiveDriverDataLogs [ LiveDriverDataLogs . Count - 2 ]; List < DriverData > newList = LiveDriverDataLogs [ LiveDriverDataLogs . Count - 1 ]; for ( int i = 0 ; i < LiveDriverDataLogs [ LiveDriverDataLogs . Count - 1 ]. Count ; i ++) { if ( oldList [ i ]. Name != newList [ i ]. Name ) { //There has been a change in the standings for ( int y = 0 ; y < oldList . Count ; y ++) { if ( newList [ y ]. Name == oldList [ i ]. Name ) { //We found its new location if ( y > i ) { //The driver overtook someone lsbResult . Items . Add ( newList [ y ]. Name + \" climbed to \" + y ); } else { //The driver got overtook by someone lsbResult . Items . Add ( newList [ y ]. Name + \" fell to \" + y ); } } } } } } } /// /// Displays a messageBox containing the infos about a lap time /// /// The name of the driver that has done the lapTime /// The number of the lap on wich the lapTime has been set (CAUTION ITS NOT THE RACING LAP ITS FROM THE DB) /// The time (in ms) of the lap public void DisplayLapTimeInfos ( string driverName , int Lap , string LapTime ) { List < int > sectors = Storage . GetSectorsFromLapTime ( driverName , Lap ); string message = \"Lap time infos\" + Environment . NewLine ; message += LapTime + Environment . NewLine ; if ( sectors . Count > 0 ) message += \"Sector 1 : \" + Reader . ConvertMsToTime ( sectors [ 0 ]) + Environment . NewLine ; if ( sectors . Count > 1 ) message += \"Sector 2 : \" + Reader . ConvertMsToTime ( sectors [ 1 ]) + Environment . NewLine ; if ( sectors . Count > 2 ) message += \"Sector 3 : \" + Reader . ConvertMsToTime ( sectors [ 2 ]) + Environment . NewLine ; MessageBox . Show ( message ); } /// /// Displays the live ranking with the names of the drivers and their gap to the leader in the right order /// /// The control that will host all the new controls /// The main form public void DisplayLiveRanking ( Panel pnl , Main form1 ) { if ( LiveDriverDataLogs . Count > 0 ) { pnl . Controls . Clear (); //Gets the last item that should be the most recent data List < DriverData > liveData = LiveDriverDataLogs [ LiveDriverDataLogs . Count - 1 ]; Button [] buttons = new Button [ liveData . Count ]; Size buttonDimensions = new Size ( pnl . Width , pnl . Height / liveData . Count ); for ( int driverCount = 0 ; driverCount < liveData . Count ; driverCount ++) { Button newButton = new Button (); newButton . Size = buttonDimensions ; newButton . Location = new Point ( 0 , driverCount * buttonDimensions . Height ); newButton . FlatStyle = FlatStyle . Popup ; DriverData driver = liveData [ driverCount ]; if ( driver . Position == - 1 ) { //Its a DNF newButton . Enabled = false ; } if ( driver . Position > 1 ) { newButton . Text = driver . Name + \" +\" + Reader . ConvertMsToTime ( driver . GapToLeader ); } else { newButton . Text = driver . Name ; } newButton . Name = liveData [ driverCount ]. Name ; newButton . TextAlign = ContentAlignment . MiddleLeft ; newButton . FlatStyle = FlatStyle . Popup ; newButton . Click += form1 . btnDriver_Click ; buttons [ driverCount ] = newButton ; } //Note : It could be better to have this directly in the same loop foreach ( Button button in buttons ) { pnl . Controls . Add ( button ); } } } } }","title":"DataWrapper.cs"},{"location":"Code/DriverDrsWindow.html","text":"DriverDrsWindow.cs /// Author : Maxime Rohmer /// Date : 30/05/2023 /// File : DriverDrsWindow.cs /// Brief : Window containing DRS related method and infos /// Version : Alpha 1.0 using System ; using System.Collections.Generic ; using System.Drawing ; using System.Drawing.Imaging ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; using Tesseract ; namespace TrackTrends { public class DriverDrsWindow : Window { private static int EmptyDrsGreenValue = - 1 ; private static Random rnd = new Random (); public DriverDrsWindow ( Bitmap image , Rectangle bounds , bool generateEngine = true ) : base ( image , bounds , generateEngine ) { Name = \"DRS\" ; } /// /// Method that will decode the content of the window /// /// returns a boolean (true = DRS OPEN, false = DRS CLOSED) public override object DecodePng () { bool result = false ; //DEBUG //WindowImage.Save(\"./DRS/\"+rnd.Next(0,99999)+\".png\"); int greenValue = GetGreenPixels (); if ( EmptyDrsGreenValue == - 1 ) EmptyDrsGreenValue = greenValue ; if ( greenValue > EmptyDrsGreenValue + EmptyDrsGreenValue / 100 * 30 ) result = true ; return result ; } /// /// Method that will get the green pixel proportion in the image, this can be used to determin if the DRS has been actuated /// /// The number of clearely green pixels private unsafe int GetGreenPixels () { int tot = 0 ; Bitmap bmp = WindowImage ; Rectangle rect = new Rectangle ( 0 , 0 , bmp . Width , bmp . Height ); BitmapData bmpData = bmp . LockBits ( rect , ImageLockMode . ReadOnly , bmp . PixelFormat ); int bytesPerPixel = Bitmap . GetPixelFormatSize ( bmp . PixelFormat ) / 8 ; unsafe { byte * ptr = ( byte *) bmpData . Scan0 . ToPointer (); for ( int y = 0 ; y < bmp . Height ; y ++) { byte * currentLine = ptr + ( y * bmpData . Stride ); for ( int x = 0 ; x < bmp . Width ; x ++) { byte * pixel = currentLine + ( x * bytesPerPixel ); byte blue = pixel [ 0 ]; byte green = pixel [ 1 ]; byte red = pixel [ 2 ]; if ( green > blue * 1.5 && green > red * 1.5 ) { tot ++; } } } } bmp . UnlockBits ( bmpData ); return tot ; } /// /// This method is used to lock on where exactly the DRS window is /// /// Returns a rectangle containing the DRS public Rectangle GetBox () { var tessImage = Pix . LoadFromMemory ( ImageToByte ( WindowImage )); Engine . SetVariable ( \"tessedit_char_whitelist\" , \"\" ); Page page = Engine . Process ( tessImage ); using ( var iter = page . GetIterator ()) { iter . Begin (); do { Rect boundingBox ; // Get the bounding box for the current element if ( iter . TryGetBoundingBox ( PageIteratorLevel . Word , out boundingBox )) { page . Dispose (); return new Rectangle ( boundingBox . X1 , boundingBox . X2 , boundingBox . Width , boundingBox . Height ); } } while ( iter . Next ( PageIteratorLevel . Word )); page . Dispose (); return new Rectangle ( 0 , 0 , 0 , 0 ); } } } }","title":"DriverDrsWindow.cs"},{"location":"Code/DriverDrsWindow.html#driverdrswindowcs","text":"/// Author : Maxime Rohmer /// Date : 30/05/2023 /// File : DriverDrsWindow.cs /// Brief : Window containing DRS related method and infos /// Version : Alpha 1.0 using System ; using System.Collections.Generic ; using System.Drawing ; using System.Drawing.Imaging ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; using Tesseract ; namespace TrackTrends { public class DriverDrsWindow : Window { private static int EmptyDrsGreenValue = - 1 ; private static Random rnd = new Random (); public DriverDrsWindow ( Bitmap image , Rectangle bounds , bool generateEngine = true ) : base ( image , bounds , generateEngine ) { Name = \"DRS\" ; } /// /// Method that will decode the content of the window /// /// returns a boolean (true = DRS OPEN, false = DRS CLOSED) public override object DecodePng () { bool result = false ; //DEBUG //WindowImage.Save(\"./DRS/\"+rnd.Next(0,99999)+\".png\"); int greenValue = GetGreenPixels (); if ( EmptyDrsGreenValue == - 1 ) EmptyDrsGreenValue = greenValue ; if ( greenValue > EmptyDrsGreenValue + EmptyDrsGreenValue / 100 * 30 ) result = true ; return result ; } /// /// Method that will get the green pixel proportion in the image, this can be used to determin if the DRS has been actuated /// /// The number of clearely green pixels private unsafe int GetGreenPixels () { int tot = 0 ; Bitmap bmp = WindowImage ; Rectangle rect = new Rectangle ( 0 , 0 , bmp . Width , bmp . Height ); BitmapData bmpData = bmp . LockBits ( rect , ImageLockMode . ReadOnly , bmp . PixelFormat ); int bytesPerPixel = Bitmap . GetPixelFormatSize ( bmp . PixelFormat ) / 8 ; unsafe { byte * ptr = ( byte *) bmpData . Scan0 . ToPointer (); for ( int y = 0 ; y < bmp . Height ; y ++) { byte * currentLine = ptr + ( y * bmpData . Stride ); for ( int x = 0 ; x < bmp . Width ; x ++) { byte * pixel = currentLine + ( x * bytesPerPixel ); byte blue = pixel [ 0 ]; byte green = pixel [ 1 ]; byte red = pixel [ 2 ]; if ( green > blue * 1.5 && green > red * 1.5 ) { tot ++; } } } } bmp . UnlockBits ( bmpData ); return tot ; } /// /// This method is used to lock on where exactly the DRS window is /// /// Returns a rectangle containing the DRS public Rectangle GetBox () { var tessImage = Pix . LoadFromMemory ( ImageToByte ( WindowImage )); Engine . SetVariable ( \"tessedit_char_whitelist\" , \"\" ); Page page = Engine . Process ( tessImage ); using ( var iter = page . GetIterator ()) { iter . Begin (); do { Rect boundingBox ; // Get the bounding box for the current element if ( iter . TryGetBoundingBox ( PageIteratorLevel . Word , out boundingBox )) { page . Dispose (); return new Rectangle ( boundingBox . X1 , boundingBox . X2 , boundingBox . Width , boundingBox . Height ); } } while ( iter . Next ( PageIteratorLevel . Word )); page . Dispose (); return new Rectangle ( 0 , 0 , 0 , 0 ); } } } }","title":"DriverDrsWindow.cs"},{"location":"Code/DriverLapTimeWindow.html","text":"DriverLapTimeWindow.cs /// Author : Maxime Rohmer /// Date : 30/05/2023 /// File : DriverLapTimeWindow /// Brief : Window containing infos about the lap time of a driver /// Version : Alpha 1.0 using System ; using System.Collections.Generic ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; using System.Drawing ; namespace TrackTrends { public class DriverLapTimeWindow : Window { public DriverLapTimeWindow ( Bitmap image , Rectangle bounds , bool generateEngine = true ) : base ( image , bounds , generateEngine ) { Name = \"LapTime\" ; } /// /// Decodes the lap time contained in the image using OCR Tesseract /// /// The laptime in int (ms) public override object DecodePng () { int result = GetTimeFromPng ( WindowImage , OcrImage . WindowType . LapTime , Engine ); return result ; } } }","title":"DriverLapTimeWindow.cs"},{"location":"Code/DriverLapTimeWindow.html#driverlaptimewindowcs","text":"/// Author : Maxime Rohmer /// Date : 30/05/2023 /// File : DriverLapTimeWindow /// Brief : Window containing infos about the lap time of a driver /// Version : Alpha 1.0 using System ; using System.Collections.Generic ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; using System.Drawing ; namespace TrackTrends { public class DriverLapTimeWindow : Window { public DriverLapTimeWindow ( Bitmap image , Rectangle bounds , bool generateEngine = true ) : base ( image , bounds , generateEngine ) { Name = \"LapTime\" ; } /// /// Decodes the lap time contained in the image using OCR Tesseract /// /// The laptime in int (ms) public override object DecodePng () { int result = GetTimeFromPng ( WindowImage , OcrImage . WindowType . LapTime , Engine ); return result ; } } }","title":"DriverLapTimeWindow.cs"},{"location":"Code/DriverPositionWindow.html","text":"DriverPositionWindow.cs /// Author : Maxime Rohmer /// Date : 30/05/2023 /// File : DriverPositionWindow.cs /// Brief : Window containing infos about the position of a driver. /// Version : Alpha 1.0 using System ; using System.Collections.Generic ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; using System.Drawing ; namespace TrackTrends { public class DriverPositionWindow : Window { public DriverPositionWindow ( Bitmap image , Rectangle bounds , bool generateEngine = true ) : base ( image , bounds , generateEngine ) { Name = \"Position\" ; } /// /// Decodes the position number using Tesseract OCR /// /// An int representing the position of the driver (should be between 1 and 20 included) public override object DecodePng () { string ocrResult = GetStringFromPng ( WindowImage , Engine , \"0123456789\" ); int position ; try { position = Convert . ToInt32 ( ocrResult ); } catch { position = - 1 ; } return position ; } } }","title":"DriverPositionWindow.cs"},{"location":"Code/DriverPositionWindow.html#driverpositionwindowcs","text":"/// Author : Maxime Rohmer /// Date : 30/05/2023 /// File : DriverPositionWindow.cs /// Brief : Window containing infos about the position of a driver. /// Version : Alpha 1.0 using System ; using System.Collections.Generic ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; using System.Drawing ; namespace TrackTrends { public class DriverPositionWindow : Window { public DriverPositionWindow ( Bitmap image , Rectangle bounds , bool generateEngine = true ) : base ( image , bounds , generateEngine ) { Name = \"Position\" ; } /// /// Decodes the position number using Tesseract OCR /// /// An int representing the position of the driver (should be between 1 and 20 included) public override object DecodePng () { string ocrResult = GetStringFromPng ( WindowImage , Engine , \"0123456789\" ); int position ; try { position = Convert . ToInt32 ( ocrResult ); } catch { position = - 1 ; } return position ; } } }","title":"DriverPositionWindow.cs"},{"location":"Code/DriverTyresWindow.html","text":"DriverTyresWindow.cs /// Author : Maxime Rohmer /// Date : 30/05/2023 /// File : DriverTyresWindow.cs /// Brief : Window containing infos about a driver's tyre /// Version : Alpha 1.0 using System ; using System.Collections.Generic ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; using System.Drawing ; namespace TrackTrends { public class DriverTyresWindow : Window { private static Random rnd = new Random (); //Those are the colors I found but you can change them if they change in the future like in 2019 public static Color SOFT_TYRE_COLOR = Color . FromArgb ( 0 xff , 0 x00 , 0 x00 ); public static Color MEDIUM_TYRE_COLOR = Color . FromArgb ( 0 xf5 , 0 xbf , 0 x00 ); public static Color HARD_TYRE_COLOR = Color . FromArgb ( 0 xa4 , 0 xa5 , 0 xa8 ); public static Color INTER_TYRE_COLOR = Color . FromArgb ( 0 x00 , 0 xa4 , 0 x2e ); public static Color WET_TYRE_COLOR = Color . FromArgb ( 0 x27 , 0 x60 , 0 xa6 ); public static Color EMPTY_COLOR = Color . FromArgb ( 0 x20 , 0 x20 , 0 x20 ); public DriverTyresWindow ( Bitmap image , Rectangle bounds , bool generateEngine = true ) : base ( image , bounds , generateEngine ) { Name = \"Tyres\" ; } /// /// This will decode the content of the image /// /// And object containing what was on the image public override object DecodePng () { return GetTyreInfos (); } /// /// Method that will decode whats on the image and return the tyre infos it could manage to recover /// /// A tyre object containing tyre infos private Tyre GetTyreInfos () { //DEBUG //WindowImage.Save(\"./Tyre/raw_\"+rnd.Next(0,99999)+\".png\"); Bitmap tyreZone = GetSmallBitmapFromBigOne ( WindowImage , FindTyreZone ()); Tyre . Type type = Tyre . Type . Undefined ; type = GetTyreTypeFromColor ( OcrImage . GetAvgColorFromBitmap ( tyreZone )); int laps = - 1 ; string number = GetStringFromPng ( tyreZone , Engine , \"0123456789\" , OcrImage . WindowType . Tyre ); try { laps = Convert . ToInt32 ( number ); } catch { //We could not convert the number so its a letter so its 0 laps old laps = 0 ; } //71 is the most laps an f1 race is ever going to have (mexico) so any more would be considered as bad (and remember you cant go trough a full race without making at least one pitstop) if ( laps > 75 ) laps = 0 ; return new Tyre ( type , laps ); } /// /// Finds where the important part of the image is /// /// A rectangle containing position and dimensions of the important part of the image private Rectangle FindTyreZone () { Bitmap bmp = WindowImage ; int currentPosition = bmp . Width ; int height = bmp . Height / 2 ; Color limitColor = Color . FromArgb ( 0 x50 , 0 x50 , 0 x50 ); Color currentColor = Color . FromArgb ( 0 , 0 , 0 ); //25F Size newWindowSize = new Size ( bmp . Height - Convert . ToInt32 (( float ) bmp . Height / 100f * 25f ), bmp . Height - Convert . ToInt32 (( float ) bmp . Height / 100f * 35f )); while ( currentColor . R <= limitColor . R && currentColor . G <= limitColor . G && currentColor . B <= limitColor . B && currentPosition > 0 ) { currentPosition --; currentColor = bmp . GetPixel ( currentPosition , height ); } //Its here to let the new window include a little bit of the right int CorrectedX = currentPosition - ( newWindowSize . Width ) + Convert . ToInt32 (( float ) newWindowSize . Width / 100f * 10f ); int CorrectedY = Convert . ToInt32 (( float ) newWindowSize . Height / 100f * 35f ); if ( CorrectedX <= 0 ) return new Rectangle ( 0 , 0 , newWindowSize . Width , newWindowSize . Height ); return new Rectangle ( CorrectedX , CorrectedY , newWindowSize . Width , newWindowSize . Height ); } //This method has been created with the help of chatGPT /// /// Methods that compares a list of colors to see wich is the closest from the input color and decide wich tyre type it is /// /// The color that you found /// The tyre type public Tyre . Type GetTyreTypeFromColor ( Color inputColor ) { Tyre . Type type = Tyre . Type . Undefined ; List < Color > colors = new List < Color >(); //dont forget that if for some reason someday F1 adds a new Tyre type you will need to add it in the constants but also here in the list //You will also need to add it below in the Tyre object's enum and add an if in the end of this method colors . Add ( SOFT_TYRE_COLOR ); colors . Add ( MEDIUM_TYRE_COLOR ); colors . Add ( HARD_TYRE_COLOR ); colors . Add ( INTER_TYRE_COLOR ); colors . Add ( WET_TYRE_COLOR ); colors . Add ( EMPTY_COLOR ); Color closestColor = colors [ 0 ]; int closestDistance = int . MaxValue ; foreach ( Color color in colors ) { int distance = Math . Abs ( color . R - inputColor . R ) + Math . Abs ( color . G - inputColor . G ) + Math . Abs ( color . B - inputColor . B ); if ( distance < closestDistance ) { closestColor = color ; closestDistance = distance ; } } //We cant use a switch as the colors cant be constants ... if ( closestColor == SOFT_TYRE_COLOR ) type = Tyre . Type . Soft ; if ( closestColor == MEDIUM_TYRE_COLOR ) type = Tyre . Type . Medium ; if ( closestColor == HARD_TYRE_COLOR ) type = Tyre . Type . Hard ; if ( closestColor == INTER_TYRE_COLOR ) type = Tyre . Type . Inter ; if ( closestColor == WET_TYRE_COLOR ) type = Tyre . Type . Wet ; if ( closestColor == EMPTY_COLOR ) return Tyre . Type . Undefined ; return type ; } } }","title":"DriverTyresWindow.cs"},{"location":"Code/DriverTyresWindow.html#drivertyreswindowcs","text":"/// Author : Maxime Rohmer /// Date : 30/05/2023 /// File : DriverTyresWindow.cs /// Brief : Window containing infos about a driver's tyre /// Version : Alpha 1.0 using System ; using System.Collections.Generic ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; using System.Drawing ; namespace TrackTrends { public class DriverTyresWindow : Window { private static Random rnd = new Random (); //Those are the colors I found but you can change them if they change in the future like in 2019 public static Color SOFT_TYRE_COLOR = Color . FromArgb ( 0 xff , 0 x00 , 0 x00 ); public static Color MEDIUM_TYRE_COLOR = Color . FromArgb ( 0 xf5 , 0 xbf , 0 x00 ); public static Color HARD_TYRE_COLOR = Color . FromArgb ( 0 xa4 , 0 xa5 , 0 xa8 ); public static Color INTER_TYRE_COLOR = Color . FromArgb ( 0 x00 , 0 xa4 , 0 x2e ); public static Color WET_TYRE_COLOR = Color . FromArgb ( 0 x27 , 0 x60 , 0 xa6 ); public static Color EMPTY_COLOR = Color . FromArgb ( 0 x20 , 0 x20 , 0 x20 ); public DriverTyresWindow ( Bitmap image , Rectangle bounds , bool generateEngine = true ) : base ( image , bounds , generateEngine ) { Name = \"Tyres\" ; } /// /// This will decode the content of the image /// /// And object containing what was on the image public override object DecodePng () { return GetTyreInfos (); } /// /// Method that will decode whats on the image and return the tyre infos it could manage to recover /// /// A tyre object containing tyre infos private Tyre GetTyreInfos () { //DEBUG //WindowImage.Save(\"./Tyre/raw_\"+rnd.Next(0,99999)+\".png\"); Bitmap tyreZone = GetSmallBitmapFromBigOne ( WindowImage , FindTyreZone ()); Tyre . Type type = Tyre . Type . Undefined ; type = GetTyreTypeFromColor ( OcrImage . GetAvgColorFromBitmap ( tyreZone )); int laps = - 1 ; string number = GetStringFromPng ( tyreZone , Engine , \"0123456789\" , OcrImage . WindowType . Tyre ); try { laps = Convert . ToInt32 ( number ); } catch { //We could not convert the number so its a letter so its 0 laps old laps = 0 ; } //71 is the most laps an f1 race is ever going to have (mexico) so any more would be considered as bad (and remember you cant go trough a full race without making at least one pitstop) if ( laps > 75 ) laps = 0 ; return new Tyre ( type , laps ); } /// /// Finds where the important part of the image is /// /// A rectangle containing position and dimensions of the important part of the image private Rectangle FindTyreZone () { Bitmap bmp = WindowImage ; int currentPosition = bmp . Width ; int height = bmp . Height / 2 ; Color limitColor = Color . FromArgb ( 0 x50 , 0 x50 , 0 x50 ); Color currentColor = Color . FromArgb ( 0 , 0 , 0 ); //25F Size newWindowSize = new Size ( bmp . Height - Convert . ToInt32 (( float ) bmp . Height / 100f * 25f ), bmp . Height - Convert . ToInt32 (( float ) bmp . Height / 100f * 35f )); while ( currentColor . R <= limitColor . R && currentColor . G <= limitColor . G && currentColor . B <= limitColor . B && currentPosition > 0 ) { currentPosition --; currentColor = bmp . GetPixel ( currentPosition , height ); } //Its here to let the new window include a little bit of the right int CorrectedX = currentPosition - ( newWindowSize . Width ) + Convert . ToInt32 (( float ) newWindowSize . Width / 100f * 10f ); int CorrectedY = Convert . ToInt32 (( float ) newWindowSize . Height / 100f * 35f ); if ( CorrectedX <= 0 ) return new Rectangle ( 0 , 0 , newWindowSize . Width , newWindowSize . Height ); return new Rectangle ( CorrectedX , CorrectedY , newWindowSize . Width , newWindowSize . Height ); } //This method has been created with the help of chatGPT /// /// Methods that compares a list of colors to see wich is the closest from the input color and decide wich tyre type it is /// /// The color that you found /// The tyre type public Tyre . Type GetTyreTypeFromColor ( Color inputColor ) { Tyre . Type type = Tyre . Type . Undefined ; List < Color > colors = new List < Color >(); //dont forget that if for some reason someday F1 adds a new Tyre type you will need to add it in the constants but also here in the list //You will also need to add it below in the Tyre object's enum and add an if in the end of this method colors . Add ( SOFT_TYRE_COLOR ); colors . Add ( MEDIUM_TYRE_COLOR ); colors . Add ( HARD_TYRE_COLOR ); colors . Add ( INTER_TYRE_COLOR ); colors . Add ( WET_TYRE_COLOR ); colors . Add ( EMPTY_COLOR ); Color closestColor = colors [ 0 ]; int closestDistance = int . MaxValue ; foreach ( Color color in colors ) { int distance = Math . Abs ( color . R - inputColor . R ) + Math . Abs ( color . G - inputColor . G ) + Math . Abs ( color . B - inputColor . B ); if ( distance < closestDistance ) { closestColor = color ; closestDistance = distance ; } } //We cant use a switch as the colors cant be constants ... if ( closestColor == SOFT_TYRE_COLOR ) type = Tyre . Type . Soft ; if ( closestColor == MEDIUM_TYRE_COLOR ) type = Tyre . Type . Medium ; if ( closestColor == HARD_TYRE_COLOR ) type = Tyre . Type . Hard ; if ( closestColor == INTER_TYRE_COLOR ) type = Tyre . Type . Inter ; if ( closestColor == WET_TYRE_COLOR ) type = Tyre . Type . Wet ; if ( closestColor == EMPTY_COLOR ) return Tyre . Type . Undefined ; return type ; } } }","title":"DriverTyresWindow.cs"},{"location":"Code/OcrImage.html","text":"OcrImage.cs /// Author : Maxime Rohmer /// Date : 30/05/2023 /// File : OcrImage.cs /// Brief : Class containing all the methods used to enhance images for OCR /// Version : Alpha 1.0 using System ; using System.Collections.Generic ; using System.Threading.Tasks ; using System.Drawing ; using System.Drawing.Drawing2D ; using System.Drawing.Imaging ; namespace TrackTrends { public class OcrImage { //this is a hardcoded value based on the colors of the F1TV data channel background you can change it if sometime in the future the color changes //Any color that has any of its R,G or B channel higher than the treshold will be considered as being usefull information public static Color F1TV_BACKGROUND_TRESHOLD = Color . FromArgb ( 0 x50 , 0 x50 , 0 x50 ); Bitmap InputBitmap ; public enum WindowType { LapTime , Text , Sector , Gap , Tyre , } /// /// Create a new Ocr image to help enhance the given bitmap for OCR /// /// The image you want to enhance public OcrImage ( Bitmap inputBitmap ) { InputBitmap = inputBitmap ; } /// /// Enhances the image depending on wich type of window the image comes from /// /// The type of the window. Depending on it different enhancing features will be applied /// The enhanced Bitmap public Bitmap Enhance ( WindowType type = WindowType . Text ) { Bitmap outputBitmap = ( Bitmap ) InputBitmap . Clone (); //Note : If you plan to activate all the comments that I used to debug the OCR I would advise to make sure that the debug folder exists switch ( type ) { case WindowType . Gap : //outputBitmap.Save(Window.GAPTOLEADER_DEBUG_FOLDER + @\"\\raw_\" + id + \".png\"); outputBitmap = Tresholding ( outputBitmap , 165 ); //outputBitmap.Save(Window.GAPTOLEADER_DEBUG_FOLDER + @\"\\treshold_\" + id + \".png\"); outputBitmap = Resize ( outputBitmap , 2 ); //outputBitmap.Save(Window.GAPTOLEADER_DEBUG_FOLDER + @\"\\resize_\" + id + \".png\"); outputBitmap = Dilatation ( outputBitmap , 1 ); //outputBitmap.Save(Window.GAPTOLEADER_DEBUG_FOLDER + @\"\\Final_dilatation_\" + id + \".png\"); break ; case WindowType . Sector : //outputBitmap.Save(Window.SECTOR1_DEBUG_FOLDER + @\"\\raw_\" + id + \".png\"); outputBitmap = VanishOxyAction ( outputBitmap ); //outputBitmap.Save(Window.SECTOR1_DEBUG_FOLDER + @\"\\vanish_\" + id + \".png\"); outputBitmap = Tresholding ( outputBitmap , 150 ); //outputBitmap.Save(Window.SECTOR1_DEBUG_FOLDER + @\"\\Final_treshold_\" + id + \".png\"); break ; case WindowType . LapTime : //outputBitmap.Save(Window.LAPTIME_DEBUG_FOLDER + @\"\\raw_\" + id + \".png\"); outputBitmap = Tresholding ( outputBitmap , 185 ); //outputBitmap.Save(Window.LAPTIME_DEBUG_FOLDER + @\"\\Treshold_\" + id + \".png\"); outputBitmap = SobelEdgeDetection ( outputBitmap ); //outputBitmap.Save(Window.LAPTIME_DEBUG_FOLDER + @\"\\SobelDetection_\" + id + \".png\"); break ; case WindowType . Text : //outputBitmap.Save(Window.STRING_DEBUG_FOLDER + @\"\\raw_\" + id + \".png\"); outputBitmap = Tresholding ( outputBitmap , 165 ); //outputBitmap.Save(Window.STRING_DEBUG_FOLDER + @\"\\Final_treshold_\" + id + \".png\"); break ; case WindowType . Tyre : //outputBitmap.Save(Window.TYRE_DEBUG_FOLDER + @\"\\raw_\" + id + \".png\"); outputBitmap = RemoveUseless ( outputBitmap ); //outputBitmap.Save(Window.TYRE_DEBUG_FOLDER + @\"\\uselessRemoved_\" + id + \".png\"); outputBitmap = Dilatation ( outputBitmap , 1 ); //outputBitmap.Save(Window.TYRE_DEBUG_FOLDER + @\"\\Final_dilatation_\" + id + \".png\"); break ; default : outputBitmap = Tresholding ( outputBitmap , 165 ); outputBitmap = Resize ( outputBitmap , 2 ); outputBitmap = Erode ( outputBitmap , 1 ); break ; } return outputBitmap ; } /// /// Method that convert a colored RGB bitmap into a GrayScale image /// /// The Bitmap you want to convert /// The bitmap in grayscale public static Bitmap Grayscale ( Bitmap inputBitmap ) { Rectangle rect = new Rectangle ( 0 , 0 , inputBitmap . Width , inputBitmap . Height ); BitmapData bmpData = inputBitmap . LockBits ( rect , ImageLockMode . ReadWrite , inputBitmap . PixelFormat ); int bytesPerPixel = Bitmap . GetPixelFormatSize ( inputBitmap . PixelFormat ) / 8 ; unsafe { byte * ptr = ( byte *) bmpData . Scan0 . ToPointer (); for ( int y = 0 ; y < inputBitmap . Height ; y ++) { byte * currentLine = ptr + ( y * bmpData . Stride ); for ( int x = 0 ; x < inputBitmap . Width ; x ++) { byte * pixel = currentLine + ( x * bytesPerPixel ); byte blue = pixel [ 0 ]; byte green = pixel [ 1 ]; byte red = pixel [ 2 ]; //Those a specific values to correct the weights so its more pleasing to the human eye int gray = ( int )( red * 0.3 + green * 0.59 + blue * 0.11 ); //This is not a proper treshold method but it is helping the sobel edge detection if ( gray <= F1TV_BACKGROUND_TRESHOLD . R ) { pixel [ 0 ] = pixel [ 1 ] = pixel [ 2 ] = 0 ; } else { pixel [ 0 ] = pixel [ 1 ] = pixel [ 2 ] = ( byte ) gray ; } } } } inputBitmap . UnlockBits ( bmpData ); return inputBitmap ; } /// /// Method that uses the Sobel Edge detection to outline the edges of the characters to help with the OCR /// /// The image with the sobel edge detection used /// private Bitmap SobelEdgeDetection ( Bitmap grayscaleImage ) { // Create a new bitmap for the edges Bitmap edgesImage = new Bitmap ( grayscaleImage . Width , grayscaleImage . Height ); // Define the Sobel operators // Its just a matrix that we will use on the all image int [,] sobelX = { { - 1 , 0 , 1 }, { - 2 , 0 , 2 }, { - 1 , 0 , 1 } }; int [,] sobelY = { { - 1 , - 2 , - 1 }, { 0 , 0 , 0 }, { 1 , 2 , 1 } }; // Apply the Sobel operators and normalize the gradients // NOTE: I dont know how easy or hard it would be to make this paralel but it could be a good idea to do so if possible. for ( int y = 1 ; y < grayscaleImage . Height - 1 ; y ++) { for ( int x = 1 ; x < grayscaleImage . Width - 1 ; x ++) { int gradientX = CalculateGradient ( grayscaleImage , sobelX , x , y ); int gradientY = CalculateGradient ( grayscaleImage , sobelY , x , y ); int gradient = ( int ) Math . Sqrt ( gradientX * gradientX + gradientY * gradientY ); // Normalize the gradient value // In some rare cases the value can exceed 255 so we limit it with the Math.Min method gradient = Math . Min ( 255 , Math . Max ( 0 , gradient )); edgesImage . SetPixel ( x , y , Color . FromArgb ( gradient , gradient , gradient )); } } return edgesImage ; } /// /// Method that's here to be used by the sobel edge detection method (Chat GPT has been used for parts of this method) /// /// The input image with the grayscale processing already done /// The matrix to apply /// /// /// Returns the processed gradient private int CalculateGradient ( Bitmap grayscaleImage , int [,] sobelOperator , int x , int y ) { int gradient = 0 ; for ( int j = - 1 ; j <= 1 ; j ++) { for ( int i = - 1 ; i <= 1 ; i ++) { int pixelX = grayscaleImage . GetPixel ( x + i , y + j ). R ; gradient += sobelOperator [ j + 1 , i + 1 ] * pixelX ; } } return gradient ; } /// /// Method that is used to whiten an image. Ignore the funny name. Its used to prevent colored text to trouble the OCR when it uses grayscaling /// /// The bitmap to vanish /// public static Bitmap VanishOxyAction ( Bitmap inputBitmap ) { Rectangle rect = new Rectangle ( 0 , 0 , inputBitmap . Width , inputBitmap . Height ); BitmapData bmpData = inputBitmap . LockBits ( rect , ImageLockMode . ReadWrite , inputBitmap . PixelFormat ); int bytesPerPixel = Bitmap . GetPixelFormatSize ( inputBitmap . PixelFormat ) / 8 ; unsafe { //Note : MAKE THIS PARALELL OMG WY DID I LEFT IT LIKE THAT byte * ptr = ( byte *) bmpData . Scan0 . ToPointer (); for ( int y = 0 ; y < inputBitmap . Height ; y ++) { byte * currentLine = ptr + ( y * bmpData . Stride ); for ( int x = 0 ; x < inputBitmap . Width ; x ++) { byte * pixel = currentLine + ( x * bytesPerPixel ); int blue = ( int ) pixel [ 0 ]; int green = ( int ) pixel [ 1 ]; int red = ( int ) pixel [ 2 ]; int max = Math . Max ( Math . Max ( blue , green ), red ); if ( max > 255 / 3 ) max = 255 ; pixel [ 0 ] = pixel [ 1 ] = pixel [ 2 ] = ( byte ) max ; } } } inputBitmap . UnlockBits ( bmpData ); return inputBitmap ; } /// /// Method that binaries the input image up to a certain treshold given /// /// the bitmap you want to convert to binary colors /// The floor at wich the color is considered as white or black /// The binarised bitmap public static Bitmap Tresholding ( Bitmap inputBitmap , int threshold ) { Rectangle rect = new Rectangle ( 0 , 0 , inputBitmap . Width , inputBitmap . Height ); BitmapData bmpData = inputBitmap . LockBits ( rect , ImageLockMode . ReadWrite , inputBitmap . PixelFormat ); int bytesPerPixel = Bitmap . GetPixelFormatSize ( inputBitmap . PixelFormat ) / 8 ; unsafe { byte * ptr = ( byte *) bmpData . Scan0 . ToPointer (); int bmpHeight = inputBitmap . Height ; int bmpWidth = inputBitmap . Width ; Parallel . For ( 0 , bmpHeight , y => { byte * currentLine = ptr + ( y * bmpData . Stride ); for ( int x = 0 ; x < bmpWidth ; x ++) { byte * pixel = currentLine + ( x * bytesPerPixel ); byte blue = pixel [ 0 ]; byte green = pixel [ 1 ]; byte red = pixel [ 2 ]; //Those a specific values to correct the weights so its more pleasing to the human eye int gray = ( int )( red * 0.3 + green * 0.59 + blue * 0.11 ); int value = gray < threshold ? 0 : 255 ; pixel [ 0 ] = pixel [ 1 ] = pixel [ 2 ] = ( byte ) value ; } }); } inputBitmap . UnlockBits ( bmpData ); return inputBitmap ; } /// /// Method that removes the pixels that are flagged as background /// /// The bitmap you want to remove the background from /// The Bitmap without the background public static Bitmap RemoveBG ( Bitmap inputBitmap ) { Rectangle rect = new Rectangle ( 0 , 0 , inputBitmap . Width , inputBitmap . Height ); BitmapData bmpData = inputBitmap . LockBits ( rect , ImageLockMode . ReadWrite , inputBitmap . PixelFormat ); int bytesPerPixel = Bitmap . GetPixelFormatSize ( inputBitmap . PixelFormat ) / 8 ; unsafe { byte * ptr = ( byte *) bmpData . Scan0 . ToPointer (); for ( int y = 0 ; y < inputBitmap . Height ; y ++) { byte * currentLine = ptr + ( y * bmpData . Stride ); for ( int x = 0 ; x < inputBitmap . Width ; x ++) { byte * pixel = currentLine + ( x * bytesPerPixel ); int B = pixel [ 0 ]; int G = pixel [ 1 ]; int R = pixel [ 2 ]; if ( R <= F1TV_BACKGROUND_TRESHOLD . R && G <= F1TV_BACKGROUND_TRESHOLD . G && B <= F1TV_BACKGROUND_TRESHOLD . B ) pixel [ 0 ] = pixel [ 1 ] = pixel [ 2 ] = 0 ; } } } inputBitmap . UnlockBits ( bmpData ); return inputBitmap ; } /// /// Method that removes all the useless things from the image and returns hopefully only the numbers /// /// The bitmap you want to remove useless things from (Expects a cropped part of the TyreWindow) /// The bitmap with (hopefully) only the digits public unsafe static Bitmap RemoveUseless ( Bitmap inputBitmap ) { //Note you can use something else than a cropped tyre window but I would recommend checking the code first to see if it fits your intended use Rectangle rect = new Rectangle ( 0 , 0 , inputBitmap . Width , inputBitmap . Height ); BitmapData bmpData = inputBitmap . LockBits ( rect , ImageLockMode . ReadWrite , inputBitmap . PixelFormat ); int bytesPerPixel = Bitmap . GetPixelFormatSize ( inputBitmap . PixelFormat ) / 8 ; byte * ptr = ( byte *) bmpData . Scan0 . ToPointer (); for ( int y = 0 ; y < inputBitmap . Height ; y ++) { byte * currentLine = ptr + ( y * bmpData . Stride ); List < int > pixelsToRemove = new List < int >(); bool fromBorder = true ; for ( int x = 0 ; x < inputBitmap . Width ; x ++) { byte * pixel = currentLine + ( x * bytesPerPixel ); int B = pixel [ 0 ]; int G = pixel [ 1 ]; int R = pixel [ 2 ]; if ( fromBorder && B < F1TV_BACKGROUND_TRESHOLD . B && G < F1TV_BACKGROUND_TRESHOLD . G && R < F1TV_BACKGROUND_TRESHOLD . R ) { pixelsToRemove . Add ( x ); } else { if ( fromBorder ) { fromBorder = false ; pixelsToRemove . Add ( x ); } } } fromBorder = true ; for ( int x = inputBitmap . Width - 1 ; x > 0 ; x --) { byte * pixel = currentLine + ( x * bytesPerPixel ); int B = pixel [ 0 ]; int G = pixel [ 1 ]; int R = pixel [ 2 ]; if ( fromBorder && B < F1TV_BACKGROUND_TRESHOLD . B && G < F1TV_BACKGROUND_TRESHOLD . G && R < F1TV_BACKGROUND_TRESHOLD . R ) { pixelsToRemove . Add ( x ); } else { if ( fromBorder ) { fromBorder = false ; pixelsToRemove . Add ( x ); } } } foreach ( int pxPos in pixelsToRemove ) { byte * pixel = currentLine + ( pxPos * bytesPerPixel ); pixel [ 0 ] = 0 xFF ; pixel [ 1 ] = 0 xFF ; pixel [ 2 ] = 0 xFF ; } } //Removing the color parts for ( int y = 0 ; y < inputBitmap . Height ; y ++) { byte * currentLine = ptr + ( y * bmpData . Stride ); for ( int x = 0 ; x < inputBitmap . Width ; x ++) { byte * pixel = currentLine + ( x * bytesPerPixel ); int B = pixel [ 0 ]; int G = pixel [ 1 ]; int R = pixel [ 2 ]; if ( R >= F1TV_BACKGROUND_TRESHOLD . R + 25 || G >= F1TV_BACKGROUND_TRESHOLD . G + 25 || B >= F1TV_BACKGROUND_TRESHOLD . B + 25 ) { pixel [ 0 ] = 0 xFF ; pixel [ 1 ] = 0 xFF ; pixel [ 2 ] = 0 xFF ; } } } inputBitmap . UnlockBits ( bmpData ); return inputBitmap ; } /// /// Recovers the average colors from the Image. NOTE : It wont take in account colors that are lower than the background /// /// The bitmap you want to get the average color from /// The average color of the bitmap public static Color GetAvgColorFromBitmap ( Bitmap inputBitmap ) { Rectangle rect = new Rectangle ( 0 , 0 , inputBitmap . Width , inputBitmap . Height ); BitmapData bmpData = inputBitmap . LockBits ( rect , ImageLockMode . ReadWrite , inputBitmap . PixelFormat ); int bytesPerPixel = Bitmap . GetPixelFormatSize ( inputBitmap . PixelFormat ) / 8 ; int totR = 0 ; int totG = 0 ; int totB = 0 ; int totPixels = 1 ; unsafe { byte * ptr = ( byte *) bmpData . Scan0 . ToPointer (); int bmpHeight = inputBitmap . Height ; int bmpWidth = inputBitmap . Width ; Parallel . For ( 0 , bmpHeight , y => { byte * currentLine = ptr + ( y * bmpData . Stride ); for ( int x = 0 ; x < bmpWidth ; x ++) { byte * pixel = currentLine + ( x * bytesPerPixel ); int B = pixel [ 0 ]; int G = pixel [ 1 ]; int R = pixel [ 2 ]; if ( R >= F1TV_BACKGROUND_TRESHOLD . R || G >= F1TV_BACKGROUND_TRESHOLD . G || B >= F1TV_BACKGROUND_TRESHOLD . B ) { totPixels ++; totB += pixel [ 0 ]; totG += pixel [ 1 ]; totR += pixel [ 2 ]; } } }); } inputBitmap . UnlockBits ( bmpData ); return Color . FromArgb ( 255 , Math . Min ( Convert . ToInt32 (( float ) totR / ( float ) totPixels ), 255 ), Math . Min ( Convert . ToInt32 (( float ) totG / ( float ) totPixels ), 255 ), Math . Min ( Convert . ToInt32 (( float ) totB / ( float ) totPixels ), 255 )); } /// /// This method simply inverts all the colors in a Bitmap /// /// the bitmap you want to invert the colors from /// The bitmap with inverted colors public static Bitmap InvertColors ( Bitmap inputBitmap ) { Rectangle rect = new Rectangle ( 0 , 0 , inputBitmap . Width , inputBitmap . Height ); BitmapData bmpData = inputBitmap . LockBits ( rect , ImageLockMode . ReadWrite , inputBitmap . PixelFormat ); int bytesPerPixel = Bitmap . GetPixelFormatSize ( inputBitmap . PixelFormat ) / 8 ; unsafe { byte * ptr = ( byte *) bmpData . Scan0 . ToPointer (); for ( int y = 0 ; y < inputBitmap . Height ; y ++) { byte * currentLine = ptr + ( y * bmpData . Stride ); for ( int x = 0 ; x < inputBitmap . Width ; x ++) { byte * pixel = currentLine + ( x * bytesPerPixel ); pixel [ 0 ] = ( byte )( 255 - pixel [ 0 ]); pixel [ 1 ] = ( byte )( 255 - pixel [ 1 ]); pixel [ 2 ] = ( byte )( 255 - pixel [ 2 ]); } } } inputBitmap . UnlockBits ( bmpData ); return inputBitmap ; } /// /// Methods that applies Bicubic interpolation to increase the size and resolution of an image /// /// The bitmap you want to resize /// The factor of resizing you want to use. I recommend using even numbers /// The bitmap witht the new size public static Bitmap Resize ( Bitmap inputBitmap , int resizeFactor ) { var resultBitmap = new Bitmap ( inputBitmap . Width * resizeFactor , inputBitmap . Height * resizeFactor ); using ( var graphics = Graphics . FromImage ( resultBitmap )) { graphics . InterpolationMode = InterpolationMode . HighQualityBicubic ; graphics . DrawImage ( inputBitmap , new Rectangle ( 0 , 0 , resultBitmap . Width , resultBitmap . Height )); } return resultBitmap ; } /// /// method that Highlights the countours of a Bitmap /// /// The bitmap you want to highlight the countours of /// The bitmap with countours highlighted public static Bitmap HighlightContours ( Bitmap inputBitmap ) { Bitmap outputBitmap = new Bitmap ( inputBitmap . Width , inputBitmap . Height ); Bitmap grayscale = Grayscale ( inputBitmap ); Bitmap thresholded = Tresholding ( grayscale , 128 ); Bitmap dilated = Dilatation ( thresholded , 3 ); Bitmap eroded = Erode ( dilated , 3 ); for ( int y = 0 ; y < inputBitmap . Height ; y ++) { for ( int x = 0 ; x < inputBitmap . Width ; x ++) { Color pixel = inputBitmap . GetPixel ( x , y ); Color dilatedPixel = dilated . GetPixel ( x , y ); Color erodedPixel = eroded . GetPixel ( x , y ); int gray = ( int )( pixel . R * 0.3 + pixel . G * 0.59 + pixel . B * 0.11 ); int threshold = dilatedPixel . R ; if ( gray > threshold ) { outputBitmap . SetPixel ( x , y , Color . FromArgb ( 255 , 255 , 255 )); } else if ( gray <= threshold && erodedPixel . R == 0 ) { outputBitmap . SetPixel ( x , y , Color . FromArgb ( 255 , 0 , 0 )); } else { outputBitmap . SetPixel ( x , y , Color . FromArgb ( 0 , 0 , 0 )); } } } return outputBitmap ; } /// /// Method that that erodes the morphology of a bitmap /// /// The bitmap you want to erode /// The amount of Erosion you want (be carefull its expensive on ressources) /// The Bitmap with the eroded contents public static Bitmap Erode ( Bitmap inputBitmap , int kernelSize ) { Bitmap outputBitmap = new Bitmap ( inputBitmap . Width , inputBitmap . Height ); int [,] kernel = new int [ kernelSize , kernelSize ]; for ( int i = 0 ; i < kernelSize ; i ++) { for ( int j = 0 ; j < kernelSize ; j ++) { kernel [ i , j ] = 1 ; } } for ( int y = kernelSize / 2 ; y < inputBitmap . Height - kernelSize / 2 ; y ++) { for ( int x = kernelSize / 2 ; x < inputBitmap . Width - kernelSize / 2 ; x ++) { bool flag = true ; for ( int i = - kernelSize / 2 ; i <= kernelSize / 2 ; i ++) { for ( int j = - kernelSize / 2 ; j <= kernelSize / 2 ; j ++) { Color pixel = inputBitmap . GetPixel ( x + i , y + j ); int gray = ( int )( pixel . R * 0.3 + pixel . G * 0.59 + pixel . B * 0.11 ); if ( gray >= 128 && kernel [ i + kernelSize / 2 , j + kernelSize / 2 ] == 1 ) { flag = false ; break ; } } if (! flag ) { break ; } } if ( flag ) { outputBitmap . SetPixel ( x , y , Color . FromArgb ( 255 , 255 , 255 )); } else { outputBitmap . SetPixel ( x , y , Color . FromArgb ( 0 , 0 , 0 )); } } } return outputBitmap ; } /// /// Method that that use dilatation of the morphology of a bitmap /// /// The bitmap you want to use dilatation on /// The amount of dilatation you want (be carefull its expensive on ressources) /// The Bitmap after Dilatation public static Bitmap Dilatation ( Bitmap inputBitmap , int kernelSize ) { Bitmap outputBitmap = new Bitmap ( inputBitmap . Width , inputBitmap . Height ); int [,] kernel = new int [ kernelSize , kernelSize ]; for ( int i = 0 ; i < kernelSize ; i ++) { for ( int j = 0 ; j < kernelSize ; j ++) { kernel [ i , j ] = 1 ; } } for ( int y = kernelSize / 2 ; y < inputBitmap . Height - kernelSize / 2 ; y ++) { for ( int x = kernelSize / 2 ; x < inputBitmap . Width - kernelSize / 2 ; x ++) { bool flag = false ; for ( int i = - kernelSize / 2 ; i <= kernelSize / 2 ; i ++) { for ( int j = - kernelSize / 2 ; j <= kernelSize / 2 ; j ++) { Color pixel = inputBitmap . GetPixel ( x + i , y + j ); int gray = ( int )( pixel . R * 0.3 + pixel . G * 0.59 + pixel . B * 0.11 ); if ( gray < 128 && kernel [ i + kernelSize / 2 , j + kernelSize / 2 ] == 1 ) { flag = true ; break ; } } if ( flag ) { break ; } } if ( flag ) { outputBitmap . SetPixel ( x , y , Color . FromArgb ( 0 , 0 , 0 )); } else { outputBitmap . SetPixel ( x , y , Color . FromArgb ( 255 , 255 , 255 )); } } } return outputBitmap ; } } }","title":"OcrImage.cs"},{"location":"Code/OcrImage.html#ocrimagecs","text":"/// Author : Maxime Rohmer /// Date : 30/05/2023 /// File : OcrImage.cs /// Brief : Class containing all the methods used to enhance images for OCR /// Version : Alpha 1.0 using System ; using System.Collections.Generic ; using System.Threading.Tasks ; using System.Drawing ; using System.Drawing.Drawing2D ; using System.Drawing.Imaging ; namespace TrackTrends { public class OcrImage { //this is a hardcoded value based on the colors of the F1TV data channel background you can change it if sometime in the future the color changes //Any color that has any of its R,G or B channel higher than the treshold will be considered as being usefull information public static Color F1TV_BACKGROUND_TRESHOLD = Color . FromArgb ( 0 x50 , 0 x50 , 0 x50 ); Bitmap InputBitmap ; public enum WindowType { LapTime , Text , Sector , Gap , Tyre , } /// /// Create a new Ocr image to help enhance the given bitmap for OCR /// /// The image you want to enhance public OcrImage ( Bitmap inputBitmap ) { InputBitmap = inputBitmap ; } /// /// Enhances the image depending on wich type of window the image comes from /// /// The type of the window. Depending on it different enhancing features will be applied /// The enhanced Bitmap public Bitmap Enhance ( WindowType type = WindowType . Text ) { Bitmap outputBitmap = ( Bitmap ) InputBitmap . Clone (); //Note : If you plan to activate all the comments that I used to debug the OCR I would advise to make sure that the debug folder exists switch ( type ) { case WindowType . Gap : //outputBitmap.Save(Window.GAPTOLEADER_DEBUG_FOLDER + @\"\\raw_\" + id + \".png\"); outputBitmap = Tresholding ( outputBitmap , 165 ); //outputBitmap.Save(Window.GAPTOLEADER_DEBUG_FOLDER + @\"\\treshold_\" + id + \".png\"); outputBitmap = Resize ( outputBitmap , 2 ); //outputBitmap.Save(Window.GAPTOLEADER_DEBUG_FOLDER + @\"\\resize_\" + id + \".png\"); outputBitmap = Dilatation ( outputBitmap , 1 ); //outputBitmap.Save(Window.GAPTOLEADER_DEBUG_FOLDER + @\"\\Final_dilatation_\" + id + \".png\"); break ; case WindowType . Sector : //outputBitmap.Save(Window.SECTOR1_DEBUG_FOLDER + @\"\\raw_\" + id + \".png\"); outputBitmap = VanishOxyAction ( outputBitmap ); //outputBitmap.Save(Window.SECTOR1_DEBUG_FOLDER + @\"\\vanish_\" + id + \".png\"); outputBitmap = Tresholding ( outputBitmap , 150 ); //outputBitmap.Save(Window.SECTOR1_DEBUG_FOLDER + @\"\\Final_treshold_\" + id + \".png\"); break ; case WindowType . LapTime : //outputBitmap.Save(Window.LAPTIME_DEBUG_FOLDER + @\"\\raw_\" + id + \".png\"); outputBitmap = Tresholding ( outputBitmap , 185 ); //outputBitmap.Save(Window.LAPTIME_DEBUG_FOLDER + @\"\\Treshold_\" + id + \".png\"); outputBitmap = SobelEdgeDetection ( outputBitmap ); //outputBitmap.Save(Window.LAPTIME_DEBUG_FOLDER + @\"\\SobelDetection_\" + id + \".png\"); break ; case WindowType . Text : //outputBitmap.Save(Window.STRING_DEBUG_FOLDER + @\"\\raw_\" + id + \".png\"); outputBitmap = Tresholding ( outputBitmap , 165 ); //outputBitmap.Save(Window.STRING_DEBUG_FOLDER + @\"\\Final_treshold_\" + id + \".png\"); break ; case WindowType . Tyre : //outputBitmap.Save(Window.TYRE_DEBUG_FOLDER + @\"\\raw_\" + id + \".png\"); outputBitmap = RemoveUseless ( outputBitmap ); //outputBitmap.Save(Window.TYRE_DEBUG_FOLDER + @\"\\uselessRemoved_\" + id + \".png\"); outputBitmap = Dilatation ( outputBitmap , 1 ); //outputBitmap.Save(Window.TYRE_DEBUG_FOLDER + @\"\\Final_dilatation_\" + id + \".png\"); break ; default : outputBitmap = Tresholding ( outputBitmap , 165 ); outputBitmap = Resize ( outputBitmap , 2 ); outputBitmap = Erode ( outputBitmap , 1 ); break ; } return outputBitmap ; } /// /// Method that convert a colored RGB bitmap into a GrayScale image /// /// The Bitmap you want to convert /// The bitmap in grayscale public static Bitmap Grayscale ( Bitmap inputBitmap ) { Rectangle rect = new Rectangle ( 0 , 0 , inputBitmap . Width , inputBitmap . Height ); BitmapData bmpData = inputBitmap . LockBits ( rect , ImageLockMode . ReadWrite , inputBitmap . PixelFormat ); int bytesPerPixel = Bitmap . GetPixelFormatSize ( inputBitmap . PixelFormat ) / 8 ; unsafe { byte * ptr = ( byte *) bmpData . Scan0 . ToPointer (); for ( int y = 0 ; y < inputBitmap . Height ; y ++) { byte * currentLine = ptr + ( y * bmpData . Stride ); for ( int x = 0 ; x < inputBitmap . Width ; x ++) { byte * pixel = currentLine + ( x * bytesPerPixel ); byte blue = pixel [ 0 ]; byte green = pixel [ 1 ]; byte red = pixel [ 2 ]; //Those a specific values to correct the weights so its more pleasing to the human eye int gray = ( int )( red * 0.3 + green * 0.59 + blue * 0.11 ); //This is not a proper treshold method but it is helping the sobel edge detection if ( gray <= F1TV_BACKGROUND_TRESHOLD . R ) { pixel [ 0 ] = pixel [ 1 ] = pixel [ 2 ] = 0 ; } else { pixel [ 0 ] = pixel [ 1 ] = pixel [ 2 ] = ( byte ) gray ; } } } } inputBitmap . UnlockBits ( bmpData ); return inputBitmap ; } /// /// Method that uses the Sobel Edge detection to outline the edges of the characters to help with the OCR /// /// The image with the sobel edge detection used /// private Bitmap SobelEdgeDetection ( Bitmap grayscaleImage ) { // Create a new bitmap for the edges Bitmap edgesImage = new Bitmap ( grayscaleImage . Width , grayscaleImage . Height ); // Define the Sobel operators // Its just a matrix that we will use on the all image int [,] sobelX = { { - 1 , 0 , 1 }, { - 2 , 0 , 2 }, { - 1 , 0 , 1 } }; int [,] sobelY = { { - 1 , - 2 , - 1 }, { 0 , 0 , 0 }, { 1 , 2 , 1 } }; // Apply the Sobel operators and normalize the gradients // NOTE: I dont know how easy or hard it would be to make this paralel but it could be a good idea to do so if possible. for ( int y = 1 ; y < grayscaleImage . Height - 1 ; y ++) { for ( int x = 1 ; x < grayscaleImage . Width - 1 ; x ++) { int gradientX = CalculateGradient ( grayscaleImage , sobelX , x , y ); int gradientY = CalculateGradient ( grayscaleImage , sobelY , x , y ); int gradient = ( int ) Math . Sqrt ( gradientX * gradientX + gradientY * gradientY ); // Normalize the gradient value // In some rare cases the value can exceed 255 so we limit it with the Math.Min method gradient = Math . Min ( 255 , Math . Max ( 0 , gradient )); edgesImage . SetPixel ( x , y , Color . FromArgb ( gradient , gradient , gradient )); } } return edgesImage ; } /// /// Method that's here to be used by the sobel edge detection method (Chat GPT has been used for parts of this method) /// /// The input image with the grayscale processing already done /// The matrix to apply /// /// /// Returns the processed gradient private int CalculateGradient ( Bitmap grayscaleImage , int [,] sobelOperator , int x , int y ) { int gradient = 0 ; for ( int j = - 1 ; j <= 1 ; j ++) { for ( int i = - 1 ; i <= 1 ; i ++) { int pixelX = grayscaleImage . GetPixel ( x + i , y + j ). R ; gradient += sobelOperator [ j + 1 , i + 1 ] * pixelX ; } } return gradient ; } /// /// Method that is used to whiten an image. Ignore the funny name. Its used to prevent colored text to trouble the OCR when it uses grayscaling /// /// The bitmap to vanish /// public static Bitmap VanishOxyAction ( Bitmap inputBitmap ) { Rectangle rect = new Rectangle ( 0 , 0 , inputBitmap . Width , inputBitmap . Height ); BitmapData bmpData = inputBitmap . LockBits ( rect , ImageLockMode . ReadWrite , inputBitmap . PixelFormat ); int bytesPerPixel = Bitmap . GetPixelFormatSize ( inputBitmap . PixelFormat ) / 8 ; unsafe { //Note : MAKE THIS PARALELL OMG WY DID I LEFT IT LIKE THAT byte * ptr = ( byte *) bmpData . Scan0 . ToPointer (); for ( int y = 0 ; y < inputBitmap . Height ; y ++) { byte * currentLine = ptr + ( y * bmpData . Stride ); for ( int x = 0 ; x < inputBitmap . Width ; x ++) { byte * pixel = currentLine + ( x * bytesPerPixel ); int blue = ( int ) pixel [ 0 ]; int green = ( int ) pixel [ 1 ]; int red = ( int ) pixel [ 2 ]; int max = Math . Max ( Math . Max ( blue , green ), red ); if ( max > 255 / 3 ) max = 255 ; pixel [ 0 ] = pixel [ 1 ] = pixel [ 2 ] = ( byte ) max ; } } } inputBitmap . UnlockBits ( bmpData ); return inputBitmap ; } /// /// Method that binaries the input image up to a certain treshold given /// /// the bitmap you want to convert to binary colors /// The floor at wich the color is considered as white or black /// The binarised bitmap public static Bitmap Tresholding ( Bitmap inputBitmap , int threshold ) { Rectangle rect = new Rectangle ( 0 , 0 , inputBitmap . Width , inputBitmap . Height ); BitmapData bmpData = inputBitmap . LockBits ( rect , ImageLockMode . ReadWrite , inputBitmap . PixelFormat ); int bytesPerPixel = Bitmap . GetPixelFormatSize ( inputBitmap . PixelFormat ) / 8 ; unsafe { byte * ptr = ( byte *) bmpData . Scan0 . ToPointer (); int bmpHeight = inputBitmap . Height ; int bmpWidth = inputBitmap . Width ; Parallel . For ( 0 , bmpHeight , y => { byte * currentLine = ptr + ( y * bmpData . Stride ); for ( int x = 0 ; x < bmpWidth ; x ++) { byte * pixel = currentLine + ( x * bytesPerPixel ); byte blue = pixel [ 0 ]; byte green = pixel [ 1 ]; byte red = pixel [ 2 ]; //Those a specific values to correct the weights so its more pleasing to the human eye int gray = ( int )( red * 0.3 + green * 0.59 + blue * 0.11 ); int value = gray < threshold ? 0 : 255 ; pixel [ 0 ] = pixel [ 1 ] = pixel [ 2 ] = ( byte ) value ; } }); } inputBitmap . UnlockBits ( bmpData ); return inputBitmap ; } /// /// Method that removes the pixels that are flagged as background /// /// The bitmap you want to remove the background from /// The Bitmap without the background public static Bitmap RemoveBG ( Bitmap inputBitmap ) { Rectangle rect = new Rectangle ( 0 , 0 , inputBitmap . Width , inputBitmap . Height ); BitmapData bmpData = inputBitmap . LockBits ( rect , ImageLockMode . ReadWrite , inputBitmap . PixelFormat ); int bytesPerPixel = Bitmap . GetPixelFormatSize ( inputBitmap . PixelFormat ) / 8 ; unsafe { byte * ptr = ( byte *) bmpData . Scan0 . ToPointer (); for ( int y = 0 ; y < inputBitmap . Height ; y ++) { byte * currentLine = ptr + ( y * bmpData . Stride ); for ( int x = 0 ; x < inputBitmap . Width ; x ++) { byte * pixel = currentLine + ( x * bytesPerPixel ); int B = pixel [ 0 ]; int G = pixel [ 1 ]; int R = pixel [ 2 ]; if ( R <= F1TV_BACKGROUND_TRESHOLD . R && G <= F1TV_BACKGROUND_TRESHOLD . G && B <= F1TV_BACKGROUND_TRESHOLD . B ) pixel [ 0 ] = pixel [ 1 ] = pixel [ 2 ] = 0 ; } } } inputBitmap . UnlockBits ( bmpData ); return inputBitmap ; } /// /// Method that removes all the useless things from the image and returns hopefully only the numbers /// /// The bitmap you want to remove useless things from (Expects a cropped part of the TyreWindow) /// The bitmap with (hopefully) only the digits public unsafe static Bitmap RemoveUseless ( Bitmap inputBitmap ) { //Note you can use something else than a cropped tyre window but I would recommend checking the code first to see if it fits your intended use Rectangle rect = new Rectangle ( 0 , 0 , inputBitmap . Width , inputBitmap . Height ); BitmapData bmpData = inputBitmap . LockBits ( rect , ImageLockMode . ReadWrite , inputBitmap . PixelFormat ); int bytesPerPixel = Bitmap . GetPixelFormatSize ( inputBitmap . PixelFormat ) / 8 ; byte * ptr = ( byte *) bmpData . Scan0 . ToPointer (); for ( int y = 0 ; y < inputBitmap . Height ; y ++) { byte * currentLine = ptr + ( y * bmpData . Stride ); List < int > pixelsToRemove = new List < int >(); bool fromBorder = true ; for ( int x = 0 ; x < inputBitmap . Width ; x ++) { byte * pixel = currentLine + ( x * bytesPerPixel ); int B = pixel [ 0 ]; int G = pixel [ 1 ]; int R = pixel [ 2 ]; if ( fromBorder && B < F1TV_BACKGROUND_TRESHOLD . B && G < F1TV_BACKGROUND_TRESHOLD . G && R < F1TV_BACKGROUND_TRESHOLD . R ) { pixelsToRemove . Add ( x ); } else { if ( fromBorder ) { fromBorder = false ; pixelsToRemove . Add ( x ); } } } fromBorder = true ; for ( int x = inputBitmap . Width - 1 ; x > 0 ; x --) { byte * pixel = currentLine + ( x * bytesPerPixel ); int B = pixel [ 0 ]; int G = pixel [ 1 ]; int R = pixel [ 2 ]; if ( fromBorder && B < F1TV_BACKGROUND_TRESHOLD . B && G < F1TV_BACKGROUND_TRESHOLD . G && R < F1TV_BACKGROUND_TRESHOLD . R ) { pixelsToRemove . Add ( x ); } else { if ( fromBorder ) { fromBorder = false ; pixelsToRemove . Add ( x ); } } } foreach ( int pxPos in pixelsToRemove ) { byte * pixel = currentLine + ( pxPos * bytesPerPixel ); pixel [ 0 ] = 0 xFF ; pixel [ 1 ] = 0 xFF ; pixel [ 2 ] = 0 xFF ; } } //Removing the color parts for ( int y = 0 ; y < inputBitmap . Height ; y ++) { byte * currentLine = ptr + ( y * bmpData . Stride ); for ( int x = 0 ; x < inputBitmap . Width ; x ++) { byte * pixel = currentLine + ( x * bytesPerPixel ); int B = pixel [ 0 ]; int G = pixel [ 1 ]; int R = pixel [ 2 ]; if ( R >= F1TV_BACKGROUND_TRESHOLD . R + 25 || G >= F1TV_BACKGROUND_TRESHOLD . G + 25 || B >= F1TV_BACKGROUND_TRESHOLD . B + 25 ) { pixel [ 0 ] = 0 xFF ; pixel [ 1 ] = 0 xFF ; pixel [ 2 ] = 0 xFF ; } } } inputBitmap . UnlockBits ( bmpData ); return inputBitmap ; } /// /// Recovers the average colors from the Image. NOTE : It wont take in account colors that are lower than the background /// /// The bitmap you want to get the average color from /// The average color of the bitmap public static Color GetAvgColorFromBitmap ( Bitmap inputBitmap ) { Rectangle rect = new Rectangle ( 0 , 0 , inputBitmap . Width , inputBitmap . Height ); BitmapData bmpData = inputBitmap . LockBits ( rect , ImageLockMode . ReadWrite , inputBitmap . PixelFormat ); int bytesPerPixel = Bitmap . GetPixelFormatSize ( inputBitmap . PixelFormat ) / 8 ; int totR = 0 ; int totG = 0 ; int totB = 0 ; int totPixels = 1 ; unsafe { byte * ptr = ( byte *) bmpData . Scan0 . ToPointer (); int bmpHeight = inputBitmap . Height ; int bmpWidth = inputBitmap . Width ; Parallel . For ( 0 , bmpHeight , y => { byte * currentLine = ptr + ( y * bmpData . Stride ); for ( int x = 0 ; x < bmpWidth ; x ++) { byte * pixel = currentLine + ( x * bytesPerPixel ); int B = pixel [ 0 ]; int G = pixel [ 1 ]; int R = pixel [ 2 ]; if ( R >= F1TV_BACKGROUND_TRESHOLD . R || G >= F1TV_BACKGROUND_TRESHOLD . G || B >= F1TV_BACKGROUND_TRESHOLD . B ) { totPixels ++; totB += pixel [ 0 ]; totG += pixel [ 1 ]; totR += pixel [ 2 ]; } } }); } inputBitmap . UnlockBits ( bmpData ); return Color . FromArgb ( 255 , Math . Min ( Convert . ToInt32 (( float ) totR / ( float ) totPixels ), 255 ), Math . Min ( Convert . ToInt32 (( float ) totG / ( float ) totPixels ), 255 ), Math . Min ( Convert . ToInt32 (( float ) totB / ( float ) totPixels ), 255 )); } /// /// This method simply inverts all the colors in a Bitmap /// /// the bitmap you want to invert the colors from /// The bitmap with inverted colors public static Bitmap InvertColors ( Bitmap inputBitmap ) { Rectangle rect = new Rectangle ( 0 , 0 , inputBitmap . Width , inputBitmap . Height ); BitmapData bmpData = inputBitmap . LockBits ( rect , ImageLockMode . ReadWrite , inputBitmap . PixelFormat ); int bytesPerPixel = Bitmap . GetPixelFormatSize ( inputBitmap . PixelFormat ) / 8 ; unsafe { byte * ptr = ( byte *) bmpData . Scan0 . ToPointer (); for ( int y = 0 ; y < inputBitmap . Height ; y ++) { byte * currentLine = ptr + ( y * bmpData . Stride ); for ( int x = 0 ; x < inputBitmap . Width ; x ++) { byte * pixel = currentLine + ( x * bytesPerPixel ); pixel [ 0 ] = ( byte )( 255 - pixel [ 0 ]); pixel [ 1 ] = ( byte )( 255 - pixel [ 1 ]); pixel [ 2 ] = ( byte )( 255 - pixel [ 2 ]); } } } inputBitmap . UnlockBits ( bmpData ); return inputBitmap ; } /// /// Methods that applies Bicubic interpolation to increase the size and resolution of an image /// /// The bitmap you want to resize /// The factor of resizing you want to use. I recommend using even numbers /// The bitmap witht the new size public static Bitmap Resize ( Bitmap inputBitmap , int resizeFactor ) { var resultBitmap = new Bitmap ( inputBitmap . Width * resizeFactor , inputBitmap . Height * resizeFactor ); using ( var graphics = Graphics . FromImage ( resultBitmap )) { graphics . InterpolationMode = InterpolationMode . HighQualityBicubic ; graphics . DrawImage ( inputBitmap , new Rectangle ( 0 , 0 , resultBitmap . Width , resultBitmap . Height )); } return resultBitmap ; } /// /// method that Highlights the countours of a Bitmap /// /// The bitmap you want to highlight the countours of /// The bitmap with countours highlighted public static Bitmap HighlightContours ( Bitmap inputBitmap ) { Bitmap outputBitmap = new Bitmap ( inputBitmap . Width , inputBitmap . Height ); Bitmap grayscale = Grayscale ( inputBitmap ); Bitmap thresholded = Tresholding ( grayscale , 128 ); Bitmap dilated = Dilatation ( thresholded , 3 ); Bitmap eroded = Erode ( dilated , 3 ); for ( int y = 0 ; y < inputBitmap . Height ; y ++) { for ( int x = 0 ; x < inputBitmap . Width ; x ++) { Color pixel = inputBitmap . GetPixel ( x , y ); Color dilatedPixel = dilated . GetPixel ( x , y ); Color erodedPixel = eroded . GetPixel ( x , y ); int gray = ( int )( pixel . R * 0.3 + pixel . G * 0.59 + pixel . B * 0.11 ); int threshold = dilatedPixel . R ; if ( gray > threshold ) { outputBitmap . SetPixel ( x , y , Color . FromArgb ( 255 , 255 , 255 )); } else if ( gray <= threshold && erodedPixel . R == 0 ) { outputBitmap . SetPixel ( x , y , Color . FromArgb ( 255 , 0 , 0 )); } else { outputBitmap . SetPixel ( x , y , Color . FromArgb ( 0 , 0 , 0 )); } } } return outputBitmap ; } /// /// Method that that erodes the morphology of a bitmap /// /// The bitmap you want to erode /// The amount of Erosion you want (be carefull its expensive on ressources) /// The Bitmap with the eroded contents public static Bitmap Erode ( Bitmap inputBitmap , int kernelSize ) { Bitmap outputBitmap = new Bitmap ( inputBitmap . Width , inputBitmap . Height ); int [,] kernel = new int [ kernelSize , kernelSize ]; for ( int i = 0 ; i < kernelSize ; i ++) { for ( int j = 0 ; j < kernelSize ; j ++) { kernel [ i , j ] = 1 ; } } for ( int y = kernelSize / 2 ; y < inputBitmap . Height - kernelSize / 2 ; y ++) { for ( int x = kernelSize / 2 ; x < inputBitmap . Width - kernelSize / 2 ; x ++) { bool flag = true ; for ( int i = - kernelSize / 2 ; i <= kernelSize / 2 ; i ++) { for ( int j = - kernelSize / 2 ; j <= kernelSize / 2 ; j ++) { Color pixel = inputBitmap . GetPixel ( x + i , y + j ); int gray = ( int )( pixel . R * 0.3 + pixel . G * 0.59 + pixel . B * 0.11 ); if ( gray >= 128 && kernel [ i + kernelSize / 2 , j + kernelSize / 2 ] == 1 ) { flag = false ; break ; } } if (! flag ) { break ; } } if ( flag ) { outputBitmap . SetPixel ( x , y , Color . FromArgb ( 255 , 255 , 255 )); } else { outputBitmap . SetPixel ( x , y , Color . FromArgb ( 0 , 0 , 0 )); } } } return outputBitmap ; } /// /// Method that that use dilatation of the morphology of a bitmap /// /// The bitmap you want to use dilatation on /// The amount of dilatation you want (be carefull its expensive on ressources) /// The Bitmap after Dilatation public static Bitmap Dilatation ( Bitmap inputBitmap , int kernelSize ) { Bitmap outputBitmap = new Bitmap ( inputBitmap . Width , inputBitmap . Height ); int [,] kernel = new int [ kernelSize , kernelSize ]; for ( int i = 0 ; i < kernelSize ; i ++) { for ( int j = 0 ; j < kernelSize ; j ++) { kernel [ i , j ] = 1 ; } } for ( int y = kernelSize / 2 ; y < inputBitmap . Height - kernelSize / 2 ; y ++) { for ( int x = kernelSize / 2 ; x < inputBitmap . Width - kernelSize / 2 ; x ++) { bool flag = false ; for ( int i = - kernelSize / 2 ; i <= kernelSize / 2 ; i ++) { for ( int j = - kernelSize / 2 ; j <= kernelSize / 2 ; j ++) { Color pixel = inputBitmap . GetPixel ( x + i , y + j ); int gray = ( int )( pixel . R * 0.3 + pixel . G * 0.59 + pixel . B * 0.11 ); if ( gray < 128 && kernel [ i + kernelSize / 2 , j + kernelSize / 2 ] == 1 ) { flag = true ; break ; } } if ( flag ) { break ; } } if ( flag ) { outputBitmap . SetPixel ( x , y , Color . FromArgb ( 0 , 0 , 0 )); } else { outputBitmap . SetPixel ( x , y , Color . FromArgb ( 255 , 255 , 255 )); } } } return outputBitmap ; } } }","title":"OcrImage.cs"},{"location":"Code/Reader.html","text":"Reader.cs /// Author : Maxime Rohmer /// Date : 30/05/2023 /// File : Reader.cs /// Brief : Class used to Read the config file for the OCR /// Version : Alpha 1.0 using System ; using System.Collections.Generic ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; using System.Drawing ; using System.Windows.Forms ; using System.IO ; using System.Text.Json ; namespace TrackTrends { public class Reader { const int NUMBER_OF_DRIVERS = 20 ; public List < string > Drivers ; public List < Zone > MainZones ; private SqliteStorage _storage ; private List < DriverData >[] DriverDataLogs = new List < DriverData >[ NUMBER_OF_DRIVERS ]; private int [] DriverLaps = new int [ NUMBER_OF_DRIVERS ]; public SqliteStorage Storage { get => _storage ; private set => _storage = value ; } public Reader ( string configFile , Bitmap image , bool loadOCR = true ) { Storage = new SqliteStorage (); MainZones = Load ( image , configFile , ref Drivers , loadOCR ); } /// /// Method that reads the JSON config file and create all the Zones and Windows /// /// The image #id on wich you want to create the zones on public List < Zone > Load ( Bitmap image , string configFilePath , ref List < string > driverListToFill , bool LoadOCR ) { // Note : You may wonder why in the H... I have all the zones and windows stored in a JSON file and not just for example the first and the last // Its because they are not perfectly aligned to each others and every zone has his own alignement to the main image List < Zone > mainZones = new List < Zone >(); Bitmap fullImage = image ; Zone mainZone ; for ( int i = 0 ; i < NUMBER_OF_DRIVERS ; i ++) { DriverDataLogs [ i ] = new List < DriverData >(); DriverLaps [ i ] = 0 ; } try { string jsonString = File . ReadAllText ( configFilePath ); JsonDocument document = JsonDocument . Parse ( jsonString ); JsonElement root = document . RootElement ; mainZones = new List < Zone >(); driverListToFill = new List < string >(); JsonElement main = root . GetProperty ( \"Main\" ); int x = main . GetProperty ( \"x\" ). GetInt32 (); int y = main . GetProperty ( \"y\" ). GetInt32 (); int width = main . GetProperty ( \"width\" ). GetInt32 (); int height = main . GetProperty ( \"height\" ). GetInt32 (); mainZone = new Zone ( fullImage , new Rectangle ( x , y , width , height ), \"Main\" ); mainZone . ResetWindows (); mainZone . ResetZones (); JsonElement driverZones = main . GetProperty ( \"DriverZones\" ); foreach ( JsonElement driverZoneElement in driverZones . EnumerateArray ()) { string name = driverZoneElement . GetProperty ( \"name\" ). GetString (); int driverX = driverZoneElement . GetProperty ( \"x\" ). GetInt32 () + mainZone . Bounds . X ; int driverY = driverZoneElement . GetProperty ( \"y\" ). GetInt32 () + mainZone . Bounds . Y ; int driverWidth = driverZoneElement . GetProperty ( \"width\" ). GetInt32 (); int driverHeight = driverZoneElement . GetProperty ( \"height\" ). GetInt32 (); Zone driverZone = new Zone ( fullImage , new Rectangle ( driverX , driverY , driverWidth , driverHeight ), \"Driver\" ); JsonElement windowsElement = driverZoneElement . GetProperty ( \"Windows\" ); //string[] windowNames = new string[] { \"Position\",\"GapToLeader\",\"LapTime\",\"DRS\",\"Tyres\",\"Name\",\"Sector1\",\"Sector2\",\"Sector3\" }; foreach ( JsonElement windowElement in windowsElement . EnumerateArray ()) { //Position JsonElement posEl = windowElement . GetProperty ( \"Position\" ); DriverPositionWindow positionWindow = new DriverPositionWindow ( driverZone . ZoneImage , new Rectangle ( posEl . GetProperty ( \"x\" ). GetInt32 (), posEl . GetProperty ( \"y\" ). GetInt32 (), posEl . GetProperty ( \"width\" ). GetInt32 (), posEl . GetProperty ( \"height\" ). GetInt32 ()), LoadOCR ); //GapToLeader JsonElement gapEl = windowElement . GetProperty ( \"GapToLeader\" ); DriverGapToLeaderWindow gapWindow = new DriverGapToLeaderWindow ( driverZone . ZoneImage , new Rectangle ( gapEl . GetProperty ( \"x\" ). GetInt32 (), gapEl . GetProperty ( \"y\" ). GetInt32 (), gapEl . GetProperty ( \"width\" ). GetInt32 (), gapEl . GetProperty ( \"height\" ). GetInt32 ()), LoadOCR ); //LapTime JsonElement lapEl = windowElement . GetProperty ( \"LapTime\" ); DriverLapTimeWindow lapWindow = new DriverLapTimeWindow ( driverZone . ZoneImage , new Rectangle ( lapEl . GetProperty ( \"x\" ). GetInt32 (), lapEl . GetProperty ( \"y\" ). GetInt32 (), lapEl . GetProperty ( \"width\" ). GetInt32 (), lapEl . GetProperty ( \"height\" ). GetInt32 ()), LoadOCR ); //DRS JsonElement drsEl = windowElement . GetProperty ( \"DRS\" ); DriverDrsWindow drsWindow = new DriverDrsWindow ( driverZone . ZoneImage , new Rectangle ( drsEl . GetProperty ( \"x\" ). GetInt32 (), drsEl . GetProperty ( \"y\" ). GetInt32 (), drsEl . GetProperty ( \"width\" ). GetInt32 (), drsEl . GetProperty ( \"height\" ). GetInt32 ()), LoadOCR ); //Tyre JsonElement tyresEl = windowElement . GetProperty ( \"Tyres\" ); DriverTyresWindow tyreWindow = new DriverTyresWindow ( driverZone . ZoneImage , new Rectangle ( tyresEl . GetProperty ( \"x\" ). GetInt32 (), tyresEl . GetProperty ( \"y\" ). GetInt32 (), tyresEl . GetProperty ( \"width\" ). GetInt32 (), tyresEl . GetProperty ( \"height\" ). GetInt32 ()), LoadOCR ); //Name JsonElement nameEl = windowElement . GetProperty ( \"Name\" ); DriverNameWindow nameWindow = new DriverNameWindow ( driverZone . ZoneImage , new Rectangle ( nameEl . GetProperty ( \"x\" ). GetInt32 (), nameEl . GetProperty ( \"y\" ). GetInt32 (), nameEl . GetProperty ( \"width\" ). GetInt32 (), nameEl . GetProperty ( \"height\" ). GetInt32 ()), LoadOCR ); //Sector1 JsonElement sec1El = windowElement . GetProperty ( \"Sector1\" ); DriverSectorWindow sec1Window = new DriverSectorWindow ( driverZone . ZoneImage , new Rectangle ( sec1El . GetProperty ( \"x\" ). GetInt32 (), sec1El . GetProperty ( \"y\" ). GetInt32 (), sec1El . GetProperty ( \"width\" ). GetInt32 (), sec1El . GetProperty ( \"height\" ). GetInt32 ()), 1 , LoadOCR ); //Sector2 JsonElement sec2El = windowElement . GetProperty ( \"Sector2\" ); DriverSectorWindow sec2Window = new DriverSectorWindow ( driverZone . ZoneImage , new Rectangle ( sec2El . GetProperty ( \"x\" ). GetInt32 (), sec2El . GetProperty ( \"y\" ). GetInt32 (), sec2El . GetProperty ( \"width\" ). GetInt32 (), sec2El . GetProperty ( \"height\" ). GetInt32 ()), 2 , LoadOCR ); //Sector3 JsonElement sec3El = windowElement . GetProperty ( \"Sector3\" ); DriverSectorWindow sec3Window = new DriverSectorWindow ( driverZone . ZoneImage , new Rectangle ( sec3El . GetProperty ( \"x\" ). GetInt32 (), sec3El . GetProperty ( \"y\" ). GetInt32 (), sec3El . GetProperty ( \"width\" ). GetInt32 (), sec3El . GetProperty ( \"height\" ). GetInt32 ()), 3 , LoadOCR ); driverZone . AddWindow ( positionWindow ); driverZone . AddWindow ( gapWindow ); driverZone . AddWindow ( lapWindow ); driverZone . AddWindow ( drsWindow ); driverZone . AddWindow ( tyreWindow ); driverZone . AddWindow ( nameWindow ); driverZone . AddWindow ( sec1Window ); driverZone . AddWindow ( sec2Window ); driverZone . AddWindow ( sec3Window ); } mainZone . AddZone ( driverZone ); } JsonElement driversElement = main . GetProperty ( \"Drivers\" ); foreach ( JsonElement driverElement in driversElement . EnumerateArray ()) { string driverName = driverElement . GetString (); driverListToFill . Add ( driverName ); Storage . AddDriver ( driverName ); } mainZones . Add ( mainZone ); } catch ( IOException ex ) { MessageBox . Show ( \"Error reading JSON file: \" + ex . Message ); } catch ( JsonException ex ) { MessageBox . Show ( \"Invalid JSON format: \" + ex . Message ); } int driverID = 0 ; foreach ( Zone z in mainZones [ 0 ]. Zones ) { driverID ++; z . ZoneImage . Save ( \"LoadedDriver\" + driverID + \".png\" ); } return mainZones ; } /// /// Method that calls all the zones and windows to get the content they can find on the image to display them /// /// The id of the image we are working with /// a string representation of all the returns public List < DriverData > Decode ( List < Zone > mainZones , List < string > drivers ) { List < DriverData > mainResults = new List < DriverData >(); //Decode for ( int mainZoneId = 0 ; mainZoneId < mainZones . Count ; mainZoneId ++) { switch ( mainZoneId ) { case 0 : //object lockObject = new object(); //Main Zone Parallel . For ( 0 , mainZones [ mainZoneId ]. Zones . Count , async i => //for (int i = 0; i < mainZones[mainZoneId].Zones.Count; i++) { DriverData data = mainZones [ mainZoneId ]. Zones [ i ]. Decode ( new List < string >( drivers )); mainResults . Add ( data ); DriverDataLogs [ i ]. Add ( data ); if ( data . Position != - 1 && DriverDataLogs [ i ]. Count > 1 ) { //Tries to fix the tyres if ( data . CurrentTyre . NumberOfLaps > DriverDataLogs [ i ][ DriverDataLogs [ i ]. Count - 2 ]. CurrentTyre . NumberOfLaps + 3 ) data . CurrentTyre . NumberOfLaps = DriverDataLogs [ i ][ DriverDataLogs [ i ]. Count - 2 ]. CurrentTyre . NumberOfLaps + 1 ; //Checking if its a new lap //If the third sector is filled but it was'nt the last time, then it means that a new Lap has been started //Lap detection can be f***ed if the OCR takes so much time that an entire sector can be raced without us knowing. if ( DriverDataLogs [ i ][ DriverDataLogs [ i ]. Count - 1 ]. Sector3 != 0 && DriverDataLogs [ i ][ DriverDataLogs [ i ]. Count - 2 ]. Sector3 == 0 && DriverDataLogs [ i ][ DriverDataLogs [ i ]. Count - 2 ]. Position != - 1 && DriverDataLogs [ i ][ DriverDataLogs [ i ]. Count - 1 ]. Position != - 1 ) { DriverData stats = new DriverData (); stats = DriverDataLogs [ i ][ DriverDataLogs [ i ]. Count - 1 ]; DriverLaps [ i ]++; Storage . AddDriverStat ( stats , DriverLaps [ i ]); } //Checking if its a pitstop //Forget this the best way to know if a tyre has been changed is if the number of laps is zero if ( data . CurrentTyre . Coumpound != Tyre . Type . Undefined && data . CurrentTyre . NumberOfLaps == 0 && DriverDataLogs [ i ][ DriverDataLogs [ i ]. Count - 2 ]. CurrentTyre . NumberOfLaps != 0 ) { Storage . AddPitstop ( data . Name , DriverLaps [ i ] - 1 , data . CurrentTyre . Coumpound . ToString ()); //Driver laps -1 because it would take AT LEAST one lap for this program to detect a pitstop } } DriverDataLogs [ i ]. Add ( data ); }); break ; //Next there could be a Title Zone and TrackInfoZone } } //mainResults = mainResults.OrderBy(driver => driver.Position >= 0).ThenBy(driver => driver.Position).ToList(); mainResults = mainResults . OrderBy ( driver => driver . Position ). ToList (); return mainResults ; } /// /// Changes the image in all of the zones wich then will do the same for theyre own subzones and windows /// /// The new Image from the F1TV data channel public void ChangeImage ( Bitmap Image ) { foreach ( Zone z in MainZones ) { z . Image = Image ; } } /// /// Method that can be used to convert an amount of miliseconds into a more readable human form /// /// The given amount of miliseconds ton convert /// A human readable string that represents the ms public static string ConvertMsToTime ( int amountOfMs ) { //Convert.ToInt32 would round upand I dont want that int minuts = ( int )(( float ) amountOfMs / ( 1000f * 60f )); int seconds = ( int )(( amountOfMs - ( minuts * 60f * 1000f )) / 1000 ); int ms = amountOfMs - (( minuts * 60 * 1000 ) + ( seconds * 1000 )); return minuts + \":\" + seconds . ToString ( \"00\" ) + \":\" + ms . ToString ( \"000\" ); } /// /// Old method that can draw on an image where the windows and zones are created. mostly used for debugging /// /// the #id of the image we are working with /// the drawed bitmap public Bitmap Draw ( Bitmap image , List < Zone > mainZones ) { Graphics g = Graphics . FromImage ( image ); foreach ( Zone z in mainZones ) { int count = 0 ; foreach ( Zone zz in z . Zones ) { g . DrawRectangle ( Pens . Red , z . Bounds ); foreach ( Window w in zz . Windows ) { g . DrawRectangle ( Pens . Blue , new Rectangle ( z . Bounds . X + zz . Bounds . X , z . Bounds . Y + zz . Bounds . Y , zz . Bounds . Width , zz . Bounds . Height )); } count ++; } } return image ; } } }","title":"Reader.cs"},{"location":"Code/Reader.html#readercs","text":"/// Author : Maxime Rohmer /// Date : 30/05/2023 /// File : Reader.cs /// Brief : Class used to Read the config file for the OCR /// Version : Alpha 1.0 using System ; using System.Collections.Generic ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; using System.Drawing ; using System.Windows.Forms ; using System.IO ; using System.Text.Json ; namespace TrackTrends { public class Reader { const int NUMBER_OF_DRIVERS = 20 ; public List < string > Drivers ; public List < Zone > MainZones ; private SqliteStorage _storage ; private List < DriverData >[] DriverDataLogs = new List < DriverData >[ NUMBER_OF_DRIVERS ]; private int [] DriverLaps = new int [ NUMBER_OF_DRIVERS ]; public SqliteStorage Storage { get => _storage ; private set => _storage = value ; } public Reader ( string configFile , Bitmap image , bool loadOCR = true ) { Storage = new SqliteStorage (); MainZones = Load ( image , configFile , ref Drivers , loadOCR ); } /// /// Method that reads the JSON config file and create all the Zones and Windows /// /// The image #id on wich you want to create the zones on public List < Zone > Load ( Bitmap image , string configFilePath , ref List < string > driverListToFill , bool LoadOCR ) { // Note : You may wonder why in the H... I have all the zones and windows stored in a JSON file and not just for example the first and the last // Its because they are not perfectly aligned to each others and every zone has his own alignement to the main image List < Zone > mainZones = new List < Zone >(); Bitmap fullImage = image ; Zone mainZone ; for ( int i = 0 ; i < NUMBER_OF_DRIVERS ; i ++) { DriverDataLogs [ i ] = new List < DriverData >(); DriverLaps [ i ] = 0 ; } try { string jsonString = File . ReadAllText ( configFilePath ); JsonDocument document = JsonDocument . Parse ( jsonString ); JsonElement root = document . RootElement ; mainZones = new List < Zone >(); driverListToFill = new List < string >(); JsonElement main = root . GetProperty ( \"Main\" ); int x = main . GetProperty ( \"x\" ). GetInt32 (); int y = main . GetProperty ( \"y\" ). GetInt32 (); int width = main . GetProperty ( \"width\" ). GetInt32 (); int height = main . GetProperty ( \"height\" ). GetInt32 (); mainZone = new Zone ( fullImage , new Rectangle ( x , y , width , height ), \"Main\" ); mainZone . ResetWindows (); mainZone . ResetZones (); JsonElement driverZones = main . GetProperty ( \"DriverZones\" ); foreach ( JsonElement driverZoneElement in driverZones . EnumerateArray ()) { string name = driverZoneElement . GetProperty ( \"name\" ). GetString (); int driverX = driverZoneElement . GetProperty ( \"x\" ). GetInt32 () + mainZone . Bounds . X ; int driverY = driverZoneElement . GetProperty ( \"y\" ). GetInt32 () + mainZone . Bounds . Y ; int driverWidth = driverZoneElement . GetProperty ( \"width\" ). GetInt32 (); int driverHeight = driverZoneElement . GetProperty ( \"height\" ). GetInt32 (); Zone driverZone = new Zone ( fullImage , new Rectangle ( driverX , driverY , driverWidth , driverHeight ), \"Driver\" ); JsonElement windowsElement = driverZoneElement . GetProperty ( \"Windows\" ); //string[] windowNames = new string[] { \"Position\",\"GapToLeader\",\"LapTime\",\"DRS\",\"Tyres\",\"Name\",\"Sector1\",\"Sector2\",\"Sector3\" }; foreach ( JsonElement windowElement in windowsElement . EnumerateArray ()) { //Position JsonElement posEl = windowElement . GetProperty ( \"Position\" ); DriverPositionWindow positionWindow = new DriverPositionWindow ( driverZone . ZoneImage , new Rectangle ( posEl . GetProperty ( \"x\" ). GetInt32 (), posEl . GetProperty ( \"y\" ). GetInt32 (), posEl . GetProperty ( \"width\" ). GetInt32 (), posEl . GetProperty ( \"height\" ). GetInt32 ()), LoadOCR ); //GapToLeader JsonElement gapEl = windowElement . GetProperty ( \"GapToLeader\" ); DriverGapToLeaderWindow gapWindow = new DriverGapToLeaderWindow ( driverZone . ZoneImage , new Rectangle ( gapEl . GetProperty ( \"x\" ). GetInt32 (), gapEl . GetProperty ( \"y\" ). GetInt32 (), gapEl . GetProperty ( \"width\" ). GetInt32 (), gapEl . GetProperty ( \"height\" ). GetInt32 ()), LoadOCR ); //LapTime JsonElement lapEl = windowElement . GetProperty ( \"LapTime\" ); DriverLapTimeWindow lapWindow = new DriverLapTimeWindow ( driverZone . ZoneImage , new Rectangle ( lapEl . GetProperty ( \"x\" ). GetInt32 (), lapEl . GetProperty ( \"y\" ). GetInt32 (), lapEl . GetProperty ( \"width\" ). GetInt32 (), lapEl . GetProperty ( \"height\" ). GetInt32 ()), LoadOCR ); //DRS JsonElement drsEl = windowElement . GetProperty ( \"DRS\" ); DriverDrsWindow drsWindow = new DriverDrsWindow ( driverZone . ZoneImage , new Rectangle ( drsEl . GetProperty ( \"x\" ). GetInt32 (), drsEl . GetProperty ( \"y\" ). GetInt32 (), drsEl . GetProperty ( \"width\" ). GetInt32 (), drsEl . GetProperty ( \"height\" ). GetInt32 ()), LoadOCR ); //Tyre JsonElement tyresEl = windowElement . GetProperty ( \"Tyres\" ); DriverTyresWindow tyreWindow = new DriverTyresWindow ( driverZone . ZoneImage , new Rectangle ( tyresEl . GetProperty ( \"x\" ). GetInt32 (), tyresEl . GetProperty ( \"y\" ). GetInt32 (), tyresEl . GetProperty ( \"width\" ). GetInt32 (), tyresEl . GetProperty ( \"height\" ). GetInt32 ()), LoadOCR ); //Name JsonElement nameEl = windowElement . GetProperty ( \"Name\" ); DriverNameWindow nameWindow = new DriverNameWindow ( driverZone . ZoneImage , new Rectangle ( nameEl . GetProperty ( \"x\" ). GetInt32 (), nameEl . GetProperty ( \"y\" ). GetInt32 (), nameEl . GetProperty ( \"width\" ). GetInt32 (), nameEl . GetProperty ( \"height\" ). GetInt32 ()), LoadOCR ); //Sector1 JsonElement sec1El = windowElement . GetProperty ( \"Sector1\" ); DriverSectorWindow sec1Window = new DriverSectorWindow ( driverZone . ZoneImage , new Rectangle ( sec1El . GetProperty ( \"x\" ). GetInt32 (), sec1El . GetProperty ( \"y\" ). GetInt32 (), sec1El . GetProperty ( \"width\" ). GetInt32 (), sec1El . GetProperty ( \"height\" ). GetInt32 ()), 1 , LoadOCR ); //Sector2 JsonElement sec2El = windowElement . GetProperty ( \"Sector2\" ); DriverSectorWindow sec2Window = new DriverSectorWindow ( driverZone . ZoneImage , new Rectangle ( sec2El . GetProperty ( \"x\" ). GetInt32 (), sec2El . GetProperty ( \"y\" ). GetInt32 (), sec2El . GetProperty ( \"width\" ). GetInt32 (), sec2El . GetProperty ( \"height\" ). GetInt32 ()), 2 , LoadOCR ); //Sector3 JsonElement sec3El = windowElement . GetProperty ( \"Sector3\" ); DriverSectorWindow sec3Window = new DriverSectorWindow ( driverZone . ZoneImage , new Rectangle ( sec3El . GetProperty ( \"x\" ). GetInt32 (), sec3El . GetProperty ( \"y\" ). GetInt32 (), sec3El . GetProperty ( \"width\" ). GetInt32 (), sec3El . GetProperty ( \"height\" ). GetInt32 ()), 3 , LoadOCR ); driverZone . AddWindow ( positionWindow ); driverZone . AddWindow ( gapWindow ); driverZone . AddWindow ( lapWindow ); driverZone . AddWindow ( drsWindow ); driverZone . AddWindow ( tyreWindow ); driverZone . AddWindow ( nameWindow ); driverZone . AddWindow ( sec1Window ); driverZone . AddWindow ( sec2Window ); driverZone . AddWindow ( sec3Window ); } mainZone . AddZone ( driverZone ); } JsonElement driversElement = main . GetProperty ( \"Drivers\" ); foreach ( JsonElement driverElement in driversElement . EnumerateArray ()) { string driverName = driverElement . GetString (); driverListToFill . Add ( driverName ); Storage . AddDriver ( driverName ); } mainZones . Add ( mainZone ); } catch ( IOException ex ) { MessageBox . Show ( \"Error reading JSON file: \" + ex . Message ); } catch ( JsonException ex ) { MessageBox . Show ( \"Invalid JSON format: \" + ex . Message ); } int driverID = 0 ; foreach ( Zone z in mainZones [ 0 ]. Zones ) { driverID ++; z . ZoneImage . Save ( \"LoadedDriver\" + driverID + \".png\" ); } return mainZones ; } /// /// Method that calls all the zones and windows to get the content they can find on the image to display them /// /// The id of the image we are working with /// a string representation of all the returns public List < DriverData > Decode ( List < Zone > mainZones , List < string > drivers ) { List < DriverData > mainResults = new List < DriverData >(); //Decode for ( int mainZoneId = 0 ; mainZoneId < mainZones . Count ; mainZoneId ++) { switch ( mainZoneId ) { case 0 : //object lockObject = new object(); //Main Zone Parallel . For ( 0 , mainZones [ mainZoneId ]. Zones . Count , async i => //for (int i = 0; i < mainZones[mainZoneId].Zones.Count; i++) { DriverData data = mainZones [ mainZoneId ]. Zones [ i ]. Decode ( new List < string >( drivers )); mainResults . Add ( data ); DriverDataLogs [ i ]. Add ( data ); if ( data . Position != - 1 && DriverDataLogs [ i ]. Count > 1 ) { //Tries to fix the tyres if ( data . CurrentTyre . NumberOfLaps > DriverDataLogs [ i ][ DriverDataLogs [ i ]. Count - 2 ]. CurrentTyre . NumberOfLaps + 3 ) data . CurrentTyre . NumberOfLaps = DriverDataLogs [ i ][ DriverDataLogs [ i ]. Count - 2 ]. CurrentTyre . NumberOfLaps + 1 ; //Checking if its a new lap //If the third sector is filled but it was'nt the last time, then it means that a new Lap has been started //Lap detection can be f***ed if the OCR takes so much time that an entire sector can be raced without us knowing. if ( DriverDataLogs [ i ][ DriverDataLogs [ i ]. Count - 1 ]. Sector3 != 0 && DriverDataLogs [ i ][ DriverDataLogs [ i ]. Count - 2 ]. Sector3 == 0 && DriverDataLogs [ i ][ DriverDataLogs [ i ]. Count - 2 ]. Position != - 1 && DriverDataLogs [ i ][ DriverDataLogs [ i ]. Count - 1 ]. Position != - 1 ) { DriverData stats = new DriverData (); stats = DriverDataLogs [ i ][ DriverDataLogs [ i ]. Count - 1 ]; DriverLaps [ i ]++; Storage . AddDriverStat ( stats , DriverLaps [ i ]); } //Checking if its a pitstop //Forget this the best way to know if a tyre has been changed is if the number of laps is zero if ( data . CurrentTyre . Coumpound != Tyre . Type . Undefined && data . CurrentTyre . NumberOfLaps == 0 && DriverDataLogs [ i ][ DriverDataLogs [ i ]. Count - 2 ]. CurrentTyre . NumberOfLaps != 0 ) { Storage . AddPitstop ( data . Name , DriverLaps [ i ] - 1 , data . CurrentTyre . Coumpound . ToString ()); //Driver laps -1 because it would take AT LEAST one lap for this program to detect a pitstop } } DriverDataLogs [ i ]. Add ( data ); }); break ; //Next there could be a Title Zone and TrackInfoZone } } //mainResults = mainResults.OrderBy(driver => driver.Position >= 0).ThenBy(driver => driver.Position).ToList(); mainResults = mainResults . OrderBy ( driver => driver . Position ). ToList (); return mainResults ; } /// /// Changes the image in all of the zones wich then will do the same for theyre own subzones and windows /// /// The new Image from the F1TV data channel public void ChangeImage ( Bitmap Image ) { foreach ( Zone z in MainZones ) { z . Image = Image ; } } /// /// Method that can be used to convert an amount of miliseconds into a more readable human form /// /// The given amount of miliseconds ton convert /// A human readable string that represents the ms public static string ConvertMsToTime ( int amountOfMs ) { //Convert.ToInt32 would round upand I dont want that int minuts = ( int )(( float ) amountOfMs / ( 1000f * 60f )); int seconds = ( int )(( amountOfMs - ( minuts * 60f * 1000f )) / 1000 ); int ms = amountOfMs - (( minuts * 60 * 1000 ) + ( seconds * 1000 )); return minuts + \":\" + seconds . ToString ( \"00\" ) + \":\" + ms . ToString ( \"000\" ); } /// /// Old method that can draw on an image where the windows and zones are created. mostly used for debugging /// /// the #id of the image we are working with /// the drawed bitmap public Bitmap Draw ( Bitmap image , List < Zone > mainZones ) { Graphics g = Graphics . FromImage ( image ); foreach ( Zone z in mainZones ) { int count = 0 ; foreach ( Zone zz in z . Zones ) { g . DrawRectangle ( Pens . Red , z . Bounds ); foreach ( Window w in zz . Windows ) { g . DrawRectangle ( Pens . Blue , new Rectangle ( z . Bounds . X + zz . Bounds . X , z . Bounds . Y + zz . Bounds . Y , zz . Bounds . Width , zz . Bounds . Height )); } count ++; } } return image ; } } }","title":"Reader.cs"},{"location":"Code/Settings.html","text":"Settings.cs using System ; using System.Collections.Generic ; using System.ComponentModel ; using System.Data ; using System.Drawing ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; using System.Windows.Forms ; using System.IO ; using TrackTrends ; namespace TrackTrends { public partial class Settings : Form { private string _grandPrixUrl = \"\" ; private string _selectedConfigFile ; private List < string > _driverList = new List < string >(); private F1TVEmulator Emulator = null ; private ConfigurationTool Config = null ; private bool CreatingZone = false ; private Point ZoneP1 ; private Point ZoneP2 ; private bool CreatingWindow = false ; private Point WindowP1 ; private Point WindowP2 ; List < Rectangle > WindowsToAdd = new List < Rectangle >(); public string GrandPrixUrl { get => _grandPrixUrl ; private set => _grandPrixUrl = value ; } public List < string > DriverList { get => _driverList ; private set => _driverList = value ; } public string SelectedConfigFile { get => _selectedConfigFile ; private set => _selectedConfigFile = value ; } //For the responsive content Size oldSize = new Size (); Size oldGpbxPreviewSize = new Size (); Size oldGpbxWindowPreviewSize = new Size (); Size oldPbxPreviewSize = new Size (); Size oldPbxWindowPreviewSize = new Size (); public Settings () { InitializeComponent (); Load (); } private void Load () { RefreshUI (); oldSize = this . Size ; oldGpbxPreviewSize = gpbxPreview . Size ; oldGpbxWindowPreviewSize = gpbxWindowPreview . Size ; oldPbxPreviewSize = pbxPreview . Size ; oldPbxWindowPreviewSize = pbxWindowPreview . Size ; tip1 . SetToolTip ( btnCreatZone , \"After clicking you can select two points in the image to set the bounds of the important data\" ); tip1 . SetToolTip ( btnCreateWindow , \"After clicking this you will have to select all the windows that are important on the lower image. Refer to the documentation for more infos\" ); tip1 . SetToolTip ( btnRefresh , \"Starts the emulator or refreshes the images if its already running\" ); tip1 . SetToolTip ( btnResetDriver , \"Resets the driver if something went wrong or if you want to test an other URL\" ); tip1 . SetToolTip ( lsbDrivers , \"The drivers that are on the image. Non-Case sensitive\" ); tip1 . SetToolTip ( tbxPresetName , \"The name of the preset you want to save\" ); tip1 . SetToolTip ( pbxPreview , \"What the emulator returns\" ); tip1 . SetToolTip ( pbxWindowPreview , \"One of the driver zones that the program managed to slice from the main zone\" ); } private void RefreshUI () { lsbDrivers . DataSource = null ; lsbDrivers . DataSource = DriverList ; if ( Directory . Exists ( ConfigurationTool . CONFIGS_FOLDER_NAME )) { lsbPresets . DataSource = null ; lsbPresets . DataSource = Directory . GetFiles ( ConfigurationTool . CONFIGS_FOLDER_NAME ); } if ( CreatingZone ) { if ( ZoneP1 == new Point (- 1 , - 1 )) { lblZonePointsRemaning . Text = \"2 points Remaining\" ; } else { lblZonePointsRemaning . Text = \"1 point Remaining\" ; } } else { lblZonePointsRemaning . Text = \"\" ; } if ( CreatingWindow ) { if ( WindowP1 == new Point (- 1 , - 1 )) { lblWindowPointsRemaining . Text = \"2 points Remaining\" ; } else { lblWindowPointsRemaining . Text = \"1 point Remaining\" ; } lblWindowPointsRemaining . Text = ConfigurationTool . NUMBER_OF_ZONES - WindowsToAdd . Count () + \" Windows remaining\" ; } else { lblWindowPointsRemaining . Text = \"\" ; lblWindowsRemaining . Text = \"\" ; } if ( Config != null ) { pbxPreview . Image = Config . MainZone . Draw (); if ( Config . MainZone . Zones . Count > 0 ) pbxWindowPreview . Image = Config . MainZone . Zones [ 0 ]. Draw (); } } private void CreateNewZone ( Point p1 , Point p2 ) { Rectangle dimensions = CreateAbsoluteRectangle ( p1 , p2 ); Config = new ConfigurationTool (( Bitmap ) pbxPreview . Image , dimensions ); RefreshUI (); } private void CreateWindows ( List < Rectangle > dimensions ) { if ( Config != null ) { Config . AddWindows ( dimensions ); } } private void tbxGpUrl_TextChanged ( object sender , EventArgs e ) { GrandPrixUrl = tbxGpUrl . Text ; } private void btnAddDriver_Click ( object sender , EventArgs e ) { string newDriver = tbxDriverName . Text ; DriverList . Add ( newDriver ); tbxDriverName . Text = \"\" ; RefreshUI (); } private void btnRemoveDriver_Click ( object sender , EventArgs e ) { if ( lsbDrivers . SelectedIndex >= 0 ) { DriverList . RemoveAt ( lsbDrivers . SelectedIndex ); } RefreshUI (); } private void SwitchZoneCreation () { if ( CreatingZone ) { CreatingZone = false ; lblZonePointsRemaning . Text = \"\" ; } else { CreatingZone = true ; if ( Config != null ) Config . ResetMainZone (); if ( CreatingWindow ) SwitchWindowCreation (); if ( Emulator != null && Emulator . Ready ) { Config = null ; pbxPreview . Image = Emulator . Screenshot (); } ZoneP1 = new Point (- 1 , - 1 ); ZoneP2 = new Point (- 1 , - 1 ); lblZonePointsRemaning . Text = \"2 Points left\" ; } RefreshUI (); } private void SwitchWindowCreation () { if ( CreatingWindow ) { CreatingWindow = false ; } else { CreatingWindow = true ; if ( Config != null ) Config . ResetWindows (); if ( CreatingZone ) SwitchZoneCreation (); WindowP1 = new Point (- 1 , - 1 ); WindowP2 = new Point (- 1 , - 1 ); WindowsToAdd = new List < Rectangle >(); } RefreshUI (); } private void btnCreatZone_Click ( object sender , EventArgs e ) { SwitchZoneCreation (); } private void btnCreateWindow_Click ( object sender , EventArgs e ) { SwitchWindowCreation (); } private void pbxMain_MouseClick ( object sender , MouseEventArgs e ) { if ( CreatingZone && pbxPreview . Image != null ) { //Point coordinates = pbxMain.PointToClient(new Point(MousePosition.X, MousePosition.Y)); Point coordinates = e . Location ; float xOffset = ( float ) pbxPreview . Image . Width / ( float ) pbxPreview . Width ; float yOffset = ( float ) pbxPreview . Image . Height / ( float ) pbxPreview . Height ; Point newPoint = new Point ( Convert . ToInt32 (( float ) coordinates . X * xOffset ), Convert . ToInt32 (( float ) coordinates . Y * yOffset )); //MessageBox.Show(\"Coordinates\" + Environment.NewLine + \"Old : \" + coordinates.ToString() + Environment.NewLine + \"New : \" + newPoint.ToString()); if ( ZoneP1 == new Point (- 1 , - 1 )) { ZoneP1 = newPoint ; } else { ZoneP2 = newPoint ; CreateNewZone ( ZoneP1 , ZoneP2 ); SwitchZoneCreation (); } RefreshUI (); } } private void pbxMain_Click ( object sender , EventArgs e ) { //Not the right one to use visibly } private void pbxDriverZone_MouseClick ( object sender , MouseEventArgs e ) { if ( CreatingWindow && pbxWindowPreview . Image != null ) { Point coordinates = e . Location ; float xOffset = ( float ) pbxWindowPreview . Image . Width / ( float ) pbxWindowPreview . Width ; float yOffset = ( float ) pbxWindowPreview . Image . Height / ( float ) pbxWindowPreview . Height ; Point newPoint = new Point ( Convert . ToInt32 (( float ) coordinates . X * xOffset ), Convert . ToInt32 (( float ) coordinates . Y * yOffset )); if ( WindowP1 == new Point (- 1 , - 1 )) { WindowP1 = newPoint ; } else { WindowP2 = newPoint ; WindowsToAdd . Add ( CreateAbsoluteRectangle ( WindowP1 , WindowP2 )); if ( WindowsToAdd . Count < ConfigurationTool . NUMBER_OF_ZONES ) { WindowP1 = new Point (- 1 , - 1 ); WindowP2 = new Point (- 1 , - 1 ); } else { WindowP1 = new Point ( WindowP1 . X , 0 ); WindowP2 = new Point ( WindowP2 . X , pbxWindowPreview . Image . Height ); CreateWindows ( WindowsToAdd ); SwitchWindowCreation (); } } RefreshUI (); } } private void pbxDriverZone_Click ( object sender , EventArgs e ) { //Not the right one to use visibly } private Rectangle CreateAbsoluteRectangle ( Point p1 , Point p2 ) { Point newP1 = new Point (); Point newP2 = new Point (); if ( p1 . X < p2 . X ) { newP1 . X = p1 . X ; newP2 . X = p2 . X ; } else { newP1 . X = p2 . X ; newP2 . X = p1 . X ; } if ( p1 . Y < p2 . Y ) { newP1 . Y = p1 . Y ; newP2 . Y = p2 . Y ; } else { newP1 . Y = p2 . Y ; newP2 . Y = p1 . Y ; } return new Rectangle ( newP1 . X , newP1 . Y , newP2 . X - newP1 . X , newP2 . Y - newP1 . Y ); } private async void btnRefresh_Click ( object sender , EventArgs e ) { btnRefresh . Enabled = false ; btnCreatZone . Enabled = false ; btnCreateWindow . Enabled = false ; btnResetDriver . Enabled = false ; if ( Emulator == null || Emulator . GrandPrixUrl != tbxGpUrl . Text ) { Emulator = new F1TVEmulator ( tbxGpUrl . Text ); } if (! Emulator . Ready ) { Task < int > start = Task . Run (() => Emulator . Start ()); int errorCode = await start ; if ( errorCode != 0 ) { string message ; switch ( errorCode ) { case 100 : message = \"Error \" + errorCode + \" Could not recover cookies. It could be because of an improper installation of python or bad cookies in the chrome database. Please try to log on to the F1TV using chrome again\" ; break ; case 101 : message = \"Error \" + errorCode + \" Could not start the driver. It could be because an other instance is runnin make sure you closed them all before trying again\" ; break ; case 102 : message = \"Error \" + errorCode + \" Could not navigate on the F1TV site. Make sure the correct URL has been given and that you logged from chrome. It can take a few minutes to update\" ; break ; case 103 : message = \"Error \" + errorCode + \" The url is not a valid url\" ; break ; case 104 : message = \"Error \" + errorCode + \" The url is not a valid url\" ; break ; case 105 : message = \"Error \" + errorCode + \" There has been an error trying to emulate button presses. Please try again\" ; break ; case 106 : message = \"Error \" + errorCode + \" There has been an error trying to emulate button presses. Please try again\" ; break ; default : message = \"Could not start the emulator Error \" + errorCode ; break ; } MessageBox . Show ( message ); } else { pbxPreview . Image = Emulator . Screenshot (); } } else { pbxPreview . Image = Emulator . Screenshot (); } btnRefresh . Enabled = true ; btnCreatZone . Enabled = true ; btnCreateWindow . Enabled = true ; btnResetDriver . Enabled = true ; btnRefresh . Text = \"Get a newer image\" ; } private void Settings_FormClosing ( object sender , FormClosingEventArgs e ) { if ( Emulator != null ) { Emulator . Stop (); } Emulator = null ; GC . Collect (); } private void btnResetDriver_Click ( object sender , EventArgs e ) { if ( Emulator != null ) { Emulator . ResetDriver (); } } private void btnSavePreset_Click ( object sender , EventArgs e ) { string presetName = tbxPresetName . Text ; if ( Config != null ) { Config . SaveToJson ( DriverList , presetName ); } RefreshUI (); } private void lsbPresets_SelectedIndexChanged ( object sender , EventArgs e ) { SelectedConfigFile = ( string ) lsbPresets . Items [ lsbPresets . SelectedIndex ]; } private void btnLoadPreset_Click ( object sender , EventArgs e ) { //MessageBox.Show(lsbPresets.SelectedIndex.ToString()); if ( lsbPresets . SelectedIndex >= 0 && pbxPreview . Image != null ) { try { string fileName = lsbPresets . Items [ lsbPresets . SelectedIndex ]. ToString (); Reader reader = new Reader ( fileName , ( Bitmap ) pbxPreview . Image , false ); //MainZones #0 is the big main zone containing driver zones Config = new ConfigurationTool (( Bitmap ) pbxPreview . Image , reader . MainZones [ 0 ]. Bounds ); Config . MainZone = reader . MainZones [ 0 ]; DriverList = reader . Drivers ; SelectedConfigFile = fileName ; } catch ( Exception ex ) { MessageBox . Show ( \"Could not load the settings error :\" + ex ); } RefreshUI (); } } private void Settings_Resize ( object sender , EventArgs e ) { int xDiff = this . Width - oldSize . Width ; int yDiff = this . Height - oldSize . Height ; gpbxPreview . Size = new Size ( oldGpbxPreviewSize . Width + xDiff , oldGpbxPreviewSize . Height + yDiff ); gpbxWindowPreview . Size = new Size ( oldGpbxWindowPreviewSize . Width + xDiff , oldGpbxWindowPreviewSize . Height ); pbxPreview . Size = new Size ( oldPbxPreviewSize . Width + xDiff , oldPbxPreviewSize . Height + yDiff ); pbxWindowPreview . Size = new Size ( oldPbxWindowPreviewSize . Width + xDiff , oldPbxWindowPreviewSize . Height ); } private void btnDeletePreset_Click ( object sender , EventArgs e ) { int selectedIndex = lsbPresets . SelectedIndex ; if ( selectedIndex >= 0 ) { string fileName = lsbPresets . Items [ selectedIndex ]. ToString (); if ( File . Exists ( fileName )) { File . Delete ( fileName ); RefreshUI (); } else { MessageBox . Show ( \"Could not delete the preset because it does not exists\" ); } } } private void removeBorders ( object sender , PaintEventArgs e ) { GroupBox gpbx = ( GroupBox ) sender ; using ( Pen pen = new Pen ( gpbx . BackColor , 50 )) { e . Graphics . DrawRectangle ( pen , 0 , 0 , gpbx . Width - 1 , gpbx . Height - 1 ); e . Graphics . DrawRectangle ( pen , 0 , 0 , gpbx . Width - 1 , gpbx . Height - 1 ); } using ( var brush = new SolidBrush ( gpbx . ForeColor )) { var textPosition = new Point ( 5 , 0 ); // Adjust the X and Y values as needed e . Graphics . DrawString ( gpbx . Text , gpbx . Font , brush , textPosition ); } } } }","title":"Settings.cs"},{"location":"Code/Settings.html#settingscs","text":"using System ; using System.Collections.Generic ; using System.ComponentModel ; using System.Data ; using System.Drawing ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; using System.Windows.Forms ; using System.IO ; using TrackTrends ; namespace TrackTrends { public partial class Settings : Form { private string _grandPrixUrl = \"\" ; private string _selectedConfigFile ; private List < string > _driverList = new List < string >(); private F1TVEmulator Emulator = null ; private ConfigurationTool Config = null ; private bool CreatingZone = false ; private Point ZoneP1 ; private Point ZoneP2 ; private bool CreatingWindow = false ; private Point WindowP1 ; private Point WindowP2 ; List < Rectangle > WindowsToAdd = new List < Rectangle >(); public string GrandPrixUrl { get => _grandPrixUrl ; private set => _grandPrixUrl = value ; } public List < string > DriverList { get => _driverList ; private set => _driverList = value ; } public string SelectedConfigFile { get => _selectedConfigFile ; private set => _selectedConfigFile = value ; } //For the responsive content Size oldSize = new Size (); Size oldGpbxPreviewSize = new Size (); Size oldGpbxWindowPreviewSize = new Size (); Size oldPbxPreviewSize = new Size (); Size oldPbxWindowPreviewSize = new Size (); public Settings () { InitializeComponent (); Load (); } private void Load () { RefreshUI (); oldSize = this . Size ; oldGpbxPreviewSize = gpbxPreview . Size ; oldGpbxWindowPreviewSize = gpbxWindowPreview . Size ; oldPbxPreviewSize = pbxPreview . Size ; oldPbxWindowPreviewSize = pbxWindowPreview . Size ; tip1 . SetToolTip ( btnCreatZone , \"After clicking you can select two points in the image to set the bounds of the important data\" ); tip1 . SetToolTip ( btnCreateWindow , \"After clicking this you will have to select all the windows that are important on the lower image. Refer to the documentation for more infos\" ); tip1 . SetToolTip ( btnRefresh , \"Starts the emulator or refreshes the images if its already running\" ); tip1 . SetToolTip ( btnResetDriver , \"Resets the driver if something went wrong or if you want to test an other URL\" ); tip1 . SetToolTip ( lsbDrivers , \"The drivers that are on the image. Non-Case sensitive\" ); tip1 . SetToolTip ( tbxPresetName , \"The name of the preset you want to save\" ); tip1 . SetToolTip ( pbxPreview , \"What the emulator returns\" ); tip1 . SetToolTip ( pbxWindowPreview , \"One of the driver zones that the program managed to slice from the main zone\" ); } private void RefreshUI () { lsbDrivers . DataSource = null ; lsbDrivers . DataSource = DriverList ; if ( Directory . Exists ( ConfigurationTool . CONFIGS_FOLDER_NAME )) { lsbPresets . DataSource = null ; lsbPresets . DataSource = Directory . GetFiles ( ConfigurationTool . CONFIGS_FOLDER_NAME ); } if ( CreatingZone ) { if ( ZoneP1 == new Point (- 1 , - 1 )) { lblZonePointsRemaning . Text = \"2 points Remaining\" ; } else { lblZonePointsRemaning . Text = \"1 point Remaining\" ; } } else { lblZonePointsRemaning . Text = \"\" ; } if ( CreatingWindow ) { if ( WindowP1 == new Point (- 1 , - 1 )) { lblWindowPointsRemaining . Text = \"2 points Remaining\" ; } else { lblWindowPointsRemaining . Text = \"1 point Remaining\" ; } lblWindowPointsRemaining . Text = ConfigurationTool . NUMBER_OF_ZONES - WindowsToAdd . Count () + \" Windows remaining\" ; } else { lblWindowPointsRemaining . Text = \"\" ; lblWindowsRemaining . Text = \"\" ; } if ( Config != null ) { pbxPreview . Image = Config . MainZone . Draw (); if ( Config . MainZone . Zones . Count > 0 ) pbxWindowPreview . Image = Config . MainZone . Zones [ 0 ]. Draw (); } } private void CreateNewZone ( Point p1 , Point p2 ) { Rectangle dimensions = CreateAbsoluteRectangle ( p1 , p2 ); Config = new ConfigurationTool (( Bitmap ) pbxPreview . Image , dimensions ); RefreshUI (); } private void CreateWindows ( List < Rectangle > dimensions ) { if ( Config != null ) { Config . AddWindows ( dimensions ); } } private void tbxGpUrl_TextChanged ( object sender , EventArgs e ) { GrandPrixUrl = tbxGpUrl . Text ; } private void btnAddDriver_Click ( object sender , EventArgs e ) { string newDriver = tbxDriverName . Text ; DriverList . Add ( newDriver ); tbxDriverName . Text = \"\" ; RefreshUI (); } private void btnRemoveDriver_Click ( object sender , EventArgs e ) { if ( lsbDrivers . SelectedIndex >= 0 ) { DriverList . RemoveAt ( lsbDrivers . SelectedIndex ); } RefreshUI (); } private void SwitchZoneCreation () { if ( CreatingZone ) { CreatingZone = false ; lblZonePointsRemaning . Text = \"\" ; } else { CreatingZone = true ; if ( Config != null ) Config . ResetMainZone (); if ( CreatingWindow ) SwitchWindowCreation (); if ( Emulator != null && Emulator . Ready ) { Config = null ; pbxPreview . Image = Emulator . Screenshot (); } ZoneP1 = new Point (- 1 , - 1 ); ZoneP2 = new Point (- 1 , - 1 ); lblZonePointsRemaning . Text = \"2 Points left\" ; } RefreshUI (); } private void SwitchWindowCreation () { if ( CreatingWindow ) { CreatingWindow = false ; } else { CreatingWindow = true ; if ( Config != null ) Config . ResetWindows (); if ( CreatingZone ) SwitchZoneCreation (); WindowP1 = new Point (- 1 , - 1 ); WindowP2 = new Point (- 1 , - 1 ); WindowsToAdd = new List < Rectangle >(); } RefreshUI (); } private void btnCreatZone_Click ( object sender , EventArgs e ) { SwitchZoneCreation (); } private void btnCreateWindow_Click ( object sender , EventArgs e ) { SwitchWindowCreation (); } private void pbxMain_MouseClick ( object sender , MouseEventArgs e ) { if ( CreatingZone && pbxPreview . Image != null ) { //Point coordinates = pbxMain.PointToClient(new Point(MousePosition.X, MousePosition.Y)); Point coordinates = e . Location ; float xOffset = ( float ) pbxPreview . Image . Width / ( float ) pbxPreview . Width ; float yOffset = ( float ) pbxPreview . Image . Height / ( float ) pbxPreview . Height ; Point newPoint = new Point ( Convert . ToInt32 (( float ) coordinates . X * xOffset ), Convert . ToInt32 (( float ) coordinates . Y * yOffset )); //MessageBox.Show(\"Coordinates\" + Environment.NewLine + \"Old : \" + coordinates.ToString() + Environment.NewLine + \"New : \" + newPoint.ToString()); if ( ZoneP1 == new Point (- 1 , - 1 )) { ZoneP1 = newPoint ; } else { ZoneP2 = newPoint ; CreateNewZone ( ZoneP1 , ZoneP2 ); SwitchZoneCreation (); } RefreshUI (); } } private void pbxMain_Click ( object sender , EventArgs e ) { //Not the right one to use visibly } private void pbxDriverZone_MouseClick ( object sender , MouseEventArgs e ) { if ( CreatingWindow && pbxWindowPreview . Image != null ) { Point coordinates = e . Location ; float xOffset = ( float ) pbxWindowPreview . Image . Width / ( float ) pbxWindowPreview . Width ; float yOffset = ( float ) pbxWindowPreview . Image . Height / ( float ) pbxWindowPreview . Height ; Point newPoint = new Point ( Convert . ToInt32 (( float ) coordinates . X * xOffset ), Convert . ToInt32 (( float ) coordinates . Y * yOffset )); if ( WindowP1 == new Point (- 1 , - 1 )) { WindowP1 = newPoint ; } else { WindowP2 = newPoint ; WindowsToAdd . Add ( CreateAbsoluteRectangle ( WindowP1 , WindowP2 )); if ( WindowsToAdd . Count < ConfigurationTool . NUMBER_OF_ZONES ) { WindowP1 = new Point (- 1 , - 1 ); WindowP2 = new Point (- 1 , - 1 ); } else { WindowP1 = new Point ( WindowP1 . X , 0 ); WindowP2 = new Point ( WindowP2 . X , pbxWindowPreview . Image . Height ); CreateWindows ( WindowsToAdd ); SwitchWindowCreation (); } } RefreshUI (); } } private void pbxDriverZone_Click ( object sender , EventArgs e ) { //Not the right one to use visibly } private Rectangle CreateAbsoluteRectangle ( Point p1 , Point p2 ) { Point newP1 = new Point (); Point newP2 = new Point (); if ( p1 . X < p2 . X ) { newP1 . X = p1 . X ; newP2 . X = p2 . X ; } else { newP1 . X = p2 . X ; newP2 . X = p1 . X ; } if ( p1 . Y < p2 . Y ) { newP1 . Y = p1 . Y ; newP2 . Y = p2 . Y ; } else { newP1 . Y = p2 . Y ; newP2 . Y = p1 . Y ; } return new Rectangle ( newP1 . X , newP1 . Y , newP2 . X - newP1 . X , newP2 . Y - newP1 . Y ); } private async void btnRefresh_Click ( object sender , EventArgs e ) { btnRefresh . Enabled = false ; btnCreatZone . Enabled = false ; btnCreateWindow . Enabled = false ; btnResetDriver . Enabled = false ; if ( Emulator == null || Emulator . GrandPrixUrl != tbxGpUrl . Text ) { Emulator = new F1TVEmulator ( tbxGpUrl . Text ); } if (! Emulator . Ready ) { Task < int > start = Task . Run (() => Emulator . Start ()); int errorCode = await start ; if ( errorCode != 0 ) { string message ; switch ( errorCode ) { case 100 : message = \"Error \" + errorCode + \" Could not recover cookies. It could be because of an improper installation of python or bad cookies in the chrome database. Please try to log on to the F1TV using chrome again\" ; break ; case 101 : message = \"Error \" + errorCode + \" Could not start the driver. It could be because an other instance is runnin make sure you closed them all before trying again\" ; break ; case 102 : message = \"Error \" + errorCode + \" Could not navigate on the F1TV site. Make sure the correct URL has been given and that you logged from chrome. It can take a few minutes to update\" ; break ; case 103 : message = \"Error \" + errorCode + \" The url is not a valid url\" ; break ; case 104 : message = \"Error \" + errorCode + \" The url is not a valid url\" ; break ; case 105 : message = \"Error \" + errorCode + \" There has been an error trying to emulate button presses. Please try again\" ; break ; case 106 : message = \"Error \" + errorCode + \" There has been an error trying to emulate button presses. Please try again\" ; break ; default : message = \"Could not start the emulator Error \" + errorCode ; break ; } MessageBox . Show ( message ); } else { pbxPreview . Image = Emulator . Screenshot (); } } else { pbxPreview . Image = Emulator . Screenshot (); } btnRefresh . Enabled = true ; btnCreatZone . Enabled = true ; btnCreateWindow . Enabled = true ; btnResetDriver . Enabled = true ; btnRefresh . Text = \"Get a newer image\" ; } private void Settings_FormClosing ( object sender , FormClosingEventArgs e ) { if ( Emulator != null ) { Emulator . Stop (); } Emulator = null ; GC . Collect (); } private void btnResetDriver_Click ( object sender , EventArgs e ) { if ( Emulator != null ) { Emulator . ResetDriver (); } } private void btnSavePreset_Click ( object sender , EventArgs e ) { string presetName = tbxPresetName . Text ; if ( Config != null ) { Config . SaveToJson ( DriverList , presetName ); } RefreshUI (); } private void lsbPresets_SelectedIndexChanged ( object sender , EventArgs e ) { SelectedConfigFile = ( string ) lsbPresets . Items [ lsbPresets . SelectedIndex ]; } private void btnLoadPreset_Click ( object sender , EventArgs e ) { //MessageBox.Show(lsbPresets.SelectedIndex.ToString()); if ( lsbPresets . SelectedIndex >= 0 && pbxPreview . Image != null ) { try { string fileName = lsbPresets . Items [ lsbPresets . SelectedIndex ]. ToString (); Reader reader = new Reader ( fileName , ( Bitmap ) pbxPreview . Image , false ); //MainZones #0 is the big main zone containing driver zones Config = new ConfigurationTool (( Bitmap ) pbxPreview . Image , reader . MainZones [ 0 ]. Bounds ); Config . MainZone = reader . MainZones [ 0 ]; DriverList = reader . Drivers ; SelectedConfigFile = fileName ; } catch ( Exception ex ) { MessageBox . Show ( \"Could not load the settings error :\" + ex ); } RefreshUI (); } } private void Settings_Resize ( object sender , EventArgs e ) { int xDiff = this . Width - oldSize . Width ; int yDiff = this . Height - oldSize . Height ; gpbxPreview . Size = new Size ( oldGpbxPreviewSize . Width + xDiff , oldGpbxPreviewSize . Height + yDiff ); gpbxWindowPreview . Size = new Size ( oldGpbxWindowPreviewSize . Width + xDiff , oldGpbxWindowPreviewSize . Height ); pbxPreview . Size = new Size ( oldPbxPreviewSize . Width + xDiff , oldPbxPreviewSize . Height + yDiff ); pbxWindowPreview . Size = new Size ( oldPbxWindowPreviewSize . Width + xDiff , oldPbxWindowPreviewSize . Height ); } private void btnDeletePreset_Click ( object sender , EventArgs e ) { int selectedIndex = lsbPresets . SelectedIndex ; if ( selectedIndex >= 0 ) { string fileName = lsbPresets . Items [ selectedIndex ]. ToString (); if ( File . Exists ( fileName )) { File . Delete ( fileName ); RefreshUI (); } else { MessageBox . Show ( \"Could not delete the preset because it does not exists\" ); } } } private void removeBorders ( object sender , PaintEventArgs e ) { GroupBox gpbx = ( GroupBox ) sender ; using ( Pen pen = new Pen ( gpbx . BackColor , 50 )) { e . Graphics . DrawRectangle ( pen , 0 , 0 , gpbx . Width - 1 , gpbx . Height - 1 ); e . Graphics . DrawRectangle ( pen , 0 , 0 , gpbx . Width - 1 , gpbx . Height - 1 ); } using ( var brush = new SolidBrush ( gpbx . ForeColor )) { var textPosition = new Point ( 5 , 0 ); // Adjust the X and Y values as needed e . Graphics . DrawString ( gpbx . Text , gpbx . Font , brush , textPosition ); } } } }","title":"Settings.cs"},{"location":"Code/Window.html","text":"Window.cs /// Author : Maxime Rohmer /// Date : 30/05/2023 /// File : Window.cs /// Brief : Default Window object that is mainly expected to be inherited. /// Version : Alpha 1.0 using System ; using System.Collections.Generic ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; using System.Drawing ; using System.IO ; using Tesseract ; using System.Text.RegularExpressions ; using System.Drawing.Drawing2D ; namespace TrackTrends { public class Window { public const string STRING_DEBUG_FOLDER = \"./GetString\" ; public const string LAPTIME_DEBUG_FOLDER = \"./LapTime\" ; public const string GAPTOLEADER_DEBUG_FOLDER = \"./Gap\" ; public const string SECTOR1_DEBUG_FOLDER = \"./Sector1\" ; public const string SECTOR2_DEBUG_FOLDER = \"./Sector2\" ; public const string SECTOR3_DEBUG_FOLDER = \"./Sector3\" ; public const string DRS_DEBUG_FOLDER = \"./DRS\" ; public const string TYRE_DEBUG_FOLDER = \"./Tyre\" ; private Rectangle _bounds ; private Bitmap _image ; private string _name ; protected TesseractEngine Engine ; public Rectangle Bounds { get => _bounds ; private set => _bounds = value ; } public Bitmap Image { get => _image ; set => _image = value ; } public string Name { get => _name ; protected set => _name = value ; } //This will have to be changed if you want to make it run on your machine public static DirectoryInfo TESS_DATA_FOLDER = new DirectoryInfo ( @\"C:\\Users\\Moi\\Pictures\\SeleniumScreens\\TessData\" ); //Debug public static Random rnd = new Random (); public Bitmap WindowImage { get { //This little trickery lets you have the image that the window sees Bitmap sample = new Bitmap ( Bounds . Width , Bounds . Height ); Graphics g = Graphics . FromImage ( sample ); g . DrawImage ( Image , new Rectangle ( 0 , 0 , sample . Width , sample . Height ), Bounds , GraphicsUnit . Pixel ); return sample ; } } /// /// Creates a new Window /// /// The image of the parent zone /// The position and size of the window /// Does the window need to generate a tesseract engine (takes time and ressources) public Window ( Bitmap image , Rectangle bounds , bool generateEngine = true ) { Image = image ; Bounds = bounds ; if ( generateEngine ) { Engine = new TesseractEngine ( TESS_DATA_FOLDER . FullName , \"eng\" , EngineMode . Default ); Engine . DefaultPageSegMode = PageSegMode . SingleLine ; } //DEBUG /* if (!Directory.Exists(STRING_DEBUG_FOLDER)) Directory.CreateDirectory(STRING_DEBUG_FOLDER); if (!Directory.Exists(LAPTIME_DEBUG_FOLDER)) Directory.CreateDirectory(LAPTIME_DEBUG_FOLDER); if (!Directory.Exists(GAPTOLEADER_DEBUG_FOLDER)) Directory.CreateDirectory(GAPTOLEADER_DEBUG_FOLDER); if (!Directory.Exists(SECTOR1_DEBUG_FOLDER)) Directory.CreateDirectory(SECTOR1_DEBUG_FOLDER); if (!Directory.Exists(SECTOR2_DEBUG_FOLDER)) Directory.CreateDirectory(SECTOR2_DEBUG_FOLDER); if (!Directory.Exists(SECTOR3_DEBUG_FOLDER)) Directory.CreateDirectory(SECTOR3_DEBUG_FOLDER); if (!Directory.Exists(DRS_DEBUG_FOLDER)) Directory.CreateDirectory(DRS_DEBUG_FOLDER); if (!Directory.Exists(TYRE_DEBUG_FOLDER)) Directory.CreateDirectory(TYRE_DEBUG_FOLDER); */ } /// /// Method that will have to be used by the childrens to let the model make them decode the images they have /// /// Returns an object because we dont know what kind of return it will be public virtual Object DecodePng () { return \"NaN\" ; } /// /// Method that will have to be used by the childrens to let the model make them decode the images they have /// /// This is a list of the different possible drivers in the race. It should not be too big but NEVER be too short /// Returns an object because we dont know what kind of return it will be public virtual Object DecodePng ( List < string > driverList ) { return \"NaN\" ; } /// /// This converts an image into a byte[]. It can be usefull when doing unsafe stuff. Use at your own risks /// /// The image you want to convert /// A byte array containing the image informations public static byte [] ImageToByte ( Image inputImage ) { using ( var stream = new MemoryStream ()) { inputImage . Save ( stream , System . Drawing . Imaging . ImageFormat . Png ); return stream . ToArray (); } } /// /// This method is used to recover a time from a PNG using Tesseract OCR /// /// The image where the text is /// The type of window it is /// The Tesseract Engine /// The time in milliseconds public static int GetTimeFromPng ( Bitmap image , OcrImage . WindowType windowType , TesseractEngine Engine ) { //Kind of a big method but it has a lot of error handling and has to work with three special cases string rawResult = \"\" ; int result = 0 ; //Debug int salt = rnd . Next ( 0 , 999999 ); switch ( windowType ) { case OcrImage . WindowType . Sector : //The usual sector is in this form : 33.456 Engine . SetVariable ( \"tessedit_char_whitelist\" , \"0123456789.\" ); break ; case OcrImage . WindowType . LapTime : //The usual Lap time is in this form : 1:45:345 Engine . SetVariable ( \"tessedit_char_whitelist\" , \"0123456789.:\" ); break ; case OcrImage . WindowType . Gap : //The usual Gap is in this form : + 34.567 Engine . SetVariable ( \"tessedit_char_whitelist\" , \"0123456789.+\" ); break ; default : Engine . SetVariable ( \"tessedit_char_whitelist\" , \"\" ); break ; } Bitmap enhancedImage = new OcrImage ( image ). Enhance ( windowType ); var tessImage = Pix . LoadFromMemory ( ImageToByte ( enhancedImage )); Page page = Engine . Process ( tessImage ); Graphics g = Graphics . FromImage ( enhancedImage ); // Get the iterator for the page layout using ( var iter = page . GetIterator ()) { // Loop over the elements of the page layout iter . Begin (); do { // Get the text for the current element try { rawResult += iter . GetText ( PageIteratorLevel . Word ); } catch { //nothing we just dont add it if its not a number } } while ( iter . Next ( PageIteratorLevel . Word )); } List < string > rawNumbers ; //In the gaps we can find '+' but we dont care about it its redondant a driver will never be - something if ( windowType == OcrImage . WindowType . Gap ) rawResult = Regex . Replace ( rawResult , \"[^0-9.:]\" , \"\" ); //Splits into minuts seconds miliseconds rawNumbers = rawResult . Split ( '.' , ':' ). ToList < string >(); //removes any empty cells (tho this usually sign of a really bad OCR implementation tbh will have to be fixed higher in the chian) rawNumbers . RemoveAll ( x => (( string ) x ) == \"\" ); int minuts = 0 ; int seconds = 0 ; int miliseconds = 0 ; switch ( windowType ) { case OcrImage . WindowType . Sector : //Usually there is supposed to be only 2 parts. if ( rawNumbers . Count == 2 ) { //The perect case try { seconds = Convert . ToInt32 ( rawNumbers [ 0 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 1 ]. ToString ()); } catch { Console . WriteLine ( \"Sector time convertion failed\" ); } } else { if ( rawNumbers . Count == 1 ) { //Here it is a little harder... Usually its because a '.' has been overlooked or interpreted as a number if ( rawNumbers [ 0 ]. Length == 6 ) { //The '.' has been understood as a number try { seconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]. ToString () + rawNumbers [ 0 ][ 1 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 3 ]. ToString () + rawNumbers [ 0 ][ 4 ]. ToString () + rawNumbers [ 0 ][ 5 ]. ToString ()); } catch { Console . WriteLine ( \"Sector time convertion failed\" ); } } else { if ( rawNumbers [ 0 ]. Length == 5 ) { //The '.' has been overlooked try { seconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]. ToString () + rawNumbers [ 0 ][ 1 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 2 ]. ToString () + rawNumbers [ 0 ][ 3 ]. ToString () + rawNumbers [ 0 ][ 4 ]. ToString ()); } catch { Console . WriteLine ( \"Sector time convertion failed\" ); } } else { Console . WriteLine ( \"Sector time convertion failed\" ); } } } else { //The OCR detected more than 1 '.' wich is concerning because that means that something went really wrong Console . WriteLine ( \"Sector time convertion failed\" ); } } result = 0 ; result += seconds * 1000 ; result += miliseconds ; break ; case OcrImage . WindowType . LapTime : if ( rawNumbers . Count == 3 ) { //The normal way try { minuts = Convert . ToInt32 ( rawNumbers [ 0 ]. ToString ()); seconds = Convert . ToInt32 ( rawNumbers [ 1 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 2 ]. ToString ()); } catch { Console . WriteLine ( \"Lap time convertion failed\" ); } } else { if ( rawNumbers . Count == 2 ) { //Either the ':' or the '.' has been missinterpreted if ( rawNumbers [ 0 ]. Length > rawNumbers [ 1 ]. Length ) { //The ':' has been missinterpreted if ( rawNumbers [ 0 ]. Length == 3 ) { //It has been forgotten try { minuts = Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]. ToString ()); seconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 1 ]. ToString () + rawNumbers [ 0 ][ 2 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 1 ]); } catch { Console . WriteLine ( \"Lap time convertion failed\" ); } } else { if ( rawNumbers [ 0 ]. Length == 4 ) { //I has been translated into an other number try { minuts = Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]. ToString ()); seconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 2 ]. ToString () + rawNumbers [ 0 ][ 3 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 1 ]); } catch { Console . WriteLine ( \"Lap time convertion failed\" ); } } else { //This could happen if the ':' has been missinterpreted with a lap time of over 9 minuts (HIGLY IMPROBABLE) Console . WriteLine ( \"Lap time convertion failed\" ); } } } else { //The '.' has been missinterpreted if ( rawNumbers [ 1 ]. Length == 5 ) { //It has been forgotten minuts = Convert . ToInt32 ( rawNumbers [ 0 ]. ToString ()); seconds = Convert . ToInt32 ( rawNumbers [ 1 ][ 0 ]. ToString () + rawNumbers [ 1 ][ 1 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 1 ][ 2 ]. ToString () + rawNumbers [ 1 ][ 3 ]. ToString () + rawNumbers [ 1 ][ 4 ]. ToString ()); } else { if ( rawNumbers [ 1 ]. Length == 6 ) { try { //It has been interpreted as a number minuts = Convert . ToInt32 ( rawNumbers [ 0 ]. ToString ()); seconds = Convert . ToInt32 ( rawNumbers [ 1 ][ 0 ]. ToString () + rawNumbers [ 1 ][ 1 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 1 ][ 3 ]. ToString () + rawNumbers [ 1 ][ 4 ]. ToString () + rawNumbers [ 1 ][ 5 ]. ToString ()); } catch { //It can happen and to be honest I dont know how to fix it } } else { Console . WriteLine ( \"Lap time convertion failed\" ); } } } } else { if ( rawNumbers . Count == 1 ) { //Both the '.' and the ':' have been missinterpreted if ( rawNumbers [ 0 ]. Length == 6 ) { //The just all have been forgotten try { minuts = Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]. ToString ()); seconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 1 ]. ToString () + rawNumbers [ 0 ][ 2 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 3 ]. ToString () + rawNumbers [ 0 ][ 4 ]. ToString () + rawNumbers [ 0 ][ 5 ]. ToString ()); } catch { Console . WriteLine ( \"Lap time convertion failed\" ); } } else { if ( rawNumbers [ 0 ]. Length == 7 ) { //The '.' or ':' have been interpreted as a number (usually the ':') try { minuts = Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]. ToString ()); seconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 2 ]. ToString () + rawNumbers [ 0 ][ 3 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 4 ]. ToString () + rawNumbers [ 0 ][ 5 ]. ToString () + rawNumbers [ 0 ][ 6 ]. ToString ()); } catch { Console . WriteLine ( \"Lap time convertion failed\" ); } } else { if ( rawNumbers [ 0 ]. Length == 8 ) { //Both have been interpreted as a number try { minuts = Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]. ToString ()); seconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 2 ]. ToString () + rawNumbers [ 0 ][ 3 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 5 ]. ToString () + rawNumbers [ 0 ][ 6 ]. ToString () + rawNumbers [ 0 ][ 7 ]. ToString ()); } catch { Console . WriteLine ( \"Lap time convertion failed\" ); } } else { //I dont know what could have happened Console . WriteLine ( \"Lap time convertion failed\" ); } } } } else { //I dont know what could have happened Console . WriteLine ( \"Lap time convertion failed\" ); } } } result = 0 ; result += minuts * 60 * 1000 ; result += seconds * 1000 ; result += miliseconds ; break ; case OcrImage . WindowType . Gap : if ( rawNumbers . Count == 2 ) { // This should be the x.xxx or a missed x:xx.xxx if ( rawNumbers [ 0 ]. Length > 2 ) { //Its a missed x:xx.xxx if ( rawNumbers [ 0 ]. Length == 3 ) { //It forgot the \":\" try { minuts = Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]. ToString ()); seconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 1 ]. ToString () + rawNumbers [ 0 ][ 2 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 1 ]); } catch { Console . WriteLine ( \"Gap to leader convertion failed\" ); } } else { //The \":\" has been mistaken as a number if ( rawNumbers [ 0 ]. Length == 4 ) { try { minuts = Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]. ToString ()); seconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 2 ]. ToString () + rawNumbers [ 0 ][ 3 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 1 ]); } catch { Console . WriteLine ( \"Gap to leader convertion failed\" ); } } else { Console . WriteLine ( \"Gap to leader convertion failed\" ); } } } else { //It should be a normal x.xxx or xx.xxx try { seconds = Convert . ToInt32 ( rawNumbers [ 0 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 1 ]. ToString ()); } catch { Console . WriteLine ( \"Gap to leader convertion failed\" ); } } } else { if ( rawNumbers . Count == 1 ) { //can be anything depending on the size of the string if ( rawNumbers [ 0 ]. Length == 4 ) { //We just missed the '.' try { seconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 1 ]. ToString () + rawNumbers [ 0 ][ 2 ]. ToString () + rawNumbers [ 0 ][ 3 ]. ToString ()); } catch { Console . WriteLine ( \"Gap to leader convertion failed\" ); } } else { if ( rawNumbers [ 0 ]. Length == 5 ) { //We just missed the '.' try { seconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]. ToString () + rawNumbers [ 0 ][ 1 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 2 ]. ToString () + rawNumbers [ 0 ][ 3 ]. ToString () + rawNumbers [ 0 ][ 4 ]. ToString ()); } catch { Console . WriteLine ( \"Gap to leader convertion failed\" ); } } //There is just too much possibilities that it would be stupid to try and tell them appart so for now im leaving that as just an error Console . WriteLine ( \"Gap to leader convertion failed\" ); } } else { if ( rawNumbers . Count == 3 ) { // This should be the x:xx.xxx try { //Gaps cant be more than 9 minuts so if there is more than 1 digit it means that the '+' has been understood as an other number if ( rawNumbers [ 0 ]. Length > 1 ) rawNumbers [ 0 ] = rawNumbers [ 0 ][ rawNumbers [ 0 ]. Length - 1 ]. ToString (); minuts = Convert . ToInt32 ( rawNumbers [ 0 ]. ToString ()); seconds = Convert . ToInt32 ( rawNumbers [ 1 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 2 ]. ToString ()); } catch { Console . WriteLine ( \"Gap to leader convertion failed\" ); } } } } result = 0 ; result += minuts * 60 * 1000 ; result += seconds * 1000 ; result += miliseconds ; break ; default : try { result = Convert . ToInt32 ( rawNumbers [ 0 ]. ToString ()); } catch { result = 0 ; } break ; } page . Dispose (); return result ; } /// /// Method that recovers strings from an image using Tesseract OCR /// /// The image of the window that contains text /// The Tesseract engine /// The list of allowed chars /// The type of window the text is on. Depending on the context the OCR will behave differently /// the string it found public static string GetStringFromPng ( Bitmap image , TesseractEngine Engine , string allowedChars = \"\" , OcrImage . WindowType windowType = OcrImage . WindowType . Text ) { string result = \"\" ; //Debug int salt = rnd . Next ( 0 , 999999 ); Engine . SetVariable ( \"tessedit_char_whitelist\" , allowedChars ); Bitmap rawData = image ; Bitmap enhancedImage = new OcrImage ( rawData ). Enhance ( windowType ); Page page = Engine . Process ( enhancedImage ); using ( var iter = page . GetIterator ()) { iter . Begin (); do { result += iter . GetText ( PageIteratorLevel . Word ); } while ( iter . Next ( PageIteratorLevel . Word )); } page . Dispose (); return result ; } /// /// Get a smaller image from a bigger one /// /// The big bitmap you want to get a part of /// The dimensions of the new bitmap /// The little bitmap protected Bitmap GetSmallBitmapFromBigOne ( Bitmap inputBitmap , Rectangle newBitmapDimensions ) { Bitmap sample = new Bitmap ( newBitmapDimensions . Width , newBitmapDimensions . Height ); Graphics g = Graphics . FromImage ( sample ); g . DrawImage ( inputBitmap , new Rectangle ( 0 , 0 , sample . Width , sample . Height ), newBitmapDimensions , GraphicsUnit . Pixel ); return sample ; } /// /// Returns the closest string from a list of options /// /// an array of all the possibilities /// the string you want to compare /// The closest option protected static string FindClosestMatch ( List < string > options , string testString ) { var closestMatch = \"\" ; var closestDistance = int . MaxValue ; foreach ( var item in options ) { var distance = LevenshteinDistance ( item , testString ); if ( distance < closestDistance ) { closestMatch = item ; closestDistance = distance ; } } return closestMatch ; } //This method has been generated with the help of ChatGPT /// /// Method that computes a score of distance between two strings /// /// The first string (order irrelevant) /// The second string (order irrelevant) /// The levenshtein distance protected static int LevenshteinDistance ( string string1 , string string2 ) { if ( string . IsNullOrEmpty ( string1 )) { return string . IsNullOrEmpty ( string2 ) ? 0 : string2 . Length ; } if ( string . IsNullOrEmpty ( string2 )) { return string . IsNullOrEmpty ( string1 ) ? 0 : string1 . Length ; } var d = new int [ string1 . Length + 1 , string2 . Length + 1 ]; for ( var i = 0 ; i <= string1 . Length ; i ++) { d [ i , 0 ] = i ; } for ( var j = 0 ; j <= string2 . Length ; j ++) { d [ 0 , j ] = j ; } for ( var i = 1 ; i <= string1 . Length ; i ++) { for ( var j = 1 ; j <= string2 . Length ; j ++) { var cost = ( string1 [ i - 1 ] == string2 [ j - 1 ]) ? 0 : 1 ; d [ i , j ] = Math . Min ( Math . Min ( d [ i - 1 , j ] + 1 , d [ i , j - 1 ] + 1 ), d [ i - 1 , j - 1 ] + cost ); } } return d [ string1 . Length , string2 . Length ]; } } }","title":"Window.cs"},{"location":"Code/Window.html#windowcs","text":"/// Author : Maxime Rohmer /// Date : 30/05/2023 /// File : Window.cs /// Brief : Default Window object that is mainly expected to be inherited. /// Version : Alpha 1.0 using System ; using System.Collections.Generic ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; using System.Drawing ; using System.IO ; using Tesseract ; using System.Text.RegularExpressions ; using System.Drawing.Drawing2D ; namespace TrackTrends { public class Window { public const string STRING_DEBUG_FOLDER = \"./GetString\" ; public const string LAPTIME_DEBUG_FOLDER = \"./LapTime\" ; public const string GAPTOLEADER_DEBUG_FOLDER = \"./Gap\" ; public const string SECTOR1_DEBUG_FOLDER = \"./Sector1\" ; public const string SECTOR2_DEBUG_FOLDER = \"./Sector2\" ; public const string SECTOR3_DEBUG_FOLDER = \"./Sector3\" ; public const string DRS_DEBUG_FOLDER = \"./DRS\" ; public const string TYRE_DEBUG_FOLDER = \"./Tyre\" ; private Rectangle _bounds ; private Bitmap _image ; private string _name ; protected TesseractEngine Engine ; public Rectangle Bounds { get => _bounds ; private set => _bounds = value ; } public Bitmap Image { get => _image ; set => _image = value ; } public string Name { get => _name ; protected set => _name = value ; } //This will have to be changed if you want to make it run on your machine public static DirectoryInfo TESS_DATA_FOLDER = new DirectoryInfo ( @\"C:\\Users\\Moi\\Pictures\\SeleniumScreens\\TessData\" ); //Debug public static Random rnd = new Random (); public Bitmap WindowImage { get { //This little trickery lets you have the image that the window sees Bitmap sample = new Bitmap ( Bounds . Width , Bounds . Height ); Graphics g = Graphics . FromImage ( sample ); g . DrawImage ( Image , new Rectangle ( 0 , 0 , sample . Width , sample . Height ), Bounds , GraphicsUnit . Pixel ); return sample ; } } /// /// Creates a new Window /// /// The image of the parent zone /// The position and size of the window /// Does the window need to generate a tesseract engine (takes time and ressources) public Window ( Bitmap image , Rectangle bounds , bool generateEngine = true ) { Image = image ; Bounds = bounds ; if ( generateEngine ) { Engine = new TesseractEngine ( TESS_DATA_FOLDER . FullName , \"eng\" , EngineMode . Default ); Engine . DefaultPageSegMode = PageSegMode . SingleLine ; } //DEBUG /* if (!Directory.Exists(STRING_DEBUG_FOLDER)) Directory.CreateDirectory(STRING_DEBUG_FOLDER); if (!Directory.Exists(LAPTIME_DEBUG_FOLDER)) Directory.CreateDirectory(LAPTIME_DEBUG_FOLDER); if (!Directory.Exists(GAPTOLEADER_DEBUG_FOLDER)) Directory.CreateDirectory(GAPTOLEADER_DEBUG_FOLDER); if (!Directory.Exists(SECTOR1_DEBUG_FOLDER)) Directory.CreateDirectory(SECTOR1_DEBUG_FOLDER); if (!Directory.Exists(SECTOR2_DEBUG_FOLDER)) Directory.CreateDirectory(SECTOR2_DEBUG_FOLDER); if (!Directory.Exists(SECTOR3_DEBUG_FOLDER)) Directory.CreateDirectory(SECTOR3_DEBUG_FOLDER); if (!Directory.Exists(DRS_DEBUG_FOLDER)) Directory.CreateDirectory(DRS_DEBUG_FOLDER); if (!Directory.Exists(TYRE_DEBUG_FOLDER)) Directory.CreateDirectory(TYRE_DEBUG_FOLDER); */ } /// /// Method that will have to be used by the childrens to let the model make them decode the images they have /// /// Returns an object because we dont know what kind of return it will be public virtual Object DecodePng () { return \"NaN\" ; } /// /// Method that will have to be used by the childrens to let the model make them decode the images they have /// /// This is a list of the different possible drivers in the race. It should not be too big but NEVER be too short /// Returns an object because we dont know what kind of return it will be public virtual Object DecodePng ( List < string > driverList ) { return \"NaN\" ; } /// /// This converts an image into a byte[]. It can be usefull when doing unsafe stuff. Use at your own risks /// /// The image you want to convert /// A byte array containing the image informations public static byte [] ImageToByte ( Image inputImage ) { using ( var stream = new MemoryStream ()) { inputImage . Save ( stream , System . Drawing . Imaging . ImageFormat . Png ); return stream . ToArray (); } } /// /// This method is used to recover a time from a PNG using Tesseract OCR /// /// The image where the text is /// The type of window it is /// The Tesseract Engine /// The time in milliseconds public static int GetTimeFromPng ( Bitmap image , OcrImage . WindowType windowType , TesseractEngine Engine ) { //Kind of a big method but it has a lot of error handling and has to work with three special cases string rawResult = \"\" ; int result = 0 ; //Debug int salt = rnd . Next ( 0 , 999999 ); switch ( windowType ) { case OcrImage . WindowType . Sector : //The usual sector is in this form : 33.456 Engine . SetVariable ( \"tessedit_char_whitelist\" , \"0123456789.\" ); break ; case OcrImage . WindowType . LapTime : //The usual Lap time is in this form : 1:45:345 Engine . SetVariable ( \"tessedit_char_whitelist\" , \"0123456789.:\" ); break ; case OcrImage . WindowType . Gap : //The usual Gap is in this form : + 34.567 Engine . SetVariable ( \"tessedit_char_whitelist\" , \"0123456789.+\" ); break ; default : Engine . SetVariable ( \"tessedit_char_whitelist\" , \"\" ); break ; } Bitmap enhancedImage = new OcrImage ( image ). Enhance ( windowType ); var tessImage = Pix . LoadFromMemory ( ImageToByte ( enhancedImage )); Page page = Engine . Process ( tessImage ); Graphics g = Graphics . FromImage ( enhancedImage ); // Get the iterator for the page layout using ( var iter = page . GetIterator ()) { // Loop over the elements of the page layout iter . Begin (); do { // Get the text for the current element try { rawResult += iter . GetText ( PageIteratorLevel . Word ); } catch { //nothing we just dont add it if its not a number } } while ( iter . Next ( PageIteratorLevel . Word )); } List < string > rawNumbers ; //In the gaps we can find '+' but we dont care about it its redondant a driver will never be - something if ( windowType == OcrImage . WindowType . Gap ) rawResult = Regex . Replace ( rawResult , \"[^0-9.:]\" , \"\" ); //Splits into minuts seconds miliseconds rawNumbers = rawResult . Split ( '.' , ':' ). ToList < string >(); //removes any empty cells (tho this usually sign of a really bad OCR implementation tbh will have to be fixed higher in the chian) rawNumbers . RemoveAll ( x => (( string ) x ) == \"\" ); int minuts = 0 ; int seconds = 0 ; int miliseconds = 0 ; switch ( windowType ) { case OcrImage . WindowType . Sector : //Usually there is supposed to be only 2 parts. if ( rawNumbers . Count == 2 ) { //The perect case try { seconds = Convert . ToInt32 ( rawNumbers [ 0 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 1 ]. ToString ()); } catch { Console . WriteLine ( \"Sector time convertion failed\" ); } } else { if ( rawNumbers . Count == 1 ) { //Here it is a little harder... Usually its because a '.' has been overlooked or interpreted as a number if ( rawNumbers [ 0 ]. Length == 6 ) { //The '.' has been understood as a number try { seconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]. ToString () + rawNumbers [ 0 ][ 1 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 3 ]. ToString () + rawNumbers [ 0 ][ 4 ]. ToString () + rawNumbers [ 0 ][ 5 ]. ToString ()); } catch { Console . WriteLine ( \"Sector time convertion failed\" ); } } else { if ( rawNumbers [ 0 ]. Length == 5 ) { //The '.' has been overlooked try { seconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]. ToString () + rawNumbers [ 0 ][ 1 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 2 ]. ToString () + rawNumbers [ 0 ][ 3 ]. ToString () + rawNumbers [ 0 ][ 4 ]. ToString ()); } catch { Console . WriteLine ( \"Sector time convertion failed\" ); } } else { Console . WriteLine ( \"Sector time convertion failed\" ); } } } else { //The OCR detected more than 1 '.' wich is concerning because that means that something went really wrong Console . WriteLine ( \"Sector time convertion failed\" ); } } result = 0 ; result += seconds * 1000 ; result += miliseconds ; break ; case OcrImage . WindowType . LapTime : if ( rawNumbers . Count == 3 ) { //The normal way try { minuts = Convert . ToInt32 ( rawNumbers [ 0 ]. ToString ()); seconds = Convert . ToInt32 ( rawNumbers [ 1 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 2 ]. ToString ()); } catch { Console . WriteLine ( \"Lap time convertion failed\" ); } } else { if ( rawNumbers . Count == 2 ) { //Either the ':' or the '.' has been missinterpreted if ( rawNumbers [ 0 ]. Length > rawNumbers [ 1 ]. Length ) { //The ':' has been missinterpreted if ( rawNumbers [ 0 ]. Length == 3 ) { //It has been forgotten try { minuts = Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]. ToString ()); seconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 1 ]. ToString () + rawNumbers [ 0 ][ 2 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 1 ]); } catch { Console . WriteLine ( \"Lap time convertion failed\" ); } } else { if ( rawNumbers [ 0 ]. Length == 4 ) { //I has been translated into an other number try { minuts = Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]. ToString ()); seconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 2 ]. ToString () + rawNumbers [ 0 ][ 3 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 1 ]); } catch { Console . WriteLine ( \"Lap time convertion failed\" ); } } else { //This could happen if the ':' has been missinterpreted with a lap time of over 9 minuts (HIGLY IMPROBABLE) Console . WriteLine ( \"Lap time convertion failed\" ); } } } else { //The '.' has been missinterpreted if ( rawNumbers [ 1 ]. Length == 5 ) { //It has been forgotten minuts = Convert . ToInt32 ( rawNumbers [ 0 ]. ToString ()); seconds = Convert . ToInt32 ( rawNumbers [ 1 ][ 0 ]. ToString () + rawNumbers [ 1 ][ 1 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 1 ][ 2 ]. ToString () + rawNumbers [ 1 ][ 3 ]. ToString () + rawNumbers [ 1 ][ 4 ]. ToString ()); } else { if ( rawNumbers [ 1 ]. Length == 6 ) { try { //It has been interpreted as a number minuts = Convert . ToInt32 ( rawNumbers [ 0 ]. ToString ()); seconds = Convert . ToInt32 ( rawNumbers [ 1 ][ 0 ]. ToString () + rawNumbers [ 1 ][ 1 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 1 ][ 3 ]. ToString () + rawNumbers [ 1 ][ 4 ]. ToString () + rawNumbers [ 1 ][ 5 ]. ToString ()); } catch { //It can happen and to be honest I dont know how to fix it } } else { Console . WriteLine ( \"Lap time convertion failed\" ); } } } } else { if ( rawNumbers . Count == 1 ) { //Both the '.' and the ':' have been missinterpreted if ( rawNumbers [ 0 ]. Length == 6 ) { //The just all have been forgotten try { minuts = Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]. ToString ()); seconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 1 ]. ToString () + rawNumbers [ 0 ][ 2 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 3 ]. ToString () + rawNumbers [ 0 ][ 4 ]. ToString () + rawNumbers [ 0 ][ 5 ]. ToString ()); } catch { Console . WriteLine ( \"Lap time convertion failed\" ); } } else { if ( rawNumbers [ 0 ]. Length == 7 ) { //The '.' or ':' have been interpreted as a number (usually the ':') try { minuts = Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]. ToString ()); seconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 2 ]. ToString () + rawNumbers [ 0 ][ 3 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 4 ]. ToString () + rawNumbers [ 0 ][ 5 ]. ToString () + rawNumbers [ 0 ][ 6 ]. ToString ()); } catch { Console . WriteLine ( \"Lap time convertion failed\" ); } } else { if ( rawNumbers [ 0 ]. Length == 8 ) { //Both have been interpreted as a number try { minuts = Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]. ToString ()); seconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 2 ]. ToString () + rawNumbers [ 0 ][ 3 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 5 ]. ToString () + rawNumbers [ 0 ][ 6 ]. ToString () + rawNumbers [ 0 ][ 7 ]. ToString ()); } catch { Console . WriteLine ( \"Lap time convertion failed\" ); } } else { //I dont know what could have happened Console . WriteLine ( \"Lap time convertion failed\" ); } } } } else { //I dont know what could have happened Console . WriteLine ( \"Lap time convertion failed\" ); } } } result = 0 ; result += minuts * 60 * 1000 ; result += seconds * 1000 ; result += miliseconds ; break ; case OcrImage . WindowType . Gap : if ( rawNumbers . Count == 2 ) { // This should be the x.xxx or a missed x:xx.xxx if ( rawNumbers [ 0 ]. Length > 2 ) { //Its a missed x:xx.xxx if ( rawNumbers [ 0 ]. Length == 3 ) { //It forgot the \":\" try { minuts = Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]. ToString ()); seconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 1 ]. ToString () + rawNumbers [ 0 ][ 2 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 1 ]); } catch { Console . WriteLine ( \"Gap to leader convertion failed\" ); } } else { //The \":\" has been mistaken as a number if ( rawNumbers [ 0 ]. Length == 4 ) { try { minuts = Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]. ToString ()); seconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 2 ]. ToString () + rawNumbers [ 0 ][ 3 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 1 ]); } catch { Console . WriteLine ( \"Gap to leader convertion failed\" ); } } else { Console . WriteLine ( \"Gap to leader convertion failed\" ); } } } else { //It should be a normal x.xxx or xx.xxx try { seconds = Convert . ToInt32 ( rawNumbers [ 0 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 1 ]. ToString ()); } catch { Console . WriteLine ( \"Gap to leader convertion failed\" ); } } } else { if ( rawNumbers . Count == 1 ) { //can be anything depending on the size of the string if ( rawNumbers [ 0 ]. Length == 4 ) { //We just missed the '.' try { seconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 1 ]. ToString () + rawNumbers [ 0 ][ 2 ]. ToString () + rawNumbers [ 0 ][ 3 ]. ToString ()); } catch { Console . WriteLine ( \"Gap to leader convertion failed\" ); } } else { if ( rawNumbers [ 0 ]. Length == 5 ) { //We just missed the '.' try { seconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]. ToString () + rawNumbers [ 0 ][ 1 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 2 ]. ToString () + rawNumbers [ 0 ][ 3 ]. ToString () + rawNumbers [ 0 ][ 4 ]. ToString ()); } catch { Console . WriteLine ( \"Gap to leader convertion failed\" ); } } //There is just too much possibilities that it would be stupid to try and tell them appart so for now im leaving that as just an error Console . WriteLine ( \"Gap to leader convertion failed\" ); } } else { if ( rawNumbers . Count == 3 ) { // This should be the x:xx.xxx try { //Gaps cant be more than 9 minuts so if there is more than 1 digit it means that the '+' has been understood as an other number if ( rawNumbers [ 0 ]. Length > 1 ) rawNumbers [ 0 ] = rawNumbers [ 0 ][ rawNumbers [ 0 ]. Length - 1 ]. ToString (); minuts = Convert . ToInt32 ( rawNumbers [ 0 ]. ToString ()); seconds = Convert . ToInt32 ( rawNumbers [ 1 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 2 ]. ToString ()); } catch { Console . WriteLine ( \"Gap to leader convertion failed\" ); } } } } result = 0 ; result += minuts * 60 * 1000 ; result += seconds * 1000 ; result += miliseconds ; break ; default : try { result = Convert . ToInt32 ( rawNumbers [ 0 ]. ToString ()); } catch { result = 0 ; } break ; } page . Dispose (); return result ; } /// /// Method that recovers strings from an image using Tesseract OCR /// /// The image of the window that contains text /// The Tesseract engine /// The list of allowed chars /// The type of window the text is on. Depending on the context the OCR will behave differently /// the string it found public static string GetStringFromPng ( Bitmap image , TesseractEngine Engine , string allowedChars = \"\" , OcrImage . WindowType windowType = OcrImage . WindowType . Text ) { string result = \"\" ; //Debug int salt = rnd . Next ( 0 , 999999 ); Engine . SetVariable ( \"tessedit_char_whitelist\" , allowedChars ); Bitmap rawData = image ; Bitmap enhancedImage = new OcrImage ( rawData ). Enhance ( windowType ); Page page = Engine . Process ( enhancedImage ); using ( var iter = page . GetIterator ()) { iter . Begin (); do { result += iter . GetText ( PageIteratorLevel . Word ); } while ( iter . Next ( PageIteratorLevel . Word )); } page . Dispose (); return result ; } /// /// Get a smaller image from a bigger one /// /// The big bitmap you want to get a part of /// The dimensions of the new bitmap /// The little bitmap protected Bitmap GetSmallBitmapFromBigOne ( Bitmap inputBitmap , Rectangle newBitmapDimensions ) { Bitmap sample = new Bitmap ( newBitmapDimensions . Width , newBitmapDimensions . Height ); Graphics g = Graphics . FromImage ( sample ); g . DrawImage ( inputBitmap , new Rectangle ( 0 , 0 , sample . Width , sample . Height ), newBitmapDimensions , GraphicsUnit . Pixel ); return sample ; } /// /// Returns the closest string from a list of options /// /// an array of all the possibilities /// the string you want to compare /// The closest option protected static string FindClosestMatch ( List < string > options , string testString ) { var closestMatch = \"\" ; var closestDistance = int . MaxValue ; foreach ( var item in options ) { var distance = LevenshteinDistance ( item , testString ); if ( distance < closestDistance ) { closestMatch = item ; closestDistance = distance ; } } return closestMatch ; } //This method has been generated with the help of ChatGPT /// /// Method that computes a score of distance between two strings /// /// The first string (order irrelevant) /// The second string (order irrelevant) /// The levenshtein distance protected static int LevenshteinDistance ( string string1 , string string2 ) { if ( string . IsNullOrEmpty ( string1 )) { return string . IsNullOrEmpty ( string2 ) ? 0 : string2 . Length ; } if ( string . IsNullOrEmpty ( string2 )) { return string . IsNullOrEmpty ( string1 ) ? 0 : string1 . Length ; } var d = new int [ string1 . Length + 1 , string2 . Length + 1 ]; for ( var i = 0 ; i <= string1 . Length ; i ++) { d [ i , 0 ] = i ; } for ( var j = 0 ; j <= string2 . Length ; j ++) { d [ 0 , j ] = j ; } for ( var i = 1 ; i <= string1 . Length ; i ++) { for ( var j = 1 ; j <= string2 . Length ; j ++) { var cost = ( string1 [ i - 1 ] == string2 [ j - 1 ]) ? 0 : 1 ; d [ i , j ] = Math . Min ( Math . Min ( d [ i - 1 , j ] + 1 , d [ i , j - 1 ] + 1 ), d [ i - 1 , j - 1 ] + cost ); } } return d [ string1 . Length , string2 . Length ]; } } }","title":"Window.cs"},{"location":"Code/recoverCookiesCSV.html","text":"recoverCookiesCSV.py # Rohmer Maxime # RecoverCookies.py # Little script that recovers the cookies stored in the chrome sqlite database and then decrypts them using the key stored in the chrome files # This script has been created to be used by an other programm or for the data to not be used directly. This is why it stores all the decoded cookies in a csv. (Btw could be smart for the end programm to delete the csv after using it) # Parts of this cript have been created with the help of ChatGPT import os import json import base64 import sqlite3 import win32crypt from Cryptodome.Cipher import AES from pathlib import Path import csv def get_master_key (): with open ( os . getenv ( \"localappdata\" ) + \" \\\\ Google \\\\ Chrome \\\\ User Data \\\\ Local State\" , \"r\" ) as f : local_state = f . read () local_state = json . loads ( local_state ) master_key = base64 . b64decode ( local_state [ \"os_crypt\" ][ \"encrypted_key\" ]) master_key = master_key [ 5 :] # removing DPAPI master_key = win32crypt . CryptUnprotectData ( master_key , None , None , None , 0 )[ 1 ] print ( \"MASTER KEY :\" ) print ( master_key ) print ( len ( master_key )) return master_key def decrypt_payload ( cipher , payload ): return cipher . decrypt ( payload ) def generate_cipher ( aes_key , iv ): return AES . new ( aes_key , AES . MODE_GCM , iv ) def decrypt_password ( buff , master_key ): try : iv = buff [ 3 : 15 ] payload = buff [ 15 :] cipher = generate_cipher ( master_key , iv ) decrypted_pass = decrypt_payload ( cipher , payload ) decrypted_pass = decrypted_pass [: - 16 ] . decode () # remove suffix bytes return decrypted_pass except Exception : # print(\"Probably saved password from Chrome version older than v80\\n\") # print(str(e)) return \"Chrome < 80\" master_key = get_master_key () cookies_path = Path ( os . getenv ( \"localappdata\" ) + \" \\\\ Google \\\\ Chrome \\\\ User Data \\\\ Default \\\\ Network \\\\ Cookies\" ) if not cookies_path . exists (): raise ValueError ( \"Cookies file not found\" ) with sqlite3 . connect ( cookies_path ) as connection : connection . row_factory = sqlite3 . Row cursor = connection . cursor () cursor . execute ( \"SELECT * FROM cookies\" ) with open ( 'cookies.csv' , 'a' , newline = '' ) as csvfile : fieldnames = [ 'host_key' , 'name' , 'value' , 'path' , 'expires_utc' , 'is_secure' , 'is_httponly' ] writer = csv . DictWriter ( csvfile , fieldnames = fieldnames ) if csvfile . tell () == 0 : writer . writeheader () for row in cursor . fetchall (): decrypted_value = decrypt_password ( row [ \"encrypted_value\" ], master_key ) writer . writerow ({ 'host_key' : row [ \"host_key\" ], 'name' : row [ \"name\" ], 'value' : decrypted_value , 'path' : row [ \"path\" ], 'expires_utc' : row [ \"expires_utc\" ], 'is_secure' : row [ \"is_secure\" ], 'is_httponly' : row [ \"is_httponly\" ] }) print ( \"Finished CSV\" )","title":"recoverCookiesCSV.py"},{"location":"Code/recoverCookiesCSV.html#recovercookiescsvpy","text":"# Rohmer Maxime # RecoverCookies.py # Little script that recovers the cookies stored in the chrome sqlite database and then decrypts them using the key stored in the chrome files # This script has been created to be used by an other programm or for the data to not be used directly. This is why it stores all the decoded cookies in a csv. (Btw could be smart for the end programm to delete the csv after using it) # Parts of this cript have been created with the help of ChatGPT import os import json import base64 import sqlite3 import win32crypt from Cryptodome.Cipher import AES from pathlib import Path import csv def get_master_key (): with open ( os . getenv ( \"localappdata\" ) + \" \\\\ Google \\\\ Chrome \\\\ User Data \\\\ Local State\" , \"r\" ) as f : local_state = f . read () local_state = json . loads ( local_state ) master_key = base64 . b64decode ( local_state [ \"os_crypt\" ][ \"encrypted_key\" ]) master_key = master_key [ 5 :] # removing DPAPI master_key = win32crypt . CryptUnprotectData ( master_key , None , None , None , 0 )[ 1 ] print ( \"MASTER KEY :\" ) print ( master_key ) print ( len ( master_key )) return master_key def decrypt_payload ( cipher , payload ): return cipher . decrypt ( payload ) def generate_cipher ( aes_key , iv ): return AES . new ( aes_key , AES . MODE_GCM , iv ) def decrypt_password ( buff , master_key ): try : iv = buff [ 3 : 15 ] payload = buff [ 15 :] cipher = generate_cipher ( master_key , iv ) decrypted_pass = decrypt_payload ( cipher , payload ) decrypted_pass = decrypted_pass [: - 16 ] . decode () # remove suffix bytes return decrypted_pass except Exception : # print(\"Probably saved password from Chrome version older than v80\\n\") # print(str(e)) return \"Chrome < 80\" master_key = get_master_key () cookies_path = Path ( os . getenv ( \"localappdata\" ) + \" \\\\ Google \\\\ Chrome \\\\ User Data \\\\ Default \\\\ Network \\\\ Cookies\" ) if not cookies_path . exists (): raise ValueError ( \"Cookies file not found\" ) with sqlite3 . connect ( cookies_path ) as connection : connection . row_factory = sqlite3 . Row cursor = connection . cursor () cursor . execute ( \"SELECT * FROM cookies\" ) with open ( 'cookies.csv' , 'a' , newline = '' ) as csvfile : fieldnames = [ 'host_key' , 'name' , 'value' , 'path' , 'expires_utc' , 'is_secure' , 'is_httponly' ] writer = csv . DictWriter ( csvfile , fieldnames = fieldnames ) if csvfile . tell () == 0 : writer . writeheader () for row in cursor . fetchall (): decrypted_value = decrypt_password ( row [ \"encrypted_value\" ], master_key ) writer . writerow ({ 'host_key' : row [ \"host_key\" ], 'name' : row [ \"name\" ], 'value' : decrypted_value , 'path' : row [ \"path\" ], 'expires_utc' : row [ \"expires_utc\" ], 'is_secure' : row [ \"is_secure\" ], 'is_httponly' : row [ \"is_httponly\" ] }) print ( \"Finished CSV\" )","title":"recoverCookiesCSV.py"}]} \ No newline at end of file +{"config":{"indexing":"full","lang":["en"],"min_search_length":3,"prebuild_index":false,"separator":"[\\s\\-]+"},"docs":[{"location":"index.html","text":"Rapport Track Trends V1.0 Rohmer Maxime Travail de dipl\u00f4me Technicien ES 2023 Introduction R\u00e9sum\u00e9 Track Trends est un outil de r\u00e9cup\u00e9ration et d'analyse de donn\u00e9es de courses de Formule 1. Pour le contexte, en dehors des cours, j'exerce diff\u00e9rentes activit\u00e9s dont celle de Live Ticker F1 pour le 20 minutes. Pour m'aider dans ce travail, j'utilise actuellement la F1TV \u00e0 laquelle je suis abonn\u00e9 qui me propose non seulement un feed vid\u00e9o de meilleure qualit\u00e9 avec des commentaires plus pertinents que ceux de la RTS mais qui aussi me permet d'acc\u00e9der \u00e0 un feed vid\u00e9o tr\u00e8s important : la chaine data. Ce dernier ressemble \u00e0 cela : \"Screenshot du feed data de la f1TV\" (Attention, ce n'est pas un joli tableau HTML, mais bien une vid\u00e9o qui contient un tableau.) Sauf que toutes les informations sont \u00e9tal\u00e9es p\u00eale-m\u00eale sans hi\u00e9rarchie, ce qui fait que cela me prendrait trop de temps de tout d\u00e9chiffrer \u00e0 chaque fois, ce qui me fait rater des choses int\u00e9ressantes. Le but du projet est donc de fournir un outil qui hi\u00e9rarchise et affiche diff\u00e9remment les donn\u00e9es pour faciliter leur lecture et me permettre de faire de meilleurs commentaires. Abstract Track Trends is a Formula 1 data is a tool that displays and interpret data. To understand everything,first ,a little bit of context. In my free time I have multiple activities and one is to be the Live Ticker F1 for the local journal \"20 minutes\" (Owned by Tamedia). to help me in this work I'm currently using the F1TV to which I'm currently subscribed because it provides me with a better video feed with better commentary than the ones from the RTS (in my opinion) but also because it gives me access to a very important video feed : the data channel You can see in the chapter above an example of the F1TV DATA CHANNEL. [Note : Even tough it looks like a pretty HTML table on wich you could easely get infos... Its not. It's a video feed] You can see a lot of data, all well and good BUT! All the data is displayed the same in a big table which make it really hard to read totally in a hurry, which means that I miss a lot of useful information. The point of the project then is to provide a tool that can display those data by taking into account their relevance. So for example, a driver that is 10s away from everyone and that is doing some normal lap times will be less displayed or even not displayed at all, so I can focus on the drivers that are battling each others. This tool would help me not miss the battles and details that are happening in the back and therefore not being broadcasted on TV. And it could be a useful tool for anyone who wants a better insight of how the race is going by looking at the data. This kind of project already exists in the form of the AWS tool \"F1 Insight\" but it is not avaible to the public. We can only see some of its predictions (that are rubbish) and data dumps in the live feed when the TV directors feel like it. Description du besoin Comme expliqu\u00e9 dans le r\u00e9sum\u00e9, je suis Live Ticker F1. Mais pour mieux comprendre le besoin que j'ai, je pense qu'il est pertinent de comprendre comment je travaille. Pendant un Grand Prix de Formule 1 j'ai plusieurs t\u00e2ches \u00e0 effectuer : Suivre les diff\u00e9rents \u00e9v\u00e8nements du Grand Prix Changer le titre et la photo de titre du Live Chercher des Tweets ou des Images \u00e0 int\u00e9grer Ecrire les commentaires en faisant attention \u00e0 dire ce qu'il se passe mais aussi l\u2019expliquer, ce que cela implique, mais aussi ce que cela veut dire pour le reste de la course. Comprendre et expliquer les strat\u00e9gies Tout cela toutes les cinq minutes max... Cela veut dire que je dois \u00eatre le plus rapide possible quand je cherche des informations. Et comme le tableau en comporte trop et bien, je suis oblig\u00e9 de le lire en diagonale. Par exemple dans le tableau, les infos que je cherche le plus sont : Le nombre de places gagn\u00e9es (surtout au d\u00e9part) Les \u00e9carts entre les pilotes (surtout ceux qui sont en dessous de deux secondes). Les pneus de chaque pilote et combien de tours, ils ont fait dessus Les temps d'arr\u00eats aux stands Les temps au tour (surtout pour la strat\u00e9gie) Mais pleins d'autres informations existent si on les recoupe sur plusieurs tours. Un outil qui permettrait de mettre en \u00e9vidence les informations importantes serait donc une tr\u00e8s grosse plus-value pour mon travail et s'il est facile \u00e0 installer et \u00e0 utiliser, il se pourrait qu'il devienne indispensable. Cahier des charges Il s'agit d'une version coup\u00e9e du cahier des charges qui ne contient pas l'explication du contexte. Mais l'original est disponible sur ce site \u00e9galement. Il est toutefois normal d'y voir des choses r\u00e9p\u00e9t\u00e9es ou l\u00e9g\u00e8rement diff\u00e9rentes, en effet, il n'a pas \u00e9t\u00e9 \u00e9crit en m\u00eame temps que le reste de ce document. Projet Un outil de style compagnon sous forme d'application C# Windows Form qui r\u00e9cup\u00e8re en temps r\u00e9el les informations de la course et affiche les informations les plus importantes. Le but est non seulement de faciliter mon job, mais aussi faire en sorte d'am\u00e9liorer la plus-value de mon travail en me permettant de fournir des commentaires qui ne sont pas disponibles pour le tout venant qui regarde simplement le flux RTS. Exemples : Les pilotes qui sont proches (moins de 1-2 secondes qui sont donc en train de se battre). Les pilotes qui am\u00e9liorent leur temps au tour et ceux qui perdent le plus de temps Le classement pond\u00e9r\u00e9 tenant compte des futurs arr\u00eats au stand Maintenant afficher diff\u00e9remment les infos, c'est sympa, mais cela serait encore mieux de traiter ces data et de permettre des petites pr\u00e9dictions. Exemples : Pr\u00e9dire les arr\u00eats aux stands en prenant en compte les baisses de performances des pneus Pr\u00e9dire le pneu que le pilote va chausser s'il rentre aux stands dans le prochain tour Pr\u00e9dire dans combien de tour tel pilote va rattraper tel autre pilote Pr\u00e9dire combien de temps le pilote va perdre dans les stands en fonctions des arr\u00eats pr\u00e9c\u00e9dents R\u00e9alisation Malheureusement, la Formula 1 Management ne propose aucune API publique qui puisse nous permettre de faire ce projet \"simplement\". La raison la plus probable \u00e9tant qu'Amazon avec son service AWS propose exactement ce genre de services pour le flux t\u00e9l\u00e9vis\u00e9 et il doit y avoir un contrat d'exclusivit\u00e9. Il existe des API \"Pirates\" faites par la communaut\u00e9, le probl\u00e8me est qu'elles ne sont pas forc\u00e9ment des plus pratiques \u00e0 utiliser. Mais comme je poss\u00e8de un abonnement premium ++ \u00e0 la F1TV, j'ai acc\u00e8s pour chaque grand prix \u00e0 un flux vid\u00e9o nomm\u00e9 : DATA F1 CHANNEL Qui ressemble \u00e0 \u00e7a : \"Exemple de la Data Channel\" Donc la seule fa\u00e7on que je vois de r\u00e9cup\u00e9rer ces donn\u00e9es est de les prendre directement sur ce feed. M\u00eame si le but final de l'application est de faire pleins de choses super avec les datas, le gros du projet va surtout \u00eatre la r\u00e9cup\u00e9ration des donn\u00e9es et leur stockage. Les donn\u00e9es viennent du flux vid\u00e9o et ainsi dans un premier temps, il va falloir r\u00e9cup\u00e9rer d'une mani\u00e8re ou d'une autre des images qui viennent d'un grand prix en direct ou en rediffusion. Ensuite, dans un second temps, il faut lire les informations directement sur l'image en utilisant une librairie pr\u00e9vue pour (exemple Tesseract) et v\u00e9rifier l'int\u00e9grit\u00e9 de ces derni\u00e8res pour qu'on puisse ensuite les stocker. Dans un troisi\u00e8me temps, il faut stocker toutes ces donn\u00e9es dans une forme qui permette d'aller facilement faire des requ\u00eates de r\u00e9cup\u00e9ration et d\u00e9j\u00e0 pr\u00e9parer des m\u00e9thodes qui permettent de r\u00e9cup\u00e9rer des infos importantes (ex : la moyenne des cinq derniers tours, le temps moyen d'arr\u00eat, etc.) pour faciliter la derni\u00e8re \u00e9tape Quand tout cela est fait, on peut ensuite s'amuser un peu avec les Data. La derni\u00e8re \u00e9tape est donc l'affichage. L'id\u00e9e est de cr\u00e9er une Windows Form qui contienne toutes ces informations dans un format beaucoup plus lisible et avec laquelle on pourrait interagir pour permettre de plus facilement commenter les Grands Prix. (exemple plus bas avec un croquis de ce \u00e0 quoi l'application pourrait ressembler) Voici la liste des donn\u00e9es qui pourraient \u00eatre affich\u00e9es (Non contractuel, simplement des id\u00e9es). Les pilotes qui sont proches (moins de 1-2 secondes qui sont donc en train de se battre). Les pilotes qui am\u00e9liorent leur temps au tour et ceux qui perdent le plus de temps Le classement pond\u00e9r\u00e9 tenant compte des futurs arr\u00eats au stand La moyenne de temps que les pilotes perdent dans les stands La performance moyenne des 5 types de pneus La moyenne de temps de chaque pilote sur le pneu actuel Le nombre de points que chaque pilote gagnerait selon sa position Le classement de la course Voire m\u00eame si c'est possible : Pr\u00e9dire les arr\u00eats aux stands en prenant en compte les baisses de performances des pneus Pr\u00e9dire le pneu que le pilote va chausser s'il rentre aux stands dans le prochain tour Pr\u00e9dire dans combien de tour tel pilote va rattraper tel autre pilote Pr\u00e9dire combien de temps le pilote va perdre dans les stands en fonctions des arr\u00eats pr\u00e9c\u00e9dents Pr\u00e9dire les temps au tour de chaque pilote selon l'usure des pneus Voici un exemple d'interface possible pour une page : \"Prototype de l'app fait sur Figma\" Cas d'utilisation '*'On va consid\u00e9rer que tous les user ont un abonnement F1 TV PRO Un user veut r\u00e9cup\u00e9rer les data : Il ouvre son navigateur et lance la page DATA de la F1 TV Il calibre la capture des data via le programme (pour la premi\u00e8re utilisation). Il confirme que les donn\u00e9es initiales sont bonnes (pour la premi\u00e8re utilisation). Il regarde tranquille son Grand Prix Le programme r\u00e9cup\u00e8re les data : Il r\u00e9cup\u00e8re des images depuis la F1TV Il utilise Tesseract (ou autre) pour en r\u00e9cup\u00e9rer les infos. Il met ces infos dans un Objet Pilote, dans un Objet course avec un attribut tour pour hi\u00e9rarchiser les data Pour ce qui est de l'affichage, l'id\u00e9e est de faire une application C# comme on l'a appris \u00e0 l'\u00e9cole, mais avec assez de style pour qu'elle puisse \u00eatre agr\u00e9able \u00e0 utiliser. Quand le programme affiche les data : Il prend les donn\u00e9es venant directement de la F1TV. Il affiche diff\u00e9remment les donn\u00e9es pour permettre une meilleure lisibilit\u00e9 Il interpr\u00e8te avec des r\u00e8gles plut\u00f4t simples certaines data pour faire des minipr\u00e9dictions ou aider \u00e0 la lecture Il r\u00e9cup\u00e8re des infos d'autres courses pour les comparer et proposer des pr\u00e9dictions plus int\u00e9ressantes Difficult\u00e9s techniques R\u00e9cup\u00e9rer un flux vid\u00e9o plut\u00f4t propre malgr\u00e9 les contres mesures de la F1 TV pour en emp\u00eacher la lecture par un logiciel Si on doit passer par une capture d'\u00e9cran, trouver un moyen de stocker les donn\u00e9es de mani\u00e8re \u00e0 pr\u00e9voir que parfois un tour pourrait avoir plus de donn\u00e9es qu'un autre, que le user peut mettre pause, ou m\u00eame qu\u2019il revienne en arri\u00e8re. D\u00e9velopper des algorithmes pour r\u00e9cup\u00e9rer les donn\u00e9es comme les diff\u00e9rents pneus utilis\u00e9s ou l'activation du DRS ainsi que d\u00e9velopper des moyens de nettoyer les r\u00e9sultats de l'OCR (Par exemple utiliser diff\u00e9rents champs redondants pour comparer les r\u00e9sultats) Stocker les donn\u00e9es sur une base pour les traiter plus tard tout en pr\u00e9voyant un moyen de voir les stats live D\u00e9velopper des algorithmes de pr\u00e9diction qui prennent en compte d'anciennes courses pour tenter de pr\u00e9dire des choses comme les arr\u00eats aux stands par exemple. Diff\u00e9rences sur le cahier des charges Ici, je vais parler de l'\u00e9tat du projet \u00e0 la date du 12 Juin 2023. \u00c0 cette date, le projet est fonctionnel, mais comporte quelques diff\u00e9rences avec le cahier des charges original. Je vais expliquer non seulement ces diff\u00e9rences, mais aussi les raisons qui font qu'elles sont l\u00e0. Pour bien comprendre les diff\u00e9rences, il faut s'en r\u00e9f\u00e9rer au cahier des charges original. L'application doit \u00eatre \"Un outil de style compagnon sous forme d'application C# Windows Form qui r\u00e9cup\u00e8re en temps r\u00e9el les informations de la course et affiche les informations les plus importantes\". C'est \u00e7a la phrase la plus importante dans tout le CDC. Et je pense que tr\u00e8s honn\u00eatement, ce cahier des charges est rempli ! L'application actuellement disponible sur le repos GIT est une application de style compagnion Windows Forms qui r\u00e9cup\u00e8re les infos de la F1TV en temps r\u00e9el et elle affiche les informations qu'elle trouve importante. Donc, je dirais que l'objectif g\u00e9n\u00e9ral est rempli. Maintenant, c'est dans les d\u00e9tails que cela p\u00eache. Il est mentionn\u00e9 trois exemples d'infos \u00e0 suivre, je cite : \"Les pilotes qui sont proches (moins de 1-2 secondes qui sont ainsi en train de se battre).\" \"Les pilotes qui am\u00e9liorent leur temps au tour et ceux qui perdent le plus de temps\" \"Le classement pond\u00e9r\u00e9 tenant compte des futurs arr\u00eats au stand\" r\u00e9sultats : Dans l'application, on peut effectivement voir les pilotes proches (Ce sont ceux qui sont \u00e0 moins de 3 secondes dans le version finale) Dans l'application, on peut aussi voir un affichage qui permet de voir les pilotes les plus rapides et les plus lents sur le circuit. On ne peut en revanche pas voir de classement pond\u00e9r\u00e9 selon les arr\u00eats aux stands, car l'application a du mal \u00e0 d\u00e9tecter des arr\u00eats. Ensuite pour ce qui est des pr\u00e9dictions, il n'y en a aucunes comme \u00e7a, c'est simple. Si on ne regarde que de tr\u00e8s loin le CDC et le projet final, on pourrait dire que c'est plut\u00f4t d\u00e9cevant puisqu'il manque beaucoup de choses comme les pr\u00e9dictions et certains affichages. On peut aussi se dire \u00e7a en comparant la maquette du CDC et le r\u00e9sultat final. \"Maquette originale du projet faite sur Figma\" \"Maquette originale du projet faite sur Figma\" Clairement, un \u0153il non avis\u00e9 pourrait \u00eatre tr\u00e8s d\u00e9\u00e7u et pourrait dire que c'est un \u00e9chec. Et moi je vais vous expliquer pourquoi, au contraire c'est un total succ\u00e8s. D\u00e9j\u00e0, la beaut\u00e9 de l'interface est tr\u00e8s difficile \u00e0 r\u00e9pliquer en Windows Forms et il faudrait plus d'une semaine de travail pour arriver \u00e0 quelque chose qui pourrait ressembler un tout petit peu \u00e0 la maquette. Ensuite, si on regarde bien, on a quand m\u00eame une application qui nous permet de suivre les informations de la course et qui calcule des choses \u00e0 notre place. C'est d\u00e9j\u00e0 une grosse plus-value par rapport \u00e0 la page Data de la F1TV. Et finalement, les pr\u00e9dictions, les affichages et le style, ce sont les choses les moins compliqu\u00e9es du projet. On ne se rend pas compte que pour simplement afficher les 20 pilotes dans le bon ordre, il faut \u00e9norm\u00e9ment de travail. Voici une petite repr\u00e9sentation graphique de la quantit\u00e9 de travail n\u00e9cessaire pour en arriver \u00e0 l'\u00e9tat actuel du projet : \"Graphique repr\u00e9sentant la quantit\u00e9 de travail requise\" Pour en arriver \u00e0 un affichage, il a fallu r\u00e9cup\u00e9rer automatiquement les images en utilisant un browser headless ce qui a pris un temps fou \u00e0 mettre en place et il a fallu surtout lire les informations que l'on recevait des images. J'ai pass\u00e9 presque 90\u2009% du temps de mon projet \u00e0 d\u00e9velopper des choses qui permettront ensuite de faire de l'affichage. Le fait qu'il y ait quoi que ce soit de logique qui s'affiche, cela veut dire que TOUT LE RESTE fonctionne ! Le moindre souci \u00e0 la r\u00e9cup\u00e9ration des images, ou surtout \u00e0 la reconnaissance de texte et de chiffres, et l'affichage est ruin\u00e9. Si j'avais pass\u00e9 ne serait-ce qu'une semaine de plus juste sur l'affichage, le r\u00e9sultat final n'aurait rien \u00e0 voir. Le souci, c'est simplement que le cahier des charges ne parle pas du tout du reste du projet et ne parle que du r\u00e9sultat final. Pour toutes ces raisons, je dirais que le CDC \u00e9tait trop superficiel, mais que l'application est conforme \u00e0 l'id\u00e9e g\u00e9n\u00e9rale de ce dernier et qu'il serait tr\u00e8s facile de la rendre parfaitement conforme maintenant que tout le travail de fond a \u00e9t\u00e9 fait et fonctionne et je pense donc que c'est un succ\u00e8s. Planning pr\u00e9visionnel Mes suiveurs m'ont demand\u00e9 un planning de type GANTT pour ce travail de dipl\u00f4me Je n'ai pas utilis\u00e9 un logiciel particulier pour faire ce dernier, mais je me suis inspir\u00e9 des principes fondamentaux d'un diagramme de ce type. Comme l'original a \u00e9t\u00e9 fait sur Excel, je ne peux pas vraiment l'ins\u00e9rer de mani\u00e8re lisible ici, mais il est disponible dans le dossier Planning. Mais voici un r\u00e9sum\u00e9 de son contenu : T\u00e2ches J'ai d\u00e9cid\u00e9 de d\u00e9composer mon planning en trois grands types de t\u00e2ches. Programmation Documentation Tests L'id\u00e9e est de permettre une meilleure lisibilit\u00e9 et de me permettre \u00e0 moi de me faire plus facilement \u00e0 l'id\u00e9e de ce qu'il m'attend. Voici la liste des t\u00e2ches par rubrique : PT Cette rubrique contient les t\u00e2ches qui n'ont pas leur place dans les trois cat\u00e9gories principales. PT1 / pr\u00e9paration au travail de dipl\u00f4me (2) Cette t\u00e2che est un peu hors cat\u00e9gorie, mais c'est normal, c'est une supert\u00e2che qui regroupe beaucoup de choses. C'est une t\u00e2che qui est planifi\u00e9e pour deux jours et qui normalement devrait \u00eatre faite les deux premiers jours du travail. Le but est de pr\u00e9parer tout ce qui peut \u00eatre pr\u00e9par\u00e9 en avance niveau documentation et mise en place pour ne pas avoir besoin de s'en soucier ensuite. DT Rubrique documentation qui contient toutes les t\u00e2ches en rapport de pr\u00e8s ou de loin avec la documentation du projet. DT1 Cr\u00e9ation du poster (1) Cette t\u00e2che consiste \u00e0 faire une version num\u00e9rique du poster qui soit en accord avec les consignes qu'on nous a donn\u00e9es. Le but est aussi et surtout de faire poster dont je sois fier et que je sois content de montrer. Il y a d\u00e9j\u00e0 des croquis de poster et j'ai clairement pr\u00e9vu de travailler sur \u00e7a pendant les vacances alors, je n'ai mis qu'un jour et je l'ai plac\u00e9 juste avant le rendu de ce dernier. DT2 Documentation Analyse de l'existant (2) Cette t\u00e2che est d\u00e9di\u00e9e \u00e0 l'\u00e9criture de la documentation et plus pr\u00e9cis\u00e9ment de l'analyse de l'existant. Comme il y a pas mal de technologies utilis\u00e9es dans mon projet, j'aimerais faire correctement un vrai debrief de pourquoi j'ai utilis\u00e9 l'une ou l'autre, alors, j'ai assign\u00e9 deux jours dessus. DT3 Documentation Analyse organique (5) Cette t\u00e2che est la plus grosse dans la cat\u00e9gorie documentation. Il s'agit de documenter comment l'application fonctionne. J'y ai mis cinq jours et je pense que c'est un minimum, car c'est dans cette t\u00e2che que je vais devoir d\u00e9tailler exactement comment fonctionne chaque partie du projet. Ces cinq jours sont \u00e9parpill\u00e9s sur le projet en g\u00e9n\u00e9ral \u00e0 la fin du d\u00e9veloppement de chaque grande partie de projet. Le but est de ne rien oublier et de ne pas avoir \u00e0 tout faire en m\u00eame temps. DT4 Documentation Analyse fonctionnelle (2) Cette t\u00e2che est d\u00e9j\u00e0 moins grosse, elle consiste \u00e0 documenter le fonctionnement de l'application et comment utiliser les composants que j'ai d\u00e9velopp\u00e9s. Je l'ai mis en fin de projet, car comme j'ai l'habitude de faire des analyses fonctionnelles plut\u00f4t pr\u00e9cises, le moindre changement dans l'UI peut tout rendre obsol\u00e8te. J'y ai mis deux jours, puisque j'aimerais correctement documenter avec de bonnes photos et sc\u00e9narios pour qu'on puisse voir toutes les possibilit\u00e9s de l'application. DT5 Documentation Tests (1) Cette t\u00e2che est un peu plus petite qu'elle ne le devrait. Elle concerne la documentation des diff\u00e9rents tests. Je n'y ai mis qu'un seul jour, car en r\u00e9alit\u00e9 les diff\u00e9rentes t\u00e2ches de tests contiennent aussi beaucoup de documentation, DT6 Documentation Reste (2) Cette t\u00e2che est une t\u00e2che un peu vague. Elle contient toutes les actions autres que j'aurai besoin de faire (Mise au propre, orthographe, g\u00e9n\u00e9ration de PDF ...). J'y ai mis deux jours pour avoir un peu de marge, car ce sont toujours des t\u00e2ches qui paraissent faciles, mais qui \u00e0 la fin prennent beaucoup de temps si on les fait bien. PT Rubrique programmation qui contient toutes les t\u00e2ches qui touchent \u00e0 la programmation et au d\u00e9veloppement de l'application. PT1 Programmation r\u00e9cup\u00e9ration des images (3) Cette t\u00e2che est estim\u00e9e \u00e0 seulement trois jours, il ne faut pas s'y m\u00e9prendre, c'est une des t\u00e2ches les plus dures et lourdes au niveau de la documentation et en explications. Cependant, un POC (Proof Of Concept) assez avanc\u00e9 a d\u00e9j\u00e0 \u00e9t\u00e9 fait et donc cela permet de n'envisager que trois jours, car il suffit de l'impl\u00e9menter et de la peaufiner. Cette t\u00e2che consiste \u00e0 prendre en entr\u00e9e un lien de Grand Prix et de sortir une image tous les x secondes de la page DATA. Cela peut sembler simple, mais pour le faire sans prendre d'espace d'\u00e9cran et ne demandant pas \u00e0 l'utilisateur de copier-coller quoi que ce soit o\u00f9 de donner ses identifiants F1TV c'est un challenge. Cela peut paraitre curieux alors de mettre cette t\u00e2che loin dans le planning m\u00eame si c'est la premi\u00e8re \u00e9tape du projet. Encore une fois, cela s'explique avec le fait qu'il y a d\u00e9j\u00e0 un POC qui fonctionne \u00e0 peu pr\u00e8s et que donc pr\u00e9f\u00e8re commencer avec des t\u00e2ches plus incertaines dans le cas o\u00f9 elles prendraient plus de temps que pr\u00e9vu. PT2 Programmation OCR (5) Cette t\u00e2che consiste \u00e0 d\u00e9velopper la partie qui reconnait le texte sur les images. C'est tr\u00e8s certainement la t\u00e2che qui risque le plus de d\u00e9border, car c'est celle qui est la plus complexe techniquement puisqu'elle demande non seulement la lecture sur image, mais aussi le d\u00e9veloppement d'algorithmes de traitement de cette donn\u00e9e pour \u00eatre s\u00fbr qu'elle a bien \u00e9t\u00e9 lue. J'y ai ainsi allou\u00e9 cinq jours, mais j'esp\u00e8re que j'arriverai \u00e0 gagner du temps sur les autres pour y allouer plus dans le planning effectif, car je suis convaincu que plus, on y passe du temps, meilleur sera le r\u00e9sultat. PT3 Programmation, stockage et mod\u00e8le (5) Cette partie est moins technique, mais concerne le stockage des donn\u00e9es que nous retourne la lecture des images. Mais elle va demander de la r\u00e9flexion et de l'intelligence de programmation, car il faut que cette partie anticipe les besoins de la vue et pr\u00e9pare un terrain fertile qui ne demande pas un refactor quand on passera au d\u00e9veloppement de la vue. C'est pour cela que je lui ai aussi assign\u00e9 cinq jours de travail et elle doit absolument \u00eatre commenc\u00e9e apr\u00e8s la lecture. PT4 Programmation Vue de l'APP (5) Cette partie peut \u00eatre horrible comme tr\u00e8s facile, cela d\u00e9pend compl\u00e8tement de la qualit\u00e9 du travail avant. Si le mod\u00e8le est parfait et que les donn\u00e9es sont int\u00e8gres, cela devrait \u00eatre plut\u00f4t simple de les afficher de mani\u00e8re int\u00e9ressante. Cependant, cette partie d\u00e9bordera s\u00fbrement un peu, car tout le temps gagn\u00e9 avec de bonnes donn\u00e9es sera utilis\u00e9 pour tenter de faire de la pr\u00e9diction. Pour ces raisons, je lui ai assign\u00e9 \u00e9galement cinq jours de travail et elle doit absolument \u00eatre faite apr\u00e8s le mod\u00e8le. PT5 Programmation mise en commun (3) Cette t\u00e2che est aussi un petit peu sp\u00e9ciale, car elle regroupe plusieurs choses. En gros, chaque partie de programmation sera assur\u00e9ment assez ind\u00e9pendante et il faudra \u00e0 un moment faire un seul projet C# qui contient tout. Il est difficile d'estimer \u00e0 quel point cela va \u00eatre compliqu\u00e9 alors, j'ai \u00e9t\u00e9 conservateur et j'ai mis trois jours. TT Cette rubrique contient les t\u00e2ches qui sont uniquement des tests. La plupart des t\u00e2ches de programmations contiennent d\u00e9j\u00e0 des tests, mais certaines demandent une attention particuli\u00e8re. TT1 Tests OCR (2) Cette t\u00e2che est une des t\u00e2ches les plus importantes. Son but est de faire un protocole de tests complet qui permette de comparer les diff\u00e9rents algorithmes de reconnaissance de texte. Je l'ai mise apr\u00e8s la reconnaissance, mais m\u00eame maintenant en \u00e9crivant ces lignes, je me dis que dans le planning effectif, elle sera faite pendant la t\u00e2che de programmation. En effet, comment savoir si mon tout nouvel algorithme est r\u00e9ellement mieux que le pr\u00e9c\u00e9dent. Je pr\u00e9vois deux jours, car je pense que faire le dataset va prendre beaucoup de temps, il faut pr\u00e9voir un certain nombre d'images et de texte qui pourront ensuite \u00eatre donn\u00e9es sous forme de tests. C'est certes une t\u00e2che de test, mais c'est aussi de la programmation. TT2 Tests finaux (2) Cette t\u00e2che de tests est un peu vague, elle regroupe les diff\u00e9rents tests pour v\u00e9rifier que les donn\u00e9es sont bien affich\u00e9es correctement. Ce qui serait cool si j'ai du temps en fin de travail de dipl\u00f4me serait de faire un syst\u00e8me de test qui permet d'entrainer le programme \u00e0 mieux reconnaitre certaines choses comme des arr\u00eats aux stands si on lui donne les trois derni\u00e8res ann\u00e9es de grands Prix. J'ai mis une dur\u00e9e arbitraire de deux jours, mais je ne sais pas vraiment combien de temps cela va vraiment durer. Elle est \u00e9videmment \u00e0 effectuer une fois que tout est \u00e0 peu pr\u00e8s termin\u00e9. Planning effectif et diff\u00e9rences Alors ! Ces lignes sont \u00e9crites dans les derniers jours du travail de dipl\u00f4me et j'ai des choses \u00e0 dire. Premi\u00e8rement, je suis plut\u00f4t content de mon estimation du travail. Je trouve que j'ai bien estim\u00e9 la quantit\u00e9 de travail et combien de temps les diff\u00e9rentes t\u00e2ches allaient prendre. La plupart des d\u00e9passements sont des impr\u00e9vus et/ou des allers et des retours entre d'autres t\u00e2ches. La raison pour laquelle je suis plut\u00f4t content de ma planification, c'est que malgr\u00e9 l'usine \u00e0 Gaz que repr\u00e9sente ce projet et le nombre de soucis que j'ai eu, j'ai quand m\u00eame pu arriver \u00e0 un projet qui fonctionne en suivant essentiellement fid\u00e8lement le planning. Une chose dont je suis assez fier, c'est la documentation. En ayant d\u00e9velopp\u00e9 le squelette de l'app d\u00e8s le d\u00e9but du projet, \u00e7a m'a permis d'avancer au fur et \u00e0 mesure du projet la conscience tranquille. Bon, c'est bien joli les fleurs, mais clairement, c'est loin d'\u00eatre parfait. Au moment de la planification, je n'avais pas pr\u00e9vu de faire des allers et des retours entre plusieurs t\u00e2ches. Dans le planning effectif, on peut voir qu'un jour, je suis sur la PT3 (Stockage) et la PT5 (regroupement des mini projets en un seul gros). J'aurais peut-\u00eatre d\u00fb inverser l'ordre. Mais il y a deux gros soucis dans mon planning : L'ordre des t\u00e2ches n'\u00e9tait pas bon (mais il a \u00e9t\u00e9 d\u00e9cid\u00e9 comme \u00e7a pour que les plus grosses difficult\u00e9s soient faites en premier) ce qui a cr\u00e9\u00e9 pas mal de soucis. Ex : L'\u00e9mulateur de la F1TV a \u00e9t\u00e9 fait tr\u00e8s tard et finalement les images r\u00e9cup\u00e9r\u00e9es n'\u00e9taient pas de la m\u00eame qualit\u00e9 que ce que j'avais pr\u00e9vu en d\u00e9veloppant l'OCR en premier. Les Tests ont \u00e9t\u00e9 n\u00e9glig\u00e9s et utilis\u00e9s comme des jours tampons. \u00c7a, c'est la plus grosse erreur de planning. Autant les autres sont p\u00e9nibles, etc. mais n'ont pas forc\u00e9ment compromis la bonne r\u00e9alisation du projet alors que les tests ont \u00e9t\u00e9 mal plac\u00e9s et ont finalement \u00e9t\u00e9 balay\u00e9s tandis que s'ils avaient \u00e9t\u00e9 mieux planifi\u00e9s \u00e7a ne serait pas arriv\u00e9. Solutions : L'ordre des t\u00e2ches a \u00e9t\u00e9 d\u00e9cid\u00e9 expr\u00e8s de cette fa\u00e7on pour \u00e9viter de prendre trop de risques. L'id\u00e9e \u00e9tait qu'en faisant le plus dur au d\u00e9but, je pourrai facilement changer le cahier des charges. J'ai envie de dire que j'aurais d\u00fb \u00eatre plus confiant, mais pour \u00eatre honn\u00eate, je pense que c'\u00e9tait un mal pour un bien. Je ne pense pas avoir \"bien\" fait, mais je pense que c'est une erreur qui \u00e9tait rentable pour mon niveau de stress dans le projet. Par contre, les Tests c'est tout simplement une erreur. J'en parle plus en d\u00e9tail dans la partie test de la documentation, mais je vais r\u00e9sumer un peu ici. La documentation a \u00e9t\u00e9 faite d\u00e8s le d\u00e9but du projet. J'ai mis en place le squelette pour qu'ensuite, il soit simple d'y ajouter au fur et \u00e0 mesure. J'aurais d\u00fb faire exactement pareil avec les tests. Si j'avais fait au moins le squelette des tests au d\u00e9but du projet, j'aurais pu beaucoup plus facilement en faire et cela m'aurait fait gagner un temps fou et j'aurais m\u00eame pu faire du TDD (Test Driven Developpement). Je suis persuad\u00e9 que cette b\u00eate erreur de planification m'a co\u00fbt\u00e9 tr\u00e8s cher, car ne pas avoir une bonne strat\u00e9gie de tests a d\u00fb me faire perdre un temps fou. Pour conclure, je suis content parce que j'ai r\u00e9ussi \u00e0 rendre un projet qui marche en suivant assez bien le planning, mais il y a des choses que je vais devoir changer dans mes prochains projets. Analyse fonctionnelle Voir \"Manuel Utilisateur\" tout y est indiqu\u00e9 Analyse Organique Outils utilis\u00e9s Visual Studio 2022 \"Logo de Visual Studio 2022\" C'est l'application que j'ai le plus utilis\u00e9, je pense. Visual Studio 2022 est l'IDE officiel de Microsoft pour coder en C#. C'est l'outil que j'utilise depuis maintenant six ans au CFPT et franchement, il fait tout ce que je pourrais vouloir. C'est aussi un outil pratique pour utiliser Windows Forms et faire des applications natives Windows. Pas grand-chose \u00e0 dire \u00e0 ce sujet \u00e0 part que c'est un outil qui marche bien et qui est gratuit si on prend la community \u00e9dition. Visual Studio Code \"Logo de Visual Studio Code\" Cet outil est d\u00e9j\u00e0 un peu plus int\u00e9ressant. C'est le second outil que j'ai le plus utilis\u00e9. J'en ai surtout eu besoin pour \u00e9crire de la doc, mais aussi pour coder en python et pour contr\u00f4ler mkdocs. Visual Studio est un IDE absolument g\u00e9nial qui est tr\u00e8s puissant avec les bonnes extensions. Je l'utilise au quotidien pour tout ce qui est d\u00e9veloppement WEB, Mobile ou pour \u00e9diter des fichiers de configs pour mes drones ou imprimantes 3D. Je peux m\u00eame compiler le firmware pour ces derni\u00e8res en utilisant une extension faite pour. Les possibilit\u00e9s de customisation sont presque infinies et c'est un plaisir d'utiliser ce logiciel gratuit fourni par Microsoft, mais qui est am\u00e9lior\u00e9 constamment par des d\u00e9veloppeurs ind\u00e9pendants. Je conseille \u00e0 n'importe quel d\u00e9veloppeur de l'essayer \u00e0 moins qu'il soit uniquement sur C# ou il serait plus int\u00e9ressant d'utiliser visual studio 2022. Material/Mkdocs/Markdown \"Logo de Mkdocs Materials\" Pendant ce projet, j'ai utilis\u00e9 exclusivement du Markdown avec l'aide de Mkdocs et Materials. Le choix de Markdown a \u00e9t\u00e9 plut\u00f4t simple, c'est une fa\u00e7on facile et efficace de cr\u00e9er de la documentation et on n'avait pas le choix de l'utiliser. On avait \u00e9galement l'obligation (Ou au moins un tr\u00e8s forte incitation) par nos professeurs d'utiliser mkdocs et materials pour que notre documentation ne soit pas simplement une liste de fichiers, mais un joli site dans lequel il est agr\u00e9able de chercher des informations. Mkdocs et Materials sont deux outils vraiment fantastiques, mais je dois avouer que je n'ai pas assez mis de temps pour apprendre tout leur potentiel. Pour moi ce sont simplement des outils et je veux qu'ils marchent. Je ne suis pas forc\u00e9ment du genre \u00e0 aller changer toutes les couleurs et polices pour avoir la doc parfaite, j'ai pr\u00e9f\u00e9r\u00e9 passer du temps sur mon app. Mais m\u00eame si ces outils offrent une customisation tr\u00e8s avanc\u00e9e, il est tr\u00e8s facile de cr\u00e9er un projet simple et j'aime beaucoup cette simplicit\u00e9. J'ai eu pas mal d'aide de la part de M. Briard pour impl\u00e9menter certaines features et je l'en remercie tr\u00e8s chaudement, car sans son aide ce document serait s\u00fbrement un peu moins commode \u00e0 lire (Oui oui \u00e7a aurait pu \u00eatre pire, je sais, c'est dur \u00e0 imaginer). Figma \"Logo de Figma\" Figma est l'outil que j'ai utilis\u00e9 pour cr\u00e9er mon poster et un certain nombre des diagrammes de cette documentation. J'utilise aussi cet outil d\u00e8s que je vais faire des maquettes de sites ou d'applications. D'ailleurs les maquettes dans le cahier des charges ont \u00e9t\u00e9 faites avec. C'est un outil en ligne parfaitement gratuit qui conserve tout dans le cloud. Franchement, je n'ai rien \u00e0 dire, je n'ai pas utilis\u00e9 plus de 15\u2009% des features que cet outil propose et je suis d\u00e9j\u00e0 conquis. Technologies utilis\u00e9es Dans ce projet, diff\u00e9rents choix ont \u00e9t\u00e9 faits pour ce qui est des technologies. Certaines ont \u00e9t\u00e9 choisies, car elles \u00e9taient les plus simples, les plus pratiques, les plus efficaces ou encore les plus connues et donc ayant le meilleur support. Je vais tenter de r\u00e9sumer ici ces choix, mais je reviendrai sur la plupart d'entre eux plus tard quand j'explique ce que je fais avec. Selenium \"Logo de s\u00e9l\u00e9nium\" Selenium est une librairie \u00e0 la base Node JS qui permet d'automatiser des actions sur un navigateur internet. Le but premier et je pense son utilisation premi\u00e8re et l'automatisation de tests pour des applications WEB. En effet, c'est un super outil pour simuler un user faisant un certain nombre d'actions sans apporter de variabilit\u00e9, ce qui fait de super test unitaires. Cependant, je pense que l'autre grande partie des utilisateurs de Selenium l'utilisent pour faire du \"Scrapping\". Et nous sommes un peu dans cette seconde cat\u00e9gorie. Le \"Scrapping\" c'est l'acte d'aller r\u00e9cup\u00e9rer des informations sur des pages web automatiquement pour alimenter sa propre base de donn\u00e9es. En effet, si on arrive \u00e0 passer les protections anti-bot, on peut facilement utiliser Selenium pour scraper tous les sites qui nous passent par la t\u00eate. Le cahier des charges que j'avais en t\u00eate en cherchant une technologie de contr\u00f4le de navigateur internet \u00e9tait le suivant : Simple Permettant de contr\u00f4ler un navigateur Headless (Voir chapitre \"Simuler un navigateur ?\") Permettant de contr\u00f4ler Firefox Ayant un wrapper C# Permettre de changer certaines choses comme les cookies en direct Permettre d'interagir avec les \u00e9l\u00e9ments d'une page Fonctionner Simple, car je ne voulais pas avoir \u00e0 passer trop de temps dessus (\u00e7a n'a pas bien vieilli lol...). Je voulais que l'on puisse utiliser Firefox parce qu'il n'impl\u00e9mente pas les m\u00eames s\u00e9curit\u00e9s que Chrome pour faire simple. J'avais besoin que la lib puisse contr\u00f4ler un Firefox HEADLESS comme je ne voulais pas avoir une page web ouverte sur mon ordi quand je commente, car c'est de l'espace utilis\u00e9 pour rien. J'avais besoin d'un wrapper C# puisque c'est le langage que j'utilise. Pour finir, j'avais besoin d'interagir avec les \u00e9l\u00e9ments de la page pour naviguer dessus et d'ins\u00e9rer des cookies pour me connecter sans avoir \u00e0 passer par le login de la F1TV qui est tr\u00e8s bon pour d\u00e9tecter les bots. Avec un cahier des charges pareil beaucoup de librairies ont \u00e9t\u00e9 abandonn\u00e9es. J'ai pu tester pleins de librairies C# qui arrivaient \u00e0 contr\u00f4ler un Chrome et m\u00eame pas mal qui arrivaient \u00e0 contr\u00f4ler un Chrome Headless. Mais le choix est tr\u00e8s vite restreint quand on veut pouvoir contr\u00f4ler Chrome OU Firefox. \u00c0 la base, mon choix, c'\u00e9tait port\u00e9 sur Puppeteer Sharp qui est une librairie qui se veut \u00eatre exactement ce que je veux. \"Logo de Pupeteer\" Je voulais utiliser cette librairie, car il y a des plugins qui sont tr\u00e8s orient\u00e9s scrapping, en effet, ils impl\u00e9mentent de nombreuses techniques pour permettre de mieux passer inaper\u00e7u par les syst\u00e8mes de d\u00e9tection de bots. Sur le papier, c'est la librairie parfaite qui correspond parfaitement au cahier des charges que je m'\u00e9tais fix\u00e9 et je pense que si j'utilisais un projet JS, elle le serait. Sauf qu'avec le wrapper C# j'ai eu un certain nombre de probl\u00e8mes : Toutes les versions de la librairie ne fonctionnaient pas. Il fallait faire des tests avec diff\u00e9rentes versions de la librairie et de ses d\u00e9pendances simplement pour faire lancer un browser. Et \u00e7a, c'est quand \u00e7a marchait, car il y avait des jours o\u00f9 des machines sur lesquelles je n'ai juste pas pu faire fonctionner la librairie. M\u00eame avec les techniques propos\u00e9es par les plugins \"Stealth\" je n'arrivais pas \u00e0 bypass les s\u00e9curit\u00e9s de la page de login de la F1TV. J'ai essay\u00e9 tout ce que j'ai pu trouver sur internet, mais on se fait toujours chopper d\u00e8s que l'on arrive sur la page. Et le pire de tous, impossible de faire fonctionner une vid\u00e9o. J'ai pu faire tout ce que je voulais faire finalement en passant par l'utillisation de cookies pour la connexion. Tout \u00e7a pour arriver au moment o\u00f9 il faut lancer la vid\u00e9o, et l\u00e0, crash. Impossible de faire fonctionner Puppeteer Sharp avec une vid\u00e9o. D\u00e8s qu'elle se lance, c'est un crash assur\u00e9 sans message d'erreur clair. Et le souci, c'est que le wrapper C# n'est pas vraiment bien support\u00e9 et que si c'est un bug de la lib, je ne risque pas de voir de fix avant un moment si ce n'est jamais. Pour toutes ces raisons, j'ai d\u00fb abandonner cette librairie, ce qui a \u00e9t\u00e9 tr\u00e8s dur, car j'avais pass\u00e9 beaucoup de temps dessus \u00e0 essayer de la faire marcher. Ensuite le choix de Selenium \u00e9tait plut\u00f4t simple, c'\u00e9tait la seule option restante. \u00c0 ce jour, je ne connais aucune autre librairie que Puppeteer ou Selenium qui puisse contr\u00f4ler un Firefox Headless en respectant mon cahier des charges et qui soit donc disponible depuis C#. Si je n'arrivais pas \u00e0 faire fonctionner Selenium, j'aurais d\u00fb abandonner l'id\u00e9e de simuler un navigateur tout simplement. Mais j'ai eu la chance que cette librairie fasse tout ce que je pouvais demander. C'est une super lib et m\u00eame si la version C# n'est vraiment pas bien document\u00e9e, la plupart des documentations de la version JS sont pertinentes pour la version C# m\u00eame si \u00e7a n'est pas la m\u00eame syntaxe. Pour r\u00e9sumer, j'ai choisi Puppeteer car c'\u00e9tait la seule option viable pour mon besoin. (Note : Par contre si je trouve la personne chez Mozilla ou puppeteer qui a d\u00e9cid\u00e9 d'hard coder la r\u00e9solution maximale du browser Headless que l'on peut override UNIQUEMENT en changeant les variables d'environnement de la machine ET DE NE LE DOCUMENTER QUASI NULLE PART JE JURE QUE CA VA TR\u00c8S MAL SE PASSER) CSharp \"Logo C#\" Je pense que c'est le choix le plus simple \u00e0 expliquer. C# est un langage de programmation orient\u00e9 objet relativement haut niveau qui a \u00e9t\u00e9 cr\u00e9\u00e9 par Microsoft et qui a comme cible le d\u00e9veloppement d'applications pour Windows. (On peut \u00e9videmment trouver des adaptations pour le faire tourner sur Linux, mais ce n'est pas vraiment le but du langage) En plus d'\u00eatre un superbe langage de programmation, c'est le langage que l'on apprend au CFPT informatique. C'est donc un langage avec lequel je suis beaucoup plus \u00e0 l'aise que pour d'autres langages comme le Python ou le JS. Mon but n'\u00e9tait pas de faire une application Web et je travaille sous Windows. Je savais que mon projet allait demander un minimum de programmation orient\u00e9e objet. J'ai ainsi imm\u00e9diatement pens\u00e9 \u00e0 utiliser C#. Cependant, j'aurais tr\u00e8s bien pu utiliser un langage comme python qui m'aurait clairement facilit\u00e9 la t\u00e2che avec des librairies bien plus fournies et plus souvent mises \u00e0 jour. Mais comme je ne suis pas du tout aussi \u00e0 l'aise avec, je pense que le C# \u00e9tait la meilleure option. Mes seuls regrets apr\u00e8s coup sont que je trouve les Windows Forms tr\u00e8s moches et qu'il est particuli\u00e8rement difficile de les rendre plus jolies et que les librairies disponibles en C# pour des sc\u00e9narios tr\u00e8s pr\u00e9cis ne sont pas au niveau de celles pour JS et pour Python. Cependant, si j'avais \u00e0 refaire le projet, je reprendrais C# je pense. Python\u202f? \"Logo Python\" Alors ce choix-l\u00e0 est plus compliqu\u00e9 \u00e0 comprendre. Pour tout le projet, j'ai tent\u00e9 de garder le C# comme langage et de ne pas utiliser autre chose. Cependant, j'ai d\u00fb utiliser une seule fois le Python dans un cas tr\u00e8s pr\u00e9cis. Je n'aime vraiment pas coder en python de base et clairement, j'aurais pr\u00e9f\u00e9r\u00e9 ne pas l'utiliser, mais je n'avais pas le choix. Le besoin dans le cas du python \u00e9tait le suivant : J'avais besoin d'un moyen de r\u00e9cup\u00e9rer des strings et les d\u00e9coder avec une cl\u00e9 encod\u00e9e avec le syst\u00e8me propri\u00e9taire de Windows d'encodage. Le souci, c'est que j'avais avec le C# c'est que les m\u00e9thodes de d\u00e9cryptions ne fonctionnent pas pareil qu'en python et tous les exemples que je pouvais trouver \u00e9taient en python. J'ai essay\u00e9 pendant un sacr\u00e9 moment de faire fonctionner la d\u00e9cryptions en C# mais sans succ\u00e8s. J'ai donc directement utilis\u00e9 le python comme faisait toutes les personnes que je pouvais voir sur internet et je pense que \u00e7a n'est pas une mauvaise id\u00e9e. En effet, cela veut dire que si \u00e0 un moment Chrome est mis \u00e0 jour, je n'aurai pas besoin d'aller ouvrir tout le code source de mon projet pour tout recompiler, j'aurai simplement besoin de changer ce script. Un des avantages du Python est quand m\u00eame qu'il y a beaucoup plus de gens qui codent dessus, et pour ce genre d'utilisation tr\u00e8s sp\u00e9cifique, c'est plut\u00f4t pratique. Le seul probl\u00e8me, c'est que cela oblige l'utilisateur \u00e0 avoir python install\u00e9 sur sa machine et que sa version doit \u00eatre compatible... (les joies de python). Firefox \"Logo Firefox Headless\" J'en parle d\u00e9j\u00e0 plus bas, mais le choix de navigateur est super important. D\u00e9j\u00e0 tous les navigateurs n'ont pas un mode Headless (sans t\u00eate, mieux expliqu\u00e9 dans la rubrique \"Simuler un navigateur ?\"). Par exemple, m\u00eame si Edge est maintenant bas\u00e9 sur Chromium, il n'existe pas de moyen de le faire tourner en Headless pour le moment. Autre souci, les librairies d'automatisation ne supportent pas tous les navigateurs. Par exemple, beaucoup supportent chrome, mais tr\u00e8s peu supportent Firefox ou Edge. Donc, il me fallait un navigateur qui puisse op\u00e9rer en Headless et qui soit support\u00e9 par plusieurs librairies d'automatisation. Il n'y a que Firefox et Chrome qui soient conformes \u00e0 ces exigences. (Je n'ai pas v\u00e9rifi\u00e9 pour TOUS les navigateurs. Peut-\u00eatre que les Opera GX ont aussi un mode headless super, mais je me suis concentr\u00e9 sur les navigateurs plus grand public). Chrome est support\u00e9 par plus de lib, mais le souci c'est que la F1TV utilise un lecteur de vid\u00e9o avec DRM (Plus d'infos l\u00e0-dessus dans la partie \"Simuler un navigateur\u202f?\") et donc le choix \u00e9tait simple. Il ne restait que Firefox. Tesseract Je pense que le choix le plus simple apr\u00e8s le C# fut l'utilisation de Tesseract. C'est tout simplement l'outil le plus utilis\u00e9 pour faire de l'OCR. \u00c0 la base, c'est une lib Python (Ah tiens encore ?) qui peut \u00eatre redoutablement efficace avec le bon dataset. Il existe d'autres outils, mais j'ai d\u00e9cid\u00e9 de prendre celui-l\u00e0 \u00e0 cause de son support juste incroyable et de son omnipr\u00e9sence dans la documentation OCR. En plus il est facile \u00e0 utiliser et je ne pense pas encore avoir fait le tour de tout son potentiel dans ce projet. Fonctionnement g\u00e9n\u00e9ral Avant de passer \u00e0 l'explication de chaque partie du projet en d\u00e9tail, je pense qu'il est important de faire un petit point sur comment toutes les parties du projet s'emboitent et fonctionnement ensemble. Comme \u00e7a, quand vous lirez l'explication d'une \u00e9tape, vous serez conscient de \u00e0 quoi elle sert, et o\u00f9 elle s'inscrit dans le projet principal. Les briques principales Voici trois grosses \u00e9tapes du projet. Pour rappel, ce sont des vulgarisations plut\u00f4t larges qui n'ont qu'un seul but, aider \u00e0 la compr\u00e9hension de ce qui vient par la suite. R\u00e9cup\u00e9ration d'images \"Diagramme simplifi\u00e9 repr\u00e9sentant le processus de r\u00e9cup\u00e9ration des images\" Pour faire simple, on peut voir qu'il y a deux parties \u00e0 cette \u00e9tape. La premi\u00e8re en partant du haut repr\u00e9sente un script python qui va chercher des informations dans la base de donn\u00e9es de Chrome qui est en SQLite. Ces informations dans notre cas sont les cookies de connexion. Dans la seconde \u00e9tape, on peut voir que le programme utilise Selenium avec un navigateur Firefox Headless qui va aller communiquer avec la F1TV qui est le site web qui nous int\u00e9resse et qu'une des infos que l'on r\u00e9cup\u00e8re est une image de la page en format PNG que l'on envoie au programme C#. Ces deux parties sont li\u00e9es, car pour se connecter \u00e0 la F1TV Selenium a besoin des cookies de connexion r\u00e9cup\u00e9r\u00e9s par le programme Python. La premi\u00e8re partie est un processus qui n'est utilis\u00e9 qu'une seule fois au d\u00e9marrage tandis que la r\u00e9cup\u00e9ration d'images et en continu pendant toute la dur\u00e9e de l'utilisation de l'application. OCR \"Diagramme simplifi\u00e9 repr\u00e9sentant le processus d'OCR\" ; On peut voir dans ce diagramme simplifi\u00e9 qu'avec l'aide de ce que contient le fichier \"Config.JSON\" on d\u00e9coupe l'image que l'on a r\u00e9cup\u00e9r\u00e9 au pr\u00e9alable en petits morceaux qui contiennent des informations. Ensuite, on prend cette image et on lui applique un filtre pour retirer le flou, la couleur, etc. Puis en utilisant de l'OCR (Optical Character Recognition) on en r\u00e9cup\u00e8re les informations sous forme de texte et on le renvoie dans le programme C# Dans cette partie explicative g\u00e9n\u00e9rale, on ne reviendra pas sur la cr\u00e9ation de ce fichier config. Pour plus d'infos \u00e0 son sujet, voir la rubrique (OCR/Fonctionnement g\u00e9n\u00e9ral) Traitement et affichage \"Diagramme simplifi\u00e9 repr\u00e9sentant le processus de traitement et d'affichage\" On peut voir dans ce dernier mini diagramme simplifi\u00e9 qu'on prend les donn\u00e9es que l'on r\u00e9cup\u00e9rait de l'\u00e9tape pr\u00e9c\u00e9dente qui ne sont pas forc\u00e9ment toutes coh\u00e9rentes et qu'on les traite pour leur redonner du sens avant de les stocker dans une base de donn\u00e9es SQLITE. Ensuite cette m\u00eame base de donn\u00e9e fournis les infos n\u00e9cessaires pour des affichages (Ces affichages sont directement r\u00e9cup\u00e9r\u00e9s depuis le projet en cours de fonctionnement). R\u00e9sum\u00e9 du fonctionnement g\u00e9n\u00e9ral \"Diagramme simplifi\u00e9 repr\u00e9sentant le processus global du projet\" Ce dernier diagramme est un sch\u00e9ma fait pour repr\u00e9senter de la mani\u00e8re la plus simple possible toutes les briques du projet et comment elles s'imbriquent ensemble. La repr\u00e9sentation est un peu diff\u00e9rente des trois autres diagrammes, car le but ici est surtout de montrer le chemin que fait la donn\u00e9e \u00e0 travers les couches. Toutes les parties du projet ne sont pas incluses, notamment la partie calibration dans un objectif de simplifier la lecture. Dans l'ordre, on peut voir que pour la partie r\u00e9cup\u00e9ration d'images, le python va r\u00e9cup\u00e9rer les cookies dans la base de donn\u00e9es chrome pour ensuite les retourner \u00e0 Selenium. Selenium va ensuite pouvoir lancer un navigateur (en l'occurrence Firefox) et utiliser les cookies r\u00e9cup\u00e9r\u00e9s pour aller sur la page de la F1TV qui va retourner un certain nombre d'infos \u00e0 Selenium. L'info qui nous int\u00e9resse le plus depuis Selenium ce sont les images de la page data de la F1Tv et ce sont elles que l'on va envoyer dans la partie LOAD du diagramme. Dans cette partie, on prend l'image de la F1TV et on la d\u00e9coupe selon les directives donn\u00e9es par le fichier Config.JSON (il renseigne les zones \u00e0 d\u00e9couper et ce qu'elles repr\u00e9sentent) et apr\u00e8s le d\u00e9coupage, on se retrouve avec une zone principale, vingt zones de pilotes et 9 fen\u00eatres de donn\u00e9es par zone de pilote donc 180 fen\u00eatres en tout. Ces fen\u00eatres sont ensuite envoy\u00e9es pour \u00eatre filtr\u00e9es (retirer le flou, mettre en \u00e9vidence les caract\u00e8res, en gros les pr\u00e9parer pour la reconnaissance) dans la partie OCR Dans cette partie, apr\u00e8s avoir filtr\u00e9 les images, on les envoie \u00e0 Tesseract pour qu'il nous retourne des r\u00e9sultats d'OCR. Ces r\u00e9sultats sont ce que Tesseract a trouv\u00e9 sur les images et ils sont retourn\u00e9s sous la forme de Data Pilote. Ex (Position : 1,Tour : 45, Temps au tour : 1:34.683, Pneus : Medium etc....) Finalement, ces donn\u00e9es ont envoy\u00e9es dans la partie traitement qui va faire des v\u00e9rifications d'usage pour s'assurer qu'elles sont correctes et quand c'est fait, tout est envoy\u00e9 dans une base de donn\u00e9es SQLite. On ne montre pas non plus dans ce diagramme la parte affichage des donn\u00e9es, car je ne trouve pas pertinent de l'inclure ici. Et voil\u00e0, c'est le fonctionnement tr\u00e8s g\u00e9n\u00e9ral et simplifi\u00e9 de l'application. Je vous invite \u00e0 continuer \u00e0 lire cette documentation pour des informations plus pr\u00e9cises \u00e0 propos de toutes ces \u00e9tapes. Bonne lecture ! R\u00e9cup\u00e9ration des images Voici la premi\u00e8re grande \u00e9tape du projet. Pour rappel, Amazon h\u00e9berge directement le site de la F1TV et poss\u00e8de les droits sur les donn\u00e9es de la F1. C'est sous le nom de AWS (le service d'h\u00e9bergement d'Amazon) que la firme apparait en tant que sponsor. On peut voir ce nom appara\u00eetre assez souvent quand on regarde un Grand Prix, car comme ils ont la mainmise sur les donn\u00e9es, ils peuvent ins\u00e9rer des bandeaux d'informations sur le flux public sur ce qu'il se passe, voir m\u00eame faire des pr\u00e9dictions (Bien qu'un peu bancales) \"Exemple insertion AWS en GP\" Ce service s'appelle F1 Insights (Oui, c'est un meilleur nom de projet que F1 Compagnon, mais bon) et c'est, je pense, la raison pour laquelle on ne voit aucune API publique qui permette de correctement se renseigner en donn\u00e9es en direct pendant un Grand Prix. Ils ont d\u00fb d\u00e9gotter un juteux contrat pour s'occuper de toute l'infrastructure digitale de la F1 (du moins publique) en \u00e9change d'une exclusivit\u00e9 totale sur certaines choses comme les Data. \"Exemple data d'AWS\" \u00c9videmment, je ne fais que conjecturer et ce que j'ai dit n'est pas \u00e0 prendre au pied de la lettre, mais c'est une explication possible, je pense, de pourquoi il est si difficile de trouver des donn\u00e9es sur la F1 facilement en temps r\u00e9el. Il existe bien quelques API un peu bancales publiques, mais le probl\u00e8me, c'est qu'elles ne sont vraiment pas suffisantes et je ne peux pas leur faire confiance quand je commente. Ce qu'il m'aurait fallu, c'est une API publique et officielle qui me permette d'\u00eatre s\u00fbr que les donn\u00e9es sont les bonnes et qu'elles arrivent le plus vite possible. On pourrait croire que c'est impossible, car cela n'existe pas comme je l'ai dit MAIS ! Ce n'est pas compl\u00e8tement vrai. En effet, depuis que je poss\u00e8de un abonnement \u00e0 la F1TV, il existe une source d'informations tr\u00e8s pr\u00e9cieuse qui m'aide \u00e9norm\u00e9ment dans mon quotidien de commentateur de Formule 1. La \"DATA CHANNEL\". La Data Channel est une page de la F1TV qui permet, pour chaque Grand Prix, de visualiser, sous la forme d'un flux vid\u00e9o, diff\u00e9rentes informations capitales sur la course. \"Exemple de Data Channel\" Le probl\u00e8me, c'est que comme je viens de le dire, ces donn\u00e9es ne sont pas accessibles comme un tableau HTML ou un flux RSS ou un tableau JSON. C'est un flux vid\u00e9o. Il faut savoir qu'entretenir une diffusion de flux vid\u00e9o en 1080P pendant deux heures accessible par des milliers d'abonn\u00e9s est EXTR\u00caMENT cher, surtout quand on le compare \u00e0 simplement afficher les donn\u00e9es dans un tableau. Ce qui veut dire que ce choix est d\u00e9lib\u00e9r\u00e9 et a un sens au niveau \u00e9conomique. Je pense donc que c'est justement pour \u00e9viter que des petits malins puissent juste venir scraper l'int\u00e9gralit\u00e9 des donn\u00e9es qu'ils proposent et fasse sa propre API. (C'est d'ailleurs un des sites avec la meilleure protection anti-bot du monde) MAIS ce n'est pas par ce que les donn\u00e9es ne sont pas faciles \u00e0 avoir qu'elles sont IMPOSSIBLE \u00e0 avoir. Et c'est l\u00e0 que ce projet entre en jeu. Mais pour d\u00e9coder les donn\u00e9es d'une image, il faut d'abord ... (roulement de tambours) ... Avoir des images ! Et c'est l\u00e0 que vient se glisser cette partie du projet. Comment faire ? Le but de ce segment est de se concentrer sur la r\u00e9cup\u00e9ration et la mise \u00e0 disposition, pour le reste du programme, des images en direct de la F1TV dans la meilleure qualit\u00e9 possible et dans les meilleurs d\u00e9lais. Pour ce faire, il y a plusieurs solutions : Reverse engeneer la F1TV pour acc\u00e9der directement au flux sans passer par la plateforme internet et pouvoir prendre images \u00e0 volont\u00e9. Avoir tout simplement une page de la F1TV ouverte sur un \u00e9cran et prendre des screenshots \u00e0 intervalles r\u00e9guliers. Simuler un navigateur internet sans qu'il soit affich\u00e9 et le contr\u00f4ler automatiquement pour qu'il prenne des captures. La premi\u00e8re option aurait \u00e9t\u00e9 la plus \u00e9l\u00e9gante, mais lors d'un POC que je tentais de r\u00e9aliser, je me suis rendu compte que cela serait un peu trop compliqu\u00e9 et long \u00e0 faire. Sans compter le fait que les rediffusions de Grand Prix ne sont pas g\u00e9r\u00e9es de la m\u00eame mani\u00e8re que les diffusions en direct. Et que pour faire des Tests en direct, il faudrait attendre \u00e0 chaque fois un weekend de Grand Prix et le faire en plus du commentaire que je dois produire. Pour toutes ces raisons et bien d'autres, je l'ai rang\u00e9e dans la case \"Trop dur, Trop chiant, S\u00fbrement ill\u00e9gal\" (Oui, je sais, c'est une cat\u00e9gorie bien sp\u00e9cifique, mais c'est ma documentation, je fais ce que je veux). La troisi\u00e8me option aurait \u00e9t\u00e9 la plus simple (et moins dr\u00f4le) et je suis presque s\u00fbr que je peux impl\u00e9menter cette derni\u00e8re en moins d'une apr\u00e8s-midi. Sauf qu'elle apporte de gros soucis. On ne peut pas garantir l'int\u00e9grit\u00e9 et la continuit\u00e9 des donn\u00e9es si l'utilisateur avance ou fait pause, m\u00eame par simple inadvertance. La moindre fen\u00eatre qui s'afficherait devant ruinerait toute la reconnaissance de caract\u00e8res. On ne peut pas contr\u00f4ler la qualit\u00e9 du flux et on est oblig\u00e9 de faire confiance en l'utilisateur On ne peut pas vraiment automatiser quoi que ce soit niveau tests ou m\u00eame pour faire du scrapping auto pour remplir une base de donn\u00e9e. Et finalement le pire inconv\u00e9nient : C'EST NUL ! Je ne pourrais jamais utiliser un projet qui fonctionne de cette fa\u00e7on, je ne peux pas me permettre d'avoir un \u00e9cran inutilisable quand je commente et auquel je dois constamment faire attention pour ne pas perturber la reconnaissance. Pour moi, cette option aurait \u00e9t\u00e9 celle \u00e0 choisir en cas d'extr\u00eame urgence et en dernier recours, car le projet deviendrait inutile. J'ai donc d\u00e9cid\u00e9 de m'occuper de la seconde option : Simuler un navigateur. Cette option, bien que complexe et difficile \u00e0 impl\u00e9menter, propose une solution \u00e0 tous les probl\u00e8mes et permet une r\u00e9cup\u00e9ration quasi sans compromis. Simuler un navigateur ? \"Navigateur Headless (sans t\u00eate)\" Simuler un navigateur internet n'est pas forc\u00e9ment tr\u00e8s difficile. Chromium par exemple offre une panoplie d'outils natifs et \u00e9norm\u00e9ment de librairies existent permettant de facilement et en quelques lignes simuler un Google Chrome et le contr\u00f4ler sans afficher son UI (Interface Utilisateur). \"Chromium logo\" Cependant, La F1TV n'utilise pas simplement un player HTML5 basique. Elle utilise un service de streaming Bit Movin qui permet de fournir un stream de bonne qualit\u00e9 et surtout qui impl\u00e9mente les DRM (Digital Right Management). Cela veut dire que quand on ouvre un flux de la F1TV sur chrome et que l'on essaie de prendre une capture d'\u00e9cran, le player se met en noir et ne permet pas de voir quoi que ce soit (Certaines versions de Chrome le permettent pendant quelques semaines avant de bloquer \u00e0 nouveau). Ce qui dans notre cas est un immense probl\u00e8me. Mais Firefox ne nous bloque pas de cette fa\u00e7on et il est donc assez facile de passer outre. L'explication sans trop rentrer dans les d\u00e9tails est la suivante : Dans Chrome, le player par d\u00e9faut utilise une technologie appel\u00e9e \"PCP\" ou \"Protected Content Playback\" qui leur permet de bloquer au moins une partie des techniques de r\u00e9cup\u00e9ration du flux vid\u00e9o et audio. Cependant, Firefox de pas sa nature Open Source utilise \"Open H264\" pour lire ces m\u00eames flux soumis \u00e0 des DRM et Open H264 n'impl\u00e9mente pas les m\u00eames restrictions. Sauf que Firefox n'est pas aussi facilement \u00e9mul\u00e9 que chrome et cela r\u00e9duit notre choix de librairies \u00e0 ... Une seule\u2026 Qui est Selenium. (Il existe aussi Pupetteer C# mais j'ai rencontr\u00e9 \u00e9norm\u00e9ment de soucis avec cette derni\u00e8re d\u00e8s que je voulais lancer une vid\u00e9o) \"Firefox dev logo\" Mais m\u00eame si la documentation est plut\u00f4t maigre parfois, c'est une bonne librairie qui permet de tr\u00e8s bien contr\u00f4ler une instance de chrome ou de Firefox. Contr\u00f4ler le navigateur Maintenant que l'on sait quel navigateur simuler et avec quelle technologie, on peut passer \u00e0 la r\u00e9alisation. Ce qu'il y a de bien avec Selenium, c'est qu'on a un certain nombre de commandes tr\u00e8s haut niveau qui nous permettent de contr\u00f4ler un navigateur de mani\u00e8re plut\u00f4t pr\u00e9cise. Je vais d\u00e9crire ici la proc\u00e9dure habituelle utilis\u00e9e sous une forme de recette de cuisine pour que l'on puisse simplement comprendre ce qu'il se passe. Durant cette explication, je vais parler \u00e0 un moment de Cookies, ne vous en faites pas, c'est le sous-chapitre suivant qui va vous en parler. Recette de cuisine pour r\u00e9cup\u00e9rer des images de la F1TV : D\u00e9marrer une instance de navigateur avec les bons arguments Ajouter les bons param\u00e8tres pour ne pas se faire flag comme un bot Naviguer sur la page de la F1TV Ajouter les cookies de connexion pour avoir acc\u00e8s au contenu de la page Naviguer sur la page du Grand Prix demand\u00e9 Attendre un peu que la page se charge Cliquer sur l'invite de cookies Attendre cinq secondes le temps que la page se reload Cliquer sur le bouton qui permet de passer du feed live \u00e0 la DATA CHANNEL Appuyer sur Espace pour faire apparaitre le bouton d'acc\u00e8s au param\u00e8tres Cliquer sur le menu d\u00e9roulant des r\u00e9solutions Trouver l'option 1080P et la s\u00e9lectionner Cliquer sur le bouton qui met la vid\u00e9o en plein \u00e9cran Prendre de screenshots \u00e0 intervalles r\u00e9guliers Pour faire toutes ces actions, on doit r\u00e9cup\u00e9rer les \u00e9l\u00e9ments selon leur ID ou leur classe. Voici un exemple qui r\u00e9cup\u00e8re le bouton de plein \u00e9cran et qui clique dessus : IWebElement fullScreenButton = Driver . FindElement ( By . ClassName ( \"bmpui-ui-fullscreentogglebutton\" )); fullScreenButton . Click (); \u00c7a peut para\u00eetre plut\u00f4t simple dit comme \u00e7a et quand tout fonctionne \u00e7a l'est, mais la difficult\u00e9 vient du fait qu'\u00e0 peu pr\u00e8s n'importe laquelle de ces \u00e9tapes peut rater et qu'il faut donc faire un bon syst\u00e8me de gestion d'erreurs qui puisse aider l'utilisateur en cas de probl\u00e8me. Parfois, il est aussi difficile de trouver un \u00e9l\u00e9ment selon son ID, sa classe, ou sa value. Par exemple, l'option qui permet de passer en 1080P peut avoir comme value 1080_9011456 ou 1080_9011200 si on refresh la page. Cela demande de passer par des expressions r\u00e9guli\u00e8res, ce qui n'est pas compliqu\u00e9 en soi, mais ce sont toutes ces petites choses qui rendent le processus long \u00e0 mettre en place. Il faut dire aussi que les sites ne sont pas forc\u00e9ment tr\u00e8s contents de voir des bots passer, car cela peut \u00eatre un risque de DDOS et de Scraping (Comme moi) et donc ils mettent en place des syst\u00e8mes pour nous emp\u00eacher de faire ce que l'on veut. On peut utiliser diff\u00e9rentes techniques pour passer outre ces restrictions comme : Changer son User Agent Changer sa r\u00e9solution Ne pas avoir des patterns trop pr\u00e9visibles Avoir un historique Ne pas cliquer pile sur le milieu des boutons Ne pas cliquer trop vite Passer par un proxy pour ne pas se faire flag Utiliser des librairies plus discr\u00e8tes J'ai eu l'occasion de tester toutes ces m\u00e9thodes pour tenter de passer derri\u00e8re les radars de la F1TV et visiblement, j'ai r\u00e9ussi pour les pages principales, mais pas pour les pages de Login. Il faut savoir que la bataille entre bots et propri\u00e9taires de sites est un grand jeu du chat et de la souris et que les plateformes innovent constamment leur s\u00e9curit\u00e9. Et il se trouve que la partie login de la F1TV est h\u00e9berg\u00e9e autre part que le reste du site chez Amazon et qu'elle poss\u00e8de les meilleures s\u00e9curit\u00e9s que j'aie pu voir. Aucunes des m\u00e9thodes que j'ai cit\u00e9es et d'autres encore que j'ai essay\u00e9 n'ont r\u00e9ussi \u00e0 fourvoyer le syst\u00e8me. J'ai donc \u00e9t\u00e9 oblig\u00e9 de faire appel \u00e0 la connexion par Cookies pour pouvoir acc\u00e9der au reste du site internet. R\u00e9cup\u00e9rer les cookies ? Alors, on va mettre de c\u00f4t\u00e9 toutes les questions de s\u00e9curit\u00e9 et de violation de la vie priv\u00e9e et de protection des donn\u00e9es des utilisateurs pour ce chapitre. Car pour faire simple, je siphonne TOUS les cookies de la personne qui utilise mon app. Alors \u00e9videmment \u00e7a n'est pas pour faire des b\u00eatises avec et c'est pour une \"bonne\" raison, mais bon quand m\u00eame \u00e7a peut faire bizarre comme \u00e7a. Je pense que vous savez d\u00e9j\u00e0 ce qu'est un Cookie, mais je vais malgr\u00e9 tout faire un petit point l\u00e0-dessus, car c'est important pour la suite. Quand on va sur un site internet et que l'on se connecte avec nos identifiants, nous sommes connect\u00e9s sur la session. Cependant, si on quitte le site ou que l'on ferme le navigateur, le site ne peut pas garder en m\u00e9moire que c'est bien vous quand le lendemain, vous retournez dessus. Pour palier \u00e0 cette limitation, on a invent\u00e9 cette chose magnifique (hem...) que sont les cookies ! Les cookies sont des petits fichiers qui sont stock\u00e9s dans votre navigateur et qui peuvent servir \u00e0 beaucoup de choses comme traquer votre activit\u00e9 sur internet et espionner un peu ou aussi par exemple, servir de jeton de connexion. L'id\u00e9e est que quand vous vous connectez sur le site avec vos identifiants, le site envoie un petit fichier dans votre navigateur qui va servir de jeton. Et donc lorsque vous reviendrez, le site pourra voir que vous avez le jeton et vous connectera automatiquement. \u00c7a peut para\u00eetre g\u00e9nial, et c'est effectivement bien pratique, cependant ce n'est pas sans risques. En effet, imaginons qu'un acteur malveillant parvienne \u00e0 s'emparer de ces petits fichiers, il pourrait ainsi facilement se faire passer pour vous. Alors un cookie expire \u00e0 un moment donn\u00e9 pour temp\u00e9rer les risques, mais ils sont toujours pr\u00e9sents. Dans notre cas, on peut vite comprendre pourquoi cela peut \u00eatre int\u00e9ressant de r\u00e9cup\u00e9rer ces cookies. En effet, si on peut mettre la main sur le jeton de connexion de l'utilisateur de notre application. On pourra se connecter automatiquement \u00e0 la F1TV et aller prendre des photos directement sans que l'utilisateur ait \u00e0 faire quoi que ce soit. Sauf que les cookies ne sont pas stock\u00e9s en clair comme \u00e7a. \u00c9videmment, Google Chrome a mis en place quelques techniques pour \u00e9viter que n'importe qui puisse s'amuser \u00e0 aller taper dans les cookies de la machine. Tous les cookies sont stock\u00e9s dans une base de donn\u00e9es SQLite avec les noms en clair et les valeurs sont encrypt\u00e9es en utilisant la m\u00e9thode AES 256 qui est une m\u00e9thode de cryptage tr\u00e8s utilis\u00e9e et efficace. Tellement efficace qu'il serait compl\u00e8tement inutile de tenter de les d\u00e9crypter en utilisant de la force brute pour trouver la valeur ou m\u00eame une attaque de dictionnaire ou quoi que ce soit. Si ces valeurs peuvent \u00eatre encod\u00e9es et d\u00e9cod\u00e9es en local sur la machine sans connexion internet, cela veut dire que la cl\u00e9 est stock\u00e9e sur la machine. Et si je peux mettre l\u00e0, mais sur cette cl\u00e9, alors je pourrai lire tous les cookies de la machine. Cette cl\u00e9 est stock\u00e9e dans les fichiers de Google Chrome sous Google\\Chrome\\User Data\\Local State . Et dans ce fichier, on peut trouver une liste de donn\u00e9es en cl\u00e9 valeurs et on peut trouver la cl\u00e9 sous os_crypt encrypted_key . On pourrait croire que l'on a d\u00e9j\u00e0 touch\u00e9 le jackpot, mais il reste encore une \u00e9tape. Cette cl\u00e9 est crypt\u00e9e en utilisant le syst\u00e8me d'encryption de Windows. Cette encryption est utilis\u00e9e pour emp\u00eacher des utilisateurs non connect\u00e9s d'acc\u00e9der \u00e0 certaines donn\u00e9es. Mais comme nous sommes connect\u00e9s, nous pouvons facilement utiliser les librairies de d\u00e9cryptions pour trouver la valeur de cette cl\u00e9. Et \u00e0 partir de l\u00e0, il suffit d'utiliser cette cl\u00e9 pour d\u00e9crypter tous les cookies de la machine pour aller chercher ceux qui nous int\u00e9ressent. Voici un exemple du code python qui permet d'aller chercher la cl\u00e9 d'encryption dans les fichiers de Google Chrome : def get_master_key (): with open ( os . getenv ( \"localappdata\" ) + \" \\\\ Google \\\\ Chrome \\\\ User Data \\\\ Local State\" , \"r\" ) as f : local_state = f . read () local_state = json . loads ( local_state ) master_key = base64 . b64decode ( local_state [ \"os_crypt\" ][ \"encrypted_key\" ]) master_key = master_key [ 5 :] # removing DPAPI master_key = win32crypt . CryptUnprotectData ( master_key , None , None , None , 0 )[ 1 ] print ( \"MASTER KEY :\" ) print ( master_key ) print ( len ( master_key )) return master_key Python ?? Et oui j'ai choisit d'utiliser un srypt python pour aller chercher les cookies. Ce choix a \u00e9t\u00e9 fait pour trois raisons : Le python est un language que je n'aime pas particuli\u00e8rement mais qui poss\u00e8de un \u00e9ventail de librairies absolument fantastique. Et pour ce genre de choses qui demandent une constante mise \u00e0 jour des librairies et qui sont un peu niches le python est une option juste g\u00e9niale. Comme c'est une des parties qui est le plus suceptible de changer vu que Chrome change relativement souvent le syst\u00e8me de stockage des cookies. Dans une optique de facilit\u00e9 de maintenance, avoir un seul fichier qui concerne cette partie du projet et qui est dans un language que plus de gens maitrisent que C# est pratique. Je n'ai pas r\u00e9ussi \u00e0 trouver de librairies C# qui me donne des r\u00e9sultats identiques \u00e0 celles que j'utilise dans ce script python. Pour faire la liaison entre le C# et le python, j'appelle le script depuis mon C# et ensuite le python s'occupe de mettre tous les cookies dans un CSV qui est ensuite lu depuis le C#. Voici la partie python qui \u00e9crit dans le csv : if not cookies_path . exists (): raise ValueError ( \"Cookies file not found\" ) with sqlite3 . connect ( cookies_path ) as connection : connection . row_factory = sqlite3 . Row cursor = connection . cursor () cursor . execute ( \"SELECT * FROM cookies\" ) with open ( 'cookies.csv' , 'a' , newline = '' ) as csvfile : fieldnames = [ 'host_key' , 'name' , 'value' , 'path' , 'expires_utc' , 'is_secure' , 'is_httponly' ] writer = csv . DictWriter ( csvfile , fieldnames = fieldnames ) if csvfile . tell () == 0 : writer . writeheader () for row in cursor . fetchall (): decrypted_value = decrypt_password ( row [ \"encrypted_value\" ], master_key ) writer . writerow ({ 'host_key' : row [ \"host_key\" ], 'name' : row [ \"name\" ], 'value' : decrypted_value , 'path' : row [ \"path\" ], 'expires_utc' : row [ \"expires_utc\" ], 'is_secure' : row [ \"is_secure\" ], 'is_httponly' : row [ \"is_httponly\" ] }) print ( \"Finished CSV\" ) Et la partie C# qui appelle le script et qui lit le CSV : private void StartCookieRecovering () { string scriptPath = PYTHON_COOKIE_RETRIEVAL_FILENAME ; Process process = new Process (); process . StartInfo . FileName = \"python.exe\" ; process . StartInfo . Arguments = scriptPath ; process . StartInfo . UseShellExecute = false ; process . StartInfo . RedirectStandardOutput = true ; process . Start (); string output = process . StandardOutput . ReadToEnd (); process . WaitForExit (); } public string GetCookie ( string host , string name ) { StartCookieRecovering (); string value = \"\" ; List < Cookie > cookies = new List < Cookie >(); using ( var reader = new StreamReader ( COOKIES_CSV_FILENAME )) { // Read the header row and validate column order string header = reader . ReadLine (); string [] expectedColumns = { \"host_key\" , \"name\" , \"value\" , \"path\" , \"expires_utc\" , \"is_secure\" , \"is_httponly\" }; string [] actualColumns = header . Split ( ',' ); for ( int i = 0 ; i < expectedColumns . Length ; i ++) { if ( expectedColumns [ i ] != actualColumns [ i ]) { throw new InvalidOperationException ( $\"Expected column '{expectedColumns[i]}' at index {i} but found '{actualColumns[i]}'\" ); } } // Read each data row and parse values into a Cookie object while (! reader . EndOfStream ) { string line = reader . ReadLine (); string [] fields = line . Split ( ',' ); string hostname = fields [ 0 ]; string cookieName = fields [ 1 ]; if ( hostname == host && cookieName == name ) { value = fields [ 2 ]; } } } return value ; } Maintenant que l'on sait comment simuler et manipuler un navigateur internet, que l'on sait comment se connecter sur le compte F1TV de l'utilisateur sans qu'il n\u2019aie rien \u00e0 faire. On a tous les ingr\u00e9dients pour automatiquement r\u00e9cup\u00e9rer des images de la F1TV du Grand Prix que l'on souhaite. Calibration Maintenant que l'on a des images de la page Data de la F1TV, on pourrait croire que c'est tout bon, on peut direct passer \u00e0 la partie OCR. Mais que nenni ! Le gros souci de l'OCR c'est que sa pr\u00e9cision est grandement r\u00e9duite d\u00e8s que l'on augmente la taille de la zone de recherche. M\u00eame simplement deux mots sur une image, si on les prend dans les images individuelles, on a de grandes chances de trouver quelque chose, mais si on les met les deux sur la m\u00eame et qu'on tente l'OCR, on va avoir de r\u00e9sultats bien moins bons. Et puis il faut aussi voir que selon les donn\u00e9es que je cherche, je ne peux pas faire le m\u00eame traitement. Par exemple, savoir si le DRS est allum\u00e9, savoir quels pneus chausse un pilote et depuis combien de tours et savoir quel est le temps de son dernier tour, ce sont des informations qui demandent des traitements qui n'ont rien \u00e0 voir. Il faut donc pouvoir dire au programme d'OCR ou se trouvent les informations et quelle est leur nature pour qu'il puisse les d\u00e9coder. Il faut donc faire une calibration qui puisse donner toutes les infos importantes, mais qui en m\u00eame temps soit facile \u00e0 utiliser, car un utilisateur doit \u00eatre capable de le faire assez facilement. Voici la liste des informations que l'on doit r\u00e9cup\u00e9rer : La liste des pilotes pr\u00e9sents sur le Grand Prix La position de la zone principale La position de chaque zone de pilote La position de toutes les Windows sur chaque zone de pilote Le but a \u00e9t\u00e9 de retirer le plus d'\u00e9tapes possibles \u00e0 l'utilisateur. Techniquement, j'aurais pu faire une version compl\u00e8tement manuelle, mais \u00e7a aurait pris trop de temps, alors il y a des syst\u00e8mes qui permettent de rendre cette t\u00e2che moins p\u00e9nible. Liste des pilotes Pour la liste des pilotes, j'ai pens\u00e9 \u00e0 utiliser une API externe pour avoir une liste dans laquelle on pourrait s\u00e9lectionner des noms de pilotes, sauf que j'ai abandonn\u00e9 l'id\u00e9e, car je trouvais que le projet avait d\u00e9j\u00e0 bien assez de points qui d\u00e9pendent de l'ext\u00e9rieur. Il y a donc une liste de pilotes dans laquelle on peut ajouter ou supprimer des noms de pilotes. L'id\u00e9al serait de mettre tous les pilotes de r\u00e9serve, comme \u00e7a si un pilote est malade sur une course, on n'a pas besoin de venir changer la liste. Zone principale Pour la zone principale, c'est enti\u00e8rement manuel, on attend de l'utilisateur deux points x, y sur l'image pour ensuite avoir une id\u00e9e d'o\u00f9 est cens\u00e9 se trouver la zone. \"Exemple de zone principale\" Zones pilotes C'est l\u00e0 que \u00e7a devient int\u00e9ressant. L'utilisateur n'a pas besoin de faire quoi que ce soit pour que le programme sache o\u00f9 sont les zones des pilotes. J'aurais pu le faire manuellement en faisant choisir \u00e0 l'utilisateur de donner deux points qui correspondent \u00e0 la premi\u00e8re zone et extrapoler pour en avoir 20. Sauf que si l'utilisateur n'est pas pr\u00e9cis au pixel pr\u00e8s (et m\u00eame comme \u00e7a parfois) le vingti\u00e8me pilote se retrouve avec une zone compl\u00e8tement d\u00e9sax\u00e9e. L\u00e0, le programme va \"simplement\" effectuer une reconnaissance de texte sur toute l'image. Les r\u00e9sultats ne nous int\u00e9ressent pas vraiment, tout ce que l'on veut, c'est la position des textes. Avec les positions, il est facile de d\u00e9terminer o\u00f9 sont toutes les zones de pilotes et donc sans que l'utilisateur ait \u00e0 toucher quoi que ce soit, d\u00e8s qu'il a donn\u00e9 les infos pour la zone principale, les zones de pilotes sont d\u00e9termin\u00e9es. \"Exemple zone pilote\" Voici un exemple du code utilis\u00e9 pour trouver ou dessiner des zones de pilotes : public void AutoCalibrate () { List < Rectangle > detectedText = new List < Rectangle >(); List < Zone > zones = new List < Zone >(); TesseractEngine engine = new TesseractEngine ( Window . TESS_DATA_FOLDER . FullName , \"eng\" , EngineMode . Default ); Image image = MainZone . ZoneImage ; var tessImage = Pix . LoadFromMemory ( Window . ImageToByte ( image )); Page page = engine . Process ( tessImage ); using ( var iter = page . GetIterator ()) { iter . Begin (); do { Rect boundingBox ; if ( iter . TryGetBoundingBox ( PageIteratorLevel . Word , out boundingBox )) { //var text = iter.GetText(PageIteratorLevel.Word).ToUpper(); //We remove all the rectangles that are definitely too big if ( boundingBox . Height < image . Height / NUMBER_OF_DRIVERS ) { //Now we add a filter to only get the boxes in the right because they are much more reliable in size if ( boundingBox . X1 > image . Width / 2 ) { //Now we check if an other square box has been found roughly in the same y axis bool match = false ; //The tolerance is roughly half the size that a window will be int tolerance = ( image . Height / NUMBER_OF_DRIVERS ) / 2 ; foreach ( Rectangle rect in detectedText ) { if ( rect . Y > boundingBox . Y1 - tolerance && rect . Y < boundingBox . Y1 + tolerance ) { //There already is a rectangle in this line match = true ; } } //if nothing matched we can add it if (! match ) detectedText . Add ( new Rectangle ( boundingBox . X1 , boundingBox . Y1 , boundingBox . Width , boundingBox . Height )); } } } } while ( iter . Next ( PageIteratorLevel . Word )); } //DEBUG int i = 1 ; foreach ( Rectangle Rectangle in detectedText ) { Rectangle windowRectangle ; Size windowSize = new Size ( image . Width , image . Height / NUMBER_OF_DRIVERS ); Point windowLocation = new Point ( 0 , ( Rectangle . Y + Rectangle . Height / 2 ) - windowSize . Height / 2 ); windowRectangle = new Rectangle ( windowLocation , windowSize ); //We add the driver zones Zone driverZone = new Zone ( MainZone . ZoneImage , windowRectangle , \"DriverZone\" ); MainZone . AddZone ( driverZone ); //driverZone.ZoneImage.Save(\"Driver\" + i+\".png\"); i ++; } } Windows pilotes C'est ici que c'est le plus p\u00e9nible pour l'utilisateur, il doit s\u00e9lectionner manuellement les positions des fen\u00eatres de donn\u00e9es. Ensuite, d\u00e8s que l'utilisateur a donn\u00e9 une position pour chaque window, on applique les positions pour chaque zone de pilote. Il y a plusieurs types de windows et selon le type le traitement est diff\u00e9rent comme je l'ai dit plus t\u00f4t. Voici des exemples concrets : \"Exemple Window de pneus\" \"Exemple Window temps au tour\" \"Exemple window Drs\" Il est important que toutes ces zones soient transmises avec le plus de pr\u00e9cision possible pour que l'OCR puisse bien faire son boulot. Stockage Ensuite, quand l'utilisateur a fini de configurer son flux, la configuration est stock\u00e9e pour qu'il puisse ensuite la r\u00e9utiliser pour tous les autres Grand Prix de l'ann\u00e9e. Le stockage est fait sous format JSON et est fait pour que le programme d'OCR puisse lire dedans toutes les infos n\u00e9cessaires. Cela fait des fichiers plut\u00f4t gros, mais je n'avais pas vraiment le choix. J'ai test\u00e9 une version avec seulement les infos de la premi\u00e8re zone de pilote, mais avec l'interpolation, les derniers pilotes se retrouvent avec des zones clairement pas \u00e0 la bonne taille. Voici un exemple de ce \u00e0 quoi ressemble le JSON final : { \"Main\" : { \"x\" : 36 , \"y\" : 343 , \"width\" : 3780 , \"height\" : 1454 , \"DriverZones\" : [ { \"name\" : \"Driver1\" , \"x\" : 0 , \"y\" : 1 , \"width\" : 3780 , \"height\" : 72 , \"Windows\" : [ { \"Position\" : { \"x\" : 45 , \"y\" : 3 , \"width\" : 76 , \"height\" : 65 }, \"GapToLeader\" : { \"x\" : 447 , \"y\" : 1 , \"width\" : 206 , \"height\" : 67 }, \"LapTime\" : { \"x\" : 863 , \"y\" : 3 , \"width\" : 229 , \"height\" : 65 }, \"DRS\" : { \"x\" : 1095 , \"y\" : 1 , \"width\" : 174 , \"height\" : 67 }, \"Tyres\" : { \"x\" : 1274 , \"y\" : 3 , \"width\" : 1448 , \"height\" : 62 }, \"Name\" : { \"x\" : 2724 , \"y\" : 3 , \"width\" : 361 , \"height\" : 65 }, \"Sector1\" : { \"x\" : 3088 , \"y\" : 1 , \"width\" : 239 , \"height\" : 65 }, \"Sector2\" : { \"x\" : 3314 , \"y\" : 4 , \"width\" : 190 , \"height\" : 62 }, \"Sector3\" : { \"x\" : 3493 , \"y\" : 1 , \"width\" : 198 , \"height\" : 67 } } ] }, { \"name\" : \"Driver2\" , \"x\" : 0 , \"y\" : 72 , \"width\" : 3780 , \"height\" : 72 , \"Windows\" : [ { \"Position\" : { \"x\" : 45 , \"y\" : 3 , \"width\" : 76 , \"height\" : 65 }, \"GapToLeader\" : { \"x\" : 447 , \"y\" : 1 , \"width\" : 206 , \"height\" : 67 }, \"LapTime\" : { \"x\" : 863 , \"y\" : 3 , \"width\" : 229 , \"height\" : 65 }, \"DRS\" : { \"x\" : 1095 , \"y\" : 1 , \"width\" : 174 , \"height\" : 67 }, \"Tyres\" : { \"x\" : 1274 , \"y\" : 3 , \"width\" : 1448 , \"height\" : 62 }, \"Name\" : { \"x\" : 2724 , \"y\" : 3 , \"width\" : 361 , \"height\" : 65 }, \"Sector1\" : { \"x\" : 3088 , \"y\" : 1 , \"width\" : 239 , \"height\" : 65 }, \"Sector2\" : { \"x\" : 3314 , \"y\" : 4 , \"width\" : 190 , \"height\" : 62 }, \"Sector3\" : { \"x\" : 3493 , \"y\" : 1 , \"width\" : 198 , \"height\" : 67 } } ] } [ O t her pilo ts ... ] ], \"Drivers\" : [ \"Perez\" , \"Verstappen\" , \"Alonso\" , \"Sainz\" , \"Russel\" , \"Gasly\" , \"Leclerc\" , \"Ocon\" , \"Hulkenberg\" , \"Bottas\" , \"Hamilton\" , \"Albon\" , \"Tsunoda\" , \"Zhou\" , \"Stroll\" , \"De Vries\" , \"Magnussen\" , \"Norris\" , \"Piastri\" , \"Sargeant\" ] } } Et avec tout \u00e7a. L'OCR peut d\u00e9marrer dans de bonnes conditions OCR Maintenant qu'on a des images qui arrivent automatiquement et que l'on sait o\u00f9 se trouvent les informations sur ces dites images, je vais parler de la seconde partie du projet qui parle du processus de reconnaissance de data sur une image du feed DATA de la F1TV. C'est je pense la partie qui a demand\u00e9 le plus tests et de refactor. Toute la partie OCR a \u00e9t\u00e9 d\u00e9velopp\u00e9e dans un projet \u00e0 part avant d'\u00eatre int\u00e9gr\u00e9e dans le projet final. Il faut savoir que la reconnaissance est diff\u00e9rente selon ce que l'on cherche. Je vais donc d\u00e9composer cette partie du document en sous rubriques selon les donn\u00e9es recherch\u00e9es. Mais avant \u00e7a, je dois expliquer certains concepts qui seront importants. Fonctionnement g\u00e9n\u00e9ral Voici un screenshot de la page DATA de la F1TV que le programme va recevoir : \"Screen F1TV\" Si on regarde de loin, on peut se dire que la structure est plut\u00f4t simple, mais c'est loin d'\u00eatre le cas. On peut y voir au moins quatre zones contenant de l'information dans un format diff\u00e9rent. \"Zones principales\" Dans l'exemple ci-dessus, on peut voir trois zones, mais on aurait \u00e9galement pu comprendre la zone de position des pilotes autour du circuit pour faire 4. Ces quatre zones sont tr\u00e8s diff\u00e9rentes et contiennent d'autres informations. Pour ce travail de dipl\u00f4me, je ne m'occupe que de la zone principale. Mais je pense que le titre et les infos de circuit ne prendrait pas tant de temps que \u00e7a \u00e0 impl\u00e9menter. J'ai utilis\u00e9 le mot \"Zone\" plus haut et \u00e7a n'est pas juste un mot utilis\u00e9 au hasard. C'est le nom de l'objet que j'utilise pour les repr\u00e9senter dans mon programme. Mais comme c'est important de bien comprendre ce concept avant de continuer, je vais vous l'expliquer. ZONE : L'objet \"Zone\" parent est un objet qui est une zone d'image. Je m'explique, le but d'une zone est d'\u00eatre un morceau d'une image plus grande. Le but d'une Zone est de contenir une liste de plus petites Zones ou bien une liste de \"Window\" (j'explique ce que c'est juste apr\u00e8s). Elle contient la portion d'image qui la concerne et ses propres dimensions. Le parent zone ne pr\u00e9voit que de pouvoir ajouter ou supprimer des \u00e9l\u00e9ments des listes de zones ou de fen\u00eatres ainsi qu'une m\u00e9thode qui permet d'aller chercher toutes informations des livres qu'elle contient. L'int\u00e9r\u00eat d'une zone est de pouvoir compartimenter une image dans des parties int\u00e9ressantes au niveau de la reconnaissance, mais pas de traiter d'information. WINDOW : L'objet \"Window\" est un objet qui peut ressembler beaucoup \u00e0 l'objet \"Zone\". En effet, elle aussi est une partie d'une image plus grande et contient ses dimensions, mais elle se distingue en deux points importants. Elle ne contient pas d'autres Zones ou Windows Elle peut retourner les informations \u00e9crites sur son image. Toutes les Window qui h\u00e9ritent du parent Window peuvent impl\u00e9menter une m\u00e9thode qui permet de renvoyer ce qui peut \u00eatre d\u00e9cod\u00e9 sur son image. Les enfants peuvent aussi aller piocher dans les nombreuses m\u00e9thodes de r\u00e9cup\u00e9ration de donn\u00e9es contenues dans le parent Window. Il vaut mieux r\u00e9utiliser le plus possible que de r\u00e9inventer la roue pour chaque Window. Une analogie un peu bancale pourrait se pr\u00e9senter comme la suivante : La zone est une armoire ou une biblioth\u00e8que. Si c'est une zone qui contient d'autres zones, c'est une biblioth\u00e8que et chacune de ces sous-zones sont des armoires. Leur unique but est de contenir de mani\u00e8re ordonn\u00e9e des objets qui eux contiennent de l'information. Les livres ici sont les Windows. Ils contiennent de l'information et sont stock\u00e9s dans des armoires et on y acc\u00e8de en allant dans la bonne biblioth\u00e8que et en allant dans la bonne armoire. Derni\u00e8res choses pour comprendre le diagramme : Il existe une Main Zone qui est une des quatre grandes zones dont je parlais dans la d\u00e9composition de l'image. Il existe aussi des \"Driver Zone\" qui sont de plus petites zones contenues dans la Main Zone qui et qui ne contiennent que les informations d'un pilote. L'objet Window n'est quasi jamais utilis\u00e9, c'est presque tout le temps des enfants de Window plus sp\u00e9cifiques qui sont utilis\u00e9s, le but est que chaque type d'information sur l'image aie son type de window. Voil\u00e0 donc un petit diagramme qui montre le d\u00e9coupage du programme : \"Diagramme explicatif de l'architecture des zones\" Pour visualiser encore un peu mieux comment ce d\u00e9coupage prend forme, voici ce que chaque zone et Window contient. Main Zone : \"Exemple zone principale\" Driver Zone : \"Exemple zone de pilote\" Driver Position Window : \"Exemple de fen\u00eatre de position\" Driver name Window : \"Exemple de fen\u00eatre de nom\" Driver LapTime Window : \"Exemple de fen\u00eatre de temps au tour\" Driver Tyre Window : \"Exemple de fen\u00eatre pneus\" Il existe d'autres types de Window mais ce sont les principaux. On se rend assez facilement compte que chacunes de ces Windows va avoir besoin d'un traitement sp\u00e9cifique, car la mani\u00e8re de reconnaitre le pneu utilis\u00e9 et le temps au tour ne peut pas \u00eatre la m\u00eame. Pour r\u00e9sumer, on a un programme qui prend en entr\u00e9e un fichier de configuration, qui prend des images de la F1TV et les d\u00e9coupe dans des ZONES qui elles m\u00eame sont d\u00e9coup\u00e9es en WINDOWS pour qu'on puisse plus simplement les d\u00e9coder. Maintenant qu'on a une liste de diff\u00e9rents types de zones, on peut commencer \u00e0 chercher ce qu'il y a marqu\u00e9 dessus. Pour cela, il faut d'abord comprendre un petit peu comment l'OCR fonctionne et comment des libraires comme Tesseract fonctionnent pour donner du texte en partant d'une image. Pour faire tr\u00e8s simple, nous avons un mod\u00e8le qui est entrain\u00e9. C'est-\u00e0-dire qu'on donne \u00e0 un programme un tr\u00e8s grand nombre de mots ou de lettres en lui disant ce que contiennent chaques images. Ensuite le programme va cr\u00e9er des matrices de convolutions pour chaque lettre avec comme objectif de d\u00e9tecter les points communs entre les lettres pour cr\u00e9er un alpphabet. Par exemple, la matrice de la lettre 'H' donnerait un poids important \u00e0 des lignes verticales connect\u00e9es par une ligne centrale. Et si on fournit assez de donn\u00e9es de bonne qualit\u00e9 au mod\u00e8le, les matrices peuvent \u00eatre tr\u00e8s efficace \u00e0 d\u00e9tecter si une lettre est un H ou un M. Il y a pleins d'autres m\u00e9thodes comme l'utilisation d'un dictionnaire de mots de la langue pour permettre la reconnaissance de mots m\u00eame si une lettre au milieu n'est pas comprise ou en ajoutant d'autres informations sur le contexte, mais \u00e7a ne nous int\u00e9resse pas ici. C'est important de comprendre comment cette reconnaissance de caract\u00e8res avec des matrices fonctionne, car cela va nous aider \u00e0 pr\u00e9parer nos donn\u00e9es pour lui rendre la vie facile et augmenter la pr\u00e9cision de nos r\u00e9sultats. Filtres et traitement On peut essayer de donner toutes nos images directement \u00e0 Tesseract pour qu'il reconnaisse tout le texte qu'il y voit, mais on risque de se retrouver avec des r\u00e9sultats au mieux inconsistants. Dans notre cas, le souci est que les chiffres et lettres sont beaucoup trop petits. Ils ne font parfois que 10 pixels de haut et cela fait qu'il n'est pas forc\u00e9ment ais\u00e9 de toujours les diff\u00e9rencier. De plus, comme ils sont petits, les art\u00e9facts d'aliasing sont assez violents et peuvent grandement d\u00e9former une lettre ou un chiffre. Exemple : Prenons le chiffre 9. Dans l'image, il peut \u00eatre repr\u00e9sent\u00e9 de cette mani\u00e8re : \"Exemple de chiffre avant post traitement\" On peut voir qu'il est flou, pour nous cela ne pose pas de probl\u00e8me et je pense qu'\u00e0 peu pr\u00e8s n'importe qui peut dire que c'est un 9. Cependant, comme les contours sont flous et m\u00eame si on essaie de retirer le background : \"9 avec antialiasing\" On voit que le 9 n'est pas clairement d\u00e9fini. En effet, on pourrait le comprendre comme : \"Premier exemple de contours\" Ou comme : \"Second exemple de contours\" Voire simplement comme : \"Exemple de contour g\u00e9n\u00e9reux\" Et on se rend bien compte que les performances de d\u00e9tection ne sont pas les m\u00eames dans ces trois cas. Il faut donc faire un certain post traitement des images pour supprimer les \u00e9l\u00e9ments parasites, les couleurs, et augmenter la visibilit\u00e9 des contours importants. Mais chaque type de donn\u00e9e va avoir des m\u00e9thodes de post traitement diff\u00e9rents. Donc voici les diff\u00e9rents types de reconnaissance et leur post traitements : Texte Alors ce type de reconnaissance est utilis\u00e9 par la WINDOW du nom de pilote et de la position du pilote. C'est je pense la plus simple de toutes car Tesseract est particuli\u00e8rement bien entrain\u00e9 pour. Cette reconnaissance concerne donc des lettres qui font des mots ou des noms. Voici un exemple de la WINDOW nom de pilote en entr\u00e9e : \"Exemple texte cru\" Ce texte peut paraitre bon, cependant quand on le lance dans Tesseract, il ne va pas toujours donner un r\u00e9sultat parfait. Il faut aussi savoir qu'il y a des noms pas mal plus p\u00e9nibles que Tesseract \u00e0 plus de mal \u00e0 reconna\u00eetre, soit \u00e0 cause des lettres utilis\u00e9es, soit, car le nom est un nom d'une autre r\u00e9gion et qui ne veut rien dire en anglais, ce qui emp\u00eache l'utilisation de dictionnaire (Ex : Tsunoda est un nom japonais et parfois, il est difficile pour Tesseract de le reconnaitre puisque si une lettre pose un probl\u00e8me, il ne peut pas trouver de contexte qui puisse l'aider). Donc pour le rendre plus facilement lisible et augmenter les chances que toutes les lettres soient d\u00e9couvertes, voici les \u00e9tapes que j'ai mis en place. 1 : J'inverse les couleurs. Je me suis rendu compte qu'il \u00e9tait souvent plus facile de trouver un noir sur blanc que blanc sur noir. Je ne suis pas s\u00fbr que cette \u00e9tape soit capitale cependant \"Texte invers\u00e9\" 2 : Je fais un Treshhold de 165, car avec moins le texte occasionnellement prend trop du background et avec plus les lettres sont trop fines. \"Texte apr\u00e8s Treshold\" 3 : Je fais un Resize de l'image pour avoir une meilleure r\u00e9solution et permettre une meilleure d\u00e9tection. J'augmente la hauteur et la largeur par un facteur 2. J'ai trouv\u00e9 cette valeur suffisante et aller plus haut consomme beaucoup de ressources. \"Texte apr\u00e8s Resize\" 4 : Je fais une tr\u00e8s rapide Dilatation du texte pour retirer le flou amen\u00e9 par la m\u00e9thode de Resize. Je n'utilise qu'une valeur de 1, car je ne veux pas trop changer comment le texte est model\u00e9, je veux juste retirer le flou. \"Texte apr\u00e8s Dilatation\" Explication des m\u00e9thodes pr\u00e9cises plus bas Voil\u00e0 pour ce qui est du post processing. Je ne dis pas que ce sont les meilleurs param\u00e8tres possibles, mais dans mes tests ce sont ceux qui ont le mieux march\u00e9s. Ce sont aussi les premi\u00e8res m\u00e9thodes que j'ai pu d\u00e9velopper alors forc\u00e9ment, elles n'ont pas le niveau de d\u00e9tails de certaines autres. Mais comme m\u00eame avec ce traitement, il n'est pas rare que je me retrouve avec une ou deux lettres pas justes, il faut un moyen d'\u00eatre s\u00fbr que c'est le bon nom qui est trouv\u00e9. Ce qu'il y a de pratique avec les noms de pilotes, c'est qu'on sait d\u00e9j\u00e0 comment ils s'appellent avant le Grand Prix. En effet, dans le fichier de configuration de la reconnaissance, il y a une liste de noms de pilotes. Cela veut dire qu'au lieu de chercher \u00e0 trouver parfaitement les bonnes lettres, on peut simplement essayer de trouver quel nom de pilote ressemble le plus au nom trouv\u00e9 sur l'image. Pour ce faire, j'ai utilis\u00e9 une m\u00e9thode appel\u00e9e la distance de Levenshtein. Pour faire simple, c'est une m\u00e9thode qui va calculer les distances de lettres pour d\u00e9terminer entre des strings laquelle ressemble le plus \u00e0 une autre. Pour r\u00e9sumer le fonctionnement dans l'ordre : On prend l'image, on la traite On envoie l'image trait\u00e9e \u00e0 Tesseract On trouve quel nom de pilote ressemble le plus \u00e0 ce r\u00e9sultat On renvoie le nom du pilote Chiffres Cette m\u00e9thode en r\u00e9alit\u00e9 utilise juste la m\u00eame m\u00e9thode que celle qui va r\u00e9cup\u00e9rer le texte sur une image. Cependant, l\u00e0, on envoie \u00e0 Tesseract l'information qu'il ne peut trouver que des chiffres sur l'image, ce qui lui permet d'\u00eatre beaucoup plus pr\u00e9cis et de ne pas confondre un 9 avec un P ou un 11 avec un H PAR EXEMPLE (non pas que \u00e7a me soit arriv\u00e9 tr\u00e8s r\u00e9guli\u00e8rement et que \u00e7a me soit rest\u00e9 dans la gorge \u00e9videmment). L'avantage, c'est que cette m\u00e9thode ne demande m\u00eame pas de traitement de la donn\u00e9e en sortie de Tesseract. On esp\u00e8re simplement que le post traitement aura suffit. TEMPS : Cette m\u00e9thode regroupe la d\u00e9tection de temps au tour. Il y a trois grands types de WINDOW qui sont concern\u00e9es : La WINDOW du temps au tour La WINDOW du retard sur le leader La WINDOW des secteurs La grande diff\u00e9rence ce sont les ordres de grandeur. Les temps au tour sont en g\u00e9n\u00e9ral entre 50 secondes et deux minutes. Tandis que les secteurs sont entre 20 et 30 secondes alors que le retard sur le leader peut \u00eatre de plusieurs minutes. Cependant, tous ces temps poss\u00e8dent le m\u00eame type de post-traitement avant d'\u00eatre envoy\u00e9s \u00e0 Tesseract. Voici un exemple de temps au tour avant toute transformation : \"Temps au tour avant traitement\" On peut avoir l'impression que ce texte est tout \u00e0 fait lisible et facile \u00e0 d\u00e9coder, surtout quand on le voit de loin comme \u00e7a. Cependant, il faut imaginer que ces chiffres font 13 pixels de haut en comptant le flou et comme expliqu\u00e9 plus haut, ce flou dans ces \u00e9chelles est terrible. \"Temps au tour zoom\u00e9\" Si on donne cette image \u00e0 Tesseract, les '3' deviennent des '9', des '9' deviennent des '8', des '2' deviennent, eux aussi, des '9', le tout parfois inversement et de mani\u00e8re compl\u00e8tement impr\u00e9visible. \u00c7a n'est simplement pas utilisable. Cette partie est un peu plus complexe, car si la d\u00e9tection n'est pas fiable, les chiffres sont juste inutilisables. Si \u00e0 tout moment un temps au tour de 1:39.106 devient 1:32.108 c'est juste pas possible. Voici donc les \u00e9tapes de post-traitement que j'ai mis en place pour leur d\u00e9tection : 1 : J'applique un Treshold de 185 pour enlever les ambigu\u00eft\u00e9s d'alisaising et avoir une image en noir et blanc claire. La valeur de 185 est assez \u00e9lev\u00e9e, car le but est de vraiment garder uniquement les contours. Comme les chiffres se ressemblent beaucoup plus que les lettres, il faut tenter le plus possible de conserver leurs formes sp\u00e9cifiques. Je me suis rendu compte que cette valeur \u00e9tait une de celles qui marchent le mieux. \"Temps au tour apr\u00e8s Treshold\" 2 : J'applique un Resize de 2 pour augmenter la r\u00e9solution des chiffres et permettre une meilleure d\u00e9tection. Le but est d'avoir plus de pixels et donc de permettre \u00e0 Tesseract de mieux utiliser ses matrices de convolution. \"Temps au tour apr\u00e8s Resize\" 3 : Comme le Resize am\u00e8ne du flou, j'utilise une m\u00e9thode de Dilatation qui me permet de retirer ce flou et de remplir un peu plus certaines parties qui ont \u00e9t\u00e9 un peu laiss\u00e9e par le Resize ; \"Temps au tour apr\u00e8s Dilatation\" 4 : Contrairement aux mots plus haut, la rondeur ajout\u00e9e par la dilatation n'est pas vraiment d\u00e9sir\u00e9e. En effet, elle peut rendre confuse certains chiffres et emp\u00eacher Tesseract de bien trouver le chiffre. Alors, j'applique une \u00c9rosion qui me permet de contrecarrer en partie les rondeurs ajout\u00e9es par la dilatation et retrouver des chiffres bien form\u00e9s. Pour l' \u00c9rosion et la Dilatation , j'ai utilis\u00e9 une valeur de 1, car je ne voulais pas trop changer les chiffres. \"Temps au tour apr\u00e8s \u00c9rosion\" Explication des m\u00e9thodes pr\u00e9cises plus bas Et avec ce post processing, on retrouve de plut\u00f4t bons r\u00e9sultats qui demandent peu de traitement. Le traitement d\u00e9pend du type de WINDOW cependant : Pour les secteurs, on indique \u00e0 Tesseract que les caract\u00e8res autoris\u00e9s sont : \"0123456789.\" Pour les temps au tour, on autorise plut\u00f4t \"0123456789.:\" Et pour les \u00e9carts, on autorise \"0123456789.+\" Ensuite, on r\u00e9cup\u00e8re une liste de chiffres qu'il va falloir transformer en millisecondes pour faciliter le stockage et l'envoi. Le programme nettoie un peu la chaine avant de la convertir. Par exemple parfois le ':' de 1:34.456 est compris comme un '1' ou un '2' et il faut faire attention \u00e0 d\u00e9tecter quand \u00e7a arriver. Je passe les d\u00e9tails du reste du nettoyage, car c'est vraiment du cas par cas, mais quand on a fini de nettoyer la chaine, on peut transformer les chaines de minutes, secondes et millisecondes en un total de millisecondes. Pour r\u00e9sumer le fonctionnement dans l'ordre : On prend l'image et on lui applique une s\u00e9rie de filtres On envoie l'image filtr\u00e9e \u00e0 Tesseract On nettoie le r\u00e9sultat Tesseract pour compenser certains biais On convertit le r\u00e9sultat en millisecondes les chiffres (2) Il faut savoir qu'avec la derni\u00e8re version de l'\u00e9mulateur (dont je vais parler un peu plus tard). Pneus L\u00e0, on arrive sur la partie la plus p\u00e9nible. Pour comprendre la probl\u00e9matique, il faut d'abord faire un petit point sur comment les pneus fonctionnent en Formule 1. Depuis 2019, en Formule 1 nous avons 5 grandes familles de pneus : Les pneus tendres Les pneus medium Les pneus durs Les pneus interm\u00e9diaires Les pneus pluie \"Gamme de pneus Pirelli\" Les trois premiers pneus sont des pneus faits pour piste s\u00e8che, le pneu interm\u00e9diaire pour piste humide et le pneu pluie pour la pluie. Chaque pneu a sa dur\u00e9e de vie et son niveau de performance propre, mais je ne vais pas rentrer dans le d\u00e9tail ici. Tout ce qu'il faut savoir, ce que savoir sur quel pneu chaque pilote est et depuis combien de temps, il les chausse est une information tr\u00e8s importante. Chaque pneu a une couleur donn\u00e9e qui permet de les diff\u00e9rencier. Voici un exemple de ce \u00e0 quoi une WINDOW de pneus peut ressembler : \"Exemple zone pneus 1\" Mais cette zone peut aussi ressembler \u00e0 \u00e7a : \"Exemple zone pneus 2\" Mais aussi \u00e0 \u00e7a : \"Exemple zone pneus 3\" Voire m\u00eame \u00e7a : \"Exemple zone pneus 4\" Je pense que vous pouvez tout de suite comprendre la difficult\u00e9 que repr\u00e9sente la t\u00e2che de r\u00e9cup\u00e9ration de donn\u00e9es \u00e0 partir de cette image. En gros, le fonctionnement de cette zone d'information est assez simple. Au fur et \u00e0 mesure que la course avance, le trait fait de m\u00eame. Le chiffre dans le round tout \u00e0 droite indique le nombre de tours que le pilote a pass\u00e9 sur ce pneu. La couleur indique le type de pneu. S'il y a une lettre \u00e0 la place d'un chiffre, c'est que c'est le premier tour sur ce pneu. La lettre indique le type de pneu. Et pas besoin de dire que si on essaie simplement de donner l'image \u00e0 Tesseract, on ne r\u00e9cup\u00e8re ni les chiffres ni les lettres correctement si ce n'est pas du tout. Il faut donc utiliser une m\u00e9thode qui permette d'isoler le rond le plus \u00e0 droite, lui appliquer un traitement qui permette \u00e0 Tesseract de lire ce qu'il y a marqu\u00e9 et qui puisse d\u00e9terminer quel pneu est en train d'\u00eatre utilis\u00e9. J'ai d\u00e9cid\u00e9 de m'occuper dans un premier temps de trouver ce rond avant d'appliquer les filtres, car plus l'image est petite, plus les filtres sont rapides. Le programme va tirer un trait depuis le bord droit de la zone, et il va avancer vers la gauche jusqu'\u00e0 trouver un obstacle. Je d\u00e9tecte un obstacle si le pixel sur lequel est mon trait poss\u00e8de une valeur de plus de 0x50 dans le channel R, G ou B. J'ai trouv\u00e9 en faisant des tests que les couleurs de background de la F1TV ne d\u00e9passaient jamais ces valeurs. Ensuite, apr\u00e8s avoir trouv\u00e9 le premier obstacle, je r\u00e9cup\u00e8re une zone qui doit englober le cercle. Voici un exemple avec cette image en entr\u00e9e : \"Zone compl\u00e8te\" Elle est automatiquement coup\u00e9e de cette fa\u00e7on : \"Zone coup\u00e9e automatiquement\" Cela me permet d'isoler uniquement ce qui m'int\u00e9resse, ce qui est tr\u00e8s pratique pour Tesseract et pour la d\u00e9tection de couleur. Ensuite, avec cette image, je peux commencer le processus de reconnaissance. Je commence par faire une moyenne de tous les pixels de l'image en excluant les pixels trop sombres qui font s\u00fbrement partie du background ou du chiffre. Ensuite, j'utilise une m\u00e9thode qui calcule la diff\u00e9rence entre la couleur obtenue et la liste de couleurs possible. Il y a cinq couleurs des pneus possibles : \"#ff0000\" pneu tendre/soft \"Couleur d'un pneu tendre\" \"#f5bf00\" pneu medium \"Couleur d'un pneu medium\" \"#a4a5a8\" pneu dur/hard \"Couleur d'un pneu dur\" \"#00a42e\" pneu inter \"Couleur d'un pneu interm\u00e9diaire\" \"#2760a6\" pneu pluie/wet \"Couleur d'un pneu pluie\" Ce qui est pratique, c'est que m\u00eame dans les cas o\u00f9 il n'y a pas beaucoup de couleur comme celui-l\u00e0 : \"Pneu dur avec 0 tours\" On arrive \u00e0 une couleur moyenne de : \"Couleur moyenne de l'image ci-dessus apr\u00e8s soustraction du background\" Et il est donc assez facile de d\u00e9terminer le type de pneu en question. Attention, les r\u00e9sultats peuvent \u00eatre tr\u00e8s vite d\u00e9rang\u00e9s par la couleur du pneu pr\u00e9c\u00e9dent si le d\u00e9coupage de la fen\u00eatre n'a pas \u00e9t\u00e9 assez pr\u00e9cis. Ensuite il \"suffit\" de lire le chiffre dans le rond et si on n'arrive pas \u00e0 le lire alors c'est que c'est une lettre et on sait que le nombre de tours est donc de 0. Maintenant vient le moment tr\u00e8s sympathique de la lecture du chiffre. Vous saurez que Tesseract, en plus de d\u00e9tester les grandes images et les images avec des couleurs, d\u00e9teste \u00e9galement les formes dans une image. Ainsi dans notre cas, le round de couleur autour du chiffre, m\u00eame s'il n'est pas complet, il interf\u00e8re avec la reconnaissance et emp\u00eache de bien lire le chiffre. Il faut donc retirer le background et ensuite la couleur. Sauf que comme le chiffre est de la couleur du background, si on retire le background et ensuite la couleur, il ne reste plus rien. Il faut alors retirer le background AUTOUR du rond, et ensuite si on retire la couleur, il devrait rester le chiffre sur fond blanc. Pour ce faire, j'ai tir\u00e9 des traits depuis les bords de l'image jusqu'\u00e0 ce qu'ils rencontrent le rond. Ensuite, je retire tous les pixels entre le rond et les bords de l'image, ce qui nous donne ceci : \"Zone pneu avec le background en moins\" Ensuite, on peut retirer les pixels qui ont une valeur dans un channel RGB plus haute qu'un certain seuil : \"Zone avec le reste des couleurs supprim\u00e9es\" Et l\u00e0, on a ce que l'on veut ! \u00c0 partir de l\u00e0, ce sont les filtres que l'on connait qui sont utilis\u00e9s pour en faire une image plus facile \u00e0 utiliser par Tesseract. 1 : On effectue un Resize de facteur 4 (oui, c'est beaucoup, mais en m\u00eame temps le chiffre est vraiment petit \u00e0 la base) qui permet d'avoir une image d'une bien meilleure r\u00e9solution. \"Filtre 1\" 2 : On fait une Dilatation de facteur 1 pour retirer tout le flou de l'image pour aider Tesseract \"Resultat\" Et on a un chiffre qui est utilisable par Tesseract ! Explication des m\u00e9thodes pr\u00e9cises plus bas Pour r\u00e9sumer : On prend l'image de la zone et on la crop pour ne garder que la partie essentielle On d\u00e9termine le type de pneu avec la couleur moyenne de la zone On retire le background autour de cette zone On retire la couleur qui reste pour ne garder que le chiffre On augmente la r\u00e9solution du chiffre On rend ce chiffre net On envoie l'image trait\u00e9e et filtr\u00e9e \u00e0 Tesseract On d\u00e9termine le nombre de tours que le pilote a fait avec ses pneus avec le r\u00e9sultat de Tesseract DRS Bon \u00e7a, c'\u00e9tait plut\u00f4t simple, j'ai simplement v\u00e9rifi\u00e9 si la moyenne de vert d\u00e9passait une certaine valeur et puis voila. Filtres et m\u00e9thodes sur les images Dans ce projet, on a d\u00fb utiliser diff\u00e9rentes m\u00e9thodes d'\u00e9dition d'image, que ce soit sous forme de filtres ou de modification de l'image directement. Voici un sommaire des m\u00e9thodes utilis\u00e9es et comment elles fonctionnent. Tresholding Cette m\u00e9thode sert \u00e0 passer d'une image en couleurs \u00e0 une image binaire noir-blanc. C'est une \u00e9tape tr\u00e8s importante pour l'OCR car elle permet (si bien faite) d'isoler du texte de son background. Un exemple ici : \"Exemple treshold\" Le fonctionnement est assez simple, mais il peut \u00eatre fait de diff\u00e9rentes mani\u00e8res, mais dans mon cas voici comment l'algorithme fonctionne sachant qu'il demande en entr\u00e9e la Bitmap que l'on veut modifier ainsi que la valeur de Treshold : On parcourt chaque pixel de l'image On convertit la couleur du pixel en une valeur de gris pour avoir la m\u00eame valeur en R,G et B (Formule utilis\u00e9e : gray = R x 0.3 + G x 0.59 + B x 0.11) Si le r\u00e9sultat de la valeur de gris est au-dessus de la valeur de treshold, le pixel est pass\u00e9 en blanc complet et dans le cas contraire, il est pass\u00e9 en noir complet. On retourne la Bitmap modifi\u00e9e Un algorithme pas forc\u00e9ment complexe, mais qui peut augmenter de mani\u00e8re titanesque les chances de r\u00e9ussir une OCR Resize Cette m\u00e9thode sert \u00e0 augmenter la r\u00e9solution d'une image pour am\u00e9liorer la pr\u00e9cision de l'algorithme de Tesseract. En effet, avec trop peu de pixels, la matrice de convolution n'est pas toujours aussi efficace. Il ne faut pas confondre cette m\u00e9thode d'augmentation de la taille avec une simple interpolation. En effet, une augmentation de taille interpol\u00e9e ne va pas vraiment changer la r\u00e9solution, l'image sera toujours aussi pixelis\u00e9e, seulement, les pixels seront compos\u00e9s de plus de pixels comme dans l'exemple ci-dessous : \"Exemple d'interpolation lin\u00e9aire\" Dans mon projet, j'utilise de l'interpolation bicubique qui va cr\u00e9er de l'information pour tenter de combler le vide et produire une image r\u00e9ellement plus grande et avec plus de d\u00e9tails, mais en ajoutant du flou. \"Exemple des diff\u00e9rents types d'interpolation\" Le but est d'aller chercher dans les pixels alentours les couleurs qui sont d\u00e9j\u00e0 pr\u00e9sentes et de jouer avec des poids pour tenter de faire une pr\u00e9diction de ce que ce pixel aurait \u00e9t\u00e9 si l'image avait plus de d\u00e9tails. Voici un exemple assez parlant : \"Exemple interpolation bicubique (avant)\" \"Exemple interpolation bicubique (apr\u00e8s)\" On pourrait croire que c'est inutile, mais dans le contexte de Tesseract ajouter des d\u00e9tails pour tenter de simuler une meilleure r\u00e9solution m\u00eame en cr\u00e9ant du flou est int\u00e9ressant pour mieux remplir la matrice de convolution. Mais il est possible de r\u00e9duire ce flou avec d'autres m\u00e9thodes \u00e9galement. (Dans mon code, je n'ai pas utilis\u00e9 du code fait main, mais j'utilise une librairie qui me permet de le faire) Il faut simplement faire attention, car c'est un proc\u00e9d\u00e9 assez lourd en performances. Dilatation et \u00c9rosion Cette m\u00e9thode et la suivante font partie des m\u00e9thodes de transformation morphologiques. Ces m\u00e9thodes sont utilis\u00e9es pour accentuer les formes et les \u00e9paissir ou les r\u00e9duire et les affiner. Elles poss\u00e8dent l'aventage aussi de retirer le flou d'une image ce qui est tr\u00e8s pratique si utilis\u00e9 apr\u00e8s l'utilisation de m\u00e9thodes comme Resize . Je ne vais pas trop rentrer dans les d\u00e9tails de ces m\u00e9thodes, car leur fonctionnement est un peu plus lourd en math si on veut faire une v\u00e9ritable explication du pourquoi et du comment \u00e7a marche aussi bien. Pour notre projet, je dirais que l'important est de savoir que ce sont deux outils tr\u00e8s pratiques pour changer la morphologie des lettres et des chiffres et qu'on peut les utiliser pour corriger du flou et/ou des art\u00e9facts apparus lors de la binarisation de l'image ou de la suppression de fond. Remove Background Cette m\u00e9thode est assez simple et est juste une m\u00e9thode qui va passer en revue tous les pixels de l'image et si la couleur d'un pixel s'apparente \u00e0 celle d'un pixel de fond, il est pass\u00e9 en noir total ou en blanc total. Le but est de permettre au reste du programme de fonctionner avec des couleurs moins ambigu\u00ebs. Une variante sp\u00e9cialis\u00e9e pour la reconnaissance des pneus appel\u00e9e affectueusement Remove Useless cherche \u00e0 atteindre le m\u00eame bu, mais est bien plus sophistiqu\u00e9e et sp\u00e9cialis\u00e9e pour retirer le background autour d'un cercle de couleur pour ensuite retirer la couleur et qu'il ne reste qu'un chiffre. Pour plus de d\u00e9tails, voir la d\u00e9tection de pneus. Il y a aussi d'autres m\u00e9thodes comme un filtre Gaussien ou Highlight countour que j'ai d\u00fb d\u00e9velopper, mais que je n'ai pas utilis\u00e9 donc je ne vais pas en parler ici. Petit point r\u00e9solution Comme on peut l'imaginer, la r\u00e9solution est extr\u00eamement importante pour l'OCR. Et en avan\u00e7ant sur le projet de l'\u00e9mulateur, je me suis rendu compte qu'il \u00e9tait possible de r\u00e9cup\u00e9rer des images en 4K (Plut\u00f4t 1080 avec l'upscaling du lecteur). Cela est une superbe nouvelle car cela permet de simplifier \u00e9norm\u00e9ment le processing sur les diff\u00e9rentes windows. Quelques exemples pour se faire une id\u00e9e \"Echantillon 720P\" ; \"Echantillon 1080P\" \"Echantillon 4K\" Mais il faut savoir que gr\u00e2ce \u00e0 cette simplification, j'ai pu aussi cr\u00e9er d'autres m\u00e9thodes de filtrage pour certaines parties. Mais la simplification \u00e9tait obligatoire, car avec des images aussi grandes, il n'\u00e9tait simplement pas possible de venir appliquer les m\u00eames filtres car le temps de traitement serait beaucoup plus long. J'indique ces changements que apr\u00e8s l'explication d'avant car ce sont des changements un peu de derni\u00e8re minute et que la logique expliqu\u00e9e plus haut a \u00e9t\u00e9 tr\u00e8s importante pour le projet OCR m\u00eame si tout n'est plus forc\u00e9ment utilis\u00e9 maintenant que j'ai des images de meilleure qualit\u00e9. Dans la version actuellement disponible, la reconnaissance a \u00e9t\u00e9 simplifi\u00e9e sous cette forme : Le \"GapToLeader\" est d\u00e9cod\u00e9 avec un premier passage de Tresholding \u00e0 165 puis un Resize de 2 et une Dilatation de 1 pour retirer le flou Les \"Sectors\" sont d\u00e9cod\u00e9s en utilisant une toute nouvelle m\u00e9thode VanishOxyAction \u00e0 cause des couleurs parfois appliqu\u00e9es et ensuite simplement une methode de Tresholding de 150 pour rendre le r\u00e9sultat assez propre pour l'OCR. Le \"LapTime\" est d'abord pass\u00e9 par un Tresholding tr\u00e8s strict de 185 pour pr\u00e9parer la SobelEdgeDetection qui est \u00e9galement une nouvelle m\u00e9thode qu'il a \u00e9t\u00e9 possible d'utiliser gr\u00e2ce \u00e0 la simplification du reste des processus. Le \"Text\" est d\u00e9cod\u00e9 juste avec un tresholding de 165 d\u00e9sormais gr\u00e2ce \u00e0 l'image 4K. Les pneus ont leur propre traitement comme expliqu\u00e9 plus haut auquel on ajoute la Dilatation de 1. Comme on peut le voir, le traitement est pas mal plus simple, mais cela ne veut pas dire que les autres m\u00e9thodes que je n'utilise plus ne sont pas utiles. La reconnaissance n'est pas encore parfaite et je pense que leur utilisation pourrait aider \u00e0 am\u00e9liorer les r\u00e9sultats. (Et parfois ces anciennes m\u00e9thodes sont utiles dans les traitements personnalis\u00e9s des Windows elle m\u00eame comme par exemple les pneus qui utilisent la m\u00e9thode GrayScale pour isoler les couleurs) VanishOxyAction Cette m\u00e9thode est une m\u00e9thode plut\u00f4t simple, mais qui est importante. Elle se base beaucoup sur le code de la m\u00e9thode Grayscale et sur la m\u00e9thode Tresholding car elle essaie de regrouper le meilleur d\u00e8s deux en r\u00e9glant quelques soucis que ces derni\u00e8res cr\u00e9aient. Les soucis avec la m\u00e9thode grayscale c'est que quand le texte est de couleur (Ce qui arrive souvent pour les temps de secteurs) la m\u00e9thode GrayScale rend les couleurs dans une nuance de gris un peu trop sombre ce qui fait qu'ensuite la m\u00e9thode de Tresholding d\u00e9fonce tout. \"Exemple de secteur en couleur\" \"Exemple de secteur en grayscale\" L'id\u00e9e est alors de prendre pour chaque pixel et de garder uniquement la valeur de R, G ou B la plus haute et de mettre les deux autres canaux au m\u00eame niveau pour avoir une image blanchie qui puisse \u00eatre ensuite utilis\u00e9e avec la m\u00e9thode de Tresholding sans soucis. \"Exemple de secteur blanchi avec vanishoxyAction\" SobelEdgeDetection On pourrait se dire qu'avec ce genre de m\u00e9thode le tresholding est inutile ensuite, mais \u00e7a n'est pas le cas, car le tresholding sert ensuite pour rendre les contours plus ou moins agressif. Parce que m\u00eame si l'image ressemble \u00e0 une image binaris\u00e9e, il reste des nuances que le treshold va pouvoir utiliser. SobelEdgeDetection Cette m\u00e9thode est une m\u00e9thode assez classique que je n'ai pas design\u00e9 moi-m\u00eame alors, je ne vais pas trop m'\u00e9pancher dessus. En gros, on utilise une matrice et une formule math\u00e9matique pour redessiner une image et le r\u00e9sultat est une image avec des contours. Je ne l'ai utilis\u00e9 que pour les temps au tour, car ce sont les plus r\u00e9calcitrants. Cette m\u00e9thode a besoin d'une image pass\u00e9e en noir et blanc au pr\u00e9alable \u00e0 laquelle on applique ensuite les matrices de filtres. Et avec ces filtres ajout\u00e9s \u00e0 l'image, on peut ensuite calculer le \"Gradient\" pour cr\u00e9er les bords. Le seul souci de cette m\u00e9thode, c'est qu'elle est assez gourmande et qu'elle fournit des formes creuses d\u00fb \u00e0 la nature des matrices donn\u00e9es. Voici un exemple de ce dont cette m\u00e9thode est capable : Artefacts de la d\u00e9tection de bords de Sobel Apparemment l'OCR aime assez bien cette m\u00e9thode et elle permet de beaucoup moins souvent oublier les '.' ou ':' Traitement des donn\u00e9es C'est bien gentil de recevoir des r\u00e9sultats de l'OCR, cependant on ne peut pas souvent les utiliser comme tels. En effet, les r\u00e9sultats ne sont pas tr\u00e8s constants et demandent d'\u00eatre v\u00e9rifi\u00e9s pour savoir s'ils doivent \u00eatre pris en compte. Le post traitement de ces donn\u00e9es d\u00e9pend compl\u00e8tement du contexte et donc il est diff\u00e9rent pour chaque type de window. Voici un floril\u00e8ge des diff\u00e9rents types de traitements : Traitement du nom de pilote Rien de plus que ce qui est d\u00e9j\u00e0 d\u00e9taill\u00e9 dans la partie OCR Traitement des pneus Pareil Traitement des temps L\u00e0, par contre, c'est int\u00e9ressant. Dans un monde parfait, je pourrais simplement prendre les r\u00e9sultats de l'OCR et les traiter directement. Mais comme nous vivons dans un monde ou la souffrance et la douleur sont les seules choses autoris\u00e9es, on ne peut pas. Le probl\u00e8me vient du fait que les temps que l'on peut trouver sur la F1TV sont encod\u00e9s avec des '.' et des ':' qui d\u00e9terminent les limites entre les chiffres qui d\u00e9signent les minutes, les secondes et les millisecondes. Et le souci avec ces s\u00e9parateurs, c'est qu'ils aiment bien mettre le chaos dans la reconnaissance. Quand ils ne sont pas compris comme des autres chiffres, ils sont parfois juste oubli\u00e9s ou pris en double, c'est un enfer. Il faut donc trouver un moyen de d\u00e9tecter quand cela arrive. Et je n'ai pas trouv\u00e9 de meilleurs moyens que de faire du cas par cas. Cela peut para\u00eetre simple quand on parle par exemple des secteurs. On sait qu'on attend deux chiffres avant un '.' et trois chiffres apr\u00e8s. Il est ainsi facile de voir que si je trouve six chiffres et pas de s\u00e9paration, le troisi\u00e8me est le s\u00e9parateur mal compris. Mais l'exemple qui d\u00e9truit vraiment tout, ce sont les \u00e9carts avec le leader. Autant un temps au tour, c'est toujours x:xx.xxx et un temps de secteur, c'est xx.xxx. Mais un \u00e9cart avec le leader \u00e7a peut \u00eatre 0.345 comme 1:12.345. Ce qui fait que lorsque je re\u00e7ois 121345 est-ce que c'est 12.345 ou 1:21.345...? Souvent, on peut quand m\u00eame d\u00e9duire, mais cela demande de pr\u00e9voir presque tous les cas limites, ce qui est assez p\u00e9nible. On pourrait se dire qu'il suffit de voir si la valeur est trop en dehors des normes. Le souci, c'est qu'il n'est pas impossible qu'un temps au tour ou un \u00e9cart prenne d'un coup une grosse diff\u00e9rence. Cela arrive m\u00eame assez souvent quand des pilotes sortent de la piste. \"Exemple temps au tour\" \"Exemple temps secteur\" Pour ce qui est du DRS et de la position des pilotes, il n'y a pas vraiment de traitement suppl\u00e9mentaire. Non pas, car la d\u00e9tection est parfaite, mais par ce que la d\u00e9tection ne peut pas rater de 200 fa\u00e7ons. Le DRS ne peut retourner que TRUE ou FALSE et la position du pilote est entre 1 et 20 compris. Le peu de nuance fait que ce sont des cas de figures qui ne demandent pas un traitement particulier au-del\u00e0 de l'OCR Stockage des donn\u00e9es Dans ce projet, le but n'est pas simplement de trouver les donn\u00e9es et les afficher. L'int\u00e9r\u00eat de les r\u00e9cup\u00e9rer est de pouvoir les comparer \u00e0 d'autres donn\u00e9es pr\u00e9c\u00e9dentes. Le vrai souci de la F1TV c'est justement que l'on ne peut pas facilement voir les \u00e9volutions. On ne peut voir que des \"photos\" de la situation actuelle de la course. Il faut donc garder en m\u00e9moire les diff\u00e9rentes choses qui se sont pass\u00e9es. Techniquement, on pourrait stocker ces donn\u00e9es dans de b\u00eates listes C#. Mais le souci avec \u00e7a, c'est que m\u00eame si des outils comme LinQ existent, \u00e7a n'est pas le plus pratique quand on veut faire des recherches complexes. Il faut aussi voir que si le projet dans sa forme actuelle aurait peut-\u00eatre pu se satisfaire de listes simples, le but est d'ensuite pouvoir construire sur ces bases pour faire des pr\u00e9dictions et des insertions de stats beaucoup plus int\u00e9ressantes qui demandent de faire des requ\u00eates complexe rapidement. Je me suis dit que la meilleure m\u00e9thode serait d'avoir une base de donn\u00e9e dans laquelle je peux faire des requ\u00eates SQL. Mais, comme je n'ai pas besoin de toutes les features de SQl et que je ne veux pas avoir \u00e0 g\u00e9rer un serveur de base de donn\u00e9e et tout ce qui va avec, je me suis dit qu'une bonne option serait d'utiliser SQLite. \"Logo SQLite\" ; SQLite est vraiment pratique, car cela me permet d'avoir une DB sans avoir de serveur, donc pas vraiment complexe ou quoi que ce soit, mais qui conserve les avantages de rapidit\u00e9 et d'utilisation de requ\u00eates SQL. J'ai cr\u00e9\u00e9 trois tables dans cette base de donn\u00e9e SQLite que voici : Base de donn\u00e9e Drivers Colonne Type de Data Description Tag ID INTEGER ID du pilote PRIMARY Name VARCHAR Nom du pilote NOT NULL Pitstops Colonne Type de Data Description Tag Lap INTEGER Tour durant lequel le Pitstop a \u00e9t\u00e9 effectu\u00e9 PRIMARY DriverID INTEGER Pilote qui a effectu\u00e9 le Pitstop PRIMARY Tyre VARCHAR Pneu chauss\u00e9 par le pilote NOT NULL Stats Colonne Type de Data Description Tag Lap INTEGER Tour durant lequel le Pitstop a \u00e9t\u00e9 effectu\u00e9 PRIMARY DriverID INTEGER Pilote qui concern\u00e9 PRIMARY Tyre VARCHAR Pneu chauss\u00e9 par le pilote NOT NULL LapTime INTEGER Temps au tour (MS) NOT NULL Sector1 INTEGER Temps du secteur 1 (MS) NOT NULL Sector2 INTEGER Temps du secteur 2 (MS) NOT NULL Sector3 INTEGER Temps du secteur 3 (MS) NOT NULL GapToLeader INTEGER Ecart avec le leader (MS) NOT NULL Position INTEGER Position pilote NOT NULL La table Drivers sert juste \u00e0 stocker les diff\u00e9rents noms de pilote pour qu'ils soient utilis\u00e9s dans le reste de la DB La table Pitstops n'est pas vraiment utilis\u00e9e dans l'\u00e9tat actuel du projet. Mais le but \u00e9tait de la remplir d\u00e8s que le programme d\u00e9tectait un arr\u00eat aux stands. Le but est ensuite de pouvoir construire un classement pond\u00e9r\u00e9 en fonction des arr\u00eats des diff\u00e9rents pilotes et d'afficher la stats tout le temps sur l'affichage principal. Elle n'est pas r\u00e9ellement utilis\u00e9e, car la d\u00e9tection de pitstop n'a pas pu \u00eatre compl\u00e9t\u00e9e. De par la nature des donn\u00e9es r\u00e9cup\u00e9r\u00e9es des pneus et des positions, c'est tr\u00e8s difficile de d\u00e9tecter avec pr\u00e9cision un arr\u00eat aux stands. La table Stats est la plus importante parce qu'elle contient toutes les informations concernant les pilotes \u00e0 chaque tour. L'id\u00e9e est qu'elle soit remplie \u00e0 chaque tour. Les infos ne sont pas cens\u00e9es \u00eatre les infos lives, mais plut\u00f4t juste une photo \u00e0 chaque tour de la situation de chaque pilote pour ensuite pouvoir faire des comparaisons tours par tours. Des donn\u00e9es comme le GapToLeader peuvent \u00e9voluer pendant le tour, mais on s'en fiche. Ce qui compte vraiment, c'est le temps au tour et les secteurs ainsi que les pneus. Quand remplir la base ? Dans ce projet, il y a deux types d'information. Les informations lives qui sont stock\u00e9s dans des listes et les informations long terme qui sont stock\u00e9es dans la DB. \u00c0 chaque it\u00e9ration de l'OCR, les donn\u00e9es r\u00e9cup\u00e9r\u00e9es sont stock\u00e9es dans une liste de DRIVERDATA. Les DRIVERDATA sont des structures de donn\u00e9es qui contiennent toutes les infos d'un pilote \u00e0 un instant T. Elles peuvent \u00eatre incompl\u00e8tes et sont juste l\u00e0 pour faire de petits calculs et d\u00e9terminer quand ins\u00e9rer des donn\u00e9es permanentes. Ce qui nous am\u00e8ne au moment int\u00e9ressant. Comment on d\u00e9termine quand il est int\u00e9ressant d'ins\u00e9rer des informations dans la base de donn\u00e9es. Il y a deux cas de figure ou on pourrait vouloir ins\u00e9rer des infos : Quand un pilote a fini un tour En effet, j'ai estim\u00e9 que les seuls moments o\u00f9 on veut garder une photo de la situation du pilote, c'est, car il passe d'un tour \u00e0 l'autre. Le raisonnement est le suivant : On ne veut pas conserver TOUTES les donn\u00e9es parce que si on prend une photo toutes les trois secondes, la majorit\u00e9 des informations seront redondantes avec les pr\u00e9c\u00e9dentes. Mais en m\u00eame temps, il ne faut pas rater des changements importants de donn\u00e9es. Les seules donn\u00e9es qui changent entre deux passages de l'OCR sont les \u00e9carts entre les pilotes et de temps en temps un nouveau secteur s'affiche. Alors que d'un tour \u00e0 l'autre presque toutes les informations changent. Et on ne perd que les l\u00e9g\u00e8res fluctuations des \u00e9carts entre les pilotes. J'ai donc d\u00e9cid\u00e9 de conserver une photo par tour. Mais c'est bien joli sauf qu'il reste une difficult\u00e9 : Comment savoir qu'un pilote a fait son tour ? Cela peut para\u00eetre simple comme question, mais elle est plus difficile qu'il n'y parait. Il faut savoir qu'en F1 un pilote peut \u00eatre dans son 26\u1d49 tour pendant qu'un autre en est \u00e0 son 24\u1d49. Chaque pilote a sa propre course et au fur et \u00e0 mesure que les \u00e9carts se creusent, il peut y avoir un tour voir plusieurs d'\u00e9cart entre la queue de course et les premiers pilotes. Ensuite, il faut savoir qu'il n'est pas marqu\u00e9 sur la f1TV dans quel tour chaque pilote est. Il faut donc le d\u00e9duire en fonction des Data. Voici le code le if qui d\u00e9tecte un nouveau tour if ( DriverDataLogs [ i ][ DriverDataLogs [ i ]. Count - 1 ]. Sector3 != 0 && DriverDataLogs [ i ][ DriverDataLogs [ i ]. Count - 2 ]. Sector3 == 0 && DriverDataLogs [ i ][ DriverDataLogs [ i ]. Count - 2 ]. Position != - 1 && DriverDataLogs [ i ][ DriverDataLogs [ i ]. Count - 1 ]. Position != - 1 ) { //Do stuff } DriverDataLogs est une liste de liste d'informations de pilotes. Chaque DriverDataLogs repr\u00e9sente les 20 photos des donn\u00e9es des pilotes. Cela veut dire que DriverDataLogs[3] repr\u00e9sente toutes les infos des pilotes dans le tour 4 et que DriverDataLogs[3][0] repr\u00e9sente toutes les infos du premier pilote dans le tour 3. Si on analyse un peu ce qui est \u00e9crit avec ces informations, on peut voir que je d\u00e9termine qu'un nouveau tour se d\u00e9finis comme une photo ou le troisi\u00e8me secteur a \u00e9t\u00e9 compl\u00eat\u00e9 et ou il ne l'\u00e9tait pas juste avant. Cela fait sens car quand un pilote compl\u00eate son troisi\u00e8me secteur c'est la que son dernier temps au tour se met \u00e0 jour. Le reste des tests est juste la pour \u00e9viter les faux positifs dans le cas ou un des deux DriverDataLogs[x][x] soit corrompu et que donc la valeur n'aie pas de sens. Cela veut dire que dans des conditions tr\u00e8s sp\u00e9cifiques je pourrais potentiellement rater un tour mais il faudrait vraiment que l'OCR me joue un vilain tour. Quand un pilote a fait un arr\u00eat aux stands Et la on touche le plus difficile. Pourtant un arr\u00eat aau stand ne devrait pas \u00eatre compliqu\u00e9 \u00e0 detecter. C'est quand un pilote change de pneu. Alors il peut changer de pneu en gardant le m\u00eame type de pneu et donc tout repose sur le nombre de tour qu'un pneu fait. Sauf que il faut ajouter \u00e0 cette reflexion qu'un pneu peut \u00eatre chauss\u00e9 sans qu'il soit neuf. Ce qui veut dire que l'on ne peut pas simplement choisir qu'un pilote a chang\u00e9 de pneus quand ses pneus sont \u00e0 1 tour. Il peut tr\u00e8s bien reprendre des pneus de qualif qui peuvent avoir 10 tours dans les pattes. En plus quand le pilote change de pneus il y a un phenomene assez p\u00e9nible qui fait que les deux premiers tours faits avec ne sont pass vraiment d\u00e9chiffrables car ils sont un peu cach\u00e9s derri\u00e8re la lettre qui indique le nouveau pneu chauss\u00e9. Exemple : \"Infographie de pneu qui se chevauche\" Voici le code que j'avais \u00e9crit pour tenter de trouver quand un pilote avait fait un pitstop : if ( data . CurrentTyre . Coumpound != Tyre . Type . Undefined && data . CurrentTyre . NumberOfLaps == 0 && DriverDataLogs [ i ][ DriverDataLogs [ i ]. Count - 2 ]. CurrentTyre . NumberOfLaps != 0 ) { //Do stuff } On peut voir que j'essaie de detecter quand le pneu est \u00e0 0 tours (ce qui est le moment ou il y a une lettre \u00e0 la place d'un num\u00e9ro de tour) et que la photo d'avant montrait un pneu normal. On v\u00e9rifie aussi que le pneu a bien \u00e9t\u00e9 detect\u00e9 en verifiant que le pneu n'est pas de type undefined. Le soucis c'est que ce n'est pas rare que l'OCR nous retourne qu'un pneu est vieux de 0 tours et donc il est absolument impossible de faire confiance \u00e0 cette metric. Si on veut utiliser cette methode pour trouver les Pitstop il va falloir avant tout am\u00e9liorer l'OCR sur ce point. Ce soucis mets en lumi\u00e8re un principe assez important de l'informatique \"Ggarbage in, Garbage out\". Si les donn\u00e9es que je recoit ne sont pas g\u00e9niales, le r\u00e9sultat ne sera pas g\u00e9nial non plus. Ce qui est frustran,t c'est que la detection des pneus n'est pas si mal mais entre les chiffres qui se chevauchent ce qui nous fait lire 0 alors que c'est juste un un '1' derri\u00e8re un 'H' ou le 1% du temps ou le programme se trompe, on ne peut pour l'instant tout simplement rien faire de mieux. Affichage des donn\u00e9es Maintenant que l'on a stock\u00e9 toutes ces donn\u00e9es, il faut en faire quelque chose sinon ca ne sert a rien. Afficher les donn\u00e9es est techniquement la partie la plus simple du projet. Il faut prendre les donn\u00e9es qui nous int\u00e9ressent de la base de donn\u00e9es et des r\u00e9sultats de l'OCR et les afficher sur des composants Windows Forms. Il y a deux types d'affichages actuellements mis en place dans le projet sur les trois pr\u00e9vus initialement : Affichage direct L'affichage direct est simplement l'affichage du r\u00e9sultat de l'OCR. Par exemple le classement live ainsi que les \u00e9carts entre les pilotes sont affich\u00e9s directement depuis les r\u00e9sultats de l'OCR. Ce ne sont pas forc\u00e9ment des donn\u00e9es prises dans la base de donn\u00e9e. Voici un exemple : for ( int driverCount = 0 ; driverCount < liveData . Count ; driverCount ++) { DriverData driver = liveData [ driverCount ]; lblDriverName . Text = driver . Name ; lblDriverPosition . Text = driver . Position ; lblDriverLapTime . Text = Reader . ConvertMsToTime ( driver . LapTime ); } C'est l'affichage le plus simple et celui qui est le plus soumis \u00e0 des erreurs. En effet, si un pilote est mal detect\u00e9 on le verra directement mal s'afficher dans la Form principale. C'est \u00e9galement l'affichage le moins int\u00e9ressant car il ne cr\u00e9e aucune information, il ne fait que remontrer les infos que l'on peut d\u00e9ja voir dans la F1TV \"Exemple d'affichage live\" Affichage calcul\u00e9 La encore il y a plusieurs types d'affichages : Affichage Hybride Pour ce qui est des affichages hybrides ce sont des affichages qui vont chercher des informations lives et des informations dans la base de donn\u00e9e. Ils ne font pas de calculs \u00e0 proprement parler mais ils affichent plus d'informations que ce que montre la F1TV. Cela veut dire qu'ils repr\u00e9sentent un d\u00e9but de plusvalue par rapport \u00e0 l'alternative qu'est la page DATA de la F1TV. Ils ne sont pas beaucoup plus durs \u00e0 impl\u00e9menter mais demandent de faire des requ\u00eates \u00e0 la base de donn\u00e9e. Comme exemple d'affichage hybride on a l'affichage des cinq derniers tours d'un pilote. C'est un affichage qui ne demande aucun calcul mais qui permet deja de se rendre compte de si le pilote est enn train de perdre ou gagner du temps ou si il est constant, ce qui n'est pas possible actuellement avec la F1TV \u00e0 moins d'avoir une excellente m\u00e9moire. \"Fen\u00eatre d'informations \u00e0 propos d'un pilote\" Voici un exemmple du type de code necessaire pour afficher ce genre de donn\u00e9es: public List <( int LapTime , int Lap )> GetDriverLaptimes ( string driverName , int numberOfLaptimes ) { int driverId = GetDriverID ( driverName ); List <( int LapTime , int Lap )> lapData = new List <( int LapTime , int Lap )>(); string selectQuery = \"Select LapTime,Lap from Stats WHERE DriverID = @driverID ORDER BY Lap DESC LIMIT @limit\" ; using ( var command = new SQLiteCommand ( selectQuery , Connection )) { command . Parameters . AddWithValue ( \"@driverID\" , driverId ); command . Parameters . AddWithValue ( \"@limit\" , numberOfLaptimes ); SQLiteDataReader reader = command . ExecuteReader (); while ( reader . Read ()) { int lapTime = reader . GetInt32 ( 0 ); int lap = reader . GetInt32 ( 1 ); lapData . Add (( lapTime , lap )); } } return lapData ; } public void Display (){ List <( int LapTime , int Lap )> lapsInfos = Storage . GetDriverLaptimes ( driverName , 5 ); int id = 0 ; foreach (( int LapTime , int Lap ) lapData in lapsInfos ){ Labels [ id ]. Text = LapTime ; id ++; } } Note: Le code montr\u00e9 ici n'est pas forc\u00e9ment le code utilis\u00e9 dans le projet. D'une certaine facon les fen\u00eatres de bataille et de d\u00e9passements sont aussi des hybrides. \"Exemple fen\u00eatre des batailles\" Ici ce sont les batailles qui sont repr\u00e9sent\u00e9es. Aucune donn\u00e9e n'est calcul\u00e9e, c'est litterallement directement les donn\u00e9es de la F1TV, mais la nuance est qu'on ne montre que les pilotes qui sont en train de se battre et que on leur assigne une couleur selon \u00e0 quel point ils sont proches. On a une plus-value sur la F1TV sans pour autant faire de monstres calculs. Pour info, les pilotes consid\u00e8r\u00e9s comme \u00eatant en train de se battre sont les pilotes \u00e0 moins de trois secondes les uns des autres et les couleurs sont suivantes : Vert : Dans la zone de DRS (Moins d'une seconde) Jaune : Plus d'une seconde Noir : Plus de deux secondes \"Exemple fen\u00eatre des d\u00e9passements\" La c'est l'historique des d\u00e9passements qui est affich\u00e9. On pourrait presque dire que c'est un affichage compl\u00eatement calcul\u00e9 car ce ne sont pas des informations disponibles directement sur la F1TV cependant je dirais que cela reste un hybride car il n'y a aucuns calculs. On regarde juste les diff\u00e9rences entre l'ancienne position d'un pilote et la nouvelle et on affiche les changements. Affichage totalement calcul\u00e9 L'affichage compl\u00eatement calcul\u00e9 est un type d'affichage qui ne montre aucune information trouv\u00e9e sur la page de la F1TV. C'est le premier affichage \u00e0 traiter l'information qu'il trouve et il retourne des informations nouvelles. La nuance avec les affichages pr\u00e9dictif est qu'il ne cr\u00e9e pas r\u00e9ellement de l'information, il la d\u00e9duit. Le but est de prendre un certain nombre d'informations trouv\u00e9es sur la page de la F1TV et de calculer des choses pour faire ressortir des tendances \u00e0 l'utilisateur. Cependant on reste sur des informations factuelles. Ce sont des infos d\u00e9duites que techniquement unn humain avec une bonne m\u00e9moire et fort en calcul mental pourrait faire. Mais la c'est fait automatiquement pour tous les pilotes et c'est affich\u00e9 de sorte \u00e0 faire ressortir les valeurs sp\u00e9ciales. Comme c'est un peu plus abstrait, je pense qu'un exemple vaut mieux que 1000 mots. \"Exemple de fen\u00eatre d'informations totalement calcul\u00e9es\" Ci dessus on peut voir un bon exemple. C'est une fen\u00eatre qui montre qui sont les pilotes les plus rapides et les moins rapides et qui montre la diff\u00e9rence de temps au tour. Cette information est totalement d\u00e9duite et n'est en aucun cas trouvable sur la F1TV mais elle n'est pas invent\u00e9e. Elle est simplement calcul\u00e9e. La formule est assez simple, je prend les cinq derniers temps au tour de tous les pilotes. Je fais une moyenne qui donne un temps. Et ensuite je trie les pilotes en fonction de ce temps et je n'affiche que les cinq plus rapide et les cinq plus lents. Ensuite il suffit de prendre le temps le plus rapide et faire une petite soustraction pour avoir l'\u00e9cart. C'est une stat assez int\u00e9ressante car elle lisse les diff\u00e9rences d'un tour \u00e0 l'autre et fait ressortir une tendance. On peut voir pour le grand prix de monaco 2023 par exemple, le moment ou les pneus pluie deviennent plus int\u00e9ressants que les pneus secs car on voit que les pilotes les plus rapides sont les pilotes de fond de grille qui ont chauss\u00e9 les pneus pluie en premier tandis que les plus lents sont les pilotes sur pneus secs vieux. Voici un bout de code qui s'occupe de faire les calculs : List <( int avg , string driverName )> averages = new List <( int avg , string driverName )>(); foreach ( DriverData driver in LiveDriverDataLogs [ LiveDriverDataLogs . Count - 1 ]) { //We want to recover the last 5 lap times List <( int lapTime , int lap )> laps = Storage . GetDriverLaptimes ( driver . Name , 5 ); if ( laps . Count > 0 ) { int avg = 0 ; foreach (( int lapTime , int lap ) lap in laps ) { avg += lap . lapTime ; } avg = avg / laps . Count ; averages . Add (( avg , driver . Name )); } } Affichage pr\u00e9dictif C'est ici que ca devient vraiment dommage, le projet a mannqu\u00e9 de temps pour impl\u00e9menter des affichages pr\u00e9dictifs mais le potentiel est la ! Un affichage pr\u00e9dictif est un affichage qui cr\u00e9e des informations \u00e0 partir des infos qu'il a mais qui fait plus qu'un calcul. Le but est de tenter de deviner quelque chose. Voici des exemples d'affichages pr\u00e9dictifs qui pourraient \u00eatre mis en place averc l'architecture actuelle du projet : Si un pilote a des pneus depuis plus de 20 tours et que son temps au tour est en chute libre depuis cinq tours. Alors ce pilote va peut-\u00eatre devoir s'arr\u00eater. Si un pilote tourne une seconde au tour plus vite que le pilote devant lui et que ce pilote est \u00e0 10 secondes devant, alors il devrait pouvoir le rattraper d'ici dix tours. Si un arr\u00eat au stand est en moyenne de 23 secondes, alors un pilote 3\u00e8me ressortirais potentiellement 7\u00e8me si il s'arr\u00eate maintenant. Tous ces exemples sont des mini algorythmes pr\u00e9dictifs qui pourraient \u00eatre impl\u00e9ment\u00e9s assez facilement dans l'architecture actuelle du projet et pourraient apporter une immense plus-value si ils sont bien param\u00eatr\u00e9s. On peut m\u00eame imaginer que l'algorythme se corrige tout seul si il voit qu'il a eu tort pour que les course suivante il puisse mieux s'en sortir. Les possibilit\u00e9es sont infinies ! Tests Alors la on arrive \u00e0 la GROSSE erreur de ce projet... Si je ne pouvais changer qu'une seule chose \u00e0 ma facon de faire le projet apr\u00e8s coup c'est ici que je ferai le changement. Les tests sont d'une importance absolument capitale mais si ils sont bien faits, c'est surtout un moyen ultra efficace de v\u00e9rifier que du nouveau code est performant et est beaucoup plus pratique \u00e0 utiliser. Je pense sans rire que j'aurais pu gagner plusieurs jours de travail si j'avais travaill\u00e9 diff\u00e9remment vis-a-vis des tests. Comment ca c'est pass\u00e9 D\u00e8s la cr\u00e9ation du planning pr\u00e9visionnel j'ai fait une erreur capitale. J'ai mis les tests en fin de developpement des features... Et je ne leur ai laiss\u00e9 que tr\u00e8s peu de temps tout en les mettant au milieu du chemin critique ce qui les rends particuli\u00e8rement vuln\u00e9rables si une t\u00e2che du chemin critique est retard\u00e9e. En fait dans ce projet je voulais surtout \u00e9viter de faire comme certains projets que l'on a pu avoir pendant notre formation. C'est \u00e0 dire que je ne voulais surtout pas oublier la doc. Alors j'ai agenc\u00e9 le projet pour commencer par les fondations de la doc, puis en incluant les p\u00e9riodes de programmation et entre ces derni\u00e8re ajouter des Tests dans les trous. Le soucis c'est que du coup les projets \u00e9taient un peu le dernier truc dont je devais me soucier ce qui a \u00e9t\u00e9 une tr\u00e8s mauvaise id\u00e9e. Je me suis retrouv\u00e9 \u00e0 devoir mordre sur les jours de tests car les t\u00e2ches de programmation mettaient plus de temps que pr\u00e9vu (qui elles-m\u00eame auraient p\u00fb \u00eatre plus courte avec une bonne utilisation des tests) et je mme suis retrouv\u00e9 \u00e0 passer outre les tests pour avancer sur le reste du projet. J'ai donc du en panique \u00e0 la toute fin du projet construire quelques tests \"unitaires\" dont l'utilit\u00e9 est tr\u00e8s limit\u00e9e car tout le travail a d\u00e9ja \u00e9t\u00e9 fait et que vu la complexit\u00e9 qu'a pris le projet, faire de vrais tests unitaires est devenu un peu trop compliqu\u00e9 pour valoir le coup. Les seuls tests \"unitaires\" (Je l'\u00e9cris entre quotes car ce ne sont pas vraiment des tests unitaires mais plut\u00f4t des tests tout courts car ils ne sont pas sp\u00e9cifiques) qu'il y a dans le projet final sont des tests exclusivement tourn\u00e9s sur l'OCR. Ils sont d\u00e9ja vraiment pratiques car cela me permet de tester d'autres algorythmes d'OCR et voir si les r\u00e9sultats sont meilleurs ou non mais c'est juste un peu trop tard quoi... Les tests unitaires que j'ai impl\u00e9ment\u00e9s sont un peu tous pareils au niveau du fonctionnement : On choisit une image dans une liste d'images pr\u00e9par\u00e9es qui sont scens\u00e9e repr\u00e9senter le type de donn\u00e9es rencontr\u00e9es par l'application en temps normal On lis le nom de l'image que j'ai mis manuellement en indiquant ce qui \u00e9tait marqu\u00e9 sur l'image On fait un coup d'OCR sur l'image et on compare ce r\u00e9sultat avec la valeur que l'on est scens\u00e9 retrouver En pratique on est sur un code de ce style : [TestMethod()] public void SectorOCR_Test () { string directory = @\"./../../TestImages/Sectors/\" ; foreach ( string file in Directory . GetFiles ( directory )) { Bitmap image = ( Bitmap ) Image . FromFile ( file ); DriverSectorWindow sectorsWindow = new DriverSectorWindow ( image , new Rectangle ( 0 , 0 , image . Width , image . Height ), 1 , true ); string [] paths = file . Split ( '/' ); string fileName = paths [ paths . Length - 1 ]; fileName = fileName . Replace ( \".png\" , \"\" ); int timeMS = ( int ) sectorsWindow . DecodePng (); string time = Reader . ConvertMsToTime ( timeMS ); string [] checkDigits = fileName . Split ( '_' ); string [] digitsToCheck = time . Split ( ':' ); if ( time == \"0:00:000\" ) { Assert . AreEqual ( 0 , Convert . ToInt32 ( checkDigits [ 0 ])); } else { //The ConvertMSToTime will always return three chars so we need to make the checkDigits be also three chars while ( checkDigits . Length != 3 ) checkDigits = new [] { \"0\" }. Concat ( checkDigits ). ToArray (); for ( int i = 0 ; i < checkDigits . Length ; i ++) { //We need to convert to int first because sometimes we have \"08\" and \"8\" and in string its not the same but in int it is Assert . AreEqual ( Convert . ToInt32 ( checkDigits [ i ]), Convert . ToInt32 ( digitsToCheck [ i ])); } } } } Tout le code suppl\u00e9mentaire qui ne fait pas partie des \u00e9tapes cit\u00e9es est juste la pour manipuler le format des r\u00e9sultats pour qu'il soit comparable. \"Exemple d'\u00e9chantillons pour les tests\" Ce qui est pratique avec cette approche, c'est qu'il est tr\u00e8s facile de rajouter des cas sp\u00e9cifiques et voir comment le programme les g\u00e8re. Si je vois qu'un certain nombre est souvent mal reconnu, je peux faire expr\u00e8s de le mettre dans le dossier et modifier mon code d'OCR jusqu'\u00e0 ce que le test passe. Si j'avais eu plus de temps, j'aurais s\u00fbrement pu ajouter de vrais tests unitaires qui testent des fonctions tr\u00e8s pr\u00e9cises. Par exemple, v\u00e9rifier que les diff\u00e9rents Windows sont bien appel\u00e9es et que les zones se cr\u00e9ent correctement ou m\u00eame plus simplement que la lecture du JSON au d\u00e9marrage marche bien. Il faut savoir que m\u00eame si je n'ai pas eu l'occasion d'\u00e9crire beaucoup de tests sous forme de code. Toute la phase de d\u00e9veloppement de l'OCR, j'ai pass\u00e9 plus d'une heure par jour \u00e0 analyser les r\u00e9sultats. Je gardais toutes les images des WINDOWS et je notais dans le nom du fichier ce que l'algorithme trouvait et je passais en revue manuellement les centaines de r\u00e9sultats pour isoler ceux qui posaient un probl\u00e8me. C'est comme \u00e7a que je me suis rendu compte par exemple que, avec cette police, les quatre et les 1 \u00e9taient souvent confondus. Donc m\u00eame si les tests automatis\u00e9s sont clairement insuffisants par rapport \u00e0 ce que j'aurais peut-\u00eatre d\u00fb faire, j'ai pass\u00e9 \u00e9norm\u00e9ment de temps \u00e0 tester mon application. Comment \u00e7'aurait d\u00fb se passer Si je devais refaire ce projet aujourd'hui, je pense que j'utiliserais un peu la m\u00eame technique que pour la doc. J'aurais mis les t\u00e2ches de Tests directement au d\u00e9but du projet et j'aurais d\u00e9termin\u00e9 le squelette de l'application par la m\u00eame occasion. Je pense que j'aurais mis trois jours pour \u00e9crire tous les tests dont j'aurais besoin et j'aurais fait une strat\u00e9gie de TDD (Test Driven Developpement) par ce que je pense que \u00e7a marcherait vraiment super bien sur ce type de projet. J'aurais pris, je pense, cinq une dizaine d'images compl\u00e8tes de la F1TV de plusieurs GP diff\u00e9rents et j'aurais mis toutes les fen\u00eatres d\u00e9coup\u00e9es dans des fichiers avec des tests comme ceux que j'ai faits pour ce projet. Et comme \u00e7a je saurai que mon algo est bon uniquement quand il aura r\u00e9ussi \u00e0 passer tous les tests. Cela r\u00e8glerait le souci que j'ai eu le plus : Me retrouver \u00e0 devoir changer l'OCR 5 fois par ce qu'\u00e0 chaque fois que je d\u00e9veloppe une nouvelle feature, je me rends compte d'une faiblesse, mon algorithme\u2026 Non seulement j'aurais eu beaucoup plus de facilit\u00e9 \u00e0 avancer sur le projet, mais en plus, je pense que cela m'aurait fait gagner \u00e9norm\u00e9ment de temps non seulement, car je n'ai plus \u00e0 tester tout \u00e0 la main, mais en plus par ce que \u00e7a veut dire que quand l'OCR passe les tests, je n'ai plus jamais \u00e0 m'en soucier. Le\u00e7ons Je pense que dans mes futurs projets, je mettrai les tests en d\u00e9but de projet plut\u00f4t qu'\u00e0 la fin et je ferai en sorte qu'ils fassent partie du chemin critique et que je ne puisse pas passer \u00e0 c\u00f4t\u00e9 sous pr\u00e9texte que \"Je n'ai pas le temps\". \u00c9crire des tests, ce n'est jamais marrant et c'est encore moins marrant quand ils nous emp\u00eachent d'avancer. Mais je suis convaincu qu'\u00e0 la fin, c'est un gain de temps et de s\u00e9r\u00e9nit\u00e9 incontournable. R\u00e9sum\u00e9 des difficult\u00e9s techniques Ici, je vais parler tr\u00e8s rapidement des difficult\u00e9s techniques rencontr\u00e9es. Si vous voulez tout savoir \u00e0 propos des difficult\u00e9s, vous pouvez aller lire le journal de bord. C'est aussi pour \u00e9viter de me r\u00e9p\u00e9ter par rapport aux explications des diff\u00e9rents points dans l'analyse organique. Je ne vais pas non plus parler des difficult\u00e9s rencontr\u00e9 avec des choses que je n'ai pas gard\u00e9es dans le programme final donc il est normal que vous vous disiez qu'il n'y a pas eu tant de difficult\u00e9s que \u00e7a. Browser Headless Il y avait plusieurs difficult\u00e9s techniques avec cette histoire de Browser Headless. D\u00e9j\u00e0 pouvoir lancer un browser headless et le contr\u00f4ler. C'est difficile, car il faut trouver la bonne librairie et ensuite, il faut trouver le bon ex\u00e9cutable de gecko Driver qui permette de faire fonctionner l'application m\u00eame si l'utilisateur n'a pas Firefox sur sa machine. Ensuite, la seconde difficult\u00e9 est celle de ne pas se faire chopper comme un bot par le site de la F1TV. Il faut savoir qu'\u00e0 ce jour, je n'ai toujours pas r\u00e9ussi \u00e0 faire croire \u00e0 la page de login de la F1TV que j'\u00e9tais un user normal en utilisant S\u00e9l\u00e9nium mais au moins maintenant, je peux acc\u00e9der aux vid\u00e9os tranquillement. Ce souci de ne pas pouvoir se connecter avec la page de login \u00e0 la plus grosse difficult\u00e9 technique de cette partie du projet : la connexion automatique. Pour me connecter \u00e0 la F1TV avec un browser headless la seule solution que j'ai trouv\u00e9e a \u00e9t\u00e9 d'utiliser des cookies. Et pour que l'utilisateur n'ait pas \u00e0 aller chercher les siens dans son navigateur, il a fallu trouver une technique pour aller les chercher directement sans lui demander son avis. Autre difficult\u00e9, comme on travaille avec un site web que l'on ne contr\u00f4le pas, il faut trouver un moyen de g\u00e9rer les erreurs et de r\u00e9essayer parfois et attendre quand il faut dans les cas o\u00f9 le chargement est long etc... Ensuite, apr\u00e8s tout \u00e7a, la derni\u00e8re difficult\u00e9 a \u00e9t\u00e9 de pouvoir contr\u00f4ler le Firefox Headless assez bien pour qu'il puisse non seulement naviguer les pages, mais aussi qu'il puisse cliquer sur des boutons qui ne s'affichent pas tout le temps. (Je ne vais pas mentionner la difficult\u00e9 que c'\u00e9tait de mettre le browser en 4K pour des raisons de sant\u00e9 mentale) OCR Les difficult\u00e9s ici sont dans un autre niveau. Chaque type de donn\u00e9e repr\u00e9sentait sa difficult\u00e9 \u00e0 lui tout seul, sans compter l'optimisation. Pour commencer, on a le texte pour les noms de pilotes. Il a fallu trouver un syst\u00e8me qui puisse reconnaitre le texte et qui puisse comparer le r\u00e9sultat avec les pilotes que l'on connait. Ensuite, il a fallu trouver un moyen de d\u00e9tecter la diff\u00e9rence entre les fen\u00eatres de DRS o\u00f9 il est ouvert ou ferm\u00e9. Il fallait \u00e9galement faire attention \u00e0 ne pas faire de faux positifs. Pour les temps par secteurs, il a fallu trouver des filtres qui permettent de bien diff\u00e9rencier les '1' et les '4' sans les confondre et il a aussi fallu trouver un moyen de filtrer l'image pour que dans le cas o\u00f9 le texte serait en couleur \u00e7a fonctionne quand m\u00eame. (Car oui, un filtre de nuances de gris ne marche pas super avec des couleurs sombres) Pour les pneus (le plus dur) il a fallu trouver un moyen de trouver sur toute la longueur de la zone la partie int\u00e9ressante. Ensuite, il a fallu trouver une technique pour savoir quel type de pneu c'est en fonction de la couleur moyenne et ensuite le plus dur a \u00e9t\u00e9 d'isoler le chiffre du dessin autour, car Tesseract n'aime pas les formes, le tout automatiquement. Pour les temps au tour, il a fallu trouver un moyen de ne pas confondre les ponctuations avec des chiffres tout en ne les ratant pas. Et il a fallu trouver un moyen de d\u00e9tecter quand in\u00e9vitablement cela arrive quand m\u00eame. Et la derni\u00e8re difficult\u00e9 (la plus p\u00e9nible) a \u00e9t\u00e9 de d\u00e9tecter les \u00e9carts entre les pilotes. Il a fallu trouver une fa\u00e7on de d\u00e9coder le texte en temps, mais aussi de faire tout un syst\u00e8me qui d\u00e9tecte et r\u00e8gle les cas ou un ':' a \u00e9t\u00e9 oubli\u00e9 ou confondu tout en ne sachant pas s'il \u00e9tait cens\u00e9 y en avoir \u00e0 la base, car les valeurs peuvent varier entre '1_23.657' et '0.452'. Stockage Pour ce qui est du stockage, la grande difficult\u00e9 a \u00e9t\u00e9 de savoir quand un pilote avait fini un tour parce que chaque pilote finit son tour \u00e0 un moment diff\u00e9rent. Il a \u00e9galement fallu trouver un moyen de savoir les donn\u00e9es d'un pilote \u00e9taient logiques. Une difficult\u00e9 qui n'a pas \u00e9t\u00e9 compl\u00e8tement d\u00e9pass\u00e9e est de savoir quand un pilote a fait un arr\u00eat aux stands, car la d\u00e9tection de l'\u00e2ge des pneus est plus que mauvaise. Voil\u00e0. Ce fut une petite liste non exhaustive de quelques difficult\u00e9s techniques que j'ai rencontr\u00e9es pendant ce projet. Optimisation du programme Ici, je vais parler des techniques que j'ai utilis\u00e9es pour r\u00e9duire le temps de traitement de chaque image de 50 secondes \u00e0 un peu moins de 3 sur le processeur de mon laptop. En effet, dans les premi\u00e8res versions du projet, traiter l'int\u00e9gralit\u00e9 d'une image pouvait prendre presque une minute. Ce qui est compliqu\u00e9 dans ce projet, c'est qu'il y a un certain nombre de choses que je ne contr\u00f4le pas. En utilisant Tesseract, je me retrouve avec des incompressibles. En imaginant que l'OCR sur une image prenne 300 ms, m\u00eame si j'avais 180 threads capables de faire cette t\u00e2che en m\u00eame temps, le temps de traitement sera toujours d'au moins 300 ms. Cr\u00e9er une instance de Tesseract prend \u00e9galement du temps. Ma mission n'est donc pas d'arriver \u00e0 des temps de quelques dizaines de millisecondes, mais plut\u00f4t de rajouter le moins de temps possible pendant le traitement et de tenter de faire le plus de choses possible en parall\u00e8le. Voici la liste des choses qui prennent du temps : Lancement du navigateur et navigation Cr\u00e9ation des instances de Tesseract Filtrage des images OCR Ce sont les quatre gros postes qui coutent le plus cher en ressources. Mais par chance, deux de ces postes ne sont appel\u00e9s qu'une seule fois au d\u00e9marrage, ce qui fait que ce n'est pas catastrophique s'ils prennent du temps. Tandis que l'OCR et le filtrage est fait \u00e0 chaque d\u00e9tection. Pour ce qui est du d\u00e9marrage, malheureusement, on ne peut pas faire grand-chose. Lancer le browser et naviguer \u00e0 travers la F1TV prend du temps, surtout si la connexion du client est mauvaise. Pour certaines actions, j'ai fait un syst\u00e8me qui essaie pendant 10 secondes de cliquer sur un bouton plut\u00f4t que d'attendre 10 secondes et cliquer pour tenter d'\u00e9conomiser un peu, mais malheureusement, c'est lent et on ne peut pas y faire grand-chose. Pour la g\u00e9n\u00e9ration des instances de Tesseract, c'est un peu pareil, mais pour d'autres raisons. Comme Tesseract n'est pas \"Thread Safe\" (Ce qui veut dire qu'il n'est pas parall\u00e9lisable), si on veut faire plusieurs reconnaissances \u00e0 la fois, il faut plusieurs instances de Tesseract load\u00e9es en m\u00e9moire. J'ai donc d\u00e9cid\u00e9, pour une question de simplicit\u00e9 et de performances, de faire en sorte que chaque fen\u00eatre de donn\u00e9e ou \"Window\" aie sa propre instance de Tesseract. Vous qui lisez ces lignes \u00eates peut-\u00eatre en train de vous dire \"Oulala mais \u00e7a doit beaucoup de m\u00e9moire son truc l\u00e0 \" et vous auriez parfaitement raison ! \"Consommation de m\u00e9moire peu apr\u00e8s avoir commenc\u00e9 la d\u00e9tection\" Ce programme consomme en effet une quantit\u00e9 absolument catastrophique de m\u00e9moire vive. Mais si je l'ai fait, c'est pour une bonne raison. Cela prend juste beaucoup trop de temps de cr\u00e9er une nouvelle instance \u00e0 chaque boucle de Tesseract et c'est encore plus long de faire toutes les op\u00e9rations d'OCR les unes apr\u00e8s les autres pour n'avoir qu'un seul Tesseract de load\u00e9. On peut parfois arriver \u00e0 des chiffres qui approchent les 4GB de RAM ce qui est absolument RIDICULE. Cependant, c'est un compromis que j'\u00e9tais pr\u00eat \u00e0 faire pour avoir une application qui soit plus rapide. Je suis absolument certain que cette solution et les autres solutions que j'ai trouv\u00e9es pour ce projet ne sont pas les meilleures ou les plus efficaces. Mais ce sont les solutions que j'ai trouv\u00e9 pour faire en sorte que le projet avance et fonctionne \u00e0 peu pr\u00e8s vite. Ensuite pour ce qui est de ce qui se passe \u00e0 chaque boucle, l\u00e0 le mot magique, c'est \"Parall\u00e8le\". Le traitement de toutes les zones est fait en m\u00eame temps. La structure du projet en zones, sous zones et fen\u00eatres de donn\u00e9es fait qu'il est assez facile de venir parall\u00e9liser le processus si on les impl\u00e9mente correctement. Diagramme qui montre comment les zones et fen\u00eatres interagissent On peut voir sur ce diagramme que la zone principale demande \u00e0 toutes les sous zones de d\u00e9coder leur contenu. Ces derni\u00e8res font l'exacte m\u00eame chose avec les fen\u00eatres de donn\u00e9es qui retournent chacune ce qu'elles contiennent apr\u00e8s un coup d'OCR et ensuite les zones recombinent les informations et les envoient \u00e0 la zone principale. Tout cela est tr\u00e8s bien, mais quel rapport avec la parall\u00e9lisation ? Eh bien, comme chaque zone de pilote est ind\u00e9pendante, on peut tout simplement faire une boucle for parall\u00e8le qui appelle toutes les zones pilotes. On passe de 15 \u00e0 20 secondes de traitement \u00e0 un peu plus de trois juste avec cette technique. Alors \u00e7a n'\u00e9tait pas simple \u00e0 impl\u00e9menter, car il a fallu programmer les zones de sorte qu'elles soient toutes ind\u00e9pendantes les unes des autres. Mais une fois que le travail en amont a \u00e9t\u00e9 effectu\u00e9, il est tr\u00e8s simple de parall\u00e9liser. Les filtres fonctionnent de la m\u00eame fa\u00e7on sauf que l\u00e0, on parall\u00e9lise le traitement de chaque ligne dans une image. L'impact est moindre qu'avec les zones, mais si on teste avec une machine assez puissante cela pourrait faire la diff\u00e9rence. Seul souci avec cette m\u00e9thode, cela veut dire que le processeur est particuli\u00e8rement sollicit\u00e9 '^^... \"Utilisation du processeur pendant le fonctionnement de l'application\" Mon laptop ne poss\u00e8de malheureusement que six coeurs ce qui limite pas mal la puissance de la paralellisation. Mais je suis convaincu qu'avec un CPU avec plus de coeurs on pourrait arriver \u00e0 d'encore meilleurs r\u00e9sultats. Mais cette utilisation du processeur a aussi un inconv\u00e9nient... \"Temp\u00e9ratures du laptop pendant le fonctionnement de l'application\" ; Donc si je veux commenter la F1 avec cet outil, note \u00e0 moi m\u00eame, je ne dois pas utiliser le laptop si je ne veux pas me cramer les doigts. Si je pouvais utiliser le GPU pour acc\u00e8l\u00e9rer le processus on pourrait peut-\u00eatre avoir de meilleurs r\u00e9sultats mais de ce que j'ai pu lire, l'OCR n'est pas sp\u00e9cialement un bon use case pour les GPU. Pour conclure, je dirais que ce projet est loin d'\u00eatre un exemple de performances et clairement, il y a des choix discutables qui ont \u00e9t\u00e9 faits et d'une mani\u00e8re g\u00e9n\u00e9rale, si je devais refaire tout le projet avec la performance en premier objectif, j'aurais s\u00fbrement fait diff\u00e9remment. Maintenant, avec le temps que j'ai eu, je suis d\u00e9j\u00e0 content d'avoir pu faire quelque chose qui fonctionne et qui ne prenne pas une minute \u00e0 traiter une image. Ethique du projet Ici, on va parler des questions \u00e9thiques de ce projet. En effet, il y a quelques petites choses qui peuvent soulever une question. Il y a deux questions qui reviennent presque \u00e0 chaque fois que je parle ou pr\u00e9sente mon projet : Utilisation abusive de la F1TV ? La F1TV est un service payant qui n'est pas forc\u00e9ment donn\u00e9 (m\u00eame si pas bien cher pour un utilisateur comme moi qui l'utilise plus d'une fois par semaine plusieurs heures). De ce fait, je ne peux pas rendre son acc\u00e8s plus facile ou faire fuiter des informations de courses que l'on ne peut se procurer que par son utilisation. Mais voil\u00e0 pourquoi je pense que mon utilisation n'est pas une utilisation abusive : L'application ne fonctionne que si l'utilisateur a un compte F1TV valide et qu'il s'est connect\u00e9 r\u00e9cemment sur sa machine. (Cela veut donc dire que je ne permets pas \u00e0 des utilisateurs de frauder) L'application ne partage aucune information sur le contenu de la F1TV avec l'ext\u00e9rieur. (On ne peut pas avoir acc\u00e8s \u00e0 des informations payantes sans abonnement) L'application ne simule qu'un seul utilisateur connect\u00e9 sur une vraie machine (Cela veut donc dire que je ne suis pas en train de faire un syst\u00e8me de bot qui regarde 45 flux en m\u00eame temps pour scrapper tout le site et/ou poser des probl\u00e8mes de DDOS) Les donn\u00e9es ne sont pas stock\u00e9es entre les sessions (cela veut dire que l'on ne repr\u00e9sente pas un risque de fuite de donn\u00e9es et on n'est pas un service qui vient scrapper le contenu pour alimenter une IA ou quoi que ce soit... pour l'instant...) En fait mon application fonctionne exactement comme si on avait une page ouverte avec la F1TV dessus et qu'un ami \u00e0 c\u00f4t\u00e9 de nous la regardait en prenant des notes pour nous aider \u00e0 suivre. Je ne vois donc pas le mal et je ne vois pas en quoi ce projet serait probl\u00e9matique sur ce point. Apr\u00e8s dans le futur, le but est clairement de conserver les infos trouv\u00e9es pour entrainer un algorithme de pr\u00e9diction et l\u00e0 peut-\u00eatre que cela pourrait poser plus de probl\u00e8mes, mais ce n'est pas le cas \u00e0 l'heure ou j'\u00e9cris ces lignes. R\u00e9cup\u00e9ration de cookies \u00e0 l'insu de l'utilisateur ? Alors l\u00e0, on est clairement sur le sujet un peu plus \u00e9pineux... Un peu de contexte d'abord : \u00c0 la base, je voulais que l'utilisateur entre ses identifiants dans mon application et ensuite que le navigateur les rentre dans la page de login automatiquement et qu'il puisse se connecter. Deux probl\u00e8mes \u00e0 cette solution : L'utilisateur doit avoir assez confiance en mon programme pour laisser ses identifiants en clair \u00e0 l'int\u00e9rieur. Il est extr\u00eamement difficile de bypass la protection contre les bots de la page de login de la F1TV. J'ai donc d\u00fb trouver une autre solution : Utiliser les cookies ! Le seul souci, c'est que cela voulait dire que l'utilisateur devait aller chercher lui-m\u00eame ses cookies dans le navigateur en utilisant F12 et qu'il devait \u00e0 nouveau me faire confiance pour que je n'en fasse rien. Je trouvais cette solution trop p\u00e9nible pour l'utilisateur alors, j'ai d\u00e9cid\u00e9 d'en trouver une autre. Utiliser les cookies MAIS, sans demander \u00e0 l'utilisateur. Pour faire simple, mon programme va directement d\u00e9coder les cookies encrypt\u00e9s dans la base de donn\u00e9e SQLITE de Chrome, va les stocker dans un CSV en clair et va laisser mon programme C# aller piocher ceux qui l'int\u00e9ressent. Soucis, mon programme a acc\u00e8s \u00e0 tous les cookies de l'utilisateur \u00e0 son insu, cela veut dire que je pourrais les utiliser \u00e0 des fins peu scrupuleuses. Et c'est la solution que j'ai d\u00e9cid\u00e9 de choisir, car elle permet \u00e0 l'utilisateur de ne rien avoir \u00e0 faire pour se connecter depuis l'application, mais cela veut aussi dire qu'il doit me faire confiance pour ne pas utiliser tous ces cookies pour mon utilisation personnelle. Sauf que contrairement aux autres solutions, il ne sait pas qu'il est en train de me faire confiance donc \u00e7a va. :D Non plus s\u00e9rieusement, oui, je pourrais faire n'importe quoi avec les cookies de l'utilisateur, non, je ne vais pas le faire, et non, je ne pr\u00e9vois jamais de le faire. Mais il est int\u00e9ressant de mentionner que mon application met en p\u00e9ril la s\u00e9curit\u00e9 des cookies de l'utilisateur et qu'il serait bien dans le futur de mettre un message explicatif au premier d\u00e9marrage ou dans l'installeur de l'application pour pr\u00e9venir l'utilisateur. Utilisation de Chat GPT \"Logo chat Gpt\" Cette ann\u00e9e, ChatGPT est venu s'installer dans la liste des outils que j'utilise presque quotidiennement pour avancer sur mes projets. J'ai utilis\u00e9 ChatGPT un certain nombre de fois pendant ce travail et je pense qu'il m'a fait gagner un certain nombre d'heures. En effet, dans certains cas tr\u00e8s pr\u00e9cis, ChatGPT est une ressource absolument g\u00e9niale. Je l'ai surtout utilis\u00e9 quand j'avais de soucis avec des librairies ou pour faire du troubleshooting. Ce que j'aime beaucoup avec ChatGPT c'est qu'il s'adapte \u00e0 ce qu'on lui donne. Par exemple, il m'est souvent arriv\u00e9 de vouloir utiliser des librairies comme Puppeteer sharp ou des exemples sont difficilement trouvables sur internet normalement. Et quand je voulais simplement faire fonctionner un exemple tr\u00e8s rapide, il a quasiment toujours pu me fournir le code minimum. Cependant, d\u00e8s que l'on arrive sur des cas encore plus pr\u00e9cis, on atteint assez vite les limites du syst\u00e8me. J'ai fr\u00e9quemment fait appel \u00e0 cet outil pour diagnostiquer du code, que ce soit pour d\u00e9tecter un souci ou m\u00eame plus juste pour voir si mon code avait du sens. En effet, si on donne une m\u00e9thode \u00e0 chatGPT, il va tenter de l'expliquer, et s'il n'y arrive pas, c'est g\u00e9n\u00e9ralement que les variables sont mal nomm\u00e9es ou qu'il y a un souci avec la logique du code. Et pour ce qui est de la d\u00e9tection des erreurs, l'exemple que je peux donner c'est quand je faisais des m\u00e9thodes asynchrones et parall\u00e8les, je pouvais lui donner la m\u00e9thode avec l'erreur que je ne comprends pas et il peut me donner cinq raisons de possibles soucis. Cependant, je pensais utiliser beaucoup plus ChatGpt mais \u00e0 la fin l'outil est assez limit\u00e9 et je ne l'utilisais que quand mes recherches internet \u00e9taient infructueuses. Le seul cas o\u00f9 il m'a un peu sauv\u00e9, c'est quand je travaillais avec Puppeteer et que j'essayais de r\u00e9gler un souci qui faisait que le programme plantait \u00e0 chaque fois que j'ouvrais une vid\u00e9o. Au bout de quelques heures de gal\u00e8re, il m'a juste propos\u00e9 d'utiliser une autre librairie comme s\u00e9l\u00e9nium et il m'a converti tout mon code puppeteer en code utilisable par Selenium, et m\u00eame si cela a demand\u00e9 un peu plus de travail que de copier-coller, pour finir, j'ai pu avoir quelque chose qui marchait et je n'aurais peut-\u00eatre pas eu le r\u00e9flexe ou l'envie de le faire si je n'avais pas utilis\u00e9 cet outil. En conclusion, certaines m\u00e9thodes de mon projet ont \u00e9t\u00e9 faites avec l'aide de ChatGPT mais c'est une minorit\u00e9 et je l'ai surtout utilis\u00e9 pour comprendre des erreurs et pour avoir des pistes \u00e0 explorer pour les fix. Rien de bien fou. Am\u00e9liorations futures Ici, je vais parler de deux types d'am\u00e9liorations. Les am\u00e9liorations \u00e0 court terme, que j'aurais pu faire si je n'avais pas perdu autant de temps sur certains probl\u00e8mes techniques ou si j'avais eu quelques semaines de plus pour travailler sur le projet. Et les id\u00e9es qui seraient plus compliqu\u00e9es \u00e0 mettre en place que je n'aurais jamais pu ajouter \u00e0 ce travail dans le temps imparti, mais qui sont maintenant possibles si je continue pendant quelques mois \u00e0 travailler sur le projet. Court terme Je vais commencer par les petites am\u00e9liorations. Chose que je regrette le plus, je dirai, c'est tout ce qui est affichage. J'aurais vraiment aim\u00e9 faire une magnifique interface, mais il m'a manqu\u00e9 de temps pour en faire une plus jolie et plus facile d'utilisation. Une am\u00e9lioration r\u00e9ellement n\u00e9cessaire serait d'am\u00e9liorer la d\u00e9tection des pneus pour qu'il soit possible de correctement d\u00e9tecter les arr\u00eats aux stands. En g\u00e9n\u00e9ral, si j'avais pu mettre plus de temps dans l'analyse des donn\u00e9es que je re\u00e7ois de la F1TV, j'aurais pu faire un syst\u00e8me plus efficace de d\u00e9tection de d\u00e9passements, car la version actuelle n'est vraiment pas bonne. Trouver un moyen de faire des erreurs plus pr\u00e9cises. En effet, maintenant, certaines erreurs ont des causes qui peuvent \u00eatre multiples (qui peuvent \u00eatre caus\u00e9es par un mauvais lien, ou une erreur de r\u00e9cup\u00e9ration des cookies ou m\u00eame juste de connexion internet). \u00c7a demanderait simplement un peu plus de temps pour qu'au lieu de retourner seulement une erreur, on tente de r\u00e9cup\u00e9rer plus d'infos pour la rendre plus sp\u00e9cifique. Et pour les am\u00e9liorations un peu plus concr\u00e8tes : Impl\u00e9menter plus d'affichages calcul\u00e9s. J'aurais aim\u00e9 ajouter des affichages comme le classement pond\u00e9r\u00e9 des pilotes en fonction des arr\u00eats aux stands. Cela demanderait juste un peu de temps et d'am\u00e9liorer la d\u00e9tection des pitstops. Impl\u00e9menter des affichages pr\u00e9dictifs simples. On pourrait imaginer des algorithmes simple qui pourraient tenter de pr\u00e9dire quand un pilote va en rattraper un autre ou quand un pilote va devoir s'arr\u00eater en fonction des temps aux tours. \u00c7a ne me demanderait pas de nouvelles technologies, mais simplement du temps pour mettre en place et tester les algorithmes. Faire un syst\u00e8me qui puisse tester les algorithmes pr\u00e9dictifs sur un panel de Grand Prix. Si l'\u00e9tape d'avant est faite, on peut facilement imaginer un bout de programme qui aille tester le programme sur diff\u00e9rents Grand Prix pour voir si les pr\u00e9dictions sont bonnes. Avoir une notion d'historique des courses pour avoir une page de comparaison des performances des \u00e9quipes. Par exemple, d\u00e9terminer quelle voiture est la plus rapide et comparer avec les autres circuits. On peut m\u00eame imaginer qu'apr\u00e8s plusieurs Grands Prix, on puisse tenter de d\u00e9terminer quelle \u00e9quipe est forte sur quel circuit. Avoir un syst\u00e8me qui permet de trouver automatiquement tous les liens de Grand Prix comme \u00e7a l'utilisateur n'aie plus besoin d'aller chercher un URL. Faire un installer pour qu'un utilisateur n'ait pas \u00e0 se taper la proc\u00e9dure d'installation (qui est assez p\u00e9nible) \u00e0 la main. Long terme L\u00e0, on va se pencher sur des features qui prendraient plus d'un mois \u00e0 mettre en place correctement. On pourrait imaginer un syst\u00e8me qui puisse regarder 50 Grand Prix et qui change automatiquement les variables des algorithmes en fonction de leurs performances (Un genre d'apprentissage machine rustique). On pourrait imaginer un syst\u00e8me qui puisse cr\u00e9er des infographies. Que ce soit au milieu de la course ou \u00e0 la fin, le programme pourrait nous g\u00e9n\u00e9rer des images avec une stat int\u00e9ressante (ex : x pilote a fait x d\u00e9passements ou x pilote gagnerait x points s'il finissait dans cette position, ce qui le ferait changer de position au classement g\u00e9n\u00e9ral). Si c'est bien fait, cela pourrait \u00eatre un outil extr\u00eamement pr\u00e9cieux, car je pourrais utiliser ces infographies dans mes commentaires. On pourrait avoir un syst\u00e8me qui donne une note de performance pour chaque pilote en fonction de ses performances et en fonction de sa voiture pour faire un genre de classement des pilotes. Il serait g\u00e9nial d'avoir une page de stats qui se souviennent de tous les anciens Grand Prix regard\u00e9s qui permettent d'afficher toutes les stats d'un pilote sur plusieurs courses. (Cela me permettrait, dans des moments o\u00f9 la course stagne un peu, de pouvoir prendre n'importe quel pilote et d'avoir des choses \u00e0 dire \u00e0 son sujet) On pourrait m\u00eame imaginer un syst\u00e8me qui utilise une base de donn\u00e9es sur un serveur Infomaniak et d\u00e9velopper une extension de navigateur qui me donne des infos importantes directement sur la page o\u00f9 je commente le Grand Prix ou qui au moins me fasse des notifications pour que je sache quand aller regarder, car un truc important s'est pass\u00e9. Je vais m'arr\u00eater l\u00e0 parce que les possibilit\u00e9s sont tout simplement infinies. \u00c0 partir du moment o\u00f9 je peux r\u00e9cup\u00e9rer toutes les informations de la F1TV de mani\u00e8re fiable, les champs des possibles sont ouverts et la seule limite est notre imagination. Il n'est pas impossible que je refasse une version de ce projet dans le futur qui me permette d'appliquer tout ce que j'ai appris pour le faire plus proprement (avec de la TDD par exemple) et qui me permette d'impl\u00e9menter toutes ces am\u00e9liorations et plus. Je pense vraiment que si je continue \u00e0 commenter pour le 20 minutes dans les ann\u00e9es qui viennent, cela pourrait \u00eatre int\u00e9ressant de d\u00e9velopper un outil du style qui pourrait grandement m'aider \u00e0 faire des commentaires de qualit\u00e9. Conclusion Bilan Je vais faire un petit bilan de ce travail. D\u00e9j\u00e0, je vous remercie chaleureusement d'avoir lu cette documentation (j'ai d\u00fb la relire en entier une ou deux fois, je sais que ce n'est pas facile). J'esp\u00e8re que j'ai pu parler de tout ce dont je voulais parler et que je l'ai fait de mani\u00e8re explicite et ais\u00e9 \u00e0 lire pour vous. J'ai r\u00e9ellement fait de mon mieux pour qu'elle soit la plus simple possible \u00e0 lire, mais c'est un exercice difficile dans un document de cette taille et je m'excuse des in\u00e9vitables erreurs et coquilles que vous aurez peut-\u00eatre remarqu\u00e9. Je dois avouer que je suis quand m\u00eame tr\u00e8s content d'arriver au bout de ce travail. J'ai vraiment aim\u00e9 cette exp\u00e9rience unique de pouvoir travailler \u00e0 100\u2009% sur un projet et voir de quoi je suis capable. Mais je suis aussi heureux d'arriver \u00e0 la fin, car je dois avouer que \u00e7a n'a pas \u00e9t\u00e9 simple tous les jours et que de travailler presque seul sur un projet si long n'est pas facile. Pour \u00eatre tout \u00e0 fait honn\u00eate, je suis quand m\u00eame fier de ce que j'ai fait (ce qui n'arrive pas souvent). C'est un projet qui est \u00e0 des ann\u00e9es lumi\u00e8res de la perfection, mais c'\u00e9tait mon id\u00e9e et en commen\u00e7ant le projet, je ne savais m\u00eame pas si j'allais y arriver. Certes le r\u00e9sultat n'est pas exactement comme je l'aurais r\u00eav\u00e9, mais il est concret et il fonctionne ! Il y a eu des moments ou en voyant la quantit\u00e9 de choses qu'il restait \u00e0 faire, je me sentais un peu d\u00e9courag\u00e9, mais je suis arriv\u00e9 au bout avec un projet fonctionnel et pour \u00e7a, je suis assez fier. Ce fut un projet difficile, surtout sur le plan de la r\u00e9solution de probl\u00e8mes. Chaque \u00e9tape du projet apportait une nouvelle probl\u00e9matique qu'il fallait r\u00e9soudre et si parfois, j'ai pu trouver des fa\u00e7ons \u00e9l\u00e9gantes de le faire, pour d'autres, il a fallu \u00eatre un peu plus cr\u00e9atif et moins regardant sur la m\u00e9thode, mais que sur le r\u00e9sultat. Je suis un peu frustr\u00e9 de rendre le projet alors que j'ai encore pleins d'id\u00e9es pour le rendre meilleur. Mais je suis content de rendre quelque chose qui fonctionne et qui est d\u00e9j\u00e0 techniquement utilisable sur le terrain. Ce projet m'a \u00e9galement appris pas mal de chose sur ma mani\u00e8re de travailler et sur la gestion de projet et je sais que tous mes futurs projets b\u00e9n\u00e9ficieront de ces apprentissages. R\u00e9sum\u00e9 des \u00e9preuves Ici, je vais tenter de r\u00e9sumer tr\u00e8s rapidement tout ce qui a d\u00fb se passer pour en arriver l\u00e0. Pour commencer, il a fallu trouver un moyen de r\u00e9cup\u00e9rer des images de la F1TV automatiquement. Pour ce faire, j'ai d\u00fb trouver une librairie qui me permette de contr\u00f4ler un navigateur Firefox. Il a ensuite fallu trouver un moyen de se connecter automatiquement, pour ce faire, j'ai d\u00fb \u00e9crire un bout de code Python qui est all\u00e9 chercher les cookies dans la base de donn\u00e9es de chrome. Ensuite, il a fallu r\u00e9ussir \u00e0 naviguer sur la page de la F1TV en tenant compte des chargements et de la protection anti bots. Puis finalement trouver un moyen de retourner une image en assez bonne r\u00e9solution. Avec ces images, il a ensuite fallu d\u00e9velopper un syst\u00e8me qui permette \u00e0 l'utilisateur d'indiquer au programme o\u00f9 se trouvaient les informations. Il a ensuite fallu faire un syst\u00e8me qui utilise ces informations pour d\u00e9couper l'image pour isoler les infos et les envoyer \u00e0 la partie reconnaissance. Cette partie reconnaissance a d\u00fb \u00eatre d\u00e9velopp\u00e9e de mani\u00e8re quasi unique pour chaque type d'information reconnue et en plus de la partie reconnaissance qui \u00e9tait d\u00e9j\u00e0 bien gal\u00e8re, il a fallu faire tout un syst\u00e8me qui puisse d\u00e9tecter les anomalies de reconnaissances pour \u00eatre s\u00fbr que les informations r\u00e9cup\u00e9r\u00e9es \u00e9taient bonnes. Apr\u00e8s tout \u00e7a, il a fallu faire en sorte que ces donn\u00e9es soient stock\u00e9es et affich\u00e9es correctement. Cr\u00e9er une fa\u00e7on de les afficher de mani\u00e8re utile et facile \u00e0 l'utilisateur. Et tout ce beau monde a d\u00fb \u00eatre optimis\u00e9 pour que l'application ne prenne pas une minute pour r\u00e9cup\u00e9rer des images et il a fallu raccorder ensembles toutes les parties du projet en un seul qui fonctionne correctement sans crasher. C'est un r\u00e9sum\u00e9 un peu barbare qui oublie \u00e9norm\u00e9ment de choses et qui ne parle pas des probl\u00e8mes rencontr\u00e9s, mais cela peut donner une vague id\u00e9e de la taille du projet et de pourquoi je suis d\u00e9j\u00e0 si fier, juste que tout fonctionne. Merci d'avoir lu cette documentation, j'esp\u00e8re qu'elle a \u00e9t\u00e9 instructive et je vous souhaite une excellente journ\u00e9e Notes de code Ici, je vais donner quelques petites infos qui pourraient vous \u00eatre utiles si vous d\u00e9cidez d'aller vous aventurer dans mon code source. Le programme n'est pas \u00e0 proprement parl\u00e9 un programme en MVC, le d\u00e9coupage g\u00e9n\u00e9ral suit quand m\u00eame cette philosophie, je vais donc les ranger de cette fa\u00e7on pour que \u00e7a soit plus simple pour vous de comprendre. Vues Comme le projet n'est pas un MVC parfait, les vues font quand m\u00eame quelques actions, mais les deux fichiers dont je vais parler ici sont \u00e0 au moins 90\u2009% juste de la vue Settings.cs Ce fichier contient tout le code pour contr\u00f4ler la vue des \"Settings\" qui est la vue qui se charge de la cr\u00e9ation et \u00e9dition des Presets. Si vous voulez changer le comportement de cette page, il faut \u00e9diter ce fichier. Cette vue utilise deux contr\u00f4leurs : F1TVEmulator ConfigurationTool Le premier pour pouvoir lancer une instance de Firefox qui permet de tester le syst\u00e8me, le second pour effectuer toutes les actions de cr\u00e9ation, modification ou de lecture des \"Presets\" Rien de bien fou \u00e0 dire sur ce fichier. La seule chose un peu bizarre est la gestion de la cr\u00e9ation des zones et des fen\u00eatres. Il y a tout un syst\u00e8me qui peut \u00eatre un peu bizarre \u00e0 premi\u00e8re vue qui sert \u00e0 d\u00e9tecter quand l'utilisateur clique sur l'image pour cr\u00e9er une zone. Je suis s\u00fbr qu'il existe une mani\u00e8re plus propre de le faire que celle que j'ai utilis\u00e9e, mais j'ai fait en sorte que cela fonctionne. Un truc qui serait bien \u00e0 ajouter dans le futur serait un moyen de visualiser au moins les points que l'on ajoute au fur et \u00e0 mesure plut\u00f4t que de tout voir \u00e0 la fin. Form1.cs Ce fichier contient tout le code pour contr\u00f4ler la vue principale. Elle se charge de lancer le navigateur et d'afficher toutes les donn\u00e9es r\u00e9cup\u00e9r\u00e9es ou stock\u00e9es. Cette vue utilise deux contr\u00f4leurs : F1TVEmulator DataWrapper Le premier pour contr\u00f4ler le navigateur (le lancer, le stopper, changer l'URL etc.) et le second pour acc\u00e9der \u00e0 des infos de la base de donn\u00e9e sans avoir \u00e0 l'appeler directement. Contr\u00f4leurs Ces classes ne sont pas des contr\u00f4leurs \u00e0 100\u2009%, car ils contiennent aussi un peu de calcul, etc. mais ont comme but principal de servir d'interface entre la vue et les donn\u00e9es. ConfigurationTool.cs Cette classe sert \u00e0 travailler avec la zone principale pour la contr\u00f4ler et \u00e0 contenir les m\u00e9thode qui servent \u00e0 la cr\u00e9ation de Presets. Les deux grosses m\u00e9thodes que cette classe contient sont : SaveToJson AutoCalibrate La premi\u00e8re sert tout simplement \u00e0 prendre la configuration actuelle et la sauvegarder en format JSON dans un fichier dans le dossier PRESETS. La seconde prend une zone, utilise de l'OCR pour localiser les endroits o\u00f9 il y a du texte et fait une calibration auto pour cr\u00e9er automatiquement les zones de pilotes. Les autres m\u00e9thodes sont juste des m\u00e9thodes qui appellent des m\u00e9thodes de mod\u00e8les et servent seulement d'interface. DataWrapper.cs Cette m\u00e9thode sert \u00e0 faire l'interm\u00e9diaire entre la form principale et le contr\u00f4ler \"Reader\" ainsi que la classe qui contr\u00f4le directement la base de donn\u00e9es. Elle interface avec ces deux classes : Reader Storage Reader est un genre d'hybride, mais qui se veut \u00eatre un genre de contr\u00f4ler de la lecture des donn\u00e9es sur les images et des fichiers JSON tandis que storage est le mod\u00e8le qui interagis directement avec la base de donn\u00e9es SQLITE. Cette classe contient des m\u00e9thodes qui auraient tr\u00e8s pu (et s\u00fbrement d\u00fbes) se retrouver directement dans la vue. La plupart des m\u00e9thodes sont l\u00e0 pour g\u00e9n\u00e9rer des contr\u00f4les qui contiennent des informations r\u00e9cup\u00e9r\u00e9es par la base de donn\u00e9es ou par l'OCR. Reader.cs Cette m\u00e9thode est un genre d'hybride. Elle contient des calculs, etc. mais son but est de servir d'interface entre le reste du programme et les zones/fen\u00eatres de donn\u00e9es. C'est cette m\u00e9thode qui va g\u00e9rer la classe Zone, qui va demander \u00e0 la classe zone de modifier, ajouter ou supprimer des fen\u00eatres etc. Elle contient aussi des m\u00e9thodes pour charger un \"Preset\" et dessiner sur les Images quand une vue en a besoin. Zone.cs Cette m\u00e9thode est clairement la plus discutable en tant que contr\u00f4leur, mais qui est en m\u00eame temps la plus proche. La raison est qu'elle peut \u00eatre deux choses. Une zone principale ou une zone de pilote. Dans le cas ou c'est une zone de pilote, c'est clairement une classe normale qui est utilis\u00e9e par un contr\u00f4leur et qui retourne des infos. Mais quand elle est utilis\u00e9e comme une zone principale, c'est l'orchestre de toutes les zones et fen\u00eatres. Dans ce dernier cas, c'est un interm\u00e9diaire entre les zones et fen\u00eatres. Elle ne sert qu'\u00e0 contr\u00f4ler des sous zones et leurs fen\u00eatres. Les seules m\u00e9thodes de cette classe servent \u00e0 demander des informations aux sous zones/fen\u00eatres. Il n'y a quasi aucun calculs. Mod\u00e8les L\u00e0, on va parler des classes \"classiques\" (lol). Il y a deux types de classes dans cette liste : Les classes normales Les classes enfants de Window.cs Les classes normales sont ind\u00e9pendantes et contiennent toutes des m\u00e9thodes et des infos tr\u00e8s diff\u00e9rentes, tandis que les classes d\u00e9riv\u00e9es de Window.cs ont toutes la m\u00eame structure et ont comme seul et unique but de retourner ce qui est marqu\u00e9 dans leur image. Il est donc normal que ces derni\u00e8res se ressemblent beaucoup. DriverDrsWindow.cs Cette classe est pr\u00e9vue pour contenir une image dans laquelle on peut voir l'\u00e9tat du DRS d'un pilote. La m\u00e9thode qu'elle utilise pour savoir si le pilote a activ\u00e9 son DRS ou non est d'utiliser la moyenne de couleur de son image. Elle retourne true ou false et elle contient elle-m\u00eame toutes les m\u00e9thodes qui sont n\u00e9cessaires pour donner une r\u00e9ponse (c'est un cas rare). DriverGapToLeaderWindow.cs Cette classe est pr\u00e9vue pour contenir une image dans laquelle on peut voir combien de temps s\u00e9pare le pilote actuel du pilote devant lui. La m\u00e9thode qu'elle utilise pour le savoir utilise de l'OCR et fait appel \u00e0 une m\u00e9thode contenue dans son parent Window. Elle est plut\u00f4t vide, car tout le traitement est d\u00e9port\u00e9 dans son parent. DriverLapTimeWindow.cs Cette classe est pr\u00e9vue pour contenir une image dans laquelle on peut voir quel \u00e9tait le dernier temps au tour enregistr\u00e9 du pilote. La m\u00e9thode qu'elle utilise pour le savoir utilise de l'OCR et fait appel \u00e0 une m\u00e9thode contenue dans son parent. Elle est plut\u00f4t vide, car tout le traitement est d\u00e9port\u00e9 vers son parent. DriverNameWindow.cs Cette classe est pr\u00e9vue pour contenir une image dans laquelle on peut voir le nom du pilote \u00e9crit en toutes lettres. La m\u00e9thode qu'elle utilise une partie d'OCR qui est d\u00e9port\u00e9e dans le parent et utilise aussi une m\u00e9thode appel\u00e9e IsADriver (qui aurait pu aussi \u00eatre d\u00e9port\u00e9e dans la page principale) qui v\u00e9rifie si le nom trouv\u00e9 existe. DriverPositionWindow.cs Cette classe est pr\u00e9vue pour contenir une image dans laquelle on peut voir la position d'un pilote. Cette m\u00e9thode est \u00e9galement un peu vide, car pour d\u00e9coder l'image le traitement est d\u00e9port\u00e9 dans son parent. DriverSectorWindow.cs Pareil que pour DriverPositionWindow.cs DriverTyresWindow.cs Cette classe est pr\u00e9vue pour contenir une image dans laquelle on peut voir l'infographique qui repr\u00e9sente le pneu du pilote. Cette m\u00e9thode est la seule fen\u00eatre int\u00e9ressante, car elle utilise du code d\u00e9port\u00e9 dans le parent, mais aussi une certaine proportion qu'elle contient elle-m\u00eame. Elle contient des m\u00e9thodes qui permettent par exemple de trouver la zone int\u00e9ressante dans l'image ou choisir quel pneu un pilote chausse en fonction de la couleur moyenne de l'image de la zone trouv\u00e9e. Pour toutes les zones de type Window, ce qui est vraiment int\u00e9ressant, vous le trouverez dans le parent. F1TVEmulator.cs F1TVEmulator est la classe qui s'occupe de tout ce qui concerne le navigateur Headless. Cette classe utilise la librairie Selenium et est la pour tout faire. Elle s'occupe aussi bien d'envoyer la requ\u00eate, de cliquer sur un bouton apr\u00e8s 34 secondes que de r\u00e9cup\u00e9rer les cookies qui permettront de se connecter ensuite. Voici les m\u00e9thodes qui s'occupent des cookies : StartCookieRecovering GetCookie Je d\u00e9conseille de modifier ces deux m\u00e9thodes. Elles ont une utilit\u00e9 tr\u00e8s claire et elles fonctionnent. (If its not broken dont fix it) Ce qui peut \u00eatre int\u00e9ressant en revanche, c'est la seule autre m\u00e9thode que cette classe propose sobrement intitul\u00e9e \"Start\". Cette m\u00e9thode est cod\u00e9e de mani\u00e8re totalement proc\u00e9durale et d\u00e9crit exactement toutes les actions \u00e0 faire \u00e0 partir du moment ou le navigateur est d\u00e9marr\u00e9, dans quel ordre et s'il faut les faire ou non. Si vous vouliez modifier quelque chose ici, je pense que la bonne id\u00e9e serait une meilleure gestion des erreurs. Pour le moment, si le programme n'arrive pas \u00e0 cliquer sur certains boutons, soit une erreur est lanc\u00e9e, soit on attend un peu avant de r\u00e9essayer. La vraie chose qui manque, c'est la raison pour laquelle ces boutons n'ont pas pu \u00eatre cliqu\u00e9s. Dans l'id\u00e9al, il faudrait ajouter un syst\u00e8me qui peut d\u00e9tecter la panne exacte pour que le message d'erreur soit plus personnalis\u00e9. Sinon c'est une m\u00e9thode qui marche plut\u00f4t bien et qui est faite compl\u00e8tement sur mesure pour l'utilisation de la F1TV. OcrImage.cs L\u00e0, on attaque les classes un peu plus \"bord\u00e9liques\". Cette classe regroupe toutes les actions de filtrage que l'on pourrait vouloir. Cette classe est pas mal utilis\u00e9e pour l'OCR. Il n'y a que deux choses \u00e0 savoir. Presque toutes les m\u00e9thodes de filtres sont g\u00e9n\u00e9riques et peuvent \u00eatre utilis\u00e9es \u00e0 peu pr\u00e8s n'importe o\u00f9 et n'importe quand et devraient toujours fonctionner tant qu'on leur fournit ce dont elles ont besoin (la plupart sont en statique). La seule m\u00e9thode qui va vous int\u00e9resser si vous voulez changer le comportement de l'OCR est la m\u00e9thode \"Enhance\". La m\u00e9thode enhance est un genre de mode d'emploi. Selon le contexte de l'image (si c'est une image qui vient d'une fen\u00eatre de DRS, de temps au tour, de pneu etc.) il y aura une combinaison de filtres diff\u00e9rente. Plusieurs m\u00e9thodes dans cette classe ne sont pas utilis\u00e9es, mais sont gard\u00e9es, car elles pourraient \u00eatre utiles. La plupart du temps, l'utilisation de ces filtres est d\u00e9cid\u00e9e avec des essais \u00e0 t\u00e2tons. Vous comprendrez donc vite que c'est mieux de garder sous le code des m\u00e9thodes car certaines combinaisons marchent mieux que d'autres. SqliteStorage.cs Cette classe est plut\u00f4t simple. Ce sont simplement toutes les m\u00e9thodes qui permettent de cr\u00e9er, \u00e9diter et acc\u00e9der \u00e0 la base de donn\u00e9es SQLITE. Vous y trouverez des m\u00e9thodes qui sont juste l\u00e0 pour cr\u00e9er la base comme d'autres plus sp\u00e9cifiques qui sont un peu plus sp\u00e9cifiques comme celles qui veulent r\u00e9cup\u00e9rer l'ID d'un pilote selon son nom ou celle qui veut r\u00e9cup\u00e9rer l'historique des temps autour d'un pilote. Rien de sp\u00e9cial \u00e0 dire sur cette classe. Window.cs Ahlala... je pense que c'est une des classes les plus longues de tout le projet. Du haut de ses presque 700 lignes, cette classe s'occupe de tout ce que les enfants fen\u00eatres pourraient avoir besoin. On retrouve des m\u00e9thodes pour calculer la diff\u00e9rence entre deux strings qui peut servir pour aider \u00e0 la reconnaissance de noms de pilotes ou bien une m\u00e9thode qui permet de convertir une image en tableau de bytes. La m\u00e9thode la plus grosse cependant et de loin est la m\u00e9thode GetTimeFromPng qui doit impl\u00e9menter un syst\u00e8me qui permet de d\u00e9tecter quand un temps est anormal et d\u00e9tecter si la raison est la mauvaise compr\u00e9hension d'une ponctuation ou le rajout d'un chiffre. Cela prend \u00e9norm\u00e9ment de place, car il y a beaucoup de cas particuliers et il a fallu tout coder \u00e0 la main. Je d\u00e9conseille \u00e0 qui que ce soit de lire cette m\u00e9thode, ainsi, elle pourrait causer de s\u00e9v\u00e8res dommages au cerveau humain. \u00c0 \u00e9crire, ce fut une horreur, \u00e0 comprendre, je n'ose pas imaginer. Sinon pas grand-chose de plus \u00e0 raconter. Structures Les classes de structures sont des classes qui ne contiennent que peu ou pas de traitement et qui sont simplement l\u00e0 pour contenir des informations. Elles sont pratiques, car elles permettent de rendre le code dans les autres classes beaucoup plus lisible et leur \u00e9viter d'utiliser des tuples bizarres. DriverData.cs Cette classe contient toutes les infos d'un pilote \u00e0 un moment donn\u00e9. On peut voir cette classe comme une classe contenant une ligne de la F1TV. Toutes les donn\u00e9es \u00e0 propos d'un pilote que l'on peut d\u00e9tecter en une d\u00e9tection sont stock\u00e9es l\u00e0-dedans. Il n'y a pas de notion d'historique ou quoi que ce soit. C'est simplement un moyen de stocker des donn\u00e9es de pilotes dans d'autres classes en ayant un nom logique et aider \u00e0 la lecture. Pas r\u00e9ellement de traitement. Ce fichier contient \u00e9galement un autre objet : Tyre. Cet objet contient les infos d'un pneu, rien de plus. Et voil\u00e0, ce fut un r\u00e9sum\u00e9 extr\u00eamement succinct de tous les fichiers .CS de l'application pour que vous sachiez ce que vous regardez quand vous irez voir dans la partie code source de la documentation. Normalement, il devrait y avoir aussi un certain nombre de commentaires dans ces fichiers pour expliquer certains choix un peu bizarres. C'est en anglais, mais pas de l'anglais tr\u00e8s difficile \u00e0 comprendre. Bonne chance ! Glossaire Vocabulaire F1 : DRS : Drag Reduction System. : Syst\u00e8me qui permet d'ouvrir l'aileron arri\u00e8re de la monoplace quand elle se trouve \u00e0 une seconde ou moins de la voiture devant elle. Cela permet de r\u00e9duire la train\u00e9e que la voiture subit et lui permet d'avoir un petit boost qui aide \u00e0 d\u00e9passer. Pitstop : Arr\u00eat aux stands : Pendant une course de F1, les pneus s'usent extr\u00eamement vite et tous les pilotes sont oblig\u00e9s de passer au moins une fois par les stands par course pour les changer. Et pour changer ces pneus, ils font un arr\u00eat aux stands que l'on appelle dans le milieu un Pitstop. Pneus Hard, Medium, Soft, Inter, Wet : Types de pneus de F1. Hard est un pneu qui ne s'use pas beaucoup, mais qui est lent, Soft est l'inverse et Medium est l'entre deux. Les pneus sont des outils strat\u00e9giques et il est tr\u00e8s important de savoir lequel chaque pilote utilise. Les pneus Inter et Wet sont des pneus pluies, l'Inter \u00e9tant pour les faibles pluies. Secteur : Section de circuit : Les circuits de F1 sont toujours d\u00e9coup\u00e9s en trois parties qui sont mesur\u00e9es s\u00e9par\u00e9ment et qui permettent une meilleure granularit\u00e9 dans l'estimation des r\u00e9sultats. On n'est pas oblig\u00e9 d'attendre la fin d'un tour pour savoir si un pilote est rapide ou non et on peut voir dans quelle partie du circuit, il est rapide ou lent. Monoplace : Voiture \u00e0 une seule place, terme utilis\u00e9 souvent pour d\u00e9crire les F1 dans le document. Grand Prix : Course officielle de Formule 1. \u00c9v\u00e9nement faisant partie du championnat du monde de Formule 1. Vocabulaire projet : Browser/navigateur Headless : Navigateur qui existe et fonctionne sans interface graphique OCR : Optical Character Recognition : Processus de reconnaissance de texte sur une image par un ordinateur TDD : Test Driver Developppement : D\u00e9veloppement avec pour objectif les test. Les tests sont \u00e9crits en amont et le but du d\u00e9veloppeur est simplement de les faire passer. MVC : Mod\u00e8le Vue Controlleur : Architecture de projet qui s\u00e9pare le traitement de l'information, son affichage et sa gestion. Preset : (dans ce projet) Set d'informations pr\u00e9par\u00e9es \u00e0 l'avance pour \u00eatre utilis\u00e9s ult\u00e9rieurement. DB : Data Base / Base de donn\u00e9e Cookie : Fichier cr\u00e9\u00e9 par un site internet stock\u00e9 sur la machine du client qui est utilis\u00e9 en g\u00e9n\u00e9ral pour conserver des informations de connexion m\u00eame apr\u00e8s la fermeture du navigateur. Window : Fen\u00eatre (dans ce projet) objet contenant une partie d'une image contenant une information pr\u00e9cise. Zone : (dans ce projet) objet contenant une partie d'une image qui peu \u00eatre sous divis\u00e9e en fen\u00eatres de donn\u00e9es. Wrapper : Code qui s'occupe de faire l'interface entre une librairie ou une classe pour rendre l'utilisation plus simple ou plus propre JSON : JavaScript Object Notation : Format de fichier qui permet de stocker des informations dans un format tr\u00e8s pr\u00e9cis AWS : Amazon Web Service : Service d'h\u00e9bergement d'Amazon User Agent : Signature num\u00e9rique du navigateur qui permet \u00e0 un site de d\u00e9tecter le type d'appareil et de navigateur connect\u00e9 (peut \u00eatre chang\u00e9 manuellement) CSV : Comma Separated Values : Format de fichier qui permet de stocker facilement des donn\u00e9es sous forme de tableau API : Application Programming Interface : Interface g\u00e9n\u00e9rique qui permet d'acc\u00e9der \u00e0 une ressource.","title":"Rapport Track Trends V1.0"},{"location":"index.html#rapport-track-trends-v10","text":"Rohmer Maxime Travail de dipl\u00f4me Technicien ES 2023","title":"Rapport Track Trends V1.0"},{"location":"index.html#introduction","text":"","title":"Introduction"},{"location":"index.html#resume","text":"Track Trends est un outil de r\u00e9cup\u00e9ration et d'analyse de donn\u00e9es de courses de Formule 1. Pour le contexte, en dehors des cours, j'exerce diff\u00e9rentes activit\u00e9s dont celle de Live Ticker F1 pour le 20 minutes. Pour m'aider dans ce travail, j'utilise actuellement la F1TV \u00e0 laquelle je suis abonn\u00e9 qui me propose non seulement un feed vid\u00e9o de meilleure qualit\u00e9 avec des commentaires plus pertinents que ceux de la RTS mais qui aussi me permet d'acc\u00e9der \u00e0 un feed vid\u00e9o tr\u00e8s important : la chaine data. Ce dernier ressemble \u00e0 cela : \"Screenshot du feed data de la f1TV\" (Attention, ce n'est pas un joli tableau HTML, mais bien une vid\u00e9o qui contient un tableau.) Sauf que toutes les informations sont \u00e9tal\u00e9es p\u00eale-m\u00eale sans hi\u00e9rarchie, ce qui fait que cela me prendrait trop de temps de tout d\u00e9chiffrer \u00e0 chaque fois, ce qui me fait rater des choses int\u00e9ressantes. Le but du projet est donc de fournir un outil qui hi\u00e9rarchise et affiche diff\u00e9remment les donn\u00e9es pour faciliter leur lecture et me permettre de faire de meilleurs commentaires.","title":"R\u00e9sum\u00e9"},{"location":"index.html#abstract","text":"Track Trends is a Formula 1 data is a tool that displays and interpret data. To understand everything,first ,a little bit of context. In my free time I have multiple activities and one is to be the Live Ticker F1 for the local journal \"20 minutes\" (Owned by Tamedia). to help me in this work I'm currently using the F1TV to which I'm currently subscribed because it provides me with a better video feed with better commentary than the ones from the RTS (in my opinion) but also because it gives me access to a very important video feed : the data channel You can see in the chapter above an example of the F1TV DATA CHANNEL. [Note : Even tough it looks like a pretty HTML table on wich you could easely get infos... Its not. It's a video feed] You can see a lot of data, all well and good BUT! All the data is displayed the same in a big table which make it really hard to read totally in a hurry, which means that I miss a lot of useful information. The point of the project then is to provide a tool that can display those data by taking into account their relevance. So for example, a driver that is 10s away from everyone and that is doing some normal lap times will be less displayed or even not displayed at all, so I can focus on the drivers that are battling each others. This tool would help me not miss the battles and details that are happening in the back and therefore not being broadcasted on TV. And it could be a useful tool for anyone who wants a better insight of how the race is going by looking at the data. This kind of project already exists in the form of the AWS tool \"F1 Insight\" but it is not avaible to the public. We can only see some of its predictions (that are rubbish) and data dumps in the live feed when the TV directors feel like it.","title":"Abstract"},{"location":"index.html#description-du-besoin","text":"Comme expliqu\u00e9 dans le r\u00e9sum\u00e9, je suis Live Ticker F1. Mais pour mieux comprendre le besoin que j'ai, je pense qu'il est pertinent de comprendre comment je travaille. Pendant un Grand Prix de Formule 1 j'ai plusieurs t\u00e2ches \u00e0 effectuer : Suivre les diff\u00e9rents \u00e9v\u00e8nements du Grand Prix Changer le titre et la photo de titre du Live Chercher des Tweets ou des Images \u00e0 int\u00e9grer Ecrire les commentaires en faisant attention \u00e0 dire ce qu'il se passe mais aussi l\u2019expliquer, ce que cela implique, mais aussi ce que cela veut dire pour le reste de la course. Comprendre et expliquer les strat\u00e9gies Tout cela toutes les cinq minutes max... Cela veut dire que je dois \u00eatre le plus rapide possible quand je cherche des informations. Et comme le tableau en comporte trop et bien, je suis oblig\u00e9 de le lire en diagonale. Par exemple dans le tableau, les infos que je cherche le plus sont : Le nombre de places gagn\u00e9es (surtout au d\u00e9part) Les \u00e9carts entre les pilotes (surtout ceux qui sont en dessous de deux secondes). Les pneus de chaque pilote et combien de tours, ils ont fait dessus Les temps d'arr\u00eats aux stands Les temps au tour (surtout pour la strat\u00e9gie) Mais pleins d'autres informations existent si on les recoupe sur plusieurs tours. Un outil qui permettrait de mettre en \u00e9vidence les informations importantes serait donc une tr\u00e8s grosse plus-value pour mon travail et s'il est facile \u00e0 installer et \u00e0 utiliser, il se pourrait qu'il devienne indispensable.","title":"Description du besoin"},{"location":"index.html#cahier-des-charges","text":"Il s'agit d'une version coup\u00e9e du cahier des charges qui ne contient pas l'explication du contexte. Mais l'original est disponible sur ce site \u00e9galement. Il est toutefois normal d'y voir des choses r\u00e9p\u00e9t\u00e9es ou l\u00e9g\u00e8rement diff\u00e9rentes, en effet, il n'a pas \u00e9t\u00e9 \u00e9crit en m\u00eame temps que le reste de ce document.","title":"Cahier des charges"},{"location":"index.html#projet","text":"Un outil de style compagnon sous forme d'application C# Windows Form qui r\u00e9cup\u00e8re en temps r\u00e9el les informations de la course et affiche les informations les plus importantes. Le but est non seulement de faciliter mon job, mais aussi faire en sorte d'am\u00e9liorer la plus-value de mon travail en me permettant de fournir des commentaires qui ne sont pas disponibles pour le tout venant qui regarde simplement le flux RTS. Exemples : Les pilotes qui sont proches (moins de 1-2 secondes qui sont donc en train de se battre). Les pilotes qui am\u00e9liorent leur temps au tour et ceux qui perdent le plus de temps Le classement pond\u00e9r\u00e9 tenant compte des futurs arr\u00eats au stand Maintenant afficher diff\u00e9remment les infos, c'est sympa, mais cela serait encore mieux de traiter ces data et de permettre des petites pr\u00e9dictions. Exemples : Pr\u00e9dire les arr\u00eats aux stands en prenant en compte les baisses de performances des pneus Pr\u00e9dire le pneu que le pilote va chausser s'il rentre aux stands dans le prochain tour Pr\u00e9dire dans combien de tour tel pilote va rattraper tel autre pilote Pr\u00e9dire combien de temps le pilote va perdre dans les stands en fonctions des arr\u00eats pr\u00e9c\u00e9dents","title":"Projet"},{"location":"index.html#realisation","text":"Malheureusement, la Formula 1 Management ne propose aucune API publique qui puisse nous permettre de faire ce projet \"simplement\". La raison la plus probable \u00e9tant qu'Amazon avec son service AWS propose exactement ce genre de services pour le flux t\u00e9l\u00e9vis\u00e9 et il doit y avoir un contrat d'exclusivit\u00e9. Il existe des API \"Pirates\" faites par la communaut\u00e9, le probl\u00e8me est qu'elles ne sont pas forc\u00e9ment des plus pratiques \u00e0 utiliser. Mais comme je poss\u00e8de un abonnement premium ++ \u00e0 la F1TV, j'ai acc\u00e8s pour chaque grand prix \u00e0 un flux vid\u00e9o nomm\u00e9 : DATA F1 CHANNEL Qui ressemble \u00e0 \u00e7a : \"Exemple de la Data Channel\" Donc la seule fa\u00e7on que je vois de r\u00e9cup\u00e9rer ces donn\u00e9es est de les prendre directement sur ce feed. M\u00eame si le but final de l'application est de faire pleins de choses super avec les datas, le gros du projet va surtout \u00eatre la r\u00e9cup\u00e9ration des donn\u00e9es et leur stockage. Les donn\u00e9es viennent du flux vid\u00e9o et ainsi dans un premier temps, il va falloir r\u00e9cup\u00e9rer d'une mani\u00e8re ou d'une autre des images qui viennent d'un grand prix en direct ou en rediffusion. Ensuite, dans un second temps, il faut lire les informations directement sur l'image en utilisant une librairie pr\u00e9vue pour (exemple Tesseract) et v\u00e9rifier l'int\u00e9grit\u00e9 de ces derni\u00e8res pour qu'on puisse ensuite les stocker. Dans un troisi\u00e8me temps, il faut stocker toutes ces donn\u00e9es dans une forme qui permette d'aller facilement faire des requ\u00eates de r\u00e9cup\u00e9ration et d\u00e9j\u00e0 pr\u00e9parer des m\u00e9thodes qui permettent de r\u00e9cup\u00e9rer des infos importantes (ex : la moyenne des cinq derniers tours, le temps moyen d'arr\u00eat, etc.) pour faciliter la derni\u00e8re \u00e9tape Quand tout cela est fait, on peut ensuite s'amuser un peu avec les Data. La derni\u00e8re \u00e9tape est donc l'affichage. L'id\u00e9e est de cr\u00e9er une Windows Form qui contienne toutes ces informations dans un format beaucoup plus lisible et avec laquelle on pourrait interagir pour permettre de plus facilement commenter les Grands Prix. (exemple plus bas avec un croquis de ce \u00e0 quoi l'application pourrait ressembler) Voici la liste des donn\u00e9es qui pourraient \u00eatre affich\u00e9es (Non contractuel, simplement des id\u00e9es). Les pilotes qui sont proches (moins de 1-2 secondes qui sont donc en train de se battre). Les pilotes qui am\u00e9liorent leur temps au tour et ceux qui perdent le plus de temps Le classement pond\u00e9r\u00e9 tenant compte des futurs arr\u00eats au stand La moyenne de temps que les pilotes perdent dans les stands La performance moyenne des 5 types de pneus La moyenne de temps de chaque pilote sur le pneu actuel Le nombre de points que chaque pilote gagnerait selon sa position Le classement de la course Voire m\u00eame si c'est possible : Pr\u00e9dire les arr\u00eats aux stands en prenant en compte les baisses de performances des pneus Pr\u00e9dire le pneu que le pilote va chausser s'il rentre aux stands dans le prochain tour Pr\u00e9dire dans combien de tour tel pilote va rattraper tel autre pilote Pr\u00e9dire combien de temps le pilote va perdre dans les stands en fonctions des arr\u00eats pr\u00e9c\u00e9dents Pr\u00e9dire les temps au tour de chaque pilote selon l'usure des pneus Voici un exemple d'interface possible pour une page : \"Prototype de l'app fait sur Figma\"","title":"R\u00e9alisation"},{"location":"index.html#cas-dutilisation","text":"'*'On va consid\u00e9rer que tous les user ont un abonnement F1 TV PRO Un user veut r\u00e9cup\u00e9rer les data : Il ouvre son navigateur et lance la page DATA de la F1 TV Il calibre la capture des data via le programme (pour la premi\u00e8re utilisation). Il confirme que les donn\u00e9es initiales sont bonnes (pour la premi\u00e8re utilisation). Il regarde tranquille son Grand Prix Le programme r\u00e9cup\u00e8re les data : Il r\u00e9cup\u00e8re des images depuis la F1TV Il utilise Tesseract (ou autre) pour en r\u00e9cup\u00e9rer les infos. Il met ces infos dans un Objet Pilote, dans un Objet course avec un attribut tour pour hi\u00e9rarchiser les data Pour ce qui est de l'affichage, l'id\u00e9e est de faire une application C# comme on l'a appris \u00e0 l'\u00e9cole, mais avec assez de style pour qu'elle puisse \u00eatre agr\u00e9able \u00e0 utiliser. Quand le programme affiche les data : Il prend les donn\u00e9es venant directement de la F1TV. Il affiche diff\u00e9remment les donn\u00e9es pour permettre une meilleure lisibilit\u00e9 Il interpr\u00e8te avec des r\u00e8gles plut\u00f4t simples certaines data pour faire des minipr\u00e9dictions ou aider \u00e0 la lecture Il r\u00e9cup\u00e8re des infos d'autres courses pour les comparer et proposer des pr\u00e9dictions plus int\u00e9ressantes","title":"Cas d'utilisation"},{"location":"index.html#difficultes-techniques","text":"R\u00e9cup\u00e9rer un flux vid\u00e9o plut\u00f4t propre malgr\u00e9 les contres mesures de la F1 TV pour en emp\u00eacher la lecture par un logiciel Si on doit passer par une capture d'\u00e9cran, trouver un moyen de stocker les donn\u00e9es de mani\u00e8re \u00e0 pr\u00e9voir que parfois un tour pourrait avoir plus de donn\u00e9es qu'un autre, que le user peut mettre pause, ou m\u00eame qu\u2019il revienne en arri\u00e8re. D\u00e9velopper des algorithmes pour r\u00e9cup\u00e9rer les donn\u00e9es comme les diff\u00e9rents pneus utilis\u00e9s ou l'activation du DRS ainsi que d\u00e9velopper des moyens de nettoyer les r\u00e9sultats de l'OCR (Par exemple utiliser diff\u00e9rents champs redondants pour comparer les r\u00e9sultats) Stocker les donn\u00e9es sur une base pour les traiter plus tard tout en pr\u00e9voyant un moyen de voir les stats live D\u00e9velopper des algorithmes de pr\u00e9diction qui prennent en compte d'anciennes courses pour tenter de pr\u00e9dire des choses comme les arr\u00eats aux stands par exemple.","title":"Difficult\u00e9s techniques"},{"location":"index.html#differences-sur-le-cahier-des-charges","text":"Ici, je vais parler de l'\u00e9tat du projet \u00e0 la date du 12 Juin 2023. \u00c0 cette date, le projet est fonctionnel, mais comporte quelques diff\u00e9rences avec le cahier des charges original. Je vais expliquer non seulement ces diff\u00e9rences, mais aussi les raisons qui font qu'elles sont l\u00e0. Pour bien comprendre les diff\u00e9rences, il faut s'en r\u00e9f\u00e9rer au cahier des charges original. L'application doit \u00eatre \"Un outil de style compagnon sous forme d'application C# Windows Form qui r\u00e9cup\u00e8re en temps r\u00e9el les informations de la course et affiche les informations les plus importantes\". C'est \u00e7a la phrase la plus importante dans tout le CDC. Et je pense que tr\u00e8s honn\u00eatement, ce cahier des charges est rempli ! L'application actuellement disponible sur le repos GIT est une application de style compagnion Windows Forms qui r\u00e9cup\u00e8re les infos de la F1TV en temps r\u00e9el et elle affiche les informations qu'elle trouve importante. Donc, je dirais que l'objectif g\u00e9n\u00e9ral est rempli. Maintenant, c'est dans les d\u00e9tails que cela p\u00eache. Il est mentionn\u00e9 trois exemples d'infos \u00e0 suivre, je cite : \"Les pilotes qui sont proches (moins de 1-2 secondes qui sont ainsi en train de se battre).\" \"Les pilotes qui am\u00e9liorent leur temps au tour et ceux qui perdent le plus de temps\" \"Le classement pond\u00e9r\u00e9 tenant compte des futurs arr\u00eats au stand\" r\u00e9sultats : Dans l'application, on peut effectivement voir les pilotes proches (Ce sont ceux qui sont \u00e0 moins de 3 secondes dans le version finale) Dans l'application, on peut aussi voir un affichage qui permet de voir les pilotes les plus rapides et les plus lents sur le circuit. On ne peut en revanche pas voir de classement pond\u00e9r\u00e9 selon les arr\u00eats aux stands, car l'application a du mal \u00e0 d\u00e9tecter des arr\u00eats. Ensuite pour ce qui est des pr\u00e9dictions, il n'y en a aucunes comme \u00e7a, c'est simple. Si on ne regarde que de tr\u00e8s loin le CDC et le projet final, on pourrait dire que c'est plut\u00f4t d\u00e9cevant puisqu'il manque beaucoup de choses comme les pr\u00e9dictions et certains affichages. On peut aussi se dire \u00e7a en comparant la maquette du CDC et le r\u00e9sultat final. \"Maquette originale du projet faite sur Figma\" \"Maquette originale du projet faite sur Figma\" Clairement, un \u0153il non avis\u00e9 pourrait \u00eatre tr\u00e8s d\u00e9\u00e7u et pourrait dire que c'est un \u00e9chec. Et moi je vais vous expliquer pourquoi, au contraire c'est un total succ\u00e8s. D\u00e9j\u00e0, la beaut\u00e9 de l'interface est tr\u00e8s difficile \u00e0 r\u00e9pliquer en Windows Forms et il faudrait plus d'une semaine de travail pour arriver \u00e0 quelque chose qui pourrait ressembler un tout petit peu \u00e0 la maquette. Ensuite, si on regarde bien, on a quand m\u00eame une application qui nous permet de suivre les informations de la course et qui calcule des choses \u00e0 notre place. C'est d\u00e9j\u00e0 une grosse plus-value par rapport \u00e0 la page Data de la F1TV. Et finalement, les pr\u00e9dictions, les affichages et le style, ce sont les choses les moins compliqu\u00e9es du projet. On ne se rend pas compte que pour simplement afficher les 20 pilotes dans le bon ordre, il faut \u00e9norm\u00e9ment de travail. Voici une petite repr\u00e9sentation graphique de la quantit\u00e9 de travail n\u00e9cessaire pour en arriver \u00e0 l'\u00e9tat actuel du projet : \"Graphique repr\u00e9sentant la quantit\u00e9 de travail requise\" Pour en arriver \u00e0 un affichage, il a fallu r\u00e9cup\u00e9rer automatiquement les images en utilisant un browser headless ce qui a pris un temps fou \u00e0 mettre en place et il a fallu surtout lire les informations que l'on recevait des images. J'ai pass\u00e9 presque 90\u2009% du temps de mon projet \u00e0 d\u00e9velopper des choses qui permettront ensuite de faire de l'affichage. Le fait qu'il y ait quoi que ce soit de logique qui s'affiche, cela veut dire que TOUT LE RESTE fonctionne ! Le moindre souci \u00e0 la r\u00e9cup\u00e9ration des images, ou surtout \u00e0 la reconnaissance de texte et de chiffres, et l'affichage est ruin\u00e9. Si j'avais pass\u00e9 ne serait-ce qu'une semaine de plus juste sur l'affichage, le r\u00e9sultat final n'aurait rien \u00e0 voir. Le souci, c'est simplement que le cahier des charges ne parle pas du tout du reste du projet et ne parle que du r\u00e9sultat final. Pour toutes ces raisons, je dirais que le CDC \u00e9tait trop superficiel, mais que l'application est conforme \u00e0 l'id\u00e9e g\u00e9n\u00e9rale de ce dernier et qu'il serait tr\u00e8s facile de la rendre parfaitement conforme maintenant que tout le travail de fond a \u00e9t\u00e9 fait et fonctionne et je pense donc que c'est un succ\u00e8s.","title":"Diff\u00e9rences sur le cahier des charges"},{"location":"index.html#planning-previsionnel","text":"Mes suiveurs m'ont demand\u00e9 un planning de type GANTT pour ce travail de dipl\u00f4me Je n'ai pas utilis\u00e9 un logiciel particulier pour faire ce dernier, mais je me suis inspir\u00e9 des principes fondamentaux d'un diagramme de ce type. Comme l'original a \u00e9t\u00e9 fait sur Excel, je ne peux pas vraiment l'ins\u00e9rer de mani\u00e8re lisible ici, mais il est disponible dans le dossier Planning. Mais voici un r\u00e9sum\u00e9 de son contenu :","title":"Planning pr\u00e9visionnel"},{"location":"index.html#taches","text":"J'ai d\u00e9cid\u00e9 de d\u00e9composer mon planning en trois grands types de t\u00e2ches. Programmation Documentation Tests L'id\u00e9e est de permettre une meilleure lisibilit\u00e9 et de me permettre \u00e0 moi de me faire plus facilement \u00e0 l'id\u00e9e de ce qu'il m'attend. Voici la liste des t\u00e2ches par rubrique :","title":"T\u00e2ches"},{"location":"index.html#pt","text":"Cette rubrique contient les t\u00e2ches qui n'ont pas leur place dans les trois cat\u00e9gories principales.","title":"PT"},{"location":"index.html#pt1-preparation-au-travail-de-diplome-2","text":"Cette t\u00e2che est un peu hors cat\u00e9gorie, mais c'est normal, c'est une supert\u00e2che qui regroupe beaucoup de choses. C'est une t\u00e2che qui est planifi\u00e9e pour deux jours et qui normalement devrait \u00eatre faite les deux premiers jours du travail. Le but est de pr\u00e9parer tout ce qui peut \u00eatre pr\u00e9par\u00e9 en avance niveau documentation et mise en place pour ne pas avoir besoin de s'en soucier ensuite.","title":"PT1 / pr\u00e9paration au travail de dipl\u00f4me (2)"},{"location":"index.html#dt","text":"Rubrique documentation qui contient toutes les t\u00e2ches en rapport de pr\u00e8s ou de loin avec la documentation du projet.","title":"DT"},{"location":"index.html#dt1-creation-du-poster-1","text":"Cette t\u00e2che consiste \u00e0 faire une version num\u00e9rique du poster qui soit en accord avec les consignes qu'on nous a donn\u00e9es. Le but est aussi et surtout de faire poster dont je sois fier et que je sois content de montrer. Il y a d\u00e9j\u00e0 des croquis de poster et j'ai clairement pr\u00e9vu de travailler sur \u00e7a pendant les vacances alors, je n'ai mis qu'un jour et je l'ai plac\u00e9 juste avant le rendu de ce dernier.","title":"DT1 Cr\u00e9ation du poster (1)"},{"location":"index.html#dt2-documentation-analyse-de-lexistant-2","text":"Cette t\u00e2che est d\u00e9di\u00e9e \u00e0 l'\u00e9criture de la documentation et plus pr\u00e9cis\u00e9ment de l'analyse de l'existant. Comme il y a pas mal de technologies utilis\u00e9es dans mon projet, j'aimerais faire correctement un vrai debrief de pourquoi j'ai utilis\u00e9 l'une ou l'autre, alors, j'ai assign\u00e9 deux jours dessus.","title":"DT2 Documentation Analyse de l'existant (2)"},{"location":"index.html#dt3-documentation-analyse-organique-5","text":"Cette t\u00e2che est la plus grosse dans la cat\u00e9gorie documentation. Il s'agit de documenter comment l'application fonctionne. J'y ai mis cinq jours et je pense que c'est un minimum, car c'est dans cette t\u00e2che que je vais devoir d\u00e9tailler exactement comment fonctionne chaque partie du projet. Ces cinq jours sont \u00e9parpill\u00e9s sur le projet en g\u00e9n\u00e9ral \u00e0 la fin du d\u00e9veloppement de chaque grande partie de projet. Le but est de ne rien oublier et de ne pas avoir \u00e0 tout faire en m\u00eame temps.","title":"DT3 Documentation Analyse organique (5)"},{"location":"index.html#dt4-documentation-analyse-fonctionnelle-2","text":"Cette t\u00e2che est d\u00e9j\u00e0 moins grosse, elle consiste \u00e0 documenter le fonctionnement de l'application et comment utiliser les composants que j'ai d\u00e9velopp\u00e9s. Je l'ai mis en fin de projet, car comme j'ai l'habitude de faire des analyses fonctionnelles plut\u00f4t pr\u00e9cises, le moindre changement dans l'UI peut tout rendre obsol\u00e8te. J'y ai mis deux jours, puisque j'aimerais correctement documenter avec de bonnes photos et sc\u00e9narios pour qu'on puisse voir toutes les possibilit\u00e9s de l'application.","title":"DT4 Documentation Analyse fonctionnelle (2)"},{"location":"index.html#dt5-documentation-tests-1","text":"Cette t\u00e2che est un peu plus petite qu'elle ne le devrait. Elle concerne la documentation des diff\u00e9rents tests. Je n'y ai mis qu'un seul jour, car en r\u00e9alit\u00e9 les diff\u00e9rentes t\u00e2ches de tests contiennent aussi beaucoup de documentation,","title":"DT5 Documentation Tests (1)"},{"location":"index.html#dt6-documentation-reste-2","text":"Cette t\u00e2che est une t\u00e2che un peu vague. Elle contient toutes les actions autres que j'aurai besoin de faire (Mise au propre, orthographe, g\u00e9n\u00e9ration de PDF ...). J'y ai mis deux jours pour avoir un peu de marge, car ce sont toujours des t\u00e2ches qui paraissent faciles, mais qui \u00e0 la fin prennent beaucoup de temps si on les fait bien.","title":"DT6 Documentation Reste (2)"},{"location":"index.html#pt_1","text":"Rubrique programmation qui contient toutes les t\u00e2ches qui touchent \u00e0 la programmation et au d\u00e9veloppement de l'application.","title":"PT"},{"location":"index.html#pt1-programmation-recuperation-des-images-3","text":"Cette t\u00e2che est estim\u00e9e \u00e0 seulement trois jours, il ne faut pas s'y m\u00e9prendre, c'est une des t\u00e2ches les plus dures et lourdes au niveau de la documentation et en explications. Cependant, un POC (Proof Of Concept) assez avanc\u00e9 a d\u00e9j\u00e0 \u00e9t\u00e9 fait et donc cela permet de n'envisager que trois jours, car il suffit de l'impl\u00e9menter et de la peaufiner. Cette t\u00e2che consiste \u00e0 prendre en entr\u00e9e un lien de Grand Prix et de sortir une image tous les x secondes de la page DATA. Cela peut sembler simple, mais pour le faire sans prendre d'espace d'\u00e9cran et ne demandant pas \u00e0 l'utilisateur de copier-coller quoi que ce soit o\u00f9 de donner ses identifiants F1TV c'est un challenge. Cela peut paraitre curieux alors de mettre cette t\u00e2che loin dans le planning m\u00eame si c'est la premi\u00e8re \u00e9tape du projet. Encore une fois, cela s'explique avec le fait qu'il y a d\u00e9j\u00e0 un POC qui fonctionne \u00e0 peu pr\u00e8s et que donc pr\u00e9f\u00e8re commencer avec des t\u00e2ches plus incertaines dans le cas o\u00f9 elles prendraient plus de temps que pr\u00e9vu.","title":"PT1 Programmation r\u00e9cup\u00e9ration des images (3)"},{"location":"index.html#pt2-programmation-ocr-5","text":"Cette t\u00e2che consiste \u00e0 d\u00e9velopper la partie qui reconnait le texte sur les images. C'est tr\u00e8s certainement la t\u00e2che qui risque le plus de d\u00e9border, car c'est celle qui est la plus complexe techniquement puisqu'elle demande non seulement la lecture sur image, mais aussi le d\u00e9veloppement d'algorithmes de traitement de cette donn\u00e9e pour \u00eatre s\u00fbr qu'elle a bien \u00e9t\u00e9 lue. J'y ai ainsi allou\u00e9 cinq jours, mais j'esp\u00e8re que j'arriverai \u00e0 gagner du temps sur les autres pour y allouer plus dans le planning effectif, car je suis convaincu que plus, on y passe du temps, meilleur sera le r\u00e9sultat.","title":"PT2 Programmation OCR (5)"},{"location":"index.html#pt3-programmation-stockage-et-modele-5","text":"Cette partie est moins technique, mais concerne le stockage des donn\u00e9es que nous retourne la lecture des images. Mais elle va demander de la r\u00e9flexion et de l'intelligence de programmation, car il faut que cette partie anticipe les besoins de la vue et pr\u00e9pare un terrain fertile qui ne demande pas un refactor quand on passera au d\u00e9veloppement de la vue. C'est pour cela que je lui ai aussi assign\u00e9 cinq jours de travail et elle doit absolument \u00eatre commenc\u00e9e apr\u00e8s la lecture.","title":"PT3 Programmation, stockage et mod\u00e8le (5)"},{"location":"index.html#pt4-programmation-vue-de-lapp-5","text":"Cette partie peut \u00eatre horrible comme tr\u00e8s facile, cela d\u00e9pend compl\u00e8tement de la qualit\u00e9 du travail avant. Si le mod\u00e8le est parfait et que les donn\u00e9es sont int\u00e8gres, cela devrait \u00eatre plut\u00f4t simple de les afficher de mani\u00e8re int\u00e9ressante. Cependant, cette partie d\u00e9bordera s\u00fbrement un peu, car tout le temps gagn\u00e9 avec de bonnes donn\u00e9es sera utilis\u00e9 pour tenter de faire de la pr\u00e9diction. Pour ces raisons, je lui ai assign\u00e9 \u00e9galement cinq jours de travail et elle doit absolument \u00eatre faite apr\u00e8s le mod\u00e8le.","title":"PT4 Programmation Vue de l'APP (5)"},{"location":"index.html#pt5-programmation-mise-en-commun-3","text":"Cette t\u00e2che est aussi un petit peu sp\u00e9ciale, car elle regroupe plusieurs choses. En gros, chaque partie de programmation sera assur\u00e9ment assez ind\u00e9pendante et il faudra \u00e0 un moment faire un seul projet C# qui contient tout. Il est difficile d'estimer \u00e0 quel point cela va \u00eatre compliqu\u00e9 alors, j'ai \u00e9t\u00e9 conservateur et j'ai mis trois jours.","title":"PT5 Programmation mise en commun (3)"},{"location":"index.html#tt","text":"Cette rubrique contient les t\u00e2ches qui sont uniquement des tests. La plupart des t\u00e2ches de programmations contiennent d\u00e9j\u00e0 des tests, mais certaines demandent une attention particuli\u00e8re.","title":"TT"},{"location":"index.html#tt1-tests-ocr-2","text":"Cette t\u00e2che est une des t\u00e2ches les plus importantes. Son but est de faire un protocole de tests complet qui permette de comparer les diff\u00e9rents algorithmes de reconnaissance de texte. Je l'ai mise apr\u00e8s la reconnaissance, mais m\u00eame maintenant en \u00e9crivant ces lignes, je me dis que dans le planning effectif, elle sera faite pendant la t\u00e2che de programmation. En effet, comment savoir si mon tout nouvel algorithme est r\u00e9ellement mieux que le pr\u00e9c\u00e9dent. Je pr\u00e9vois deux jours, car je pense que faire le dataset va prendre beaucoup de temps, il faut pr\u00e9voir un certain nombre d'images et de texte qui pourront ensuite \u00eatre donn\u00e9es sous forme de tests. C'est certes une t\u00e2che de test, mais c'est aussi de la programmation.","title":"TT1 Tests OCR (2)"},{"location":"index.html#tt2-tests-finaux-2","text":"Cette t\u00e2che de tests est un peu vague, elle regroupe les diff\u00e9rents tests pour v\u00e9rifier que les donn\u00e9es sont bien affich\u00e9es correctement. Ce qui serait cool si j'ai du temps en fin de travail de dipl\u00f4me serait de faire un syst\u00e8me de test qui permet d'entrainer le programme \u00e0 mieux reconnaitre certaines choses comme des arr\u00eats aux stands si on lui donne les trois derni\u00e8res ann\u00e9es de grands Prix. J'ai mis une dur\u00e9e arbitraire de deux jours, mais je ne sais pas vraiment combien de temps cela va vraiment durer. Elle est \u00e9videmment \u00e0 effectuer une fois que tout est \u00e0 peu pr\u00e8s termin\u00e9.","title":"TT2 Tests finaux (2)"},{"location":"index.html#planning-effectif-et-differences","text":"Alors ! Ces lignes sont \u00e9crites dans les derniers jours du travail de dipl\u00f4me et j'ai des choses \u00e0 dire. Premi\u00e8rement, je suis plut\u00f4t content de mon estimation du travail. Je trouve que j'ai bien estim\u00e9 la quantit\u00e9 de travail et combien de temps les diff\u00e9rentes t\u00e2ches allaient prendre. La plupart des d\u00e9passements sont des impr\u00e9vus et/ou des allers et des retours entre d'autres t\u00e2ches. La raison pour laquelle je suis plut\u00f4t content de ma planification, c'est que malgr\u00e9 l'usine \u00e0 Gaz que repr\u00e9sente ce projet et le nombre de soucis que j'ai eu, j'ai quand m\u00eame pu arriver \u00e0 un projet qui fonctionne en suivant essentiellement fid\u00e8lement le planning. Une chose dont je suis assez fier, c'est la documentation. En ayant d\u00e9velopp\u00e9 le squelette de l'app d\u00e8s le d\u00e9but du projet, \u00e7a m'a permis d'avancer au fur et \u00e0 mesure du projet la conscience tranquille. Bon, c'est bien joli les fleurs, mais clairement, c'est loin d'\u00eatre parfait. Au moment de la planification, je n'avais pas pr\u00e9vu de faire des allers et des retours entre plusieurs t\u00e2ches. Dans le planning effectif, on peut voir qu'un jour, je suis sur la PT3 (Stockage) et la PT5 (regroupement des mini projets en un seul gros). J'aurais peut-\u00eatre d\u00fb inverser l'ordre. Mais il y a deux gros soucis dans mon planning : L'ordre des t\u00e2ches n'\u00e9tait pas bon (mais il a \u00e9t\u00e9 d\u00e9cid\u00e9 comme \u00e7a pour que les plus grosses difficult\u00e9s soient faites en premier) ce qui a cr\u00e9\u00e9 pas mal de soucis. Ex : L'\u00e9mulateur de la F1TV a \u00e9t\u00e9 fait tr\u00e8s tard et finalement les images r\u00e9cup\u00e9r\u00e9es n'\u00e9taient pas de la m\u00eame qualit\u00e9 que ce que j'avais pr\u00e9vu en d\u00e9veloppant l'OCR en premier. Les Tests ont \u00e9t\u00e9 n\u00e9glig\u00e9s et utilis\u00e9s comme des jours tampons. \u00c7a, c'est la plus grosse erreur de planning. Autant les autres sont p\u00e9nibles, etc. mais n'ont pas forc\u00e9ment compromis la bonne r\u00e9alisation du projet alors que les tests ont \u00e9t\u00e9 mal plac\u00e9s et ont finalement \u00e9t\u00e9 balay\u00e9s tandis que s'ils avaient \u00e9t\u00e9 mieux planifi\u00e9s \u00e7a ne serait pas arriv\u00e9. Solutions : L'ordre des t\u00e2ches a \u00e9t\u00e9 d\u00e9cid\u00e9 expr\u00e8s de cette fa\u00e7on pour \u00e9viter de prendre trop de risques. L'id\u00e9e \u00e9tait qu'en faisant le plus dur au d\u00e9but, je pourrai facilement changer le cahier des charges. J'ai envie de dire que j'aurais d\u00fb \u00eatre plus confiant, mais pour \u00eatre honn\u00eate, je pense que c'\u00e9tait un mal pour un bien. Je ne pense pas avoir \"bien\" fait, mais je pense que c'est une erreur qui \u00e9tait rentable pour mon niveau de stress dans le projet. Par contre, les Tests c'est tout simplement une erreur. J'en parle plus en d\u00e9tail dans la partie test de la documentation, mais je vais r\u00e9sumer un peu ici. La documentation a \u00e9t\u00e9 faite d\u00e8s le d\u00e9but du projet. J'ai mis en place le squelette pour qu'ensuite, il soit simple d'y ajouter au fur et \u00e0 mesure. J'aurais d\u00fb faire exactement pareil avec les tests. Si j'avais fait au moins le squelette des tests au d\u00e9but du projet, j'aurais pu beaucoup plus facilement en faire et cela m'aurait fait gagner un temps fou et j'aurais m\u00eame pu faire du TDD (Test Driven Developpement). Je suis persuad\u00e9 que cette b\u00eate erreur de planification m'a co\u00fbt\u00e9 tr\u00e8s cher, car ne pas avoir une bonne strat\u00e9gie de tests a d\u00fb me faire perdre un temps fou. Pour conclure, je suis content parce que j'ai r\u00e9ussi \u00e0 rendre un projet qui marche en suivant assez bien le planning, mais il y a des choses que je vais devoir changer dans mes prochains projets.","title":"Planning effectif et diff\u00e9rences"},{"location":"index.html#analyse-fonctionnelle","text":"Voir \"Manuel Utilisateur\" tout y est indiqu\u00e9","title":"Analyse fonctionnelle"},{"location":"index.html#analyse-organique","text":"","title":"Analyse Organique"},{"location":"index.html#outils-utilises","text":"","title":"Outils utilis\u00e9s"},{"location":"index.html#visual-studio-2022","text":"\"Logo de Visual Studio 2022\" C'est l'application que j'ai le plus utilis\u00e9, je pense. Visual Studio 2022 est l'IDE officiel de Microsoft pour coder en C#. C'est l'outil que j'utilise depuis maintenant six ans au CFPT et franchement, il fait tout ce que je pourrais vouloir. C'est aussi un outil pratique pour utiliser Windows Forms et faire des applications natives Windows. Pas grand-chose \u00e0 dire \u00e0 ce sujet \u00e0 part que c'est un outil qui marche bien et qui est gratuit si on prend la community \u00e9dition.","title":"Visual Studio 2022"},{"location":"index.html#visual-studio-code","text":"\"Logo de Visual Studio Code\" Cet outil est d\u00e9j\u00e0 un peu plus int\u00e9ressant. C'est le second outil que j'ai le plus utilis\u00e9. J'en ai surtout eu besoin pour \u00e9crire de la doc, mais aussi pour coder en python et pour contr\u00f4ler mkdocs. Visual Studio est un IDE absolument g\u00e9nial qui est tr\u00e8s puissant avec les bonnes extensions. Je l'utilise au quotidien pour tout ce qui est d\u00e9veloppement WEB, Mobile ou pour \u00e9diter des fichiers de configs pour mes drones ou imprimantes 3D. Je peux m\u00eame compiler le firmware pour ces derni\u00e8res en utilisant une extension faite pour. Les possibilit\u00e9s de customisation sont presque infinies et c'est un plaisir d'utiliser ce logiciel gratuit fourni par Microsoft, mais qui est am\u00e9lior\u00e9 constamment par des d\u00e9veloppeurs ind\u00e9pendants. Je conseille \u00e0 n'importe quel d\u00e9veloppeur de l'essayer \u00e0 moins qu'il soit uniquement sur C# ou il serait plus int\u00e9ressant d'utiliser visual studio 2022.","title":"Visual Studio Code"},{"location":"index.html#materialmkdocsmarkdown","text":"\"Logo de Mkdocs Materials\" Pendant ce projet, j'ai utilis\u00e9 exclusivement du Markdown avec l'aide de Mkdocs et Materials. Le choix de Markdown a \u00e9t\u00e9 plut\u00f4t simple, c'est une fa\u00e7on facile et efficace de cr\u00e9er de la documentation et on n'avait pas le choix de l'utiliser. On avait \u00e9galement l'obligation (Ou au moins un tr\u00e8s forte incitation) par nos professeurs d'utiliser mkdocs et materials pour que notre documentation ne soit pas simplement une liste de fichiers, mais un joli site dans lequel il est agr\u00e9able de chercher des informations. Mkdocs et Materials sont deux outils vraiment fantastiques, mais je dois avouer que je n'ai pas assez mis de temps pour apprendre tout leur potentiel. Pour moi ce sont simplement des outils et je veux qu'ils marchent. Je ne suis pas forc\u00e9ment du genre \u00e0 aller changer toutes les couleurs et polices pour avoir la doc parfaite, j'ai pr\u00e9f\u00e9r\u00e9 passer du temps sur mon app. Mais m\u00eame si ces outils offrent une customisation tr\u00e8s avanc\u00e9e, il est tr\u00e8s facile de cr\u00e9er un projet simple et j'aime beaucoup cette simplicit\u00e9. J'ai eu pas mal d'aide de la part de M. Briard pour impl\u00e9menter certaines features et je l'en remercie tr\u00e8s chaudement, car sans son aide ce document serait s\u00fbrement un peu moins commode \u00e0 lire (Oui oui \u00e7a aurait pu \u00eatre pire, je sais, c'est dur \u00e0 imaginer).","title":"Material/Mkdocs/Markdown"},{"location":"index.html#figma","text":"\"Logo de Figma\" Figma est l'outil que j'ai utilis\u00e9 pour cr\u00e9er mon poster et un certain nombre des diagrammes de cette documentation. J'utilise aussi cet outil d\u00e8s que je vais faire des maquettes de sites ou d'applications. D'ailleurs les maquettes dans le cahier des charges ont \u00e9t\u00e9 faites avec. C'est un outil en ligne parfaitement gratuit qui conserve tout dans le cloud. Franchement, je n'ai rien \u00e0 dire, je n'ai pas utilis\u00e9 plus de 15\u2009% des features que cet outil propose et je suis d\u00e9j\u00e0 conquis.","title":"Figma"},{"location":"index.html#technologies-utilisees","text":"Dans ce projet, diff\u00e9rents choix ont \u00e9t\u00e9 faits pour ce qui est des technologies. Certaines ont \u00e9t\u00e9 choisies, car elles \u00e9taient les plus simples, les plus pratiques, les plus efficaces ou encore les plus connues et donc ayant le meilleur support. Je vais tenter de r\u00e9sumer ici ces choix, mais je reviendrai sur la plupart d'entre eux plus tard quand j'explique ce que je fais avec.","title":"Technologies utilis\u00e9es"},{"location":"index.html#selenium","text":"\"Logo de s\u00e9l\u00e9nium\" Selenium est une librairie \u00e0 la base Node JS qui permet d'automatiser des actions sur un navigateur internet. Le but premier et je pense son utilisation premi\u00e8re et l'automatisation de tests pour des applications WEB. En effet, c'est un super outil pour simuler un user faisant un certain nombre d'actions sans apporter de variabilit\u00e9, ce qui fait de super test unitaires. Cependant, je pense que l'autre grande partie des utilisateurs de Selenium l'utilisent pour faire du \"Scrapping\". Et nous sommes un peu dans cette seconde cat\u00e9gorie. Le \"Scrapping\" c'est l'acte d'aller r\u00e9cup\u00e9rer des informations sur des pages web automatiquement pour alimenter sa propre base de donn\u00e9es. En effet, si on arrive \u00e0 passer les protections anti-bot, on peut facilement utiliser Selenium pour scraper tous les sites qui nous passent par la t\u00eate. Le cahier des charges que j'avais en t\u00eate en cherchant une technologie de contr\u00f4le de navigateur internet \u00e9tait le suivant : Simple Permettant de contr\u00f4ler un navigateur Headless (Voir chapitre \"Simuler un navigateur ?\") Permettant de contr\u00f4ler Firefox Ayant un wrapper C# Permettre de changer certaines choses comme les cookies en direct Permettre d'interagir avec les \u00e9l\u00e9ments d'une page Fonctionner Simple, car je ne voulais pas avoir \u00e0 passer trop de temps dessus (\u00e7a n'a pas bien vieilli lol...). Je voulais que l'on puisse utiliser Firefox parce qu'il n'impl\u00e9mente pas les m\u00eames s\u00e9curit\u00e9s que Chrome pour faire simple. J'avais besoin que la lib puisse contr\u00f4ler un Firefox HEADLESS comme je ne voulais pas avoir une page web ouverte sur mon ordi quand je commente, car c'est de l'espace utilis\u00e9 pour rien. J'avais besoin d'un wrapper C# puisque c'est le langage que j'utilise. Pour finir, j'avais besoin d'interagir avec les \u00e9l\u00e9ments de la page pour naviguer dessus et d'ins\u00e9rer des cookies pour me connecter sans avoir \u00e0 passer par le login de la F1TV qui est tr\u00e8s bon pour d\u00e9tecter les bots. Avec un cahier des charges pareil beaucoup de librairies ont \u00e9t\u00e9 abandonn\u00e9es. J'ai pu tester pleins de librairies C# qui arrivaient \u00e0 contr\u00f4ler un Chrome et m\u00eame pas mal qui arrivaient \u00e0 contr\u00f4ler un Chrome Headless. Mais le choix est tr\u00e8s vite restreint quand on veut pouvoir contr\u00f4ler Chrome OU Firefox. \u00c0 la base, mon choix, c'\u00e9tait port\u00e9 sur Puppeteer Sharp qui est une librairie qui se veut \u00eatre exactement ce que je veux. \"Logo de Pupeteer\" Je voulais utiliser cette librairie, car il y a des plugins qui sont tr\u00e8s orient\u00e9s scrapping, en effet, ils impl\u00e9mentent de nombreuses techniques pour permettre de mieux passer inaper\u00e7u par les syst\u00e8mes de d\u00e9tection de bots. Sur le papier, c'est la librairie parfaite qui correspond parfaitement au cahier des charges que je m'\u00e9tais fix\u00e9 et je pense que si j'utilisais un projet JS, elle le serait. Sauf qu'avec le wrapper C# j'ai eu un certain nombre de probl\u00e8mes : Toutes les versions de la librairie ne fonctionnaient pas. Il fallait faire des tests avec diff\u00e9rentes versions de la librairie et de ses d\u00e9pendances simplement pour faire lancer un browser. Et \u00e7a, c'est quand \u00e7a marchait, car il y avait des jours o\u00f9 des machines sur lesquelles je n'ai juste pas pu faire fonctionner la librairie. M\u00eame avec les techniques propos\u00e9es par les plugins \"Stealth\" je n'arrivais pas \u00e0 bypass les s\u00e9curit\u00e9s de la page de login de la F1TV. J'ai essay\u00e9 tout ce que j'ai pu trouver sur internet, mais on se fait toujours chopper d\u00e8s que l'on arrive sur la page. Et le pire de tous, impossible de faire fonctionner une vid\u00e9o. J'ai pu faire tout ce que je voulais faire finalement en passant par l'utillisation de cookies pour la connexion. Tout \u00e7a pour arriver au moment o\u00f9 il faut lancer la vid\u00e9o, et l\u00e0, crash. Impossible de faire fonctionner Puppeteer Sharp avec une vid\u00e9o. D\u00e8s qu'elle se lance, c'est un crash assur\u00e9 sans message d'erreur clair. Et le souci, c'est que le wrapper C# n'est pas vraiment bien support\u00e9 et que si c'est un bug de la lib, je ne risque pas de voir de fix avant un moment si ce n'est jamais. Pour toutes ces raisons, j'ai d\u00fb abandonner cette librairie, ce qui a \u00e9t\u00e9 tr\u00e8s dur, car j'avais pass\u00e9 beaucoup de temps dessus \u00e0 essayer de la faire marcher. Ensuite le choix de Selenium \u00e9tait plut\u00f4t simple, c'\u00e9tait la seule option restante. \u00c0 ce jour, je ne connais aucune autre librairie que Puppeteer ou Selenium qui puisse contr\u00f4ler un Firefox Headless en respectant mon cahier des charges et qui soit donc disponible depuis C#. Si je n'arrivais pas \u00e0 faire fonctionner Selenium, j'aurais d\u00fb abandonner l'id\u00e9e de simuler un navigateur tout simplement. Mais j'ai eu la chance que cette librairie fasse tout ce que je pouvais demander. C'est une super lib et m\u00eame si la version C# n'est vraiment pas bien document\u00e9e, la plupart des documentations de la version JS sont pertinentes pour la version C# m\u00eame si \u00e7a n'est pas la m\u00eame syntaxe. Pour r\u00e9sumer, j'ai choisi Puppeteer car c'\u00e9tait la seule option viable pour mon besoin. (Note : Par contre si je trouve la personne chez Mozilla ou puppeteer qui a d\u00e9cid\u00e9 d'hard coder la r\u00e9solution maximale du browser Headless que l'on peut override UNIQUEMENT en changeant les variables d'environnement de la machine ET DE NE LE DOCUMENTER QUASI NULLE PART JE JURE QUE CA VA TR\u00c8S MAL SE PASSER)","title":"Selenium"},{"location":"index.html#csharp","text":"\"Logo C#\" Je pense que c'est le choix le plus simple \u00e0 expliquer. C# est un langage de programmation orient\u00e9 objet relativement haut niveau qui a \u00e9t\u00e9 cr\u00e9\u00e9 par Microsoft et qui a comme cible le d\u00e9veloppement d'applications pour Windows. (On peut \u00e9videmment trouver des adaptations pour le faire tourner sur Linux, mais ce n'est pas vraiment le but du langage) En plus d'\u00eatre un superbe langage de programmation, c'est le langage que l'on apprend au CFPT informatique. C'est donc un langage avec lequel je suis beaucoup plus \u00e0 l'aise que pour d'autres langages comme le Python ou le JS. Mon but n'\u00e9tait pas de faire une application Web et je travaille sous Windows. Je savais que mon projet allait demander un minimum de programmation orient\u00e9e objet. J'ai ainsi imm\u00e9diatement pens\u00e9 \u00e0 utiliser C#. Cependant, j'aurais tr\u00e8s bien pu utiliser un langage comme python qui m'aurait clairement facilit\u00e9 la t\u00e2che avec des librairies bien plus fournies et plus souvent mises \u00e0 jour. Mais comme je ne suis pas du tout aussi \u00e0 l'aise avec, je pense que le C# \u00e9tait la meilleure option. Mes seuls regrets apr\u00e8s coup sont que je trouve les Windows Forms tr\u00e8s moches et qu'il est particuli\u00e8rement difficile de les rendre plus jolies et que les librairies disponibles en C# pour des sc\u00e9narios tr\u00e8s pr\u00e9cis ne sont pas au niveau de celles pour JS et pour Python. Cependant, si j'avais \u00e0 refaire le projet, je reprendrais C# je pense.","title":"CSharp"},{"location":"index.html#python","text":"\"Logo Python\" Alors ce choix-l\u00e0 est plus compliqu\u00e9 \u00e0 comprendre. Pour tout le projet, j'ai tent\u00e9 de garder le C# comme langage et de ne pas utiliser autre chose. Cependant, j'ai d\u00fb utiliser une seule fois le Python dans un cas tr\u00e8s pr\u00e9cis. Je n'aime vraiment pas coder en python de base et clairement, j'aurais pr\u00e9f\u00e9r\u00e9 ne pas l'utiliser, mais je n'avais pas le choix. Le besoin dans le cas du python \u00e9tait le suivant : J'avais besoin d'un moyen de r\u00e9cup\u00e9rer des strings et les d\u00e9coder avec une cl\u00e9 encod\u00e9e avec le syst\u00e8me propri\u00e9taire de Windows d'encodage. Le souci, c'est que j'avais avec le C# c'est que les m\u00e9thodes de d\u00e9cryptions ne fonctionnent pas pareil qu'en python et tous les exemples que je pouvais trouver \u00e9taient en python. J'ai essay\u00e9 pendant un sacr\u00e9 moment de faire fonctionner la d\u00e9cryptions en C# mais sans succ\u00e8s. J'ai donc directement utilis\u00e9 le python comme faisait toutes les personnes que je pouvais voir sur internet et je pense que \u00e7a n'est pas une mauvaise id\u00e9e. En effet, cela veut dire que si \u00e0 un moment Chrome est mis \u00e0 jour, je n'aurai pas besoin d'aller ouvrir tout le code source de mon projet pour tout recompiler, j'aurai simplement besoin de changer ce script. Un des avantages du Python est quand m\u00eame qu'il y a beaucoup plus de gens qui codent dessus, et pour ce genre d'utilisation tr\u00e8s sp\u00e9cifique, c'est plut\u00f4t pratique. Le seul probl\u00e8me, c'est que cela oblige l'utilisateur \u00e0 avoir python install\u00e9 sur sa machine et que sa version doit \u00eatre compatible... (les joies de python).","title":"Python\u202f?"},{"location":"index.html#firefox","text":"\"Logo Firefox Headless\" J'en parle d\u00e9j\u00e0 plus bas, mais le choix de navigateur est super important. D\u00e9j\u00e0 tous les navigateurs n'ont pas un mode Headless (sans t\u00eate, mieux expliqu\u00e9 dans la rubrique \"Simuler un navigateur ?\"). Par exemple, m\u00eame si Edge est maintenant bas\u00e9 sur Chromium, il n'existe pas de moyen de le faire tourner en Headless pour le moment. Autre souci, les librairies d'automatisation ne supportent pas tous les navigateurs. Par exemple, beaucoup supportent chrome, mais tr\u00e8s peu supportent Firefox ou Edge. Donc, il me fallait un navigateur qui puisse op\u00e9rer en Headless et qui soit support\u00e9 par plusieurs librairies d'automatisation. Il n'y a que Firefox et Chrome qui soient conformes \u00e0 ces exigences. (Je n'ai pas v\u00e9rifi\u00e9 pour TOUS les navigateurs. Peut-\u00eatre que les Opera GX ont aussi un mode headless super, mais je me suis concentr\u00e9 sur les navigateurs plus grand public). Chrome est support\u00e9 par plus de lib, mais le souci c'est que la F1TV utilise un lecteur de vid\u00e9o avec DRM (Plus d'infos l\u00e0-dessus dans la partie \"Simuler un navigateur\u202f?\") et donc le choix \u00e9tait simple. Il ne restait que Firefox.","title":"Firefox"},{"location":"index.html#tesseract","text":"Je pense que le choix le plus simple apr\u00e8s le C# fut l'utilisation de Tesseract. C'est tout simplement l'outil le plus utilis\u00e9 pour faire de l'OCR. \u00c0 la base, c'est une lib Python (Ah tiens encore ?) qui peut \u00eatre redoutablement efficace avec le bon dataset. Il existe d'autres outils, mais j'ai d\u00e9cid\u00e9 de prendre celui-l\u00e0 \u00e0 cause de son support juste incroyable et de son omnipr\u00e9sence dans la documentation OCR. En plus il est facile \u00e0 utiliser et je ne pense pas encore avoir fait le tour de tout son potentiel dans ce projet.","title":"Tesseract"},{"location":"index.html#fonctionnement-general","text":"Avant de passer \u00e0 l'explication de chaque partie du projet en d\u00e9tail, je pense qu'il est important de faire un petit point sur comment toutes les parties du projet s'emboitent et fonctionnement ensemble. Comme \u00e7a, quand vous lirez l'explication d'une \u00e9tape, vous serez conscient de \u00e0 quoi elle sert, et o\u00f9 elle s'inscrit dans le projet principal.","title":"Fonctionnement g\u00e9n\u00e9ral"},{"location":"index.html#les-briques-principales","text":"Voici trois grosses \u00e9tapes du projet. Pour rappel, ce sont des vulgarisations plut\u00f4t larges qui n'ont qu'un seul but, aider \u00e0 la compr\u00e9hension de ce qui vient par la suite.","title":"Les briques principales"},{"location":"index.html#recuperation-dimages","text":"\"Diagramme simplifi\u00e9 repr\u00e9sentant le processus de r\u00e9cup\u00e9ration des images\" Pour faire simple, on peut voir qu'il y a deux parties \u00e0 cette \u00e9tape. La premi\u00e8re en partant du haut repr\u00e9sente un script python qui va chercher des informations dans la base de donn\u00e9es de Chrome qui est en SQLite. Ces informations dans notre cas sont les cookies de connexion. Dans la seconde \u00e9tape, on peut voir que le programme utilise Selenium avec un navigateur Firefox Headless qui va aller communiquer avec la F1TV qui est le site web qui nous int\u00e9resse et qu'une des infos que l'on r\u00e9cup\u00e8re est une image de la page en format PNG que l'on envoie au programme C#. Ces deux parties sont li\u00e9es, car pour se connecter \u00e0 la F1TV Selenium a besoin des cookies de connexion r\u00e9cup\u00e9r\u00e9s par le programme Python. La premi\u00e8re partie est un processus qui n'est utilis\u00e9 qu'une seule fois au d\u00e9marrage tandis que la r\u00e9cup\u00e9ration d'images et en continu pendant toute la dur\u00e9e de l'utilisation de l'application.","title":"R\u00e9cup\u00e9ration d'images"},{"location":"index.html#ocr","text":"\"Diagramme simplifi\u00e9 repr\u00e9sentant le processus d'OCR\" ; On peut voir dans ce diagramme simplifi\u00e9 qu'avec l'aide de ce que contient le fichier \"Config.JSON\" on d\u00e9coupe l'image que l'on a r\u00e9cup\u00e9r\u00e9 au pr\u00e9alable en petits morceaux qui contiennent des informations. Ensuite, on prend cette image et on lui applique un filtre pour retirer le flou, la couleur, etc. Puis en utilisant de l'OCR (Optical Character Recognition) on en r\u00e9cup\u00e8re les informations sous forme de texte et on le renvoie dans le programme C# Dans cette partie explicative g\u00e9n\u00e9rale, on ne reviendra pas sur la cr\u00e9ation de ce fichier config. Pour plus d'infos \u00e0 son sujet, voir la rubrique (OCR/Fonctionnement g\u00e9n\u00e9ral)","title":"OCR"},{"location":"index.html#traitement-et-affichage","text":"\"Diagramme simplifi\u00e9 repr\u00e9sentant le processus de traitement et d'affichage\" On peut voir dans ce dernier mini diagramme simplifi\u00e9 qu'on prend les donn\u00e9es que l'on r\u00e9cup\u00e9rait de l'\u00e9tape pr\u00e9c\u00e9dente qui ne sont pas forc\u00e9ment toutes coh\u00e9rentes et qu'on les traite pour leur redonner du sens avant de les stocker dans une base de donn\u00e9es SQLITE. Ensuite cette m\u00eame base de donn\u00e9e fournis les infos n\u00e9cessaires pour des affichages (Ces affichages sont directement r\u00e9cup\u00e9r\u00e9s depuis le projet en cours de fonctionnement).","title":"Traitement et affichage"},{"location":"index.html#resume-du-fonctionnement-general","text":"\"Diagramme simplifi\u00e9 repr\u00e9sentant le processus global du projet\" Ce dernier diagramme est un sch\u00e9ma fait pour repr\u00e9senter de la mani\u00e8re la plus simple possible toutes les briques du projet et comment elles s'imbriquent ensemble. La repr\u00e9sentation est un peu diff\u00e9rente des trois autres diagrammes, car le but ici est surtout de montrer le chemin que fait la donn\u00e9e \u00e0 travers les couches. Toutes les parties du projet ne sont pas incluses, notamment la partie calibration dans un objectif de simplifier la lecture. Dans l'ordre, on peut voir que pour la partie r\u00e9cup\u00e9ration d'images, le python va r\u00e9cup\u00e9rer les cookies dans la base de donn\u00e9es chrome pour ensuite les retourner \u00e0 Selenium. Selenium va ensuite pouvoir lancer un navigateur (en l'occurrence Firefox) et utiliser les cookies r\u00e9cup\u00e9r\u00e9s pour aller sur la page de la F1TV qui va retourner un certain nombre d'infos \u00e0 Selenium. L'info qui nous int\u00e9resse le plus depuis Selenium ce sont les images de la page data de la F1Tv et ce sont elles que l'on va envoyer dans la partie LOAD du diagramme. Dans cette partie, on prend l'image de la F1TV et on la d\u00e9coupe selon les directives donn\u00e9es par le fichier Config.JSON (il renseigne les zones \u00e0 d\u00e9couper et ce qu'elles repr\u00e9sentent) et apr\u00e8s le d\u00e9coupage, on se retrouve avec une zone principale, vingt zones de pilotes et 9 fen\u00eatres de donn\u00e9es par zone de pilote donc 180 fen\u00eatres en tout. Ces fen\u00eatres sont ensuite envoy\u00e9es pour \u00eatre filtr\u00e9es (retirer le flou, mettre en \u00e9vidence les caract\u00e8res, en gros les pr\u00e9parer pour la reconnaissance) dans la partie OCR Dans cette partie, apr\u00e8s avoir filtr\u00e9 les images, on les envoie \u00e0 Tesseract pour qu'il nous retourne des r\u00e9sultats d'OCR. Ces r\u00e9sultats sont ce que Tesseract a trouv\u00e9 sur les images et ils sont retourn\u00e9s sous la forme de Data Pilote. Ex (Position : 1,Tour : 45, Temps au tour : 1:34.683, Pneus : Medium etc....) Finalement, ces donn\u00e9es ont envoy\u00e9es dans la partie traitement qui va faire des v\u00e9rifications d'usage pour s'assurer qu'elles sont correctes et quand c'est fait, tout est envoy\u00e9 dans une base de donn\u00e9es SQLite. On ne montre pas non plus dans ce diagramme la parte affichage des donn\u00e9es, car je ne trouve pas pertinent de l'inclure ici. Et voil\u00e0, c'est le fonctionnement tr\u00e8s g\u00e9n\u00e9ral et simplifi\u00e9 de l'application. Je vous invite \u00e0 continuer \u00e0 lire cette documentation pour des informations plus pr\u00e9cises \u00e0 propos de toutes ces \u00e9tapes. Bonne lecture !","title":"R\u00e9sum\u00e9 du fonctionnement g\u00e9n\u00e9ral"},{"location":"index.html#recuperation-des-images","text":"Voici la premi\u00e8re grande \u00e9tape du projet. Pour rappel, Amazon h\u00e9berge directement le site de la F1TV et poss\u00e8de les droits sur les donn\u00e9es de la F1. C'est sous le nom de AWS (le service d'h\u00e9bergement d'Amazon) que la firme apparait en tant que sponsor. On peut voir ce nom appara\u00eetre assez souvent quand on regarde un Grand Prix, car comme ils ont la mainmise sur les donn\u00e9es, ils peuvent ins\u00e9rer des bandeaux d'informations sur le flux public sur ce qu'il se passe, voir m\u00eame faire des pr\u00e9dictions (Bien qu'un peu bancales) \"Exemple insertion AWS en GP\" Ce service s'appelle F1 Insights (Oui, c'est un meilleur nom de projet que F1 Compagnon, mais bon) et c'est, je pense, la raison pour laquelle on ne voit aucune API publique qui permette de correctement se renseigner en donn\u00e9es en direct pendant un Grand Prix. Ils ont d\u00fb d\u00e9gotter un juteux contrat pour s'occuper de toute l'infrastructure digitale de la F1 (du moins publique) en \u00e9change d'une exclusivit\u00e9 totale sur certaines choses comme les Data. \"Exemple data d'AWS\" \u00c9videmment, je ne fais que conjecturer et ce que j'ai dit n'est pas \u00e0 prendre au pied de la lettre, mais c'est une explication possible, je pense, de pourquoi il est si difficile de trouver des donn\u00e9es sur la F1 facilement en temps r\u00e9el. Il existe bien quelques API un peu bancales publiques, mais le probl\u00e8me, c'est qu'elles ne sont vraiment pas suffisantes et je ne peux pas leur faire confiance quand je commente. Ce qu'il m'aurait fallu, c'est une API publique et officielle qui me permette d'\u00eatre s\u00fbr que les donn\u00e9es sont les bonnes et qu'elles arrivent le plus vite possible. On pourrait croire que c'est impossible, car cela n'existe pas comme je l'ai dit MAIS ! Ce n'est pas compl\u00e8tement vrai. En effet, depuis que je poss\u00e8de un abonnement \u00e0 la F1TV, il existe une source d'informations tr\u00e8s pr\u00e9cieuse qui m'aide \u00e9norm\u00e9ment dans mon quotidien de commentateur de Formule 1. La \"DATA CHANNEL\". La Data Channel est une page de la F1TV qui permet, pour chaque Grand Prix, de visualiser, sous la forme d'un flux vid\u00e9o, diff\u00e9rentes informations capitales sur la course. \"Exemple de Data Channel\" Le probl\u00e8me, c'est que comme je viens de le dire, ces donn\u00e9es ne sont pas accessibles comme un tableau HTML ou un flux RSS ou un tableau JSON. C'est un flux vid\u00e9o. Il faut savoir qu'entretenir une diffusion de flux vid\u00e9o en 1080P pendant deux heures accessible par des milliers d'abonn\u00e9s est EXTR\u00caMENT cher, surtout quand on le compare \u00e0 simplement afficher les donn\u00e9es dans un tableau. Ce qui veut dire que ce choix est d\u00e9lib\u00e9r\u00e9 et a un sens au niveau \u00e9conomique. Je pense donc que c'est justement pour \u00e9viter que des petits malins puissent juste venir scraper l'int\u00e9gralit\u00e9 des donn\u00e9es qu'ils proposent et fasse sa propre API. (C'est d'ailleurs un des sites avec la meilleure protection anti-bot du monde) MAIS ce n'est pas par ce que les donn\u00e9es ne sont pas faciles \u00e0 avoir qu'elles sont IMPOSSIBLE \u00e0 avoir. Et c'est l\u00e0 que ce projet entre en jeu. Mais pour d\u00e9coder les donn\u00e9es d'une image, il faut d'abord ... (roulement de tambours) ... Avoir des images ! Et c'est l\u00e0 que vient se glisser cette partie du projet.","title":"R\u00e9cup\u00e9ration des images"},{"location":"index.html#comment-faire","text":"Le but de ce segment est de se concentrer sur la r\u00e9cup\u00e9ration et la mise \u00e0 disposition, pour le reste du programme, des images en direct de la F1TV dans la meilleure qualit\u00e9 possible et dans les meilleurs d\u00e9lais. Pour ce faire, il y a plusieurs solutions : Reverse engeneer la F1TV pour acc\u00e9der directement au flux sans passer par la plateforme internet et pouvoir prendre images \u00e0 volont\u00e9. Avoir tout simplement une page de la F1TV ouverte sur un \u00e9cran et prendre des screenshots \u00e0 intervalles r\u00e9guliers. Simuler un navigateur internet sans qu'il soit affich\u00e9 et le contr\u00f4ler automatiquement pour qu'il prenne des captures. La premi\u00e8re option aurait \u00e9t\u00e9 la plus \u00e9l\u00e9gante, mais lors d'un POC que je tentais de r\u00e9aliser, je me suis rendu compte que cela serait un peu trop compliqu\u00e9 et long \u00e0 faire. Sans compter le fait que les rediffusions de Grand Prix ne sont pas g\u00e9r\u00e9es de la m\u00eame mani\u00e8re que les diffusions en direct. Et que pour faire des Tests en direct, il faudrait attendre \u00e0 chaque fois un weekend de Grand Prix et le faire en plus du commentaire que je dois produire. Pour toutes ces raisons et bien d'autres, je l'ai rang\u00e9e dans la case \"Trop dur, Trop chiant, S\u00fbrement ill\u00e9gal\" (Oui, je sais, c'est une cat\u00e9gorie bien sp\u00e9cifique, mais c'est ma documentation, je fais ce que je veux). La troisi\u00e8me option aurait \u00e9t\u00e9 la plus simple (et moins dr\u00f4le) et je suis presque s\u00fbr que je peux impl\u00e9menter cette derni\u00e8re en moins d'une apr\u00e8s-midi. Sauf qu'elle apporte de gros soucis. On ne peut pas garantir l'int\u00e9grit\u00e9 et la continuit\u00e9 des donn\u00e9es si l'utilisateur avance ou fait pause, m\u00eame par simple inadvertance. La moindre fen\u00eatre qui s'afficherait devant ruinerait toute la reconnaissance de caract\u00e8res. On ne peut pas contr\u00f4ler la qualit\u00e9 du flux et on est oblig\u00e9 de faire confiance en l'utilisateur On ne peut pas vraiment automatiser quoi que ce soit niveau tests ou m\u00eame pour faire du scrapping auto pour remplir une base de donn\u00e9e. Et finalement le pire inconv\u00e9nient : C'EST NUL ! Je ne pourrais jamais utiliser un projet qui fonctionne de cette fa\u00e7on, je ne peux pas me permettre d'avoir un \u00e9cran inutilisable quand je commente et auquel je dois constamment faire attention pour ne pas perturber la reconnaissance. Pour moi, cette option aurait \u00e9t\u00e9 celle \u00e0 choisir en cas d'extr\u00eame urgence et en dernier recours, car le projet deviendrait inutile. J'ai donc d\u00e9cid\u00e9 de m'occuper de la seconde option : Simuler un navigateur. Cette option, bien que complexe et difficile \u00e0 impl\u00e9menter, propose une solution \u00e0 tous les probl\u00e8mes et permet une r\u00e9cup\u00e9ration quasi sans compromis.","title":"Comment faire ?"},{"location":"index.html#simuler-un-navigateur","text":"\"Navigateur Headless (sans t\u00eate)\" Simuler un navigateur internet n'est pas forc\u00e9ment tr\u00e8s difficile. Chromium par exemple offre une panoplie d'outils natifs et \u00e9norm\u00e9ment de librairies existent permettant de facilement et en quelques lignes simuler un Google Chrome et le contr\u00f4ler sans afficher son UI (Interface Utilisateur). \"Chromium logo\" Cependant, La F1TV n'utilise pas simplement un player HTML5 basique. Elle utilise un service de streaming Bit Movin qui permet de fournir un stream de bonne qualit\u00e9 et surtout qui impl\u00e9mente les DRM (Digital Right Management). Cela veut dire que quand on ouvre un flux de la F1TV sur chrome et que l'on essaie de prendre une capture d'\u00e9cran, le player se met en noir et ne permet pas de voir quoi que ce soit (Certaines versions de Chrome le permettent pendant quelques semaines avant de bloquer \u00e0 nouveau). Ce qui dans notre cas est un immense probl\u00e8me. Mais Firefox ne nous bloque pas de cette fa\u00e7on et il est donc assez facile de passer outre. L'explication sans trop rentrer dans les d\u00e9tails est la suivante : Dans Chrome, le player par d\u00e9faut utilise une technologie appel\u00e9e \"PCP\" ou \"Protected Content Playback\" qui leur permet de bloquer au moins une partie des techniques de r\u00e9cup\u00e9ration du flux vid\u00e9o et audio. Cependant, Firefox de pas sa nature Open Source utilise \"Open H264\" pour lire ces m\u00eames flux soumis \u00e0 des DRM et Open H264 n'impl\u00e9mente pas les m\u00eames restrictions. Sauf que Firefox n'est pas aussi facilement \u00e9mul\u00e9 que chrome et cela r\u00e9duit notre choix de librairies \u00e0 ... Une seule\u2026 Qui est Selenium. (Il existe aussi Pupetteer C# mais j'ai rencontr\u00e9 \u00e9norm\u00e9ment de soucis avec cette derni\u00e8re d\u00e8s que je voulais lancer une vid\u00e9o) \"Firefox dev logo\" Mais m\u00eame si la documentation est plut\u00f4t maigre parfois, c'est une bonne librairie qui permet de tr\u00e8s bien contr\u00f4ler une instance de chrome ou de Firefox.","title":"Simuler un navigateur ?"},{"location":"index.html#controler-le-navigateur","text":"Maintenant que l'on sait quel navigateur simuler et avec quelle technologie, on peut passer \u00e0 la r\u00e9alisation. Ce qu'il y a de bien avec Selenium, c'est qu'on a un certain nombre de commandes tr\u00e8s haut niveau qui nous permettent de contr\u00f4ler un navigateur de mani\u00e8re plut\u00f4t pr\u00e9cise. Je vais d\u00e9crire ici la proc\u00e9dure habituelle utilis\u00e9e sous une forme de recette de cuisine pour que l'on puisse simplement comprendre ce qu'il se passe. Durant cette explication, je vais parler \u00e0 un moment de Cookies, ne vous en faites pas, c'est le sous-chapitre suivant qui va vous en parler. Recette de cuisine pour r\u00e9cup\u00e9rer des images de la F1TV : D\u00e9marrer une instance de navigateur avec les bons arguments Ajouter les bons param\u00e8tres pour ne pas se faire flag comme un bot Naviguer sur la page de la F1TV Ajouter les cookies de connexion pour avoir acc\u00e8s au contenu de la page Naviguer sur la page du Grand Prix demand\u00e9 Attendre un peu que la page se charge Cliquer sur l'invite de cookies Attendre cinq secondes le temps que la page se reload Cliquer sur le bouton qui permet de passer du feed live \u00e0 la DATA CHANNEL Appuyer sur Espace pour faire apparaitre le bouton d'acc\u00e8s au param\u00e8tres Cliquer sur le menu d\u00e9roulant des r\u00e9solutions Trouver l'option 1080P et la s\u00e9lectionner Cliquer sur le bouton qui met la vid\u00e9o en plein \u00e9cran Prendre de screenshots \u00e0 intervalles r\u00e9guliers Pour faire toutes ces actions, on doit r\u00e9cup\u00e9rer les \u00e9l\u00e9ments selon leur ID ou leur classe. Voici un exemple qui r\u00e9cup\u00e8re le bouton de plein \u00e9cran et qui clique dessus : IWebElement fullScreenButton = Driver . FindElement ( By . ClassName ( \"bmpui-ui-fullscreentogglebutton\" )); fullScreenButton . Click (); \u00c7a peut para\u00eetre plut\u00f4t simple dit comme \u00e7a et quand tout fonctionne \u00e7a l'est, mais la difficult\u00e9 vient du fait qu'\u00e0 peu pr\u00e8s n'importe laquelle de ces \u00e9tapes peut rater et qu'il faut donc faire un bon syst\u00e8me de gestion d'erreurs qui puisse aider l'utilisateur en cas de probl\u00e8me. Parfois, il est aussi difficile de trouver un \u00e9l\u00e9ment selon son ID, sa classe, ou sa value. Par exemple, l'option qui permet de passer en 1080P peut avoir comme value 1080_9011456 ou 1080_9011200 si on refresh la page. Cela demande de passer par des expressions r\u00e9guli\u00e8res, ce qui n'est pas compliqu\u00e9 en soi, mais ce sont toutes ces petites choses qui rendent le processus long \u00e0 mettre en place. Il faut dire aussi que les sites ne sont pas forc\u00e9ment tr\u00e8s contents de voir des bots passer, car cela peut \u00eatre un risque de DDOS et de Scraping (Comme moi) et donc ils mettent en place des syst\u00e8mes pour nous emp\u00eacher de faire ce que l'on veut. On peut utiliser diff\u00e9rentes techniques pour passer outre ces restrictions comme : Changer son User Agent Changer sa r\u00e9solution Ne pas avoir des patterns trop pr\u00e9visibles Avoir un historique Ne pas cliquer pile sur le milieu des boutons Ne pas cliquer trop vite Passer par un proxy pour ne pas se faire flag Utiliser des librairies plus discr\u00e8tes J'ai eu l'occasion de tester toutes ces m\u00e9thodes pour tenter de passer derri\u00e8re les radars de la F1TV et visiblement, j'ai r\u00e9ussi pour les pages principales, mais pas pour les pages de Login. Il faut savoir que la bataille entre bots et propri\u00e9taires de sites est un grand jeu du chat et de la souris et que les plateformes innovent constamment leur s\u00e9curit\u00e9. Et il se trouve que la partie login de la F1TV est h\u00e9berg\u00e9e autre part que le reste du site chez Amazon et qu'elle poss\u00e8de les meilleures s\u00e9curit\u00e9s que j'aie pu voir. Aucunes des m\u00e9thodes que j'ai cit\u00e9es et d'autres encore que j'ai essay\u00e9 n'ont r\u00e9ussi \u00e0 fourvoyer le syst\u00e8me. J'ai donc \u00e9t\u00e9 oblig\u00e9 de faire appel \u00e0 la connexion par Cookies pour pouvoir acc\u00e9der au reste du site internet.","title":"Contr\u00f4ler le navigateur"},{"location":"index.html#recuperer-les-cookies","text":"Alors, on va mettre de c\u00f4t\u00e9 toutes les questions de s\u00e9curit\u00e9 et de violation de la vie priv\u00e9e et de protection des donn\u00e9es des utilisateurs pour ce chapitre. Car pour faire simple, je siphonne TOUS les cookies de la personne qui utilise mon app. Alors \u00e9videmment \u00e7a n'est pas pour faire des b\u00eatises avec et c'est pour une \"bonne\" raison, mais bon quand m\u00eame \u00e7a peut faire bizarre comme \u00e7a. Je pense que vous savez d\u00e9j\u00e0 ce qu'est un Cookie, mais je vais malgr\u00e9 tout faire un petit point l\u00e0-dessus, car c'est important pour la suite. Quand on va sur un site internet et que l'on se connecte avec nos identifiants, nous sommes connect\u00e9s sur la session. Cependant, si on quitte le site ou que l'on ferme le navigateur, le site ne peut pas garder en m\u00e9moire que c'est bien vous quand le lendemain, vous retournez dessus. Pour palier \u00e0 cette limitation, on a invent\u00e9 cette chose magnifique (hem...) que sont les cookies ! Les cookies sont des petits fichiers qui sont stock\u00e9s dans votre navigateur et qui peuvent servir \u00e0 beaucoup de choses comme traquer votre activit\u00e9 sur internet et espionner un peu ou aussi par exemple, servir de jeton de connexion. L'id\u00e9e est que quand vous vous connectez sur le site avec vos identifiants, le site envoie un petit fichier dans votre navigateur qui va servir de jeton. Et donc lorsque vous reviendrez, le site pourra voir que vous avez le jeton et vous connectera automatiquement. \u00c7a peut para\u00eetre g\u00e9nial, et c'est effectivement bien pratique, cependant ce n'est pas sans risques. En effet, imaginons qu'un acteur malveillant parvienne \u00e0 s'emparer de ces petits fichiers, il pourrait ainsi facilement se faire passer pour vous. Alors un cookie expire \u00e0 un moment donn\u00e9 pour temp\u00e9rer les risques, mais ils sont toujours pr\u00e9sents. Dans notre cas, on peut vite comprendre pourquoi cela peut \u00eatre int\u00e9ressant de r\u00e9cup\u00e9rer ces cookies. En effet, si on peut mettre la main sur le jeton de connexion de l'utilisateur de notre application. On pourra se connecter automatiquement \u00e0 la F1TV et aller prendre des photos directement sans que l'utilisateur ait \u00e0 faire quoi que ce soit. Sauf que les cookies ne sont pas stock\u00e9s en clair comme \u00e7a. \u00c9videmment, Google Chrome a mis en place quelques techniques pour \u00e9viter que n'importe qui puisse s'amuser \u00e0 aller taper dans les cookies de la machine. Tous les cookies sont stock\u00e9s dans une base de donn\u00e9es SQLite avec les noms en clair et les valeurs sont encrypt\u00e9es en utilisant la m\u00e9thode AES 256 qui est une m\u00e9thode de cryptage tr\u00e8s utilis\u00e9e et efficace. Tellement efficace qu'il serait compl\u00e8tement inutile de tenter de les d\u00e9crypter en utilisant de la force brute pour trouver la valeur ou m\u00eame une attaque de dictionnaire ou quoi que ce soit. Si ces valeurs peuvent \u00eatre encod\u00e9es et d\u00e9cod\u00e9es en local sur la machine sans connexion internet, cela veut dire que la cl\u00e9 est stock\u00e9e sur la machine. Et si je peux mettre l\u00e0, mais sur cette cl\u00e9, alors je pourrai lire tous les cookies de la machine. Cette cl\u00e9 est stock\u00e9e dans les fichiers de Google Chrome sous Google\\Chrome\\User Data\\Local State . Et dans ce fichier, on peut trouver une liste de donn\u00e9es en cl\u00e9 valeurs et on peut trouver la cl\u00e9 sous os_crypt encrypted_key . On pourrait croire que l'on a d\u00e9j\u00e0 touch\u00e9 le jackpot, mais il reste encore une \u00e9tape. Cette cl\u00e9 est crypt\u00e9e en utilisant le syst\u00e8me d'encryption de Windows. Cette encryption est utilis\u00e9e pour emp\u00eacher des utilisateurs non connect\u00e9s d'acc\u00e9der \u00e0 certaines donn\u00e9es. Mais comme nous sommes connect\u00e9s, nous pouvons facilement utiliser les librairies de d\u00e9cryptions pour trouver la valeur de cette cl\u00e9. Et \u00e0 partir de l\u00e0, il suffit d'utiliser cette cl\u00e9 pour d\u00e9crypter tous les cookies de la machine pour aller chercher ceux qui nous int\u00e9ressent. Voici un exemple du code python qui permet d'aller chercher la cl\u00e9 d'encryption dans les fichiers de Google Chrome : def get_master_key (): with open ( os . getenv ( \"localappdata\" ) + \" \\\\ Google \\\\ Chrome \\\\ User Data \\\\ Local State\" , \"r\" ) as f : local_state = f . read () local_state = json . loads ( local_state ) master_key = base64 . b64decode ( local_state [ \"os_crypt\" ][ \"encrypted_key\" ]) master_key = master_key [ 5 :] # removing DPAPI master_key = win32crypt . CryptUnprotectData ( master_key , None , None , None , 0 )[ 1 ] print ( \"MASTER KEY :\" ) print ( master_key ) print ( len ( master_key )) return master_key Python ?? Et oui j'ai choisit d'utiliser un srypt python pour aller chercher les cookies. Ce choix a \u00e9t\u00e9 fait pour trois raisons : Le python est un language que je n'aime pas particuli\u00e8rement mais qui poss\u00e8de un \u00e9ventail de librairies absolument fantastique. Et pour ce genre de choses qui demandent une constante mise \u00e0 jour des librairies et qui sont un peu niches le python est une option juste g\u00e9niale. Comme c'est une des parties qui est le plus suceptible de changer vu que Chrome change relativement souvent le syst\u00e8me de stockage des cookies. Dans une optique de facilit\u00e9 de maintenance, avoir un seul fichier qui concerne cette partie du projet et qui est dans un language que plus de gens maitrisent que C# est pratique. Je n'ai pas r\u00e9ussi \u00e0 trouver de librairies C# qui me donne des r\u00e9sultats identiques \u00e0 celles que j'utilise dans ce script python. Pour faire la liaison entre le C# et le python, j'appelle le script depuis mon C# et ensuite le python s'occupe de mettre tous les cookies dans un CSV qui est ensuite lu depuis le C#. Voici la partie python qui \u00e9crit dans le csv : if not cookies_path . exists (): raise ValueError ( \"Cookies file not found\" ) with sqlite3 . connect ( cookies_path ) as connection : connection . row_factory = sqlite3 . Row cursor = connection . cursor () cursor . execute ( \"SELECT * FROM cookies\" ) with open ( 'cookies.csv' , 'a' , newline = '' ) as csvfile : fieldnames = [ 'host_key' , 'name' , 'value' , 'path' , 'expires_utc' , 'is_secure' , 'is_httponly' ] writer = csv . DictWriter ( csvfile , fieldnames = fieldnames ) if csvfile . tell () == 0 : writer . writeheader () for row in cursor . fetchall (): decrypted_value = decrypt_password ( row [ \"encrypted_value\" ], master_key ) writer . writerow ({ 'host_key' : row [ \"host_key\" ], 'name' : row [ \"name\" ], 'value' : decrypted_value , 'path' : row [ \"path\" ], 'expires_utc' : row [ \"expires_utc\" ], 'is_secure' : row [ \"is_secure\" ], 'is_httponly' : row [ \"is_httponly\" ] }) print ( \"Finished CSV\" ) Et la partie C# qui appelle le script et qui lit le CSV : private void StartCookieRecovering () { string scriptPath = PYTHON_COOKIE_RETRIEVAL_FILENAME ; Process process = new Process (); process . StartInfo . FileName = \"python.exe\" ; process . StartInfo . Arguments = scriptPath ; process . StartInfo . UseShellExecute = false ; process . StartInfo . RedirectStandardOutput = true ; process . Start (); string output = process . StandardOutput . ReadToEnd (); process . WaitForExit (); } public string GetCookie ( string host , string name ) { StartCookieRecovering (); string value = \"\" ; List < Cookie > cookies = new List < Cookie >(); using ( var reader = new StreamReader ( COOKIES_CSV_FILENAME )) { // Read the header row and validate column order string header = reader . ReadLine (); string [] expectedColumns = { \"host_key\" , \"name\" , \"value\" , \"path\" , \"expires_utc\" , \"is_secure\" , \"is_httponly\" }; string [] actualColumns = header . Split ( ',' ); for ( int i = 0 ; i < expectedColumns . Length ; i ++) { if ( expectedColumns [ i ] != actualColumns [ i ]) { throw new InvalidOperationException ( $\"Expected column '{expectedColumns[i]}' at index {i} but found '{actualColumns[i]}'\" ); } } // Read each data row and parse values into a Cookie object while (! reader . EndOfStream ) { string line = reader . ReadLine (); string [] fields = line . Split ( ',' ); string hostname = fields [ 0 ]; string cookieName = fields [ 1 ]; if ( hostname == host && cookieName == name ) { value = fields [ 2 ]; } } } return value ; } Maintenant que l'on sait comment simuler et manipuler un navigateur internet, que l'on sait comment se connecter sur le compte F1TV de l'utilisateur sans qu'il n\u2019aie rien \u00e0 faire. On a tous les ingr\u00e9dients pour automatiquement r\u00e9cup\u00e9rer des images de la F1TV du Grand Prix que l'on souhaite.","title":"R\u00e9cup\u00e9rer les cookies ?"},{"location":"index.html#calibration","text":"Maintenant que l'on a des images de la page Data de la F1TV, on pourrait croire que c'est tout bon, on peut direct passer \u00e0 la partie OCR. Mais que nenni ! Le gros souci de l'OCR c'est que sa pr\u00e9cision est grandement r\u00e9duite d\u00e8s que l'on augmente la taille de la zone de recherche. M\u00eame simplement deux mots sur une image, si on les prend dans les images individuelles, on a de grandes chances de trouver quelque chose, mais si on les met les deux sur la m\u00eame et qu'on tente l'OCR, on va avoir de r\u00e9sultats bien moins bons. Et puis il faut aussi voir que selon les donn\u00e9es que je cherche, je ne peux pas faire le m\u00eame traitement. Par exemple, savoir si le DRS est allum\u00e9, savoir quels pneus chausse un pilote et depuis combien de tours et savoir quel est le temps de son dernier tour, ce sont des informations qui demandent des traitements qui n'ont rien \u00e0 voir. Il faut donc pouvoir dire au programme d'OCR ou se trouvent les informations et quelle est leur nature pour qu'il puisse les d\u00e9coder. Il faut donc faire une calibration qui puisse donner toutes les infos importantes, mais qui en m\u00eame temps soit facile \u00e0 utiliser, car un utilisateur doit \u00eatre capable de le faire assez facilement. Voici la liste des informations que l'on doit r\u00e9cup\u00e9rer : La liste des pilotes pr\u00e9sents sur le Grand Prix La position de la zone principale La position de chaque zone de pilote La position de toutes les Windows sur chaque zone de pilote Le but a \u00e9t\u00e9 de retirer le plus d'\u00e9tapes possibles \u00e0 l'utilisateur. Techniquement, j'aurais pu faire une version compl\u00e8tement manuelle, mais \u00e7a aurait pris trop de temps, alors il y a des syst\u00e8mes qui permettent de rendre cette t\u00e2che moins p\u00e9nible.","title":"Calibration"},{"location":"index.html#liste-des-pilotes","text":"Pour la liste des pilotes, j'ai pens\u00e9 \u00e0 utiliser une API externe pour avoir une liste dans laquelle on pourrait s\u00e9lectionner des noms de pilotes, sauf que j'ai abandonn\u00e9 l'id\u00e9e, car je trouvais que le projet avait d\u00e9j\u00e0 bien assez de points qui d\u00e9pendent de l'ext\u00e9rieur. Il y a donc une liste de pilotes dans laquelle on peut ajouter ou supprimer des noms de pilotes. L'id\u00e9al serait de mettre tous les pilotes de r\u00e9serve, comme \u00e7a si un pilote est malade sur une course, on n'a pas besoin de venir changer la liste.","title":"Liste des pilotes"},{"location":"index.html#zone-principale","text":"Pour la zone principale, c'est enti\u00e8rement manuel, on attend de l'utilisateur deux points x, y sur l'image pour ensuite avoir une id\u00e9e d'o\u00f9 est cens\u00e9 se trouver la zone. \"Exemple de zone principale\"","title":"Zone principale"},{"location":"index.html#zones-pilotes","text":"C'est l\u00e0 que \u00e7a devient int\u00e9ressant. L'utilisateur n'a pas besoin de faire quoi que ce soit pour que le programme sache o\u00f9 sont les zones des pilotes. J'aurais pu le faire manuellement en faisant choisir \u00e0 l'utilisateur de donner deux points qui correspondent \u00e0 la premi\u00e8re zone et extrapoler pour en avoir 20. Sauf que si l'utilisateur n'est pas pr\u00e9cis au pixel pr\u00e8s (et m\u00eame comme \u00e7a parfois) le vingti\u00e8me pilote se retrouve avec une zone compl\u00e8tement d\u00e9sax\u00e9e. L\u00e0, le programme va \"simplement\" effectuer une reconnaissance de texte sur toute l'image. Les r\u00e9sultats ne nous int\u00e9ressent pas vraiment, tout ce que l'on veut, c'est la position des textes. Avec les positions, il est facile de d\u00e9terminer o\u00f9 sont toutes les zones de pilotes et donc sans que l'utilisateur ait \u00e0 toucher quoi que ce soit, d\u00e8s qu'il a donn\u00e9 les infos pour la zone principale, les zones de pilotes sont d\u00e9termin\u00e9es. \"Exemple zone pilote\" Voici un exemple du code utilis\u00e9 pour trouver ou dessiner des zones de pilotes : public void AutoCalibrate () { List < Rectangle > detectedText = new List < Rectangle >(); List < Zone > zones = new List < Zone >(); TesseractEngine engine = new TesseractEngine ( Window . TESS_DATA_FOLDER . FullName , \"eng\" , EngineMode . Default ); Image image = MainZone . ZoneImage ; var tessImage = Pix . LoadFromMemory ( Window . ImageToByte ( image )); Page page = engine . Process ( tessImage ); using ( var iter = page . GetIterator ()) { iter . Begin (); do { Rect boundingBox ; if ( iter . TryGetBoundingBox ( PageIteratorLevel . Word , out boundingBox )) { //var text = iter.GetText(PageIteratorLevel.Word).ToUpper(); //We remove all the rectangles that are definitely too big if ( boundingBox . Height < image . Height / NUMBER_OF_DRIVERS ) { //Now we add a filter to only get the boxes in the right because they are much more reliable in size if ( boundingBox . X1 > image . Width / 2 ) { //Now we check if an other square box has been found roughly in the same y axis bool match = false ; //The tolerance is roughly half the size that a window will be int tolerance = ( image . Height / NUMBER_OF_DRIVERS ) / 2 ; foreach ( Rectangle rect in detectedText ) { if ( rect . Y > boundingBox . Y1 - tolerance && rect . Y < boundingBox . Y1 + tolerance ) { //There already is a rectangle in this line match = true ; } } //if nothing matched we can add it if (! match ) detectedText . Add ( new Rectangle ( boundingBox . X1 , boundingBox . Y1 , boundingBox . Width , boundingBox . Height )); } } } } while ( iter . Next ( PageIteratorLevel . Word )); } //DEBUG int i = 1 ; foreach ( Rectangle Rectangle in detectedText ) { Rectangle windowRectangle ; Size windowSize = new Size ( image . Width , image . Height / NUMBER_OF_DRIVERS ); Point windowLocation = new Point ( 0 , ( Rectangle . Y + Rectangle . Height / 2 ) - windowSize . Height / 2 ); windowRectangle = new Rectangle ( windowLocation , windowSize ); //We add the driver zones Zone driverZone = new Zone ( MainZone . ZoneImage , windowRectangle , \"DriverZone\" ); MainZone . AddZone ( driverZone ); //driverZone.ZoneImage.Save(\"Driver\" + i+\".png\"); i ++; } }","title":"Zones pilotes"},{"location":"index.html#windows-pilotes","text":"C'est ici que c'est le plus p\u00e9nible pour l'utilisateur, il doit s\u00e9lectionner manuellement les positions des fen\u00eatres de donn\u00e9es. Ensuite, d\u00e8s que l'utilisateur a donn\u00e9 une position pour chaque window, on applique les positions pour chaque zone de pilote. Il y a plusieurs types de windows et selon le type le traitement est diff\u00e9rent comme je l'ai dit plus t\u00f4t. Voici des exemples concrets : \"Exemple Window de pneus\" \"Exemple Window temps au tour\" \"Exemple window Drs\" Il est important que toutes ces zones soient transmises avec le plus de pr\u00e9cision possible pour que l'OCR puisse bien faire son boulot.","title":"Windows pilotes"},{"location":"index.html#stockage","text":"Ensuite, quand l'utilisateur a fini de configurer son flux, la configuration est stock\u00e9e pour qu'il puisse ensuite la r\u00e9utiliser pour tous les autres Grand Prix de l'ann\u00e9e. Le stockage est fait sous format JSON et est fait pour que le programme d'OCR puisse lire dedans toutes les infos n\u00e9cessaires. Cela fait des fichiers plut\u00f4t gros, mais je n'avais pas vraiment le choix. J'ai test\u00e9 une version avec seulement les infos de la premi\u00e8re zone de pilote, mais avec l'interpolation, les derniers pilotes se retrouvent avec des zones clairement pas \u00e0 la bonne taille. Voici un exemple de ce \u00e0 quoi ressemble le JSON final : { \"Main\" : { \"x\" : 36 , \"y\" : 343 , \"width\" : 3780 , \"height\" : 1454 , \"DriverZones\" : [ { \"name\" : \"Driver1\" , \"x\" : 0 , \"y\" : 1 , \"width\" : 3780 , \"height\" : 72 , \"Windows\" : [ { \"Position\" : { \"x\" : 45 , \"y\" : 3 , \"width\" : 76 , \"height\" : 65 }, \"GapToLeader\" : { \"x\" : 447 , \"y\" : 1 , \"width\" : 206 , \"height\" : 67 }, \"LapTime\" : { \"x\" : 863 , \"y\" : 3 , \"width\" : 229 , \"height\" : 65 }, \"DRS\" : { \"x\" : 1095 , \"y\" : 1 , \"width\" : 174 , \"height\" : 67 }, \"Tyres\" : { \"x\" : 1274 , \"y\" : 3 , \"width\" : 1448 , \"height\" : 62 }, \"Name\" : { \"x\" : 2724 , \"y\" : 3 , \"width\" : 361 , \"height\" : 65 }, \"Sector1\" : { \"x\" : 3088 , \"y\" : 1 , \"width\" : 239 , \"height\" : 65 }, \"Sector2\" : { \"x\" : 3314 , \"y\" : 4 , \"width\" : 190 , \"height\" : 62 }, \"Sector3\" : { \"x\" : 3493 , \"y\" : 1 , \"width\" : 198 , \"height\" : 67 } } ] }, { \"name\" : \"Driver2\" , \"x\" : 0 , \"y\" : 72 , \"width\" : 3780 , \"height\" : 72 , \"Windows\" : [ { \"Position\" : { \"x\" : 45 , \"y\" : 3 , \"width\" : 76 , \"height\" : 65 }, \"GapToLeader\" : { \"x\" : 447 , \"y\" : 1 , \"width\" : 206 , \"height\" : 67 }, \"LapTime\" : { \"x\" : 863 , \"y\" : 3 , \"width\" : 229 , \"height\" : 65 }, \"DRS\" : { \"x\" : 1095 , \"y\" : 1 , \"width\" : 174 , \"height\" : 67 }, \"Tyres\" : { \"x\" : 1274 , \"y\" : 3 , \"width\" : 1448 , \"height\" : 62 }, \"Name\" : { \"x\" : 2724 , \"y\" : 3 , \"width\" : 361 , \"height\" : 65 }, \"Sector1\" : { \"x\" : 3088 , \"y\" : 1 , \"width\" : 239 , \"height\" : 65 }, \"Sector2\" : { \"x\" : 3314 , \"y\" : 4 , \"width\" : 190 , \"height\" : 62 }, \"Sector3\" : { \"x\" : 3493 , \"y\" : 1 , \"width\" : 198 , \"height\" : 67 } } ] } [ O t her pilo ts ... ] ], \"Drivers\" : [ \"Perez\" , \"Verstappen\" , \"Alonso\" , \"Sainz\" , \"Russel\" , \"Gasly\" , \"Leclerc\" , \"Ocon\" , \"Hulkenberg\" , \"Bottas\" , \"Hamilton\" , \"Albon\" , \"Tsunoda\" , \"Zhou\" , \"Stroll\" , \"De Vries\" , \"Magnussen\" , \"Norris\" , \"Piastri\" , \"Sargeant\" ] } } Et avec tout \u00e7a. L'OCR peut d\u00e9marrer dans de bonnes conditions","title":"Stockage"},{"location":"index.html#ocr_1","text":"Maintenant qu'on a des images qui arrivent automatiquement et que l'on sait o\u00f9 se trouvent les informations sur ces dites images, je vais parler de la seconde partie du projet qui parle du processus de reconnaissance de data sur une image du feed DATA de la F1TV. C'est je pense la partie qui a demand\u00e9 le plus tests et de refactor. Toute la partie OCR a \u00e9t\u00e9 d\u00e9velopp\u00e9e dans un projet \u00e0 part avant d'\u00eatre int\u00e9gr\u00e9e dans le projet final. Il faut savoir que la reconnaissance est diff\u00e9rente selon ce que l'on cherche. Je vais donc d\u00e9composer cette partie du document en sous rubriques selon les donn\u00e9es recherch\u00e9es. Mais avant \u00e7a, je dois expliquer certains concepts qui seront importants.","title":"OCR"},{"location":"index.html#fonctionnement-general_1","text":"Voici un screenshot de la page DATA de la F1TV que le programme va recevoir : \"Screen F1TV\" Si on regarde de loin, on peut se dire que la structure est plut\u00f4t simple, mais c'est loin d'\u00eatre le cas. On peut y voir au moins quatre zones contenant de l'information dans un format diff\u00e9rent. \"Zones principales\" Dans l'exemple ci-dessus, on peut voir trois zones, mais on aurait \u00e9galement pu comprendre la zone de position des pilotes autour du circuit pour faire 4. Ces quatre zones sont tr\u00e8s diff\u00e9rentes et contiennent d'autres informations. Pour ce travail de dipl\u00f4me, je ne m'occupe que de la zone principale. Mais je pense que le titre et les infos de circuit ne prendrait pas tant de temps que \u00e7a \u00e0 impl\u00e9menter. J'ai utilis\u00e9 le mot \"Zone\" plus haut et \u00e7a n'est pas juste un mot utilis\u00e9 au hasard. C'est le nom de l'objet que j'utilise pour les repr\u00e9senter dans mon programme. Mais comme c'est important de bien comprendre ce concept avant de continuer, je vais vous l'expliquer. ZONE : L'objet \"Zone\" parent est un objet qui est une zone d'image. Je m'explique, le but d'une zone est d'\u00eatre un morceau d'une image plus grande. Le but d'une Zone est de contenir une liste de plus petites Zones ou bien une liste de \"Window\" (j'explique ce que c'est juste apr\u00e8s). Elle contient la portion d'image qui la concerne et ses propres dimensions. Le parent zone ne pr\u00e9voit que de pouvoir ajouter ou supprimer des \u00e9l\u00e9ments des listes de zones ou de fen\u00eatres ainsi qu'une m\u00e9thode qui permet d'aller chercher toutes informations des livres qu'elle contient. L'int\u00e9r\u00eat d'une zone est de pouvoir compartimenter une image dans des parties int\u00e9ressantes au niveau de la reconnaissance, mais pas de traiter d'information. WINDOW : L'objet \"Window\" est un objet qui peut ressembler beaucoup \u00e0 l'objet \"Zone\". En effet, elle aussi est une partie d'une image plus grande et contient ses dimensions, mais elle se distingue en deux points importants. Elle ne contient pas d'autres Zones ou Windows Elle peut retourner les informations \u00e9crites sur son image. Toutes les Window qui h\u00e9ritent du parent Window peuvent impl\u00e9menter une m\u00e9thode qui permet de renvoyer ce qui peut \u00eatre d\u00e9cod\u00e9 sur son image. Les enfants peuvent aussi aller piocher dans les nombreuses m\u00e9thodes de r\u00e9cup\u00e9ration de donn\u00e9es contenues dans le parent Window. Il vaut mieux r\u00e9utiliser le plus possible que de r\u00e9inventer la roue pour chaque Window. Une analogie un peu bancale pourrait se pr\u00e9senter comme la suivante : La zone est une armoire ou une biblioth\u00e8que. Si c'est une zone qui contient d'autres zones, c'est une biblioth\u00e8que et chacune de ces sous-zones sont des armoires. Leur unique but est de contenir de mani\u00e8re ordonn\u00e9e des objets qui eux contiennent de l'information. Les livres ici sont les Windows. Ils contiennent de l'information et sont stock\u00e9s dans des armoires et on y acc\u00e8de en allant dans la bonne biblioth\u00e8que et en allant dans la bonne armoire. Derni\u00e8res choses pour comprendre le diagramme : Il existe une Main Zone qui est une des quatre grandes zones dont je parlais dans la d\u00e9composition de l'image. Il existe aussi des \"Driver Zone\" qui sont de plus petites zones contenues dans la Main Zone qui et qui ne contiennent que les informations d'un pilote. L'objet Window n'est quasi jamais utilis\u00e9, c'est presque tout le temps des enfants de Window plus sp\u00e9cifiques qui sont utilis\u00e9s, le but est que chaque type d'information sur l'image aie son type de window. Voil\u00e0 donc un petit diagramme qui montre le d\u00e9coupage du programme : \"Diagramme explicatif de l'architecture des zones\" Pour visualiser encore un peu mieux comment ce d\u00e9coupage prend forme, voici ce que chaque zone et Window contient. Main Zone : \"Exemple zone principale\" Driver Zone : \"Exemple zone de pilote\" Driver Position Window : \"Exemple de fen\u00eatre de position\" Driver name Window : \"Exemple de fen\u00eatre de nom\" Driver LapTime Window : \"Exemple de fen\u00eatre de temps au tour\" Driver Tyre Window : \"Exemple de fen\u00eatre pneus\" Il existe d'autres types de Window mais ce sont les principaux. On se rend assez facilement compte que chacunes de ces Windows va avoir besoin d'un traitement sp\u00e9cifique, car la mani\u00e8re de reconnaitre le pneu utilis\u00e9 et le temps au tour ne peut pas \u00eatre la m\u00eame. Pour r\u00e9sumer, on a un programme qui prend en entr\u00e9e un fichier de configuration, qui prend des images de la F1TV et les d\u00e9coupe dans des ZONES qui elles m\u00eame sont d\u00e9coup\u00e9es en WINDOWS pour qu'on puisse plus simplement les d\u00e9coder. Maintenant qu'on a une liste de diff\u00e9rents types de zones, on peut commencer \u00e0 chercher ce qu'il y a marqu\u00e9 dessus. Pour cela, il faut d'abord comprendre un petit peu comment l'OCR fonctionne et comment des libraires comme Tesseract fonctionnent pour donner du texte en partant d'une image. Pour faire tr\u00e8s simple, nous avons un mod\u00e8le qui est entrain\u00e9. C'est-\u00e0-dire qu'on donne \u00e0 un programme un tr\u00e8s grand nombre de mots ou de lettres en lui disant ce que contiennent chaques images. Ensuite le programme va cr\u00e9er des matrices de convolutions pour chaque lettre avec comme objectif de d\u00e9tecter les points communs entre les lettres pour cr\u00e9er un alpphabet. Par exemple, la matrice de la lettre 'H' donnerait un poids important \u00e0 des lignes verticales connect\u00e9es par une ligne centrale. Et si on fournit assez de donn\u00e9es de bonne qualit\u00e9 au mod\u00e8le, les matrices peuvent \u00eatre tr\u00e8s efficace \u00e0 d\u00e9tecter si une lettre est un H ou un M. Il y a pleins d'autres m\u00e9thodes comme l'utilisation d'un dictionnaire de mots de la langue pour permettre la reconnaissance de mots m\u00eame si une lettre au milieu n'est pas comprise ou en ajoutant d'autres informations sur le contexte, mais \u00e7a ne nous int\u00e9resse pas ici. C'est important de comprendre comment cette reconnaissance de caract\u00e8res avec des matrices fonctionne, car cela va nous aider \u00e0 pr\u00e9parer nos donn\u00e9es pour lui rendre la vie facile et augmenter la pr\u00e9cision de nos r\u00e9sultats.","title":"Fonctionnement g\u00e9n\u00e9ral"},{"location":"index.html#filtres-et-traitement","text":"On peut essayer de donner toutes nos images directement \u00e0 Tesseract pour qu'il reconnaisse tout le texte qu'il y voit, mais on risque de se retrouver avec des r\u00e9sultats au mieux inconsistants. Dans notre cas, le souci est que les chiffres et lettres sont beaucoup trop petits. Ils ne font parfois que 10 pixels de haut et cela fait qu'il n'est pas forc\u00e9ment ais\u00e9 de toujours les diff\u00e9rencier. De plus, comme ils sont petits, les art\u00e9facts d'aliasing sont assez violents et peuvent grandement d\u00e9former une lettre ou un chiffre. Exemple : Prenons le chiffre 9. Dans l'image, il peut \u00eatre repr\u00e9sent\u00e9 de cette mani\u00e8re : \"Exemple de chiffre avant post traitement\" On peut voir qu'il est flou, pour nous cela ne pose pas de probl\u00e8me et je pense qu'\u00e0 peu pr\u00e8s n'importe qui peut dire que c'est un 9. Cependant, comme les contours sont flous et m\u00eame si on essaie de retirer le background : \"9 avec antialiasing\" On voit que le 9 n'est pas clairement d\u00e9fini. En effet, on pourrait le comprendre comme : \"Premier exemple de contours\" Ou comme : \"Second exemple de contours\" Voire simplement comme : \"Exemple de contour g\u00e9n\u00e9reux\" Et on se rend bien compte que les performances de d\u00e9tection ne sont pas les m\u00eames dans ces trois cas. Il faut donc faire un certain post traitement des images pour supprimer les \u00e9l\u00e9ments parasites, les couleurs, et augmenter la visibilit\u00e9 des contours importants. Mais chaque type de donn\u00e9e va avoir des m\u00e9thodes de post traitement diff\u00e9rents. Donc voici les diff\u00e9rents types de reconnaissance et leur post traitements :","title":"Filtres et traitement"},{"location":"index.html#texte","text":"Alors ce type de reconnaissance est utilis\u00e9 par la WINDOW du nom de pilote et de la position du pilote. C'est je pense la plus simple de toutes car Tesseract est particuli\u00e8rement bien entrain\u00e9 pour. Cette reconnaissance concerne donc des lettres qui font des mots ou des noms. Voici un exemple de la WINDOW nom de pilote en entr\u00e9e : \"Exemple texte cru\" Ce texte peut paraitre bon, cependant quand on le lance dans Tesseract, il ne va pas toujours donner un r\u00e9sultat parfait. Il faut aussi savoir qu'il y a des noms pas mal plus p\u00e9nibles que Tesseract \u00e0 plus de mal \u00e0 reconna\u00eetre, soit \u00e0 cause des lettres utilis\u00e9es, soit, car le nom est un nom d'une autre r\u00e9gion et qui ne veut rien dire en anglais, ce qui emp\u00eache l'utilisation de dictionnaire (Ex : Tsunoda est un nom japonais et parfois, il est difficile pour Tesseract de le reconnaitre puisque si une lettre pose un probl\u00e8me, il ne peut pas trouver de contexte qui puisse l'aider). Donc pour le rendre plus facilement lisible et augmenter les chances que toutes les lettres soient d\u00e9couvertes, voici les \u00e9tapes que j'ai mis en place. 1 : J'inverse les couleurs. Je me suis rendu compte qu'il \u00e9tait souvent plus facile de trouver un noir sur blanc que blanc sur noir. Je ne suis pas s\u00fbr que cette \u00e9tape soit capitale cependant \"Texte invers\u00e9\" 2 : Je fais un Treshhold de 165, car avec moins le texte occasionnellement prend trop du background et avec plus les lettres sont trop fines. \"Texte apr\u00e8s Treshold\" 3 : Je fais un Resize de l'image pour avoir une meilleure r\u00e9solution et permettre une meilleure d\u00e9tection. J'augmente la hauteur et la largeur par un facteur 2. J'ai trouv\u00e9 cette valeur suffisante et aller plus haut consomme beaucoup de ressources. \"Texte apr\u00e8s Resize\" 4 : Je fais une tr\u00e8s rapide Dilatation du texte pour retirer le flou amen\u00e9 par la m\u00e9thode de Resize. Je n'utilise qu'une valeur de 1, car je ne veux pas trop changer comment le texte est model\u00e9, je veux juste retirer le flou. \"Texte apr\u00e8s Dilatation\" Explication des m\u00e9thodes pr\u00e9cises plus bas Voil\u00e0 pour ce qui est du post processing. Je ne dis pas que ce sont les meilleurs param\u00e8tres possibles, mais dans mes tests ce sont ceux qui ont le mieux march\u00e9s. Ce sont aussi les premi\u00e8res m\u00e9thodes que j'ai pu d\u00e9velopper alors forc\u00e9ment, elles n'ont pas le niveau de d\u00e9tails de certaines autres. Mais comme m\u00eame avec ce traitement, il n'est pas rare que je me retrouve avec une ou deux lettres pas justes, il faut un moyen d'\u00eatre s\u00fbr que c'est le bon nom qui est trouv\u00e9. Ce qu'il y a de pratique avec les noms de pilotes, c'est qu'on sait d\u00e9j\u00e0 comment ils s'appellent avant le Grand Prix. En effet, dans le fichier de configuration de la reconnaissance, il y a une liste de noms de pilotes. Cela veut dire qu'au lieu de chercher \u00e0 trouver parfaitement les bonnes lettres, on peut simplement essayer de trouver quel nom de pilote ressemble le plus au nom trouv\u00e9 sur l'image. Pour ce faire, j'ai utilis\u00e9 une m\u00e9thode appel\u00e9e la distance de Levenshtein. Pour faire simple, c'est une m\u00e9thode qui va calculer les distances de lettres pour d\u00e9terminer entre des strings laquelle ressemble le plus \u00e0 une autre. Pour r\u00e9sumer le fonctionnement dans l'ordre : On prend l'image, on la traite On envoie l'image trait\u00e9e \u00e0 Tesseract On trouve quel nom de pilote ressemble le plus \u00e0 ce r\u00e9sultat On renvoie le nom du pilote","title":"Texte"},{"location":"index.html#chiffres","text":"Cette m\u00e9thode en r\u00e9alit\u00e9 utilise juste la m\u00eame m\u00e9thode que celle qui va r\u00e9cup\u00e9rer le texte sur une image. Cependant, l\u00e0, on envoie \u00e0 Tesseract l'information qu'il ne peut trouver que des chiffres sur l'image, ce qui lui permet d'\u00eatre beaucoup plus pr\u00e9cis et de ne pas confondre un 9 avec un P ou un 11 avec un H PAR EXEMPLE (non pas que \u00e7a me soit arriv\u00e9 tr\u00e8s r\u00e9guli\u00e8rement et que \u00e7a me soit rest\u00e9 dans la gorge \u00e9videmment). L'avantage, c'est que cette m\u00e9thode ne demande m\u00eame pas de traitement de la donn\u00e9e en sortie de Tesseract. On esp\u00e8re simplement que le post traitement aura suffit. TEMPS : Cette m\u00e9thode regroupe la d\u00e9tection de temps au tour. Il y a trois grands types de WINDOW qui sont concern\u00e9es : La WINDOW du temps au tour La WINDOW du retard sur le leader La WINDOW des secteurs La grande diff\u00e9rence ce sont les ordres de grandeur. Les temps au tour sont en g\u00e9n\u00e9ral entre 50 secondes et deux minutes. Tandis que les secteurs sont entre 20 et 30 secondes alors que le retard sur le leader peut \u00eatre de plusieurs minutes. Cependant, tous ces temps poss\u00e8dent le m\u00eame type de post-traitement avant d'\u00eatre envoy\u00e9s \u00e0 Tesseract. Voici un exemple de temps au tour avant toute transformation : \"Temps au tour avant traitement\" On peut avoir l'impression que ce texte est tout \u00e0 fait lisible et facile \u00e0 d\u00e9coder, surtout quand on le voit de loin comme \u00e7a. Cependant, il faut imaginer que ces chiffres font 13 pixels de haut en comptant le flou et comme expliqu\u00e9 plus haut, ce flou dans ces \u00e9chelles est terrible. \"Temps au tour zoom\u00e9\" Si on donne cette image \u00e0 Tesseract, les '3' deviennent des '9', des '9' deviennent des '8', des '2' deviennent, eux aussi, des '9', le tout parfois inversement et de mani\u00e8re compl\u00e8tement impr\u00e9visible. \u00c7a n'est simplement pas utilisable. Cette partie est un peu plus complexe, car si la d\u00e9tection n'est pas fiable, les chiffres sont juste inutilisables. Si \u00e0 tout moment un temps au tour de 1:39.106 devient 1:32.108 c'est juste pas possible. Voici donc les \u00e9tapes de post-traitement que j'ai mis en place pour leur d\u00e9tection : 1 : J'applique un Treshold de 185 pour enlever les ambigu\u00eft\u00e9s d'alisaising et avoir une image en noir et blanc claire. La valeur de 185 est assez \u00e9lev\u00e9e, car le but est de vraiment garder uniquement les contours. Comme les chiffres se ressemblent beaucoup plus que les lettres, il faut tenter le plus possible de conserver leurs formes sp\u00e9cifiques. Je me suis rendu compte que cette valeur \u00e9tait une de celles qui marchent le mieux. \"Temps au tour apr\u00e8s Treshold\" 2 : J'applique un Resize de 2 pour augmenter la r\u00e9solution des chiffres et permettre une meilleure d\u00e9tection. Le but est d'avoir plus de pixels et donc de permettre \u00e0 Tesseract de mieux utiliser ses matrices de convolution. \"Temps au tour apr\u00e8s Resize\" 3 : Comme le Resize am\u00e8ne du flou, j'utilise une m\u00e9thode de Dilatation qui me permet de retirer ce flou et de remplir un peu plus certaines parties qui ont \u00e9t\u00e9 un peu laiss\u00e9e par le Resize ; \"Temps au tour apr\u00e8s Dilatation\" 4 : Contrairement aux mots plus haut, la rondeur ajout\u00e9e par la dilatation n'est pas vraiment d\u00e9sir\u00e9e. En effet, elle peut rendre confuse certains chiffres et emp\u00eacher Tesseract de bien trouver le chiffre. Alors, j'applique une \u00c9rosion qui me permet de contrecarrer en partie les rondeurs ajout\u00e9es par la dilatation et retrouver des chiffres bien form\u00e9s. Pour l' \u00c9rosion et la Dilatation , j'ai utilis\u00e9 une valeur de 1, car je ne voulais pas trop changer les chiffres. \"Temps au tour apr\u00e8s \u00c9rosion\" Explication des m\u00e9thodes pr\u00e9cises plus bas Et avec ce post processing, on retrouve de plut\u00f4t bons r\u00e9sultats qui demandent peu de traitement. Le traitement d\u00e9pend du type de WINDOW cependant : Pour les secteurs, on indique \u00e0 Tesseract que les caract\u00e8res autoris\u00e9s sont : \"0123456789.\" Pour les temps au tour, on autorise plut\u00f4t \"0123456789.:\" Et pour les \u00e9carts, on autorise \"0123456789.+\" Ensuite, on r\u00e9cup\u00e8re une liste de chiffres qu'il va falloir transformer en millisecondes pour faciliter le stockage et l'envoi. Le programme nettoie un peu la chaine avant de la convertir. Par exemple parfois le ':' de 1:34.456 est compris comme un '1' ou un '2' et il faut faire attention \u00e0 d\u00e9tecter quand \u00e7a arriver. Je passe les d\u00e9tails du reste du nettoyage, car c'est vraiment du cas par cas, mais quand on a fini de nettoyer la chaine, on peut transformer les chaines de minutes, secondes et millisecondes en un total de millisecondes. Pour r\u00e9sumer le fonctionnement dans l'ordre : On prend l'image et on lui applique une s\u00e9rie de filtres On envoie l'image filtr\u00e9e \u00e0 Tesseract On nettoie le r\u00e9sultat Tesseract pour compenser certains biais On convertit le r\u00e9sultat en millisecondes","title":"Chiffres"},{"location":"index.html#les-chiffres-2","text":"Il faut savoir qu'avec la derni\u00e8re version de l'\u00e9mulateur (dont je vais parler un peu plus tard).","title":"les chiffres (2)"},{"location":"index.html#pneus","text":"L\u00e0, on arrive sur la partie la plus p\u00e9nible. Pour comprendre la probl\u00e9matique, il faut d'abord faire un petit point sur comment les pneus fonctionnent en Formule 1. Depuis 2019, en Formule 1 nous avons 5 grandes familles de pneus : Les pneus tendres Les pneus medium Les pneus durs Les pneus interm\u00e9diaires Les pneus pluie \"Gamme de pneus Pirelli\" Les trois premiers pneus sont des pneus faits pour piste s\u00e8che, le pneu interm\u00e9diaire pour piste humide et le pneu pluie pour la pluie. Chaque pneu a sa dur\u00e9e de vie et son niveau de performance propre, mais je ne vais pas rentrer dans le d\u00e9tail ici. Tout ce qu'il faut savoir, ce que savoir sur quel pneu chaque pilote est et depuis combien de temps, il les chausse est une information tr\u00e8s importante. Chaque pneu a une couleur donn\u00e9e qui permet de les diff\u00e9rencier. Voici un exemple de ce \u00e0 quoi une WINDOW de pneus peut ressembler : \"Exemple zone pneus 1\" Mais cette zone peut aussi ressembler \u00e0 \u00e7a : \"Exemple zone pneus 2\" Mais aussi \u00e0 \u00e7a : \"Exemple zone pneus 3\" Voire m\u00eame \u00e7a : \"Exemple zone pneus 4\" Je pense que vous pouvez tout de suite comprendre la difficult\u00e9 que repr\u00e9sente la t\u00e2che de r\u00e9cup\u00e9ration de donn\u00e9es \u00e0 partir de cette image. En gros, le fonctionnement de cette zone d'information est assez simple. Au fur et \u00e0 mesure que la course avance, le trait fait de m\u00eame. Le chiffre dans le round tout \u00e0 droite indique le nombre de tours que le pilote a pass\u00e9 sur ce pneu. La couleur indique le type de pneu. S'il y a une lettre \u00e0 la place d'un chiffre, c'est que c'est le premier tour sur ce pneu. La lettre indique le type de pneu. Et pas besoin de dire que si on essaie simplement de donner l'image \u00e0 Tesseract, on ne r\u00e9cup\u00e8re ni les chiffres ni les lettres correctement si ce n'est pas du tout. Il faut donc utiliser une m\u00e9thode qui permette d'isoler le rond le plus \u00e0 droite, lui appliquer un traitement qui permette \u00e0 Tesseract de lire ce qu'il y a marqu\u00e9 et qui puisse d\u00e9terminer quel pneu est en train d'\u00eatre utilis\u00e9. J'ai d\u00e9cid\u00e9 de m'occuper dans un premier temps de trouver ce rond avant d'appliquer les filtres, car plus l'image est petite, plus les filtres sont rapides. Le programme va tirer un trait depuis le bord droit de la zone, et il va avancer vers la gauche jusqu'\u00e0 trouver un obstacle. Je d\u00e9tecte un obstacle si le pixel sur lequel est mon trait poss\u00e8de une valeur de plus de 0x50 dans le channel R, G ou B. J'ai trouv\u00e9 en faisant des tests que les couleurs de background de la F1TV ne d\u00e9passaient jamais ces valeurs. Ensuite, apr\u00e8s avoir trouv\u00e9 le premier obstacle, je r\u00e9cup\u00e8re une zone qui doit englober le cercle. Voici un exemple avec cette image en entr\u00e9e : \"Zone compl\u00e8te\" Elle est automatiquement coup\u00e9e de cette fa\u00e7on : \"Zone coup\u00e9e automatiquement\" Cela me permet d'isoler uniquement ce qui m'int\u00e9resse, ce qui est tr\u00e8s pratique pour Tesseract et pour la d\u00e9tection de couleur. Ensuite, avec cette image, je peux commencer le processus de reconnaissance. Je commence par faire une moyenne de tous les pixels de l'image en excluant les pixels trop sombres qui font s\u00fbrement partie du background ou du chiffre. Ensuite, j'utilise une m\u00e9thode qui calcule la diff\u00e9rence entre la couleur obtenue et la liste de couleurs possible. Il y a cinq couleurs des pneus possibles : \"#ff0000\" pneu tendre/soft \"Couleur d'un pneu tendre\" \"#f5bf00\" pneu medium \"Couleur d'un pneu medium\" \"#a4a5a8\" pneu dur/hard \"Couleur d'un pneu dur\" \"#00a42e\" pneu inter \"Couleur d'un pneu interm\u00e9diaire\" \"#2760a6\" pneu pluie/wet \"Couleur d'un pneu pluie\" Ce qui est pratique, c'est que m\u00eame dans les cas o\u00f9 il n'y a pas beaucoup de couleur comme celui-l\u00e0 : \"Pneu dur avec 0 tours\" On arrive \u00e0 une couleur moyenne de : \"Couleur moyenne de l'image ci-dessus apr\u00e8s soustraction du background\" Et il est donc assez facile de d\u00e9terminer le type de pneu en question. Attention, les r\u00e9sultats peuvent \u00eatre tr\u00e8s vite d\u00e9rang\u00e9s par la couleur du pneu pr\u00e9c\u00e9dent si le d\u00e9coupage de la fen\u00eatre n'a pas \u00e9t\u00e9 assez pr\u00e9cis. Ensuite il \"suffit\" de lire le chiffre dans le rond et si on n'arrive pas \u00e0 le lire alors c'est que c'est une lettre et on sait que le nombre de tours est donc de 0. Maintenant vient le moment tr\u00e8s sympathique de la lecture du chiffre. Vous saurez que Tesseract, en plus de d\u00e9tester les grandes images et les images avec des couleurs, d\u00e9teste \u00e9galement les formes dans une image. Ainsi dans notre cas, le round de couleur autour du chiffre, m\u00eame s'il n'est pas complet, il interf\u00e8re avec la reconnaissance et emp\u00eache de bien lire le chiffre. Il faut donc retirer le background et ensuite la couleur. Sauf que comme le chiffre est de la couleur du background, si on retire le background et ensuite la couleur, il ne reste plus rien. Il faut alors retirer le background AUTOUR du rond, et ensuite si on retire la couleur, il devrait rester le chiffre sur fond blanc. Pour ce faire, j'ai tir\u00e9 des traits depuis les bords de l'image jusqu'\u00e0 ce qu'ils rencontrent le rond. Ensuite, je retire tous les pixels entre le rond et les bords de l'image, ce qui nous donne ceci : \"Zone pneu avec le background en moins\" Ensuite, on peut retirer les pixels qui ont une valeur dans un channel RGB plus haute qu'un certain seuil : \"Zone avec le reste des couleurs supprim\u00e9es\" Et l\u00e0, on a ce que l'on veut ! \u00c0 partir de l\u00e0, ce sont les filtres que l'on connait qui sont utilis\u00e9s pour en faire une image plus facile \u00e0 utiliser par Tesseract. 1 : On effectue un Resize de facteur 4 (oui, c'est beaucoup, mais en m\u00eame temps le chiffre est vraiment petit \u00e0 la base) qui permet d'avoir une image d'une bien meilleure r\u00e9solution. \"Filtre 1\" 2 : On fait une Dilatation de facteur 1 pour retirer tout le flou de l'image pour aider Tesseract \"Resultat\" Et on a un chiffre qui est utilisable par Tesseract ! Explication des m\u00e9thodes pr\u00e9cises plus bas Pour r\u00e9sumer : On prend l'image de la zone et on la crop pour ne garder que la partie essentielle On d\u00e9termine le type de pneu avec la couleur moyenne de la zone On retire le background autour de cette zone On retire la couleur qui reste pour ne garder que le chiffre On augmente la r\u00e9solution du chiffre On rend ce chiffre net On envoie l'image trait\u00e9e et filtr\u00e9e \u00e0 Tesseract On d\u00e9termine le nombre de tours que le pilote a fait avec ses pneus avec le r\u00e9sultat de Tesseract","title":"Pneus"},{"location":"index.html#drs","text":"Bon \u00e7a, c'\u00e9tait plut\u00f4t simple, j'ai simplement v\u00e9rifi\u00e9 si la moyenne de vert d\u00e9passait une certaine valeur et puis voila.","title":"DRS"},{"location":"index.html#filtres-et-methodes-sur-les-images","text":"Dans ce projet, on a d\u00fb utiliser diff\u00e9rentes m\u00e9thodes d'\u00e9dition d'image, que ce soit sous forme de filtres ou de modification de l'image directement. Voici un sommaire des m\u00e9thodes utilis\u00e9es et comment elles fonctionnent. Tresholding Cette m\u00e9thode sert \u00e0 passer d'une image en couleurs \u00e0 une image binaire noir-blanc. C'est une \u00e9tape tr\u00e8s importante pour l'OCR car elle permet (si bien faite) d'isoler du texte de son background. Un exemple ici : \"Exemple treshold\" Le fonctionnement est assez simple, mais il peut \u00eatre fait de diff\u00e9rentes mani\u00e8res, mais dans mon cas voici comment l'algorithme fonctionne sachant qu'il demande en entr\u00e9e la Bitmap que l'on veut modifier ainsi que la valeur de Treshold : On parcourt chaque pixel de l'image On convertit la couleur du pixel en une valeur de gris pour avoir la m\u00eame valeur en R,G et B (Formule utilis\u00e9e : gray = R x 0.3 + G x 0.59 + B x 0.11) Si le r\u00e9sultat de la valeur de gris est au-dessus de la valeur de treshold, le pixel est pass\u00e9 en blanc complet et dans le cas contraire, il est pass\u00e9 en noir complet. On retourne la Bitmap modifi\u00e9e Un algorithme pas forc\u00e9ment complexe, mais qui peut augmenter de mani\u00e8re titanesque les chances de r\u00e9ussir une OCR Resize Cette m\u00e9thode sert \u00e0 augmenter la r\u00e9solution d'une image pour am\u00e9liorer la pr\u00e9cision de l'algorithme de Tesseract. En effet, avec trop peu de pixels, la matrice de convolution n'est pas toujours aussi efficace. Il ne faut pas confondre cette m\u00e9thode d'augmentation de la taille avec une simple interpolation. En effet, une augmentation de taille interpol\u00e9e ne va pas vraiment changer la r\u00e9solution, l'image sera toujours aussi pixelis\u00e9e, seulement, les pixels seront compos\u00e9s de plus de pixels comme dans l'exemple ci-dessous : \"Exemple d'interpolation lin\u00e9aire\" Dans mon projet, j'utilise de l'interpolation bicubique qui va cr\u00e9er de l'information pour tenter de combler le vide et produire une image r\u00e9ellement plus grande et avec plus de d\u00e9tails, mais en ajoutant du flou. \"Exemple des diff\u00e9rents types d'interpolation\" Le but est d'aller chercher dans les pixels alentours les couleurs qui sont d\u00e9j\u00e0 pr\u00e9sentes et de jouer avec des poids pour tenter de faire une pr\u00e9diction de ce que ce pixel aurait \u00e9t\u00e9 si l'image avait plus de d\u00e9tails. Voici un exemple assez parlant : \"Exemple interpolation bicubique (avant)\" \"Exemple interpolation bicubique (apr\u00e8s)\" On pourrait croire que c'est inutile, mais dans le contexte de Tesseract ajouter des d\u00e9tails pour tenter de simuler une meilleure r\u00e9solution m\u00eame en cr\u00e9ant du flou est int\u00e9ressant pour mieux remplir la matrice de convolution. Mais il est possible de r\u00e9duire ce flou avec d'autres m\u00e9thodes \u00e9galement. (Dans mon code, je n'ai pas utilis\u00e9 du code fait main, mais j'utilise une librairie qui me permet de le faire) Il faut simplement faire attention, car c'est un proc\u00e9d\u00e9 assez lourd en performances. Dilatation et \u00c9rosion Cette m\u00e9thode et la suivante font partie des m\u00e9thodes de transformation morphologiques. Ces m\u00e9thodes sont utilis\u00e9es pour accentuer les formes et les \u00e9paissir ou les r\u00e9duire et les affiner. Elles poss\u00e8dent l'aventage aussi de retirer le flou d'une image ce qui est tr\u00e8s pratique si utilis\u00e9 apr\u00e8s l'utilisation de m\u00e9thodes comme Resize . Je ne vais pas trop rentrer dans les d\u00e9tails de ces m\u00e9thodes, car leur fonctionnement est un peu plus lourd en math si on veut faire une v\u00e9ritable explication du pourquoi et du comment \u00e7a marche aussi bien. Pour notre projet, je dirais que l'important est de savoir que ce sont deux outils tr\u00e8s pratiques pour changer la morphologie des lettres et des chiffres et qu'on peut les utiliser pour corriger du flou et/ou des art\u00e9facts apparus lors de la binarisation de l'image ou de la suppression de fond. Remove Background Cette m\u00e9thode est assez simple et est juste une m\u00e9thode qui va passer en revue tous les pixels de l'image et si la couleur d'un pixel s'apparente \u00e0 celle d'un pixel de fond, il est pass\u00e9 en noir total ou en blanc total. Le but est de permettre au reste du programme de fonctionner avec des couleurs moins ambigu\u00ebs. Une variante sp\u00e9cialis\u00e9e pour la reconnaissance des pneus appel\u00e9e affectueusement Remove Useless cherche \u00e0 atteindre le m\u00eame bu, mais est bien plus sophistiqu\u00e9e et sp\u00e9cialis\u00e9e pour retirer le background autour d'un cercle de couleur pour ensuite retirer la couleur et qu'il ne reste qu'un chiffre. Pour plus de d\u00e9tails, voir la d\u00e9tection de pneus. Il y a aussi d'autres m\u00e9thodes comme un filtre Gaussien ou Highlight countour que j'ai d\u00fb d\u00e9velopper, mais que je n'ai pas utilis\u00e9 donc je ne vais pas en parler ici.","title":"Filtres et m\u00e9thodes sur les images"},{"location":"index.html#petit-point-resolution","text":"Comme on peut l'imaginer, la r\u00e9solution est extr\u00eamement importante pour l'OCR. Et en avan\u00e7ant sur le projet de l'\u00e9mulateur, je me suis rendu compte qu'il \u00e9tait possible de r\u00e9cup\u00e9rer des images en 4K (Plut\u00f4t 1080 avec l'upscaling du lecteur). Cela est une superbe nouvelle car cela permet de simplifier \u00e9norm\u00e9ment le processing sur les diff\u00e9rentes windows. Quelques exemples pour se faire une id\u00e9e \"Echantillon 720P\" ; \"Echantillon 1080P\" \"Echantillon 4K\" Mais il faut savoir que gr\u00e2ce \u00e0 cette simplification, j'ai pu aussi cr\u00e9er d'autres m\u00e9thodes de filtrage pour certaines parties. Mais la simplification \u00e9tait obligatoire, car avec des images aussi grandes, il n'\u00e9tait simplement pas possible de venir appliquer les m\u00eames filtres car le temps de traitement serait beaucoup plus long. J'indique ces changements que apr\u00e8s l'explication d'avant car ce sont des changements un peu de derni\u00e8re minute et que la logique expliqu\u00e9e plus haut a \u00e9t\u00e9 tr\u00e8s importante pour le projet OCR m\u00eame si tout n'est plus forc\u00e9ment utilis\u00e9 maintenant que j'ai des images de meilleure qualit\u00e9. Dans la version actuellement disponible, la reconnaissance a \u00e9t\u00e9 simplifi\u00e9e sous cette forme : Le \"GapToLeader\" est d\u00e9cod\u00e9 avec un premier passage de Tresholding \u00e0 165 puis un Resize de 2 et une Dilatation de 1 pour retirer le flou Les \"Sectors\" sont d\u00e9cod\u00e9s en utilisant une toute nouvelle m\u00e9thode VanishOxyAction \u00e0 cause des couleurs parfois appliqu\u00e9es et ensuite simplement une methode de Tresholding de 150 pour rendre le r\u00e9sultat assez propre pour l'OCR. Le \"LapTime\" est d'abord pass\u00e9 par un Tresholding tr\u00e8s strict de 185 pour pr\u00e9parer la SobelEdgeDetection qui est \u00e9galement une nouvelle m\u00e9thode qu'il a \u00e9t\u00e9 possible d'utiliser gr\u00e2ce \u00e0 la simplification du reste des processus. Le \"Text\" est d\u00e9cod\u00e9 juste avec un tresholding de 165 d\u00e9sormais gr\u00e2ce \u00e0 l'image 4K. Les pneus ont leur propre traitement comme expliqu\u00e9 plus haut auquel on ajoute la Dilatation de 1. Comme on peut le voir, le traitement est pas mal plus simple, mais cela ne veut pas dire que les autres m\u00e9thodes que je n'utilise plus ne sont pas utiles. La reconnaissance n'est pas encore parfaite et je pense que leur utilisation pourrait aider \u00e0 am\u00e9liorer les r\u00e9sultats. (Et parfois ces anciennes m\u00e9thodes sont utiles dans les traitements personnalis\u00e9s des Windows elle m\u00eame comme par exemple les pneus qui utilisent la m\u00e9thode GrayScale pour isoler les couleurs) VanishOxyAction Cette m\u00e9thode est une m\u00e9thode plut\u00f4t simple, mais qui est importante. Elle se base beaucoup sur le code de la m\u00e9thode Grayscale et sur la m\u00e9thode Tresholding car elle essaie de regrouper le meilleur d\u00e8s deux en r\u00e9glant quelques soucis que ces derni\u00e8res cr\u00e9aient. Les soucis avec la m\u00e9thode grayscale c'est que quand le texte est de couleur (Ce qui arrive souvent pour les temps de secteurs) la m\u00e9thode GrayScale rend les couleurs dans une nuance de gris un peu trop sombre ce qui fait qu'ensuite la m\u00e9thode de Tresholding d\u00e9fonce tout. \"Exemple de secteur en couleur\" \"Exemple de secteur en grayscale\" L'id\u00e9e est alors de prendre pour chaque pixel et de garder uniquement la valeur de R, G ou B la plus haute et de mettre les deux autres canaux au m\u00eame niveau pour avoir une image blanchie qui puisse \u00eatre ensuite utilis\u00e9e avec la m\u00e9thode de Tresholding sans soucis. \"Exemple de secteur blanchi avec vanishoxyAction\" SobelEdgeDetection On pourrait se dire qu'avec ce genre de m\u00e9thode le tresholding est inutile ensuite, mais \u00e7a n'est pas le cas, car le tresholding sert ensuite pour rendre les contours plus ou moins agressif. Parce que m\u00eame si l'image ressemble \u00e0 une image binaris\u00e9e, il reste des nuances que le treshold va pouvoir utiliser. SobelEdgeDetection Cette m\u00e9thode est une m\u00e9thode assez classique que je n'ai pas design\u00e9 moi-m\u00eame alors, je ne vais pas trop m'\u00e9pancher dessus. En gros, on utilise une matrice et une formule math\u00e9matique pour redessiner une image et le r\u00e9sultat est une image avec des contours. Je ne l'ai utilis\u00e9 que pour les temps au tour, car ce sont les plus r\u00e9calcitrants. Cette m\u00e9thode a besoin d'une image pass\u00e9e en noir et blanc au pr\u00e9alable \u00e0 laquelle on applique ensuite les matrices de filtres. Et avec ces filtres ajout\u00e9s \u00e0 l'image, on peut ensuite calculer le \"Gradient\" pour cr\u00e9er les bords. Le seul souci de cette m\u00e9thode, c'est qu'elle est assez gourmande et qu'elle fournit des formes creuses d\u00fb \u00e0 la nature des matrices donn\u00e9es. Voici un exemple de ce dont cette m\u00e9thode est capable : Artefacts de la d\u00e9tection de bords de Sobel Apparemment l'OCR aime assez bien cette m\u00e9thode et elle permet de beaucoup moins souvent oublier les '.' ou ':'","title":"Petit point r\u00e9solution"},{"location":"index.html#traitement-des-donnees","text":"C'est bien gentil de recevoir des r\u00e9sultats de l'OCR, cependant on ne peut pas souvent les utiliser comme tels. En effet, les r\u00e9sultats ne sont pas tr\u00e8s constants et demandent d'\u00eatre v\u00e9rifi\u00e9s pour savoir s'ils doivent \u00eatre pris en compte. Le post traitement de ces donn\u00e9es d\u00e9pend compl\u00e8tement du contexte et donc il est diff\u00e9rent pour chaque type de window. Voici un floril\u00e8ge des diff\u00e9rents types de traitements : Traitement du nom de pilote Rien de plus que ce qui est d\u00e9j\u00e0 d\u00e9taill\u00e9 dans la partie OCR Traitement des pneus Pareil Traitement des temps L\u00e0, par contre, c'est int\u00e9ressant. Dans un monde parfait, je pourrais simplement prendre les r\u00e9sultats de l'OCR et les traiter directement. Mais comme nous vivons dans un monde ou la souffrance et la douleur sont les seules choses autoris\u00e9es, on ne peut pas. Le probl\u00e8me vient du fait que les temps que l'on peut trouver sur la F1TV sont encod\u00e9s avec des '.' et des ':' qui d\u00e9terminent les limites entre les chiffres qui d\u00e9signent les minutes, les secondes et les millisecondes. Et le souci avec ces s\u00e9parateurs, c'est qu'ils aiment bien mettre le chaos dans la reconnaissance. Quand ils ne sont pas compris comme des autres chiffres, ils sont parfois juste oubli\u00e9s ou pris en double, c'est un enfer. Il faut donc trouver un moyen de d\u00e9tecter quand cela arrive. Et je n'ai pas trouv\u00e9 de meilleurs moyens que de faire du cas par cas. Cela peut para\u00eetre simple quand on parle par exemple des secteurs. On sait qu'on attend deux chiffres avant un '.' et trois chiffres apr\u00e8s. Il est ainsi facile de voir que si je trouve six chiffres et pas de s\u00e9paration, le troisi\u00e8me est le s\u00e9parateur mal compris. Mais l'exemple qui d\u00e9truit vraiment tout, ce sont les \u00e9carts avec le leader. Autant un temps au tour, c'est toujours x:xx.xxx et un temps de secteur, c'est xx.xxx. Mais un \u00e9cart avec le leader \u00e7a peut \u00eatre 0.345 comme 1:12.345. Ce qui fait que lorsque je re\u00e7ois 121345 est-ce que c'est 12.345 ou 1:21.345...? Souvent, on peut quand m\u00eame d\u00e9duire, mais cela demande de pr\u00e9voir presque tous les cas limites, ce qui est assez p\u00e9nible. On pourrait se dire qu'il suffit de voir si la valeur est trop en dehors des normes. Le souci, c'est qu'il n'est pas impossible qu'un temps au tour ou un \u00e9cart prenne d'un coup une grosse diff\u00e9rence. Cela arrive m\u00eame assez souvent quand des pilotes sortent de la piste. \"Exemple temps au tour\" \"Exemple temps secteur\" Pour ce qui est du DRS et de la position des pilotes, il n'y a pas vraiment de traitement suppl\u00e9mentaire. Non pas, car la d\u00e9tection est parfaite, mais par ce que la d\u00e9tection ne peut pas rater de 200 fa\u00e7ons. Le DRS ne peut retourner que TRUE ou FALSE et la position du pilote est entre 1 et 20 compris. Le peu de nuance fait que ce sont des cas de figures qui ne demandent pas un traitement particulier au-del\u00e0 de l'OCR","title":"Traitement des donn\u00e9es"},{"location":"index.html#stockage-des-donnees","text":"Dans ce projet, le but n'est pas simplement de trouver les donn\u00e9es et les afficher. L'int\u00e9r\u00eat de les r\u00e9cup\u00e9rer est de pouvoir les comparer \u00e0 d'autres donn\u00e9es pr\u00e9c\u00e9dentes. Le vrai souci de la F1TV c'est justement que l'on ne peut pas facilement voir les \u00e9volutions. On ne peut voir que des \"photos\" de la situation actuelle de la course. Il faut donc garder en m\u00e9moire les diff\u00e9rentes choses qui se sont pass\u00e9es. Techniquement, on pourrait stocker ces donn\u00e9es dans de b\u00eates listes C#. Mais le souci avec \u00e7a, c'est que m\u00eame si des outils comme LinQ existent, \u00e7a n'est pas le plus pratique quand on veut faire des recherches complexes. Il faut aussi voir que si le projet dans sa forme actuelle aurait peut-\u00eatre pu se satisfaire de listes simples, le but est d'ensuite pouvoir construire sur ces bases pour faire des pr\u00e9dictions et des insertions de stats beaucoup plus int\u00e9ressantes qui demandent de faire des requ\u00eates complexe rapidement. Je me suis dit que la meilleure m\u00e9thode serait d'avoir une base de donn\u00e9e dans laquelle je peux faire des requ\u00eates SQL. Mais, comme je n'ai pas besoin de toutes les features de SQl et que je ne veux pas avoir \u00e0 g\u00e9rer un serveur de base de donn\u00e9e et tout ce qui va avec, je me suis dit qu'une bonne option serait d'utiliser SQLite. \"Logo SQLite\" ; SQLite est vraiment pratique, car cela me permet d'avoir une DB sans avoir de serveur, donc pas vraiment complexe ou quoi que ce soit, mais qui conserve les avantages de rapidit\u00e9 et d'utilisation de requ\u00eates SQL. J'ai cr\u00e9\u00e9 trois tables dans cette base de donn\u00e9e SQLite que voici :","title":"Stockage des donn\u00e9es"},{"location":"index.html#base-de-donnee","text":"Drivers Colonne Type de Data Description Tag ID INTEGER ID du pilote PRIMARY Name VARCHAR Nom du pilote NOT NULL Pitstops Colonne Type de Data Description Tag Lap INTEGER Tour durant lequel le Pitstop a \u00e9t\u00e9 effectu\u00e9 PRIMARY DriverID INTEGER Pilote qui a effectu\u00e9 le Pitstop PRIMARY Tyre VARCHAR Pneu chauss\u00e9 par le pilote NOT NULL Stats Colonne Type de Data Description Tag Lap INTEGER Tour durant lequel le Pitstop a \u00e9t\u00e9 effectu\u00e9 PRIMARY DriverID INTEGER Pilote qui concern\u00e9 PRIMARY Tyre VARCHAR Pneu chauss\u00e9 par le pilote NOT NULL LapTime INTEGER Temps au tour (MS) NOT NULL Sector1 INTEGER Temps du secteur 1 (MS) NOT NULL Sector2 INTEGER Temps du secteur 2 (MS) NOT NULL Sector3 INTEGER Temps du secteur 3 (MS) NOT NULL GapToLeader INTEGER Ecart avec le leader (MS) NOT NULL Position INTEGER Position pilote NOT NULL La table Drivers sert juste \u00e0 stocker les diff\u00e9rents noms de pilote pour qu'ils soient utilis\u00e9s dans le reste de la DB La table Pitstops n'est pas vraiment utilis\u00e9e dans l'\u00e9tat actuel du projet. Mais le but \u00e9tait de la remplir d\u00e8s que le programme d\u00e9tectait un arr\u00eat aux stands. Le but est ensuite de pouvoir construire un classement pond\u00e9r\u00e9 en fonction des arr\u00eats des diff\u00e9rents pilotes et d'afficher la stats tout le temps sur l'affichage principal. Elle n'est pas r\u00e9ellement utilis\u00e9e, car la d\u00e9tection de pitstop n'a pas pu \u00eatre compl\u00e9t\u00e9e. De par la nature des donn\u00e9es r\u00e9cup\u00e9r\u00e9es des pneus et des positions, c'est tr\u00e8s difficile de d\u00e9tecter avec pr\u00e9cision un arr\u00eat aux stands. La table Stats est la plus importante parce qu'elle contient toutes les informations concernant les pilotes \u00e0 chaque tour. L'id\u00e9e est qu'elle soit remplie \u00e0 chaque tour. Les infos ne sont pas cens\u00e9es \u00eatre les infos lives, mais plut\u00f4t juste une photo \u00e0 chaque tour de la situation de chaque pilote pour ensuite pouvoir faire des comparaisons tours par tours. Des donn\u00e9es comme le GapToLeader peuvent \u00e9voluer pendant le tour, mais on s'en fiche. Ce qui compte vraiment, c'est le temps au tour et les secteurs ainsi que les pneus.","title":"Base de donn\u00e9e"},{"location":"index.html#quand-remplir-la-base","text":"Dans ce projet, il y a deux types d'information. Les informations lives qui sont stock\u00e9s dans des listes et les informations long terme qui sont stock\u00e9es dans la DB. \u00c0 chaque it\u00e9ration de l'OCR, les donn\u00e9es r\u00e9cup\u00e9r\u00e9es sont stock\u00e9es dans une liste de DRIVERDATA. Les DRIVERDATA sont des structures de donn\u00e9es qui contiennent toutes les infos d'un pilote \u00e0 un instant T. Elles peuvent \u00eatre incompl\u00e8tes et sont juste l\u00e0 pour faire de petits calculs et d\u00e9terminer quand ins\u00e9rer des donn\u00e9es permanentes. Ce qui nous am\u00e8ne au moment int\u00e9ressant. Comment on d\u00e9termine quand il est int\u00e9ressant d'ins\u00e9rer des informations dans la base de donn\u00e9es. Il y a deux cas de figure ou on pourrait vouloir ins\u00e9rer des infos :","title":"Quand remplir la base ?"},{"location":"index.html#quand-un-pilote-a-fini-un-tour","text":"En effet, j'ai estim\u00e9 que les seuls moments o\u00f9 on veut garder une photo de la situation du pilote, c'est, car il passe d'un tour \u00e0 l'autre. Le raisonnement est le suivant : On ne veut pas conserver TOUTES les donn\u00e9es parce que si on prend une photo toutes les trois secondes, la majorit\u00e9 des informations seront redondantes avec les pr\u00e9c\u00e9dentes. Mais en m\u00eame temps, il ne faut pas rater des changements importants de donn\u00e9es. Les seules donn\u00e9es qui changent entre deux passages de l'OCR sont les \u00e9carts entre les pilotes et de temps en temps un nouveau secteur s'affiche. Alors que d'un tour \u00e0 l'autre presque toutes les informations changent. Et on ne perd que les l\u00e9g\u00e8res fluctuations des \u00e9carts entre les pilotes. J'ai donc d\u00e9cid\u00e9 de conserver une photo par tour. Mais c'est bien joli sauf qu'il reste une difficult\u00e9 : Comment savoir qu'un pilote a fait son tour ? Cela peut para\u00eetre simple comme question, mais elle est plus difficile qu'il n'y parait. Il faut savoir qu'en F1 un pilote peut \u00eatre dans son 26\u1d49 tour pendant qu'un autre en est \u00e0 son 24\u1d49. Chaque pilote a sa propre course et au fur et \u00e0 mesure que les \u00e9carts se creusent, il peut y avoir un tour voir plusieurs d'\u00e9cart entre la queue de course et les premiers pilotes. Ensuite, il faut savoir qu'il n'est pas marqu\u00e9 sur la f1TV dans quel tour chaque pilote est. Il faut donc le d\u00e9duire en fonction des Data. Voici le code le if qui d\u00e9tecte un nouveau tour if ( DriverDataLogs [ i ][ DriverDataLogs [ i ]. Count - 1 ]. Sector3 != 0 && DriverDataLogs [ i ][ DriverDataLogs [ i ]. Count - 2 ]. Sector3 == 0 && DriverDataLogs [ i ][ DriverDataLogs [ i ]. Count - 2 ]. Position != - 1 && DriverDataLogs [ i ][ DriverDataLogs [ i ]. Count - 1 ]. Position != - 1 ) { //Do stuff } DriverDataLogs est une liste de liste d'informations de pilotes. Chaque DriverDataLogs repr\u00e9sente les 20 photos des donn\u00e9es des pilotes. Cela veut dire que DriverDataLogs[3] repr\u00e9sente toutes les infos des pilotes dans le tour 4 et que DriverDataLogs[3][0] repr\u00e9sente toutes les infos du premier pilote dans le tour 3. Si on analyse un peu ce qui est \u00e9crit avec ces informations, on peut voir que je d\u00e9termine qu'un nouveau tour se d\u00e9finis comme une photo ou le troisi\u00e8me secteur a \u00e9t\u00e9 compl\u00eat\u00e9 et ou il ne l'\u00e9tait pas juste avant. Cela fait sens car quand un pilote compl\u00eate son troisi\u00e8me secteur c'est la que son dernier temps au tour se met \u00e0 jour. Le reste des tests est juste la pour \u00e9viter les faux positifs dans le cas ou un des deux DriverDataLogs[x][x] soit corrompu et que donc la valeur n'aie pas de sens. Cela veut dire que dans des conditions tr\u00e8s sp\u00e9cifiques je pourrais potentiellement rater un tour mais il faudrait vraiment que l'OCR me joue un vilain tour.","title":"Quand un pilote a fini un tour"},{"location":"index.html#quand-un-pilote-a-fait-un-arret-aux-stands","text":"Et la on touche le plus difficile. Pourtant un arr\u00eat aau stand ne devrait pas \u00eatre compliqu\u00e9 \u00e0 detecter. C'est quand un pilote change de pneu. Alors il peut changer de pneu en gardant le m\u00eame type de pneu et donc tout repose sur le nombre de tour qu'un pneu fait. Sauf que il faut ajouter \u00e0 cette reflexion qu'un pneu peut \u00eatre chauss\u00e9 sans qu'il soit neuf. Ce qui veut dire que l'on ne peut pas simplement choisir qu'un pilote a chang\u00e9 de pneus quand ses pneus sont \u00e0 1 tour. Il peut tr\u00e8s bien reprendre des pneus de qualif qui peuvent avoir 10 tours dans les pattes. En plus quand le pilote change de pneus il y a un phenomene assez p\u00e9nible qui fait que les deux premiers tours faits avec ne sont pass vraiment d\u00e9chiffrables car ils sont un peu cach\u00e9s derri\u00e8re la lettre qui indique le nouveau pneu chauss\u00e9. Exemple : \"Infographie de pneu qui se chevauche\" Voici le code que j'avais \u00e9crit pour tenter de trouver quand un pilote avait fait un pitstop : if ( data . CurrentTyre . Coumpound != Tyre . Type . Undefined && data . CurrentTyre . NumberOfLaps == 0 && DriverDataLogs [ i ][ DriverDataLogs [ i ]. Count - 2 ]. CurrentTyre . NumberOfLaps != 0 ) { //Do stuff } On peut voir que j'essaie de detecter quand le pneu est \u00e0 0 tours (ce qui est le moment ou il y a une lettre \u00e0 la place d'un num\u00e9ro de tour) et que la photo d'avant montrait un pneu normal. On v\u00e9rifie aussi que le pneu a bien \u00e9t\u00e9 detect\u00e9 en verifiant que le pneu n'est pas de type undefined. Le soucis c'est que ce n'est pas rare que l'OCR nous retourne qu'un pneu est vieux de 0 tours et donc il est absolument impossible de faire confiance \u00e0 cette metric. Si on veut utiliser cette methode pour trouver les Pitstop il va falloir avant tout am\u00e9liorer l'OCR sur ce point. Ce soucis mets en lumi\u00e8re un principe assez important de l'informatique \"Ggarbage in, Garbage out\". Si les donn\u00e9es que je recoit ne sont pas g\u00e9niales, le r\u00e9sultat ne sera pas g\u00e9nial non plus. Ce qui est frustran,t c'est que la detection des pneus n'est pas si mal mais entre les chiffres qui se chevauchent ce qui nous fait lire 0 alors que c'est juste un un '1' derri\u00e8re un 'H' ou le 1% du temps ou le programme se trompe, on ne peut pour l'instant tout simplement rien faire de mieux.","title":"Quand un pilote a fait un arr\u00eat aux stands"},{"location":"index.html#affichage-des-donnees","text":"Maintenant que l'on a stock\u00e9 toutes ces donn\u00e9es, il faut en faire quelque chose sinon ca ne sert a rien. Afficher les donn\u00e9es est techniquement la partie la plus simple du projet. Il faut prendre les donn\u00e9es qui nous int\u00e9ressent de la base de donn\u00e9es et des r\u00e9sultats de l'OCR et les afficher sur des composants Windows Forms. Il y a deux types d'affichages actuellements mis en place dans le projet sur les trois pr\u00e9vus initialement :","title":"Affichage des donn\u00e9es"},{"location":"index.html#affichage-direct","text":"L'affichage direct est simplement l'affichage du r\u00e9sultat de l'OCR. Par exemple le classement live ainsi que les \u00e9carts entre les pilotes sont affich\u00e9s directement depuis les r\u00e9sultats de l'OCR. Ce ne sont pas forc\u00e9ment des donn\u00e9es prises dans la base de donn\u00e9e. Voici un exemple : for ( int driverCount = 0 ; driverCount < liveData . Count ; driverCount ++) { DriverData driver = liveData [ driverCount ]; lblDriverName . Text = driver . Name ; lblDriverPosition . Text = driver . Position ; lblDriverLapTime . Text = Reader . ConvertMsToTime ( driver . LapTime ); } C'est l'affichage le plus simple et celui qui est le plus soumis \u00e0 des erreurs. En effet, si un pilote est mal detect\u00e9 on le verra directement mal s'afficher dans la Form principale. C'est \u00e9galement l'affichage le moins int\u00e9ressant car il ne cr\u00e9e aucune information, il ne fait que remontrer les infos que l'on peut d\u00e9ja voir dans la F1TV \"Exemple d'affichage live\"","title":"Affichage direct"},{"location":"index.html#affichage-calcule","text":"La encore il y a plusieurs types d'affichages :","title":"Affichage calcul\u00e9"},{"location":"index.html#affichage-hybride","text":"Pour ce qui est des affichages hybrides ce sont des affichages qui vont chercher des informations lives et des informations dans la base de donn\u00e9e. Ils ne font pas de calculs \u00e0 proprement parler mais ils affichent plus d'informations que ce que montre la F1TV. Cela veut dire qu'ils repr\u00e9sentent un d\u00e9but de plusvalue par rapport \u00e0 l'alternative qu'est la page DATA de la F1TV. Ils ne sont pas beaucoup plus durs \u00e0 impl\u00e9menter mais demandent de faire des requ\u00eates \u00e0 la base de donn\u00e9e. Comme exemple d'affichage hybride on a l'affichage des cinq derniers tours d'un pilote. C'est un affichage qui ne demande aucun calcul mais qui permet deja de se rendre compte de si le pilote est enn train de perdre ou gagner du temps ou si il est constant, ce qui n'est pas possible actuellement avec la F1TV \u00e0 moins d'avoir une excellente m\u00e9moire. \"Fen\u00eatre d'informations \u00e0 propos d'un pilote\" Voici un exemmple du type de code necessaire pour afficher ce genre de donn\u00e9es: public List <( int LapTime , int Lap )> GetDriverLaptimes ( string driverName , int numberOfLaptimes ) { int driverId = GetDriverID ( driverName ); List <( int LapTime , int Lap )> lapData = new List <( int LapTime , int Lap )>(); string selectQuery = \"Select LapTime,Lap from Stats WHERE DriverID = @driverID ORDER BY Lap DESC LIMIT @limit\" ; using ( var command = new SQLiteCommand ( selectQuery , Connection )) { command . Parameters . AddWithValue ( \"@driverID\" , driverId ); command . Parameters . AddWithValue ( \"@limit\" , numberOfLaptimes ); SQLiteDataReader reader = command . ExecuteReader (); while ( reader . Read ()) { int lapTime = reader . GetInt32 ( 0 ); int lap = reader . GetInt32 ( 1 ); lapData . Add (( lapTime , lap )); } } return lapData ; } public void Display (){ List <( int LapTime , int Lap )> lapsInfos = Storage . GetDriverLaptimes ( driverName , 5 ); int id = 0 ; foreach (( int LapTime , int Lap ) lapData in lapsInfos ){ Labels [ id ]. Text = LapTime ; id ++; } } Note: Le code montr\u00e9 ici n'est pas forc\u00e9ment le code utilis\u00e9 dans le projet. D'une certaine facon les fen\u00eatres de bataille et de d\u00e9passements sont aussi des hybrides. \"Exemple fen\u00eatre des batailles\" Ici ce sont les batailles qui sont repr\u00e9sent\u00e9es. Aucune donn\u00e9e n'est calcul\u00e9e, c'est litterallement directement les donn\u00e9es de la F1TV, mais la nuance est qu'on ne montre que les pilotes qui sont en train de se battre et que on leur assigne une couleur selon \u00e0 quel point ils sont proches. On a une plus-value sur la F1TV sans pour autant faire de monstres calculs. Pour info, les pilotes consid\u00e8r\u00e9s comme \u00eatant en train de se battre sont les pilotes \u00e0 moins de trois secondes les uns des autres et les couleurs sont suivantes : Vert : Dans la zone de DRS (Moins d'une seconde) Jaune : Plus d'une seconde Noir : Plus de deux secondes \"Exemple fen\u00eatre des d\u00e9passements\" La c'est l'historique des d\u00e9passements qui est affich\u00e9. On pourrait presque dire que c'est un affichage compl\u00eatement calcul\u00e9 car ce ne sont pas des informations disponibles directement sur la F1TV cependant je dirais que cela reste un hybride car il n'y a aucuns calculs. On regarde juste les diff\u00e9rences entre l'ancienne position d'un pilote et la nouvelle et on affiche les changements.","title":"Affichage Hybride"},{"location":"index.html#affichage-totalement-calcule","text":"L'affichage compl\u00eatement calcul\u00e9 est un type d'affichage qui ne montre aucune information trouv\u00e9e sur la page de la F1TV. C'est le premier affichage \u00e0 traiter l'information qu'il trouve et il retourne des informations nouvelles. La nuance avec les affichages pr\u00e9dictif est qu'il ne cr\u00e9e pas r\u00e9ellement de l'information, il la d\u00e9duit. Le but est de prendre un certain nombre d'informations trouv\u00e9es sur la page de la F1TV et de calculer des choses pour faire ressortir des tendances \u00e0 l'utilisateur. Cependant on reste sur des informations factuelles. Ce sont des infos d\u00e9duites que techniquement unn humain avec une bonne m\u00e9moire et fort en calcul mental pourrait faire. Mais la c'est fait automatiquement pour tous les pilotes et c'est affich\u00e9 de sorte \u00e0 faire ressortir les valeurs sp\u00e9ciales. Comme c'est un peu plus abstrait, je pense qu'un exemple vaut mieux que 1000 mots. \"Exemple de fen\u00eatre d'informations totalement calcul\u00e9es\" Ci dessus on peut voir un bon exemple. C'est une fen\u00eatre qui montre qui sont les pilotes les plus rapides et les moins rapides et qui montre la diff\u00e9rence de temps au tour. Cette information est totalement d\u00e9duite et n'est en aucun cas trouvable sur la F1TV mais elle n'est pas invent\u00e9e. Elle est simplement calcul\u00e9e. La formule est assez simple, je prend les cinq derniers temps au tour de tous les pilotes. Je fais une moyenne qui donne un temps. Et ensuite je trie les pilotes en fonction de ce temps et je n'affiche que les cinq plus rapide et les cinq plus lents. Ensuite il suffit de prendre le temps le plus rapide et faire une petite soustraction pour avoir l'\u00e9cart. C'est une stat assez int\u00e9ressante car elle lisse les diff\u00e9rences d'un tour \u00e0 l'autre et fait ressortir une tendance. On peut voir pour le grand prix de monaco 2023 par exemple, le moment ou les pneus pluie deviennent plus int\u00e9ressants que les pneus secs car on voit que les pilotes les plus rapides sont les pilotes de fond de grille qui ont chauss\u00e9 les pneus pluie en premier tandis que les plus lents sont les pilotes sur pneus secs vieux. Voici un bout de code qui s'occupe de faire les calculs : List <( int avg , string driverName )> averages = new List <( int avg , string driverName )>(); foreach ( DriverData driver in LiveDriverDataLogs [ LiveDriverDataLogs . Count - 1 ]) { //We want to recover the last 5 lap times List <( int lapTime , int lap )> laps = Storage . GetDriverLaptimes ( driver . Name , 5 ); if ( laps . Count > 0 ) { int avg = 0 ; foreach (( int lapTime , int lap ) lap in laps ) { avg += lap . lapTime ; } avg = avg / laps . Count ; averages . Add (( avg , driver . Name )); } }","title":"Affichage totalement calcul\u00e9"},{"location":"index.html#affichage-predictif","text":"C'est ici que ca devient vraiment dommage, le projet a mannqu\u00e9 de temps pour impl\u00e9menter des affichages pr\u00e9dictifs mais le potentiel est la ! Un affichage pr\u00e9dictif est un affichage qui cr\u00e9e des informations \u00e0 partir des infos qu'il a mais qui fait plus qu'un calcul. Le but est de tenter de deviner quelque chose. Voici des exemples d'affichages pr\u00e9dictifs qui pourraient \u00eatre mis en place averc l'architecture actuelle du projet : Si un pilote a des pneus depuis plus de 20 tours et que son temps au tour est en chute libre depuis cinq tours. Alors ce pilote va peut-\u00eatre devoir s'arr\u00eater. Si un pilote tourne une seconde au tour plus vite que le pilote devant lui et que ce pilote est \u00e0 10 secondes devant, alors il devrait pouvoir le rattraper d'ici dix tours. Si un arr\u00eat au stand est en moyenne de 23 secondes, alors un pilote 3\u00e8me ressortirais potentiellement 7\u00e8me si il s'arr\u00eate maintenant. Tous ces exemples sont des mini algorythmes pr\u00e9dictifs qui pourraient \u00eatre impl\u00e9ment\u00e9s assez facilement dans l'architecture actuelle du projet et pourraient apporter une immense plus-value si ils sont bien param\u00eatr\u00e9s. On peut m\u00eame imaginer que l'algorythme se corrige tout seul si il voit qu'il a eu tort pour que les course suivante il puisse mieux s'en sortir. Les possibilit\u00e9es sont infinies !","title":"Affichage pr\u00e9dictif"},{"location":"index.html#tests","text":"Alors la on arrive \u00e0 la GROSSE erreur de ce projet... Si je ne pouvais changer qu'une seule chose \u00e0 ma facon de faire le projet apr\u00e8s coup c'est ici que je ferai le changement. Les tests sont d'une importance absolument capitale mais si ils sont bien faits, c'est surtout un moyen ultra efficace de v\u00e9rifier que du nouveau code est performant et est beaucoup plus pratique \u00e0 utiliser. Je pense sans rire que j'aurais pu gagner plusieurs jours de travail si j'avais travaill\u00e9 diff\u00e9remment vis-a-vis des tests.","title":"Tests"},{"location":"index.html#comment-ca-cest-passe","text":"D\u00e8s la cr\u00e9ation du planning pr\u00e9visionnel j'ai fait une erreur capitale. J'ai mis les tests en fin de developpement des features... Et je ne leur ai laiss\u00e9 que tr\u00e8s peu de temps tout en les mettant au milieu du chemin critique ce qui les rends particuli\u00e8rement vuln\u00e9rables si une t\u00e2che du chemin critique est retard\u00e9e. En fait dans ce projet je voulais surtout \u00e9viter de faire comme certains projets que l'on a pu avoir pendant notre formation. C'est \u00e0 dire que je ne voulais surtout pas oublier la doc. Alors j'ai agenc\u00e9 le projet pour commencer par les fondations de la doc, puis en incluant les p\u00e9riodes de programmation et entre ces derni\u00e8re ajouter des Tests dans les trous. Le soucis c'est que du coup les projets \u00e9taient un peu le dernier truc dont je devais me soucier ce qui a \u00e9t\u00e9 une tr\u00e8s mauvaise id\u00e9e. Je me suis retrouv\u00e9 \u00e0 devoir mordre sur les jours de tests car les t\u00e2ches de programmation mettaient plus de temps que pr\u00e9vu (qui elles-m\u00eame auraient p\u00fb \u00eatre plus courte avec une bonne utilisation des tests) et je mme suis retrouv\u00e9 \u00e0 passer outre les tests pour avancer sur le reste du projet. J'ai donc du en panique \u00e0 la toute fin du projet construire quelques tests \"unitaires\" dont l'utilit\u00e9 est tr\u00e8s limit\u00e9e car tout le travail a d\u00e9ja \u00e9t\u00e9 fait et que vu la complexit\u00e9 qu'a pris le projet, faire de vrais tests unitaires est devenu un peu trop compliqu\u00e9 pour valoir le coup. Les seuls tests \"unitaires\" (Je l'\u00e9cris entre quotes car ce ne sont pas vraiment des tests unitaires mais plut\u00f4t des tests tout courts car ils ne sont pas sp\u00e9cifiques) qu'il y a dans le projet final sont des tests exclusivement tourn\u00e9s sur l'OCR. Ils sont d\u00e9ja vraiment pratiques car cela me permet de tester d'autres algorythmes d'OCR et voir si les r\u00e9sultats sont meilleurs ou non mais c'est juste un peu trop tard quoi... Les tests unitaires que j'ai impl\u00e9ment\u00e9s sont un peu tous pareils au niveau du fonctionnement : On choisit une image dans une liste d'images pr\u00e9par\u00e9es qui sont scens\u00e9e repr\u00e9senter le type de donn\u00e9es rencontr\u00e9es par l'application en temps normal On lis le nom de l'image que j'ai mis manuellement en indiquant ce qui \u00e9tait marqu\u00e9 sur l'image On fait un coup d'OCR sur l'image et on compare ce r\u00e9sultat avec la valeur que l'on est scens\u00e9 retrouver En pratique on est sur un code de ce style : [TestMethod()] public void SectorOCR_Test () { string directory = @\"./../../TestImages/Sectors/\" ; foreach ( string file in Directory . GetFiles ( directory )) { Bitmap image = ( Bitmap ) Image . FromFile ( file ); DriverSectorWindow sectorsWindow = new DriverSectorWindow ( image , new Rectangle ( 0 , 0 , image . Width , image . Height ), 1 , true ); string [] paths = file . Split ( '/' ); string fileName = paths [ paths . Length - 1 ]; fileName = fileName . Replace ( \".png\" , \"\" ); int timeMS = ( int ) sectorsWindow . DecodePng (); string time = Reader . ConvertMsToTime ( timeMS ); string [] checkDigits = fileName . Split ( '_' ); string [] digitsToCheck = time . Split ( ':' ); if ( time == \"0:00:000\" ) { Assert . AreEqual ( 0 , Convert . ToInt32 ( checkDigits [ 0 ])); } else { //The ConvertMSToTime will always return three chars so we need to make the checkDigits be also three chars while ( checkDigits . Length != 3 ) checkDigits = new [] { \"0\" }. Concat ( checkDigits ). ToArray (); for ( int i = 0 ; i < checkDigits . Length ; i ++) { //We need to convert to int first because sometimes we have \"08\" and \"8\" and in string its not the same but in int it is Assert . AreEqual ( Convert . ToInt32 ( checkDigits [ i ]), Convert . ToInt32 ( digitsToCheck [ i ])); } } } } Tout le code suppl\u00e9mentaire qui ne fait pas partie des \u00e9tapes cit\u00e9es est juste la pour manipuler le format des r\u00e9sultats pour qu'il soit comparable. \"Exemple d'\u00e9chantillons pour les tests\" Ce qui est pratique avec cette approche, c'est qu'il est tr\u00e8s facile de rajouter des cas sp\u00e9cifiques et voir comment le programme les g\u00e8re. Si je vois qu'un certain nombre est souvent mal reconnu, je peux faire expr\u00e8s de le mettre dans le dossier et modifier mon code d'OCR jusqu'\u00e0 ce que le test passe. Si j'avais eu plus de temps, j'aurais s\u00fbrement pu ajouter de vrais tests unitaires qui testent des fonctions tr\u00e8s pr\u00e9cises. Par exemple, v\u00e9rifier que les diff\u00e9rents Windows sont bien appel\u00e9es et que les zones se cr\u00e9ent correctement ou m\u00eame plus simplement que la lecture du JSON au d\u00e9marrage marche bien. Il faut savoir que m\u00eame si je n'ai pas eu l'occasion d'\u00e9crire beaucoup de tests sous forme de code. Toute la phase de d\u00e9veloppement de l'OCR, j'ai pass\u00e9 plus d'une heure par jour \u00e0 analyser les r\u00e9sultats. Je gardais toutes les images des WINDOWS et je notais dans le nom du fichier ce que l'algorithme trouvait et je passais en revue manuellement les centaines de r\u00e9sultats pour isoler ceux qui posaient un probl\u00e8me. C'est comme \u00e7a que je me suis rendu compte par exemple que, avec cette police, les quatre et les 1 \u00e9taient souvent confondus. Donc m\u00eame si les tests automatis\u00e9s sont clairement insuffisants par rapport \u00e0 ce que j'aurais peut-\u00eatre d\u00fb faire, j'ai pass\u00e9 \u00e9norm\u00e9ment de temps \u00e0 tester mon application.","title":"Comment ca c'est pass\u00e9"},{"location":"index.html#comment-caurait-du-se-passer","text":"Si je devais refaire ce projet aujourd'hui, je pense que j'utiliserais un peu la m\u00eame technique que pour la doc. J'aurais mis les t\u00e2ches de Tests directement au d\u00e9but du projet et j'aurais d\u00e9termin\u00e9 le squelette de l'application par la m\u00eame occasion. Je pense que j'aurais mis trois jours pour \u00e9crire tous les tests dont j'aurais besoin et j'aurais fait une strat\u00e9gie de TDD (Test Driven Developpement) par ce que je pense que \u00e7a marcherait vraiment super bien sur ce type de projet. J'aurais pris, je pense, cinq une dizaine d'images compl\u00e8tes de la F1TV de plusieurs GP diff\u00e9rents et j'aurais mis toutes les fen\u00eatres d\u00e9coup\u00e9es dans des fichiers avec des tests comme ceux que j'ai faits pour ce projet. Et comme \u00e7a je saurai que mon algo est bon uniquement quand il aura r\u00e9ussi \u00e0 passer tous les tests. Cela r\u00e8glerait le souci que j'ai eu le plus : Me retrouver \u00e0 devoir changer l'OCR 5 fois par ce qu'\u00e0 chaque fois que je d\u00e9veloppe une nouvelle feature, je me rends compte d'une faiblesse, mon algorithme\u2026 Non seulement j'aurais eu beaucoup plus de facilit\u00e9 \u00e0 avancer sur le projet, mais en plus, je pense que cela m'aurait fait gagner \u00e9norm\u00e9ment de temps non seulement, car je n'ai plus \u00e0 tester tout \u00e0 la main, mais en plus par ce que \u00e7a veut dire que quand l'OCR passe les tests, je n'ai plus jamais \u00e0 m'en soucier.","title":"Comment \u00e7'aurait d\u00fb se passer"},{"location":"index.html#lecons","text":"Je pense que dans mes futurs projets, je mettrai les tests en d\u00e9but de projet plut\u00f4t qu'\u00e0 la fin et je ferai en sorte qu'ils fassent partie du chemin critique et que je ne puisse pas passer \u00e0 c\u00f4t\u00e9 sous pr\u00e9texte que \"Je n'ai pas le temps\". \u00c9crire des tests, ce n'est jamais marrant et c'est encore moins marrant quand ils nous emp\u00eachent d'avancer. Mais je suis convaincu qu'\u00e0 la fin, c'est un gain de temps et de s\u00e9r\u00e9nit\u00e9 incontournable.","title":"Le\u00e7ons"},{"location":"index.html#resume-des-difficultes-techniques","text":"Ici, je vais parler tr\u00e8s rapidement des difficult\u00e9s techniques rencontr\u00e9es. Si vous voulez tout savoir \u00e0 propos des difficult\u00e9s, vous pouvez aller lire le journal de bord. C'est aussi pour \u00e9viter de me r\u00e9p\u00e9ter par rapport aux explications des diff\u00e9rents points dans l'analyse organique. Je ne vais pas non plus parler des difficult\u00e9s rencontr\u00e9 avec des choses que je n'ai pas gard\u00e9es dans le programme final donc il est normal que vous vous disiez qu'il n'y a pas eu tant de difficult\u00e9s que \u00e7a.","title":"R\u00e9sum\u00e9 des difficult\u00e9s techniques"},{"location":"index.html#browser-headless","text":"Il y avait plusieurs difficult\u00e9s techniques avec cette histoire de Browser Headless. D\u00e9j\u00e0 pouvoir lancer un browser headless et le contr\u00f4ler. C'est difficile, car il faut trouver la bonne librairie et ensuite, il faut trouver le bon ex\u00e9cutable de gecko Driver qui permette de faire fonctionner l'application m\u00eame si l'utilisateur n'a pas Firefox sur sa machine. Ensuite, la seconde difficult\u00e9 est celle de ne pas se faire chopper comme un bot par le site de la F1TV. Il faut savoir qu'\u00e0 ce jour, je n'ai toujours pas r\u00e9ussi \u00e0 faire croire \u00e0 la page de login de la F1TV que j'\u00e9tais un user normal en utilisant S\u00e9l\u00e9nium mais au moins maintenant, je peux acc\u00e9der aux vid\u00e9os tranquillement. Ce souci de ne pas pouvoir se connecter avec la page de login \u00e0 la plus grosse difficult\u00e9 technique de cette partie du projet : la connexion automatique. Pour me connecter \u00e0 la F1TV avec un browser headless la seule solution que j'ai trouv\u00e9e a \u00e9t\u00e9 d'utiliser des cookies. Et pour que l'utilisateur n'ait pas \u00e0 aller chercher les siens dans son navigateur, il a fallu trouver une technique pour aller les chercher directement sans lui demander son avis. Autre difficult\u00e9, comme on travaille avec un site web que l'on ne contr\u00f4le pas, il faut trouver un moyen de g\u00e9rer les erreurs et de r\u00e9essayer parfois et attendre quand il faut dans les cas o\u00f9 le chargement est long etc... Ensuite, apr\u00e8s tout \u00e7a, la derni\u00e8re difficult\u00e9 a \u00e9t\u00e9 de pouvoir contr\u00f4ler le Firefox Headless assez bien pour qu'il puisse non seulement naviguer les pages, mais aussi qu'il puisse cliquer sur des boutons qui ne s'affichent pas tout le temps. (Je ne vais pas mentionner la difficult\u00e9 que c'\u00e9tait de mettre le browser en 4K pour des raisons de sant\u00e9 mentale)","title":"Browser Headless"},{"location":"index.html#ocr_2","text":"Les difficult\u00e9s ici sont dans un autre niveau. Chaque type de donn\u00e9e repr\u00e9sentait sa difficult\u00e9 \u00e0 lui tout seul, sans compter l'optimisation. Pour commencer, on a le texte pour les noms de pilotes. Il a fallu trouver un syst\u00e8me qui puisse reconnaitre le texte et qui puisse comparer le r\u00e9sultat avec les pilotes que l'on connait. Ensuite, il a fallu trouver un moyen de d\u00e9tecter la diff\u00e9rence entre les fen\u00eatres de DRS o\u00f9 il est ouvert ou ferm\u00e9. Il fallait \u00e9galement faire attention \u00e0 ne pas faire de faux positifs. Pour les temps par secteurs, il a fallu trouver des filtres qui permettent de bien diff\u00e9rencier les '1' et les '4' sans les confondre et il a aussi fallu trouver un moyen de filtrer l'image pour que dans le cas o\u00f9 le texte serait en couleur \u00e7a fonctionne quand m\u00eame. (Car oui, un filtre de nuances de gris ne marche pas super avec des couleurs sombres) Pour les pneus (le plus dur) il a fallu trouver un moyen de trouver sur toute la longueur de la zone la partie int\u00e9ressante. Ensuite, il a fallu trouver une technique pour savoir quel type de pneu c'est en fonction de la couleur moyenne et ensuite le plus dur a \u00e9t\u00e9 d'isoler le chiffre du dessin autour, car Tesseract n'aime pas les formes, le tout automatiquement. Pour les temps au tour, il a fallu trouver un moyen de ne pas confondre les ponctuations avec des chiffres tout en ne les ratant pas. Et il a fallu trouver un moyen de d\u00e9tecter quand in\u00e9vitablement cela arrive quand m\u00eame. Et la derni\u00e8re difficult\u00e9 (la plus p\u00e9nible) a \u00e9t\u00e9 de d\u00e9tecter les \u00e9carts entre les pilotes. Il a fallu trouver une fa\u00e7on de d\u00e9coder le texte en temps, mais aussi de faire tout un syst\u00e8me qui d\u00e9tecte et r\u00e8gle les cas ou un ':' a \u00e9t\u00e9 oubli\u00e9 ou confondu tout en ne sachant pas s'il \u00e9tait cens\u00e9 y en avoir \u00e0 la base, car les valeurs peuvent varier entre '1_23.657' et '0.452'.","title":"OCR"},{"location":"index.html#stockage_1","text":"Pour ce qui est du stockage, la grande difficult\u00e9 a \u00e9t\u00e9 de savoir quand un pilote avait fini un tour parce que chaque pilote finit son tour \u00e0 un moment diff\u00e9rent. Il a \u00e9galement fallu trouver un moyen de savoir les donn\u00e9es d'un pilote \u00e9taient logiques. Une difficult\u00e9 qui n'a pas \u00e9t\u00e9 compl\u00e8tement d\u00e9pass\u00e9e est de savoir quand un pilote a fait un arr\u00eat aux stands, car la d\u00e9tection de l'\u00e2ge des pneus est plus que mauvaise. Voil\u00e0. Ce fut une petite liste non exhaustive de quelques difficult\u00e9s techniques que j'ai rencontr\u00e9es pendant ce projet.","title":"Stockage"},{"location":"index.html#optimisation-du-programme","text":"Ici, je vais parler des techniques que j'ai utilis\u00e9es pour r\u00e9duire le temps de traitement de chaque image de 50 secondes \u00e0 un peu moins de 3 sur le processeur de mon laptop. En effet, dans les premi\u00e8res versions du projet, traiter l'int\u00e9gralit\u00e9 d'une image pouvait prendre presque une minute. Ce qui est compliqu\u00e9 dans ce projet, c'est qu'il y a un certain nombre de choses que je ne contr\u00f4le pas. En utilisant Tesseract, je me retrouve avec des incompressibles. En imaginant que l'OCR sur une image prenne 300 ms, m\u00eame si j'avais 180 threads capables de faire cette t\u00e2che en m\u00eame temps, le temps de traitement sera toujours d'au moins 300 ms. Cr\u00e9er une instance de Tesseract prend \u00e9galement du temps. Ma mission n'est donc pas d'arriver \u00e0 des temps de quelques dizaines de millisecondes, mais plut\u00f4t de rajouter le moins de temps possible pendant le traitement et de tenter de faire le plus de choses possible en parall\u00e8le. Voici la liste des choses qui prennent du temps : Lancement du navigateur et navigation Cr\u00e9ation des instances de Tesseract Filtrage des images OCR Ce sont les quatre gros postes qui coutent le plus cher en ressources. Mais par chance, deux de ces postes ne sont appel\u00e9s qu'une seule fois au d\u00e9marrage, ce qui fait que ce n'est pas catastrophique s'ils prennent du temps. Tandis que l'OCR et le filtrage est fait \u00e0 chaque d\u00e9tection. Pour ce qui est du d\u00e9marrage, malheureusement, on ne peut pas faire grand-chose. Lancer le browser et naviguer \u00e0 travers la F1TV prend du temps, surtout si la connexion du client est mauvaise. Pour certaines actions, j'ai fait un syst\u00e8me qui essaie pendant 10 secondes de cliquer sur un bouton plut\u00f4t que d'attendre 10 secondes et cliquer pour tenter d'\u00e9conomiser un peu, mais malheureusement, c'est lent et on ne peut pas y faire grand-chose. Pour la g\u00e9n\u00e9ration des instances de Tesseract, c'est un peu pareil, mais pour d'autres raisons. Comme Tesseract n'est pas \"Thread Safe\" (Ce qui veut dire qu'il n'est pas parall\u00e9lisable), si on veut faire plusieurs reconnaissances \u00e0 la fois, il faut plusieurs instances de Tesseract load\u00e9es en m\u00e9moire. J'ai donc d\u00e9cid\u00e9, pour une question de simplicit\u00e9 et de performances, de faire en sorte que chaque fen\u00eatre de donn\u00e9e ou \"Window\" aie sa propre instance de Tesseract. Vous qui lisez ces lignes \u00eates peut-\u00eatre en train de vous dire \"Oulala mais \u00e7a doit beaucoup de m\u00e9moire son truc l\u00e0 \" et vous auriez parfaitement raison ! \"Consommation de m\u00e9moire peu apr\u00e8s avoir commenc\u00e9 la d\u00e9tection\" Ce programme consomme en effet une quantit\u00e9 absolument catastrophique de m\u00e9moire vive. Mais si je l'ai fait, c'est pour une bonne raison. Cela prend juste beaucoup trop de temps de cr\u00e9er une nouvelle instance \u00e0 chaque boucle de Tesseract et c'est encore plus long de faire toutes les op\u00e9rations d'OCR les unes apr\u00e8s les autres pour n'avoir qu'un seul Tesseract de load\u00e9. On peut parfois arriver \u00e0 des chiffres qui approchent les 4GB de RAM ce qui est absolument RIDICULE. Cependant, c'est un compromis que j'\u00e9tais pr\u00eat \u00e0 faire pour avoir une application qui soit plus rapide. Je suis absolument certain que cette solution et les autres solutions que j'ai trouv\u00e9es pour ce projet ne sont pas les meilleures ou les plus efficaces. Mais ce sont les solutions que j'ai trouv\u00e9 pour faire en sorte que le projet avance et fonctionne \u00e0 peu pr\u00e8s vite. Ensuite pour ce qui est de ce qui se passe \u00e0 chaque boucle, l\u00e0 le mot magique, c'est \"Parall\u00e8le\". Le traitement de toutes les zones est fait en m\u00eame temps. La structure du projet en zones, sous zones et fen\u00eatres de donn\u00e9es fait qu'il est assez facile de venir parall\u00e9liser le processus si on les impl\u00e9mente correctement. Diagramme qui montre comment les zones et fen\u00eatres interagissent On peut voir sur ce diagramme que la zone principale demande \u00e0 toutes les sous zones de d\u00e9coder leur contenu. Ces derni\u00e8res font l'exacte m\u00eame chose avec les fen\u00eatres de donn\u00e9es qui retournent chacune ce qu'elles contiennent apr\u00e8s un coup d'OCR et ensuite les zones recombinent les informations et les envoient \u00e0 la zone principale. Tout cela est tr\u00e8s bien, mais quel rapport avec la parall\u00e9lisation ? Eh bien, comme chaque zone de pilote est ind\u00e9pendante, on peut tout simplement faire une boucle for parall\u00e8le qui appelle toutes les zones pilotes. On passe de 15 \u00e0 20 secondes de traitement \u00e0 un peu plus de trois juste avec cette technique. Alors \u00e7a n'\u00e9tait pas simple \u00e0 impl\u00e9menter, car il a fallu programmer les zones de sorte qu'elles soient toutes ind\u00e9pendantes les unes des autres. Mais une fois que le travail en amont a \u00e9t\u00e9 effectu\u00e9, il est tr\u00e8s simple de parall\u00e9liser. Les filtres fonctionnent de la m\u00eame fa\u00e7on sauf que l\u00e0, on parall\u00e9lise le traitement de chaque ligne dans une image. L'impact est moindre qu'avec les zones, mais si on teste avec une machine assez puissante cela pourrait faire la diff\u00e9rence. Seul souci avec cette m\u00e9thode, cela veut dire que le processeur est particuli\u00e8rement sollicit\u00e9 '^^... \"Utilisation du processeur pendant le fonctionnement de l'application\" Mon laptop ne poss\u00e8de malheureusement que six coeurs ce qui limite pas mal la puissance de la paralellisation. Mais je suis convaincu qu'avec un CPU avec plus de coeurs on pourrait arriver \u00e0 d'encore meilleurs r\u00e9sultats. Mais cette utilisation du processeur a aussi un inconv\u00e9nient... \"Temp\u00e9ratures du laptop pendant le fonctionnement de l'application\" ; Donc si je veux commenter la F1 avec cet outil, note \u00e0 moi m\u00eame, je ne dois pas utiliser le laptop si je ne veux pas me cramer les doigts. Si je pouvais utiliser le GPU pour acc\u00e8l\u00e9rer le processus on pourrait peut-\u00eatre avoir de meilleurs r\u00e9sultats mais de ce que j'ai pu lire, l'OCR n'est pas sp\u00e9cialement un bon use case pour les GPU. Pour conclure, je dirais que ce projet est loin d'\u00eatre un exemple de performances et clairement, il y a des choix discutables qui ont \u00e9t\u00e9 faits et d'une mani\u00e8re g\u00e9n\u00e9rale, si je devais refaire tout le projet avec la performance en premier objectif, j'aurais s\u00fbrement fait diff\u00e9remment. Maintenant, avec le temps que j'ai eu, je suis d\u00e9j\u00e0 content d'avoir pu faire quelque chose qui fonctionne et qui ne prenne pas une minute \u00e0 traiter une image.","title":"Optimisation du programme"},{"location":"index.html#ethique-du-projet","text":"Ici, on va parler des questions \u00e9thiques de ce projet. En effet, il y a quelques petites choses qui peuvent soulever une question. Il y a deux questions qui reviennent presque \u00e0 chaque fois que je parle ou pr\u00e9sente mon projet :","title":"Ethique du projet"},{"location":"index.html#utilisation-abusive-de-la-f1tv","text":"La F1TV est un service payant qui n'est pas forc\u00e9ment donn\u00e9 (m\u00eame si pas bien cher pour un utilisateur comme moi qui l'utilise plus d'une fois par semaine plusieurs heures). De ce fait, je ne peux pas rendre son acc\u00e8s plus facile ou faire fuiter des informations de courses que l'on ne peut se procurer que par son utilisation. Mais voil\u00e0 pourquoi je pense que mon utilisation n'est pas une utilisation abusive : L'application ne fonctionne que si l'utilisateur a un compte F1TV valide et qu'il s'est connect\u00e9 r\u00e9cemment sur sa machine. (Cela veut donc dire que je ne permets pas \u00e0 des utilisateurs de frauder) L'application ne partage aucune information sur le contenu de la F1TV avec l'ext\u00e9rieur. (On ne peut pas avoir acc\u00e8s \u00e0 des informations payantes sans abonnement) L'application ne simule qu'un seul utilisateur connect\u00e9 sur une vraie machine (Cela veut donc dire que je ne suis pas en train de faire un syst\u00e8me de bot qui regarde 45 flux en m\u00eame temps pour scrapper tout le site et/ou poser des probl\u00e8mes de DDOS) Les donn\u00e9es ne sont pas stock\u00e9es entre les sessions (cela veut dire que l'on ne repr\u00e9sente pas un risque de fuite de donn\u00e9es et on n'est pas un service qui vient scrapper le contenu pour alimenter une IA ou quoi que ce soit... pour l'instant...) En fait mon application fonctionne exactement comme si on avait une page ouverte avec la F1TV dessus et qu'un ami \u00e0 c\u00f4t\u00e9 de nous la regardait en prenant des notes pour nous aider \u00e0 suivre. Je ne vois donc pas le mal et je ne vois pas en quoi ce projet serait probl\u00e9matique sur ce point. Apr\u00e8s dans le futur, le but est clairement de conserver les infos trouv\u00e9es pour entrainer un algorithme de pr\u00e9diction et l\u00e0 peut-\u00eatre que cela pourrait poser plus de probl\u00e8mes, mais ce n'est pas le cas \u00e0 l'heure ou j'\u00e9cris ces lignes.","title":"Utilisation abusive de la F1TV ?"},{"location":"index.html#recuperation-de-cookies-a-linsu-de-lutilisateur","text":"Alors l\u00e0, on est clairement sur le sujet un peu plus \u00e9pineux... Un peu de contexte d'abord : \u00c0 la base, je voulais que l'utilisateur entre ses identifiants dans mon application et ensuite que le navigateur les rentre dans la page de login automatiquement et qu'il puisse se connecter. Deux probl\u00e8mes \u00e0 cette solution : L'utilisateur doit avoir assez confiance en mon programme pour laisser ses identifiants en clair \u00e0 l'int\u00e9rieur. Il est extr\u00eamement difficile de bypass la protection contre les bots de la page de login de la F1TV. J'ai donc d\u00fb trouver une autre solution : Utiliser les cookies ! Le seul souci, c'est que cela voulait dire que l'utilisateur devait aller chercher lui-m\u00eame ses cookies dans le navigateur en utilisant F12 et qu'il devait \u00e0 nouveau me faire confiance pour que je n'en fasse rien. Je trouvais cette solution trop p\u00e9nible pour l'utilisateur alors, j'ai d\u00e9cid\u00e9 d'en trouver une autre. Utiliser les cookies MAIS, sans demander \u00e0 l'utilisateur. Pour faire simple, mon programme va directement d\u00e9coder les cookies encrypt\u00e9s dans la base de donn\u00e9e SQLITE de Chrome, va les stocker dans un CSV en clair et va laisser mon programme C# aller piocher ceux qui l'int\u00e9ressent. Soucis, mon programme a acc\u00e8s \u00e0 tous les cookies de l'utilisateur \u00e0 son insu, cela veut dire que je pourrais les utiliser \u00e0 des fins peu scrupuleuses. Et c'est la solution que j'ai d\u00e9cid\u00e9 de choisir, car elle permet \u00e0 l'utilisateur de ne rien avoir \u00e0 faire pour se connecter depuis l'application, mais cela veut aussi dire qu'il doit me faire confiance pour ne pas utiliser tous ces cookies pour mon utilisation personnelle. Sauf que contrairement aux autres solutions, il ne sait pas qu'il est en train de me faire confiance donc \u00e7a va. :D Non plus s\u00e9rieusement, oui, je pourrais faire n'importe quoi avec les cookies de l'utilisateur, non, je ne vais pas le faire, et non, je ne pr\u00e9vois jamais de le faire. Mais il est int\u00e9ressant de mentionner que mon application met en p\u00e9ril la s\u00e9curit\u00e9 des cookies de l'utilisateur et qu'il serait bien dans le futur de mettre un message explicatif au premier d\u00e9marrage ou dans l'installeur de l'application pour pr\u00e9venir l'utilisateur.","title":"R\u00e9cup\u00e9ration de cookies \u00e0 l'insu de l'utilisateur ?"},{"location":"index.html#utilisation-de-chat-gpt","text":"\"Logo chat Gpt\" Cette ann\u00e9e, ChatGPT est venu s'installer dans la liste des outils que j'utilise presque quotidiennement pour avancer sur mes projets. J'ai utilis\u00e9 ChatGPT un certain nombre de fois pendant ce travail et je pense qu'il m'a fait gagner un certain nombre d'heures. En effet, dans certains cas tr\u00e8s pr\u00e9cis, ChatGPT est une ressource absolument g\u00e9niale. Je l'ai surtout utilis\u00e9 quand j'avais de soucis avec des librairies ou pour faire du troubleshooting. Ce que j'aime beaucoup avec ChatGPT c'est qu'il s'adapte \u00e0 ce qu'on lui donne. Par exemple, il m'est souvent arriv\u00e9 de vouloir utiliser des librairies comme Puppeteer sharp ou des exemples sont difficilement trouvables sur internet normalement. Et quand je voulais simplement faire fonctionner un exemple tr\u00e8s rapide, il a quasiment toujours pu me fournir le code minimum. Cependant, d\u00e8s que l'on arrive sur des cas encore plus pr\u00e9cis, on atteint assez vite les limites du syst\u00e8me. J'ai fr\u00e9quemment fait appel \u00e0 cet outil pour diagnostiquer du code, que ce soit pour d\u00e9tecter un souci ou m\u00eame plus juste pour voir si mon code avait du sens. En effet, si on donne une m\u00e9thode \u00e0 chatGPT, il va tenter de l'expliquer, et s'il n'y arrive pas, c'est g\u00e9n\u00e9ralement que les variables sont mal nomm\u00e9es ou qu'il y a un souci avec la logique du code. Et pour ce qui est de la d\u00e9tection des erreurs, l'exemple que je peux donner c'est quand je faisais des m\u00e9thodes asynchrones et parall\u00e8les, je pouvais lui donner la m\u00e9thode avec l'erreur que je ne comprends pas et il peut me donner cinq raisons de possibles soucis. Cependant, je pensais utiliser beaucoup plus ChatGpt mais \u00e0 la fin l'outil est assez limit\u00e9 et je ne l'utilisais que quand mes recherches internet \u00e9taient infructueuses. Le seul cas o\u00f9 il m'a un peu sauv\u00e9, c'est quand je travaillais avec Puppeteer et que j'essayais de r\u00e9gler un souci qui faisait que le programme plantait \u00e0 chaque fois que j'ouvrais une vid\u00e9o. Au bout de quelques heures de gal\u00e8re, il m'a juste propos\u00e9 d'utiliser une autre librairie comme s\u00e9l\u00e9nium et il m'a converti tout mon code puppeteer en code utilisable par Selenium, et m\u00eame si cela a demand\u00e9 un peu plus de travail que de copier-coller, pour finir, j'ai pu avoir quelque chose qui marchait et je n'aurais peut-\u00eatre pas eu le r\u00e9flexe ou l'envie de le faire si je n'avais pas utilis\u00e9 cet outil. En conclusion, certaines m\u00e9thodes de mon projet ont \u00e9t\u00e9 faites avec l'aide de ChatGPT mais c'est une minorit\u00e9 et je l'ai surtout utilis\u00e9 pour comprendre des erreurs et pour avoir des pistes \u00e0 explorer pour les fix. Rien de bien fou.","title":"Utilisation de Chat GPT"},{"location":"index.html#ameliorations-futures","text":"Ici, je vais parler de deux types d'am\u00e9liorations. Les am\u00e9liorations \u00e0 court terme, que j'aurais pu faire si je n'avais pas perdu autant de temps sur certains probl\u00e8mes techniques ou si j'avais eu quelques semaines de plus pour travailler sur le projet. Et les id\u00e9es qui seraient plus compliqu\u00e9es \u00e0 mettre en place que je n'aurais jamais pu ajouter \u00e0 ce travail dans le temps imparti, mais qui sont maintenant possibles si je continue pendant quelques mois \u00e0 travailler sur le projet.","title":"Am\u00e9liorations futures"},{"location":"index.html#court-terme","text":"Je vais commencer par les petites am\u00e9liorations. Chose que je regrette le plus, je dirai, c'est tout ce qui est affichage. J'aurais vraiment aim\u00e9 faire une magnifique interface, mais il m'a manqu\u00e9 de temps pour en faire une plus jolie et plus facile d'utilisation. Une am\u00e9lioration r\u00e9ellement n\u00e9cessaire serait d'am\u00e9liorer la d\u00e9tection des pneus pour qu'il soit possible de correctement d\u00e9tecter les arr\u00eats aux stands. En g\u00e9n\u00e9ral, si j'avais pu mettre plus de temps dans l'analyse des donn\u00e9es que je re\u00e7ois de la F1TV, j'aurais pu faire un syst\u00e8me plus efficace de d\u00e9tection de d\u00e9passements, car la version actuelle n'est vraiment pas bonne. Trouver un moyen de faire des erreurs plus pr\u00e9cises. En effet, maintenant, certaines erreurs ont des causes qui peuvent \u00eatre multiples (qui peuvent \u00eatre caus\u00e9es par un mauvais lien, ou une erreur de r\u00e9cup\u00e9ration des cookies ou m\u00eame juste de connexion internet). \u00c7a demanderait simplement un peu plus de temps pour qu'au lieu de retourner seulement une erreur, on tente de r\u00e9cup\u00e9rer plus d'infos pour la rendre plus sp\u00e9cifique. Et pour les am\u00e9liorations un peu plus concr\u00e8tes : Impl\u00e9menter plus d'affichages calcul\u00e9s. J'aurais aim\u00e9 ajouter des affichages comme le classement pond\u00e9r\u00e9 des pilotes en fonction des arr\u00eats aux stands. Cela demanderait juste un peu de temps et d'am\u00e9liorer la d\u00e9tection des pitstops. Impl\u00e9menter des affichages pr\u00e9dictifs simples. On pourrait imaginer des algorithmes simple qui pourraient tenter de pr\u00e9dire quand un pilote va en rattraper un autre ou quand un pilote va devoir s'arr\u00eater en fonction des temps aux tours. \u00c7a ne me demanderait pas de nouvelles technologies, mais simplement du temps pour mettre en place et tester les algorithmes. Faire un syst\u00e8me qui puisse tester les algorithmes pr\u00e9dictifs sur un panel de Grand Prix. Si l'\u00e9tape d'avant est faite, on peut facilement imaginer un bout de programme qui aille tester le programme sur diff\u00e9rents Grand Prix pour voir si les pr\u00e9dictions sont bonnes. Avoir une notion d'historique des courses pour avoir une page de comparaison des performances des \u00e9quipes. Par exemple, d\u00e9terminer quelle voiture est la plus rapide et comparer avec les autres circuits. On peut m\u00eame imaginer qu'apr\u00e8s plusieurs Grands Prix, on puisse tenter de d\u00e9terminer quelle \u00e9quipe est forte sur quel circuit. Avoir un syst\u00e8me qui permet de trouver automatiquement tous les liens de Grand Prix comme \u00e7a l'utilisateur n'aie plus besoin d'aller chercher un URL. Faire un installer pour qu'un utilisateur n'ait pas \u00e0 se taper la proc\u00e9dure d'installation (qui est assez p\u00e9nible) \u00e0 la main.","title":"Court terme"},{"location":"index.html#long-terme","text":"L\u00e0, on va se pencher sur des features qui prendraient plus d'un mois \u00e0 mettre en place correctement. On pourrait imaginer un syst\u00e8me qui puisse regarder 50 Grand Prix et qui change automatiquement les variables des algorithmes en fonction de leurs performances (Un genre d'apprentissage machine rustique). On pourrait imaginer un syst\u00e8me qui puisse cr\u00e9er des infographies. Que ce soit au milieu de la course ou \u00e0 la fin, le programme pourrait nous g\u00e9n\u00e9rer des images avec une stat int\u00e9ressante (ex : x pilote a fait x d\u00e9passements ou x pilote gagnerait x points s'il finissait dans cette position, ce qui le ferait changer de position au classement g\u00e9n\u00e9ral). Si c'est bien fait, cela pourrait \u00eatre un outil extr\u00eamement pr\u00e9cieux, car je pourrais utiliser ces infographies dans mes commentaires. On pourrait avoir un syst\u00e8me qui donne une note de performance pour chaque pilote en fonction de ses performances et en fonction de sa voiture pour faire un genre de classement des pilotes. Il serait g\u00e9nial d'avoir une page de stats qui se souviennent de tous les anciens Grand Prix regard\u00e9s qui permettent d'afficher toutes les stats d'un pilote sur plusieurs courses. (Cela me permettrait, dans des moments o\u00f9 la course stagne un peu, de pouvoir prendre n'importe quel pilote et d'avoir des choses \u00e0 dire \u00e0 son sujet) On pourrait m\u00eame imaginer un syst\u00e8me qui utilise une base de donn\u00e9es sur un serveur Infomaniak et d\u00e9velopper une extension de navigateur qui me donne des infos importantes directement sur la page o\u00f9 je commente le Grand Prix ou qui au moins me fasse des notifications pour que je sache quand aller regarder, car un truc important s'est pass\u00e9. Je vais m'arr\u00eater l\u00e0 parce que les possibilit\u00e9s sont tout simplement infinies. \u00c0 partir du moment o\u00f9 je peux r\u00e9cup\u00e9rer toutes les informations de la F1TV de mani\u00e8re fiable, les champs des possibles sont ouverts et la seule limite est notre imagination. Il n'est pas impossible que je refasse une version de ce projet dans le futur qui me permette d'appliquer tout ce que j'ai appris pour le faire plus proprement (avec de la TDD par exemple) et qui me permette d'impl\u00e9menter toutes ces am\u00e9liorations et plus. Je pense vraiment que si je continue \u00e0 commenter pour le 20 minutes dans les ann\u00e9es qui viennent, cela pourrait \u00eatre int\u00e9ressant de d\u00e9velopper un outil du style qui pourrait grandement m'aider \u00e0 faire des commentaires de qualit\u00e9.","title":"Long terme"},{"location":"index.html#conclusion","text":"","title":"Conclusion"},{"location":"index.html#bilan","text":"Je vais faire un petit bilan de ce travail. D\u00e9j\u00e0, je vous remercie chaleureusement d'avoir lu cette documentation (j'ai d\u00fb la relire en entier une ou deux fois, je sais que ce n'est pas facile). J'esp\u00e8re que j'ai pu parler de tout ce dont je voulais parler et que je l'ai fait de mani\u00e8re explicite et ais\u00e9 \u00e0 lire pour vous. J'ai r\u00e9ellement fait de mon mieux pour qu'elle soit la plus simple possible \u00e0 lire, mais c'est un exercice difficile dans un document de cette taille et je m'excuse des in\u00e9vitables erreurs et coquilles que vous aurez peut-\u00eatre remarqu\u00e9. Je dois avouer que je suis quand m\u00eame tr\u00e8s content d'arriver au bout de ce travail. J'ai vraiment aim\u00e9 cette exp\u00e9rience unique de pouvoir travailler \u00e0 100\u2009% sur un projet et voir de quoi je suis capable. Mais je suis aussi heureux d'arriver \u00e0 la fin, car je dois avouer que \u00e7a n'a pas \u00e9t\u00e9 simple tous les jours et que de travailler presque seul sur un projet si long n'est pas facile. Pour \u00eatre tout \u00e0 fait honn\u00eate, je suis quand m\u00eame fier de ce que j'ai fait (ce qui n'arrive pas souvent). C'est un projet qui est \u00e0 des ann\u00e9es lumi\u00e8res de la perfection, mais c'\u00e9tait mon id\u00e9e et en commen\u00e7ant le projet, je ne savais m\u00eame pas si j'allais y arriver. Certes le r\u00e9sultat n'est pas exactement comme je l'aurais r\u00eav\u00e9, mais il est concret et il fonctionne ! Il y a eu des moments ou en voyant la quantit\u00e9 de choses qu'il restait \u00e0 faire, je me sentais un peu d\u00e9courag\u00e9, mais je suis arriv\u00e9 au bout avec un projet fonctionnel et pour \u00e7a, je suis assez fier. Ce fut un projet difficile, surtout sur le plan de la r\u00e9solution de probl\u00e8mes. Chaque \u00e9tape du projet apportait une nouvelle probl\u00e9matique qu'il fallait r\u00e9soudre et si parfois, j'ai pu trouver des fa\u00e7ons \u00e9l\u00e9gantes de le faire, pour d'autres, il a fallu \u00eatre un peu plus cr\u00e9atif et moins regardant sur la m\u00e9thode, mais que sur le r\u00e9sultat. Je suis un peu frustr\u00e9 de rendre le projet alors que j'ai encore pleins d'id\u00e9es pour le rendre meilleur. Mais je suis content de rendre quelque chose qui fonctionne et qui est d\u00e9j\u00e0 techniquement utilisable sur le terrain. Ce projet m'a \u00e9galement appris pas mal de chose sur ma mani\u00e8re de travailler et sur la gestion de projet et je sais que tous mes futurs projets b\u00e9n\u00e9ficieront de ces apprentissages.","title":"Bilan"},{"location":"index.html#resume-des-epreuves","text":"Ici, je vais tenter de r\u00e9sumer tr\u00e8s rapidement tout ce qui a d\u00fb se passer pour en arriver l\u00e0. Pour commencer, il a fallu trouver un moyen de r\u00e9cup\u00e9rer des images de la F1TV automatiquement. Pour ce faire, j'ai d\u00fb trouver une librairie qui me permette de contr\u00f4ler un navigateur Firefox. Il a ensuite fallu trouver un moyen de se connecter automatiquement, pour ce faire, j'ai d\u00fb \u00e9crire un bout de code Python qui est all\u00e9 chercher les cookies dans la base de donn\u00e9es de chrome. Ensuite, il a fallu r\u00e9ussir \u00e0 naviguer sur la page de la F1TV en tenant compte des chargements et de la protection anti bots. Puis finalement trouver un moyen de retourner une image en assez bonne r\u00e9solution. Avec ces images, il a ensuite fallu d\u00e9velopper un syst\u00e8me qui permette \u00e0 l'utilisateur d'indiquer au programme o\u00f9 se trouvaient les informations. Il a ensuite fallu faire un syst\u00e8me qui utilise ces informations pour d\u00e9couper l'image pour isoler les infos et les envoyer \u00e0 la partie reconnaissance. Cette partie reconnaissance a d\u00fb \u00eatre d\u00e9velopp\u00e9e de mani\u00e8re quasi unique pour chaque type d'information reconnue et en plus de la partie reconnaissance qui \u00e9tait d\u00e9j\u00e0 bien gal\u00e8re, il a fallu faire tout un syst\u00e8me qui puisse d\u00e9tecter les anomalies de reconnaissances pour \u00eatre s\u00fbr que les informations r\u00e9cup\u00e9r\u00e9es \u00e9taient bonnes. Apr\u00e8s tout \u00e7a, il a fallu faire en sorte que ces donn\u00e9es soient stock\u00e9es et affich\u00e9es correctement. Cr\u00e9er une fa\u00e7on de les afficher de mani\u00e8re utile et facile \u00e0 l'utilisateur. Et tout ce beau monde a d\u00fb \u00eatre optimis\u00e9 pour que l'application ne prenne pas une minute pour r\u00e9cup\u00e9rer des images et il a fallu raccorder ensembles toutes les parties du projet en un seul qui fonctionne correctement sans crasher. C'est un r\u00e9sum\u00e9 un peu barbare qui oublie \u00e9norm\u00e9ment de choses et qui ne parle pas des probl\u00e8mes rencontr\u00e9s, mais cela peut donner une vague id\u00e9e de la taille du projet et de pourquoi je suis d\u00e9j\u00e0 si fier, juste que tout fonctionne. Merci d'avoir lu cette documentation, j'esp\u00e8re qu'elle a \u00e9t\u00e9 instructive et je vous souhaite une excellente journ\u00e9e","title":"R\u00e9sum\u00e9 des \u00e9preuves"},{"location":"index.html#notes-de-code","text":"Ici, je vais donner quelques petites infos qui pourraient vous \u00eatre utiles si vous d\u00e9cidez d'aller vous aventurer dans mon code source. Le programme n'est pas \u00e0 proprement parl\u00e9 un programme en MVC, le d\u00e9coupage g\u00e9n\u00e9ral suit quand m\u00eame cette philosophie, je vais donc les ranger de cette fa\u00e7on pour que \u00e7a soit plus simple pour vous de comprendre.","title":"Notes de code"},{"location":"index.html#vues","text":"Comme le projet n'est pas un MVC parfait, les vues font quand m\u00eame quelques actions, mais les deux fichiers dont je vais parler ici sont \u00e0 au moins 90\u2009% juste de la vue","title":"Vues"},{"location":"index.html#settingscs","text":"Ce fichier contient tout le code pour contr\u00f4ler la vue des \"Settings\" qui est la vue qui se charge de la cr\u00e9ation et \u00e9dition des Presets. Si vous voulez changer le comportement de cette page, il faut \u00e9diter ce fichier. Cette vue utilise deux contr\u00f4leurs : F1TVEmulator ConfigurationTool Le premier pour pouvoir lancer une instance de Firefox qui permet de tester le syst\u00e8me, le second pour effectuer toutes les actions de cr\u00e9ation, modification ou de lecture des \"Presets\" Rien de bien fou \u00e0 dire sur ce fichier. La seule chose un peu bizarre est la gestion de la cr\u00e9ation des zones et des fen\u00eatres. Il y a tout un syst\u00e8me qui peut \u00eatre un peu bizarre \u00e0 premi\u00e8re vue qui sert \u00e0 d\u00e9tecter quand l'utilisateur clique sur l'image pour cr\u00e9er une zone. Je suis s\u00fbr qu'il existe une mani\u00e8re plus propre de le faire que celle que j'ai utilis\u00e9e, mais j'ai fait en sorte que cela fonctionne. Un truc qui serait bien \u00e0 ajouter dans le futur serait un moyen de visualiser au moins les points que l'on ajoute au fur et \u00e0 mesure plut\u00f4t que de tout voir \u00e0 la fin.","title":"Settings.cs"},{"location":"index.html#form1cs","text":"Ce fichier contient tout le code pour contr\u00f4ler la vue principale. Elle se charge de lancer le navigateur et d'afficher toutes les donn\u00e9es r\u00e9cup\u00e9r\u00e9es ou stock\u00e9es. Cette vue utilise deux contr\u00f4leurs : F1TVEmulator DataWrapper Le premier pour contr\u00f4ler le navigateur (le lancer, le stopper, changer l'URL etc.) et le second pour acc\u00e9der \u00e0 des infos de la base de donn\u00e9e sans avoir \u00e0 l'appeler directement.","title":"Form1.cs"},{"location":"index.html#controleurs","text":"Ces classes ne sont pas des contr\u00f4leurs \u00e0 100\u2009%, car ils contiennent aussi un peu de calcul, etc. mais ont comme but principal de servir d'interface entre la vue et les donn\u00e9es.","title":"Contr\u00f4leurs"},{"location":"index.html#configurationtoolcs","text":"Cette classe sert \u00e0 travailler avec la zone principale pour la contr\u00f4ler et \u00e0 contenir les m\u00e9thode qui servent \u00e0 la cr\u00e9ation de Presets. Les deux grosses m\u00e9thodes que cette classe contient sont : SaveToJson AutoCalibrate La premi\u00e8re sert tout simplement \u00e0 prendre la configuration actuelle et la sauvegarder en format JSON dans un fichier dans le dossier PRESETS. La seconde prend une zone, utilise de l'OCR pour localiser les endroits o\u00f9 il y a du texte et fait une calibration auto pour cr\u00e9er automatiquement les zones de pilotes. Les autres m\u00e9thodes sont juste des m\u00e9thodes qui appellent des m\u00e9thodes de mod\u00e8les et servent seulement d'interface.","title":"ConfigurationTool.cs"},{"location":"index.html#datawrappercs","text":"Cette m\u00e9thode sert \u00e0 faire l'interm\u00e9diaire entre la form principale et le contr\u00f4ler \"Reader\" ainsi que la classe qui contr\u00f4le directement la base de donn\u00e9es. Elle interface avec ces deux classes : Reader Storage Reader est un genre d'hybride, mais qui se veut \u00eatre un genre de contr\u00f4ler de la lecture des donn\u00e9es sur les images et des fichiers JSON tandis que storage est le mod\u00e8le qui interagis directement avec la base de donn\u00e9es SQLITE. Cette classe contient des m\u00e9thodes qui auraient tr\u00e8s pu (et s\u00fbrement d\u00fbes) se retrouver directement dans la vue. La plupart des m\u00e9thodes sont l\u00e0 pour g\u00e9n\u00e9rer des contr\u00f4les qui contiennent des informations r\u00e9cup\u00e9r\u00e9es par la base de donn\u00e9es ou par l'OCR.","title":"DataWrapper.cs"},{"location":"index.html#readercs","text":"Cette m\u00e9thode est un genre d'hybride. Elle contient des calculs, etc. mais son but est de servir d'interface entre le reste du programme et les zones/fen\u00eatres de donn\u00e9es. C'est cette m\u00e9thode qui va g\u00e9rer la classe Zone, qui va demander \u00e0 la classe zone de modifier, ajouter ou supprimer des fen\u00eatres etc. Elle contient aussi des m\u00e9thodes pour charger un \"Preset\" et dessiner sur les Images quand une vue en a besoin.","title":"Reader.cs"},{"location":"index.html#zonecs","text":"Cette m\u00e9thode est clairement la plus discutable en tant que contr\u00f4leur, mais qui est en m\u00eame temps la plus proche. La raison est qu'elle peut \u00eatre deux choses. Une zone principale ou une zone de pilote. Dans le cas ou c'est une zone de pilote, c'est clairement une classe normale qui est utilis\u00e9e par un contr\u00f4leur et qui retourne des infos. Mais quand elle est utilis\u00e9e comme une zone principale, c'est l'orchestre de toutes les zones et fen\u00eatres. Dans ce dernier cas, c'est un interm\u00e9diaire entre les zones et fen\u00eatres. Elle ne sert qu'\u00e0 contr\u00f4ler des sous zones et leurs fen\u00eatres. Les seules m\u00e9thodes de cette classe servent \u00e0 demander des informations aux sous zones/fen\u00eatres. Il n'y a quasi aucun calculs.","title":"Zone.cs"},{"location":"index.html#modeles","text":"L\u00e0, on va parler des classes \"classiques\" (lol). Il y a deux types de classes dans cette liste : Les classes normales Les classes enfants de Window.cs Les classes normales sont ind\u00e9pendantes et contiennent toutes des m\u00e9thodes et des infos tr\u00e8s diff\u00e9rentes, tandis que les classes d\u00e9riv\u00e9es de Window.cs ont toutes la m\u00eame structure et ont comme seul et unique but de retourner ce qui est marqu\u00e9 dans leur image. Il est donc normal que ces derni\u00e8res se ressemblent beaucoup.","title":"Mod\u00e8les"},{"location":"index.html#driverdrswindowcs","text":"Cette classe est pr\u00e9vue pour contenir une image dans laquelle on peut voir l'\u00e9tat du DRS d'un pilote. La m\u00e9thode qu'elle utilise pour savoir si le pilote a activ\u00e9 son DRS ou non est d'utiliser la moyenne de couleur de son image. Elle retourne true ou false et elle contient elle-m\u00eame toutes les m\u00e9thodes qui sont n\u00e9cessaires pour donner une r\u00e9ponse (c'est un cas rare).","title":"DriverDrsWindow.cs"},{"location":"index.html#drivergaptoleaderwindowcs","text":"Cette classe est pr\u00e9vue pour contenir une image dans laquelle on peut voir combien de temps s\u00e9pare le pilote actuel du pilote devant lui. La m\u00e9thode qu'elle utilise pour le savoir utilise de l'OCR et fait appel \u00e0 une m\u00e9thode contenue dans son parent Window. Elle est plut\u00f4t vide, car tout le traitement est d\u00e9port\u00e9 dans son parent.","title":"DriverGapToLeaderWindow.cs"},{"location":"index.html#driverlaptimewindowcs","text":"Cette classe est pr\u00e9vue pour contenir une image dans laquelle on peut voir quel \u00e9tait le dernier temps au tour enregistr\u00e9 du pilote. La m\u00e9thode qu'elle utilise pour le savoir utilise de l'OCR et fait appel \u00e0 une m\u00e9thode contenue dans son parent. Elle est plut\u00f4t vide, car tout le traitement est d\u00e9port\u00e9 vers son parent.","title":"DriverLapTimeWindow.cs"},{"location":"index.html#drivernamewindowcs","text":"Cette classe est pr\u00e9vue pour contenir une image dans laquelle on peut voir le nom du pilote \u00e9crit en toutes lettres. La m\u00e9thode qu'elle utilise une partie d'OCR qui est d\u00e9port\u00e9e dans le parent et utilise aussi une m\u00e9thode appel\u00e9e IsADriver (qui aurait pu aussi \u00eatre d\u00e9port\u00e9e dans la page principale) qui v\u00e9rifie si le nom trouv\u00e9 existe.","title":"DriverNameWindow.cs"},{"location":"index.html#driverpositionwindowcs","text":"Cette classe est pr\u00e9vue pour contenir une image dans laquelle on peut voir la position d'un pilote. Cette m\u00e9thode est \u00e9galement un peu vide, car pour d\u00e9coder l'image le traitement est d\u00e9port\u00e9 dans son parent.","title":"DriverPositionWindow.cs"},{"location":"index.html#driversectorwindowcs","text":"Pareil que pour DriverPositionWindow.cs","title":"DriverSectorWindow.cs"},{"location":"index.html#drivertyreswindowcs","text":"Cette classe est pr\u00e9vue pour contenir une image dans laquelle on peut voir l'infographique qui repr\u00e9sente le pneu du pilote. Cette m\u00e9thode est la seule fen\u00eatre int\u00e9ressante, car elle utilise du code d\u00e9port\u00e9 dans le parent, mais aussi une certaine proportion qu'elle contient elle-m\u00eame. Elle contient des m\u00e9thodes qui permettent par exemple de trouver la zone int\u00e9ressante dans l'image ou choisir quel pneu un pilote chausse en fonction de la couleur moyenne de l'image de la zone trouv\u00e9e. Pour toutes les zones de type Window, ce qui est vraiment int\u00e9ressant, vous le trouverez dans le parent.","title":"DriverTyresWindow.cs"},{"location":"index.html#f1tvemulatorcs","text":"F1TVEmulator est la classe qui s'occupe de tout ce qui concerne le navigateur Headless. Cette classe utilise la librairie Selenium et est la pour tout faire. Elle s'occupe aussi bien d'envoyer la requ\u00eate, de cliquer sur un bouton apr\u00e8s 34 secondes que de r\u00e9cup\u00e9rer les cookies qui permettront de se connecter ensuite. Voici les m\u00e9thodes qui s'occupent des cookies : StartCookieRecovering GetCookie Je d\u00e9conseille de modifier ces deux m\u00e9thodes. Elles ont une utilit\u00e9 tr\u00e8s claire et elles fonctionnent. (If its not broken dont fix it) Ce qui peut \u00eatre int\u00e9ressant en revanche, c'est la seule autre m\u00e9thode que cette classe propose sobrement intitul\u00e9e \"Start\". Cette m\u00e9thode est cod\u00e9e de mani\u00e8re totalement proc\u00e9durale et d\u00e9crit exactement toutes les actions \u00e0 faire \u00e0 partir du moment ou le navigateur est d\u00e9marr\u00e9, dans quel ordre et s'il faut les faire ou non. Si vous vouliez modifier quelque chose ici, je pense que la bonne id\u00e9e serait une meilleure gestion des erreurs. Pour le moment, si le programme n'arrive pas \u00e0 cliquer sur certains boutons, soit une erreur est lanc\u00e9e, soit on attend un peu avant de r\u00e9essayer. La vraie chose qui manque, c'est la raison pour laquelle ces boutons n'ont pas pu \u00eatre cliqu\u00e9s. Dans l'id\u00e9al, il faudrait ajouter un syst\u00e8me qui peut d\u00e9tecter la panne exacte pour que le message d'erreur soit plus personnalis\u00e9. Sinon c'est une m\u00e9thode qui marche plut\u00f4t bien et qui est faite compl\u00e8tement sur mesure pour l'utilisation de la F1TV.","title":"F1TVEmulator.cs"},{"location":"index.html#ocrimagecs","text":"L\u00e0, on attaque les classes un peu plus \"bord\u00e9liques\". Cette classe regroupe toutes les actions de filtrage que l'on pourrait vouloir. Cette classe est pas mal utilis\u00e9e pour l'OCR. Il n'y a que deux choses \u00e0 savoir. Presque toutes les m\u00e9thodes de filtres sont g\u00e9n\u00e9riques et peuvent \u00eatre utilis\u00e9es \u00e0 peu pr\u00e8s n'importe o\u00f9 et n'importe quand et devraient toujours fonctionner tant qu'on leur fournit ce dont elles ont besoin (la plupart sont en statique). La seule m\u00e9thode qui va vous int\u00e9resser si vous voulez changer le comportement de l'OCR est la m\u00e9thode \"Enhance\". La m\u00e9thode enhance est un genre de mode d'emploi. Selon le contexte de l'image (si c'est une image qui vient d'une fen\u00eatre de DRS, de temps au tour, de pneu etc.) il y aura une combinaison de filtres diff\u00e9rente. Plusieurs m\u00e9thodes dans cette classe ne sont pas utilis\u00e9es, mais sont gard\u00e9es, car elles pourraient \u00eatre utiles. La plupart du temps, l'utilisation de ces filtres est d\u00e9cid\u00e9e avec des essais \u00e0 t\u00e2tons. Vous comprendrez donc vite que c'est mieux de garder sous le code des m\u00e9thodes car certaines combinaisons marchent mieux que d'autres.","title":"OcrImage.cs"},{"location":"index.html#sqlitestoragecs","text":"Cette classe est plut\u00f4t simple. Ce sont simplement toutes les m\u00e9thodes qui permettent de cr\u00e9er, \u00e9diter et acc\u00e9der \u00e0 la base de donn\u00e9es SQLITE. Vous y trouverez des m\u00e9thodes qui sont juste l\u00e0 pour cr\u00e9er la base comme d'autres plus sp\u00e9cifiques qui sont un peu plus sp\u00e9cifiques comme celles qui veulent r\u00e9cup\u00e9rer l'ID d'un pilote selon son nom ou celle qui veut r\u00e9cup\u00e9rer l'historique des temps autour d'un pilote. Rien de sp\u00e9cial \u00e0 dire sur cette classe.","title":"SqliteStorage.cs"},{"location":"index.html#windowcs","text":"Ahlala... je pense que c'est une des classes les plus longues de tout le projet. Du haut de ses presque 700 lignes, cette classe s'occupe de tout ce que les enfants fen\u00eatres pourraient avoir besoin. On retrouve des m\u00e9thodes pour calculer la diff\u00e9rence entre deux strings qui peut servir pour aider \u00e0 la reconnaissance de noms de pilotes ou bien une m\u00e9thode qui permet de convertir une image en tableau de bytes. La m\u00e9thode la plus grosse cependant et de loin est la m\u00e9thode GetTimeFromPng qui doit impl\u00e9menter un syst\u00e8me qui permet de d\u00e9tecter quand un temps est anormal et d\u00e9tecter si la raison est la mauvaise compr\u00e9hension d'une ponctuation ou le rajout d'un chiffre. Cela prend \u00e9norm\u00e9ment de place, car il y a beaucoup de cas particuliers et il a fallu tout coder \u00e0 la main. Je d\u00e9conseille \u00e0 qui que ce soit de lire cette m\u00e9thode, ainsi, elle pourrait causer de s\u00e9v\u00e8res dommages au cerveau humain. \u00c0 \u00e9crire, ce fut une horreur, \u00e0 comprendre, je n'ose pas imaginer. Sinon pas grand-chose de plus \u00e0 raconter.","title":"Window.cs"},{"location":"index.html#structures","text":"Les classes de structures sont des classes qui ne contiennent que peu ou pas de traitement et qui sont simplement l\u00e0 pour contenir des informations. Elles sont pratiques, car elles permettent de rendre le code dans les autres classes beaucoup plus lisible et leur \u00e9viter d'utiliser des tuples bizarres.","title":"Structures"},{"location":"index.html#driverdatacs","text":"Cette classe contient toutes les infos d'un pilote \u00e0 un moment donn\u00e9. On peut voir cette classe comme une classe contenant une ligne de la F1TV. Toutes les donn\u00e9es \u00e0 propos d'un pilote que l'on peut d\u00e9tecter en une d\u00e9tection sont stock\u00e9es l\u00e0-dedans. Il n'y a pas de notion d'historique ou quoi que ce soit. C'est simplement un moyen de stocker des donn\u00e9es de pilotes dans d'autres classes en ayant un nom logique et aider \u00e0 la lecture. Pas r\u00e9ellement de traitement. Ce fichier contient \u00e9galement un autre objet : Tyre. Cet objet contient les infos d'un pneu, rien de plus. Et voil\u00e0, ce fut un r\u00e9sum\u00e9 extr\u00eamement succinct de tous les fichiers .CS de l'application pour que vous sachiez ce que vous regardez quand vous irez voir dans la partie code source de la documentation. Normalement, il devrait y avoir aussi un certain nombre de commentaires dans ces fichiers pour expliquer certains choix un peu bizarres. C'est en anglais, mais pas de l'anglais tr\u00e8s difficile \u00e0 comprendre. Bonne chance !","title":"DriverData.cs"},{"location":"index.html#glossaire","text":"Vocabulaire F1 : DRS : Drag Reduction System. : Syst\u00e8me qui permet d'ouvrir l'aileron arri\u00e8re de la monoplace quand elle se trouve \u00e0 une seconde ou moins de la voiture devant elle. Cela permet de r\u00e9duire la train\u00e9e que la voiture subit et lui permet d'avoir un petit boost qui aide \u00e0 d\u00e9passer. Pitstop : Arr\u00eat aux stands : Pendant une course de F1, les pneus s'usent extr\u00eamement vite et tous les pilotes sont oblig\u00e9s de passer au moins une fois par les stands par course pour les changer. Et pour changer ces pneus, ils font un arr\u00eat aux stands que l'on appelle dans le milieu un Pitstop. Pneus Hard, Medium, Soft, Inter, Wet : Types de pneus de F1. Hard est un pneu qui ne s'use pas beaucoup, mais qui est lent, Soft est l'inverse et Medium est l'entre deux. Les pneus sont des outils strat\u00e9giques et il est tr\u00e8s important de savoir lequel chaque pilote utilise. Les pneus Inter et Wet sont des pneus pluies, l'Inter \u00e9tant pour les faibles pluies. Secteur : Section de circuit : Les circuits de F1 sont toujours d\u00e9coup\u00e9s en trois parties qui sont mesur\u00e9es s\u00e9par\u00e9ment et qui permettent une meilleure granularit\u00e9 dans l'estimation des r\u00e9sultats. On n'est pas oblig\u00e9 d'attendre la fin d'un tour pour savoir si un pilote est rapide ou non et on peut voir dans quelle partie du circuit, il est rapide ou lent. Monoplace : Voiture \u00e0 une seule place, terme utilis\u00e9 souvent pour d\u00e9crire les F1 dans le document. Grand Prix : Course officielle de Formule 1. \u00c9v\u00e9nement faisant partie du championnat du monde de Formule 1. Vocabulaire projet : Browser/navigateur Headless : Navigateur qui existe et fonctionne sans interface graphique OCR : Optical Character Recognition : Processus de reconnaissance de texte sur une image par un ordinateur TDD : Test Driver Developppement : D\u00e9veloppement avec pour objectif les test. Les tests sont \u00e9crits en amont et le but du d\u00e9veloppeur est simplement de les faire passer. MVC : Mod\u00e8le Vue Controlleur : Architecture de projet qui s\u00e9pare le traitement de l'information, son affichage et sa gestion. Preset : (dans ce projet) Set d'informations pr\u00e9par\u00e9es \u00e0 l'avance pour \u00eatre utilis\u00e9s ult\u00e9rieurement. DB : Data Base / Base de donn\u00e9e Cookie : Fichier cr\u00e9\u00e9 par un site internet stock\u00e9 sur la machine du client qui est utilis\u00e9 en g\u00e9n\u00e9ral pour conserver des informations de connexion m\u00eame apr\u00e8s la fermeture du navigateur. Window : Fen\u00eatre (dans ce projet) objet contenant une partie d'une image contenant une information pr\u00e9cise. Zone : (dans ce projet) objet contenant une partie d'une image qui peu \u00eatre sous divis\u00e9e en fen\u00eatres de donn\u00e9es. Wrapper : Code qui s'occupe de faire l'interface entre une librairie ou une classe pour rendre l'utilisation plus simple ou plus propre JSON : JavaScript Object Notation : Format de fichier qui permet de stocker des informations dans un format tr\u00e8s pr\u00e9cis AWS : Amazon Web Service : Service d'h\u00e9bergement d'Amazon User Agent : Signature num\u00e9rique du navigateur qui permet \u00e0 un site de d\u00e9tecter le type d'appareil et de navigateur connect\u00e9 (peut \u00eatre chang\u00e9 manuellement) CSV : Comma Separated Values : Format de fichier qui permet de stocker facilement des donn\u00e9es sous forme de tableau API : Application Programming Interface : Interface g\u00e9n\u00e9rique qui permet d'acc\u00e9der \u00e0 une ressource.","title":"Glossaire"},{"location":"CahierDesCharges.html","text":"Cahier des charges Cahier des charges \"Track Trends\" Travail de dipl\u00f4me Maxime Rohmer 2023 Contexte Je suis le \"Live Ticker\" charg\u00e9 de la Formule 1 pour le 20 minutes. On peut traduire cela comme commentateur de F1, avec tout de m\u00eame l'importante subtilit\u00e9 que je ne commente pas avec la voix, mais avec le clavier. Mes commentaires sont sous la forme de commentaires \u00e9crits live qui s'ajoutent au fur et \u00e0 mesure de l'\u00e9v\u00e8nement. Par exemple : \"Tour 28/54, Hamilton a fini par s'arr\u00eater et chausser des gommes tendres 13 tours apr\u00e8s Verstappen. L'Anglais va voir plus de 15 secondes \u00e0 rattraper, mais les gommes neuves et plus tendres que son rival devraient lui permettre s'il ne se fait pas trop ralentir par le trafic\". En g\u00e9n\u00e9ral avec un peu plus d'infos quand m\u00eame et cela tous les 3-4 tours Voici quelques exemples de pr\u00e9c\u00e9dents commentaires (Conseil : il y a un bouton pour montrer le feed dans l'ordre chronologique) : \"Commentaire Grand Prix de Belgique 2022\" \"Commentaire du Grand Prix de Singapour 2022\" \"Exemple commentaires\" Pendant un Grand Prix, je dois constamment : \u00c9crire ce qu'il se passe dans le grand prix et expliquer les enjeux Chercher r\u00e9guli\u00e8rement des m\u00e9dias \u00e0 inclure pour diversifier mon live (Tweets, Images etc.) Changer le titre et la description du live en fonction de l'\u00e9volution du Grand prix Et accessoirement regarder le grand prix pour y comprendre quelque chose Avec tout \u00e7a, il est tr\u00e8s difficile de garder un \u0153il sur la page DATA de la F1TV qui fournit pourtant des informations pr\u00e9cieuses. Je me retrouve parfois par exemple \u00e0 ne pas parler de d\u00e9passements dans le peloton, car ils ne sont pas retransmis \u00e0 la t\u00e9l\u00e9 alors que c'est une information importante. Autre exemple, occasionnellement le classement ne refl\u00e8te pas les vraies positions des pilotes. Les arr\u00eats aux stands font que du coup des pilotes qui devraient \u00eatre 15\u00e8mes se retrouvent 8\u1d49 puisqu'ils ne sont pas encore arr\u00eat\u00e9s. Cela peut de temps en temps pr\u00eater \u00e0 confusion. Projet Un outil de style compagnon sous forme d'application C# Windows Form qui r\u00e9cup\u00e8re en temps r\u00e9el les informations de la course et affiche les informations les plus importantes. Le but est non seulement de faciliter mon job, mais aussi faire en sorte d'am\u00e9liorer la plus-value de mon travail en me permettant de fournir des commentaires qui ne sont pas disponibles pour le tout venant qui regarde simplement le flux RTS. Exemples: Les pilotes qui sont proches (moins de 1-2 secondes qui sont donc en train de se battre). Les pilotes qui am\u00e9liorent leur temps au tour et ceux qui perdent le plus de temps Le classement pond\u00e9r\u00e9 tenant compte des futurs arr\u00eats au stand Maintenant afficher diff\u00e9remment les infos, c'est sympa, mais cela serait encore mieux de traiter ces data et de permettre des petites pr\u00e9dictions. Exemples : Pr\u00e9dire les arr\u00eats aux stands en prenant en compte les baisses de performances des pneus Pr\u00e9dire le pneu que le pilote va chausser s'il rentre aux stands dans le prochain tour Pr\u00e9dire dans combien de tour tel pilote va rattraper tel autre pilote Pr\u00e9dire combien de temps le pilote va perdre dans les stands en fonctions des arr\u00eats pr\u00e9c\u00e9dents R\u00e9alisation Malheureusement, la Formula 1 Management ne propose aucune API publique qui puisse nous permettre de faire ce projet \"simplement\". La raison la plus probable \u00e9tant qu'Amazon avec son service AWS propose exactement ce genre de services pour le flux t\u00e9l\u00e9vis\u00e9 et il doit y avoir un contrat d'exclusivit\u00e9. Il existe des API \"Pirates\" faites par la communaut\u00e9, le probl\u00e8me est qu'elles ne sont pas forc\u00e9ment des plus pratiques \u00e0 utiliser. Mais comme je poss\u00e8de un abonnement premium ++ \u00e0 la F1TV, j'ai acc\u00e8s pour chaque grand prix \u00e0 un flux vid\u00e9o nomm\u00e9 : DATA F1 CHANNEL Qui ressemble \u00e0 \u00e7a : \"Data channel exemple\" Donc la seule fa\u00e7on que je vois de r\u00e9cup\u00e9rer ces donn\u00e9es est de les prendre directement sur ce feed. M\u00eame si le but final de l'application est de faire pleins de choses super avec les datas, le gros du projet va surtout \u00eatre la r\u00e9cup\u00e9ration des donn\u00e9es et leur stockage. Les donn\u00e9es viennent du flux vid\u00e9o et ainsi dans un premier temps, il va falloir r\u00e9cup\u00e9rer d'une mani\u00e8re ou d'une autre des images qui viennent d'un grand prix en direct ou en rediffusion. Ensuite, dans un second temps, il faut lire les informations directement sur l'image en utilisant une librairie pr\u00e9vue pour (exemple Tesseract) et v\u00e9rifier l'int\u00e9grit\u00e9 de ces derni\u00e8res pour qu'on puisse ensuite les stocker. Dans un troisi\u00e8me temps, il faut stocker toutes ces donn\u00e9es dans une forme qui permette d'aller facilement faire des requ\u00eates de r\u00e9cup\u00e9ration et d\u00e9j\u00e0 pr\u00e9parer des m\u00e9thodes qui permettent de r\u00e9cup\u00e9rer des infos importantes (ex : la moyenne des cinq derniers tours, le temps moyen d'arr\u00eat etc.) pour faciliter la derni\u00e8re \u00e9tape Quand tout cela est fait, on peut ensuite s'amuser un peu avec les Data. La derni\u00e8re \u00e9tape est donc l'affichage. L'id\u00e9e est de cr\u00e9er une Windows Form qui contienne toutes ces informations dans un format beaucoup plus lisible et avec laquelle on pourrait interagir pour permettre de plus facilement commenter les Grands Prix. (exemple plus bas avec un croquis de ce \u00e0 quoi l'application pourrait ressembler) Voici la liste des donn\u00e9es qui pourraient \u00eatre affich\u00e9es (Non contractuel, simplement des id\u00e9es). Les pilotes qui sont proches (moins de 1-2 secondes qui sont donc en train de se battre). Les pilotes qui am\u00e9liorent leur temps au tour et ceux qui perdent le plus de temps Le classement pond\u00e9r\u00e9 tenant compte des futurs arr\u00eats au stand La moyenne de temps que les pilotes perdent dans les stands La performance moyenne des 5 types de pneus La moyenne de temps de chaque pilote sur le pneu actuel Le nombre de points que chaque pilote gagnerait selon sa position Le classement de la course Voire m\u00eame si c'est possible : Pr\u00e9dire les arr\u00eats aux stands en prenant en compte les baisses de performances des pneus Pr\u00e9dire le pneu que le pilote va chausser s'il rentre aux stands dans le prochain tour Pr\u00e9dire dans combien de tour tel pilote va rattraper tel autre pilote Pr\u00e9dire combien de temps le pilote va perdre dans les stands en fonctions des arr\u00eats pr\u00e9c\u00e9dents Pr\u00e9dire les temps au tour de chaque pilote selon l'usure des pneus Voici un exemple d'interface possible pour une page : \"Proto\" Cas d'utilisation *On va consid\u00e9rer que tous les user ont un abonnement F1 TV PRO Un user veut r\u00e9cup\u00e9rer les data : Il ouvre son navigateur et lance la page DATA de la F1 TV Il calibre la capture des data via le programme (pour la premi\u00e8re utilisation). Il confirme que les donn\u00e9es initiales sont bonnes (pour la premi\u00e8re utilisation). Il regarde tranquille son Grand Prix Le programme r\u00e9cup\u00e8re les data : Il r\u00e9cup\u00e8re des images depuis la F1TV Il utilise Tesseract (ou autre) pour en r\u00e9cup\u00e9rer les infos. Il met ces infos dans un Objet Pilote, dans un Objet course avec un attribut tour pour hi\u00e9rarchiser les data Pour ce qui est de l'affichage, l'id\u00e9e est de faire une application C# comme on l'a appris \u00e0 l'\u00e9cole, mais avec assez de style pour qu'elle puisse \u00eatre agr\u00e9able \u00e0 utiliser. Quand le programme affiche les data : Il prend les donn\u00e9es venant directement de la F1TV. Il affiche diff\u00e9remment les donn\u00e9es pour permettre une meilleure lisibilit\u00e9 Il interpr\u00e8te avec des r\u00e8gles plut\u00f4t simples certaines data pour faire des minipr\u00e9dictions ou aider \u00e0 la lecture Il r\u00e9cup\u00e8re des infos d'autres courses pour les comparer et proposer des pr\u00e9dictions plus int\u00e9ressantes Difficult\u00e9s techniques R\u00e9cup\u00e9rer un flux vid\u00e9o plut\u00f4t propre malgr\u00e9 les contres mesures de la F1 TV pour en emp\u00eacher la lecture par un logiciel Si on doit passer par une capture d'\u00e9cran, trouver un moyen de stocker les donn\u00e9es de mani\u00e8re \u00e0 pr\u00e9voir que parfois un tour pourrait avoir plus de donn\u00e9es qu'un autre, que le user peut mettre pause, ou m\u00eame qu\u2019il revienne en arri\u00e8re. D\u00e9velopper des algorithmes pour r\u00e9cup\u00e9rer les donn\u00e9es comme les diff\u00e9rents pneus utilis\u00e9s ou l'activation du DRS ainsi que d\u00e9velopper des moyens de nettoyer les r\u00e9sultats de l'OCR (Par exemple utiliser diff\u00e9rents champs redondants pour comparer les r\u00e9sultats) Stocker les donn\u00e9es sur une base pour les traiter plus tard tout en pr\u00e9voyant un moyen de voir les stats live D\u00e9velopper des algorithmes de pr\u00e9diction qui prennent en compte d'anciennes courses pour tenter de pr\u00e9dire des choses comme les arr\u00eats aux stands par exemple.","title":"Cahier des charges"},{"location":"CahierDesCharges.html#cahier-des-charges","text":"Cahier des charges \"Track Trends\" Travail de dipl\u00f4me Maxime Rohmer 2023","title":"Cahier des charges"},{"location":"CahierDesCharges.html#contexte","text":"Je suis le \"Live Ticker\" charg\u00e9 de la Formule 1 pour le 20 minutes. On peut traduire cela comme commentateur de F1, avec tout de m\u00eame l'importante subtilit\u00e9 que je ne commente pas avec la voix, mais avec le clavier. Mes commentaires sont sous la forme de commentaires \u00e9crits live qui s'ajoutent au fur et \u00e0 mesure de l'\u00e9v\u00e8nement. Par exemple : \"Tour 28/54, Hamilton a fini par s'arr\u00eater et chausser des gommes tendres 13 tours apr\u00e8s Verstappen. L'Anglais va voir plus de 15 secondes \u00e0 rattraper, mais les gommes neuves et plus tendres que son rival devraient lui permettre s'il ne se fait pas trop ralentir par le trafic\". En g\u00e9n\u00e9ral avec un peu plus d'infos quand m\u00eame et cela tous les 3-4 tours Voici quelques exemples de pr\u00e9c\u00e9dents commentaires (Conseil : il y a un bouton pour montrer le feed dans l'ordre chronologique) : \"Commentaire Grand Prix de Belgique 2022\" \"Commentaire du Grand Prix de Singapour 2022\" \"Exemple commentaires\" Pendant un Grand Prix, je dois constamment : \u00c9crire ce qu'il se passe dans le grand prix et expliquer les enjeux Chercher r\u00e9guli\u00e8rement des m\u00e9dias \u00e0 inclure pour diversifier mon live (Tweets, Images etc.) Changer le titre et la description du live en fonction de l'\u00e9volution du Grand prix Et accessoirement regarder le grand prix pour y comprendre quelque chose Avec tout \u00e7a, il est tr\u00e8s difficile de garder un \u0153il sur la page DATA de la F1TV qui fournit pourtant des informations pr\u00e9cieuses. Je me retrouve parfois par exemple \u00e0 ne pas parler de d\u00e9passements dans le peloton, car ils ne sont pas retransmis \u00e0 la t\u00e9l\u00e9 alors que c'est une information importante. Autre exemple, occasionnellement le classement ne refl\u00e8te pas les vraies positions des pilotes. Les arr\u00eats aux stands font que du coup des pilotes qui devraient \u00eatre 15\u00e8mes se retrouvent 8\u1d49 puisqu'ils ne sont pas encore arr\u00eat\u00e9s. Cela peut de temps en temps pr\u00eater \u00e0 confusion.","title":"Contexte"},{"location":"CahierDesCharges.html#projet","text":"Un outil de style compagnon sous forme d'application C# Windows Form qui r\u00e9cup\u00e8re en temps r\u00e9el les informations de la course et affiche les informations les plus importantes. Le but est non seulement de faciliter mon job, mais aussi faire en sorte d'am\u00e9liorer la plus-value de mon travail en me permettant de fournir des commentaires qui ne sont pas disponibles pour le tout venant qui regarde simplement le flux RTS. Exemples: Les pilotes qui sont proches (moins de 1-2 secondes qui sont donc en train de se battre). Les pilotes qui am\u00e9liorent leur temps au tour et ceux qui perdent le plus de temps Le classement pond\u00e9r\u00e9 tenant compte des futurs arr\u00eats au stand Maintenant afficher diff\u00e9remment les infos, c'est sympa, mais cela serait encore mieux de traiter ces data et de permettre des petites pr\u00e9dictions. Exemples : Pr\u00e9dire les arr\u00eats aux stands en prenant en compte les baisses de performances des pneus Pr\u00e9dire le pneu que le pilote va chausser s'il rentre aux stands dans le prochain tour Pr\u00e9dire dans combien de tour tel pilote va rattraper tel autre pilote Pr\u00e9dire combien de temps le pilote va perdre dans les stands en fonctions des arr\u00eats pr\u00e9c\u00e9dents","title":"Projet"},{"location":"CahierDesCharges.html#realisation","text":"Malheureusement, la Formula 1 Management ne propose aucune API publique qui puisse nous permettre de faire ce projet \"simplement\". La raison la plus probable \u00e9tant qu'Amazon avec son service AWS propose exactement ce genre de services pour le flux t\u00e9l\u00e9vis\u00e9 et il doit y avoir un contrat d'exclusivit\u00e9. Il existe des API \"Pirates\" faites par la communaut\u00e9, le probl\u00e8me est qu'elles ne sont pas forc\u00e9ment des plus pratiques \u00e0 utiliser. Mais comme je poss\u00e8de un abonnement premium ++ \u00e0 la F1TV, j'ai acc\u00e8s pour chaque grand prix \u00e0 un flux vid\u00e9o nomm\u00e9 : DATA F1 CHANNEL Qui ressemble \u00e0 \u00e7a : \"Data channel exemple\" Donc la seule fa\u00e7on que je vois de r\u00e9cup\u00e9rer ces donn\u00e9es est de les prendre directement sur ce feed. M\u00eame si le but final de l'application est de faire pleins de choses super avec les datas, le gros du projet va surtout \u00eatre la r\u00e9cup\u00e9ration des donn\u00e9es et leur stockage. Les donn\u00e9es viennent du flux vid\u00e9o et ainsi dans un premier temps, il va falloir r\u00e9cup\u00e9rer d'une mani\u00e8re ou d'une autre des images qui viennent d'un grand prix en direct ou en rediffusion. Ensuite, dans un second temps, il faut lire les informations directement sur l'image en utilisant une librairie pr\u00e9vue pour (exemple Tesseract) et v\u00e9rifier l'int\u00e9grit\u00e9 de ces derni\u00e8res pour qu'on puisse ensuite les stocker. Dans un troisi\u00e8me temps, il faut stocker toutes ces donn\u00e9es dans une forme qui permette d'aller facilement faire des requ\u00eates de r\u00e9cup\u00e9ration et d\u00e9j\u00e0 pr\u00e9parer des m\u00e9thodes qui permettent de r\u00e9cup\u00e9rer des infos importantes (ex : la moyenne des cinq derniers tours, le temps moyen d'arr\u00eat etc.) pour faciliter la derni\u00e8re \u00e9tape Quand tout cela est fait, on peut ensuite s'amuser un peu avec les Data. La derni\u00e8re \u00e9tape est donc l'affichage. L'id\u00e9e est de cr\u00e9er une Windows Form qui contienne toutes ces informations dans un format beaucoup plus lisible et avec laquelle on pourrait interagir pour permettre de plus facilement commenter les Grands Prix. (exemple plus bas avec un croquis de ce \u00e0 quoi l'application pourrait ressembler) Voici la liste des donn\u00e9es qui pourraient \u00eatre affich\u00e9es (Non contractuel, simplement des id\u00e9es). Les pilotes qui sont proches (moins de 1-2 secondes qui sont donc en train de se battre). Les pilotes qui am\u00e9liorent leur temps au tour et ceux qui perdent le plus de temps Le classement pond\u00e9r\u00e9 tenant compte des futurs arr\u00eats au stand La moyenne de temps que les pilotes perdent dans les stands La performance moyenne des 5 types de pneus La moyenne de temps de chaque pilote sur le pneu actuel Le nombre de points que chaque pilote gagnerait selon sa position Le classement de la course Voire m\u00eame si c'est possible : Pr\u00e9dire les arr\u00eats aux stands en prenant en compte les baisses de performances des pneus Pr\u00e9dire le pneu que le pilote va chausser s'il rentre aux stands dans le prochain tour Pr\u00e9dire dans combien de tour tel pilote va rattraper tel autre pilote Pr\u00e9dire combien de temps le pilote va perdre dans les stands en fonctions des arr\u00eats pr\u00e9c\u00e9dents Pr\u00e9dire les temps au tour de chaque pilote selon l'usure des pneus Voici un exemple d'interface possible pour une page : \"Proto\"","title":"R\u00e9alisation"},{"location":"CahierDesCharges.html#cas-dutilisation","text":"*On va consid\u00e9rer que tous les user ont un abonnement F1 TV PRO Un user veut r\u00e9cup\u00e9rer les data : Il ouvre son navigateur et lance la page DATA de la F1 TV Il calibre la capture des data via le programme (pour la premi\u00e8re utilisation). Il confirme que les donn\u00e9es initiales sont bonnes (pour la premi\u00e8re utilisation). Il regarde tranquille son Grand Prix Le programme r\u00e9cup\u00e8re les data : Il r\u00e9cup\u00e8re des images depuis la F1TV Il utilise Tesseract (ou autre) pour en r\u00e9cup\u00e9rer les infos. Il met ces infos dans un Objet Pilote, dans un Objet course avec un attribut tour pour hi\u00e9rarchiser les data Pour ce qui est de l'affichage, l'id\u00e9e est de faire une application C# comme on l'a appris \u00e0 l'\u00e9cole, mais avec assez de style pour qu'elle puisse \u00eatre agr\u00e9able \u00e0 utiliser. Quand le programme affiche les data : Il prend les donn\u00e9es venant directement de la F1TV. Il affiche diff\u00e9remment les donn\u00e9es pour permettre une meilleure lisibilit\u00e9 Il interpr\u00e8te avec des r\u00e8gles plut\u00f4t simples certaines data pour faire des minipr\u00e9dictions ou aider \u00e0 la lecture Il r\u00e9cup\u00e8re des infos d'autres courses pour les comparer et proposer des pr\u00e9dictions plus int\u00e9ressantes","title":"Cas d'utilisation"},{"location":"CahierDesCharges.html#difficultes-techniques","text":"R\u00e9cup\u00e9rer un flux vid\u00e9o plut\u00f4t propre malgr\u00e9 les contres mesures de la F1 TV pour en emp\u00eacher la lecture par un logiciel Si on doit passer par une capture d'\u00e9cran, trouver un moyen de stocker les donn\u00e9es de mani\u00e8re \u00e0 pr\u00e9voir que parfois un tour pourrait avoir plus de donn\u00e9es qu'un autre, que le user peut mettre pause, ou m\u00eame qu\u2019il revienne en arri\u00e8re. D\u00e9velopper des algorithmes pour r\u00e9cup\u00e9rer les donn\u00e9es comme les diff\u00e9rents pneus utilis\u00e9s ou l'activation du DRS ainsi que d\u00e9velopper des moyens de nettoyer les r\u00e9sultats de l'OCR (Par exemple utiliser diff\u00e9rents champs redondants pour comparer les r\u00e9sultats) Stocker les donn\u00e9es sur une base pour les traiter plus tard tout en pr\u00e9voyant un moyen de voir les stats live D\u00e9velopper des algorithmes de pr\u00e9diction qui prennent en compte d'anciennes courses pour tenter de pr\u00e9dire des choses comme les arr\u00eats aux stands par exemple.","title":"Difficult\u00e9s techniques"},{"location":"ManuelUtilisateur.html","text":"Manuel utilisateur Installation Pour Installer le projet, il faut aller sur le repo qui contient le projet et suivre les \u00e9tapes indiqu\u00e9es dans le ReadMe. Les \u00e9tapes ne sont pas r\u00e9p\u00e9t\u00e9es ici pour \u00e9viter de la redondance et pour \u00e9viter de devoir changer cette documentation si les versions ou les d\u00e9pendances \u00e0 installer changent. A quoi sert l'app ? Track Trends est une application Windows qui sert d'outil pour des abonn\u00e9s de la F1TV qui veulent exploiter le potentiel de la page DATA de la F1TV. L'application est faite pour un seul cas d'utilisation : R\u00e9cup\u00e9rer les infos d'un Grand Prix en cours ou d'une rediffusion et les afficher de mani\u00e8re plus int\u00e9ressante (en mettant en valeur des infos, en construisant un historique et en en interpr\u00e9tant d'autres). L'application est faite pour que l'utilisateur ait le moins de choses \u00e0 faire pour que tout fonctionne. Cela ne veut pas dire que l'utilisateur n'a rien \u00e0 faire et le but de ce document est d'expliquer les diff\u00e9rentes \u00e9tapes n\u00e9cessaires \u00e0 l'utilisation de l'application. Utilisation \"Simple\" Le but de cette section est de vous permettre d'apprendre \u00e0 lancer, stopper et modifier les variables de fonctionnement de l'application. Vous serez donc en mesure d'utiliser le programme correctement. Vous devez commencer par lancer le programme. \"Page de lancement\" Au lancement de l'app, vous devriez avoir une page comme ci-dessus. Il y a beaucoup d'infos, mais pour le moment ce qui nous int\u00e9resse, c'est le menu en haut \u00e0 gauche. \"Contr\u00f4les\" Si c'est la premi\u00e8re fois que vous utilisez l'application, il est possible qu'il n'y ait qu'un seul preset au lieu des quatre ci-dessous voire 0 si vous n'avez pas mis le preset inclus dans l'installation. Si vous n'avez aucun preset, passez directement \u00e0 l'\u00e9tape calibration avant de revenir ici. Comme vous pouvez le voir, en plus des presets s\u00e9lectionnables, il y a quatre boutons (dont deux gris\u00e9s) et une boite de texte avec un lien. Le lien est la chose la plus simple. C'est le lien du Grand Prix que vous voulez analyser. R\u00e9cup\u00e9rer le lien vers le flux Pour remplir la boite de texte pr\u00e9cit\u00e9e, il nous faut un lien et ce lien, on le trouve sur la F1TV . Quand vous vous rendez sur la F1TV la page principale devrait ressembler \u00e0 quelque chose comme \u00e7a (\u00e9videmment le contenu ne sera pas le m\u00eame) : \"Page principale de la F1TV\" Si vous ne vous \u00eates pas d\u00e9j\u00e0 connect\u00e9, connectez-vous et ensuite, allez sur la page du Grand Prix qui vous int\u00e9resse. Pour un Grand Prix en direct, normalement, il y a un endroit o\u00f9 vous pouvez cliquer pour acc\u00e9der au flux directement, et si vous voulez utiliser un Grand Prix en diff\u00e9r\u00e9, vous pouvez aller dans \"202x Season\" ou x est l'ann\u00e9e en cours, en l'occurrence 2023. Et l\u00e0, vous pourrez s\u00e9lectionner un Grand Prix. Dans tous les cas, quand vous avez s\u00e9lectionn\u00e9 votre Grand Prix, vous devriez vous retrouver sur une page de ce style : \"Page d'un Grand Prix sur la F1TV\" Et ici si vous \u00eates sur un Grand Prix en direct, vous pouvez directement copier l'URL de la page et si c'est un Grand Prix en diff\u00e9r\u00e9, vous pouvez directement naviguer avec la barre de progression vid\u00e9o du lecteur de la F1TV, Je conseille de la placer juste apr\u00e8s le d\u00e9part. Vous pouvez prendre le lien avant ou apr\u00e8s avoir chang\u00e9 le timecode de la vid\u00e9o, cela ne change rien, le lien ne contient pas votre progression dans la vid\u00e9o. Ensuite, vous pourrez juste mettre le lien que vous avez r\u00e9cup\u00e9r\u00e9 dans la boite de texte que l'on a vu pr\u00e9c\u00e9demment. Il faut simplement s'assurer que le lien contient bien le terme ?action=play \u00e0 la fin. Boutons Vous n'avez acc\u00e8s qu'\u00e0 deux boutons au lancement de l'application. Le premier nomm\u00e9 'Config' et le second 'Launch' Le bouton 'Config' permet d'ouvrir la page de calibration (voir section Calibration). Le bouton Launch permet de lancer le programme. Le texte peut changer (Par exemple en 'Retry' si le lancement a rat\u00e9) mais son utilit\u00e9 reste la m\u00eame : Lancer le navigateur virtuel qui sera requis pour traiter les donn\u00e9es. Si vous cliquez sur Launch tous les boutons devraient \u00eatre gris\u00e9s, c'est normal. Pendant le lancement du navigateur, l'application ne peut pas \u00eatre utilis\u00e9e pour \u00e9viter des conflits. Il faut juste attendre. Vous aurez \u00e9galement des fen\u00eatres d'invite de commande qui vont s'ouvrir et se fermer, c'est tout \u00e0 fait normal et il ne faut pas interagir avec tant que tout ne s'est pas stabilis\u00e9. Vous devriez voir enfin une fen\u00eatre comme celle ci : \"Page suspecte (Pas de panique, elle ne l'est pas)\" Il ne faut pas fermer cette fen\u00eatre. C'est la seule chose qui nous relie au navigateur virtuel qu'utilise l'application. Il ne faut pas la fermer, par contre, vous pouvez la r\u00e9duire et la laisser en background, c'est d'ailleurs ce que je vous recommande de faire. Peu apr\u00e8s l'ouverture de cette fen\u00eatre, vous devriez avoir acc\u00e8s \u00e0 trois boutons. Bouton 'Config' qui fait la m\u00eame chose qu'avant Bouton 'Re Launch' qui remplace le bouton 'Launch' qui permet de relancer le processus dans le cas ou vous auriez envie de changer de lien ou de preset. Bouton 'Start' lance le processus de r\u00e9cup\u00e9ration de donn\u00e9es. Si vous cliquez sur ce dernier, vous lancerez le programme. Cela peut prendre quelque secondes \u00e0 s'actualiser, mais tr\u00e8s vite vous devriez vous trouver devant une page comme celle-ci : \"D\u00e9but du programme\" Vous n'aurez alors qu'un seul bouton disponible : le bouton 'Stop'. Vous pouvez arr\u00eater le programme quand vous le voulez. ATTENTION : Avant de fermer le programme, merci de stopper d'abord le processus. Si vous stoppez le processus, vous devriez vous retrouver dans la m\u00eame situation que juste apr\u00e8s avoir lanc\u00e9 le navigateur virtuel : \"Arr\u00eat du programme\" Vous pouvez voir en dessous la derni\u00e8re image que le programme a d\u00e9cod\u00e9e et vous avez de nouveau acc\u00e8s aux trois boutons expliqu\u00e9s pr\u00e9c\u00e9demment. Quand l'application a \u00e9t\u00e9 lanc\u00e9e, vous pouvez aussi cliquer sur les donn\u00e9es affich\u00e9es, mais ces comportements sont expliqu\u00e9s dans la section \"Comprendre les donn\u00e9es\" Voil\u00e0 ! Vous savez comment lancer, stopper et modifier les variables de fonctionnement de l'application. Maintenant, vous pouvez passer directement \u00e0 la section \"Comprendre les donn\u00e9es\" si vous voulez apprendre comment utiliser ce que propose le programme ou passer \u00e0 la section \"Calibration\" si vous voulez apprendre \u00e0 configurer l'application et cr\u00e9er des Presets. Calibration Ici, vous apprendrez \u00e0 configurer l'application pour cr\u00e9er vos propres presets et surtout pourquoi vous auriez besoin de le faire et \u00e0 quoi servent ces fameux \"Preset\". Vous serez en mesure d'adapter le fonctionnement de l'application, qu'elle soit conforme aux diff\u00e9rents changements d'interface et de pilotes pr\u00e9sents. Pourquoi calibrer l'application et cr\u00e9er un Preset ? Le programme que vous allez utiliser utilise de l'OCR (Optical Character Recognition). Cela veut dire que le programme va aller regarder chaque image de la F1TV et convertir ce qu'il y a marqu\u00e9 dessus en donn\u00e9es que l'on peut r\u00e9cup\u00e9rer automatiquement. Sauf que pour y arriver, le programme a besoin de savoir o\u00f9 se trouve le texte important et surtout quel type de donn\u00e9e, il est cens\u00e9 trouver \u00e0 tel ou tel endroit. Pour \u00eatre plus pr\u00e9cis, il a \u00e9galement besoin de savoir quels pilotes peuvent se trouver dans la course actuelle. Et pour qu'il sache tout cela, il y a des fichiers de configuration nomm\u00e9s \"Presets\" qui doivent contenir toutes ces informations. Et pour les cr\u00e9er, il existe la page de calibration qui va demander \u00e0 un humain de lui fournir les infos qu'il ne peut pas trouver par lui-m\u00eame. Normalement, il devrait y avoir un Preset fournis par l'application quand vous la t\u00e9l\u00e9chargez depuis le repo mais vous pouvez avoir besoin de faire votre propre \"Preset\" dans deux cas : Quand les pilotes pr\u00e9sents ne sont pas les m\u00eames (Ex : Si un pilote doit \u00eatre remplac\u00e9 ou si de nouveaux pilotes sont arriv\u00e9s ou bien que d'autres aient pris leur retraite) Quand vous voulez utiliser des Grand Prix fait d'une autre ann\u00e9e que celle pour laquelle le \"Preset\" original a \u00e9t\u00e9 pr\u00e9vu. (L'ann\u00e9e devrait \u00eatre mentionn\u00e9e dans le nom du preset) Il est d\u00e9conseill\u00e9 d'utiliser ce projet pour des Grand Prix couru avant 2022, car l'interface de la page Data de la F1TV peut avoir trop chang\u00e9, mais vous pouvez toujours essayer pour voir en faisant votre propre Preset pour des ann\u00e9es comme 2021 ou 2020. Comment cr\u00e9er son Preset Pour cr\u00e9er son Preset, il faut utiliser la page Settings ou Config de l'application. Pour y acc\u00e9der, il faut simplement cliquer sur le bouton \"Config\" de la page principale et vous serez accueilli par une page qui devrait ressembler \u00e0 celle ci dessous : \"Page de config vide\" La seule diff\u00e9rence est que vous aurez s\u00fbrement moins de Presets dans la liste des Presets voir, vous pouvez n'en avoir aucuns. Comme vous pouvez le voir, vous n'avez pas \u00e9norm\u00e9ment d'options disponibles quand vous lancez simplement l'application. Vous n'avez acc\u00e8s qu'aux boutons \"Start the browser\" et \"Add\",\"Remove\". On verra \u00e0 quoi servent ces deux derni\u00e8res plus tard, mais dans un premier temps, on va se pencher sur le bouton Start. Vous pouvez voir qu'en plus de ce bouton, vous pouvez aussi rentrer du texte dans la boite de texte \"Grand Prix URL\" ce qui n'est pas un hasard. Le but, c'est de mettre le lien vers un Grand Prix pour pouvoir avoir une image de test. Pour voir comment r\u00e9cup\u00e9rer cet URL, voir la section (Utilisation \"simple\" \u2192 \"R\u00e9cup\u00e9rer le lien vers le flux\") Quand l'URL a \u00e9t\u00e9 plac\u00e9e au bon endroit, on peut cliquer sur le bouton \"Start\" et attendre. Si vous n'avez pas encore lu la partie \"Utilisation \"simple\"\", vous allez voir des invites de commandes s'ouvrir et se fermer et c'est tout \u00e0 fait normal. Il faut attendre d'avoir une invite de commande qui reste ouverte et qui ressemble \u00e0 celle ci dessous avant de faire quoi que ce soit. Ensuite, vous pourrez simplement r\u00e9duire cette fen\u00eatre et retourner sur la page de configuration. \"Invite de commande suspecte, mais normale\" Ensuite, si vous attendez un peu (le processus peut prendre jusqu'\u00e0 plusieurs dizaines de secondes), vous aurez soit une erreur, soit vous vous retrouverez avec une page qui ressemble \u00e0 \u00e7a : \"Page de config amorc\u00e9e\" Et l\u00e0 on voit que toutes les options ont \u00e9t\u00e9 d\u00e9bloqu\u00e9es. Avant de se pencher sur les nouvelles options, on va rester sur le fonctionnement g\u00e9n\u00e9ral. Le bouton \"Get a newer image\" permet d'avoir une image plus r\u00e9cente de la F1TV. C'est utile par exemple, car comme on le voit sur l'exemple, l'interface de la F1TV n'a pas encore eu le temps de disparaitre. Mais cela peut aussi \u00eatre utile plus tard dans le cas o\u00f9 vous voudriez que certaines infos s'affichent. Le bouton \"Reset Emulator\", lui, permet, comme son nom l'indique, de relancer le navigateur virtuel que l'on a lanc\u00e9 avec le bouton \"Start the browser\". Cela peut \u00eatre utile dans le cas ou l'image ne soit pas l'image que l'on attendait ou si on veut tenter le coup avec un autre URL. Maintenant, on peut passer \u00e0 la cr\u00e9ation des zones et des windows Cr\u00e9ation des Zones et des Windows Sans trop rentrer dans les d\u00e9tails, l'application a besoin de connaitre la localisation de certains \u00e9l\u00e9ments. Elle a besoin de savoir : O\u00f9 se trouve la zone g\u00e9n\u00e9rale des infos pilotes O\u00f9 se trouve chaque pilote O\u00f9 se trouvent les informations pour chacuns de ces pilotes Le programme de calibration est fait pour que vous n'ayez besoin de donner que les informations qu'il ne peut pas deviner. Il y a deux \u00e9tapes : La premi\u00e8re \u00e9tape est de donner les dimensions de la zone principale d'informations. Pour ce faire, il faut dans un premier temps cliquer sur le bouton \"Create the main zone\" qui devrait afficher le texte suivant en dessous apr\u00e8s avoir cliqu\u00e9 : \"Texte indiquant le nombre de points qu'il reste \u00e0 ajouter\" Ensuite, il va falloir cliquer directement sur l'image pour indiquer le coin en haut \u00e0 gauche et le point en bas \u00e0 droite de la zone rectangulaire qui contient les informations. Vous pouvez voir en bleu ci-dessous les coins du rectangle et en rouge l'endroit o\u00f9 il faut cliquer. \"Infographie expliquant o\u00f9 placer les points de la zone principale\" Il faut faire attention \u00e0 bien prendre tous les pilotes MAIS il faut \u00e9galement faire attention \u00e0 ne pas prendre le texte alentours. \"Texte qui ne doit pas \u00eatre dans la zone s\u00e9lectionn\u00e9e\" Ci dessus, on peut voir du texte barr\u00e9 en violet. Il ne faut surtout pas que la zone vienne inclure ces bouts de texte ou toute la calibration pourrait rater. Ensuite, si vous avez bien fait votre travail, au deuxi\u00e8me clic sur la page, vous aurez quelques secondes de flottement et ensuite, vous devriez avoir les contours que vous avez dessin\u00e9s affich\u00e9s en jaune avec pleins de plus petites zones \u00e0 l'int\u00e9rieur comme ci-dessous : \"Zone principale avec les zones de pilotes automatiquement calcul\u00e9es\" Le programme a non seulement pris en compte la zone, mais il a aussi d\u00e9tect\u00e9 automatiquement o\u00f9 se trouvaient les zones de chaque pilote. Si vous n'avez pas un r\u00e9sultat comme celui-l\u00e0 et/ou que les zones ne sont pas bien align\u00e9es sur les pilotes sur l'image, je vous conseille de r\u00e9essayer de cr\u00e9er la zone principale. La seconde \u00e9tape est de montrer o\u00f9 sont les fen\u00eatres d'infos au programme. Vous aurez peut-\u00eatre remarqu\u00e9 qu'en dessous de l'image principale, quand l'affichage jaune a \u00e9t\u00e9 appliqu\u00e9, une image est apparue. Elle devrait ressembler \u00e0 quelque chose dans ce style : \"Image d'une zone de pilote\" C'est une zone de pilote de l'image que l'on voit au-dessus et c'est ici que l'on va indiquer les zones int\u00e9ressantes. Pour ce faire, il faut cliquer sur le bouton \"Create Windows\" et ce message devrait s'afficher un peu en dessous : \"Texte indiquant le nombre de windows \u00e0 ajouter\" Cela nous indique le nombre de fen\u00eatres qu'il nous reste \u00e0 s\u00e9lectionner. La technique est la m\u00eame que pour la grande zone sauf que l\u00e0, il faut le faire neuf fois. Et il faut absolument le faire dans l'ordre de gauche \u00e0 droite. Le but est de tout s\u00e9lectionner et d'arriver \u00e0 ce r\u00e9sultat : \"Exemple de fen\u00eatres d\u00e9coup\u00e9es\" Dans l'ordre, de gauche \u00e0 droite, on veut r\u00e9cup\u00e9rer : La position du pilote Son \u00e9cart avec le leader (en l'occurrence comme c'est le leader que l'on voit, on doit s\u00e9lectionner la fen\u00eatre ou il est marqu\u00e9 \"LEADER\") Son dernier temps au tour La fen\u00eatre DRS L'\u00e9tat de ses pneus Son nom Son temps au secteur 1 Son temps au secteur 2 Son temps au secteur 3 Ajout du nom des pilotes La derni\u00e8re info qui manque \u00e0 notre programme est la liste des pilotes pr\u00e9sents. On peut interagir avec cette liste ici : \"Menu d'interaction avec la liste de pilotes\" Dans la boite de texte, on peut \u00e9crire le nom d'un pilote qui peut \u00eatre trouv\u00e9 sur l'image, on peut l'ajouter \u00e0 la liste et si on a fait une erreur, on peut le retirer. Et c'est \u00e0 peu pr\u00e8s tout. Il ne reste maintenant plus qu'\u00e0 mettre tous les noms. TIP : Il peut \u00eatre int\u00e9ressant d'ajouter le nom des pilotes de r\u00e9serve pour \u00e9viter de venir changer son preset si un pilote n'est pas pr\u00e9sent pour cause de maladie ou de blessure. Il faut simplement faire attention de ne pas non plus mettre trop de noms pour \u00e9viter que le programme puisse confondre. Et voil\u00e0 ! On a toutes les infos n\u00e9cessaires. La page de configuration devrait ressembler \u00e0 \u00e7a : \"Image de la page de config apr\u00e8s avoir ajout\u00e9 toutes les infos\" Il ne reste plus qu'\u00e0 le sauvegarder. Sauvegarder le nouveau Preset Pour sauvegarder le preset, on peut facilement lui donner un nom dans la zone de texte sous les trois boutons de contr\u00f4le des Presets et cliquer sur Save current Preset. Et voil\u00e0, vous savez d\u00e9sormais comment cr\u00e9er vos propres presets et \u00e0 quoi ils servent. Vous pouvez donc adapter le fonctionnement du projet pour qu'il soit conforme aux changements de pilotes et d'interface avec les ann\u00e9es. Vous pouvez ainsi utiliser l'application normalement en s\u00e9lectionnant votre nouveau preset \u00e0 chaque fois. Load un Preset existant Le loading est un peu sp\u00e9cial. Il faut d\u00e9j\u00e0 avoir lanc\u00e9 le navigateur virtuel pour activer les boutons. Ensuite, il suffit de s\u00e9lectionner un preset et de cliquer sur \"Load the Preset\" et attendre un petit peu. L'affichage sera un peu bizarre, mais c'est normal, il ne faut pas s'inqui\u00e9ter si la zone de pilote affich\u00e9e en dessous est correcte. \"Exemple de ce \u00e0 quoi peut ressembler un loading et l'affichage bizarre que \u00e7a implique\" \u00c0 partir de l\u00e0, il est facile de faire son propre preset en changeant juste les noms des pilotes par exemple. Comprendre les donn\u00e9es Ici, vous allez apprendre \u00e0 utiliser l'application et ses donn\u00e9es en comprenant \u00e0 quoi elles servent et comment elles sont affich\u00e9es. \"Image de l'application en cours de fonctionnement depuis quelques minutes\" Il y a 5 types de donn\u00e9es : Overtakes Cette fen\u00eatre est loin d'\u00eatre compl\u00e8tement op\u00e9rationnelle, mais elle permet de voir l'historique des d\u00e9passements et des changements de position. Il faut scroller pour voir les plus r\u00e9cents. Je dirais que pour le moment, c'est la moins int\u00e9ressante et elle ne fonctionne pas toujours super. Last Five Laps \"Image de la fen\u00eatre des cinq derniers tours\" En total contraste avec la fen\u00eatre Overtakes, ici, on a peut-\u00eatre la fen\u00eatre la plus int\u00e9ressante de toutes. On peut voir les pilotes actuellement les plus rapides et plus lents sur le circuit. Le calcul est fait sur la moyenne des cinq derniers tours de chaque pilote. Cela permet de se faire une id\u00e9e de la situation des pilotes. Cela peut servir par exemple \u00e0 d\u00e9tecter quand un pneu est plus rapide que les autres quand on voit des pilotes dans le milieu ou bas de tableau appara\u00eetre dans le plus rapide. Il est par exemple int\u00e9ressant de voir la diff\u00e9rence de vitesse entre les pneus secs et pluie sur un circuit qui commence \u00e0 s\u00e9cher. On peut progressivement voir les pilotes en pneus secs devenir de plus en plus rapides alors que ce sont des pilotes beaucoup moins rapide en temps normal. On peut cliquer sur n'importe lequel de ces pilotes pour voir ses infos appara\u00eetre dans la fen\u00eatre Driver Infos pour voir les cinq derniers tours par exemple ou les pneus qu'il est en train de chausser. Battles \"Fen\u00eatre des batailles\" Cette fen\u00eatre est \u00e9galement assez int\u00e9ressante, car elle permet de voir les pilotes qui sont en train de se battre. Il est estim\u00e9 qu'un pilote qui se bat est un pilote qui est \u00e0 trois secondes ou moins du pilote devant lui. Ne sont affich\u00e9es que les batailles de quatre pilotes maximums dans l'ordre du classement. Si un pilote est entre 2 et 3 secondes de son adversaire, l'\u00e9cart est en blanc. Entre 1 et 2 secondes, il est \u00e9crit en jaune. Dans la zone du DRS (Une seconde ou moins) il est \u00e9crit en vert. On peut aussi cliquer sur le nom d'un pilote pour afficher ses infos dans la fen\u00eatre des infos pilote. Cette fen\u00eatre permet de mieux comprendre qui sont les pilotes qu'il faut garder \u00e0 l'\u0153il \u00e0 la TV ou simplement qui sont les pilotes qui sont tr\u00e8s proches et qui pourraient se mettre la pression pour les arr\u00eats aux stands, car jamais un pilote ne reste \u00e0 moins de trois secondes d'un autre si \u00e7a n'est pas pour tenter quelque chose au niveau strat\u00e9gique. Driver infos \"Fen\u00eatre des infos pilote\" Ici, on peut voir toutes les infos lives d'un pilote. Rien de fou \u00e0 dire sur la partie de gauche, par contre la partie de droite est un peu plus int\u00e9ressante, car elle contient un historique de ses cinq derniers tours (dans la photo, il n'y en a qu'un seul, mais au fur et \u00e0 mesure de la course cela se remplit). On peut non seulement voir les cinq derniers temps au tour, mais on peut aussi cliquer sur chacun d'eux pour voir les secteurs associ\u00e9s. \"Exemple d'affichage des secteurs d'un temps au tour\" ; Live Ranking \"Fen\u00eatre du classement en direct\" Ceci est la fen\u00eatre la plus simple. C'est tout b\u00eatement le classement actuel avec les \u00e9carts avec le leader. Note : On peut \u00e9galement cliquer sur les diff\u00e9rents pilotes pour en afficher les infos dans la fen\u00eatre infos pilote. Erreurs Il est tr\u00e8s probable que si vous utilisez beaucoup cette application, vous allez rencontrer des erreurs. Ici, vous pourrez apprendre ce qu'elles veulent dire et ce que vous pouvez faire pour y rem\u00e9dier. Il n'existe pas un tr\u00e8s grand nombre d'erreurs, mais voici les principales Erreur 100 (Souvent au premier d\u00e9marrage) Cette erreur signale un probl\u00e8me avec la r\u00e9cup\u00e9ration de cookies. Cela peut \u00eatre caus\u00e9 par une mauvaise installation de python ou si vous ne vous \u00eates pas connect\u00e9s r\u00e9cemment \u00e0 la F1TV depuis Chrome ou que vous n'avez tout simplement pas install\u00e9 Chrome sur votre machine. Erreur 101 (Moins r\u00e9current qu'\u00e0 une \u00e9poque) Cette erreur veut dire qu'il y a d\u00e9j\u00e0 une instance de navigateur ouverte. Pour r\u00e9gler cette erreur, regarder dans votre barre des t\u00e2ches les invites de commande ouvertes et fermez celui qui correspond \u00e0 un ancien navigateur. (Si c'est d\u00e9j\u00e0 fait alors en derniers recours, vous pouvez chercher dans le gestionnaire des t\u00e2ches et chercher \"GeckoDriver.exe\") Erreur 102 Cela peut \u00eatre une erreur qui arrive, car vous n'avez pas donn\u00e9 un URL valide pour la F1TV ou par ce que vous ne vous \u00eates pas connect\u00e9 r\u00e9cemment \u00e0 la F1TV depuis chrome (Si vous veniez de le faire alors, attendez un peu et r\u00e9essayez). Parfois cela peut prendre un peu de temps \u00e0 s'actualiser). Erreur 103 L'URL est invalide Erreur 104 L'URL est invalide Erreur 105 Cette erreur indique que soit vous avez donn\u00e9 un URL qui ne correspond \u00e0 aucun Grand Prix, soit que la vid\u00e9o a mis trop de temps \u00e0 charger. Vous pouvez essayer de vous brancher en Ethernet ou simplement r\u00e9essayer si vous \u00eates s\u00fbr de votre URL. Erreur 106 M\u00eame chose que pour la 105","title":"Manuel utilisateur"},{"location":"ManuelUtilisateur.html#manuel-utilisateur","text":"","title":"Manuel utilisateur"},{"location":"ManuelUtilisateur.html#installation","text":"Pour Installer le projet, il faut aller sur le repo qui contient le projet et suivre les \u00e9tapes indiqu\u00e9es dans le ReadMe. Les \u00e9tapes ne sont pas r\u00e9p\u00e9t\u00e9es ici pour \u00e9viter de la redondance et pour \u00e9viter de devoir changer cette documentation si les versions ou les d\u00e9pendances \u00e0 installer changent.","title":"Installation"},{"location":"ManuelUtilisateur.html#a-quoi-sert-lapp","text":"Track Trends est une application Windows qui sert d'outil pour des abonn\u00e9s de la F1TV qui veulent exploiter le potentiel de la page DATA de la F1TV. L'application est faite pour un seul cas d'utilisation : R\u00e9cup\u00e9rer les infos d'un Grand Prix en cours ou d'une rediffusion et les afficher de mani\u00e8re plus int\u00e9ressante (en mettant en valeur des infos, en construisant un historique et en en interpr\u00e9tant d'autres). L'application est faite pour que l'utilisateur ait le moins de choses \u00e0 faire pour que tout fonctionne. Cela ne veut pas dire que l'utilisateur n'a rien \u00e0 faire et le but de ce document est d'expliquer les diff\u00e9rentes \u00e9tapes n\u00e9cessaires \u00e0 l'utilisation de l'application.","title":"A quoi sert l'app ?"},{"location":"ManuelUtilisateur.html#utilisation-simple","text":"Le but de cette section est de vous permettre d'apprendre \u00e0 lancer, stopper et modifier les variables de fonctionnement de l'application. Vous serez donc en mesure d'utiliser le programme correctement. Vous devez commencer par lancer le programme. \"Page de lancement\" Au lancement de l'app, vous devriez avoir une page comme ci-dessus. Il y a beaucoup d'infos, mais pour le moment ce qui nous int\u00e9resse, c'est le menu en haut \u00e0 gauche. \"Contr\u00f4les\" Si c'est la premi\u00e8re fois que vous utilisez l'application, il est possible qu'il n'y ait qu'un seul preset au lieu des quatre ci-dessous voire 0 si vous n'avez pas mis le preset inclus dans l'installation. Si vous n'avez aucun preset, passez directement \u00e0 l'\u00e9tape calibration avant de revenir ici. Comme vous pouvez le voir, en plus des presets s\u00e9lectionnables, il y a quatre boutons (dont deux gris\u00e9s) et une boite de texte avec un lien. Le lien est la chose la plus simple. C'est le lien du Grand Prix que vous voulez analyser.","title":"Utilisation \"Simple\""},{"location":"ManuelUtilisateur.html#recuperer-le-lien-vers-le-flux","text":"Pour remplir la boite de texte pr\u00e9cit\u00e9e, il nous faut un lien et ce lien, on le trouve sur la F1TV . Quand vous vous rendez sur la F1TV la page principale devrait ressembler \u00e0 quelque chose comme \u00e7a (\u00e9videmment le contenu ne sera pas le m\u00eame) : \"Page principale de la F1TV\" Si vous ne vous \u00eates pas d\u00e9j\u00e0 connect\u00e9, connectez-vous et ensuite, allez sur la page du Grand Prix qui vous int\u00e9resse. Pour un Grand Prix en direct, normalement, il y a un endroit o\u00f9 vous pouvez cliquer pour acc\u00e9der au flux directement, et si vous voulez utiliser un Grand Prix en diff\u00e9r\u00e9, vous pouvez aller dans \"202x Season\" ou x est l'ann\u00e9e en cours, en l'occurrence 2023. Et l\u00e0, vous pourrez s\u00e9lectionner un Grand Prix. Dans tous les cas, quand vous avez s\u00e9lectionn\u00e9 votre Grand Prix, vous devriez vous retrouver sur une page de ce style : \"Page d'un Grand Prix sur la F1TV\" Et ici si vous \u00eates sur un Grand Prix en direct, vous pouvez directement copier l'URL de la page et si c'est un Grand Prix en diff\u00e9r\u00e9, vous pouvez directement naviguer avec la barre de progression vid\u00e9o du lecteur de la F1TV, Je conseille de la placer juste apr\u00e8s le d\u00e9part. Vous pouvez prendre le lien avant ou apr\u00e8s avoir chang\u00e9 le timecode de la vid\u00e9o, cela ne change rien, le lien ne contient pas votre progression dans la vid\u00e9o. Ensuite, vous pourrez juste mettre le lien que vous avez r\u00e9cup\u00e9r\u00e9 dans la boite de texte que l'on a vu pr\u00e9c\u00e9demment. Il faut simplement s'assurer que le lien contient bien le terme ?action=play \u00e0 la fin.","title":"R\u00e9cup\u00e9rer le lien vers le flux"},{"location":"ManuelUtilisateur.html#boutons","text":"Vous n'avez acc\u00e8s qu'\u00e0 deux boutons au lancement de l'application. Le premier nomm\u00e9 'Config' et le second 'Launch' Le bouton 'Config' permet d'ouvrir la page de calibration (voir section Calibration). Le bouton Launch permet de lancer le programme. Le texte peut changer (Par exemple en 'Retry' si le lancement a rat\u00e9) mais son utilit\u00e9 reste la m\u00eame : Lancer le navigateur virtuel qui sera requis pour traiter les donn\u00e9es. Si vous cliquez sur Launch tous les boutons devraient \u00eatre gris\u00e9s, c'est normal. Pendant le lancement du navigateur, l'application ne peut pas \u00eatre utilis\u00e9e pour \u00e9viter des conflits. Il faut juste attendre. Vous aurez \u00e9galement des fen\u00eatres d'invite de commande qui vont s'ouvrir et se fermer, c'est tout \u00e0 fait normal et il ne faut pas interagir avec tant que tout ne s'est pas stabilis\u00e9. Vous devriez voir enfin une fen\u00eatre comme celle ci : \"Page suspecte (Pas de panique, elle ne l'est pas)\" Il ne faut pas fermer cette fen\u00eatre. C'est la seule chose qui nous relie au navigateur virtuel qu'utilise l'application. Il ne faut pas la fermer, par contre, vous pouvez la r\u00e9duire et la laisser en background, c'est d'ailleurs ce que je vous recommande de faire. Peu apr\u00e8s l'ouverture de cette fen\u00eatre, vous devriez avoir acc\u00e8s \u00e0 trois boutons. Bouton 'Config' qui fait la m\u00eame chose qu'avant Bouton 'Re Launch' qui remplace le bouton 'Launch' qui permet de relancer le processus dans le cas ou vous auriez envie de changer de lien ou de preset. Bouton 'Start' lance le processus de r\u00e9cup\u00e9ration de donn\u00e9es. Si vous cliquez sur ce dernier, vous lancerez le programme. Cela peut prendre quelque secondes \u00e0 s'actualiser, mais tr\u00e8s vite vous devriez vous trouver devant une page comme celle-ci : \"D\u00e9but du programme\" Vous n'aurez alors qu'un seul bouton disponible : le bouton 'Stop'. Vous pouvez arr\u00eater le programme quand vous le voulez. ATTENTION : Avant de fermer le programme, merci de stopper d'abord le processus. Si vous stoppez le processus, vous devriez vous retrouver dans la m\u00eame situation que juste apr\u00e8s avoir lanc\u00e9 le navigateur virtuel : \"Arr\u00eat du programme\" Vous pouvez voir en dessous la derni\u00e8re image que le programme a d\u00e9cod\u00e9e et vous avez de nouveau acc\u00e8s aux trois boutons expliqu\u00e9s pr\u00e9c\u00e9demment. Quand l'application a \u00e9t\u00e9 lanc\u00e9e, vous pouvez aussi cliquer sur les donn\u00e9es affich\u00e9es, mais ces comportements sont expliqu\u00e9s dans la section \"Comprendre les donn\u00e9es\" Voil\u00e0 ! Vous savez comment lancer, stopper et modifier les variables de fonctionnement de l'application. Maintenant, vous pouvez passer directement \u00e0 la section \"Comprendre les donn\u00e9es\" si vous voulez apprendre comment utiliser ce que propose le programme ou passer \u00e0 la section \"Calibration\" si vous voulez apprendre \u00e0 configurer l'application et cr\u00e9er des Presets.","title":"Boutons"},{"location":"ManuelUtilisateur.html#calibration","text":"Ici, vous apprendrez \u00e0 configurer l'application pour cr\u00e9er vos propres presets et surtout pourquoi vous auriez besoin de le faire et \u00e0 quoi servent ces fameux \"Preset\". Vous serez en mesure d'adapter le fonctionnement de l'application, qu'elle soit conforme aux diff\u00e9rents changements d'interface et de pilotes pr\u00e9sents.","title":"Calibration"},{"location":"ManuelUtilisateur.html#pourquoi-calibrer-lapplication-et-creer-un-preset","text":"Le programme que vous allez utiliser utilise de l'OCR (Optical Character Recognition). Cela veut dire que le programme va aller regarder chaque image de la F1TV et convertir ce qu'il y a marqu\u00e9 dessus en donn\u00e9es que l'on peut r\u00e9cup\u00e9rer automatiquement. Sauf que pour y arriver, le programme a besoin de savoir o\u00f9 se trouve le texte important et surtout quel type de donn\u00e9e, il est cens\u00e9 trouver \u00e0 tel ou tel endroit. Pour \u00eatre plus pr\u00e9cis, il a \u00e9galement besoin de savoir quels pilotes peuvent se trouver dans la course actuelle. Et pour qu'il sache tout cela, il y a des fichiers de configuration nomm\u00e9s \"Presets\" qui doivent contenir toutes ces informations. Et pour les cr\u00e9er, il existe la page de calibration qui va demander \u00e0 un humain de lui fournir les infos qu'il ne peut pas trouver par lui-m\u00eame. Normalement, il devrait y avoir un Preset fournis par l'application quand vous la t\u00e9l\u00e9chargez depuis le repo mais vous pouvez avoir besoin de faire votre propre \"Preset\" dans deux cas : Quand les pilotes pr\u00e9sents ne sont pas les m\u00eames (Ex : Si un pilote doit \u00eatre remplac\u00e9 ou si de nouveaux pilotes sont arriv\u00e9s ou bien que d'autres aient pris leur retraite) Quand vous voulez utiliser des Grand Prix fait d'une autre ann\u00e9e que celle pour laquelle le \"Preset\" original a \u00e9t\u00e9 pr\u00e9vu. (L'ann\u00e9e devrait \u00eatre mentionn\u00e9e dans le nom du preset) Il est d\u00e9conseill\u00e9 d'utiliser ce projet pour des Grand Prix couru avant 2022, car l'interface de la page Data de la F1TV peut avoir trop chang\u00e9, mais vous pouvez toujours essayer pour voir en faisant votre propre Preset pour des ann\u00e9es comme 2021 ou 2020.","title":"Pourquoi calibrer l'application et cr\u00e9er un Preset ?"},{"location":"ManuelUtilisateur.html#comment-creer-son-preset","text":"Pour cr\u00e9er son Preset, il faut utiliser la page Settings ou Config de l'application. Pour y acc\u00e9der, il faut simplement cliquer sur le bouton \"Config\" de la page principale et vous serez accueilli par une page qui devrait ressembler \u00e0 celle ci dessous : \"Page de config vide\" La seule diff\u00e9rence est que vous aurez s\u00fbrement moins de Presets dans la liste des Presets voir, vous pouvez n'en avoir aucuns. Comme vous pouvez le voir, vous n'avez pas \u00e9norm\u00e9ment d'options disponibles quand vous lancez simplement l'application. Vous n'avez acc\u00e8s qu'aux boutons \"Start the browser\" et \"Add\",\"Remove\". On verra \u00e0 quoi servent ces deux derni\u00e8res plus tard, mais dans un premier temps, on va se pencher sur le bouton Start. Vous pouvez voir qu'en plus de ce bouton, vous pouvez aussi rentrer du texte dans la boite de texte \"Grand Prix URL\" ce qui n'est pas un hasard. Le but, c'est de mettre le lien vers un Grand Prix pour pouvoir avoir une image de test. Pour voir comment r\u00e9cup\u00e9rer cet URL, voir la section (Utilisation \"simple\" \u2192 \"R\u00e9cup\u00e9rer le lien vers le flux\") Quand l'URL a \u00e9t\u00e9 plac\u00e9e au bon endroit, on peut cliquer sur le bouton \"Start\" et attendre. Si vous n'avez pas encore lu la partie \"Utilisation \"simple\"\", vous allez voir des invites de commandes s'ouvrir et se fermer et c'est tout \u00e0 fait normal. Il faut attendre d'avoir une invite de commande qui reste ouverte et qui ressemble \u00e0 celle ci dessous avant de faire quoi que ce soit. Ensuite, vous pourrez simplement r\u00e9duire cette fen\u00eatre et retourner sur la page de configuration. \"Invite de commande suspecte, mais normale\" Ensuite, si vous attendez un peu (le processus peut prendre jusqu'\u00e0 plusieurs dizaines de secondes), vous aurez soit une erreur, soit vous vous retrouverez avec une page qui ressemble \u00e0 \u00e7a : \"Page de config amorc\u00e9e\" Et l\u00e0 on voit que toutes les options ont \u00e9t\u00e9 d\u00e9bloqu\u00e9es. Avant de se pencher sur les nouvelles options, on va rester sur le fonctionnement g\u00e9n\u00e9ral. Le bouton \"Get a newer image\" permet d'avoir une image plus r\u00e9cente de la F1TV. C'est utile par exemple, car comme on le voit sur l'exemple, l'interface de la F1TV n'a pas encore eu le temps de disparaitre. Mais cela peut aussi \u00eatre utile plus tard dans le cas o\u00f9 vous voudriez que certaines infos s'affichent. Le bouton \"Reset Emulator\", lui, permet, comme son nom l'indique, de relancer le navigateur virtuel que l'on a lanc\u00e9 avec le bouton \"Start the browser\". Cela peut \u00eatre utile dans le cas ou l'image ne soit pas l'image que l'on attendait ou si on veut tenter le coup avec un autre URL. Maintenant, on peut passer \u00e0 la cr\u00e9ation des zones et des windows","title":"Comment cr\u00e9er son Preset"},{"location":"ManuelUtilisateur.html#creation-des-zones-et-des-windows","text":"Sans trop rentrer dans les d\u00e9tails, l'application a besoin de connaitre la localisation de certains \u00e9l\u00e9ments. Elle a besoin de savoir : O\u00f9 se trouve la zone g\u00e9n\u00e9rale des infos pilotes O\u00f9 se trouve chaque pilote O\u00f9 se trouvent les informations pour chacuns de ces pilotes Le programme de calibration est fait pour que vous n'ayez besoin de donner que les informations qu'il ne peut pas deviner. Il y a deux \u00e9tapes : La premi\u00e8re \u00e9tape est de donner les dimensions de la zone principale d'informations. Pour ce faire, il faut dans un premier temps cliquer sur le bouton \"Create the main zone\" qui devrait afficher le texte suivant en dessous apr\u00e8s avoir cliqu\u00e9 : \"Texte indiquant le nombre de points qu'il reste \u00e0 ajouter\" Ensuite, il va falloir cliquer directement sur l'image pour indiquer le coin en haut \u00e0 gauche et le point en bas \u00e0 droite de la zone rectangulaire qui contient les informations. Vous pouvez voir en bleu ci-dessous les coins du rectangle et en rouge l'endroit o\u00f9 il faut cliquer. \"Infographie expliquant o\u00f9 placer les points de la zone principale\" Il faut faire attention \u00e0 bien prendre tous les pilotes MAIS il faut \u00e9galement faire attention \u00e0 ne pas prendre le texte alentours. \"Texte qui ne doit pas \u00eatre dans la zone s\u00e9lectionn\u00e9e\" Ci dessus, on peut voir du texte barr\u00e9 en violet. Il ne faut surtout pas que la zone vienne inclure ces bouts de texte ou toute la calibration pourrait rater. Ensuite, si vous avez bien fait votre travail, au deuxi\u00e8me clic sur la page, vous aurez quelques secondes de flottement et ensuite, vous devriez avoir les contours que vous avez dessin\u00e9s affich\u00e9s en jaune avec pleins de plus petites zones \u00e0 l'int\u00e9rieur comme ci-dessous : \"Zone principale avec les zones de pilotes automatiquement calcul\u00e9es\" Le programme a non seulement pris en compte la zone, mais il a aussi d\u00e9tect\u00e9 automatiquement o\u00f9 se trouvaient les zones de chaque pilote. Si vous n'avez pas un r\u00e9sultat comme celui-l\u00e0 et/ou que les zones ne sont pas bien align\u00e9es sur les pilotes sur l'image, je vous conseille de r\u00e9essayer de cr\u00e9er la zone principale. La seconde \u00e9tape est de montrer o\u00f9 sont les fen\u00eatres d'infos au programme. Vous aurez peut-\u00eatre remarqu\u00e9 qu'en dessous de l'image principale, quand l'affichage jaune a \u00e9t\u00e9 appliqu\u00e9, une image est apparue. Elle devrait ressembler \u00e0 quelque chose dans ce style : \"Image d'une zone de pilote\" C'est une zone de pilote de l'image que l'on voit au-dessus et c'est ici que l'on va indiquer les zones int\u00e9ressantes. Pour ce faire, il faut cliquer sur le bouton \"Create Windows\" et ce message devrait s'afficher un peu en dessous : \"Texte indiquant le nombre de windows \u00e0 ajouter\" Cela nous indique le nombre de fen\u00eatres qu'il nous reste \u00e0 s\u00e9lectionner. La technique est la m\u00eame que pour la grande zone sauf que l\u00e0, il faut le faire neuf fois. Et il faut absolument le faire dans l'ordre de gauche \u00e0 droite. Le but est de tout s\u00e9lectionner et d'arriver \u00e0 ce r\u00e9sultat : \"Exemple de fen\u00eatres d\u00e9coup\u00e9es\" Dans l'ordre, de gauche \u00e0 droite, on veut r\u00e9cup\u00e9rer : La position du pilote Son \u00e9cart avec le leader (en l'occurrence comme c'est le leader que l'on voit, on doit s\u00e9lectionner la fen\u00eatre ou il est marqu\u00e9 \"LEADER\") Son dernier temps au tour La fen\u00eatre DRS L'\u00e9tat de ses pneus Son nom Son temps au secteur 1 Son temps au secteur 2 Son temps au secteur 3","title":"Cr\u00e9ation des Zones et des Windows"},{"location":"ManuelUtilisateur.html#ajout-du-nom-des-pilotes","text":"La derni\u00e8re info qui manque \u00e0 notre programme est la liste des pilotes pr\u00e9sents. On peut interagir avec cette liste ici : \"Menu d'interaction avec la liste de pilotes\" Dans la boite de texte, on peut \u00e9crire le nom d'un pilote qui peut \u00eatre trouv\u00e9 sur l'image, on peut l'ajouter \u00e0 la liste et si on a fait une erreur, on peut le retirer. Et c'est \u00e0 peu pr\u00e8s tout. Il ne reste maintenant plus qu'\u00e0 mettre tous les noms. TIP : Il peut \u00eatre int\u00e9ressant d'ajouter le nom des pilotes de r\u00e9serve pour \u00e9viter de venir changer son preset si un pilote n'est pas pr\u00e9sent pour cause de maladie ou de blessure. Il faut simplement faire attention de ne pas non plus mettre trop de noms pour \u00e9viter que le programme puisse confondre. Et voil\u00e0 ! On a toutes les infos n\u00e9cessaires. La page de configuration devrait ressembler \u00e0 \u00e7a : \"Image de la page de config apr\u00e8s avoir ajout\u00e9 toutes les infos\" Il ne reste plus qu'\u00e0 le sauvegarder.","title":"Ajout du nom des pilotes"},{"location":"ManuelUtilisateur.html#sauvegarder-le-nouveau-preset","text":"Pour sauvegarder le preset, on peut facilement lui donner un nom dans la zone de texte sous les trois boutons de contr\u00f4le des Presets et cliquer sur Save current Preset. Et voil\u00e0, vous savez d\u00e9sormais comment cr\u00e9er vos propres presets et \u00e0 quoi ils servent. Vous pouvez donc adapter le fonctionnement du projet pour qu'il soit conforme aux changements de pilotes et d'interface avec les ann\u00e9es. Vous pouvez ainsi utiliser l'application normalement en s\u00e9lectionnant votre nouveau preset \u00e0 chaque fois.","title":"Sauvegarder le nouveau Preset"},{"location":"ManuelUtilisateur.html#load-un-preset-existant","text":"Le loading est un peu sp\u00e9cial. Il faut d\u00e9j\u00e0 avoir lanc\u00e9 le navigateur virtuel pour activer les boutons. Ensuite, il suffit de s\u00e9lectionner un preset et de cliquer sur \"Load the Preset\" et attendre un petit peu. L'affichage sera un peu bizarre, mais c'est normal, il ne faut pas s'inqui\u00e9ter si la zone de pilote affich\u00e9e en dessous est correcte. \"Exemple de ce \u00e0 quoi peut ressembler un loading et l'affichage bizarre que \u00e7a implique\" \u00c0 partir de l\u00e0, il est facile de faire son propre preset en changeant juste les noms des pilotes par exemple.","title":"Load un Preset existant"},{"location":"ManuelUtilisateur.html#comprendre-les-donnees","text":"Ici, vous allez apprendre \u00e0 utiliser l'application et ses donn\u00e9es en comprenant \u00e0 quoi elles servent et comment elles sont affich\u00e9es. \"Image de l'application en cours de fonctionnement depuis quelques minutes\" Il y a 5 types de donn\u00e9es :","title":"Comprendre les donn\u00e9es"},{"location":"ManuelUtilisateur.html#overtakes","text":"Cette fen\u00eatre est loin d'\u00eatre compl\u00e8tement op\u00e9rationnelle, mais elle permet de voir l'historique des d\u00e9passements et des changements de position. Il faut scroller pour voir les plus r\u00e9cents. Je dirais que pour le moment, c'est la moins int\u00e9ressante et elle ne fonctionne pas toujours super.","title":"Overtakes"},{"location":"ManuelUtilisateur.html#last-five-laps","text":"\"Image de la fen\u00eatre des cinq derniers tours\" En total contraste avec la fen\u00eatre Overtakes, ici, on a peut-\u00eatre la fen\u00eatre la plus int\u00e9ressante de toutes. On peut voir les pilotes actuellement les plus rapides et plus lents sur le circuit. Le calcul est fait sur la moyenne des cinq derniers tours de chaque pilote. Cela permet de se faire une id\u00e9e de la situation des pilotes. Cela peut servir par exemple \u00e0 d\u00e9tecter quand un pneu est plus rapide que les autres quand on voit des pilotes dans le milieu ou bas de tableau appara\u00eetre dans le plus rapide. Il est par exemple int\u00e9ressant de voir la diff\u00e9rence de vitesse entre les pneus secs et pluie sur un circuit qui commence \u00e0 s\u00e9cher. On peut progressivement voir les pilotes en pneus secs devenir de plus en plus rapides alors que ce sont des pilotes beaucoup moins rapide en temps normal. On peut cliquer sur n'importe lequel de ces pilotes pour voir ses infos appara\u00eetre dans la fen\u00eatre Driver Infos pour voir les cinq derniers tours par exemple ou les pneus qu'il est en train de chausser.","title":"Last Five Laps"},{"location":"ManuelUtilisateur.html#battles","text":"\"Fen\u00eatre des batailles\" Cette fen\u00eatre est \u00e9galement assez int\u00e9ressante, car elle permet de voir les pilotes qui sont en train de se battre. Il est estim\u00e9 qu'un pilote qui se bat est un pilote qui est \u00e0 trois secondes ou moins du pilote devant lui. Ne sont affich\u00e9es que les batailles de quatre pilotes maximums dans l'ordre du classement. Si un pilote est entre 2 et 3 secondes de son adversaire, l'\u00e9cart est en blanc. Entre 1 et 2 secondes, il est \u00e9crit en jaune. Dans la zone du DRS (Une seconde ou moins) il est \u00e9crit en vert. On peut aussi cliquer sur le nom d'un pilote pour afficher ses infos dans la fen\u00eatre des infos pilote. Cette fen\u00eatre permet de mieux comprendre qui sont les pilotes qu'il faut garder \u00e0 l'\u0153il \u00e0 la TV ou simplement qui sont les pilotes qui sont tr\u00e8s proches et qui pourraient se mettre la pression pour les arr\u00eats aux stands, car jamais un pilote ne reste \u00e0 moins de trois secondes d'un autre si \u00e7a n'est pas pour tenter quelque chose au niveau strat\u00e9gique.","title":"Battles"},{"location":"ManuelUtilisateur.html#driver-infos","text":"\"Fen\u00eatre des infos pilote\" Ici, on peut voir toutes les infos lives d'un pilote. Rien de fou \u00e0 dire sur la partie de gauche, par contre la partie de droite est un peu plus int\u00e9ressante, car elle contient un historique de ses cinq derniers tours (dans la photo, il n'y en a qu'un seul, mais au fur et \u00e0 mesure de la course cela se remplit). On peut non seulement voir les cinq derniers temps au tour, mais on peut aussi cliquer sur chacun d'eux pour voir les secteurs associ\u00e9s. \"Exemple d'affichage des secteurs d'un temps au tour\" ;","title":"Driver infos"},{"location":"ManuelUtilisateur.html#live-ranking","text":"\"Fen\u00eatre du classement en direct\" Ceci est la fen\u00eatre la plus simple. C'est tout b\u00eatement le classement actuel avec les \u00e9carts avec le leader. Note : On peut \u00e9galement cliquer sur les diff\u00e9rents pilotes pour en afficher les infos dans la fen\u00eatre infos pilote.","title":"Live Ranking"},{"location":"ManuelUtilisateur.html#erreurs","text":"Il est tr\u00e8s probable que si vous utilisez beaucoup cette application, vous allez rencontrer des erreurs. Ici, vous pourrez apprendre ce qu'elles veulent dire et ce que vous pouvez faire pour y rem\u00e9dier. Il n'existe pas un tr\u00e8s grand nombre d'erreurs, mais voici les principales Erreur 100 (Souvent au premier d\u00e9marrage) Cette erreur signale un probl\u00e8me avec la r\u00e9cup\u00e9ration de cookies. Cela peut \u00eatre caus\u00e9 par une mauvaise installation de python ou si vous ne vous \u00eates pas connect\u00e9s r\u00e9cemment \u00e0 la F1TV depuis Chrome ou que vous n'avez tout simplement pas install\u00e9 Chrome sur votre machine. Erreur 101 (Moins r\u00e9current qu'\u00e0 une \u00e9poque) Cette erreur veut dire qu'il y a d\u00e9j\u00e0 une instance de navigateur ouverte. Pour r\u00e9gler cette erreur, regarder dans votre barre des t\u00e2ches les invites de commande ouvertes et fermez celui qui correspond \u00e0 un ancien navigateur. (Si c'est d\u00e9j\u00e0 fait alors en derniers recours, vous pouvez chercher dans le gestionnaire des t\u00e2ches et chercher \"GeckoDriver.exe\") Erreur 102 Cela peut \u00eatre une erreur qui arrive, car vous n'avez pas donn\u00e9 un URL valide pour la F1TV ou par ce que vous ne vous \u00eates pas connect\u00e9 r\u00e9cemment \u00e0 la F1TV depuis chrome (Si vous veniez de le faire alors, attendez un peu et r\u00e9essayez). Parfois cela peut prendre un peu de temps \u00e0 s'actualiser). Erreur 103 L'URL est invalide Erreur 104 L'URL est invalide Erreur 105 Cette erreur indique que soit vous avez donn\u00e9 un URL qui ne correspond \u00e0 aucun Grand Prix, soit que la vid\u00e9o a mis trop de temps \u00e0 charger. Vous pouvez essayer de vous brancher en Ethernet ou simplement r\u00e9essayer si vous \u00eates s\u00fbr de votre URL. Erreur 106 M\u00eame chose que pour la 105","title":"Erreurs"},{"location":"jdb.html","text":"Journal de bord Mercredi 29 Mars 2023 Premier jour du travail de dipl\u00f4me. Nous avons eu un briefing de mr Garcia et nous avons pu commencer \u00e0 pr\u00e9parer le travail. Nous avons eu les diff\u00e9rents fichiers nescessaires \u00e0 la bonne r\u00e9alisation du projet et je me suis mis \u00e0 faire les fichiers nescessaires La premi\u00e8re chose a \u00e9t\u00e9 de faire ce mkdocs dans lequel j'ai mis un fichier yml plut\u00f4t standart qui risque de changer au fur et \u00e0 mesure. Voici le premier yml : site_name: Documentation Diplome theme: name: material palette: # Palette toggle for light mode - media: \"(prefers-color-scheme: light)\" scheme: default toggle: icon: material/brightness-7 name: Switch to dark mode # Palette toggle for dark mode - media: \"(prefers-color-scheme: dark)\" scheme: slate toggle: icon: material/brightness-4 name: Switch to light mode markdown_extensions: - attr_list - md_in_html plugins: - glightbox - with-pdf Voici un example de \u00e0 quoi ca ressemble en forme de site \"Exemple mkdocs\" Ensuite il m'a fallu faire une version plus \u00e0 jour de mon cahier des charges car je n'y avait pas touch\u00e9 depuis novembre. J'ai envoy\u00e9 un mail \u00e0 mes enseignants pour qu'ils puissent y jeter un oeuil pour \u00eatre s\u00fbr que je n'ai rien chang\u00e9 qui les d\u00e9rangent. Monsieur Jayr m'a demad\u00e9 \u00e0 l'occasion de lui faire un planning type Gantt alors je me suis mis \u00e0 la t\u00e2che. J'ai fait un planning pr\u00e9visionnel et une l\u00e9gende les deux sont dispo dans le dossier planning de ce repertoire. Ensuite je me suis mis \u00e0 tout mettre sur git. A commencer par ce repertoire Et c'est deja la fin de la journ\u00e9e ! Demain j'avance un peu sur la doc avec ce que je peux d\u00e9ja remplir et je finis de pr\u00e9parer ce dont j'ai besoin pour commencer \u00e0 coder. Jeudi 30 Mars 2023 Aujourd'hui selon le planning je dois me charger des dernirers pr\u00e9paratifs pour commencer correctement. J'ai fait expr\u00e8s de prenre du temps pour ca au d\u00e9but pour ne pas me cr\u00e9er de soucis plus loin pendant le travail. Je vais envoyer par mail le planning que j'ai fait \u00e0 mes suiveurs. Ensuite je vais m'attaquer au squelette de la docmentation. Je vais essayer de remplir tout ce que je peux remplir dans un premier temps car cela tout ca de fait pour plus tard quitte \u00e0 modifier quelques aspects au fur et \u00e0 mesure. J'ai aussi d\u00e9sactiv\u00e9 mkdocs with pdf par ce que les r\u00e9sultats ne sont vraiment pas ceux que j'attends et cela ralentis \u00e9norm\u00e9ment le d\u00e9ploiment. J'ai aussi rassembl\u00e9 mes croquis pour le poster : \"Croquis Poster 1\" \"Croquis Poster 2\" On peut voir que dans un premier temps j'ai tent\u00e9 de faire un poster un peu plus stylis\u00e9 et marketing. Cependant apr\u00e8s avoir discut\u00e9 avec Mr Garcia et diff\u00e9rents profs dont un de l'HEPIA et ils m'ont indiqu\u00e9 que ce qui \u00e9tait attendu \u00e9tait moins du marketing qu'un diagramme de fonctionnement. On peut voir sur les derniers posters que le cot\u00e9 technique ressort de plus en plus. Le but sera de faire une version encore plus technique ou on peut voir les diff\u00e9rents fonctionnements de l'application avec les technologies utilis\u00e9es. Le d\u00e9fi cela va \u00eatre de faire un joli poster qui soit en m\u00eame temps vendeur et en m\u00eame temps rempli techniquement. Oh et j'ai eu un probl\u00e8me ou mon calvier et ma souris ne voulaient d'un coup plus fonctionner. Dans mon cas c'\u00e9tait un probl\u00e8me de power management des ports. J'ai eu le soucis sur mon pc fixe \u00e0 la maison et sur mon pc portable \u00e9galement. En gros de ce que j'ai compris le soucis c'est que le pc croit que un port est trop solicit\u00e9 niveau puissance et du coup d\u00e9cide de couper l'alimentation du port USB. J'ai pu r\u00e8gler le soucis en allant dans le device manager sous universal bus controller sous power management et en d\u00e9cochant la case qui indique que windows peut d\u00e9sactiver ce port. Je ne conseille pas ce fix si vous avez des composants de mauvaise qualit\u00e9 car cela pourrait \u00eatre une vraie alerte cependant le fait que mes composants sont plut\u00f4t haut de gamme et le fait que mon clavier et ma souris le fassent en m\u00eame temps et que ils fonctionnaient tr\u00e8s bien depuis plus de 4 ans me font penser que c'est juste une nouvelle mise a jour de windows qui est p\u00e9nible. Demain je vais pouvoir commencer \u00e0 coder pour de bon. Vendredi 31/03/2023 Aujourd'hui on s'occupe de la PT2 qui est la programmation de la r\u00e9cup\u00e8ration des informations des images. Je vais tester IronOcr Source : https://www.c-sharpcorner.com/article/ocr-using-tesseract-in-C-Sharp/ Doc : https://ironsoftware.com/csharp/ocr/docs/ Examples : https://ironsoftware.com/csharp/ocr/examples/simple-csharp-ocr-tesseract/ Avant d'utiliser la librairie je me demande si je dois utiliser un peu de post processing pour aider \u00e0 la reconnaissance. Je peux soit utiliser l'image crop\u00e9e directement : \"Image non trait\u00e9e\" Soit avec un filtre pour passer en noir et blanc laxiste \"Image trait\u00e9e laxiste\" Soit avec un filtre pour passer en noir et blanc stricte \"Image trait\u00e9e stricte\" Il va falloir faire des tests avec tous les noms et les chiffres pour trouver le plus efficace. Bon malheureusment Iron OCR semblait \u00eatre une bonne alternative mais c'est une librairie priv\u00e9e qui demande une license pour \u00eatre utilis\u00e9e. Il va falloir trouver autre chose. En utilisant la librairie \"Tesseract\" qui existe on peut faire de la reconnaissance de texte avec un code plut\u00f4t simple : TesseractEngine engine = new TesseractEngine ( tessDataFolder . FullName , \"eng\" , EngineMode . Default ); var tessImage = Pix . LoadFromMemory ( ImageToByte ( sample )); Page page = engine . Process ( tessImage ); string text = page . GetText (); Voici la methode ImageToByte : https://stackoverflow.com/questions/7350679/convert-a-bitmap-into-a-byte-array public static byte [] ImageToByte ( Image img ) { using ( var stream = new MemoryStream ()) { img . Save ( stream , System . Drawing . Imaging . ImageFormat . Png ); return stream . ToArray (); } } Voici le code pour traiter plusieurs textes sur une seule image : Page page = engine . Process ( tessImage ); // Get the iterator for the page layout using ( var iter = page . GetIterator ()) { // Loop over the elements of the page layout iter . Begin (); do { // Declare a Rect variable to hold the bounding box Rect boundingBox ; // Get the bounding box for the current element if ( iter . TryGetBoundingBox ( PageIteratorLevel . Word , out boundingBox )) { g . DrawRectangle ( Pens . Red , new Rectangle ( boundingBox . X1 , boundingBox . Y1 , boundingBox . Width , boundingBox . Height )); } // Get the text for the current element var text = iter . GetText ( PageIteratorLevel . Word ); tbxResult . Text += text . ToUpper () + Environment . NewLine ; } while ( iter . Next ( PageIteratorLevel . Word )); } Etonnament, avec plus de texte, des noms qui \u00e9taient autrefois mal reconnus sont parfaitement interpr\u00eat\u00e9s. Par exemple voici un exemple de reconnaisance de texte sur tous les pilotes : \"Screenshot de reconnaisance d'image complete\" On voit que le nom Leclerc est mal reconnu. Mais voici ce que cela donne quand on prend une image qui ne contient que le nom Leclerc : \"Screenshot de reconnaissance d'image crop\u00e9e\" On voit ici que le nom Leclerc est tr\u00e8s bien reconnu. Dans le premier exemple on peut voir que Tsunoda est reconnu comme \"Reticin\" ce qui n'est pas exactement pareil (lol) Et quand on isole le nom Tsunoda dans une image seule : \"Screenshot de reconnaissance de Tsunoda\" Il le lit \"RETLELYY\" ce qui n'est toujours pas exactement ca... Une meilleure r\u00e9solution pourrait peut-\u00eatre r\u00e9soudre le probl\u00e8me en partie. Jusqu'ici les images \u00e9taient en presque 720P ce qui donne ceci : \"Tsunoda en 720P\" Et j'ai lanc\u00e9 une r\u00e9cup\u00e8ration d'images en 1080p pour r\u00e9cup\u00e8rer ceci : \"Tsunoda en 1080P\" On peut voir une certaine diff\u00e9rence tout de m\u00eame. Et quand on lance la reconnaissance : \"Reconnaissance Tsunoda en 1080P\" \"Tsunoda n'est plus \u00e9crit \"RETLELYY\" mais \"TSUNDDA\" ce qui n'est pas parfait mais qui est d\u00e9ja beaucoup mieux. J'ai essay\u00e9 de mettre l'engine de Tesseract en mode \"JPN\" comme Tsunoda est un nom japonais mais sans succ\u00e8s j'ai le m\u00eame r\u00e9sultat. Comme la r\u00e9solution est meilleure je me suis dit que peut \u00eatre le filtre de passage en noir et blanc pourrait aider. J'ai \u00e9crit cette petite methode pour convertir l'image en noir et blanc : private static Bitmap ConvertToBlackAndWhite ( Bitmap inputBmp ) { const int BLACK_TO_WHITE_TRESHOLD = 200 ; Bitmap result = new Bitmap ( inputBmp . Width , inputBmp . Height ); for ( int y = 0 ; y < inputBmp . Height ; y ++) { for ( int x = 0 ; x < inputBmp . Width ; x ++) { Color pixelColor = inputBmp . GetPixel ( x , y ); if ( pixelColor . R <= BLACK_TO_WHITE_TRESHOLD && pixelColor . G <= BLACK_TO_WHITE_TRESHOLD && pixelColor . B <= BLACK_TO_WHITE_TRESHOLD ) { pixelColor = Color . FromArgb ( 0 , 0 , 0 ); } else { pixelColor = Color . FromArgb ( 255 , 255 , 255 ); } result . SetPixel ( x , y , pixelColor ); } } return result ; } Rien de bien dingue mais cela fonctionne et je peux jouer avec le BLACK_AND_WHITE_TRESHOLD pour changer son comportement. J'ai dabord test\u00e9 avec un treshold de 100 et le programme a r\u00e9ussi \u00e0 me sortir Tsunoda en deux mots ce qui \u00e9tait d\u00e9ja tr\u00e8s encourageant. Et apr\u00e8s avoir augment\u00e9 le Treshold... Tada : \"Tsunoda 1080P avec filtre\" Le programme arrive bien \u00e0 reconnaitre TSUNODA. Je pense que cette tactique ne fonctionnait pas avant car la resolution \u00e9tait trop faible et l'aliasing se m\u00ealait trop avec le texte pour \u00eatre utilisable. Cependant cette technique ne fonctionne pas sur tous les noms. Par example avec Leclerc : \"Leclerc 1080P avec filtre\" On r\u00e9cup\u00e8re \"Leeler'c\" ce qui n'est pas bon du tout. Mais en modulant le Treshold (ici \u00e0 150) On peut de nouveau voir Leclerc \u00eatre reconnu correctement \"Leclerc 1080P avec filtre 2\" Je pense que pour avoir de bons r\u00e9sultats il va falloir faire un algo qui : D\u00e9coupe l'image en autant de plus petites images pour avoir un mot par image. Teste voir si avec l'image originale un nom correspond \u00e0 la liste de pilotes existant. Si cela ne marche pas, on applique le filtre en modulant le Treshold. Dans le cas ou on aurait pas un match parfait on fait un algo qui cherche le nom le plus proche qui existe dans la liste de noms donn\u00e9s. Seulement voila, il n'y a pas que des lettres que l'on veut r\u00e9cup\u00e8rer. On veut surtout pouvoir r\u00e9cup\u00e8rer les chiffres. Pour les chiffres on va avoir des soucis \u00e9galement... Si on essaie directement la m\u00eame technique sans filtre on a des r\u00e9sultats comme celui ci : \"Tentative de reconnaisance du timing\" La virgule a tendeance \u00e0 se barrer ce qui est particuli\u00e8rement probl\u00e9matique. Cependant comme les chiffres ont beaucoup moins de possibilit\u00e9es que les lettres et qu'il n'y a pas de probl\u00e8me de langue on devrait pouvoir travailler \u00e0 faire des r\u00e8glage que l'on pourra ensuite utiliser. Avec un Treshold de 165 on arrive presque \u00e0 quelque chose d'int\u00e9ressant : \"Tentative 2 de reconnaissance du timing\" Le + n'est clairement pas compris mais ca n'est pas emb\u00eatant car c'est souvent redondant. On arrive cependant \u00e0 isoler 3 et 259. M\u00eame si la virgule n'est pas comprise cela veut dire qu'il est tout de m\u00eame possible de discriminer les secondes des milisecondes. Maintenant avec un temps au tour : \"Reconnaissance du timing au tour\" On arrive sans rien changer aux param\u00eatres \u00e0 isoler minutes secondes et milisecondes. Il semble que la reconnaissance de chiffre soit bien plus efficace que la reconnaissance de lettres. Il va falloir faire un test \u00e0 plus grande \u00e9chelle avec plus d'image pour se rendre compte de la precision. Demain ce qui serait bien cela serait que je fasse un jeu d'images avec des valeurs connues et que je fasse une batterie de tests pour voir \u00e0 quel point je peux faire confiance \u00e0 la reconnaissance des chiffres. Automatiser un syst\u00e8me de test de la sorte me sera tr\u00e8s utile dans le futur pour v\u00e9rifier la non regression de ma reconnaissance de texte quand je tenterai d'y faire des changements. Je suis toujours curieux cependant de voir comment le programme se d\u00e9brouille avec les nombres de tours qui se trouvent dans les icones de pneus. Lundi 3 Avril Aujourd'hui on va faire un programme qui permet de cr\u00e9er un dataset qui permette de tester le programme de reconnaissance. Je pense que le meilleur moyen de faire serait un programme qui cr\u00e9e le dataset et qui ensuite peut tester diff\u00e9rentes methodes de reconnaissance. Par la m\u00eame occasion je peux d\u00e9velopper la technologie qui va permettre de d\u00e9couper une image en 20 lignes ce qui me servira ensuite pour la reconnaissance. Je me rend compte que pour faire un programme de tests je dois d\u00e9ja avoir une id\u00e9e de la structure de mon programme. Pour le moment je r\u00e9flechis \u00e0 un syst\u00e8me de \"Zones\" et de \"Windows\". L'id\u00e9e serait que une Zone est juste une sous partie d'image qui peut encore \u00eatre d\u00e9compos\u00e9 tandis que chaque Window contient une ou plusieurs informations \u00e0 r\u00e9cup\u00e8rer. J'ai essay\u00e9 de d\u00e9couper l'image pour que cela soit plus clair : \"Main zone\" Ici on peut voir que l'image est d\u00e9coup\u00e9e en plusieurs grandes zones. Dans un premier temps on ne s'occupe que de la premi\u00e8re. Ensuite : \"Driver zone #1\" On peut voir la que cette Main zone serait elle m\u00eame d\u00e9compos\u00e9e en plusieurs plus petites zones. Et ensuite chacunes de ces petites zones : \"Driver windows\" Sera d\u00e9compos\u00e9e en plusieurs windows qui elles sont des zones qui contiennent de l'information. En gros on aurait trois types de zone : Les zones qui contiennent d'autres zones Les zones qui contiennent des Windows Les Windows Cependant en y r\u00e9flechissant on pourrait tout \u00e0 fait avoir seulement des zones et des windows en faisant en sorte que les windows peuvent avoir une liste de windows et une liste de zones. Une zone serait compos\u00e9e de : Une image de d\u00e9part Un rectangle qui la positionne sur cette derni\u00e8re Une liste de zones (potentiellement vide) Une liste de windows (potentiellement vide) Une methode qui permet de r\u00e9cup\u00e8rer une image de la zone Une methode qui permet de lancer la reconnaissance sur chaque window Une window serait compos\u00e9e de : Une image de d\u00e9part (cela peut \u00eatre l'image crop\u00e9e de la zone parente peu importe) Un rectangle qui la positionne sur cette derni\u00e8re Une methode qui permet de r\u00e9cup\u00e9rer un image de la window Une methode qui permet de lancer la reconnaisance sur l'image (Chaque type de zone doit l'impl\u00e9menter) Dans chaque window on peut imaginer que la methode qui fait la reconnaissance au lieu de retourner un objet qui peut contenir nimporte quel type d'information peut envoyer ce qu'elle vient de r\u00e9cup\u00e8rer dans une base de donn\u00e9e ou un objet. Par exemple une Zone de pilote pourrait tr\u00e8s bien contenir un objet pilote et le donner \u00e0 ses windows qui rempliraient ce m\u00eame objet. C'est une reflexion plus stockage que OCR mais c'est int\u00e9ressant pour savoir ce que fait une window des donn\u00e9es qu'elle r\u00e9cup\u00e8re. Dans un premier temps je pense que les windows vont simplement \u00e9crire dans un fichier ce qu'elles trouvent chacunes dans le format qu'elles veulent. Pour comprendre pourquoi je me prend la t\u00eate il faut savoir que chaque window peut avoir acc\u00e8s \u00e0 pleins d'informations diff\u00e9rentes. On pourrait dire qu'elles retournent toutes une string sauf que si ca marche pour un temps au tour ou pour un nom de pilote, cela ne marche pas forc\u00e9ment pour un type de pneu ou un DRS ouver. Comme chaque window a plusieurs types de data elle devra elle m\u00eame se charger de comment la traiter ET de la stocker. Voila un diagramme qui r\u00e9sume comment je vois l'impl\u00e9mentation dans un premier temps : \"Diagramme d'explications\" Voici comment se pr\u00e9sente le squellette d'une Zone : public class Zone { private Bitmap FullImage ; private List < Zone > Zones ; private List < Window > Windows ; private Rectangle _bounds ; public Rectangle Bounds { get => _bounds ; private set => _bounds = value ; } public Bitmap ZoneImage { get { Bitmap sample = new Bitmap ( Bounds . Width , Bounds . Height ); Graphics g = Graphics . FromImage ( sample ); g . DrawImage ( FullImage , new Rectangle ( 0 , 0 , sample . Width , sample . Height ), Bounds , GraphicsUnit . Pixel ); return sample ; } } public Zone ( Image fullImage , Rectangle bounds ) { FullImage = ( Bitmap ) fullImage ; Init ( bounds ); } public Zone ( Bitmap fullImage , Rectangle bounds ) { FullImage = fullImage ; Init ( bounds ); } private void Init ( Rectangle bounds ) { Bounds = bounds ; Zones = new List < Zone >(); Windows = new List < Window >(); } public void AddZone ( Rectangle bounds ) { if ( Fits ( bounds )) Zones . Add ( new Zone ( ZoneImage , bounds )); } public void AddWindow ( Rectangle bounds ) { if ( Fits ( bounds )) Windows . Add ( new Window ( ZoneImage , bounds )); } private bool Fits ( Rectangle inputRectangle ) { if ( inputRectangle . X + inputRectangle . Width > Bounds . Width || inputRectangle . Y + inputRectangle . Height > Bounds . Height || inputRectangle . X < 0 || inputRectangle . Y < 0 ) { return false ; } else { return true ; } } } Le but est ensuite de cr\u00e9er diff\u00e9rent types de Zones. Par exemple la MainZone devra d\u00e9couper son contenu en 20 parties \u00e9gales pour tenter de chopper les 20 pilotes. Il serait cool de trouver un moyen de calibrer automatiquement. C'est peut-\u00eatre possible de calibrer avec de la reconnaissance de texte, on peut essayer de lancer la reconnaissance et voir ou on trouve du texte avec un peu de chance cela pourrait donner les positions et avec ca on peut peut-\u00eatre determiner des lignes. Et voici le squelette d'une window g\u00e9n\u00e9rique using System ; using System.Collections.Generic ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; using System.Drawing ; namespace OCR_tester { public class Window { private Bitmap FullImage ; private Rectangle _bounds ; public Rectangle Bounds { get => _bounds ; private set => _bounds = value ; } public Bitmap WindowImage { get { Bitmap sample = new Bitmap ( Bounds . Width , Bounds . Height ); Graphics g = Graphics . FromImage ( sample ); g . DrawImage ( FullImage , new Rectangle ( 0 , 0 , sample . Width , sample . Height ), Bounds , GraphicsUnit . Pixel ); return sample ; } } public Window ( Bitmap fullImage , Rectangle bounds ) { FullImage = fullImage ; Bounds = bounds ; } public virtual void RecoverInformations () { //Each Window type will have to implement its own way to recover the informations stored in the Window Image } } } Chaque Window pourra ainsi elle m\u00eame impl\u00e9menter la r\u00e9cup\u00e8ration d'informations. La facon de les retourner/stocker est encore un peu floue. Par exemple pour un temps au tour on peut imaginer que il fait une petite v\u00e9rification dans l'objet pilote et dans le tableau des tours si il n'y a pas deja une valeur et si il n'y en a pas une alors il peut l'ajouter. Maintenant je vais essayer de cr\u00e9er une Main window qui se calibre toute seule. Alors apr\u00e8s avoir bien gal\u00e8r\u00e9 avec l'interface pour permettre au user de cliquer sur la form pour voir les zones qu'il cr\u00e9e, j'ai pu cr\u00e9er un zone qui fait les dimensions de MainZone et j'ai pu lancer la reconnaissance sur l'image et voir ou il trouve du texte : \"MainZone avec carr\u00e9s de texte\" Maintenant il faut que je nettoie la liste de rectangle pour exclure ceux qui sont trop grands pour \u00eatre sur une seule ligne, ceux qui indiquent le nombre de tour en haut et ceux qui n'ont pas d'int\u00e9r\u00eats. On pourra ensuite isoler les lignes et cr\u00e9er une liste d'images. Pour ce qui est de la ligne qui contient les \"Gap interval last lap\" et des chiffres sur les tours pour les pneus etc je vais juste demander \u00e0 l'utilisateur de ne pas les prendre dans la screenshot. Comme ils contiennent des mots qui peuvent \u00eatre utilis\u00e9s plus loin dans les data je ne peux pas les blacklister et faire un syst\u00e8me qui s'occupe de les enlever si ils existent selon le position y me prendrait trop de temps pour rien. Apr\u00e8s avoir filtr\u00e9 un peu les resultats et enlev\u00e9 les zones beaucoup trop grandes, on se retrouve d\u00e9ja plus qu'avec ca : \"MainZone avec de meilleurs carr\u00e9s\" Comme on peut le voir, du c\u00f4t\u00e9 gauche de l'image on a beaucoup de choses reconnues mais avec beaucoup de tailles diff\u00e9rentes ce qui n'est pas id\u00e9al. Alors j'ajoute un filtre qui permet de ne selectionner que les data sur la droite. \"MainZone avec de meilleurs carr\u00e9s\" Maintenant il devrait \u00eatre possible de faire un algorythme qui ne prend que un seul carr\u00e9 par ligne. \"MainZone avec un seul carr\u00e9 par ligne\" Maintenant que on sait ou se trouve chaque ligne on peut faire un petit traitement et d\u00e9couper l'image en plusieurs windows. Et voila : \"Mainzone auto calibr\u00e9e\" Maintenant le programme peut cr\u00e9er des zones pour chaque pilote \"Images pilotes\" \"Zone d'un pilote\" Maintenant il faut que j'impl\u00e9mente un syst\u00e8me un peu similaire pour cr\u00e9er des windows. Voici la methode que j'ai cr\u00e9\u00e9 pour l'autocalibration : public void AutoCalibrate () { List < Rectangle > detectedText = new List < Rectangle >(); Zones = new List < Zone >(); TesseractEngine engine = new TesseractEngine ( Window . tessDataFolder . FullName , \"eng\" , EngineMode . Default ); Image image = ZoneImage ; var tessImage = Pix . LoadFromMemory ( Window . ImageToByte ( image )); Page page = engine . Process ( tessImage ); using ( var iter = page . GetIterator ()) { iter . Begin (); do { Rect boundingBox ; if ( iter . TryGetBoundingBox ( PageIteratorLevel . Word , out boundingBox )) { //var text = iter.GetText(PageIteratorLevel.Word).ToUpper(); //We remove all the rectangles that are definitely too big if ( boundingBox . Height < image . Height / NUMBER_OF_DRIVERS ) { //Now we add a filter to only get the boxes in the right because they are much more reliable in size if ( boundingBox . X1 > image . Width / 2 ) { //Now we check if an other square box has been found roughly in the same y axis bool match = false ; //The tolerance is roughly half the size that a window will be int tolerance = ( image . Height / NUMBER_OF_DRIVERS ) / 2 ; foreach ( Rectangle rect in detectedText ) { if ( rect . Y > boundingBox . Y1 - tolerance && rect . Y < boundingBox . Y1 + tolerance ) { //There already is a rectangle in this line match = true ; } } //if nothing matched we can add it if (! match ) detectedText . Add ( new Rectangle ( boundingBox . X1 , boundingBox . Y1 , boundingBox . Width , boundingBox . Height )); } } } } while ( iter . Next ( PageIteratorLevel . Word )); } foreach ( Rectangle Rectangle in detectedText ) { Rectangle windowRectangle ; Size windowSize = new Size ( image . Width , image . Height / NUMBER_OF_DRIVERS ); Point windowLocation = new Point ( 0 , ( Rectangle . Y + Rectangle . Height / 2 ) - windowSize . Height / 2 ); windowRectangle = new Rectangle ( windowLocation , windowSize ); Zones . Add ( new Zone ( ZoneImage , windowRectangle )); } } Ca peut paraitre pas \u00e9norme comme code mais pour tout mettre en place ca demande quand m\u00eame pas mal de reflexion. J'ai du clean un peu le code que j'avais fait pour permettre la selection de zones et ajouter la possibilit\u00e9 d'ajouter des windows sur une zone. J'ai juste quelques difficult\u00e9es \u00e0 les ajouter correctement, j'ai un offset tout pourri qui se met tout le temps \"Sainz coup\u00e9\" \"Perez coup\u00e9\" Cela doit \u00eatre un soucis lors de la detection de clic qui met un offset en trop. C'est vraiment p\u00e9nible en tout cas. Certes c'est moins fun de devoir manuellement indiquer ou sont les windows sur une ligne de pilote, mais je ne vois vraiment pas comment faire cela automatiquement. Le but c'est de faire une configuration qui puisse \u00eatre sauvegard\u00e9e comme ca pas besoin d'\u00e0 chaques fois le refaire. C'est bon ! J'avais juste oubli\u00e9 de changer le calcul d'offset entre le code de la zone et de la window. Note pour plus tard, il serait peut-\u00eatre judicieux de faire quelque chose pour la vue, les windows et les Zones ont le m\u00eame exact comportement pour la vue ce qui fait dupliquer du code. Mais au moins maintenant ca fonctionne : \"Ocr tester screenshot\" Et le programme va directement cr\u00e9er un dossier par pilote avec toutes les images de chaque Data le concernant : \"Dossier Perez\" ; Et c'est tout pour aujourd'hui je pense. Ce qui serait cool demain c'est que je puisse stocker d'une mani\u00e8re ou d'une autre ces fichiers de calibration et que je puisse les transf\u00e8rer vers le programme qui va s'occuper de d\u00e9coder et commencer gentillement \u00e0 d\u00e9coder les diff\u00e9rents types de data. Note pour quand je ferai les tests. Je pense que la meilleure id\u00e9e serait que je prenne pleins de photos du style et que je les mette dans un fichier CSV ou JSON avec leur contenu. Et ensuite je le fais passer en tests pour calculer la prescision de mon algo de d\u00e9codage. Pour le moment on est plut\u00f4t dans les clouts niveau planning. Mardi 4 Avril Aujourd'hui je suis scens\u00e9 plut\u00f4t bosser sur l'interpretation des donn\u00e9es, mais une id\u00e9e m'a taraud\u00e9 l'esprit toute la nuit. Est-ce que je ne pourrais pas quand m\u00eame essayer de d\u00e9composer la zone de pilote directment comme pour la Main zone. Pour ce faire j'ai tent\u00e9 de faire comme pour la main zone c'est \u00e0 dire lancer la reconnaissance pour savoir ou \u00e9taient tous les champs de donn\u00e9es mais malheureusement je ne pense pas que cela va \u00eatre possible. En effet non seulement ici les champs sont de tailles tr\u00e8s vari\u00e9es, mais en plus la reconnaissance n'arrive pas \u00e0 en r\u00e9cup\u00e8rer le m\u00eame nombre sur chaque ligne ce qui risque d'\u00eatre complexe \u00e0 utiliser ensuite. La preuve : \"Tentative d'auto calibration\" ; Cependant tout n'est pas perdu ! Il y a peut-\u00eatre un moyen qui serait mieux en tous points. Le soucis avec ce type de reconnaissance c'est qu'on utilise beaucoup de ressources inutiles. On peut peut-\u00eatre hard coder la valeur des diviseurs et les utiliser pour cr\u00e9er des zones. Ok alors visiblement c'est un probl\u00e8me car il semble y avoir d'autres pixels de cette couleur dans l'image (Qui l'aurait cru lol) \"Tentative 2\" J'a tent\u00e9 de r\u00e9duire la tol\u00e9rance mais le soucis c'est que c'est soit trop soit pas assez Derni\u00e8re tentative, j'ai essay\u00e9 de prendre plusieurs pixels en hauteur pour chaque incr\u00e9ment de X et en faire la moyenne, et m\u00eame comme ca, impossible de trouver de mani\u00e8re efficace les zones. Je pense que je vais donc revert tous mes changements pour revenir \u00e0 la version ou on les choisissait manuellement. Pas mal de temps perdu mais bon c'est comme ca ca arrive Bon j'ai fait un revert mais j'ai ajout\u00e9 une feature importante. Les zones font la largeur indiqu\u00e9e par l'utilisateur mais elles font la hauteur max comme ca toutes les window font la m\u00eame hauteur et ca permet \u00e0 l'utilisateur de ne pas forc\u00e9ment \u00eatre ultra pr\u00e9cis dans sa selection. Ce qui nous donne : \"Resultat final\" Maintenant je dirais que les deux prochaines choses \u00e0 faire seraient de stocker ces zones dans un fichier JSON ou autre pour que la calibration puisse \u00eatre envoy\u00e9e directement dans le logiciel de reconnaissance et ensuite de faire une calibration sur des images qui font la taille qu'on aura pendant les Grands Prix. Pour le moment elles sont au format 16:10 qui est le format d'\u00e9crant de mon laptop. Pour le stockage j'imagine un fichier qui donne des indications assez simples qui permettent de reconstruire le total des zones quand il est import\u00e9 plutot que d'\u00e9crire les coordonn\u00e9es en dur pour chacunes. Chaque Grande zone va impl\u00e9menter une methode qui s'occupe de mettre tous ses enfants dans un fichier. { \"MainZone\" :{ \"x\" : 10 , \"y\" : 20 , \"width\" : 1450 , \"height\" : 1340 , \"DriverZone\" :{ \"x\" : 0 , \"y\" : 23 , \"height\" : 25 , \"Windows\" :[ { \"DriverPositionWindow\" :{ \"x\" : 0 , \"y\" : 0 , \"width\" : 35 } }, { \"DriverPositionChangesWindow\" :{ \"x\" : 0 , \"y\" : 0 , \"width\" : 45 } } ] } } } C'est le r\u00e9sultat auquel j'aimerais arriver. Mais pour y arriver il faut encore que je cr\u00e9e les diff\u00e9rents types de window. Cela veut dire que je dois d\u00e9cider quelles informations je vais r\u00e9cup\u00e8rer de la page. Par exemple je vais conserver la position du pilote mais au final les changements de positions sont difficiles \u00e0 lire et sont redondants. Si je garde un historique des positions des pilotes je peux calculer moi m\u00eame les changements. Pareil pour gap avec la voiture devant. Je pense que je vais juste garder l'information des \u00e9carts absolus et ensuite je pourrai toujours calculer la diff\u00e9rence entre les pilotes. Ca peut para\u00eetre b\u00eate car cela rajoute du calcul mais en r\u00e9alit\u00e9 le calcul de l'OCR est extr\u00eamement gourmand alors il faut que j'\u00e9vite le plus possible d'y faire recours. Il est bien plus rapide de calculer les \u00e9carts que d'essayer de reconnaitre le texte et le convertir en chiffre. J'ai visiblement ajout\u00e9 un bug dans mon code. Maintenant tous les pilotes ont la m\u00eame image quand on les selectionne. Mais visiblement ca n'\u00e9tait pas le cas avant car j'avais pu prendres des images de chaque pilote. J'ai pass\u00e9 3 minutes \u00e0 fixer un bug stupide j'ai un peu envie de br\u00fbler ma place de travail... Mais bon au moins maintenant cela fonctionne ! Toutes les images sont r\u00e9cup\u00e8r\u00e9es et ont un format correct avec le bon nom : \"Verstappen folder\" Avec un peu de code tr\u00e8s moche j'ai pu cr\u00e9er un fichier JSON qui contient les diff\u00e9rentes infos. Cependant en exportant TOUT on se retrouve avec un fichier de 1200 lignes ce qui n'est pas optimal. Mais quand on regarde, il devrait \u00eatre possible de faire un fichier qui ne contient que les infos d'un seul pilote car ensuite il y a simplement un offset \u00e0 appliquer sur la zone et les windows. Je vais donc pouvoir commencer enfin le logiciel de d\u00e9codage qui prend en entr\u00e9e un fichier JSON comme celui ci qui a \u00e9t\u00e9 g\u00e9n\u00e8r\u00e9 avec le programme de calibration. { \"Main\" : { \"x\" : 40 , \"y\" : 230 , \"width\" : 1845 , \"height\" : 719 , \"Zones\" : [ { \"DriverZone\" : { \"x\" : 0 , \"y\" : 3 , \"width\" : 1845 , \"height\" : 35 , \"Windows\" : [ { \"Position\" : { \"x\" : 2 , \"y\" : 0 , \"width\" : 32 }, \"GapToLeader\" : { \"x\" : 204 , \"y\" : 0 , \"width\" : 96 }, \"LapTime\" : { \"x\" : 413 , \"y\" : 0 , \"width\" : 105 }, \"Drs\" : { \"x\" : 526 , \"y\" : 0 , \"width\" : 81 }, e t c... } ] } } ] } } Dans le futur il faudrait ajouter d'autres choses comme par exemple les diff\u00e9rents pilotes pr\u00e9sents sur le Grand Prix et ce genre d'infos. Quoique je vais l'ajouter d\u00e9ja maintenant et plus tard je mettrai en place la feature acessible depuis l'interface. Mais le hardcoder maintenant me permet d\u00e9ja de mieux coder l'autre c\u00f4t\u00e9. Ce programme n'est en aucun cas termin\u00e9 et je vais devoir travailler encore un peu dessus pour qu'il soit utilisable correctement mais au moins il fonctionne \u00e0 peu pr\u00e8s. Exemple du json avec les noms de pilotes: { \"Main\" : { \"x\" : 37 , \"y\" : 238 , \"width\" : 1851 , \"height\" : 713 , \"Zones\" : [ { \"DriverZone\" : { \"x\" : 0 , \"y\" : -5 , \"width\" : 1851 , \"height\" : 35 } } ] }, \"Drivers\" : [ \"Leclerc\" , \"Verstappen\" , e t c... ] } Maintenant je vais m'attaquer au d\u00e9codage. Demain je dois finir le d\u00e9codage du JSON et je dois commencer \u00e0 impl\u00e9menter la reconnaissance des textes. Voire m\u00eame des pneus etc si j'y arrive. Mercredi 5 Avril Bon la il faut vraiment que je finisse assez vite la lecture du JSON et la reconstruction des zones pour commencer la reconnaissance. J'ai pris beaucoup de temps \u00e0 faire le programme de calibration mais je pense que c'est essentiel de prendre ce temps maintenant. (BTW il faudra quand m\u00eame retourner faire une plus jolie version par ce que la ca marche mais c'est tout) Bon apr\u00e8s pas mal de boulot je pense avoir r\u00e9ussi. Dans le nouveau programme on arrive \u00e0 r\u00e9cup\u00e8rer les diff\u00e9rentes zones : \"JSON decode result\" Un conseil de notre professeur M.Bonvin a \u00e9t\u00e9 de cr\u00e9er des Releases de versions qui ne fonctionnent pas ou pas tr\u00e8s bien. J'ai donc publi\u00e9 une premi\u00e8re release de l'OCR_TEST qui fonctionne vite fait. J'ai seulement un petit soucis, comme je recr\u00e9e compl\u00eatement la structure des driver zones avec seulement la premi\u00e8re, il y a un petit d\u00e9calage car entre les zones il y avait un gap. Ce qui fait que si la premi\u00e8re zone est parfaitement centr\u00e9e : \"Centered driver\" La vingti\u00e8me ne l'est plus exactement : \"Uncentered Driver\" Pour ca j'ai essay\u00e9 de mettre un espacement arbitraire mais c'est complexe. Je vais plut\u00f4t tenter de faire une diff\u00e9rence entre la taille de la zone compl\u00eate et de la taille additionn\u00e9e de toutes les fen\u00eatre et diviser le resultat entre toutes les fen\u00eatres. Ca n'est pas parfait mais au moins maintenant les donn\u00e9es ne touchent plus les bords de la fen\u00eatre. Et voila ! Maintenant avec le fichier de configuration en Json on arrive \u00e0 r\u00e9cup\u00e8rer toutes les infos comme si elles avaient \u00e9t\u00e9 envoy\u00e9es directement depuis l'app de calibration mais sans le processing time ! \"Verstappen folder 2 On peut donc ENFIN passer au d\u00e9codage de ces FICHUES donn\u00e9es. Je vais pouvoir impl\u00e9menter ce que j'ai fait dans le projet de test de d\u00e9codage. Gr\u00e2ce \u00e0 mon d\u00e9coupage initial qui m'a pris du temps \u00e0 impl\u00e9menter on a enfin un truc qui marche m\u00eame si je n'ai impl\u00e9ment\u00e9 que la reconnaissance de noms. \"Image reconnaissance propre\" Si on se rappelle du syst\u00e8me de window et de zones dans le diagramme plus haut, c'est assez facile de comprendre comment je m'y suis pris. En gros on des listes et des listes de listes de zones, c'est la partie un peu plus technique car il y a des zones qui peuvent contenir d'autres zones etc. Je vais commencer par la reconnaissance de noms. Voici le tableau de pilotes de 2023 \"Drivers\" : [ \"Leclerc\" , \"Verstappen\" , \"Hamilton\" , \"Alonso\" , \"Russel\" , \"Gasly\" , \"Stroll\" , \"Sainz\" , \"Hulkenberg\" , \"Norris\" , \"Tsunoda\" , \"Piastri\" , \"Zhou\" , \"Ocon\" , \"Magnussen\" , \"Perez\" , \"Sargeant\" , \"De Vries\" , \"Bottas\" , \"Albon\" ] ET voici le tableau de pilotes de 2022 : \"Drivers\" : [ \"Leclerc\" , \"Verstappen\" , \"Sainz\" , \"Perez\" , \"Hamilton\" , \"Russel\" , \"Magnussen\" , \"Gasly\" , \"Ocon\" , \"Alonso\" , \"Tsunoda\" , \"Bottas\" , \"Zhou\" , \"Albon\" , \"Stroll\" , \"Schumacher\" , \"Hulkenberg\" , \"Norris\" , \"Latifi\" , \"Ricciardo\" ] Je les notes ici car J'ai souvent besoin de changer selon le dataset que j'utilise. Dans le futur je ferai s\u00fbrement un grand dataset qui prend des pilotes de reserves et des pilotes juniors pour que dans le cas ou un pilote est remplac\u00e9 dans l'ann\u00e9e il n'y a pas besoin de tout recalibrer avec l'application. Apr\u00e8s une discussion avec M.Bonvin j'ai d\u00e9cid\u00e9 de tester 3 valeurs de convertion en noir et blanc et si je ne trouve pas un match exact je prend le nom le plus proche. Pour trouver la string la plus proche je pense que je vais utiliser quelque chose qui s'appelle la technique de Levenshtein. De ce que j'ai compris c'est un algorythme qui permet de donner une metric de diff\u00e9rence entre deux strings. Bon et \u00e9videmment il ne faut pas se tromper dans la liste des pilotes GENRE NE PAS OUBLIER QUE GEORGE RUSSELL COMPORTE DEUX WFNEWIEWV DE \"L\" A LA FIN DE SON NOM CE QUI POURRAIT ENGRANGER 2H DE DEBUGGING POUR RIEN ASK ME HOW I KNOW joker laugh J'ai vraiment un soucis avec Tsunoda, Il a trop tendeance \u00e0 le confondre avec \"TSUNDDA\" et pour des raisons obscures, quand j'applique l'algorythme de Levenshtein le plus proche n'est pas \"Tsunoda\" mais \"Sainz\" iniuvbwdiucbiubisc POURQUOI !!??!! Je pense que cela demande moins de changements de lettres enfin bon c'est quand m\u00eame pas id\u00e9al. Il va falloir que je trouve un moyen de le repond\u00e9rer. C'est dommage par ce que cela marche super avec Alonso Verstappen et Albon. J'ai un peu modifi\u00e9 la methode et j'ai fait en sorte d'envoyer tous les noms en majuscules en me disant que cela pourrait r\u00e9duire le nombre de changements. Et ca a march\u00e9 !! Cela va s\u00fbrement demander plus de tests pour \u00eatre bien s\u00fbr que tout fonctionne nikel, cependant pour le moment ca marche parfaitement avec les pilotes de 2022. Pour ce qui est de la reconnaissance de chiffres, j'ai d\u00e9ja fait une partie du boulot le premier jour alors je vais juste reprendre \u00e0 partir de l\u00e0. Je r\u00e9cup\u00e8re une string de ce type \"1:35.123\" le soucis c'est que les : se transforment parfois en . ou inversement mais bon ca devrait pas \u00eatre trop dur \u00e0 g\u00e8rer. Il faut que je transforme cette string en nombre de milisecondes (Du moins je pense que c'est le meilleur moyen pour ensuite pouvoir facilement comparer et stocker l'information). Cela fait que 1:35:123 en milisecondes donne : 1 * 1000 * 60 => 60'000 35 * 1000 => 35'000 123 => 123 Total : 60'000+35'000+123 => 95'123ms Et pour l'affichage : Minutes = ms / 60'000 secondes = (ms - (minutes/60'000))/1000 ms = ms - ((minutes 60'000) + (secondes * 1000)) Et on se retrouve avec 1:35:123 Maintenant apr\u00e8s un peu de temps pour nettoyer la string etc on se retrouve avec un r\u00e9sultat comme le suivant : Position : 0 Gap to leader : 0:0:0 Lap time : 2:15:123 DRS : False Tyre : Undefined laps with the tyre : 0 Driver name : LECLERC Sector 1 : 0:31:323 Sector 2 : 0:42:340 Sector 3 : 0:0:0 Evidemment pareil pour les autres pilotes Et je me rend compte que j'ai encore tout cass\u00e9 car le laptime ne devrait pas \u00eatre 2:15 mais 1:35... Voila apr\u00e8s une heure de debugging et des ajouts pour nettoyer les chaines on se retrouve avec : Position : 0 Gap to leader : 0:0:0 Lap time : 1:35:123 DRS : False Tyre : Undefined laps with the tyre : 0 Driver name : LECLERC Sector 1 : 0:31:323 Sector 2 : 0:42:340 Sector 3 : 0:0:0 Note: le traitement commence \u00e0 devenir long, il serait peut-\u00eatre int\u00e9ressant d'utiliser un seul Tesseract Engine ou de voir ce qui prend autant de temps, on d\u00e9passe la seconde de traitement ce qui est un peu ma limite. Apr\u00e8s on peut toujours tester de rajouter du multicore processing mais c'est pour une autre fois. Demain je m'occupe de r\u00e8gler les soucis que j'ai avec la prescision de ces temps au tour et j'\u00e9sp\u00e8re pouvoir m'occuper aussi de la position des pneus et du DRS. J'aimerais finir tout ca cette semaine. Jeudi 6 Avril Une id\u00e9e m'est pass\u00e9e par la t\u00eate pendant que je dormais, dans la liste des pilotes, quand ils sont \u00e0 plus d'un tour de retard avec le leader (Ce qui arrive normalement dans presque tous les Grand Prix) on a pas des minutes mais une string qui montre \"+1 Lap\" ou \"+2Laps\" ce qui est \u00e9videmment un probl\u00e8me. Je pense qu'une bonne facon d'envoyer l'info serait de retourner -1 -2etc... \u00e0 la place des milisecondes, mais encore faut-il detecter le nombre de tours Je devrais \u00eatre en train de commencer la documentation de commment tout ce que j'ai fait fonctionne. Cependant je ne me vois pas faire ca tant que je n'ai pas au moins r\u00e9cup\u00e8r\u00e9 toutes les infos au moins un peu proprement. Cela veut dire que je commence officiellement \u00e0 prendre du retard. (Sachant que si je finis tout aujourd'hui une journ\u00e9e de doc suffira largement le terme est un peu exag\u00e8r\u00e9 mais bon) Bon pour la reconnaissance des temps c'est sp\u00e9cial... Le filtre semble ne pas changer grand chose ce qui est probl\u00e9matique et ca n'est vraiment pas fiable. Voici quelques expemples avec un treshold de 100: \"11ZSD\" Cette image est comprise comme \"11ZSD\" 42340 Cette image est comprise comme \"42340\" \"ZZAEB\" Et celle ci \"ZZAEB\"... Ce qui... n'est pas bon du tout... J'ai essay\u00e9 de trouver un fichier d'entrainement sp\u00e9cifiquement fait pour les digits. J'ai essay\u00e9 de blacklister les chars non voulus pour tenter d'obliger Tesseract \u00e0 trouver des chiffres. Avec la premi\u00e8re option, les r\u00e9sultats ne sont pas meilleurs voire pires. Avec la seconde option c'est d\u00e9ja pas mal mieux mais on perd compl\u00e8tement la possibilit\u00e9 de detecter les mots comme \"LEADER\" ou \"LAP\" et de toute facon ca n'est pas parfait. Le soucis c'est que si je n'ai pas des donn\u00e9es fiables c'est juste impossible de faire des calculs et de l'affichage correct... Il faut absolument que je trouve une solution. J'ai essay\u00e9 d'utiliser de l'interpolation our augmenter la taille de l'image et ensuite appliquer mon filtre pour retirer le flou mais sans succ\u00e8s... Pourtant la on se retrouve avec des images plut\u00f4t claires : \"Clear1\" Ici le programme trouve \"44301\" \"Clear2\" Et ici \"A5151\"... On a toujours les m\u00eames probl\u00e8mes. Bon je suis all\u00e9 me renseigner sur l'OCR et je me suis dit que j'allais tenter de faire les choses proprement. Je vais faire passer plusieurs \u00e9tapes de postProcessing avant de donner l'image \u00e0 Tesseract. GrayScale Tresholding InvertColors Scaling Dilatation Ce qui donne : \"Original\" \"Grayscale\" \"InvertColors\" ; \"Resize\" ; \"Dilatation\" Ce qui ne change : Roulement de tambour RIEN kjd viuwvuirnvoirenbf Tout ca pour rien... C'EST BON !!! Bon en fait au final le probl\u00e8me \u00e9tait une mauvaise configuration de Tesseract. Je vais devoir un peu nettoyer tout ca. Mais avec les changements de l'image on a des r\u00e9sultats BEAUCOUP plus pr\u00e9cis et potentiellement utilisables. La je vais devoir faire un serieux travail de nettoyage et simplification de mon code par ce que la c'est vraiment un chantier vu le nombre de choses que j'ai du essayer. J'ai du aussi beaucoup modifier la gestion de l'image ce qui donne : \"Clean\" Et la on a des r\u00e9sultats qui sont vraiment bons. J'ai pu ajouter assez facilement la detection de position comme c'est simplement un chiffre. On se retrouve maintenant avec ce genre de retours : Position : 1 Gap to leader : 8:33:51 Lap time : 2:19:123 DRS : False Tyre : Undefined laps with the tyre : 0 Driver name : LECLERC Sector 1 : 0:31:828 Sector 2 : 0:42:940 Sector 3 : 0:0:0 Position : 2 Gap to leader : 0:3:259 Lap time : 23:12:392 DRS : False Tyre : Undefined laps with the tyre : 0 Driver name : VERSTAPPEN Sector 1 : 0:38:119 Sector 2 : 0:0:0 Sector 3 : 0:0:0 Il ne manque plus que l'impl\u00e9mentation de la reconnaissance du DRS et des Pneus Et non... je viens de me rendre compte que mon programme a encore cass\u00e9 car le tap time ne peut pas \u00eatre 23 min lol. J'ai un nouveau magnifique probl\u00e8me... Les points et les deux points sont interpr\u00eat\u00e9s comme des chiffres ... Give me a F * * break... J'ai du mal \u00e0 comprendre pourquoi ils ne sont d\u00e9tect\u00e9s comme tels que maintenant. Bon alors il semblerait les temps au tour aie besoin d'un ordre tr\u00e8s pr\u00e9cis pour fonctionner. Grayscale InvertColors Tresholding Resize * 2 Resize * 2 Et la on a des r\u00e9sultats un peu mieux. Bon demain il faut absolument que je me charge de r\u00e8gler tous ces probl\u00e8mes et que je commence la reconnaissance des pneus et de DRS par ce que je commence \u00e0 \u00eatre en retard. Vendredi 6 Avril 2023 Alors aujourd'hui c'est le dernier jour avant de commencer \u00e0 \u00eatre en retard pour de bon. J'ai r\u00e9ussi \u00e0 r\u00e8gler le probl\u00e8me des temps au tour, des gaps, et des secteurs. Dans le processus j'ai cass\u00e9 la detection de position mais ca devrait pas \u00eatre TROP compliqu\u00e9. Et voila ... Apr\u00e8s seulement plus de dix heures de gal\u00e8re, si on donne cette image au programme et le bon JSON le programme nous retourne : Position : 1 Gap to leader : 0:05:059 Lap time : 1:39:123 DRS : False Tyre : Undefined laps with the tyre : 0 Driver name : LECLERC Sector 1 : 0:31:828 Sector 2 : 0:42:940 Sector 3 : 0:00:000 Position : 2 Gap to leader : 0:03:259 Lap time : 1:39:392 DRS : False Tyre : Undefined laps with the tyre : 0 Driver name : VERSTAPPEN Sector 1 : 0:31:749 Sector 2 : 0:00:000 Sector 3 : 0:00:000 Evidemment le GapToLeader est faux sur leclerc car il est leader mais bon ca je pourrai toujours Hardcoder que le premier a jamais de GapToLeader. Bon j'ai eu beaucoup de soucis que je ne vais pas mentionner ici car ce sont simplement des soucis de logique de programmation pour trouver un DRS ouvert ou non. Au final la technique que j'utilise et qui marche plut\u00f4t bien pour le DRS est que je prend la premi\u00e8re image de DRS et je la d\u00e9clare comme valeur \u00e9talon d'un DRS non actif, en effet dans 99% des cas le leader n'a pas de DRS (cela peut arriver alors il faudra donc juste verifier que les pilotes sont bien \u00e0 moins de deux secondes les uns des autres pour confirmer). Ensuite cette valeur \u00e9talon je la calcule en fonction du nombre de pixels verts dans l'image et si il y a plus de 30% de pixels verts en plus c'est que le DRS est activ\u00e9 ex: Ceci est un DRS ferm\u00e9: \"Closed DRS\" Ceci est un DRS ouvert: \"Open DRS\" Cela marche \u00e0 peu pr\u00e8s tout le temps mais dans le pire des cas on peut toujours verifier que les pilotes sont bien proches pour detecter les potentiels rares cas de faux positifs. J'ai pu augmenter les performances en utilisant un seul engine pour tout le monde et en arr\u00eatant d'utiliser GetPixel et SetPixel qui sont simplement des horreurs \u00e0 utiliser. Mais elles ne sont pas encore bonnes Le soucis avec la detection de pneus cependant, c'est qu'il n'est pas possible d'utiliser la reconnaissance pour savoir ou regarder la couleur car cela ne marcherait pas. Je ne peux pas faire trop de post processing car je dois conserver la couleur Je ne peux pas hardocder un endroit ou aller regarder car cela \u00e9volue tout le long du Grand Prix. Bref c'est la gal\u00e8re. En y r\u00e9flechissant je me suis dit qu'une bonne id\u00e9e pourrait \u00eatre de partir de la droite de la zone du pneu en regardant au milieu de la hauteur. Puis continuer vers la gauche jusqu'\u00e0 ce que je rencontre une couleur diff\u00e9rente. Je pourrai ensuite faire une zone un peu vers la gauche qui devrait contenir les infos du pneu et sur laquelle il sera possible de faire de le reconnaissance de couleur et de la reconnaissance de chiffres. J'ai d\u00e9termin\u00e9 que le background n'\u00e9tait jamais plus clair que #505050 et que donc nimporte quelle couleur qui aurait plus que 50 dans un seul des channels serait consid\u00e8r\u00e9e comme une couleur cassant le background Pour arriver \u00e0 cette conclusion je me suis amus\u00e9 un peu avec les couleurs pour jouer avec les limites de mon algorythme : \"Color fun\" Et je crois que j'ai eu une bonne id\u00e9e, avec une petite methode bien faite on arrive \u00e0 de supers r\u00e9sultats : private Rectangle FindTyreZone () { Bitmap bmp = WindowImage ; int currentPosition = bmp . Width ; int height = bmp . Height / 2 ; Color limitColor = Color . FromArgb ( 0 x50 , 0 x50 , 0 x50 ); Color currentColor = Color . FromArgb ( 0 , 0 , 0 ); Size newWindowSize = new Size ( bmp . Height , bmp . Height ); while ( currentColor . R <= limitColor . R && currentColor . G <= limitColor . G && currentColor . B <= limitColor . B && currentPosition > 0 ) { currentPosition --; currentColor = bmp . GetPixel ( currentPosition , height ); } //Its here to let the new window include a little bit of the right side int offset = Convert . ToInt32 (( float ) newWindowSize . Width / 100f * 20f ); int CorrectedX = currentPosition - ( newWindowSize . Width - offset ); if ( CorrectedX <= 0 ) return new Rectangle ( 0 , 0 , newWindowSize . Width , newWindowSize . Height ); return new Rectangle ( CorrectedX , 0 , newWindowSize . Width , newWindowSize . Height ); } \"Tyres\" Maintenant cela devrait \u00eatre beaucoup plus simple de trouver la couleur g\u00e9n\u00e9rale et le nombre de tours. Donc ce que je fais c'est que je fais une reconnaissance de texte sur l'image r\u00e9duite. Si je trouve une lettre c'est facile Ca me donne le type de pneu et ca me dit que c'est le premier tour avec. Si c'est un nombre alors je fais la moyenne de toutes les couleurs de l'image et je prend la couleur de pneu la plus proche. Voici les diff\u00e9rentes couleurs de pneus : SOFT : #FF0000 MEDIUM : #f5bf00 HARD : #d9d8d4 INTER : #00a42e WET : #2760a6 \"Tyre colors\" Les couleurs de pneus peuvent changer de temps \u00e0 autres, par exemple cette r\u00e8gle de pneus est arriv\u00e9e en 2019 et avant il y avait beaucoup plus de couleurs mais dans une volont\u00e9 de rendre le sport plus facile \u00e0 comprendre \u00e0 la t\u00e9l\u00e9 cela a \u00e9t\u00e9 simplifi\u00e9. Je ne pense pas que cela va changer dans les ann\u00e9es qui viennent alors tout est hardcod\u00e9. Je pense que j'ai des soucis avec la detection de texte et de couleur car ma zone est trop grande. Alors bon j'\u00e9crit ces lignes apres des heures de tests. Il semble que la principale difficult\u00e9 avec ces pneus c'est que les chiffres ou lettres sont minuscules. Il est donc extr\u00eamement difficile de faire une reconnaissance ne serait-ce qu'un peu fiable.. Je fais de mon mieux pour tenter de r\u00e8gler le soucis cependant c'est vraiment complexe. Je commence \u00e0 devenir fou, je tente tout et nimporte quoi pour permettre \u00e0 mon algo de fonctionner et m\u00eame quand je fais du post processing comme pas possible il me retourne toujours nimporte quoi... \"5i t'inqui\u00e8tes\" Ici le programme va trouver '5i'... En fait c'est complexe d'expliquer tout ce que je fais car je change tout en boucle en essayant et en ratant ce qui prend des heures. Pour aujourd'hui j'abandonne je vais simplement rentrer chez moi et y r\u00e9flechir cette nuit mais je ne vois pas comment mieux faire la... C'est terrible par ce que je sens que je ne suis pas bien loin. Vacances Bon je vais un peu laisser de c\u00f4t\u00e9 la detection de chiffres pour me pencher un peu plus sur la d\u00e9tection de couleur. Par ce que techniquement si j'arrive \u00e0 toujours parfaitement la detecter alors je pourrais me passer des chiffres car ils sont redondant si je construit un historique de pneus. J'ai r\u00e9ussi \u00e0 fix mon probl\u00e8me de mauvaise detection de couleur de pneus. Du moins je crois. Seulement j'ai quand m\u00eame un souci, les fen\u00eatres de pneus avec une lettre n'ont pas assez de couleur pour \u00eatre d\u00e9tect\u00e9s. Je vais donc essayer de detecter les cinq lettres possibles et si il ne trouve pas alors je pourrai tenter de detecter les chiffres sans lettres ce qui devrait grandement aider. Le but est encore une fois de r\u00e9duire les possibilit\u00e9s de Tesseract. Je me rend de plus en plus compte que le plus important c'est de r\u00e9duire le scope le plus possible. Moins il y a de mots et lettres et de chiffres possibles meilleure sera la reconnaissance. Bon ca ne veut toujours pas marcher maintenant le 11 est interpr\u00eat\u00e9 comme trois I ou comme un M... J'en ai marre sans rire c'est vraiment p\u00e9nible. Alors j'\u00e9crit ces lignes deux jours plus tard et me rend compte avec horreur que toutes mes modifications sur ce journal de bord n'ont pas \u00e9t\u00e9 auvegard\u00e9e... yess.. Bon pour faire simple, j'ai r\u00e9ussi \u00e0 rendre la detection de couleurs bien plus efficace en r\u00e9duisant la taille de l'image et en ne prenant pas en compte les couleurs que l'on d\u00e9tecte comme \u00e9tant partie int\u00e9grante du background. Par exemple quand on a une image comme celle ci : \"Avec background\" qui contient un background alors que ci dessous, on l'a enlev\u00e9. \"Sans background\" La diff\u00e9rence est t\u00e9nue mais elle permet de grandement am\u00e9liorer la prescision de la reconnaissance de couleurs. Pour ce qui est du nombre de tours je me suis rendu compte que cela n'\u00e9tait d\u00e9ja pas tr\u00e8s utile car avec l'historique on devrait pouvoir le d\u00e9duire. Mais bon pour la forme je me suis dit que cela serait quand m\u00eame une bonne id\u00e9e de v\u00e9rifier avec la reconnaissance. J'\u00e9tais quasi certain que le soucis \u00e9tait le fait que l'on voie le contour du logo de pneu qui faisait que la reconnaissance avait du mal. Et j'avais raison ! En les enlevant (Ce qui n'a pas \u00e9t\u00e9 simple) J'ai pu avoir des chiffres beaucoup plus proches de la r\u00e9alit\u00e9. En m\u00eame temps je ne vois pas bien comment j'aurais pu faire mieux : \"Super 11\" Je suis quand m\u00eame assez fier de voir que j'ai r\u00e9ussi \u00e0 part de l'image que on peut voir un peu plus haut et automatiquement la transormer en celle ci-dessus. J'ai donc pu retirer le round autour du chiffre et cela m'a permit de pouvoir d\u00e9zoomer un peu et c'est avec ca que les lettres ont pu \u00eatre mieux reconnues : \"Super H\" \"Super M\" Maintenant je pense qu'il ne reste \"plus qu'\u00e0\" nettoyer un peu tout ce code qui traine de partout pour tout faire fonctionner et impl\u00e9menter un peu de parrallel processing ainsi que de l'asynchrone pour ne pas bloquer le reste du programme. Par ce qu'il faut savoir que en l'\u00e9t\u00e2t, le programme met 25 secondes \u00e0 d\u00e9marrer et consomme presque 2GB de Ram. Certes cela ne veut pas dire que la reconnaissance \u00e0 elle seule prend 25 secondes car au d\u00e9marrage il y a aussi la lecture du fichier de config et la cr\u00e9ation des window etc.. En r\u00e9alit\u00e9 la partie strictement OCR prend dans les 12s si on en croit la fonction stopWatch de C#. Et quand on change d'image la reconnaissance prend 9s. Dans tout les cas c'est BEAUCOUP trop. J'aurais eu comme objectif de faire une reconnaissance toutes les secondes. Je ne sais pas bien si cela va \u00eatre possible mais en tout cas le but va \u00eatre de s'en rapprocher. Pour \u00eatre plus exact et permettre une comparaison, voici les stats exactes Avec un fichier d'images vide : Loading - 11.8s Splitting d'images - 90ms OCR - 12.5s Avec un fichier d'images plein : Loading - 10.8s Splitting d'images - 80ms Ocr - 11.6s En passant d'une image \u00e0 l'autre : Loading - NaN Splitting d'images - 50ms Ocr - 8.8s Donc on peut voir que les deux endroits ou le programme prend le plus de temps c'est au premier d\u00e9marrage quand il faut lire le fichier et setup les windows etc... Et l'OCR qui prend un temps fou. Ce qui est pratique c'est que les presque 2gb de ram sont utilis\u00e9s que au lancement et ensuite l'application n'en utilise que quelques centaines de mb. Le processeur lui tourne entre 10 et 20% ce qui ne va pas durer :) Je vais m'occuper dabord du loading. J'ai essay\u00e9 d'utiliser un Parrallel.For au moment de la cr\u00e9ation des windows, le probl\u00e8me c'est que visiblement les objets windows sont beaucoup trops complexes et utilisent trop de ressources partag\u00e9es pour \u00eatre vraiment thread Safe. J'\u00e9sp\u00e8re que je n'aurais pas trop de soucis avec ca qu'en j'en viendrai \u00e0 l'optimisation de l'OCR... Ce qui me rend fou c'est que cette boucle toute nulle prend plus de dix secondes \u00e0 s'executer et je ne comprend pas bien pourquoi. for ( int i = 0 ; i < NUMBER_OF_DRIVERS ; i ++) { Point tmpPos = new Point ( 0 , FirstZonePosition . Y + i * FirstZoneSize . Height - Convert . ToInt32 ( i * offset ) /*- (i* (FirstZoneSize.Height / 32))*/ ); Zone newDriverZone = new Zone ( MainZoneImage , new Rectangle ( tmpPos , FirstZoneSize )); Bitmap zoneImg = newDriverZone . ZoneImage ; newDriverZone . AddWindow ( new DriverPositionWindow ( zoneImg , new Rectangle ( driverPositionPosition , driverPositionArea ))); newDriverZone . AddWindow ( new DriverGapToLeaderWindow ( zoneImg , new Rectangle ( driverGapToLeaderPosition , driverGapToLeaderArea ))); newDriverZone . AddWindow ( new DriverLapTimeWindow ( zoneImg , new Rectangle ( driverLapTimePosition , driverLapTimeArea ))); newDriverZone . AddWindow ( new DriverDrsWindow ( zoneImg , new Rectangle ( driverDrsPosition , driverDrsArea ))); newDriverZone . AddWindow ( new DriverTyresWindow ( zoneImg , new Rectangle ( driverTyresPosition , driverTyresArea ))); newDriverZone . AddWindow ( new DriverNameWindow ( zoneImg , new Rectangle ( driverNamePosition , driverNameArea ))); newDriverZone . AddWindow ( new DriverSector1Window ( zoneImg , new Rectangle ( driverSector1Position , driverSector1Area ))); newDriverZone . AddWindow ( new DriverSector2Window ( zoneImg , new Rectangle ( driverSector2Position , driverSector2Area ))); newDriverZone . AddWindow ( new DriverSector3Window ( zoneImg , new Rectangle ( driverSector3Position , driverSector3Area ))); MainZone . AddZone ( newDriverZone ); } Alors que Zone.AddWindow c'est simplement : public virtual void AddWindow ( Window window ) { Windows . Add ( window ); } Et windows est simplement une liste. Donc ca ne peut pas \u00eatre ca qui prend du temps. Et les windows que je cr\u00e9\u00e9 ont ca comme code : public DriverPositionWindow ( Bitmap image , Rectangle bounds ) : base ( image , bounds ) { Name = \"Position\" ; } Sachant que le constructeur de base d'une Window c'est : public Window ( Bitmap image , Rectangle bounds ) { Image = image ; Bounds = bounds ; Engine = new TesseractEngine ( TESS_DATA_FOLDER . FullName , \"eng\" , EngineMode . Default ); Engine . DefaultPageSegMode = PageSegMode . SingleLine ; } Sachant que TesseractEngine est en statique et que donc il ne devrait... OHLLALALALALALALALALA je suis un imb\u00e9cile... J'ai juste \u00e0 changer ce constructeur avec ca: if ( Engine == null ) { Engine = new TesseractEngine ( TESS_DATA_FOLDER . FullName , \"eng\" , EngineMode . Default ); Engine . DefaultPageSegMode = PageSegMode . SingleLine ; } ET le loading ne prend plus que 2-300 ms... Bon c'est une tr\u00e8s belle am\u00e9lioration pour pas tr\u00e8s ch\u00e8r mais bon c'est un peu b\u00eate... Bon je pense que 2-300ms c'est une dur\u00e9e correcte surtout que ca n'est appel\u00e9 qu'une fois pour le lancement. On peut passer \u00e0 la suite maintenant. Alors il y a un grand soucis avec la parallellisation de l'OCR... Tesseract n'est pas par d\u00e9faut une classe \"Thread safe\" ce qui veut dire que je ne peut utiliser de parallell.Foreach sur mes windows pour acc\u00e8l\u00e8rer le traitement drastiquement. Je pourrais par exemple avoir une instance de Tesseract par window sauf que cela fait 20 pilotes * 9 windows chacuns ce qui donne 180 instances ce qui n'est tout simplement pas raisonnable. Je vais donc essayer de voir avec l'utilisation de methodes asynchrones qui me permettraient de faire un genre de flux tendu de reconnaissance. J'avoue que la je navigue un peu \u00e0 vue, je me base sur diff\u00e9rentes infos que je trouve sur des sites un peu perdus et sur chatGPT, j'esp\u00e8re que j'arriverai \u00e0 trouver une solution car 10 secondes de reconnaissance c'est vraiment beaucoup trop. Alors le soucis avec un Engine unique entre toutes les windows c'est qu'il n'est pas possible de process plusieurs images \u00e0 la fois. Je vais donc retirer l'engine unique pour voir si en cr\u00e9er un par window me permet de passer en multithreading. La grande question sera : Est-ce que les ressources suppl\u00e9mentaires que vont prendre la cr\u00e9ation de tous ces engines va compenser enti\u00e8rement le temps gagn\u00e9 avec la paralellisation. Pour stocker les donn\u00e9es dans un premier temps je vais cr\u00e9er un objet DriverData. Ce qu'il y a de pratique avec ca, c'est que je pourrais ajouter du code de v\u00e9rification de certaines donn\u00e9es directement dedans avant de les donner \u00e0 la suite du programme. Et on peut m\u00eame imaginer une impl\u00e9mentation d'une liste de DriverData pour avoir l'historique. Ce qui serait cool ca serait de grouper toutes ces data avec un num\u00e9ro de tour. Placer ensuite la liste de Data dans une DB serait ainsi super simple. Mais il va falloir savoir quoi mettre, quelles infos sont redondantes et prendre en compte le fait que un tour affich\u00e9 sur la page de la F1TV n'est accompli que par certains des premiers pilotes. D'autres pilotes peuvent \u00eatre dans des tours pr\u00e9c\u00e9dents si ils ont du retard. Il faudra r\u00e9fl\u00e9chir \u00e0 cela quand je viendrai au mod\u00e8le. Bon pour y arriver j'ai du faire de gros changements et le r\u00e9sultat n'est peut-\u00eatre pas aussi cool que ce que j'aurais voulut... Voici un petit point sur les performances maintenant J'ai \u00e9galement d\u00e9sactiv\u00e9 le dump d'images. Pour le moment j'ai tout mis en commentaire mais cela pourrait \u00eatre int\u00e9ressant de faire en sorte de pouvoir l'activer en changeant une ou deux variables Au d\u00e9marrage : Loading - 113ms Splitting d'images - 14ms Ocr - 7s En passant d'une image \u00e0 l'autre : Loading - 113ms Splitting d'images - 13ms Ocr - 5s Alors clairement les stats montrent qu'il y a eu un changement mesurable mais bon je pensais pouvoir en gagner un peu plus... Je soupconne la cr\u00e9ation d'engines d'\u00eatre \u00e0 l'origine de ces performances presque d\u00e9cevantes. Autre soucis, il semble que plus je change d'image plus la detection est lente et plus je consomme de RAM. Il va falloir que je travaille encore un peu. J'ai tent\u00e9 de mettre un stopwatch sur une des cr\u00e9ations d'engine Tesseract et le r\u00e9sultat me parait fou... Plus d'une seconde c'est dingue. J'ai test\u00e9 dans d'autres endroits du code et effectivement il semble que la cr\u00e9ation d'un engine prenne entre une et deux secondes ce qui est une ETERNITEE what ! Donc il faut optimiser tout ca. Une id\u00e9e serait de d\u00e9composer le threading mais cela me demanderait un gros refactor et je n'ai pas envie d'en refaire un la... Sinon, une fois qu'ils sont cr\u00e9\u00e9s ils ne prennent pas de temps du tout. Cr\u00e9er une fois tous les engines et ensuite les utiliser pourrait \u00eatre une bonne id\u00e9e. Cela prendrait longtemps au load mais ensuite les reconnaissances devraient \u00eatre super rapides. Ok alors ca c'est d\u00e9ja plus ce \u00e0 quoi je m'attendais ! On est de nouveau \u00e0 plus de 10s de loading time mais on est descendu \u00e0 deux secondes par OCR. (Bon autre soucis, l'utilisation de la RAM est ridicule plus de 2gb mais ce qui m'inqui\u00e8te c'est que j'ai l'impression qu'elle augmente plus on change d'image) J'ai r\u00e8gl\u00e9 (en partie) le soucis en obligeant le GC (Garbage Collector) \u00e0 collecter apr\u00e8s chaque detection. m\u00eame apr\u00e8s 50 detections l'utilisation de la ram se stabilize autour des 2GB. Bon en paralellisant la cr\u00e9ation des Engines le soucis c'est que cela demande d'allouer beaucoup trop de m\u00e9moire d'un coup alors le programme se fige pendant genre cinq secondes avant de tout cr\u00e9er. Du coup m\u00eame si la cr\u00e9ation est plus rapide, on se retrouve avec un temps total plus long... Je pense que l'on va devoir se contenter de ces dix secondes. Bon la j'allais tenter de faire la documentation mais je viens de me rendre compte que la detection de temps au tour est pas vraiment encore id\u00e9ale... J'ai r\u00e9ussi \u00e0 changer un petit peu le programme de reconnaissance pour rendre la reconnaissance un peu meilleure mais cela a drastiquement augment\u00e9 le temps requis pour d\u00e9coder... On arrive \u00e0 3.5 secondes. Je vais tenter de rajouter un peu de parralell processing sur les boucles de traitement voir si cela peut aider. Alors effectivement cela aide pas mal, on arrive maintenant \u00e0 faire une detection presque tout le temps en dessous de la seconde. Et j'ai aussi du changer un peu le fonctionnement de la detection des Temps au tour. Et voila je pense que je vais m'arr\u00eater la pour la partie d\u00e9codage. Je ne pense pas que je peux facilement faire mieux que ca et il faut que j'avance dans d'autres parties du projet. Je vais pouvoir commencer \u00e0 documenter un peu toute la partie OCR. Il faut que je prenne le temps de le faire bien car c'est la partie la plus int\u00e9ressante du projet et ou je pense que j'aurai le plus essay\u00e9 de choses qui vallent le coup d\u00eatres racont\u00e9es. J'ai aussi pass\u00e9 pas mal de temps sur le poster du projet. J'avais fait des croquis au crayon de ce \u00e0 quoi je pensais, cependant apr\u00e8s de longues discussions avec M.Garcia ils n'\u00e9taient pas forc\u00e9ment tr\u00e8s bons car ils ne repr\u00e9sentent pas assez bien le fonctionnement du projet et sont un peu trop marketings. Du coup j'ai fait une premi\u00e8re version au propre : \"Poster V1\" Mais je n'\u00e9tais pas forc\u00e9ment content du r\u00e9sultat et il manquait des choses je trouve comme par exemple l'utilisation de Selenium. J'ai donc repass\u00e9 des heures \u00e0 faire une seconde version : \"Poster V2\" La police d'\u00e9criture n'est pas encore la bonne mais cela va venir. Mais je pr\u00e9f\u00e8re d\u00e9ja beaucoup cette version \u00e0 la premi\u00e8re. Je ne sais pas encore si la version finale sera une version plus travaill\u00e9e de ce poster ou compl\u00eatement autre chose mais pour l'instant je suis \u00e0 peu pr\u00e8s content de cette version. Je le trouve un tout petit peu trop brouillon ou avec trop d'infos mais il m'a \u00e9t\u00e9 de nombreuses fois reproch\u00e9 de ne pas assez montrer le fonctionnememt interne et je ne peux pas faire plus simple. L'ajout des nombres pour compartimenter le projet ajoute de la structure mais je me demande si cela suffit. Maintenant que je suis \u00e0 peu pr\u00e8s content de mon code pour l'OCR je vais commencer sa documentation. (Uniquement son fonctionnement interne pas comment s'en servir car cela va changer) Bon j'ai cr\u00e9\u00e9 u nouveau projet selenium mais m\u00eame avec les bonnes libraries je n'arrivais pas \u00e0 faire fonctionner firefox j'avais toujours une erreur \"OpenQA.Selenium.WebDriverException: 'Cannot start the driver service on http://localhost:51481/'\" et j'ai pu r\u00e8gler le probl\u00e8me en t\u00e9l\u00e9chargeant directement le gecko driver depuis le git https://github.com/mozilla/geckodriver/releases et utiliser le fichier directement dans le service : var service = FirefoxDriverService . CreateDefaultService ( AppDomain . CurrentDomain . BaseDirectory + @\"geckodriver-v0.27.0-win32\\geckodriver.exe\" ); FirefoxOptions options = new FirefoxOptions (); var driver = new FirefoxDriver ( service , options ); Le seul probl\u00e8me c'est que du coup il faut tout le temps d\u00e9placer le fichier dans le dossier bin si je clone le projet. Il faudra faire un installeur dans la version finale qui s'occupe de tout je pense. Je me suis dit que j'allais garder la doc pour le retour des vacances quand j'aurai un bureau un clavier et un setup complet un peu propres. Bon il va falloir que je parle de la r\u00e9cup\u00e9ration de cookie. J'ai d\u00e9ja pu travailler lors d'un poc sur la meilleure facon de prendres des screenshots de la F1TV : Avoir une page chrome ouverte avec le feed en plein \u00e9cran et un programme qui prend des captures d'\u00e9crans. Avoir une cam\u00e9ra qui prend en photo l'\u00e9cran au cas ou chrome et Firefox emp\u00eachent la prise de captures d'\u00e9crans. R\u00e9cup\u00e8rer directement le feed en faisant du reverse engeneering de la plateforme. Simuler un chrome en background qui prenne des screenshot sans qu'on aie \u00e0 le voir. Dans toutes ces options, je dirais que la pire \u00e9tait celle de la cam\u00e9ra qui filme l'\u00e9cran, mais \u00e0 l'\u00e9poque c'\u00e9tait encore envisageable comme solution de dernier recours. Le soucis de cette solution c'est l'horreur que serait la partie OCR avec une image de tr\u00e8s mauvaise qualit\u00e9. Une autre option qui m'aurait vraiment emb\u00eat\u00e9 aurait \u00e9t\u00e9 de devoir garder une page de Chrome ou Firefox ouverte quelque part sur un \u00e9cran pour que le programme puisse prendres des captures d'\u00e9crans. C'est de loin l'option la plus simple et la plus logique mais elle poss\u00e8de pour moi de tr\u00e8s gros points noirs : On ne peut pas certifier l'int\u00e9grit\u00e9 des donn\u00e9es car l'utilisateur a le contr\u00f4le total sur le feed. Il peut mettre pause, avancer, reculer, tout casser sans faire expr\u00e8s en ouvrant autre chose sur son ordi qui se mette pile devant. Bref c'est un peu bancale. Et surtout on bloque une partie non significative de l'\u00e9cran de l'utilisateur avec des infos redondantes. Et je peux vous dire que quand je commente la F1 j'ai besoin de beaucoup d'informations et que chaque centim\u00e8tre d'\u00e9cran est crucia\u00e9 ! Alors avoir un \u00e9cran complet bloqu\u00e9 est juste un point bloquant qui m'emp\u00eacherait d'utiliser l'app aussi bonne soit-elle dans ses pr\u00e9dictions. Mais bon si aucune autre methode ne fonctionne ce qui est bien c'est que celle la est plut\u00f4t simple \u00e0 mettre en place. Ensuite reverse engeneer le feed serait l'option la plus classe, cependant c'est la plus complexe et la plus bancale au niveau l\u00e9gal haha. L'id\u00e9e serait de r\u00e9cup\u00e8rer le lien vers le broadcast g\u00e9n\u00e9ral et de comprendre comment il fonctionne pour le d\u00e9coder nous m\u00eame pendant un Grand Prix. Seuls soucis : Il n'est pas possible de faire des tests en dehors des periodes de Grand Prix (Et je rappelle que c'est des p\u00e9riodes ou je travaille en plus) Difficile de faire un syst\u00e8me qui marche pareil pour les rediffusions et les lives. (En effet les liens des rediff sont beaucoup plus simple \u00e0 r\u00e9cup\u00e8rer mais ne fonctionnent pas du tout pareil et pour tester l'app il est essentiel de pouvoir s'entrainer sur des anciens Grand Prix) Dernier GROS soucis, je ne sais tout simplement pas faire ca lol. Je ne sais pas comment faire. Peut-\u00eatre que avec des profs qui m'aident et chat gpt ainsi qu'internet je pourrais potentiellement n\u00e9gocier un truc mais c'est hautement improbable et cela serait une perte de temps folle si je n'y arrive pas. Derni\u00e8re option que je trouve la plus s\u00e9duisante. Simuler une instance de Chrome ou de Firefox (Le soucis avec chrome c'est qu'il impl\u00e9mente l'utilisation de DRM dans les vid\u00e9os qui fait qu'il est tr\u00e8s difficile de passer outre la s\u00e9curit\u00e9 avec un bot) pour ensuite prendre des captures d'\u00e9crans automatiquement. Cette solutions offre pleins d'avantages : Pas de place prise sur l'\u00e9cran L'int\u00e9grit\u00e9 des donn\u00e9es est assur\u00e9e car c'est le programme qui d\u00e9cide d'ou partir et de si il met pause ou non C'est une option complexe mais beaucoup moins que le reverse engeneering Elle permet de ne demander presque aucun input de la part de l'utilisateur. Mais elle pose quelques probl\u00e9matiques : Comment se connecter automatiquement sans \u00eatre detect\u00e9 par un Bot et sans demander \u00e0 l'utilisateur ses identifiants (Pour des raisons \u00e9videntes qui sont : QUI VA METTRE SES IDENTIFIANTS SUR UNE VIEILLE APP COMME LA MIENNE??) Comment faire en sorte que le programme prenne les meilleures captures dans la meilleure qualit\u00e9 et en plein \u00e9cran. Mais j'ai d\u00e9cid\u00e9 de partir sur cette option. Pour ce faire j'utilise Selenium. J'ai pu tester Puppetteer Sharp et m\u00eame si dans un premier temps j'ai pu avancer asez vite, malheureusement il y a des bugs qui rendent son utilisation impossible dans notre contexte. J'ai donc d\u00e9cid\u00e9 de tout faire en utilisant un portage de Selenium dans mon programme. Voici un exemple de code qui va ouvrir FireFox et qui va lancer un RickRoll var service = FirefoxDriverService . CreateDefaultService ( AppDomain . CurrentDomain . BaseDirectory + @\"geckodriver-v0.27.0-win32\\geckodriver.exe\" ); service . Host = \"127.0.0.1\" ; service . Port = 5555 ; FirefoxOptions options = new FirefoxOptions (); options . AddArgument ( \"--disable-headless\" ); var driver = new FirefoxDriver ( service , options ); driver . Navigate (). GoToUrl ( \"https://www.youtube.com/watch?v=dQw4w9WgXcQ&autoplay=1&mute=1\" ); Dans cet exemple on d\u00e9sactive le \"Headless\" pour qu'on puisse voir ce que fait l'app car sinon tout est invisible. Alors dans les faits la vid\u00e9o youtube ne se lance pas du tout car il y a des pubs et des prompts de cookies que l'on doit accepter etc... ce qui montre les diff\u00e9rents challenges que l'on va devoir surmonter pour vraiment faire ce que l'on veut. Mais un petit d\u00e9tail extr\u00eamement important, la F1TV est un programme payant un peu comme netflix. Ce qui veut dire que pour acc\u00e8der au contenu il faut \u00eatre connect\u00e9. Sauf que une instance de firefox cr\u00e9\u00e9 par Selenium est comme une page de naviguation priv\u00e9e, ce qui veut dire que si on va sur la page de la F1TV on est pas connect\u00e9s. Je pourrais tout \u00e0 fait demander \u00e0 l'utilisateur de me donner ses identifiants pour que j'aille ensuite automatiquement me connecter sauf que cela pose deux soucis: Personne ne voudra mettre ses identifiants sur mon programme La page de login de la F1TV a \u00e9t\u00e9 prot\u00e8g\u00e9e avec la meilleure technologie de detection de bots que je connaisse. Presque aucun site n'arrive \u00e0 me detecter sauf eux ! Donc c'est tout simplement impossible d'utiliser cette technique. Ensuite je me suis rappel\u00e9 que ce que la page stocke pour me permettre de rester connect\u00e9 ce sont des cookies. Et si je mets le bon cookies dans Selenium alors je serai connect\u00e9. Dans un premier temps je voulais faire un syst\u00e8me ou l'utilisateur irait prendre dans son chrome son cookie et le copie colle dans mon programme mais c'est immonde. C'est alors que vient la partie r\u00e9cup\u00e8ration de cookies ! Tous les cookies de chrome sont stock\u00e9s dans une base de donn\u00e9es SQLITE. On pourrait se dire Banco il suffit d'aller dedans et de retrouver tous les cookies et se connecter. Sauf que, pas b\u00eates, les \u00e9quipes de chrome ont d\u00e9cid\u00e9 que c'\u00e9tait une bonne id\u00e9e d'encoder les cookies pour que tout le monde ne puisse pas venir y mettre son nez... En effet les cookies peuvent contenir des informations importantes. Cela fait que pour utiliser ces cookies il faut pouvoir les d\u00e9coder. Mon hypoth\u00e8se a \u00e9t\u00e9 que si ces cookies peuvent \u00eatre lus par Chrome m\u00eame hors connexion, c'est que la cl\u00e9 de d\u00e9codage existe sur l'appareil et qu'il suffit de la trouver. ET C'EST LE CAS! Apr\u00e8s pas mal de recherches j'ai pu voir que la cl\u00e9 de d\u00e9codage existe bel et bien et qu'il suffit de la d\u00e9coder en utilisant la librairie DPAPI pour la lire. Avec cette cl\u00e9 on peut ensuite d\u00e9coder les cookies et leurs valeurs ce qui veut dire qu'il est th\u00e9oriquement possible d'automatiser le processus sans que l'utilisateur n'aie rien \u00e0 faire. J'ai d\u00e9cid\u00e9 de faire la partie r\u00e9cup\u00e8ration en python pour deux raison : Je n'arrivais pas \u00e0 trouver une bonne impl\u00e9mentation de DPAPI en C# qui me permettait de d\u00e9coder la cl\u00e9. Il existe beaucoup plus de documentation en Python pour ce qui est de la cryptographie et donc si Chrome change de fonctionnement il sera beaucoup plus simple de changer cette partie en particulier sans avoir \u00e0 recompiler le code C#. J'ai donc avec l'aide d'internet et de ChatGPT cr\u00e9\u00e9 ce script : def get_master_key (): with open ( os . getenv ( \"localappdata\" ) + \" \\\\ Google \\\\ Chrome \\\\ User Data \\\\ Local State\" , \"r\" ) as f : local_state = f . read () local_state = json . loads ( local_state ) master_key = base64 . b64decode ( local_state [ \"os_crypt\" ][ \"encrypted_key\" ]) master_key = master_key [ 5 :] # removing DPAPI master_key = win32crypt . CryptUnprotectData ( master_key , None , None , None , 0 )[ 1 ] print ( \"MASTER KEY :\" ) print ( master_key ) print ( len ( master_key )) return master_key def decrypt_payload ( cipher , payload ): return cipher . decrypt ( payload ) def generate_cipher ( aes_key , iv ): return AES . new ( aes_key , AES . MODE_GCM , iv ) def decrypt_password ( buff , master_key ): try : iv = buff [ 3 : 15 ] payload = buff [ 15 :] cipher = generate_cipher ( master_key , iv ) decrypted_pass = decrypt_payload ( cipher , payload ) decrypted_pass = decrypted_pass [: - 16 ] . decode () # remove suffix bytes return decrypted_pass except Exception : # print(\"Probably saved password from Chrome version older than v80\\n\") # print(str(e)) return \"Chrome < 80\" master_key = get_master_key () cookies_path = Path ( os . getenv ( \"localappdata\" ) + \" \\\\ Google \\\\ Chrome \\\\ User Data \\\\ Default \\\\ Network \\\\ Cookies\" ) if not cookies_path . exists (): raise ValueError ( \"Cookies file not found\" ) with sqlite3 . connect ( cookies_path ) as connection : connection . row_factory = sqlite3 . Row cursor = connection . cursor () cursor . execute ( \"SELECT * FROM cookies\" ) with open ( 'cookies.csv' , 'a' , newline = '' ) as csvfile : fieldnames = [ 'host_key' , 'name' , 'value' , 'path' , 'expires_utc' , 'is_secure' , 'is_httponly' ] writer = csv . DictWriter ( csvfile , fieldnames = fieldnames ) if csvfile . tell () == 0 : writer . writeheader () for row in cursor . fetchall (): decrypted_value = decrypt_password ( row [ \"encrypted_value\" ], master_key ) writer . writerow ({ 'host_key' : row [ \"host_key\" ], 'name' : row [ \"name\" ], 'value' : decrypted_value , 'path' : row [ \"path\" ], 'expires_utc' : row [ \"expires_utc\" ], 'is_secure' : row [ \"is_secure\" ], 'is_httponly' : row [ \"is_httponly\" ] }) print ( \"Finished CSV\" ) Ce programme va faire tout ce que j'ai expliqu\u00e9 et va ensuite stocker les r\u00e9sultats dans un CSV pour qu'il soit facile d'y acc\u00e8der depuis le C#. Alors oui cela pose certaines questions de s\u00e9curit\u00e9. Car en effet je prend tous les cookies, les d\u00e9code et les stocke. Ce qui veut dire que je pourrais tout \u00e0 fait envoyer ces donn\u00e9es quelque part, par exemple un compte Netflix, et me rincer. Si je devais rendre le projet ouvert au public je pense qu'il faudra que cela soit mentionn\u00e9 clairement et que le projet soit open source pour que les utilisateurs puissent verifier que je ne fais pas ca. Maintenant de l'autre c\u00f4t\u00e9 j'ai juste \u00e0 lire le CSV et le tour est jou\u00e9 ! (Trouver cette solution m'a pris une semaine de vacances \u00e0 l'\u00e9poque) Bon j'ai r\u00e9ussi \u00e0 faire le programme se connecter et naviguer etc.. Par contre quelque chose que j'ai voulu ajouter et qui m'a pris pas mal de temps c'est de faire en sorte de pouvoir selectionner la qualit\u00e9. Pour changer la qualit\u00e9 du feed il faut cliquer sur settings et ensuite prendre le menu deroulant et selectioner 1080p. Le soucis c'est le que la value du select est jamais la m\u00eame. Elle commence toujours pas \"1080_\" mais ensuite ca peut \u00eatre \"1080_45930285\" ou \"1080_56801\" la suite est apparemment random. J'ai donc du utiliser ce code pour le selectioner quand m\u00eame : IWebElement settingsButton = driver . FindElement ( By . ClassName ( \"bmpui-ui-settingstogglebutton\" )); settingsButton . Click (); IWebElement selectElement = driver . FindElement ( By . ClassName ( \"bmpui-ui-videoqualityselectbox\" )); SelectElement select = new SelectElement ( selectElement ); IWebElement selectOption = selectElement . FindElement ( By . CssSelector ( \"option[value^='1080_']\" )); selectOption . Click (); Sauf que pour que cela marche je dois avant cliquer sur le bouton des settings le probl\u00e8me c'est qu'il est invisible alors on doit le faire apparaitre. J'ai tent\u00e9 de le faire aparaitre en bougeant la souris, en cliquant \u00e0 un endroit pr\u00e9cis, impossible de le faire marcher correctement. Puis j'ai eu l'id\u00e9e de mettre pause en envoyant un appui sur la touche Espace et ca a permit de d\u00e9couvrir le bouton et permettre qu'on clique dessus. Ca peut paraitre tout b\u00eate mais rien que ca, ca m'a pris un temps consid\u00e9rable. Bon pour ce qui est du timecode de la vid\u00e9o. Je pense qu'il serait trop complexe de faire en sorte que selenium change le slider de progression de la vid\u00e9o. Alors j'ai fait quelques tests et apparemment, si on quitte la F1TV sur un timecode de la vid\u00e9o que on donne au programme, comme il r\u00e9cup\u00e8re tous les cookies de la F1TV il commencera de la. Donc si on veut utiliser le programme avec des Grand Prix ayant d\u00e9ja eu lieu, on peut le faire, seulement il faudra juste au pr\u00e9alable avoir choisit le bon timecode dans le page de la F1TV avant de le lancer. Ce qui est int\u00e9ressant c'est que la page de la F1TV ressemble \u00e0 ca au d\u00e9part : \"Empty F1TV\" Je pense qu'une bonne id\u00e9e serait de dire au programme que c'est la grille de d\u00e9part et ensuite d\u00e8s qu'il d\u00e9tecte un secteur il sait que la course a commenc\u00e9. Lundi 24 Avril 2023 Aujourd'hui c'est jour de documentation. J'ai pas mal travaill\u00e9 pendant les vacances mais je n'ai pas encore pu faire de vraie documentation correcte du fonctionnement. Du coup je vais m'en charger aujourd'hui et peut-\u00eatre un peu demain. Ok normalement je ne devrais faire que de la documentation mais je ne peux pas passer \u00e0 cot\u00e9 de ca... Le probl\u00e8me que j'ai avec les pneus ou parfois il d\u00e9tecte un H au lieu d'un '11' et ce genre de choses c'est \u00e0 cause de ma methode \"RemoveBG\" Qui va retirer tous les pixels plus sombres que le background. Sauf que cela va aussi retirer des pixels dans le chiffre lui m\u00eame et qui va donc defigurer les 11 : \"diformed 11\" \"diformed 11\" J'ai r\u00e9ussi \u00e0 les changer en : \"less diformed\" \"less diformed\" Mais au final cela n'a pas augment\u00e9 la pr\u00e9cision de la reconnaissance. Je pense que je vais donc devoir encore changer. Je pense que une bonne facon de trouver serait dabord de trouver la couleur du pneu. Et si il n'y a pas assez de couleur alors c'est que le pneu contient une lettre. Le but est d'arr\u00eater de chercher des lettres ou des chiffres. Comme ca les 11 arr\u00eateront d'\u00eatre pris pour des 'H' En fait on peut faire encore plus simple que ca. On peut simplement regarder la couleur dominante et determiner le pneu. En effet m\u00eame si il y a une lettre sur fond noir pour d\u00e9crire le pneu, mon methode de r\u00e9cup\u00e8ration de la couleur dominante ommet les pixels trop noirs alors il est quand m\u00eame possible de determiner le type de pneus. Et tout simplement si il n'arrive pas \u00e0 lire le chiffre c'est que c'est une lettre et que donc on est \u00e0 0 tours. Cela marche plut\u00f4t bien et cela simplifie pas mal le processing. Voila, la je vais me remettre \u00e0 la documentation sinon je vais encore prendre du retard. Mardi 25 Avril 2023 Encore une fois j'ai pris du temps de doc pour changer des choses sur la partie OCR. Mais en m\u00eame temps en documentant je vois des choses que j'ai soit mal fait soit que je pourrais faire mieux en changeant tr\u00e8s peu de choses. J'\u00e9sp\u00e8re que les changement que j'ai fait vont aider au moins \u00e0 la coh\u00e9rence du code et un peu pour les performances. Il semble que dans les conditions que j'ai test\u00e9 le nombre de tour soit plut\u00f4t fiable mais je pense que je devrai faire un peu de travail en aval dans la r\u00e9cup\u00e9ration de ces donn\u00e9es car je sens que cela va poser probl\u00e8me quelques fois. Je pense que en utilisant bien l'historique on peut potentiellement se passer de l'utilisation de ce chiffre pas toujours compl\u00eatement fiable. Mais sinon aujourd'hui c'est encore une fois un gros jour de doc. J'essaie d'expliquer les diff\u00e9rents proc\u00e9d\u00e9s avant de les oublier. J'essaie aussi de donner un maximum d'exemples sous formes de photos interm\u00e9diaires mais ca me prend pas mal de temps car il faut que j'ajoute un peu partout dans le code des lignes pour sortir des images interm\u00e9diaires. En plus de la documentation je me suis aussi beaucoup occup\u00e9 de nettoyer mon code et je suis assez content par ce que m\u00eame en ayant du rajouter des couches de complexit\u00e9 pour mieux reconnaitres les temps au tour j'arrive \u00e0 un temps de processing parfois en dessous des 2 secondes ce que je trouve honorable. Quand j'aurai finit de nettoyer tous mes fichiers je ferai une release sur gitea et ce sera la version que j'utiliserai quand je voudrai faire un merge avec les autres parties du projet. J'ai beaucoup beaucoup boss\u00e9 aujourd'hui et je sui bien mort. Faire autant de documentation et de nettoyage de code c'est pas forc\u00e9ment bon pour le cerveau je crois. J'ai besoin d'une sieste. Demain je pense que je vais commencer \u00e0 avancer sur la partie r\u00e9cup\u00e8ration des images. Je sais que la je fais un peu passer les tests \u00e0 la trappe mais d\u00e9ja j'en ai fait tout le long du d\u00e9veloppement de OCR_DECODE et il faut vraiment que j'avance, quitte \u00e0 revenir dessus quand j'aurai merge les deux projets ensemble. 26 Avril 2023 Aujourd'hui je vais devoir m'occuper de la partie r\u00e9cup\u00e9ration des images. J'ai d\u00e9ja eu l'occasion d'avancer sur ce projet pendant mopn poc et mes vacances. Donc la le but ca va \u00eatre de voir ce qui manque comme v\u00e9ritables features et ensuite je vais pouvoir m'occuper de la vue et de son int\u00e9gration avec le d\u00e9codage. Ok donc maintenant que j'au un programme qui arrive \u00e0 prendre des images depuis la F1TV correctement et en bonne r\u00e9solution. Je pense qu'il est temps de passer \u00e0 l'impl\u00e9mentation de la Forme que ca va prendre. C'est important de se poser au moins cinq minutes la question de comment je pr\u00e9vois de faire car m\u00eame si ca n'est pas la version finale, cette derni\u00e8re prendra tr\u00e8s fort inspiration du desing que je vais faire. Dans cette form j'aurais besoin de : Pouvoir selectionner un Grand Prix en ins\u00e8rant l'URL du feed. Pouvoir lancer la calibration si besoin Indiquer le titre et la date du Grand Prix Indiquer si le Grand Prix vient de commencer ou si il y a d\u00e9ja un certain nombre de tours lanc\u00e9s. Et c'est \u00e0 peu pr\u00e8s tout en fait... J'ai tellement pouss\u00e9 pour avoir un programme qui fait tout tout seul que il ne me faut pas grand chose de plus. Je pense que ce qui serait pas mal ca serait du coup d'utiliser ce temps pour bien impl\u00e9menter la calibration qui elle aura besoin d'une UI un peu plus bal\u00e8ze. On pourrait m\u00eame imaginer que la calibration fasse partie int\u00e9grante des settings... Ca serait peut-\u00eatre bien que quand l'application se lance on se retrouve sur la page principale d'affichage de donn\u00e9es et qu'on puisse simplement cliquer sur la page options qui contient la page calibration et qui permet de rentrer les infos du Grand Prix. Je pense que je vais faire ca. Voici l'interface que j'ai d\u00e9velopp\u00e9e pour regrouper tout ca : \"Screen\" La police le style le placement et les couleurs ne sont pas d\u00e9finitfs, cependant je pense que c'est un bon d\u00e9but. Le but maintenant va \u00eatre de permettre de faire fonctionner la calibration et la r\u00e9cup\u00e8ration d'images. Si j'arrive \u00e0 faire fonctionner ces deux choses sur un m\u00eame projet avant la fin de la semaine cela serait super ! Bon J'ai pu avancer sur l'int\u00e8gration de Selenium mais cela prend un peu de temps car je veux impl\u00e9metner un moyen de pouvoir prendre une Screenshot \u00e0 nimporte quel moment et pas juste en boucle. Demain je finis de faire fonctionner ca et ensuite je commence le cablage du reste. Jeudi 27 Avril 2023 C'est assez dur de faire l'importation car il y a des petites diff\u00e9rences qui obligent \u00e0 presque tout r\u00e9\u00e9crire. En fait le programme de calibration avait d\u00e9ja impl\u00e9ment\u00e9 la fonction de Windows et de Zones mais il fonctionnait juste assez diff\u00e9remment pour qu'il faille tout refaire. La je suis en train de perdre \u00e9norm\u00e9ment de temps \u00e0 cause d'un soucis de coordonn\u00e9es. J'ai repris le code de la calibration pour detecter ou l'utilisateur a cliqu\u00e9 pour cr\u00e9er les zones. Cependant, je n'arrive pas \u00e0 le faire fonctionner correctement. La zone est tout le temps d\u00e9cal\u00e9e en haut et en bas mais pas de la m\u00eame facon. En haut, la valeur Y est trop grande alors que en bas la valeur Y est trop petite... Je ne comprends pas bien pourquoi. Si c'\u00e9tait un simple d\u00e9calage cela ne serait pas compliqu\u00e9 \u00e0 g\u00e8rer mais la... J'ai un soucis \u00e9galement avec la r\u00e9solution des screenshots que je r\u00e9cup\u00e8re en full Headless. Voici un exemple de r\u00e9solution que j'arrive \u00e0 r\u00e9cup\u00e8rer sans le headless : \"High Res\" \"Low Res\" Il y a clairement un soucis et le probl\u00e8me c'est que avec une r\u00e9solution pareille, impossible de faire une reconnaissance correcte. BON J?EN PEUX PLUS LA. Ca fait des heures que je bosse sur ce probl\u00e8me d\u00e9bile et impossible de trouver une solution. J'ai essay\u00e9 cinq facons de forcer le browser headless a prendre une plus haute r\u00e9solution aucune ne fonctionne je ne comprends pas. A chaque fois que je me retrouve avec une r\u00e9solution de 1366 x 768 Ou une variante de basse r\u00e9solution du style. J'en peux plus je ne trouve aucune r\u00e9ponse sur internet ni m\u00eame avec chatGPT. Super... La seule chose que j'ai pu faire qui change quelque chose fait que les images font maintenant du 926x517... j'ai un peu envie de commentre un crime de guerre au plus vite. Vendredi 28 Avril 2023 Une des solutions que je n'ai pas encore essay\u00e9 est de changer ma version de GeckoDriver. Sauf que ca m'oblige \u00e0 changer les versions de mes libraries ce qui est tr\u00e8s p\u00e9nible, je vais continuer le debugging dans le projet Selenium_clean. Il faut savoir que la librairie de Selenium que j'utilise est bloqu\u00e9e en 0.27 ce qui fait que je ne peux utiliser qu'une version obsol\u00e8te du Gecko Driver. J'ai tent\u00e9 de changer vers une version en 64 bits du GeckoDriver 0.27 mais pareil, je me retrouve toujours avec des images de M. J'essaie toutes les solutions que je trouve sur internet aucune ne convient c'est infernal. J'essaie de changer la r\u00e9solution DPI, j'essaie de changer les param\u00eatres par d\u00e9faut des player de Firefox, j'essaie de changer la r\u00e9solution pendant et au d\u00e9but de l'execution IMPOSSIBLE DE FAIRE MARCHER CETTE MERDE C'EST PAS POSSIBLE !!! J'ai essay\u00e9 avec chrome mais je ne peux pas l'utiliser car les DRM m'emp\u00eacheront de prendre des screenshot du flux vid\u00e9o. J'ai essay\u00e9 de faire tourner avec edge mais edge ne peut pas tourner en headless. JE VAIS DEVENIR FOUF FPWQOVMQEKOVNVIBDBJDAIVOBI. ET MAINTENANT JE N'ARRIVE PLUS A FAIRE DE PROJET AVEC SELENIUM VOIWQNV(UEWQBVU)WEQN=OEJNIVIUWVBWUEV ON CHERCHE A ME FAIRE PETER UN PLOMB C'EST PAS POSSIBLE GIWEGUWEQN VOICI UN EXEMPLE DU CODE QUE JE DEMANDE A UN NOUVEAU PROJET AVEC EXACTEMENT LES MEMES LIBRARIES INSTALLEES : // Create a new FirefoxDriver instance IWebDriver driver = new FirefoxDriver (); // Navigate to the specified URL driver . Navigate (). GoToUrl ( \"https://www.example.com\" ); // Do something with the driver (e.g., find elements or take screenshots) // Quit the driver driver . Quit (); Je ne demande que ca ET MEME CA CA NE VEUT PAS FONCTIONNER VOIWENB)IWUQENV Oui je suis un peu \u00e9nerv\u00e9 ca se voit? A bon? Et maintenant NUGGET ne fonctionne plus... j'en peux plus la. Je ne peux plus t\u00e9l\u00e9charger de librairie sur aucun de mes projets... J'ai tent\u00e9 de supprimer le fichier de config et red\u00e9marrer Visual Studio mais cela ne fait rien. J'ai aussi tent\u00e9 de faire un 'nugget restore' toujours rien. Bon apparemment je ne suis pas le seul qui ne peut pas acc\u00e8der \u00e0 Nuget donc bon c'est pas juste chez moi qu'il y a un soucis. Mais m\u00eame en mettant ma 4G pour me connecter, je n'arrive pas \u00e0 acc\u00e8der \u00e0 certains sites y compris Nuget et je ne peux pas download de librairies... Je ne comprends pas ce qui se passe et du coup je ne peux juste pas bosser... J'ai red\u00e9marr\u00e9 trois fois mon pc et visual studio, j'ai essay\u00e9 de changer mes settings DNS etc... impossible de bosser. Je crois que je n'aurais pas du me reveiller aujourd'hui. Bon je vais tenter d'avancer sur mon poster en attendant que le r\u00e9seau soit en meilleur \u00e9tat. Lundi 1 Mai 2023 Bon je bosse depuis chez moi donc j'esp\u00e8re que Nuget va mieux fonctionner. Apr\u00e8s un weekend \u00e0 r\u00e9fl\u00e9chir au sujet de cette resolution je me suis dit deux choses. La seule personne sur internet que j'ai vu avoir le meme soucis avait une r\u00e9solution de 1920x1200 comme moi. Cela veut donc s\u00fbrement dire que le soucis vient de cette r\u00e9solution de laptop comme moi. Si vraiment je n'arrive pas dans un premier temps \u00e0 faire fonctionner le Headless correctement, je peux toujours laisser la page de c\u00f4t\u00e9 et m'occuper du reste du programme. Certes ca serait vraiment infernal d'avoir \u00e0 garder une page chrome ouvert en tous temps et en plus elle doit \u00eatre en plein \u00e9cran mais bon... Si il n'y a vraiment pas d'autres solutions malheureusement je serai bien oblig\u00e9. BON ! JE N'ARRIVE MEME PLUS A FAIRE UN PROJET QUI UTILISE SELENIUM ET QUI MARCHE JE VAIS FAIRE BR\u00dbLER GENEVE. C'est pas possible serieux, je ne comprends pas j'essaie tout ce que je trouve et impossible de juste lancer firefox c'est du grand nimporte quoi. Je prend les m\u00eame putain de librairies que sur les autres projets les m\u00eames versions, je prend le m\u00eame exact code. Sur le nouveau projet impossible de le faire fonctionner. Je commence \u00e0 croire que on essaie de me faire p\u00eater un cable. Du coup dans un \u00e9lan de d\u00e9sespoir je vais tenter de passer sur une autre librairie qui avec un peu de chance marche et en plus me permettrais de prendre des foutues screenshot dans le bon format. Les deux seules librairies qui pourraient potentiellement faire l'affaire sont les librairies : PhantomJS CefSharp Je vais les tester et simplement prier pour qu'elles fonctionnent et que je puisse faire ce que je veux avec. Alors pour le moment avec CEFSharp j'arrive \u00e0 lancer une instance de chrome et prendre une screenshot avec ce code : CefSettings settings = new CefSettings (); settings . CachePath = Path . Combine ( Environment . GetFolderPath ( Environment . SpecialFolder . LocalApplicationData ), \"CefSharp\\\\Cache\" ); // Set cache path settings . LogSeverity = LogSeverity . Disable ; // Disable logging Cef . Initialize ( settings ); // Initialize CEF using ( var browser = new ChromiumWebBrowser ( \"www.google.com\" , new BrowserSettings ())) // Launch Chromium in off-screen mode { browser . Load ( \"https://www.example.com\" ); // Navigate to the test URL browser . Size = new Size ( 1920 , 1080 ); // Set the browser size to 1920x1080 browser . ScreenshotAsync (). ContinueWith ( task => { var bitmap = task . Result ; bitmap . Save ( \"screenshot.png\" , System . Drawing . Imaging . ImageFormat . Png ); // Take a screenshot and save it as a PNG file }). Wait (); } Cef . Shutdown (); // Shutdown CEF Avec ca il faut ces using : using System ; using System.Drawing ; using System.IO ; using CefSharp ; using CefSharp.OffScreen ; C'est assez prometteur m\u00eame si il faut encore beaucoup pour remplacer selenium. Ah bah lol en fait non on peut pas utiliser cette librarie pour faire tourner firefox... J'EN AI MARRE J'AVAIS CHERCHE PRECISEMENT UNE LIB QUI MARCHE AVEC FIREFOX Et phantomJS non plus ne fonctionne pas avec firefox... J'en ai marre. Donc je vais plut\u00f4t partir sur la librairie GeckoFX qui semble pouvoir contr\u00f4ler une instance de firefox. Mais j'avais justement pris un putain de projet C# et pas JS pour ne pas me taper ces probl\u00e8mes de librairies... Et si cette option ne fonctionne pas mon dernier espoir sera de directement int\u00e9ragir avec le geckodriver.exe et la ca risque de pas \u00eatre dr\u00f4le. JE NE COMPRENDS RIEN !!!!! Ca n'a aucun sens la doc est inexistante le seul lien qui pourrait amener sur une doc envoie sur la page principale de bitbucket. Tous les exemples de code que je trouve ne fonctionnent pas. Je n'arrive \u00e0 rien je commence \u00e0 devenir fou. Tout ce travail pour rien c'est pas possible. M\u00eame en essayant directement d'int\u00e9ragir avec le process geckodriver.exe je ne peux pas arriver \u00e0 mes fins. J'arrive \u00e0 lancer le service et tout, mais je n'arrive pas \u00e0 vraiment contr\u00f4ler ce qu'il se passe donc impossible de venir prendre des screenshot. Je ne sais tout simplement pas quoi faire ... Je suis bloqu\u00e9. Je me suis cass\u00e9 la t\u00eate \u00e0 faire un truc qui marchait bien avec selenium et tout. Mais maintenant plus rien ne fonctionne du jour au lendemain et il n'y a simplement aucune alternative. Je vais essayer de changer directement le projet Selenium_Clean mais bon ca va pas \u00eatre dr\u00f4le. Ok alors j'ai tout repris depuis le d\u00e9but et je crois que j'ai enfin une solution. Pour la trouver j'ai re-essay\u00e9 toutes les techniques que j'avais tent\u00e9 avant mais dans l'ordre et en les isolant \u00e0 chaque fois. Cela inclus : Tenter de changer la densit\u00e9 de pixels. En effet je me suis dit que comme la r\u00e9solution \u00e9tait plus basse le soucis \u00e9tait que le virtual screen avait simplement une DPI r\u00e9duite. profile.SetPreference(\"layout.css.devPixelsPerPx\", \"2.0\"); J'ai aussi tent\u00e9 de r\u00e9duire \u00e0 un seule le nombre de process de Firefox. J'ai pu lire sur internet que parfois cela pouvait influer sur les performances du renderer. profile.SetPreference(\"dom.ipc.processCount\", 1); Ensuite j'ai tent\u00e9 tout b\u00eatement de rajouter dans la liste des arguments la taille voulue de l'\u00e9cran. options.AddArgument(\"--window-size=1920,1080\"); Mais comme cela ne foncionnait pas, je me suis rabattu sur un script JS pour tenter de forcer la fen\u00eatre \u00e0 \u00eatre plus grande. js.ExecuteScript(\"window.resizeTo(1920, 1080);\"); Comme cela n'a pas march\u00e9 j'ai pu lire que cela pouvait \u00eatre la taille int\u00e9rieure qui devait \u00eatre chang\u00e9e js.ExecuteScript(\"window.innerWidth = 1920; window.innerHeight = 1080;\"); Encore une fois sans succ\u00e8s. J'ai ensuite tent\u00e9 d'utiliser trois autres versions du GeckoDriver, 0.27,0.26,0.25 et aucune ne m'aidait. Mais en fait la seule chose qui a chang\u00e9 quoi que ce soit \u00e9tait la technique suivante : Changer la window size en utilisant : options . AddArgument ( \"--width=1920\" ); options . AddArgument ( \"--height=1200\" ); Ca ne marchait pas car j'utilisais une autre methode pour resize en m\u00eame temps, qui elle ne marchait pas mais qui emp\u00eachait celle la de marcher. Ensuite le soucis que j'avais c'est que en mettant 1920-1080 je me retrouvais avec 1920-998 ou un truc du genre ce qui n'\u00e9tait pas normal alors je me disais que cette technique ne marchait pas non plus et je l'ai pass\u00e9e. Alors tout n'est pas encore gagn\u00e9, il faut que j'arrive \u00e0 impl\u00e9menter ca dans un plus gros projet et que la vid\u00e9o puisse \u00eatre prise seule. Demain je m'occupe de ca. Mardi 2 Mai 2023 Bon aujourd'hui je change le programme principal. Le soucis que j'ai c'est que en ajoutant ce syst\u00e8me de resize, maintenant la page fait 100x100 et est grise. Il doit y avoir une technique que j'ai oubli\u00e9 de retirer ou un comportement un peu bizarrre. Bon clairement je ne sais pas QUI DECIDE DE ME POURRIR LA VIE mais il est fort. J'ai t\u00e9l\u00e9charger EXACTEMENT les m\u00eames librairies que sur mon autre projet et j'utilise l'EXACT m\u00eame geckodriver.exe mais dans le projet principal impossible de lui faire chier une image m\u00eame avec l'EXACT m\u00eame code. POURQUOI VOUS ME FAITES CA????= La je ne comprend vraiment pas ce qui peut se passer pour que rien ne fonctionne alors que tout est pareil. JE VIENS DE TOUT VERIFIER TOUT EST PAREIL JE NE COMPRENDS PAS. Bon apr\u00e8s avoir supprim\u00e9 l'int\u00e9gralit\u00e9 de ma classe Emulator cela semble marcher un peu mieux. Je ne vais pas m'\u00e9tendre sur la castrophe niveau temps que cela repr\u00e9sente. Si au moins j'arrive \u00e0 faire fonctionner quelque chose je suis content. Maintenant j'ai un soucis un peu sp\u00e9cial. Depuis que j'ai chang\u00e9 la r\u00e9solution, il semble que le programme aie du mal \u00e0 cliquer sur l'icone de settings. En prenant des screenshots du moment ou l'erreur apparait, j'ai pu me rendre compte que en fait le stream est toujours en train de charger et c'est pour ca que on arrive pas \u00e0 trouver le bouton : \"ERROR 105\" \"ERROR 105\" Je pense que je n'ai le soucis que maintenant car le flux en 1080p se lance moins vite. Je vais essayer de voir si je peux detecter un \u00e9l\u00e9ment d'HTML qui correspond au loading comme ca je peux attendre qu'il disparaisse. Sinon je peux aussi juste essayer de trouver le bouton en boucle pendant une dixaine de secondes. Bon la j'essaie pendant genre plus de 50 secondes et ca ne marche toujours pas. Il semblerait que au final le probl\u00e8me vienne du GP d'azerbidjan. En effet, quand je teste un autre Grand Prix tout va bien. ET MERDE ! J'ai r\u00e9ussi \u00e0 avoir des images en 1080P mais d\u00e9s que je passe l'image en plein \u00e9cran c'est de nouveau du 1366X768 Avant de mettre en plein \u00e9cran: \"Before fullscreen\" Apr\u00e8s: \"After fullscreen\" On peut voir sur l'image que l'option 1080P est effectivement bien selectionn\u00e9e mais il doit y avoir un param\u00e8tre de Firefox qui s'occupe de la r\u00e9solution d'un player vid\u00e9o. Il va juste falloir trouver ce param\u00eatre... J'ai essay\u00e9 d'utiliser : Driver.Manage().Window.Size = new System.Drawing.Size(windowWidth, windowHeight); Sans succ\u00e8s. options.AddArgument(\"--start-maximized\"); Pareil Driver.Manage().Window.Maximize(); Toujours rien profile.SetPreference(\"full-screen-api.ignore-widgets\", true); Nada profile.SetPreference(\"media.hardware-video-decoding.enabled\", true); Toujours pas J'ai vraiment cru que j'avais trouv\u00e9 la solution en trouvant cette commande profile.SetPreference(\"full-screen-api.enabled\", true); Mais non toujours pas... Je commence \u00e0 perdre patience. C'EST BON. Apr\u00e8s litt\u00e9rallement 3h de debugging avec M.Bonvin (Que je remercie IMMENSEMENT) on a r\u00e9ussi \u00e0 trouver au fin fond d'un thread github que la valeur \u00e9tait hard cod\u00e9e dans les variables d'environnement et que donc quoi que je fasse je n'aurais pas pu le changer. En fait la seul moyen de tout r\u00e8gler a \u00e9t\u00e9 de changer les variables d'environnement de ma machine: MOZ_HEADLESS_WIDTH et MOZ_HEADLESS_HEIGHT . Et ce qu'il y a de bien c'est que maintenant je peux mettre de la 4K et cela permet de faire un meilleur upscaling. Recrutement Payerne Mai 2023 J'ai du faire mon recrutement \u00e0 Payerne Mercredi et Jeudi. Si vous \u00eates curieux je peux vous dire que comme il n'y avait presque plus de places cet \u00e9t\u00e9 je ferai Canonnier Lance mines. C'\u00e9tait assez frustrant d'avoir perdu deux jours de travail mais on va faire avec. Vendredi 5 Mai 2023 Bon malgr\u00e9s les courbatures il faut que je me mette au boulot un peu serieusement par ce que sinon ca va \u00eatre compliqu\u00e9 de rattraper mon retard. La derni\u00e8re fois si je me souviens bien j'avais r\u00e9ussi \u00e0 trouver un moyen de prendres des images en bonne r\u00e9solution. Il faut maintenant que je commence \u00e0 faire fonctionner la calibration et ce qui serait bien ca serait que je commence \u00e0 ajouter la partie OCR au projet. Il faut que je me d\u00e9p\u00eache car Lundi je dois m'occuper du Poster. OK j'ai compris le soucis que j'avais quand j'essayais de faire la calibration. J'avais mis l'image en ZOOM ce qui fait que si la hauteur n'\u00e9tait pas la bonne, l'image \u00e9tait recentr\u00e9e ce qui fait que cela faussait totalement les r\u00e9sultats. Quand on fait en sorte que l'image prenne toute la place, les coordonn\u00e9es sont prises correctement. Voici un exemple d'ou en est la partie calibration. \"Exemple settings UI\" Normalement il me suffit d'impl\u00e9menter les windows, et on devrait relativement facilement ajouter les pilotes. Et voila. J'ai pu impl\u00e9menter les windows et les pilotes. Et je peux aussi exporter des presets et les loader. Bon le loading est un peu beugg\u00e9 au niveau de l'affichage mais il semble qu'il fonctionne bien quand je save les images. Lundi je m'occupe du poster etc.. mais je pense que la suite va \u00eatre l'impl\u00e9mentation de l'OCR. Lundi 8 Mai 2023 Aujourd'hui c'est journ\u00e9e Poster. Je pense que je ne vais pas finir la journ\u00e9e content car les limitations sont un peu trop pr\u00e9sentes. J'ai fait une version que Garcia pourrait accepter, c'est \u00e0 dire en noir et blanc et avec un tout petit peu plus de d\u00e9tail. \"Poster V3\" Le truc c'est que en blanc je trouve que ca ne marche pas super. Et le concept d'avoir trois parties au projet qui se posent autour d'un circuit c'est peut-\u00eatre pas la meilleure id\u00e9e. Je me suis dit que la bonne id\u00e9e serait peut-\u00eatre de prendre un autre circuit pour qu'il y aie bien trois parties : \"Poster V4\" Clairement ce poster doit faire partie des pires. C'est pas clair et ca part dans tous les sens. Je vais essayer avec un autre layout de circuit. \"Poster V5\" Je me suis ensuite dit que le circuit n'\u00e9tait peut \u00eatre tout simplement pas une bonne id\u00e9e. J'ai donc essay\u00e9 de faire quelque chose de plus classique avec juste un peu de background pour qu'on puisse \u00e9viter le soucis de la page blanche derri\u00e8re : \"Poster V6\" Puis je me suis dit que finalement le circuit me manquait. Alors j'ai d\u00e9cid\u00e9 de combiner le background et le circuit ainsi que simplifier l\u00e9g\u00e8rement les diagrammes en retouchant un peu tout le reste on pouvait arriver \u00e0 quelque chose de sympatique : \"Poster V7\" Je ne suis pas content \u00e0 100% mais bon je pense que je vais m'en satisfaire. Pour donner une id\u00e9e de la gal\u00e8re que c'est de cr\u00e9er un poster, voici ce \u00e0 quoi ressemble mon espace de travail Figma : \"Bordel Figma\" Je ne suis pas un graphiste et ca se voit '^^. Je pense que comme il me reste un peu de temps aujourd'hui, je vais faire un peu de documentation de la partie r\u00e9cup\u00e8ration d'images. En effet, je pense que je n'aurai plus besoin de changer grand chose \u00e0 ce niveau. Mais je ne ferai pas la partie analyse fonctionnelle car l'interface n'est clairement pas termin\u00e9e. En fait j'avais oubli\u00e9 mais j'ai eu un rendez vous m\u00e9dical du coup je n'ai pas eu trop le temps de faire la doc que je voulais. Mais au moins je pense avoir finit mon travail sur le poster et le abstract en Anglais qui sont les deux gros livrables \u00e0 venir. Mardi 9 Mai 2023 Bon je viens de me rendre compte que apparemment on doit rendre l'abstract anglais, le Poster, ET LE PROJET. Je pense que mes deux jours \u00e0 l'arm\u00e9e m'ont fait perdre un peu la notion du temps car j'avais l'impression que l'evaluation interm\u00e9diaire 1 \u00e9tait il y a genre moins d'une semaine. Donc aujourd'hui je ne vais pas trop avancer sur le code et vraiment me focus sur la documentation de la r\u00e9cup\u00e8ration d'images. Je pense que je vais aussi ajouter la partie calibration \u00e0 la documentation. Je pense que c'est important que je prenne le temps maintenant car sinon le prof aura l'impression que ca n'a pas trop avanc\u00e9 depuis la derni\u00e8re fois. Et puis je pense que la partie calibration et r\u00e9cup\u00e8ration d'images ne va pas trop changer et la partie calibration encore moins. La partie anglaise je fais la revoir un peu mais je l'avais d\u00e9ja faite pendant les premiers jours alors ca devrait aller. Pour le rendu il nous \u00e9tait demand\u00e9 de fournir un fichier PDF avec tout dedans avec une table des mati\u00e8res notre code source etc... Pour ce faire j'ai du changer le mkdocs.yml et installer des packages. Voici les changements :: site_name: Documentation Track Trends site_author: Rohmer Maxime copyright: \u00a9CFPTI Tech2 theme: name: material palette: # Palette toggle for light mode - media: \"(prefers-color-scheme: light)\" scheme: default toggle: icon: material/brightness-7 name: Switch to dark mode # Palette toggle for dark mode - media: \"(prefers-color-scheme: dark)\" scheme: slate toggle: icon: material/brightness-4 name: Switch to light mode markdown_extensions: - attr_list - md_in_html - pymdownx.highlight plugins: - glightbox - search - img2fig - with-pdf: cover_subtitle: Vroum Vroum enabled_if_env: ENABLE_PDF_EXPORT - annexes-integration: annexes: # Required (at least 1) - ConfigurationTool.cs: Code/ConfigurationTool.cs # An path to an annex with its title - DriverGapToLeaderWindow.cs: Code/DriverGapToLeaderWindow.cs # An path to an annex with its title - DriverPositionWindow.cs: Code/DriverPositionWindow.cs # An path to an annex with its title - F1TVEmulator.cs: Code/F1TVEmulator.cs # An path to an annex with its title - Program.cs: Code/Program.cs # An path to an annex with its title - Window.cs: Code/Window.cs # An path to an annex with its title - DriverData.cs: Code/DriverData.cs # An path to an annex with its title - DriverLapTimeWindow.cs: Code/DriverLapTimeWindow.cs # An path to an annex with its title - DriverSectorWindow.cs: Code/DriverSectorWindow.cs # An path to an annex with its title - Form1.cs: Code/Form1.cs # An path to an annex with its title - Reader.cs: Code/Reader.cs # An path to an annex with its title - Zone.cs: Code/Zone.cs # An path to an annex with its title - DriverDrsWindow.cs: Code/DriverDrsWindow.cs # An path to an annex with its title - DriverNameWindow.cs: Code/DriverNameWindow.cs # An path to an annex with its title - DriverTyresWindow.cs: Code/DriverTyresWindow.cs # An path to an annex with its title - OcrImage.cs: Code/OcrImage.cs # An path to an annex with its title - Settings.cs: Code/Settings.cs # An path to an annex with its title - recoverCookiesCSV.py: Code/recoverCookiesCSV.py # An path to an annex with its title Je remercie Monsieur Briard le sultan officiel de Mkdocs de la classe de m'avoir aid\u00e9 pour cette partie et avoir cr\u00e9\u00e9 un plugin qui me permet de mettre mon code source directement dans le pdf. Bon au final j'ai quand m\u00eame chang\u00e9 mon poster \"Poster V8\" Mais je suis trop attach\u00e9 \u00e0 l'ancien concept alors je vais plut\u00f4t utiliser ca : \"Poster V9\" Je pense que cette version est meilleure m\u00eame si elle est encore plus en bordel par ce que le texte permet de se faire une meilleure id\u00e9e de l'utilis\u00e9 de chaque partie. Mercredi 10 Mai 2023 Bon hier je n'ai pas eu le temps de finir la documentation de la recup\u00e8ration d'images et de la calibration. Il faudra donc que je repasse un coup dessus en fin de semaine je pense. Mais la j'aimerais avancer sur la mise en commun du projet, comme la configuration fonctionne plut\u00f4t pas mal je pense que je vais juste vite fait aller commenter les methodes qui ne le sont pas encore et ensuite je vais passer \u00e0 l'impl\u00e9mentation de l'OCR. Je suis presque certain que l'OCR va avoir besoin de plus de r\u00e8glages mais bon on verra bien. Je me rend compte en commentant que la methode de load serait plus efficace avec un tout petit peu plus d'infos de la part du JSON. J'aurais pu ajouter l'offset entre chaque Driver Zone pour eviter un l\u00e8ger drift lors de la reconstruction. Mais bon rien de grave donc je pense que je vais le laisser comme ca pour le moment \u00e0 moins que ca me pose soucis plus tard. J'ai eu quelques soucis avec les images en 4K. Du coup j'ai descendu les variables d'environnement \u00e0 1920x1080 En fait il y a parfois un soucis un peu p\u00e9nible avec l'OCR. Parfois pour un temps comme ci dessous: \"1:45.140\" Le programme ne va pas bien comprendre les ponctuations et il va donner : 1115140 La il y a deux probl\u00e8mes... Le 1:xx.xxx est compris comme 11xxxxx et le 4 s'est transform\u00e9 en 1... J'ai cr\u00e9\u00e9 ce \"petit\" bout de code pour g\u00e8rer les fois ou les '.' et les ':' ont mal \u00e9t\u00e9 interpr\u00eat\u00e9s if ( rawNumbers . Count == 1 ) { //If this code is used it means that its bad ... //The methods that comes are really not that great and are juste quick fixes try { result = Convert . ToInt32 ( rawNumbers [ 0 ]); switch ( windowType ) { case OcrImage . WindowType . Sector : //The usual sector is in this form : 33.456 if ( rawNumbers [ 0 ]. Length == 6 ) { //The '.' has been understood like a number result = 0 ; result += Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ] + rawNumbers [ 0 ][ 1 ]) * 1000 ; result += Convert . ToInt32 ( rawNumbers [ 0 ][ 3 ] + rawNumbers [ 0 ][ 4 ] + rawNumbers [ 0 ][ 5 ]); } if ( rawNumbers [ 0 ]. Length == 5 ) { //The '.' has been overlooked result = 0 ; result += Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ] + rawNumbers [ 0 ][ 1 ]) * 1000 ; result += Convert . ToInt32 ( rawNumbers [ 0 ][ 2 ] + rawNumbers [ 0 ][ 3 ] + rawNumbers [ 0 ][ 4 ]); } break ; case OcrImage . WindowType . LapTime : //The usual Lap time is in this form : 1:45:345 if ( rawNumbers [ 0 ]. Length == 6 ) { //The '.' and ':' have been overlooked //I Know Im skipping the cases where there are more than 9 minuts but it happens so rarely that... we dont care result = 0 ; result += Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]) * 60000 ; result += Convert . ToInt32 ( rawNumbers [ 0 ][ 1 ] + rawNumbers [ 0 ][ 2 ]) * 1000 ; result += Convert . ToInt32 ( rawNumbers [ 0 ][ 3 ] + rawNumbers [ 0 ][ 4 ] + rawNumbers [ 0 ][ 5 ]); } if ( rawNumbers [ 0 ]. Length == 7 ) { //There is two possibilities //Either 1:45.140 has been interpreted as 1145.10 or 1:451140. We will assume its the first one result = 0 ; result += Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]) * 60000 ; result += Convert . ToInt32 ( rawNumbers [ 0 ][ 2 ] + rawNumbers [ 0 ][ 3 ]) * 1000 ; result += Convert . ToInt32 ( rawNumbers [ 0 ][ 4 ] + rawNumbers [ 0 ][ 5 ] + rawNumbers [ 0 ][ 6 ]); } break ; case OcrImage . WindowType . Gap : //The usual Gap is in this form : + 34.567 if ( rawNumbers [ 0 ]. Length == 5 ) { //The '.' has been overlooked result += Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ] + rawNumbers [ 0 ][ 1 ]) * 1000 ; result += Convert . ToInt32 ( rawNumbers [ 0 ][ 2 ] + rawNumbers [ 0 ][ 3 ] + rawNumbers [ 0 ][ 4 ]); } break ; } if ( rawNumbers [ 0 ]. Length > 6 ) { //The number definitely has been interpreted wrong } } catch { //It can be because the input is empty or because its the LEADER bracket result = 0 ; } } else { //Auuuugh result = 0 ; } ConfigFile = \"./Presets/Clean_2023.json\" ; string gpUrl = \"https://f1tv.formula1.com/detail/1000006688/2023-azerbaijan-grand-prix?action=play\" ; Bon je n'arrive pas \u00e0 faire fonctionner l'OCR sans tout faire crash \u00e0 chaque fois. Je vais abandonner le travail de la journ\u00e9e pour revenir au point initial... C'est tr\u00e8s frustrant mais bon je ne vois pas comment faire mieux. Rien ne marche alors qu'avant ca marchant super sur le projet OCR normal. Va savoir pourquoi m\u00eame comme ca, impossible de faire marcher l'OCR. Il y a un soucis au niveau de l'ASYNC qui me fait crash tout le temps en me disant qu'un objet est deja en train d'\u00eatre utilis\u00e9. Ca marchait nikel dans mes premi\u00e8res version je ne vois pas pourquoi ca p\u00eate maintenant. Je pense que je vois \u00e0 peu pr\u00e8s le soucis. public virtual async Task < DriverData > Decode ( List < string > driverList ) { int sectorCount = 0 ; DriverData result = new DriverData (); Parallel . ForEach ( Windows , async w => { // A switch would be prettier but I dont think its supported in this C# version if ( w is DriverNameWindow ) result . Name = ( string ) await ( w as DriverNameWindow ). DecodePng ( driverList ); if ( w is DriverDrsWindow ) result . DRS = ( bool ) await ( w as DriverDrsWindow ). DecodePng (); if ( w is DriverGapToLeaderWindow ) result . GapToLeader = ( int ) await ( w as DriverGapToLeaderWindow ). DecodePng (); if ( w is DriverLapTimeWindow ) result . LapTime = ( int ) await ( w as DriverLapTimeWindow ). DecodePng (); if ( w is DriverPositionWindow ) result . Position = ( int ) await ( w as DriverPositionWindow ). DecodePng (); if ( w is DriverSectorWindow ) { sectorCount ++; if ( sectorCount == 1 ) result . Sector1 = ( int ) await ( w as DriverSectorWindow ). DecodePng (); if ( sectorCount == 2 ) result . Sector2 = ( int ) await ( w as DriverSectorWindow ). DecodePng (); if ( sectorCount == 3 ) result . Sector3 = ( int ) await ( w as DriverSectorWindow ). DecodePng (); } if ( w is DriverTyresWindow ) result . CurrentTyre = ( Tyre ) await ( w as DriverTyresWindow ). DecodePng (); }); return result ; } Ca c'est ma methode de decoding de chaque Driver Zone. Le message d'erreur me parle d'une windowImage quand il dit qu'un objet est d\u00e9ja utilis\u00e9. Ma conjecture c'est que en essayant de faire toutes les windows en m\u00eame temps. Elles veulent parfois acc\u00e8der \u00e0 l'image principale en m\u00eame temps. Ce qui evidemment pose probl\u00e8me. Je pense que le fix le plus simple serait de faire le traitement sans le parallele quitte \u00e0 exporter ce fonctionnement sur chaque zone en elle m\u00eame pour ne pas perdre trop de performances. Ok je crois que je vois ou est le soucis. En fait dans cette version du programme c'est toujours la premi\u00e8re image qui \u00e9tait juste tout le temps prise et dans la premi\u00e8re image on a une partie des chiffres qui est bloqu\u00e9e par l'UI de la fen\u00eatre... lol... EN FAIT J'avais un soucis dans ma gestion des chiffres mal faits. Visiblement parfois quand je ne prenais pas en compte un :, un LapTime etait compris comme un Gap to leader ou un Secteur Bon j'en ai tellement marre... Je n'arrive tout simplement PAS \u00e0 faire fonctionner l'OCR ca crash tout le temps j'en peux plus. J'ai tent\u00e9 de r\u00e8gler les probl\u00e8mes de mauvaises detections de secteurs et temps au tour qui font crasher l'app : if ( rawNumbers . Count == 2 ) { //ss:ms result = ( Convert . ToInt32 ( rawNumbers [ 0 ]) * 1000 ) + Convert . ToInt32 ( rawNumbers [ 1 ]); if ( result > ( 60000 + 999 )) { if ( windowType == OcrImage . WindowType . LapTime ) { result = 0 ; result += Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]) * 60000 ; result += Convert . ToInt32 ( rawNumbers [ 0 ][ 2 ]. ToString () + rawNumbers [ 0 ][ 3 ]. ToString ()) * 1000 ; result += Convert . ToInt32 ( rawNumbers [ 1 ]); } if ( windowType == OcrImage . WindowType . Sector ) { int seconds = 0 ; if ( rawNumbers [ 0 ]. Length == 3 ) { //We have one char that we need to delete //For no apparent reason im going to delete the first seconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 1 ]. ToString () + rawNumbers [ 0 ][ 2 ]. ToString ()); } else { seconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]. ToString () + rawNumbers [ 0 ][ 1 ]. ToString ()); } int ms = Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]. ToString () + rawNumbers [ 0 ][ 1 ]. ToString () + rawNumbers [ 0 ][ 2 ]. ToString ()); result = seconds * 1000 + ms ; } } } Mais toujours impossible de faire fonctionner cette M**** C'est juste infernal. Je pense que je vais encore tout retirer et remplacer par ce que j'ai dans mon projet OCR original. Donc c'est une journ\u00e9e de perdue compl\u00eatement... C'est extr\u00eamement frustrant. Apr\u00e8s des heures de debug j'ai enfin r\u00e9ussi \u00e0 faire fonctionner le programme de temps en temps. Mais j'ai toujours le soucis que l'image ne veut pas changer alors que je fais tout pour et que l'OCR est nulle \u00e0 chier du coup... Jeudi 11 Mai 2023 Bon apr\u00e8s une bonne nuit de sommeil je vais reprendre les choses depuis le d\u00e9but. J'ai deux soucis : L'OCR pue du derche L'Image que l'on d\u00e9code ne change pas Pour la premi\u00e8re partie j'ai ma petite th\u00e9orie. Je pense que comme je donne des images 4K alors que le feed est en 1080P, il y a d\u00e9ja un genre d'interpolation qui est faite. Je pense donc qu'il faut que j'adapte mon engine pour qu'il fonctionne avec cette r\u00e9solution. Je me suis demand\u00e9 si ca n'\u00e9tait pas mieux de prendre en compte les deux r\u00e9solutions pour les pc un peu moins bal\u00e8zes et j'ai d\u00e9cid\u00e9 de n'en avoir rien a faire. On verra dans le futur si c'est une feature que je voudrais ajouter mais c'est en dehors du scope du dipl\u00f4me je pense. Pour la seconde partie, je pense qu'il faut que j'aille voir du c\u00f4te de OCR_Decode et de OCR Tester pour voir comment je faisais. Je dois forc\u00e9ment oublier un truc. Bon ca commence mal, quand je vais voir dans le projet OCR_Decode, le changement d'image est exactement le m\u00eame et il fonctionne alors que de mon c\u00f4t\u00e9 ca n'est pas le cas. Alors deux choses. Je me rend compte que le changement d'images n'a AUCUN effet sur la detection de texte, et seconde chose, le d\u00e9calage est trop grand entre les windows. Des que le soucis d'image est r\u00e8gl\u00e9 il va falloir que je change drastiquement ma facon de stocker la config en JSON. Il faut que je conserve les \u00e9carts. Sinon regardez ce que ca donne quand on arrive au dernier pilote : \"Zone de pilote d\u00e9cal\u00e9e\" Je commence \u00e0 devenir FOU. Je n'arrive pas \u00e0 changer cette foutue image wtf... J'ai beau tenter par tous les moyens de la changer par une image noire, l'image semble toujours rester celle du d\u00e9part. Bon j'ai enfin trouv\u00e9 pourquoi et je n'ai pas envie de dire comment j'ai trouv\u00e9... Je pense que l'on a tous droit \u00e0 son petit jardin secret. Maintenant ca veut dire que je peux me focus sur le concept important qui est le changement de la cr\u00e9ation et de la lecture des JSON. Voici un exemple de preset JSON : { \"Main\" : { \"x\" : 40 , \"y\" : 355 , \"width\" : 3784 , \"height\" : 1438 , \"Zones\" : [ { \"DriverZone\" : { \"x\" : 0 , \"y\" : -10 , \"width\" : 3784 , \"height\" : 71 , \"Windows\" : [ { \"Position\" : { \"x\" : 47 , \"y\" : 11 , \"width\" : 72 }, \"GapToLeader\" : { \"x\" : 445 , \"y\" : 13 , \"width\" : 201 }, \"LapTime\" : { \"x\" : 859 , \"y\" : 14 , \"width\" : 221 }, \"DRS\" : { \"x\" : 1094 , \"y\" : 13 , \"width\" : 173 }, \"Tyres\" : { \"x\" : 1270 , \"y\" : 11 , \"width\" : 1452 }, \"Name\" : { \"x\" : 2727 , \"y\" : 11 , \"width\" : 351 }, \"Sector1\" : { \"x\" : 3083 , \"y\" : 10 , \"width\" : 253 }, \"Sector2\" : { \"x\" : 3339 , \"y\" : 14 , \"width\" : 195 }, \"Sector3\" : { \"x\" : 3518 , \"y\" : 14 , \"width\" : 250 } } ] } } ] }, \"Drivers\" : [ \"Perez\" , \"Leclerc\" , \"Sainz\" , \"Alonso\" , \"Stroll\" , \"Russel\" , \"Verstappen\" , \"Zhou\" , \"Ocon\" , \"Hulkenberg\" , \"Hamilton\" , \"Norris\" , \"Tsunoda\" , \"Magnussen\" , \"Piastri\" , \"Albon\" , \"Gasly\" , \"Sargeant\" , \"Bottas\" , \"De Vries\" ] } Je pense que ce qui serait bien ce serait de rajouter un \"offsets\" qui contienne les 19 \u00e9carts restants. Bon... la structure de ma fabrication de JSON etait trop confuse je trouve alors je l'ai compl\u00eatement refaite. J'ai aussi abandonn\u00e9 l'id\u00e9e de faire un fichier le plus petit possible car au final on s'en fiche et le plus important c'est que toutes les windows et les zones soient aux bons endroits. Ca nous fait un fichier d'environs 1300 lignes mais au moins le code pour la serialisation est plut\u00f4t clean : public void SaveToJson ( List < string > drivers , string configName ) { string JSON = \"\" ; JsonObject jsonFileObject = new JsonObject (); //Creating the mainZone object JsonObject mainZoneObject = new JsonObject (); mainZoneObject . Add ( \"x\" , MainZone . Bounds . X ); mainZoneObject . Add ( \"y\" , MainZone . Bounds . Y ); mainZoneObject . Add ( \"width\" , MainZone . Bounds . Width ); mainZoneObject . Add ( \"height\" , MainZone . Bounds . Height ); JsonArray driverZonesArray = new JsonArray (); int DriverID = 0 ; foreach ( Zone driverZone in MainZone . Zones ) { DriverID ++; JsonObject driverZoneObject = new JsonObject (); driverZoneObject . Add ( \"name\" , \"Driver\" + DriverID ); driverZoneObject . Add ( \"x\" , driverZone . Bounds . X ); driverZoneObject . Add ( \"y\" , driverZone . Bounds . Y ); driverZoneObject . Add ( \"width\" , driverZone . Bounds . Width ); driverZoneObject . Add ( \"height\" , driverZone . Bounds . Height ); JsonArray windowsArray = new JsonArray (); JsonObject windowObject = new JsonObject (); foreach ( Window window in driverZone . Windows ) { windowObject . Add ( window . Name , new JsonObject { { \"x\" , window . Bounds . X }, { \"y\" , window . Bounds . Y }, { \"width\" , window . Bounds . Width }, { \"height\" , window . Bounds . Height } }); } windowsArray . Add ( windowObject ); driverZoneObject . Add ( \"Windows\" , windowsArray ); driverZonesArray . Add ( driverZoneObject ); } mainZoneObject . Add ( \"DriverZones\" , driverZonesArray ); JsonArray driversArray = new JsonArray (); foreach ( string driver in drivers ) { driversArray . Add ( driver ); } mainZoneObject . Add ( \"Drivers\" , driversArray ); jsonFileObject . Add ( \"Main\" , mainZoneObject ); JSON = jsonFileObject . ToString (); //Saving the file string path = CONFIGS_FOLDER_NAME + configName ; if ( File . Exists ( path + \".json\" )) { //We need to create a new name int count = 2 ; while ( File . Exists ( path + \"_\" + count + \".json\" )) { count ++; } path += \"_\" + count + \".json\" ; } else { path += \".json\" ; } File . WriteAllText ( path , JSON ); } Et normalement la lecture devrait \u00eatre encore plus simple. En fait c'\u00e9tait pas beaucoup plus simple mais au moins maintenant ca marche. Je vais pas mettre le code de lecture ici car c'est un peu trop long donc il va falloir me croire sur parole. (Ou aller sur Git) Bon bah on est au m\u00eame endroit qu'hier... Bon pour demain le plan de bataille ca va \u00eatre : Changer compl\u00eatement la methode \"GetTimeFromPng\" pour qu'elle prenne en compte toutes les possibilit\u00e9s de bugs et d'oubli de '.' ou de ':' mais pas selon le nombre de blocs mais selon le type de temps que l'on cherche Pour le moment je regarde le nombre de blocs et si il y en a deux alors c'est que c'est un temps de secteur. En fait non cela peut aussi \u00eatre un temps au tour qui a rat\u00e9 un point. Il faut que je bosse juste un peu vite fait la dessus et que j'arr\u00eate de putain de crasher d\u00e8s que un truc est pas au bon format. Ensuite quand ca aura arr\u00eat\u00e9 de crasher je vais reprendre l'OCR et voir pourquoi les resultats sont nuls a chier comme ca. Et le but c'est que demain soir j'ai une reconnaissance de caract\u00e8res plus proche de ce que j'avais dans d'autres projets... J'y croit 0 mais bon l'espoir fait vivre comme on dit. vendredi 12 Mai 2023 Bon aujourd'hui il faut que ca marche. On va y aller par \u00e9tape. Je vais revoir toutes les methodes d'OCR et essayer de r\u00e9apliquer les filtres differemment et revenir au point de d\u00e9part. Avant de commencer je note plusieurs soucis avec les premiers tests : Les positions des pilotes ont l'air pas mal (Pas besoin de tout changer mais peut-\u00eatre simplement checker que les filtres sont bons) L'\u00e9cart avec le leader est \u00e9tonnamment pas mal aussi Le temps au tour est tout simplement horrible. Aucun n'est juste et de tr\u00e8s loin m\u00eame si les d\u00e9cimales ne sont pas forc\u00e9ment loin Le DRS je n'ai pas eu l'occasion de bien le tester mais je dirais que ca devrait \u00eatre bon (\u00e0 verifier quand le reste sera bon) Les pneus ne sont \u00e9tonnamment pas SI horribles, m\u00eame si parfois les lettres sont prises comme des chiffres Les noms de pilotes sont tr\u00e8s bon (pas \u00e9tonnant vu le syst\u00e8me de distance de Levenstein donc ca m\u00e9rite quand m\u00eame un petit check) Les secteurs sont en g\u00e9n\u00e9ral horribles mais pas toujours. C'est peut-\u00eatre un soucis de d\u00e9cimale ou des 4 qui se transforment en 1 J'ai remarqu\u00e9 que les 4 sont souvent pris comme des 1. Peut-\u00eatre que en ayant des images 4K l'interpolation est un peu diff\u00e9rente de ce que j'ai l'habitude de voir. Mais donc le plan aujourd'hui c'est de checker tous ces points et les faire fonctionner (youpi...) J'ai d\u00e9sactiv\u00e9 toutes les methodes de cette facon : int sectorCount = 0 ; DriverData result = new DriverData (); foreach ( Window w in Windows ) { // A switch would be prettier but I dont think its supported in this C# version if ( w is DriverNameWindow ) //result.Name = (string)await (w as DriverNameWindow).DecodePng(driverList); result . Name = \"Unknown\" ; if ( w is DriverDrsWindow ) //result.DRS = (bool)await (w as DriverDrsWindow).DecodePng(); result . DRS = false ; if ( w is DriverGapToLeaderWindow ) //result.GapToLeader = (int)await (w as DriverGapToLeaderWindow).DecodePng(); result . GapToLeader = 0 ; if ( w is DriverLapTimeWindow ) //result.LapTime = (int)await (w as DriverLapTimeWindow).DecodePng(); result . LapTime = 0 ; if ( w is DriverPositionWindow ) //result.Position = (int)await (w as DriverPositionWindow).DecodePng(); result . Position = 0 ; if ( w is DriverSectorWindow ) { sectorCount ++; if ( sectorCount == 1 ) //result.Sector1 = (int)await (w as DriverSectorWindow).DecodePng(); result . Sector1 = 0 ; if ( sectorCount == 2 ) //result.Sector2 = (int)await (w as DriverSectorWindow).DecodePng(); result . Sector2 = 0 ; if ( sectorCount == 3 ) //result.Sector3 = (int)await (w as DriverSectorWindow).DecodePng(); result . Sector3 = 0 ; } if ( w is DriverTyresWindow ) //result.CurrentTyre = (Tyre)await (w as DriverTyresWindow).DecodePng(); result . CurrentTyre = new Tyre ( Tyre . Type . Undefined , 0 ); } return result ; Le but c'est que ensuite je puisse y aller \u00e9tape par \u00e9tape. Position : Alors pour cette reconnaissance je dirais que la 4K fait des merveilles qui permettent de retirer du processing. La position apr\u00e8s un simple Treshold est assez bien reconnue et la dilataion et/ou Erosion ne sont pas nescessaires finalement. On va donc pouvoir gagner un certain temps et c'est un bon signe pour la suite. On peut aussi noter que quand un pilote est hors course toutes ses valeurs sont gris\u00e9es et sa position est prise comme un -1 Sectors, alors j'ai refait toute la partie qui concerne les secteurs et qui les nettoie. Et je me suis rendu compte qu'ils \u00e9taient bien souvent juste, le seul truc c'est que ils s'affichent de mani\u00e8re un peu sp\u00e9ciale. En fait dans la page de la F1TV les secteurs peuvent faire plus de 60 secondes sans passer sur un affichage de minutes. Ce qui fait que c'est un peu bizarre \u00e0 regarder mais c'est parfaitement juste. J'ai aussi pu simplifier la reconnaissance gr\u00e2ce \u00e0 l'image de meilleure qualit\u00e9 et maintenant les temps de secteur sont plut\u00f4t corrects. En fait le plus long et complexe c'est de pr\u00e9voir les cas particuliers ou un '.' a \u00e9t\u00e9 mal interpr\u00eat\u00e9... Et en parlant de ca, je vais aller m'occuper des temps au tour qui ajoutent une couche de complexit\u00e9 avec un '.' ET un ':' qui peuvent \u00eatre oubli\u00e9s... Oh et j'y pense, un truc malin pourrait \u00eatre de comparer les temps au tour et les temps de secteur. Ils devraient concorder normalement je pense. Ok je viens de finir la gestion des temps au tour... J'ai un code de genre 170 lignes pour juste nettoyer le resultat dans le cas ou des '.' n'ont pas \u00e9t\u00e9 trouv\u00e9s ou des ':' ont \u00e9t\u00e9 n'ont pas \u00e9t\u00e9 trouv\u00e9 ou si l'un des deux s'est transform\u00e9 en chiffre etc.. etc.. etc.. Le soucis c'est que la maintenant je me rend compte que les \u00e9carts entre les pilotes vont juste \u00eatre un enfer \u00e0 nettoyer... Ils peuvent aussi bien \u00eatre \"0.760\" comme \"1:34.456\" du coup... je sais pas vraiment comment faire pour tout nettoyer. Je pense que je vais juste en avoir rien \u00e0 faire et tant pis si de temps en temps c'est pas g\u00e9nial. Bon du coup j'ai pas pris en compte TOUS les cas possibles mais d\u00e9ja un certain nombre et c'est d\u00e9ja pas mal. Sur les diff\u00e9rents Grand Prix d'exemples ca a l'air de plut\u00f4t bien tourner ! Mais ca demande tellement de tests et de code que c'est un peu ridicule... La methode \"GetTimeFromPng\" fait d\u00e9ja presque 430 lignes \u00e0 cause de tous les cas possibles et tous les try catch. Ca peut para\u00eetre peu \u00e9l\u00e9gant mais j'ai essay\u00e9 de mettre des commentaires un peu partout pour permettre \u00e0 nimporte qui de comprendre ce qui se passe. J'ai aussi pu faire les pneus et maintenant (roulement de tambour) Ca marche (presque) En fait j'ai des soucis parfois quand les pneus sont un peu cach\u00e9s dans les permiers tours : Pneus cach\u00e9s Le soucis c'est que du coup le chiffre est un peu illisible... mais je pense que avec l'historique il devrait y avoir moyen de ne pas prendre en compte les chiffres de pneus pendant cinq tours apr\u00e8s le changement de pneu ou de simplement tenter de faire les calculs de pneus. Pour conclure la journ\u00e9e je pense que je devrais avoir le temps de faire un syst\u00e8me qui permet de refresh \u00e0 volont\u00e9. Par contre je viens de d\u00e9couvrir que quand un temps de secteur est en couleur on arrive pas \u00e0 le lire. Ah et la detection prend un peu moins de trois secondes sur mon pc je crois. Mais c'est seulement si les driver zones sont faites en m\u00eame temps mais en faisant ca de temps en temps ca crash et \u00e0 chaques fois c'est d'un endroit diff\u00e9rent du coup je comprend pas vraiment. Sinon ca prend dix secondes. Lundi 15 Mai 2023 Aujourd'hui c'est journ\u00e9e poster et visites. Comme on va avoir des visites de premi\u00e8res ann\u00e9es voire de terminales et que le soir c'est visite des parents. Je pense que j'ai finit de tout regrouper (\u00e0 part \u00e9videmment le traitement et le stockage des donn\u00e9es) ce qui veut dire que je suis pas dans une superbe posture. Il va falloir que je sois tr\u00e8s efficace dans la partie stockage de donn\u00e9es et mise en place du mod\u00e8le si je veux avoir une chance de rendre un joli travail de dipl\u00f4me. (et m\u00eame comme ca je peux voir que le temps commence \u00e0 manquer) Dans l'id\u00e9al je devrais avoir termin\u00e9 la partie stockage jeudi... Ce qui veut dire que je n'ai que trois jours pour le faire et que en plus jeudi je dois travailler depuis la maison. Ca va pas \u00eatre simple. Mais aujourd'hui je vais m'occuper d'adapter la documentation de l'OCR et faire la documentation de toute la partie r\u00e9cup\u00e8ration d'images et de la calibration. Bon au final la journ\u00e9e a \u00e9t\u00e9 un peu difficile. On a pas vraiment pu travailler l'apr\u00e8s midi car il a fallu pr\u00e9senter le projet environs 10 fois \u00e0 toutes les classes et \u00e0 des parents voire futurs experts. Les d\u00e9mos ont plut\u00f4t bien fonctionn\u00e9es j'en suis assez content. Mais ca veut dire que la partie doc a pas forc\u00e9ment pu \u00eatre totalement compl\u00eat\u00e9e mais demain il va falloir que je m'occupe de la suite du projet. Mardi 16 Mai 2023 Bon aujourd'hui c'est la partie stockage qui doit \u00eatre faite. Il y a plusieurs solutions possibles \u00e0 ce probl\u00e8me. Mais comme je n'ai besoin que d'une base de donn\u00e9e locale et que je ne veux pas que chaque utilisateur doive installer un serveur sur sa machine je pense que je vais utiliser une base de donn\u00e9es SQLITE. Il y a eu une petit intervention de mr Bonvin qui est venu me donner une id\u00e9e pour la partie OCR. En fait j'avais un soucis quand je voulais d\u00e9coder du texte de couleur. M\u00eame en appliquant un filtre de gris je n'arrivais pas \u00e0 faire reconnaitre les chiffres. Et il m'a dit que une bonne id\u00e9e cela pourrait de prendre la valeur max de chaque channel et de la faire appliquer \u00e0 tous ce qui blanchit assez bien l'image. J'ai d\u00e9cid\u00e9 d'exag\u00e8rer le blanchiment et cela donne des r\u00e9sultats plut\u00f4t... int\u00e9ressants... \"Filtre vanish oxy action sur un secteur violet\" Le soucis c'est que le violet est une couleur quand m\u00eame assez sombre alors il va falloir que je fasse un syst\u00e8me de treshold un peu sp\u00e9cial qui soit un peu plus sympa et qui prenne plus facilement des couleurs plus basses. Une methode \u00e0 laquelle j'ai pens\u00e9 pour detecter dans quel tour chaque pilote est serait de garder en m\u00e9moire toutes les infos de chaques pilotes au fur et \u00e0 mesure, et d\u00e8s qu'on ne recoit plus d'infos des secteurs ou que le temps au tour a chang\u00e9 on peut savoir qu'il faut passer au tour suivant. Pour detecter les arr\u00eats aux stands je peux essayer de detecter un changement de type de pneus ou de nombre de tours detect\u00e9s sur le m\u00eame pneu Au d\u00e9part je me disais que je pourrais peut-\u00eatre faire une base de donn\u00e9e SQLITE locale qui puisse \u00eatre reprise d'un Grand Prix \u00e0 un autre. Mais je me suis dit que de faire des statistiques inter Grand Prix \u00e9tait un peu en dehors du scope du projet. La base de donn\u00e9e sera donc cr\u00e9\u00e9e \u00e0 chaque d\u00e9marrage de l'app La mani\u00e8re dont je vois les choses en ce moment est qu'on aie deux sources de donn\u00e9es dans l'affichage final. On aurait une partie des infos qui seraient en direct depuis la detection : Les ecarts entre pilotes La position des pilotes Le dernier temps au tour Les derniers secteurs Les pneus Mais on aurait aussi des rubriques cr\u00e9\u00e9es de toutes pi\u00e8ces par des infos qui viennent de la BD Voici les rubriques qui pourraient \u00eatre int\u00e9ressantes \u00e0 voir dans l'interface finale : Les 3 ou 5 pilotes les plus rapides ces cinq derniers tours Le pilote qui a le plus fait de d\u00e9passements Les batailles en cours Les 3 pilotes les plus lents Un classement pond\u00e9r\u00e9 avec les 20s de moins pour tous les pilotes qui ne se sont pas encore arr\u00eat\u00e9s En gros l'id\u00e9e serait que on update une fois par tour et par pilote la base de donn\u00e9e avec des infos comme le temps au tour, le type de pneu etc... Voici les trois tables que je vais cr\u00e9er : Drivers Colonne Type de Data Description Tag ID INTEGER ID du pilote PRIMARY Name VARCHAR Nom du pilote NOT NULL Pitstops Colonne Type de Data Description Tag Lap INTEGER Tour durant lequel le Pitstop a \u00e9t\u00e9 effectu\u00e9 PRIMARY DriverID INTEGER Pilote qui a effectu\u00e9 le Pitstop PRIMARY Tyre VARCHAR Pneu chauss\u00e9 par le pilote NOT NULL Stats Colonne Type de Data Description Tag Lap INTEGER Tour durant lequel le Pitstop a \u00e9t\u00e9 effectu\u00e9 PRIMARY DriverID INTEGER Pilote qui concern\u00e9 PRIMARY Tyre VARCHAR Pneu chauss\u00e9 par le pilote NOT NULL LapTime INTEGER Temps au tour (MS) NOT NULL Sector1 INTEGER Temps du secteur 1 (MS) NOT NULL Sector2 INTEGER Temps du secteur 2 (MS) NOT NULL Sector3 INTEGER Temps du secteur 3 (MS) NOT NULL GapToLeader INTEGER Ecart avec le leader (MS) NOT NULL Position INTEGER Position pilote NOT NULL Ca n'est pas forc\u00e9ment d\u00e9finitif mais je pense que c'est d\u00e9ja un bon d\u00e9but pour faire des rubriques sympa. Je suis en train de tenter d'impl\u00e9menter le code pour permettre ensuite d'ajouter et retirer des choses facilement. Mercredi 17 Mai 2023 Aujourd'hui le but c'est de remplir la base SQLITE avec des infos. Si j'arrive \u00e0 tout remplir alors ca devrait pas \u00eatre trop compliqu\u00e9 de venir faire des requ\u00e8tes qui donnent de bonnes infos. Mais la probl\u00e9matique principale va \u00eatre de d\u00e9cider QUAND ins\u00e8rer des choses dans la base de donn\u00e9e. Je pense que le meilleur moyen serait de garder une liste de DriverData par pilote en piste qui puisse contenir toutes les data que l'on recoit. Et \u00e0 chaques fois que l'on veut ajouter \u00e0 cette liste on v\u00e9rifie si un tour a \u00e9t\u00e9 fait pour envoyer les data pr\u00e9c\u00e9dente et r\u00e9initialiser la liste. Il faut donc une liste de 20 listes de DriverData et une liste de int qui repr\u00e9senteront le num\u00e9ro du tour dans lequel chaque pilote se trouve. Pour detecter un arr\u00eat je pense que la meilleure mani\u00e8re est de regarder si le pilote a chang\u00e9 de place ou de type de pneu. Si je prend que les fois ou le pilote change place ET de pneus alors certains arr\u00eats pour ceux qui sont loins devant ou loins derri\u00e8re pourraient ne pas \u00eatre detect\u00e9s. Et si je ne prend que le changement de pneus cela pose un soucis car un pneu pourrait avoir \u00e9t\u00e9 chang\u00e9 pour un autre du m\u00eame type. Et parfois les valeurs de tours faits avec le pneu ne sont pas toujours bien lues et parfois sont compliqu\u00e9es \u00e0 retrouver car tous les pneus ne sont pas neuf quand ils sont chauss\u00e9s. Je crois que la detection de tours et des arr\u00eats aux stands est sur la bonne voie. Le seul soucis que j'ai c'est que pour faire du debug je suis un peu oblig\u00e9 d'attendre pendant 10min si je veux avoir de quoi faire des stats un peu sympa. Je me rend compte que parfois j'obtiens des r\u00e9sultats un peu bizarres mais que c'est la f1TV qui les donne. Par exemple de cas ou Alex Albon n'a que deux tours sur ses pneus alors que tout le monde devant et derri\u00e8re lui en a 3 et que on est au tour 4. \"wtf...?\" Ah et aussi parfois quand les pilotes se d\u00e9passent on se retrouve dans des situations plut\u00f4t rigolotes : \"Wtf...??\" COMMENT JE FAIS POUR DETECTER CA WIONDVIDNJDODVNSDIC Bon je me rend compte que clairement si je veux que mes data soient plus utiles il faudrait que je fasse un tout petit peu plus de taff sur quelques points dans l'OCR. Le nombre de tours des pneus (Les num\u00e9ros sont vraiment mal detect\u00e9s et parfois m\u00eame la couleur est pas dingue) Les 4 qui sont pris pour des 1 ou des 11 (pour les temps et les pneus) apr\u00e8s un test de plus longue haleine je suis content de voir que au moins mon programme peut tourner plus d'une heure sans crasher et qu'il peut \u00eatre fiable quand il veut. Jeudi 18 Mai 2023 Aujourd'hui c'est t\u00e9l\u00e9Travail forc\u00e9 et j'\u00e9tais scens\u00e9 aller au Grand Prix d'Imola ce qui malheureusement ne pourra pas se faire pour des raisons d'inondations. En effet la r\u00e9gion est clairement pas en \u00e9tat de recevoir un Grand Prix de Formule 1 et donc ce weekend c'est maison. Le but du jour c'est d'avancer la doc et de tenter d'am\u00e9liorer l'OCR pour que Lundi il soit relativement facile d'avancer sur l'interface de l'app finale. Je suis en train d'explorer une methode de detection de bords de sobel. Le seul soucis c'est que les r\u00e9sultats sont bons mais avec un vide au milieu des chiffres. Cela veut dire que parfois le temps est mal detect\u00e9. Mais il semble que pour le reste du temps cela se passe plut\u00f4t bien. Ca vaut peut \u00eatre le coup de modifier la gestion des erreurs. \"Artefacts de detection de sobel\" En fait le soucis avec ces artefacts c'est que parfois le temps au tour n'est tout simplement pas detect\u00e9. Dans l'exemple ci dessus, la reconnaissance de caract\u00e8res ne trouve tout simplement rien. Il faut donc que je trouve un moyen de corriger ces soucis. Il semblerait que en appliquant un tresholding un peu plus s\u00e9v\u00e8re en amont on arrive \u00e0 r\u00e9duire les artefacts \"Artefacts all\u00e8g\u00e9s\" ; Je crois qu'il faut faire attention avec les 'Bitmap.save' quand on utilise de l'asynchrone. le GDI+ aime pas des masses. Lundi 22 Mai 2023 BON ! Il ne reste plus beaucoup de temps ! Selon le planning cette semaine est la derni\u00e8re semaine de programmation. Il va donc falloir CHARBONNER !! Il ne me reste plus que une t\u00e2che \u00e0 vraiment faire (\u00e0 part les tests mais euuuu voila bon). J'essaie d'impl\u00e9menter un peu plus d'error handling mais c'est pas facile... Il y a tellement de choses qui peuvent mal tourner c'est infernal. Une chose qui serait bien serait de rajouter des points d'attente variables dans le code de l'emulateur un peu partout pour eviter de se retrouver bloqu\u00e9 \u00e0 chaque fois. L'int\u00e9r\u00eat serait que des gens avec une moins bonne connexion pourraient quand m\u00eame profiter du programme sans qu'il crashe 300 fois. Ce qui est frustrant c'est que va savoir pourquoi, maintenant, on arrive quasi jamais a avoir la page data... Genre sans deconner c'est une fois sur 5 que l'emulateur nous ressort la page Data et pas juste le feed. C'est absolument infernal. Je ne comprends pas pourquoi en plus. L'emulateur arrive bien \u00e0 cliquer sur le bon bouton mais m\u00eame comme ca ca ne veut pas. CA NA AUCUN SENS BORDEL. Sur une image Jjai de supers resultats pour les temps au tour mais d\u00e8s que l'image change PAF plus aucun temps n'est detect\u00e9. Ah non c'est bon c'est juste que VA SAVOIR POURQUOI les images sont en putain de resolution DEGEULASSE. Je ne comprends pas pourquoi ce matin particuli\u00e8rement le projet marche si mal. Par ce que d\u00e8s que l'image revient \u00e0 une r\u00e9solution normale c'est bon. Un autre soucis que j'ai est que je n'arrive pas \u00e0 paralleliser l'OCR ce qui fait que elle peut prendre parfois plus de 15 secondes. Et le probl\u00e8me avec ca c'est que la detection de tours et de pitstop est grandement impact\u00e9e si on a pas assez de data assez souvent. Je vais me focus sur le reste en attendant mais d\u00e8s que M.Bonvin apparait dans les parages je vais devoir l'alpaguer. J'ai ajout\u00e9 la possibilit\u00e9 d'essayer plusieurs fois de trouver le bouton fullscreen et de cliquer dessus plut\u00f4t que d'attendre dix secondes comme un con et esp\u00e8rer que ca fonctionne. Mais si apr\u00e8s 15 secondes d'essais il n'y arrive pas cela fait quand m\u00eame p\u00eater une erreur. Je pense que je vais m'occuper de la page de configuration maintenant. Voici \u00e0 quoi ressemblait la page de settings ce matin quand je suis arriv\u00e9. \"Ancienne page de settings\" Comme je pense que l'UI de cette page ne va pas vraiment changer d'ici la fin du projet je peux me permettre de lui faire une petite beaut\u00e9 car apr\u00e8s je ne pense pas y retoucher. Pour ca j'ai plusieurs \u00e9tapes comme choisir une palette de couleur, retirer l'inutile et choisir judicieusement le placement des items sur la form pour que cela soit le plus intuitif possible. J'y pense, il fuadrait peut-\u00eatre que je me trouve un logo ca pourrait rendre bien. Voila alors j'ai chang\u00e9 un tout petit peu ce \u00e0 quoi ressemble la page de settings et j'ai ajout\u00e9 du responsive pour que le user puisse mettre l'application en plein \u00e9cran. \"Nouvelle page de configuration\" Mais il manque un peu de couleurs et de d\u00e9tails pour que cela rende vraiment bien. Et apr\u00e8s quelques tentatives on se retrouve avec une page plut\u00f4t sympa je trouve : \"Nouvelle page de config\" Et elle est responsive : \"Nouvelle page de config en plein \u00e9cran\" Et j'ai fait quelques changements pour ce qui est des zones qui s'affichent pour qu'on les voie mieux. \"Nouvelle page de config en action\" Je trouve que franchement ca rend pas mal. Le reste de l'app sera dans ce style. J'ai mis pas mal de temps \u00e0 cr\u00e9er cette page, mais je pense que c'est important que la page de config soit propre. Et en plus tout le temps que j'ai pass\u00e9 ici n'est pas perdu car ensuite j'aurai simplement \u00e0 suivre les m\u00eames directives de style pour le reste de l'UI. Il faut aussi savoir que Windows Form n'est ps forc\u00e9ment le meilleur outil pour travailler avec le design. Truc tout b\u00eate par exemple qui m'a fait perdre 30 minutes. Il est impossible de retirer les bordures des objets \"GroupBox\". Ce que j'ai donc du faire ca a \u00e9t\u00e9 de dessiner un rectangle autour de la couleur du background pour que l'on ne voit plus les bordures et ensuite j'ai du redessiner le texte pour qu'il puisse s'afficher quand m\u00eame. C'est pleins de petites choses comme ca qui sont plut\u00f4t p\u00e9nibles et qui font perdre du temps mais je pense que c'est rentable de s'y attarder. Maintenant ce que je vais faire aujourd'hui et demain c'est l'affichage general de l'app. Je pense que je vais commencer par mettre des placeholder de l'app finale comme ca je saurai quoi implementer comme methodes de r\u00e9cup\u00e8ration demain. J'aimerais quand m\u00eame faire une interface sympa m\u00eame si les data sont pas parfaites. Par ce que je me dis que au pire si je montre une interface qui donne des infos inexacte mais qui a la bonne logique c'est toujours mieux que de ne pas montrer ce que ca pourrait faire avec des donn\u00e9es un peu plus int\u00e8gres. Autre point \u00e0 noter, je me suis rendu compte que ca pourrait \u00eatre potentiellement pas mal de trouver un moyen rapide de lancer l'appli avec un Grand Prix. Genre permettre de selectionner le preset et l'URL du Grand Prix sans avoir \u00e0 passer par la page de configuration. Je me suis rendu compte que c'\u00e9tait super chiant de devoir \u00e0 chaque fois le faire (m\u00eame si je me rends compte que normalement un user ne devrait pas lancer l'app autant) Voila ue premi\u00e8re version de l'App avec tous les placeholders : \"Premi\u00e8re version de la page principale\" Et c'est tout pour aujourd'hui ! Ce fut une journ\u00e9e remplie. Mardi 23 Mai 2023 Aujourd'hui le but c'est de remplir le framework de hier avec les bonnes Data. Je ne sais pas si je peux tout finir en un jour mais on va essayer. Bon j'ai eu une discussion anim\u00e9e avec M.Bonvin et il semble que je sois oblig\u00e9 de refaire \u00e0 peu pr\u00e8s tout mon code pour le rendre ne serait-ce qu'un peu optimis\u00e9. Bon au final j'ai perdu 6H de travail \u00e0 tenter de convertir mon code dans une version un peu plus optimis\u00e9e... Mais je me rend compte que c'est juste impossible... Il me faudrait au moins plusieurs jours pour faire correctement ce refactor et donc je vais tout simplement faire un git restore... C'est extr\u00eament frustrant mais bon... Pas le choix il semble. J'ai du \u00e9crire au moins 600 lignes de code et tout pars en fum\u00e9e. C'est une d\u00e9bauche d'\u00e9nergie absolument ph\u00e9nomenale. Apr\u00e8s ca valait le coup de tenter je pense. (J'ai envie de mourir) EN FAIT C'EST BON !! Il fallait juste que je croie en mon code original !!! J'ai r\u00e9ussi \u00e0 paralelliser mon ancien code. Il ne manquait presque rien mais M.Bonvin voulait absolument que je change le reste. Maintenant j'ai une detection qui se fait en quelques secondes c'est genial. Mercredi 24 Mai 2023 Alors hier je n'ai pas bien eu le temps d'expliquer ce que voulait que M.Bonvin. En fait mon programme actuellement utilise un d\u00e9coupage qui peut par\u00e2itre complexe. Et de par sa nature, il pensait qu'il \u00e9tait simplement impossible de paralelliser le traitement car trop complexe et trop couteux. Il voulait donc que je passe sur un traitement plus simple. L'id\u00e9e \u00e9tait que on s'occupe dabord de faire une liste de toutes les Windows et de les traiter toutes \u00e0 la fois pour \u00e9viter que les boucles soient trop complexes. Sauf que pour impl\u00e9menter un truc pareil c'est \u00e9norm\u00e9ment de code car cela va \u00e0 l'encontre totale de la facon dont mon projet fonctionne actuellement. Mais comme j'\u00e9tais ouvert \u00e0 d'autres solutions. J'ai pass\u00e9 six heures \u00e0 tenter de l'impl\u00e9menter. Il en aurait fallu au minimum deux jours soyons clair. Et en fait on s'est retrouv\u00e9s devant pleins de probl\u00e8mes qui ne se posent pas dans mon architecture originale. Par exemple. On a pas trouv\u00e9 de methode simple pour d\u00e9couper les images des fen\u00eatres de mani\u00e8re thread safe. Il aurait donc fallu ajouter des boucles en pr\u00e9alable pour tout d\u00e9couper et le faire de mani\u00e8re s\u00e9quencielle. Ensuite vient le probl\u00e8me que si on traite toutes les donn\u00e9es dans des boucless paralelle on perds leur position originale donc il faut faire une classe pour stocker les r\u00e9sultats temporaires. Il y a aussi le soucis que les Windows ont certe une position mais elle est relative au parent et \u00e0 l'image parente. Donc il faudra faire un syst\u00e8me qui convertis les windows en position absolue sur l'image. Ca peut para\u00eetre \u00eatre de simples changements mais deja il y en a pas mal d'autres et franchement m\u00eame si l'id\u00e9e originale aurait pu simplifier les choses. Les sacrifices que l'on doit faire pour la faire marcher sont juste trop moches et \u00e0 mon avis ne sont pas du tout aussi logiques que mon d\u00e9coupage original. Cette exp\u00e9rience m'a quand m\u00eame permis de me rendre compte des endroits dans mon code qui sont plus ou moins difficile \u00e0 maintenir et cela m'a fait me rendre compte que ma solution n'\u00e9tait pas forc\u00e9ment la plus simple pour tout le monde mais que mine de rien elle peut \u00eatre efficace. La je suis en train de rajouter les routes pour la vue. Je me suis dit que ca serait une bonne id\u00e9e de permettre aux users de cliquer sur un pilote pour avoir ses infos. Mais je me suis dit que ce qui serait encore plus cool serait de pouvoir cliquer sur un des temps au tour d'un pilote et qu'une petite fen\u00eatre s'ouvre pour indiquer les temps par secteurs. Mais en faisant ca je me rends compte qu'il y a quelques soucis dans la facon que je conserve les infos dans la DB et je peux voir directement quand la reconnaissance a du mal avec certains pilotes ou des positions. Ca arrive plus souvent que ce que je voudrais que un pilote soit mal detect\u00e9. Mais ce qui est dr\u00f4le c'est que c'est parfois sur une deux voire trois reconnaissance que le pilote n'est plus reconnu mais ensuite tout va bien. Il faut que je travaille un peu plus sur le filtrage de ces donn\u00e9es limites et peut-\u00eatre de voir si la reconnaissance de la position pourrait \u00eatre un peu v\u00e9rifi\u00e9e. Bon pour \u00eatre honn\u00eate je ne pense pas que le code qui concerne l'affichage soit le meilleur code que j'aie pu produire dans ma vie de d\u00e9veloppeur mais en m\u00eame temps je n'ai pas forc\u00e9ment le temps de le rendre magnifique. La le but est simplement que tout marche. (Et c'est un peu la m\u00eame phylosophie dans tout le reste du projet lol) Demain il me reste pas mal de choses \u00e0 faire et c'est la derni\u00e8re journ\u00e9e ou je peux les faire. Rendre la form plus jolie et changer les couleurs Rendre la form Responsive Ajouter les bons messages d'erreur qui vont bien Modifier les messageBox d'erreur pour qu'elles soient plus agr\u00e9ables \u00e0 utiliser Clean un peu le code mod\u00e8le vue controller Si j'ai le temps ajouter les bons commentaires les bonnes ent\u00eates partout Jeudi 25 Mai 2023 Bon bah le but aujourd'hui c'est de finaliser un peu le projet car la semaine prochaine c'est doc. Pas grand chose \u00e0 dire. J'ai pass\u00e9 la journ\u00e9e \u00e0 fix des petits bugs par ci par la. Voici des exemples de ce \u00e0 quoi ressemble l'app \u00e0 la fin de la journ\u00e9e : \"Screenshot de la page principale\" \"Screenshot de la page principale\" On se rend jamais compte mais c'est tellement long de r\u00e8gler chaque petit soucis un par un. Il y a tellement de possibilit\u00e9s de choses qui peuvent mal tourner ou qui ont un comportement diff\u00e9rent selon l'ordre dans lequel on fait les choses. Mais dans l'ensemble, m\u00eame si on est pas sur la meilleure interface que l'on aie vu dans l'histoire. Je trouve que elle fait quand m\u00eame le taff. Vendredi 26 Mai 2023 Aujourd'hui c'est d\u00e9part pour Monaco mais comme l'avion etait bien en retard j'ai pu avancer sur le nettoyage du code. Grand Prix de Monaco [Insert photos] Lundi 29 Mai 2023 Mon vol pour Geneve hier soit a \u00e9t\u00e9 annul\u00e9 et je dois donc prendre une deviation car tous les vols pour Geneve sont pleins. Je dois partir a 7h30 pour prende l'avion de 9H pour Nantes et de la bas je dois prendre un avion \u00e0 17h pour arriver \u00e0 18h30 \u00e0 l'a\u00e9roport de Geneve. C'est pas pratique car j'avais pr\u00e9vu d'avancer aujourd'hui et je suis oblig\u00e9 d'avancer comme je peux dans l'a\u00e9roport. J'avance encore sur le nettoyage rapide du code. Le but est que demain je puisse sortir la premi\u00e8re release en Beta et que je mette vraiment serieusement \u00e0 la Documentation. M.Jayr m'a \u00e9galement demand\u00e9 de lui donner le document d'\u00e9valuation interm\u00e9diaire. Il ne faut pas que j'oublie demain. J'ai mis des notes sur mon code au cas ou des gens viennent \u00e0 le lire. J'y d\u00e9cris les choses que j'aurais fait diff\u00e9remment ou qui pourraient para\u00eetre bizarre au tout venant. Mardi 30 Mai 2023 Bon aujourd'hui je dois encore avancer sur la partie nettoyage de code et avant de sortir la premi\u00e8re release Beta je vais tenter d'installer le projet sur un autre pc pour voir ce que je n'ai pas mentionn\u00e9 dans mon ReadMe. Bon j'ai pu rendre \u00e0 M.Jayr mon evaluation interm\u00e9diaire et j'ai fait les derni\u00e8res modifications sur le projet pour que je puisse sortir une release correcte. Maintenant je vais me mettre \u00e0 la documentation. Il va falloir que je revoie ce que j'ai d\u00e9ja \u00e9crit en ce qui concerne l'OCR car j'ai fait des modifications depuis et j'ai ajout\u00e9 la methode de SOBEL. Il faut peut-\u00eatre aussi que je parle vite fait dans la partie Emulation que j'ai du changer les variables d'environnement pour faire fonctionner le syst\u00e8me en 4K. Mercredi 31 Mai 2023 Doc Jeudi 1 Juin 2023 Bon je me suis rendu compte que je n'avais fait vraiment aucuns tests et que c'est franchement bof. Je pense que ce que je devrais faire pour faire des tests unitaires c'est prendre des exemples de chaque type de windows possibles en plusieurs exemplaires. Ensuite je note le r\u00e9sultat que j'attends et je regarde si ca me retourne la bonne valeur. Mais ca veut dire que ca va me prendre pas mal de temps de tout mettre en place mais ca m'aurait s\u00fbrement fait gagner beaucoup de temps si je l'avais fait d\u00e8s le d\u00e9but... Je pense que une bonne id\u00e9e serait de prendre trois Grand Prix et de prendre une photo de chaque type de window au d\u00e9but et \u00e0 la fin. Plus je regarde plus je me rend compte que ce pojet aurait carr\u00e9ment du \u00eatre en TDD (Test Driven Developement) par ce que ca m'aurait fait gagner un temps FOU. OK JE SUIS DEBILE POURQUOI J'AI PAS FAIT CA PLUS T\u00d4T ??? En fait ce que j'aurais du faire c'est prendre de gros \u00e9chantillons de toutes les types de windows et j'aurais un parfait framework pour savoir si j'ai am\u00e9lior\u00e9 mon OCR ou non. Voici les exemples que je vais utiliser pour verifier le bon fonctionnement de l'OCR : \"Dataset Ecarts\" ; \"Dataset Tours\" ; \"Dataset Noms\" ; \"Dataset Positions\" ; \"Dataset Sectors\" ; \"Dataset Tyres\" ; Je pense que c'est un set assez correct car j'ai essay\u00e9 de prendre un peu tous les cas possibles. Le seul qui m'inqui\u00e8te un peu c'est celui des pneus mais bon. C'est aussi celui qui m'inqui\u00e8te le plus en temps normal. Non mais c'est juste g\u00e9nial les tests en fait... j'avais pas vu que parfois ma detection de GAP TO LEADER comprenait le \"+1:34.567\" en \"61:34.567\" car le '+' \u00e9tait interpr\u00eat\u00e9 comme un 6. Sans les tests je ne m'en serais pas rendu compte. Ce qui est g\u00e9nial c'est que ca veut dire que si je veux am\u00e9liorer mon OCR j'ai juste \u00e0 mettre plus d'exemples dans le dossier de tests et de run les tests et voir ou il a des soucis. C'est un peu tard mais ca m'aurait fait gagner TELLEMENT de temps c'est absolument ridicule. Vendredi 2 Juin 2023 Aujourd'hui c'est de nouveau doc. Mais la je pense qu'il faut que je rajoute une rubrique \"Fonctionnement g\u00e9n\u00e9ral\" qui r\u00e9sume tr\u00e8s simplement toutes les \u00e9tapes du projet avec un bon diagramme. En fait c'est beaucoup plus dur que ce que je pensais de faire un bon diagramme qui explique tout sans \u00eatre illisible. J'ai mis une heure trente \u00e0 faire celui la : \"Diagramme fonctionnement g\u00e9n\u00e9ral\" J'ai pris pas mal de temps aussi \u00e0 faire ces trois autre diagrammes un peu plus graphiques qui montrent de mani\u00e8re un poil plus abstraite le fonctionnement des trois grosses parties du projet. \"Diagramme recup\u00e9ration d'images\" \"Diagramme OCR\" \"Diagramme Traitement\" Je pense qu'ils sont un peu plus faciles \u00e0 comprendre que le gros diagramme g\u00e9n\u00e9ral. Ce que je me dis c'est que je vais faire une section fonctionnement g\u00e9n\u00e9ral ou je vais expliquer les trois parties avec les petits diagramme et r\u00e9sumer avec le grand diagramme. Lundi 5 Juin 2023 Ce weekend j'ai voulu essayer le projet pour le Grand Prix de Barcelone qui s'est sold\u00e9 en un \u00e9chec cuisant... J'ai eu trois soucis pour l'utilisation du programme. Les voici dans l'ordre croissant d'importance et de difficult\u00e9 \u00e0 r\u00e8gler : Mon Laptop est incapable de rester plus d'une heure allum\u00e9 m\u00eame compl\u00eatement charg\u00e9 \u00e0 100% Le WIFI de chez moi a du mal \u00e0 g\u00e8rer plusieurs flux 1080p en m\u00eame temps et donc le temps de chargement est trop long ce qui me fait des erreurs 105 \"Ce que voyait le programme pendant les erreurs 105 ce dimanche\" Le fait que quand un flux est en live, quand on clique dessus, un nouveau bouton appar\u00e2it qui n'\u00e9tait pas pr\u00e9vu et qui nous propose de regarder depuis le d\u00e9but ou en live. Le soucis avec ce bouton c'est qu'il n'est pr\u00e9sent que pour les sessions live... Il va donc falloir attendre le prochain GP (Canada 18 Juin) pour faire un test en conditions r\u00e9elles. \"Ce que voyait le programme avant que j'essaie d'impl\u00e9menter le click auto\" J'ai essay\u00e9 de r\u00e8gler le probl\u00e8me en Live, le soucis c'est que j'ai un commentaire \u00e0 fournir pendant la course et donc je n'ai pas eu le temps de plus me pencher sur le cas. Le weekend du prochain Grand Prix je vais essayer de tester sur les sc\u00e9ances d'essais libres.le click du bouton et j'amenerai mon cable chez moi. Bon sinon aujourd'hui, comme d'hab, Doc... Je vais faire le manuel utilisateur. J'ai fait un manuel qui d\u00e9crit \u00e0 peu pr\u00e8s tout ce qui'il faut savoir pour bien utiliser l'app. Cela fait un document un peu long mais je pense que c'est nescessaire car c'est vraiment pas une app facile \u00e0 comprendre quand on ne vient pas du milieu de la F1 (et m\u00eame la...) Mardi 6 Juin 2023 Aujourd'hui je vais continuer \u00e0 documenter... Ma methode pour l'instant c'est juste de remplir les titres que j'ai pr\u00e9vu au d\u00e9part. Ensuite \u00e0 partir de jeudi (je pense que c'est \u00e0 partir de cette date que j'aurai un peu tout rempli) j'aimerais bien relire la grille d'\u00e9valuation et ensuite faire une lecture de mon journal de bord pour v\u00e9rifier que je n'ai rien oubli\u00e9. Et le but c'est de finir la doc Vendredi soir pour faire une derni\u00e8re release doc + projet. Un coll\u00e8gue M.Briard m'a pas mal aid\u00e9 avec la configuration de mon mkdocs et il a d\u00e9velopp\u00e9 une extension pour ajouter le code source au PDF final. La il est en train de regarder si il peut trouver un moyen de faire une table des figures qui nous est demand\u00e9e. (j'ai plus de 200 images dans ma documentation alors si c'est possible de ne pas avoir \u00e0 faire une table des figures \u00e0 la main je prends) Mercredi 7 Juin La je suis en train de parler de l'optimisation de mon application et je viens de me rappeller qu'il manquait des methodes avec de la paralellisation alors je vais les convertir avant de continuer la doc. En fait je viens de me rendre compte qu'aucunes de mes methodes de filtres n'\u00e9taient en parralel... Je ne sais pas si jaurai le temps de le faire aujourd'hui en fait Voici le code avant la paralellisation : public static Bitmap VanishOxyAction ( Bitmap inputBitmap ) { Rectangle rect = new Rectangle ( 0 , 0 , inputBitmap . Width , inputBitmap . Height ); BitmapData bmpData = inputBitmap . LockBits ( rect , ImageLockMode . ReadWrite , inputBitmap . PixelFormat ); int bytesPerPixel = Bitmap . GetPixelFormatSize ( inputBitmap . PixelFormat ) / 8 ; unsafe { byte * ptr = ( byte *) bmpData . Scan0 . ToPointer (); for ( int y = 0 ; y < inputBitmap . Height ; y ++) { byte * currentLine = ptr + ( y * bmpData . Stride ); for ( int x = 0 ; x < inputBitmap . Width ; x ++) { byte * pixel = currentLine + ( x * bytesPerPixel ); int blue = ( int ) pixel [ 0 ]; int green = ( int ) pixel [ 1 ]; int red = ( int ) pixel [ 2 ]; int max = Math . Max ( Math . Max ( blue , green ), red ); if ( max > 255 / 3 ) max = 255 ; pixel [ 0 ] = pixel [ 1 ] = pixel [ 2 ] = ( byte ) max ; } } } inputBitmap . UnlockBits ( bmpData ); return inputBitmap ; } Et voici \u00e0 quoi ca ressemble avec la paralellisation : public Bitmap VanishOxyAction ( Bitmap inputBitmap ) { unsafe { BitmapData bitmapData = inputBitmap . LockBits ( new Rectangle ( 0 , 0 , inputBitmap . Width , inputBitmap . Height ), ImageLockMode . ReadWrite , inputBitmap . PixelFormat ); int bytesPerPixel = System . Drawing . Bitmap . GetPixelFormatSize ( inputBitmap . PixelFormat ) / 8 ; int heightInPixels = bitmapData . Height ; int widthInBytes = bitmapData . Width * bytesPerPixel ; byte * PtrFirstPixel = ( byte *) bitmapData . Scan0 ; Parallel . For ( 0 , heightInPixels , y => { byte * currentLine = PtrFirstPixel + ( y * bitmapData . Stride ); for ( int x = 0 ; x < widthInBytes ; x = x + bytesPerPixel ) { int blue = currentLine [ x ]; int green = currentLine [ x + 1 ]; int red = currentLine [ x + 2 ]; int max = Math . Max ( Math . Max ( blue , green ), red ); if ( max > 255 / 3 ) max = 255 ; currentLine [ x ] = currentLine [ x + 1 ] = currentLine [ x + 2 ] = ( byte ) max ; } }); inputBitmap . UnlockBits ( bitmapData ); } return inputBitmap ; } Les performances n'ont pas beaucoup augment\u00e9 mais au moins comme ca c'est fait Jeudi 8 Juin 2023 Aujourd'hui, le but est de finir la documentation et de mettre les derniers commentaires dans le code et faire une premi\u00e8re release en BETA. Pour ce genre de travail un peu p\u00e9nible je conseille une bonne playlist de phonk. Ca permet d'\u00e9crire en rythme.","title":"Journal de bord"},{"location":"jdb.html#journal-de-bord","text":"","title":"Journal de bord"},{"location":"jdb.html#mercredi-29-mars-2023","text":"Premier jour du travail de dipl\u00f4me. Nous avons eu un briefing de mr Garcia et nous avons pu commencer \u00e0 pr\u00e9parer le travail. Nous avons eu les diff\u00e9rents fichiers nescessaires \u00e0 la bonne r\u00e9alisation du projet et je me suis mis \u00e0 faire les fichiers nescessaires La premi\u00e8re chose a \u00e9t\u00e9 de faire ce mkdocs dans lequel j'ai mis un fichier yml plut\u00f4t standart qui risque de changer au fur et \u00e0 mesure. Voici le premier yml : site_name: Documentation Diplome theme: name: material palette: # Palette toggle for light mode - media: \"(prefers-color-scheme: light)\" scheme: default toggle: icon: material/brightness-7 name: Switch to dark mode # Palette toggle for dark mode - media: \"(prefers-color-scheme: dark)\" scheme: slate toggle: icon: material/brightness-4 name: Switch to light mode markdown_extensions: - attr_list - md_in_html plugins: - glightbox - with-pdf Voici un example de \u00e0 quoi ca ressemble en forme de site \"Exemple mkdocs\" Ensuite il m'a fallu faire une version plus \u00e0 jour de mon cahier des charges car je n'y avait pas touch\u00e9 depuis novembre. J'ai envoy\u00e9 un mail \u00e0 mes enseignants pour qu'ils puissent y jeter un oeuil pour \u00eatre s\u00fbr que je n'ai rien chang\u00e9 qui les d\u00e9rangent. Monsieur Jayr m'a demad\u00e9 \u00e0 l'occasion de lui faire un planning type Gantt alors je me suis mis \u00e0 la t\u00e2che. J'ai fait un planning pr\u00e9visionnel et une l\u00e9gende les deux sont dispo dans le dossier planning de ce repertoire. Ensuite je me suis mis \u00e0 tout mettre sur git. A commencer par ce repertoire Et c'est deja la fin de la journ\u00e9e ! Demain j'avance un peu sur la doc avec ce que je peux d\u00e9ja remplir et je finis de pr\u00e9parer ce dont j'ai besoin pour commencer \u00e0 coder.","title":"Mercredi 29 Mars 2023"},{"location":"jdb.html#jeudi-30-mars-2023","text":"Aujourd'hui selon le planning je dois me charger des dernirers pr\u00e9paratifs pour commencer correctement. J'ai fait expr\u00e8s de prenre du temps pour ca au d\u00e9but pour ne pas me cr\u00e9er de soucis plus loin pendant le travail. Je vais envoyer par mail le planning que j'ai fait \u00e0 mes suiveurs. Ensuite je vais m'attaquer au squelette de la docmentation. Je vais essayer de remplir tout ce que je peux remplir dans un premier temps car cela tout ca de fait pour plus tard quitte \u00e0 modifier quelques aspects au fur et \u00e0 mesure. J'ai aussi d\u00e9sactiv\u00e9 mkdocs with pdf par ce que les r\u00e9sultats ne sont vraiment pas ceux que j'attends et cela ralentis \u00e9norm\u00e9ment le d\u00e9ploiment. J'ai aussi rassembl\u00e9 mes croquis pour le poster : \"Croquis Poster 1\" \"Croquis Poster 2\" On peut voir que dans un premier temps j'ai tent\u00e9 de faire un poster un peu plus stylis\u00e9 et marketing. Cependant apr\u00e8s avoir discut\u00e9 avec Mr Garcia et diff\u00e9rents profs dont un de l'HEPIA et ils m'ont indiqu\u00e9 que ce qui \u00e9tait attendu \u00e9tait moins du marketing qu'un diagramme de fonctionnement. On peut voir sur les derniers posters que le cot\u00e9 technique ressort de plus en plus. Le but sera de faire une version encore plus technique ou on peut voir les diff\u00e9rents fonctionnements de l'application avec les technologies utilis\u00e9es. Le d\u00e9fi cela va \u00eatre de faire un joli poster qui soit en m\u00eame temps vendeur et en m\u00eame temps rempli techniquement. Oh et j'ai eu un probl\u00e8me ou mon calvier et ma souris ne voulaient d'un coup plus fonctionner. Dans mon cas c'\u00e9tait un probl\u00e8me de power management des ports. J'ai eu le soucis sur mon pc fixe \u00e0 la maison et sur mon pc portable \u00e9galement. En gros de ce que j'ai compris le soucis c'est que le pc croit que un port est trop solicit\u00e9 niveau puissance et du coup d\u00e9cide de couper l'alimentation du port USB. J'ai pu r\u00e8gler le soucis en allant dans le device manager sous universal bus controller sous power management et en d\u00e9cochant la case qui indique que windows peut d\u00e9sactiver ce port. Je ne conseille pas ce fix si vous avez des composants de mauvaise qualit\u00e9 car cela pourrait \u00eatre une vraie alerte cependant le fait que mes composants sont plut\u00f4t haut de gamme et le fait que mon clavier et ma souris le fassent en m\u00eame temps et que ils fonctionnaient tr\u00e8s bien depuis plus de 4 ans me font penser que c'est juste une nouvelle mise a jour de windows qui est p\u00e9nible. Demain je vais pouvoir commencer \u00e0 coder pour de bon.","title":"Jeudi 30 Mars 2023"},{"location":"jdb.html#vendredi-31032023","text":"Aujourd'hui on s'occupe de la PT2 qui est la programmation de la r\u00e9cup\u00e8ration des informations des images. Je vais tester IronOcr Source : https://www.c-sharpcorner.com/article/ocr-using-tesseract-in-C-Sharp/ Doc : https://ironsoftware.com/csharp/ocr/docs/ Examples : https://ironsoftware.com/csharp/ocr/examples/simple-csharp-ocr-tesseract/ Avant d'utiliser la librairie je me demande si je dois utiliser un peu de post processing pour aider \u00e0 la reconnaissance. Je peux soit utiliser l'image crop\u00e9e directement : \"Image non trait\u00e9e\" Soit avec un filtre pour passer en noir et blanc laxiste \"Image trait\u00e9e laxiste\" Soit avec un filtre pour passer en noir et blanc stricte \"Image trait\u00e9e stricte\" Il va falloir faire des tests avec tous les noms et les chiffres pour trouver le plus efficace. Bon malheureusment Iron OCR semblait \u00eatre une bonne alternative mais c'est une librairie priv\u00e9e qui demande une license pour \u00eatre utilis\u00e9e. Il va falloir trouver autre chose. En utilisant la librairie \"Tesseract\" qui existe on peut faire de la reconnaissance de texte avec un code plut\u00f4t simple : TesseractEngine engine = new TesseractEngine ( tessDataFolder . FullName , \"eng\" , EngineMode . Default ); var tessImage = Pix . LoadFromMemory ( ImageToByte ( sample )); Page page = engine . Process ( tessImage ); string text = page . GetText (); Voici la methode ImageToByte : https://stackoverflow.com/questions/7350679/convert-a-bitmap-into-a-byte-array public static byte [] ImageToByte ( Image img ) { using ( var stream = new MemoryStream ()) { img . Save ( stream , System . Drawing . Imaging . ImageFormat . Png ); return stream . ToArray (); } } Voici le code pour traiter plusieurs textes sur une seule image : Page page = engine . Process ( tessImage ); // Get the iterator for the page layout using ( var iter = page . GetIterator ()) { // Loop over the elements of the page layout iter . Begin (); do { // Declare a Rect variable to hold the bounding box Rect boundingBox ; // Get the bounding box for the current element if ( iter . TryGetBoundingBox ( PageIteratorLevel . Word , out boundingBox )) { g . DrawRectangle ( Pens . Red , new Rectangle ( boundingBox . X1 , boundingBox . Y1 , boundingBox . Width , boundingBox . Height )); } // Get the text for the current element var text = iter . GetText ( PageIteratorLevel . Word ); tbxResult . Text += text . ToUpper () + Environment . NewLine ; } while ( iter . Next ( PageIteratorLevel . Word )); } Etonnament, avec plus de texte, des noms qui \u00e9taient autrefois mal reconnus sont parfaitement interpr\u00eat\u00e9s. Par exemple voici un exemple de reconnaisance de texte sur tous les pilotes : \"Screenshot de reconnaisance d'image complete\" On voit que le nom Leclerc est mal reconnu. Mais voici ce que cela donne quand on prend une image qui ne contient que le nom Leclerc : \"Screenshot de reconnaissance d'image crop\u00e9e\" On voit ici que le nom Leclerc est tr\u00e8s bien reconnu. Dans le premier exemple on peut voir que Tsunoda est reconnu comme \"Reticin\" ce qui n'est pas exactement pareil (lol) Et quand on isole le nom Tsunoda dans une image seule : \"Screenshot de reconnaissance de Tsunoda\" Il le lit \"RETLELYY\" ce qui n'est toujours pas exactement ca... Une meilleure r\u00e9solution pourrait peut-\u00eatre r\u00e9soudre le probl\u00e8me en partie. Jusqu'ici les images \u00e9taient en presque 720P ce qui donne ceci : \"Tsunoda en 720P\" Et j'ai lanc\u00e9 une r\u00e9cup\u00e8ration d'images en 1080p pour r\u00e9cup\u00e8rer ceci : \"Tsunoda en 1080P\" On peut voir une certaine diff\u00e9rence tout de m\u00eame. Et quand on lance la reconnaissance : \"Reconnaissance Tsunoda en 1080P\" \"Tsunoda n'est plus \u00e9crit \"RETLELYY\" mais \"TSUNDDA\" ce qui n'est pas parfait mais qui est d\u00e9ja beaucoup mieux. J'ai essay\u00e9 de mettre l'engine de Tesseract en mode \"JPN\" comme Tsunoda est un nom japonais mais sans succ\u00e8s j'ai le m\u00eame r\u00e9sultat. Comme la r\u00e9solution est meilleure je me suis dit que peut \u00eatre le filtre de passage en noir et blanc pourrait aider. J'ai \u00e9crit cette petite methode pour convertir l'image en noir et blanc : private static Bitmap ConvertToBlackAndWhite ( Bitmap inputBmp ) { const int BLACK_TO_WHITE_TRESHOLD = 200 ; Bitmap result = new Bitmap ( inputBmp . Width , inputBmp . Height ); for ( int y = 0 ; y < inputBmp . Height ; y ++) { for ( int x = 0 ; x < inputBmp . Width ; x ++) { Color pixelColor = inputBmp . GetPixel ( x , y ); if ( pixelColor . R <= BLACK_TO_WHITE_TRESHOLD && pixelColor . G <= BLACK_TO_WHITE_TRESHOLD && pixelColor . B <= BLACK_TO_WHITE_TRESHOLD ) { pixelColor = Color . FromArgb ( 0 , 0 , 0 ); } else { pixelColor = Color . FromArgb ( 255 , 255 , 255 ); } result . SetPixel ( x , y , pixelColor ); } } return result ; } Rien de bien dingue mais cela fonctionne et je peux jouer avec le BLACK_AND_WHITE_TRESHOLD pour changer son comportement. J'ai dabord test\u00e9 avec un treshold de 100 et le programme a r\u00e9ussi \u00e0 me sortir Tsunoda en deux mots ce qui \u00e9tait d\u00e9ja tr\u00e8s encourageant. Et apr\u00e8s avoir augment\u00e9 le Treshold... Tada : \"Tsunoda 1080P avec filtre\" Le programme arrive bien \u00e0 reconnaitre TSUNODA. Je pense que cette tactique ne fonctionnait pas avant car la resolution \u00e9tait trop faible et l'aliasing se m\u00ealait trop avec le texte pour \u00eatre utilisable. Cependant cette technique ne fonctionne pas sur tous les noms. Par example avec Leclerc : \"Leclerc 1080P avec filtre\" On r\u00e9cup\u00e8re \"Leeler'c\" ce qui n'est pas bon du tout. Mais en modulant le Treshold (ici \u00e0 150) On peut de nouveau voir Leclerc \u00eatre reconnu correctement \"Leclerc 1080P avec filtre 2\" Je pense que pour avoir de bons r\u00e9sultats il va falloir faire un algo qui : D\u00e9coupe l'image en autant de plus petites images pour avoir un mot par image. Teste voir si avec l'image originale un nom correspond \u00e0 la liste de pilotes existant. Si cela ne marche pas, on applique le filtre en modulant le Treshold. Dans le cas ou on aurait pas un match parfait on fait un algo qui cherche le nom le plus proche qui existe dans la liste de noms donn\u00e9s. Seulement voila, il n'y a pas que des lettres que l'on veut r\u00e9cup\u00e8rer. On veut surtout pouvoir r\u00e9cup\u00e8rer les chiffres. Pour les chiffres on va avoir des soucis \u00e9galement... Si on essaie directement la m\u00eame technique sans filtre on a des r\u00e9sultats comme celui ci : \"Tentative de reconnaisance du timing\" La virgule a tendeance \u00e0 se barrer ce qui est particuli\u00e8rement probl\u00e9matique. Cependant comme les chiffres ont beaucoup moins de possibilit\u00e9es que les lettres et qu'il n'y a pas de probl\u00e8me de langue on devrait pouvoir travailler \u00e0 faire des r\u00e8glage que l'on pourra ensuite utiliser. Avec un Treshold de 165 on arrive presque \u00e0 quelque chose d'int\u00e9ressant : \"Tentative 2 de reconnaissance du timing\" Le + n'est clairement pas compris mais ca n'est pas emb\u00eatant car c'est souvent redondant. On arrive cependant \u00e0 isoler 3 et 259. M\u00eame si la virgule n'est pas comprise cela veut dire qu'il est tout de m\u00eame possible de discriminer les secondes des milisecondes. Maintenant avec un temps au tour : \"Reconnaissance du timing au tour\" On arrive sans rien changer aux param\u00eatres \u00e0 isoler minutes secondes et milisecondes. Il semble que la reconnaissance de chiffre soit bien plus efficace que la reconnaissance de lettres. Il va falloir faire un test \u00e0 plus grande \u00e9chelle avec plus d'image pour se rendre compte de la precision. Demain ce qui serait bien cela serait que je fasse un jeu d'images avec des valeurs connues et que je fasse une batterie de tests pour voir \u00e0 quel point je peux faire confiance \u00e0 la reconnaissance des chiffres. Automatiser un syst\u00e8me de test de la sorte me sera tr\u00e8s utile dans le futur pour v\u00e9rifier la non regression de ma reconnaissance de texte quand je tenterai d'y faire des changements. Je suis toujours curieux cependant de voir comment le programme se d\u00e9brouille avec les nombres de tours qui se trouvent dans les icones de pneus.","title":"Vendredi 31/03/2023"},{"location":"jdb.html#lundi-3-avril","text":"Aujourd'hui on va faire un programme qui permet de cr\u00e9er un dataset qui permette de tester le programme de reconnaissance. Je pense que le meilleur moyen de faire serait un programme qui cr\u00e9e le dataset et qui ensuite peut tester diff\u00e9rentes methodes de reconnaissance. Par la m\u00eame occasion je peux d\u00e9velopper la technologie qui va permettre de d\u00e9couper une image en 20 lignes ce qui me servira ensuite pour la reconnaissance. Je me rend compte que pour faire un programme de tests je dois d\u00e9ja avoir une id\u00e9e de la structure de mon programme. Pour le moment je r\u00e9flechis \u00e0 un syst\u00e8me de \"Zones\" et de \"Windows\". L'id\u00e9e serait que une Zone est juste une sous partie d'image qui peut encore \u00eatre d\u00e9compos\u00e9 tandis que chaque Window contient une ou plusieurs informations \u00e0 r\u00e9cup\u00e8rer. J'ai essay\u00e9 de d\u00e9couper l'image pour que cela soit plus clair : \"Main zone\" Ici on peut voir que l'image est d\u00e9coup\u00e9e en plusieurs grandes zones. Dans un premier temps on ne s'occupe que de la premi\u00e8re. Ensuite : \"Driver zone #1\" On peut voir la que cette Main zone serait elle m\u00eame d\u00e9compos\u00e9e en plusieurs plus petites zones. Et ensuite chacunes de ces petites zones : \"Driver windows\" Sera d\u00e9compos\u00e9e en plusieurs windows qui elles sont des zones qui contiennent de l'information. En gros on aurait trois types de zone : Les zones qui contiennent d'autres zones Les zones qui contiennent des Windows Les Windows Cependant en y r\u00e9flechissant on pourrait tout \u00e0 fait avoir seulement des zones et des windows en faisant en sorte que les windows peuvent avoir une liste de windows et une liste de zones. Une zone serait compos\u00e9e de : Une image de d\u00e9part Un rectangle qui la positionne sur cette derni\u00e8re Une liste de zones (potentiellement vide) Une liste de windows (potentiellement vide) Une methode qui permet de r\u00e9cup\u00e8rer une image de la zone Une methode qui permet de lancer la reconnaissance sur chaque window Une window serait compos\u00e9e de : Une image de d\u00e9part (cela peut \u00eatre l'image crop\u00e9e de la zone parente peu importe) Un rectangle qui la positionne sur cette derni\u00e8re Une methode qui permet de r\u00e9cup\u00e9rer un image de la window Une methode qui permet de lancer la reconnaisance sur l'image (Chaque type de zone doit l'impl\u00e9menter) Dans chaque window on peut imaginer que la methode qui fait la reconnaissance au lieu de retourner un objet qui peut contenir nimporte quel type d'information peut envoyer ce qu'elle vient de r\u00e9cup\u00e8rer dans une base de donn\u00e9e ou un objet. Par exemple une Zone de pilote pourrait tr\u00e8s bien contenir un objet pilote et le donner \u00e0 ses windows qui rempliraient ce m\u00eame objet. C'est une reflexion plus stockage que OCR mais c'est int\u00e9ressant pour savoir ce que fait une window des donn\u00e9es qu'elle r\u00e9cup\u00e8re. Dans un premier temps je pense que les windows vont simplement \u00e9crire dans un fichier ce qu'elles trouvent chacunes dans le format qu'elles veulent. Pour comprendre pourquoi je me prend la t\u00eate il faut savoir que chaque window peut avoir acc\u00e8s \u00e0 pleins d'informations diff\u00e9rentes. On pourrait dire qu'elles retournent toutes une string sauf que si ca marche pour un temps au tour ou pour un nom de pilote, cela ne marche pas forc\u00e9ment pour un type de pneu ou un DRS ouver. Comme chaque window a plusieurs types de data elle devra elle m\u00eame se charger de comment la traiter ET de la stocker. Voila un diagramme qui r\u00e9sume comment je vois l'impl\u00e9mentation dans un premier temps : \"Diagramme d'explications\" Voici comment se pr\u00e9sente le squellette d'une Zone : public class Zone { private Bitmap FullImage ; private List < Zone > Zones ; private List < Window > Windows ; private Rectangle _bounds ; public Rectangle Bounds { get => _bounds ; private set => _bounds = value ; } public Bitmap ZoneImage { get { Bitmap sample = new Bitmap ( Bounds . Width , Bounds . Height ); Graphics g = Graphics . FromImage ( sample ); g . DrawImage ( FullImage , new Rectangle ( 0 , 0 , sample . Width , sample . Height ), Bounds , GraphicsUnit . Pixel ); return sample ; } } public Zone ( Image fullImage , Rectangle bounds ) { FullImage = ( Bitmap ) fullImage ; Init ( bounds ); } public Zone ( Bitmap fullImage , Rectangle bounds ) { FullImage = fullImage ; Init ( bounds ); } private void Init ( Rectangle bounds ) { Bounds = bounds ; Zones = new List < Zone >(); Windows = new List < Window >(); } public void AddZone ( Rectangle bounds ) { if ( Fits ( bounds )) Zones . Add ( new Zone ( ZoneImage , bounds )); } public void AddWindow ( Rectangle bounds ) { if ( Fits ( bounds )) Windows . Add ( new Window ( ZoneImage , bounds )); } private bool Fits ( Rectangle inputRectangle ) { if ( inputRectangle . X + inputRectangle . Width > Bounds . Width || inputRectangle . Y + inputRectangle . Height > Bounds . Height || inputRectangle . X < 0 || inputRectangle . Y < 0 ) { return false ; } else { return true ; } } } Le but est ensuite de cr\u00e9er diff\u00e9rent types de Zones. Par exemple la MainZone devra d\u00e9couper son contenu en 20 parties \u00e9gales pour tenter de chopper les 20 pilotes. Il serait cool de trouver un moyen de calibrer automatiquement. C'est peut-\u00eatre possible de calibrer avec de la reconnaissance de texte, on peut essayer de lancer la reconnaissance et voir ou on trouve du texte avec un peu de chance cela pourrait donner les positions et avec ca on peut peut-\u00eatre determiner des lignes. Et voici le squelette d'une window g\u00e9n\u00e9rique using System ; using System.Collections.Generic ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; using System.Drawing ; namespace OCR_tester { public class Window { private Bitmap FullImage ; private Rectangle _bounds ; public Rectangle Bounds { get => _bounds ; private set => _bounds = value ; } public Bitmap WindowImage { get { Bitmap sample = new Bitmap ( Bounds . Width , Bounds . Height ); Graphics g = Graphics . FromImage ( sample ); g . DrawImage ( FullImage , new Rectangle ( 0 , 0 , sample . Width , sample . Height ), Bounds , GraphicsUnit . Pixel ); return sample ; } } public Window ( Bitmap fullImage , Rectangle bounds ) { FullImage = fullImage ; Bounds = bounds ; } public virtual void RecoverInformations () { //Each Window type will have to implement its own way to recover the informations stored in the Window Image } } } Chaque Window pourra ainsi elle m\u00eame impl\u00e9menter la r\u00e9cup\u00e8ration d'informations. La facon de les retourner/stocker est encore un peu floue. Par exemple pour un temps au tour on peut imaginer que il fait une petite v\u00e9rification dans l'objet pilote et dans le tableau des tours si il n'y a pas deja une valeur et si il n'y en a pas une alors il peut l'ajouter. Maintenant je vais essayer de cr\u00e9er une Main window qui se calibre toute seule. Alors apr\u00e8s avoir bien gal\u00e8r\u00e9 avec l'interface pour permettre au user de cliquer sur la form pour voir les zones qu'il cr\u00e9e, j'ai pu cr\u00e9er un zone qui fait les dimensions de MainZone et j'ai pu lancer la reconnaissance sur l'image et voir ou il trouve du texte : \"MainZone avec carr\u00e9s de texte\" Maintenant il faut que je nettoie la liste de rectangle pour exclure ceux qui sont trop grands pour \u00eatre sur une seule ligne, ceux qui indiquent le nombre de tour en haut et ceux qui n'ont pas d'int\u00e9r\u00eats. On pourra ensuite isoler les lignes et cr\u00e9er une liste d'images. Pour ce qui est de la ligne qui contient les \"Gap interval last lap\" et des chiffres sur les tours pour les pneus etc je vais juste demander \u00e0 l'utilisateur de ne pas les prendre dans la screenshot. Comme ils contiennent des mots qui peuvent \u00eatre utilis\u00e9s plus loin dans les data je ne peux pas les blacklister et faire un syst\u00e8me qui s'occupe de les enlever si ils existent selon le position y me prendrait trop de temps pour rien. Apr\u00e8s avoir filtr\u00e9 un peu les resultats et enlev\u00e9 les zones beaucoup trop grandes, on se retrouve d\u00e9ja plus qu'avec ca : \"MainZone avec de meilleurs carr\u00e9s\" Comme on peut le voir, du c\u00f4t\u00e9 gauche de l'image on a beaucoup de choses reconnues mais avec beaucoup de tailles diff\u00e9rentes ce qui n'est pas id\u00e9al. Alors j'ajoute un filtre qui permet de ne selectionner que les data sur la droite. \"MainZone avec de meilleurs carr\u00e9s\" Maintenant il devrait \u00eatre possible de faire un algorythme qui ne prend que un seul carr\u00e9 par ligne. \"MainZone avec un seul carr\u00e9 par ligne\" Maintenant que on sait ou se trouve chaque ligne on peut faire un petit traitement et d\u00e9couper l'image en plusieurs windows. Et voila : \"Mainzone auto calibr\u00e9e\" Maintenant le programme peut cr\u00e9er des zones pour chaque pilote \"Images pilotes\" \"Zone d'un pilote\" Maintenant il faut que j'impl\u00e9mente un syst\u00e8me un peu similaire pour cr\u00e9er des windows. Voici la methode que j'ai cr\u00e9\u00e9 pour l'autocalibration : public void AutoCalibrate () { List < Rectangle > detectedText = new List < Rectangle >(); Zones = new List < Zone >(); TesseractEngine engine = new TesseractEngine ( Window . tessDataFolder . FullName , \"eng\" , EngineMode . Default ); Image image = ZoneImage ; var tessImage = Pix . LoadFromMemory ( Window . ImageToByte ( image )); Page page = engine . Process ( tessImage ); using ( var iter = page . GetIterator ()) { iter . Begin (); do { Rect boundingBox ; if ( iter . TryGetBoundingBox ( PageIteratorLevel . Word , out boundingBox )) { //var text = iter.GetText(PageIteratorLevel.Word).ToUpper(); //We remove all the rectangles that are definitely too big if ( boundingBox . Height < image . Height / NUMBER_OF_DRIVERS ) { //Now we add a filter to only get the boxes in the right because they are much more reliable in size if ( boundingBox . X1 > image . Width / 2 ) { //Now we check if an other square box has been found roughly in the same y axis bool match = false ; //The tolerance is roughly half the size that a window will be int tolerance = ( image . Height / NUMBER_OF_DRIVERS ) / 2 ; foreach ( Rectangle rect in detectedText ) { if ( rect . Y > boundingBox . Y1 - tolerance && rect . Y < boundingBox . Y1 + tolerance ) { //There already is a rectangle in this line match = true ; } } //if nothing matched we can add it if (! match ) detectedText . Add ( new Rectangle ( boundingBox . X1 , boundingBox . Y1 , boundingBox . Width , boundingBox . Height )); } } } } while ( iter . Next ( PageIteratorLevel . Word )); } foreach ( Rectangle Rectangle in detectedText ) { Rectangle windowRectangle ; Size windowSize = new Size ( image . Width , image . Height / NUMBER_OF_DRIVERS ); Point windowLocation = new Point ( 0 , ( Rectangle . Y + Rectangle . Height / 2 ) - windowSize . Height / 2 ); windowRectangle = new Rectangle ( windowLocation , windowSize ); Zones . Add ( new Zone ( ZoneImage , windowRectangle )); } } Ca peut paraitre pas \u00e9norme comme code mais pour tout mettre en place ca demande quand m\u00eame pas mal de reflexion. J'ai du clean un peu le code que j'avais fait pour permettre la selection de zones et ajouter la possibilit\u00e9 d'ajouter des windows sur une zone. J'ai juste quelques difficult\u00e9es \u00e0 les ajouter correctement, j'ai un offset tout pourri qui se met tout le temps \"Sainz coup\u00e9\" \"Perez coup\u00e9\" Cela doit \u00eatre un soucis lors de la detection de clic qui met un offset en trop. C'est vraiment p\u00e9nible en tout cas. Certes c'est moins fun de devoir manuellement indiquer ou sont les windows sur une ligne de pilote, mais je ne vois vraiment pas comment faire cela automatiquement. Le but c'est de faire une configuration qui puisse \u00eatre sauvegard\u00e9e comme ca pas besoin d'\u00e0 chaques fois le refaire. C'est bon ! J'avais juste oubli\u00e9 de changer le calcul d'offset entre le code de la zone et de la window. Note pour plus tard, il serait peut-\u00eatre judicieux de faire quelque chose pour la vue, les windows et les Zones ont le m\u00eame exact comportement pour la vue ce qui fait dupliquer du code. Mais au moins maintenant ca fonctionne : \"Ocr tester screenshot\" Et le programme va directement cr\u00e9er un dossier par pilote avec toutes les images de chaque Data le concernant : \"Dossier Perez\" ; Et c'est tout pour aujourd'hui je pense. Ce qui serait cool demain c'est que je puisse stocker d'une mani\u00e8re ou d'une autre ces fichiers de calibration et que je puisse les transf\u00e8rer vers le programme qui va s'occuper de d\u00e9coder et commencer gentillement \u00e0 d\u00e9coder les diff\u00e9rents types de data. Note pour quand je ferai les tests. Je pense que la meilleure id\u00e9e serait que je prenne pleins de photos du style et que je les mette dans un fichier CSV ou JSON avec leur contenu. Et ensuite je le fais passer en tests pour calculer la prescision de mon algo de d\u00e9codage. Pour le moment on est plut\u00f4t dans les clouts niveau planning.","title":"Lundi 3 Avril"},{"location":"jdb.html#mardi-4-avril","text":"Aujourd'hui je suis scens\u00e9 plut\u00f4t bosser sur l'interpretation des donn\u00e9es, mais une id\u00e9e m'a taraud\u00e9 l'esprit toute la nuit. Est-ce que je ne pourrais pas quand m\u00eame essayer de d\u00e9composer la zone de pilote directment comme pour la Main zone. Pour ce faire j'ai tent\u00e9 de faire comme pour la main zone c'est \u00e0 dire lancer la reconnaissance pour savoir ou \u00e9taient tous les champs de donn\u00e9es mais malheureusement je ne pense pas que cela va \u00eatre possible. En effet non seulement ici les champs sont de tailles tr\u00e8s vari\u00e9es, mais en plus la reconnaissance n'arrive pas \u00e0 en r\u00e9cup\u00e8rer le m\u00eame nombre sur chaque ligne ce qui risque d'\u00eatre complexe \u00e0 utiliser ensuite. La preuve : \"Tentative d'auto calibration\" ; Cependant tout n'est pas perdu ! Il y a peut-\u00eatre un moyen qui serait mieux en tous points. Le soucis avec ce type de reconnaissance c'est qu'on utilise beaucoup de ressources inutiles. On peut peut-\u00eatre hard coder la valeur des diviseurs et les utiliser pour cr\u00e9er des zones. Ok alors visiblement c'est un probl\u00e8me car il semble y avoir d'autres pixels de cette couleur dans l'image (Qui l'aurait cru lol) \"Tentative 2\" J'a tent\u00e9 de r\u00e9duire la tol\u00e9rance mais le soucis c'est que c'est soit trop soit pas assez Derni\u00e8re tentative, j'ai essay\u00e9 de prendre plusieurs pixels en hauteur pour chaque incr\u00e9ment de X et en faire la moyenne, et m\u00eame comme ca, impossible de trouver de mani\u00e8re efficace les zones. Je pense que je vais donc revert tous mes changements pour revenir \u00e0 la version ou on les choisissait manuellement. Pas mal de temps perdu mais bon c'est comme ca ca arrive Bon j'ai fait un revert mais j'ai ajout\u00e9 une feature importante. Les zones font la largeur indiqu\u00e9e par l'utilisateur mais elles font la hauteur max comme ca toutes les window font la m\u00eame hauteur et ca permet \u00e0 l'utilisateur de ne pas forc\u00e9ment \u00eatre ultra pr\u00e9cis dans sa selection. Ce qui nous donne : \"Resultat final\" Maintenant je dirais que les deux prochaines choses \u00e0 faire seraient de stocker ces zones dans un fichier JSON ou autre pour que la calibration puisse \u00eatre envoy\u00e9e directement dans le logiciel de reconnaissance et ensuite de faire une calibration sur des images qui font la taille qu'on aura pendant les Grands Prix. Pour le moment elles sont au format 16:10 qui est le format d'\u00e9crant de mon laptop. Pour le stockage j'imagine un fichier qui donne des indications assez simples qui permettent de reconstruire le total des zones quand il est import\u00e9 plutot que d'\u00e9crire les coordonn\u00e9es en dur pour chacunes. Chaque Grande zone va impl\u00e9menter une methode qui s'occupe de mettre tous ses enfants dans un fichier. { \"MainZone\" :{ \"x\" : 10 , \"y\" : 20 , \"width\" : 1450 , \"height\" : 1340 , \"DriverZone\" :{ \"x\" : 0 , \"y\" : 23 , \"height\" : 25 , \"Windows\" :[ { \"DriverPositionWindow\" :{ \"x\" : 0 , \"y\" : 0 , \"width\" : 35 } }, { \"DriverPositionChangesWindow\" :{ \"x\" : 0 , \"y\" : 0 , \"width\" : 45 } } ] } } } C'est le r\u00e9sultat auquel j'aimerais arriver. Mais pour y arriver il faut encore que je cr\u00e9e les diff\u00e9rents types de window. Cela veut dire que je dois d\u00e9cider quelles informations je vais r\u00e9cup\u00e8rer de la page. Par exemple je vais conserver la position du pilote mais au final les changements de positions sont difficiles \u00e0 lire et sont redondants. Si je garde un historique des positions des pilotes je peux calculer moi m\u00eame les changements. Pareil pour gap avec la voiture devant. Je pense que je vais juste garder l'information des \u00e9carts absolus et ensuite je pourrai toujours calculer la diff\u00e9rence entre les pilotes. Ca peut para\u00eetre b\u00eate car cela rajoute du calcul mais en r\u00e9alit\u00e9 le calcul de l'OCR est extr\u00eamement gourmand alors il faut que j'\u00e9vite le plus possible d'y faire recours. Il est bien plus rapide de calculer les \u00e9carts que d'essayer de reconnaitre le texte et le convertir en chiffre. J'ai visiblement ajout\u00e9 un bug dans mon code. Maintenant tous les pilotes ont la m\u00eame image quand on les selectionne. Mais visiblement ca n'\u00e9tait pas le cas avant car j'avais pu prendres des images de chaque pilote. J'ai pass\u00e9 3 minutes \u00e0 fixer un bug stupide j'ai un peu envie de br\u00fbler ma place de travail... Mais bon au moins maintenant cela fonctionne ! Toutes les images sont r\u00e9cup\u00e8r\u00e9es et ont un format correct avec le bon nom : \"Verstappen folder\" Avec un peu de code tr\u00e8s moche j'ai pu cr\u00e9er un fichier JSON qui contient les diff\u00e9rentes infos. Cependant en exportant TOUT on se retrouve avec un fichier de 1200 lignes ce qui n'est pas optimal. Mais quand on regarde, il devrait \u00eatre possible de faire un fichier qui ne contient que les infos d'un seul pilote car ensuite il y a simplement un offset \u00e0 appliquer sur la zone et les windows. Je vais donc pouvoir commencer enfin le logiciel de d\u00e9codage qui prend en entr\u00e9e un fichier JSON comme celui ci qui a \u00e9t\u00e9 g\u00e9n\u00e8r\u00e9 avec le programme de calibration. { \"Main\" : { \"x\" : 40 , \"y\" : 230 , \"width\" : 1845 , \"height\" : 719 , \"Zones\" : [ { \"DriverZone\" : { \"x\" : 0 , \"y\" : 3 , \"width\" : 1845 , \"height\" : 35 , \"Windows\" : [ { \"Position\" : { \"x\" : 2 , \"y\" : 0 , \"width\" : 32 }, \"GapToLeader\" : { \"x\" : 204 , \"y\" : 0 , \"width\" : 96 }, \"LapTime\" : { \"x\" : 413 , \"y\" : 0 , \"width\" : 105 }, \"Drs\" : { \"x\" : 526 , \"y\" : 0 , \"width\" : 81 }, e t c... } ] } } ] } } Dans le futur il faudrait ajouter d'autres choses comme par exemple les diff\u00e9rents pilotes pr\u00e9sents sur le Grand Prix et ce genre d'infos. Quoique je vais l'ajouter d\u00e9ja maintenant et plus tard je mettrai en place la feature acessible depuis l'interface. Mais le hardcoder maintenant me permet d\u00e9ja de mieux coder l'autre c\u00f4t\u00e9. Ce programme n'est en aucun cas termin\u00e9 et je vais devoir travailler encore un peu dessus pour qu'il soit utilisable correctement mais au moins il fonctionne \u00e0 peu pr\u00e8s. Exemple du json avec les noms de pilotes: { \"Main\" : { \"x\" : 37 , \"y\" : 238 , \"width\" : 1851 , \"height\" : 713 , \"Zones\" : [ { \"DriverZone\" : { \"x\" : 0 , \"y\" : -5 , \"width\" : 1851 , \"height\" : 35 } } ] }, \"Drivers\" : [ \"Leclerc\" , \"Verstappen\" , e t c... ] } Maintenant je vais m'attaquer au d\u00e9codage. Demain je dois finir le d\u00e9codage du JSON et je dois commencer \u00e0 impl\u00e9menter la reconnaissance des textes. Voire m\u00eame des pneus etc si j'y arrive.","title":"Mardi 4 Avril"},{"location":"jdb.html#mercredi-5-avril","text":"Bon la il faut vraiment que je finisse assez vite la lecture du JSON et la reconstruction des zones pour commencer la reconnaissance. J'ai pris beaucoup de temps \u00e0 faire le programme de calibration mais je pense que c'est essentiel de prendre ce temps maintenant. (BTW il faudra quand m\u00eame retourner faire une plus jolie version par ce que la ca marche mais c'est tout) Bon apr\u00e8s pas mal de boulot je pense avoir r\u00e9ussi. Dans le nouveau programme on arrive \u00e0 r\u00e9cup\u00e8rer les diff\u00e9rentes zones : \"JSON decode result\" Un conseil de notre professeur M.Bonvin a \u00e9t\u00e9 de cr\u00e9er des Releases de versions qui ne fonctionnent pas ou pas tr\u00e8s bien. J'ai donc publi\u00e9 une premi\u00e8re release de l'OCR_TEST qui fonctionne vite fait. J'ai seulement un petit soucis, comme je recr\u00e9e compl\u00eatement la structure des driver zones avec seulement la premi\u00e8re, il y a un petit d\u00e9calage car entre les zones il y avait un gap. Ce qui fait que si la premi\u00e8re zone est parfaitement centr\u00e9e : \"Centered driver\" La vingti\u00e8me ne l'est plus exactement : \"Uncentered Driver\" Pour ca j'ai essay\u00e9 de mettre un espacement arbitraire mais c'est complexe. Je vais plut\u00f4t tenter de faire une diff\u00e9rence entre la taille de la zone compl\u00eate et de la taille additionn\u00e9e de toutes les fen\u00eatre et diviser le resultat entre toutes les fen\u00eatres. Ca n'est pas parfait mais au moins maintenant les donn\u00e9es ne touchent plus les bords de la fen\u00eatre. Et voila ! Maintenant avec le fichier de configuration en Json on arrive \u00e0 r\u00e9cup\u00e8rer toutes les infos comme si elles avaient \u00e9t\u00e9 envoy\u00e9es directement depuis l'app de calibration mais sans le processing time ! \"Verstappen folder 2 On peut donc ENFIN passer au d\u00e9codage de ces FICHUES donn\u00e9es. Je vais pouvoir impl\u00e9menter ce que j'ai fait dans le projet de test de d\u00e9codage. Gr\u00e2ce \u00e0 mon d\u00e9coupage initial qui m'a pris du temps \u00e0 impl\u00e9menter on a enfin un truc qui marche m\u00eame si je n'ai impl\u00e9ment\u00e9 que la reconnaissance de noms. \"Image reconnaissance propre\" Si on se rappelle du syst\u00e8me de window et de zones dans le diagramme plus haut, c'est assez facile de comprendre comment je m'y suis pris. En gros on des listes et des listes de listes de zones, c'est la partie un peu plus technique car il y a des zones qui peuvent contenir d'autres zones etc. Je vais commencer par la reconnaissance de noms. Voici le tableau de pilotes de 2023 \"Drivers\" : [ \"Leclerc\" , \"Verstappen\" , \"Hamilton\" , \"Alonso\" , \"Russel\" , \"Gasly\" , \"Stroll\" , \"Sainz\" , \"Hulkenberg\" , \"Norris\" , \"Tsunoda\" , \"Piastri\" , \"Zhou\" , \"Ocon\" , \"Magnussen\" , \"Perez\" , \"Sargeant\" , \"De Vries\" , \"Bottas\" , \"Albon\" ] ET voici le tableau de pilotes de 2022 : \"Drivers\" : [ \"Leclerc\" , \"Verstappen\" , \"Sainz\" , \"Perez\" , \"Hamilton\" , \"Russel\" , \"Magnussen\" , \"Gasly\" , \"Ocon\" , \"Alonso\" , \"Tsunoda\" , \"Bottas\" , \"Zhou\" , \"Albon\" , \"Stroll\" , \"Schumacher\" , \"Hulkenberg\" , \"Norris\" , \"Latifi\" , \"Ricciardo\" ] Je les notes ici car J'ai souvent besoin de changer selon le dataset que j'utilise. Dans le futur je ferai s\u00fbrement un grand dataset qui prend des pilotes de reserves et des pilotes juniors pour que dans le cas ou un pilote est remplac\u00e9 dans l'ann\u00e9e il n'y a pas besoin de tout recalibrer avec l'application. Apr\u00e8s une discussion avec M.Bonvin j'ai d\u00e9cid\u00e9 de tester 3 valeurs de convertion en noir et blanc et si je ne trouve pas un match exact je prend le nom le plus proche. Pour trouver la string la plus proche je pense que je vais utiliser quelque chose qui s'appelle la technique de Levenshtein. De ce que j'ai compris c'est un algorythme qui permet de donner une metric de diff\u00e9rence entre deux strings. Bon et \u00e9videmment il ne faut pas se tromper dans la liste des pilotes GENRE NE PAS OUBLIER QUE GEORGE RUSSELL COMPORTE DEUX WFNEWIEWV DE \"L\" A LA FIN DE SON NOM CE QUI POURRAIT ENGRANGER 2H DE DEBUGGING POUR RIEN ASK ME HOW I KNOW joker laugh J'ai vraiment un soucis avec Tsunoda, Il a trop tendeance \u00e0 le confondre avec \"TSUNDDA\" et pour des raisons obscures, quand j'applique l'algorythme de Levenshtein le plus proche n'est pas \"Tsunoda\" mais \"Sainz\" iniuvbwdiucbiubisc POURQUOI !!??!! Je pense que cela demande moins de changements de lettres enfin bon c'est quand m\u00eame pas id\u00e9al. Il va falloir que je trouve un moyen de le repond\u00e9rer. C'est dommage par ce que cela marche super avec Alonso Verstappen et Albon. J'ai un peu modifi\u00e9 la methode et j'ai fait en sorte d'envoyer tous les noms en majuscules en me disant que cela pourrait r\u00e9duire le nombre de changements. Et ca a march\u00e9 !! Cela va s\u00fbrement demander plus de tests pour \u00eatre bien s\u00fbr que tout fonctionne nikel, cependant pour le moment ca marche parfaitement avec les pilotes de 2022. Pour ce qui est de la reconnaissance de chiffres, j'ai d\u00e9ja fait une partie du boulot le premier jour alors je vais juste reprendre \u00e0 partir de l\u00e0. Je r\u00e9cup\u00e8re une string de ce type \"1:35.123\" le soucis c'est que les : se transforment parfois en . ou inversement mais bon ca devrait pas \u00eatre trop dur \u00e0 g\u00e8rer. Il faut que je transforme cette string en nombre de milisecondes (Du moins je pense que c'est le meilleur moyen pour ensuite pouvoir facilement comparer et stocker l'information). Cela fait que 1:35:123 en milisecondes donne : 1 * 1000 * 60 => 60'000 35 * 1000 => 35'000 123 => 123 Total : 60'000+35'000+123 => 95'123ms Et pour l'affichage : Minutes = ms / 60'000 secondes = (ms - (minutes/60'000))/1000 ms = ms - ((minutes 60'000) + (secondes * 1000)) Et on se retrouve avec 1:35:123 Maintenant apr\u00e8s un peu de temps pour nettoyer la string etc on se retrouve avec un r\u00e9sultat comme le suivant : Position : 0 Gap to leader : 0:0:0 Lap time : 2:15:123 DRS : False Tyre : Undefined laps with the tyre : 0 Driver name : LECLERC Sector 1 : 0:31:323 Sector 2 : 0:42:340 Sector 3 : 0:0:0 Evidemment pareil pour les autres pilotes Et je me rend compte que j'ai encore tout cass\u00e9 car le laptime ne devrait pas \u00eatre 2:15 mais 1:35... Voila apr\u00e8s une heure de debugging et des ajouts pour nettoyer les chaines on se retrouve avec : Position : 0 Gap to leader : 0:0:0 Lap time : 1:35:123 DRS : False Tyre : Undefined laps with the tyre : 0 Driver name : LECLERC Sector 1 : 0:31:323 Sector 2 : 0:42:340 Sector 3 : 0:0:0 Note: le traitement commence \u00e0 devenir long, il serait peut-\u00eatre int\u00e9ressant d'utiliser un seul Tesseract Engine ou de voir ce qui prend autant de temps, on d\u00e9passe la seconde de traitement ce qui est un peu ma limite. Apr\u00e8s on peut toujours tester de rajouter du multicore processing mais c'est pour une autre fois. Demain je m'occupe de r\u00e8gler les soucis que j'ai avec la prescision de ces temps au tour et j'\u00e9sp\u00e8re pouvoir m'occuper aussi de la position des pneus et du DRS. J'aimerais finir tout ca cette semaine.","title":"Mercredi 5 Avril"},{"location":"jdb.html#jeudi-6-avril","text":"Une id\u00e9e m'est pass\u00e9e par la t\u00eate pendant que je dormais, dans la liste des pilotes, quand ils sont \u00e0 plus d'un tour de retard avec le leader (Ce qui arrive normalement dans presque tous les Grand Prix) on a pas des minutes mais une string qui montre \"+1 Lap\" ou \"+2Laps\" ce qui est \u00e9videmment un probl\u00e8me. Je pense qu'une bonne facon d'envoyer l'info serait de retourner -1 -2etc... \u00e0 la place des milisecondes, mais encore faut-il detecter le nombre de tours Je devrais \u00eatre en train de commencer la documentation de commment tout ce que j'ai fait fonctionne. Cependant je ne me vois pas faire ca tant que je n'ai pas au moins r\u00e9cup\u00e8r\u00e9 toutes les infos au moins un peu proprement. Cela veut dire que je commence officiellement \u00e0 prendre du retard. (Sachant que si je finis tout aujourd'hui une journ\u00e9e de doc suffira largement le terme est un peu exag\u00e8r\u00e9 mais bon) Bon pour la reconnaissance des temps c'est sp\u00e9cial... Le filtre semble ne pas changer grand chose ce qui est probl\u00e9matique et ca n'est vraiment pas fiable. Voici quelques expemples avec un treshold de 100: \"11ZSD\" Cette image est comprise comme \"11ZSD\" 42340 Cette image est comprise comme \"42340\" \"ZZAEB\" Et celle ci \"ZZAEB\"... Ce qui... n'est pas bon du tout... J'ai essay\u00e9 de trouver un fichier d'entrainement sp\u00e9cifiquement fait pour les digits. J'ai essay\u00e9 de blacklister les chars non voulus pour tenter d'obliger Tesseract \u00e0 trouver des chiffres. Avec la premi\u00e8re option, les r\u00e9sultats ne sont pas meilleurs voire pires. Avec la seconde option c'est d\u00e9ja pas mal mieux mais on perd compl\u00e8tement la possibilit\u00e9 de detecter les mots comme \"LEADER\" ou \"LAP\" et de toute facon ca n'est pas parfait. Le soucis c'est que si je n'ai pas des donn\u00e9es fiables c'est juste impossible de faire des calculs et de l'affichage correct... Il faut absolument que je trouve une solution. J'ai essay\u00e9 d'utiliser de l'interpolation our augmenter la taille de l'image et ensuite appliquer mon filtre pour retirer le flou mais sans succ\u00e8s... Pourtant la on se retrouve avec des images plut\u00f4t claires : \"Clear1\" Ici le programme trouve \"44301\" \"Clear2\" Et ici \"A5151\"... On a toujours les m\u00eames probl\u00e8mes. Bon je suis all\u00e9 me renseigner sur l'OCR et je me suis dit que j'allais tenter de faire les choses proprement. Je vais faire passer plusieurs \u00e9tapes de postProcessing avant de donner l'image \u00e0 Tesseract. GrayScale Tresholding InvertColors Scaling Dilatation Ce qui donne : \"Original\" \"Grayscale\" \"InvertColors\" ; \"Resize\" ; \"Dilatation\" Ce qui ne change : Roulement de tambour RIEN kjd viuwvuirnvoirenbf Tout ca pour rien... C'EST BON !!! Bon en fait au final le probl\u00e8me \u00e9tait une mauvaise configuration de Tesseract. Je vais devoir un peu nettoyer tout ca. Mais avec les changements de l'image on a des r\u00e9sultats BEAUCOUP plus pr\u00e9cis et potentiellement utilisables. La je vais devoir faire un serieux travail de nettoyage et simplification de mon code par ce que la c'est vraiment un chantier vu le nombre de choses que j'ai du essayer. J'ai du aussi beaucoup modifier la gestion de l'image ce qui donne : \"Clean\" Et la on a des r\u00e9sultats qui sont vraiment bons. J'ai pu ajouter assez facilement la detection de position comme c'est simplement un chiffre. On se retrouve maintenant avec ce genre de retours : Position : 1 Gap to leader : 8:33:51 Lap time : 2:19:123 DRS : False Tyre : Undefined laps with the tyre : 0 Driver name : LECLERC Sector 1 : 0:31:828 Sector 2 : 0:42:940 Sector 3 : 0:0:0 Position : 2 Gap to leader : 0:3:259 Lap time : 23:12:392 DRS : False Tyre : Undefined laps with the tyre : 0 Driver name : VERSTAPPEN Sector 1 : 0:38:119 Sector 2 : 0:0:0 Sector 3 : 0:0:0 Il ne manque plus que l'impl\u00e9mentation de la reconnaissance du DRS et des Pneus Et non... je viens de me rendre compte que mon programme a encore cass\u00e9 car le tap time ne peut pas \u00eatre 23 min lol. J'ai un nouveau magnifique probl\u00e8me... Les points et les deux points sont interpr\u00eat\u00e9s comme des chiffres ... Give me a F * * break... J'ai du mal \u00e0 comprendre pourquoi ils ne sont d\u00e9tect\u00e9s comme tels que maintenant. Bon alors il semblerait les temps au tour aie besoin d'un ordre tr\u00e8s pr\u00e9cis pour fonctionner. Grayscale InvertColors Tresholding Resize * 2 Resize * 2 Et la on a des r\u00e9sultats un peu mieux. Bon demain il faut absolument que je me charge de r\u00e8gler tous ces probl\u00e8mes et que je commence la reconnaissance des pneus et de DRS par ce que je commence \u00e0 \u00eatre en retard.","title":"Jeudi 6 Avril"},{"location":"jdb.html#vendredi-6-avril-2023","text":"Alors aujourd'hui c'est le dernier jour avant de commencer \u00e0 \u00eatre en retard pour de bon. J'ai r\u00e9ussi \u00e0 r\u00e8gler le probl\u00e8me des temps au tour, des gaps, et des secteurs. Dans le processus j'ai cass\u00e9 la detection de position mais ca devrait pas \u00eatre TROP compliqu\u00e9. Et voila ... Apr\u00e8s seulement plus de dix heures de gal\u00e8re, si on donne cette image au programme et le bon JSON le programme nous retourne : Position : 1 Gap to leader : 0:05:059 Lap time : 1:39:123 DRS : False Tyre : Undefined laps with the tyre : 0 Driver name : LECLERC Sector 1 : 0:31:828 Sector 2 : 0:42:940 Sector 3 : 0:00:000 Position : 2 Gap to leader : 0:03:259 Lap time : 1:39:392 DRS : False Tyre : Undefined laps with the tyre : 0 Driver name : VERSTAPPEN Sector 1 : 0:31:749 Sector 2 : 0:00:000 Sector 3 : 0:00:000 Evidemment le GapToLeader est faux sur leclerc car il est leader mais bon ca je pourrai toujours Hardcoder que le premier a jamais de GapToLeader. Bon j'ai eu beaucoup de soucis que je ne vais pas mentionner ici car ce sont simplement des soucis de logique de programmation pour trouver un DRS ouvert ou non. Au final la technique que j'utilise et qui marche plut\u00f4t bien pour le DRS est que je prend la premi\u00e8re image de DRS et je la d\u00e9clare comme valeur \u00e9talon d'un DRS non actif, en effet dans 99% des cas le leader n'a pas de DRS (cela peut arriver alors il faudra donc juste verifier que les pilotes sont bien \u00e0 moins de deux secondes les uns des autres pour confirmer). Ensuite cette valeur \u00e9talon je la calcule en fonction du nombre de pixels verts dans l'image et si il y a plus de 30% de pixels verts en plus c'est que le DRS est activ\u00e9 ex: Ceci est un DRS ferm\u00e9: \"Closed DRS\" Ceci est un DRS ouvert: \"Open DRS\" Cela marche \u00e0 peu pr\u00e8s tout le temps mais dans le pire des cas on peut toujours verifier que les pilotes sont bien proches pour detecter les potentiels rares cas de faux positifs. J'ai pu augmenter les performances en utilisant un seul engine pour tout le monde et en arr\u00eatant d'utiliser GetPixel et SetPixel qui sont simplement des horreurs \u00e0 utiliser. Mais elles ne sont pas encore bonnes Le soucis avec la detection de pneus cependant, c'est qu'il n'est pas possible d'utiliser la reconnaissance pour savoir ou regarder la couleur car cela ne marcherait pas. Je ne peux pas faire trop de post processing car je dois conserver la couleur Je ne peux pas hardocder un endroit ou aller regarder car cela \u00e9volue tout le long du Grand Prix. Bref c'est la gal\u00e8re. En y r\u00e9flechissant je me suis dit qu'une bonne id\u00e9e pourrait \u00eatre de partir de la droite de la zone du pneu en regardant au milieu de la hauteur. Puis continuer vers la gauche jusqu'\u00e0 ce que je rencontre une couleur diff\u00e9rente. Je pourrai ensuite faire une zone un peu vers la gauche qui devrait contenir les infos du pneu et sur laquelle il sera possible de faire de le reconnaissance de couleur et de la reconnaissance de chiffres. J'ai d\u00e9termin\u00e9 que le background n'\u00e9tait jamais plus clair que #505050 et que donc nimporte quelle couleur qui aurait plus que 50 dans un seul des channels serait consid\u00e8r\u00e9e comme une couleur cassant le background Pour arriver \u00e0 cette conclusion je me suis amus\u00e9 un peu avec les couleurs pour jouer avec les limites de mon algorythme : \"Color fun\" Et je crois que j'ai eu une bonne id\u00e9e, avec une petite methode bien faite on arrive \u00e0 de supers r\u00e9sultats : private Rectangle FindTyreZone () { Bitmap bmp = WindowImage ; int currentPosition = bmp . Width ; int height = bmp . Height / 2 ; Color limitColor = Color . FromArgb ( 0 x50 , 0 x50 , 0 x50 ); Color currentColor = Color . FromArgb ( 0 , 0 , 0 ); Size newWindowSize = new Size ( bmp . Height , bmp . Height ); while ( currentColor . R <= limitColor . R && currentColor . G <= limitColor . G && currentColor . B <= limitColor . B && currentPosition > 0 ) { currentPosition --; currentColor = bmp . GetPixel ( currentPosition , height ); } //Its here to let the new window include a little bit of the right side int offset = Convert . ToInt32 (( float ) newWindowSize . Width / 100f * 20f ); int CorrectedX = currentPosition - ( newWindowSize . Width - offset ); if ( CorrectedX <= 0 ) return new Rectangle ( 0 , 0 , newWindowSize . Width , newWindowSize . Height ); return new Rectangle ( CorrectedX , 0 , newWindowSize . Width , newWindowSize . Height ); } \"Tyres\" Maintenant cela devrait \u00eatre beaucoup plus simple de trouver la couleur g\u00e9n\u00e9rale et le nombre de tours. Donc ce que je fais c'est que je fais une reconnaissance de texte sur l'image r\u00e9duite. Si je trouve une lettre c'est facile Ca me donne le type de pneu et ca me dit que c'est le premier tour avec. Si c'est un nombre alors je fais la moyenne de toutes les couleurs de l'image et je prend la couleur de pneu la plus proche. Voici les diff\u00e9rentes couleurs de pneus : SOFT : #FF0000 MEDIUM : #f5bf00 HARD : #d9d8d4 INTER : #00a42e WET : #2760a6 \"Tyre colors\" Les couleurs de pneus peuvent changer de temps \u00e0 autres, par exemple cette r\u00e8gle de pneus est arriv\u00e9e en 2019 et avant il y avait beaucoup plus de couleurs mais dans une volont\u00e9 de rendre le sport plus facile \u00e0 comprendre \u00e0 la t\u00e9l\u00e9 cela a \u00e9t\u00e9 simplifi\u00e9. Je ne pense pas que cela va changer dans les ann\u00e9es qui viennent alors tout est hardcod\u00e9. Je pense que j'ai des soucis avec la detection de texte et de couleur car ma zone est trop grande. Alors bon j'\u00e9crit ces lignes apres des heures de tests. Il semble que la principale difficult\u00e9 avec ces pneus c'est que les chiffres ou lettres sont minuscules. Il est donc extr\u00eamement difficile de faire une reconnaissance ne serait-ce qu'un peu fiable.. Je fais de mon mieux pour tenter de r\u00e8gler le soucis cependant c'est vraiment complexe. Je commence \u00e0 devenir fou, je tente tout et nimporte quoi pour permettre \u00e0 mon algo de fonctionner et m\u00eame quand je fais du post processing comme pas possible il me retourne toujours nimporte quoi... \"5i t'inqui\u00e8tes\" Ici le programme va trouver '5i'... En fait c'est complexe d'expliquer tout ce que je fais car je change tout en boucle en essayant et en ratant ce qui prend des heures. Pour aujourd'hui j'abandonne je vais simplement rentrer chez moi et y r\u00e9flechir cette nuit mais je ne vois pas comment mieux faire la... C'est terrible par ce que je sens que je ne suis pas bien loin.","title":"Vendredi 6 Avril 2023"},{"location":"jdb.html#vacances","text":"Bon je vais un peu laisser de c\u00f4t\u00e9 la detection de chiffres pour me pencher un peu plus sur la d\u00e9tection de couleur. Par ce que techniquement si j'arrive \u00e0 toujours parfaitement la detecter alors je pourrais me passer des chiffres car ils sont redondant si je construit un historique de pneus. J'ai r\u00e9ussi \u00e0 fix mon probl\u00e8me de mauvaise detection de couleur de pneus. Du moins je crois. Seulement j'ai quand m\u00eame un souci, les fen\u00eatres de pneus avec une lettre n'ont pas assez de couleur pour \u00eatre d\u00e9tect\u00e9s. Je vais donc essayer de detecter les cinq lettres possibles et si il ne trouve pas alors je pourrai tenter de detecter les chiffres sans lettres ce qui devrait grandement aider. Le but est encore une fois de r\u00e9duire les possibilit\u00e9s de Tesseract. Je me rend de plus en plus compte que le plus important c'est de r\u00e9duire le scope le plus possible. Moins il y a de mots et lettres et de chiffres possibles meilleure sera la reconnaissance. Bon ca ne veut toujours pas marcher maintenant le 11 est interpr\u00eat\u00e9 comme trois I ou comme un M... J'en ai marre sans rire c'est vraiment p\u00e9nible. Alors j'\u00e9crit ces lignes deux jours plus tard et me rend compte avec horreur que toutes mes modifications sur ce journal de bord n'ont pas \u00e9t\u00e9 auvegard\u00e9e... yess.. Bon pour faire simple, j'ai r\u00e9ussi \u00e0 rendre la detection de couleurs bien plus efficace en r\u00e9duisant la taille de l'image et en ne prenant pas en compte les couleurs que l'on d\u00e9tecte comme \u00e9tant partie int\u00e9grante du background. Par exemple quand on a une image comme celle ci : \"Avec background\" qui contient un background alors que ci dessous, on l'a enlev\u00e9. \"Sans background\" La diff\u00e9rence est t\u00e9nue mais elle permet de grandement am\u00e9liorer la prescision de la reconnaissance de couleurs. Pour ce qui est du nombre de tours je me suis rendu compte que cela n'\u00e9tait d\u00e9ja pas tr\u00e8s utile car avec l'historique on devrait pouvoir le d\u00e9duire. Mais bon pour la forme je me suis dit que cela serait quand m\u00eame une bonne id\u00e9e de v\u00e9rifier avec la reconnaissance. J'\u00e9tais quasi certain que le soucis \u00e9tait le fait que l'on voie le contour du logo de pneu qui faisait que la reconnaissance avait du mal. Et j'avais raison ! En les enlevant (Ce qui n'a pas \u00e9t\u00e9 simple) J'ai pu avoir des chiffres beaucoup plus proches de la r\u00e9alit\u00e9. En m\u00eame temps je ne vois pas bien comment j'aurais pu faire mieux : \"Super 11\" Je suis quand m\u00eame assez fier de voir que j'ai r\u00e9ussi \u00e0 part de l'image que on peut voir un peu plus haut et automatiquement la transormer en celle ci-dessus. J'ai donc pu retirer le round autour du chiffre et cela m'a permit de pouvoir d\u00e9zoomer un peu et c'est avec ca que les lettres ont pu \u00eatre mieux reconnues : \"Super H\" \"Super M\" Maintenant je pense qu'il ne reste \"plus qu'\u00e0\" nettoyer un peu tout ce code qui traine de partout pour tout faire fonctionner et impl\u00e9menter un peu de parrallel processing ainsi que de l'asynchrone pour ne pas bloquer le reste du programme. Par ce qu'il faut savoir que en l'\u00e9t\u00e2t, le programme met 25 secondes \u00e0 d\u00e9marrer et consomme presque 2GB de Ram. Certes cela ne veut pas dire que la reconnaissance \u00e0 elle seule prend 25 secondes car au d\u00e9marrage il y a aussi la lecture du fichier de config et la cr\u00e9ation des window etc.. En r\u00e9alit\u00e9 la partie strictement OCR prend dans les 12s si on en croit la fonction stopWatch de C#. Et quand on change d'image la reconnaissance prend 9s. Dans tout les cas c'est BEAUCOUP trop. J'aurais eu comme objectif de faire une reconnaissance toutes les secondes. Je ne sais pas bien si cela va \u00eatre possible mais en tout cas le but va \u00eatre de s'en rapprocher. Pour \u00eatre plus exact et permettre une comparaison, voici les stats exactes Avec un fichier d'images vide : Loading - 11.8s Splitting d'images - 90ms OCR - 12.5s Avec un fichier d'images plein : Loading - 10.8s Splitting d'images - 80ms Ocr - 11.6s En passant d'une image \u00e0 l'autre : Loading - NaN Splitting d'images - 50ms Ocr - 8.8s Donc on peut voir que les deux endroits ou le programme prend le plus de temps c'est au premier d\u00e9marrage quand il faut lire le fichier et setup les windows etc... Et l'OCR qui prend un temps fou. Ce qui est pratique c'est que les presque 2gb de ram sont utilis\u00e9s que au lancement et ensuite l'application n'en utilise que quelques centaines de mb. Le processeur lui tourne entre 10 et 20% ce qui ne va pas durer :) Je vais m'occuper dabord du loading. J'ai essay\u00e9 d'utiliser un Parrallel.For au moment de la cr\u00e9ation des windows, le probl\u00e8me c'est que visiblement les objets windows sont beaucoup trops complexes et utilisent trop de ressources partag\u00e9es pour \u00eatre vraiment thread Safe. J'\u00e9sp\u00e8re que je n'aurais pas trop de soucis avec ca qu'en j'en viendrai \u00e0 l'optimisation de l'OCR... Ce qui me rend fou c'est que cette boucle toute nulle prend plus de dix secondes \u00e0 s'executer et je ne comprend pas bien pourquoi. for ( int i = 0 ; i < NUMBER_OF_DRIVERS ; i ++) { Point tmpPos = new Point ( 0 , FirstZonePosition . Y + i * FirstZoneSize . Height - Convert . ToInt32 ( i * offset ) /*- (i* (FirstZoneSize.Height / 32))*/ ); Zone newDriverZone = new Zone ( MainZoneImage , new Rectangle ( tmpPos , FirstZoneSize )); Bitmap zoneImg = newDriverZone . ZoneImage ; newDriverZone . AddWindow ( new DriverPositionWindow ( zoneImg , new Rectangle ( driverPositionPosition , driverPositionArea ))); newDriverZone . AddWindow ( new DriverGapToLeaderWindow ( zoneImg , new Rectangle ( driverGapToLeaderPosition , driverGapToLeaderArea ))); newDriverZone . AddWindow ( new DriverLapTimeWindow ( zoneImg , new Rectangle ( driverLapTimePosition , driverLapTimeArea ))); newDriverZone . AddWindow ( new DriverDrsWindow ( zoneImg , new Rectangle ( driverDrsPosition , driverDrsArea ))); newDriverZone . AddWindow ( new DriverTyresWindow ( zoneImg , new Rectangle ( driverTyresPosition , driverTyresArea ))); newDriverZone . AddWindow ( new DriverNameWindow ( zoneImg , new Rectangle ( driverNamePosition , driverNameArea ))); newDriverZone . AddWindow ( new DriverSector1Window ( zoneImg , new Rectangle ( driverSector1Position , driverSector1Area ))); newDriverZone . AddWindow ( new DriverSector2Window ( zoneImg , new Rectangle ( driverSector2Position , driverSector2Area ))); newDriverZone . AddWindow ( new DriverSector3Window ( zoneImg , new Rectangle ( driverSector3Position , driverSector3Area ))); MainZone . AddZone ( newDriverZone ); } Alors que Zone.AddWindow c'est simplement : public virtual void AddWindow ( Window window ) { Windows . Add ( window ); } Et windows est simplement une liste. Donc ca ne peut pas \u00eatre ca qui prend du temps. Et les windows que je cr\u00e9\u00e9 ont ca comme code : public DriverPositionWindow ( Bitmap image , Rectangle bounds ) : base ( image , bounds ) { Name = \"Position\" ; } Sachant que le constructeur de base d'une Window c'est : public Window ( Bitmap image , Rectangle bounds ) { Image = image ; Bounds = bounds ; Engine = new TesseractEngine ( TESS_DATA_FOLDER . FullName , \"eng\" , EngineMode . Default ); Engine . DefaultPageSegMode = PageSegMode . SingleLine ; } Sachant que TesseractEngine est en statique et que donc il ne devrait... OHLLALALALALALALALALA je suis un imb\u00e9cile... J'ai juste \u00e0 changer ce constructeur avec ca: if ( Engine == null ) { Engine = new TesseractEngine ( TESS_DATA_FOLDER . FullName , \"eng\" , EngineMode . Default ); Engine . DefaultPageSegMode = PageSegMode . SingleLine ; } ET le loading ne prend plus que 2-300 ms... Bon c'est une tr\u00e8s belle am\u00e9lioration pour pas tr\u00e8s ch\u00e8r mais bon c'est un peu b\u00eate... Bon je pense que 2-300ms c'est une dur\u00e9e correcte surtout que ca n'est appel\u00e9 qu'une fois pour le lancement. On peut passer \u00e0 la suite maintenant. Alors il y a un grand soucis avec la parallellisation de l'OCR... Tesseract n'est pas par d\u00e9faut une classe \"Thread safe\" ce qui veut dire que je ne peut utiliser de parallell.Foreach sur mes windows pour acc\u00e8l\u00e8rer le traitement drastiquement. Je pourrais par exemple avoir une instance de Tesseract par window sauf que cela fait 20 pilotes * 9 windows chacuns ce qui donne 180 instances ce qui n'est tout simplement pas raisonnable. Je vais donc essayer de voir avec l'utilisation de methodes asynchrones qui me permettraient de faire un genre de flux tendu de reconnaissance. J'avoue que la je navigue un peu \u00e0 vue, je me base sur diff\u00e9rentes infos que je trouve sur des sites un peu perdus et sur chatGPT, j'esp\u00e8re que j'arriverai \u00e0 trouver une solution car 10 secondes de reconnaissance c'est vraiment beaucoup trop. Alors le soucis avec un Engine unique entre toutes les windows c'est qu'il n'est pas possible de process plusieurs images \u00e0 la fois. Je vais donc retirer l'engine unique pour voir si en cr\u00e9er un par window me permet de passer en multithreading. La grande question sera : Est-ce que les ressources suppl\u00e9mentaires que vont prendre la cr\u00e9ation de tous ces engines va compenser enti\u00e8rement le temps gagn\u00e9 avec la paralellisation. Pour stocker les donn\u00e9es dans un premier temps je vais cr\u00e9er un objet DriverData. Ce qu'il y a de pratique avec ca, c'est que je pourrais ajouter du code de v\u00e9rification de certaines donn\u00e9es directement dedans avant de les donner \u00e0 la suite du programme. Et on peut m\u00eame imaginer une impl\u00e9mentation d'une liste de DriverData pour avoir l'historique. Ce qui serait cool ca serait de grouper toutes ces data avec un num\u00e9ro de tour. Placer ensuite la liste de Data dans une DB serait ainsi super simple. Mais il va falloir savoir quoi mettre, quelles infos sont redondantes et prendre en compte le fait que un tour affich\u00e9 sur la page de la F1TV n'est accompli que par certains des premiers pilotes. D'autres pilotes peuvent \u00eatre dans des tours pr\u00e9c\u00e9dents si ils ont du retard. Il faudra r\u00e9fl\u00e9chir \u00e0 cela quand je viendrai au mod\u00e8le. Bon pour y arriver j'ai du faire de gros changements et le r\u00e9sultat n'est peut-\u00eatre pas aussi cool que ce que j'aurais voulut... Voici un petit point sur les performances maintenant J'ai \u00e9galement d\u00e9sactiv\u00e9 le dump d'images. Pour le moment j'ai tout mis en commentaire mais cela pourrait \u00eatre int\u00e9ressant de faire en sorte de pouvoir l'activer en changeant une ou deux variables Au d\u00e9marrage : Loading - 113ms Splitting d'images - 14ms Ocr - 7s En passant d'une image \u00e0 l'autre : Loading - 113ms Splitting d'images - 13ms Ocr - 5s Alors clairement les stats montrent qu'il y a eu un changement mesurable mais bon je pensais pouvoir en gagner un peu plus... Je soupconne la cr\u00e9ation d'engines d'\u00eatre \u00e0 l'origine de ces performances presque d\u00e9cevantes. Autre soucis, il semble que plus je change d'image plus la detection est lente et plus je consomme de RAM. Il va falloir que je travaille encore un peu. J'ai tent\u00e9 de mettre un stopwatch sur une des cr\u00e9ations d'engine Tesseract et le r\u00e9sultat me parait fou... Plus d'une seconde c'est dingue. J'ai test\u00e9 dans d'autres endroits du code et effectivement il semble que la cr\u00e9ation d'un engine prenne entre une et deux secondes ce qui est une ETERNITEE what ! Donc il faut optimiser tout ca. Une id\u00e9e serait de d\u00e9composer le threading mais cela me demanderait un gros refactor et je n'ai pas envie d'en refaire un la... Sinon, une fois qu'ils sont cr\u00e9\u00e9s ils ne prennent pas de temps du tout. Cr\u00e9er une fois tous les engines et ensuite les utiliser pourrait \u00eatre une bonne id\u00e9e. Cela prendrait longtemps au load mais ensuite les reconnaissances devraient \u00eatre super rapides. Ok alors ca c'est d\u00e9ja plus ce \u00e0 quoi je m'attendais ! On est de nouveau \u00e0 plus de 10s de loading time mais on est descendu \u00e0 deux secondes par OCR. (Bon autre soucis, l'utilisation de la RAM est ridicule plus de 2gb mais ce qui m'inqui\u00e8te c'est que j'ai l'impression qu'elle augmente plus on change d'image) J'ai r\u00e8gl\u00e9 (en partie) le soucis en obligeant le GC (Garbage Collector) \u00e0 collecter apr\u00e8s chaque detection. m\u00eame apr\u00e8s 50 detections l'utilisation de la ram se stabilize autour des 2GB. Bon en paralellisant la cr\u00e9ation des Engines le soucis c'est que cela demande d'allouer beaucoup trop de m\u00e9moire d'un coup alors le programme se fige pendant genre cinq secondes avant de tout cr\u00e9er. Du coup m\u00eame si la cr\u00e9ation est plus rapide, on se retrouve avec un temps total plus long... Je pense que l'on va devoir se contenter de ces dix secondes. Bon la j'allais tenter de faire la documentation mais je viens de me rendre compte que la detection de temps au tour est pas vraiment encore id\u00e9ale... J'ai r\u00e9ussi \u00e0 changer un petit peu le programme de reconnaissance pour rendre la reconnaissance un peu meilleure mais cela a drastiquement augment\u00e9 le temps requis pour d\u00e9coder... On arrive \u00e0 3.5 secondes. Je vais tenter de rajouter un peu de parralell processing sur les boucles de traitement voir si cela peut aider. Alors effectivement cela aide pas mal, on arrive maintenant \u00e0 faire une detection presque tout le temps en dessous de la seconde. Et j'ai aussi du changer un peu le fonctionnement de la detection des Temps au tour. Et voila je pense que je vais m'arr\u00eater la pour la partie d\u00e9codage. Je ne pense pas que je peux facilement faire mieux que ca et il faut que j'avance dans d'autres parties du projet. Je vais pouvoir commencer \u00e0 documenter un peu toute la partie OCR. Il faut que je prenne le temps de le faire bien car c'est la partie la plus int\u00e9ressante du projet et ou je pense que j'aurai le plus essay\u00e9 de choses qui vallent le coup d\u00eatres racont\u00e9es. J'ai aussi pass\u00e9 pas mal de temps sur le poster du projet. J'avais fait des croquis au crayon de ce \u00e0 quoi je pensais, cependant apr\u00e8s de longues discussions avec M.Garcia ils n'\u00e9taient pas forc\u00e9ment tr\u00e8s bons car ils ne repr\u00e9sentent pas assez bien le fonctionnement du projet et sont un peu trop marketings. Du coup j'ai fait une premi\u00e8re version au propre : \"Poster V1\" Mais je n'\u00e9tais pas forc\u00e9ment content du r\u00e9sultat et il manquait des choses je trouve comme par exemple l'utilisation de Selenium. J'ai donc repass\u00e9 des heures \u00e0 faire une seconde version : \"Poster V2\" La police d'\u00e9criture n'est pas encore la bonne mais cela va venir. Mais je pr\u00e9f\u00e8re d\u00e9ja beaucoup cette version \u00e0 la premi\u00e8re. Je ne sais pas encore si la version finale sera une version plus travaill\u00e9e de ce poster ou compl\u00eatement autre chose mais pour l'instant je suis \u00e0 peu pr\u00e8s content de cette version. Je le trouve un tout petit peu trop brouillon ou avec trop d'infos mais il m'a \u00e9t\u00e9 de nombreuses fois reproch\u00e9 de ne pas assez montrer le fonctionnememt interne et je ne peux pas faire plus simple. L'ajout des nombres pour compartimenter le projet ajoute de la structure mais je me demande si cela suffit. Maintenant que je suis \u00e0 peu pr\u00e8s content de mon code pour l'OCR je vais commencer sa documentation. (Uniquement son fonctionnement interne pas comment s'en servir car cela va changer) Bon j'ai cr\u00e9\u00e9 u nouveau projet selenium mais m\u00eame avec les bonnes libraries je n'arrivais pas \u00e0 faire fonctionner firefox j'avais toujours une erreur \"OpenQA.Selenium.WebDriverException: 'Cannot start the driver service on http://localhost:51481/'\" et j'ai pu r\u00e8gler le probl\u00e8me en t\u00e9l\u00e9chargeant directement le gecko driver depuis le git https://github.com/mozilla/geckodriver/releases et utiliser le fichier directement dans le service : var service = FirefoxDriverService . CreateDefaultService ( AppDomain . CurrentDomain . BaseDirectory + @\"geckodriver-v0.27.0-win32\\geckodriver.exe\" ); FirefoxOptions options = new FirefoxOptions (); var driver = new FirefoxDriver ( service , options ); Le seul probl\u00e8me c'est que du coup il faut tout le temps d\u00e9placer le fichier dans le dossier bin si je clone le projet. Il faudra faire un installeur dans la version finale qui s'occupe de tout je pense. Je me suis dit que j'allais garder la doc pour le retour des vacances quand j'aurai un bureau un clavier et un setup complet un peu propres. Bon il va falloir que je parle de la r\u00e9cup\u00e9ration de cookie. J'ai d\u00e9ja pu travailler lors d'un poc sur la meilleure facon de prendres des screenshots de la F1TV : Avoir une page chrome ouverte avec le feed en plein \u00e9cran et un programme qui prend des captures d'\u00e9crans. Avoir une cam\u00e9ra qui prend en photo l'\u00e9cran au cas ou chrome et Firefox emp\u00eachent la prise de captures d'\u00e9crans. R\u00e9cup\u00e8rer directement le feed en faisant du reverse engeneering de la plateforme. Simuler un chrome en background qui prenne des screenshot sans qu'on aie \u00e0 le voir. Dans toutes ces options, je dirais que la pire \u00e9tait celle de la cam\u00e9ra qui filme l'\u00e9cran, mais \u00e0 l'\u00e9poque c'\u00e9tait encore envisageable comme solution de dernier recours. Le soucis de cette solution c'est l'horreur que serait la partie OCR avec une image de tr\u00e8s mauvaise qualit\u00e9. Une autre option qui m'aurait vraiment emb\u00eat\u00e9 aurait \u00e9t\u00e9 de devoir garder une page de Chrome ou Firefox ouverte quelque part sur un \u00e9cran pour que le programme puisse prendres des captures d'\u00e9crans. C'est de loin l'option la plus simple et la plus logique mais elle poss\u00e8de pour moi de tr\u00e8s gros points noirs : On ne peut pas certifier l'int\u00e9grit\u00e9 des donn\u00e9es car l'utilisateur a le contr\u00f4le total sur le feed. Il peut mettre pause, avancer, reculer, tout casser sans faire expr\u00e8s en ouvrant autre chose sur son ordi qui se mette pile devant. Bref c'est un peu bancale. Et surtout on bloque une partie non significative de l'\u00e9cran de l'utilisateur avec des infos redondantes. Et je peux vous dire que quand je commente la F1 j'ai besoin de beaucoup d'informations et que chaque centim\u00e8tre d'\u00e9cran est crucia\u00e9 ! Alors avoir un \u00e9cran complet bloqu\u00e9 est juste un point bloquant qui m'emp\u00eacherait d'utiliser l'app aussi bonne soit-elle dans ses pr\u00e9dictions. Mais bon si aucune autre methode ne fonctionne ce qui est bien c'est que celle la est plut\u00f4t simple \u00e0 mettre en place. Ensuite reverse engeneer le feed serait l'option la plus classe, cependant c'est la plus complexe et la plus bancale au niveau l\u00e9gal haha. L'id\u00e9e serait de r\u00e9cup\u00e8rer le lien vers le broadcast g\u00e9n\u00e9ral et de comprendre comment il fonctionne pour le d\u00e9coder nous m\u00eame pendant un Grand Prix. Seuls soucis : Il n'est pas possible de faire des tests en dehors des periodes de Grand Prix (Et je rappelle que c'est des p\u00e9riodes ou je travaille en plus) Difficile de faire un syst\u00e8me qui marche pareil pour les rediffusions et les lives. (En effet les liens des rediff sont beaucoup plus simple \u00e0 r\u00e9cup\u00e8rer mais ne fonctionnent pas du tout pareil et pour tester l'app il est essentiel de pouvoir s'entrainer sur des anciens Grand Prix) Dernier GROS soucis, je ne sais tout simplement pas faire ca lol. Je ne sais pas comment faire. Peut-\u00eatre que avec des profs qui m'aident et chat gpt ainsi qu'internet je pourrais potentiellement n\u00e9gocier un truc mais c'est hautement improbable et cela serait une perte de temps folle si je n'y arrive pas. Derni\u00e8re option que je trouve la plus s\u00e9duisante. Simuler une instance de Chrome ou de Firefox (Le soucis avec chrome c'est qu'il impl\u00e9mente l'utilisation de DRM dans les vid\u00e9os qui fait qu'il est tr\u00e8s difficile de passer outre la s\u00e9curit\u00e9 avec un bot) pour ensuite prendre des captures d'\u00e9crans automatiquement. Cette solutions offre pleins d'avantages : Pas de place prise sur l'\u00e9cran L'int\u00e9grit\u00e9 des donn\u00e9es est assur\u00e9e car c'est le programme qui d\u00e9cide d'ou partir et de si il met pause ou non C'est une option complexe mais beaucoup moins que le reverse engeneering Elle permet de ne demander presque aucun input de la part de l'utilisateur. Mais elle pose quelques probl\u00e9matiques : Comment se connecter automatiquement sans \u00eatre detect\u00e9 par un Bot et sans demander \u00e0 l'utilisateur ses identifiants (Pour des raisons \u00e9videntes qui sont : QUI VA METTRE SES IDENTIFIANTS SUR UNE VIEILLE APP COMME LA MIENNE??) Comment faire en sorte que le programme prenne les meilleures captures dans la meilleure qualit\u00e9 et en plein \u00e9cran. Mais j'ai d\u00e9cid\u00e9 de partir sur cette option. Pour ce faire j'utilise Selenium. J'ai pu tester Puppetteer Sharp et m\u00eame si dans un premier temps j'ai pu avancer asez vite, malheureusement il y a des bugs qui rendent son utilisation impossible dans notre contexte. J'ai donc d\u00e9cid\u00e9 de tout faire en utilisant un portage de Selenium dans mon programme. Voici un exemple de code qui va ouvrir FireFox et qui va lancer un RickRoll var service = FirefoxDriverService . CreateDefaultService ( AppDomain . CurrentDomain . BaseDirectory + @\"geckodriver-v0.27.0-win32\\geckodriver.exe\" ); service . Host = \"127.0.0.1\" ; service . Port = 5555 ; FirefoxOptions options = new FirefoxOptions (); options . AddArgument ( \"--disable-headless\" ); var driver = new FirefoxDriver ( service , options ); driver . Navigate (). GoToUrl ( \"https://www.youtube.com/watch?v=dQw4w9WgXcQ&autoplay=1&mute=1\" ); Dans cet exemple on d\u00e9sactive le \"Headless\" pour qu'on puisse voir ce que fait l'app car sinon tout est invisible. Alors dans les faits la vid\u00e9o youtube ne se lance pas du tout car il y a des pubs et des prompts de cookies que l'on doit accepter etc... ce qui montre les diff\u00e9rents challenges que l'on va devoir surmonter pour vraiment faire ce que l'on veut. Mais un petit d\u00e9tail extr\u00eamement important, la F1TV est un programme payant un peu comme netflix. Ce qui veut dire que pour acc\u00e8der au contenu il faut \u00eatre connect\u00e9. Sauf que une instance de firefox cr\u00e9\u00e9 par Selenium est comme une page de naviguation priv\u00e9e, ce qui veut dire que si on va sur la page de la F1TV on est pas connect\u00e9s. Je pourrais tout \u00e0 fait demander \u00e0 l'utilisateur de me donner ses identifiants pour que j'aille ensuite automatiquement me connecter sauf que cela pose deux soucis: Personne ne voudra mettre ses identifiants sur mon programme La page de login de la F1TV a \u00e9t\u00e9 prot\u00e8g\u00e9e avec la meilleure technologie de detection de bots que je connaisse. Presque aucun site n'arrive \u00e0 me detecter sauf eux ! Donc c'est tout simplement impossible d'utiliser cette technique. Ensuite je me suis rappel\u00e9 que ce que la page stocke pour me permettre de rester connect\u00e9 ce sont des cookies. Et si je mets le bon cookies dans Selenium alors je serai connect\u00e9. Dans un premier temps je voulais faire un syst\u00e8me ou l'utilisateur irait prendre dans son chrome son cookie et le copie colle dans mon programme mais c'est immonde. C'est alors que vient la partie r\u00e9cup\u00e8ration de cookies ! Tous les cookies de chrome sont stock\u00e9s dans une base de donn\u00e9es SQLITE. On pourrait se dire Banco il suffit d'aller dedans et de retrouver tous les cookies et se connecter. Sauf que, pas b\u00eates, les \u00e9quipes de chrome ont d\u00e9cid\u00e9 que c'\u00e9tait une bonne id\u00e9e d'encoder les cookies pour que tout le monde ne puisse pas venir y mettre son nez... En effet les cookies peuvent contenir des informations importantes. Cela fait que pour utiliser ces cookies il faut pouvoir les d\u00e9coder. Mon hypoth\u00e8se a \u00e9t\u00e9 que si ces cookies peuvent \u00eatre lus par Chrome m\u00eame hors connexion, c'est que la cl\u00e9 de d\u00e9codage existe sur l'appareil et qu'il suffit de la trouver. ET C'EST LE CAS! Apr\u00e8s pas mal de recherches j'ai pu voir que la cl\u00e9 de d\u00e9codage existe bel et bien et qu'il suffit de la d\u00e9coder en utilisant la librairie DPAPI pour la lire. Avec cette cl\u00e9 on peut ensuite d\u00e9coder les cookies et leurs valeurs ce qui veut dire qu'il est th\u00e9oriquement possible d'automatiser le processus sans que l'utilisateur n'aie rien \u00e0 faire. J'ai d\u00e9cid\u00e9 de faire la partie r\u00e9cup\u00e8ration en python pour deux raison : Je n'arrivais pas \u00e0 trouver une bonne impl\u00e9mentation de DPAPI en C# qui me permettait de d\u00e9coder la cl\u00e9. Il existe beaucoup plus de documentation en Python pour ce qui est de la cryptographie et donc si Chrome change de fonctionnement il sera beaucoup plus simple de changer cette partie en particulier sans avoir \u00e0 recompiler le code C#. J'ai donc avec l'aide d'internet et de ChatGPT cr\u00e9\u00e9 ce script : def get_master_key (): with open ( os . getenv ( \"localappdata\" ) + \" \\\\ Google \\\\ Chrome \\\\ User Data \\\\ Local State\" , \"r\" ) as f : local_state = f . read () local_state = json . loads ( local_state ) master_key = base64 . b64decode ( local_state [ \"os_crypt\" ][ \"encrypted_key\" ]) master_key = master_key [ 5 :] # removing DPAPI master_key = win32crypt . CryptUnprotectData ( master_key , None , None , None , 0 )[ 1 ] print ( \"MASTER KEY :\" ) print ( master_key ) print ( len ( master_key )) return master_key def decrypt_payload ( cipher , payload ): return cipher . decrypt ( payload ) def generate_cipher ( aes_key , iv ): return AES . new ( aes_key , AES . MODE_GCM , iv ) def decrypt_password ( buff , master_key ): try : iv = buff [ 3 : 15 ] payload = buff [ 15 :] cipher = generate_cipher ( master_key , iv ) decrypted_pass = decrypt_payload ( cipher , payload ) decrypted_pass = decrypted_pass [: - 16 ] . decode () # remove suffix bytes return decrypted_pass except Exception : # print(\"Probably saved password from Chrome version older than v80\\n\") # print(str(e)) return \"Chrome < 80\" master_key = get_master_key () cookies_path = Path ( os . getenv ( \"localappdata\" ) + \" \\\\ Google \\\\ Chrome \\\\ User Data \\\\ Default \\\\ Network \\\\ Cookies\" ) if not cookies_path . exists (): raise ValueError ( \"Cookies file not found\" ) with sqlite3 . connect ( cookies_path ) as connection : connection . row_factory = sqlite3 . Row cursor = connection . cursor () cursor . execute ( \"SELECT * FROM cookies\" ) with open ( 'cookies.csv' , 'a' , newline = '' ) as csvfile : fieldnames = [ 'host_key' , 'name' , 'value' , 'path' , 'expires_utc' , 'is_secure' , 'is_httponly' ] writer = csv . DictWriter ( csvfile , fieldnames = fieldnames ) if csvfile . tell () == 0 : writer . writeheader () for row in cursor . fetchall (): decrypted_value = decrypt_password ( row [ \"encrypted_value\" ], master_key ) writer . writerow ({ 'host_key' : row [ \"host_key\" ], 'name' : row [ \"name\" ], 'value' : decrypted_value , 'path' : row [ \"path\" ], 'expires_utc' : row [ \"expires_utc\" ], 'is_secure' : row [ \"is_secure\" ], 'is_httponly' : row [ \"is_httponly\" ] }) print ( \"Finished CSV\" ) Ce programme va faire tout ce que j'ai expliqu\u00e9 et va ensuite stocker les r\u00e9sultats dans un CSV pour qu'il soit facile d'y acc\u00e8der depuis le C#. Alors oui cela pose certaines questions de s\u00e9curit\u00e9. Car en effet je prend tous les cookies, les d\u00e9code et les stocke. Ce qui veut dire que je pourrais tout \u00e0 fait envoyer ces donn\u00e9es quelque part, par exemple un compte Netflix, et me rincer. Si je devais rendre le projet ouvert au public je pense qu'il faudra que cela soit mentionn\u00e9 clairement et que le projet soit open source pour que les utilisateurs puissent verifier que je ne fais pas ca. Maintenant de l'autre c\u00f4t\u00e9 j'ai juste \u00e0 lire le CSV et le tour est jou\u00e9 ! (Trouver cette solution m'a pris une semaine de vacances \u00e0 l'\u00e9poque) Bon j'ai r\u00e9ussi \u00e0 faire le programme se connecter et naviguer etc.. Par contre quelque chose que j'ai voulu ajouter et qui m'a pris pas mal de temps c'est de faire en sorte de pouvoir selectionner la qualit\u00e9. Pour changer la qualit\u00e9 du feed il faut cliquer sur settings et ensuite prendre le menu deroulant et selectioner 1080p. Le soucis c'est le que la value du select est jamais la m\u00eame. Elle commence toujours pas \"1080_\" mais ensuite ca peut \u00eatre \"1080_45930285\" ou \"1080_56801\" la suite est apparemment random. J'ai donc du utiliser ce code pour le selectioner quand m\u00eame : IWebElement settingsButton = driver . FindElement ( By . ClassName ( \"bmpui-ui-settingstogglebutton\" )); settingsButton . Click (); IWebElement selectElement = driver . FindElement ( By . ClassName ( \"bmpui-ui-videoqualityselectbox\" )); SelectElement select = new SelectElement ( selectElement ); IWebElement selectOption = selectElement . FindElement ( By . CssSelector ( \"option[value^='1080_']\" )); selectOption . Click (); Sauf que pour que cela marche je dois avant cliquer sur le bouton des settings le probl\u00e8me c'est qu'il est invisible alors on doit le faire apparaitre. J'ai tent\u00e9 de le faire aparaitre en bougeant la souris, en cliquant \u00e0 un endroit pr\u00e9cis, impossible de le faire marcher correctement. Puis j'ai eu l'id\u00e9e de mettre pause en envoyant un appui sur la touche Espace et ca a permit de d\u00e9couvrir le bouton et permettre qu'on clique dessus. Ca peut paraitre tout b\u00eate mais rien que ca, ca m'a pris un temps consid\u00e9rable. Bon pour ce qui est du timecode de la vid\u00e9o. Je pense qu'il serait trop complexe de faire en sorte que selenium change le slider de progression de la vid\u00e9o. Alors j'ai fait quelques tests et apparemment, si on quitte la F1TV sur un timecode de la vid\u00e9o que on donne au programme, comme il r\u00e9cup\u00e8re tous les cookies de la F1TV il commencera de la. Donc si on veut utiliser le programme avec des Grand Prix ayant d\u00e9ja eu lieu, on peut le faire, seulement il faudra juste au pr\u00e9alable avoir choisit le bon timecode dans le page de la F1TV avant de le lancer. Ce qui est int\u00e9ressant c'est que la page de la F1TV ressemble \u00e0 ca au d\u00e9part : \"Empty F1TV\" Je pense qu'une bonne id\u00e9e serait de dire au programme que c'est la grille de d\u00e9part et ensuite d\u00e8s qu'il d\u00e9tecte un secteur il sait que la course a commenc\u00e9.","title":"Vacances"},{"location":"jdb.html#lundi-24-avril-2023","text":"Aujourd'hui c'est jour de documentation. J'ai pas mal travaill\u00e9 pendant les vacances mais je n'ai pas encore pu faire de vraie documentation correcte du fonctionnement. Du coup je vais m'en charger aujourd'hui et peut-\u00eatre un peu demain. Ok normalement je ne devrais faire que de la documentation mais je ne peux pas passer \u00e0 cot\u00e9 de ca... Le probl\u00e8me que j'ai avec les pneus ou parfois il d\u00e9tecte un H au lieu d'un '11' et ce genre de choses c'est \u00e0 cause de ma methode \"RemoveBG\" Qui va retirer tous les pixels plus sombres que le background. Sauf que cela va aussi retirer des pixels dans le chiffre lui m\u00eame et qui va donc defigurer les 11 : \"diformed 11\" \"diformed 11\" J'ai r\u00e9ussi \u00e0 les changer en : \"less diformed\" \"less diformed\" Mais au final cela n'a pas augment\u00e9 la pr\u00e9cision de la reconnaissance. Je pense que je vais donc devoir encore changer. Je pense que une bonne facon de trouver serait dabord de trouver la couleur du pneu. Et si il n'y a pas assez de couleur alors c'est que le pneu contient une lettre. Le but est d'arr\u00eater de chercher des lettres ou des chiffres. Comme ca les 11 arr\u00eateront d'\u00eatre pris pour des 'H' En fait on peut faire encore plus simple que ca. On peut simplement regarder la couleur dominante et determiner le pneu. En effet m\u00eame si il y a une lettre sur fond noir pour d\u00e9crire le pneu, mon methode de r\u00e9cup\u00e8ration de la couleur dominante ommet les pixels trop noirs alors il est quand m\u00eame possible de determiner le type de pneus. Et tout simplement si il n'arrive pas \u00e0 lire le chiffre c'est que c'est une lettre et que donc on est \u00e0 0 tours. Cela marche plut\u00f4t bien et cela simplifie pas mal le processing. Voila, la je vais me remettre \u00e0 la documentation sinon je vais encore prendre du retard.","title":"Lundi 24 Avril 2023"},{"location":"jdb.html#mardi-25-avril-2023","text":"Encore une fois j'ai pris du temps de doc pour changer des choses sur la partie OCR. Mais en m\u00eame temps en documentant je vois des choses que j'ai soit mal fait soit que je pourrais faire mieux en changeant tr\u00e8s peu de choses. J'\u00e9sp\u00e8re que les changement que j'ai fait vont aider au moins \u00e0 la coh\u00e9rence du code et un peu pour les performances. Il semble que dans les conditions que j'ai test\u00e9 le nombre de tour soit plut\u00f4t fiable mais je pense que je devrai faire un peu de travail en aval dans la r\u00e9cup\u00e9ration de ces donn\u00e9es car je sens que cela va poser probl\u00e8me quelques fois. Je pense que en utilisant bien l'historique on peut potentiellement se passer de l'utilisation de ce chiffre pas toujours compl\u00eatement fiable. Mais sinon aujourd'hui c'est encore une fois un gros jour de doc. J'essaie d'expliquer les diff\u00e9rents proc\u00e9d\u00e9s avant de les oublier. J'essaie aussi de donner un maximum d'exemples sous formes de photos interm\u00e9diaires mais ca me prend pas mal de temps car il faut que j'ajoute un peu partout dans le code des lignes pour sortir des images interm\u00e9diaires. En plus de la documentation je me suis aussi beaucoup occup\u00e9 de nettoyer mon code et je suis assez content par ce que m\u00eame en ayant du rajouter des couches de complexit\u00e9 pour mieux reconnaitres les temps au tour j'arrive \u00e0 un temps de processing parfois en dessous des 2 secondes ce que je trouve honorable. Quand j'aurai finit de nettoyer tous mes fichiers je ferai une release sur gitea et ce sera la version que j'utiliserai quand je voudrai faire un merge avec les autres parties du projet. J'ai beaucoup beaucoup boss\u00e9 aujourd'hui et je sui bien mort. Faire autant de documentation et de nettoyage de code c'est pas forc\u00e9ment bon pour le cerveau je crois. J'ai besoin d'une sieste. Demain je pense que je vais commencer \u00e0 avancer sur la partie r\u00e9cup\u00e8ration des images. Je sais que la je fais un peu passer les tests \u00e0 la trappe mais d\u00e9ja j'en ai fait tout le long du d\u00e9veloppement de OCR_DECODE et il faut vraiment que j'avance, quitte \u00e0 revenir dessus quand j'aurai merge les deux projets ensemble.","title":"Mardi 25 Avril 2023"},{"location":"jdb.html#26-avril-2023","text":"Aujourd'hui je vais devoir m'occuper de la partie r\u00e9cup\u00e9ration des images. J'ai d\u00e9ja eu l'occasion d'avancer sur ce projet pendant mopn poc et mes vacances. Donc la le but ca va \u00eatre de voir ce qui manque comme v\u00e9ritables features et ensuite je vais pouvoir m'occuper de la vue et de son int\u00e9gration avec le d\u00e9codage. Ok donc maintenant que j'au un programme qui arrive \u00e0 prendre des images depuis la F1TV correctement et en bonne r\u00e9solution. Je pense qu'il est temps de passer \u00e0 l'impl\u00e9mentation de la Forme que ca va prendre. C'est important de se poser au moins cinq minutes la question de comment je pr\u00e9vois de faire car m\u00eame si ca n'est pas la version finale, cette derni\u00e8re prendra tr\u00e8s fort inspiration du desing que je vais faire. Dans cette form j'aurais besoin de : Pouvoir selectionner un Grand Prix en ins\u00e8rant l'URL du feed. Pouvoir lancer la calibration si besoin Indiquer le titre et la date du Grand Prix Indiquer si le Grand Prix vient de commencer ou si il y a d\u00e9ja un certain nombre de tours lanc\u00e9s. Et c'est \u00e0 peu pr\u00e8s tout en fait... J'ai tellement pouss\u00e9 pour avoir un programme qui fait tout tout seul que il ne me faut pas grand chose de plus. Je pense que ce qui serait pas mal ca serait du coup d'utiliser ce temps pour bien impl\u00e9menter la calibration qui elle aura besoin d'une UI un peu plus bal\u00e8ze. On pourrait m\u00eame imaginer que la calibration fasse partie int\u00e9grante des settings... Ca serait peut-\u00eatre bien que quand l'application se lance on se retrouve sur la page principale d'affichage de donn\u00e9es et qu'on puisse simplement cliquer sur la page options qui contient la page calibration et qui permet de rentrer les infos du Grand Prix. Je pense que je vais faire ca. Voici l'interface que j'ai d\u00e9velopp\u00e9e pour regrouper tout ca : \"Screen\" La police le style le placement et les couleurs ne sont pas d\u00e9finitfs, cependant je pense que c'est un bon d\u00e9but. Le but maintenant va \u00eatre de permettre de faire fonctionner la calibration et la r\u00e9cup\u00e8ration d'images. Si j'arrive \u00e0 faire fonctionner ces deux choses sur un m\u00eame projet avant la fin de la semaine cela serait super ! Bon J'ai pu avancer sur l'int\u00e8gration de Selenium mais cela prend un peu de temps car je veux impl\u00e9metner un moyen de pouvoir prendre une Screenshot \u00e0 nimporte quel moment et pas juste en boucle. Demain je finis de faire fonctionner ca et ensuite je commence le cablage du reste.","title":"26 Avril 2023"},{"location":"jdb.html#jeudi-27-avril-2023","text":"C'est assez dur de faire l'importation car il y a des petites diff\u00e9rences qui obligent \u00e0 presque tout r\u00e9\u00e9crire. En fait le programme de calibration avait d\u00e9ja impl\u00e9ment\u00e9 la fonction de Windows et de Zones mais il fonctionnait juste assez diff\u00e9remment pour qu'il faille tout refaire. La je suis en train de perdre \u00e9norm\u00e9ment de temps \u00e0 cause d'un soucis de coordonn\u00e9es. J'ai repris le code de la calibration pour detecter ou l'utilisateur a cliqu\u00e9 pour cr\u00e9er les zones. Cependant, je n'arrive pas \u00e0 le faire fonctionner correctement. La zone est tout le temps d\u00e9cal\u00e9e en haut et en bas mais pas de la m\u00eame facon. En haut, la valeur Y est trop grande alors que en bas la valeur Y est trop petite... Je ne comprends pas bien pourquoi. Si c'\u00e9tait un simple d\u00e9calage cela ne serait pas compliqu\u00e9 \u00e0 g\u00e8rer mais la... J'ai un soucis \u00e9galement avec la r\u00e9solution des screenshots que je r\u00e9cup\u00e8re en full Headless. Voici un exemple de r\u00e9solution que j'arrive \u00e0 r\u00e9cup\u00e8rer sans le headless : \"High Res\" \"Low Res\" Il y a clairement un soucis et le probl\u00e8me c'est que avec une r\u00e9solution pareille, impossible de faire une reconnaissance correcte. BON J?EN PEUX PLUS LA. Ca fait des heures que je bosse sur ce probl\u00e8me d\u00e9bile et impossible de trouver une solution. J'ai essay\u00e9 cinq facons de forcer le browser headless a prendre une plus haute r\u00e9solution aucune ne fonctionne je ne comprends pas. A chaque fois que je me retrouve avec une r\u00e9solution de 1366 x 768 Ou une variante de basse r\u00e9solution du style. J'en peux plus je ne trouve aucune r\u00e9ponse sur internet ni m\u00eame avec chatGPT. Super... La seule chose que j'ai pu faire qui change quelque chose fait que les images font maintenant du 926x517... j'ai un peu envie de commentre un crime de guerre au plus vite.","title":"Jeudi 27 Avril 2023"},{"location":"jdb.html#vendredi-28-avril-2023","text":"Une des solutions que je n'ai pas encore essay\u00e9 est de changer ma version de GeckoDriver. Sauf que ca m'oblige \u00e0 changer les versions de mes libraries ce qui est tr\u00e8s p\u00e9nible, je vais continuer le debugging dans le projet Selenium_clean. Il faut savoir que la librairie de Selenium que j'utilise est bloqu\u00e9e en 0.27 ce qui fait que je ne peux utiliser qu'une version obsol\u00e8te du Gecko Driver. J'ai tent\u00e9 de changer vers une version en 64 bits du GeckoDriver 0.27 mais pareil, je me retrouve toujours avec des images de M. J'essaie toutes les solutions que je trouve sur internet aucune ne convient c'est infernal. J'essaie de changer la r\u00e9solution DPI, j'essaie de changer les param\u00eatres par d\u00e9faut des player de Firefox, j'essaie de changer la r\u00e9solution pendant et au d\u00e9but de l'execution IMPOSSIBLE DE FAIRE MARCHER CETTE MERDE C'EST PAS POSSIBLE !!! J'ai essay\u00e9 avec chrome mais je ne peux pas l'utiliser car les DRM m'emp\u00eacheront de prendre des screenshot du flux vid\u00e9o. J'ai essay\u00e9 de faire tourner avec edge mais edge ne peut pas tourner en headless. JE VAIS DEVENIR FOUF FPWQOVMQEKOVNVIBDBJDAIVOBI. ET MAINTENANT JE N'ARRIVE PLUS A FAIRE DE PROJET AVEC SELENIUM VOIWQNV(UEWQBVU)WEQN=OEJNIVIUWVBWUEV ON CHERCHE A ME FAIRE PETER UN PLOMB C'EST PAS POSSIBLE GIWEGUWEQN VOICI UN EXEMPLE DU CODE QUE JE DEMANDE A UN NOUVEAU PROJET AVEC EXACTEMENT LES MEMES LIBRARIES INSTALLEES : // Create a new FirefoxDriver instance IWebDriver driver = new FirefoxDriver (); // Navigate to the specified URL driver . Navigate (). GoToUrl ( \"https://www.example.com\" ); // Do something with the driver (e.g., find elements or take screenshots) // Quit the driver driver . Quit (); Je ne demande que ca ET MEME CA CA NE VEUT PAS FONCTIONNER VOIWENB)IWUQENV Oui je suis un peu \u00e9nerv\u00e9 ca se voit? A bon? Et maintenant NUGGET ne fonctionne plus... j'en peux plus la. Je ne peux plus t\u00e9l\u00e9charger de librairie sur aucun de mes projets... J'ai tent\u00e9 de supprimer le fichier de config et red\u00e9marrer Visual Studio mais cela ne fait rien. J'ai aussi tent\u00e9 de faire un 'nugget restore' toujours rien. Bon apparemment je ne suis pas le seul qui ne peut pas acc\u00e8der \u00e0 Nuget donc bon c'est pas juste chez moi qu'il y a un soucis. Mais m\u00eame en mettant ma 4G pour me connecter, je n'arrive pas \u00e0 acc\u00e8der \u00e0 certains sites y compris Nuget et je ne peux pas download de librairies... Je ne comprends pas ce qui se passe et du coup je ne peux juste pas bosser... J'ai red\u00e9marr\u00e9 trois fois mon pc et visual studio, j'ai essay\u00e9 de changer mes settings DNS etc... impossible de bosser. Je crois que je n'aurais pas du me reveiller aujourd'hui. Bon je vais tenter d'avancer sur mon poster en attendant que le r\u00e9seau soit en meilleur \u00e9tat.","title":"Vendredi 28 Avril 2023"},{"location":"jdb.html#lundi-1-mai-2023","text":"Bon je bosse depuis chez moi donc j'esp\u00e8re que Nuget va mieux fonctionner. Apr\u00e8s un weekend \u00e0 r\u00e9fl\u00e9chir au sujet de cette resolution je me suis dit deux choses. La seule personne sur internet que j'ai vu avoir le meme soucis avait une r\u00e9solution de 1920x1200 comme moi. Cela veut donc s\u00fbrement dire que le soucis vient de cette r\u00e9solution de laptop comme moi. Si vraiment je n'arrive pas dans un premier temps \u00e0 faire fonctionner le Headless correctement, je peux toujours laisser la page de c\u00f4t\u00e9 et m'occuper du reste du programme. Certes ca serait vraiment infernal d'avoir \u00e0 garder une page chrome ouvert en tous temps et en plus elle doit \u00eatre en plein \u00e9cran mais bon... Si il n'y a vraiment pas d'autres solutions malheureusement je serai bien oblig\u00e9. BON ! JE N'ARRIVE MEME PLUS A FAIRE UN PROJET QUI UTILISE SELENIUM ET QUI MARCHE JE VAIS FAIRE BR\u00dbLER GENEVE. C'est pas possible serieux, je ne comprends pas j'essaie tout ce que je trouve et impossible de juste lancer firefox c'est du grand nimporte quoi. Je prend les m\u00eame putain de librairies que sur les autres projets les m\u00eames versions, je prend le m\u00eame exact code. Sur le nouveau projet impossible de le faire fonctionner. Je commence \u00e0 croire que on essaie de me faire p\u00eater un cable. Du coup dans un \u00e9lan de d\u00e9sespoir je vais tenter de passer sur une autre librairie qui avec un peu de chance marche et en plus me permettrais de prendre des foutues screenshot dans le bon format. Les deux seules librairies qui pourraient potentiellement faire l'affaire sont les librairies : PhantomJS CefSharp Je vais les tester et simplement prier pour qu'elles fonctionnent et que je puisse faire ce que je veux avec. Alors pour le moment avec CEFSharp j'arrive \u00e0 lancer une instance de chrome et prendre une screenshot avec ce code : CefSettings settings = new CefSettings (); settings . CachePath = Path . Combine ( Environment . GetFolderPath ( Environment . SpecialFolder . LocalApplicationData ), \"CefSharp\\\\Cache\" ); // Set cache path settings . LogSeverity = LogSeverity . Disable ; // Disable logging Cef . Initialize ( settings ); // Initialize CEF using ( var browser = new ChromiumWebBrowser ( \"www.google.com\" , new BrowserSettings ())) // Launch Chromium in off-screen mode { browser . Load ( \"https://www.example.com\" ); // Navigate to the test URL browser . Size = new Size ( 1920 , 1080 ); // Set the browser size to 1920x1080 browser . ScreenshotAsync (). ContinueWith ( task => { var bitmap = task . Result ; bitmap . Save ( \"screenshot.png\" , System . Drawing . Imaging . ImageFormat . Png ); // Take a screenshot and save it as a PNG file }). Wait (); } Cef . Shutdown (); // Shutdown CEF Avec ca il faut ces using : using System ; using System.Drawing ; using System.IO ; using CefSharp ; using CefSharp.OffScreen ; C'est assez prometteur m\u00eame si il faut encore beaucoup pour remplacer selenium. Ah bah lol en fait non on peut pas utiliser cette librarie pour faire tourner firefox... J'EN AI MARRE J'AVAIS CHERCHE PRECISEMENT UNE LIB QUI MARCHE AVEC FIREFOX Et phantomJS non plus ne fonctionne pas avec firefox... J'en ai marre. Donc je vais plut\u00f4t partir sur la librairie GeckoFX qui semble pouvoir contr\u00f4ler une instance de firefox. Mais j'avais justement pris un putain de projet C# et pas JS pour ne pas me taper ces probl\u00e8mes de librairies... Et si cette option ne fonctionne pas mon dernier espoir sera de directement int\u00e9ragir avec le geckodriver.exe et la ca risque de pas \u00eatre dr\u00f4le. JE NE COMPRENDS RIEN !!!!! Ca n'a aucun sens la doc est inexistante le seul lien qui pourrait amener sur une doc envoie sur la page principale de bitbucket. Tous les exemples de code que je trouve ne fonctionnent pas. Je n'arrive \u00e0 rien je commence \u00e0 devenir fou. Tout ce travail pour rien c'est pas possible. M\u00eame en essayant directement d'int\u00e9ragir avec le process geckodriver.exe je ne peux pas arriver \u00e0 mes fins. J'arrive \u00e0 lancer le service et tout, mais je n'arrive pas \u00e0 vraiment contr\u00f4ler ce qu'il se passe donc impossible de venir prendre des screenshot. Je ne sais tout simplement pas quoi faire ... Je suis bloqu\u00e9. Je me suis cass\u00e9 la t\u00eate \u00e0 faire un truc qui marchait bien avec selenium et tout. Mais maintenant plus rien ne fonctionne du jour au lendemain et il n'y a simplement aucune alternative. Je vais essayer de changer directement le projet Selenium_Clean mais bon ca va pas \u00eatre dr\u00f4le. Ok alors j'ai tout repris depuis le d\u00e9but et je crois que j'ai enfin une solution. Pour la trouver j'ai re-essay\u00e9 toutes les techniques que j'avais tent\u00e9 avant mais dans l'ordre et en les isolant \u00e0 chaque fois. Cela inclus : Tenter de changer la densit\u00e9 de pixels. En effet je me suis dit que comme la r\u00e9solution \u00e9tait plus basse le soucis \u00e9tait que le virtual screen avait simplement une DPI r\u00e9duite. profile.SetPreference(\"layout.css.devPixelsPerPx\", \"2.0\"); J'ai aussi tent\u00e9 de r\u00e9duire \u00e0 un seule le nombre de process de Firefox. J'ai pu lire sur internet que parfois cela pouvait influer sur les performances du renderer. profile.SetPreference(\"dom.ipc.processCount\", 1); Ensuite j'ai tent\u00e9 tout b\u00eatement de rajouter dans la liste des arguments la taille voulue de l'\u00e9cran. options.AddArgument(\"--window-size=1920,1080\"); Mais comme cela ne foncionnait pas, je me suis rabattu sur un script JS pour tenter de forcer la fen\u00eatre \u00e0 \u00eatre plus grande. js.ExecuteScript(\"window.resizeTo(1920, 1080);\"); Comme cela n'a pas march\u00e9 j'ai pu lire que cela pouvait \u00eatre la taille int\u00e9rieure qui devait \u00eatre chang\u00e9e js.ExecuteScript(\"window.innerWidth = 1920; window.innerHeight = 1080;\"); Encore une fois sans succ\u00e8s. J'ai ensuite tent\u00e9 d'utiliser trois autres versions du GeckoDriver, 0.27,0.26,0.25 et aucune ne m'aidait. Mais en fait la seule chose qui a chang\u00e9 quoi que ce soit \u00e9tait la technique suivante : Changer la window size en utilisant : options . AddArgument ( \"--width=1920\" ); options . AddArgument ( \"--height=1200\" ); Ca ne marchait pas car j'utilisais une autre methode pour resize en m\u00eame temps, qui elle ne marchait pas mais qui emp\u00eachait celle la de marcher. Ensuite le soucis que j'avais c'est que en mettant 1920-1080 je me retrouvais avec 1920-998 ou un truc du genre ce qui n'\u00e9tait pas normal alors je me disais que cette technique ne marchait pas non plus et je l'ai pass\u00e9e. Alors tout n'est pas encore gagn\u00e9, il faut que j'arrive \u00e0 impl\u00e9menter ca dans un plus gros projet et que la vid\u00e9o puisse \u00eatre prise seule. Demain je m'occupe de ca.","title":"Lundi 1 Mai 2023"},{"location":"jdb.html#mardi-2-mai-2023","text":"Bon aujourd'hui je change le programme principal. Le soucis que j'ai c'est que en ajoutant ce syst\u00e8me de resize, maintenant la page fait 100x100 et est grise. Il doit y avoir une technique que j'ai oubli\u00e9 de retirer ou un comportement un peu bizarrre. Bon clairement je ne sais pas QUI DECIDE DE ME POURRIR LA VIE mais il est fort. J'ai t\u00e9l\u00e9charger EXACTEMENT les m\u00eames librairies que sur mon autre projet et j'utilise l'EXACT m\u00eame geckodriver.exe mais dans le projet principal impossible de lui faire chier une image m\u00eame avec l'EXACT m\u00eame code. POURQUOI VOUS ME FAITES CA????= La je ne comprend vraiment pas ce qui peut se passer pour que rien ne fonctionne alors que tout est pareil. JE VIENS DE TOUT VERIFIER TOUT EST PAREIL JE NE COMPRENDS PAS. Bon apr\u00e8s avoir supprim\u00e9 l'int\u00e9gralit\u00e9 de ma classe Emulator cela semble marcher un peu mieux. Je ne vais pas m'\u00e9tendre sur la castrophe niveau temps que cela repr\u00e9sente. Si au moins j'arrive \u00e0 faire fonctionner quelque chose je suis content. Maintenant j'ai un soucis un peu sp\u00e9cial. Depuis que j'ai chang\u00e9 la r\u00e9solution, il semble que le programme aie du mal \u00e0 cliquer sur l'icone de settings. En prenant des screenshots du moment ou l'erreur apparait, j'ai pu me rendre compte que en fait le stream est toujours en train de charger et c'est pour ca que on arrive pas \u00e0 trouver le bouton : \"ERROR 105\" \"ERROR 105\" Je pense que je n'ai le soucis que maintenant car le flux en 1080p se lance moins vite. Je vais essayer de voir si je peux detecter un \u00e9l\u00e9ment d'HTML qui correspond au loading comme ca je peux attendre qu'il disparaisse. Sinon je peux aussi juste essayer de trouver le bouton en boucle pendant une dixaine de secondes. Bon la j'essaie pendant genre plus de 50 secondes et ca ne marche toujours pas. Il semblerait que au final le probl\u00e8me vienne du GP d'azerbidjan. En effet, quand je teste un autre Grand Prix tout va bien. ET MERDE ! J'ai r\u00e9ussi \u00e0 avoir des images en 1080P mais d\u00e9s que je passe l'image en plein \u00e9cran c'est de nouveau du 1366X768 Avant de mettre en plein \u00e9cran: \"Before fullscreen\" Apr\u00e8s: \"After fullscreen\" On peut voir sur l'image que l'option 1080P est effectivement bien selectionn\u00e9e mais il doit y avoir un param\u00e8tre de Firefox qui s'occupe de la r\u00e9solution d'un player vid\u00e9o. Il va juste falloir trouver ce param\u00eatre... J'ai essay\u00e9 d'utiliser : Driver.Manage().Window.Size = new System.Drawing.Size(windowWidth, windowHeight); Sans succ\u00e8s. options.AddArgument(\"--start-maximized\"); Pareil Driver.Manage().Window.Maximize(); Toujours rien profile.SetPreference(\"full-screen-api.ignore-widgets\", true); Nada profile.SetPreference(\"media.hardware-video-decoding.enabled\", true); Toujours pas J'ai vraiment cru que j'avais trouv\u00e9 la solution en trouvant cette commande profile.SetPreference(\"full-screen-api.enabled\", true); Mais non toujours pas... Je commence \u00e0 perdre patience. C'EST BON. Apr\u00e8s litt\u00e9rallement 3h de debugging avec M.Bonvin (Que je remercie IMMENSEMENT) on a r\u00e9ussi \u00e0 trouver au fin fond d'un thread github que la valeur \u00e9tait hard cod\u00e9e dans les variables d'environnement et que donc quoi que je fasse je n'aurais pas pu le changer. En fait la seul moyen de tout r\u00e8gler a \u00e9t\u00e9 de changer les variables d'environnement de ma machine: MOZ_HEADLESS_WIDTH et MOZ_HEADLESS_HEIGHT . Et ce qu'il y a de bien c'est que maintenant je peux mettre de la 4K et cela permet de faire un meilleur upscaling.","title":"Mardi 2 Mai 2023"},{"location":"jdb.html#recrutement-payerne-mai-2023","text":"J'ai du faire mon recrutement \u00e0 Payerne Mercredi et Jeudi. Si vous \u00eates curieux je peux vous dire que comme il n'y avait presque plus de places cet \u00e9t\u00e9 je ferai Canonnier Lance mines. C'\u00e9tait assez frustrant d'avoir perdu deux jours de travail mais on va faire avec.","title":"Recrutement Payerne Mai 2023"},{"location":"jdb.html#vendredi-5-mai-2023","text":"Bon malgr\u00e9s les courbatures il faut que je me mette au boulot un peu serieusement par ce que sinon ca va \u00eatre compliqu\u00e9 de rattraper mon retard. La derni\u00e8re fois si je me souviens bien j'avais r\u00e9ussi \u00e0 trouver un moyen de prendres des images en bonne r\u00e9solution. Il faut maintenant que je commence \u00e0 faire fonctionner la calibration et ce qui serait bien ca serait que je commence \u00e0 ajouter la partie OCR au projet. Il faut que je me d\u00e9p\u00eache car Lundi je dois m'occuper du Poster. OK j'ai compris le soucis que j'avais quand j'essayais de faire la calibration. J'avais mis l'image en ZOOM ce qui fait que si la hauteur n'\u00e9tait pas la bonne, l'image \u00e9tait recentr\u00e9e ce qui fait que cela faussait totalement les r\u00e9sultats. Quand on fait en sorte que l'image prenne toute la place, les coordonn\u00e9es sont prises correctement. Voici un exemple d'ou en est la partie calibration. \"Exemple settings UI\" Normalement il me suffit d'impl\u00e9menter les windows, et on devrait relativement facilement ajouter les pilotes. Et voila. J'ai pu impl\u00e9menter les windows et les pilotes. Et je peux aussi exporter des presets et les loader. Bon le loading est un peu beugg\u00e9 au niveau de l'affichage mais il semble qu'il fonctionne bien quand je save les images. Lundi je m'occupe du poster etc.. mais je pense que la suite va \u00eatre l'impl\u00e9mentation de l'OCR.","title":"Vendredi 5 Mai 2023"},{"location":"jdb.html#lundi-8-mai-2023","text":"Aujourd'hui c'est journ\u00e9e Poster. Je pense que je ne vais pas finir la journ\u00e9e content car les limitations sont un peu trop pr\u00e9sentes. J'ai fait une version que Garcia pourrait accepter, c'est \u00e0 dire en noir et blanc et avec un tout petit peu plus de d\u00e9tail. \"Poster V3\" Le truc c'est que en blanc je trouve que ca ne marche pas super. Et le concept d'avoir trois parties au projet qui se posent autour d'un circuit c'est peut-\u00eatre pas la meilleure id\u00e9e. Je me suis dit que la bonne id\u00e9e serait peut-\u00eatre de prendre un autre circuit pour qu'il y aie bien trois parties : \"Poster V4\" Clairement ce poster doit faire partie des pires. C'est pas clair et ca part dans tous les sens. Je vais essayer avec un autre layout de circuit. \"Poster V5\" Je me suis ensuite dit que le circuit n'\u00e9tait peut \u00eatre tout simplement pas une bonne id\u00e9e. J'ai donc essay\u00e9 de faire quelque chose de plus classique avec juste un peu de background pour qu'on puisse \u00e9viter le soucis de la page blanche derri\u00e8re : \"Poster V6\" Puis je me suis dit que finalement le circuit me manquait. Alors j'ai d\u00e9cid\u00e9 de combiner le background et le circuit ainsi que simplifier l\u00e9g\u00e8rement les diagrammes en retouchant un peu tout le reste on pouvait arriver \u00e0 quelque chose de sympatique : \"Poster V7\" Je ne suis pas content \u00e0 100% mais bon je pense que je vais m'en satisfaire. Pour donner une id\u00e9e de la gal\u00e8re que c'est de cr\u00e9er un poster, voici ce \u00e0 quoi ressemble mon espace de travail Figma : \"Bordel Figma\" Je ne suis pas un graphiste et ca se voit '^^. Je pense que comme il me reste un peu de temps aujourd'hui, je vais faire un peu de documentation de la partie r\u00e9cup\u00e8ration d'images. En effet, je pense que je n'aurai plus besoin de changer grand chose \u00e0 ce niveau. Mais je ne ferai pas la partie analyse fonctionnelle car l'interface n'est clairement pas termin\u00e9e. En fait j'avais oubli\u00e9 mais j'ai eu un rendez vous m\u00e9dical du coup je n'ai pas eu trop le temps de faire la doc que je voulais. Mais au moins je pense avoir finit mon travail sur le poster et le abstract en Anglais qui sont les deux gros livrables \u00e0 venir.","title":"Lundi 8 Mai 2023"},{"location":"jdb.html#mardi-9-mai-2023","text":"Bon je viens de me rendre compte que apparemment on doit rendre l'abstract anglais, le Poster, ET LE PROJET. Je pense que mes deux jours \u00e0 l'arm\u00e9e m'ont fait perdre un peu la notion du temps car j'avais l'impression que l'evaluation interm\u00e9diaire 1 \u00e9tait il y a genre moins d'une semaine. Donc aujourd'hui je ne vais pas trop avancer sur le code et vraiment me focus sur la documentation de la r\u00e9cup\u00e8ration d'images. Je pense que je vais aussi ajouter la partie calibration \u00e0 la documentation. Je pense que c'est important que je prenne le temps maintenant car sinon le prof aura l'impression que ca n'a pas trop avanc\u00e9 depuis la derni\u00e8re fois. Et puis je pense que la partie calibration et r\u00e9cup\u00e8ration d'images ne va pas trop changer et la partie calibration encore moins. La partie anglaise je fais la revoir un peu mais je l'avais d\u00e9ja faite pendant les premiers jours alors ca devrait aller. Pour le rendu il nous \u00e9tait demand\u00e9 de fournir un fichier PDF avec tout dedans avec une table des mati\u00e8res notre code source etc... Pour ce faire j'ai du changer le mkdocs.yml et installer des packages. Voici les changements :: site_name: Documentation Track Trends site_author: Rohmer Maxime copyright: \u00a9CFPTI Tech2 theme: name: material palette: # Palette toggle for light mode - media: \"(prefers-color-scheme: light)\" scheme: default toggle: icon: material/brightness-7 name: Switch to dark mode # Palette toggle for dark mode - media: \"(prefers-color-scheme: dark)\" scheme: slate toggle: icon: material/brightness-4 name: Switch to light mode markdown_extensions: - attr_list - md_in_html - pymdownx.highlight plugins: - glightbox - search - img2fig - with-pdf: cover_subtitle: Vroum Vroum enabled_if_env: ENABLE_PDF_EXPORT - annexes-integration: annexes: # Required (at least 1) - ConfigurationTool.cs: Code/ConfigurationTool.cs # An path to an annex with its title - DriverGapToLeaderWindow.cs: Code/DriverGapToLeaderWindow.cs # An path to an annex with its title - DriverPositionWindow.cs: Code/DriverPositionWindow.cs # An path to an annex with its title - F1TVEmulator.cs: Code/F1TVEmulator.cs # An path to an annex with its title - Program.cs: Code/Program.cs # An path to an annex with its title - Window.cs: Code/Window.cs # An path to an annex with its title - DriverData.cs: Code/DriverData.cs # An path to an annex with its title - DriverLapTimeWindow.cs: Code/DriverLapTimeWindow.cs # An path to an annex with its title - DriverSectorWindow.cs: Code/DriverSectorWindow.cs # An path to an annex with its title - Form1.cs: Code/Form1.cs # An path to an annex with its title - Reader.cs: Code/Reader.cs # An path to an annex with its title - Zone.cs: Code/Zone.cs # An path to an annex with its title - DriverDrsWindow.cs: Code/DriverDrsWindow.cs # An path to an annex with its title - DriverNameWindow.cs: Code/DriverNameWindow.cs # An path to an annex with its title - DriverTyresWindow.cs: Code/DriverTyresWindow.cs # An path to an annex with its title - OcrImage.cs: Code/OcrImage.cs # An path to an annex with its title - Settings.cs: Code/Settings.cs # An path to an annex with its title - recoverCookiesCSV.py: Code/recoverCookiesCSV.py # An path to an annex with its title Je remercie Monsieur Briard le sultan officiel de Mkdocs de la classe de m'avoir aid\u00e9 pour cette partie et avoir cr\u00e9\u00e9 un plugin qui me permet de mettre mon code source directement dans le pdf. Bon au final j'ai quand m\u00eame chang\u00e9 mon poster \"Poster V8\" Mais je suis trop attach\u00e9 \u00e0 l'ancien concept alors je vais plut\u00f4t utiliser ca : \"Poster V9\" Je pense que cette version est meilleure m\u00eame si elle est encore plus en bordel par ce que le texte permet de se faire une meilleure id\u00e9e de l'utilis\u00e9 de chaque partie.","title":"Mardi 9 Mai 2023"},{"location":"jdb.html#mercredi-10-mai-2023","text":"Bon hier je n'ai pas eu le temps de finir la documentation de la recup\u00e8ration d'images et de la calibration. Il faudra donc que je repasse un coup dessus en fin de semaine je pense. Mais la j'aimerais avancer sur la mise en commun du projet, comme la configuration fonctionne plut\u00f4t pas mal je pense que je vais juste vite fait aller commenter les methodes qui ne le sont pas encore et ensuite je vais passer \u00e0 l'impl\u00e9mentation de l'OCR. Je suis presque certain que l'OCR va avoir besoin de plus de r\u00e8glages mais bon on verra bien. Je me rend compte en commentant que la methode de load serait plus efficace avec un tout petit peu plus d'infos de la part du JSON. J'aurais pu ajouter l'offset entre chaque Driver Zone pour eviter un l\u00e8ger drift lors de la reconstruction. Mais bon rien de grave donc je pense que je vais le laisser comme ca pour le moment \u00e0 moins que ca me pose soucis plus tard. J'ai eu quelques soucis avec les images en 4K. Du coup j'ai descendu les variables d'environnement \u00e0 1920x1080 En fait il y a parfois un soucis un peu p\u00e9nible avec l'OCR. Parfois pour un temps comme ci dessous: \"1:45.140\" Le programme ne va pas bien comprendre les ponctuations et il va donner : 1115140 La il y a deux probl\u00e8mes... Le 1:xx.xxx est compris comme 11xxxxx et le 4 s'est transform\u00e9 en 1... J'ai cr\u00e9\u00e9 ce \"petit\" bout de code pour g\u00e8rer les fois ou les '.' et les ':' ont mal \u00e9t\u00e9 interpr\u00eat\u00e9s if ( rawNumbers . Count == 1 ) { //If this code is used it means that its bad ... //The methods that comes are really not that great and are juste quick fixes try { result = Convert . ToInt32 ( rawNumbers [ 0 ]); switch ( windowType ) { case OcrImage . WindowType . Sector : //The usual sector is in this form : 33.456 if ( rawNumbers [ 0 ]. Length == 6 ) { //The '.' has been understood like a number result = 0 ; result += Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ] + rawNumbers [ 0 ][ 1 ]) * 1000 ; result += Convert . ToInt32 ( rawNumbers [ 0 ][ 3 ] + rawNumbers [ 0 ][ 4 ] + rawNumbers [ 0 ][ 5 ]); } if ( rawNumbers [ 0 ]. Length == 5 ) { //The '.' has been overlooked result = 0 ; result += Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ] + rawNumbers [ 0 ][ 1 ]) * 1000 ; result += Convert . ToInt32 ( rawNumbers [ 0 ][ 2 ] + rawNumbers [ 0 ][ 3 ] + rawNumbers [ 0 ][ 4 ]); } break ; case OcrImage . WindowType . LapTime : //The usual Lap time is in this form : 1:45:345 if ( rawNumbers [ 0 ]. Length == 6 ) { //The '.' and ':' have been overlooked //I Know Im skipping the cases where there are more than 9 minuts but it happens so rarely that... we dont care result = 0 ; result += Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]) * 60000 ; result += Convert . ToInt32 ( rawNumbers [ 0 ][ 1 ] + rawNumbers [ 0 ][ 2 ]) * 1000 ; result += Convert . ToInt32 ( rawNumbers [ 0 ][ 3 ] + rawNumbers [ 0 ][ 4 ] + rawNumbers [ 0 ][ 5 ]); } if ( rawNumbers [ 0 ]. Length == 7 ) { //There is two possibilities //Either 1:45.140 has been interpreted as 1145.10 or 1:451140. We will assume its the first one result = 0 ; result += Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]) * 60000 ; result += Convert . ToInt32 ( rawNumbers [ 0 ][ 2 ] + rawNumbers [ 0 ][ 3 ]) * 1000 ; result += Convert . ToInt32 ( rawNumbers [ 0 ][ 4 ] + rawNumbers [ 0 ][ 5 ] + rawNumbers [ 0 ][ 6 ]); } break ; case OcrImage . WindowType . Gap : //The usual Gap is in this form : + 34.567 if ( rawNumbers [ 0 ]. Length == 5 ) { //The '.' has been overlooked result += Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ] + rawNumbers [ 0 ][ 1 ]) * 1000 ; result += Convert . ToInt32 ( rawNumbers [ 0 ][ 2 ] + rawNumbers [ 0 ][ 3 ] + rawNumbers [ 0 ][ 4 ]); } break ; } if ( rawNumbers [ 0 ]. Length > 6 ) { //The number definitely has been interpreted wrong } } catch { //It can be because the input is empty or because its the LEADER bracket result = 0 ; } } else { //Auuuugh result = 0 ; } ConfigFile = \"./Presets/Clean_2023.json\" ; string gpUrl = \"https://f1tv.formula1.com/detail/1000006688/2023-azerbaijan-grand-prix?action=play\" ; Bon je n'arrive pas \u00e0 faire fonctionner l'OCR sans tout faire crash \u00e0 chaque fois. Je vais abandonner le travail de la journ\u00e9e pour revenir au point initial... C'est tr\u00e8s frustrant mais bon je ne vois pas comment faire mieux. Rien ne marche alors qu'avant ca marchant super sur le projet OCR normal. Va savoir pourquoi m\u00eame comme ca, impossible de faire marcher l'OCR. Il y a un soucis au niveau de l'ASYNC qui me fait crash tout le temps en me disant qu'un objet est deja en train d'\u00eatre utilis\u00e9. Ca marchait nikel dans mes premi\u00e8res version je ne vois pas pourquoi ca p\u00eate maintenant. Je pense que je vois \u00e0 peu pr\u00e8s le soucis. public virtual async Task < DriverData > Decode ( List < string > driverList ) { int sectorCount = 0 ; DriverData result = new DriverData (); Parallel . ForEach ( Windows , async w => { // A switch would be prettier but I dont think its supported in this C# version if ( w is DriverNameWindow ) result . Name = ( string ) await ( w as DriverNameWindow ). DecodePng ( driverList ); if ( w is DriverDrsWindow ) result . DRS = ( bool ) await ( w as DriverDrsWindow ). DecodePng (); if ( w is DriverGapToLeaderWindow ) result . GapToLeader = ( int ) await ( w as DriverGapToLeaderWindow ). DecodePng (); if ( w is DriverLapTimeWindow ) result . LapTime = ( int ) await ( w as DriverLapTimeWindow ). DecodePng (); if ( w is DriverPositionWindow ) result . Position = ( int ) await ( w as DriverPositionWindow ). DecodePng (); if ( w is DriverSectorWindow ) { sectorCount ++; if ( sectorCount == 1 ) result . Sector1 = ( int ) await ( w as DriverSectorWindow ). DecodePng (); if ( sectorCount == 2 ) result . Sector2 = ( int ) await ( w as DriverSectorWindow ). DecodePng (); if ( sectorCount == 3 ) result . Sector3 = ( int ) await ( w as DriverSectorWindow ). DecodePng (); } if ( w is DriverTyresWindow ) result . CurrentTyre = ( Tyre ) await ( w as DriverTyresWindow ). DecodePng (); }); return result ; } Ca c'est ma methode de decoding de chaque Driver Zone. Le message d'erreur me parle d'une windowImage quand il dit qu'un objet est d\u00e9ja utilis\u00e9. Ma conjecture c'est que en essayant de faire toutes les windows en m\u00eame temps. Elles veulent parfois acc\u00e8der \u00e0 l'image principale en m\u00eame temps. Ce qui evidemment pose probl\u00e8me. Je pense que le fix le plus simple serait de faire le traitement sans le parallele quitte \u00e0 exporter ce fonctionnement sur chaque zone en elle m\u00eame pour ne pas perdre trop de performances. Ok je crois que je vois ou est le soucis. En fait dans cette version du programme c'est toujours la premi\u00e8re image qui \u00e9tait juste tout le temps prise et dans la premi\u00e8re image on a une partie des chiffres qui est bloqu\u00e9e par l'UI de la fen\u00eatre... lol... EN FAIT J'avais un soucis dans ma gestion des chiffres mal faits. Visiblement parfois quand je ne prenais pas en compte un :, un LapTime etait compris comme un Gap to leader ou un Secteur Bon j'en ai tellement marre... Je n'arrive tout simplement PAS \u00e0 faire fonctionner l'OCR ca crash tout le temps j'en peux plus. J'ai tent\u00e9 de r\u00e8gler les probl\u00e8mes de mauvaises detections de secteurs et temps au tour qui font crasher l'app : if ( rawNumbers . Count == 2 ) { //ss:ms result = ( Convert . ToInt32 ( rawNumbers [ 0 ]) * 1000 ) + Convert . ToInt32 ( rawNumbers [ 1 ]); if ( result > ( 60000 + 999 )) { if ( windowType == OcrImage . WindowType . LapTime ) { result = 0 ; result += Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]) * 60000 ; result += Convert . ToInt32 ( rawNumbers [ 0 ][ 2 ]. ToString () + rawNumbers [ 0 ][ 3 ]. ToString ()) * 1000 ; result += Convert . ToInt32 ( rawNumbers [ 1 ]); } if ( windowType == OcrImage . WindowType . Sector ) { int seconds = 0 ; if ( rawNumbers [ 0 ]. Length == 3 ) { //We have one char that we need to delete //For no apparent reason im going to delete the first seconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 1 ]. ToString () + rawNumbers [ 0 ][ 2 ]. ToString ()); } else { seconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]. ToString () + rawNumbers [ 0 ][ 1 ]. ToString ()); } int ms = Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]. ToString () + rawNumbers [ 0 ][ 1 ]. ToString () + rawNumbers [ 0 ][ 2 ]. ToString ()); result = seconds * 1000 + ms ; } } } Mais toujours impossible de faire fonctionner cette M**** C'est juste infernal. Je pense que je vais encore tout retirer et remplacer par ce que j'ai dans mon projet OCR original. Donc c'est une journ\u00e9e de perdue compl\u00eatement... C'est extr\u00eamement frustrant. Apr\u00e8s des heures de debug j'ai enfin r\u00e9ussi \u00e0 faire fonctionner le programme de temps en temps. Mais j'ai toujours le soucis que l'image ne veut pas changer alors que je fais tout pour et que l'OCR est nulle \u00e0 chier du coup...","title":"Mercredi 10 Mai 2023"},{"location":"jdb.html#jeudi-11-mai-2023","text":"Bon apr\u00e8s une bonne nuit de sommeil je vais reprendre les choses depuis le d\u00e9but. J'ai deux soucis : L'OCR pue du derche L'Image que l'on d\u00e9code ne change pas Pour la premi\u00e8re partie j'ai ma petite th\u00e9orie. Je pense que comme je donne des images 4K alors que le feed est en 1080P, il y a d\u00e9ja un genre d'interpolation qui est faite. Je pense donc qu'il faut que j'adapte mon engine pour qu'il fonctionne avec cette r\u00e9solution. Je me suis demand\u00e9 si ca n'\u00e9tait pas mieux de prendre en compte les deux r\u00e9solutions pour les pc un peu moins bal\u00e8zes et j'ai d\u00e9cid\u00e9 de n'en avoir rien a faire. On verra dans le futur si c'est une feature que je voudrais ajouter mais c'est en dehors du scope du dipl\u00f4me je pense. Pour la seconde partie, je pense qu'il faut que j'aille voir du c\u00f4te de OCR_Decode et de OCR Tester pour voir comment je faisais. Je dois forc\u00e9ment oublier un truc. Bon ca commence mal, quand je vais voir dans le projet OCR_Decode, le changement d'image est exactement le m\u00eame et il fonctionne alors que de mon c\u00f4t\u00e9 ca n'est pas le cas. Alors deux choses. Je me rend compte que le changement d'images n'a AUCUN effet sur la detection de texte, et seconde chose, le d\u00e9calage est trop grand entre les windows. Des que le soucis d'image est r\u00e8gl\u00e9 il va falloir que je change drastiquement ma facon de stocker la config en JSON. Il faut que je conserve les \u00e9carts. Sinon regardez ce que ca donne quand on arrive au dernier pilote : \"Zone de pilote d\u00e9cal\u00e9e\" Je commence \u00e0 devenir FOU. Je n'arrive pas \u00e0 changer cette foutue image wtf... J'ai beau tenter par tous les moyens de la changer par une image noire, l'image semble toujours rester celle du d\u00e9part. Bon j'ai enfin trouv\u00e9 pourquoi et je n'ai pas envie de dire comment j'ai trouv\u00e9... Je pense que l'on a tous droit \u00e0 son petit jardin secret. Maintenant ca veut dire que je peux me focus sur le concept important qui est le changement de la cr\u00e9ation et de la lecture des JSON. Voici un exemple de preset JSON : { \"Main\" : { \"x\" : 40 , \"y\" : 355 , \"width\" : 3784 , \"height\" : 1438 , \"Zones\" : [ { \"DriverZone\" : { \"x\" : 0 , \"y\" : -10 , \"width\" : 3784 , \"height\" : 71 , \"Windows\" : [ { \"Position\" : { \"x\" : 47 , \"y\" : 11 , \"width\" : 72 }, \"GapToLeader\" : { \"x\" : 445 , \"y\" : 13 , \"width\" : 201 }, \"LapTime\" : { \"x\" : 859 , \"y\" : 14 , \"width\" : 221 }, \"DRS\" : { \"x\" : 1094 , \"y\" : 13 , \"width\" : 173 }, \"Tyres\" : { \"x\" : 1270 , \"y\" : 11 , \"width\" : 1452 }, \"Name\" : { \"x\" : 2727 , \"y\" : 11 , \"width\" : 351 }, \"Sector1\" : { \"x\" : 3083 , \"y\" : 10 , \"width\" : 253 }, \"Sector2\" : { \"x\" : 3339 , \"y\" : 14 , \"width\" : 195 }, \"Sector3\" : { \"x\" : 3518 , \"y\" : 14 , \"width\" : 250 } } ] } } ] }, \"Drivers\" : [ \"Perez\" , \"Leclerc\" , \"Sainz\" , \"Alonso\" , \"Stroll\" , \"Russel\" , \"Verstappen\" , \"Zhou\" , \"Ocon\" , \"Hulkenberg\" , \"Hamilton\" , \"Norris\" , \"Tsunoda\" , \"Magnussen\" , \"Piastri\" , \"Albon\" , \"Gasly\" , \"Sargeant\" , \"Bottas\" , \"De Vries\" ] } Je pense que ce qui serait bien ce serait de rajouter un \"offsets\" qui contienne les 19 \u00e9carts restants. Bon... la structure de ma fabrication de JSON etait trop confuse je trouve alors je l'ai compl\u00eatement refaite. J'ai aussi abandonn\u00e9 l'id\u00e9e de faire un fichier le plus petit possible car au final on s'en fiche et le plus important c'est que toutes les windows et les zones soient aux bons endroits. Ca nous fait un fichier d'environs 1300 lignes mais au moins le code pour la serialisation est plut\u00f4t clean : public void SaveToJson ( List < string > drivers , string configName ) { string JSON = \"\" ; JsonObject jsonFileObject = new JsonObject (); //Creating the mainZone object JsonObject mainZoneObject = new JsonObject (); mainZoneObject . Add ( \"x\" , MainZone . Bounds . X ); mainZoneObject . Add ( \"y\" , MainZone . Bounds . Y ); mainZoneObject . Add ( \"width\" , MainZone . Bounds . Width ); mainZoneObject . Add ( \"height\" , MainZone . Bounds . Height ); JsonArray driverZonesArray = new JsonArray (); int DriverID = 0 ; foreach ( Zone driverZone in MainZone . Zones ) { DriverID ++; JsonObject driverZoneObject = new JsonObject (); driverZoneObject . Add ( \"name\" , \"Driver\" + DriverID ); driverZoneObject . Add ( \"x\" , driverZone . Bounds . X ); driverZoneObject . Add ( \"y\" , driverZone . Bounds . Y ); driverZoneObject . Add ( \"width\" , driverZone . Bounds . Width ); driverZoneObject . Add ( \"height\" , driverZone . Bounds . Height ); JsonArray windowsArray = new JsonArray (); JsonObject windowObject = new JsonObject (); foreach ( Window window in driverZone . Windows ) { windowObject . Add ( window . Name , new JsonObject { { \"x\" , window . Bounds . X }, { \"y\" , window . Bounds . Y }, { \"width\" , window . Bounds . Width }, { \"height\" , window . Bounds . Height } }); } windowsArray . Add ( windowObject ); driverZoneObject . Add ( \"Windows\" , windowsArray ); driverZonesArray . Add ( driverZoneObject ); } mainZoneObject . Add ( \"DriverZones\" , driverZonesArray ); JsonArray driversArray = new JsonArray (); foreach ( string driver in drivers ) { driversArray . Add ( driver ); } mainZoneObject . Add ( \"Drivers\" , driversArray ); jsonFileObject . Add ( \"Main\" , mainZoneObject ); JSON = jsonFileObject . ToString (); //Saving the file string path = CONFIGS_FOLDER_NAME + configName ; if ( File . Exists ( path + \".json\" )) { //We need to create a new name int count = 2 ; while ( File . Exists ( path + \"_\" + count + \".json\" )) { count ++; } path += \"_\" + count + \".json\" ; } else { path += \".json\" ; } File . WriteAllText ( path , JSON ); } Et normalement la lecture devrait \u00eatre encore plus simple. En fait c'\u00e9tait pas beaucoup plus simple mais au moins maintenant ca marche. Je vais pas mettre le code de lecture ici car c'est un peu trop long donc il va falloir me croire sur parole. (Ou aller sur Git) Bon bah on est au m\u00eame endroit qu'hier... Bon pour demain le plan de bataille ca va \u00eatre : Changer compl\u00eatement la methode \"GetTimeFromPng\" pour qu'elle prenne en compte toutes les possibilit\u00e9s de bugs et d'oubli de '.' ou de ':' mais pas selon le nombre de blocs mais selon le type de temps que l'on cherche Pour le moment je regarde le nombre de blocs et si il y en a deux alors c'est que c'est un temps de secteur. En fait non cela peut aussi \u00eatre un temps au tour qui a rat\u00e9 un point. Il faut que je bosse juste un peu vite fait la dessus et que j'arr\u00eate de putain de crasher d\u00e8s que un truc est pas au bon format. Ensuite quand ca aura arr\u00eat\u00e9 de crasher je vais reprendre l'OCR et voir pourquoi les resultats sont nuls a chier comme ca. Et le but c'est que demain soir j'ai une reconnaissance de caract\u00e8res plus proche de ce que j'avais dans d'autres projets... J'y croit 0 mais bon l'espoir fait vivre comme on dit.","title":"Jeudi 11 Mai 2023"},{"location":"jdb.html#vendredi-12-mai-2023","text":"Bon aujourd'hui il faut que ca marche. On va y aller par \u00e9tape. Je vais revoir toutes les methodes d'OCR et essayer de r\u00e9apliquer les filtres differemment et revenir au point de d\u00e9part. Avant de commencer je note plusieurs soucis avec les premiers tests : Les positions des pilotes ont l'air pas mal (Pas besoin de tout changer mais peut-\u00eatre simplement checker que les filtres sont bons) L'\u00e9cart avec le leader est \u00e9tonnamment pas mal aussi Le temps au tour est tout simplement horrible. Aucun n'est juste et de tr\u00e8s loin m\u00eame si les d\u00e9cimales ne sont pas forc\u00e9ment loin Le DRS je n'ai pas eu l'occasion de bien le tester mais je dirais que ca devrait \u00eatre bon (\u00e0 verifier quand le reste sera bon) Les pneus ne sont \u00e9tonnamment pas SI horribles, m\u00eame si parfois les lettres sont prises comme des chiffres Les noms de pilotes sont tr\u00e8s bon (pas \u00e9tonnant vu le syst\u00e8me de distance de Levenstein donc ca m\u00e9rite quand m\u00eame un petit check) Les secteurs sont en g\u00e9n\u00e9ral horribles mais pas toujours. C'est peut-\u00eatre un soucis de d\u00e9cimale ou des 4 qui se transforment en 1 J'ai remarqu\u00e9 que les 4 sont souvent pris comme des 1. Peut-\u00eatre que en ayant des images 4K l'interpolation est un peu diff\u00e9rente de ce que j'ai l'habitude de voir. Mais donc le plan aujourd'hui c'est de checker tous ces points et les faire fonctionner (youpi...) J'ai d\u00e9sactiv\u00e9 toutes les methodes de cette facon : int sectorCount = 0 ; DriverData result = new DriverData (); foreach ( Window w in Windows ) { // A switch would be prettier but I dont think its supported in this C# version if ( w is DriverNameWindow ) //result.Name = (string)await (w as DriverNameWindow).DecodePng(driverList); result . Name = \"Unknown\" ; if ( w is DriverDrsWindow ) //result.DRS = (bool)await (w as DriverDrsWindow).DecodePng(); result . DRS = false ; if ( w is DriverGapToLeaderWindow ) //result.GapToLeader = (int)await (w as DriverGapToLeaderWindow).DecodePng(); result . GapToLeader = 0 ; if ( w is DriverLapTimeWindow ) //result.LapTime = (int)await (w as DriverLapTimeWindow).DecodePng(); result . LapTime = 0 ; if ( w is DriverPositionWindow ) //result.Position = (int)await (w as DriverPositionWindow).DecodePng(); result . Position = 0 ; if ( w is DriverSectorWindow ) { sectorCount ++; if ( sectorCount == 1 ) //result.Sector1 = (int)await (w as DriverSectorWindow).DecodePng(); result . Sector1 = 0 ; if ( sectorCount == 2 ) //result.Sector2 = (int)await (w as DriverSectorWindow).DecodePng(); result . Sector2 = 0 ; if ( sectorCount == 3 ) //result.Sector3 = (int)await (w as DriverSectorWindow).DecodePng(); result . Sector3 = 0 ; } if ( w is DriverTyresWindow ) //result.CurrentTyre = (Tyre)await (w as DriverTyresWindow).DecodePng(); result . CurrentTyre = new Tyre ( Tyre . Type . Undefined , 0 ); } return result ; Le but c'est que ensuite je puisse y aller \u00e9tape par \u00e9tape. Position : Alors pour cette reconnaissance je dirais que la 4K fait des merveilles qui permettent de retirer du processing. La position apr\u00e8s un simple Treshold est assez bien reconnue et la dilataion et/ou Erosion ne sont pas nescessaires finalement. On va donc pouvoir gagner un certain temps et c'est un bon signe pour la suite. On peut aussi noter que quand un pilote est hors course toutes ses valeurs sont gris\u00e9es et sa position est prise comme un -1 Sectors, alors j'ai refait toute la partie qui concerne les secteurs et qui les nettoie. Et je me suis rendu compte qu'ils \u00e9taient bien souvent juste, le seul truc c'est que ils s'affichent de mani\u00e8re un peu sp\u00e9ciale. En fait dans la page de la F1TV les secteurs peuvent faire plus de 60 secondes sans passer sur un affichage de minutes. Ce qui fait que c'est un peu bizarre \u00e0 regarder mais c'est parfaitement juste. J'ai aussi pu simplifier la reconnaissance gr\u00e2ce \u00e0 l'image de meilleure qualit\u00e9 et maintenant les temps de secteur sont plut\u00f4t corrects. En fait le plus long et complexe c'est de pr\u00e9voir les cas particuliers ou un '.' a \u00e9t\u00e9 mal interpr\u00eat\u00e9... Et en parlant de ca, je vais aller m'occuper des temps au tour qui ajoutent une couche de complexit\u00e9 avec un '.' ET un ':' qui peuvent \u00eatre oubli\u00e9s... Oh et j'y pense, un truc malin pourrait \u00eatre de comparer les temps au tour et les temps de secteur. Ils devraient concorder normalement je pense. Ok je viens de finir la gestion des temps au tour... J'ai un code de genre 170 lignes pour juste nettoyer le resultat dans le cas ou des '.' n'ont pas \u00e9t\u00e9 trouv\u00e9s ou des ':' ont \u00e9t\u00e9 n'ont pas \u00e9t\u00e9 trouv\u00e9 ou si l'un des deux s'est transform\u00e9 en chiffre etc.. etc.. etc.. Le soucis c'est que la maintenant je me rend compte que les \u00e9carts entre les pilotes vont juste \u00eatre un enfer \u00e0 nettoyer... Ils peuvent aussi bien \u00eatre \"0.760\" comme \"1:34.456\" du coup... je sais pas vraiment comment faire pour tout nettoyer. Je pense que je vais juste en avoir rien \u00e0 faire et tant pis si de temps en temps c'est pas g\u00e9nial. Bon du coup j'ai pas pris en compte TOUS les cas possibles mais d\u00e9ja un certain nombre et c'est d\u00e9ja pas mal. Sur les diff\u00e9rents Grand Prix d'exemples ca a l'air de plut\u00f4t bien tourner ! Mais ca demande tellement de tests et de code que c'est un peu ridicule... La methode \"GetTimeFromPng\" fait d\u00e9ja presque 430 lignes \u00e0 cause de tous les cas possibles et tous les try catch. Ca peut para\u00eetre peu \u00e9l\u00e9gant mais j'ai essay\u00e9 de mettre des commentaires un peu partout pour permettre \u00e0 nimporte qui de comprendre ce qui se passe. J'ai aussi pu faire les pneus et maintenant (roulement de tambour) Ca marche (presque) En fait j'ai des soucis parfois quand les pneus sont un peu cach\u00e9s dans les permiers tours : Pneus cach\u00e9s Le soucis c'est que du coup le chiffre est un peu illisible... mais je pense que avec l'historique il devrait y avoir moyen de ne pas prendre en compte les chiffres de pneus pendant cinq tours apr\u00e8s le changement de pneu ou de simplement tenter de faire les calculs de pneus. Pour conclure la journ\u00e9e je pense que je devrais avoir le temps de faire un syst\u00e8me qui permet de refresh \u00e0 volont\u00e9. Par contre je viens de d\u00e9couvrir que quand un temps de secteur est en couleur on arrive pas \u00e0 le lire. Ah et la detection prend un peu moins de trois secondes sur mon pc je crois. Mais c'est seulement si les driver zones sont faites en m\u00eame temps mais en faisant ca de temps en temps ca crash et \u00e0 chaques fois c'est d'un endroit diff\u00e9rent du coup je comprend pas vraiment. Sinon ca prend dix secondes.","title":"vendredi 12 Mai 2023"},{"location":"jdb.html#lundi-15-mai-2023","text":"Aujourd'hui c'est journ\u00e9e poster et visites. Comme on va avoir des visites de premi\u00e8res ann\u00e9es voire de terminales et que le soir c'est visite des parents. Je pense que j'ai finit de tout regrouper (\u00e0 part \u00e9videmment le traitement et le stockage des donn\u00e9es) ce qui veut dire que je suis pas dans une superbe posture. Il va falloir que je sois tr\u00e8s efficace dans la partie stockage de donn\u00e9es et mise en place du mod\u00e8le si je veux avoir une chance de rendre un joli travail de dipl\u00f4me. (et m\u00eame comme ca je peux voir que le temps commence \u00e0 manquer) Dans l'id\u00e9al je devrais avoir termin\u00e9 la partie stockage jeudi... Ce qui veut dire que je n'ai que trois jours pour le faire et que en plus jeudi je dois travailler depuis la maison. Ca va pas \u00eatre simple. Mais aujourd'hui je vais m'occuper d'adapter la documentation de l'OCR et faire la documentation de toute la partie r\u00e9cup\u00e8ration d'images et de la calibration. Bon au final la journ\u00e9e a \u00e9t\u00e9 un peu difficile. On a pas vraiment pu travailler l'apr\u00e8s midi car il a fallu pr\u00e9senter le projet environs 10 fois \u00e0 toutes les classes et \u00e0 des parents voire futurs experts. Les d\u00e9mos ont plut\u00f4t bien fonctionn\u00e9es j'en suis assez content. Mais ca veut dire que la partie doc a pas forc\u00e9ment pu \u00eatre totalement compl\u00eat\u00e9e mais demain il va falloir que je m'occupe de la suite du projet.","title":"Lundi 15 Mai 2023"},{"location":"jdb.html#mardi-16-mai-2023","text":"Bon aujourd'hui c'est la partie stockage qui doit \u00eatre faite. Il y a plusieurs solutions possibles \u00e0 ce probl\u00e8me. Mais comme je n'ai besoin que d'une base de donn\u00e9e locale et que je ne veux pas que chaque utilisateur doive installer un serveur sur sa machine je pense que je vais utiliser une base de donn\u00e9es SQLITE. Il y a eu une petit intervention de mr Bonvin qui est venu me donner une id\u00e9e pour la partie OCR. En fait j'avais un soucis quand je voulais d\u00e9coder du texte de couleur. M\u00eame en appliquant un filtre de gris je n'arrivais pas \u00e0 faire reconnaitre les chiffres. Et il m'a dit que une bonne id\u00e9e cela pourrait de prendre la valeur max de chaque channel et de la faire appliquer \u00e0 tous ce qui blanchit assez bien l'image. J'ai d\u00e9cid\u00e9 d'exag\u00e8rer le blanchiment et cela donne des r\u00e9sultats plut\u00f4t... int\u00e9ressants... \"Filtre vanish oxy action sur un secteur violet\" Le soucis c'est que le violet est une couleur quand m\u00eame assez sombre alors il va falloir que je fasse un syst\u00e8me de treshold un peu sp\u00e9cial qui soit un peu plus sympa et qui prenne plus facilement des couleurs plus basses. Une methode \u00e0 laquelle j'ai pens\u00e9 pour detecter dans quel tour chaque pilote est serait de garder en m\u00e9moire toutes les infos de chaques pilotes au fur et \u00e0 mesure, et d\u00e8s qu'on ne recoit plus d'infos des secteurs ou que le temps au tour a chang\u00e9 on peut savoir qu'il faut passer au tour suivant. Pour detecter les arr\u00eats aux stands je peux essayer de detecter un changement de type de pneus ou de nombre de tours detect\u00e9s sur le m\u00eame pneu Au d\u00e9part je me disais que je pourrais peut-\u00eatre faire une base de donn\u00e9e SQLITE locale qui puisse \u00eatre reprise d'un Grand Prix \u00e0 un autre. Mais je me suis dit que de faire des statistiques inter Grand Prix \u00e9tait un peu en dehors du scope du projet. La base de donn\u00e9e sera donc cr\u00e9\u00e9e \u00e0 chaque d\u00e9marrage de l'app La mani\u00e8re dont je vois les choses en ce moment est qu'on aie deux sources de donn\u00e9es dans l'affichage final. On aurait une partie des infos qui seraient en direct depuis la detection : Les ecarts entre pilotes La position des pilotes Le dernier temps au tour Les derniers secteurs Les pneus Mais on aurait aussi des rubriques cr\u00e9\u00e9es de toutes pi\u00e8ces par des infos qui viennent de la BD Voici les rubriques qui pourraient \u00eatre int\u00e9ressantes \u00e0 voir dans l'interface finale : Les 3 ou 5 pilotes les plus rapides ces cinq derniers tours Le pilote qui a le plus fait de d\u00e9passements Les batailles en cours Les 3 pilotes les plus lents Un classement pond\u00e9r\u00e9 avec les 20s de moins pour tous les pilotes qui ne se sont pas encore arr\u00eat\u00e9s En gros l'id\u00e9e serait que on update une fois par tour et par pilote la base de donn\u00e9e avec des infos comme le temps au tour, le type de pneu etc... Voici les trois tables que je vais cr\u00e9er : Drivers Colonne Type de Data Description Tag ID INTEGER ID du pilote PRIMARY Name VARCHAR Nom du pilote NOT NULL Pitstops Colonne Type de Data Description Tag Lap INTEGER Tour durant lequel le Pitstop a \u00e9t\u00e9 effectu\u00e9 PRIMARY DriverID INTEGER Pilote qui a effectu\u00e9 le Pitstop PRIMARY Tyre VARCHAR Pneu chauss\u00e9 par le pilote NOT NULL Stats Colonne Type de Data Description Tag Lap INTEGER Tour durant lequel le Pitstop a \u00e9t\u00e9 effectu\u00e9 PRIMARY DriverID INTEGER Pilote qui concern\u00e9 PRIMARY Tyre VARCHAR Pneu chauss\u00e9 par le pilote NOT NULL LapTime INTEGER Temps au tour (MS) NOT NULL Sector1 INTEGER Temps du secteur 1 (MS) NOT NULL Sector2 INTEGER Temps du secteur 2 (MS) NOT NULL Sector3 INTEGER Temps du secteur 3 (MS) NOT NULL GapToLeader INTEGER Ecart avec le leader (MS) NOT NULL Position INTEGER Position pilote NOT NULL Ca n'est pas forc\u00e9ment d\u00e9finitif mais je pense que c'est d\u00e9ja un bon d\u00e9but pour faire des rubriques sympa. Je suis en train de tenter d'impl\u00e9menter le code pour permettre ensuite d'ajouter et retirer des choses facilement.","title":"Mardi 16 Mai 2023"},{"location":"jdb.html#mercredi-17-mai-2023","text":"Aujourd'hui le but c'est de remplir la base SQLITE avec des infos. Si j'arrive \u00e0 tout remplir alors ca devrait pas \u00eatre trop compliqu\u00e9 de venir faire des requ\u00e8tes qui donnent de bonnes infos. Mais la probl\u00e9matique principale va \u00eatre de d\u00e9cider QUAND ins\u00e8rer des choses dans la base de donn\u00e9e. Je pense que le meilleur moyen serait de garder une liste de DriverData par pilote en piste qui puisse contenir toutes les data que l'on recoit. Et \u00e0 chaques fois que l'on veut ajouter \u00e0 cette liste on v\u00e9rifie si un tour a \u00e9t\u00e9 fait pour envoyer les data pr\u00e9c\u00e9dente et r\u00e9initialiser la liste. Il faut donc une liste de 20 listes de DriverData et une liste de int qui repr\u00e9senteront le num\u00e9ro du tour dans lequel chaque pilote se trouve. Pour detecter un arr\u00eat je pense que la meilleure mani\u00e8re est de regarder si le pilote a chang\u00e9 de place ou de type de pneu. Si je prend que les fois ou le pilote change place ET de pneus alors certains arr\u00eats pour ceux qui sont loins devant ou loins derri\u00e8re pourraient ne pas \u00eatre detect\u00e9s. Et si je ne prend que le changement de pneus cela pose un soucis car un pneu pourrait avoir \u00e9t\u00e9 chang\u00e9 pour un autre du m\u00eame type. Et parfois les valeurs de tours faits avec le pneu ne sont pas toujours bien lues et parfois sont compliqu\u00e9es \u00e0 retrouver car tous les pneus ne sont pas neuf quand ils sont chauss\u00e9s. Je crois que la detection de tours et des arr\u00eats aux stands est sur la bonne voie. Le seul soucis que j'ai c'est que pour faire du debug je suis un peu oblig\u00e9 d'attendre pendant 10min si je veux avoir de quoi faire des stats un peu sympa. Je me rend compte que parfois j'obtiens des r\u00e9sultats un peu bizarres mais que c'est la f1TV qui les donne. Par exemple de cas ou Alex Albon n'a que deux tours sur ses pneus alors que tout le monde devant et derri\u00e8re lui en a 3 et que on est au tour 4. \"wtf...?\" Ah et aussi parfois quand les pilotes se d\u00e9passent on se retrouve dans des situations plut\u00f4t rigolotes : \"Wtf...??\" COMMENT JE FAIS POUR DETECTER CA WIONDVIDNJDODVNSDIC Bon je me rend compte que clairement si je veux que mes data soient plus utiles il faudrait que je fasse un tout petit peu plus de taff sur quelques points dans l'OCR. Le nombre de tours des pneus (Les num\u00e9ros sont vraiment mal detect\u00e9s et parfois m\u00eame la couleur est pas dingue) Les 4 qui sont pris pour des 1 ou des 11 (pour les temps et les pneus) apr\u00e8s un test de plus longue haleine je suis content de voir que au moins mon programme peut tourner plus d'une heure sans crasher et qu'il peut \u00eatre fiable quand il veut.","title":"Mercredi 17 Mai 2023"},{"location":"jdb.html#jeudi-18-mai-2023","text":"Aujourd'hui c'est t\u00e9l\u00e9Travail forc\u00e9 et j'\u00e9tais scens\u00e9 aller au Grand Prix d'Imola ce qui malheureusement ne pourra pas se faire pour des raisons d'inondations. En effet la r\u00e9gion est clairement pas en \u00e9tat de recevoir un Grand Prix de Formule 1 et donc ce weekend c'est maison. Le but du jour c'est d'avancer la doc et de tenter d'am\u00e9liorer l'OCR pour que Lundi il soit relativement facile d'avancer sur l'interface de l'app finale. Je suis en train d'explorer une methode de detection de bords de sobel. Le seul soucis c'est que les r\u00e9sultats sont bons mais avec un vide au milieu des chiffres. Cela veut dire que parfois le temps est mal detect\u00e9. Mais il semble que pour le reste du temps cela se passe plut\u00f4t bien. Ca vaut peut \u00eatre le coup de modifier la gestion des erreurs. \"Artefacts de detection de sobel\" En fait le soucis avec ces artefacts c'est que parfois le temps au tour n'est tout simplement pas detect\u00e9. Dans l'exemple ci dessus, la reconnaissance de caract\u00e8res ne trouve tout simplement rien. Il faut donc que je trouve un moyen de corriger ces soucis. Il semblerait que en appliquant un tresholding un peu plus s\u00e9v\u00e8re en amont on arrive \u00e0 r\u00e9duire les artefacts \"Artefacts all\u00e8g\u00e9s\" ; Je crois qu'il faut faire attention avec les 'Bitmap.save' quand on utilise de l'asynchrone. le GDI+ aime pas des masses.","title":"Jeudi 18 Mai 2023"},{"location":"jdb.html#lundi-22-mai-2023","text":"BON ! Il ne reste plus beaucoup de temps ! Selon le planning cette semaine est la derni\u00e8re semaine de programmation. Il va donc falloir CHARBONNER !! Il ne me reste plus que une t\u00e2che \u00e0 vraiment faire (\u00e0 part les tests mais euuuu voila bon). J'essaie d'impl\u00e9menter un peu plus d'error handling mais c'est pas facile... Il y a tellement de choses qui peuvent mal tourner c'est infernal. Une chose qui serait bien serait de rajouter des points d'attente variables dans le code de l'emulateur un peu partout pour eviter de se retrouver bloqu\u00e9 \u00e0 chaque fois. L'int\u00e9r\u00eat serait que des gens avec une moins bonne connexion pourraient quand m\u00eame profiter du programme sans qu'il crashe 300 fois. Ce qui est frustrant c'est que va savoir pourquoi, maintenant, on arrive quasi jamais a avoir la page data... Genre sans deconner c'est une fois sur 5 que l'emulateur nous ressort la page Data et pas juste le feed. C'est absolument infernal. Je ne comprends pas pourquoi en plus. L'emulateur arrive bien \u00e0 cliquer sur le bon bouton mais m\u00eame comme ca ca ne veut pas. CA NA AUCUN SENS BORDEL. Sur une image Jjai de supers resultats pour les temps au tour mais d\u00e8s que l'image change PAF plus aucun temps n'est detect\u00e9. Ah non c'est bon c'est juste que VA SAVOIR POURQUOI les images sont en putain de resolution DEGEULASSE. Je ne comprends pas pourquoi ce matin particuli\u00e8rement le projet marche si mal. Par ce que d\u00e8s que l'image revient \u00e0 une r\u00e9solution normale c'est bon. Un autre soucis que j'ai est que je n'arrive pas \u00e0 paralleliser l'OCR ce qui fait que elle peut prendre parfois plus de 15 secondes. Et le probl\u00e8me avec ca c'est que la detection de tours et de pitstop est grandement impact\u00e9e si on a pas assez de data assez souvent. Je vais me focus sur le reste en attendant mais d\u00e8s que M.Bonvin apparait dans les parages je vais devoir l'alpaguer. J'ai ajout\u00e9 la possibilit\u00e9 d'essayer plusieurs fois de trouver le bouton fullscreen et de cliquer dessus plut\u00f4t que d'attendre dix secondes comme un con et esp\u00e8rer que ca fonctionne. Mais si apr\u00e8s 15 secondes d'essais il n'y arrive pas cela fait quand m\u00eame p\u00eater une erreur. Je pense que je vais m'occuper de la page de configuration maintenant. Voici \u00e0 quoi ressemblait la page de settings ce matin quand je suis arriv\u00e9. \"Ancienne page de settings\" Comme je pense que l'UI de cette page ne va pas vraiment changer d'ici la fin du projet je peux me permettre de lui faire une petite beaut\u00e9 car apr\u00e8s je ne pense pas y retoucher. Pour ca j'ai plusieurs \u00e9tapes comme choisir une palette de couleur, retirer l'inutile et choisir judicieusement le placement des items sur la form pour que cela soit le plus intuitif possible. J'y pense, il fuadrait peut-\u00eatre que je me trouve un logo ca pourrait rendre bien. Voila alors j'ai chang\u00e9 un tout petit peu ce \u00e0 quoi ressemble la page de settings et j'ai ajout\u00e9 du responsive pour que le user puisse mettre l'application en plein \u00e9cran. \"Nouvelle page de configuration\" Mais il manque un peu de couleurs et de d\u00e9tails pour que cela rende vraiment bien. Et apr\u00e8s quelques tentatives on se retrouve avec une page plut\u00f4t sympa je trouve : \"Nouvelle page de config\" Et elle est responsive : \"Nouvelle page de config en plein \u00e9cran\" Et j'ai fait quelques changements pour ce qui est des zones qui s'affichent pour qu'on les voie mieux. \"Nouvelle page de config en action\" Je trouve que franchement ca rend pas mal. Le reste de l'app sera dans ce style. J'ai mis pas mal de temps \u00e0 cr\u00e9er cette page, mais je pense que c'est important que la page de config soit propre. Et en plus tout le temps que j'ai pass\u00e9 ici n'est pas perdu car ensuite j'aurai simplement \u00e0 suivre les m\u00eames directives de style pour le reste de l'UI. Il faut aussi savoir que Windows Form n'est ps forc\u00e9ment le meilleur outil pour travailler avec le design. Truc tout b\u00eate par exemple qui m'a fait perdre 30 minutes. Il est impossible de retirer les bordures des objets \"GroupBox\". Ce que j'ai donc du faire ca a \u00e9t\u00e9 de dessiner un rectangle autour de la couleur du background pour que l'on ne voit plus les bordures et ensuite j'ai du redessiner le texte pour qu'il puisse s'afficher quand m\u00eame. C'est pleins de petites choses comme ca qui sont plut\u00f4t p\u00e9nibles et qui font perdre du temps mais je pense que c'est rentable de s'y attarder. Maintenant ce que je vais faire aujourd'hui et demain c'est l'affichage general de l'app. Je pense que je vais commencer par mettre des placeholder de l'app finale comme ca je saurai quoi implementer comme methodes de r\u00e9cup\u00e8ration demain. J'aimerais quand m\u00eame faire une interface sympa m\u00eame si les data sont pas parfaites. Par ce que je me dis que au pire si je montre une interface qui donne des infos inexacte mais qui a la bonne logique c'est toujours mieux que de ne pas montrer ce que ca pourrait faire avec des donn\u00e9es un peu plus int\u00e8gres. Autre point \u00e0 noter, je me suis rendu compte que ca pourrait \u00eatre potentiellement pas mal de trouver un moyen rapide de lancer l'appli avec un Grand Prix. Genre permettre de selectionner le preset et l'URL du Grand Prix sans avoir \u00e0 passer par la page de configuration. Je me suis rendu compte que c'\u00e9tait super chiant de devoir \u00e0 chaque fois le faire (m\u00eame si je me rends compte que normalement un user ne devrait pas lancer l'app autant) Voila ue premi\u00e8re version de l'App avec tous les placeholders : \"Premi\u00e8re version de la page principale\" Et c'est tout pour aujourd'hui ! Ce fut une journ\u00e9e remplie.","title":"Lundi 22 Mai 2023"},{"location":"jdb.html#mardi-23-mai-2023","text":"Aujourd'hui le but c'est de remplir le framework de hier avec les bonnes Data. Je ne sais pas si je peux tout finir en un jour mais on va essayer. Bon j'ai eu une discussion anim\u00e9e avec M.Bonvin et il semble que je sois oblig\u00e9 de refaire \u00e0 peu pr\u00e8s tout mon code pour le rendre ne serait-ce qu'un peu optimis\u00e9. Bon au final j'ai perdu 6H de travail \u00e0 tenter de convertir mon code dans une version un peu plus optimis\u00e9e... Mais je me rend compte que c'est juste impossible... Il me faudrait au moins plusieurs jours pour faire correctement ce refactor et donc je vais tout simplement faire un git restore... C'est extr\u00eament frustrant mais bon... Pas le choix il semble. J'ai du \u00e9crire au moins 600 lignes de code et tout pars en fum\u00e9e. C'est une d\u00e9bauche d'\u00e9nergie absolument ph\u00e9nomenale. Apr\u00e8s ca valait le coup de tenter je pense. (J'ai envie de mourir) EN FAIT C'EST BON !! Il fallait juste que je croie en mon code original !!! J'ai r\u00e9ussi \u00e0 paralelliser mon ancien code. Il ne manquait presque rien mais M.Bonvin voulait absolument que je change le reste. Maintenant j'ai une detection qui se fait en quelques secondes c'est genial.","title":"Mardi 23 Mai 2023"},{"location":"jdb.html#mercredi-24-mai-2023","text":"Alors hier je n'ai pas bien eu le temps d'expliquer ce que voulait que M.Bonvin. En fait mon programme actuellement utilise un d\u00e9coupage qui peut par\u00e2itre complexe. Et de par sa nature, il pensait qu'il \u00e9tait simplement impossible de paralelliser le traitement car trop complexe et trop couteux. Il voulait donc que je passe sur un traitement plus simple. L'id\u00e9e \u00e9tait que on s'occupe dabord de faire une liste de toutes les Windows et de les traiter toutes \u00e0 la fois pour \u00e9viter que les boucles soient trop complexes. Sauf que pour impl\u00e9menter un truc pareil c'est \u00e9norm\u00e9ment de code car cela va \u00e0 l'encontre totale de la facon dont mon projet fonctionne actuellement. Mais comme j'\u00e9tais ouvert \u00e0 d'autres solutions. J'ai pass\u00e9 six heures \u00e0 tenter de l'impl\u00e9menter. Il en aurait fallu au minimum deux jours soyons clair. Et en fait on s'est retrouv\u00e9s devant pleins de probl\u00e8mes qui ne se posent pas dans mon architecture originale. Par exemple. On a pas trouv\u00e9 de methode simple pour d\u00e9couper les images des fen\u00eatres de mani\u00e8re thread safe. Il aurait donc fallu ajouter des boucles en pr\u00e9alable pour tout d\u00e9couper et le faire de mani\u00e8re s\u00e9quencielle. Ensuite vient le probl\u00e8me que si on traite toutes les donn\u00e9es dans des boucless paralelle on perds leur position originale donc il faut faire une classe pour stocker les r\u00e9sultats temporaires. Il y a aussi le soucis que les Windows ont certe une position mais elle est relative au parent et \u00e0 l'image parente. Donc il faudra faire un syst\u00e8me qui convertis les windows en position absolue sur l'image. Ca peut para\u00eetre \u00eatre de simples changements mais deja il y en a pas mal d'autres et franchement m\u00eame si l'id\u00e9e originale aurait pu simplifier les choses. Les sacrifices que l'on doit faire pour la faire marcher sont juste trop moches et \u00e0 mon avis ne sont pas du tout aussi logiques que mon d\u00e9coupage original. Cette exp\u00e9rience m'a quand m\u00eame permis de me rendre compte des endroits dans mon code qui sont plus ou moins difficile \u00e0 maintenir et cela m'a fait me rendre compte que ma solution n'\u00e9tait pas forc\u00e9ment la plus simple pour tout le monde mais que mine de rien elle peut \u00eatre efficace. La je suis en train de rajouter les routes pour la vue. Je me suis dit que ca serait une bonne id\u00e9e de permettre aux users de cliquer sur un pilote pour avoir ses infos. Mais je me suis dit que ce qui serait encore plus cool serait de pouvoir cliquer sur un des temps au tour d'un pilote et qu'une petite fen\u00eatre s'ouvre pour indiquer les temps par secteurs. Mais en faisant ca je me rends compte qu'il y a quelques soucis dans la facon que je conserve les infos dans la DB et je peux voir directement quand la reconnaissance a du mal avec certains pilotes ou des positions. Ca arrive plus souvent que ce que je voudrais que un pilote soit mal detect\u00e9. Mais ce qui est dr\u00f4le c'est que c'est parfois sur une deux voire trois reconnaissance que le pilote n'est plus reconnu mais ensuite tout va bien. Il faut que je travaille un peu plus sur le filtrage de ces donn\u00e9es limites et peut-\u00eatre de voir si la reconnaissance de la position pourrait \u00eatre un peu v\u00e9rifi\u00e9e. Bon pour \u00eatre honn\u00eate je ne pense pas que le code qui concerne l'affichage soit le meilleur code que j'aie pu produire dans ma vie de d\u00e9veloppeur mais en m\u00eame temps je n'ai pas forc\u00e9ment le temps de le rendre magnifique. La le but est simplement que tout marche. (Et c'est un peu la m\u00eame phylosophie dans tout le reste du projet lol) Demain il me reste pas mal de choses \u00e0 faire et c'est la derni\u00e8re journ\u00e9e ou je peux les faire. Rendre la form plus jolie et changer les couleurs Rendre la form Responsive Ajouter les bons messages d'erreur qui vont bien Modifier les messageBox d'erreur pour qu'elles soient plus agr\u00e9ables \u00e0 utiliser Clean un peu le code mod\u00e8le vue controller Si j'ai le temps ajouter les bons commentaires les bonnes ent\u00eates partout","title":"Mercredi 24 Mai 2023"},{"location":"jdb.html#jeudi-25-mai-2023","text":"Bon bah le but aujourd'hui c'est de finaliser un peu le projet car la semaine prochaine c'est doc. Pas grand chose \u00e0 dire. J'ai pass\u00e9 la journ\u00e9e \u00e0 fix des petits bugs par ci par la. Voici des exemples de ce \u00e0 quoi ressemble l'app \u00e0 la fin de la journ\u00e9e : \"Screenshot de la page principale\" \"Screenshot de la page principale\" On se rend jamais compte mais c'est tellement long de r\u00e8gler chaque petit soucis un par un. Il y a tellement de possibilit\u00e9s de choses qui peuvent mal tourner ou qui ont un comportement diff\u00e9rent selon l'ordre dans lequel on fait les choses. Mais dans l'ensemble, m\u00eame si on est pas sur la meilleure interface que l'on aie vu dans l'histoire. Je trouve que elle fait quand m\u00eame le taff.","title":"Jeudi 25 Mai 2023"},{"location":"jdb.html#vendredi-26-mai-2023","text":"Aujourd'hui c'est d\u00e9part pour Monaco mais comme l'avion etait bien en retard j'ai pu avancer sur le nettoyage du code.","title":"Vendredi 26 Mai 2023"},{"location":"jdb.html#grand-prix-de-monaco","text":"[Insert photos]","title":"Grand Prix de Monaco"},{"location":"jdb.html#lundi-29-mai-2023","text":"Mon vol pour Geneve hier soit a \u00e9t\u00e9 annul\u00e9 et je dois donc prendre une deviation car tous les vols pour Geneve sont pleins. Je dois partir a 7h30 pour prende l'avion de 9H pour Nantes et de la bas je dois prendre un avion \u00e0 17h pour arriver \u00e0 18h30 \u00e0 l'a\u00e9roport de Geneve. C'est pas pratique car j'avais pr\u00e9vu d'avancer aujourd'hui et je suis oblig\u00e9 d'avancer comme je peux dans l'a\u00e9roport. J'avance encore sur le nettoyage rapide du code. Le but est que demain je puisse sortir la premi\u00e8re release en Beta et que je mette vraiment serieusement \u00e0 la Documentation. M.Jayr m'a \u00e9galement demand\u00e9 de lui donner le document d'\u00e9valuation interm\u00e9diaire. Il ne faut pas que j'oublie demain. J'ai mis des notes sur mon code au cas ou des gens viennent \u00e0 le lire. J'y d\u00e9cris les choses que j'aurais fait diff\u00e9remment ou qui pourraient para\u00eetre bizarre au tout venant.","title":"Lundi 29 Mai 2023"},{"location":"jdb.html#mardi-30-mai-2023","text":"Bon aujourd'hui je dois encore avancer sur la partie nettoyage de code et avant de sortir la premi\u00e8re release Beta je vais tenter d'installer le projet sur un autre pc pour voir ce que je n'ai pas mentionn\u00e9 dans mon ReadMe. Bon j'ai pu rendre \u00e0 M.Jayr mon evaluation interm\u00e9diaire et j'ai fait les derni\u00e8res modifications sur le projet pour que je puisse sortir une release correcte. Maintenant je vais me mettre \u00e0 la documentation. Il va falloir que je revoie ce que j'ai d\u00e9ja \u00e9crit en ce qui concerne l'OCR car j'ai fait des modifications depuis et j'ai ajout\u00e9 la methode de SOBEL. Il faut peut-\u00eatre aussi que je parle vite fait dans la partie Emulation que j'ai du changer les variables d'environnement pour faire fonctionner le syst\u00e8me en 4K.","title":"Mardi 30 Mai 2023"},{"location":"jdb.html#mercredi-31-mai-2023","text":"Doc","title":"Mercredi 31 Mai 2023"},{"location":"jdb.html#jeudi-1-juin-2023","text":"Bon je me suis rendu compte que je n'avais fait vraiment aucuns tests et que c'est franchement bof. Je pense que ce que je devrais faire pour faire des tests unitaires c'est prendre des exemples de chaque type de windows possibles en plusieurs exemplaires. Ensuite je note le r\u00e9sultat que j'attends et je regarde si ca me retourne la bonne valeur. Mais ca veut dire que ca va me prendre pas mal de temps de tout mettre en place mais ca m'aurait s\u00fbrement fait gagner beaucoup de temps si je l'avais fait d\u00e8s le d\u00e9but... Je pense que une bonne id\u00e9e serait de prendre trois Grand Prix et de prendre une photo de chaque type de window au d\u00e9but et \u00e0 la fin. Plus je regarde plus je me rend compte que ce pojet aurait carr\u00e9ment du \u00eatre en TDD (Test Driven Developement) par ce que ca m'aurait fait gagner un temps FOU. OK JE SUIS DEBILE POURQUOI J'AI PAS FAIT CA PLUS T\u00d4T ??? En fait ce que j'aurais du faire c'est prendre de gros \u00e9chantillons de toutes les types de windows et j'aurais un parfait framework pour savoir si j'ai am\u00e9lior\u00e9 mon OCR ou non. Voici les exemples que je vais utiliser pour verifier le bon fonctionnement de l'OCR : \"Dataset Ecarts\" ; \"Dataset Tours\" ; \"Dataset Noms\" ; \"Dataset Positions\" ; \"Dataset Sectors\" ; \"Dataset Tyres\" ; Je pense que c'est un set assez correct car j'ai essay\u00e9 de prendre un peu tous les cas possibles. Le seul qui m'inqui\u00e8te un peu c'est celui des pneus mais bon. C'est aussi celui qui m'inqui\u00e8te le plus en temps normal. Non mais c'est juste g\u00e9nial les tests en fait... j'avais pas vu que parfois ma detection de GAP TO LEADER comprenait le \"+1:34.567\" en \"61:34.567\" car le '+' \u00e9tait interpr\u00eat\u00e9 comme un 6. Sans les tests je ne m'en serais pas rendu compte. Ce qui est g\u00e9nial c'est que ca veut dire que si je veux am\u00e9liorer mon OCR j'ai juste \u00e0 mettre plus d'exemples dans le dossier de tests et de run les tests et voir ou il a des soucis. C'est un peu tard mais ca m'aurait fait gagner TELLEMENT de temps c'est absolument ridicule.","title":"Jeudi 1 Juin 2023"},{"location":"jdb.html#vendredi-2-juin-2023","text":"Aujourd'hui c'est de nouveau doc. Mais la je pense qu'il faut que je rajoute une rubrique \"Fonctionnement g\u00e9n\u00e9ral\" qui r\u00e9sume tr\u00e8s simplement toutes les \u00e9tapes du projet avec un bon diagramme. En fait c'est beaucoup plus dur que ce que je pensais de faire un bon diagramme qui explique tout sans \u00eatre illisible. J'ai mis une heure trente \u00e0 faire celui la : \"Diagramme fonctionnement g\u00e9n\u00e9ral\" J'ai pris pas mal de temps aussi \u00e0 faire ces trois autre diagrammes un peu plus graphiques qui montrent de mani\u00e8re un poil plus abstraite le fonctionnement des trois grosses parties du projet. \"Diagramme recup\u00e9ration d'images\" \"Diagramme OCR\" \"Diagramme Traitement\" Je pense qu'ils sont un peu plus faciles \u00e0 comprendre que le gros diagramme g\u00e9n\u00e9ral. Ce que je me dis c'est que je vais faire une section fonctionnement g\u00e9n\u00e9ral ou je vais expliquer les trois parties avec les petits diagramme et r\u00e9sumer avec le grand diagramme.","title":"Vendredi 2 Juin 2023"},{"location":"jdb.html#lundi-5-juin-2023","text":"Ce weekend j'ai voulu essayer le projet pour le Grand Prix de Barcelone qui s'est sold\u00e9 en un \u00e9chec cuisant... J'ai eu trois soucis pour l'utilisation du programme. Les voici dans l'ordre croissant d'importance et de difficult\u00e9 \u00e0 r\u00e8gler : Mon Laptop est incapable de rester plus d'une heure allum\u00e9 m\u00eame compl\u00eatement charg\u00e9 \u00e0 100% Le WIFI de chez moi a du mal \u00e0 g\u00e8rer plusieurs flux 1080p en m\u00eame temps et donc le temps de chargement est trop long ce qui me fait des erreurs 105 \"Ce que voyait le programme pendant les erreurs 105 ce dimanche\" Le fait que quand un flux est en live, quand on clique dessus, un nouveau bouton appar\u00e2it qui n'\u00e9tait pas pr\u00e9vu et qui nous propose de regarder depuis le d\u00e9but ou en live. Le soucis avec ce bouton c'est qu'il n'est pr\u00e9sent que pour les sessions live... Il va donc falloir attendre le prochain GP (Canada 18 Juin) pour faire un test en conditions r\u00e9elles. \"Ce que voyait le programme avant que j'essaie d'impl\u00e9menter le click auto\" J'ai essay\u00e9 de r\u00e8gler le probl\u00e8me en Live, le soucis c'est que j'ai un commentaire \u00e0 fournir pendant la course et donc je n'ai pas eu le temps de plus me pencher sur le cas. Le weekend du prochain Grand Prix je vais essayer de tester sur les sc\u00e9ances d'essais libres.le click du bouton et j'amenerai mon cable chez moi. Bon sinon aujourd'hui, comme d'hab, Doc... Je vais faire le manuel utilisateur. J'ai fait un manuel qui d\u00e9crit \u00e0 peu pr\u00e8s tout ce qui'il faut savoir pour bien utiliser l'app. Cela fait un document un peu long mais je pense que c'est nescessaire car c'est vraiment pas une app facile \u00e0 comprendre quand on ne vient pas du milieu de la F1 (et m\u00eame la...)","title":"Lundi 5 Juin 2023"},{"location":"jdb.html#mardi-6-juin-2023","text":"Aujourd'hui je vais continuer \u00e0 documenter... Ma methode pour l'instant c'est juste de remplir les titres que j'ai pr\u00e9vu au d\u00e9part. Ensuite \u00e0 partir de jeudi (je pense que c'est \u00e0 partir de cette date que j'aurai un peu tout rempli) j'aimerais bien relire la grille d'\u00e9valuation et ensuite faire une lecture de mon journal de bord pour v\u00e9rifier que je n'ai rien oubli\u00e9. Et le but c'est de finir la doc Vendredi soir pour faire une derni\u00e8re release doc + projet. Un coll\u00e8gue M.Briard m'a pas mal aid\u00e9 avec la configuration de mon mkdocs et il a d\u00e9velopp\u00e9 une extension pour ajouter le code source au PDF final. La il est en train de regarder si il peut trouver un moyen de faire une table des figures qui nous est demand\u00e9e. (j'ai plus de 200 images dans ma documentation alors si c'est possible de ne pas avoir \u00e0 faire une table des figures \u00e0 la main je prends)","title":"Mardi 6 Juin 2023"},{"location":"jdb.html#mercredi-7-juin","text":"La je suis en train de parler de l'optimisation de mon application et je viens de me rappeller qu'il manquait des methodes avec de la paralellisation alors je vais les convertir avant de continuer la doc. En fait je viens de me rendre compte qu'aucunes de mes methodes de filtres n'\u00e9taient en parralel... Je ne sais pas si jaurai le temps de le faire aujourd'hui en fait Voici le code avant la paralellisation : public static Bitmap VanishOxyAction ( Bitmap inputBitmap ) { Rectangle rect = new Rectangle ( 0 , 0 , inputBitmap . Width , inputBitmap . Height ); BitmapData bmpData = inputBitmap . LockBits ( rect , ImageLockMode . ReadWrite , inputBitmap . PixelFormat ); int bytesPerPixel = Bitmap . GetPixelFormatSize ( inputBitmap . PixelFormat ) / 8 ; unsafe { byte * ptr = ( byte *) bmpData . Scan0 . ToPointer (); for ( int y = 0 ; y < inputBitmap . Height ; y ++) { byte * currentLine = ptr + ( y * bmpData . Stride ); for ( int x = 0 ; x < inputBitmap . Width ; x ++) { byte * pixel = currentLine + ( x * bytesPerPixel ); int blue = ( int ) pixel [ 0 ]; int green = ( int ) pixel [ 1 ]; int red = ( int ) pixel [ 2 ]; int max = Math . Max ( Math . Max ( blue , green ), red ); if ( max > 255 / 3 ) max = 255 ; pixel [ 0 ] = pixel [ 1 ] = pixel [ 2 ] = ( byte ) max ; } } } inputBitmap . UnlockBits ( bmpData ); return inputBitmap ; } Et voici \u00e0 quoi ca ressemble avec la paralellisation : public Bitmap VanishOxyAction ( Bitmap inputBitmap ) { unsafe { BitmapData bitmapData = inputBitmap . LockBits ( new Rectangle ( 0 , 0 , inputBitmap . Width , inputBitmap . Height ), ImageLockMode . ReadWrite , inputBitmap . PixelFormat ); int bytesPerPixel = System . Drawing . Bitmap . GetPixelFormatSize ( inputBitmap . PixelFormat ) / 8 ; int heightInPixels = bitmapData . Height ; int widthInBytes = bitmapData . Width * bytesPerPixel ; byte * PtrFirstPixel = ( byte *) bitmapData . Scan0 ; Parallel . For ( 0 , heightInPixels , y => { byte * currentLine = PtrFirstPixel + ( y * bitmapData . Stride ); for ( int x = 0 ; x < widthInBytes ; x = x + bytesPerPixel ) { int blue = currentLine [ x ]; int green = currentLine [ x + 1 ]; int red = currentLine [ x + 2 ]; int max = Math . Max ( Math . Max ( blue , green ), red ); if ( max > 255 / 3 ) max = 255 ; currentLine [ x ] = currentLine [ x + 1 ] = currentLine [ x + 2 ] = ( byte ) max ; } }); inputBitmap . UnlockBits ( bitmapData ); } return inputBitmap ; } Les performances n'ont pas beaucoup augment\u00e9 mais au moins comme ca c'est fait","title":"Mercredi 7 Juin"},{"location":"jdb.html#jeudi-8-juin-2023","text":"Aujourd'hui, le but est de finir la documentation et de mettre les derniers commentaires dans le code et faire une premi\u00e8re release en BETA. Pour ce genre de travail un peu p\u00e9nible je conseille une bonne playlist de phonk. Ca permet d'\u00e9crire en rythme.","title":"Jeudi 8 Juin 2023"},{"location":"Code/ConfigurationTool.html","text":"ConfigurationTool.cs /// Author : Maxime Rohmer /// Date : 30/05/2023 /// File : ConfigurationTool.cs /// Brief : Class that contains all the methods used to create config files for the main programm /// Version : Alpha 1.0 using System ; using System.Collections.Generic ; using System.Drawing ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; using Tesseract ; using System.IO ; using System.Text.Json ; using System.Text.Json.Nodes ; namespace TrackTrends { public class ConfigurationTool { public Zone MainZone ; public const int NUMBER_OF_DRIVERS = 20 ; public const int NUMBER_OF_ZONES = 9 ; public const string CONFIGS_FOLDER_NAME = \"./Presets/\" ; /// /// Creates the configuration tool. It can only be created if you already have the dimensions of the main zone /// /// The full image coming from the F1TV Data Channel /// The dimensions of the zone where all the drivers data are situated public ConfigurationTool ( Bitmap fullImage , Rectangle mainZoneDimensions ) { MainZone = new Zone ( fullImage , mainZoneDimensions , \"Main\" ); AutoCalibrate (); } /// /// Resets the main zone /// public void ResetMainZone () { MainZone . ResetZones (); } /// /// Reset the windows /// public void ResetWindows () { MainZone . ResetWindows (); } /// /// Save the current config in a JSON file stored in /Presets/ /// /// A list of all the drivers in the GP. IMPORTANT, they need to ALL be mentionned or the program wont be able to detect the missing ones and will F up everything /// The name the config should have public void SaveToJson ( List < string > drivers , string configName ) { string JSON = \"\" ; JsonObject jsonFileObject = new JsonObject (); //Creates the mainZone object JsonObject mainZoneObject = new JsonObject (); mainZoneObject . Add ( \"x\" , MainZone . Bounds . X ); mainZoneObject . Add ( \"y\" , MainZone . Bounds . Y ); mainZoneObject . Add ( \"width\" , MainZone . Bounds . Width ); mainZoneObject . Add ( \"height\" , MainZone . Bounds . Height ); JsonArray driverZonesArray = new JsonArray (); //Creates all the subzones that contain driver infos int DriverID = 0 ; foreach ( Zone driverZone in MainZone . Zones ) { DriverID ++; JsonObject driverZoneObject = new JsonObject (); driverZoneObject . Add ( \"name\" , \"Driver\" + DriverID ); driverZoneObject . Add ( \"x\" , driverZone . Bounds . X ); driverZoneObject . Add ( \"y\" , driverZone . Bounds . Y ); driverZoneObject . Add ( \"width\" , driverZone . Bounds . Width ); driverZoneObject . Add ( \"height\" , driverZone . Bounds . Height ); JsonArray windowsArray = new JsonArray (); JsonObject windowObject = new JsonObject (); //Creates all the windows of the current driver zone //Note : We store ALL the windows and zones in the JSON because they are not spaced exactly the same on the main zone foreach ( Window window in driverZone . Windows ) { windowObject . Add ( window . Name , new JsonObject { { \"x\" , window . Bounds . X }, { \"y\" , window . Bounds . Y }, { \"width\" , window . Bounds . Width }, { \"height\" , window . Bounds . Height } }); } windowsArray . Add ( windowObject ); driverZoneObject . Add ( \"Windows\" , windowsArray ); driverZonesArray . Add ( driverZoneObject ); } mainZoneObject . Add ( \"DriverZones\" , driverZonesArray ); JsonArray driversArray = new JsonArray (); foreach ( string driver in drivers ) { driversArray . Add ( driver ); } mainZoneObject . Add ( \"Drivers\" , driversArray ); jsonFileObject . Add ( \"Main\" , mainZoneObject ); JSON = jsonFileObject . ToString (); //Saving the file string path = CONFIGS_FOLDER_NAME + configName ; if ( File . Exists ( path + \".json\" )) { //We need to create a new name int count = 2 ; while ( File . Exists ( path + \"_\" + count + \".json\" )) { count ++; } path += \"_\" + count + \".json\" ; } else { path += \".json\" ; } File . WriteAllText ( path , JSON ); } /// /// Adds a window in the windows list /// Be carefull of the order. It cant be random or it will crash. The programm expect the first to be position, second Gap to leader etc... /// /// The bounds of the window public void AddWindows ( List < Rectangle > rectangles ) { foreach ( Zone driverZone in MainZone . Zones ) { Bitmap zoneImage = driverZone . ZoneImage ; for ( int i = 1 ; i <= rectangles . Count ; i ++) { switch ( i ) { case 1 : //First zone should be the driver's Position driverZone . AddWindow ( new DriverPositionWindow ( driverZone . ZoneImage , rectangles [ i - 1 ], false )); break ; case 2 : //Second zone should be the Gap to leader driverZone . AddWindow ( new DriverGapToLeaderWindow ( driverZone . ZoneImage , rectangles [ i - 1 ], false )); break ; case 3 : //Third zone should be the driver's Lap Time driverZone . AddWindow ( new DriverLapTimeWindow ( driverZone . ZoneImage , rectangles [ i - 1 ], false )); break ; case 4 : //Fourth zone should be the driver's DRS status driverZone . AddWindow ( new DriverDrsWindow ( driverZone . ZoneImage , rectangles [ i - 1 ], false )); break ; case 5 : //Fifth zone should be the driver's Tyre's informations driverZone . AddWindow ( new DriverTyresWindow ( driverZone . ZoneImage , rectangles [ i - 1 ], false )); break ; case 6 : //Sixth zone should be the driver's Name driverZone . AddWindow ( new DriverNameWindow ( driverZone . ZoneImage , rectangles [ i - 1 ], false )); break ; case 7 : //Seventh zone should be the driver's First Sector driverZone . AddWindow ( new DriverSectorWindow ( driverZone . ZoneImage , rectangles [ i - 1 ], 1 , false )); break ; case 8 : //Zone number eight should be the driver's Second Sector driverZone . AddWindow ( new DriverSectorWindow ( driverZone . ZoneImage , rectangles [ i - 1 ], 2 , false )); break ; case 9 : //Zone number nine should be the driver's Position Sector driverZone . AddWindow ( new DriverSectorWindow ( driverZone . ZoneImage , rectangles [ i - 1 ], 3 , false )); break ; } } } } /// /// This will automatically create all the driver zones at the correct places if the main zone has been weel positionned /// You cant just divide the image by the number of pilots or it will be messy and inconsistent at the end (Garbage in Garbage Out) /// public void AutoCalibrate () { List < Rectangle > detectedText = new List < Rectangle >(); List < Zone > zones = new List < Zone >(); TesseractEngine engine = new TesseractEngine ( Window . TESS_DATA_FOLDER . FullName , \"eng\" , EngineMode . Default ); Image image = MainZone . ZoneImage ; var tessImage = Pix . LoadFromMemory ( Window . ImageToByte ( image )); Page page = engine . Process ( tessImage ); //Runs a quick OCR detection. Not to detect any content but just to detect where is all the text positionned. //For each row it decides the best Zone location and adds it to the Driver zone list using ( var iter = page . GetIterator ()) { iter . Begin (); do { Rect boundingBox ; if ( iter . TryGetBoundingBox ( PageIteratorLevel . Word , out boundingBox )) { //We remove all the rectangles that are definitely too big if ( boundingBox . Height < image . Height / NUMBER_OF_DRIVERS ) { //Now we add a filter to only get the boxes in the right because they are much more reliable in size if ( boundingBox . X1 > image . Width / 2 ) { //Now we check if an other square box has been found roughly in the same y axis bool match = false ; //The tolerance is roughly half the size that a window will be int tolerance = ( image . Height / NUMBER_OF_DRIVERS ) / 2 ; foreach ( Rectangle rect in detectedText ) { if ( rect . Y > boundingBox . Y1 - tolerance && rect . Y < boundingBox . Y1 + tolerance ) { //There already is a rectangle in this line match = true ; } } //if nothing matched we can add it if (! match ) detectedText . Add ( new Rectangle ( boundingBox . X1 , boundingBox . Y1 , boundingBox . Width , boundingBox . Height )); } } } } while ( iter . Next ( PageIteratorLevel . Word )); } //DEBUG int i = 1 ; foreach ( Rectangle Rectangle in detectedText ) { Rectangle windowRectangle ; Size windowSize = new Size ( image . Width , image . Height / NUMBER_OF_DRIVERS ); Point windowLocation = new Point ( 0 , ( Rectangle . Y + Rectangle . Height / 2 ) - windowSize . Height / 2 ); windowRectangle = new Rectangle ( windowLocation , windowSize ); //We add the driver zones Zone driverZone = new Zone ( MainZone . ZoneImage , windowRectangle , \"DriverZone\" ); MainZone . AddZone ( driverZone ); //driverZone.ZoneImage.Save(\"Driver\" + i+\".png\"); i ++; } } } }","title":"ConfigurationTool.cs"},{"location":"Code/ConfigurationTool.html#configurationtoolcs","text":"/// Author : Maxime Rohmer /// Date : 30/05/2023 /// File : ConfigurationTool.cs /// Brief : Class that contains all the methods used to create config files for the main programm /// Version : Alpha 1.0 using System ; using System.Collections.Generic ; using System.Drawing ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; using Tesseract ; using System.IO ; using System.Text.Json ; using System.Text.Json.Nodes ; namespace TrackTrends { public class ConfigurationTool { public Zone MainZone ; public const int NUMBER_OF_DRIVERS = 20 ; public const int NUMBER_OF_ZONES = 9 ; public const string CONFIGS_FOLDER_NAME = \"./Presets/\" ; /// /// Creates the configuration tool. It can only be created if you already have the dimensions of the main zone /// /// The full image coming from the F1TV Data Channel /// The dimensions of the zone where all the drivers data are situated public ConfigurationTool ( Bitmap fullImage , Rectangle mainZoneDimensions ) { MainZone = new Zone ( fullImage , mainZoneDimensions , \"Main\" ); AutoCalibrate (); } /// /// Resets the main zone /// public void ResetMainZone () { MainZone . ResetZones (); } /// /// Reset the windows /// public void ResetWindows () { MainZone . ResetWindows (); } /// /// Save the current config in a JSON file stored in /Presets/ /// /// A list of all the drivers in the GP. IMPORTANT, they need to ALL be mentionned or the program wont be able to detect the missing ones and will F up everything /// The name the config should have public void SaveToJson ( List < string > drivers , string configName ) { string JSON = \"\" ; JsonObject jsonFileObject = new JsonObject (); //Creates the mainZone object JsonObject mainZoneObject = new JsonObject (); mainZoneObject . Add ( \"x\" , MainZone . Bounds . X ); mainZoneObject . Add ( \"y\" , MainZone . Bounds . Y ); mainZoneObject . Add ( \"width\" , MainZone . Bounds . Width ); mainZoneObject . Add ( \"height\" , MainZone . Bounds . Height ); JsonArray driverZonesArray = new JsonArray (); //Creates all the subzones that contain driver infos int DriverID = 0 ; foreach ( Zone driverZone in MainZone . Zones ) { DriverID ++; JsonObject driverZoneObject = new JsonObject (); driverZoneObject . Add ( \"name\" , \"Driver\" + DriverID ); driverZoneObject . Add ( \"x\" , driverZone . Bounds . X ); driverZoneObject . Add ( \"y\" , driverZone . Bounds . Y ); driverZoneObject . Add ( \"width\" , driverZone . Bounds . Width ); driverZoneObject . Add ( \"height\" , driverZone . Bounds . Height ); JsonArray windowsArray = new JsonArray (); JsonObject windowObject = new JsonObject (); //Creates all the windows of the current driver zone //Note : We store ALL the windows and zones in the JSON because they are not spaced exactly the same on the main zone foreach ( Window window in driverZone . Windows ) { windowObject . Add ( window . Name , new JsonObject { { \"x\" , window . Bounds . X }, { \"y\" , window . Bounds . Y }, { \"width\" , window . Bounds . Width }, { \"height\" , window . Bounds . Height } }); } windowsArray . Add ( windowObject ); driverZoneObject . Add ( \"Windows\" , windowsArray ); driverZonesArray . Add ( driverZoneObject ); } mainZoneObject . Add ( \"DriverZones\" , driverZonesArray ); JsonArray driversArray = new JsonArray (); foreach ( string driver in drivers ) { driversArray . Add ( driver ); } mainZoneObject . Add ( \"Drivers\" , driversArray ); jsonFileObject . Add ( \"Main\" , mainZoneObject ); JSON = jsonFileObject . ToString (); //Saving the file string path = CONFIGS_FOLDER_NAME + configName ; if ( File . Exists ( path + \".json\" )) { //We need to create a new name int count = 2 ; while ( File . Exists ( path + \"_\" + count + \".json\" )) { count ++; } path += \"_\" + count + \".json\" ; } else { path += \".json\" ; } File . WriteAllText ( path , JSON ); } /// /// Adds a window in the windows list /// Be carefull of the order. It cant be random or it will crash. The programm expect the first to be position, second Gap to leader etc... /// /// The bounds of the window public void AddWindows ( List < Rectangle > rectangles ) { foreach ( Zone driverZone in MainZone . Zones ) { Bitmap zoneImage = driverZone . ZoneImage ; for ( int i = 1 ; i <= rectangles . Count ; i ++) { switch ( i ) { case 1 : //First zone should be the driver's Position driverZone . AddWindow ( new DriverPositionWindow ( driverZone . ZoneImage , rectangles [ i - 1 ], false )); break ; case 2 : //Second zone should be the Gap to leader driverZone . AddWindow ( new DriverGapToLeaderWindow ( driverZone . ZoneImage , rectangles [ i - 1 ], false )); break ; case 3 : //Third zone should be the driver's Lap Time driverZone . AddWindow ( new DriverLapTimeWindow ( driverZone . ZoneImage , rectangles [ i - 1 ], false )); break ; case 4 : //Fourth zone should be the driver's DRS status driverZone . AddWindow ( new DriverDrsWindow ( driverZone . ZoneImage , rectangles [ i - 1 ], false )); break ; case 5 : //Fifth zone should be the driver's Tyre's informations driverZone . AddWindow ( new DriverTyresWindow ( driverZone . ZoneImage , rectangles [ i - 1 ], false )); break ; case 6 : //Sixth zone should be the driver's Name driverZone . AddWindow ( new DriverNameWindow ( driverZone . ZoneImage , rectangles [ i - 1 ], false )); break ; case 7 : //Seventh zone should be the driver's First Sector driverZone . AddWindow ( new DriverSectorWindow ( driverZone . ZoneImage , rectangles [ i - 1 ], 1 , false )); break ; case 8 : //Zone number eight should be the driver's Second Sector driverZone . AddWindow ( new DriverSectorWindow ( driverZone . ZoneImage , rectangles [ i - 1 ], 2 , false )); break ; case 9 : //Zone number nine should be the driver's Position Sector driverZone . AddWindow ( new DriverSectorWindow ( driverZone . ZoneImage , rectangles [ i - 1 ], 3 , false )); break ; } } } } /// /// This will automatically create all the driver zones at the correct places if the main zone has been weel positionned /// You cant just divide the image by the number of pilots or it will be messy and inconsistent at the end (Garbage in Garbage Out) /// public void AutoCalibrate () { List < Rectangle > detectedText = new List < Rectangle >(); List < Zone > zones = new List < Zone >(); TesseractEngine engine = new TesseractEngine ( Window . TESS_DATA_FOLDER . FullName , \"eng\" , EngineMode . Default ); Image image = MainZone . ZoneImage ; var tessImage = Pix . LoadFromMemory ( Window . ImageToByte ( image )); Page page = engine . Process ( tessImage ); //Runs a quick OCR detection. Not to detect any content but just to detect where is all the text positionned. //For each row it decides the best Zone location and adds it to the Driver zone list using ( var iter = page . GetIterator ()) { iter . Begin (); do { Rect boundingBox ; if ( iter . TryGetBoundingBox ( PageIteratorLevel . Word , out boundingBox )) { //We remove all the rectangles that are definitely too big if ( boundingBox . Height < image . Height / NUMBER_OF_DRIVERS ) { //Now we add a filter to only get the boxes in the right because they are much more reliable in size if ( boundingBox . X1 > image . Width / 2 ) { //Now we check if an other square box has been found roughly in the same y axis bool match = false ; //The tolerance is roughly half the size that a window will be int tolerance = ( image . Height / NUMBER_OF_DRIVERS ) / 2 ; foreach ( Rectangle rect in detectedText ) { if ( rect . Y > boundingBox . Y1 - tolerance && rect . Y < boundingBox . Y1 + tolerance ) { //There already is a rectangle in this line match = true ; } } //if nothing matched we can add it if (! match ) detectedText . Add ( new Rectangle ( boundingBox . X1 , boundingBox . Y1 , boundingBox . Width , boundingBox . Height )); } } } } while ( iter . Next ( PageIteratorLevel . Word )); } //DEBUG int i = 1 ; foreach ( Rectangle Rectangle in detectedText ) { Rectangle windowRectangle ; Size windowSize = new Size ( image . Width , image . Height / NUMBER_OF_DRIVERS ); Point windowLocation = new Point ( 0 , ( Rectangle . Y + Rectangle . Height / 2 ) - windowSize . Height / 2 ); windowRectangle = new Rectangle ( windowLocation , windowSize ); //We add the driver zones Zone driverZone = new Zone ( MainZone . ZoneImage , windowRectangle , \"DriverZone\" ); MainZone . AddZone ( driverZone ); //driverZone.ZoneImage.Save(\"Driver\" + i+\".png\"); i ++; } } } }","title":"ConfigurationTool.cs"},{"location":"Code/DriverData.html","text":"DriverData.cs /// Author : Maxime Rohmer /// Date : 09/06/2023 /// File : DriverData.cs /// Brief : File containing classes that behave just like structures to store data about drivers /// Version : Beta 1.0 using System ; using System.Collections.Generic ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; namespace TrackTrends { public class DriverData { public bool DRS ; //True = Drs is opened public int GapToLeader ; //In ms public int LapTime ; //In ms public string Name ; //Ex: LECLERC public int Position ; //Ex: 1 public int Sector1 ; //in ms public int Sector2 ; //in ms public int Sector3 ; //in ms public Tyre CurrentTyre ; //Ex Soft 11 laps public DriverData ( bool dRS , int gapToLeader , int lapTime , string name , int position , int sector1 , int sector2 , int sector3 , Tyre tyre ) { DRS = dRS ; GapToLeader = gapToLeader ; LapTime = lapTime ; Name = name ; Position = position ; Sector1 = sector1 ; Sector2 = sector2 ; Sector3 = sector3 ; CurrentTyre = tyre ; } /// /// Creates a default driver data with empty values /// public DriverData () { DRS = false ; GapToLeader = - 1 ; LapTime = - 1 ; Name = \"Unknown\" ; Position = - 1 ; Sector1 = - 1 ; Sector2 = - 1 ; Sector3 = - 1 ; CurrentTyre = new Tyre ( Tyre . Type . Undefined , - 1 ); } /// /// Method that displays all the data found in a string /// /// string containing all the driver datas public override string ToString () { string result = \"\" ; //Position result += \"Position : \" + Position + Environment . NewLine ; //Gap result += \"GapToLeader : \" + Reader . ConvertMsToTime ( GapToLeader ) + Environment . NewLine ; //LapTime result += \"LapTime : \" + Reader . ConvertMsToTime ( LapTime ) + Environment . NewLine ; //DRS result += \"DRS : \" + DRS + Environment . NewLine ; //Tyres result += \"Uses \" + CurrentTyre . Coumpound + \" tyre \" + CurrentTyre . NumberOfLaps + \" laps old\" + Environment . NewLine ; //Name result += \"DriverName : \" + Name + Environment . NewLine ; //Sector 1 result += \"Sector1 : \" + Reader . ConvertMsToTime ( Sector1 ) + Environment . NewLine ; //Sector 1 result += \"Sector2 : \" + Reader . ConvertMsToTime ( Sector2 ) + Environment . NewLine ; //Sector 1 result += \"Sector3 : \" + Reader . ConvertMsToTime ( Sector3 ) + Environment . NewLine ; return result ; } } //Structure to store tyres infos public struct Tyre { //If new tyres were to be added you will have to need to change this enum public enum Type { Soft , Medium , Hard , Inter , Wet , Undefined } public Type Coumpound ; public int NumberOfLaps ; public Tyre ( Type type , int laps ) { Coumpound = type ; NumberOfLaps = laps ; } } }","title":"DriverData.cs"},{"location":"Code/DriverData.html#driverdatacs","text":"/// Author : Maxime Rohmer /// Date : 09/06/2023 /// File : DriverData.cs /// Brief : File containing classes that behave just like structures to store data about drivers /// Version : Beta 1.0 using System ; using System.Collections.Generic ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; namespace TrackTrends { public class DriverData { public bool DRS ; //True = Drs is opened public int GapToLeader ; //In ms public int LapTime ; //In ms public string Name ; //Ex: LECLERC public int Position ; //Ex: 1 public int Sector1 ; //in ms public int Sector2 ; //in ms public int Sector3 ; //in ms public Tyre CurrentTyre ; //Ex Soft 11 laps public DriverData ( bool dRS , int gapToLeader , int lapTime , string name , int position , int sector1 , int sector2 , int sector3 , Tyre tyre ) { DRS = dRS ; GapToLeader = gapToLeader ; LapTime = lapTime ; Name = name ; Position = position ; Sector1 = sector1 ; Sector2 = sector2 ; Sector3 = sector3 ; CurrentTyre = tyre ; } /// /// Creates a default driver data with empty values /// public DriverData () { DRS = false ; GapToLeader = - 1 ; LapTime = - 1 ; Name = \"Unknown\" ; Position = - 1 ; Sector1 = - 1 ; Sector2 = - 1 ; Sector3 = - 1 ; CurrentTyre = new Tyre ( Tyre . Type . Undefined , - 1 ); } /// /// Method that displays all the data found in a string /// /// string containing all the driver datas public override string ToString () { string result = \"\" ; //Position result += \"Position : \" + Position + Environment . NewLine ; //Gap result += \"GapToLeader : \" + Reader . ConvertMsToTime ( GapToLeader ) + Environment . NewLine ; //LapTime result += \"LapTime : \" + Reader . ConvertMsToTime ( LapTime ) + Environment . NewLine ; //DRS result += \"DRS : \" + DRS + Environment . NewLine ; //Tyres result += \"Uses \" + CurrentTyre . Coumpound + \" tyre \" + CurrentTyre . NumberOfLaps + \" laps old\" + Environment . NewLine ; //Name result += \"DriverName : \" + Name + Environment . NewLine ; //Sector 1 result += \"Sector1 : \" + Reader . ConvertMsToTime ( Sector1 ) + Environment . NewLine ; //Sector 1 result += \"Sector2 : \" + Reader . ConvertMsToTime ( Sector2 ) + Environment . NewLine ; //Sector 1 result += \"Sector3 : \" + Reader . ConvertMsToTime ( Sector3 ) + Environment . NewLine ; return result ; } } //Structure to store tyres infos public struct Tyre { //If new tyres were to be added you will have to need to change this enum public enum Type { Soft , Medium , Hard , Inter , Wet , Undefined } public Type Coumpound ; public int NumberOfLaps ; public Tyre ( Type type , int laps ) { Coumpound = type ; NumberOfLaps = laps ; } } }","title":"DriverData.cs"},{"location":"Code/DriverGapToLeaderWindow.html","text":"DriverGapToLeaderWindow.cs /// Author : Maxime Rohmer /// Date : 30/05/2023 /// File : DriverGapToLeaderWindow.cs /// Brief : Window containing infos about the gap to the leader of a driver /// Version : Alpha 1.0 using System ; using System.Collections.Generic ; using System.Drawing ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; namespace TrackTrends { public class DriverGapToLeaderWindow : Window { public DriverGapToLeaderWindow ( Bitmap image , Rectangle bounds , bool generateEngine = true ) : base ( image , bounds , generateEngine ) { Name = \"GapToLeader\" ; } /// /// Decodes the gap to leader using Tesseract OCR /// /// Returns the gap to the leader in miliseconds (int) public override object DecodePng () { int result = GetTimeFromPng ( WindowImage , OcrImage . WindowType . Gap , Engine ); return result ; } } }","title":"DriverGapToLeaderWindow.cs"},{"location":"Code/DriverGapToLeaderWindow.html#drivergaptoleaderwindowcs","text":"/// Author : Maxime Rohmer /// Date : 30/05/2023 /// File : DriverGapToLeaderWindow.cs /// Brief : Window containing infos about the gap to the leader of a driver /// Version : Alpha 1.0 using System ; using System.Collections.Generic ; using System.Drawing ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; namespace TrackTrends { public class DriverGapToLeaderWindow : Window { public DriverGapToLeaderWindow ( Bitmap image , Rectangle bounds , bool generateEngine = true ) : base ( image , bounds , generateEngine ) { Name = \"GapToLeader\" ; } /// /// Decodes the gap to leader using Tesseract OCR /// /// Returns the gap to the leader in miliseconds (int) public override object DecodePng () { int result = GetTimeFromPng ( WindowImage , OcrImage . WindowType . Gap , Engine ); return result ; } } }","title":"DriverGapToLeaderWindow.cs"},{"location":"Code/DriverNameWindow.html","text":"DriverNameWindow.cs /// Author : Maxime Rohmer /// Date : 09/06/2023 /// File : DriverNameWindow /// Brief : Window containing infos about the name of the driver /// Version : Beta 1.0 using System ; using System.Collections.Generic ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; using System.Drawing ; namespace TrackTrends { public class DriverNameWindow : Window { public DriverNameWindow ( Bitmap image , Rectangle bounds , bool generateEngine = true ) : base ( image , bounds , generateEngine ) { Name = \"Name\" ; } /// /// Decodes using OCR wich driver name is in the image /// /// A list of all the names that can be on the image /// a string representing the found driver name. It will be one of the ones given in the list public override object DecodePng ( List < string > DriverList ) { string result = \"\" ; result = GetStringFromPng ( WindowImage , Engine ); if (! IsADriver ( DriverList , result )) { //I put everything in uppercase to try to lower the chances of bad answers result = FindClosestMatch ( DriverList . ConvertAll ( d => d . ToUpper ()), result . ToUpper ()); } return result ; } /// /// Verifies that the name found in the OCR is a valid name /// /// The list of all the drivers name that can be found in the image /// The driver you want to be sure if it exists or not /// If ye or no the driver exists private static bool IsADriver ( List < string > driverList , string potentialDriver ) { bool result = false ; //I cant use drivers.Contains because it has missmatched cases and all foreach ( string name in driverList ) { if ( name . ToUpper () == potentialDriver . ToUpper ()) result = true ; } return result ; } } }","title":"DriverNameWindow.cs"},{"location":"Code/DriverNameWindow.html#drivernamewindowcs","text":"/// Author : Maxime Rohmer /// Date : 09/06/2023 /// File : DriverNameWindow /// Brief : Window containing infos about the name of the driver /// Version : Beta 1.0 using System ; using System.Collections.Generic ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; using System.Drawing ; namespace TrackTrends { public class DriverNameWindow : Window { public DriverNameWindow ( Bitmap image , Rectangle bounds , bool generateEngine = true ) : base ( image , bounds , generateEngine ) { Name = \"Name\" ; } /// /// Decodes using OCR wich driver name is in the image /// /// A list of all the names that can be on the image /// a string representing the found driver name. It will be one of the ones given in the list public override object DecodePng ( List < string > DriverList ) { string result = \"\" ; result = GetStringFromPng ( WindowImage , Engine ); if (! IsADriver ( DriverList , result )) { //I put everything in uppercase to try to lower the chances of bad answers result = FindClosestMatch ( DriverList . ConvertAll ( d => d . ToUpper ()), result . ToUpper ()); } return result ; } /// /// Verifies that the name found in the OCR is a valid name /// /// The list of all the drivers name that can be found in the image /// The driver you want to be sure if it exists or not /// If ye or no the driver exists private static bool IsADriver ( List < string > driverList , string potentialDriver ) { bool result = false ; //I cant use drivers.Contains because it has missmatched cases and all foreach ( string name in driverList ) { if ( name . ToUpper () == potentialDriver . ToUpper ()) result = true ; } return result ; } } }","title":"DriverNameWindow.cs"},{"location":"Code/DriverSectorWindow.html","text":"DriverSectorWindow.cs /// Author : Maxime Rohmer /// Date : 09/06/2023 /// File : DriverSectorWindow.cs /// Brief : Window containing infos about a driver sector time. Can be the first second or third, does not matter. /// Version : Beta 1.0 using System ; using System.Collections.Generic ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; using System.Drawing ; namespace TrackTrends { public class DriverSectorWindow : Window { public DriverSectorWindow ( Bitmap image , Rectangle bounds , int sectorId , bool generateEngine = true ) : base ( image , bounds , generateEngine ) { Name = \"Sector\" + sectorId ; } /// /// Decodes the sector /// /// the sector time in int (ms) public override object DecodePng () { int ocrResult = GetTimeFromPng ( WindowImage , OcrImage . WindowType . Sector , Engine ); return ocrResult ; } } }","title":"DriverSectorWindow.cs"},{"location":"Code/DriverSectorWindow.html#driversectorwindowcs","text":"/// Author : Maxime Rohmer /// Date : 09/06/2023 /// File : DriverSectorWindow.cs /// Brief : Window containing infos about a driver sector time. Can be the first second or third, does not matter. /// Version : Beta 1.0 using System ; using System.Collections.Generic ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; using System.Drawing ; namespace TrackTrends { public class DriverSectorWindow : Window { public DriverSectorWindow ( Bitmap image , Rectangle bounds , int sectorId , bool generateEngine = true ) : base ( image , bounds , generateEngine ) { Name = \"Sector\" + sectorId ; } /// /// Decodes the sector /// /// the sector time in int (ms) public override object DecodePng () { int ocrResult = GetTimeFromPng ( WindowImage , OcrImage . WindowType . Sector , Engine ); return ocrResult ; } } }","title":"DriverSectorWindow.cs"},{"location":"Code/F1TVEmulator.html","text":"F1TVEmulator.cs /// Author : Maxime Rohmer /// Date : 09/06/2023 /// File : F1TVEmulator.cs /// Brief : Class that contains methods to emulate a browser and navigate the F1TV website /// Version : Beta 1.0 using OpenQA.Selenium ; using OpenQA.Selenium.Firefox ; using OpenQA.Selenium.Interactions ; using OpenQA.Selenium.Support.UI ; using System ; using System.Collections.Generic ; using System.Diagnostics ; using System.Drawing ; using System.IO ; using System.Linq ; using System.Text ; using System.Threading ; using System.Threading.Tasks ; namespace TrackTrends { internal class F1TVEmulator { public const string COOKIE_HOST = \".formula1.com\" ; public const string PYTHON_COOKIE_RETRIEVAL_FILENAME = \"recoverCookiesCSV.py\" ; public const string GECKODRIVER_FILENAME = @\"geckodriver-v0.27.0-win64\\geckodriver.exe\" ; //BE CAREFULL IF YOU CHANGE IT HERE YOU NEED TO CHANGE IT IN THE PYTHON SCRIPT TOO public const string COOKIES_CSV_FILENAME = \"cookies.csv\" ; private FirefoxDriver Driver ; private bool _ready ; private string _grandPrixUrl ; public string GrandPrixUrl { get => _grandPrixUrl ; private set => _grandPrixUrl = value ; } public bool Ready { get => _ready ; set => _ready = value ; } public F1TVEmulator ( string grandPrixUrl ) { GrandPrixUrl = grandPrixUrl ; Ready = false ; } /// /// Will start the python programm that runs the Cookie Recovering /// private void StartCookieRecovering () { string scriptPath = PYTHON_COOKIE_RETRIEVAL_FILENAME ; Process process = new Process (); process . StartInfo . FileName = \"python.exe\" ; process . StartInfo . Arguments = scriptPath ; process . StartInfo . UseShellExecute = false ; process . StartInfo . RedirectStandardOutput = true ; process . Start (); string output = process . StandardOutput . ReadToEnd (); process . WaitForExit (); } /// /// Method that will recover the needed cookies in the DB /// /// The host of the wanted cookie ex: ./formula1.com /// The name of the wanted cookie ex: login /// returns the value of the cookie if it has been found /// public string GetCookie ( string host , string name ) { StartCookieRecovering (); string value = \"\" ; List < Cookie > cookies = new List < Cookie >(); if ( File . Exists ( COOKIES_CSV_FILENAME )) { using ( var reader = new StreamReader ( COOKIES_CSV_FILENAME )) { // Read the header row and validate column order string header = reader . ReadLine (); string [] expectedColumns = { \"host_key\" , \"name\" , \"value\" , \"path\" , \"expires_utc\" , \"is_secure\" , \"is_httponly\" }; string [] actualColumns = header . Split ( ',' ); for ( int i = 0 ; i < expectedColumns . Length ; i ++) { if ( expectedColumns [ i ] != actualColumns [ i ]) { throw new InvalidOperationException ( $\"Expected column '{expectedColumns[i]}' at index {i} but found '{actualColumns[i]}'\" ); } } // Read each data row and parse values into a Cookie object while (! reader . EndOfStream ) { string line = reader . ReadLine (); string [] fields = line . Split ( ',' ); string hostname = fields [ 0 ]; string cookieName = fields [ 1 ]; if ( hostname == host && cookieName == name ) { value = fields [ 2 ]; } } } } return value ; } /// /// Starts the headless browser /// /// Error code 1xx public async Task < int > Start () { Ready = false ; string loginCookieName = \"login\" ; string loginSessionCookieName = \"login-session\" ; string loginCookieValue = GetCookie ( COOKIE_HOST , loginCookieName ); string loginSessionValue = GetCookie ( COOKIE_HOST , loginSessionCookieName ); //Cookie retreival has gone wrong (usually its because of python not being installed properly) if ( loginCookieValue == \"\" || loginSessionValue == \"\" ) return 100 ; var service = FirefoxDriverService . CreateDefaultService ( GECKODRIVER_FILENAME ); service . Host = \"127.0.0.1\" ; service . Port = 5555 ; FirefoxProfile profile = new FirefoxProfile (); FirefoxOptions options = new FirefoxOptions (); //profile.SetPreference(\"full-screen-api.ignore-widgets\", true); //profile.SetPreference(\"media.hardware-video-decoding.enabled\", true); //profile.SetPreference(\"full-screen-api.enabled\", true); options . Profile = profile ; profile . SetPreference ( \"layout.css.devPixelsPerPx\" , \"1.0\" ); options . AcceptInsecureCertificates = true ; options . AddArgument ( \"--headless\" ); //options.AddArgument(\"--start-maximized\"); //options.AddArgument(\"--window-size=1920x1080\"); //options.AddArgument(\"--width=\" + windowWidth); //options.AddArgument(\"--height=\" + windowHeight); //options.AddArgument(\"-window-size=1920x1080\"); //options.AddArgument(\"--width=1920\"); //options.AddArgument(\"--height=1080\"); //profile try { Driver = new FirefoxDriver ( service , options ); } catch { Ready = false ; return 101 ; } Actions actions = new Actions ( Driver ); var loginCookie = new Cookie ( loginCookieName , loginCookieValue , COOKIE_HOST , \"/\" , DateTime . Now . AddDays ( 5 )); var loginSessionCookie = new Cookie ( loginSessionCookieName , loginSessionValue , COOKIE_HOST , \"/\" , DateTime . Now . AddDays ( 5 )); Driver . Navigate (). GoToUrl ( \"https://f1tv.formula1.com/\" ); Driver . Manage (). Cookies . AddCookie ( loginCookie ); Driver . Manage (). Cookies . AddCookie ( loginSessionCookie ); try { Driver . Navigate (). GoToUrl ( GrandPrixUrl ); } catch { //The url is not a valid url Driver . Dispose (); return 103 ; } //Waits for the page to fully load Driver . Manage (). Timeouts (). PageLoad = TimeSpan . FromSeconds ( 30 ); //Removes the cookie prompt try { IWebElement conscentButton = Driver . FindElement ( By . Id ( \"truste-consent-button\" )); conscentButton . Click (); } catch { //Could not locate the cookie button Screenshot ( \"ERROR104\" ); Driver . Dispose (); return 104 ; } try { IWebElement LiveButton = Driver . FindElement ( By . ClassName ( \"btn-manage-account\" )); //By.ClassName(\"btn btn-controls btn-main btn-manage-account no-redirect\") LiveButton . Click (); } catch { Console . Write ( \"Going for a rediff\" ); } //Again waits for the page to fully load (when you accept cookies it takes a little time for the page to load) //Cannot use The timeout because the feed loading is not really loading so there is not event or anything Thread . Sleep ( 5000 ); //Switches to the Data channel try { IWebElement dataChannelButton = Driver . FindElement ( By . ClassName ( \"data-button\" )); dataChannelButton . Click (); } catch { //If the data button does not exists its because the user is not connected Screenshot ( \"ERROR102\" ); Driver . Dispose (); return 102 ; } //Open settings // Press the space key, this should make the setting button visible // It does not matter if the feed is paused because when changing channel it autoplays actions . SendKeys ( OpenQA . Selenium . Keys . Space ). Perform (); //Clicks on the settings Icon int settingsClickTries = 0 ; bool settingsClickSuccess = false ; while ( settingsClickTries < 100 && ! settingsClickSuccess ) { Thread . Sleep ( 100 ); try { IWebElement settingsButton = Driver . FindElement ( By . ClassName ( \"bmpui-ui-settingstogglebutton\" )); settingsButton . Click (); IWebElement selectElement = Driver . FindElement ( By . ClassName ( \"bmpui-ui-videoqualityselectbox\" )); SelectElement select = new SelectElement ( selectElement ); IWebElement selectOption = selectElement . FindElement ( By . CssSelector ( \"option[value^='1080_']\" )); selectOption . Click (); settingsClickSuccess = true ; } catch { //Sometimes it can crash because it could not get the options to show up in time. When it happens just retry settingsClickSuccess = false ; settingsClickTries ++; } } if (! settingsClickSuccess ) { Screenshot ( \"ERROR105\" ); Driver . Dispose (); return 105 ; } Screenshot ( \"BEFOREFULLSCREEN\" ); //Makes the feed fullscreen int fullScreenClickTries = 0 ; bool fullScreenClickSuccess = false ; Driver . Manage (). Window . Maximize (); //WebDriverWait wait = new WebDriverWait(Driver, TimeSpan.FromSeconds(10)); while ( fullScreenClickTries < 100 && ! fullScreenClickSuccess ) { Thread . Sleep ( 150 ); try { IWebElement fullScreenButton = Driver . FindElement ( By . ClassName ( \"bmpui-ui-fullscreentogglebutton\" )); fullScreenButton . Click (); fullScreenClickSuccess = true ; } catch { fullScreenClickSuccess = false ; fullScreenClickTries ++; } } if (! fullScreenClickSuccess ) { Screenshot ( \"ERROR106\" ); Driver . Dispose (); return 106 ; } Screenshot ( \"AFTERFULLSCREEN\" ); //STARTUP FINISHED READY TO SCREENSHOT Ready = true ; return 0 ; } /// /// Takes a screenshot of what the headless browser is displaying /// /// Optional ! The name of the picture so it can be saved /// Returns the screenshot in the bitmap format public Bitmap Screenshot ( string name = \"TEST\" ) { Bitmap result = new Bitmap ( 4242 , 6969 ); try { //Screenshot scrsht = ((ITakesScreenshot)Driver).GetScreenshot(); //profileriver.SetPreferencC:\\Users\\Moi\\source\\repos\\Test_Merge\\README.mde(\"layout.css.devPixelsPerPx\", \"1.0\"); //Screenshot scrsht = Driver.GetFullPageScreenshot(); Screenshot scrsht = Driver . GetScreenshot (); byte [] screenshotBytes = Convert . FromBase64String ( scrsht . AsBase64EncodedString ); MemoryStream stream = new MemoryStream ( screenshotBytes ); result = new Bitmap ( stream ); //result.Save(name + \".png\"); scrsht . SaveAsFile ( name + \".png\" ); } catch { //Nothing for now } return result ; } /// /// Stops the Emulation. Note: if you plan to start it again please use ResetDriver() instead /// public void Stop () { Ready = false ; if ( Driver != null ) Driver . Dispose (); } /// /// Resets the emulation /// public void ResetDriver () { Ready = false ; if ( Driver != null ) Driver . Dispose (); Driver = null ; } } }","title":"F1TVEmulator.cs"},{"location":"Code/F1TVEmulator.html#f1tvemulatorcs","text":"/// Author : Maxime Rohmer /// Date : 09/06/2023 /// File : F1TVEmulator.cs /// Brief : Class that contains methods to emulate a browser and navigate the F1TV website /// Version : Beta 1.0 using OpenQA.Selenium ; using OpenQA.Selenium.Firefox ; using OpenQA.Selenium.Interactions ; using OpenQA.Selenium.Support.UI ; using System ; using System.Collections.Generic ; using System.Diagnostics ; using System.Drawing ; using System.IO ; using System.Linq ; using System.Text ; using System.Threading ; using System.Threading.Tasks ; namespace TrackTrends { internal class F1TVEmulator { public const string COOKIE_HOST = \".formula1.com\" ; public const string PYTHON_COOKIE_RETRIEVAL_FILENAME = \"recoverCookiesCSV.py\" ; public const string GECKODRIVER_FILENAME = @\"geckodriver-v0.27.0-win64\\geckodriver.exe\" ; //BE CAREFULL IF YOU CHANGE IT HERE YOU NEED TO CHANGE IT IN THE PYTHON SCRIPT TOO public const string COOKIES_CSV_FILENAME = \"cookies.csv\" ; private FirefoxDriver Driver ; private bool _ready ; private string _grandPrixUrl ; public string GrandPrixUrl { get => _grandPrixUrl ; private set => _grandPrixUrl = value ; } public bool Ready { get => _ready ; set => _ready = value ; } public F1TVEmulator ( string grandPrixUrl ) { GrandPrixUrl = grandPrixUrl ; Ready = false ; } /// /// Will start the python programm that runs the Cookie Recovering /// private void StartCookieRecovering () { string scriptPath = PYTHON_COOKIE_RETRIEVAL_FILENAME ; Process process = new Process (); process . StartInfo . FileName = \"python.exe\" ; process . StartInfo . Arguments = scriptPath ; process . StartInfo . UseShellExecute = false ; process . StartInfo . RedirectStandardOutput = true ; process . Start (); string output = process . StandardOutput . ReadToEnd (); process . WaitForExit (); } /// /// Method that will recover the needed cookies in the DB /// /// The host of the wanted cookie ex: ./formula1.com /// The name of the wanted cookie ex: login /// returns the value of the cookie if it has been found /// public string GetCookie ( string host , string name ) { StartCookieRecovering (); string value = \"\" ; List < Cookie > cookies = new List < Cookie >(); if ( File . Exists ( COOKIES_CSV_FILENAME )) { using ( var reader = new StreamReader ( COOKIES_CSV_FILENAME )) { // Read the header row and validate column order string header = reader . ReadLine (); string [] expectedColumns = { \"host_key\" , \"name\" , \"value\" , \"path\" , \"expires_utc\" , \"is_secure\" , \"is_httponly\" }; string [] actualColumns = header . Split ( ',' ); for ( int i = 0 ; i < expectedColumns . Length ; i ++) { if ( expectedColumns [ i ] != actualColumns [ i ]) { throw new InvalidOperationException ( $\"Expected column '{expectedColumns[i]}' at index {i} but found '{actualColumns[i]}'\" ); } } // Read each data row and parse values into a Cookie object while (! reader . EndOfStream ) { string line = reader . ReadLine (); string [] fields = line . Split ( ',' ); string hostname = fields [ 0 ]; string cookieName = fields [ 1 ]; if ( hostname == host && cookieName == name ) { value = fields [ 2 ]; } } } } return value ; } /// /// Starts the headless browser /// /// Error code 1xx public async Task < int > Start () { Ready = false ; string loginCookieName = \"login\" ; string loginSessionCookieName = \"login-session\" ; string loginCookieValue = GetCookie ( COOKIE_HOST , loginCookieName ); string loginSessionValue = GetCookie ( COOKIE_HOST , loginSessionCookieName ); //Cookie retreival has gone wrong (usually its because of python not being installed properly) if ( loginCookieValue == \"\" || loginSessionValue == \"\" ) return 100 ; var service = FirefoxDriverService . CreateDefaultService ( GECKODRIVER_FILENAME ); service . Host = \"127.0.0.1\" ; service . Port = 5555 ; FirefoxProfile profile = new FirefoxProfile (); FirefoxOptions options = new FirefoxOptions (); //profile.SetPreference(\"full-screen-api.ignore-widgets\", true); //profile.SetPreference(\"media.hardware-video-decoding.enabled\", true); //profile.SetPreference(\"full-screen-api.enabled\", true); options . Profile = profile ; profile . SetPreference ( \"layout.css.devPixelsPerPx\" , \"1.0\" ); options . AcceptInsecureCertificates = true ; options . AddArgument ( \"--headless\" ); //options.AddArgument(\"--start-maximized\"); //options.AddArgument(\"--window-size=1920x1080\"); //options.AddArgument(\"--width=\" + windowWidth); //options.AddArgument(\"--height=\" + windowHeight); //options.AddArgument(\"-window-size=1920x1080\"); //options.AddArgument(\"--width=1920\"); //options.AddArgument(\"--height=1080\"); //profile try { Driver = new FirefoxDriver ( service , options ); } catch { Ready = false ; return 101 ; } Actions actions = new Actions ( Driver ); var loginCookie = new Cookie ( loginCookieName , loginCookieValue , COOKIE_HOST , \"/\" , DateTime . Now . AddDays ( 5 )); var loginSessionCookie = new Cookie ( loginSessionCookieName , loginSessionValue , COOKIE_HOST , \"/\" , DateTime . Now . AddDays ( 5 )); Driver . Navigate (). GoToUrl ( \"https://f1tv.formula1.com/\" ); Driver . Manage (). Cookies . AddCookie ( loginCookie ); Driver . Manage (). Cookies . AddCookie ( loginSessionCookie ); try { Driver . Navigate (). GoToUrl ( GrandPrixUrl ); } catch { //The url is not a valid url Driver . Dispose (); return 103 ; } //Waits for the page to fully load Driver . Manage (). Timeouts (). PageLoad = TimeSpan . FromSeconds ( 30 ); //Removes the cookie prompt try { IWebElement conscentButton = Driver . FindElement ( By . Id ( \"truste-consent-button\" )); conscentButton . Click (); } catch { //Could not locate the cookie button Screenshot ( \"ERROR104\" ); Driver . Dispose (); return 104 ; } try { IWebElement LiveButton = Driver . FindElement ( By . ClassName ( \"btn-manage-account\" )); //By.ClassName(\"btn btn-controls btn-main btn-manage-account no-redirect\") LiveButton . Click (); } catch { Console . Write ( \"Going for a rediff\" ); } //Again waits for the page to fully load (when you accept cookies it takes a little time for the page to load) //Cannot use The timeout because the feed loading is not really loading so there is not event or anything Thread . Sleep ( 5000 ); //Switches to the Data channel try { IWebElement dataChannelButton = Driver . FindElement ( By . ClassName ( \"data-button\" )); dataChannelButton . Click (); } catch { //If the data button does not exists its because the user is not connected Screenshot ( \"ERROR102\" ); Driver . Dispose (); return 102 ; } //Open settings // Press the space key, this should make the setting button visible // It does not matter if the feed is paused because when changing channel it autoplays actions . SendKeys ( OpenQA . Selenium . Keys . Space ). Perform (); //Clicks on the settings Icon int settingsClickTries = 0 ; bool settingsClickSuccess = false ; while ( settingsClickTries < 100 && ! settingsClickSuccess ) { Thread . Sleep ( 100 ); try { IWebElement settingsButton = Driver . FindElement ( By . ClassName ( \"bmpui-ui-settingstogglebutton\" )); settingsButton . Click (); IWebElement selectElement = Driver . FindElement ( By . ClassName ( \"bmpui-ui-videoqualityselectbox\" )); SelectElement select = new SelectElement ( selectElement ); IWebElement selectOption = selectElement . FindElement ( By . CssSelector ( \"option[value^='1080_']\" )); selectOption . Click (); settingsClickSuccess = true ; } catch { //Sometimes it can crash because it could not get the options to show up in time. When it happens just retry settingsClickSuccess = false ; settingsClickTries ++; } } if (! settingsClickSuccess ) { Screenshot ( \"ERROR105\" ); Driver . Dispose (); return 105 ; } Screenshot ( \"BEFOREFULLSCREEN\" ); //Makes the feed fullscreen int fullScreenClickTries = 0 ; bool fullScreenClickSuccess = false ; Driver . Manage (). Window . Maximize (); //WebDriverWait wait = new WebDriverWait(Driver, TimeSpan.FromSeconds(10)); while ( fullScreenClickTries < 100 && ! fullScreenClickSuccess ) { Thread . Sleep ( 150 ); try { IWebElement fullScreenButton = Driver . FindElement ( By . ClassName ( \"bmpui-ui-fullscreentogglebutton\" )); fullScreenButton . Click (); fullScreenClickSuccess = true ; } catch { fullScreenClickSuccess = false ; fullScreenClickTries ++; } } if (! fullScreenClickSuccess ) { Screenshot ( \"ERROR106\" ); Driver . Dispose (); return 106 ; } Screenshot ( \"AFTERFULLSCREEN\" ); //STARTUP FINISHED READY TO SCREENSHOT Ready = true ; return 0 ; } /// /// Takes a screenshot of what the headless browser is displaying /// /// Optional ! The name of the picture so it can be saved /// Returns the screenshot in the bitmap format public Bitmap Screenshot ( string name = \"TEST\" ) { Bitmap result = new Bitmap ( 4242 , 6969 ); try { //Screenshot scrsht = ((ITakesScreenshot)Driver).GetScreenshot(); //profileriver.SetPreferencC:\\Users\\Moi\\source\\repos\\Test_Merge\\README.mde(\"layout.css.devPixelsPerPx\", \"1.0\"); //Screenshot scrsht = Driver.GetFullPageScreenshot(); Screenshot scrsht = Driver . GetScreenshot (); byte [] screenshotBytes = Convert . FromBase64String ( scrsht . AsBase64EncodedString ); MemoryStream stream = new MemoryStream ( screenshotBytes ); result = new Bitmap ( stream ); //result.Save(name + \".png\"); scrsht . SaveAsFile ( name + \".png\" ); } catch { //Nothing for now } return result ; } /// /// Stops the Emulation. Note: if you plan to start it again please use ResetDriver() instead /// public void Stop () { Ready = false ; if ( Driver != null ) Driver . Dispose (); } /// /// Resets the emulation /// public void ResetDriver () { Ready = false ; if ( Driver != null ) Driver . Dispose (); Driver = null ; } } }","title":"F1TVEmulator.cs"},{"location":"Code/Form1.html","text":"Form1.cs /// Author : Maxime Rohmer /// Date : 09/06/2023 /// File : Form1.cs /// Brief : Class that controls the main view of the app /// Version : Beta 1.0 using System ; using System.Collections.Generic ; using System.ComponentModel ; using System.Data ; using System.Diagnostics ; using System.Drawing ; using System.Linq ; using System.Text ; using System.Threading ; using System.Threading.Tasks ; using System.Windows.Forms ; using System.IO ; namespace TrackTrends { public partial class Main : Form { private F1TVEmulator Emulator = null ; private DataWrapper Wrapper = null ; private bool cancelRequested = false ; private SemaphoreSlim semaphore = new SemaphoreSlim ( 1 ); string ConfigFile = \"\" ; string GpUrl = \"\" ; //For the responsive content Size oldSize = new Size (); Size oldRankingSize = new Size (); Size oldLapTimesSize = new Size (); Size oldBattles = new Size (); Size oldPnlBattles = new Size (); Size oldPnlRankings = new Size (); Size oldPnlFastest = new Size (); Size oldPnlSlowest = new Size (); Point oldRankingPosition = new Point (); Point oldBattlePosition = new Point (); Point oldDriverInfoPosition = new Point (); Point olPnlFastestPosition = new Point (); Point oldPnlSlowestPosition = new Point (); public Main () { InitializeComponent (); } /// /// Will update everything that is not data related /// public void RefreshUI () { if ( Directory . Exists ( ConfigurationTool . CONFIGS_FOLDER_NAME )) { lsbPresets . DataSource = null ; lsbPresets . DataSource = Directory . GetFiles ( ConfigurationTool . CONFIGS_FOLDER_NAME ); } } /// /// Opens the settings page. Also disposes of the browser if there is one opened and all thos things /// /// /// private void btnSettings_Click ( object sender , EventArgs e ) { if ( Emulator != null ) Emulator . ResetDriver (); btnStartDecoding . Enabled = false ; btnStopUpdating . Enabled = false ; btnResetEmulator . Text = \"Launch\" ; Emulator = null ; Wrapper = null ; GC . Collect (); Settings settingsForm = new Settings (); settingsForm . ShowDialog (); RefreshUI (); //MessageBox.Show(settingsForm.GrandPrixUrl + Environment.NewLine + settingsForm.GrandPrixName + Environment.NewLine + settingsForm.GrandPrixYear); if ( settingsForm . GrandPrixUrl != \"\" && settingsForm . SelectedConfigFile != \"\" ) { GpUrl = settingsForm . GrandPrixUrl ; tbxGpUrl . Text = GpUrl ; if ( File . Exists ( settingsForm . SelectedConfigFile )) { ConfigFile = settingsForm . SelectedConfigFile ; for ( int i = 0 ; i < lsbPresets . Items . Count ; i ++) { if ( lsbPresets . Items [ i ]. ToString () == ConfigFile ) lsbPresets . SelectedIndex = i ; } } else { //Should technically never show up but we never know MessageBox . Show ( \"The config file has not been found please return to the config and change it\" ); } } else { //WE dont care anymore, the user will choose its Grand Prix himself in the main program //MessageBox.Show(\"There is no URL for the Grand Prix you want to decode. Please return to the config and add a valid one\"); } } /// /// Will do everything that needs to be done at the first start of the app /// /// /// private async void Form1_Load ( object sender , EventArgs e ) { //Those are the default values but they will need to be changed later when the configuration has been done ConfigFile = \"./Presets/Clean_4K_2023.json\" ; GpUrl = \"https://f1tv.formula1.com/detail/1000006688/2023-azerbaijan-grand-prix?action=play\" ; tbxGpUrl . Text = GpUrl ; this . DoubleBuffered = true ; oldSize = this . Size ; oldRankingSize = gpbxRanking . Size ; oldLapTimesSize = gpbxLapTimes . Size ; oldBattles = gpbxBattles . Size ; oldPnlRankings = pnlLiveRanking . Size ; oldPnlBattles = pnlBattles . Size ; oldPnlFastest = pnlFastest . Size ; oldPnlSlowest = pnlSlowest . Size ; oldRankingPosition = gpbxRanking . Location ; oldBattlePosition = gpbxBattles . Location ; oldDriverInfoPosition = gpbxDriverInfos . Location ; olPnlFastestPosition = pnlFastest . Location ; oldPnlSlowestPosition = pnlSlowest . Location ; tip1 . SetToolTip ( btnResetEmulator , \"Starts or restarts the emulator. You need to start this to use the app\" ); tip1 . SetToolTip ( btnSettings , \"Opens the configuration menu\" ); tip1 . SetToolTip ( tbxGpUrl , \"Insert the URL of the Grand Prix you want to track. Dont forget the \\\"?action=play\\\" at the end\" ); tip1 . SetToolTip ( lsbPresets , \"Select a configuration preset to use with the decoding\" ); tip1 . SetToolTip ( pbxResult , \"A preview of what the program sees. You should see the DATA page of the F1TV here\" ); tip1 . SetToolTip ( lsbOvertakes , \"A list of all the activity. You can scroll to see the most recent overtakes\" ); tip1 . SetToolTip ( gpbxBattles , \"The four first battles in the field. A battle is two drivers less than 3 seconds apart\" ); tip1 . SetToolTip ( gpbxLapTimes , \"The fastest and slowest drivers on track at the moment. It takes the average lapTime of the last 5 laps to choose who is the fastes or the slowest\" ); RefreshUI (); } /// /// Will start or stop the process of decoding /// /// /// private async void btnUpdate_Click ( object sender , EventArgs e ) { cancelRequested = false ; if ( Emulator != null && Wrapper != null ) { // Disable UI controls to prevent re-entrancy btnResetEmulator . Enabled = false ; btnStartDecoding . Enabled = false ; btnStopUpdating . Enabled = true ; btnSettings . Enabled = false ; while (! cancelRequested ) { await semaphore . WaitAsync (); try { // Start the time-consuming task on a separate thread await Task . Run ( async () => { Stopwatch sw = new Stopwatch (); sw . Start (); Bitmap screen = Emulator . Screenshot (); screen . Save ( \"HopefullyDataScreenshot.png\" ); Invoke (( MethodInvoker ) delegate { pbxResult . Image = ( Bitmap ) screen . Clone (); }); Wrapper . ChangeImage ( screen ); int errorCode = Wrapper . Refresh (); sw . Stop (); // Task completed Invoke (( MethodInvoker ) delegate { DisplayResults ( errorCode , sw , screen ); DisplayBattles (); DisplayDeltas (); DisplayOvertakes (); }); }); } finally { semaphore . Release (); } } // Re-enable UI controls btnStopUpdating . Text = \"Stop\" ; btnStartDecoding . Enabled = true ; btnStopUpdating . Enabled = false ; btnResetEmulator . Enabled = true ; btnSettings . Enabled = true ; } } /// /// Will display the overtakes in the overtakes list box /// private void DisplayOvertakes () { Wrapper . DisplayOvertakes ( lsbOvertakes ); } /// /// Will display the battles in the battles pannel /// private void DisplayBattles () { Wrapper . DisplayBattles ( pnlBattles , this ); } /// /// Will display the time differences in the faster and slowest pannels /// private void DisplayDeltas () { Wrapper . DisplayTimesDeltas ( pnlFastest , pnlSlowest , this ); } /// /// Will try to stop the emulator (usually does not work please do not count on it) /// /// /// private void Form1_FormClosing ( object sender , FormClosingEventArgs e ) { if ( Emulator != null ) { Emulator . Stop (); } } /// /// Will display the live ranking on the live ranking pannel. Its called like this because historically it was the method that just recovered the bare results from the OCR /// /// /// /// private void DisplayResults ( int errorCode , Stopwatch sw , Bitmap screen ) { if ( errorCode != 0 ) { cancelRequested = true ; MessageBox . Show ( \"An error has occured while trying to recover data from live feed. This can happen sometimes. I would advise you to restart a few times. If the problem persists check your configuration.\" ); } else { Wrapper . DisplayLiveRanking ( pnlLiveRanking , this ); } } /// /// Will stop the data recovering operation and resets some buttons and text /// /// /// private void btnStopUpdating_Click ( object sender , EventArgs e ) { // Set the cancellation flag cancelRequested = true ; btnStopUpdating . Enabled = false ; btnResetEmulator . Enabled = false ; btnStopUpdating . Text = \"Stopping\" ; } /// /// Will start the F1TVEmulator, again this name is historical because back at the start of this project this button did not have a name /// /// /// private async void button1_Click ( object sender , EventArgs e ) { lsbOvertakes . Items . Clear (); btnResetEmulator . Text = \"Launching\" ; btnResetEmulator . Enabled = false ; btnSettings . Enabled = true ; btnStartDecoding . Enabled = false ; btnStopUpdating . Enabled = false ; btnSettings . Enabled = false ; int errorCode = - 1 ; await Task . Run ( async () => { if ( Emulator != null ) Emulator . ResetDriver (); Emulator = null ; Wrapper = null ; GC . Collect (); Emulator = new F1TVEmulator ( GpUrl ); errorCode = await Emulator . Start (); }); if ( errorCode != 0 ) { string message = \"\" ; switch ( errorCode ) { case 100 : message = \"Error \" + errorCode + \" Could not recover cookies. It could be because of an improper installation of python or bad cookies in the chrome database. Please try to log on to the F1TV using chrome again\" ; break ; case 101 : message = \"Error \" + errorCode + \" Could not start the driver. It could be because an other instance is runnin make sure you closed them all before trying again\" ; break ; case 102 : message = \"Error \" + errorCode + \" Could not navigate on the F1TV site. Make sure the correct URL has been given and that you logged from chrome. It can take a few minutes to update\" ; break ; case 103 : message = \"Error \" + errorCode + \" The url is not a valid url\" ; break ; case 104 : message = \"Error \" + errorCode + \" The url is not a valid url\" ; break ; case 105 : message = \"Error \" + errorCode + \" There has been an error trying to emulate button presses. Please try again\" ; break ; case 106 : message = \"Error \" + errorCode + \" There has been an error trying to emulate button presses. Please try again\" ; break ; default : message = \"Could not start the emulator Error \" + errorCode ; break ; } MessageBox . Show ( message ); btnResetEmulator . Enabled = true ; btnSettings . Enabled = true ; btnResetEmulator . Text = \"Retry\" ; } else { Wrapper = new DataWrapper ( ConfigFile , Emulator . Screenshot ()); btnResetEmulator . Text = \"Re launch\" ; btnResetEmulator . Enabled = true ; btnSettings . Enabled = true ; btnStartDecoding . Enabled = true ; } } /// /// Silly way to remove borders from groupbox and make them look like pannels with titles /// /// /// private void removeBorders ( object sender , PaintEventArgs e ) { GroupBox gpbx = ( GroupBox ) sender ; using ( Pen pen = new Pen ( gpbx . BackColor , 50 )) { e . Graphics . DrawRectangle ( pen , 0 , 0 , gpbx . Width - 1 , gpbx . Height - 1 ); e . Graphics . DrawRectangle ( pen , 0 , 0 , gpbx . Width - 1 , gpbx . Height - 1 ); } using ( var brush = new SolidBrush ( gpbx . ForeColor )) { var textPosition = new Point ( 5 , 0 ); // Adjust the X and Y values as needed e . Graphics . DrawString ( gpbx . Text , gpbx . Font , brush , textPosition ); } } /// /// Will change the preset to use when starting the emulator /// /// /// private void lsbPresets_SelectedIndexChanged ( object sender , EventArgs e ) { if ( lsbPresets . SelectedIndex >= 0 ) ConfigFile = lsbPresets . Items [ lsbPresets . SelectedIndex ]. ToString (); } /// /// Will change the URL the emulator will use, historical name again /// /// /// private void textBox1_TextChanged ( object sender , EventArgs e ) { if ( tbxGpUrl . Text != \"\" ) GpUrl = tbxGpUrl . Text ; } /// /// This is called by the automatically generated buttons. Its here to fill in the driver info tab whenever the user clicks on a button that contains the name of a driver /// /// /// public void btnDriver_Click ( object sender , EventArgs e ) { //Removes the cover if ( pnlCover . Visible = true ) pnlCover . Visible = false ; //Happens when a driver button has been clicked //MessageBox.Show((sender as Button).Name + \" has been selected\"); Button btn = ( sender as Button ); string [] parts = btn . Name . Split ( '_' ); DriverData driver = Wrapper . GetFullDriverData ( parts [ 0 ], pnlCurrentDriverLapsHistory , this ); lblCurrentDriverName . Text = driver . Name ; lblCurrentDriverPosition . Text = driver . Position . ToString (); lblCurrentDriverGapToLeader . Text = Reader . ConvertMsToTime ( driver . GapToLeader ); lblCurrentDriverLapTime . Text = Reader . ConvertMsToTime ( driver . LapTime ); lblCurrentDriverTyreAge . Text = driver . CurrentTyre . NumberOfLaps . ToString (); if ( driver . DRS ) { lblCurrentDriverDRS . Text = \"Open\" ; lblCurrentDriverDRS . ForeColor = Color . FromArgb ( 0 , 164 , 46 ); } else { lblCurrentDriverDRS . Text = \"Closed\" ; lblCurrentDriverDRS . ForeColor = Color . Black ; } switch ( driver . CurrentTyre . Coumpound ) { case Tyre . Type . Undefined : lblCurrentDriverTyreType . Text = \"uuuuh...\" ; lblCurrentDriverTyreType . ForeColor = Color . Violet ; break ; case Tyre . Type . Hard : lblCurrentDriverTyreType . Text = \"Hard\" ; lblCurrentDriverTyreType . ForeColor = Color . FromArgb ( 164 , 165 , 168 ); break ; case Tyre . Type . Medium : lblCurrentDriverTyreType . Text = \"Medium\" ; lblCurrentDriverTyreType . ForeColor = Color . FromArgb ( 245 , 191 , 0 ); break ; case Tyre . Type . Soft : lblCurrentDriverTyreType . Text = \"Soft\" ; lblCurrentDriverTyreType . ForeColor = Color . FromArgb ( 255 , 0 , 0 ); break ; case Tyre . Type . Inter : lblCurrentDriverTyreType . Text = \"Intermediate\" ; lblCurrentDriverTyreType . ForeColor = Color . FromArgb ( 0 , 164 , 46 ); break ; case Tyre . Type . Wet : lblCurrentDriverTyreType . Text = \"Wet\" ; lblCurrentDriverTyreType . ForeColor = Color . FromArgb ( 39 , 96 , 166 ); break ; } } /// /// This is supposed to be called by an automatically generated button. It should be any button with a laptime info on it /// /// /// public void btnLapTime_Click ( object sender , EventArgs e ) { //Happens when a lapTime has been clicked Button btn = sender as Button ; string [] parts = btn . Name . Split ( '_' ); Wrapper . DisplayLapTimeInfos ( parts [ 0 ], Convert . ToInt32 ( parts [ 1 ]), btn . Text ); } /// /// Will trigger responsive calculation everytime the form changes size /// /// /// private void Main_Resize ( object sender , EventArgs e ) { int xDiff = this . Width - oldSize . Width ; int yDiff = this . Height - oldSize . Height ; int padding = 10 ; //This will take half the newly created space gpbxRanking . Size = new Size ( oldRankingSize . Width + xDiff / 2 , oldRankingSize . Height + yDiff ); gpbxRanking . Location = new Point ( oldRankingPosition . X + xDiff / 2 , gpbxRanking . Location . Y ); //Will take half the new height and half the new height gpbxLapTimes . Size = new Size ( oldLapTimesSize . Width + xDiff / 2 , oldLapTimesSize . Height + yDiff / 2 ); //Will take half the new height and half the new width gpbxBattles . Size = new Size ( oldBattles . Width + xDiff / 2 , oldBattles . Height + yDiff / 2 ); gpbxBattles . Location = new Point ( gpbxBattles . Location . X , oldBattlePosition . Y + yDiff / 2 ); //The infos wont change width but will need to be centerd Point startOfZone = new Point ( gpbxOvertakes . Width + gpbxOvertakes . Location . X , gpbxOvertakes . Location . Y ); Point endOfZone = new Point ( gpbxRanking . Location . X , gpbxOvertakes . Location . Y ); int totalWidth = endOfZone . X - startOfZone . X ; gpbxDriverInfos . Location = new Point ( startOfZone . X + ( totalWidth / 2 - gpbxDriverInfos . Width / 2 ), oldDriverInfoPosition . Y + yDiff ); //Now resizing internals pnlFastest . Size = new Size ( oldPnlFastest . Width + xDiff / 4 , oldPnlFastest . Height + yDiff / 4 ); pnlFastest . Location = new Point ( olPnlFastestPosition . X , olPnlFastestPosition . Y + yDiff / 4 ); pnlSlowest . Size = new Size ( oldPnlSlowest . Width + xDiff / 4 , oldPnlSlowest . Height + yDiff / 4 ); pnlSlowest . Location = new Point ( oldPnlSlowestPosition . X + xDiff / 4 , oldPnlSlowestPosition . Y + yDiff / 4 ); pnlBattles . Size = new Size ( oldPnlBattles . Width + xDiff / 2 , oldPnlBattles . Height + yDiff / 2 ); pnlLiveRanking . Size = new Size ( oldPnlRankings . Width + xDiff / 2 , oldPnlRankings . Height + yDiff ); } } }","title":"Form1.cs"},{"location":"Code/Form1.html#form1cs","text":"/// Author : Maxime Rohmer /// Date : 09/06/2023 /// File : Form1.cs /// Brief : Class that controls the main view of the app /// Version : Beta 1.0 using System ; using System.Collections.Generic ; using System.ComponentModel ; using System.Data ; using System.Diagnostics ; using System.Drawing ; using System.Linq ; using System.Text ; using System.Threading ; using System.Threading.Tasks ; using System.Windows.Forms ; using System.IO ; namespace TrackTrends { public partial class Main : Form { private F1TVEmulator Emulator = null ; private DataWrapper Wrapper = null ; private bool cancelRequested = false ; private SemaphoreSlim semaphore = new SemaphoreSlim ( 1 ); string ConfigFile = \"\" ; string GpUrl = \"\" ; //For the responsive content Size oldSize = new Size (); Size oldRankingSize = new Size (); Size oldLapTimesSize = new Size (); Size oldBattles = new Size (); Size oldPnlBattles = new Size (); Size oldPnlRankings = new Size (); Size oldPnlFastest = new Size (); Size oldPnlSlowest = new Size (); Point oldRankingPosition = new Point (); Point oldBattlePosition = new Point (); Point oldDriverInfoPosition = new Point (); Point olPnlFastestPosition = new Point (); Point oldPnlSlowestPosition = new Point (); public Main () { InitializeComponent (); } /// /// Will update everything that is not data related /// public void RefreshUI () { if ( Directory . Exists ( ConfigurationTool . CONFIGS_FOLDER_NAME )) { lsbPresets . DataSource = null ; lsbPresets . DataSource = Directory . GetFiles ( ConfigurationTool . CONFIGS_FOLDER_NAME ); } } /// /// Opens the settings page. Also disposes of the browser if there is one opened and all thos things /// /// /// private void btnSettings_Click ( object sender , EventArgs e ) { if ( Emulator != null ) Emulator . ResetDriver (); btnStartDecoding . Enabled = false ; btnStopUpdating . Enabled = false ; btnResetEmulator . Text = \"Launch\" ; Emulator = null ; Wrapper = null ; GC . Collect (); Settings settingsForm = new Settings (); settingsForm . ShowDialog (); RefreshUI (); //MessageBox.Show(settingsForm.GrandPrixUrl + Environment.NewLine + settingsForm.GrandPrixName + Environment.NewLine + settingsForm.GrandPrixYear); if ( settingsForm . GrandPrixUrl != \"\" && settingsForm . SelectedConfigFile != \"\" ) { GpUrl = settingsForm . GrandPrixUrl ; tbxGpUrl . Text = GpUrl ; if ( File . Exists ( settingsForm . SelectedConfigFile )) { ConfigFile = settingsForm . SelectedConfigFile ; for ( int i = 0 ; i < lsbPresets . Items . Count ; i ++) { if ( lsbPresets . Items [ i ]. ToString () == ConfigFile ) lsbPresets . SelectedIndex = i ; } } else { //Should technically never show up but we never know MessageBox . Show ( \"The config file has not been found please return to the config and change it\" ); } } else { //WE dont care anymore, the user will choose its Grand Prix himself in the main program //MessageBox.Show(\"There is no URL for the Grand Prix you want to decode. Please return to the config and add a valid one\"); } } /// /// Will do everything that needs to be done at the first start of the app /// /// /// private async void Form1_Load ( object sender , EventArgs e ) { //Those are the default values but they will need to be changed later when the configuration has been done ConfigFile = \"./Presets/Clean_4K_2023.json\" ; GpUrl = \"https://f1tv.formula1.com/detail/1000006688/2023-azerbaijan-grand-prix?action=play\" ; tbxGpUrl . Text = GpUrl ; this . DoubleBuffered = true ; oldSize = this . Size ; oldRankingSize = gpbxRanking . Size ; oldLapTimesSize = gpbxLapTimes . Size ; oldBattles = gpbxBattles . Size ; oldPnlRankings = pnlLiveRanking . Size ; oldPnlBattles = pnlBattles . Size ; oldPnlFastest = pnlFastest . Size ; oldPnlSlowest = pnlSlowest . Size ; oldRankingPosition = gpbxRanking . Location ; oldBattlePosition = gpbxBattles . Location ; oldDriverInfoPosition = gpbxDriverInfos . Location ; olPnlFastestPosition = pnlFastest . Location ; oldPnlSlowestPosition = pnlSlowest . Location ; tip1 . SetToolTip ( btnResetEmulator , \"Starts or restarts the emulator. You need to start this to use the app\" ); tip1 . SetToolTip ( btnSettings , \"Opens the configuration menu\" ); tip1 . SetToolTip ( tbxGpUrl , \"Insert the URL of the Grand Prix you want to track. Dont forget the \\\"?action=play\\\" at the end\" ); tip1 . SetToolTip ( lsbPresets , \"Select a configuration preset to use with the decoding\" ); tip1 . SetToolTip ( pbxResult , \"A preview of what the program sees. You should see the DATA page of the F1TV here\" ); tip1 . SetToolTip ( lsbOvertakes , \"A list of all the activity. You can scroll to see the most recent overtakes\" ); tip1 . SetToolTip ( gpbxBattles , \"The four first battles in the field. A battle is two drivers less than 3 seconds apart\" ); tip1 . SetToolTip ( gpbxLapTimes , \"The fastest and slowest drivers on track at the moment. It takes the average lapTime of the last 5 laps to choose who is the fastes or the slowest\" ); RefreshUI (); } /// /// Will start or stop the process of decoding /// /// /// private async void btnUpdate_Click ( object sender , EventArgs e ) { cancelRequested = false ; if ( Emulator != null && Wrapper != null ) { // Disable UI controls to prevent re-entrancy btnResetEmulator . Enabled = false ; btnStartDecoding . Enabled = false ; btnStopUpdating . Enabled = true ; btnSettings . Enabled = false ; while (! cancelRequested ) { await semaphore . WaitAsync (); try { // Start the time-consuming task on a separate thread await Task . Run ( async () => { Stopwatch sw = new Stopwatch (); sw . Start (); Bitmap screen = Emulator . Screenshot (); screen . Save ( \"HopefullyDataScreenshot.png\" ); Invoke (( MethodInvoker ) delegate { pbxResult . Image = ( Bitmap ) screen . Clone (); }); Wrapper . ChangeImage ( screen ); int errorCode = Wrapper . Refresh (); sw . Stop (); // Task completed Invoke (( MethodInvoker ) delegate { DisplayResults ( errorCode , sw , screen ); DisplayBattles (); DisplayDeltas (); DisplayOvertakes (); }); }); } finally { semaphore . Release (); } } // Re-enable UI controls btnStopUpdating . Text = \"Stop\" ; btnStartDecoding . Enabled = true ; btnStopUpdating . Enabled = false ; btnResetEmulator . Enabled = true ; btnSettings . Enabled = true ; } } /// /// Will display the overtakes in the overtakes list box /// private void DisplayOvertakes () { Wrapper . DisplayOvertakes ( lsbOvertakes ); } /// /// Will display the battles in the battles pannel /// private void DisplayBattles () { Wrapper . DisplayBattles ( pnlBattles , this ); } /// /// Will display the time differences in the faster and slowest pannels /// private void DisplayDeltas () { Wrapper . DisplayTimesDeltas ( pnlFastest , pnlSlowest , this ); } /// /// Will try to stop the emulator (usually does not work please do not count on it) /// /// /// private void Form1_FormClosing ( object sender , FormClosingEventArgs e ) { if ( Emulator != null ) { Emulator . Stop (); } } /// /// Will display the live ranking on the live ranking pannel. Its called like this because historically it was the method that just recovered the bare results from the OCR /// /// /// /// private void DisplayResults ( int errorCode , Stopwatch sw , Bitmap screen ) { if ( errorCode != 0 ) { cancelRequested = true ; MessageBox . Show ( \"An error has occured while trying to recover data from live feed. This can happen sometimes. I would advise you to restart a few times. If the problem persists check your configuration.\" ); } else { Wrapper . DisplayLiveRanking ( pnlLiveRanking , this ); } } /// /// Will stop the data recovering operation and resets some buttons and text /// /// /// private void btnStopUpdating_Click ( object sender , EventArgs e ) { // Set the cancellation flag cancelRequested = true ; btnStopUpdating . Enabled = false ; btnResetEmulator . Enabled = false ; btnStopUpdating . Text = \"Stopping\" ; } /// /// Will start the F1TVEmulator, again this name is historical because back at the start of this project this button did not have a name /// /// /// private async void button1_Click ( object sender , EventArgs e ) { lsbOvertakes . Items . Clear (); btnResetEmulator . Text = \"Launching\" ; btnResetEmulator . Enabled = false ; btnSettings . Enabled = true ; btnStartDecoding . Enabled = false ; btnStopUpdating . Enabled = false ; btnSettings . Enabled = false ; int errorCode = - 1 ; await Task . Run ( async () => { if ( Emulator != null ) Emulator . ResetDriver (); Emulator = null ; Wrapper = null ; GC . Collect (); Emulator = new F1TVEmulator ( GpUrl ); errorCode = await Emulator . Start (); }); if ( errorCode != 0 ) { string message = \"\" ; switch ( errorCode ) { case 100 : message = \"Error \" + errorCode + \" Could not recover cookies. It could be because of an improper installation of python or bad cookies in the chrome database. Please try to log on to the F1TV using chrome again\" ; break ; case 101 : message = \"Error \" + errorCode + \" Could not start the driver. It could be because an other instance is runnin make sure you closed them all before trying again\" ; break ; case 102 : message = \"Error \" + errorCode + \" Could not navigate on the F1TV site. Make sure the correct URL has been given and that you logged from chrome. It can take a few minutes to update\" ; break ; case 103 : message = \"Error \" + errorCode + \" The url is not a valid url\" ; break ; case 104 : message = \"Error \" + errorCode + \" The url is not a valid url\" ; break ; case 105 : message = \"Error \" + errorCode + \" There has been an error trying to emulate button presses. Please try again\" ; break ; case 106 : message = \"Error \" + errorCode + \" There has been an error trying to emulate button presses. Please try again\" ; break ; default : message = \"Could not start the emulator Error \" + errorCode ; break ; } MessageBox . Show ( message ); btnResetEmulator . Enabled = true ; btnSettings . Enabled = true ; btnResetEmulator . Text = \"Retry\" ; } else { Wrapper = new DataWrapper ( ConfigFile , Emulator . Screenshot ()); btnResetEmulator . Text = \"Re launch\" ; btnResetEmulator . Enabled = true ; btnSettings . Enabled = true ; btnStartDecoding . Enabled = true ; } } /// /// Silly way to remove borders from groupbox and make them look like pannels with titles /// /// /// private void removeBorders ( object sender , PaintEventArgs e ) { GroupBox gpbx = ( GroupBox ) sender ; using ( Pen pen = new Pen ( gpbx . BackColor , 50 )) { e . Graphics . DrawRectangle ( pen , 0 , 0 , gpbx . Width - 1 , gpbx . Height - 1 ); e . Graphics . DrawRectangle ( pen , 0 , 0 , gpbx . Width - 1 , gpbx . Height - 1 ); } using ( var brush = new SolidBrush ( gpbx . ForeColor )) { var textPosition = new Point ( 5 , 0 ); // Adjust the X and Y values as needed e . Graphics . DrawString ( gpbx . Text , gpbx . Font , brush , textPosition ); } } /// /// Will change the preset to use when starting the emulator /// /// /// private void lsbPresets_SelectedIndexChanged ( object sender , EventArgs e ) { if ( lsbPresets . SelectedIndex >= 0 ) ConfigFile = lsbPresets . Items [ lsbPresets . SelectedIndex ]. ToString (); } /// /// Will change the URL the emulator will use, historical name again /// /// /// private void textBox1_TextChanged ( object sender , EventArgs e ) { if ( tbxGpUrl . Text != \"\" ) GpUrl = tbxGpUrl . Text ; } /// /// This is called by the automatically generated buttons. Its here to fill in the driver info tab whenever the user clicks on a button that contains the name of a driver /// /// /// public void btnDriver_Click ( object sender , EventArgs e ) { //Removes the cover if ( pnlCover . Visible = true ) pnlCover . Visible = false ; //Happens when a driver button has been clicked //MessageBox.Show((sender as Button).Name + \" has been selected\"); Button btn = ( sender as Button ); string [] parts = btn . Name . Split ( '_' ); DriverData driver = Wrapper . GetFullDriverData ( parts [ 0 ], pnlCurrentDriverLapsHistory , this ); lblCurrentDriverName . Text = driver . Name ; lblCurrentDriverPosition . Text = driver . Position . ToString (); lblCurrentDriverGapToLeader . Text = Reader . ConvertMsToTime ( driver . GapToLeader ); lblCurrentDriverLapTime . Text = Reader . ConvertMsToTime ( driver . LapTime ); lblCurrentDriverTyreAge . Text = driver . CurrentTyre . NumberOfLaps . ToString (); if ( driver . DRS ) { lblCurrentDriverDRS . Text = \"Open\" ; lblCurrentDriverDRS . ForeColor = Color . FromArgb ( 0 , 164 , 46 ); } else { lblCurrentDriverDRS . Text = \"Closed\" ; lblCurrentDriverDRS . ForeColor = Color . Black ; } switch ( driver . CurrentTyre . Coumpound ) { case Tyre . Type . Undefined : lblCurrentDriverTyreType . Text = \"uuuuh...\" ; lblCurrentDriverTyreType . ForeColor = Color . Violet ; break ; case Tyre . Type . Hard : lblCurrentDriverTyreType . Text = \"Hard\" ; lblCurrentDriverTyreType . ForeColor = Color . FromArgb ( 164 , 165 , 168 ); break ; case Tyre . Type . Medium : lblCurrentDriverTyreType . Text = \"Medium\" ; lblCurrentDriverTyreType . ForeColor = Color . FromArgb ( 245 , 191 , 0 ); break ; case Tyre . Type . Soft : lblCurrentDriverTyreType . Text = \"Soft\" ; lblCurrentDriverTyreType . ForeColor = Color . FromArgb ( 255 , 0 , 0 ); break ; case Tyre . Type . Inter : lblCurrentDriverTyreType . Text = \"Intermediate\" ; lblCurrentDriverTyreType . ForeColor = Color . FromArgb ( 0 , 164 , 46 ); break ; case Tyre . Type . Wet : lblCurrentDriverTyreType . Text = \"Wet\" ; lblCurrentDriverTyreType . ForeColor = Color . FromArgb ( 39 , 96 , 166 ); break ; } } /// /// This is supposed to be called by an automatically generated button. It should be any button with a laptime info on it /// /// /// public void btnLapTime_Click ( object sender , EventArgs e ) { //Happens when a lapTime has been clicked Button btn = sender as Button ; string [] parts = btn . Name . Split ( '_' ); Wrapper . DisplayLapTimeInfos ( parts [ 0 ], Convert . ToInt32 ( parts [ 1 ]), btn . Text ); } /// /// Will trigger responsive calculation everytime the form changes size /// /// /// private void Main_Resize ( object sender , EventArgs e ) { int xDiff = this . Width - oldSize . Width ; int yDiff = this . Height - oldSize . Height ; int padding = 10 ; //This will take half the newly created space gpbxRanking . Size = new Size ( oldRankingSize . Width + xDiff / 2 , oldRankingSize . Height + yDiff ); gpbxRanking . Location = new Point ( oldRankingPosition . X + xDiff / 2 , gpbxRanking . Location . Y ); //Will take half the new height and half the new height gpbxLapTimes . Size = new Size ( oldLapTimesSize . Width + xDiff / 2 , oldLapTimesSize . Height + yDiff / 2 ); //Will take half the new height and half the new width gpbxBattles . Size = new Size ( oldBattles . Width + xDiff / 2 , oldBattles . Height + yDiff / 2 ); gpbxBattles . Location = new Point ( gpbxBattles . Location . X , oldBattlePosition . Y + yDiff / 2 ); //The infos wont change width but will need to be centerd Point startOfZone = new Point ( gpbxOvertakes . Width + gpbxOvertakes . Location . X , gpbxOvertakes . Location . Y ); Point endOfZone = new Point ( gpbxRanking . Location . X , gpbxOvertakes . Location . Y ); int totalWidth = endOfZone . X - startOfZone . X ; gpbxDriverInfos . Location = new Point ( startOfZone . X + ( totalWidth / 2 - gpbxDriverInfos . Width / 2 ), oldDriverInfoPosition . Y + yDiff ); //Now resizing internals pnlFastest . Size = new Size ( oldPnlFastest . Width + xDiff / 4 , oldPnlFastest . Height + yDiff / 4 ); pnlFastest . Location = new Point ( olPnlFastestPosition . X , olPnlFastestPosition . Y + yDiff / 4 ); pnlSlowest . Size = new Size ( oldPnlSlowest . Width + xDiff / 4 , oldPnlSlowest . Height + yDiff / 4 ); pnlSlowest . Location = new Point ( oldPnlSlowestPosition . X + xDiff / 4 , oldPnlSlowestPosition . Y + yDiff / 4 ); pnlBattles . Size = new Size ( oldPnlBattles . Width + xDiff / 2 , oldPnlBattles . Height + yDiff / 2 ); pnlLiveRanking . Size = new Size ( oldPnlRankings . Width + xDiff / 2 , oldPnlRankings . Height + yDiff ); } } }","title":"Form1.cs"},{"location":"Code/SqliteStorage.html","text":"SqliteStorage.cs /// Author : Maxime Rohmer /// Date : 09/08/2023 /// File : SqliteStorage.cs /// Brief : Class that controls the sqlite database /// Version : Beta 1.0 using System ; using System.Collections.Generic ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; using System.Data.SQLite ; using System.IO ; using System.Windows.Forms ; namespace TrackTrends { public class SqliteStorage { private const string DATABASE_FOLDER = \"./Data\" ; private const string DATABASE_FILE = \"/database.sqlite\" ; private const string CONNECTION_STRING = \"Data Source=\" + DATABASE_FOLDER + DATABASE_FILE + \";Version=3;\" ; private SQLiteConnection Connection ; /// /// Creates a new Sqlite Storage and initialize the database /// public SqliteStorage () { Load (); } /// /// Loads a fresh new Database or create a new one if it does not exist. /// private void Load () { if (! Directory . Exists ( DATABASE_FOLDER )) Directory . CreateDirectory ( DATABASE_FOLDER ); if (! File . Exists ( DATABASE_FOLDER + DATABASE_FILE )) { SQLiteConnection . CreateFile ( DATABASE_FOLDER + DATABASE_FILE ); } else { //We are not using the existing DataBase File . Delete ( DATABASE_FOLDER + DATABASE_FILE ); } Connection = new SQLiteConnection ( CONNECTION_STRING ); Connection . Open (); //Create the drivers table string createDriversTableQuery = @\"CREATE TABLE IF NOT EXISTS Drivers (ID INTEGER PRIMARY KEY AUTOINCREMENT, Name VARCHAR NOT NULL);\" ; using ( var command = new SQLiteCommand ( createDriversTableQuery , Connection )) { command . ExecuteNonQuery (); } //Create the drivers table string createPitstopTableQuery = @\"CREATE TABLE Pitstops (Lap INTEGER NOT NULL, DriverID INTEGER NOT NULL, Tyre VARCHAR, PRIMARY KEY (Lap,DriverID));\" ; using ( var command = new SQLiteCommand ( createPitstopTableQuery , Connection )) { command . ExecuteNonQuery (); } //Create the stats string createStatsTableQuery = @\"CREATE TABLE IF NOT EXISTS Stats (Lap INTEGER NOT NULL, DriverID INTEGER NOT NULL, Tyre VARCHAR NOT NULL, LapTime INTEGER NOT NULL, Sector1 INTEGER NOT NULL, Sector2 INTEGER NOT NULL, Sector3 INTEGER NOT NULL, GapToLeader INTEGER NOT NULL, Position INTEGER NOT NULL, PRIMARY KEY (Lap, DriverID));\" ; using ( var command = new SQLiteCommand ( createStatsTableQuery , Connection )) { command . ExecuteNonQuery (); } } /// /// Adds a driver into the drivers table. Meant to be used at the start of the programm /// /// The name of the driver. (non case sensitive) public void AddDriver ( string name ) { string insertQuery = \"INSERT INTO Drivers (Name) VALUES (@name);\" ; using ( var command = new SQLiteCommand ( insertQuery , Connection )) { command . Parameters . AddWithValue ( \"@Name\" , name ); try { command . ExecuteNonQuery (); } catch { //MessageBox.Show(\"An error has occured while trying to insert a new driver into de Database\"); } } } /// /// Searches for a driver and returns its id if it has been found /// /// Name of the driver (non case sensitive) /// private int GetDriverID ( string name ) { string selectQuery = \"SELECT ID FROM Drivers where Name LIKE @driverName\" ; int result = 0 ; using ( var command = new SQLiteCommand ( selectQuery , Connection )) { command . Parameters . AddWithValue ( \"@driverName\" , name ); try { using ( var reader = command . ExecuteReader ()) { while ( reader . Read ()) { result = reader . GetInt32 ( 0 ); } } } catch { //MessageBox.Show(\"There has been an error while trying to retrieve the ID of a Driver from the database\"); } } return result ; } /// /// Gets the sectors from a lapTime. Sectors are subdivisions of a laptime (could be usefull to validate one or the other) /// /// The name of the driver who has done the lap /// The lap at wich the driver has done the time /// A list of the different sectors time in int (ms) public List < int > GetSectorsFromLapTime ( string driverName , int lap ) { int driverId = GetDriverID ( driverName ); string selectQuery = \"SELECT Sector1,Sector2,Sector3 FROM Stats WHERE DriverID = @driverID AND Lap = @lap\" ; List < int > result = new List < int >(); using ( var command = new SQLiteCommand ( selectQuery , Connection )) { command . Parameters . AddWithValue ( \"@driverID\" , driverId ); command . Parameters . AddWithValue ( \"@lap\" , lap ); try { SQLiteDataReader reader = command . ExecuteReader (); while ( reader . Read ()) { result . Add ( reader . GetInt32 ( 0 )); result . Add ( reader . GetInt32 ( 1 )); result . Add ( reader . GetInt32 ( 2 )); } } catch { //MessageBox.Show(\"There has been an error while trying to retrieve the ID of a Driver from the database\"); } } return result ; } /// /// Get the laptime history of a driver /// /// The name of the driver /// The number of lapTimes you want /// A list of tuples with the lap and the laptime. It will only return the amount it found so even if you ask 5 expect getting less or even 0 public List <( int LapTime , int Lap )> GetDriverLaptimes ( string driverName , int numberOfLaptimes ) { int driverId = GetDriverID ( driverName ); List <( int LapTime , int Lap )> lapData = new List <( int LapTime , int Lap )>(); string selectQuery = \"Select LapTime,Lap from Stats WHERE DriverID = @driverID ORDER BY Lap DESC LIMIT @limit\" ; using ( var command = new SQLiteCommand ( selectQuery , Connection )) { command . Parameters . AddWithValue ( \"@driverID\" , driverId ); command . Parameters . AddWithValue ( \"@limit\" , numberOfLaptimes ); try { SQLiteDataReader reader = command . ExecuteReader (); while ( reader . Read ()) { int lapTime = reader . GetInt32 ( 0 ); int lap = reader . GetInt32 ( 1 ); lapData . Add (( lapTime , lap )); } } catch { //MessageBox.Show(\"There has been an error while trying to retrieve the ID of a Driver from the database\"); } } return lapData ; } /// /// Add a pitstop into the db /// /// The name of the driver who made his pitstop /// The lap where he stopped /// The tyre he took out public void AddPitstop ( string driverName , int lap , string tyre ) { string insertQuery = \"INSERT INTO Pitstops (Lap,DriverID,Tyre) VALUES (@Lap,@DriverID,@Tyre)\" ; using ( var command = new SQLiteCommand ( insertQuery , Connection )) { command . Parameters . AddWithValue ( \"@Lap\" , lap ); command . Parameters . AddWithValue ( \"@DriverID\" , GetDriverID ( driverName )); command . Parameters . AddWithValue ( \"@Tyre\" , tyre ); try { command . ExecuteNonQuery (); } catch { //MessageBox.Show(\"An error has occured while trying to insert a new pitstop into the DB\" + Environment.NewLine + \"Request :\"+ command.ToString()); } } } /// /// Adds drivers info into the DB (it should only be once per lap) /// /// The Driver data /// The lap from wich the datas are from public void AddDriverStat ( DriverData data , int lap ) { string insertQuery = \"INSERT INTO Stats (Lap,DriverID,Tyre,LapTime,Sector1,Sector2,Sector3,GapToLeader,Position) VALUES (@Lap,@DriverID,@Tyre,@LapTime,@Sector1,@Sector2,@Sector3,@GapToLeader,@Position);\" ; using ( var command = new SQLiteCommand ( insertQuery , Connection )) { command . Parameters . AddWithValue ( \"@Lap\" , lap ); command . Parameters . AddWithValue ( \"@DriverID\" , GetDriverID ( data . Name )); command . Parameters . AddWithValue ( \"@Tyre\" , data . CurrentTyre . Coumpound . ToString ()); command . Parameters . AddWithValue ( \"@LapTime\" , data . LapTime ); command . Parameters . AddWithValue ( \"@Sector1\" , data . Sector1 ); command . Parameters . AddWithValue ( \"@Sector2\" , data . Sector2 ); command . Parameters . AddWithValue ( \"@Sector3\" , data . Sector3 ); command . Parameters . AddWithValue ( \"@GapToLeader\" , data . GapToLeader ); command . Parameters . AddWithValue ( \"@Position\" , data . Position ); try { command . ExecuteNonQuery (); } catch { //MessageBox.Show(\"An error has occured while trying to insert infos about a driver\"); } } } } }","title":"SqliteStorage.cs"},{"location":"Code/SqliteStorage.html#sqlitestoragecs","text":"/// Author : Maxime Rohmer /// Date : 09/08/2023 /// File : SqliteStorage.cs /// Brief : Class that controls the sqlite database /// Version : Beta 1.0 using System ; using System.Collections.Generic ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; using System.Data.SQLite ; using System.IO ; using System.Windows.Forms ; namespace TrackTrends { public class SqliteStorage { private const string DATABASE_FOLDER = \"./Data\" ; private const string DATABASE_FILE = \"/database.sqlite\" ; private const string CONNECTION_STRING = \"Data Source=\" + DATABASE_FOLDER + DATABASE_FILE + \";Version=3;\" ; private SQLiteConnection Connection ; /// /// Creates a new Sqlite Storage and initialize the database /// public SqliteStorage () { Load (); } /// /// Loads a fresh new Database or create a new one if it does not exist. /// private void Load () { if (! Directory . Exists ( DATABASE_FOLDER )) Directory . CreateDirectory ( DATABASE_FOLDER ); if (! File . Exists ( DATABASE_FOLDER + DATABASE_FILE )) { SQLiteConnection . CreateFile ( DATABASE_FOLDER + DATABASE_FILE ); } else { //We are not using the existing DataBase File . Delete ( DATABASE_FOLDER + DATABASE_FILE ); } Connection = new SQLiteConnection ( CONNECTION_STRING ); Connection . Open (); //Create the drivers table string createDriversTableQuery = @\"CREATE TABLE IF NOT EXISTS Drivers (ID INTEGER PRIMARY KEY AUTOINCREMENT, Name VARCHAR NOT NULL);\" ; using ( var command = new SQLiteCommand ( createDriversTableQuery , Connection )) { command . ExecuteNonQuery (); } //Create the drivers table string createPitstopTableQuery = @\"CREATE TABLE Pitstops (Lap INTEGER NOT NULL, DriverID INTEGER NOT NULL, Tyre VARCHAR, PRIMARY KEY (Lap,DriverID));\" ; using ( var command = new SQLiteCommand ( createPitstopTableQuery , Connection )) { command . ExecuteNonQuery (); } //Create the stats string createStatsTableQuery = @\"CREATE TABLE IF NOT EXISTS Stats (Lap INTEGER NOT NULL, DriverID INTEGER NOT NULL, Tyre VARCHAR NOT NULL, LapTime INTEGER NOT NULL, Sector1 INTEGER NOT NULL, Sector2 INTEGER NOT NULL, Sector3 INTEGER NOT NULL, GapToLeader INTEGER NOT NULL, Position INTEGER NOT NULL, PRIMARY KEY (Lap, DriverID));\" ; using ( var command = new SQLiteCommand ( createStatsTableQuery , Connection )) { command . ExecuteNonQuery (); } } /// /// Adds a driver into the drivers table. Meant to be used at the start of the programm /// /// The name of the driver. (non case sensitive) public void AddDriver ( string name ) { string insertQuery = \"INSERT INTO Drivers (Name) VALUES (@name);\" ; using ( var command = new SQLiteCommand ( insertQuery , Connection )) { command . Parameters . AddWithValue ( \"@Name\" , name ); try { command . ExecuteNonQuery (); } catch { //MessageBox.Show(\"An error has occured while trying to insert a new driver into de Database\"); } } } /// /// Searches for a driver and returns its id if it has been found /// /// Name of the driver (non case sensitive) /// private int GetDriverID ( string name ) { string selectQuery = \"SELECT ID FROM Drivers where Name LIKE @driverName\" ; int result = 0 ; using ( var command = new SQLiteCommand ( selectQuery , Connection )) { command . Parameters . AddWithValue ( \"@driverName\" , name ); try { using ( var reader = command . ExecuteReader ()) { while ( reader . Read ()) { result = reader . GetInt32 ( 0 ); } } } catch { //MessageBox.Show(\"There has been an error while trying to retrieve the ID of a Driver from the database\"); } } return result ; } /// /// Gets the sectors from a lapTime. Sectors are subdivisions of a laptime (could be usefull to validate one or the other) /// /// The name of the driver who has done the lap /// The lap at wich the driver has done the time /// A list of the different sectors time in int (ms) public List < int > GetSectorsFromLapTime ( string driverName , int lap ) { int driverId = GetDriverID ( driverName ); string selectQuery = \"SELECT Sector1,Sector2,Sector3 FROM Stats WHERE DriverID = @driverID AND Lap = @lap\" ; List < int > result = new List < int >(); using ( var command = new SQLiteCommand ( selectQuery , Connection )) { command . Parameters . AddWithValue ( \"@driverID\" , driverId ); command . Parameters . AddWithValue ( \"@lap\" , lap ); try { SQLiteDataReader reader = command . ExecuteReader (); while ( reader . Read ()) { result . Add ( reader . GetInt32 ( 0 )); result . Add ( reader . GetInt32 ( 1 )); result . Add ( reader . GetInt32 ( 2 )); } } catch { //MessageBox.Show(\"There has been an error while trying to retrieve the ID of a Driver from the database\"); } } return result ; } /// /// Get the laptime history of a driver /// /// The name of the driver /// The number of lapTimes you want /// A list of tuples with the lap and the laptime. It will only return the amount it found so even if you ask 5 expect getting less or even 0 public List <( int LapTime , int Lap )> GetDriverLaptimes ( string driverName , int numberOfLaptimes ) { int driverId = GetDriverID ( driverName ); List <( int LapTime , int Lap )> lapData = new List <( int LapTime , int Lap )>(); string selectQuery = \"Select LapTime,Lap from Stats WHERE DriverID = @driverID ORDER BY Lap DESC LIMIT @limit\" ; using ( var command = new SQLiteCommand ( selectQuery , Connection )) { command . Parameters . AddWithValue ( \"@driverID\" , driverId ); command . Parameters . AddWithValue ( \"@limit\" , numberOfLaptimes ); try { SQLiteDataReader reader = command . ExecuteReader (); while ( reader . Read ()) { int lapTime = reader . GetInt32 ( 0 ); int lap = reader . GetInt32 ( 1 ); lapData . Add (( lapTime , lap )); } } catch { //MessageBox.Show(\"There has been an error while trying to retrieve the ID of a Driver from the database\"); } } return lapData ; } /// /// Add a pitstop into the db /// /// The name of the driver who made his pitstop /// The lap where he stopped /// The tyre he took out public void AddPitstop ( string driverName , int lap , string tyre ) { string insertQuery = \"INSERT INTO Pitstops (Lap,DriverID,Tyre) VALUES (@Lap,@DriverID,@Tyre)\" ; using ( var command = new SQLiteCommand ( insertQuery , Connection )) { command . Parameters . AddWithValue ( \"@Lap\" , lap ); command . Parameters . AddWithValue ( \"@DriverID\" , GetDriverID ( driverName )); command . Parameters . AddWithValue ( \"@Tyre\" , tyre ); try { command . ExecuteNonQuery (); } catch { //MessageBox.Show(\"An error has occured while trying to insert a new pitstop into the DB\" + Environment.NewLine + \"Request :\"+ command.ToString()); } } } /// /// Adds drivers info into the DB (it should only be once per lap) /// /// The Driver data /// The lap from wich the datas are from public void AddDriverStat ( DriverData data , int lap ) { string insertQuery = \"INSERT INTO Stats (Lap,DriverID,Tyre,LapTime,Sector1,Sector2,Sector3,GapToLeader,Position) VALUES (@Lap,@DriverID,@Tyre,@LapTime,@Sector1,@Sector2,@Sector3,@GapToLeader,@Position);\" ; using ( var command = new SQLiteCommand ( insertQuery , Connection )) { command . Parameters . AddWithValue ( \"@Lap\" , lap ); command . Parameters . AddWithValue ( \"@DriverID\" , GetDriverID ( data . Name )); command . Parameters . AddWithValue ( \"@Tyre\" , data . CurrentTyre . Coumpound . ToString ()); command . Parameters . AddWithValue ( \"@LapTime\" , data . LapTime ); command . Parameters . AddWithValue ( \"@Sector1\" , data . Sector1 ); command . Parameters . AddWithValue ( \"@Sector2\" , data . Sector2 ); command . Parameters . AddWithValue ( \"@Sector3\" , data . Sector3 ); command . Parameters . AddWithValue ( \"@GapToLeader\" , data . GapToLeader ); command . Parameters . AddWithValue ( \"@Position\" , data . Position ); try { command . ExecuteNonQuery (); } catch { //MessageBox.Show(\"An error has occured while trying to insert infos about a driver\"); } } } } }","title":"SqliteStorage.cs"},{"location":"Code/Zone.html","text":"Zone.cs /// Author : Maxime Rohmer /// Date : 09/06/2023 /// File : Zone.cs /// Brief : Class that contains all the methods and infos for a zone. This is designed to be potentially be inherited. /// Version : Beta 1.0 using System ; using System.Collections.Generic ; using System.Drawing ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; namespace TrackTrends { public class Zone { private Rectangle _bounds ; private List < Zone > _zones ; private List < Window > _windows ; private Bitmap _image ; private string _name ; public Bitmap ZoneImage { get { //This little trickery lets you have the image that the zone sees Bitmap sample = new Bitmap ( Bounds . Width , Bounds . Height ); Graphics g = Graphics . FromImage ( sample ); g . DrawImage ( Image , new Rectangle ( 0 , 0 , sample . Width , sample . Height ), Bounds , GraphicsUnit . Pixel ); return sample ; } } public Bitmap Image { get { return _image ; } set { //It automatically sets the image for the contained windows and zones _image = value ; foreach ( Window w in Windows ) { w . Image = ZoneImage ; } foreach ( Zone z in Zones ) { z . Image = Image ; } } } public Rectangle Bounds { get => _bounds ; protected set => _bounds = value ; } public List < Zone > Zones { get => _zones ; protected set => _zones = value ; } public List < Window > Windows { get => _windows ; protected set => _windows = value ; } public string Name { get => _name ; protected set => _name = value ; } /// /// Creates a new Zone /// /// Image of the parent zone /// The position and size of the zone /// THe name of the zone (usefull for the JSON formatting) public Zone ( Bitmap image , Rectangle bounds , string name ) { Windows = new List < Window >(); Zones = new List < Zone >(); Name = name ; //You cant set the image in the CTOR because the processing is impossible at first initiation _image = image ; Bounds = bounds ; } /// /// Adds a zone to the list of zones /// /// The zone you want to add public virtual void AddZone ( Zone zone ) { Zones . Add ( zone ); } /// /// Add a window to the list of windows /// /// the window you want to add public virtual void AddWindow ( Window window ) { Windows . Add ( window ); } /// /// Calls all the windows to do OCR and to give back the results so we can send them to the model /// /// A list of all the driver in the race to help with text recognition /// A driver data object that contains all the infos about a driver public virtual DriverData Decode ( List < string > driverList ) { int sectorCount = 0 ; DriverData result = new DriverData (); foreach ( Window w in Windows ) { // A switch would be prettier but I dont think its supported in this C# version if ( w is DriverNameWindow ) result . Name = ( string )( w as DriverNameWindow ). DecodePng ( driverList ); if ( w is DriverDrsWindow ) result . DRS = ( bool )( w as DriverDrsWindow ). DecodePng (); if ( w is DriverGapToLeaderWindow ) result . GapToLeader = ( int )( w as DriverGapToLeaderWindow ). DecodePng (); if ( w is DriverLapTimeWindow ) result . LapTime = ( int )( w as DriverLapTimeWindow ). DecodePng (); if ( w is DriverPositionWindow ) result . Position = ( int )( w as DriverPositionWindow ). DecodePng (); if ( w is DriverSectorWindow ) { sectorCount ++; if ( sectorCount == 1 ) result . Sector1 = ( int )( w as DriverSectorWindow ). DecodePng (); if ( sectorCount == 2 ) result . Sector2 = ( int )( w as DriverSectorWindow ). DecodePng (); if ( sectorCount == 3 ) result . Sector3 = ( int )( w as DriverSectorWindow ). DecodePng (); } if ( w is DriverTyresWindow ) result . CurrentTyre = ( Tyre )( w as DriverTyresWindow ). DecodePng (); } return result ; } public virtual Bitmap Draw () { Bitmap img ; //If its the main zone we want to see everything if ( Zones . Count > 0 ) { img = Image ; } else { img = ZoneImage ; } Graphics g = Graphics . FromImage ( img ); //If its the main zone we need to visualize the Zone bounds displayed if ( Zones . Count > 0 ) g . DrawRectangle ( new Pen ( new SolidBrush ( Color . FromArgb ( 249 , 194 , 46 )), 5 ), Bounds ); foreach ( Zone z in Zones ) { Rectangle newBounds = new Rectangle ( z . Bounds . X , z . Bounds . Y + Bounds . Y , z . Bounds . Width , z . Bounds . Height ); g . DrawRectangle ( new Pen ( new SolidBrush ( Color . FromArgb ( 249 , 194 , 46 )), 5 ), newBounds ); } foreach ( Window w in Windows ) { g . DrawRectangle ( new Pen ( new SolidBrush ( Color . FromArgb ( 252 , 252 , 252 )), 5 ), w . Bounds ); } return img ; } public void ResetZones () { Zones . Clear (); } public void ResetWindows () { foreach ( Zone z in Zones ) { z . ResetWindows (); } Windows . Clear (); } /// /// Checks if the given Rectangle fits in the current zone /// /// The Rectangle you want to check the fittment /// protected bool Fits ( Rectangle inputRectangle ) { if ( inputRectangle . X + inputRectangle . Width > Bounds . Width || inputRectangle . Y + inputRectangle . Height > Bounds . Height || inputRectangle . X < 0 || inputRectangle . Y < 0 ) { return false ; } else { return true ; } } } }","title":"Zone.cs"},{"location":"Code/Zone.html#zonecs","text":"/// Author : Maxime Rohmer /// Date : 09/06/2023 /// File : Zone.cs /// Brief : Class that contains all the methods and infos for a zone. This is designed to be potentially be inherited. /// Version : Beta 1.0 using System ; using System.Collections.Generic ; using System.Drawing ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; namespace TrackTrends { public class Zone { private Rectangle _bounds ; private List < Zone > _zones ; private List < Window > _windows ; private Bitmap _image ; private string _name ; public Bitmap ZoneImage { get { //This little trickery lets you have the image that the zone sees Bitmap sample = new Bitmap ( Bounds . Width , Bounds . Height ); Graphics g = Graphics . FromImage ( sample ); g . DrawImage ( Image , new Rectangle ( 0 , 0 , sample . Width , sample . Height ), Bounds , GraphicsUnit . Pixel ); return sample ; } } public Bitmap Image { get { return _image ; } set { //It automatically sets the image for the contained windows and zones _image = value ; foreach ( Window w in Windows ) { w . Image = ZoneImage ; } foreach ( Zone z in Zones ) { z . Image = Image ; } } } public Rectangle Bounds { get => _bounds ; protected set => _bounds = value ; } public List < Zone > Zones { get => _zones ; protected set => _zones = value ; } public List < Window > Windows { get => _windows ; protected set => _windows = value ; } public string Name { get => _name ; protected set => _name = value ; } /// /// Creates a new Zone /// /// Image of the parent zone /// The position and size of the zone /// THe name of the zone (usefull for the JSON formatting) public Zone ( Bitmap image , Rectangle bounds , string name ) { Windows = new List < Window >(); Zones = new List < Zone >(); Name = name ; //You cant set the image in the CTOR because the processing is impossible at first initiation _image = image ; Bounds = bounds ; } /// /// Adds a zone to the list of zones /// /// The zone you want to add public virtual void AddZone ( Zone zone ) { Zones . Add ( zone ); } /// /// Add a window to the list of windows /// /// the window you want to add public virtual void AddWindow ( Window window ) { Windows . Add ( window ); } /// /// Calls all the windows to do OCR and to give back the results so we can send them to the model /// /// A list of all the driver in the race to help with text recognition /// A driver data object that contains all the infos about a driver public virtual DriverData Decode ( List < string > driverList ) { int sectorCount = 0 ; DriverData result = new DriverData (); foreach ( Window w in Windows ) { // A switch would be prettier but I dont think its supported in this C# version if ( w is DriverNameWindow ) result . Name = ( string )( w as DriverNameWindow ). DecodePng ( driverList ); if ( w is DriverDrsWindow ) result . DRS = ( bool )( w as DriverDrsWindow ). DecodePng (); if ( w is DriverGapToLeaderWindow ) result . GapToLeader = ( int )( w as DriverGapToLeaderWindow ). DecodePng (); if ( w is DriverLapTimeWindow ) result . LapTime = ( int )( w as DriverLapTimeWindow ). DecodePng (); if ( w is DriverPositionWindow ) result . Position = ( int )( w as DriverPositionWindow ). DecodePng (); if ( w is DriverSectorWindow ) { sectorCount ++; if ( sectorCount == 1 ) result . Sector1 = ( int )( w as DriverSectorWindow ). DecodePng (); if ( sectorCount == 2 ) result . Sector2 = ( int )( w as DriverSectorWindow ). DecodePng (); if ( sectorCount == 3 ) result . Sector3 = ( int )( w as DriverSectorWindow ). DecodePng (); } if ( w is DriverTyresWindow ) result . CurrentTyre = ( Tyre )( w as DriverTyresWindow ). DecodePng (); } return result ; } public virtual Bitmap Draw () { Bitmap img ; //If its the main zone we want to see everything if ( Zones . Count > 0 ) { img = Image ; } else { img = ZoneImage ; } Graphics g = Graphics . FromImage ( img ); //If its the main zone we need to visualize the Zone bounds displayed if ( Zones . Count > 0 ) g . DrawRectangle ( new Pen ( new SolidBrush ( Color . FromArgb ( 249 , 194 , 46 )), 5 ), Bounds ); foreach ( Zone z in Zones ) { Rectangle newBounds = new Rectangle ( z . Bounds . X , z . Bounds . Y + Bounds . Y , z . Bounds . Width , z . Bounds . Height ); g . DrawRectangle ( new Pen ( new SolidBrush ( Color . FromArgb ( 249 , 194 , 46 )), 5 ), newBounds ); } foreach ( Window w in Windows ) { g . DrawRectangle ( new Pen ( new SolidBrush ( Color . FromArgb ( 252 , 252 , 252 )), 5 ), w . Bounds ); } return img ; } public void ResetZones () { Zones . Clear (); } public void ResetWindows () { foreach ( Zone z in Zones ) { z . ResetWindows (); } Windows . Clear (); } /// /// Checks if the given Rectangle fits in the current zone /// /// The Rectangle you want to check the fittment /// protected bool Fits ( Rectangle inputRectangle ) { if ( inputRectangle . X + inputRectangle . Width > Bounds . Width || inputRectangle . Y + inputRectangle . Height > Bounds . Height || inputRectangle . X < 0 || inputRectangle . Y < 0 ) { return false ; } else { return true ; } } } }","title":"Zone.cs"},{"location":"Code/DataWrapper.html","text":"DataWrapper.cs /// Author : Maxime Rohmer /// Date : 09/06/2023 /// File : DataWrapper.cs /// Brief : Class that is used to interface between the main Form (vue) and the Storage (wich is a class that wraps the sqlite database, so the model) its almost MVC :D /// Version : Beta 1.0 using System ; using System.Collections.Generic ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; using System.Windows.Forms ; using System.Drawing ; namespace TrackTrends { internal class DataWrapper { private Reader Reader ; private SqliteStorage Storage ; List < List < DriverData >> LiveDriverDataLogs = new List < List < DriverData >>(); //Note : It could be usefull to get the mainForm at the start of the programm and not have to take it in half of the methods. /// /// Constructs a new DataWrapper. It needs the config file so it can create a Reader, It also needs a first screenshot for the same reason /// /// The JSON config file that is created by the configuration tool /// A screenshot of the public DataWrapper ( string configFile , Bitmap screenshot ) { Reader = new Reader ( configFile , screenshot , true ); //The Storage is here and on the Reader. It seems bad but it is ok as we dont use it at all to insert data and are only using it here to read some. The reader takes care of the inserts (Note: We could technically do both here but I did not find it usefull to transfer everything here) Storage = Reader . Storage ; } /// /// Refreshes the controller so it has the latest driver datas (Be sure to call it everytime you need to use any other method and expects the data to be up to date) /// /// Error code, 0 is success, 1 is not (Note: Maybe it could be interesting in the future to add some more error handling here) public int Refresh () { LiveDriverDataLogs . Add ( Reader . Decode ( Reader . MainZones , Reader . Drivers )); if ( LiveDriverDataLogs . Count > 0 ) return 0 ; return 1 ; } /// /// Changes the image to the newest screenshot in all of the zones and windows /// /// The new screenshot to put everywhere (Do not mix resolutions) public void ChangeImage ( Bitmap image ) { Reader . ChangeImage ( image ); } /// /// Gets all the data from one driver and also displays into the given panel the last five laps (or less if its the sart of the race) Note: Its responsive :D /// /// The name of the driver (should not be case sensitive but it MUST already exist in the first list that has been inserted into the DB) /// The pannel where you want the five last laps to be displayed /// The Main form. /// public DriverData GetFullDriverData ( string driverName , Panel lastFiveLapsPanel , Main form1 ) { //Note : I know that its a bad idea to ask the Form in this method and some others because it means that it wont work with any main form. And to that Ill say that... your right ! DriverData result = new DriverData (); if ( LiveDriverDataLogs . Count > 0 ) { //Searches the most recent live data from the given driverName foreach ( DriverData data in LiveDriverDataLogs [ LiveDriverDataLogs . Count - 1 ]) { if ( data . Name == driverName ) result = data ; } if ( result . Name != \"\" ) { //Recovers and displays the last five laps from the driver lastFiveLapsPanel . Controls . Clear (); Size labelDimensions = new Size ( lastFiveLapsPanel . Width , lastFiveLapsPanel . Height / 5 ); List <( int LapTime , int Lap )> lapsInfos = Storage . GetDriverLaptimes ( driverName , 5 ); int id = 0 ; foreach (( int LapTime , int Lap ) lapData in lapsInfos ) { //Hardcodes the new button. //Note : It could be smart to have like a default button for all the methods to use without needing to rewrite everything. Button newButton = new Button (); lastFiveLapsPanel . Controls . Add ( newButton ); newButton . Name = driverName + \"_\" + lapData . Lap ; newButton . Text = Reader . ConvertMsToTime ( lapData . LapTime ); newButton . Size = labelDimensions ; newButton . FlatStyle = FlatStyle . Popup ; newButton . Click += form1 . btnLapTime_Click ; newButton . Location = new Point ( 0 , id * newButton . Height ); id ++; } } } return result ; } /// /// Runs trough every drivers live data to recover the drivers that are close to each others /// /// The control that will host the displayed battles /// The main form. It needs to have a method called 'btnDriver_Click' so it can reads the buttons clicks public void DisplayBattles ( Panel pnlBattles , Main form1 ) { DriverData oldDriver = null ; List <( DriverData d1 , DriverData d2 , int gap )> battles = new List <( DriverData d1 , DriverData d2 , int gap )>(); //Search trough all the drivers and finds the one battling foreach ( DriverData driver in LiveDriverDataLogs [ LiveDriverDataLogs . Count - 1 ]) { if ( oldDriver != null && driver . Position != - 1 && oldDriver . Position != - 1 ) { if ( driver . GapToLeader < oldDriver . GapToLeader ) { //There is a problem with the drivers gaps } else { int gap = driver . GapToLeader - oldDriver . GapToLeader ; //3000ms is 3s. If drivers are that close then they are definitely in battle. If they are farther then maybe not if ( gap <= 3000 ) { battles . Add (( oldDriver , driver , gap )); } } oldDriver = driver ; } else { oldDriver = driver ; } } //We will only display 4 battles max int maxBattles = 4 ; if ( battles . Count > 0 ) { pnlBattles . Controls . Clear (); int maxUiHeight = Math . Max ( pnlBattles . Height / maxBattles , pnlBattles . Height / battles . Count ); int id = 0 ; foreach (( DriverData d1 , DriverData d2 , int gap ) battle in battles ) { if ( id < maxBattles ) { //*hardcoding* the different controls that needs to be added to the panel. //Note : this stuff could totally be handled by the Form with method returning a list of the drivers. It was just easier for me at the time to code it this way but its not the prettiest Button btnFirstDriver = new Button (); Button btnSecondDriver = new Button (); Label lblGap = new Label (); pnlBattles . Controls . Add ( btnFirstDriver ); pnlBattles . Controls . Add ( lblGap ); pnlBattles . Controls . Add ( btnSecondDriver ); btnFirstDriver . Anchor = AnchorStyles . Left | AnchorStyles . Top ; btnSecondDriver . Anchor = AnchorStyles . Right | AnchorStyles . Top ; lblGap . Anchor = AnchorStyles . Right | AnchorStyles . Left | AnchorStyles . Top ; lblGap . TextAlign = ContentAlignment . MiddleCenter ; lblGap . Font = new Font ( lblGap . Font . FontFamily , 15 ); btnFirstDriver . Click += form1 . btnDriver_Click ; btnSecondDriver . Click += form1 . btnDriver_Click ; btnFirstDriver . FlatStyle = FlatStyle . Popup ; btnSecondDriver . FlatStyle = FlatStyle . Popup ; lblGap . FlatStyle = FlatStyle . Popup ; btnFirstDriver . Size = new Size ( pnlBattles . Width / 3 , maxUiHeight ); btnSecondDriver . Size = new Size ( pnlBattles . Width / 3 , maxUiHeight ); lblGap . Size = new Size ( pnlBattles . Width / 3 , maxUiHeight ); btnFirstDriver . Location = new Point ( pnlBattles . Width / 3 * 0 , id * maxUiHeight ); lblGap . Location = new Point ( pnlBattles . Width / 3 * 1 , id * maxUiHeight ); btnSecondDriver . Location = new Point ( pnlBattles . Width / 3 * 2 , id * maxUiHeight ); btnFirstDriver . Text = battle . d1 . Name ; lblGap . Text = \"+ \" + Reader . ConvertMsToTime ( battle . gap ); if ( battle . gap <= 2000 ) lblGap . ForeColor = Color . Yellow ; if ( battle . gap <= 1000 ) lblGap . ForeColor = Color . Green ; btnSecondDriver . Text = battle . d2 . Name ; btnFirstDriver . Name = battle . d1 . Name + \"_\" + id ; lblGap . Name = \"lbl_Gap_\" + id ; btnSecondDriver . Name = battle . d2 . Name + \"_\" + id ; } else { break ; } id ++; } } } /// /// Searches the fastest and slowests drivers and displays them in the given panels /// /// Panel that will contain the constructed controls /// Panel that will contain the constructed controls /// The main form that needs to implement the method btnDriver_Click to allow it to recover custom buttons click public void DisplayTimesDeltas ( Panel pnlFastest , Panel pnlSlowest , Main form1 ) { List <( int avg , string driverName )> averages = new List <( int avg , string driverName )>(); foreach ( DriverData driver in LiveDriverDataLogs [ LiveDriverDataLogs . Count - 1 ]) { //We want to recover the last 5 lap times List <( int lapTime , int lap )> laps = Storage . GetDriverLaptimes ( driver . Name , 5 ); if ( laps . Count > 0 ) { int avg = 0 ; foreach (( int lapTime , int lap ) lap in laps ) { avg += lap . lapTime ; } avg = avg / laps . Count ; averages . Add (( avg , driver . Name )); } } int numberOfDriversToShow = 5 ; if ( averages . Count > 0 && averages . Count > numberOfDriversToShow ) { averages = averages . OrderBy ( item => item . avg ). ToList (); pnlFastest . Controls . Clear (); pnlSlowest . Controls . Clear (); int maxUiSize = pnlFastest . Height / numberOfDriversToShow ; //Displays the fastest drivers for ( int i = 0 ; i < numberOfDriversToShow ; i ++) { Button newButton = new Button (); ( int avg , string driver ) data = averages [ i ]; pnlFastest . Controls . Add ( newButton ); newButton . Size = new Size ( pnlFastest . Width , maxUiSize ); newButton . Location = new Point ( 0 , i * maxUiSize ); newButton . Text = data . driver ; newButton . FlatStyle = FlatStyle . Popup ; newButton . Name = data . driver + \"_fastest_\" + i ; newButton . Click += form1 . btnDriver_Click ; //We take the average time lost per lap if ( i != 0 ) newButton . Text += \" + \" + Reader . ConvertMsToTime ( Convert . ToInt32 ((( float ) data . avg - ( float ) averages [ 0 ]. avg ) / 5.0f )); } //Displays the slowests drivers int badId = 0 ; for ( int i = averages . Count - 1 ; i >= averages . Count - numberOfDriversToShow ; i --) { Button newButton = new Button (); ( int avg , string driver ) data = averages [ i ]; pnlSlowest . Controls . Add ( newButton ); newButton . Size = new Size ( pnlFastest . Width , maxUiSize ); newButton . Location = new Point ( 0 , badId * maxUiSize ); newButton . Text = data . driver ; newButton . FlatStyle = FlatStyle . Popup ; newButton . Name = data . driver + \"_slowest_\" + i ; newButton . Click += form1 . btnDriver_Click ; //We take the average time lost per lap newButton . Text += \" + \" + Reader . ConvertMsToTime ( Convert . ToInt32 ((( float ) data . avg - ( float ) averages [ 0 ]. avg ) / 5.0f )); badId ++; } } } /// /// Will add to the list of overtakes the different changes of position /// /// The listbox containing all the infos public void DisplayOvertakes ( ListBox lsbResult ) { //Note : This method SHOULD REALLY not do this but just return a string or a list of string with the new overtakes so the form can handle it as it wishes if ( LiveDriverDataLogs . Count > 1 ) { List < DriverData > oldList = LiveDriverDataLogs [ LiveDriverDataLogs . Count - 2 ]; List < DriverData > newList = LiveDriverDataLogs [ LiveDriverDataLogs . Count - 1 ]; for ( int i = 0 ; i < LiveDriverDataLogs [ LiveDriverDataLogs . Count - 1 ]. Count ; i ++) { if ( oldList [ i ]. Name != newList [ i ]. Name ) { //There has been a change in the standings for ( int y = 0 ; y < oldList . Count ; y ++) { if ( newList [ y ]. Name == oldList [ i ]. Name ) { //We found its new location if ( y > i ) { //The driver overtook someone lsbResult . Items . Add ( newList [ y ]. Name + \" climbed to \" + y ); } else { //The driver got overtook by someone lsbResult . Items . Add ( newList [ y ]. Name + \" fell to \" + y ); } } } } } } } /// /// Displays a messageBox containing the infos about a lap time /// /// The name of the driver that has done the lapTime /// The number of the lap on wich the lapTime has been set (CAUTION ITS NOT THE RACING LAP ITS FROM THE DB) /// The time (in ms) of the lap public void DisplayLapTimeInfos ( string driverName , int Lap , string LapTime ) { List < int > sectors = Storage . GetSectorsFromLapTime ( driverName , Lap ); string message = \"Lap time infos\" + Environment . NewLine ; message += LapTime + Environment . NewLine ; if ( sectors . Count > 0 ) message += \"Sector 1 : \" + Reader . ConvertMsToTime ( sectors [ 0 ]) + Environment . NewLine ; if ( sectors . Count > 1 ) message += \"Sector 2 : \" + Reader . ConvertMsToTime ( sectors [ 1 ]) + Environment . NewLine ; if ( sectors . Count > 2 ) message += \"Sector 3 : \" + Reader . ConvertMsToTime ( sectors [ 2 ]) + Environment . NewLine ; MessageBox . Show ( message ); } /// /// Displays the live ranking with the names of the drivers and their gap to the leader in the right order /// /// The control that will host all the new controls /// The main form public void DisplayLiveRanking ( Panel pnl , Main form1 ) { if ( LiveDriverDataLogs . Count > 0 ) { pnl . Controls . Clear (); //Gets the last item that should be the most recent data List < DriverData > liveData = LiveDriverDataLogs [ LiveDriverDataLogs . Count - 1 ]; Button [] buttons = new Button [ liveData . Count ]; Size buttonDimensions = new Size ( pnl . Width , pnl . Height / liveData . Count ); for ( int driverCount = 0 ; driverCount < liveData . Count ; driverCount ++) { Button newButton = new Button (); newButton . Size = buttonDimensions ; newButton . Location = new Point ( 0 , driverCount * buttonDimensions . Height ); newButton . FlatStyle = FlatStyle . Popup ; DriverData driver = liveData [ driverCount ]; if ( driver . Position == - 1 ) { //Its a DNF newButton . Enabled = false ; } if ( driver . Position > 1 ) { newButton . Text = driver . Name + \" +\" + Reader . ConvertMsToTime ( driver . GapToLeader ); } else { newButton . Text = driver . Name ; } newButton . Name = liveData [ driverCount ]. Name ; newButton . TextAlign = ContentAlignment . MiddleLeft ; newButton . FlatStyle = FlatStyle . Popup ; newButton . Click += form1 . btnDriver_Click ; buttons [ driverCount ] = newButton ; } //Note : It could be better to have this directly in the same loop foreach ( Button button in buttons ) { pnl . Controls . Add ( button ); } } } } }","title":"DataWrapper.cs"},{"location":"Code/DataWrapper.html#datawrappercs","text":"/// Author : Maxime Rohmer /// Date : 09/06/2023 /// File : DataWrapper.cs /// Brief : Class that is used to interface between the main Form (vue) and the Storage (wich is a class that wraps the sqlite database, so the model) its almost MVC :D /// Version : Beta 1.0 using System ; using System.Collections.Generic ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; using System.Windows.Forms ; using System.Drawing ; namespace TrackTrends { internal class DataWrapper { private Reader Reader ; private SqliteStorage Storage ; List < List < DriverData >> LiveDriverDataLogs = new List < List < DriverData >>(); //Note : It could be usefull to get the mainForm at the start of the programm and not have to take it in half of the methods. /// /// Constructs a new DataWrapper. It needs the config file so it can create a Reader, It also needs a first screenshot for the same reason /// /// The JSON config file that is created by the configuration tool /// A screenshot of the public DataWrapper ( string configFile , Bitmap screenshot ) { Reader = new Reader ( configFile , screenshot , true ); //The Storage is here and on the Reader. It seems bad but it is ok as we dont use it at all to insert data and are only using it here to read some. The reader takes care of the inserts (Note: We could technically do both here but I did not find it usefull to transfer everything here) Storage = Reader . Storage ; } /// /// Refreshes the controller so it has the latest driver datas (Be sure to call it everytime you need to use any other method and expects the data to be up to date) /// /// Error code, 0 is success, 1 is not (Note: Maybe it could be interesting in the future to add some more error handling here) public int Refresh () { LiveDriverDataLogs . Add ( Reader . Decode ( Reader . MainZones , Reader . Drivers )); if ( LiveDriverDataLogs . Count > 0 ) return 0 ; return 1 ; } /// /// Changes the image to the newest screenshot in all of the zones and windows /// /// The new screenshot to put everywhere (Do not mix resolutions) public void ChangeImage ( Bitmap image ) { Reader . ChangeImage ( image ); } /// /// Gets all the data from one driver and also displays into the given panel the last five laps (or less if its the sart of the race) Note: Its responsive :D /// /// The name of the driver (should not be case sensitive but it MUST already exist in the first list that has been inserted into the DB) /// The pannel where you want the five last laps to be displayed /// The Main form. /// public DriverData GetFullDriverData ( string driverName , Panel lastFiveLapsPanel , Main form1 ) { //Note : I know that its a bad idea to ask the Form in this method and some others because it means that it wont work with any main form. And to that Ill say that... your right ! DriverData result = new DriverData (); if ( LiveDriverDataLogs . Count > 0 ) { //Searches the most recent live data from the given driverName foreach ( DriverData data in LiveDriverDataLogs [ LiveDriverDataLogs . Count - 1 ]) { if ( data . Name == driverName ) result = data ; } if ( result . Name != \"\" ) { //Recovers and displays the last five laps from the driver lastFiveLapsPanel . Controls . Clear (); Size labelDimensions = new Size ( lastFiveLapsPanel . Width , lastFiveLapsPanel . Height / 5 ); List <( int LapTime , int Lap )> lapsInfos = Storage . GetDriverLaptimes ( driverName , 5 ); int id = 0 ; foreach (( int LapTime , int Lap ) lapData in lapsInfos ) { //Hardcodes the new button. //Note : It could be smart to have like a default button for all the methods to use without needing to rewrite everything. Button newButton = new Button (); lastFiveLapsPanel . Controls . Add ( newButton ); newButton . Name = driverName + \"_\" + lapData . Lap ; newButton . Text = Reader . ConvertMsToTime ( lapData . LapTime ); newButton . Size = labelDimensions ; newButton . FlatStyle = FlatStyle . Popup ; newButton . Click += form1 . btnLapTime_Click ; newButton . Location = new Point ( 0 , id * newButton . Height ); id ++; } } } return result ; } /// /// Runs trough every drivers live data to recover the drivers that are close to each others /// /// The control that will host the displayed battles /// The main form. It needs to have a method called 'btnDriver_Click' so it can reads the buttons clicks public void DisplayBattles ( Panel pnlBattles , Main form1 ) { DriverData oldDriver = null ; List <( DriverData d1 , DriverData d2 , int gap )> battles = new List <( DriverData d1 , DriverData d2 , int gap )>(); //Search trough all the drivers and finds the one battling foreach ( DriverData driver in LiveDriverDataLogs [ LiveDriverDataLogs . Count - 1 ]) { if ( oldDriver != null && driver . Position != - 1 && oldDriver . Position != - 1 ) { if ( driver . GapToLeader < oldDriver . GapToLeader ) { //There is a problem with the drivers gaps } else { int gap = driver . GapToLeader - oldDriver . GapToLeader ; //3000ms is 3s. If drivers are that close then they are definitely in battle. If they are farther then maybe not if ( gap <= 3000 ) { battles . Add (( oldDriver , driver , gap )); } } oldDriver = driver ; } else { oldDriver = driver ; } } //We will only display 4 battles max int maxBattles = 4 ; if ( battles . Count > 0 ) { pnlBattles . Controls . Clear (); int maxUiHeight = Math . Max ( pnlBattles . Height / maxBattles , pnlBattles . Height / battles . Count ); int id = 0 ; foreach (( DriverData d1 , DriverData d2 , int gap ) battle in battles ) { if ( id < maxBattles ) { //*hardcoding* the different controls that needs to be added to the panel. //Note : this stuff could totally be handled by the Form with method returning a list of the drivers. It was just easier for me at the time to code it this way but its not the prettiest Button btnFirstDriver = new Button (); Button btnSecondDriver = new Button (); Label lblGap = new Label (); pnlBattles . Controls . Add ( btnFirstDriver ); pnlBattles . Controls . Add ( lblGap ); pnlBattles . Controls . Add ( btnSecondDriver ); btnFirstDriver . Anchor = AnchorStyles . Left | AnchorStyles . Top ; btnSecondDriver . Anchor = AnchorStyles . Right | AnchorStyles . Top ; lblGap . Anchor = AnchorStyles . Right | AnchorStyles . Left | AnchorStyles . Top ; lblGap . TextAlign = ContentAlignment . MiddleCenter ; lblGap . Font = new Font ( lblGap . Font . FontFamily , 15 ); btnFirstDriver . Click += form1 . btnDriver_Click ; btnSecondDriver . Click += form1 . btnDriver_Click ; btnFirstDriver . FlatStyle = FlatStyle . Popup ; btnSecondDriver . FlatStyle = FlatStyle . Popup ; lblGap . FlatStyle = FlatStyle . Popup ; btnFirstDriver . Size = new Size ( pnlBattles . Width / 3 , maxUiHeight ); btnSecondDriver . Size = new Size ( pnlBattles . Width / 3 , maxUiHeight ); lblGap . Size = new Size ( pnlBattles . Width / 3 , maxUiHeight ); btnFirstDriver . Location = new Point ( pnlBattles . Width / 3 * 0 , id * maxUiHeight ); lblGap . Location = new Point ( pnlBattles . Width / 3 * 1 , id * maxUiHeight ); btnSecondDriver . Location = new Point ( pnlBattles . Width / 3 * 2 , id * maxUiHeight ); btnFirstDriver . Text = battle . d1 . Name ; lblGap . Text = \"+ \" + Reader . ConvertMsToTime ( battle . gap ); if ( battle . gap <= 2000 ) lblGap . ForeColor = Color . Yellow ; if ( battle . gap <= 1000 ) lblGap . ForeColor = Color . Green ; btnSecondDriver . Text = battle . d2 . Name ; btnFirstDriver . Name = battle . d1 . Name + \"_\" + id ; lblGap . Name = \"lbl_Gap_\" + id ; btnSecondDriver . Name = battle . d2 . Name + \"_\" + id ; } else { break ; } id ++; } } } /// /// Searches the fastest and slowests drivers and displays them in the given panels /// /// Panel that will contain the constructed controls /// Panel that will contain the constructed controls /// The main form that needs to implement the method btnDriver_Click to allow it to recover custom buttons click public void DisplayTimesDeltas ( Panel pnlFastest , Panel pnlSlowest , Main form1 ) { List <( int avg , string driverName )> averages = new List <( int avg , string driverName )>(); foreach ( DriverData driver in LiveDriverDataLogs [ LiveDriverDataLogs . Count - 1 ]) { //We want to recover the last 5 lap times List <( int lapTime , int lap )> laps = Storage . GetDriverLaptimes ( driver . Name , 5 ); if ( laps . Count > 0 ) { int avg = 0 ; foreach (( int lapTime , int lap ) lap in laps ) { avg += lap . lapTime ; } avg = avg / laps . Count ; averages . Add (( avg , driver . Name )); } } int numberOfDriversToShow = 5 ; if ( averages . Count > 0 && averages . Count > numberOfDriversToShow ) { averages = averages . OrderBy ( item => item . avg ). ToList (); pnlFastest . Controls . Clear (); pnlSlowest . Controls . Clear (); int maxUiSize = pnlFastest . Height / numberOfDriversToShow ; //Displays the fastest drivers for ( int i = 0 ; i < numberOfDriversToShow ; i ++) { Button newButton = new Button (); ( int avg , string driver ) data = averages [ i ]; pnlFastest . Controls . Add ( newButton ); newButton . Size = new Size ( pnlFastest . Width , maxUiSize ); newButton . Location = new Point ( 0 , i * maxUiSize ); newButton . Text = data . driver ; newButton . FlatStyle = FlatStyle . Popup ; newButton . Name = data . driver + \"_fastest_\" + i ; newButton . Click += form1 . btnDriver_Click ; //We take the average time lost per lap if ( i != 0 ) newButton . Text += \" + \" + Reader . ConvertMsToTime ( Convert . ToInt32 ((( float ) data . avg - ( float ) averages [ 0 ]. avg ) / 5.0f )); } //Displays the slowests drivers int badId = 0 ; for ( int i = averages . Count - 1 ; i >= averages . Count - numberOfDriversToShow ; i --) { Button newButton = new Button (); ( int avg , string driver ) data = averages [ i ]; pnlSlowest . Controls . Add ( newButton ); newButton . Size = new Size ( pnlFastest . Width , maxUiSize ); newButton . Location = new Point ( 0 , badId * maxUiSize ); newButton . Text = data . driver ; newButton . FlatStyle = FlatStyle . Popup ; newButton . Name = data . driver + \"_slowest_\" + i ; newButton . Click += form1 . btnDriver_Click ; //We take the average time lost per lap newButton . Text += \" + \" + Reader . ConvertMsToTime ( Convert . ToInt32 ((( float ) data . avg - ( float ) averages [ 0 ]. avg ) / 5.0f )); badId ++; } } } /// /// Will add to the list of overtakes the different changes of position /// /// The listbox containing all the infos public void DisplayOvertakes ( ListBox lsbResult ) { //Note : This method SHOULD REALLY not do this but just return a string or a list of string with the new overtakes so the form can handle it as it wishes if ( LiveDriverDataLogs . Count > 1 ) { List < DriverData > oldList = LiveDriverDataLogs [ LiveDriverDataLogs . Count - 2 ]; List < DriverData > newList = LiveDriverDataLogs [ LiveDriverDataLogs . Count - 1 ]; for ( int i = 0 ; i < LiveDriverDataLogs [ LiveDriverDataLogs . Count - 1 ]. Count ; i ++) { if ( oldList [ i ]. Name != newList [ i ]. Name ) { //There has been a change in the standings for ( int y = 0 ; y < oldList . Count ; y ++) { if ( newList [ y ]. Name == oldList [ i ]. Name ) { //We found its new location if ( y > i ) { //The driver overtook someone lsbResult . Items . Add ( newList [ y ]. Name + \" climbed to \" + y ); } else { //The driver got overtook by someone lsbResult . Items . Add ( newList [ y ]. Name + \" fell to \" + y ); } } } } } } } /// /// Displays a messageBox containing the infos about a lap time /// /// The name of the driver that has done the lapTime /// The number of the lap on wich the lapTime has been set (CAUTION ITS NOT THE RACING LAP ITS FROM THE DB) /// The time (in ms) of the lap public void DisplayLapTimeInfos ( string driverName , int Lap , string LapTime ) { List < int > sectors = Storage . GetSectorsFromLapTime ( driverName , Lap ); string message = \"Lap time infos\" + Environment . NewLine ; message += LapTime + Environment . NewLine ; if ( sectors . Count > 0 ) message += \"Sector 1 : \" + Reader . ConvertMsToTime ( sectors [ 0 ]) + Environment . NewLine ; if ( sectors . Count > 1 ) message += \"Sector 2 : \" + Reader . ConvertMsToTime ( sectors [ 1 ]) + Environment . NewLine ; if ( sectors . Count > 2 ) message += \"Sector 3 : \" + Reader . ConvertMsToTime ( sectors [ 2 ]) + Environment . NewLine ; MessageBox . Show ( message ); } /// /// Displays the live ranking with the names of the drivers and their gap to the leader in the right order /// /// The control that will host all the new controls /// The main form public void DisplayLiveRanking ( Panel pnl , Main form1 ) { if ( LiveDriverDataLogs . Count > 0 ) { pnl . Controls . Clear (); //Gets the last item that should be the most recent data List < DriverData > liveData = LiveDriverDataLogs [ LiveDriverDataLogs . Count - 1 ]; Button [] buttons = new Button [ liveData . Count ]; Size buttonDimensions = new Size ( pnl . Width , pnl . Height / liveData . Count ); for ( int driverCount = 0 ; driverCount < liveData . Count ; driverCount ++) { Button newButton = new Button (); newButton . Size = buttonDimensions ; newButton . Location = new Point ( 0 , driverCount * buttonDimensions . Height ); newButton . FlatStyle = FlatStyle . Popup ; DriverData driver = liveData [ driverCount ]; if ( driver . Position == - 1 ) { //Its a DNF newButton . Enabled = false ; } if ( driver . Position > 1 ) { newButton . Text = driver . Name + \" +\" + Reader . ConvertMsToTime ( driver . GapToLeader ); } else { newButton . Text = driver . Name ; } newButton . Name = liveData [ driverCount ]. Name ; newButton . TextAlign = ContentAlignment . MiddleLeft ; newButton . FlatStyle = FlatStyle . Popup ; newButton . Click += form1 . btnDriver_Click ; buttons [ driverCount ] = newButton ; } //Note : It could be better to have this directly in the same loop foreach ( Button button in buttons ) { pnl . Controls . Add ( button ); } } } } }","title":"DataWrapper.cs"},{"location":"Code/DriverDrsWindow.html","text":"DriverDrsWindow.cs /// Author : Maxime Rohmer /// Date : 09/06/2023 /// File : DriverDrsWindow.cs /// Brief : Window containing DRS related method and infos /// Version : Beta 1.0 using System ; using System.Collections.Generic ; using System.Drawing ; using System.Drawing.Imaging ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; using Tesseract ; namespace TrackTrends { public class DriverDrsWindow : Window { private static int EmptyDrsGreenValue = - 1 ; private static Random rnd = new Random (); public DriverDrsWindow ( Bitmap image , Rectangle bounds , bool generateEngine = true ) : base ( image , bounds , generateEngine ) { Name = \"DRS\" ; } /// /// Method that will decode the content of the window /// /// returns a boolean (true = DRS OPEN, false = DRS CLOSED) public override object DecodePng () { bool result = false ; //DEBUG //WindowImage.Save(\"./DRS/\"+rnd.Next(0,99999)+\".png\"); int greenValue = GetGreenPixels (); if ( EmptyDrsGreenValue == - 1 ) EmptyDrsGreenValue = greenValue ; if ( greenValue > EmptyDrsGreenValue + EmptyDrsGreenValue / 100 * 30 ) result = true ; return result ; } /// /// Method that will get the green pixel proportion in the image, this can be used to determin if the DRS has been actuated /// /// The number of clearely green pixels private unsafe int GetGreenPixels () { int tot = 0 ; Bitmap bmp = WindowImage ; Rectangle rect = new Rectangle ( 0 , 0 , bmp . Width , bmp . Height ); BitmapData bmpData = bmp . LockBits ( rect , ImageLockMode . ReadOnly , bmp . PixelFormat ); int bytesPerPixel = Bitmap . GetPixelFormatSize ( bmp . PixelFormat ) / 8 ; unsafe { byte * ptr = ( byte *) bmpData . Scan0 . ToPointer (); for ( int y = 0 ; y < bmp . Height ; y ++) { byte * currentLine = ptr + ( y * bmpData . Stride ); for ( int x = 0 ; x < bmp . Width ; x ++) { byte * pixel = currentLine + ( x * bytesPerPixel ); byte blue = pixel [ 0 ]; byte green = pixel [ 1 ]; byte red = pixel [ 2 ]; if ( green > blue * 1.5 && green > red * 1.5 ) { tot ++; } } } } bmp . UnlockBits ( bmpData ); return tot ; } /// /// This method is used to lock on where exactly the DRS window is /// /// Returns a rectangle containing the DRS public Rectangle GetBox () { var tessImage = Pix . LoadFromMemory ( ImageToByte ( WindowImage )); Engine . SetVariable ( \"tessedit_char_whitelist\" , \"\" ); Page page = Engine . Process ( tessImage ); using ( var iter = page . GetIterator ()) { iter . Begin (); do { Rect boundingBox ; // Get the bounding box for the current element if ( iter . TryGetBoundingBox ( PageIteratorLevel . Word , out boundingBox )) { page . Dispose (); return new Rectangle ( boundingBox . X1 , boundingBox . X2 , boundingBox . Width , boundingBox . Height ); } } while ( iter . Next ( PageIteratorLevel . Word )); page . Dispose (); return new Rectangle ( 0 , 0 , 0 , 0 ); } } } }","title":"DriverDrsWindow.cs"},{"location":"Code/DriverDrsWindow.html#driverdrswindowcs","text":"/// Author : Maxime Rohmer /// Date : 09/06/2023 /// File : DriverDrsWindow.cs /// Brief : Window containing DRS related method and infos /// Version : Beta 1.0 using System ; using System.Collections.Generic ; using System.Drawing ; using System.Drawing.Imaging ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; using Tesseract ; namespace TrackTrends { public class DriverDrsWindow : Window { private static int EmptyDrsGreenValue = - 1 ; private static Random rnd = new Random (); public DriverDrsWindow ( Bitmap image , Rectangle bounds , bool generateEngine = true ) : base ( image , bounds , generateEngine ) { Name = \"DRS\" ; } /// /// Method that will decode the content of the window /// /// returns a boolean (true = DRS OPEN, false = DRS CLOSED) public override object DecodePng () { bool result = false ; //DEBUG //WindowImage.Save(\"./DRS/\"+rnd.Next(0,99999)+\".png\"); int greenValue = GetGreenPixels (); if ( EmptyDrsGreenValue == - 1 ) EmptyDrsGreenValue = greenValue ; if ( greenValue > EmptyDrsGreenValue + EmptyDrsGreenValue / 100 * 30 ) result = true ; return result ; } /// /// Method that will get the green pixel proportion in the image, this can be used to determin if the DRS has been actuated /// /// The number of clearely green pixels private unsafe int GetGreenPixels () { int tot = 0 ; Bitmap bmp = WindowImage ; Rectangle rect = new Rectangle ( 0 , 0 , bmp . Width , bmp . Height ); BitmapData bmpData = bmp . LockBits ( rect , ImageLockMode . ReadOnly , bmp . PixelFormat ); int bytesPerPixel = Bitmap . GetPixelFormatSize ( bmp . PixelFormat ) / 8 ; unsafe { byte * ptr = ( byte *) bmpData . Scan0 . ToPointer (); for ( int y = 0 ; y < bmp . Height ; y ++) { byte * currentLine = ptr + ( y * bmpData . Stride ); for ( int x = 0 ; x < bmp . Width ; x ++) { byte * pixel = currentLine + ( x * bytesPerPixel ); byte blue = pixel [ 0 ]; byte green = pixel [ 1 ]; byte red = pixel [ 2 ]; if ( green > blue * 1.5 && green > red * 1.5 ) { tot ++; } } } } bmp . UnlockBits ( bmpData ); return tot ; } /// /// This method is used to lock on where exactly the DRS window is /// /// Returns a rectangle containing the DRS public Rectangle GetBox () { var tessImage = Pix . LoadFromMemory ( ImageToByte ( WindowImage )); Engine . SetVariable ( \"tessedit_char_whitelist\" , \"\" ); Page page = Engine . Process ( tessImage ); using ( var iter = page . GetIterator ()) { iter . Begin (); do { Rect boundingBox ; // Get the bounding box for the current element if ( iter . TryGetBoundingBox ( PageIteratorLevel . Word , out boundingBox )) { page . Dispose (); return new Rectangle ( boundingBox . X1 , boundingBox . X2 , boundingBox . Width , boundingBox . Height ); } } while ( iter . Next ( PageIteratorLevel . Word )); page . Dispose (); return new Rectangle ( 0 , 0 , 0 , 0 ); } } } }","title":"DriverDrsWindow.cs"},{"location":"Code/DriverLapTimeWindow.html","text":"DriverLapTimeWindow.cs /// Author : Maxime Rohmer /// Date : 09/06/2023 /// File : DriverLapTimeWindow /// Brief : Window containing infos about the lap time of a driver /// Version : Beta 1.0 using System ; using System.Collections.Generic ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; using System.Drawing ; namespace TrackTrends { public class DriverLapTimeWindow : Window { public DriverLapTimeWindow ( Bitmap image , Rectangle bounds , bool generateEngine = true ) : base ( image , bounds , generateEngine ) { Name = \"LapTime\" ; } /// /// Decodes the lap time contained in the image using OCR Tesseract /// /// The laptime in int (ms) public override object DecodePng () { int result = GetTimeFromPng ( WindowImage , OcrImage . WindowType . LapTime , Engine ); return result ; } } }","title":"DriverLapTimeWindow.cs"},{"location":"Code/DriverLapTimeWindow.html#driverlaptimewindowcs","text":"/// Author : Maxime Rohmer /// Date : 09/06/2023 /// File : DriverLapTimeWindow /// Brief : Window containing infos about the lap time of a driver /// Version : Beta 1.0 using System ; using System.Collections.Generic ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; using System.Drawing ; namespace TrackTrends { public class DriverLapTimeWindow : Window { public DriverLapTimeWindow ( Bitmap image , Rectangle bounds , bool generateEngine = true ) : base ( image , bounds , generateEngine ) { Name = \"LapTime\" ; } /// /// Decodes the lap time contained in the image using OCR Tesseract /// /// The laptime in int (ms) public override object DecodePng () { int result = GetTimeFromPng ( WindowImage , OcrImage . WindowType . LapTime , Engine ); return result ; } } }","title":"DriverLapTimeWindow.cs"},{"location":"Code/DriverPositionWindow.html","text":"DriverPositionWindow.cs /// Author : Maxime Rohmer /// Date : 09/06/2023 /// File : DriverPositionWindow.cs /// Brief : Window containing infos about the position of a driver. /// Version : Beta 1.0 using System ; using System.Collections.Generic ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; using System.Drawing ; namespace TrackTrends { public class DriverPositionWindow : Window { public DriverPositionWindow ( Bitmap image , Rectangle bounds , bool generateEngine = true ) : base ( image , bounds , generateEngine ) { Name = \"Position\" ; } /// /// Decodes the position number using Tesseract OCR /// /// An int representing the position of the driver (should be between 1 and 20 included) public override object DecodePng () { string ocrResult = GetStringFromPng ( WindowImage , Engine , \"0123456789\" ); int position ; try { position = Convert . ToInt32 ( ocrResult ); } catch { position = - 1 ; } return position ; } } }","title":"DriverPositionWindow.cs"},{"location":"Code/DriverPositionWindow.html#driverpositionwindowcs","text":"/// Author : Maxime Rohmer /// Date : 09/06/2023 /// File : DriverPositionWindow.cs /// Brief : Window containing infos about the position of a driver. /// Version : Beta 1.0 using System ; using System.Collections.Generic ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; using System.Drawing ; namespace TrackTrends { public class DriverPositionWindow : Window { public DriverPositionWindow ( Bitmap image , Rectangle bounds , bool generateEngine = true ) : base ( image , bounds , generateEngine ) { Name = \"Position\" ; } /// /// Decodes the position number using Tesseract OCR /// /// An int representing the position of the driver (should be between 1 and 20 included) public override object DecodePng () { string ocrResult = GetStringFromPng ( WindowImage , Engine , \"0123456789\" ); int position ; try { position = Convert . ToInt32 ( ocrResult ); } catch { position = - 1 ; } return position ; } } }","title":"DriverPositionWindow.cs"},{"location":"Code/DriverTyresWindow.html","text":"DriverTyresWindow.cs /// Author : Maxime Rohmer /// Date : 09/06/2023 /// File : DriverTyresWindow.cs /// Brief : Window containing infos about a driver's tyre /// Version : Beta 1.0 using System ; using System.Collections.Generic ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; using System.Drawing ; namespace TrackTrends { public class DriverTyresWindow : Window { private static Random rnd = new Random (); //Those are the colors I found but you can change them if they change in the future like in 2019 public static Color SOFT_TYRE_COLOR = Color . FromArgb ( 0 xff , 0 x00 , 0 x00 ); public static Color MEDIUM_TYRE_COLOR = Color . FromArgb ( 0 xf5 , 0 xbf , 0 x00 ); public static Color HARD_TYRE_COLOR = Color . FromArgb ( 0 xa4 , 0 xa5 , 0 xa8 ); public static Color INTER_TYRE_COLOR = Color . FromArgb ( 0 x00 , 0 xa4 , 0 x2e ); public static Color WET_TYRE_COLOR = Color . FromArgb ( 0 x27 , 0 x60 , 0 xa6 ); public static Color EMPTY_COLOR = Color . FromArgb ( 0 x20 , 0 x20 , 0 x20 ); public DriverTyresWindow ( Bitmap image , Rectangle bounds , bool generateEngine = true ) : base ( image , bounds , generateEngine ) { Name = \"Tyres\" ; } /// /// This will decode the content of the image /// /// And object containing what was on the image public override object DecodePng () { return GetTyreInfos (); } /// /// Method that will decode whats on the image and return the tyre infos it could manage to recover /// /// A tyre object containing tyre infos private Tyre GetTyreInfos () { //DEBUG //WindowImage.Save(\"./Tyre/raw_\"+rnd.Next(0,99999)+\".png\"); Bitmap tyreZone = GetSmallBitmapFromBigOne ( WindowImage , FindTyreZone ()); Tyre . Type type = Tyre . Type . Undefined ; type = GetTyreTypeFromColor ( OcrImage . GetAvgColorFromBitmap ( tyreZone )); int laps = - 1 ; string number = GetStringFromPng ( tyreZone , Engine , \"0123456789\" , OcrImage . WindowType . Tyre ); try { laps = Convert . ToInt32 ( number ); } catch { //We could not convert the number so its a letter so its 0 laps old laps = 0 ; } //71 is the most laps an f1 race is ever going to have (mexico) so any more would be considered as bad (and remember you cant go trough a full race without making at least one pitstop) if ( laps > 75 ) laps = 0 ; return new Tyre ( type , laps ); } /// /// Finds where the important part of the image is /// /// A rectangle containing position and dimensions of the important part of the image private Rectangle FindTyreZone () { Bitmap bmp = WindowImage ; int currentPosition = bmp . Width ; int height = bmp . Height / 2 ; Color limitColor = Color . FromArgb ( 0 x50 , 0 x50 , 0 x50 ); Color currentColor = Color . FromArgb ( 0 , 0 , 0 ); //25F Size newWindowSize = new Size ( bmp . Height - Convert . ToInt32 (( float ) bmp . Height / 100f * 25f ), bmp . Height - Convert . ToInt32 (( float ) bmp . Height / 100f * 35f )); while ( currentColor . R <= limitColor . R && currentColor . G <= limitColor . G && currentColor . B <= limitColor . B && currentPosition > 0 ) { currentPosition --; currentColor = bmp . GetPixel ( currentPosition , height ); } //Its here to let the new window include a little bit of the right int CorrectedX = currentPosition - ( newWindowSize . Width ) + Convert . ToInt32 (( float ) newWindowSize . Width / 100f * 10f ); int CorrectedY = Convert . ToInt32 (( float ) newWindowSize . Height / 100f * 35f ); if ( CorrectedX <= 0 ) return new Rectangle ( 0 , 0 , newWindowSize . Width , newWindowSize . Height ); return new Rectangle ( CorrectedX , CorrectedY , newWindowSize . Width , newWindowSize . Height ); } //This method has been created with the help of chatGPT /// /// Methods that compares a list of colors to see wich is the closest from the input color and decide wich tyre type it is /// /// The color that you found /// The tyre type public Tyre . Type GetTyreTypeFromColor ( Color inputColor ) { Tyre . Type type = Tyre . Type . Undefined ; List < Color > colors = new List < Color >(); //dont forget that if for some reason someday F1 adds a new Tyre type you will need to add it in the constants but also here in the list //You will also need to add it below in the Tyre object's enum and add an if in the end of this method colors . Add ( SOFT_TYRE_COLOR ); colors . Add ( MEDIUM_TYRE_COLOR ); colors . Add ( HARD_TYRE_COLOR ); colors . Add ( INTER_TYRE_COLOR ); colors . Add ( WET_TYRE_COLOR ); colors . Add ( EMPTY_COLOR ); Color closestColor = colors [ 0 ]; int closestDistance = int . MaxValue ; foreach ( Color color in colors ) { int distance = Math . Abs ( color . R - inputColor . R ) + Math . Abs ( color . G - inputColor . G ) + Math . Abs ( color . B - inputColor . B ); if ( distance < closestDistance ) { closestColor = color ; closestDistance = distance ; } } //We cant use a switch as the colors cant be constants ... if ( closestColor == SOFT_TYRE_COLOR ) type = Tyre . Type . Soft ; if ( closestColor == MEDIUM_TYRE_COLOR ) type = Tyre . Type . Medium ; if ( closestColor == HARD_TYRE_COLOR ) type = Tyre . Type . Hard ; if ( closestColor == INTER_TYRE_COLOR ) type = Tyre . Type . Inter ; if ( closestColor == WET_TYRE_COLOR ) type = Tyre . Type . Wet ; if ( closestColor == EMPTY_COLOR ) return Tyre . Type . Undefined ; return type ; } } }","title":"DriverTyresWindow.cs"},{"location":"Code/DriverTyresWindow.html#drivertyreswindowcs","text":"/// Author : Maxime Rohmer /// Date : 09/06/2023 /// File : DriverTyresWindow.cs /// Brief : Window containing infos about a driver's tyre /// Version : Beta 1.0 using System ; using System.Collections.Generic ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; using System.Drawing ; namespace TrackTrends { public class DriverTyresWindow : Window { private static Random rnd = new Random (); //Those are the colors I found but you can change them if they change in the future like in 2019 public static Color SOFT_TYRE_COLOR = Color . FromArgb ( 0 xff , 0 x00 , 0 x00 ); public static Color MEDIUM_TYRE_COLOR = Color . FromArgb ( 0 xf5 , 0 xbf , 0 x00 ); public static Color HARD_TYRE_COLOR = Color . FromArgb ( 0 xa4 , 0 xa5 , 0 xa8 ); public static Color INTER_TYRE_COLOR = Color . FromArgb ( 0 x00 , 0 xa4 , 0 x2e ); public static Color WET_TYRE_COLOR = Color . FromArgb ( 0 x27 , 0 x60 , 0 xa6 ); public static Color EMPTY_COLOR = Color . FromArgb ( 0 x20 , 0 x20 , 0 x20 ); public DriverTyresWindow ( Bitmap image , Rectangle bounds , bool generateEngine = true ) : base ( image , bounds , generateEngine ) { Name = \"Tyres\" ; } /// /// This will decode the content of the image /// /// And object containing what was on the image public override object DecodePng () { return GetTyreInfos (); } /// /// Method that will decode whats on the image and return the tyre infos it could manage to recover /// /// A tyre object containing tyre infos private Tyre GetTyreInfos () { //DEBUG //WindowImage.Save(\"./Tyre/raw_\"+rnd.Next(0,99999)+\".png\"); Bitmap tyreZone = GetSmallBitmapFromBigOne ( WindowImage , FindTyreZone ()); Tyre . Type type = Tyre . Type . Undefined ; type = GetTyreTypeFromColor ( OcrImage . GetAvgColorFromBitmap ( tyreZone )); int laps = - 1 ; string number = GetStringFromPng ( tyreZone , Engine , \"0123456789\" , OcrImage . WindowType . Tyre ); try { laps = Convert . ToInt32 ( number ); } catch { //We could not convert the number so its a letter so its 0 laps old laps = 0 ; } //71 is the most laps an f1 race is ever going to have (mexico) so any more would be considered as bad (and remember you cant go trough a full race without making at least one pitstop) if ( laps > 75 ) laps = 0 ; return new Tyre ( type , laps ); } /// /// Finds where the important part of the image is /// /// A rectangle containing position and dimensions of the important part of the image private Rectangle FindTyreZone () { Bitmap bmp = WindowImage ; int currentPosition = bmp . Width ; int height = bmp . Height / 2 ; Color limitColor = Color . FromArgb ( 0 x50 , 0 x50 , 0 x50 ); Color currentColor = Color . FromArgb ( 0 , 0 , 0 ); //25F Size newWindowSize = new Size ( bmp . Height - Convert . ToInt32 (( float ) bmp . Height / 100f * 25f ), bmp . Height - Convert . ToInt32 (( float ) bmp . Height / 100f * 35f )); while ( currentColor . R <= limitColor . R && currentColor . G <= limitColor . G && currentColor . B <= limitColor . B && currentPosition > 0 ) { currentPosition --; currentColor = bmp . GetPixel ( currentPosition , height ); } //Its here to let the new window include a little bit of the right int CorrectedX = currentPosition - ( newWindowSize . Width ) + Convert . ToInt32 (( float ) newWindowSize . Width / 100f * 10f ); int CorrectedY = Convert . ToInt32 (( float ) newWindowSize . Height / 100f * 35f ); if ( CorrectedX <= 0 ) return new Rectangle ( 0 , 0 , newWindowSize . Width , newWindowSize . Height ); return new Rectangle ( CorrectedX , CorrectedY , newWindowSize . Width , newWindowSize . Height ); } //This method has been created with the help of chatGPT /// /// Methods that compares a list of colors to see wich is the closest from the input color and decide wich tyre type it is /// /// The color that you found /// The tyre type public Tyre . Type GetTyreTypeFromColor ( Color inputColor ) { Tyre . Type type = Tyre . Type . Undefined ; List < Color > colors = new List < Color >(); //dont forget that if for some reason someday F1 adds a new Tyre type you will need to add it in the constants but also here in the list //You will also need to add it below in the Tyre object's enum and add an if in the end of this method colors . Add ( SOFT_TYRE_COLOR ); colors . Add ( MEDIUM_TYRE_COLOR ); colors . Add ( HARD_TYRE_COLOR ); colors . Add ( INTER_TYRE_COLOR ); colors . Add ( WET_TYRE_COLOR ); colors . Add ( EMPTY_COLOR ); Color closestColor = colors [ 0 ]; int closestDistance = int . MaxValue ; foreach ( Color color in colors ) { int distance = Math . Abs ( color . R - inputColor . R ) + Math . Abs ( color . G - inputColor . G ) + Math . Abs ( color . B - inputColor . B ); if ( distance < closestDistance ) { closestColor = color ; closestDistance = distance ; } } //We cant use a switch as the colors cant be constants ... if ( closestColor == SOFT_TYRE_COLOR ) type = Tyre . Type . Soft ; if ( closestColor == MEDIUM_TYRE_COLOR ) type = Tyre . Type . Medium ; if ( closestColor == HARD_TYRE_COLOR ) type = Tyre . Type . Hard ; if ( closestColor == INTER_TYRE_COLOR ) type = Tyre . Type . Inter ; if ( closestColor == WET_TYRE_COLOR ) type = Tyre . Type . Wet ; if ( closestColor == EMPTY_COLOR ) return Tyre . Type . Undefined ; return type ; } } }","title":"DriverTyresWindow.cs"},{"location":"Code/OcrImage.html","text":"OcrImage.cs /// Author : Maxime Rohmer /// Date : 09/06/2023 /// File : OcrImage.cs /// Brief : Class containing all the methods used to enhance images for OCR /// Version : Beta 1.0 using System ; using System.Collections.Generic ; using System.Threading.Tasks ; using System.Drawing ; using System.Drawing.Drawing2D ; using System.Drawing.Imaging ; namespace TrackTrends { public class OcrImage { //this is a hardcoded value based on the colors of the F1TV data channel background you can change it if sometime in the future the color changes //Any color that has any of its R,G or B channel higher than the treshold will be considered as being usefull information public static Color F1TV_BACKGROUND_TRESHOLD = Color . FromArgb ( 0 x50 , 0 x50 , 0 x50 ); Bitmap InputBitmap ; Random rnd = new Random (); public enum WindowType { LapTime , Text , Sector , Gap , Tyre , } /// /// Create a new Ocr image to help enhance the given bitmap for OCR /// /// The image you want to enhance public OcrImage ( Bitmap inputBitmap ) { InputBitmap = inputBitmap ; } /// /// Enhances the image depending on wich type of window the image comes from /// /// The type of the window. Depending on it different enhancing features will be applied /// The enhanced Bitmap public Bitmap Enhance ( WindowType type = WindowType . Text ) { Bitmap outputBitmap = ( Bitmap ) InputBitmap . Clone (); //Note : If you plan to activate all the comments that I used to debug the OCR I would advise to make sure that the debug folder exists switch ( type ) { case WindowType . Gap : //outputBitmap.Save(Window.GAPTOLEADER_DEBUG_FOLDER + @\"\\raw_\" + id + \".png\"); outputBitmap = Tresholding ( outputBitmap , 165 ); //outputBitmap.Save(Window.GAPTOLEADER_DEBUG_FOLDER + @\"\\treshold_\" + id + \".png\"); outputBitmap = Resize ( outputBitmap , 2 ); //outputBitmap.Save(Window.GAPTOLEADER_DEBUG_FOLDER + @\"\\resize_\" + id + \".png\"); outputBitmap = Dilatation ( outputBitmap , 1 ); //outputBitmap.Save(Window.GAPTOLEADER_DEBUG_FOLDER + @\"\\Final_dilatation_\" + id + \".png\"); break ; case WindowType . Sector : //outputBitmap.Save(Window.SECTOR1_DEBUG_FOLDER + @\"\\raw_\" + id + \".png\"); outputBitmap = VanishOxyAction ( outputBitmap ); //outputBitmap.Save(Window.SECTOR1_DEBUG_FOLDER + @\"\\vanish_\" + id + \".png\"); outputBitmap = Tresholding ( outputBitmap , 150 ); //outputBitmap.Save(Window.SECTOR1_DEBUG_FOLDER + @\"\\Final_treshold_\" + id + \".png\"); break ; case WindowType . LapTime : //outputBitmap.Save(Window.LAPTIME_DEBUG_FOLDER + @\"\\raw_\" + id + \".png\"); outputBitmap = Tresholding ( outputBitmap , 185 ); //outputBitmap.Save(Window.LAPTIME_DEBUG_FOLDER + @\"\\Treshold_\" + id + \".png\"); outputBitmap = SobelEdgeDetection ( outputBitmap ); //outputBitmap.Save(Window.LAPTIME_DEBUG_FOLDER + @\"\\SobelDetection_\" + id + \".png\"); break ; case WindowType . Text : //outputBitmap.Save(Window.STRING_DEBUG_FOLDER + @\"\\raw_\" + id + \".png\"); outputBitmap = Tresholding ( outputBitmap , 165 ); //outputBitmap.Save(Window.STRING_DEBUG_FOLDER + @\"\\Final_treshold_\" + id + \".png\"); break ; case WindowType . Tyre : //outputBitmap.Save(Window.TYRE_DEBUG_FOLDER + @\"\\raw_\" + id + \".png\"); outputBitmap = RemoveUseless ( outputBitmap ); //outputBitmap.Save(Window.TYRE_DEBUG_FOLDER + @\"\\uselessRemoved_\" + id + \".png\"); outputBitmap = Dilatation ( outputBitmap , 1 ); //outputBitmap.Save(Window.TYRE_DEBUG_FOLDER + @\"\\Final_dilatation_\" + id + \".png\"); break ; default : outputBitmap = Tresholding ( outputBitmap , 165 ); outputBitmap = Resize ( outputBitmap , 2 ); outputBitmap = Erode ( outputBitmap , 1 ); break ; } return outputBitmap ; } /// /// Method that convert a colored RGB bitmap into a GrayScale image /// /// The Bitmap you want to convert /// The bitmap in grayscale public static Bitmap Grayscale ( Bitmap inputBitmap ) { Rectangle rect = new Rectangle ( 0 , 0 , inputBitmap . Width , inputBitmap . Height ); BitmapData bmpData = inputBitmap . LockBits ( rect , ImageLockMode . ReadOnly , inputBitmap . PixelFormat ); int bytesPerPixel = Bitmap . GetPixelFormatSize ( inputBitmap . PixelFormat ) / 8 ; Bitmap resultBitmap = new Bitmap ( inputBitmap . Width , inputBitmap . Height ); unsafe { byte * inputPtr = ( byte *) bmpData . Scan0 . ToPointer (); byte * resultPtr = ( byte *) resultBitmap . LockBits ( rect , ImageLockMode . WriteOnly , resultBitmap . PixelFormat ). Scan0 . ToPointer (); Parallel . For ( 0 , inputBitmap . Height , y => { byte * currentLine = inputPtr + ( y * bmpData . Stride ); byte * resultLine = resultPtr + ( y * resultBitmap . Width * bytesPerPixel ); for ( int x = 0 ; x < inputBitmap . Width ; x ++) { byte * inputPixel = currentLine + ( x * bytesPerPixel ); byte * resultPixel = resultLine + ( x * bytesPerPixel ); byte blue = inputPixel [ 0 ]; byte green = inputPixel [ 1 ]; byte red = inputPixel [ 2 ]; //Those a specific values to correct the weights so its more pleasing to the human eye int gray = ( int )( red * 0.3 + green * 0.59 + blue * 0.11 ); //This is not a proper treshold method but it is helping the sobel edge detection if ( gray <= F1TV_BACKGROUND_TRESHOLD . R ) { resultPixel [ 0 ] = resultPixel [ 1 ] = resultPixel [ 2 ] = 0 ; } else { resultPixel [ 0 ] = resultPixel [ 1 ] = resultPixel [ 2 ] = ( byte ) gray ; } } }); resultBitmap . UnlockBits ( resultBitmap . LockBits ( rect , ImageLockMode . WriteOnly , resultBitmap . PixelFormat )); } inputBitmap . UnlockBits ( bmpData ); return resultBitmap ; } /// /// Method that uses the Sobel Edge detection to outline the edges of the characters to help with the OCR /// /// The image with the sobel edge detection used /// private Bitmap SobelEdgeDetection ( Bitmap grayscaleImage ) { // Create a new bitmap for the edges Bitmap edgesImage = new Bitmap ( grayscaleImage . Width , grayscaleImage . Height ); // Define the Sobel operators // Its just a matrix that we will use on the all image int [,] sobelX = { { - 1 , 0 , 1 }, { - 2 , 0 , 2 }, { - 1 , 0 , 1 } }; int [,] sobelY = { { - 1 , - 2 , - 1 }, { 0 , 0 , 0 }, { 1 , 2 , 1 } }; // Apply the Sobel operators and normalize the gradients // NOTE: I dont know how easy or hard it would be to make this paralel but it could be a good idea to do so if possible. //Parallel.For(1, grayscaleImage.Height - 1, y => for ( int y = 1 ; y < grayscaleImage . Height - 1 ; y ++) { for ( int x = 1 ; x < grayscaleImage . Width - 1 ; x ++) { int gradientX = CalculateGradient ( grayscaleImage , sobelX , x , y ); int gradientY = CalculateGradient ( grayscaleImage , sobelY , x , y ); int gradient = ( int ) Math . Sqrt ( gradientX * gradientX + gradientY * gradientY ); // Normalize the gradient value // In some rare cases the value can exceed 255 so we limit it with the Math.Min method gradient = Math . Min ( 255 , Math . Max ( 0 , gradient )); edgesImage . SetPixel ( x , y , Color . FromArgb ( gradient , gradient , gradient )); } } //); return edgesImage ; } /// /// Method that's here to be used by the sobel edge detection method (Chat GPT has been used for parts of this method) /// /// The input image with the grayscale processing already done /// The matrix to apply /// /// /// Returns the processed gradient private int CalculateGradient ( Bitmap grayscaleImage , int [,] sobelOperator , int x , int y ) { int gradient = 0 ; for ( int j = - 1 ; j <= 1 ; j ++) { for ( int i = - 1 ; i <= 1 ; i ++) { int pixelX = grayscaleImage . GetPixel ( x + i , y + j ). R ; gradient += sobelOperator [ j + 1 , i + 1 ] * pixelX ; } } return gradient ; } /// /// Method that is used to whiten an image. Ignore the funny name. Its used to prevent colored text to trouble the OCR when it uses grayscaling /// /// The bitmap to vanish /// public Bitmap VanishOxyAction ( Bitmap inputBitmap ) { unsafe { BitmapData bitmapData = inputBitmap . LockBits ( new Rectangle ( 0 , 0 , inputBitmap . Width , inputBitmap . Height ), ImageLockMode . ReadWrite , inputBitmap . PixelFormat ); int bytesPerPixel = System . Drawing . Bitmap . GetPixelFormatSize ( inputBitmap . PixelFormat ) / 8 ; int heightInPixels = bitmapData . Height ; int widthInBytes = bitmapData . Width * bytesPerPixel ; byte * PtrFirstPixel = ( byte *) bitmapData . Scan0 ; Parallel . For ( 0 , heightInPixels , y => { byte * currentLine = PtrFirstPixel + ( y * bitmapData . Stride ); for ( int x = 0 ; x < widthInBytes ; x = x + bytesPerPixel ) { int blue = currentLine [ x ]; int green = currentLine [ x + 1 ]; int red = currentLine [ x + 2 ]; int max = Math . Max ( Math . Max ( blue , green ), red ); if ( max > 255 / 3 ) max = 255 ; currentLine [ x ] = currentLine [ x + 1 ] = currentLine [ x + 2 ] = ( byte ) max ; } }); inputBitmap . UnlockBits ( bitmapData ); } return inputBitmap ; } /// /// Method that binaries the input image up to a certain treshold given /// /// the bitmap you want to convert to binary colors /// The floor at wich the color is considered as white or black /// The binarised bitmap public static Bitmap Tresholding ( Bitmap inputBitmap , int threshold ) { Rectangle rect = new Rectangle ( 0 , 0 , inputBitmap . Width , inputBitmap . Height ); BitmapData bmpData = inputBitmap . LockBits ( rect , ImageLockMode . ReadWrite , inputBitmap . PixelFormat ); int bytesPerPixel = Bitmap . GetPixelFormatSize ( inputBitmap . PixelFormat ) / 8 ; unsafe { byte * ptr = ( byte *) bmpData . Scan0 . ToPointer (); int bmpHeight = inputBitmap . Height ; int bmpWidth = inputBitmap . Width ; Parallel . For ( 0 , bmpHeight , y => { byte * currentLine = ptr + ( y * bmpData . Stride ); for ( int x = 0 ; x < bmpWidth ; x ++) { byte * pixel = currentLine + ( x * bytesPerPixel ); byte blue = pixel [ 0 ]; byte green = pixel [ 1 ]; byte red = pixel [ 2 ]; //Those a specific values to correct the weights so its more pleasing to the human eye int gray = ( int )( red * 0.3 + green * 0.59 + blue * 0.11 ); int value = gray < threshold ? 0 : 255 ; pixel [ 0 ] = pixel [ 1 ] = pixel [ 2 ] = ( byte ) value ; } }); } inputBitmap . UnlockBits ( bmpData ); return inputBitmap ; } /// /// Method that removes the pixels that are flagged as background /// /// The bitmap you want to remove the background from /// The Bitmap without the background public static Bitmap RemoveBG ( Bitmap inputBitmap ) { Rectangle rect = new Rectangle ( 0 , 0 , inputBitmap . Width , inputBitmap . Height ); BitmapData bmpData = inputBitmap . LockBits ( rect , ImageLockMode . ReadWrite , inputBitmap . PixelFormat ); int bytesPerPixel = Bitmap . GetPixelFormatSize ( inputBitmap . PixelFormat ) / 8 ; unsafe { byte * ptr = ( byte *) bmpData . Scan0 . ToPointer (); int bmpHeight = inputBitmap . Height ; int bmpWidth = inputBitmap . Width ; Parallel . For ( 0 , bmpHeight , y => { byte * currentLine = ptr + ( y * bmpData . Stride ); for ( int x = 0 ; x < bmpWidth ; x ++) { byte * pixel = currentLine + ( x * bytesPerPixel ); int B = pixel [ 0 ]; int G = pixel [ 1 ]; int R = pixel [ 2 ]; if ( R <= F1TV_BACKGROUND_TRESHOLD . R && G <= F1TV_BACKGROUND_TRESHOLD . G && B <= F1TV_BACKGROUND_TRESHOLD . B ) pixel [ 0 ] = pixel [ 1 ] = pixel [ 2 ] = 0 ; } }); } inputBitmap . UnlockBits ( bmpData ); return inputBitmap ; } /// /// Method that removes all the useless things from the image and returns hopefully only the numbers /// /// The bitmap you want to remove useless things from (Expects a cropped part of the TyreWindow) /// The bitmap with (hopefully) only the digits public unsafe static Bitmap RemoveUseless ( Bitmap inputBitmap ) { //Note you can use something else than a cropped tyre window but I would recommend checking the code first to see if it fits your intended use Rectangle rect = new Rectangle ( 0 , 0 , inputBitmap . Width , inputBitmap . Height ); BitmapData bmpData = inputBitmap . LockBits ( rect , ImageLockMode . ReadWrite , inputBitmap . PixelFormat ); int bytesPerPixel = Bitmap . GetPixelFormatSize ( inputBitmap . PixelFormat ) / 8 ; byte * ptr = ( byte *) bmpData . Scan0 . ToPointer (); for ( int y = 0 ; y < inputBitmap . Height ; y ++) { byte * currentLine = ptr + ( y * bmpData . Stride ); List < int > pixelsToRemove = new List < int >(); bool fromBorder = true ; for ( int x = 0 ; x < inputBitmap . Width ; x ++) { byte * pixel = currentLine + ( x * bytesPerPixel ); int B = pixel [ 0 ]; int G = pixel [ 1 ]; int R = pixel [ 2 ]; if ( fromBorder && B < F1TV_BACKGROUND_TRESHOLD . B && G < F1TV_BACKGROUND_TRESHOLD . G && R < F1TV_BACKGROUND_TRESHOLD . R ) { pixelsToRemove . Add ( x ); } else { if ( fromBorder ) { fromBorder = false ; pixelsToRemove . Add ( x ); } } } fromBorder = true ; for ( int x = inputBitmap . Width - 1 ; x > 0 ; x --) { byte * pixel = currentLine + ( x * bytesPerPixel ); int B = pixel [ 0 ]; int G = pixel [ 1 ]; int R = pixel [ 2 ]; if ( fromBorder && B < F1TV_BACKGROUND_TRESHOLD . B && G < F1TV_BACKGROUND_TRESHOLD . G && R < F1TV_BACKGROUND_TRESHOLD . R ) { pixelsToRemove . Add ( x ); } else { if ( fromBorder ) { fromBorder = false ; pixelsToRemove . Add ( x ); } } } foreach ( int pxPos in pixelsToRemove ) { byte * pixel = currentLine + ( pxPos * bytesPerPixel ); pixel [ 0 ] = 0 xFF ; pixel [ 1 ] = 0 xFF ; pixel [ 2 ] = 0 xFF ; } } //Removing the color parts for ( int y = 0 ; y < inputBitmap . Height ; y ++) { byte * currentLine = ptr + ( y * bmpData . Stride ); for ( int x = 0 ; x < inputBitmap . Width ; x ++) { byte * pixel = currentLine + ( x * bytesPerPixel ); int B = pixel [ 0 ]; int G = pixel [ 1 ]; int R = pixel [ 2 ]; if ( R >= F1TV_BACKGROUND_TRESHOLD . R + 25 || G >= F1TV_BACKGROUND_TRESHOLD . G + 25 || B >= F1TV_BACKGROUND_TRESHOLD . B + 25 ) { pixel [ 0 ] = 0 xFF ; pixel [ 1 ] = 0 xFF ; pixel [ 2 ] = 0 xFF ; } } } inputBitmap . UnlockBits ( bmpData ); return inputBitmap ; } /// /// Recovers the average colors from the Image. NOTE : It wont take in account colors that are lower than the background /// /// The bitmap you want to get the average color from /// The average color of the bitmap public static Color GetAvgColorFromBitmap ( Bitmap inputBitmap ) { Rectangle rect = new Rectangle ( 0 , 0 , inputBitmap . Width , inputBitmap . Height ); BitmapData bmpData = inputBitmap . LockBits ( rect , ImageLockMode . ReadWrite , inputBitmap . PixelFormat ); int bytesPerPixel = Bitmap . GetPixelFormatSize ( inputBitmap . PixelFormat ) / 8 ; int totR = 0 ; int totG = 0 ; int totB = 0 ; int totPixels = 1 ; unsafe { byte * ptr = ( byte *) bmpData . Scan0 . ToPointer (); int bmpHeight = inputBitmap . Height ; int bmpWidth = inputBitmap . Width ; Parallel . For ( 0 , bmpHeight , y => { byte * currentLine = ptr + ( y * bmpData . Stride ); for ( int x = 0 ; x < bmpWidth ; x ++) { byte * pixel = currentLine + ( x * bytesPerPixel ); int B = pixel [ 0 ]; int G = pixel [ 1 ]; int R = pixel [ 2 ]; if ( R >= F1TV_BACKGROUND_TRESHOLD . R || G >= F1TV_BACKGROUND_TRESHOLD . G || B >= F1TV_BACKGROUND_TRESHOLD . B ) { totPixels ++; totB += pixel [ 0 ]; totG += pixel [ 1 ]; totR += pixel [ 2 ]; } } }); } inputBitmap . UnlockBits ( bmpData ); return Color . FromArgb ( 255 , Math . Min ( Convert . ToInt32 (( float ) totR / ( float ) totPixels ), 255 ), Math . Min ( Convert . ToInt32 (( float ) totG / ( float ) totPixels ), 255 ), Math . Min ( Convert . ToInt32 (( float ) totB / ( float ) totPixels ), 255 )); } /// /// This method simply inverts all the colors in a Bitmap /// /// the bitmap you want to invert the colors from /// The bitmap with inverted colors public static Bitmap InvertColors ( Bitmap inputBitmap ) { Rectangle rect = new Rectangle ( 0 , 0 , inputBitmap . Width , inputBitmap . Height ); BitmapData bmpData = inputBitmap . LockBits ( rect , ImageLockMode . ReadWrite , inputBitmap . PixelFormat ); int bytesPerPixel = Bitmap . GetPixelFormatSize ( inputBitmap . PixelFormat ) / 8 ; unsafe { byte * ptr = ( byte *) bmpData . Scan0 . ToPointer (); for ( int y = 0 ; y < inputBitmap . Height ; y ++) { byte * currentLine = ptr + ( y * bmpData . Stride ); for ( int x = 0 ; x < inputBitmap . Width ; x ++) { byte * pixel = currentLine + ( x * bytesPerPixel ); pixel [ 0 ] = ( byte )( 255 - pixel [ 0 ]); pixel [ 1 ] = ( byte )( 255 - pixel [ 1 ]); pixel [ 2 ] = ( byte )( 255 - pixel [ 2 ]); } } } inputBitmap . UnlockBits ( bmpData ); return inputBitmap ; } /// /// Methods that applies Bicubic interpolation to increase the size and resolution of an image /// /// The bitmap you want to resize /// The factor of resizing you want to use. I recommend using even numbers /// The bitmap witht the new size public static Bitmap Resize ( Bitmap inputBitmap , int resizeFactor ) { var resultBitmap = new Bitmap ( inputBitmap . Width * resizeFactor , inputBitmap . Height * resizeFactor ); using ( var graphics = Graphics . FromImage ( resultBitmap )) { graphics . InterpolationMode = InterpolationMode . HighQualityBicubic ; graphics . DrawImage ( inputBitmap , new Rectangle ( 0 , 0 , resultBitmap . Width , resultBitmap . Height )); } return resultBitmap ; } /// /// method that Highlights the countours of a Bitmap /// /// The bitmap you want to highlight the countours of /// The bitmap with countours highlighted public static Bitmap HighlightContours ( Bitmap inputBitmap ) { Bitmap outputBitmap = new Bitmap ( inputBitmap . Width , inputBitmap . Height ); Bitmap grayscale = Grayscale ( inputBitmap ); Bitmap thresholded = Tresholding ( grayscale , 128 ); Bitmap dilated = Dilatation ( thresholded , 3 ); Bitmap eroded = Erode ( dilated , 3 ); for ( int y = 0 ; y < inputBitmap . Height ; y ++) { for ( int x = 0 ; x < inputBitmap . Width ; x ++) { Color pixel = inputBitmap . GetPixel ( x , y ); Color dilatedPixel = dilated . GetPixel ( x , y ); Color erodedPixel = eroded . GetPixel ( x , y ); int gray = ( int )( pixel . R * 0.3 + pixel . G * 0.59 + pixel . B * 0.11 ); int threshold = dilatedPixel . R ; if ( gray > threshold ) { outputBitmap . SetPixel ( x , y , Color . FromArgb ( 255 , 255 , 255 )); } else if ( gray <= threshold && erodedPixel . R == 0 ) { outputBitmap . SetPixel ( x , y , Color . FromArgb ( 255 , 0 , 0 )); } else { outputBitmap . SetPixel ( x , y , Color . FromArgb ( 0 , 0 , 0 )); } } } return outputBitmap ; } /// /// Method that that erodes the morphology of a bitmap /// /// The bitmap you want to erode /// The amount of Erosion you want (be carefull its expensive on ressources) /// The Bitmap with the eroded contents public static Bitmap Erode ( Bitmap inputBitmap , int kernelSize ) { Bitmap outputBitmap = new Bitmap ( inputBitmap . Width , inputBitmap . Height ); int [,] kernel = new int [ kernelSize , kernelSize ]; for ( int i = 0 ; i < kernelSize ; i ++) { for ( int j = 0 ; j < kernelSize ; j ++) { kernel [ i , j ] = 1 ; } } for ( int y = kernelSize / 2 ; y < inputBitmap . Height - kernelSize / 2 ; y ++) { for ( int x = kernelSize / 2 ; x < inputBitmap . Width - kernelSize / 2 ; x ++) { bool flag = true ; for ( int i = - kernelSize / 2 ; i <= kernelSize / 2 ; i ++) { for ( int j = - kernelSize / 2 ; j <= kernelSize / 2 ; j ++) { Color pixel = inputBitmap . GetPixel ( x + i , y + j ); int gray = ( int )( pixel . R * 0.3 + pixel . G * 0.59 + pixel . B * 0.11 ); if ( gray >= 128 && kernel [ i + kernelSize / 2 , j + kernelSize / 2 ] == 1 ) { flag = false ; break ; } } if (! flag ) { break ; } } if ( flag ) { outputBitmap . SetPixel ( x , y , Color . FromArgb ( 255 , 255 , 255 )); } else { outputBitmap . SetPixel ( x , y , Color . FromArgb ( 0 , 0 , 0 )); } } } return outputBitmap ; } /// /// Method that that use dilatation of the morphology of a bitmap /// /// The bitmap you want to use dilatation on /// The amount of dilatation you want (be carefull its expensive on ressources) /// The Bitmap after Dilatation public static Bitmap Dilatation ( Bitmap inputBitmap , int kernelSize ) { Bitmap outputBitmap = new Bitmap ( inputBitmap . Width , inputBitmap . Height ); int [,] kernel = new int [ kernelSize , kernelSize ]; for ( int i = 0 ; i < kernelSize ; i ++) { for ( int j = 0 ; j < kernelSize ; j ++) { kernel [ i , j ] = 1 ; } } for ( int y = kernelSize / 2 ; y < inputBitmap . Height - kernelSize / 2 ; y ++) { for ( int x = kernelSize / 2 ; x < inputBitmap . Width - kernelSize / 2 ; x ++) { bool flag = false ; for ( int i = - kernelSize / 2 ; i <= kernelSize / 2 ; i ++) { for ( int j = - kernelSize / 2 ; j <= kernelSize / 2 ; j ++) { Color pixel = inputBitmap . GetPixel ( x + i , y + j ); int gray = ( int )( pixel . R * 0.3 + pixel . G * 0.59 + pixel . B * 0.11 ); if ( gray < 128 && kernel [ i + kernelSize / 2 , j + kernelSize / 2 ] == 1 ) { flag = true ; break ; } } if ( flag ) { break ; } } if ( flag ) { outputBitmap . SetPixel ( x , y , Color . FromArgb ( 0 , 0 , 0 )); } else { outputBitmap . SetPixel ( x , y , Color . FromArgb ( 255 , 255 , 255 )); } } } return outputBitmap ; } } }","title":"OcrImage.cs"},{"location":"Code/OcrImage.html#ocrimagecs","text":"/// Author : Maxime Rohmer /// Date : 09/06/2023 /// File : OcrImage.cs /// Brief : Class containing all the methods used to enhance images for OCR /// Version : Beta 1.0 using System ; using System.Collections.Generic ; using System.Threading.Tasks ; using System.Drawing ; using System.Drawing.Drawing2D ; using System.Drawing.Imaging ; namespace TrackTrends { public class OcrImage { //this is a hardcoded value based on the colors of the F1TV data channel background you can change it if sometime in the future the color changes //Any color that has any of its R,G or B channel higher than the treshold will be considered as being usefull information public static Color F1TV_BACKGROUND_TRESHOLD = Color . FromArgb ( 0 x50 , 0 x50 , 0 x50 ); Bitmap InputBitmap ; Random rnd = new Random (); public enum WindowType { LapTime , Text , Sector , Gap , Tyre , } /// /// Create a new Ocr image to help enhance the given bitmap for OCR /// /// The image you want to enhance public OcrImage ( Bitmap inputBitmap ) { InputBitmap = inputBitmap ; } /// /// Enhances the image depending on wich type of window the image comes from /// /// The type of the window. Depending on it different enhancing features will be applied /// The enhanced Bitmap public Bitmap Enhance ( WindowType type = WindowType . Text ) { Bitmap outputBitmap = ( Bitmap ) InputBitmap . Clone (); //Note : If you plan to activate all the comments that I used to debug the OCR I would advise to make sure that the debug folder exists switch ( type ) { case WindowType . Gap : //outputBitmap.Save(Window.GAPTOLEADER_DEBUG_FOLDER + @\"\\raw_\" + id + \".png\"); outputBitmap = Tresholding ( outputBitmap , 165 ); //outputBitmap.Save(Window.GAPTOLEADER_DEBUG_FOLDER + @\"\\treshold_\" + id + \".png\"); outputBitmap = Resize ( outputBitmap , 2 ); //outputBitmap.Save(Window.GAPTOLEADER_DEBUG_FOLDER + @\"\\resize_\" + id + \".png\"); outputBitmap = Dilatation ( outputBitmap , 1 ); //outputBitmap.Save(Window.GAPTOLEADER_DEBUG_FOLDER + @\"\\Final_dilatation_\" + id + \".png\"); break ; case WindowType . Sector : //outputBitmap.Save(Window.SECTOR1_DEBUG_FOLDER + @\"\\raw_\" + id + \".png\"); outputBitmap = VanishOxyAction ( outputBitmap ); //outputBitmap.Save(Window.SECTOR1_DEBUG_FOLDER + @\"\\vanish_\" + id + \".png\"); outputBitmap = Tresholding ( outputBitmap , 150 ); //outputBitmap.Save(Window.SECTOR1_DEBUG_FOLDER + @\"\\Final_treshold_\" + id + \".png\"); break ; case WindowType . LapTime : //outputBitmap.Save(Window.LAPTIME_DEBUG_FOLDER + @\"\\raw_\" + id + \".png\"); outputBitmap = Tresholding ( outputBitmap , 185 ); //outputBitmap.Save(Window.LAPTIME_DEBUG_FOLDER + @\"\\Treshold_\" + id + \".png\"); outputBitmap = SobelEdgeDetection ( outputBitmap ); //outputBitmap.Save(Window.LAPTIME_DEBUG_FOLDER + @\"\\SobelDetection_\" + id + \".png\"); break ; case WindowType . Text : //outputBitmap.Save(Window.STRING_DEBUG_FOLDER + @\"\\raw_\" + id + \".png\"); outputBitmap = Tresholding ( outputBitmap , 165 ); //outputBitmap.Save(Window.STRING_DEBUG_FOLDER + @\"\\Final_treshold_\" + id + \".png\"); break ; case WindowType . Tyre : //outputBitmap.Save(Window.TYRE_DEBUG_FOLDER + @\"\\raw_\" + id + \".png\"); outputBitmap = RemoveUseless ( outputBitmap ); //outputBitmap.Save(Window.TYRE_DEBUG_FOLDER + @\"\\uselessRemoved_\" + id + \".png\"); outputBitmap = Dilatation ( outputBitmap , 1 ); //outputBitmap.Save(Window.TYRE_DEBUG_FOLDER + @\"\\Final_dilatation_\" + id + \".png\"); break ; default : outputBitmap = Tresholding ( outputBitmap , 165 ); outputBitmap = Resize ( outputBitmap , 2 ); outputBitmap = Erode ( outputBitmap , 1 ); break ; } return outputBitmap ; } /// /// Method that convert a colored RGB bitmap into a GrayScale image /// /// The Bitmap you want to convert /// The bitmap in grayscale public static Bitmap Grayscale ( Bitmap inputBitmap ) { Rectangle rect = new Rectangle ( 0 , 0 , inputBitmap . Width , inputBitmap . Height ); BitmapData bmpData = inputBitmap . LockBits ( rect , ImageLockMode . ReadOnly , inputBitmap . PixelFormat ); int bytesPerPixel = Bitmap . GetPixelFormatSize ( inputBitmap . PixelFormat ) / 8 ; Bitmap resultBitmap = new Bitmap ( inputBitmap . Width , inputBitmap . Height ); unsafe { byte * inputPtr = ( byte *) bmpData . Scan0 . ToPointer (); byte * resultPtr = ( byte *) resultBitmap . LockBits ( rect , ImageLockMode . WriteOnly , resultBitmap . PixelFormat ). Scan0 . ToPointer (); Parallel . For ( 0 , inputBitmap . Height , y => { byte * currentLine = inputPtr + ( y * bmpData . Stride ); byte * resultLine = resultPtr + ( y * resultBitmap . Width * bytesPerPixel ); for ( int x = 0 ; x < inputBitmap . Width ; x ++) { byte * inputPixel = currentLine + ( x * bytesPerPixel ); byte * resultPixel = resultLine + ( x * bytesPerPixel ); byte blue = inputPixel [ 0 ]; byte green = inputPixel [ 1 ]; byte red = inputPixel [ 2 ]; //Those a specific values to correct the weights so its more pleasing to the human eye int gray = ( int )( red * 0.3 + green * 0.59 + blue * 0.11 ); //This is not a proper treshold method but it is helping the sobel edge detection if ( gray <= F1TV_BACKGROUND_TRESHOLD . R ) { resultPixel [ 0 ] = resultPixel [ 1 ] = resultPixel [ 2 ] = 0 ; } else { resultPixel [ 0 ] = resultPixel [ 1 ] = resultPixel [ 2 ] = ( byte ) gray ; } } }); resultBitmap . UnlockBits ( resultBitmap . LockBits ( rect , ImageLockMode . WriteOnly , resultBitmap . PixelFormat )); } inputBitmap . UnlockBits ( bmpData ); return resultBitmap ; } /// /// Method that uses the Sobel Edge detection to outline the edges of the characters to help with the OCR /// /// The image with the sobel edge detection used /// private Bitmap SobelEdgeDetection ( Bitmap grayscaleImage ) { // Create a new bitmap for the edges Bitmap edgesImage = new Bitmap ( grayscaleImage . Width , grayscaleImage . Height ); // Define the Sobel operators // Its just a matrix that we will use on the all image int [,] sobelX = { { - 1 , 0 , 1 }, { - 2 , 0 , 2 }, { - 1 , 0 , 1 } }; int [,] sobelY = { { - 1 , - 2 , - 1 }, { 0 , 0 , 0 }, { 1 , 2 , 1 } }; // Apply the Sobel operators and normalize the gradients // NOTE: I dont know how easy or hard it would be to make this paralel but it could be a good idea to do so if possible. //Parallel.For(1, grayscaleImage.Height - 1, y => for ( int y = 1 ; y < grayscaleImage . Height - 1 ; y ++) { for ( int x = 1 ; x < grayscaleImage . Width - 1 ; x ++) { int gradientX = CalculateGradient ( grayscaleImage , sobelX , x , y ); int gradientY = CalculateGradient ( grayscaleImage , sobelY , x , y ); int gradient = ( int ) Math . Sqrt ( gradientX * gradientX + gradientY * gradientY ); // Normalize the gradient value // In some rare cases the value can exceed 255 so we limit it with the Math.Min method gradient = Math . Min ( 255 , Math . Max ( 0 , gradient )); edgesImage . SetPixel ( x , y , Color . FromArgb ( gradient , gradient , gradient )); } } //); return edgesImage ; } /// /// Method that's here to be used by the sobel edge detection method (Chat GPT has been used for parts of this method) /// /// The input image with the grayscale processing already done /// The matrix to apply /// /// /// Returns the processed gradient private int CalculateGradient ( Bitmap grayscaleImage , int [,] sobelOperator , int x , int y ) { int gradient = 0 ; for ( int j = - 1 ; j <= 1 ; j ++) { for ( int i = - 1 ; i <= 1 ; i ++) { int pixelX = grayscaleImage . GetPixel ( x + i , y + j ). R ; gradient += sobelOperator [ j + 1 , i + 1 ] * pixelX ; } } return gradient ; } /// /// Method that is used to whiten an image. Ignore the funny name. Its used to prevent colored text to trouble the OCR when it uses grayscaling /// /// The bitmap to vanish /// public Bitmap VanishOxyAction ( Bitmap inputBitmap ) { unsafe { BitmapData bitmapData = inputBitmap . LockBits ( new Rectangle ( 0 , 0 , inputBitmap . Width , inputBitmap . Height ), ImageLockMode . ReadWrite , inputBitmap . PixelFormat ); int bytesPerPixel = System . Drawing . Bitmap . GetPixelFormatSize ( inputBitmap . PixelFormat ) / 8 ; int heightInPixels = bitmapData . Height ; int widthInBytes = bitmapData . Width * bytesPerPixel ; byte * PtrFirstPixel = ( byte *) bitmapData . Scan0 ; Parallel . For ( 0 , heightInPixels , y => { byte * currentLine = PtrFirstPixel + ( y * bitmapData . Stride ); for ( int x = 0 ; x < widthInBytes ; x = x + bytesPerPixel ) { int blue = currentLine [ x ]; int green = currentLine [ x + 1 ]; int red = currentLine [ x + 2 ]; int max = Math . Max ( Math . Max ( blue , green ), red ); if ( max > 255 / 3 ) max = 255 ; currentLine [ x ] = currentLine [ x + 1 ] = currentLine [ x + 2 ] = ( byte ) max ; } }); inputBitmap . UnlockBits ( bitmapData ); } return inputBitmap ; } /// /// Method that binaries the input image up to a certain treshold given /// /// the bitmap you want to convert to binary colors /// The floor at wich the color is considered as white or black /// The binarised bitmap public static Bitmap Tresholding ( Bitmap inputBitmap , int threshold ) { Rectangle rect = new Rectangle ( 0 , 0 , inputBitmap . Width , inputBitmap . Height ); BitmapData bmpData = inputBitmap . LockBits ( rect , ImageLockMode . ReadWrite , inputBitmap . PixelFormat ); int bytesPerPixel = Bitmap . GetPixelFormatSize ( inputBitmap . PixelFormat ) / 8 ; unsafe { byte * ptr = ( byte *) bmpData . Scan0 . ToPointer (); int bmpHeight = inputBitmap . Height ; int bmpWidth = inputBitmap . Width ; Parallel . For ( 0 , bmpHeight , y => { byte * currentLine = ptr + ( y * bmpData . Stride ); for ( int x = 0 ; x < bmpWidth ; x ++) { byte * pixel = currentLine + ( x * bytesPerPixel ); byte blue = pixel [ 0 ]; byte green = pixel [ 1 ]; byte red = pixel [ 2 ]; //Those a specific values to correct the weights so its more pleasing to the human eye int gray = ( int )( red * 0.3 + green * 0.59 + blue * 0.11 ); int value = gray < threshold ? 0 : 255 ; pixel [ 0 ] = pixel [ 1 ] = pixel [ 2 ] = ( byte ) value ; } }); } inputBitmap . UnlockBits ( bmpData ); return inputBitmap ; } /// /// Method that removes the pixels that are flagged as background /// /// The bitmap you want to remove the background from /// The Bitmap without the background public static Bitmap RemoveBG ( Bitmap inputBitmap ) { Rectangle rect = new Rectangle ( 0 , 0 , inputBitmap . Width , inputBitmap . Height ); BitmapData bmpData = inputBitmap . LockBits ( rect , ImageLockMode . ReadWrite , inputBitmap . PixelFormat ); int bytesPerPixel = Bitmap . GetPixelFormatSize ( inputBitmap . PixelFormat ) / 8 ; unsafe { byte * ptr = ( byte *) bmpData . Scan0 . ToPointer (); int bmpHeight = inputBitmap . Height ; int bmpWidth = inputBitmap . Width ; Parallel . For ( 0 , bmpHeight , y => { byte * currentLine = ptr + ( y * bmpData . Stride ); for ( int x = 0 ; x < bmpWidth ; x ++) { byte * pixel = currentLine + ( x * bytesPerPixel ); int B = pixel [ 0 ]; int G = pixel [ 1 ]; int R = pixel [ 2 ]; if ( R <= F1TV_BACKGROUND_TRESHOLD . R && G <= F1TV_BACKGROUND_TRESHOLD . G && B <= F1TV_BACKGROUND_TRESHOLD . B ) pixel [ 0 ] = pixel [ 1 ] = pixel [ 2 ] = 0 ; } }); } inputBitmap . UnlockBits ( bmpData ); return inputBitmap ; } /// /// Method that removes all the useless things from the image and returns hopefully only the numbers /// /// The bitmap you want to remove useless things from (Expects a cropped part of the TyreWindow) /// The bitmap with (hopefully) only the digits public unsafe static Bitmap RemoveUseless ( Bitmap inputBitmap ) { //Note you can use something else than a cropped tyre window but I would recommend checking the code first to see if it fits your intended use Rectangle rect = new Rectangle ( 0 , 0 , inputBitmap . Width , inputBitmap . Height ); BitmapData bmpData = inputBitmap . LockBits ( rect , ImageLockMode . ReadWrite , inputBitmap . PixelFormat ); int bytesPerPixel = Bitmap . GetPixelFormatSize ( inputBitmap . PixelFormat ) / 8 ; byte * ptr = ( byte *) bmpData . Scan0 . ToPointer (); for ( int y = 0 ; y < inputBitmap . Height ; y ++) { byte * currentLine = ptr + ( y * bmpData . Stride ); List < int > pixelsToRemove = new List < int >(); bool fromBorder = true ; for ( int x = 0 ; x < inputBitmap . Width ; x ++) { byte * pixel = currentLine + ( x * bytesPerPixel ); int B = pixel [ 0 ]; int G = pixel [ 1 ]; int R = pixel [ 2 ]; if ( fromBorder && B < F1TV_BACKGROUND_TRESHOLD . B && G < F1TV_BACKGROUND_TRESHOLD . G && R < F1TV_BACKGROUND_TRESHOLD . R ) { pixelsToRemove . Add ( x ); } else { if ( fromBorder ) { fromBorder = false ; pixelsToRemove . Add ( x ); } } } fromBorder = true ; for ( int x = inputBitmap . Width - 1 ; x > 0 ; x --) { byte * pixel = currentLine + ( x * bytesPerPixel ); int B = pixel [ 0 ]; int G = pixel [ 1 ]; int R = pixel [ 2 ]; if ( fromBorder && B < F1TV_BACKGROUND_TRESHOLD . B && G < F1TV_BACKGROUND_TRESHOLD . G && R < F1TV_BACKGROUND_TRESHOLD . R ) { pixelsToRemove . Add ( x ); } else { if ( fromBorder ) { fromBorder = false ; pixelsToRemove . Add ( x ); } } } foreach ( int pxPos in pixelsToRemove ) { byte * pixel = currentLine + ( pxPos * bytesPerPixel ); pixel [ 0 ] = 0 xFF ; pixel [ 1 ] = 0 xFF ; pixel [ 2 ] = 0 xFF ; } } //Removing the color parts for ( int y = 0 ; y < inputBitmap . Height ; y ++) { byte * currentLine = ptr + ( y * bmpData . Stride ); for ( int x = 0 ; x < inputBitmap . Width ; x ++) { byte * pixel = currentLine + ( x * bytesPerPixel ); int B = pixel [ 0 ]; int G = pixel [ 1 ]; int R = pixel [ 2 ]; if ( R >= F1TV_BACKGROUND_TRESHOLD . R + 25 || G >= F1TV_BACKGROUND_TRESHOLD . G + 25 || B >= F1TV_BACKGROUND_TRESHOLD . B + 25 ) { pixel [ 0 ] = 0 xFF ; pixel [ 1 ] = 0 xFF ; pixel [ 2 ] = 0 xFF ; } } } inputBitmap . UnlockBits ( bmpData ); return inputBitmap ; } /// /// Recovers the average colors from the Image. NOTE : It wont take in account colors that are lower than the background /// /// The bitmap you want to get the average color from /// The average color of the bitmap public static Color GetAvgColorFromBitmap ( Bitmap inputBitmap ) { Rectangle rect = new Rectangle ( 0 , 0 , inputBitmap . Width , inputBitmap . Height ); BitmapData bmpData = inputBitmap . LockBits ( rect , ImageLockMode . ReadWrite , inputBitmap . PixelFormat ); int bytesPerPixel = Bitmap . GetPixelFormatSize ( inputBitmap . PixelFormat ) / 8 ; int totR = 0 ; int totG = 0 ; int totB = 0 ; int totPixels = 1 ; unsafe { byte * ptr = ( byte *) bmpData . Scan0 . ToPointer (); int bmpHeight = inputBitmap . Height ; int bmpWidth = inputBitmap . Width ; Parallel . For ( 0 , bmpHeight , y => { byte * currentLine = ptr + ( y * bmpData . Stride ); for ( int x = 0 ; x < bmpWidth ; x ++) { byte * pixel = currentLine + ( x * bytesPerPixel ); int B = pixel [ 0 ]; int G = pixel [ 1 ]; int R = pixel [ 2 ]; if ( R >= F1TV_BACKGROUND_TRESHOLD . R || G >= F1TV_BACKGROUND_TRESHOLD . G || B >= F1TV_BACKGROUND_TRESHOLD . B ) { totPixels ++; totB += pixel [ 0 ]; totG += pixel [ 1 ]; totR += pixel [ 2 ]; } } }); } inputBitmap . UnlockBits ( bmpData ); return Color . FromArgb ( 255 , Math . Min ( Convert . ToInt32 (( float ) totR / ( float ) totPixels ), 255 ), Math . Min ( Convert . ToInt32 (( float ) totG / ( float ) totPixels ), 255 ), Math . Min ( Convert . ToInt32 (( float ) totB / ( float ) totPixels ), 255 )); } /// /// This method simply inverts all the colors in a Bitmap /// /// the bitmap you want to invert the colors from /// The bitmap with inverted colors public static Bitmap InvertColors ( Bitmap inputBitmap ) { Rectangle rect = new Rectangle ( 0 , 0 , inputBitmap . Width , inputBitmap . Height ); BitmapData bmpData = inputBitmap . LockBits ( rect , ImageLockMode . ReadWrite , inputBitmap . PixelFormat ); int bytesPerPixel = Bitmap . GetPixelFormatSize ( inputBitmap . PixelFormat ) / 8 ; unsafe { byte * ptr = ( byte *) bmpData . Scan0 . ToPointer (); for ( int y = 0 ; y < inputBitmap . Height ; y ++) { byte * currentLine = ptr + ( y * bmpData . Stride ); for ( int x = 0 ; x < inputBitmap . Width ; x ++) { byte * pixel = currentLine + ( x * bytesPerPixel ); pixel [ 0 ] = ( byte )( 255 - pixel [ 0 ]); pixel [ 1 ] = ( byte )( 255 - pixel [ 1 ]); pixel [ 2 ] = ( byte )( 255 - pixel [ 2 ]); } } } inputBitmap . UnlockBits ( bmpData ); return inputBitmap ; } /// /// Methods that applies Bicubic interpolation to increase the size and resolution of an image /// /// The bitmap you want to resize /// The factor of resizing you want to use. I recommend using even numbers /// The bitmap witht the new size public static Bitmap Resize ( Bitmap inputBitmap , int resizeFactor ) { var resultBitmap = new Bitmap ( inputBitmap . Width * resizeFactor , inputBitmap . Height * resizeFactor ); using ( var graphics = Graphics . FromImage ( resultBitmap )) { graphics . InterpolationMode = InterpolationMode . HighQualityBicubic ; graphics . DrawImage ( inputBitmap , new Rectangle ( 0 , 0 , resultBitmap . Width , resultBitmap . Height )); } return resultBitmap ; } /// /// method that Highlights the countours of a Bitmap /// /// The bitmap you want to highlight the countours of /// The bitmap with countours highlighted public static Bitmap HighlightContours ( Bitmap inputBitmap ) { Bitmap outputBitmap = new Bitmap ( inputBitmap . Width , inputBitmap . Height ); Bitmap grayscale = Grayscale ( inputBitmap ); Bitmap thresholded = Tresholding ( grayscale , 128 ); Bitmap dilated = Dilatation ( thresholded , 3 ); Bitmap eroded = Erode ( dilated , 3 ); for ( int y = 0 ; y < inputBitmap . Height ; y ++) { for ( int x = 0 ; x < inputBitmap . Width ; x ++) { Color pixel = inputBitmap . GetPixel ( x , y ); Color dilatedPixel = dilated . GetPixel ( x , y ); Color erodedPixel = eroded . GetPixel ( x , y ); int gray = ( int )( pixel . R * 0.3 + pixel . G * 0.59 + pixel . B * 0.11 ); int threshold = dilatedPixel . R ; if ( gray > threshold ) { outputBitmap . SetPixel ( x , y , Color . FromArgb ( 255 , 255 , 255 )); } else if ( gray <= threshold && erodedPixel . R == 0 ) { outputBitmap . SetPixel ( x , y , Color . FromArgb ( 255 , 0 , 0 )); } else { outputBitmap . SetPixel ( x , y , Color . FromArgb ( 0 , 0 , 0 )); } } } return outputBitmap ; } /// /// Method that that erodes the morphology of a bitmap /// /// The bitmap you want to erode /// The amount of Erosion you want (be carefull its expensive on ressources) /// The Bitmap with the eroded contents public static Bitmap Erode ( Bitmap inputBitmap , int kernelSize ) { Bitmap outputBitmap = new Bitmap ( inputBitmap . Width , inputBitmap . Height ); int [,] kernel = new int [ kernelSize , kernelSize ]; for ( int i = 0 ; i < kernelSize ; i ++) { for ( int j = 0 ; j < kernelSize ; j ++) { kernel [ i , j ] = 1 ; } } for ( int y = kernelSize / 2 ; y < inputBitmap . Height - kernelSize / 2 ; y ++) { for ( int x = kernelSize / 2 ; x < inputBitmap . Width - kernelSize / 2 ; x ++) { bool flag = true ; for ( int i = - kernelSize / 2 ; i <= kernelSize / 2 ; i ++) { for ( int j = - kernelSize / 2 ; j <= kernelSize / 2 ; j ++) { Color pixel = inputBitmap . GetPixel ( x + i , y + j ); int gray = ( int )( pixel . R * 0.3 + pixel . G * 0.59 + pixel . B * 0.11 ); if ( gray >= 128 && kernel [ i + kernelSize / 2 , j + kernelSize / 2 ] == 1 ) { flag = false ; break ; } } if (! flag ) { break ; } } if ( flag ) { outputBitmap . SetPixel ( x , y , Color . FromArgb ( 255 , 255 , 255 )); } else { outputBitmap . SetPixel ( x , y , Color . FromArgb ( 0 , 0 , 0 )); } } } return outputBitmap ; } /// /// Method that that use dilatation of the morphology of a bitmap /// /// The bitmap you want to use dilatation on /// The amount of dilatation you want (be carefull its expensive on ressources) /// The Bitmap after Dilatation public static Bitmap Dilatation ( Bitmap inputBitmap , int kernelSize ) { Bitmap outputBitmap = new Bitmap ( inputBitmap . Width , inputBitmap . Height ); int [,] kernel = new int [ kernelSize , kernelSize ]; for ( int i = 0 ; i < kernelSize ; i ++) { for ( int j = 0 ; j < kernelSize ; j ++) { kernel [ i , j ] = 1 ; } } for ( int y = kernelSize / 2 ; y < inputBitmap . Height - kernelSize / 2 ; y ++) { for ( int x = kernelSize / 2 ; x < inputBitmap . Width - kernelSize / 2 ; x ++) { bool flag = false ; for ( int i = - kernelSize / 2 ; i <= kernelSize / 2 ; i ++) { for ( int j = - kernelSize / 2 ; j <= kernelSize / 2 ; j ++) { Color pixel = inputBitmap . GetPixel ( x + i , y + j ); int gray = ( int )( pixel . R * 0.3 + pixel . G * 0.59 + pixel . B * 0.11 ); if ( gray < 128 && kernel [ i + kernelSize / 2 , j + kernelSize / 2 ] == 1 ) { flag = true ; break ; } } if ( flag ) { break ; } } if ( flag ) { outputBitmap . SetPixel ( x , y , Color . FromArgb ( 0 , 0 , 0 )); } else { outputBitmap . SetPixel ( x , y , Color . FromArgb ( 255 , 255 , 255 )); } } } return outputBitmap ; } } }","title":"OcrImage.cs"},{"location":"Code/Reader.html","text":"Reader.cs /// Author : Maxime Rohmer /// Date : 09/06/2023 /// File : Reader.cs /// Brief : Class used to Read the config file for the OCR /// Version : Beta 1.0 using System ; using System.Collections.Generic ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; using System.Drawing ; using System.Windows.Forms ; using System.IO ; using System.Text.Json ; namespace TrackTrends { public class Reader { const int NUMBER_OF_DRIVERS = 20 ; public List < string > Drivers ; public List < Zone > MainZones ; private SqliteStorage _storage ; private List < DriverData >[] DriverDataLogs = new List < DriverData >[ NUMBER_OF_DRIVERS ]; private int [] DriverLaps = new int [ NUMBER_OF_DRIVERS ]; public SqliteStorage Storage { get => _storage ; private set => _storage = value ; } public Reader ( string configFile , Bitmap image , bool loadOCR = true ) { Storage = new SqliteStorage (); MainZones = Load ( image , configFile , ref Drivers , loadOCR ); } /// /// Method that reads the JSON config file and create all the Zones and Windows /// /// The image #id on wich you want to create the zones on public List < Zone > Load ( Bitmap image , string configFilePath , ref List < string > driverListToFill , bool LoadOCR ) { // Note : You may wonder why in the H... I have all the zones and windows stored in a JSON file and not just for example the first and the last // Its because they are not perfectly aligned to each others and every zone has his own alignement to the main image List < Zone > mainZones = new List < Zone >(); Bitmap fullImage = image ; Zone mainZone ; for ( int i = 0 ; i < NUMBER_OF_DRIVERS ; i ++) { DriverDataLogs [ i ] = new List < DriverData >(); DriverLaps [ i ] = 0 ; } try { string jsonString = File . ReadAllText ( configFilePath ); JsonDocument document = JsonDocument . Parse ( jsonString ); JsonElement root = document . RootElement ; mainZones = new List < Zone >(); driverListToFill = new List < string >(); JsonElement main = root . GetProperty ( \"Main\" ); int x = main . GetProperty ( \"x\" ). GetInt32 (); int y = main . GetProperty ( \"y\" ). GetInt32 (); int width = main . GetProperty ( \"width\" ). GetInt32 (); int height = main . GetProperty ( \"height\" ). GetInt32 (); mainZone = new Zone ( fullImage , new Rectangle ( x , y , width , height ), \"Main\" ); mainZone . ResetWindows (); mainZone . ResetZones (); JsonElement driverZones = main . GetProperty ( \"DriverZones\" ); foreach ( JsonElement driverZoneElement in driverZones . EnumerateArray ()) { string name = driverZoneElement . GetProperty ( \"name\" ). GetString (); int driverX = driverZoneElement . GetProperty ( \"x\" ). GetInt32 () + mainZone . Bounds . X ; int driverY = driverZoneElement . GetProperty ( \"y\" ). GetInt32 () + mainZone . Bounds . Y ; int driverWidth = driverZoneElement . GetProperty ( \"width\" ). GetInt32 (); int driverHeight = driverZoneElement . GetProperty ( \"height\" ). GetInt32 (); Zone driverZone = new Zone ( fullImage , new Rectangle ( driverX , driverY , driverWidth , driverHeight ), \"Driver\" ); JsonElement windowsElement = driverZoneElement . GetProperty ( \"Windows\" ); //string[] windowNames = new string[] { \"Position\",\"GapToLeader\",\"LapTime\",\"DRS\",\"Tyres\",\"Name\",\"Sector1\",\"Sector2\",\"Sector3\" }; foreach ( JsonElement windowElement in windowsElement . EnumerateArray ()) { //Position JsonElement posEl = windowElement . GetProperty ( \"Position\" ); DriverPositionWindow positionWindow = new DriverPositionWindow ( driverZone . ZoneImage , new Rectangle ( posEl . GetProperty ( \"x\" ). GetInt32 (), posEl . GetProperty ( \"y\" ). GetInt32 (), posEl . GetProperty ( \"width\" ). GetInt32 (), posEl . GetProperty ( \"height\" ). GetInt32 ()), LoadOCR ); //GapToLeader JsonElement gapEl = windowElement . GetProperty ( \"GapToLeader\" ); DriverGapToLeaderWindow gapWindow = new DriverGapToLeaderWindow ( driverZone . ZoneImage , new Rectangle ( gapEl . GetProperty ( \"x\" ). GetInt32 (), gapEl . GetProperty ( \"y\" ). GetInt32 (), gapEl . GetProperty ( \"width\" ). GetInt32 (), gapEl . GetProperty ( \"height\" ). GetInt32 ()), LoadOCR ); //LapTime JsonElement lapEl = windowElement . GetProperty ( \"LapTime\" ); DriverLapTimeWindow lapWindow = new DriverLapTimeWindow ( driverZone . ZoneImage , new Rectangle ( lapEl . GetProperty ( \"x\" ). GetInt32 (), lapEl . GetProperty ( \"y\" ). GetInt32 (), lapEl . GetProperty ( \"width\" ). GetInt32 (), lapEl . GetProperty ( \"height\" ). GetInt32 ()), LoadOCR ); //DRS JsonElement drsEl = windowElement . GetProperty ( \"DRS\" ); DriverDrsWindow drsWindow = new DriverDrsWindow ( driverZone . ZoneImage , new Rectangle ( drsEl . GetProperty ( \"x\" ). GetInt32 (), drsEl . GetProperty ( \"y\" ). GetInt32 (), drsEl . GetProperty ( \"width\" ). GetInt32 (), drsEl . GetProperty ( \"height\" ). GetInt32 ()), LoadOCR ); //Tyre JsonElement tyresEl = windowElement . GetProperty ( \"Tyres\" ); DriverTyresWindow tyreWindow = new DriverTyresWindow ( driverZone . ZoneImage , new Rectangle ( tyresEl . GetProperty ( \"x\" ). GetInt32 (), tyresEl . GetProperty ( \"y\" ). GetInt32 (), tyresEl . GetProperty ( \"width\" ). GetInt32 (), tyresEl . GetProperty ( \"height\" ). GetInt32 ()), LoadOCR ); //Name JsonElement nameEl = windowElement . GetProperty ( \"Name\" ); DriverNameWindow nameWindow = new DriverNameWindow ( driverZone . ZoneImage , new Rectangle ( nameEl . GetProperty ( \"x\" ). GetInt32 (), nameEl . GetProperty ( \"y\" ). GetInt32 (), nameEl . GetProperty ( \"width\" ). GetInt32 (), nameEl . GetProperty ( \"height\" ). GetInt32 ()), LoadOCR ); //Sector1 JsonElement sec1El = windowElement . GetProperty ( \"Sector1\" ); DriverSectorWindow sec1Window = new DriverSectorWindow ( driverZone . ZoneImage , new Rectangle ( sec1El . GetProperty ( \"x\" ). GetInt32 (), sec1El . GetProperty ( \"y\" ). GetInt32 (), sec1El . GetProperty ( \"width\" ). GetInt32 (), sec1El . GetProperty ( \"height\" ). GetInt32 ()), 1 , LoadOCR ); //Sector2 JsonElement sec2El = windowElement . GetProperty ( \"Sector2\" ); DriverSectorWindow sec2Window = new DriverSectorWindow ( driverZone . ZoneImage , new Rectangle ( sec2El . GetProperty ( \"x\" ). GetInt32 (), sec2El . GetProperty ( \"y\" ). GetInt32 (), sec2El . GetProperty ( \"width\" ). GetInt32 (), sec2El . GetProperty ( \"height\" ). GetInt32 ()), 2 , LoadOCR ); //Sector3 JsonElement sec3El = windowElement . GetProperty ( \"Sector3\" ); DriverSectorWindow sec3Window = new DriverSectorWindow ( driverZone . ZoneImage , new Rectangle ( sec3El . GetProperty ( \"x\" ). GetInt32 (), sec3El . GetProperty ( \"y\" ). GetInt32 (), sec3El . GetProperty ( \"width\" ). GetInt32 (), sec3El . GetProperty ( \"height\" ). GetInt32 ()), 3 , LoadOCR ); driverZone . AddWindow ( positionWindow ); driverZone . AddWindow ( gapWindow ); driverZone . AddWindow ( lapWindow ); driverZone . AddWindow ( drsWindow ); driverZone . AddWindow ( tyreWindow ); driverZone . AddWindow ( nameWindow ); driverZone . AddWindow ( sec1Window ); driverZone . AddWindow ( sec2Window ); driverZone . AddWindow ( sec3Window ); } mainZone . AddZone ( driverZone ); } JsonElement driversElement = main . GetProperty ( \"Drivers\" ); foreach ( JsonElement driverElement in driversElement . EnumerateArray ()) { string driverName = driverElement . GetString (); driverListToFill . Add ( driverName ); Storage . AddDriver ( driverName ); } mainZones . Add ( mainZone ); } catch ( IOException ex ) { MessageBox . Show ( \"Error reading JSON file: \" + ex . Message ); } catch ( JsonException ex ) { MessageBox . Show ( \"Invalid JSON format: \" + ex . Message ); } int driverID = 0 ; foreach ( Zone z in mainZones [ 0 ]. Zones ) { driverID ++; z . ZoneImage . Save ( \"LoadedDriver\" + driverID + \".png\" ); } return mainZones ; } /// /// Method that calls all the zones and windows to get the content they can find on the image to display them /// /// The id of the image we are working with /// a string representation of all the returns public List < DriverData > Decode ( List < Zone > mainZones , List < string > drivers ) { List < DriverData > mainResults = new List < DriverData >(); //Decode for ( int mainZoneId = 0 ; mainZoneId < mainZones . Count ; mainZoneId ++) { switch ( mainZoneId ) { case 0 : //object lockObject = new object(); //Main Zone Parallel . For ( 0 , mainZones [ mainZoneId ]. Zones . Count , async i => //for (int i = 0; i < mainZones[mainZoneId].Zones.Count; i++) { DriverData data = mainZones [ mainZoneId ]. Zones [ i ]. Decode ( new List < string >( drivers )); mainResults . Add ( data ); DriverDataLogs [ i ]. Add ( data ); if ( data . Position != - 1 && DriverDataLogs [ i ]. Count > 1 ) { //Tries to fix the tyres if ( data . CurrentTyre . NumberOfLaps > DriverDataLogs [ i ][ DriverDataLogs [ i ]. Count - 2 ]. CurrentTyre . NumberOfLaps + 3 ) data . CurrentTyre . NumberOfLaps = DriverDataLogs [ i ][ DriverDataLogs [ i ]. Count - 2 ]. CurrentTyre . NumberOfLaps + 1 ; //Checking if its a new lap //If the third sector is filled but it was'nt the last time, then it means that a new Lap has been started //Lap detection can be f***ed if the OCR takes so much time that an entire sector can be raced without us knowing. if ( DriverDataLogs [ i ][ DriverDataLogs [ i ]. Count - 1 ]. Sector3 != 0 && DriverDataLogs [ i ][ DriverDataLogs [ i ]. Count - 2 ]. Sector3 == 0 && DriverDataLogs [ i ][ DriverDataLogs [ i ]. Count - 2 ]. Position != - 1 && DriverDataLogs [ i ][ DriverDataLogs [ i ]. Count - 1 ]. Position != - 1 ) { DriverData stats = new DriverData (); stats = DriverDataLogs [ i ][ DriverDataLogs [ i ]. Count - 1 ]; DriverLaps [ i ]++; Storage . AddDriverStat ( stats , DriverLaps [ i ]); } //Checking if its a pitstop //Forget this the best way to know if a tyre has been changed is if the number of laps is zero if ( data . CurrentTyre . Coumpound != Tyre . Type . Undefined && data . CurrentTyre . NumberOfLaps == 0 && DriverDataLogs [ i ][ DriverDataLogs [ i ]. Count - 2 ]. CurrentTyre . NumberOfLaps != 0 ) { Storage . AddPitstop ( data . Name , DriverLaps [ i ] - 1 , data . CurrentTyre . Coumpound . ToString ()); //Driver laps -1 because it would take AT LEAST one lap for this program to detect a pitstop } } DriverDataLogs [ i ]. Add ( data ); }); break ; //Next there could be a Title Zone and TrackInfoZone } } //mainResults = mainResults.OrderBy(driver => driver.Position >= 0).ThenBy(driver => driver.Position).ToList(); mainResults = mainResults . OrderBy ( driver => driver . Position ). ToList (); return mainResults ; } /// /// Changes the image in all of the zones wich then will do the same for theyre own subzones and windows /// /// The new Image from the F1TV data channel public void ChangeImage ( Bitmap Image ) { foreach ( Zone z in MainZones ) { z . Image = Image ; } } /// /// Method that can be used to convert an amount of miliseconds into a more readable human form /// /// The given amount of miliseconds ton convert /// A human readable string that represents the ms public static string ConvertMsToTime ( int amountOfMs ) { //Convert.ToInt32 would round upand I dont want that int minuts = ( int )(( float ) amountOfMs / ( 1000f * 60f )); int seconds = ( int )(( amountOfMs - ( minuts * 60f * 1000f )) / 1000 ); int ms = amountOfMs - (( minuts * 60 * 1000 ) + ( seconds * 1000 )); return minuts + \":\" + seconds . ToString ( \"00\" ) + \":\" + ms . ToString ( \"000\" ); } /// /// Old method that can draw on an image where the windows and zones are created. mostly used for debugging /// /// the #id of the image we are working with /// the drawed bitmap public Bitmap Draw ( Bitmap image , List < Zone > mainZones ) { Graphics g = Graphics . FromImage ( image ); foreach ( Zone z in mainZones ) { int count = 0 ; foreach ( Zone zz in z . Zones ) { g . DrawRectangle ( Pens . Red , z . Bounds ); foreach ( Window w in zz . Windows ) { g . DrawRectangle ( Pens . Blue , new Rectangle ( z . Bounds . X + zz . Bounds . X , z . Bounds . Y + zz . Bounds . Y , zz . Bounds . Width , zz . Bounds . Height )); } count ++; } } return image ; } } }","title":"Reader.cs"},{"location":"Code/Reader.html#readercs","text":"/// Author : Maxime Rohmer /// Date : 09/06/2023 /// File : Reader.cs /// Brief : Class used to Read the config file for the OCR /// Version : Beta 1.0 using System ; using System.Collections.Generic ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; using System.Drawing ; using System.Windows.Forms ; using System.IO ; using System.Text.Json ; namespace TrackTrends { public class Reader { const int NUMBER_OF_DRIVERS = 20 ; public List < string > Drivers ; public List < Zone > MainZones ; private SqliteStorage _storage ; private List < DriverData >[] DriverDataLogs = new List < DriverData >[ NUMBER_OF_DRIVERS ]; private int [] DriverLaps = new int [ NUMBER_OF_DRIVERS ]; public SqliteStorage Storage { get => _storage ; private set => _storage = value ; } public Reader ( string configFile , Bitmap image , bool loadOCR = true ) { Storage = new SqliteStorage (); MainZones = Load ( image , configFile , ref Drivers , loadOCR ); } /// /// Method that reads the JSON config file and create all the Zones and Windows /// /// The image #id on wich you want to create the zones on public List < Zone > Load ( Bitmap image , string configFilePath , ref List < string > driverListToFill , bool LoadOCR ) { // Note : You may wonder why in the H... I have all the zones and windows stored in a JSON file and not just for example the first and the last // Its because they are not perfectly aligned to each others and every zone has his own alignement to the main image List < Zone > mainZones = new List < Zone >(); Bitmap fullImage = image ; Zone mainZone ; for ( int i = 0 ; i < NUMBER_OF_DRIVERS ; i ++) { DriverDataLogs [ i ] = new List < DriverData >(); DriverLaps [ i ] = 0 ; } try { string jsonString = File . ReadAllText ( configFilePath ); JsonDocument document = JsonDocument . Parse ( jsonString ); JsonElement root = document . RootElement ; mainZones = new List < Zone >(); driverListToFill = new List < string >(); JsonElement main = root . GetProperty ( \"Main\" ); int x = main . GetProperty ( \"x\" ). GetInt32 (); int y = main . GetProperty ( \"y\" ). GetInt32 (); int width = main . GetProperty ( \"width\" ). GetInt32 (); int height = main . GetProperty ( \"height\" ). GetInt32 (); mainZone = new Zone ( fullImage , new Rectangle ( x , y , width , height ), \"Main\" ); mainZone . ResetWindows (); mainZone . ResetZones (); JsonElement driverZones = main . GetProperty ( \"DriverZones\" ); foreach ( JsonElement driverZoneElement in driverZones . EnumerateArray ()) { string name = driverZoneElement . GetProperty ( \"name\" ). GetString (); int driverX = driverZoneElement . GetProperty ( \"x\" ). GetInt32 () + mainZone . Bounds . X ; int driverY = driverZoneElement . GetProperty ( \"y\" ). GetInt32 () + mainZone . Bounds . Y ; int driverWidth = driverZoneElement . GetProperty ( \"width\" ). GetInt32 (); int driverHeight = driverZoneElement . GetProperty ( \"height\" ). GetInt32 (); Zone driverZone = new Zone ( fullImage , new Rectangle ( driverX , driverY , driverWidth , driverHeight ), \"Driver\" ); JsonElement windowsElement = driverZoneElement . GetProperty ( \"Windows\" ); //string[] windowNames = new string[] { \"Position\",\"GapToLeader\",\"LapTime\",\"DRS\",\"Tyres\",\"Name\",\"Sector1\",\"Sector2\",\"Sector3\" }; foreach ( JsonElement windowElement in windowsElement . EnumerateArray ()) { //Position JsonElement posEl = windowElement . GetProperty ( \"Position\" ); DriverPositionWindow positionWindow = new DriverPositionWindow ( driverZone . ZoneImage , new Rectangle ( posEl . GetProperty ( \"x\" ). GetInt32 (), posEl . GetProperty ( \"y\" ). GetInt32 (), posEl . GetProperty ( \"width\" ). GetInt32 (), posEl . GetProperty ( \"height\" ). GetInt32 ()), LoadOCR ); //GapToLeader JsonElement gapEl = windowElement . GetProperty ( \"GapToLeader\" ); DriverGapToLeaderWindow gapWindow = new DriverGapToLeaderWindow ( driverZone . ZoneImage , new Rectangle ( gapEl . GetProperty ( \"x\" ). GetInt32 (), gapEl . GetProperty ( \"y\" ). GetInt32 (), gapEl . GetProperty ( \"width\" ). GetInt32 (), gapEl . GetProperty ( \"height\" ). GetInt32 ()), LoadOCR ); //LapTime JsonElement lapEl = windowElement . GetProperty ( \"LapTime\" ); DriverLapTimeWindow lapWindow = new DriverLapTimeWindow ( driverZone . ZoneImage , new Rectangle ( lapEl . GetProperty ( \"x\" ). GetInt32 (), lapEl . GetProperty ( \"y\" ). GetInt32 (), lapEl . GetProperty ( \"width\" ). GetInt32 (), lapEl . GetProperty ( \"height\" ). GetInt32 ()), LoadOCR ); //DRS JsonElement drsEl = windowElement . GetProperty ( \"DRS\" ); DriverDrsWindow drsWindow = new DriverDrsWindow ( driverZone . ZoneImage , new Rectangle ( drsEl . GetProperty ( \"x\" ). GetInt32 (), drsEl . GetProperty ( \"y\" ). GetInt32 (), drsEl . GetProperty ( \"width\" ). GetInt32 (), drsEl . GetProperty ( \"height\" ). GetInt32 ()), LoadOCR ); //Tyre JsonElement tyresEl = windowElement . GetProperty ( \"Tyres\" ); DriverTyresWindow tyreWindow = new DriverTyresWindow ( driverZone . ZoneImage , new Rectangle ( tyresEl . GetProperty ( \"x\" ). GetInt32 (), tyresEl . GetProperty ( \"y\" ). GetInt32 (), tyresEl . GetProperty ( \"width\" ). GetInt32 (), tyresEl . GetProperty ( \"height\" ). GetInt32 ()), LoadOCR ); //Name JsonElement nameEl = windowElement . GetProperty ( \"Name\" ); DriverNameWindow nameWindow = new DriverNameWindow ( driverZone . ZoneImage , new Rectangle ( nameEl . GetProperty ( \"x\" ). GetInt32 (), nameEl . GetProperty ( \"y\" ). GetInt32 (), nameEl . GetProperty ( \"width\" ). GetInt32 (), nameEl . GetProperty ( \"height\" ). GetInt32 ()), LoadOCR ); //Sector1 JsonElement sec1El = windowElement . GetProperty ( \"Sector1\" ); DriverSectorWindow sec1Window = new DriverSectorWindow ( driverZone . ZoneImage , new Rectangle ( sec1El . GetProperty ( \"x\" ). GetInt32 (), sec1El . GetProperty ( \"y\" ). GetInt32 (), sec1El . GetProperty ( \"width\" ). GetInt32 (), sec1El . GetProperty ( \"height\" ). GetInt32 ()), 1 , LoadOCR ); //Sector2 JsonElement sec2El = windowElement . GetProperty ( \"Sector2\" ); DriverSectorWindow sec2Window = new DriverSectorWindow ( driverZone . ZoneImage , new Rectangle ( sec2El . GetProperty ( \"x\" ). GetInt32 (), sec2El . GetProperty ( \"y\" ). GetInt32 (), sec2El . GetProperty ( \"width\" ). GetInt32 (), sec2El . GetProperty ( \"height\" ). GetInt32 ()), 2 , LoadOCR ); //Sector3 JsonElement sec3El = windowElement . GetProperty ( \"Sector3\" ); DriverSectorWindow sec3Window = new DriverSectorWindow ( driverZone . ZoneImage , new Rectangle ( sec3El . GetProperty ( \"x\" ). GetInt32 (), sec3El . GetProperty ( \"y\" ). GetInt32 (), sec3El . GetProperty ( \"width\" ). GetInt32 (), sec3El . GetProperty ( \"height\" ). GetInt32 ()), 3 , LoadOCR ); driverZone . AddWindow ( positionWindow ); driverZone . AddWindow ( gapWindow ); driverZone . AddWindow ( lapWindow ); driverZone . AddWindow ( drsWindow ); driverZone . AddWindow ( tyreWindow ); driverZone . AddWindow ( nameWindow ); driverZone . AddWindow ( sec1Window ); driverZone . AddWindow ( sec2Window ); driverZone . AddWindow ( sec3Window ); } mainZone . AddZone ( driverZone ); } JsonElement driversElement = main . GetProperty ( \"Drivers\" ); foreach ( JsonElement driverElement in driversElement . EnumerateArray ()) { string driverName = driverElement . GetString (); driverListToFill . Add ( driverName ); Storage . AddDriver ( driverName ); } mainZones . Add ( mainZone ); } catch ( IOException ex ) { MessageBox . Show ( \"Error reading JSON file: \" + ex . Message ); } catch ( JsonException ex ) { MessageBox . Show ( \"Invalid JSON format: \" + ex . Message ); } int driverID = 0 ; foreach ( Zone z in mainZones [ 0 ]. Zones ) { driverID ++; z . ZoneImage . Save ( \"LoadedDriver\" + driverID + \".png\" ); } return mainZones ; } /// /// Method that calls all the zones and windows to get the content they can find on the image to display them /// /// The id of the image we are working with /// a string representation of all the returns public List < DriverData > Decode ( List < Zone > mainZones , List < string > drivers ) { List < DriverData > mainResults = new List < DriverData >(); //Decode for ( int mainZoneId = 0 ; mainZoneId < mainZones . Count ; mainZoneId ++) { switch ( mainZoneId ) { case 0 : //object lockObject = new object(); //Main Zone Parallel . For ( 0 , mainZones [ mainZoneId ]. Zones . Count , async i => //for (int i = 0; i < mainZones[mainZoneId].Zones.Count; i++) { DriverData data = mainZones [ mainZoneId ]. Zones [ i ]. Decode ( new List < string >( drivers )); mainResults . Add ( data ); DriverDataLogs [ i ]. Add ( data ); if ( data . Position != - 1 && DriverDataLogs [ i ]. Count > 1 ) { //Tries to fix the tyres if ( data . CurrentTyre . NumberOfLaps > DriverDataLogs [ i ][ DriverDataLogs [ i ]. Count - 2 ]. CurrentTyre . NumberOfLaps + 3 ) data . CurrentTyre . NumberOfLaps = DriverDataLogs [ i ][ DriverDataLogs [ i ]. Count - 2 ]. CurrentTyre . NumberOfLaps + 1 ; //Checking if its a new lap //If the third sector is filled but it was'nt the last time, then it means that a new Lap has been started //Lap detection can be f***ed if the OCR takes so much time that an entire sector can be raced without us knowing. if ( DriverDataLogs [ i ][ DriverDataLogs [ i ]. Count - 1 ]. Sector3 != 0 && DriverDataLogs [ i ][ DriverDataLogs [ i ]. Count - 2 ]. Sector3 == 0 && DriverDataLogs [ i ][ DriverDataLogs [ i ]. Count - 2 ]. Position != - 1 && DriverDataLogs [ i ][ DriverDataLogs [ i ]. Count - 1 ]. Position != - 1 ) { DriverData stats = new DriverData (); stats = DriverDataLogs [ i ][ DriverDataLogs [ i ]. Count - 1 ]; DriverLaps [ i ]++; Storage . AddDriverStat ( stats , DriverLaps [ i ]); } //Checking if its a pitstop //Forget this the best way to know if a tyre has been changed is if the number of laps is zero if ( data . CurrentTyre . Coumpound != Tyre . Type . Undefined && data . CurrentTyre . NumberOfLaps == 0 && DriverDataLogs [ i ][ DriverDataLogs [ i ]. Count - 2 ]. CurrentTyre . NumberOfLaps != 0 ) { Storage . AddPitstop ( data . Name , DriverLaps [ i ] - 1 , data . CurrentTyre . Coumpound . ToString ()); //Driver laps -1 because it would take AT LEAST one lap for this program to detect a pitstop } } DriverDataLogs [ i ]. Add ( data ); }); break ; //Next there could be a Title Zone and TrackInfoZone } } //mainResults = mainResults.OrderBy(driver => driver.Position >= 0).ThenBy(driver => driver.Position).ToList(); mainResults = mainResults . OrderBy ( driver => driver . Position ). ToList (); return mainResults ; } /// /// Changes the image in all of the zones wich then will do the same for theyre own subzones and windows /// /// The new Image from the F1TV data channel public void ChangeImage ( Bitmap Image ) { foreach ( Zone z in MainZones ) { z . Image = Image ; } } /// /// Method that can be used to convert an amount of miliseconds into a more readable human form /// /// The given amount of miliseconds ton convert /// A human readable string that represents the ms public static string ConvertMsToTime ( int amountOfMs ) { //Convert.ToInt32 would round upand I dont want that int minuts = ( int )(( float ) amountOfMs / ( 1000f * 60f )); int seconds = ( int )(( amountOfMs - ( minuts * 60f * 1000f )) / 1000 ); int ms = amountOfMs - (( minuts * 60 * 1000 ) + ( seconds * 1000 )); return minuts + \":\" + seconds . ToString ( \"00\" ) + \":\" + ms . ToString ( \"000\" ); } /// /// Old method that can draw on an image where the windows and zones are created. mostly used for debugging /// /// the #id of the image we are working with /// the drawed bitmap public Bitmap Draw ( Bitmap image , List < Zone > mainZones ) { Graphics g = Graphics . FromImage ( image ); foreach ( Zone z in mainZones ) { int count = 0 ; foreach ( Zone zz in z . Zones ) { g . DrawRectangle ( Pens . Red , z . Bounds ); foreach ( Window w in zz . Windows ) { g . DrawRectangle ( Pens . Blue , new Rectangle ( z . Bounds . X + zz . Bounds . X , z . Bounds . Y + zz . Bounds . Y , zz . Bounds . Width , zz . Bounds . Height )); } count ++; } } return image ; } } }","title":"Reader.cs"},{"location":"Code/Settings.html","text":"Settings.cs /// Author : Maxime Rohmer /// Date : 09/06/2023 /// File : Settings.cs /// Brief : Class that controls the settings view /// Version : Beta 1.0 using System ; using System.Collections.Generic ; using System.ComponentModel ; using System.Data ; using System.Drawing ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; using System.Windows.Forms ; using System.IO ; using TrackTrends ; namespace TrackTrends { public partial class Settings : Form { private string _grandPrixUrl = \"\" ; private string _selectedConfigFile ; private List < string > _driverList = new List < string >(); private F1TVEmulator Emulator = null ; private ConfigurationTool Config = null ; private bool CreatingZone = false ; private Point ZoneP1 ; private Point ZoneP2 ; private bool CreatingWindow = false ; private Point WindowP1 ; private Point WindowP2 ; List < Rectangle > WindowsToAdd = new List < Rectangle >(); public string GrandPrixUrl { get => _grandPrixUrl ; private set => _grandPrixUrl = value ; } public List < string > DriverList { get => _driverList ; private set => _driverList = value ; } public string SelectedConfigFile { get => _selectedConfigFile ; private set => _selectedConfigFile = value ; } //For the responsive content Size oldSize = new Size (); Size oldGpbxPreviewSize = new Size (); Size oldGpbxWindowPreviewSize = new Size (); Size oldPbxPreviewSize = new Size (); Size oldPbxWindowPreviewSize = new Size (); public Settings () { InitializeComponent (); Load (); } /// /// This methods regroups all the actions that the forms need to be doing at the first launch /// private void Load () { RefreshUI (); oldSize = this . Size ; oldGpbxPreviewSize = gpbxPreview . Size ; oldGpbxWindowPreviewSize = gpbxWindowPreview . Size ; oldPbxPreviewSize = pbxPreview . Size ; oldPbxWindowPreviewSize = pbxWindowPreview . Size ; btnLoadPreset . Enabled = false ; btnDeletePreset . Enabled = false ; btnSavePreset . Enabled = false ; // I prefered regrouping all the tooltips here to make it easier to edit (there is 100% of thoses sentences containing typos so if you see one dont hesitate to edit those messages) tip1 . SetToolTip ( btnCreatZone , \"After clicking you can select two points in the image to set the bounds of the important data\" ); tip1 . SetToolTip ( btnCreateWindow , \"After clicking this you will have to select all the windows that are important on the lower image. Refer to the documentation for more infos\" ); tip1 . SetToolTip ( btnRefresh , \"Starts the emulator or refreshes the images if its already running\" ); tip1 . SetToolTip ( btnResetDriver , \"Resets the driver if something went wrong or if you want to test an other URL\" ); tip1 . SetToolTip ( lsbDrivers , \"The drivers that are on the image. Non-Case sensitive\" ); tip1 . SetToolTip ( tbxPresetName , \"The name of the preset you want to save\" ); tip1 . SetToolTip ( pbxPreview , \"What the emulator returns\" ); tip1 . SetToolTip ( pbxWindowPreview , \"One of the driver zones that the program managed to slice from the main zone\" ); } /// /// This is the main method that will be called anytime something changes on the view /// It can be called at any time and will adapt the UI taking into account the state of the app /// private void RefreshUI () { lsbDrivers . DataSource = null ; lsbDrivers . DataSource = DriverList ; if ( Directory . Exists ( ConfigurationTool . CONFIGS_FOLDER_NAME )) { lsbPresets . DataSource = null ; lsbPresets . DataSource = Directory . GetFiles ( ConfigurationTool . CONFIGS_FOLDER_NAME ); } if ( CreatingZone ) { if ( ZoneP1 == new Point (- 1 , - 1 )) { lblZonePointsRemaning . Text = \"2 points Remaining\" ; } else { lblZonePointsRemaning . Text = \"1 point Remaining\" ; } } else { lblZonePointsRemaning . Text = \"\" ; } if ( CreatingWindow ) { if ( WindowP1 == new Point (- 1 , - 1 )) { lblWindowPointsRemaining . Text = \"2 points Remaining\" ; } else { lblWindowPointsRemaining . Text = \"1 point Remaining\" ; } lblWindowPointsRemaining . Text = ConfigurationTool . NUMBER_OF_ZONES - WindowsToAdd . Count () + \" Windows remaining\" ; } else { lblWindowPointsRemaining . Text = \"\" ; lblWindowsRemaining . Text = \"\" ; } if ( Config != null ) { pbxPreview . Image = Config . MainZone . Draw (); if ( Config . MainZone . Zones . Count > 0 ) pbxWindowPreview . Image = Config . MainZone . Zones [ 0 ]. Draw (); } } /// /// This will create a new zone but will require two points (one at each opposing sides and corners) /// /// The first corner (usually top left) /// The second corner (usually bottom right) private void CreateNewZone ( Point p1 , Point p2 ) { Rectangle dimensions = CreateAbsoluteRectangle ( p1 , p2 ); Config = new ConfigurationTool (( Bitmap ) pbxPreview . Image , dimensions ); RefreshUI (); } /// /// Creates all the windows with an array of rectangles /// /// An array that contains all the windows bounds and position (expects 9) private void CreateWindows ( List < Rectangle > dimensions ) { if ( Config != null ) { Config . AddWindows ( dimensions ); } } /// /// Will just change the main URL /// /// /// private void tbxGpUrl_TextChanged ( object sender , EventArgs e ) { GrandPrixUrl = tbxGpUrl . Text ; } /// /// Adds a driver into the driver list /// /// /// private void btnAddDriver_Click ( object sender , EventArgs e ) { string newDriver = tbxDriverName . Text ; DriverList . Add ( newDriver ); tbxDriverName . Text = \"\" ; RefreshUI (); } /// /// Removes a driver from the drivers list /// /// /// private void btnRemoveDriver_Click ( object sender , EventArgs e ) { if ( lsbDrivers . SelectedIndex >= 0 ) { DriverList . RemoveAt ( lsbDrivers . SelectedIndex ); } RefreshUI (); } /// /// Will change everything that needs to be changed for when the users starts or stops creating a zone /// private void SwitchZoneCreation () { if ( CreatingZone ) { CreatingZone = false ; lblZonePointsRemaning . Text = \"\" ; } else { CreatingZone = true ; if ( Config != null ) Config . ResetMainZone (); if ( CreatingWindow ) SwitchWindowCreation (); if ( Emulator != null && Emulator . Ready ) { Config = null ; pbxPreview . Image = Emulator . Screenshot (); } ZoneP1 = new Point (- 1 , - 1 ); ZoneP2 = new Point (- 1 , - 1 ); lblZonePointsRemaning . Text = \"2 Points left\" ; } RefreshUI (); } /// /// Will change everything that needs to be changed for when the users starts or stops creating a window /// private void SwitchWindowCreation () { if ( CreatingWindow ) { CreatingWindow = false ; } else { CreatingWindow = true ; if ( Config != null ) Config . ResetWindows (); if ( CreatingZone ) SwitchZoneCreation (); WindowP1 = new Point (- 1 , - 1 ); WindowP2 = new Point (- 1 , - 1 ); WindowsToAdd = new List < Rectangle >(); } RefreshUI (); } private void btnCreatZone_Click ( object sender , EventArgs e ) { SwitchZoneCreation (); } private void btnCreateWindow_Click ( object sender , EventArgs e ) { SwitchWindowCreation (); } /// /// If the user is supposed to create a zone, will record the position of the clicks /// /// /// private void pbxMain_MouseClick ( object sender , MouseEventArgs e ) { if ( CreatingZone && pbxPreview . Image != null ) { //Point coordinates = pbxMain.PointToClient(new Point(MousePosition.X, MousePosition.Y)); Point coordinates = e . Location ; float xOffset = ( float ) pbxPreview . Image . Width / ( float ) pbxPreview . Width ; float yOffset = ( float ) pbxPreview . Image . Height / ( float ) pbxPreview . Height ; Point newPoint = new Point ( Convert . ToInt32 (( float ) coordinates . X * xOffset ), Convert . ToInt32 (( float ) coordinates . Y * yOffset )); //MessageBox.Show(\"Coordinates\" + Environment.NewLine + \"Old : \" + coordinates.ToString() + Environment.NewLine + \"New : \" + newPoint.ToString()); if ( ZoneP1 == new Point (- 1 , - 1 )) { ZoneP1 = newPoint ; } else { ZoneP2 = newPoint ; CreateNewZone ( ZoneP1 , ZoneP2 ); SwitchZoneCreation (); } RefreshUI (); } } /// /// If the user is supposed to create a window, will record the position of the clicks /// /// /// private void pbxDriverZone_MouseClick ( object sender , MouseEventArgs e ) { if ( CreatingWindow && pbxWindowPreview . Image != null ) { Point coordinates = e . Location ; float xOffset = ( float ) pbxWindowPreview . Image . Width / ( float ) pbxWindowPreview . Width ; float yOffset = ( float ) pbxWindowPreview . Image . Height / ( float ) pbxWindowPreview . Height ; Point newPoint = new Point ( Convert . ToInt32 (( float ) coordinates . X * xOffset ), Convert . ToInt32 (( float ) coordinates . Y * yOffset )); if ( WindowP1 == new Point (- 1 , - 1 )) { WindowP1 = newPoint ; } else { WindowP2 = newPoint ; WindowsToAdd . Add ( CreateAbsoluteRectangle ( WindowP1 , WindowP2 )); if ( WindowsToAdd . Count < ConfigurationTool . NUMBER_OF_ZONES ) { WindowP1 = new Point (- 1 , - 1 ); WindowP2 = new Point (- 1 , - 1 ); } else { WindowP1 = new Point ( WindowP1 . X , 0 ); WindowP2 = new Point ( WindowP2 . X , pbxWindowPreview . Image . Height ); CreateWindows ( WindowsToAdd ); SwitchWindowCreation (); } } RefreshUI (); } } /// /// Creates a rectangle without caring about the order of the points. /// /// First point. Can be top left or bottom right /// Second point. Can be top left or bottom right /// private Rectangle CreateAbsoluteRectangle ( Point p1 , Point p2 ) { Point newP1 = new Point (); Point newP2 = new Point (); //Kind of a pain to have to do this but this lets the user do stupid things without the app crashing if ( p1 . X < p2 . X ) { newP1 . X = p1 . X ; newP2 . X = p2 . X ; } else { newP1 . X = p2 . X ; newP2 . X = p1 . X ; } if ( p1 . Y < p2 . Y ) { newP1 . Y = p1 . Y ; newP2 . Y = p2 . Y ; } else { newP1 . Y = p2 . Y ; newP2 . Y = p1 . Y ; } return new Rectangle ( newP1 . X , newP1 . Y , newP2 . X - newP1 . X , newP2 . Y - newP1 . Y ); } /// /// Will refresh the emulator and will controll some of the controls /// /// /// private async void btnRefresh_Click ( object sender , EventArgs e ) { btnRefresh . Enabled = false ; btnCreatZone . Enabled = false ; btnCreateWindow . Enabled = false ; btnResetDriver . Enabled = false ; if ( Emulator == null || Emulator . GrandPrixUrl != tbxGpUrl . Text ) { Emulator = new F1TVEmulator ( tbxGpUrl . Text ); } if (! Emulator . Ready ) { Task < int > start = Task . Run (() => Emulator . Start ()); int errorCode = await start ; if ( errorCode != 0 ) { string message ; switch ( errorCode ) { case 100 : message = \"Error \" + errorCode + \" Could not recover cookies. It could be because of an improper installation of python or bad cookies in the chrome database. Please try to log on to the F1TV using chrome again\" ; break ; case 101 : message = \"Error \" + errorCode + \" Could not start the driver. It could be because an other instance is runnin make sure you closed them all before trying again\" ; break ; case 102 : message = \"Error \" + errorCode + \" Could not navigate on the F1TV site. Make sure the correct URL has been given and that you logged from chrome. It can take a few minutes to update\" ; break ; case 103 : message = \"Error \" + errorCode + \" The url is not a valid url\" ; break ; case 104 : message = \"Error \" + errorCode + \" The url is not a valid url\" ; break ; case 105 : message = \"Error \" + errorCode + \" There has been an error trying to emulate button presses. Please try again\" ; break ; case 106 : message = \"Error \" + errorCode + \" There has been an error trying to emulate button presses. Please try again\" ; break ; default : message = \"Could not start the emulator Error \" + errorCode ; break ; } MessageBox . Show ( message ); btnRefresh . Text = \"Retry\" ; btnLoadPreset . Enabled = false ; btnDeletePreset . Enabled = false ; btnSavePreset . Enabled = false ; btnCreatZone . Enabled = false ; btnCreateWindow . Enabled = false ; btnResetDriver . Enabled = false ; } else { btnRefresh . Text = \"Get a newer image\" ; pbxPreview . Image = Emulator . Screenshot (); btnLoadPreset . Enabled = true ; btnDeletePreset . Enabled = true ; btnSavePreset . Enabled = true ; btnCreatZone . Enabled = true ; btnCreateWindow . Enabled = true ; btnResetDriver . Enabled = true ; } } else { pbxPreview . Image = Emulator . Screenshot (); //I know im repeating myself. This part could use a bool variable that allows those buttons to be displayed but it was the fastest way to fix a bad behaviour in the app btnLoadPreset . Enabled = true ; btnDeletePreset . Enabled = true ; btnSavePreset . Enabled = true ; btnCreatZone . Enabled = true ; btnCreateWindow . Enabled = true ; btnResetDriver . Enabled = true ; } btnRefresh . Enabled = true ; } /// /// Will try to close the headless browser so the main form can launch a new one safely /// /// /// private void Settings_FormClosing ( object sender , FormClosingEventArgs e ) { if ( Emulator != null ) { Emulator . Stop (); } Emulator = null ; GC . Collect (); } /// /// Will reset the drivers /// /// /// private void btnResetDriver_Click ( object sender , EventArgs e ) { if ( Emulator != null ) { Emulator . ResetDriver (); } } /// /// Saves the current presets as a new JSON file /// /// /// private void btnSavePreset_Click ( object sender , EventArgs e ) { string presetName = tbxPresetName . Text ; if ( Config != null ) { Config . SaveToJson ( DriverList , presetName ); } RefreshUI (); } /// /// Will change the selected preset. Usefull if you close this page because then the main form will keep in memory your last choice /// /// /// private void lsbPresets_SelectedIndexChanged ( object sender , EventArgs e ) { if ( lsbPresets . SelectedIndex >= 0 ) SelectedConfigFile = ( string ) lsbPresets . Items [ lsbPresets . SelectedIndex ]; } /// /// Will load an existing presets /// /// /// private void btnLoadPreset_Click ( object sender , EventArgs e ) { //MessageBox.Show(lsbPresets.SelectedIndex.ToString()); if ( lsbPresets . SelectedIndex >= 0 && pbxPreview . Image != null ) { try { string fileName = lsbPresets . Items [ lsbPresets . SelectedIndex ]. ToString (); Reader reader = new Reader ( fileName , ( Bitmap ) pbxPreview . Image , false ); //MainZones #0 is the big main zone containing driver zones Config = new ConfigurationTool (( Bitmap ) pbxPreview . Image , reader . MainZones [ 0 ]. Bounds ); Config . MainZone = reader . MainZones [ 0 ]; DriverList = reader . Drivers ; SelectedConfigFile = fileName ; } catch ( Exception ex ) { MessageBox . Show ( \"Could not load the settings error :\" + ex ); } RefreshUI (); } } /// /// This will be called everytime the form resizes. Here we are making the form responsive /// /// /// private void Settings_Resize ( object sender , EventArgs e ) { int xDiff = this . Width - oldSize . Width ; int yDiff = this . Height - oldSize . Height ; gpbxPreview . Size = new Size ( oldGpbxPreviewSize . Width + xDiff , oldGpbxPreviewSize . Height + yDiff ); gpbxWindowPreview . Size = new Size ( oldGpbxWindowPreviewSize . Width + xDiff , oldGpbxWindowPreviewSize . Height ); pbxPreview . Size = new Size ( oldPbxPreviewSize . Width + xDiff , oldPbxPreviewSize . Height + yDiff ); pbxWindowPreview . Size = new Size ( oldPbxWindowPreviewSize . Width + xDiff , oldPbxWindowPreviewSize . Height ); } /// /// Will delete an existing preset /// /// /// private void btnDeletePreset_Click ( object sender , EventArgs e ) { int selectedIndex = lsbPresets . SelectedIndex ; if ( selectedIndex >= 0 ) { string fileName = lsbPresets . Items [ selectedIndex ]. ToString (); if ( File . Exists ( fileName )) { File . Delete ( fileName ); RefreshUI (); } else { MessageBox . Show ( \"Could not delete the preset because it does not exists\" ); } } } /// /// Sketchy method that is used to remove the borders from groupboxes... Yes its dumb but I dont think there is any other way /// /// /// private void removeBorders ( object sender , PaintEventArgs e ) { GroupBox gpbx = ( GroupBox ) sender ; using ( Pen pen = new Pen ( gpbx . BackColor , 50 )) { e . Graphics . DrawRectangle ( pen , 0 , 0 , gpbx . Width - 1 , gpbx . Height - 1 ); e . Graphics . DrawRectangle ( pen , 0 , 0 , gpbx . Width - 1 , gpbx . Height - 1 ); } using ( var brush = new SolidBrush ( gpbx . ForeColor )) { var textPosition = new Point ( 5 , 0 ); // Adjust the X and Y values as needed e . Graphics . DrawString ( gpbx . Text , gpbx . Font , brush , textPosition ); } } } }","title":"Settings.cs"},{"location":"Code/Settings.html#settingscs","text":"/// Author : Maxime Rohmer /// Date : 09/06/2023 /// File : Settings.cs /// Brief : Class that controls the settings view /// Version : Beta 1.0 using System ; using System.Collections.Generic ; using System.ComponentModel ; using System.Data ; using System.Drawing ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; using System.Windows.Forms ; using System.IO ; using TrackTrends ; namespace TrackTrends { public partial class Settings : Form { private string _grandPrixUrl = \"\" ; private string _selectedConfigFile ; private List < string > _driverList = new List < string >(); private F1TVEmulator Emulator = null ; private ConfigurationTool Config = null ; private bool CreatingZone = false ; private Point ZoneP1 ; private Point ZoneP2 ; private bool CreatingWindow = false ; private Point WindowP1 ; private Point WindowP2 ; List < Rectangle > WindowsToAdd = new List < Rectangle >(); public string GrandPrixUrl { get => _grandPrixUrl ; private set => _grandPrixUrl = value ; } public List < string > DriverList { get => _driverList ; private set => _driverList = value ; } public string SelectedConfigFile { get => _selectedConfigFile ; private set => _selectedConfigFile = value ; } //For the responsive content Size oldSize = new Size (); Size oldGpbxPreviewSize = new Size (); Size oldGpbxWindowPreviewSize = new Size (); Size oldPbxPreviewSize = new Size (); Size oldPbxWindowPreviewSize = new Size (); public Settings () { InitializeComponent (); Load (); } /// /// This methods regroups all the actions that the forms need to be doing at the first launch /// private void Load () { RefreshUI (); oldSize = this . Size ; oldGpbxPreviewSize = gpbxPreview . Size ; oldGpbxWindowPreviewSize = gpbxWindowPreview . Size ; oldPbxPreviewSize = pbxPreview . Size ; oldPbxWindowPreviewSize = pbxWindowPreview . Size ; btnLoadPreset . Enabled = false ; btnDeletePreset . Enabled = false ; btnSavePreset . Enabled = false ; // I prefered regrouping all the tooltips here to make it easier to edit (there is 100% of thoses sentences containing typos so if you see one dont hesitate to edit those messages) tip1 . SetToolTip ( btnCreatZone , \"After clicking you can select two points in the image to set the bounds of the important data\" ); tip1 . SetToolTip ( btnCreateWindow , \"After clicking this you will have to select all the windows that are important on the lower image. Refer to the documentation for more infos\" ); tip1 . SetToolTip ( btnRefresh , \"Starts the emulator or refreshes the images if its already running\" ); tip1 . SetToolTip ( btnResetDriver , \"Resets the driver if something went wrong or if you want to test an other URL\" ); tip1 . SetToolTip ( lsbDrivers , \"The drivers that are on the image. Non-Case sensitive\" ); tip1 . SetToolTip ( tbxPresetName , \"The name of the preset you want to save\" ); tip1 . SetToolTip ( pbxPreview , \"What the emulator returns\" ); tip1 . SetToolTip ( pbxWindowPreview , \"One of the driver zones that the program managed to slice from the main zone\" ); } /// /// This is the main method that will be called anytime something changes on the view /// It can be called at any time and will adapt the UI taking into account the state of the app /// private void RefreshUI () { lsbDrivers . DataSource = null ; lsbDrivers . DataSource = DriverList ; if ( Directory . Exists ( ConfigurationTool . CONFIGS_FOLDER_NAME )) { lsbPresets . DataSource = null ; lsbPresets . DataSource = Directory . GetFiles ( ConfigurationTool . CONFIGS_FOLDER_NAME ); } if ( CreatingZone ) { if ( ZoneP1 == new Point (- 1 , - 1 )) { lblZonePointsRemaning . Text = \"2 points Remaining\" ; } else { lblZonePointsRemaning . Text = \"1 point Remaining\" ; } } else { lblZonePointsRemaning . Text = \"\" ; } if ( CreatingWindow ) { if ( WindowP1 == new Point (- 1 , - 1 )) { lblWindowPointsRemaining . Text = \"2 points Remaining\" ; } else { lblWindowPointsRemaining . Text = \"1 point Remaining\" ; } lblWindowPointsRemaining . Text = ConfigurationTool . NUMBER_OF_ZONES - WindowsToAdd . Count () + \" Windows remaining\" ; } else { lblWindowPointsRemaining . Text = \"\" ; lblWindowsRemaining . Text = \"\" ; } if ( Config != null ) { pbxPreview . Image = Config . MainZone . Draw (); if ( Config . MainZone . Zones . Count > 0 ) pbxWindowPreview . Image = Config . MainZone . Zones [ 0 ]. Draw (); } } /// /// This will create a new zone but will require two points (one at each opposing sides and corners) /// /// The first corner (usually top left) /// The second corner (usually bottom right) private void CreateNewZone ( Point p1 , Point p2 ) { Rectangle dimensions = CreateAbsoluteRectangle ( p1 , p2 ); Config = new ConfigurationTool (( Bitmap ) pbxPreview . Image , dimensions ); RefreshUI (); } /// /// Creates all the windows with an array of rectangles /// /// An array that contains all the windows bounds and position (expects 9) private void CreateWindows ( List < Rectangle > dimensions ) { if ( Config != null ) { Config . AddWindows ( dimensions ); } } /// /// Will just change the main URL /// /// /// private void tbxGpUrl_TextChanged ( object sender , EventArgs e ) { GrandPrixUrl = tbxGpUrl . Text ; } /// /// Adds a driver into the driver list /// /// /// private void btnAddDriver_Click ( object sender , EventArgs e ) { string newDriver = tbxDriverName . Text ; DriverList . Add ( newDriver ); tbxDriverName . Text = \"\" ; RefreshUI (); } /// /// Removes a driver from the drivers list /// /// /// private void btnRemoveDriver_Click ( object sender , EventArgs e ) { if ( lsbDrivers . SelectedIndex >= 0 ) { DriverList . RemoveAt ( lsbDrivers . SelectedIndex ); } RefreshUI (); } /// /// Will change everything that needs to be changed for when the users starts or stops creating a zone /// private void SwitchZoneCreation () { if ( CreatingZone ) { CreatingZone = false ; lblZonePointsRemaning . Text = \"\" ; } else { CreatingZone = true ; if ( Config != null ) Config . ResetMainZone (); if ( CreatingWindow ) SwitchWindowCreation (); if ( Emulator != null && Emulator . Ready ) { Config = null ; pbxPreview . Image = Emulator . Screenshot (); } ZoneP1 = new Point (- 1 , - 1 ); ZoneP2 = new Point (- 1 , - 1 ); lblZonePointsRemaning . Text = \"2 Points left\" ; } RefreshUI (); } /// /// Will change everything that needs to be changed for when the users starts or stops creating a window /// private void SwitchWindowCreation () { if ( CreatingWindow ) { CreatingWindow = false ; } else { CreatingWindow = true ; if ( Config != null ) Config . ResetWindows (); if ( CreatingZone ) SwitchZoneCreation (); WindowP1 = new Point (- 1 , - 1 ); WindowP2 = new Point (- 1 , - 1 ); WindowsToAdd = new List < Rectangle >(); } RefreshUI (); } private void btnCreatZone_Click ( object sender , EventArgs e ) { SwitchZoneCreation (); } private void btnCreateWindow_Click ( object sender , EventArgs e ) { SwitchWindowCreation (); } /// /// If the user is supposed to create a zone, will record the position of the clicks /// /// /// private void pbxMain_MouseClick ( object sender , MouseEventArgs e ) { if ( CreatingZone && pbxPreview . Image != null ) { //Point coordinates = pbxMain.PointToClient(new Point(MousePosition.X, MousePosition.Y)); Point coordinates = e . Location ; float xOffset = ( float ) pbxPreview . Image . Width / ( float ) pbxPreview . Width ; float yOffset = ( float ) pbxPreview . Image . Height / ( float ) pbxPreview . Height ; Point newPoint = new Point ( Convert . ToInt32 (( float ) coordinates . X * xOffset ), Convert . ToInt32 (( float ) coordinates . Y * yOffset )); //MessageBox.Show(\"Coordinates\" + Environment.NewLine + \"Old : \" + coordinates.ToString() + Environment.NewLine + \"New : \" + newPoint.ToString()); if ( ZoneP1 == new Point (- 1 , - 1 )) { ZoneP1 = newPoint ; } else { ZoneP2 = newPoint ; CreateNewZone ( ZoneP1 , ZoneP2 ); SwitchZoneCreation (); } RefreshUI (); } } /// /// If the user is supposed to create a window, will record the position of the clicks /// /// /// private void pbxDriverZone_MouseClick ( object sender , MouseEventArgs e ) { if ( CreatingWindow && pbxWindowPreview . Image != null ) { Point coordinates = e . Location ; float xOffset = ( float ) pbxWindowPreview . Image . Width / ( float ) pbxWindowPreview . Width ; float yOffset = ( float ) pbxWindowPreview . Image . Height / ( float ) pbxWindowPreview . Height ; Point newPoint = new Point ( Convert . ToInt32 (( float ) coordinates . X * xOffset ), Convert . ToInt32 (( float ) coordinates . Y * yOffset )); if ( WindowP1 == new Point (- 1 , - 1 )) { WindowP1 = newPoint ; } else { WindowP2 = newPoint ; WindowsToAdd . Add ( CreateAbsoluteRectangle ( WindowP1 , WindowP2 )); if ( WindowsToAdd . Count < ConfigurationTool . NUMBER_OF_ZONES ) { WindowP1 = new Point (- 1 , - 1 ); WindowP2 = new Point (- 1 , - 1 ); } else { WindowP1 = new Point ( WindowP1 . X , 0 ); WindowP2 = new Point ( WindowP2 . X , pbxWindowPreview . Image . Height ); CreateWindows ( WindowsToAdd ); SwitchWindowCreation (); } } RefreshUI (); } } /// /// Creates a rectangle without caring about the order of the points. /// /// First point. Can be top left or bottom right /// Second point. Can be top left or bottom right /// private Rectangle CreateAbsoluteRectangle ( Point p1 , Point p2 ) { Point newP1 = new Point (); Point newP2 = new Point (); //Kind of a pain to have to do this but this lets the user do stupid things without the app crashing if ( p1 . X < p2 . X ) { newP1 . X = p1 . X ; newP2 . X = p2 . X ; } else { newP1 . X = p2 . X ; newP2 . X = p1 . X ; } if ( p1 . Y < p2 . Y ) { newP1 . Y = p1 . Y ; newP2 . Y = p2 . Y ; } else { newP1 . Y = p2 . Y ; newP2 . Y = p1 . Y ; } return new Rectangle ( newP1 . X , newP1 . Y , newP2 . X - newP1 . X , newP2 . Y - newP1 . Y ); } /// /// Will refresh the emulator and will controll some of the controls /// /// /// private async void btnRefresh_Click ( object sender , EventArgs e ) { btnRefresh . Enabled = false ; btnCreatZone . Enabled = false ; btnCreateWindow . Enabled = false ; btnResetDriver . Enabled = false ; if ( Emulator == null || Emulator . GrandPrixUrl != tbxGpUrl . Text ) { Emulator = new F1TVEmulator ( tbxGpUrl . Text ); } if (! Emulator . Ready ) { Task < int > start = Task . Run (() => Emulator . Start ()); int errorCode = await start ; if ( errorCode != 0 ) { string message ; switch ( errorCode ) { case 100 : message = \"Error \" + errorCode + \" Could not recover cookies. It could be because of an improper installation of python or bad cookies in the chrome database. Please try to log on to the F1TV using chrome again\" ; break ; case 101 : message = \"Error \" + errorCode + \" Could not start the driver. It could be because an other instance is runnin make sure you closed them all before trying again\" ; break ; case 102 : message = \"Error \" + errorCode + \" Could not navigate on the F1TV site. Make sure the correct URL has been given and that you logged from chrome. It can take a few minutes to update\" ; break ; case 103 : message = \"Error \" + errorCode + \" The url is not a valid url\" ; break ; case 104 : message = \"Error \" + errorCode + \" The url is not a valid url\" ; break ; case 105 : message = \"Error \" + errorCode + \" There has been an error trying to emulate button presses. Please try again\" ; break ; case 106 : message = \"Error \" + errorCode + \" There has been an error trying to emulate button presses. Please try again\" ; break ; default : message = \"Could not start the emulator Error \" + errorCode ; break ; } MessageBox . Show ( message ); btnRefresh . Text = \"Retry\" ; btnLoadPreset . Enabled = false ; btnDeletePreset . Enabled = false ; btnSavePreset . Enabled = false ; btnCreatZone . Enabled = false ; btnCreateWindow . Enabled = false ; btnResetDriver . Enabled = false ; } else { btnRefresh . Text = \"Get a newer image\" ; pbxPreview . Image = Emulator . Screenshot (); btnLoadPreset . Enabled = true ; btnDeletePreset . Enabled = true ; btnSavePreset . Enabled = true ; btnCreatZone . Enabled = true ; btnCreateWindow . Enabled = true ; btnResetDriver . Enabled = true ; } } else { pbxPreview . Image = Emulator . Screenshot (); //I know im repeating myself. This part could use a bool variable that allows those buttons to be displayed but it was the fastest way to fix a bad behaviour in the app btnLoadPreset . Enabled = true ; btnDeletePreset . Enabled = true ; btnSavePreset . Enabled = true ; btnCreatZone . Enabled = true ; btnCreateWindow . Enabled = true ; btnResetDriver . Enabled = true ; } btnRefresh . Enabled = true ; } /// /// Will try to close the headless browser so the main form can launch a new one safely /// /// /// private void Settings_FormClosing ( object sender , FormClosingEventArgs e ) { if ( Emulator != null ) { Emulator . Stop (); } Emulator = null ; GC . Collect (); } /// /// Will reset the drivers /// /// /// private void btnResetDriver_Click ( object sender , EventArgs e ) { if ( Emulator != null ) { Emulator . ResetDriver (); } } /// /// Saves the current presets as a new JSON file /// /// /// private void btnSavePreset_Click ( object sender , EventArgs e ) { string presetName = tbxPresetName . Text ; if ( Config != null ) { Config . SaveToJson ( DriverList , presetName ); } RefreshUI (); } /// /// Will change the selected preset. Usefull if you close this page because then the main form will keep in memory your last choice /// /// /// private void lsbPresets_SelectedIndexChanged ( object sender , EventArgs e ) { if ( lsbPresets . SelectedIndex >= 0 ) SelectedConfigFile = ( string ) lsbPresets . Items [ lsbPresets . SelectedIndex ]; } /// /// Will load an existing presets /// /// /// private void btnLoadPreset_Click ( object sender , EventArgs e ) { //MessageBox.Show(lsbPresets.SelectedIndex.ToString()); if ( lsbPresets . SelectedIndex >= 0 && pbxPreview . Image != null ) { try { string fileName = lsbPresets . Items [ lsbPresets . SelectedIndex ]. ToString (); Reader reader = new Reader ( fileName , ( Bitmap ) pbxPreview . Image , false ); //MainZones #0 is the big main zone containing driver zones Config = new ConfigurationTool (( Bitmap ) pbxPreview . Image , reader . MainZones [ 0 ]. Bounds ); Config . MainZone = reader . MainZones [ 0 ]; DriverList = reader . Drivers ; SelectedConfigFile = fileName ; } catch ( Exception ex ) { MessageBox . Show ( \"Could not load the settings error :\" + ex ); } RefreshUI (); } } /// /// This will be called everytime the form resizes. Here we are making the form responsive /// /// /// private void Settings_Resize ( object sender , EventArgs e ) { int xDiff = this . Width - oldSize . Width ; int yDiff = this . Height - oldSize . Height ; gpbxPreview . Size = new Size ( oldGpbxPreviewSize . Width + xDiff , oldGpbxPreviewSize . Height + yDiff ); gpbxWindowPreview . Size = new Size ( oldGpbxWindowPreviewSize . Width + xDiff , oldGpbxWindowPreviewSize . Height ); pbxPreview . Size = new Size ( oldPbxPreviewSize . Width + xDiff , oldPbxPreviewSize . Height + yDiff ); pbxWindowPreview . Size = new Size ( oldPbxWindowPreviewSize . Width + xDiff , oldPbxWindowPreviewSize . Height ); } /// /// Will delete an existing preset /// /// /// private void btnDeletePreset_Click ( object sender , EventArgs e ) { int selectedIndex = lsbPresets . SelectedIndex ; if ( selectedIndex >= 0 ) { string fileName = lsbPresets . Items [ selectedIndex ]. ToString (); if ( File . Exists ( fileName )) { File . Delete ( fileName ); RefreshUI (); } else { MessageBox . Show ( \"Could not delete the preset because it does not exists\" ); } } } /// /// Sketchy method that is used to remove the borders from groupboxes... Yes its dumb but I dont think there is any other way /// /// /// private void removeBorders ( object sender , PaintEventArgs e ) { GroupBox gpbx = ( GroupBox ) sender ; using ( Pen pen = new Pen ( gpbx . BackColor , 50 )) { e . Graphics . DrawRectangle ( pen , 0 , 0 , gpbx . Width - 1 , gpbx . Height - 1 ); e . Graphics . DrawRectangle ( pen , 0 , 0 , gpbx . Width - 1 , gpbx . Height - 1 ); } using ( var brush = new SolidBrush ( gpbx . ForeColor )) { var textPosition = new Point ( 5 , 0 ); // Adjust the X and Y values as needed e . Graphics . DrawString ( gpbx . Text , gpbx . Font , brush , textPosition ); } } } }","title":"Settings.cs"},{"location":"Code/Window.html","text":"Window.cs /// Author : Maxime Rohmer /// Date : 09/06/2023 /// File : Window.cs /// Brief : Default Window object that is mainly expected to be inherited. /// Version : Beta 1.0 using System ; using System.Collections.Generic ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; using System.Drawing ; using System.IO ; using Tesseract ; using System.Text.RegularExpressions ; using System.Drawing.Drawing2D ; namespace TrackTrends { public class Window { public const string STRING_DEBUG_FOLDER = \"./GetString\" ; public const string LAPTIME_DEBUG_FOLDER = \"./LapTime\" ; public const string GAPTOLEADER_DEBUG_FOLDER = \"./Gap\" ; public const string SECTOR1_DEBUG_FOLDER = \"./Sector1\" ; public const string SECTOR2_DEBUG_FOLDER = \"./Sector2\" ; public const string SECTOR3_DEBUG_FOLDER = \"./Sector3\" ; public const string DRS_DEBUG_FOLDER = \"./DRS\" ; public const string TYRE_DEBUG_FOLDER = \"./Tyre\" ; private Rectangle _bounds ; private Bitmap _image ; private string _name ; protected TesseractEngine Engine ; public Rectangle Bounds { get => _bounds ; private set => _bounds = value ; } public Bitmap Image { get => _image ; set => _image = value ; } public string Name { get => _name ; protected set => _name = value ; } //This will have to be changed if you want to make it run on your machine public static DirectoryInfo TESS_DATA_FOLDER = new DirectoryInfo ( @\"C:\\Users\\Moi\\Pictures\\SeleniumScreens\\TessData\" ); //Debug public static Random rnd = new Random (); public Bitmap WindowImage { get { //This little trickery lets you have the image that the window sees Bitmap sample = new Bitmap ( Bounds . Width , Bounds . Height ); Graphics g = Graphics . FromImage ( sample ); g . DrawImage ( Image , new Rectangle ( 0 , 0 , sample . Width , sample . Height ), Bounds , GraphicsUnit . Pixel ); return sample ; } } /// /// Creates a new Window /// /// The image of the parent zone /// The position and size of the window /// Does the window need to generate a tesseract engine (takes time and ressources) public Window ( Bitmap image , Rectangle bounds , bool generateEngine = true ) { Image = image ; Bounds = bounds ; if ( generateEngine ) { Engine = new TesseractEngine ( TESS_DATA_FOLDER . FullName , \"eng\" , EngineMode . Default ); Engine . DefaultPageSegMode = PageSegMode . SingleLine ; } //DEBUG /* if (!Directory.Exists(STRING_DEBUG_FOLDER)) Directory.CreateDirectory(STRING_DEBUG_FOLDER); if (!Directory.Exists(LAPTIME_DEBUG_FOLDER)) Directory.CreateDirectory(LAPTIME_DEBUG_FOLDER); if (!Directory.Exists(GAPTOLEADER_DEBUG_FOLDER)) Directory.CreateDirectory(GAPTOLEADER_DEBUG_FOLDER); if (!Directory.Exists(SECTOR1_DEBUG_FOLDER)) Directory.CreateDirectory(SECTOR1_DEBUG_FOLDER); if (!Directory.Exists(SECTOR2_DEBUG_FOLDER)) Directory.CreateDirectory(SECTOR2_DEBUG_FOLDER); if (!Directory.Exists(SECTOR3_DEBUG_FOLDER)) Directory.CreateDirectory(SECTOR3_DEBUG_FOLDER); if (!Directory.Exists(DRS_DEBUG_FOLDER)) Directory.CreateDirectory(DRS_DEBUG_FOLDER); if (!Directory.Exists(TYRE_DEBUG_FOLDER)) Directory.CreateDirectory(TYRE_DEBUG_FOLDER); */ } /// /// Method that will have to be used by the childrens to let the model make them decode the images they have /// /// Returns an object because we dont know what kind of return it will be public virtual Object DecodePng () { return \"NaN\" ; } /// /// Method that will have to be used by the childrens to let the model make them decode the images they have /// /// This is a list of the different possible drivers in the race. It should not be too big but NEVER be too short /// Returns an object because we dont know what kind of return it will be public virtual Object DecodePng ( List < string > driverList ) { return \"NaN\" ; } /// /// This converts an image into a byte[]. It can be usefull when doing unsafe stuff. Use at your own risks /// /// The image you want to convert /// A byte array containing the image informations public static byte [] ImageToByte ( Image inputImage ) { using ( var stream = new MemoryStream ()) { inputImage . Save ( stream , System . Drawing . Imaging . ImageFormat . Png ); return stream . ToArray (); } } /// /// This method is used to recover a time from a PNG using Tesseract OCR /// /// The image where the text is /// The type of window it is /// The Tesseract Engine /// The time in milliseconds public static int GetTimeFromPng ( Bitmap image , OcrImage . WindowType windowType , TesseractEngine Engine ) { //Kind of a big method but it has a lot of error handling and has to work with three special cases string rawResult = \"\" ; int result = 0 ; //Debug int salt = rnd . Next ( 0 , 999999 ); switch ( windowType ) { case OcrImage . WindowType . Sector : //The usual sector is in this form : 33.456 Engine . SetVariable ( \"tessedit_char_whitelist\" , \"0123456789.\" ); break ; case OcrImage . WindowType . LapTime : //The usual Lap time is in this form : 1:45:345 Engine . SetVariable ( \"tessedit_char_whitelist\" , \"0123456789.:\" ); break ; case OcrImage . WindowType . Gap : //The usual Gap is in this form : + 34.567 Engine . SetVariable ( \"tessedit_char_whitelist\" , \"0123456789.+\" ); break ; default : Engine . SetVariable ( \"tessedit_char_whitelist\" , \"\" ); break ; } Bitmap enhancedImage = new OcrImage ( image ). Enhance ( windowType ); var tessImage = Pix . LoadFromMemory ( ImageToByte ( enhancedImage )); Page page = Engine . Process ( tessImage ); Graphics g = Graphics . FromImage ( enhancedImage ); // Get the iterator for the page layout using ( var iter = page . GetIterator ()) { // Loop over the elements of the page layout iter . Begin (); do { // Get the text for the current element try { rawResult += iter . GetText ( PageIteratorLevel . Word ); } catch { //nothing we just dont add it if its not a number } } while ( iter . Next ( PageIteratorLevel . Word )); } List < string > rawNumbers ; //In the gaps we can find '+' but we dont care about it its redondant a driver will never be - something if ( windowType == OcrImage . WindowType . Gap ) rawResult = Regex . Replace ( rawResult , \"[^0-9.:]\" , \"\" ); //Splits into minuts seconds miliseconds rawNumbers = rawResult . Split ( '.' , ':' ). ToList < string >(); //removes any empty cells (tho this usually sign of a really bad OCR implementation tbh will have to be fixed higher in the chian) rawNumbers . RemoveAll ( x => (( string ) x ) == \"\" ); int minuts = 0 ; int seconds = 0 ; int miliseconds = 0 ; switch ( windowType ) { case OcrImage . WindowType . Sector : //Usually there is supposed to be only 2 parts. if ( rawNumbers . Count == 2 ) { //The perect case try { seconds = Convert . ToInt32 ( rawNumbers [ 0 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 1 ]. ToString ()); } catch { Console . WriteLine ( \"Sector time convertion failed\" ); } } else { if ( rawNumbers . Count == 1 ) { //Here it is a little harder... Usually its because a '.' has been overlooked or interpreted as a number if ( rawNumbers [ 0 ]. Length == 6 ) { //The '.' has been understood as a number try { seconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]. ToString () + rawNumbers [ 0 ][ 1 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 3 ]. ToString () + rawNumbers [ 0 ][ 4 ]. ToString () + rawNumbers [ 0 ][ 5 ]. ToString ()); } catch { Console . WriteLine ( \"Sector time convertion failed\" ); } } else { if ( rawNumbers [ 0 ]. Length == 5 ) { //The '.' has been overlooked try { seconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]. ToString () + rawNumbers [ 0 ][ 1 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 2 ]. ToString () + rawNumbers [ 0 ][ 3 ]. ToString () + rawNumbers [ 0 ][ 4 ]. ToString ()); } catch { Console . WriteLine ( \"Sector time convertion failed\" ); } } else { Console . WriteLine ( \"Sector time convertion failed\" ); } } } else { //The OCR detected more than 1 '.' wich is concerning because that means that something went really wrong Console . WriteLine ( \"Sector time convertion failed\" ); } } result = 0 ; result += seconds * 1000 ; result += miliseconds ; break ; case OcrImage . WindowType . LapTime : if ( rawNumbers . Count == 3 ) { //The normal way try { minuts = Convert . ToInt32 ( rawNumbers [ 0 ]. ToString ()); seconds = Convert . ToInt32 ( rawNumbers [ 1 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 2 ]. ToString ()); } catch { Console . WriteLine ( \"Lap time convertion failed\" ); } } else { if ( rawNumbers . Count == 2 ) { //Either the ':' or the '.' has been missinterpreted if ( rawNumbers [ 0 ]. Length > rawNumbers [ 1 ]. Length ) { //The ':' has been missinterpreted if ( rawNumbers [ 0 ]. Length == 3 ) { //It has been forgotten try { minuts = Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]. ToString ()); seconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 1 ]. ToString () + rawNumbers [ 0 ][ 2 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 1 ]); } catch { Console . WriteLine ( \"Lap time convertion failed\" ); } } else { if ( rawNumbers [ 0 ]. Length == 4 ) { //I has been translated into an other number try { minuts = Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]. ToString ()); seconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 2 ]. ToString () + rawNumbers [ 0 ][ 3 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 1 ]); } catch { Console . WriteLine ( \"Lap time convertion failed\" ); } } else { //This could happen if the ':' has been missinterpreted with a lap time of over 9 minuts (HIGLY IMPROBABLE) Console . WriteLine ( \"Lap time convertion failed\" ); } } } else { //The '.' has been missinterpreted if ( rawNumbers [ 1 ]. Length == 5 ) { //It has been forgotten minuts = Convert . ToInt32 ( rawNumbers [ 0 ]. ToString ()); seconds = Convert . ToInt32 ( rawNumbers [ 1 ][ 0 ]. ToString () + rawNumbers [ 1 ][ 1 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 1 ][ 2 ]. ToString () + rawNumbers [ 1 ][ 3 ]. ToString () + rawNumbers [ 1 ][ 4 ]. ToString ()); } else { if ( rawNumbers [ 1 ]. Length == 6 ) { try { //It has been interpreted as a number minuts = Convert . ToInt32 ( rawNumbers [ 0 ]. ToString ()); seconds = Convert . ToInt32 ( rawNumbers [ 1 ][ 0 ]. ToString () + rawNumbers [ 1 ][ 1 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 1 ][ 3 ]. ToString () + rawNumbers [ 1 ][ 4 ]. ToString () + rawNumbers [ 1 ][ 5 ]. ToString ()); } catch { //It can happen and to be honest I dont know how to fix it } } else { Console . WriteLine ( \"Lap time convertion failed\" ); } } } } else { if ( rawNumbers . Count == 1 ) { //Both the '.' and the ':' have been missinterpreted if ( rawNumbers [ 0 ]. Length == 6 ) { //The just all have been forgotten try { minuts = Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]. ToString ()); seconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 1 ]. ToString () + rawNumbers [ 0 ][ 2 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 3 ]. ToString () + rawNumbers [ 0 ][ 4 ]. ToString () + rawNumbers [ 0 ][ 5 ]. ToString ()); } catch { Console . WriteLine ( \"Lap time convertion failed\" ); } } else { if ( rawNumbers [ 0 ]. Length == 7 ) { //The '.' or ':' have been interpreted as a number (usually the ':') try { minuts = Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]. ToString ()); seconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 2 ]. ToString () + rawNumbers [ 0 ][ 3 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 4 ]. ToString () + rawNumbers [ 0 ][ 5 ]. ToString () + rawNumbers [ 0 ][ 6 ]. ToString ()); } catch { Console . WriteLine ( \"Lap time convertion failed\" ); } } else { if ( rawNumbers [ 0 ]. Length == 8 ) { //Both have been interpreted as a number try { minuts = Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]. ToString ()); seconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 2 ]. ToString () + rawNumbers [ 0 ][ 3 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 5 ]. ToString () + rawNumbers [ 0 ][ 6 ]. ToString () + rawNumbers [ 0 ][ 7 ]. ToString ()); } catch { Console . WriteLine ( \"Lap time convertion failed\" ); } } else { //I dont know what could have happened Console . WriteLine ( \"Lap time convertion failed\" ); } } } } else { //I dont know what could have happened Console . WriteLine ( \"Lap time convertion failed\" ); } } } result = 0 ; result += minuts * 60 * 1000 ; result += seconds * 1000 ; result += miliseconds ; break ; case OcrImage . WindowType . Gap : if ( rawNumbers . Count == 2 ) { // This should be the x.xxx or a missed x:xx.xxx if ( rawNumbers [ 0 ]. Length > 2 ) { //Its a missed x:xx.xxx if ( rawNumbers [ 0 ]. Length == 3 ) { //It forgot the \":\" try { minuts = Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]. ToString ()); seconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 1 ]. ToString () + rawNumbers [ 0 ][ 2 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 1 ]); } catch { Console . WriteLine ( \"Gap to leader convertion failed\" ); } } else { //The \":\" has been mistaken as a number if ( rawNumbers [ 0 ]. Length == 4 ) { try { minuts = Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]. ToString ()); seconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 2 ]. ToString () + rawNumbers [ 0 ][ 3 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 1 ]); } catch { Console . WriteLine ( \"Gap to leader convertion failed\" ); } } else { Console . WriteLine ( \"Gap to leader convertion failed\" ); } } } else { //It should be a normal x.xxx or xx.xxx try { seconds = Convert . ToInt32 ( rawNumbers [ 0 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 1 ]. ToString ()); } catch { Console . WriteLine ( \"Gap to leader convertion failed\" ); } } } else { if ( rawNumbers . Count == 1 ) { //can be anything depending on the size of the string if ( rawNumbers [ 0 ]. Length == 4 ) { //We just missed the '.' try { seconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 1 ]. ToString () + rawNumbers [ 0 ][ 2 ]. ToString () + rawNumbers [ 0 ][ 3 ]. ToString ()); } catch { Console . WriteLine ( \"Gap to leader convertion failed\" ); } } else { if ( rawNumbers [ 0 ]. Length == 5 ) { //We just missed the '.' try { seconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]. ToString () + rawNumbers [ 0 ][ 1 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 2 ]. ToString () + rawNumbers [ 0 ][ 3 ]. ToString () + rawNumbers [ 0 ][ 4 ]. ToString ()); } catch { Console . WriteLine ( \"Gap to leader convertion failed\" ); } } //There is just too much possibilities that it would be stupid to try and tell them appart so for now im leaving that as just an error Console . WriteLine ( \"Gap to leader convertion failed\" ); } } else { if ( rawNumbers . Count == 3 ) { // This should be the x:xx.xxx try { //Gaps cant be more than 9 minuts so if there is more than 1 digit it means that the '+' has been understood as an other number if ( rawNumbers [ 0 ]. Length > 1 ) rawNumbers [ 0 ] = rawNumbers [ 0 ][ rawNumbers [ 0 ]. Length - 1 ]. ToString (); minuts = Convert . ToInt32 ( rawNumbers [ 0 ]. ToString ()); seconds = Convert . ToInt32 ( rawNumbers [ 1 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 2 ]. ToString ()); } catch { Console . WriteLine ( \"Gap to leader convertion failed\" ); } } } } result = 0 ; result += minuts * 60 * 1000 ; result += seconds * 1000 ; result += miliseconds ; break ; default : try { result = Convert . ToInt32 ( rawNumbers [ 0 ]. ToString ()); } catch { result = 0 ; } break ; } page . Dispose (); return result ; } /// /// Method that recovers strings from an image using Tesseract OCR /// /// The image of the window that contains text /// The Tesseract engine /// The list of allowed chars /// The type of window the text is on. Depending on the context the OCR will behave differently /// the string it found public static string GetStringFromPng ( Bitmap image , TesseractEngine Engine , string allowedChars = \"\" , OcrImage . WindowType windowType = OcrImage . WindowType . Text ) { string result = \"\" ; //Debug int salt = rnd . Next ( 0 , 999999 ); Engine . SetVariable ( \"tessedit_char_whitelist\" , allowedChars ); Bitmap rawData = image ; Bitmap enhancedImage = new OcrImage ( rawData ). Enhance ( windowType ); Page page = Engine . Process ( enhancedImage ); using ( var iter = page . GetIterator ()) { iter . Begin (); do { result += iter . GetText ( PageIteratorLevel . Word ); } while ( iter . Next ( PageIteratorLevel . Word )); } page . Dispose (); return result ; } /// /// Get a smaller image from a bigger one /// /// The big bitmap you want to get a part of /// The dimensions of the new bitmap /// The little bitmap protected Bitmap GetSmallBitmapFromBigOne ( Bitmap inputBitmap , Rectangle newBitmapDimensions ) { Bitmap sample = new Bitmap ( newBitmapDimensions . Width , newBitmapDimensions . Height ); Graphics g = Graphics . FromImage ( sample ); g . DrawImage ( inputBitmap , new Rectangle ( 0 , 0 , sample . Width , sample . Height ), newBitmapDimensions , GraphicsUnit . Pixel ); return sample ; } /// /// Returns the closest string from a list of options /// /// an array of all the possibilities /// the string you want to compare /// The closest option protected static string FindClosestMatch ( List < string > options , string testString ) { var closestMatch = \"\" ; var closestDistance = int . MaxValue ; foreach ( var item in options ) { var distance = LevenshteinDistance ( item , testString ); if ( distance < closestDistance ) { closestMatch = item ; closestDistance = distance ; } } return closestMatch ; } //This method has been generated with the help of ChatGPT /// /// Method that computes a score of distance between two strings /// /// The first string (order irrelevant) /// The second string (order irrelevant) /// The levenshtein distance protected static int LevenshteinDistance ( string string1 , string string2 ) { if ( string . IsNullOrEmpty ( string1 )) { return string . IsNullOrEmpty ( string2 ) ? 0 : string2 . Length ; } if ( string . IsNullOrEmpty ( string2 )) { return string . IsNullOrEmpty ( string1 ) ? 0 : string1 . Length ; } var d = new int [ string1 . Length + 1 , string2 . Length + 1 ]; for ( var i = 0 ; i <= string1 . Length ; i ++) { d [ i , 0 ] = i ; } for ( var j = 0 ; j <= string2 . Length ; j ++) { d [ 0 , j ] = j ; } for ( var i = 1 ; i <= string1 . Length ; i ++) { for ( var j = 1 ; j <= string2 . Length ; j ++) { var cost = ( string1 [ i - 1 ] == string2 [ j - 1 ]) ? 0 : 1 ; d [ i , j ] = Math . Min ( Math . Min ( d [ i - 1 , j ] + 1 , d [ i , j - 1 ] + 1 ), d [ i - 1 , j - 1 ] + cost ); } } return d [ string1 . Length , string2 . Length ]; } } }","title":"Window.cs"},{"location":"Code/Window.html#windowcs","text":"/// Author : Maxime Rohmer /// Date : 09/06/2023 /// File : Window.cs /// Brief : Default Window object that is mainly expected to be inherited. /// Version : Beta 1.0 using System ; using System.Collections.Generic ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; using System.Drawing ; using System.IO ; using Tesseract ; using System.Text.RegularExpressions ; using System.Drawing.Drawing2D ; namespace TrackTrends { public class Window { public const string STRING_DEBUG_FOLDER = \"./GetString\" ; public const string LAPTIME_DEBUG_FOLDER = \"./LapTime\" ; public const string GAPTOLEADER_DEBUG_FOLDER = \"./Gap\" ; public const string SECTOR1_DEBUG_FOLDER = \"./Sector1\" ; public const string SECTOR2_DEBUG_FOLDER = \"./Sector2\" ; public const string SECTOR3_DEBUG_FOLDER = \"./Sector3\" ; public const string DRS_DEBUG_FOLDER = \"./DRS\" ; public const string TYRE_DEBUG_FOLDER = \"./Tyre\" ; private Rectangle _bounds ; private Bitmap _image ; private string _name ; protected TesseractEngine Engine ; public Rectangle Bounds { get => _bounds ; private set => _bounds = value ; } public Bitmap Image { get => _image ; set => _image = value ; } public string Name { get => _name ; protected set => _name = value ; } //This will have to be changed if you want to make it run on your machine public static DirectoryInfo TESS_DATA_FOLDER = new DirectoryInfo ( @\"C:\\Users\\Moi\\Pictures\\SeleniumScreens\\TessData\" ); //Debug public static Random rnd = new Random (); public Bitmap WindowImage { get { //This little trickery lets you have the image that the window sees Bitmap sample = new Bitmap ( Bounds . Width , Bounds . Height ); Graphics g = Graphics . FromImage ( sample ); g . DrawImage ( Image , new Rectangle ( 0 , 0 , sample . Width , sample . Height ), Bounds , GraphicsUnit . Pixel ); return sample ; } } /// /// Creates a new Window /// /// The image of the parent zone /// The position and size of the window /// Does the window need to generate a tesseract engine (takes time and ressources) public Window ( Bitmap image , Rectangle bounds , bool generateEngine = true ) { Image = image ; Bounds = bounds ; if ( generateEngine ) { Engine = new TesseractEngine ( TESS_DATA_FOLDER . FullName , \"eng\" , EngineMode . Default ); Engine . DefaultPageSegMode = PageSegMode . SingleLine ; } //DEBUG /* if (!Directory.Exists(STRING_DEBUG_FOLDER)) Directory.CreateDirectory(STRING_DEBUG_FOLDER); if (!Directory.Exists(LAPTIME_DEBUG_FOLDER)) Directory.CreateDirectory(LAPTIME_DEBUG_FOLDER); if (!Directory.Exists(GAPTOLEADER_DEBUG_FOLDER)) Directory.CreateDirectory(GAPTOLEADER_DEBUG_FOLDER); if (!Directory.Exists(SECTOR1_DEBUG_FOLDER)) Directory.CreateDirectory(SECTOR1_DEBUG_FOLDER); if (!Directory.Exists(SECTOR2_DEBUG_FOLDER)) Directory.CreateDirectory(SECTOR2_DEBUG_FOLDER); if (!Directory.Exists(SECTOR3_DEBUG_FOLDER)) Directory.CreateDirectory(SECTOR3_DEBUG_FOLDER); if (!Directory.Exists(DRS_DEBUG_FOLDER)) Directory.CreateDirectory(DRS_DEBUG_FOLDER); if (!Directory.Exists(TYRE_DEBUG_FOLDER)) Directory.CreateDirectory(TYRE_DEBUG_FOLDER); */ } /// /// Method that will have to be used by the childrens to let the model make them decode the images they have /// /// Returns an object because we dont know what kind of return it will be public virtual Object DecodePng () { return \"NaN\" ; } /// /// Method that will have to be used by the childrens to let the model make them decode the images they have /// /// This is a list of the different possible drivers in the race. It should not be too big but NEVER be too short /// Returns an object because we dont know what kind of return it will be public virtual Object DecodePng ( List < string > driverList ) { return \"NaN\" ; } /// /// This converts an image into a byte[]. It can be usefull when doing unsafe stuff. Use at your own risks /// /// The image you want to convert /// A byte array containing the image informations public static byte [] ImageToByte ( Image inputImage ) { using ( var stream = new MemoryStream ()) { inputImage . Save ( stream , System . Drawing . Imaging . ImageFormat . Png ); return stream . ToArray (); } } /// /// This method is used to recover a time from a PNG using Tesseract OCR /// /// The image where the text is /// The type of window it is /// The Tesseract Engine /// The time in milliseconds public static int GetTimeFromPng ( Bitmap image , OcrImage . WindowType windowType , TesseractEngine Engine ) { //Kind of a big method but it has a lot of error handling and has to work with three special cases string rawResult = \"\" ; int result = 0 ; //Debug int salt = rnd . Next ( 0 , 999999 ); switch ( windowType ) { case OcrImage . WindowType . Sector : //The usual sector is in this form : 33.456 Engine . SetVariable ( \"tessedit_char_whitelist\" , \"0123456789.\" ); break ; case OcrImage . WindowType . LapTime : //The usual Lap time is in this form : 1:45:345 Engine . SetVariable ( \"tessedit_char_whitelist\" , \"0123456789.:\" ); break ; case OcrImage . WindowType . Gap : //The usual Gap is in this form : + 34.567 Engine . SetVariable ( \"tessedit_char_whitelist\" , \"0123456789.+\" ); break ; default : Engine . SetVariable ( \"tessedit_char_whitelist\" , \"\" ); break ; } Bitmap enhancedImage = new OcrImage ( image ). Enhance ( windowType ); var tessImage = Pix . LoadFromMemory ( ImageToByte ( enhancedImage )); Page page = Engine . Process ( tessImage ); Graphics g = Graphics . FromImage ( enhancedImage ); // Get the iterator for the page layout using ( var iter = page . GetIterator ()) { // Loop over the elements of the page layout iter . Begin (); do { // Get the text for the current element try { rawResult += iter . GetText ( PageIteratorLevel . Word ); } catch { //nothing we just dont add it if its not a number } } while ( iter . Next ( PageIteratorLevel . Word )); } List < string > rawNumbers ; //In the gaps we can find '+' but we dont care about it its redondant a driver will never be - something if ( windowType == OcrImage . WindowType . Gap ) rawResult = Regex . Replace ( rawResult , \"[^0-9.:]\" , \"\" ); //Splits into minuts seconds miliseconds rawNumbers = rawResult . Split ( '.' , ':' ). ToList < string >(); //removes any empty cells (tho this usually sign of a really bad OCR implementation tbh will have to be fixed higher in the chian) rawNumbers . RemoveAll ( x => (( string ) x ) == \"\" ); int minuts = 0 ; int seconds = 0 ; int miliseconds = 0 ; switch ( windowType ) { case OcrImage . WindowType . Sector : //Usually there is supposed to be only 2 parts. if ( rawNumbers . Count == 2 ) { //The perect case try { seconds = Convert . ToInt32 ( rawNumbers [ 0 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 1 ]. ToString ()); } catch { Console . WriteLine ( \"Sector time convertion failed\" ); } } else { if ( rawNumbers . Count == 1 ) { //Here it is a little harder... Usually its because a '.' has been overlooked or interpreted as a number if ( rawNumbers [ 0 ]. Length == 6 ) { //The '.' has been understood as a number try { seconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]. ToString () + rawNumbers [ 0 ][ 1 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 3 ]. ToString () + rawNumbers [ 0 ][ 4 ]. ToString () + rawNumbers [ 0 ][ 5 ]. ToString ()); } catch { Console . WriteLine ( \"Sector time convertion failed\" ); } } else { if ( rawNumbers [ 0 ]. Length == 5 ) { //The '.' has been overlooked try { seconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]. ToString () + rawNumbers [ 0 ][ 1 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 2 ]. ToString () + rawNumbers [ 0 ][ 3 ]. ToString () + rawNumbers [ 0 ][ 4 ]. ToString ()); } catch { Console . WriteLine ( \"Sector time convertion failed\" ); } } else { Console . WriteLine ( \"Sector time convertion failed\" ); } } } else { //The OCR detected more than 1 '.' wich is concerning because that means that something went really wrong Console . WriteLine ( \"Sector time convertion failed\" ); } } result = 0 ; result += seconds * 1000 ; result += miliseconds ; break ; case OcrImage . WindowType . LapTime : if ( rawNumbers . Count == 3 ) { //The normal way try { minuts = Convert . ToInt32 ( rawNumbers [ 0 ]. ToString ()); seconds = Convert . ToInt32 ( rawNumbers [ 1 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 2 ]. ToString ()); } catch { Console . WriteLine ( \"Lap time convertion failed\" ); } } else { if ( rawNumbers . Count == 2 ) { //Either the ':' or the '.' has been missinterpreted if ( rawNumbers [ 0 ]. Length > rawNumbers [ 1 ]. Length ) { //The ':' has been missinterpreted if ( rawNumbers [ 0 ]. Length == 3 ) { //It has been forgotten try { minuts = Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]. ToString ()); seconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 1 ]. ToString () + rawNumbers [ 0 ][ 2 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 1 ]); } catch { Console . WriteLine ( \"Lap time convertion failed\" ); } } else { if ( rawNumbers [ 0 ]. Length == 4 ) { //I has been translated into an other number try { minuts = Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]. ToString ()); seconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 2 ]. ToString () + rawNumbers [ 0 ][ 3 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 1 ]); } catch { Console . WriteLine ( \"Lap time convertion failed\" ); } } else { //This could happen if the ':' has been missinterpreted with a lap time of over 9 minuts (HIGLY IMPROBABLE) Console . WriteLine ( \"Lap time convertion failed\" ); } } } else { //The '.' has been missinterpreted if ( rawNumbers [ 1 ]. Length == 5 ) { //It has been forgotten minuts = Convert . ToInt32 ( rawNumbers [ 0 ]. ToString ()); seconds = Convert . ToInt32 ( rawNumbers [ 1 ][ 0 ]. ToString () + rawNumbers [ 1 ][ 1 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 1 ][ 2 ]. ToString () + rawNumbers [ 1 ][ 3 ]. ToString () + rawNumbers [ 1 ][ 4 ]. ToString ()); } else { if ( rawNumbers [ 1 ]. Length == 6 ) { try { //It has been interpreted as a number minuts = Convert . ToInt32 ( rawNumbers [ 0 ]. ToString ()); seconds = Convert . ToInt32 ( rawNumbers [ 1 ][ 0 ]. ToString () + rawNumbers [ 1 ][ 1 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 1 ][ 3 ]. ToString () + rawNumbers [ 1 ][ 4 ]. ToString () + rawNumbers [ 1 ][ 5 ]. ToString ()); } catch { //It can happen and to be honest I dont know how to fix it } } else { Console . WriteLine ( \"Lap time convertion failed\" ); } } } } else { if ( rawNumbers . Count == 1 ) { //Both the '.' and the ':' have been missinterpreted if ( rawNumbers [ 0 ]. Length == 6 ) { //The just all have been forgotten try { minuts = Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]. ToString ()); seconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 1 ]. ToString () + rawNumbers [ 0 ][ 2 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 3 ]. ToString () + rawNumbers [ 0 ][ 4 ]. ToString () + rawNumbers [ 0 ][ 5 ]. ToString ()); } catch { Console . WriteLine ( \"Lap time convertion failed\" ); } } else { if ( rawNumbers [ 0 ]. Length == 7 ) { //The '.' or ':' have been interpreted as a number (usually the ':') try { minuts = Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]. ToString ()); seconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 2 ]. ToString () + rawNumbers [ 0 ][ 3 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 4 ]. ToString () + rawNumbers [ 0 ][ 5 ]. ToString () + rawNumbers [ 0 ][ 6 ]. ToString ()); } catch { Console . WriteLine ( \"Lap time convertion failed\" ); } } else { if ( rawNumbers [ 0 ]. Length == 8 ) { //Both have been interpreted as a number try { minuts = Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]. ToString ()); seconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 2 ]. ToString () + rawNumbers [ 0 ][ 3 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 5 ]. ToString () + rawNumbers [ 0 ][ 6 ]. ToString () + rawNumbers [ 0 ][ 7 ]. ToString ()); } catch { Console . WriteLine ( \"Lap time convertion failed\" ); } } else { //I dont know what could have happened Console . WriteLine ( \"Lap time convertion failed\" ); } } } } else { //I dont know what could have happened Console . WriteLine ( \"Lap time convertion failed\" ); } } } result = 0 ; result += minuts * 60 * 1000 ; result += seconds * 1000 ; result += miliseconds ; break ; case OcrImage . WindowType . Gap : if ( rawNumbers . Count == 2 ) { // This should be the x.xxx or a missed x:xx.xxx if ( rawNumbers [ 0 ]. Length > 2 ) { //Its a missed x:xx.xxx if ( rawNumbers [ 0 ]. Length == 3 ) { //It forgot the \":\" try { minuts = Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]. ToString ()); seconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 1 ]. ToString () + rawNumbers [ 0 ][ 2 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 1 ]); } catch { Console . WriteLine ( \"Gap to leader convertion failed\" ); } } else { //The \":\" has been mistaken as a number if ( rawNumbers [ 0 ]. Length == 4 ) { try { minuts = Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]. ToString ()); seconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 2 ]. ToString () + rawNumbers [ 0 ][ 3 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 1 ]); } catch { Console . WriteLine ( \"Gap to leader convertion failed\" ); } } else { Console . WriteLine ( \"Gap to leader convertion failed\" ); } } } else { //It should be a normal x.xxx or xx.xxx try { seconds = Convert . ToInt32 ( rawNumbers [ 0 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 1 ]. ToString ()); } catch { Console . WriteLine ( \"Gap to leader convertion failed\" ); } } } else { if ( rawNumbers . Count == 1 ) { //can be anything depending on the size of the string if ( rawNumbers [ 0 ]. Length == 4 ) { //We just missed the '.' try { seconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 1 ]. ToString () + rawNumbers [ 0 ][ 2 ]. ToString () + rawNumbers [ 0 ][ 3 ]. ToString ()); } catch { Console . WriteLine ( \"Gap to leader convertion failed\" ); } } else { if ( rawNumbers [ 0 ]. Length == 5 ) { //We just missed the '.' try { seconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 0 ]. ToString () + rawNumbers [ 0 ][ 1 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 0 ][ 2 ]. ToString () + rawNumbers [ 0 ][ 3 ]. ToString () + rawNumbers [ 0 ][ 4 ]. ToString ()); } catch { Console . WriteLine ( \"Gap to leader convertion failed\" ); } } //There is just too much possibilities that it would be stupid to try and tell them appart so for now im leaving that as just an error Console . WriteLine ( \"Gap to leader convertion failed\" ); } } else { if ( rawNumbers . Count == 3 ) { // This should be the x:xx.xxx try { //Gaps cant be more than 9 minuts so if there is more than 1 digit it means that the '+' has been understood as an other number if ( rawNumbers [ 0 ]. Length > 1 ) rawNumbers [ 0 ] = rawNumbers [ 0 ][ rawNumbers [ 0 ]. Length - 1 ]. ToString (); minuts = Convert . ToInt32 ( rawNumbers [ 0 ]. ToString ()); seconds = Convert . ToInt32 ( rawNumbers [ 1 ]. ToString ()); miliseconds = Convert . ToInt32 ( rawNumbers [ 2 ]. ToString ()); } catch { Console . WriteLine ( \"Gap to leader convertion failed\" ); } } } } result = 0 ; result += minuts * 60 * 1000 ; result += seconds * 1000 ; result += miliseconds ; break ; default : try { result = Convert . ToInt32 ( rawNumbers [ 0 ]. ToString ()); } catch { result = 0 ; } break ; } page . Dispose (); return result ; } /// /// Method that recovers strings from an image using Tesseract OCR /// /// The image of the window that contains text /// The Tesseract engine /// The list of allowed chars /// The type of window the text is on. Depending on the context the OCR will behave differently /// the string it found public static string GetStringFromPng ( Bitmap image , TesseractEngine Engine , string allowedChars = \"\" , OcrImage . WindowType windowType = OcrImage . WindowType . Text ) { string result = \"\" ; //Debug int salt = rnd . Next ( 0 , 999999 ); Engine . SetVariable ( \"tessedit_char_whitelist\" , allowedChars ); Bitmap rawData = image ; Bitmap enhancedImage = new OcrImage ( rawData ). Enhance ( windowType ); Page page = Engine . Process ( enhancedImage ); using ( var iter = page . GetIterator ()) { iter . Begin (); do { result += iter . GetText ( PageIteratorLevel . Word ); } while ( iter . Next ( PageIteratorLevel . Word )); } page . Dispose (); return result ; } /// /// Get a smaller image from a bigger one /// /// The big bitmap you want to get a part of /// The dimensions of the new bitmap /// The little bitmap protected Bitmap GetSmallBitmapFromBigOne ( Bitmap inputBitmap , Rectangle newBitmapDimensions ) { Bitmap sample = new Bitmap ( newBitmapDimensions . Width , newBitmapDimensions . Height ); Graphics g = Graphics . FromImage ( sample ); g . DrawImage ( inputBitmap , new Rectangle ( 0 , 0 , sample . Width , sample . Height ), newBitmapDimensions , GraphicsUnit . Pixel ); return sample ; } /// /// Returns the closest string from a list of options /// /// an array of all the possibilities /// the string you want to compare /// The closest option protected static string FindClosestMatch ( List < string > options , string testString ) { var closestMatch = \"\" ; var closestDistance = int . MaxValue ; foreach ( var item in options ) { var distance = LevenshteinDistance ( item , testString ); if ( distance < closestDistance ) { closestMatch = item ; closestDistance = distance ; } } return closestMatch ; } //This method has been generated with the help of ChatGPT /// /// Method that computes a score of distance between two strings /// /// The first string (order irrelevant) /// The second string (order irrelevant) /// The levenshtein distance protected static int LevenshteinDistance ( string string1 , string string2 ) { if ( string . IsNullOrEmpty ( string1 )) { return string . IsNullOrEmpty ( string2 ) ? 0 : string2 . Length ; } if ( string . IsNullOrEmpty ( string2 )) { return string . IsNullOrEmpty ( string1 ) ? 0 : string1 . Length ; } var d = new int [ string1 . Length + 1 , string2 . Length + 1 ]; for ( var i = 0 ; i <= string1 . Length ; i ++) { d [ i , 0 ] = i ; } for ( var j = 0 ; j <= string2 . Length ; j ++) { d [ 0 , j ] = j ; } for ( var i = 1 ; i <= string1 . Length ; i ++) { for ( var j = 1 ; j <= string2 . Length ; j ++) { var cost = ( string1 [ i - 1 ] == string2 [ j - 1 ]) ? 0 : 1 ; d [ i , j ] = Math . Min ( Math . Min ( d [ i - 1 , j ] + 1 , d [ i , j - 1 ] + 1 ), d [ i - 1 , j - 1 ] + cost ); } } return d [ string1 . Length , string2 . Length ]; } } }","title":"Window.cs"},{"location":"Code/recoverCookiesCSV.html","text":"recoverCookiesCSV.py # Rohmer Maxime # RecoverCookies.py # Little script that recovers the cookies stored in the chrome sqlite database and then decrypts them using the key stored in the chrome files # This script has been created to be used by an other programm or for the data to not be used directly. This is why it stores all the decoded cookies in a csv. (Btw could be smart for the end programm to delete the csv after using it) # Parts of this cript have been created with the help of ChatGPT import os import json import base64 import sqlite3 import win32crypt from Cryptodome.Cipher import AES from pathlib import Path import csv def get_master_key (): with open ( os . getenv ( \"localappdata\" ) + \" \\\\ Google \\\\ Chrome \\\\ User Data \\\\ Local State\" , \"r\" ) as f : local_state = f . read () local_state = json . loads ( local_state ) master_key = base64 . b64decode ( local_state [ \"os_crypt\" ][ \"encrypted_key\" ]) master_key = master_key [ 5 :] # removing DPAPI master_key = win32crypt . CryptUnprotectData ( master_key , None , None , None , 0 )[ 1 ] print ( \"MASTER KEY :\" ) print ( master_key ) print ( len ( master_key )) return master_key def decrypt_payload ( cipher , payload ): return cipher . decrypt ( payload ) def generate_cipher ( aes_key , iv ): return AES . new ( aes_key , AES . MODE_GCM , iv ) def decrypt_password ( buff , master_key ): try : iv = buff [ 3 : 15 ] payload = buff [ 15 :] cipher = generate_cipher ( master_key , iv ) decrypted_pass = decrypt_payload ( cipher , payload ) decrypted_pass = decrypted_pass [: - 16 ] . decode () # remove suffix bytes return decrypted_pass except Exception : # print(\"Probably saved password from Chrome version older than v80\\n\") # print(str(e)) return \"Chrome < 80\" master_key = get_master_key () cookies_path = Path ( os . getenv ( \"localappdata\" ) + \" \\\\ Google \\\\ Chrome \\\\ User Data \\\\ Default \\\\ Network \\\\ Cookies\" ) if not cookies_path . exists (): raise ValueError ( \"Cookies file not found\" ) with sqlite3 . connect ( cookies_path ) as connection : connection . row_factory = sqlite3 . Row cursor = connection . cursor () cursor . execute ( \"SELECT * FROM cookies\" ) with open ( 'cookies.csv' , 'a' , newline = '' ) as csvfile : fieldnames = [ 'host_key' , 'name' , 'value' , 'path' , 'expires_utc' , 'is_secure' , 'is_httponly' ] writer = csv . DictWriter ( csvfile , fieldnames = fieldnames ) if csvfile . tell () == 0 : writer . writeheader () for row in cursor . fetchall (): decrypted_value = decrypt_password ( row [ \"encrypted_value\" ], master_key ) writer . writerow ({ 'host_key' : row [ \"host_key\" ], 'name' : row [ \"name\" ], 'value' : decrypted_value , 'path' : row [ \"path\" ], 'expires_utc' : row [ \"expires_utc\" ], 'is_secure' : row [ \"is_secure\" ], 'is_httponly' : row [ \"is_httponly\" ] }) print ( \"Finished CSV\" )","title":"recoverCookiesCSV.py"},{"location":"Code/recoverCookiesCSV.html#recovercookiescsvpy","text":"# Rohmer Maxime # RecoverCookies.py # Little script that recovers the cookies stored in the chrome sqlite database and then decrypts them using the key stored in the chrome files # This script has been created to be used by an other programm or for the data to not be used directly. This is why it stores all the decoded cookies in a csv. (Btw could be smart for the end programm to delete the csv after using it) # Parts of this cript have been created with the help of ChatGPT import os import json import base64 import sqlite3 import win32crypt from Cryptodome.Cipher import AES from pathlib import Path import csv def get_master_key (): with open ( os . getenv ( \"localappdata\" ) + \" \\\\ Google \\\\ Chrome \\\\ User Data \\\\ Local State\" , \"r\" ) as f : local_state = f . read () local_state = json . loads ( local_state ) master_key = base64 . b64decode ( local_state [ \"os_crypt\" ][ \"encrypted_key\" ]) master_key = master_key [ 5 :] # removing DPAPI master_key = win32crypt . CryptUnprotectData ( master_key , None , None , None , 0 )[ 1 ] print ( \"MASTER KEY :\" ) print ( master_key ) print ( len ( master_key )) return master_key def decrypt_payload ( cipher , payload ): return cipher . decrypt ( payload ) def generate_cipher ( aes_key , iv ): return AES . new ( aes_key , AES . MODE_GCM , iv ) def decrypt_password ( buff , master_key ): try : iv = buff [ 3 : 15 ] payload = buff [ 15 :] cipher = generate_cipher ( master_key , iv ) decrypted_pass = decrypt_payload ( cipher , payload ) decrypted_pass = decrypted_pass [: - 16 ] . decode () # remove suffix bytes return decrypted_pass except Exception : # print(\"Probably saved password from Chrome version older than v80\\n\") # print(str(e)) return \"Chrome < 80\" master_key = get_master_key () cookies_path = Path ( os . getenv ( \"localappdata\" ) + \" \\\\ Google \\\\ Chrome \\\\ User Data \\\\ Default \\\\ Network \\\\ Cookies\" ) if not cookies_path . exists (): raise ValueError ( \"Cookies file not found\" ) with sqlite3 . connect ( cookies_path ) as connection : connection . row_factory = sqlite3 . Row cursor = connection . cursor () cursor . execute ( \"SELECT * FROM cookies\" ) with open ( 'cookies.csv' , 'a' , newline = '' ) as csvfile : fieldnames = [ 'host_key' , 'name' , 'value' , 'path' , 'expires_utc' , 'is_secure' , 'is_httponly' ] writer = csv . DictWriter ( csvfile , fieldnames = fieldnames ) if csvfile . tell () == 0 : writer . writeheader () for row in cursor . fetchall (): decrypted_value = decrypt_password ( row [ \"encrypted_value\" ], master_key ) writer . writerow ({ 'host_key' : row [ \"host_key\" ], 'name' : row [ \"name\" ], 'value' : decrypted_value , 'path' : row [ \"path\" ], 'expires_utc' : row [ \"expires_utc\" ], 'is_secure' : row [ \"is_secure\" ], 'is_httponly' : row [ \"is_httponly\" ] }) print ( \"Finished CSV\" )","title":"recoverCookiesCSV.py"}]} \ No newline at end of file diff --git a/site/sitemap.xml.gz b/site/sitemap.xml.gz index 78244343bbbb6000c1cc6cc1b4da5cd713f1d018..df7661a6b53a2b22e60665f3d42f4e93c304c430 100644 GIT binary patch delta 13 Ucmb=gXP58h;P`j4aUy#K03mP%7ytkO delta 13 Ucmb=gXP58h;P_$LFp<3i03LV*fdBvi diff --git a/temp_annexes/Code/ConfigurationTool.md b/temp_annexes/Code/ConfigurationTool.md deleted file mode 100644 index a1bcfbc..0000000 --- a/temp_annexes/Code/ConfigurationTool.md +++ /dev/null @@ -1,266 +0,0 @@ -# ConfigurationTool.cs - -``` cs -/// Author : Maxime Rohmer -/// Date : 30/05/2023 -/// File : ConfigurationTool.cs -/// Brief : Class that contains all the methods used to create config files for the main programm -/// Version : Alpha 1.0 - -using System; -using System.Collections.Generic; -using System.Drawing; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Tesseract; -using System.IO; -using System.Text.Json; -using System.Text.Json.Nodes; - -namespace TrackTrends -{ - public class ConfigurationTool - { - public Zone MainZone; - public const int NUMBER_OF_DRIVERS = 20; - public const int NUMBER_OF_ZONES = 9; - public const string CONFIGS_FOLDER_NAME = "./Presets/"; - /// - /// Creates the configuration tool. It can only be created if you already have the dimensions of the main zone - /// - /// The full image coming from the F1TV Data Channel - /// The dimensions of the zone where all the drivers data are situated - public ConfigurationTool(Bitmap fullImage, Rectangle mainZoneDimensions) - { - MainZone = new Zone(fullImage, mainZoneDimensions,"Main"); - AutoCalibrate(); - } - /// - /// Resets the main zone - /// - public void ResetMainZone() - { - MainZone.ResetZones(); - } - /// - /// Reset the windows - /// - public void ResetWindows() - { - MainZone.ResetWindows(); - } - /// - /// Save the current config in a JSON file stored in /Presets/ - /// - /// A list of all the drivers in the GP. IMPORTANT, they need to ALL be mentionned or the program wont be able to detect the missing ones and will F up everything - /// The name the config should have - public void SaveToJson(List drivers, string configName) - { - string JSON = ""; - - JsonObject jsonFileObject = new JsonObject(); - - //Creates the mainZone object - JsonObject mainZoneObject = new JsonObject(); - - mainZoneObject.Add("x",MainZone.Bounds.X); - mainZoneObject.Add("y",MainZone.Bounds.Y); - mainZoneObject.Add("width",MainZone.Bounds.Width); - mainZoneObject.Add("height",MainZone.Bounds.Height); - - JsonArray driverZonesArray = new JsonArray(); - - //Creates all the subzones that contain driver infos - int DriverID = 0; - foreach (Zone driverZone in MainZone.Zones) - { - DriverID++; - JsonObject driverZoneObject = new JsonObject(); - driverZoneObject.Add("name","Driver"+DriverID); - driverZoneObject.Add("x", driverZone.Bounds.X); - driverZoneObject.Add("y", driverZone.Bounds.Y); - driverZoneObject.Add("width", driverZone.Bounds.Width); - driverZoneObject.Add("height", driverZone.Bounds.Height); - - JsonArray windowsArray = new JsonArray(); - JsonObject windowObject = new JsonObject(); - - //Creates all the windows of the current driver zone - //Note : We store ALL the windows and zones in the JSON because they are not spaced exactly the same on the main zone - foreach (Window window in driverZone.Windows) - { - windowObject.Add(window.Name, new JsonObject { - { "x", window.Bounds.X }, - { "y", window.Bounds.Y }, - { "width", window.Bounds.Width }, - { "height", window.Bounds.Height } - }); - } - windowsArray.Add(windowObject); - - driverZoneObject.Add("Windows",windowsArray); - - driverZonesArray.Add(driverZoneObject); - } - - mainZoneObject.Add("DriverZones",driverZonesArray); - - JsonArray driversArray = new JsonArray(); - - foreach (string driver in drivers) - { - driversArray.Add(driver); - } - - mainZoneObject.Add("Drivers",driversArray); - - jsonFileObject.Add("Main",mainZoneObject); - - JSON = jsonFileObject.ToString(); - - //Saving the file - string path = CONFIGS_FOLDER_NAME + configName; - - if (File.Exists(path + ".json")) - { - //We need to create a new name - int count = 2; - while (File.Exists(path + "_" + count + ".json")) - { - count++; - } - path += "_" + count + ".json"; - } - else - { - path += ".json"; - } - - File.WriteAllText(path, JSON); - } - /// - /// Adds a window in the windows list - /// Be carefull of the order. It cant be random or it will crash. The programm expect the first to be position, second Gap to leader etc... - /// - /// The bounds of the window - public void AddWindows(List rectangles) - { - foreach (Zone driverZone in MainZone.Zones) - { - Bitmap zoneImage = driverZone.ZoneImage; - - for (int i = 1; i <= rectangles.Count; i++) - { - switch (i) - { - case 1: - //First zone should be the driver's Position - driverZone.AddWindow(new DriverPositionWindow(driverZone.ZoneImage, rectangles[i - 1], false)); - break; - case 2: - //Second zone should be the Gap to leader - driverZone.AddWindow(new DriverGapToLeaderWindow(driverZone.ZoneImage, rectangles[i - 1], false)); - break; - case 3: - //Third zone should be the driver's Lap Time - driverZone.AddWindow(new DriverLapTimeWindow(driverZone.ZoneImage, rectangles[i - 1], false)); - break; - case 4: - //Fourth zone should be the driver's DRS status - driverZone.AddWindow(new DriverDrsWindow(driverZone.ZoneImage, rectangles[i - 1], false)); - break; - case 5: - //Fifth zone should be the driver's Tyre's informations - driverZone.AddWindow(new DriverTyresWindow(driverZone.ZoneImage, rectangles[i - 1], false)); - break; - case 6: - //Sixth zone should be the driver's Name - driverZone.AddWindow(new DriverNameWindow(driverZone.ZoneImage, rectangles[i - 1], false)); - break; - case 7: - //Seventh zone should be the driver's First Sector - driverZone.AddWindow(new DriverSectorWindow(driverZone.ZoneImage, rectangles[i - 1], 1, false)); - break; - case 8: - //Zone number eight should be the driver's Second Sector - driverZone.AddWindow(new DriverSectorWindow(driverZone.ZoneImage, rectangles[i - 1], 2, false)); - break; - case 9: - //Zone number nine should be the driver's Position Sector - driverZone.AddWindow(new DriverSectorWindow(driverZone.ZoneImage, rectangles[i - 1], 3, false)); - break; - } - } - } - } - /// - /// This will automatically create all the driver zones at the correct places if the main zone has been weel positionned - /// You cant just divide the image by the number of pilots or it will be messy and inconsistent at the end (Garbage in Garbage Out) - /// - public void AutoCalibrate() - { - List detectedText = new List(); - List zones = new List(); - - TesseractEngine engine = new TesseractEngine(Window.TESS_DATA_FOLDER.FullName, "eng", EngineMode.Default); - Image image = MainZone.ZoneImage; - var tessImage = Pix.LoadFromMemory(Window.ImageToByte(image)); - - Page page = engine.Process(tessImage); - //Runs a quick OCR detection. Not to detect any content but just to detect where is all the text positionned. - //For each row it decides the best Zone location and adds it to the Driver zone list - using (var iter = page.GetIterator()) - { - iter.Begin(); - do - { - Rect boundingBox; - if (iter.TryGetBoundingBox(PageIteratorLevel.Word, out boundingBox)) - { - //We remove all the rectangles that are definitely too big - if (boundingBox.Height < image.Height / NUMBER_OF_DRIVERS) - { - //Now we add a filter to only get the boxes in the right because they are much more reliable in size - if (boundingBox.X1 > image.Width / 2) - { - //Now we check if an other square box has been found roughly in the same y axis - bool match = false; - //The tolerance is roughly half the size that a window will be - int tolerance = (image.Height / NUMBER_OF_DRIVERS) / 2; - - foreach (Rectangle rect in detectedText) - { - if (rect.Y > boundingBox.Y1 - tolerance && rect.Y < boundingBox.Y1 + tolerance) - { - //There already is a rectangle in this line - match = true; - } - } - //if nothing matched we can add it - if (!match) - detectedText.Add(new Rectangle(boundingBox.X1, boundingBox.Y1, boundingBox.Width, boundingBox.Height)); - } - } - } - } while (iter.Next(PageIteratorLevel.Word)); - } - //DEBUG - int i = 1; - foreach (Rectangle Rectangle in detectedText) - { - Rectangle windowRectangle; - Size windowSize = new Size(image.Width, image.Height / NUMBER_OF_DRIVERS); - Point windowLocation = new Point(0, (Rectangle.Y + Rectangle.Height / 2) - windowSize.Height / 2); - windowRectangle = new Rectangle(windowLocation, windowSize); - //We add the driver zones - Zone driverZone = new Zone(MainZone.ZoneImage, windowRectangle, "DriverZone"); - MainZone.AddZone(driverZone); - //driverZone.ZoneImage.Save("Driver" + i+".png"); - i++; - } - } - } -} - -``` diff --git a/temp_annexes/Code/DataWrapper.md b/temp_annexes/Code/DataWrapper.md deleted file mode 100644 index b349a37..0000000 --- a/temp_annexes/Code/DataWrapper.md +++ /dev/null @@ -1,384 +0,0 @@ -# DataWrapper.cs - -``` cs -/// Author : Maxime Rohmer -/// Date : 30/05/2023 -/// File : DataWrapper.cs -/// Brief : Class that is used to interface between the main Form (vue) and the Storage (wich is a class that wraps the sqlite database, so the model) its almost MVC :D -/// Version : Alpha 1.0 - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows.Forms; -using System.Drawing; - -namespace TrackTrends -{ - internal class DataWrapper - { - private Reader Reader; - private SqliteStorage Storage; - List> LiveDriverDataLogs = new List>(); - //Note : It could be usefull to get the mainForm at the start of the programm and not have to take it in half of the methods. - /// - /// Constructs a new DataWrapper. It needs the config file so it can create a Reader, It also needs a first screenshot for the same reason - /// - /// The JSON config file that is created by the configuration tool - /// A screenshot of the - public DataWrapper(string configFile, Bitmap screenshot) - { - Reader = new Reader(configFile, screenshot, true); - //The Storage is here and on the Reader. It seems bad but it is ok as we dont use it at all to insert data and are only using it here to read some. The reader takes care of the inserts (Note: We could technically do both here but I did not find it usefull to transfer everything here) - Storage = Reader.Storage; - } - /// - /// Refreshes the controller so it has the latest driver datas (Be sure to call it everytime you need to use any other method and expects the data to be up to date) - /// - /// Error code, 0 is success, 1 is not (Note: Maybe it could be interesting in the future to add some more error handling here) - public int Refresh() - { - LiveDriverDataLogs.Add(Reader.Decode(Reader.MainZones, Reader.Drivers)); - if (LiveDriverDataLogs.Count > 0) - return 0; - return 1; - } - /// - /// Changes the image to the newest screenshot in all of the zones and windows - /// - /// The new screenshot to put everywhere (Do not mix resolutions) - public void ChangeImage(Bitmap image) - { - Reader.ChangeImage(image); - } - /// - /// Gets all the data from one driver and also displays into the given panel the last five laps (or less if its the sart of the race) Note: Its responsive :D - /// - /// The name of the driver (should not be case sensitive but it MUST already exist in the first list that has been inserted into the DB) - /// The pannel where you want the five last laps to be displayed - /// The Main form. - /// - public DriverData GetFullDriverData(string driverName, Panel lastFiveLapsPanel, Main form1) - { - //Note : I know that its a bad idea to ask the Form in this method and some others because it means that it wont work with any main form. And to that Ill say that... your right ! - DriverData result = new DriverData(); - if (LiveDriverDataLogs.Count > 0) - { - //Searches the most recent live data from the given driverName - foreach (DriverData data in LiveDriverDataLogs[LiveDriverDataLogs.Count - 1]) - { - if (data.Name == driverName) - result = data; - } - - if (result.Name != "") - { - //Recovers and displays the last five laps from the driver - lastFiveLapsPanel.Controls.Clear(); - Size labelDimensions = new Size(lastFiveLapsPanel.Width, lastFiveLapsPanel.Height / 5); - - List<(int LapTime, int Lap)> lapsInfos = Storage.GetDriverLaptimes(driverName, 5); - - int id = 0; - foreach ((int LapTime, int Lap) lapData in lapsInfos) - { - //Hardcodes the new button. - //Note : It could be smart to have like a default button for all the methods to use without needing to rewrite everything. - Button newButton = new Button(); - lastFiveLapsPanel.Controls.Add(newButton); - newButton.Name = driverName + "_" + lapData.Lap; - newButton.Text = Reader.ConvertMsToTime(lapData.LapTime); - newButton.Size = labelDimensions; - newButton.FlatStyle = FlatStyle.Popup; - newButton.Click += form1.btnLapTime_Click; - newButton.Location = new Point(0, id * newButton.Height); - id++; - } - } - } - - return result; - } - /// - /// Runs trough every drivers live data to recover the drivers that are close to each others - /// - /// The control that will host the displayed battles - /// The main form. It needs to have a method called 'btnDriver_Click' so it can reads the buttons clicks - public void DisplayBattles(Panel pnlBattles,Main form1) - { - DriverData oldDriver = null; - List<(DriverData d1, DriverData d2, int gap)> battles = new List<(DriverData d1, DriverData d2, int gap)>(); - //Search trough all the drivers and finds the one battling - foreach (DriverData driver in LiveDriverDataLogs[LiveDriverDataLogs.Count - 1]) - { - if (oldDriver != null && driver.Position != -1 && oldDriver.Position != -1) - { - if (driver.GapToLeader < oldDriver.GapToLeader) - { - //There is a problem with the drivers gaps - } - else - { - int gap = driver.GapToLeader - oldDriver.GapToLeader; - //3000ms is 3s. If drivers are that close then they are definitely in battle. If they are farther then maybe not - if (gap <= 3000) - { - battles.Add((oldDriver, driver, gap)); - } - } - oldDriver = driver; - } - else - { - oldDriver = driver; - } - } - //We will only display 4 battles max - int maxBattles = 4; - if (battles.Count > 0) - { - pnlBattles.Controls.Clear(); - int maxUiHeight = Math.Max(pnlBattles.Height / maxBattles, pnlBattles.Height / battles.Count); - int id = 0; - foreach ((DriverData d1, DriverData d2, int gap) battle in battles) - { - if(id < maxBattles) - { - //*hardcoding* the different controls that needs to be added to the panel. - //Note : this stuff could totally be handled by the Form with method returning a list of the drivers. It was just easier for me at the time to code it this way but its not the prettiest - Button btnFirstDriver = new Button(); - Button btnSecondDriver = new Button(); - Label lblGap = new Label(); - - pnlBattles.Controls.Add(btnFirstDriver); - pnlBattles.Controls.Add(lblGap); - pnlBattles.Controls.Add(btnSecondDriver); - - btnFirstDriver.Anchor = AnchorStyles.Left | AnchorStyles.Top; - btnSecondDriver.Anchor = AnchorStyles.Right | AnchorStyles.Top; - lblGap.Anchor = AnchorStyles.Right | AnchorStyles.Left | AnchorStyles.Top; - - lblGap.TextAlign = ContentAlignment.MiddleCenter; - lblGap.Font = new Font(lblGap.Font.FontFamily, 15); - - btnFirstDriver.Click += form1.btnDriver_Click; - btnSecondDriver.Click += form1.btnDriver_Click; - - btnFirstDriver.FlatStyle = FlatStyle.Popup; - btnSecondDriver.FlatStyle = FlatStyle.Popup; - lblGap.FlatStyle = FlatStyle.Popup; - - btnFirstDriver.Size = new Size(pnlBattles.Width / 3, maxUiHeight); - btnSecondDriver.Size = new Size(pnlBattles.Width / 3, maxUiHeight); - lblGap.Size = new Size(pnlBattles.Width / 3, maxUiHeight); - - btnFirstDriver.Location = new Point(pnlBattles.Width / 3 * 0, id * maxUiHeight); - lblGap.Location = new Point(pnlBattles.Width / 3 * 1, id * maxUiHeight); - btnSecondDriver.Location = new Point(pnlBattles.Width / 3 * 2, id * maxUiHeight); - - btnFirstDriver.Text = battle.d1.Name; - lblGap.Text = "+ " + Reader.ConvertMsToTime(battle.gap); - if (battle.gap <= 2000) - lblGap.ForeColor = Color.Yellow; - if (battle.gap <= 1000) - lblGap.ForeColor = Color.Green; - btnSecondDriver.Text = battle.d2.Name; - - btnFirstDriver.Name = battle.d1.Name + "_" + id; - lblGap.Name = "lbl_Gap_" + id; - btnSecondDriver.Name = battle.d2.Name + "_" + id; - } - else - { - break; - } - id++; - } - } - } - /// - /// Searches the fastest and slowests drivers and displays them in the given panels - /// - /// Panel that will contain the constructed controls - /// Panel that will contain the constructed controls - /// The main form that needs to implement the method btnDriver_Click to allow it to recover custom buttons click - public void DisplayTimesDeltas(Panel pnlFastest,Panel pnlSlowest, Main form1) - { - List<(int avg, string driverName)> averages = new List<(int avg, string driverName)>(); - foreach (DriverData driver in LiveDriverDataLogs[LiveDriverDataLogs.Count - 1]) - { - //We want to recover the last 5 lap times - List<(int lapTime,int lap)> laps = Storage.GetDriverLaptimes(driver.Name,5); - if(laps.Count > 0) - { - int avg = 0; - foreach ((int lapTime, int lap) lap in laps) - { - avg += lap.lapTime; - } - avg = avg / laps.Count; - averages.Add((avg, driver.Name)); - } - } - int numberOfDriversToShow = 5; - if (averages.Count > 0 && averages.Count > numberOfDriversToShow) - { - averages = averages.OrderBy(item => item.avg).ToList(); - pnlFastest.Controls.Clear(); - pnlSlowest.Controls.Clear(); - int maxUiSize = pnlFastest.Height / numberOfDriversToShow; - - //Displays the fastest drivers - for (int i = 0; i < numberOfDriversToShow; i++) - { - Button newButton = new Button(); - (int avg, string driver) data = averages[i]; - pnlFastest.Controls.Add(newButton); - newButton.Size = new Size(pnlFastest.Width, maxUiSize); - newButton.Location = new Point(0, i * maxUiSize); - newButton.Text = data.driver; - newButton.FlatStyle = FlatStyle.Popup; - newButton.Name = data.driver + "_fastest_" + i; - newButton.Click += form1.btnDriver_Click; - //We take the average time lost per lap - if (i != 0) - newButton.Text += " + " + Reader.ConvertMsToTime(Convert.ToInt32(((float)data.avg - (float)averages[0].avg) / 5.0f)); - } - //Displays the slowests drivers - int badId = 0; - for (int i = averages.Count -1; i >= averages.Count - numberOfDriversToShow; i--) - { - Button newButton = new Button(); - (int avg, string driver) data = averages[i]; - pnlSlowest.Controls.Add(newButton); - newButton.Size = new Size(pnlFastest.Width, maxUiSize); - newButton.Location = new Point(0, badId * maxUiSize); - newButton.Text = data.driver; - newButton.FlatStyle = FlatStyle.Popup; - newButton.Name = data.driver + "_slowest_" + i; - newButton.Click += form1.btnDriver_Click; - //We take the average time lost per lap - newButton.Text += " + " + Reader.ConvertMsToTime(Convert.ToInt32(((float)data.avg - (float)averages[0].avg) / 5.0f)); - badId++; - } - } - } - /// - /// Will add to the list of overtakes the different changes of position - /// - /// The listbox containing all the infos - public void DisplayOvertakes(ListBox lsbResult) - { - //Note : This method SHOULD REALLY not do this but just return a string or a list of string with the new overtakes so the form can handle it as it wishes - if (LiveDriverDataLogs.Count > 1) - { - List oldList = LiveDriverDataLogs[LiveDriverDataLogs.Count - 2]; - List newList = LiveDriverDataLogs[LiveDriverDataLogs.Count - 1]; - for (int i = 0; i < LiveDriverDataLogs[LiveDriverDataLogs.Count - 1].Count;i++) - { - if (oldList[i].Name != newList[i].Name) { - //There has been a change in the standings - for(int y = 0; y < oldList.Count;y++) - { - if (newList[y].Name == oldList[i].Name) - { - //We found its new location - if (y > i) - { - //The driver overtook someone - lsbResult.Items.Add(newList[y].Name + " climbed to " + y); - } - else - { - //The driver got overtook by someone - lsbResult.Items.Add(newList[y].Name + " fell to " + y); - } - - } - } - } - } - } - } - /// - /// Displays a messageBox containing the infos about a lap time - /// - /// The name of the driver that has done the lapTime - /// The number of the lap on wich the lapTime has been set (CAUTION ITS NOT THE RACING LAP ITS FROM THE DB) - /// The time (in ms) of the lap - public void DisplayLapTimeInfos(string driverName, int Lap, string LapTime) - { - List sectors = Storage.GetSectorsFromLapTime(driverName, Lap); - string message = "Lap time infos" + Environment.NewLine; - message += LapTime + Environment.NewLine; - if (sectors.Count > 0) - message += "Sector 1 : " + Reader.ConvertMsToTime(sectors[0]) + Environment.NewLine; - if (sectors.Count > 1) - message += "Sector 2 : " + Reader.ConvertMsToTime(sectors[1]) + Environment.NewLine; - if (sectors.Count > 2) - message += "Sector 3 : " + Reader.ConvertMsToTime(sectors[2]) + Environment.NewLine; - MessageBox.Show(message); - } - /// - /// Displays the live ranking with the names of the drivers and their gap to the leader in the right order - /// - /// The control that will host all the new controls - /// The main form - public void DisplayLiveRanking(Panel pnl, Main form1) - { - if (LiveDriverDataLogs.Count > 0) - { - pnl.Controls.Clear(); - //Gets the last item that should be the most recent data - List liveData = LiveDriverDataLogs[LiveDriverDataLogs.Count - 1]; - - Button[] buttons = new Button[liveData.Count]; - - Size buttonDimensions = new Size(pnl.Width, pnl.Height / liveData.Count); - - for (int driverCount = 0; driverCount < liveData.Count; driverCount++) - { - Button newButton = new Button(); - - newButton.Size = buttonDimensions; - newButton.Location = new Point(0, driverCount * buttonDimensions.Height); - newButton.FlatStyle = FlatStyle.Popup; - - DriverData driver = liveData[driverCount]; - - if (driver.Position == -1) - { - //Its a DNF - newButton.Enabled = false; - } - if (driver.Position > 1) - { - newButton.Text = driver.Name + " +" + Reader.ConvertMsToTime(driver.GapToLeader); - } - else - { - newButton.Text = driver.Name; - } - - newButton.Name = liveData[driverCount].Name; - newButton.TextAlign = ContentAlignment.MiddleLeft; - - newButton.FlatStyle = FlatStyle.Popup; - - newButton.Click += form1.btnDriver_Click; - - buttons[driverCount] = newButton; - } - //Note : It could be better to have this directly in the same loop - foreach (Button button in buttons) - { - pnl.Controls.Add(button); - } - } - } - } -} - -``` diff --git a/temp_annexes/Code/DriverData.md b/temp_annexes/Code/DriverData.md deleted file mode 100644 index b629a2a..0000000 --- a/temp_annexes/Code/DriverData.md +++ /dev/null @@ -1,110 +0,0 @@ -# DriverData.cs - -``` cs -/// Author : Maxime Rohmer -/// Date : 30/05/2023 -/// File : DriverData.cs -/// Brief : File containing classes that behave just like structures to store data about drivers -/// Version : Alpha 1.0 - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace TrackTrends -{ - public class DriverData - { - public bool DRS; //True = Drs is opened - public int GapToLeader; //In ms - public int LapTime; //In ms - public string Name; //Ex: LECLERC - public int Position; //Ex: 1 - public int Sector1; //in ms - public int Sector2; //in ms - public int Sector3; //in ms - public Tyre CurrentTyre;//Ex Soft 11 laps - - public DriverData(bool dRS, int gapToLeader, int lapTime, string name, int position, int sector1, int sector2, int sector3, Tyre tyre) - { - DRS = dRS; - GapToLeader = gapToLeader; - LapTime = lapTime; - Name = name; - Position = position; - Sector1 = sector1; - Sector2 = sector2; - Sector3 = sector3; - CurrentTyre = tyre; - } - /// - /// Creates a default driver data with empty values - /// - public DriverData() - { - DRS = false; - GapToLeader = -1; - LapTime = -1; - Name = "Unknown"; - Position = -1; - Sector1 = -1; - Sector2 = -1; - Sector3 = -1; - CurrentTyre = new Tyre(Tyre.Type.Undefined, -1); - } - /// - /// Method that displays all the data found in a string - /// - /// string containing all the driver datas - public override string ToString() - { - string result = ""; - - //Position - result += "Position : " + Position + Environment.NewLine; - //Gap - result += "GapToLeader : " + Reader.ConvertMsToTime(GapToLeader) + Environment.NewLine; - //LapTime - result += "LapTime : " + Reader.ConvertMsToTime(LapTime) + Environment.NewLine; - //DRS - result += "DRS : " + DRS + Environment.NewLine; - //Tyres - result += "Uses " + CurrentTyre.Coumpound + " tyre " + CurrentTyre.NumberOfLaps + " laps old" + Environment.NewLine; - //Name - result += "DriverName : " + Name + Environment.NewLine; - //Sector 1 - result += "Sector1 : " + Reader.ConvertMsToTime(Sector1) + Environment.NewLine; - //Sector 1 - result += "Sector2 : " + Reader.ConvertMsToTime(Sector2) + Environment.NewLine; - //Sector 1 - result += "Sector3 : " + Reader.ConvertMsToTime(Sector3) + Environment.NewLine; - - return result; - } - } - //Structure to store tyres infos - public struct Tyre - { - //If new tyres were to be added you will have to need to change this enum - public enum Type - { - Soft, - Medium, - Hard, - Inter, - Wet, - Undefined - } - public Type Coumpound; - public int NumberOfLaps; - public Tyre(Type type, int laps) - { - Coumpound = type; - NumberOfLaps = laps; - } - } -} - -``` diff --git a/temp_annexes/Code/DriverDrsWindow.md b/temp_annexes/Code/DriverDrsWindow.md deleted file mode 100644 index 10b957e..0000000 --- a/temp_annexes/Code/DriverDrsWindow.md +++ /dev/null @@ -1,119 +0,0 @@ -# DriverDrsWindow.cs - -``` cs -/// Author : Maxime Rohmer -/// Date : 30/05/2023 -/// File : DriverDrsWindow.cs -/// Brief : Window containing DRS related method and infos -/// Version : Alpha 1.0 - -using System; -using System.Collections.Generic; -using System.Drawing; -using System.Drawing.Imaging; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Tesseract; - -namespace TrackTrends -{ - public class DriverDrsWindow:Window - { - private static int EmptyDrsGreenValue = -1; - private static Random rnd = new Random(); - public DriverDrsWindow(Bitmap image, Rectangle bounds,bool generateEngine = true) : base(image, bounds,generateEngine) - { - Name = "DRS"; - } - /// - /// Method that will decode the content of the window - /// - /// returns a boolean (true = DRS OPEN, false = DRS CLOSED) - public override object DecodePng() - { - bool result = false; - - //DEBUG - //WindowImage.Save("./DRS/"+rnd.Next(0,99999)+".png"); - - int greenValue = GetGreenPixels(); - if (EmptyDrsGreenValue == -1) - EmptyDrsGreenValue = greenValue; - - if (greenValue > EmptyDrsGreenValue + EmptyDrsGreenValue / 100 * 30) - result = true; - - return result; - } - /// - /// Method that will get the green pixel proportion in the image, this can be used to determin if the DRS has been actuated - /// - /// The number of clearely green pixels - private unsafe int GetGreenPixels() - { - int tot = 0; - - Bitmap bmp = WindowImage; - Rectangle rect = new Rectangle(0, 0, bmp.Width, bmp.Height); - BitmapData bmpData = bmp.LockBits(rect, ImageLockMode.ReadOnly, bmp.PixelFormat); - int bytesPerPixel = Bitmap.GetPixelFormatSize(bmp.PixelFormat) / 8; - - unsafe - { - byte* ptr = (byte*)bmpData.Scan0.ToPointer(); - for (int y = 0; y < bmp.Height; y++) - { - byte* currentLine = ptr + (y * bmpData.Stride); - for (int x = 0; x < bmp.Width; x++) - { - byte* pixel = currentLine + (x * bytesPerPixel); - - byte blue = pixel[0]; - byte green = pixel[1]; - byte red = pixel[2]; - - if (green > blue * 1.5 && green > red * 1.5) - { - tot++; - } - } - } - } - bmp.UnlockBits(bmpData); - - return tot; - } - /// - /// This method is used to lock on where exactly the DRS window is - /// - /// Returns a rectangle containing the DRS - public Rectangle GetBox() - { - var tessImage = Pix.LoadFromMemory(ImageToByte(WindowImage)); - Engine.SetVariable("tessedit_char_whitelist", ""); - Page page = Engine.Process(tessImage); - - using (var iter = page.GetIterator()) - { - iter.Begin(); - do - { - Rect boundingBox; - - // Get the bounding box for the current element - if (iter.TryGetBoundingBox(PageIteratorLevel.Word, out boundingBox)) - { - page.Dispose(); - return new Rectangle(boundingBox.X1, boundingBox.X2, boundingBox.Width, boundingBox.Height); - } - } while (iter.Next(PageIteratorLevel.Word)); - - page.Dispose(); - return new Rectangle(0, 0, 0, 0); - } - } - } -} - -``` diff --git a/temp_annexes/Code/DriverGapToLeaderWindow.md b/temp_annexes/Code/DriverGapToLeaderWindow.md deleted file mode 100644 index ca968d7..0000000 --- a/temp_annexes/Code/DriverGapToLeaderWindow.md +++ /dev/null @@ -1,37 +0,0 @@ -# DriverGapToLeaderWindow.cs - -``` cs -/// Author : Maxime Rohmer -/// Date : 30/05/2023 -/// File : DriverGapToLeaderWindow.cs -/// Brief : Window containing infos about the gap to the leader of a driver -/// Version : Alpha 1.0 - -using System; -using System.Collections.Generic; -using System.Drawing; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace TrackTrends -{ - public class DriverGapToLeaderWindow:Window - { - public DriverGapToLeaderWindow(Bitmap image, Rectangle bounds, bool generateEngine = true) : base(image, bounds,generateEngine) - { - Name = "GapToLeader"; - } - /// - /// Decodes the gap to leader using Tesseract OCR - /// - /// Returns the gap to the leader in miliseconds (int) - public override object DecodePng() - { - int result = GetTimeFromPng(WindowImage, OcrImage.WindowType.Gap, Engine); - return result; - } - } -} - -``` diff --git a/temp_annexes/Code/DriverLapTimeWindow.md b/temp_annexes/Code/DriverLapTimeWindow.md deleted file mode 100644 index 6f8a9d8..0000000 --- a/temp_annexes/Code/DriverLapTimeWindow.md +++ /dev/null @@ -1,37 +0,0 @@ -# DriverLapTimeWindow.cs - -``` cs -/// Author : Maxime Rohmer -/// Date : 30/05/2023 -/// File : DriverLapTimeWindow -/// Brief : Window containing infos about the lap time of a driver -/// Version : Alpha 1.0 - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Drawing; - -namespace TrackTrends -{ - public class DriverLapTimeWindow:Window - { - public DriverLapTimeWindow(Bitmap image, Rectangle bounds, bool generateEngine = true) : base(image, bounds,generateEngine) - { - Name = "LapTime"; - } - /// - /// Decodes the lap time contained in the image using OCR Tesseract - /// - /// The laptime in int (ms) - public override object DecodePng() - { - int result = GetTimeFromPng(WindowImage, OcrImage.WindowType.LapTime, Engine); - return result; - } - } -} - -``` diff --git a/temp_annexes/Code/DriverNameWindow.md b/temp_annexes/Code/DriverNameWindow.md deleted file mode 100644 index 514c98f..0000000 --- a/temp_annexes/Code/DriverNameWindow.md +++ /dev/null @@ -1,62 +0,0 @@ -# DriverNameWindow.cs - -``` cs -/// Author : Maxime Rohmer -/// Date : 30/05/2023 -/// File : DriverNameWindow -/// Brief : Window containing infos about the name of the driver -/// Version : Alpha 1.0 - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Drawing; - -namespace TrackTrends -{ - public class DriverNameWindow : Window - { - public DriverNameWindow(Bitmap image, Rectangle bounds, bool generateEngine = true) : base(image, bounds,generateEngine) - { - Name = "Name"; - } - /// - /// Decodes using OCR wich driver name is in the image - /// - /// A list of all the names that can be on the image - /// a string representing the found driver name. It will be one of the ones given in the list - public override object DecodePng(List DriverList) - { - string result = ""; - result = GetStringFromPng(WindowImage, Engine); - - if (!IsADriver(DriverList, result)) - { - //I put everything in uppercase to try to lower the chances of bad answers - result = FindClosestMatch(DriverList.ConvertAll(d => d.ToUpper()), result.ToUpper()); - } - return result; - } - /// - /// Verifies that the name found in the OCR is a valid name - /// - /// The list of all the drivers name that can be found in the image - /// The driver you want to be sure if it exists or not - /// If ye or no the driver exists - private static bool IsADriver(List driverList, string potentialDriver) - { - bool result = false; - //I cant use drivers.Contains because it has missmatched cases and all - foreach (string name in driverList) - { - if (name.ToUpper() == potentialDriver.ToUpper()) - result = true; - } - return result; - } - } -} - -``` diff --git a/temp_annexes/Code/DriverPositionWindow.md b/temp_annexes/Code/DriverPositionWindow.md deleted file mode 100644 index da0ce68..0000000 --- a/temp_annexes/Code/DriverPositionWindow.md +++ /dev/null @@ -1,47 +0,0 @@ -# DriverPositionWindow.cs - -``` cs -/// Author : Maxime Rohmer -/// Date : 30/05/2023 -/// File : DriverPositionWindow.cs -/// Brief : Window containing infos about the position of a driver. -/// Version : Alpha 1.0 - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Drawing; - -namespace TrackTrends -{ - public class DriverPositionWindow:Window - { - public DriverPositionWindow(Bitmap image, Rectangle bounds, bool generateEngine = true) : base(image, bounds,generateEngine) - { - Name = "Position"; - } - /// - /// Decodes the position number using Tesseract OCR - /// - /// An int representing the position of the driver (should be between 1 and 20 included) - public override object DecodePng() - { - string ocrResult = GetStringFromPng(WindowImage, Engine, "0123456789"); - - int position; - try - { - position = Convert.ToInt32(ocrResult); - } - catch - { - position = -1; - } - return position; - } - } -} - -``` diff --git a/temp_annexes/Code/DriverSectorWindow.md b/temp_annexes/Code/DriverSectorWindow.md deleted file mode 100644 index 3329743..0000000 --- a/temp_annexes/Code/DriverSectorWindow.md +++ /dev/null @@ -1,37 +0,0 @@ -# DriverSectorWindow.cs - -``` cs -/// Author : Maxime Rohmer -/// Date : 30/05/2023 -/// File : DriverSectorWindow.cs -/// Brief : Window containing infos about a driver sector time. Can be the first second or third, does not matter. -/// Version : Alpha 1.0 - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Drawing; - -namespace TrackTrends -{ - public class DriverSectorWindow:Window - { - public DriverSectorWindow(Bitmap image, Rectangle bounds, int sectorId, bool generateEngine = true) : base(image, bounds,generateEngine) - { - Name = "Sector"+sectorId; - } - /// - /// Decodes the sector - /// - /// the sector time in int (ms) - public override object DecodePng() - { - int ocrResult = GetTimeFromPng(WindowImage, OcrImage.WindowType.Sector, Engine); - return ocrResult; - } - } -} - -``` diff --git a/temp_annexes/Code/DriverTyresWindow.md b/temp_annexes/Code/DriverTyresWindow.md deleted file mode 100644 index a184cf7..0000000 --- a/temp_annexes/Code/DriverTyresWindow.md +++ /dev/null @@ -1,151 +0,0 @@ -# DriverTyresWindow.cs - -``` cs -/// Author : Maxime Rohmer -/// Date : 30/05/2023 -/// File : DriverTyresWindow.cs -/// Brief : Window containing infos about a driver's tyre -/// Version : Alpha 1.0 - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Drawing; - -namespace TrackTrends -{ - public class DriverTyresWindow:Window - { - private static Random rnd = new Random(); - //Those are the colors I found but you can change them if they change in the future like in 2019 - public static Color SOFT_TYRE_COLOR = Color.FromArgb(0xff, 0x00, 0x00); - public static Color MEDIUM_TYRE_COLOR = Color.FromArgb(0xf5, 0xbf, 0x00); - public static Color HARD_TYRE_COLOR = Color.FromArgb(0xa4, 0xa5, 0xa8); - public static Color INTER_TYRE_COLOR = Color.FromArgb(0x00, 0xa4, 0x2e); - public static Color WET_TYRE_COLOR = Color.FromArgb(0x27, 0x60, 0xa6); - public static Color EMPTY_COLOR = Color.FromArgb(0x20, 0x20, 0x20); - - public DriverTyresWindow(Bitmap image, Rectangle bounds, bool generateEngine = true) : base(image, bounds,generateEngine) - { - Name = "Tyres"; - } - /// - /// This will decode the content of the image - /// - /// And object containing what was on the image - public override object DecodePng() - { - return GetTyreInfos(); - } - /// - /// Method that will decode whats on the image and return the tyre infos it could manage to recover - /// - /// A tyre object containing tyre infos - private Tyre GetTyreInfos() - { - //DEBUG - //WindowImage.Save("./Tyre/raw_"+rnd.Next(0,99999)+".png"); - - Bitmap tyreZone = GetSmallBitmapFromBigOne(WindowImage, FindTyreZone()); - Tyre.Type type = Tyre.Type.Undefined; - type = GetTyreTypeFromColor(OcrImage.GetAvgColorFromBitmap(tyreZone)); - int laps = -1; - - string number = GetStringFromPng(tyreZone, Engine, "0123456789", OcrImage.WindowType.Tyre); - try - { - laps = Convert.ToInt32(number); - } - catch - { - //We could not convert the number so its a letter so its 0 laps old - laps = 0; - } - - //71 is the most laps an f1 race is ever going to have (mexico) so any more would be considered as bad (and remember you cant go trough a full race without making at least one pitstop) - if (laps > 75) - laps = 0; - - return new Tyre(type, laps); - } - /// - /// Finds where the important part of the image is - /// - /// A rectangle containing position and dimensions of the important part of the image - private Rectangle FindTyreZone() - { - Bitmap bmp = WindowImage; - int currentPosition = bmp.Width; - int height = bmp.Height / 2; - Color limitColor = Color.FromArgb(0x50, 0x50, 0x50); - Color currentColor = Color.FromArgb(0, 0, 0); - //25F - Size newWindowSize = new Size(bmp.Height - Convert.ToInt32((float)bmp.Height / 100f * 25f), bmp.Height - Convert.ToInt32((float)bmp.Height / 100f * 35f)); - - while (currentColor.R <= limitColor.R && currentColor.G <= limitColor.G && currentColor.B <= limitColor.B && currentPosition > 0) - { - currentPosition--; - currentColor = bmp.GetPixel(currentPosition, height); - } - - //Its here to let the new window include a little bit of the right - int CorrectedX = currentPosition - (newWindowSize.Width) + Convert.ToInt32((float)newWindowSize.Width / 100f * 10f); - int CorrectedY = Convert.ToInt32((float)newWindowSize.Height / 100f * 35f); - if (CorrectedX <= 0) - return new Rectangle(0, 0, newWindowSize.Width, newWindowSize.Height); - - return new Rectangle(CorrectedX, CorrectedY, newWindowSize.Width, newWindowSize.Height); - } - //This method has been created with the help of chatGPT - /// - /// Methods that compares a list of colors to see wich is the closest from the input color and decide wich tyre type it is - /// - /// The color that you found - /// The tyre type - public Tyre.Type GetTyreTypeFromColor(Color inputColor) - { - Tyre.Type type = Tyre.Type.Undefined; - List colors = new List(); - //dont forget that if for some reason someday F1 adds a new Tyre type you will need to add it in the constants but also here in the list - //You will also need to add it below in the Tyre object's enum and add an if in the end of this method - colors.Add(SOFT_TYRE_COLOR); - colors.Add(MEDIUM_TYRE_COLOR); - colors.Add(HARD_TYRE_COLOR); - colors.Add(INTER_TYRE_COLOR); - colors.Add(WET_TYRE_COLOR); - colors.Add(EMPTY_COLOR); - - Color closestColor = colors[0]; - int closestDistance = int.MaxValue; - foreach (Color color in colors) - { - int distance = Math.Abs(color.R - inputColor.R) + Math.Abs(color.G - inputColor.G) + Math.Abs(color.B - inputColor.B); - if (distance < closestDistance) - { - closestColor = color; - closestDistance = distance; - } - } - - //We cant use a switch as the colors cant be constants ... - if (closestColor == SOFT_TYRE_COLOR) - type = Tyre.Type.Soft; - if (closestColor == MEDIUM_TYRE_COLOR) - type = Tyre.Type.Medium; - if (closestColor == HARD_TYRE_COLOR) - type = Tyre.Type.Hard; - if (closestColor == INTER_TYRE_COLOR) - type = Tyre.Type.Inter; - if (closestColor == WET_TYRE_COLOR) - type = Tyre.Type.Wet; - if (closestColor == EMPTY_COLOR) - return Tyre.Type.Undefined; - - return type; - } - } -} - -``` diff --git a/temp_annexes/Code/F1TVEmulator.md b/temp_annexes/Code/F1TVEmulator.md deleted file mode 100644 index e4a98b5..0000000 --- a/temp_annexes/Code/F1TVEmulator.md +++ /dev/null @@ -1,334 +0,0 @@ -# F1TVEmulator.cs - -``` cs -/// Author : Maxime Rohmer -/// Date : 30/05/2023 -/// File : F1TVEmulator.cs -/// Brief : Class that contains methods to emulate a browser and navigate the F1TV website -/// Version : Alpha 1.0 - -using OpenQA.Selenium; -using OpenQA.Selenium.Firefox; -using OpenQA.Selenium.Interactions; -using OpenQA.Selenium.Support.UI; -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Drawing; -using System.IO; -using System.Linq; -using System.Text; -using System.Threading; -using System.Threading.Tasks; - -namespace TrackTrends -{ - internal class F1TVEmulator - { - public const string COOKIE_HOST = ".formula1.com"; - public const string PYTHON_COOKIE_RETRIEVAL_FILENAME = "recoverCookiesCSV.py"; - public const string GECKODRIVER_FILENAME = @"geckodriver-v0.27.0-win64\geckodriver.exe"; - //BE CAREFULL IF YOU CHANGE IT HERE YOU NEED TO CHANGE IT IN THE PYTHON SCRIPT TOO - public const string COOKIES_CSV_FILENAME = "cookies.csv"; - - private FirefoxDriver Driver; - - private bool _ready; - private string _grandPrixUrl; - public string GrandPrixUrl { get => _grandPrixUrl; private set => _grandPrixUrl = value; } - public bool Ready { get => _ready; set => _ready = value; } - public F1TVEmulator(string grandPrixUrl) - { - GrandPrixUrl = grandPrixUrl; - Ready = false; - } - /// - /// Will start the python programm that runs the Cookie Recovering - /// - private void StartCookieRecovering() - { - string scriptPath = PYTHON_COOKIE_RETRIEVAL_FILENAME; - Process process = new Process(); - process.StartInfo.FileName = "python.exe"; - process.StartInfo.Arguments = scriptPath; - process.StartInfo.UseShellExecute = false; - process.StartInfo.RedirectStandardOutput = true; - process.Start(); - string output = process.StandardOutput.ReadToEnd(); - process.WaitForExit(); - } - /// - /// Method that will recover the needed cookies in the DB - /// - /// The host of the wanted cookie ex: ./formula1.com - /// The name of the wanted cookie ex: login - /// returns the value of the cookie if it has been found - /// - public string GetCookie(string host, string name) - { - StartCookieRecovering(); - string value = ""; - List cookies = new List(); - if (File.Exists(COOKIES_CSV_FILENAME)) - { - using (var reader = new StreamReader(COOKIES_CSV_FILENAME)) - { - // Read the header row and validate column order - string header = reader.ReadLine(); - string[] expectedColumns = { "host_key", "name", "value", "path", "expires_utc", "is_secure", "is_httponly" }; - string[] actualColumns = header.Split(','); - for (int i = 0; i < expectedColumns.Length; i++) - { - if (expectedColumns[i] != actualColumns[i]) - { - throw new InvalidOperationException($"Expected column '{expectedColumns[i]}' at index {i} but found '{actualColumns[i]}'"); - } - } - - // Read each data row and parse values into a Cookie object - while (!reader.EndOfStream) - { - string line = reader.ReadLine(); - string[] fields = line.Split(','); - - string hostname = fields[0]; - string cookieName = fields[1]; - - if (hostname == host && cookieName == name) - { - value = fields[2]; - } - } - } - } - return value; - } - /// - /// Starts the headless browser - /// - /// Error code 1xx - public async Task Start() - { - Ready = false; - - string loginCookieName = "login"; - string loginSessionCookieName = "login-session"; - string loginCookieValue = GetCookie(COOKIE_HOST, loginCookieName); - string loginSessionValue = GetCookie(COOKIE_HOST, loginSessionCookieName); - - //Cookie retreival has gone wrong (usually its because of python not being installed properly) - if (loginCookieValue == "" || loginSessionValue == "") - return 100; - - var service = FirefoxDriverService.CreateDefaultService(GECKODRIVER_FILENAME); - service.Host = "127.0.0.1"; - service.Port = 5555; - - FirefoxProfile profile = new FirefoxProfile(); - FirefoxOptions options = new FirefoxOptions(); - //profile.SetPreference("full-screen-api.ignore-widgets", true); - //profile.SetPreference("media.hardware-video-decoding.enabled", true); - //profile.SetPreference("full-screen-api.enabled", true); - options.Profile = profile; - profile.SetPreference("layout.css.devPixelsPerPx", "1.0"); - - options.AcceptInsecureCertificates = true; - options.AddArgument("--headless"); - //options.AddArgument("--start-maximized"); - //options.AddArgument("--window-size=1920x1080"); - //options.AddArgument("--width=" + windowWidth); - //options.AddArgument("--height=" + windowHeight); - //options.AddArgument("-window-size=1920x1080"); - //options.AddArgument("--width=1920"); - //options.AddArgument("--height=1080"); - //profile - - try - { - Driver = new FirefoxDriver(service, options); - } - catch - { - Ready = false; - return 101; - } - - Actions actions = new Actions(Driver); - var loginCookie = new Cookie(loginCookieName, loginCookieValue, COOKIE_HOST, "/", DateTime.Now.AddDays(5)); - var loginSessionCookie = new Cookie(loginSessionCookieName, loginSessionValue, COOKIE_HOST, "/", DateTime.Now.AddDays(5)); - - Driver.Navigate().GoToUrl("https://f1tv.formula1.com/"); - - Driver.Manage().Cookies.AddCookie(loginCookie); - Driver.Manage().Cookies.AddCookie(loginSessionCookie); - - try - { - Driver.Navigate().GoToUrl(GrandPrixUrl); - } - catch - { - //The url is not a valid url - Driver.Dispose(); - return 103; - } - - //Waits for the page to fully load - Driver.Manage().Timeouts().PageLoad = TimeSpan.FromSeconds(30); - - //Removes the cookie prompt - try - { - IWebElement conscentButton = Driver.FindElement(By.Id("truste-consent-button")); - conscentButton.Click(); - } - catch - { - //Could not locate the cookie button - Screenshot("ERROR104"); - Driver.Dispose(); - return 104; - } - - //Again waits for the page to fully load (when you accept cookies it takes a little time for the page to load) - //Cannot use The timeout because the feed loading is not really loading so there is not event or anything - Thread.Sleep(5000); - - //Switches to the Data channel - try - { - IWebElement dataChannelButton = Driver.FindElement(By.ClassName("data-button")); - dataChannelButton.Click(); - } - catch - { - //If the data button does not exists its because the user is not connected - Screenshot("ERROR102"); - Driver.Dispose(); - return 102; - } - - //Open settings - // Press the space key, this should make the setting button visible - // It does not matter if the feed is paused because when changing channel it autoplays - actions.SendKeys(OpenQA.Selenium.Keys.Space).Perform(); - //Clicks on the settings Icon - - int settingsClickTries = 0; - bool settingsClickSuccess = false; - while (settingsClickTries < 100 && !settingsClickSuccess) - { - Thread.Sleep(100); - try - { - IWebElement settingsButton = Driver.FindElement(By.ClassName("bmpui-ui-settingstogglebutton")); - settingsButton.Click(); - IWebElement selectElement = Driver.FindElement(By.ClassName("bmpui-ui-videoqualityselectbox")); - SelectElement select = new SelectElement(selectElement); - IWebElement selectOption = selectElement.FindElement(By.CssSelector("option[value^='1080_']")); - selectOption.Click(); - settingsClickSuccess = true; - } - catch - { - //Sometimes it can crash because it could not get the options to show up in time. When it happens just retry - settingsClickSuccess = false; - settingsClickTries++; - } - } - - if (!settingsClickSuccess) - { - Screenshot("ERROR105"); - Driver.Dispose(); - return 105; - } - - Screenshot("BEFOREFULLSCREEN"); - - //Makes the feed fullscreen - int fullScreenClickTries = 0; - bool fullScreenClickSuccess = false; - Driver.Manage().Window.Maximize(); - //WebDriverWait wait = new WebDriverWait(Driver, TimeSpan.FromSeconds(10)); - while (fullScreenClickTries < 100 && !fullScreenClickSuccess) - { - Thread.Sleep(150); - try - { - IWebElement fullScreenButton = Driver.FindElement(By.ClassName("bmpui-ui-fullscreentogglebutton")); - fullScreenButton.Click(); - fullScreenClickSuccess = true; - } - catch - { - fullScreenClickSuccess = false; - fullScreenClickTries++; - } - } - - if (!fullScreenClickSuccess) - { - Screenshot("ERROR106"); - Driver.Dispose(); - return 106; - } - - Screenshot("AFTERFULLSCREEN"); - - //STARTUP FINISHED READY TO SCREENSHOT - Ready = true; - return 0; - } - /// - /// Takes a screenshot of what the headless browser is displaying - /// - /// Optional ! The name of the picture so it can be saved - /// Returns the screenshot in the bitmap format - public Bitmap Screenshot(string name = "TEST") - { - Bitmap result = new Bitmap(4242, 6969); - try - { - //Screenshot scrsht = ((ITakesScreenshot)Driver).GetScreenshot(); - //profileriver.SetPreferencC:\Users\Moi\source\repos\Test_Merge\README.mde("layout.css.devPixelsPerPx", "1.0"); - - //Screenshot scrsht = Driver.GetFullPageScreenshot(); - Screenshot scrsht = Driver.GetScreenshot(); - - byte[] screenshotBytes = Convert.FromBase64String(scrsht.AsBase64EncodedString); - MemoryStream stream = new MemoryStream(screenshotBytes); - - result = new Bitmap(stream); - //result.Save(name + ".png"); - scrsht.SaveAsFile(name + ".png"); - } - catch - { - //Nothing for now - } - return result; - } - /// - /// Stops the Emulation. Note: if you plan to start it again please use ResetDriver() instead - /// - public void Stop() - { - Ready = false; - if (Driver != null) - Driver.Dispose(); - } - /// - /// Resets the emulation - /// - public void ResetDriver() - { - Ready = false; - if (Driver != null) - Driver.Dispose(); - Driver = null; - } - } -} - -``` diff --git a/temp_annexes/Code/Form1.md b/temp_annexes/Code/Form1.md deleted file mode 100644 index 0813927..0000000 --- a/temp_annexes/Code/Form1.md +++ /dev/null @@ -1,427 +0,0 @@ -# Form1.cs - -``` cs -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Diagnostics; -using System.Drawing; -using System.Linq; -using System.Text; -using System.Threading; -using System.Threading.Tasks; -using System.Windows.Forms; -using System.IO; - -namespace TrackTrends -{ - public partial class Main : Form - { - //private Reader Reader = null; - private F1TVEmulator Emulator = null; - private DataWrapper Wrapper = null; - private bool cancelRequested = false; - private SemaphoreSlim semaphore = new SemaphoreSlim(1); - - string ConfigFile = ""; - string GpUrl = ""; - - //For the responsive content - - Size oldSize = new Size(); - Size oldRankingSize = new Size(); - Size oldLapTimesSize = new Size(); - Size oldBattles = new Size(); - - Size oldPnlBattles = new Size(); - Size oldPnlRankings = new Size(); - Size oldPnlFastest = new Size(); - Size oldPnlSlowest = new Size(); - - Point oldRankingPosition = new Point(); - Point oldBattlePosition = new Point(); - Point oldDriverInfoPosition = new Point(); - - Point olPnlFastestPosition = new Point(); - Point oldPnlSlowestPosition = new Point(); - - public Main() - { - InitializeComponent(); - } - public async void RefreshUI() - { - if (Directory.Exists(ConfigurationTool.CONFIGS_FOLDER_NAME)) - { - lsbPresets.DataSource = null; - lsbPresets.DataSource = Directory.GetFiles(ConfigurationTool.CONFIGS_FOLDER_NAME); - } - } - private async void btnSettings_Click(object sender, EventArgs e) - { - if (Emulator != null) - Emulator.ResetDriver(); - - btnStartDecoding.Enabled = false; - btnStopUpdating.Enabled = false; - btnResetEmulator.Text = "Launch"; - - Emulator = null; - Wrapper = null; - - GC.Collect(); - - Settings settingsForm = new Settings(); - settingsForm.ShowDialog(); - RefreshUI(); - //MessageBox.Show(settingsForm.GrandPrixUrl + Environment.NewLine + settingsForm.GrandPrixName + Environment.NewLine + settingsForm.GrandPrixYear); - if (settingsForm.GrandPrixUrl != "" && settingsForm.SelectedConfigFile != "") - { - GpUrl = settingsForm.GrandPrixUrl; - tbxGpUrl.Text = GpUrl; - if (File.Exists(settingsForm.SelectedConfigFile)) - { - ConfigFile = settingsForm.SelectedConfigFile; - for(int i = 0; i < lsbPresets.Items.Count; i++) - { - if (lsbPresets.Items[i].ToString() == ConfigFile) - lsbPresets.SelectedIndex = i; - } - } - else - { - MessageBox.Show("The config file has not been found please return to the config and change it"); - } - } - else - { - //WE dont care anymore, the user will choose its Grand Prix himself in the main program - //MessageBox.Show("There is no URL for the Grand Prix you want to decode. Please return to the config and add a valid one"); - } - } - - private async void Form1_Load(object sender, EventArgs e) - { - //Those are the default values but they will need to be changed later when the configuration has been done - ConfigFile = "./Presets/Clean_4K_2023.json"; - GpUrl = "https://f1tv.formula1.com/detail/1000006688/2023-azerbaijan-grand-prix?action=play"; - - tbxGpUrl.Text = GpUrl; - - oldSize = this.Size; - oldRankingSize = gpbxRanking.Size; - oldLapTimesSize = gpbxLapTimes.Size; - oldBattles = gpbxBattles.Size; - - oldPnlRankings = pnlLiveRanking.Size; - oldPnlBattles = pnlBattles.Size; - oldPnlFastest = pnlFastest.Size; - oldPnlSlowest = pnlSlowest.Size; - - oldRankingPosition = gpbxRanking.Location; - oldBattlePosition = gpbxBattles.Location; - oldDriverInfoPosition = gpbxDriverInfos.Location; - - olPnlFastestPosition = pnlFastest.Location; - oldPnlSlowestPosition = pnlSlowest.Location; - - tip1.SetToolTip(btnResetEmulator, "Starts or restarts the emulator. You need to start this to use the app"); - tip1.SetToolTip(btnSettings, "Opens the configuration menu"); - tip1.SetToolTip(tbxGpUrl, "Insert the URL of the Grand Prix you want to track. Dont forget the \"?action=play\" at the end"); - tip1.SetToolTip(lsbPresets, "Select a configuration preset to use with the decoding"); - tip1.SetToolTip(pbxResult,"A preview of what the program sees. You should see the DATA page of the F1TV here"); - tip1.SetToolTip(lsbOvertakes,"A list of all the activity. You can scroll to see the most recent overtakes"); - tip1.SetToolTip(gpbxBattles,"The four first battles in the field. A battle is two drivers less than 3 seconds apart"); - tip1.SetToolTip(gpbxLapTimes,"The fastest and slowest drivers on track at the moment. It takes the average lapTime of the last 5 laps to choose who is the fastes or the slowest"); - - RefreshUI(); - } - - private async void btnUpdate_Click(object sender, EventArgs e) - { - cancelRequested = false; - if (Emulator != null && Wrapper != null) - { - // Disable UI controls to prevent re-entrancy - btnResetEmulator.Enabled = false; - btnStartDecoding.Enabled = false; - btnStopUpdating.Enabled = true; - btnSettings.Enabled = false; - while (!cancelRequested) - { - await semaphore.WaitAsync(); - - try - { - // Start the time-consuming task on a separate thread - await Task.Run(async () => - { - Stopwatch sw = new Stopwatch(); - sw.Start(); - - Bitmap screen = Emulator.Screenshot(); - screen.Save("HopefullyDataScreenshot.png"); - - Invoke((MethodInvoker)delegate - { - pbxResult.Image = (Bitmap)screen.Clone(); - }); - - Wrapper.ChangeImage(screen); - int errorCode = Wrapper.Refresh(); - - sw.Stop(); - // Task completed - Invoke((MethodInvoker)delegate - { - DisplayResults(errorCode, sw, screen); - DisplayBattles(); - DisplayDeltas(); - DisplayOvertakes(); - }); - }); - } - finally - { - semaphore.Release(); - } - } - // Re-enable UI controls - btnStopUpdating.Text = "Stop"; - btnStartDecoding.Enabled = true; - btnStopUpdating.Enabled = false; - btnResetEmulator.Enabled = true; - btnSettings.Enabled = true; - } - } - private void DisplayOvertakes() - { - Wrapper.DisplayOvertakes(lsbOvertakes); - } - private void DisplayBattles() - { - Wrapper.DisplayBattles(pnlBattles, this); - } - private void DisplayDeltas() - { - Wrapper.DisplayTimesDeltas(pnlFastest, pnlSlowest, this); - } - private void Form1_FormClosing(object sender, FormClosingEventArgs e) - { - if (Emulator != null) - { - Emulator.Stop(); - } - } - private void DisplayResults(int errorCode, Stopwatch sw, Bitmap screen) - { - if (errorCode != 0) - { - cancelRequested = true; - MessageBox.Show("An error has occured while trying to recover data from live feed. This can happen sometimes. I would advise you to restart a few times. If the problem persists check your configuration."); - } - else - { - Wrapper.DisplayLiveRanking(pnlLiveRanking, this); - } - } - - private void btnStopUpdating_Click(object sender, EventArgs e) - { - // Set the cancellation flag - cancelRequested = true; - btnStopUpdating.Enabled = false; - btnResetEmulator.Enabled = false; - btnStopUpdating.Text = "Stopping"; - } - private async void button1_Click(object sender, EventArgs e) - { - lsbOvertakes.Items.Clear(); - btnResetEmulator.Text = "Launching"; - btnResetEmulator.Enabled = false; - btnSettings.Enabled = true; - btnStartDecoding.Enabled = false; - btnStopUpdating.Enabled = false; - btnSettings.Enabled = false; - int errorCode = -1; - await Task.Run(async () => - { - if (Emulator != null) - Emulator.ResetDriver(); - - Emulator = null; - Wrapper = null; - - GC.Collect(); - - Emulator = new F1TVEmulator(GpUrl); - errorCode = await Emulator.Start(); - }); - - if (errorCode != 0) - { - string message = ""; - switch (errorCode) - { - case 100: - message = "Error " + errorCode + " Could not recover cookies. It could be because of an improper installation of python or bad cookies in the chrome database. Please try to log on to the F1TV using chrome again"; - break; - case 101: - message = "Error " + errorCode + " Could not start the driver. It could be because an other instance is runnin make sure you closed them all before trying again"; - break; - case 102: - message = "Error " + errorCode + " Could not navigate on the F1TV site. Make sure the correct URL has been given and that you logged from chrome. It can take a few minutes to update"; - break; - case 103: - message = "Error " + errorCode + " The url is not a valid url"; - break; - case 104: - message = "Error " + errorCode + " The url is not a valid url"; - break; - case 105: - message = "Error " + errorCode + " There has been an error trying to emulate button presses. Please try again"; - break; - case 106: - message = "Error " + errorCode + " There has been an error trying to emulate button presses. Please try again"; - break; - default: - message = "Could not start the emulator Error " + errorCode; - break; - } - MessageBox.Show(message); - - btnResetEmulator.Enabled = true; - btnSettings.Enabled = true; - btnResetEmulator.Text = "Retry"; - } - else - { - Wrapper = new DataWrapper(ConfigFile, Emulator.Screenshot()); - btnResetEmulator.Text = "Re launch"; - btnResetEmulator.Enabled = true; - btnSettings.Enabled = true; - btnStartDecoding.Enabled = true; - } - } - private void removeBorders(object sender, PaintEventArgs e) - { - GroupBox gpbx = (GroupBox)sender; - - using (Pen pen = new Pen(gpbx.BackColor, 50)) - { - e.Graphics.DrawRectangle(pen, 0, 0, gpbx.Width - 1, gpbx.Height - 1); - e.Graphics.DrawRectangle(pen, 0, 0, gpbx.Width - 1, gpbx.Height - 1); - } - - using (var brush = new SolidBrush(gpbx.ForeColor)) - { - var textPosition = new Point(5, 0); // Adjust the X and Y values as needed - e.Graphics.DrawString(gpbx.Text, gpbx.Font, brush, textPosition); - } - } - private void lsbPresets_SelectedIndexChanged(object sender, EventArgs e) - { - if (lsbPresets.SelectedIndex >= 0) - ConfigFile = lsbPresets.Items[lsbPresets.SelectedIndex].ToString(); - } - - private void textBox1_TextChanged(object sender, EventArgs e) - { - if (tbxGpUrl.Text != "") - GpUrl = tbxGpUrl.Text; - } - public void btnDriver_Click(object sender, EventArgs e) - { - //Removes the cover - if (pnlCover.Visible = true) - pnlCover.Visible = false; - //Happens when a driver button has been clicked - //MessageBox.Show((sender as Button).Name + " has been selected"); - Button btn = (sender as Button); - string[] parts = btn.Name.Split('_'); - DriverData driver = Wrapper.GetFullDriverData(parts[0], pnlCurrentDriverLapsHistory, this); - lblCurrentDriverName.Text = driver.Name; - lblCurrentDriverPosition.Text = driver.Position.ToString(); - lblCurrentDriverGapToLeader.Text = Reader.ConvertMsToTime(driver.GapToLeader); - lblCurrentDriverLapTime.Text = Reader.ConvertMsToTime(driver.LapTime); - lblCurrentDriverTyreAge.Text = driver.CurrentTyre.NumberOfLaps.ToString(); - if (driver.DRS) - { - lblCurrentDriverDRS.Text = "Open"; - lblCurrentDriverDRS.ForeColor = Color.FromArgb(0, 164, 46); - } - else - { - lblCurrentDriverDRS.Text = "Closed"; - lblCurrentDriverDRS.ForeColor = Color.Black; - } - switch (driver.CurrentTyre.Coumpound) - { - case Tyre.Type.Undefined: - lblCurrentDriverTyreType.Text = "uuuuh..."; - lblCurrentDriverTyreType.ForeColor = Color.Violet; - break; - case Tyre.Type.Hard: - lblCurrentDriverTyreType.Text = "Hard"; - lblCurrentDriverTyreType.ForeColor = Color.FromArgb(164, 165, 168); - break; - case Tyre.Type.Medium: - lblCurrentDriverTyreType.Text = "Medium"; - lblCurrentDriverTyreType.ForeColor = Color.FromArgb(245, 191, 0); - break; - case Tyre.Type.Soft: - lblCurrentDriverTyreType.Text = "Soft"; - lblCurrentDriverTyreType.ForeColor = Color.FromArgb(255, 0, 0); - break; - case Tyre.Type.Inter: - lblCurrentDriverTyreType.Text = "Intermediate"; - lblCurrentDriverTyreType.ForeColor = Color.FromArgb(0, 164, 46); - break; - case Tyre.Type.Wet: - lblCurrentDriverTyreType.Text = "Wet"; - lblCurrentDriverTyreType.ForeColor = Color.FromArgb(39, 96, 166); - break; - } - } - public void btnLapTime_Click(object sender, EventArgs e) - { - //Happens when a lapTime has been clicked - Button btn = sender as Button; - string[] parts = btn.Name.Split('_'); - Wrapper.DisplayLapTimeInfos(parts[0], Convert.ToInt32(parts[1]), btn.Text); - } - - private void Main_Resize(object sender, EventArgs e) - { - int xDiff = this.Width - oldSize.Width; - int yDiff = this.Height - oldSize.Height; - int padding = 10; - //This will take half the newly created space - gpbxRanking.Size = new Size(oldRankingSize.Width + xDiff / 2, oldRankingSize.Height + yDiff); - gpbxRanking.Location = new Point(oldRankingPosition.X + xDiff / 2, gpbxRanking.Location.Y); - //Will take half the new height and half the new height - gpbxLapTimes.Size = new Size(oldLapTimesSize.Width + xDiff / 2, oldLapTimesSize.Height + yDiff / 2); - //Will take half the new height and half the new width - gpbxBattles.Size = new Size(oldBattles.Width + xDiff / 2, oldBattles.Height + yDiff / 2); - gpbxBattles.Location = new Point(gpbxBattles.Location.X, oldBattlePosition.Y + yDiff / 2); - //The infos wont change width but will need to be centerd - Point startOfZone = new Point(gpbxOvertakes.Width + gpbxOvertakes.Location.X, gpbxOvertakes.Location.Y); - Point endOfZone = new Point(gpbxRanking.Location.X, gpbxOvertakes.Location.Y); - int totalWidth = endOfZone.X - startOfZone.X; - gpbxDriverInfos.Location = new Point(startOfZone.X + (totalWidth / 2 - gpbxDriverInfos.Width / 2), oldDriverInfoPosition.Y + yDiff); - //Now resizing internals - pnlFastest.Size = new Size(oldPnlFastest.Width + xDiff / 4,oldPnlFastest.Height + yDiff / 4); - pnlFastest.Location = new Point(olPnlFastestPosition.X,olPnlFastestPosition.Y + yDiff / 4); - - pnlSlowest.Size = new Size(oldPnlSlowest.Width + xDiff / 4, oldPnlSlowest.Height + yDiff / 4); - pnlSlowest.Location = new Point(oldPnlSlowestPosition.X + xDiff / 4, oldPnlSlowestPosition.Y + yDiff / 4); - - pnlBattles.Size = new Size(oldPnlBattles.Width + xDiff / 2,oldPnlBattles.Height + yDiff / 2); - - pnlLiveRanking.Size = new Size(oldPnlRankings.Width + xDiff / 2,oldPnlRankings.Height + yDiff); - } - } -} - -``` diff --git a/temp_annexes/Code/OcrImage.md b/temp_annexes/Code/OcrImage.md deleted file mode 100644 index a59f3e8..0000000 --- a/temp_annexes/Code/OcrImage.md +++ /dev/null @@ -1,678 +0,0 @@ -# OcrImage.cs - -``` cs -/// Author : Maxime Rohmer -/// Date : 30/05/2023 -/// File : OcrImage.cs -/// Brief : Class containing all the methods used to enhance images for OCR -/// Version : Alpha 1.0 - -using System; -using System.Collections.Generic; -using System.Threading.Tasks; -using System.Drawing; -using System.Drawing.Drawing2D; -using System.Drawing.Imaging; - -namespace TrackTrends -{ - public class OcrImage - { - //this is a hardcoded value based on the colors of the F1TV data channel background you can change it if sometime in the future the color changes - //Any color that has any of its R,G or B channel higher than the treshold will be considered as being usefull information - public static Color F1TV_BACKGROUND_TRESHOLD = Color.FromArgb(0x50, 0x50, 0x50); - Bitmap InputBitmap; - public enum WindowType - { - LapTime, - Text, - Sector, - Gap, - Tyre, - } - - /// - /// Create a new Ocr image to help enhance the given bitmap for OCR - /// - /// The image you want to enhance - public OcrImage(Bitmap inputBitmap) - { - InputBitmap = inputBitmap; - } - /// - /// Enhances the image depending on wich type of window the image comes from - /// - /// The type of the window. Depending on it different enhancing features will be applied - /// The enhanced Bitmap - public Bitmap Enhance(WindowType type = WindowType.Text) - { - Bitmap outputBitmap = (Bitmap)InputBitmap.Clone(); - //Note : If you plan to activate all the comments that I used to debug the OCR I would advise to make sure that the debug folder exists - switch (type) - { - case WindowType.Gap: - //outputBitmap.Save(Window.GAPTOLEADER_DEBUG_FOLDER + @"\raw_" + id + ".png"); - - outputBitmap = Tresholding(outputBitmap, 165); - //outputBitmap.Save(Window.GAPTOLEADER_DEBUG_FOLDER + @"\treshold_" + id + ".png"); - - outputBitmap = Resize(outputBitmap, 2); - //outputBitmap.Save(Window.GAPTOLEADER_DEBUG_FOLDER + @"\resize_" + id + ".png"); - - outputBitmap = Dilatation(outputBitmap, 1); - //outputBitmap.Save(Window.GAPTOLEADER_DEBUG_FOLDER + @"\Final_dilatation_" + id + ".png"); - break; - case WindowType.Sector: - //outputBitmap.Save(Window.SECTOR1_DEBUG_FOLDER + @"\raw_" + id + ".png"); - - outputBitmap = VanishOxyAction(outputBitmap); - //outputBitmap.Save(Window.SECTOR1_DEBUG_FOLDER + @"\vanish_" + id + ".png"); - - outputBitmap = Tresholding(outputBitmap, 150); - //outputBitmap.Save(Window.SECTOR1_DEBUG_FOLDER + @"\Final_treshold_" + id + ".png"); - break; - case WindowType.LapTime: - //outputBitmap.Save(Window.LAPTIME_DEBUG_FOLDER + @"\raw_" + id + ".png"); - - outputBitmap = Tresholding(outputBitmap,185); - //outputBitmap.Save(Window.LAPTIME_DEBUG_FOLDER + @"\Treshold_" + id + ".png"); - - outputBitmap = SobelEdgeDetection(outputBitmap); - //outputBitmap.Save(Window.LAPTIME_DEBUG_FOLDER + @"\SobelDetection_" + id + ".png"); - break; - case WindowType.Text: - //outputBitmap.Save(Window.STRING_DEBUG_FOLDER + @"\raw_" + id + ".png"); - - outputBitmap = Tresholding(outputBitmap, 165); - //outputBitmap.Save(Window.STRING_DEBUG_FOLDER + @"\Final_treshold_" + id + ".png"); - break; - case WindowType.Tyre: - //outputBitmap.Save(Window.TYRE_DEBUG_FOLDER + @"\raw_" + id + ".png"); - - outputBitmap = RemoveUseless(outputBitmap); - //outputBitmap.Save(Window.TYRE_DEBUG_FOLDER + @"\uselessRemoved_" + id + ".png"); - - outputBitmap = Dilatation(outputBitmap, 1); - //outputBitmap.Save(Window.TYRE_DEBUG_FOLDER + @"\Final_dilatation_" + id + ".png"); - break; - default: - outputBitmap = Tresholding(outputBitmap, 165); - outputBitmap = Resize(outputBitmap, 2); - outputBitmap = Erode(outputBitmap, 1); - break; - } - return outputBitmap; - } - /// - /// Method that convert a colored RGB bitmap into a GrayScale image - /// - /// The Bitmap you want to convert - /// The bitmap in grayscale - public static Bitmap Grayscale(Bitmap inputBitmap) - { - Rectangle rect = new Rectangle(0, 0, inputBitmap.Width, inputBitmap.Height); - BitmapData bmpData = inputBitmap.LockBits(rect, ImageLockMode.ReadWrite, inputBitmap.PixelFormat); - int bytesPerPixel = Bitmap.GetPixelFormatSize(inputBitmap.PixelFormat) / 8; - - unsafe - { - byte* ptr = (byte*)bmpData.Scan0.ToPointer(); - for (int y = 0; y < inputBitmap.Height; y++) - { - byte* currentLine = ptr + (y * bmpData.Stride); - for (int x = 0; x < inputBitmap.Width; x++) - { - byte* pixel = currentLine + (x * bytesPerPixel); - - byte blue = pixel[0]; - byte green = pixel[1]; - byte red = pixel[2]; - - //Those a specific values to correct the weights so its more pleasing to the human eye - int gray = (int)(red * 0.3 + green * 0.59 + blue * 0.11); - - //This is not a proper treshold method but it is helping the sobel edge detection - if(gray <= F1TV_BACKGROUND_TRESHOLD.R) - { - pixel[0] = pixel[1] = pixel[2] = 0; - } - else - { - pixel[0] = pixel[1] = pixel[2] = (byte)gray; - } - } - } - } - inputBitmap.UnlockBits(bmpData); - - return inputBitmap; - } - /// - /// Method that uses the Sobel Edge detection to outline the edges of the characters to help with the OCR - /// - /// The image with the sobel edge detection used - /// - private Bitmap SobelEdgeDetection(Bitmap grayscaleImage) - { - // Create a new bitmap for the edges - Bitmap edgesImage = new Bitmap(grayscaleImage.Width, grayscaleImage.Height); - - // Define the Sobel operators - // Its just a matrix that we will use on the all image - int[,] sobelX = { { -1, 0, 1 }, { -2, 0, 2 }, { -1, 0, 1 } }; - int[,] sobelY = { { -1, -2, -1 }, { 0, 0, 0 }, { 1, 2, 1 } }; - - // Apply the Sobel operators and normalize the gradients - // NOTE: I dont know how easy or hard it would be to make this paralel but it could be a good idea to do so if possible. - for (int y = 1; y < grayscaleImage.Height - 1; y++) - { - for (int x = 1; x < grayscaleImage.Width - 1; x++) - { - int gradientX = CalculateGradient(grayscaleImage, sobelX, x, y); - int gradientY = CalculateGradient(grayscaleImage, sobelY, x, y); - int gradient = (int)Math.Sqrt(gradientX * gradientX + gradientY * gradientY); - - // Normalize the gradient value - // In some rare cases the value can exceed 255 so we limit it with the Math.Min method - gradient = Math.Min(255, Math.Max(0, gradient)); - - edgesImage.SetPixel(x, y, Color.FromArgb(gradient, gradient, gradient)); - } - } - - return edgesImage; - } - /// - /// Method that's here to be used by the sobel edge detection method (Chat GPT has been used for parts of this method) - /// - /// The input image with the grayscale processing already done - /// The matrix to apply - /// - /// - /// Returns the processed gradient - private int CalculateGradient(Bitmap grayscaleImage, int[,] sobelOperator, int x, int y) - { - int gradient = 0; - - for (int j = -1; j <= 1; j++) - { - for (int i = -1; i <= 1; i++) - { - int pixelX = grayscaleImage.GetPixel(x + i, y + j).R; - gradient += sobelOperator[j + 1, i + 1] * pixelX; - } - } - - return gradient; - } - /// - /// Method that is used to whiten an image. Ignore the funny name. Its used to prevent colored text to trouble the OCR when it uses grayscaling - /// - /// The bitmap to vanish - /// - public static Bitmap VanishOxyAction(Bitmap inputBitmap) - { - Rectangle rect = new Rectangle(0, 0, inputBitmap.Width, inputBitmap.Height); - BitmapData bmpData = inputBitmap.LockBits(rect, ImageLockMode.ReadWrite, inputBitmap.PixelFormat); - int bytesPerPixel = Bitmap.GetPixelFormatSize(inputBitmap.PixelFormat) / 8; - - unsafe - { - //Note : MAKE THIS PARALELL OMG WY DID I LEFT IT LIKE THAT - byte* ptr = (byte*)bmpData.Scan0.ToPointer(); - for (int y = 0; y < inputBitmap.Height; y++) - { - byte* currentLine = ptr + (y * bmpData.Stride); - for (int x = 0; x < inputBitmap.Width; x++) - { - byte* pixel = currentLine + (x * bytesPerPixel); - - int blue = (int)pixel[0]; - int green = (int)pixel[1]; - int red = (int)pixel[2]; - - int max = Math.Max(Math.Max(blue, green), red); - - if (max > 255 / 3) - max = 255; - - pixel[0] = pixel[1] = pixel[2] = (byte)max; - } - } - } - inputBitmap.UnlockBits(bmpData); - - return inputBitmap; - } - /// - /// Method that binaries the input image up to a certain treshold given - /// - /// the bitmap you want to convert to binary colors - /// The floor at wich the color is considered as white or black - /// The binarised bitmap - public static Bitmap Tresholding(Bitmap inputBitmap, int threshold) - { - Rectangle rect = new Rectangle(0, 0, inputBitmap.Width, inputBitmap.Height); - BitmapData bmpData = inputBitmap.LockBits(rect, ImageLockMode.ReadWrite, inputBitmap.PixelFormat); - int bytesPerPixel = Bitmap.GetPixelFormatSize(inputBitmap.PixelFormat) / 8; - - unsafe - { - byte* ptr = (byte*)bmpData.Scan0.ToPointer(); - int bmpHeight = inputBitmap.Height; - int bmpWidth = inputBitmap.Width; - Parallel.For(0, bmpHeight, y => - { - byte* currentLine = ptr + (y * bmpData.Stride); - for (int x = 0; x < bmpWidth; x++) - { - byte* pixel = currentLine + (x * bytesPerPixel); - - byte blue = pixel[0]; - byte green = pixel[1]; - byte red = pixel[2]; - //Those a specific values to correct the weights so its more pleasing to the human eye - int gray = (int)(red * 0.3 + green * 0.59 + blue * 0.11); - int value = gray < threshold ? 0 : 255; - - pixel[0] = pixel[1] = pixel[2] = (byte)value; - } - }); - } - inputBitmap.UnlockBits(bmpData); - - return inputBitmap; - } - /// - /// Method that removes the pixels that are flagged as background - /// - /// The bitmap you want to remove the background from - /// The Bitmap without the background - public static Bitmap RemoveBG(Bitmap inputBitmap) - { - Rectangle rect = new Rectangle(0, 0, inputBitmap.Width, inputBitmap.Height); - BitmapData bmpData = inputBitmap.LockBits(rect, ImageLockMode.ReadWrite, inputBitmap.PixelFormat); - int bytesPerPixel = Bitmap.GetPixelFormatSize(inputBitmap.PixelFormat) / 8; - - unsafe - { - byte* ptr = (byte*)bmpData.Scan0.ToPointer(); - for (int y = 0; y < inputBitmap.Height; y++) - { - byte* currentLine = ptr + (y * bmpData.Stride); - for (int x = 0; x < inputBitmap.Width; x++) - { - byte* pixel = currentLine + (x * bytesPerPixel); - - int B = pixel[0]; - int G = pixel[1]; - int R = pixel[2]; - - if (R <= F1TV_BACKGROUND_TRESHOLD.R && G <= F1TV_BACKGROUND_TRESHOLD.G && B <= F1TV_BACKGROUND_TRESHOLD.B) - pixel[0] = pixel[1] = pixel[2] = 0; - } - } - } - inputBitmap.UnlockBits(bmpData); - - return inputBitmap; - } - /// - /// Method that removes all the useless things from the image and returns hopefully only the numbers - /// - /// The bitmap you want to remove useless things from (Expects a cropped part of the TyreWindow) - /// The bitmap with (hopefully) only the digits - public unsafe static Bitmap RemoveUseless(Bitmap inputBitmap) - { - //Note you can use something else than a cropped tyre window but I would recommend checking the code first to see if it fits your intended use - Rectangle rect = new Rectangle(0, 0, inputBitmap.Width, inputBitmap.Height); - BitmapData bmpData = inputBitmap.LockBits(rect, ImageLockMode.ReadWrite, inputBitmap.PixelFormat); - int bytesPerPixel = Bitmap.GetPixelFormatSize(inputBitmap.PixelFormat) / 8; - - byte* ptr = (byte*)bmpData.Scan0.ToPointer(); - for (int y = 0; y < inputBitmap.Height; y++) - { - byte* currentLine = ptr + (y * bmpData.Stride); - - List pixelsToRemove = new List(); - - bool fromBorder = true; - - for (int x = 0; x < inputBitmap.Width; x++) - { - byte* pixel = currentLine + (x * bytesPerPixel); - - int B = pixel[0]; - int G = pixel[1]; - int R = pixel[2]; - - if (fromBorder && B < F1TV_BACKGROUND_TRESHOLD.B && G < F1TV_BACKGROUND_TRESHOLD.G && R < F1TV_BACKGROUND_TRESHOLD.R) - { - pixelsToRemove.Add(x); - } - else - { - if (fromBorder) - { - fromBorder = false; - pixelsToRemove.Add(x); - } - } - } - fromBorder = true; - for (int x = inputBitmap.Width - 1; x > 0; x--) - { - byte* pixel = currentLine + (x * bytesPerPixel); - - int B = pixel[0]; - int G = pixel[1]; - int R = pixel[2]; - - if (fromBorder && B < F1TV_BACKGROUND_TRESHOLD.B && G < F1TV_BACKGROUND_TRESHOLD.G && R < F1TV_BACKGROUND_TRESHOLD.R) - { - pixelsToRemove.Add(x); - } - else - { - if (fromBorder) - { - fromBorder = false; - pixelsToRemove.Add(x); - } - } - } - - foreach (int pxPos in pixelsToRemove) - { - byte* pixel = currentLine + (pxPos * bytesPerPixel); - - pixel[0] = 0xFF; - pixel[1] = 0xFF; - pixel[2] = 0xFF; - } - } - - //Removing the color parts - for (int y = 0; y < inputBitmap.Height; y++) - { - byte* currentLine = ptr + (y * bmpData.Stride); - for (int x = 0; x < inputBitmap.Width; x++) - { - byte* pixel = currentLine + (x * bytesPerPixel); - - int B = pixel[0]; - int G = pixel[1]; - int R = pixel[2]; - - if (R >= F1TV_BACKGROUND_TRESHOLD.R +25|| G >= F1TV_BACKGROUND_TRESHOLD.G +25|| B >= F1TV_BACKGROUND_TRESHOLD.B +25) - { - pixel[0] = 0xFF; - pixel[1] = 0xFF; - pixel[2] = 0xFF; - } - } - } - - inputBitmap.UnlockBits(bmpData); - return inputBitmap; - } - /// - /// Recovers the average colors from the Image. NOTE : It wont take in account colors that are lower than the background - /// - /// The bitmap you want to get the average color from - /// The average color of the bitmap - public static Color GetAvgColorFromBitmap(Bitmap inputBitmap) - { - Rectangle rect = new Rectangle(0, 0, inputBitmap.Width, inputBitmap.Height); - BitmapData bmpData = inputBitmap.LockBits(rect, ImageLockMode.ReadWrite, inputBitmap.PixelFormat); - int bytesPerPixel = Bitmap.GetPixelFormatSize(inputBitmap.PixelFormat) / 8; - - int totR = 0; - int totG = 0; - int totB = 0; - - int totPixels = 1; - - unsafe - { - byte* ptr = (byte*)bmpData.Scan0.ToPointer(); - int bmpHeight = inputBitmap.Height; - int bmpWidth = inputBitmap.Width; - Parallel.For(0, bmpHeight, y => - { - byte* currentLine = ptr + (y * bmpData.Stride); - for (int x = 0; x < bmpWidth; x++) - { - byte* pixel = currentLine + (x * bytesPerPixel); - - int B = pixel[0]; - int G = pixel[1]; - int R = pixel[2]; - - if (R >= F1TV_BACKGROUND_TRESHOLD.R || G >= F1TV_BACKGROUND_TRESHOLD.G || B >= F1TV_BACKGROUND_TRESHOLD.B) - { - totPixels++; - totB += pixel[0]; - totG += pixel[1]; - totR += pixel[2]; - } - } - }); - } - inputBitmap.UnlockBits(bmpData); - - return Color.FromArgb(255,Math.Min(Convert.ToInt32((float)totR / (float)totPixels),255), Math.Min(Convert.ToInt32((float)totG / (float)totPixels),255), Math.Min(Convert.ToInt32((float)totB / (float)totPixels),255)); - } - /// - /// This method simply inverts all the colors in a Bitmap - /// - /// the bitmap you want to invert the colors from - /// The bitmap with inverted colors - public static Bitmap InvertColors(Bitmap inputBitmap) - { - Rectangle rect = new Rectangle(0, 0, inputBitmap.Width, inputBitmap.Height); - BitmapData bmpData = inputBitmap.LockBits(rect, ImageLockMode.ReadWrite, inputBitmap.PixelFormat); - int bytesPerPixel = Bitmap.GetPixelFormatSize(inputBitmap.PixelFormat) / 8; - - unsafe - { - byte* ptr = (byte*)bmpData.Scan0.ToPointer(); - for (int y = 0; y < inputBitmap.Height; y++) - { - byte* currentLine = ptr + (y * bmpData.Stride); - for (int x = 0; x < inputBitmap.Width; x++) - { - byte* pixel = currentLine + (x * bytesPerPixel); - - pixel[0] = (byte)(255 - pixel[0]); - pixel[1] = (byte)(255 - pixel[1]); - pixel[2] = (byte)(255 - pixel[2]); - } - } - } - inputBitmap.UnlockBits(bmpData); - - return inputBitmap; - } - /// - /// Methods that applies Bicubic interpolation to increase the size and resolution of an image - /// - /// The bitmap you want to resize - /// The factor of resizing you want to use. I recommend using even numbers - /// The bitmap witht the new size - public static Bitmap Resize(Bitmap inputBitmap, int resizeFactor) - { - var resultBitmap = new Bitmap(inputBitmap.Width * resizeFactor, inputBitmap.Height * resizeFactor); - - using (var graphics = Graphics.FromImage(resultBitmap)) - { - graphics.InterpolationMode = InterpolationMode.HighQualityBicubic; - graphics.DrawImage(inputBitmap, new Rectangle(0, 0, resultBitmap.Width, resultBitmap.Height)); - } - - return resultBitmap; - } - /// - /// method that Highlights the countours of a Bitmap - /// - /// The bitmap you want to highlight the countours of - /// The bitmap with countours highlighted - public static Bitmap HighlightContours(Bitmap inputBitmap) - { - Bitmap outputBitmap = new Bitmap(inputBitmap.Width, inputBitmap.Height); - - Bitmap grayscale = Grayscale(inputBitmap); - Bitmap thresholded = Tresholding(grayscale, 128); - Bitmap dilated = Dilatation(thresholded, 3); - Bitmap eroded = Erode(dilated, 3); - - for (int y = 0; y < inputBitmap.Height; y++) - { - for (int x = 0; x < inputBitmap.Width; x++) - { - Color pixel = inputBitmap.GetPixel(x, y); - Color dilatedPixel = dilated.GetPixel(x, y); - Color erodedPixel = eroded.GetPixel(x, y); - - int gray = (int)(pixel.R * 0.3 + pixel.G * 0.59 + pixel.B * 0.11); - int threshold = dilatedPixel.R; - - if (gray > threshold) - { - outputBitmap.SetPixel(x, y, Color.FromArgb(255, 255, 255)); - } - else if (gray <= threshold && erodedPixel.R == 0) - { - outputBitmap.SetPixel(x, y, Color.FromArgb(255, 0, 0)); - } - else - { - outputBitmap.SetPixel(x, y, Color.FromArgb(0, 0, 0)); - } - } - } - - return outputBitmap; - } - /// - /// Method that that erodes the morphology of a bitmap - /// - /// The bitmap you want to erode - /// The amount of Erosion you want (be carefull its expensive on ressources) - /// The Bitmap with the eroded contents - public static Bitmap Erode(Bitmap inputBitmap, int kernelSize) - { - Bitmap outputBitmap = new Bitmap(inputBitmap.Width, inputBitmap.Height); - - int[,] kernel = new int[kernelSize, kernelSize]; - - for (int i = 0; i < kernelSize; i++) - { - for (int j = 0; j < kernelSize; j++) - { - kernel[i, j] = 1; - } - } - - for (int y = kernelSize / 2; y < inputBitmap.Height - kernelSize / 2; y++) - { - for (int x = kernelSize / 2; x < inputBitmap.Width - kernelSize / 2; x++) - { - bool flag = true; - - for (int i = -kernelSize / 2; i <= kernelSize / 2; i++) - { - for (int j = -kernelSize / 2; j <= kernelSize / 2; j++) - { - Color pixel = inputBitmap.GetPixel(x + i, y + j); - int gray = (int)(pixel.R * 0.3 + pixel.G * 0.59 + pixel.B * 0.11); - - if (gray >= 128 && kernel[i + kernelSize / 2, j + kernelSize / 2] == 1) - { - flag = false; - break; - } - } - - if (!flag) - { - break; - } - } - - if (flag) - { - outputBitmap.SetPixel(x, y, Color.FromArgb(255, 255, 255)); - } - else - { - outputBitmap.SetPixel(x, y, Color.FromArgb(0, 0, 0)); - } - } - } - - return outputBitmap; - } - /// - /// Method that that use dilatation of the morphology of a bitmap - /// - /// The bitmap you want to use dilatation on - /// The amount of dilatation you want (be carefull its expensive on ressources) - /// The Bitmap after Dilatation - public static Bitmap Dilatation(Bitmap inputBitmap, int kernelSize) - { - Bitmap outputBitmap = new Bitmap(inputBitmap.Width, inputBitmap.Height); - - int[,] kernel = new int[kernelSize, kernelSize]; - - for (int i = 0; i < kernelSize; i++) - { - for (int j = 0; j < kernelSize; j++) - { - kernel[i, j] = 1; - } - } - - for (int y = kernelSize / 2; y < inputBitmap.Height - kernelSize / 2; y++) - { - for (int x = kernelSize / 2; x < inputBitmap.Width - kernelSize / 2; x++) - { - bool flag = false; - - for (int i = -kernelSize / 2; i <= kernelSize / 2; i++) - { - for (int j = -kernelSize / 2; j <= kernelSize / 2; j++) - { - Color pixel = inputBitmap.GetPixel(x + i, y + j); - int gray = (int)(pixel.R * 0.3 + pixel.G * 0.59 + pixel.B * 0.11); - - if (gray < 128 && kernel[i + kernelSize / 2, j + kernelSize / 2] == 1) - { - flag = true; - break; - } - } - - if (flag) - { - break; - } - } - - if (flag) - { - outputBitmap.SetPixel(x, y, Color.FromArgb(0, 0, 0)); - } - else - { - outputBitmap.SetPixel(x, y, Color.FromArgb(255, 255, 255)); - } - } - } - - return outputBitmap; - } - } -} - -``` diff --git a/temp_annexes/Code/Program.md b/temp_annexes/Code/Program.md deleted file mode 100644 index f1e34b0..0000000 --- a/temp_annexes/Code/Program.md +++ /dev/null @@ -1,27 +0,0 @@ -# Program.cs - -``` cs -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using System.Windows.Forms; - -namespace TrackTrends -{ - internal static class Program - { - /// - /// The main entry point for the application. - /// - [STAThread] - static void Main() - { - Application.EnableVisualStyles(); - Application.SetCompatibleTextRenderingDefault(false); - Application.Run(new Main()); - } - } -} - -``` diff --git a/temp_annexes/Code/Reader.md b/temp_annexes/Code/Reader.md deleted file mode 100644 index d91be78..0000000 --- a/temp_annexes/Code/Reader.md +++ /dev/null @@ -1,343 +0,0 @@ -# Reader.cs - -``` cs -/// Author : Maxime Rohmer -/// Date : 30/05/2023 -/// File : Reader.cs -/// Brief : Class used to Read the config file for the OCR -/// Version : Alpha 1.0 - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Drawing; -using System.Windows.Forms; -using System.IO; -using System.Text.Json; - -namespace TrackTrends -{ - public class Reader - { - const int NUMBER_OF_DRIVERS = 20; - public List Drivers; - public List MainZones; - - private SqliteStorage _storage; - private List[] DriverDataLogs = new List[NUMBER_OF_DRIVERS]; - private int[] DriverLaps = new int[NUMBER_OF_DRIVERS]; - - public SqliteStorage Storage { get => _storage; private set => _storage = value; } - - public Reader(string configFile, Bitmap image, bool loadOCR = true) - { - Storage = new SqliteStorage(); - MainZones = Load(image, configFile, ref Drivers, loadOCR); - } - /// - /// Method that reads the JSON config file and create all the Zones and Windows - /// - /// The image #id on wich you want to create the zones on - public List Load(Bitmap image, string configFilePath, ref List driverListToFill, bool LoadOCR) - { - // Note : You may wonder why in the H... I have all the zones and windows stored in a JSON file and not just for example the first and the last - // Its because they are not perfectly aligned to each others and every zone has his own alignement to the main image - List mainZones = new List(); - Bitmap fullImage = image; - Zone mainZone; - - for (int i = 0; i < NUMBER_OF_DRIVERS; i++) - { - DriverDataLogs[i] = new List(); - DriverLaps[i] = 0; - } - - try - { - string jsonString = File.ReadAllText(configFilePath); - - JsonDocument document = JsonDocument.Parse(jsonString); - - JsonElement root = document.RootElement; - - mainZones = new List(); - driverListToFill = new List(); - - JsonElement main = root.GetProperty("Main"); - - int x = main.GetProperty("x").GetInt32(); - int y = main.GetProperty("y").GetInt32(); - int width = main.GetProperty("width").GetInt32(); - int height = main.GetProperty("height").GetInt32(); - - mainZone = new Zone(fullImage, new Rectangle(x, y, width, height), "Main"); - - mainZone.ResetWindows(); - mainZone.ResetZones(); - - JsonElement driverZones = main.GetProperty("DriverZones"); - - foreach (JsonElement driverZoneElement in driverZones.EnumerateArray()) - { - string name = driverZoneElement.GetProperty("name").GetString(); - int driverX = driverZoneElement.GetProperty("x").GetInt32() + mainZone.Bounds.X; - int driverY = driverZoneElement.GetProperty("y").GetInt32() + mainZone.Bounds.Y; - int driverWidth = driverZoneElement.GetProperty("width").GetInt32(); - int driverHeight = driverZoneElement.GetProperty("height").GetInt32(); - - Zone driverZone = new Zone(fullImage, new Rectangle(driverX, driverY, driverWidth, driverHeight), "Driver"); - - JsonElement windowsElement = driverZoneElement.GetProperty("Windows"); - - //string[] windowNames = new string[] { "Position","GapToLeader","LapTime","DRS","Tyres","Name","Sector1","Sector2","Sector3" }; - - foreach (JsonElement windowElement in windowsElement.EnumerateArray()) - { - //Position - JsonElement posEl = windowElement.GetProperty("Position"); - DriverPositionWindow positionWindow = new DriverPositionWindow(driverZone.ZoneImage, - new Rectangle( - posEl.GetProperty("x").GetInt32(), - posEl.GetProperty("y").GetInt32(), - posEl.GetProperty("width").GetInt32(), - posEl.GetProperty("height").GetInt32()), - LoadOCR); - - //GapToLeader - JsonElement gapEl = windowElement.GetProperty("GapToLeader"); - DriverGapToLeaderWindow gapWindow = new DriverGapToLeaderWindow(driverZone.ZoneImage, - new Rectangle( - gapEl.GetProperty("x").GetInt32(), - gapEl.GetProperty("y").GetInt32(), - gapEl.GetProperty("width").GetInt32(), - gapEl.GetProperty("height").GetInt32()), - LoadOCR); - - //LapTime - JsonElement lapEl = windowElement.GetProperty("LapTime"); - DriverLapTimeWindow lapWindow = new DriverLapTimeWindow(driverZone.ZoneImage, - new Rectangle( - lapEl.GetProperty("x").GetInt32(), - lapEl.GetProperty("y").GetInt32(), - lapEl.GetProperty("width").GetInt32(), - lapEl.GetProperty("height").GetInt32()), - LoadOCR); - - //DRS - JsonElement drsEl = windowElement.GetProperty("DRS"); - DriverDrsWindow drsWindow = new DriverDrsWindow(driverZone.ZoneImage, - new Rectangle( - drsEl.GetProperty("x").GetInt32(), - drsEl.GetProperty("y").GetInt32(), - drsEl.GetProperty("width").GetInt32(), - drsEl.GetProperty("height").GetInt32()), - LoadOCR); - - //Tyre - JsonElement tyresEl = windowElement.GetProperty("Tyres"); - DriverTyresWindow tyreWindow = new DriverTyresWindow(driverZone.ZoneImage, - new Rectangle( - tyresEl.GetProperty("x").GetInt32(), - tyresEl.GetProperty("y").GetInt32(), - tyresEl.GetProperty("width").GetInt32(), - tyresEl.GetProperty("height").GetInt32()), - LoadOCR); - - //Name - JsonElement nameEl = windowElement.GetProperty("Name"); - DriverNameWindow nameWindow = new DriverNameWindow(driverZone.ZoneImage, - new Rectangle( - nameEl.GetProperty("x").GetInt32(), - nameEl.GetProperty("y").GetInt32(), - nameEl.GetProperty("width").GetInt32(), - nameEl.GetProperty("height").GetInt32()), - LoadOCR); - - //Sector1 - JsonElement sec1El = windowElement.GetProperty("Sector1"); - DriverSectorWindow sec1Window = new DriverSectorWindow(driverZone.ZoneImage, - new Rectangle( - sec1El.GetProperty("x").GetInt32(), - sec1El.GetProperty("y").GetInt32(), - sec1El.GetProperty("width").GetInt32(), - sec1El.GetProperty("height").GetInt32()), - 1, LoadOCR); - - //Sector2 - JsonElement sec2El = windowElement.GetProperty("Sector2"); - DriverSectorWindow sec2Window = new DriverSectorWindow(driverZone.ZoneImage, - new Rectangle( - sec2El.GetProperty("x").GetInt32(), - sec2El.GetProperty("y").GetInt32(), - sec2El.GetProperty("width").GetInt32(), - sec2El.GetProperty("height").GetInt32()), - 2, LoadOCR); - - //Sector3 - JsonElement sec3El = windowElement.GetProperty("Sector3"); - DriverSectorWindow sec3Window = new DriverSectorWindow(driverZone.ZoneImage, - new Rectangle( - sec3El.GetProperty("x").GetInt32(), - sec3El.GetProperty("y").GetInt32(), - sec3El.GetProperty("width").GetInt32(), - sec3El.GetProperty("height").GetInt32()), - 3, LoadOCR); - - driverZone.AddWindow(positionWindow); - driverZone.AddWindow(gapWindow); - driverZone.AddWindow(lapWindow); - driverZone.AddWindow(drsWindow); - driverZone.AddWindow(tyreWindow); - driverZone.AddWindow(nameWindow); - driverZone.AddWindow(sec1Window); - driverZone.AddWindow(sec2Window); - driverZone.AddWindow(sec3Window); - } - mainZone.AddZone(driverZone); - } - - JsonElement driversElement = main.GetProperty("Drivers"); - foreach (JsonElement driverElement in driversElement.EnumerateArray()) - { - string driverName = driverElement.GetString(); - driverListToFill.Add(driverName); - Storage.AddDriver(driverName); - } - - mainZones.Add(mainZone); - } - catch (IOException ex) - { - MessageBox.Show("Error reading JSON file: " + ex.Message); - } - catch (JsonException ex) - { - MessageBox.Show("Invalid JSON format: " + ex.Message); - } - int driverID = 0; - foreach (Zone z in mainZones[0].Zones) - { - driverID++; - z.ZoneImage.Save("LoadedDriver" + driverID + ".png"); - } - return mainZones; - } - /// - /// Method that calls all the zones and windows to get the content they can find on the image to display them - /// - /// The id of the image we are working with - /// a string representation of all the returns - public List Decode(List mainZones, List drivers) - { - List mainResults = new List(); - //Decode - for (int mainZoneId = 0; mainZoneId < mainZones.Count; mainZoneId++) - { - switch (mainZoneId) - { - case 0: - //object lockObject = new object(); - //Main Zone - Parallel.For(0, mainZones[mainZoneId].Zones.Count, async i => - //for (int i = 0; i < mainZones[mainZoneId].Zones.Count; i++) - { - DriverData data = mainZones[mainZoneId].Zones[i].Decode(new List(drivers)); - mainResults.Add(data); - DriverDataLogs[i].Add(data); - - if (data.Position != -1 && DriverDataLogs[i].Count > 1) - { - //Tries to fix the tyres - if (data.CurrentTyre.NumberOfLaps > DriverDataLogs[i][DriverDataLogs[i].Count - 2].CurrentTyre.NumberOfLaps + 3) - data.CurrentTyre.NumberOfLaps = DriverDataLogs[i][DriverDataLogs[i].Count - 2].CurrentTyre.NumberOfLaps + 1; - - //Checking if its a new lap - //If the third sector is filled but it was'nt the last time, then it means that a new Lap has been started - //Lap detection can be f***ed if the OCR takes so much time that an entire sector can be raced without us knowing. - if ( - DriverDataLogs[i][DriverDataLogs[i].Count - 1].Sector3 != 0 - && DriverDataLogs[i][DriverDataLogs[i].Count - 2].Sector3 == 0 - && DriverDataLogs[i][DriverDataLogs[i].Count - 2].Position != -1 - && DriverDataLogs[i][DriverDataLogs[i].Count - 1].Position != -1) - { - DriverData stats = new DriverData(); - stats = DriverDataLogs[i][DriverDataLogs[i].Count - 1]; - DriverLaps[i]++; - Storage.AddDriverStat(stats, DriverLaps[i]); - } - //Checking if its a pitstop - //Forget this the best way to know if a tyre has been changed is if the number of laps is zero - if (data.CurrentTyre.Coumpound != Tyre.Type.Undefined && data.CurrentTyre.NumberOfLaps == 0 && DriverDataLogs[i][DriverDataLogs[i].Count - 2].CurrentTyre.NumberOfLaps != 0) - { - Storage.AddPitstop(data.Name, DriverLaps[i] - 1, data.CurrentTyre.Coumpound.ToString()); - //Driver laps -1 because it would take AT LEAST one lap for this program to detect a pitstop - } - } - DriverDataLogs[i].Add(data); - }); - break; - //Next there could be a Title Zone and TrackInfoZone - } - } - //mainResults = mainResults.OrderBy(driver => driver.Position >= 0).ThenBy(driver => driver.Position).ToList(); - mainResults = mainResults.OrderBy(driver => driver.Position).ToList(); - return mainResults; - } - /// - /// Changes the image in all of the zones wich then will do the same for theyre own subzones and windows - /// - /// The new Image from the F1TV data channel - public void ChangeImage(Bitmap Image) - { - foreach (Zone z in MainZones) - { - z.Image = Image; - } - } - /// - /// Method that can be used to convert an amount of miliseconds into a more readable human form - /// - /// The given amount of miliseconds ton convert - /// A human readable string that represents the ms - public static string ConvertMsToTime(int amountOfMs) - { - //Convert.ToInt32 would round upand I dont want that - int minuts = (int)((float)amountOfMs / (1000f * 60f)); - int seconds = (int)((amountOfMs - (minuts * 60f * 1000f)) / 1000); - int ms = amountOfMs - ((minuts * 60 * 1000) + (seconds * 1000)); - - return minuts + ":" + seconds.ToString("00") + ":" + ms.ToString("000"); - } - /// - /// Old method that can draw on an image where the windows and zones are created. mostly used for debugging - /// - /// the #id of the image we are working with - /// the drawed bitmap - public Bitmap Draw(Bitmap image, List mainZones) - { - - Graphics g = Graphics.FromImage(image); - - foreach (Zone z in mainZones) - { - int count = 0; - foreach (Zone zz in z.Zones) - { - g.DrawRectangle(Pens.Red, z.Bounds); - foreach (Window w in zz.Windows) - { - g.DrawRectangle(Pens.Blue, new Rectangle(z.Bounds.X + zz.Bounds.X, z.Bounds.Y + zz.Bounds.Y, zz.Bounds.Width, zz.Bounds.Height)); - } - - count++; - } - } - - return image; - } - } -} - -``` diff --git a/temp_annexes/Code/Settings.Designer.md b/temp_annexes/Code/Settings.Designer.md deleted file mode 100644 index 2ca6e94..0000000 --- a/temp_annexes/Code/Settings.Designer.md +++ /dev/null @@ -1,498 +0,0 @@ -# Settings.Designer.cs - -``` cs -namespace TrackTrends -{ - partial class Settings - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.components = new System.ComponentModel.Container(); - this.label1 = new System.Windows.Forms.Label(); - this.label2 = new System.Windows.Forms.Label(); - this.gpbxRaceSettings = new System.Windows.Forms.GroupBox(); - this.tbxGpUrl = new System.Windows.Forms.TextBox(); - this.gpbxDriverList = new System.Windows.Forms.GroupBox(); - this.lsbDrivers = new System.Windows.Forms.ListBox(); - this.btnRemoveDriver = new System.Windows.Forms.Button(); - this.btnAddDriver = new System.Windows.Forms.Button(); - this.tbxDriverName = new System.Windows.Forms.TextBox(); - this.gpbxPreview = new System.Windows.Forms.GroupBox(); - this.lblWindowsRemaining = new System.Windows.Forms.Label(); - this.btnResetDriver = new System.Windows.Forms.Button(); - this.btnRefresh = new System.Windows.Forms.Button(); - this.lblWindowPointsRemaining = new System.Windows.Forms.Label(); - this.lblZonePointsRemaning = new System.Windows.Forms.Label(); - this.btnCreateWindow = new System.Windows.Forms.Button(); - this.pbxPreview = new System.Windows.Forms.PictureBox(); - this.btnCreatZone = new System.Windows.Forms.Button(); - this.gpbxWindowPreview = new System.Windows.Forms.GroupBox(); - this.pbxWindowPreview = new System.Windows.Forms.PictureBox(); - this.btnLoadPreset = new System.Windows.Forms.Button(); - this.lsbPresets = new System.Windows.Forms.ListBox(); - this.tbxPresetName = new System.Windows.Forms.TextBox(); - this.btnSavePreset = new System.Windows.Forms.Button(); - this.gpbxPresets = new System.Windows.Forms.GroupBox(); - this.btnDeletePreset = new System.Windows.Forms.Button(); - this.tip1 = new System.Windows.Forms.ToolTip(this.components); - this.gpbxRaceSettings.SuspendLayout(); - this.gpbxDriverList.SuspendLayout(); - this.gpbxPreview.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.pbxPreview)).BeginInit(); - this.gpbxWindowPreview.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.pbxWindowPreview)).BeginInit(); - this.gpbxPresets.SuspendLayout(); - this.SuspendLayout(); - // - // label1 - // - this.label1.AutoSize = true; - this.label1.Font = new System.Drawing.Font("Microsoft YaHei UI", 19.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label1.ForeColor = System.Drawing.Color.White; - this.label1.Location = new System.Drawing.Point(12, 14); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(309, 43); - this.label1.TabIndex = 0; - this.label1.Text = "Configuration tool"; - // - // label2 - // - this.label2.AutoSize = true; - this.label2.Font = new System.Drawing.Font("Microsoft YaHei UI", 10.2F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label2.ForeColor = System.Drawing.Color.White; - this.label2.Location = new System.Drawing.Point(3, 25); - this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(132, 23); - this.label2.TabIndex = 1; - this.label2.Text = "Grand Prix URL"; - // - // gpbxRaceSettings - // - this.gpbxRaceSettings.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.gpbxRaceSettings.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(79)))), ((int)(((byte)(79)))), ((int)(((byte)(79))))); - this.gpbxRaceSettings.Controls.Add(this.tbxGpUrl); - this.gpbxRaceSettings.Controls.Add(this.label2); - this.gpbxRaceSettings.Font = new System.Drawing.Font("Microsoft YaHei UI", 10.2F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.gpbxRaceSettings.ForeColor = System.Drawing.Color.White; - this.gpbxRaceSettings.Location = new System.Drawing.Point(733, 9); - this.gpbxRaceSettings.Name = "gpbxRaceSettings"; - this.gpbxRaceSettings.Padding = new System.Windows.Forms.Padding(0); - this.gpbxRaceSettings.Size = new System.Drawing.Size(521, 58); - this.gpbxRaceSettings.TabIndex = 2; - this.gpbxRaceSettings.TabStop = false; - this.gpbxRaceSettings.Text = "RaceSettings"; - this.gpbxRaceSettings.Paint += new System.Windows.Forms.PaintEventHandler(this.removeBorders); - // - // tbxGpUrl - // - this.tbxGpUrl.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); - this.tbxGpUrl.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.tbxGpUrl.Font = new System.Drawing.Font("Microsoft YaHei UI", 10.2F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tbxGpUrl.ForeColor = System.Drawing.Color.White; - this.tbxGpUrl.Location = new System.Drawing.Point(141, 25); - this.tbxGpUrl.Name = "tbxGpUrl"; - this.tbxGpUrl.Size = new System.Drawing.Size(367, 22); - this.tbxGpUrl.TabIndex = 4; - this.tbxGpUrl.TextChanged += new System.EventHandler(this.tbxGpUrl_TextChanged); - // - // gpbxDriverList - // - this.gpbxDriverList.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.gpbxDriverList.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(79)))), ((int)(((byte)(79)))), ((int)(((byte)(79))))); - this.gpbxDriverList.Controls.Add(this.lsbDrivers); - this.gpbxDriverList.Controls.Add(this.btnRemoveDriver); - this.gpbxDriverList.Controls.Add(this.btnAddDriver); - this.gpbxDriverList.Controls.Add(this.tbxDriverName); - this.gpbxDriverList.FlatStyle = System.Windows.Forms.FlatStyle.Popup; - this.gpbxDriverList.Font = new System.Drawing.Font("Microsoft YaHei UI", 10F); - this.gpbxDriverList.ForeColor = System.Drawing.Color.White; - this.gpbxDriverList.Location = new System.Drawing.Point(995, 73); - this.gpbxDriverList.Name = "gpbxDriverList"; - this.gpbxDriverList.Padding = new System.Windows.Forms.Padding(0); - this.gpbxDriverList.Size = new System.Drawing.Size(259, 269); - this.gpbxDriverList.TabIndex = 3; - this.gpbxDriverList.TabStop = false; - this.gpbxDriverList.Text = "DriverList"; - this.gpbxDriverList.Paint += new System.Windows.Forms.PaintEventHandler(this.removeBorders); - // - // lsbDrivers - // - this.lsbDrivers.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); - this.lsbDrivers.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.lsbDrivers.Font = new System.Drawing.Font("Microsoft YaHei UI", 10F); - this.lsbDrivers.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(252)))), ((int)(((byte)(252)))), ((int)(((byte)(252))))); - this.lsbDrivers.FormattingEnabled = true; - this.lsbDrivers.ItemHeight = 23; - this.lsbDrivers.Location = new System.Drawing.Point(10, 23); - this.lsbDrivers.Name = "lsbDrivers"; - this.lsbDrivers.Size = new System.Drawing.Size(243, 138); - this.lsbDrivers.TabIndex = 10; - // - // btnRemoveDriver - // - this.btnRemoveDriver.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); - this.btnRemoveDriver.FlatStyle = System.Windows.Forms.FlatStyle.Popup; - this.btnRemoveDriver.Font = new System.Drawing.Font("Microsoft YaHei UI", 10.2F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.btnRemoveDriver.ForeColor = System.Drawing.Color.White; - this.btnRemoveDriver.Location = new System.Drawing.Point(132, 167); - this.btnRemoveDriver.Name = "btnRemoveDriver"; - this.btnRemoveDriver.Size = new System.Drawing.Size(121, 62); - this.btnRemoveDriver.TabIndex = 9; - this.btnRemoveDriver.Text = "Remove"; - this.btnRemoveDriver.UseVisualStyleBackColor = false; - this.btnRemoveDriver.Click += new System.EventHandler(this.btnRemoveDriver_Click); - // - // btnAddDriver - // - this.btnAddDriver.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); - this.btnAddDriver.FlatStyle = System.Windows.Forms.FlatStyle.Popup; - this.btnAddDriver.Font = new System.Drawing.Font("Microsoft YaHei UI", 10.2F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.btnAddDriver.ForeColor = System.Drawing.Color.White; - this.btnAddDriver.Location = new System.Drawing.Point(10, 167); - this.btnAddDriver.Name = "btnAddDriver"; - this.btnAddDriver.Size = new System.Drawing.Size(116, 62); - this.btnAddDriver.TabIndex = 8; - this.btnAddDriver.Text = "Add"; - this.btnAddDriver.UseVisualStyleBackColor = false; - this.btnAddDriver.Click += new System.EventHandler(this.btnAddDriver_Click); - // - // tbxDriverName - // - this.tbxDriverName.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); - this.tbxDriverName.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.tbxDriverName.Font = new System.Drawing.Font("Microsoft YaHei UI", 11F); - this.tbxDriverName.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(252)))), ((int)(((byte)(252)))), ((int)(((byte)(252))))); - this.tbxDriverName.Location = new System.Drawing.Point(10, 235); - this.tbxDriverName.Name = "tbxDriverName"; - this.tbxDriverName.Size = new System.Drawing.Size(243, 24); - this.tbxDriverName.TabIndex = 7; - // - // gpbxPreview - // - this.gpbxPreview.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(79)))), ((int)(((byte)(79)))), ((int)(((byte)(79))))); - this.gpbxPreview.Controls.Add(this.lblWindowsRemaining); - this.gpbxPreview.Controls.Add(this.btnResetDriver); - this.gpbxPreview.Controls.Add(this.btnRefresh); - this.gpbxPreview.Controls.Add(this.lblWindowPointsRemaining); - this.gpbxPreview.Controls.Add(this.lblZonePointsRemaning); - this.gpbxPreview.Controls.Add(this.btnCreateWindow); - this.gpbxPreview.Controls.Add(this.pbxPreview); - this.gpbxPreview.Controls.Add(this.btnCreatZone); - this.gpbxPreview.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.gpbxPreview.Font = new System.Drawing.Font("Microsoft YaHei UI", 10F); - this.gpbxPreview.ForeColor = System.Drawing.Color.White; - this.gpbxPreview.Location = new System.Drawing.Point(18, 73); - this.gpbxPreview.Name = "gpbxPreview"; - this.gpbxPreview.Padding = new System.Windows.Forms.Padding(0); - this.gpbxPreview.Size = new System.Drawing.Size(968, 608); - this.gpbxPreview.TabIndex = 4; - this.gpbxPreview.TabStop = false; - this.gpbxPreview.Text = "Preview"; - this.gpbxPreview.Paint += new System.Windows.Forms.PaintEventHandler(this.removeBorders); - // - // lblWindowsRemaining - // - this.lblWindowsRemaining.AutoSize = true; - this.lblWindowsRemaining.BackColor = System.Drawing.Color.Transparent; - this.lblWindowsRemaining.ForeColor = System.Drawing.Color.White; - this.lblWindowsRemaining.Location = new System.Drawing.Point(215, 82); - this.lblWindowsRemaining.Name = "lblWindowsRemaining"; - this.lblWindowsRemaining.Size = new System.Drawing.Size(183, 23); - this.lblWindowsRemaining.TabIndex = 6; - this.lblWindowsRemaining.Text = "7 windows remaining"; - // - // btnResetDriver - // - this.btnResetDriver.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btnResetDriver.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); - this.btnResetDriver.Enabled = false; - this.btnResetDriver.FlatStyle = System.Windows.Forms.FlatStyle.Popup; - this.btnResetDriver.ForeColor = System.Drawing.Color.White; - this.btnResetDriver.Location = new System.Drawing.Point(748, 20); - this.btnResetDriver.Name = "btnResetDriver"; - this.btnResetDriver.Size = new System.Drawing.Size(211, 33); - this.btnResetDriver.TabIndex = 2; - this.btnResetDriver.Text = "Reset the emulator"; - this.btnResetDriver.UseVisualStyleBackColor = false; - this.btnResetDriver.Click += new System.EventHandler(this.btnResetDriver_Click); - // - // btnRefresh - // - this.btnRefresh.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btnRefresh.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); - this.btnRefresh.FlatStyle = System.Windows.Forms.FlatStyle.Popup; - this.btnRefresh.ForeColor = System.Drawing.Color.White; - this.btnRefresh.Location = new System.Drawing.Point(549, 20); - this.btnRefresh.Name = "btnRefresh"; - this.btnRefresh.Size = new System.Drawing.Size(193, 33); - this.btnRefresh.TabIndex = 1; - this.btnRefresh.Text = "Start the browser"; - this.btnRefresh.UseVisualStyleBackColor = false; - this.btnRefresh.Click += new System.EventHandler(this.btnRefresh_Click); - // - // lblWindowPointsRemaining - // - this.lblWindowPointsRemaining.AutoSize = true; - this.lblWindowPointsRemaining.ForeColor = System.Drawing.Color.White; - this.lblWindowPointsRemaining.Location = new System.Drawing.Point(215, 59); - this.lblWindowPointsRemaining.Name = "lblWindowPointsRemaining"; - this.lblWindowPointsRemaining.Size = new System.Drawing.Size(163, 23); - this.lblWindowPointsRemaining.TabIndex = 4; - this.lblWindowPointsRemaining.Text = "0 points remaining"; - // - // lblZonePointsRemaning - // - this.lblZonePointsRemaning.AutoSize = true; - this.lblZonePointsRemaning.ForeColor = System.Drawing.Color.White; - this.lblZonePointsRemaning.Location = new System.Drawing.Point(19, 59); - this.lblZonePointsRemaning.Name = "lblZonePointsRemaning"; - this.lblZonePointsRemaning.Size = new System.Drawing.Size(163, 23); - this.lblZonePointsRemaning.TabIndex = 5; - this.lblZonePointsRemaning.Text = "0 points remaining"; - // - // btnCreateWindow - // - this.btnCreateWindow.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); - this.btnCreateWindow.Enabled = false; - this.btnCreateWindow.FlatStyle = System.Windows.Forms.FlatStyle.Popup; - this.btnCreateWindow.ForeColor = System.Drawing.Color.White; - this.btnCreateWindow.Location = new System.Drawing.Point(213, 23); - this.btnCreateWindow.Name = "btnCreateWindow"; - this.btnCreateWindow.Size = new System.Drawing.Size(201, 33); - this.btnCreateWindow.TabIndex = 2; - this.btnCreateWindow.Text = "Create the windows"; - this.btnCreateWindow.UseVisualStyleBackColor = false; - this.btnCreateWindow.Click += new System.EventHandler(this.btnCreateWindow_Click); - // - // pbxPreview - // - this.pbxPreview.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); - this.pbxPreview.Location = new System.Drawing.Point(10, 62); - this.pbxPreview.Name = "pbxPreview"; - this.pbxPreview.Size = new System.Drawing.Size(950, 540); - this.pbxPreview.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; - this.pbxPreview.TabIndex = 0; - this.pbxPreview.TabStop = false; - this.pbxPreview.Click += new System.EventHandler(this.pbxMain_Click); - this.pbxPreview.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbxMain_MouseClick); - // - // btnCreatZone - // - this.btnCreatZone.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); - this.btnCreatZone.Enabled = false; - this.btnCreatZone.FlatStyle = System.Windows.Forms.FlatStyle.Popup; - this.btnCreatZone.ForeColor = System.Drawing.Color.White; - this.btnCreatZone.Location = new System.Drawing.Point(6, 23); - this.btnCreatZone.Name = "btnCreatZone"; - this.btnCreatZone.Size = new System.Drawing.Size(201, 33); - this.btnCreatZone.TabIndex = 1; - this.btnCreatZone.Text = "Create the main zone"; - this.btnCreatZone.UseVisualStyleBackColor = false; - this.btnCreatZone.Click += new System.EventHandler(this.btnCreatZone_Click); - // - // gpbxWindowPreview - // - this.gpbxWindowPreview.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.gpbxWindowPreview.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(79)))), ((int)(((byte)(79)))), ((int)(((byte)(79))))); - this.gpbxWindowPreview.Controls.Add(this.pbxWindowPreview); - this.gpbxWindowPreview.FlatStyle = System.Windows.Forms.FlatStyle.Popup; - this.gpbxWindowPreview.Font = new System.Drawing.Font("Microsoft YaHei UI", 10F); - this.gpbxWindowPreview.ForeColor = System.Drawing.Color.White; - this.gpbxWindowPreview.Location = new System.Drawing.Point(18, 688); - this.gpbxWindowPreview.Name = "gpbxWindowPreview"; - this.gpbxWindowPreview.Padding = new System.Windows.Forms.Padding(0); - this.gpbxWindowPreview.Size = new System.Drawing.Size(1237, 88); - this.gpbxWindowPreview.TabIndex = 5; - this.gpbxWindowPreview.TabStop = false; - this.gpbxWindowPreview.Text = "DriverZonePreview"; - this.gpbxWindowPreview.Paint += new System.Windows.Forms.PaintEventHandler(this.removeBorders); - // - // pbxWindowPreview - // - this.pbxWindowPreview.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); - this.pbxWindowPreview.Location = new System.Drawing.Point(6, 30); - this.pbxWindowPreview.Name = "pbxWindowPreview"; - this.pbxWindowPreview.Size = new System.Drawing.Size(1225, 50); - this.pbxWindowPreview.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; - this.pbxWindowPreview.TabIndex = 0; - this.pbxWindowPreview.TabStop = false; - this.pbxWindowPreview.Click += new System.EventHandler(this.pbxDriverZone_Click); - this.pbxWindowPreview.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbxDriverZone_MouseClick); - // - // btnLoadPreset - // - this.btnLoadPreset.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); - this.btnLoadPreset.FlatStyle = System.Windows.Forms.FlatStyle.Popup; - this.btnLoadPreset.ForeColor = System.Drawing.Color.White; - this.btnLoadPreset.Location = new System.Drawing.Point(10, 213); - this.btnLoadPreset.Name = "btnLoadPreset"; - this.btnLoadPreset.Size = new System.Drawing.Size(243, 40); - this.btnLoadPreset.TabIndex = 10; - this.btnLoadPreset.Text = "Load the preset"; - this.btnLoadPreset.UseVisualStyleBackColor = false; - this.btnLoadPreset.Click += new System.EventHandler(this.btnLoadPreset_Click); - // - // lsbPresets - // - this.lsbPresets.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); - this.lsbPresets.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.lsbPresets.Font = new System.Drawing.Font("Microsoft YaHei UI", 10F); - this.lsbPresets.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(252)))), ((int)(((byte)(252)))), ((int)(((byte)(252))))); - this.lsbPresets.FormattingEnabled = true; - this.lsbPresets.ItemHeight = 23; - this.lsbPresets.Location = new System.Drawing.Point(10, 23); - this.lsbPresets.Name = "lsbPresets"; - this.lsbPresets.Size = new System.Drawing.Size(243, 138); - this.lsbPresets.TabIndex = 8; - this.lsbPresets.SelectedIndexChanged += new System.EventHandler(this.lsbPresets_SelectedIndexChanged); - // - // tbxPresetName - // - this.tbxPresetName.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); - this.tbxPresetName.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.tbxPresetName.Font = new System.Drawing.Font("Microsoft YaHei UI", 11F); - this.tbxPresetName.ForeColor = System.Drawing.Color.White; - this.tbxPresetName.Location = new System.Drawing.Point(10, 303); - this.tbxPresetName.Name = "tbxPresetName"; - this.tbxPresetName.Size = new System.Drawing.Size(243, 24); - this.tbxPresetName.TabIndex = 7; - // - // btnSavePreset - // - this.btnSavePreset.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); - this.btnSavePreset.FlatStyle = System.Windows.Forms.FlatStyle.Popup; - this.btnSavePreset.ForeColor = System.Drawing.Color.White; - this.btnSavePreset.Location = new System.Drawing.Point(10, 259); - this.btnSavePreset.Name = "btnSavePreset"; - this.btnSavePreset.Size = new System.Drawing.Size(243, 40); - this.btnSavePreset.TabIndex = 7; - this.btnSavePreset.Text = "Save current preset"; - this.btnSavePreset.UseVisualStyleBackColor = false; - this.btnSavePreset.Click += new System.EventHandler(this.btnSavePreset_Click); - // - // gpbxPresets - // - this.gpbxPresets.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.gpbxPresets.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(79)))), ((int)(((byte)(79)))), ((int)(((byte)(79))))); - this.gpbxPresets.Controls.Add(this.btnSavePreset); - this.gpbxPresets.Controls.Add(this.btnDeletePreset); - this.gpbxPresets.Controls.Add(this.tbxPresetName); - this.gpbxPresets.Controls.Add(this.btnLoadPreset); - this.gpbxPresets.Controls.Add(this.lsbPresets); - this.gpbxPresets.FlatStyle = System.Windows.Forms.FlatStyle.Popup; - this.gpbxPresets.Font = new System.Drawing.Font("Microsoft YaHei UI", 10F); - this.gpbxPresets.ForeColor = System.Drawing.Color.White; - this.gpbxPresets.Location = new System.Drawing.Point(995, 348); - this.gpbxPresets.Name = "gpbxPresets"; - this.gpbxPresets.Padding = new System.Windows.Forms.Padding(0); - this.gpbxPresets.Size = new System.Drawing.Size(259, 333); - this.gpbxPresets.TabIndex = 6; - this.gpbxPresets.TabStop = false; - this.gpbxPresets.Text = "Presets"; - this.gpbxPresets.Paint += new System.Windows.Forms.PaintEventHandler(this.removeBorders); - // - // btnDeletePreset - // - this.btnDeletePreset.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); - this.btnDeletePreset.FlatStyle = System.Windows.Forms.FlatStyle.Popup; - this.btnDeletePreset.ForeColor = System.Drawing.Color.White; - this.btnDeletePreset.Location = new System.Drawing.Point(10, 167); - this.btnDeletePreset.Name = "btnDeletePreset"; - this.btnDeletePreset.Size = new System.Drawing.Size(243, 40); - this.btnDeletePreset.TabIndex = 11; - this.btnDeletePreset.Text = "Delete the preset"; - this.btnDeletePreset.UseVisualStyleBackColor = false; - this.btnDeletePreset.Click += new System.EventHandler(this.btnDeletePreset_Click); - // - // Settings - // - this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 19F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); - this.ClientSize = new System.Drawing.Size(1266, 788); - this.Controls.Add(this.gpbxPresets); - this.Controls.Add(this.gpbxWindowPreview); - this.Controls.Add(this.gpbxPreview); - this.Controls.Add(this.gpbxDriverList); - this.Controls.Add(this.label1); - this.Controls.Add(this.gpbxRaceSettings); - this.Font = new System.Drawing.Font("Microsoft YaHei UI", 7.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); - this.MinimumSize = new System.Drawing.Size(1284, 835); - this.Name = "Settings"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; - this.Text = "Settings"; - this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Settings_FormClosing); - this.Resize += new System.EventHandler(this.Settings_Resize); - this.gpbxRaceSettings.ResumeLayout(false); - this.gpbxRaceSettings.PerformLayout(); - this.gpbxDriverList.ResumeLayout(false); - this.gpbxDriverList.PerformLayout(); - this.gpbxPreview.ResumeLayout(false); - this.gpbxPreview.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.pbxPreview)).EndInit(); - this.gpbxWindowPreview.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize)(this.pbxWindowPreview)).EndInit(); - this.gpbxPresets.ResumeLayout(false); - this.gpbxPresets.PerformLayout(); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.Label label1; - private System.Windows.Forms.Label label2; - private System.Windows.Forms.GroupBox gpbxRaceSettings; - private System.Windows.Forms.TextBox tbxGpUrl; - private System.Windows.Forms.GroupBox gpbxDriverList; - private System.Windows.Forms.ListBox lsbDrivers; - private System.Windows.Forms.Button btnRemoveDriver; - private System.Windows.Forms.Button btnAddDriver; - private System.Windows.Forms.TextBox tbxDriverName; - private System.Windows.Forms.GroupBox gpbxPreview; - private System.Windows.Forms.PictureBox pbxPreview; - private System.Windows.Forms.GroupBox gpbxWindowPreview; - private System.Windows.Forms.PictureBox pbxWindowPreview; - private System.Windows.Forms.Button btnCreateWindow; - private System.Windows.Forms.Button btnCreatZone; - private System.Windows.Forms.ListBox lsbPresets; - private System.Windows.Forms.TextBox tbxPresetName; - private System.Windows.Forms.Button btnSavePreset; - private System.Windows.Forms.Label lblWindowsRemaining; - private System.Windows.Forms.Label lblZonePointsRemaning; - private System.Windows.Forms.Label lblWindowPointsRemaining; - private System.Windows.Forms.Button btnRefresh; - private System.Windows.Forms.Button btnResetDriver; - private System.Windows.Forms.Button btnLoadPreset; - private System.Windows.Forms.GroupBox gpbxPresets; - private System.Windows.Forms.Button btnDeletePreset; - private System.Windows.Forms.ToolTip tip1; - } -} -``` diff --git a/temp_annexes/Code/Settings.md b/temp_annexes/Code/Settings.md deleted file mode 100644 index b1f14e5..0000000 --- a/temp_annexes/Code/Settings.md +++ /dev/null @@ -1,482 +0,0 @@ -# Settings.cs - -``` cs -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows.Forms; -using System.IO; -using TrackTrends; - -namespace TrackTrends -{ - public partial class Settings : Form - { - private string _grandPrixUrl = ""; - private string _selectedConfigFile; - private List _driverList = new List(); - - private F1TVEmulator Emulator = null; - private ConfigurationTool Config = null; - - private bool CreatingZone = false; - private Point ZoneP1; - private Point ZoneP2; - - private bool CreatingWindow = false; - private Point WindowP1; - private Point WindowP2; - - List WindowsToAdd = new List(); - - public string GrandPrixUrl { get => _grandPrixUrl; private set => _grandPrixUrl = value; } - public List DriverList { get => _driverList; private set => _driverList = value; } - public string SelectedConfigFile { get => _selectedConfigFile; private set => _selectedConfigFile = value; } - - //For the responsive content - Size oldSize = new Size(); - Size oldGpbxPreviewSize = new Size(); - Size oldGpbxWindowPreviewSize = new Size(); - - Size oldPbxPreviewSize = new Size(); - Size oldPbxWindowPreviewSize = new Size(); - - public Settings() - { - InitializeComponent(); - Load(); - } - private void Load() - { - RefreshUI(); - oldSize = this.Size; - oldGpbxPreviewSize = gpbxPreview.Size; - oldGpbxWindowPreviewSize = gpbxWindowPreview.Size; - oldPbxPreviewSize = pbxPreview.Size; - oldPbxWindowPreviewSize = pbxWindowPreview.Size; - - tip1.SetToolTip(btnCreatZone, "After clicking you can select two points in the image to set the bounds of the important data"); - tip1.SetToolTip(btnCreateWindow, "After clicking this you will have to select all the windows that are important on the lower image. Refer to the documentation for more infos"); - tip1.SetToolTip(btnRefresh, "Starts the emulator or refreshes the images if its already running"); - tip1.SetToolTip(btnResetDriver, "Resets the driver if something went wrong or if you want to test an other URL"); - tip1.SetToolTip(lsbDrivers, "The drivers that are on the image. Non-Case sensitive"); - tip1.SetToolTip(tbxPresetName, "The name of the preset you want to save"); - tip1.SetToolTip(pbxPreview, "What the emulator returns"); - tip1.SetToolTip(pbxWindowPreview, "One of the driver zones that the program managed to slice from the main zone"); - } - private void RefreshUI() - { - lsbDrivers.DataSource = null; - lsbDrivers.DataSource = DriverList; - - if (Directory.Exists(ConfigurationTool.CONFIGS_FOLDER_NAME)) - { - lsbPresets.DataSource = null; - lsbPresets.DataSource = Directory.GetFiles(ConfigurationTool.CONFIGS_FOLDER_NAME); - } - if (CreatingZone) - { - if (ZoneP1 == new Point(-1, -1)) - { - lblZonePointsRemaning.Text = "2 points Remaining"; - } - else - { - lblZonePointsRemaning.Text = "1 point Remaining"; - } - } - else - { - lblZonePointsRemaning.Text = ""; - } - - if (CreatingWindow) - { - if (WindowP1 == new Point(-1, -1)) - { - lblWindowPointsRemaining.Text = "2 points Remaining"; - } - else - { - lblWindowPointsRemaining.Text = "1 point Remaining"; - } - lblWindowPointsRemaining.Text = ConfigurationTool.NUMBER_OF_ZONES - WindowsToAdd.Count() + " Windows remaining"; - } - else - { - lblWindowPointsRemaining.Text = ""; - lblWindowsRemaining.Text = ""; - } - if (Config != null) - { - pbxPreview.Image = Config.MainZone.Draw(); - if (Config.MainZone.Zones.Count > 0) - pbxWindowPreview.Image = Config.MainZone.Zones[0].Draw(); - } - } - private void CreateNewZone(Point p1, Point p2) - { - Rectangle dimensions = CreateAbsoluteRectangle(p1, p2); - Config = new ConfigurationTool((Bitmap)pbxPreview.Image, dimensions); - RefreshUI(); - } - private void CreateWindows(List dimensions) - { - if (Config != null) - { - Config.AddWindows(dimensions); - } - } - private void tbxGpUrl_TextChanged(object sender, EventArgs e) - { - GrandPrixUrl = tbxGpUrl.Text; - } - - private void btnAddDriver_Click(object sender, EventArgs e) - { - string newDriver = tbxDriverName.Text; - DriverList.Add(newDriver); - tbxDriverName.Text = ""; - RefreshUI(); - } - - private void btnRemoveDriver_Click(object sender, EventArgs e) - { - if (lsbDrivers.SelectedIndex >= 0) - { - DriverList.RemoveAt(lsbDrivers.SelectedIndex); - } - RefreshUI(); - } - private void SwitchZoneCreation() - { - if (CreatingZone) - { - CreatingZone = false; - lblZonePointsRemaning.Text = ""; - } - else - { - CreatingZone = true; - - if (Config != null) - Config.ResetMainZone(); - - if (CreatingWindow) - SwitchWindowCreation(); - - if (Emulator != null && Emulator.Ready) - { - Config = null; - pbxPreview.Image = Emulator.Screenshot(); - } - - ZoneP1 = new Point(-1, -1); - ZoneP2 = new Point(-1, -1); - - lblZonePointsRemaning.Text = "2 Points left"; - } - RefreshUI(); - } - private void SwitchWindowCreation() - { - if (CreatingWindow) - { - CreatingWindow = false; - } - else - { - CreatingWindow = true; - - if (Config != null) - Config.ResetWindows(); - - if (CreatingZone) - SwitchZoneCreation(); - - WindowP1 = new Point(-1, -1); - WindowP2 = new Point(-1, -1); - - WindowsToAdd = new List(); - } - RefreshUI(); - } - private void btnCreatZone_Click(object sender, EventArgs e) - { - SwitchZoneCreation(); - } - private void btnCreateWindow_Click(object sender, EventArgs e) - { - SwitchWindowCreation(); - } - private void pbxMain_MouseClick(object sender, MouseEventArgs e) - { - if (CreatingZone && pbxPreview.Image != null) - { - //Point coordinates = pbxMain.PointToClient(new Point(MousePosition.X, MousePosition.Y)); - Point coordinates = e.Location; - float xOffset = (float)pbxPreview.Image.Width / (float)pbxPreview.Width; - float yOffset = (float)pbxPreview.Image.Height / (float)pbxPreview.Height; - Point newPoint = new Point(Convert.ToInt32((float)coordinates.X * xOffset), Convert.ToInt32((float)coordinates.Y * yOffset)); - - //MessageBox.Show("Coordinates" + Environment.NewLine + "Old : " + coordinates.ToString() + Environment.NewLine + "New : " + newPoint.ToString()); - - if (ZoneP1 == new Point(-1, -1)) - { - ZoneP1 = newPoint; - } - else - { - ZoneP2 = newPoint; - CreateNewZone(ZoneP1, ZoneP2); - SwitchZoneCreation(); - } - RefreshUI(); - } - } - private void pbxMain_Click(object sender, EventArgs e) - { - //Not the right one to use visibly - } - private void pbxDriverZone_MouseClick(object sender, MouseEventArgs e) - { - if (CreatingWindow && pbxWindowPreview.Image != null) - { - Point coordinates = e.Location; - - float xOffset = (float)pbxWindowPreview.Image.Width / (float)pbxWindowPreview.Width; - float yOffset = (float)pbxWindowPreview.Image.Height / (float)pbxWindowPreview.Height; - - Point newPoint = new Point(Convert.ToInt32((float)coordinates.X * xOffset), Convert.ToInt32((float)coordinates.Y * yOffset)); - - if (WindowP1 == new Point(-1, -1)) - { - WindowP1 = newPoint; - } - else - { - WindowP2 = newPoint; - WindowsToAdd.Add(CreateAbsoluteRectangle(WindowP1, WindowP2)); - - if (WindowsToAdd.Count < ConfigurationTool.NUMBER_OF_ZONES) - { - WindowP1 = new Point(-1, -1); - WindowP2 = new Point(-1, -1); - } - else - { - WindowP1 = new Point(WindowP1.X, 0); - WindowP2 = new Point(WindowP2.X, pbxWindowPreview.Image.Height); - CreateWindows(WindowsToAdd); - SwitchWindowCreation(); - } - } - RefreshUI(); - } - } - private void pbxDriverZone_Click(object sender, EventArgs e) - { - //Not the right one to use visibly - } - private Rectangle CreateAbsoluteRectangle(Point p1, Point p2) - { - Point newP1 = new Point(); - Point newP2 = new Point(); - - if (p1.X < p2.X) - { - newP1.X = p1.X; - newP2.X = p2.X; - } - else - { - newP1.X = p2.X; - newP2.X = p1.X; - } - - if (p1.Y < p2.Y) - { - newP1.Y = p1.Y; - newP2.Y = p2.Y; - } - else - { - newP1.Y = p2.Y; - newP2.Y = p1.Y; - } - return new Rectangle(newP1.X, newP1.Y, newP2.X - newP1.X, newP2.Y - newP1.Y); - } - - private async void btnRefresh_Click(object sender, EventArgs e) - { - btnRefresh.Enabled = false; - btnCreatZone.Enabled = false; - btnCreateWindow.Enabled = false; - btnResetDriver.Enabled = false; - if (Emulator == null || Emulator.GrandPrixUrl != tbxGpUrl.Text) - { - Emulator = new F1TVEmulator(tbxGpUrl.Text); - } - - if (!Emulator.Ready) - { - Task start = Task.Run(() => Emulator.Start()); - int errorCode = await start; - if (errorCode != 0) - { - string message; - switch (errorCode) - { - case 100: - message = "Error " + errorCode + " Could not recover cookies. It could be because of an improper installation of python or bad cookies in the chrome database. Please try to log on to the F1TV using chrome again"; - break; - case 101: - message = "Error " + errorCode + " Could not start the driver. It could be because an other instance is runnin make sure you closed them all before trying again"; - break; - case 102: - message = "Error " + errorCode + " Could not navigate on the F1TV site. Make sure the correct URL has been given and that you logged from chrome. It can take a few minutes to update"; - break; - case 103: - message = "Error " + errorCode + " The url is not a valid url"; - break; - case 104: - message = "Error " + errorCode + " The url is not a valid url"; - break; - case 105: - message = "Error " + errorCode + " There has been an error trying to emulate button presses. Please try again"; - break; - case 106: - message = "Error " + errorCode + " There has been an error trying to emulate button presses. Please try again"; - break; - default: - message = "Could not start the emulator Error " + errorCode; - break; - } - MessageBox.Show(message); - } - else - { - pbxPreview.Image = Emulator.Screenshot(); - } - } - else - { - pbxPreview.Image = Emulator.Screenshot(); - } - btnRefresh.Enabled = true; - btnCreatZone.Enabled = true; - btnCreateWindow.Enabled = true; - btnResetDriver.Enabled = true; - btnRefresh.Text = "Get a newer image"; - } - - private void Settings_FormClosing(object sender, FormClosingEventArgs e) - { - if (Emulator != null) - { - Emulator.Stop(); - } - Emulator = null; - GC.Collect(); - } - - private void btnResetDriver_Click(object sender, EventArgs e) - { - if (Emulator != null) - { - Emulator.ResetDriver(); - } - } - - private void btnSavePreset_Click(object sender, EventArgs e) - { - string presetName = tbxPresetName.Text; - if (Config != null) - { - Config.SaveToJson(DriverList, presetName); - } - RefreshUI(); - } - - private void lsbPresets_SelectedIndexChanged(object sender, EventArgs e) - { - SelectedConfigFile = (string)lsbPresets.Items[lsbPresets.SelectedIndex]; - } - - private void btnLoadPreset_Click(object sender, EventArgs e) - { - //MessageBox.Show(lsbPresets.SelectedIndex.ToString()); - if (lsbPresets.SelectedIndex >= 0 && pbxPreview.Image != null) - { - try - { - string fileName = lsbPresets.Items[lsbPresets.SelectedIndex].ToString(); - Reader reader = new Reader(fileName, (Bitmap)pbxPreview.Image, false); - //MainZones #0 is the big main zone containing driver zones - Config = new ConfigurationTool((Bitmap)pbxPreview.Image, reader.MainZones[0].Bounds); - Config.MainZone = reader.MainZones[0]; - DriverList = reader.Drivers; - SelectedConfigFile = fileName; - } - catch (Exception ex) - { - MessageBox.Show("Could not load the settings error :" + ex); - } - RefreshUI(); - } - } - - private void Settings_Resize(object sender, EventArgs e) - { - int xDiff = this.Width - oldSize.Width; - int yDiff = this.Height - oldSize.Height; - - gpbxPreview.Size = new Size(oldGpbxPreviewSize.Width + xDiff, oldGpbxPreviewSize.Height + yDiff); - gpbxWindowPreview.Size = new Size(oldGpbxWindowPreviewSize.Width + xDiff, oldGpbxWindowPreviewSize.Height); - pbxPreview.Size = new Size(oldPbxPreviewSize.Width + xDiff, oldPbxPreviewSize.Height + yDiff); - pbxWindowPreview.Size = new Size(oldPbxWindowPreviewSize.Width + xDiff, oldPbxWindowPreviewSize.Height); - } - - private void btnDeletePreset_Click(object sender, EventArgs e) - { - int selectedIndex = lsbPresets.SelectedIndex; - if (selectedIndex >= 0) - { - string fileName = lsbPresets.Items[selectedIndex].ToString(); - if (File.Exists(fileName)) - { - File.Delete(fileName); - RefreshUI(); - } - else - { - MessageBox.Show("Could not delete the preset because it does not exists"); - } - } - } - - private void removeBorders(object sender, PaintEventArgs e) - { - GroupBox gpbx = (GroupBox)sender; - - using (Pen pen = new Pen(gpbx.BackColor, 50)) - { - e.Graphics.DrawRectangle(pen, 0, 0, gpbx.Width - 1, gpbx.Height - 1); - e.Graphics.DrawRectangle(pen, 0, 0, gpbx.Width - 1, gpbx.Height - 1); - } - - using (var brush = new SolidBrush(gpbx.ForeColor)) - { - var textPosition = new Point(5, 0); // Adjust the X and Y values as needed - e.Graphics.DrawString(gpbx.Text, gpbx.Font, brush, textPosition); - } - } - } -} - -``` diff --git a/temp_annexes/Code/SqliteStorage.md b/temp_annexes/Code/SqliteStorage.md deleted file mode 100644 index 1d916a4..0000000 --- a/temp_annexes/Code/SqliteStorage.md +++ /dev/null @@ -1,267 +0,0 @@ -# SqliteStorage.cs - -``` cs -/// Author : Maxime Rohmer -/// Date : 30/05/2023 -/// File : SqliteStorage.cs -/// Brief : Class that controls the sqlite database -/// Version : Alpha 1.0 - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Data.SQLite; -using System.IO; -using System.Windows.Forms; - -namespace TrackTrends -{ - public class SqliteStorage - { - private const string DATABASE_FOLDER = "./Data"; - private const string DATABASE_FILE = "/database.sqlite"; - private const string CONNECTION_STRING = "Data Source=" + DATABASE_FOLDER + DATABASE_FILE + ";Version=3;"; - - private SQLiteConnection Connection; - /// - /// Creates a new Sqlite Storage and initialize the database - /// - public SqliteStorage() - { - Load(); - } - /// - /// Loads a fresh new Database or create a new one if it does not exist. - /// - private void Load() - { - if (!Directory.Exists(DATABASE_FOLDER)) - Directory.CreateDirectory(DATABASE_FOLDER); - - if (!File.Exists(DATABASE_FOLDER + DATABASE_FILE)) - { - SQLiteConnection.CreateFile(DATABASE_FOLDER + DATABASE_FILE); - } - else - { - //We are not using the existing DataBase - File.Delete(DATABASE_FOLDER + DATABASE_FILE); - } - - Connection = new SQLiteConnection(CONNECTION_STRING); - Connection.Open(); - - //Create the drivers table - string createDriversTableQuery = @"CREATE TABLE IF NOT EXISTS Drivers - (ID INTEGER PRIMARY KEY AUTOINCREMENT, - Name VARCHAR NOT NULL);"; - using (var command = new SQLiteCommand(createDriversTableQuery, Connection)) - { - command.ExecuteNonQuery(); - } - - //Create the drivers table - string createPitstopTableQuery = @"CREATE TABLE Pitstops - (Lap INTEGER NOT NULL, - DriverID INTEGER NOT NULL, - Tyre VARCHAR, - PRIMARY KEY (Lap,DriverID));"; - using (var command = new SQLiteCommand(createPitstopTableQuery, Connection)) - { - command.ExecuteNonQuery(); - } - - //Create the stats - string createStatsTableQuery = @"CREATE TABLE IF NOT EXISTS Stats - (Lap INTEGER NOT NULL, - DriverID INTEGER NOT NULL, - Tyre VARCHAR NOT NULL, - LapTime INTEGER NOT NULL, - Sector1 INTEGER NOT NULL, - Sector2 INTEGER NOT NULL, - Sector3 INTEGER NOT NULL, - GapToLeader INTEGER NOT NULL, - Position INTEGER NOT NULL, - PRIMARY KEY (Lap, DriverID));"; - using (var command = new SQLiteCommand(createStatsTableQuery, Connection)) - { - command.ExecuteNonQuery(); - } - } - /// - /// Adds a driver into the drivers table. Meant to be used at the start of the programm - /// - /// The name of the driver. (non case sensitive) - public void AddDriver(string name) - { - string insertQuery = "INSERT INTO Drivers (Name) VALUES (@name);"; - - using (var command = new SQLiteCommand(insertQuery,Connection)) - { - command.Parameters.AddWithValue("@Name",name); - - try - { - command.ExecuteNonQuery(); - } - catch - { - //MessageBox.Show("An error has occured while trying to insert a new driver into de Database"); - } - } - } - /// - /// Searches for a driver and returns its id if it has been found - /// - /// Name of the driver (non case sensitive) - /// - private int GetDriverID(string name) - { - string selectQuery = "SELECT ID FROM Drivers where Name LIKE @driverName"; - int result = 0; - using (var command = new SQLiteCommand(selectQuery,Connection)) - { - command.Parameters.AddWithValue("@driverName",name); - try - { - using (var reader = command.ExecuteReader()) - { - while (reader.Read()) - { - result = reader.GetInt32(0); - } - } - } - catch - { - //MessageBox.Show("There has been an error while trying to retrieve the ID of a Driver from the database"); - } - } - return result; - } - /// - /// Gets the sectors from a lapTime. Sectors are subdivisions of a laptime (could be usefull to validate one or the other) - /// - /// The name of the driver who has done the lap - /// The lap at wich the driver has done the time - /// A list of the different sectors time in int (ms) - public List GetSectorsFromLapTime(string driverName,int lap) - { - int driverId = GetDriverID(driverName); - string selectQuery = "SELECT Sector1,Sector2,Sector3 FROM Stats WHERE DriverID = @driverID AND Lap = @lap"; - List result = new List(); - using (var command = new SQLiteCommand(selectQuery, Connection)) - { - command.Parameters.AddWithValue("@driverID", driverId); - command.Parameters.AddWithValue("@lap", lap); - try - { - SQLiteDataReader reader = command.ExecuteReader(); - while (reader.Read()) - { - result.Add(reader.GetInt32(0)); - result.Add(reader.GetInt32(1)); - result.Add(reader.GetInt32(2)); - } - } - catch - { - //MessageBox.Show("There has been an error while trying to retrieve the ID of a Driver from the database"); - } - } - return result; - } - /// - /// Get the laptime history of a driver - /// - /// The name of the driver - /// The number of lapTimes you want - /// A list of tuples with the lap and the laptime. It will only return the amount it found so even if you ask 5 expect getting less or even 0 - public List<(int LapTime, int Lap)> GetDriverLaptimes(string driverName,int numberOfLaptimes) - { - int driverId = GetDriverID(driverName); - List<(int LapTime, int Lap)> lapData = new List<(int LapTime, int Lap)>(); - string selectQuery = "Select LapTime,Lap from Stats WHERE DriverID = @driverID ORDER BY Lap DESC LIMIT @limit"; - using (var command = new SQLiteCommand(selectQuery, Connection)) - { - command.Parameters.AddWithValue("@driverID", driverId); - command.Parameters.AddWithValue("@limit", numberOfLaptimes); - try - { - SQLiteDataReader reader = command.ExecuteReader(); - while (reader.Read()) - { - int lapTime = reader.GetInt32(0); - int lap = reader.GetInt32(1); - lapData.Add((lapTime, lap)); - } - } - catch - { - //MessageBox.Show("There has been an error while trying to retrieve the ID of a Driver from the database"); - } - } - return lapData; - } - /// - /// Add a pitstop into the db - /// - /// The name of the driver who made his pitstop - /// The lap where he stopped - /// The tyre he took out - public void AddPitstop(string driverName,int lap,string tyre) - { - string insertQuery = "INSERT INTO Pitstops (Lap,DriverID,Tyre) VALUES (@Lap,@DriverID,@Tyre)"; - - using (var command = new SQLiteCommand(insertQuery,Connection)) - { - command.Parameters.AddWithValue("@Lap",lap); - command.Parameters.AddWithValue("@DriverID",GetDriverID(driverName)); - command.Parameters.AddWithValue("@Tyre",tyre); - try - { - command.ExecuteNonQuery(); - } - catch - { - //MessageBox.Show("An error has occured while trying to insert a new pitstop into the DB" + Environment.NewLine + "Request :"+ command.ToString()); - } - } - } - /// - /// Adds drivers info into the DB (it should only be once per lap) - /// - /// The Driver data - /// The lap from wich the datas are from - public void AddDriverStat(DriverData data,int lap) - { - string insertQuery = "INSERT INTO Stats (Lap,DriverID,Tyre,LapTime,Sector1,Sector2,Sector3,GapToLeader,Position) VALUES (@Lap,@DriverID,@Tyre,@LapTime,@Sector1,@Sector2,@Sector3,@GapToLeader,@Position);"; - - using (var command = new SQLiteCommand(insertQuery,Connection)) - { - command.Parameters.AddWithValue("@Lap",lap); - command.Parameters.AddWithValue("@DriverID",GetDriverID(data.Name)); - command.Parameters.AddWithValue("@Tyre",data.CurrentTyre.Coumpound.ToString()); - command.Parameters.AddWithValue("@LapTime",data.LapTime); - command.Parameters.AddWithValue("@Sector1",data.Sector1); - command.Parameters.AddWithValue("@Sector2", data.Sector2); - command.Parameters.AddWithValue("@Sector3", data.Sector3); - command.Parameters.AddWithValue("@GapToLeader", data.GapToLeader); - command.Parameters.AddWithValue("@Position", data.Position); - - try - { - command.ExecuteNonQuery(); - } - catch - { - //MessageBox.Show("An error has occured while trying to insert infos about a driver"); - } - } - } - } -} - -``` diff --git a/temp_annexes/Code/Window.md b/temp_annexes/Code/Window.md deleted file mode 100644 index 643b085..0000000 --- a/temp_annexes/Code/Window.md +++ /dev/null @@ -1,681 +0,0 @@ -# Window.cs - -``` cs -/// Author : Maxime Rohmer -/// Date : 30/05/2023 -/// File : Window.cs -/// Brief : Default Window object that is mainly expected to be inherited. -/// Version : Alpha 1.0 - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Drawing; -using System.IO; -using Tesseract; -using System.Text.RegularExpressions; -using System.Drawing.Drawing2D; - -namespace TrackTrends -{ - public class Window - { - public const string STRING_DEBUG_FOLDER = "./GetString"; - public const string LAPTIME_DEBUG_FOLDER = "./LapTime"; - public const string GAPTOLEADER_DEBUG_FOLDER = "./Gap"; - public const string SECTOR1_DEBUG_FOLDER = "./Sector1"; - public const string SECTOR2_DEBUG_FOLDER = "./Sector2"; - public const string SECTOR3_DEBUG_FOLDER = "./Sector3"; - public const string DRS_DEBUG_FOLDER = "./DRS"; - public const string TYRE_DEBUG_FOLDER = "./Tyre"; - - private Rectangle _bounds; - private Bitmap _image; - private string _name; - protected TesseractEngine Engine; - public Rectangle Bounds { get => _bounds; private set => _bounds = value; } - public Bitmap Image { get => _image; set => _image = value; } - public string Name { get => _name; protected set => _name = value; } - //This will have to be changed if you want to make it run on your machine - public static DirectoryInfo TESS_DATA_FOLDER = new DirectoryInfo(@"C:\Users\Moi\Pictures\SeleniumScreens\TessData"); - //Debug - public static Random rnd = new Random(); - - public Bitmap WindowImage - { - get - { - //This little trickery lets you have the image that the window sees - Bitmap sample = new Bitmap(Bounds.Width, Bounds.Height); - Graphics g = Graphics.FromImage(sample); - g.DrawImage(Image, new Rectangle(0, 0, sample.Width, sample.Height), Bounds, GraphicsUnit.Pixel); - return sample; - } - } - /// - /// Creates a new Window - /// - /// The image of the parent zone - /// The position and size of the window - /// Does the window need to generate a tesseract engine (takes time and ressources) - public Window(Bitmap image, Rectangle bounds, bool generateEngine = true) - { - Image = image; - Bounds = bounds; - if (generateEngine) - { - Engine = new TesseractEngine(TESS_DATA_FOLDER.FullName, "eng", EngineMode.Default); - Engine.DefaultPageSegMode = PageSegMode.SingleLine; - } - - //DEBUG - /* - if (!Directory.Exists(STRING_DEBUG_FOLDER)) - Directory.CreateDirectory(STRING_DEBUG_FOLDER); - if (!Directory.Exists(LAPTIME_DEBUG_FOLDER)) - Directory.CreateDirectory(LAPTIME_DEBUG_FOLDER); - if (!Directory.Exists(GAPTOLEADER_DEBUG_FOLDER)) - Directory.CreateDirectory(GAPTOLEADER_DEBUG_FOLDER); - if (!Directory.Exists(SECTOR1_DEBUG_FOLDER)) - Directory.CreateDirectory(SECTOR1_DEBUG_FOLDER); - if (!Directory.Exists(SECTOR2_DEBUG_FOLDER)) - Directory.CreateDirectory(SECTOR2_DEBUG_FOLDER); - if (!Directory.Exists(SECTOR3_DEBUG_FOLDER)) - Directory.CreateDirectory(SECTOR3_DEBUG_FOLDER); - if (!Directory.Exists(DRS_DEBUG_FOLDER)) - Directory.CreateDirectory(DRS_DEBUG_FOLDER); - if (!Directory.Exists(TYRE_DEBUG_FOLDER)) - Directory.CreateDirectory(TYRE_DEBUG_FOLDER); - */ - } - /// - /// Method that will have to be used by the childrens to let the model make them decode the images they have - /// - /// Returns an object because we dont know what kind of return it will be - public virtual Object DecodePng() - { - return "NaN"; - } - /// - /// Method that will have to be used by the childrens to let the model make them decode the images they have - /// - /// This is a list of the different possible drivers in the race. It should not be too big but NEVER be too short - /// Returns an object because we dont know what kind of return it will be - public virtual Object DecodePng(List driverList) - { - return "NaN"; - } - /// - /// This converts an image into a byte[]. It can be usefull when doing unsafe stuff. Use at your own risks - /// - /// The image you want to convert - /// A byte array containing the image informations - public static byte[] ImageToByte(Image inputImage) - { - using (var stream = new MemoryStream()) - { - inputImage.Save(stream, System.Drawing.Imaging.ImageFormat.Png); - return stream.ToArray(); - } - } - /// - /// This method is used to recover a time from a PNG using Tesseract OCR - /// - /// The image where the text is - /// The type of window it is - /// The Tesseract Engine - /// The time in milliseconds - public static int GetTimeFromPng(Bitmap image, OcrImage.WindowType windowType, TesseractEngine Engine) - { - //Kind of a big method but it has a lot of error handling and has to work with three special cases - string rawResult = ""; - int result = 0; - - //Debug - int salt = rnd.Next(0, 999999); - - switch (windowType) - { - case OcrImage.WindowType.Sector: - //The usual sector is in this form : 33.456 - Engine.SetVariable("tessedit_char_whitelist", "0123456789."); - break; - case OcrImage.WindowType.LapTime: - //The usual Lap time is in this form : 1:45:345 - Engine.SetVariable("tessedit_char_whitelist", "0123456789.:"); - break; - case OcrImage.WindowType.Gap: - //The usual Gap is in this form : + 34.567 - Engine.SetVariable("tessedit_char_whitelist", "0123456789.+"); - break; - default: - Engine.SetVariable("tessedit_char_whitelist", ""); - break; - } - - - Bitmap enhancedImage = new OcrImage(image).Enhance(windowType); - - var tessImage = Pix.LoadFromMemory(ImageToByte(enhancedImage)); - - Page page = Engine.Process(tessImage); - Graphics g = Graphics.FromImage(enhancedImage); - // Get the iterator for the page layout - using (var iter = page.GetIterator()) - { - // Loop over the elements of the page layout - iter.Begin(); - do - { - // Get the text for the current element - try - { - rawResult += iter.GetText(PageIteratorLevel.Word); - } - catch - { - //nothing we just dont add it if its not a number - } - } while (iter.Next(PageIteratorLevel.Word)); - } - - List rawNumbers; - - //In the gaps we can find '+' but we dont care about it its redondant a driver will never be - something - if (windowType == OcrImage.WindowType.Gap) - rawResult = Regex.Replace(rawResult, "[^0-9.:]", ""); - - //Splits into minuts seconds miliseconds - rawNumbers = rawResult.Split('.', ':').ToList(); - //removes any empty cells (tho this usually sign of a really bad OCR implementation tbh will have to be fixed higher in the chian) - rawNumbers.RemoveAll(x => ((string)x) == ""); - - int minuts = 0; - int seconds = 0; - int miliseconds = 0; - switch (windowType) - { - case OcrImage.WindowType.Sector: - //Usually there is supposed to be only 2 parts. - if (rawNumbers.Count == 2) - { - //The perect case - try - { - seconds = Convert.ToInt32(rawNumbers[0].ToString()); - miliseconds = Convert.ToInt32(rawNumbers[1].ToString()); - } - catch - { - Console.WriteLine("Sector time convertion failed"); - } - } - else - { - if (rawNumbers.Count == 1) - { - //Here it is a little harder... Usually its because a '.' has been overlooked or interpreted as a number - - if (rawNumbers[0].Length == 6) - { - //The '.' has been understood as a number - try - { - seconds = Convert.ToInt32(rawNumbers[0][0].ToString() + rawNumbers[0][1].ToString()); - miliseconds = Convert.ToInt32(rawNumbers[0][3].ToString() + rawNumbers[0][4].ToString() + rawNumbers[0][5].ToString()); - } - catch - { - Console.WriteLine("Sector time convertion failed"); - } - } - else - { - if (rawNumbers[0].Length == 5) - { - //The '.' has been overlooked - try - { - seconds = Convert.ToInt32(rawNumbers[0][0].ToString() + rawNumbers[0][1].ToString()); - miliseconds = Convert.ToInt32(rawNumbers[0][2].ToString() + rawNumbers[0][3].ToString() + rawNumbers[0][4].ToString()); - } - catch - { - Console.WriteLine("Sector time convertion failed"); - } - } - else - { - Console.WriteLine("Sector time convertion failed"); - } - } - } - else - { - //The OCR detected more than 1 '.' wich is concerning because that means that something went really wrong - Console.WriteLine("Sector time convertion failed"); - } - } - - result = 0; - result += seconds * 1000; - result += miliseconds; - break; - case OcrImage.WindowType.LapTime: - - if (rawNumbers.Count == 3) - { - //The normal way - try - { - minuts = Convert.ToInt32(rawNumbers[0].ToString()); - seconds = Convert.ToInt32(rawNumbers[1].ToString()); - miliseconds = Convert.ToInt32(rawNumbers[2].ToString()); - } - catch - { - Console.WriteLine("Lap time convertion failed"); - } - } - else - { - if (rawNumbers.Count == 2) - { - //Either the ':' or the '.' has been missinterpreted - if (rawNumbers[0].Length > rawNumbers[1].Length) - { - //The ':' has been missinterpreted - if (rawNumbers[0].Length == 3) - { - //It has been forgotten - try - { - minuts = Convert.ToInt32(rawNumbers[0][0].ToString()); - seconds = Convert.ToInt32(rawNumbers[0][1].ToString() + rawNumbers[0][2].ToString()); - miliseconds = Convert.ToInt32(rawNumbers[1]); - } - catch - { - Console.WriteLine("Lap time convertion failed"); - } - - } - else - { - if (rawNumbers[0].Length == 4) - { - //I has been translated into an other number - try - { - minuts = Convert.ToInt32(rawNumbers[0][0].ToString()); - seconds = Convert.ToInt32(rawNumbers[0][2].ToString() + rawNumbers[0][3].ToString()); - miliseconds = Convert.ToInt32(rawNumbers[1]); - } - catch - { - Console.WriteLine("Lap time convertion failed"); - } - } - else - { - //This could happen if the ':' has been missinterpreted with a lap time of over 9 minuts (HIGLY IMPROBABLE) - Console.WriteLine("Lap time convertion failed"); - } - } - } - else - { - //The '.' has been missinterpreted - if (rawNumbers[1].Length == 5) - { - //It has been forgotten - minuts = Convert.ToInt32(rawNumbers[0].ToString()); - seconds = Convert.ToInt32(rawNumbers[1][0].ToString() + rawNumbers[1][1].ToString()); - miliseconds = Convert.ToInt32(rawNumbers[1][2].ToString() + rawNumbers[1][3].ToString() + rawNumbers[1][4].ToString()); - } - else - { - if (rawNumbers[1].Length == 6) - { - try - { - //It has been interpreted as a number - minuts = Convert.ToInt32(rawNumbers[0].ToString()); - seconds = Convert.ToInt32(rawNumbers[1][0].ToString() + rawNumbers[1][1].ToString()); - miliseconds = Convert.ToInt32(rawNumbers[1][3].ToString() + rawNumbers[1][4].ToString() + rawNumbers[1][5].ToString()); - } - catch - { - //It can happen and to be honest I dont know how to fix it - } - } - else - { - Console.WriteLine("Lap time convertion failed"); - } - } - } - } - else - { - if (rawNumbers.Count == 1) - { - //Both the '.' and the ':' have been missinterpreted - if (rawNumbers[0].Length == 6) - { - //The just all have been forgotten - try - { - minuts = Convert.ToInt32(rawNumbers[0][0].ToString()); - seconds = Convert.ToInt32(rawNumbers[0][1].ToString() + rawNumbers[0][2].ToString()); - miliseconds = Convert.ToInt32(rawNumbers[0][3].ToString() + rawNumbers[0][4].ToString() + rawNumbers[0][5].ToString()); - } - catch - { - Console.WriteLine("Lap time convertion failed"); - } - } - else - { - if (rawNumbers[0].Length == 7) - { - //The '.' or ':' have been interpreted as a number (usually the ':') - try - { - minuts = Convert.ToInt32(rawNumbers[0][0].ToString()); - seconds = Convert.ToInt32(rawNumbers[0][2].ToString() + rawNumbers[0][3].ToString()); - miliseconds = Convert.ToInt32(rawNumbers[0][4].ToString() + rawNumbers[0][5].ToString() + rawNumbers[0][6].ToString()); - } - catch - { - Console.WriteLine("Lap time convertion failed"); - } - } - else - { - if (rawNumbers[0].Length == 8) - { - //Both have been interpreted as a number - try - { - minuts = Convert.ToInt32(rawNumbers[0][0].ToString()); - seconds = Convert.ToInt32(rawNumbers[0][2].ToString() + rawNumbers[0][3].ToString()); - miliseconds = Convert.ToInt32(rawNumbers[0][5].ToString() + rawNumbers[0][6].ToString() + rawNumbers[0][7].ToString()); - } - catch - { - Console.WriteLine("Lap time convertion failed"); - } - } - else - { - //I dont know what could have happened - Console.WriteLine("Lap time convertion failed"); - } - } - } - } - else - { - //I dont know what could have happened - Console.WriteLine("Lap time convertion failed"); - } - } - } - - result = 0; - result += minuts * 60 * 1000; - result += seconds * 1000; - result += miliseconds; - break; - case OcrImage.WindowType.Gap: - if (rawNumbers.Count == 2) - { - // This should be the x.xxx or a missed x:xx.xxx - if (rawNumbers[0].Length > 2) - { - //Its a missed x:xx.xxx - if (rawNumbers[0].Length == 3) - { - //It forgot the ":" - try - { - minuts = Convert.ToInt32(rawNumbers[0][0].ToString()); - seconds = Convert.ToInt32(rawNumbers[0][1].ToString() + rawNumbers[0][2].ToString()); - miliseconds = Convert.ToInt32(rawNumbers[1]); - } - catch - { - Console.WriteLine("Gap to leader convertion failed"); - } - } - else - { - //The ":" has been mistaken as a number - if (rawNumbers[0].Length == 4) - { - try - { - minuts = Convert.ToInt32(rawNumbers[0][0].ToString()); - seconds = Convert.ToInt32(rawNumbers[0][2].ToString() + rawNumbers[0][3].ToString()); - miliseconds = Convert.ToInt32(rawNumbers[1]); - } - catch - { - Console.WriteLine("Gap to leader convertion failed"); - } - } - else - { - Console.WriteLine("Gap to leader convertion failed"); - } - } - - } - else - { - //It should be a normal x.xxx or xx.xxx - try - { - seconds = Convert.ToInt32(rawNumbers[0].ToString()); - miliseconds = Convert.ToInt32(rawNumbers[1].ToString()); - } - catch - { - Console.WriteLine("Gap to leader convertion failed"); - } - } - } - else - { - if (rawNumbers.Count == 1) - { - //can be anything depending on the size of the string - if (rawNumbers[0].Length == 4) - { - //We just missed the '.' - try - { - seconds = Convert.ToInt32(rawNumbers[0][0].ToString()); - miliseconds = Convert.ToInt32(rawNumbers[0][1].ToString() + rawNumbers[0][2].ToString() + rawNumbers[0][3].ToString()); - } - catch - { - Console.WriteLine("Gap to leader convertion failed"); - } - } - else - { - if (rawNumbers[0].Length == 5) - { - //We just missed the '.' - try - { - seconds = Convert.ToInt32(rawNumbers[0][0].ToString() + rawNumbers[0][1].ToString()); - miliseconds = Convert.ToInt32(rawNumbers[0][2].ToString() + rawNumbers[0][3].ToString() + rawNumbers[0][4].ToString()); - } - catch - { - Console.WriteLine("Gap to leader convertion failed"); - } - } - //There is just too much possibilities that it would be stupid to try and tell them appart so for now im leaving that as just an error - Console.WriteLine("Gap to leader convertion failed"); - } - } - else - { - if (rawNumbers.Count == 3) - { - // This should be the x:xx.xxx - try - { - //Gaps cant be more than 9 minuts so if there is more than 1 digit it means that the '+' has been understood as an other number - if (rawNumbers[0].Length > 1) - rawNumbers[0] = rawNumbers[0][rawNumbers[0].Length - 1].ToString(); - - minuts = Convert.ToInt32(rawNumbers[0].ToString()); - seconds = Convert.ToInt32(rawNumbers[1].ToString()); - miliseconds = Convert.ToInt32(rawNumbers[2].ToString()); - } - catch - { - Console.WriteLine("Gap to leader convertion failed"); - } - } - } - } - result = 0; - result += minuts * 60 * 1000; - result += seconds * 1000; - result += miliseconds; - break; - default: - try - { - result = Convert.ToInt32(rawNumbers[0].ToString()); - } - catch - { - result = 0; - } - break; - } - - page.Dispose(); - return result; - } - /// - /// Method that recovers strings from an image using Tesseract OCR - /// - /// The image of the window that contains text - /// The Tesseract engine - /// The list of allowed chars - /// The type of window the text is on. Depending on the context the OCR will behave differently - /// the string it found - public static string GetStringFromPng(Bitmap image, TesseractEngine Engine, string allowedChars = "", OcrImage.WindowType windowType = OcrImage.WindowType.Text) - { - string result = ""; - - //Debug - int salt = rnd.Next(0, 999999); - - Engine.SetVariable("tessedit_char_whitelist", allowedChars); - - Bitmap rawData = image; - Bitmap enhancedImage = new OcrImage(rawData).Enhance(windowType); - - Page page = Engine.Process(enhancedImage); - using (var iter = page.GetIterator()) - { - iter.Begin(); - do - { - result += iter.GetText(PageIteratorLevel.Word); - } while (iter.Next(PageIteratorLevel.Word)); - } - page.Dispose(); - return result; - } - /// - /// Get a smaller image from a bigger one - /// - /// The big bitmap you want to get a part of - /// The dimensions of the new bitmap - /// The little bitmap - protected Bitmap GetSmallBitmapFromBigOne(Bitmap inputBitmap, Rectangle newBitmapDimensions) - { - Bitmap sample = new Bitmap(newBitmapDimensions.Width, newBitmapDimensions.Height); - Graphics g = Graphics.FromImage(sample); - g.DrawImage(inputBitmap, new Rectangle(0, 0, sample.Width, sample.Height), newBitmapDimensions, GraphicsUnit.Pixel); - return sample; - } - /// - /// Returns the closest string from a list of options - /// - /// an array of all the possibilities - /// the string you want to compare - /// The closest option - protected static string FindClosestMatch(List options, string testString) - { - var closestMatch = ""; - var closestDistance = int.MaxValue; - - foreach (var item in options) - { - var distance = LevenshteinDistance(item, testString); - if (distance < closestDistance) - { - closestMatch = item; - closestDistance = distance; - } - } - return closestMatch; - } - //This method has been generated with the help of ChatGPT - /// - /// Method that computes a score of distance between two strings - /// - /// The first string (order irrelevant) - /// The second string (order irrelevant) - /// The levenshtein distance - protected static int LevenshteinDistance(string string1, string string2) - { - if (string.IsNullOrEmpty(string1)) - { - return string.IsNullOrEmpty(string2) ? 0 : string2.Length; - } - - if (string.IsNullOrEmpty(string2)) - { - return string.IsNullOrEmpty(string1) ? 0 : string1.Length; - } - - var d = new int[string1.Length + 1, string2.Length + 1]; - for (var i = 0; i <= string1.Length; i++) - { - d[i, 0] = i; - } - - for (var j = 0; j <= string2.Length; j++) - { - d[0, j] = j; - } - - for (var i = 1; i <= string1.Length; i++) - { - for (var j = 1; j <= string2.Length; j++) - { - var cost = (string1[i - 1] == string2[j - 1]) ? 0 : 1; - d[i, j] = Math.Min(Math.Min(d[i - 1, j] + 1, d[i, j - 1] + 1), d[i - 1, j - 1] + cost); - } - } - - return d[string1.Length, string2.Length]; - } - } -} - -``` diff --git a/temp_annexes/Code/Zone.md b/temp_annexes/Code/Zone.md deleted file mode 100644 index e4dc3fc..0000000 --- a/temp_annexes/Code/Zone.md +++ /dev/null @@ -1,190 +0,0 @@ -# Zone.cs - -``` cs -/// Author : Maxime Rohmer -/// Date : 30/05/2023 -/// File : Zone.cs -/// Brief : Class that contains all the methods and infos for a zone. This is designed to be potentially be inherited. -/// Version : Alpha 1.0 - -using System; -using System.Collections.Generic; -using System.Drawing; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace TrackTrends -{ - public class Zone - { - private Rectangle _bounds; - private List _zones; - private List _windows; - private Bitmap _image; - private string _name; - - public Bitmap ZoneImage - { - get - { - //This little trickery lets you have the image that the zone sees - Bitmap sample = new Bitmap(Bounds.Width, Bounds.Height); - Graphics g = Graphics.FromImage(sample); - g.DrawImage(Image, new Rectangle(0, 0, sample.Width, sample.Height), Bounds, GraphicsUnit.Pixel); - return sample; - } - } - public Bitmap Image - { - get { return _image; } - set - { - //It automatically sets the image for the contained windows and zones - _image = value; - foreach (Window w in Windows) - { - w.Image = ZoneImage; - } - foreach (Zone z in Zones) - { - z.Image = Image; - } - } - } - public Rectangle Bounds { get => _bounds; protected set => _bounds = value; } - public List Zones { get => _zones; protected set => _zones = value; } - public List Windows { get => _windows; protected set => _windows = value; } - public string Name { get => _name; protected set => _name = value; } - /// - /// Creates a new Zone - /// - /// Image of the parent zone - /// The position and size of the zone - /// THe name of the zone (usefull for the JSON formatting) - public Zone(Bitmap image, Rectangle bounds, string name) - { - Windows = new List(); - Zones = new List(); - Name = name; - - //You cant set the image in the CTOR because the processing is impossible at first initiation - _image = image; - Bounds = bounds; - } - /// - /// Adds a zone to the list of zones - /// - /// The zone you want to add - public virtual void AddZone(Zone zone) - { - Zones.Add(zone); - } - /// - /// Add a window to the list of windows - /// - /// the window you want to add - public virtual void AddWindow(Window window) - { - Windows.Add(window); - } - /// - /// Calls all the windows to do OCR and to give back the results so we can send them to the model - /// - /// A list of all the driver in the race to help with text recognition - /// A driver data object that contains all the infos about a driver - public virtual DriverData Decode(List driverList) - { - int sectorCount = 0; - DriverData result = new DriverData(); - foreach(Window w in Windows) - { - // A switch would be prettier but I dont think its supported in this C# version - if (w is DriverNameWindow) - result.Name = (string)(w as DriverNameWindow).DecodePng(driverList); - if (w is DriverDrsWindow) - result.DRS = (bool)(w as DriverDrsWindow).DecodePng(); - if (w is DriverGapToLeaderWindow) - result.GapToLeader = (int)(w as DriverGapToLeaderWindow).DecodePng(); - if (w is DriverLapTimeWindow) - result.LapTime = (int)(w as DriverLapTimeWindow).DecodePng(); - if (w is DriverPositionWindow) - result.Position = (int)(w as DriverPositionWindow).DecodePng(); - if (w is DriverSectorWindow) - { - sectorCount++; - if (sectorCount == 1) - result.Sector1 = (int)(w as DriverSectorWindow).DecodePng(); - if (sectorCount == 2) - result.Sector2 = (int)(w as DriverSectorWindow).DecodePng(); - if (sectorCount == 3) - result.Sector3 = (int)(w as DriverSectorWindow).DecodePng(); - } - if (w is DriverTyresWindow) - result.CurrentTyre = (Tyre)(w as DriverTyresWindow).DecodePng(); - } - return result; - } - public virtual Bitmap Draw() - { - Bitmap img; - - //If its the main zone we want to see everything - if (Zones.Count > 0) - { - img = Image; - } - else - { - img = ZoneImage; - } - - Graphics g = Graphics.FromImage(img); - - //If its the main zone we need to visualize the Zone bounds displayed - if (Zones.Count > 0) - g.DrawRectangle(new Pen(new SolidBrush(Color.FromArgb(249,194,46)), 5), Bounds); - - foreach (Zone z in Zones) - { - Rectangle newBounds = new Rectangle(z.Bounds.X, z.Bounds.Y + Bounds.Y, z.Bounds.Width, z.Bounds.Height); - g.DrawRectangle(new Pen(new SolidBrush(Color.FromArgb(249, 194, 46)), 5), newBounds); - } - foreach (Window w in Windows) - { - g.DrawRectangle(new Pen(new SolidBrush(Color.FromArgb(252, 252, 252)), 5), w.Bounds); - } - return img; - } - public void ResetZones() - { - Zones.Clear(); - } - public void ResetWindows() - { - foreach (Zone z in Zones) - { - z.ResetWindows(); - } - Windows.Clear(); - } - /// - /// Checks if the given Rectangle fits in the current zone - /// - /// The Rectangle you want to check the fittment - /// - protected bool Fits(Rectangle inputRectangle) - { - if (inputRectangle.X + inputRectangle.Width > Bounds.Width || inputRectangle.Y + inputRectangle.Height > Bounds.Height || inputRectangle.X < 0 || inputRectangle.Y < 0) - { - return false; - } - else - { - return true; - } - } - } -} - -``` diff --git a/temp_annexes/Code/recoverCookiesCSV.md b/temp_annexes/Code/recoverCookiesCSV.md deleted file mode 100644 index 33341f6..0000000 --- a/temp_annexes/Code/recoverCookiesCSV.md +++ /dev/null @@ -1,88 +0,0 @@ -# recoverCookiesCSV.py - -``` py -# Rohmer Maxime -# RecoverCookies.py -# Little script that recovers the cookies stored in the chrome sqlite database and then decrypts them using the key stored in the chrome files -# This script has been created to be used by an other programm or for the data to not be used directly. This is why it stores all the decoded cookies in a csv. (Btw could be smart for the end programm to delete the csv after using it) -# Parts of this cript have been created with the help of ChatGPT - -import os -import json -import base64 -import sqlite3 -import win32crypt -from Cryptodome.Cipher import AES -from pathlib import Path -import csv - -def get_master_key(): - with open( - os.getenv("localappdata") + "\\Google\\Chrome\\User Data\\Local State", "r" - ) as f: - local_state = f.read() - local_state = json.loads(local_state) - master_key = base64.b64decode(local_state["os_crypt"]["encrypted_key"]) - master_key = master_key[5:] # removing DPAPI - master_key = win32crypt.CryptUnprotectData(master_key, None, None, None, 0)[1] - print("MASTER KEY :") - print(master_key) - print(len(master_key)) - return master_key - -def decrypt_payload(cipher, payload): - return cipher.decrypt(payload) - -def generate_cipher(aes_key, iv): - return AES.new(aes_key, AES.MODE_GCM, iv) - -def decrypt_password(buff, master_key): - try: - iv = buff[3:15] - payload = buff[15:] - cipher = generate_cipher(master_key, iv) - decrypted_pass = decrypt_payload(cipher, payload) - decrypted_pass = decrypted_pass[:-16].decode() # remove suffix bytes - return decrypted_pass - except Exception: - # print("Probably saved password from Chrome version older than v80\n") - # print(str(e)) - return "Chrome < 80" - - -master_key = get_master_key() - -cookies_path = Path( - os.getenv("localappdata") + "\\Google\\Chrome\\User Data\\Default\\Network\\Cookies" -) - -if not cookies_path.exists(): - raise ValueError("Cookies file not found") - -with sqlite3.connect(cookies_path) as connection: - connection.row_factory = sqlite3.Row - cursor = connection.cursor() - cursor.execute("SELECT * FROM cookies") - - with open('cookies.csv', 'a', newline='') as csvfile: - fieldnames = ['host_key', 'name', 'value', 'path', 'expires_utc', 'is_secure', 'is_httponly'] - writer = csv.DictWriter(csvfile, fieldnames=fieldnames) - - if csvfile.tell() == 0: - writer.writeheader() - - for row in cursor.fetchall(): - decrypted_value = decrypt_password(row["encrypted_value"], master_key) - writer.writerow({ - 'host_key': row["host_key"], - 'name': row["name"], - 'value': decrypted_value, - 'path': row["path"], - 'expires_utc': row["expires_utc"], - 'is_secure': row["is_secure"], - 'is_httponly': row["is_httponly"] - }) - -print("Finished CSV") - -```

    UXu$&8^%%$bAvrns1k)OEc%g6V}yXqFɋ,R#P_D]D ]n;IYr1n~Q\_Z- 2o$k=.$,}+B7&MAC\)U3۾XZpip@NU=5Ula=2mnpG/4FF_:*uT: +#YLbA:9M 9~Bxs -o@Yu[cӆ7 +@t 2(N^sq|?rŏ m:Q) +9,ֶ뵉֘n52\λj(h(STCkzPw qhjP:zxƃ w\]CES4Ta5,zP0d -+'ءGs,'q34MG!1>2 K D)tʶ8G7 :ȃ%w;rcWrזO]6kM +7 :Mqku=cb{7d?pEN$K( ھS,u~?X 4o10 )`Q -O!``LG#P&Fw}"D~eZ}8im, TӹbŒɭ1i$V9ϓuߔ][[bq5aN]ܖ_o=Yilx;S3HNMoƨ~լȟ23a2Mrֈ{ VhE3i߳[k36_olu]bfn{4ŬfLXBk/f0bD!`+6X Hzv!n@#Uj C6n^٣^%1,Ьz%_ B*Q%z -9Ml71%;=g-$2N'@>pȖf犜2*ڶxAz:ۃsUEpBcʸԚϻ{$ JZ۴)xO^dΏ -0*|&&Ivde8T 8nͮ/0ݦRwgx@mQmX3y{-/EQ88ZCKM\J%p\;oC'_έxZa|6zZ³M?Ƨ{WQf:9foQƺA'O3ϜƑFM^ px Az0 , Gqnj_Ӊ$bg/xlU@ĚlshќzvCsuɯ7 - -;,0mW44D3'Oc bx%*g¸Z.vT"weZnU\:~ -`ES+0UP"YaExhXyh(顁IKؑbbT[O1·6"V=,1QkʰʋyiʏKB5uZ${" Hy;]13N߃N4L< FTcbuP#iᣲLJ2 -̦N[m>ژHn ϘwvO.EU'@Ylt2]/\h$30 M Tf7#n|Ϧs E8_ 9b/"hp-JІuʰ^A >~'N#KhTOniZCOχ.zZ)N75M>GH$kgջO@N4*R8攡 >CuZ 0 #U\j|Ĺ@:8 _C9Smk6ox@^݉s޷d +x]َ}ﯸ?~pv?"E>y5 i&USEɛH/93_~y+??Oh?hwh eJ/Zۯ?_/~ߤTj2`>~W9O~y'B#cy,8o;,1b~onorҰ+:!"'u1ѐ%/_}ݟooR )e?&#黗}J/l$d)dB>ks$TAH%Kg}%0l%'@*"hqidʑjty-$f[a\&+y1A^L9/$r)(2> &NS&`Nt ibt|'q,,/0.`$^. Fw-DnB󙾪qѥ?Lb*K11=ߧ=m_oe8}VՑNrwBg O|d'cg~g[L>IoÄZkWaA/'|sg1/vFǺ'M)J1\!o$ʶAGV{? :~$hϬ#﯀% &׊bZ{K3ݒ~NHlYz^ѵz _Xh4ά޻R!J!N8r[R,;{-8b<2gRX|܉\RKQu h紥CW:ҘuiO+KN|pHM#N5)ٙJt-ig(Vn3bך=e)P.GMi}eի)m^긧ZQh"+IuRbXN +nRR6_SY)Q Ȭ /[6P%R'LKЃ&;ؐ[{_3Qc#҄dRkmh{!}JEyP/IlŠn뙓, vd'*UAeSn(яY+a>'?`GN(Lw_<@yR5HR ˱U)/ȑ=@+ó`rqTQ)|*%" C$ )ƕ$~7jM ^A FM{YBR(IK +kJO)䀻<5j<(;i<(Xi\V- W"댐3Kt* X0ܢ4 Kl +1 +"A 8 FOOm "h(b +FO1gk'r Q62g}!-mWL49fFgB\6(P )ZX,QkkZmPheIªlN̍YF놩rYhC"INz'箝 A5 rA2{ K% (l@Po֪b)yIIkG[n.RnF?#XXͳG\mBnڪO}Cyi&5p`o-Mpϭw+Bx˶;- =͞JQmBɋ^.%%[ޏe|CR8z5ʈҫuIxNjTҾCTkM4Ii)\6n)OVRG& +HZJOҲo뫭(HWH[h&-t~ ڴE,m)~ c1z=`K9,'Sj|2OaM[\l,R>HZWipXTLίۃgɺۙ7}x"WV@Aل,?(C'c7t-6.RxAD܁SLO]6a%?;h5tјk--p v?!'4*[Z +dp]zX6;X;Oa . +\<Eԓc)1f!2 +')/ٛI^NwcMƳjWv)KUnړž8:C +]q4]1DW,Arx݃Ϋd9.ݳE{@8QM|-~0M!7pfމ K nIP  x\уP-gxu\6ad$IZׯyOFy N">SCuG :-x ;* B<ÃV*49BKvQu +o@YuK`ݴ Hfo>]F([gZF KS&e8PmeRֹ7$llӶ- KVحBn\K,Z>ЭXDQ]XvVQMYVj6^ lYh`VGRmIVth`ػ 7{%5(|ȯιBs8*Gwo6 M̋A4ʳ +]u^ߍKcAB?qU iy7׃t)5L3g%G`u fQ%|uD\ĩbŒMO4,L~7ٝ*ו2Q@CI30D)d,Ȧc*NX"JxwSQ5t'n;p6+!Y:}ȠYG} eLxK 2_[d͖vmsHZBԝ1]^D k2-f*> endobj -1920 0 obj +2013 0 obj << /Filter /FlateDecode -/Length 4755 +/Length 4677 >> stream -x]Ɏ$W8}:Ax zZ:ɀ̥Y̪~\*gXVd1##L,wBޙן~ye''9Ʉ C|2LR -ZOh-󯟟y?Kdet'so^$ZHm_߷N-uZLs#QOJJ, 2M66ALFDG4S0BIo/wRM)eǷ}#1n86Zj%y9JIiDY6Qrrw4#g$ZdQf k+g&$*\@Nj21Aª{%I-v&Mu!>Ds5Dz~~ZzhKNH)WTh&L"d*&W"iM~*z]|mה#r1.HE6v"&­شEvgbcм-ηp|W|"X]&Cgb1Ug, -&h6B^+&g/{[cLS/po6旱1Vee.-lϚO> OvlWoWͪMnk.kMd."LܬT/`׌όer}X5߳Q& Fv7۠}Ufr9OؕbT q'B&øW*~x/eTTk_M Ơz /uBVE&bp_`u\IQIXbc tjȥb{YudĢʬ?y#kbH_L([Mkg"|^,-I`tE$%2eݖ<&][j"#t- -U3Gi+G>v&L\B Znr>*|^,$"6,&+\9(°.#Sn{zy=W)! ^eϊOVrLN(k+oK99MR&#~.=V/cʂnYeW`-}hG XvEp[%\B$4ahgl0_>}uAr5 - GAz'Ypl3 l1 YLpaYJYP P ͘PΟ)p eS,eL[-%AGZ(b 43b G%HtJÑ4}a K.Qƻ -p/p_6D(kȉH:- ȧZL-O|dNL+5lLjo@ˎLK -N>`| t4:lwB\]V/|e9bͺᶔ/VG|3YًC -8}lkㇹ_sٲWeS:FFB[H Kܫg)Qk9Au22XIBQ:37+ IKcOdCG4\adPQD11[\-vX^,j+0hј'{DnugaݶGkl,;wwݸE&Y66%ظVͻuZVb.Z~gi^(&; #Ĭ6=E5C-,-T'K[Xgu;XvKn }VhEb .ANsQdfofgL v],bgC;;c˲<6īy{2uwy4 w]Ԃlb,l+}[N4 iD(8a[$vrnn0C%tۮl*"LlL~91}g_pTUӨK2.VʾDQK0(ᕓ#è:Z4!Dv{B -\7Zx5id*t0=s"PS(G=9 r^.^*ޟZ$)IKYܫ -꺯+< a9]r)XG-=Rfv+ʈsHKh@e|v_bٲsToRm]bra< P65LH^[v`gZgAedW |ZST1=M>=Cw>c@z#a̎M jۑ8..Bb*r{ͣ"mUͼ]ToosȐb?kIDg*ܒ;-ءrE|f™?tUTs5V6fLU$*vdrwE6 `vQN^6PJx@C>x5\$j _uyov|+HDڡ|,ufXK#x(|aieىk+'cI>PcOJ~Gm&M ^r4v5ۏU9w>SDϰV}= °L8] vsJ&tNX Uߝ<؃] 1\,m $%fj)Òrф *ޅ)*z޾&|Yl|T>VU;8BU,?USo.4W %ѱ̛4K6 *1d ,l.JfrὦzI;#[lkCpsb XxMBKCQc%@ hhAu]ޗ;л!~} M\ L I4 .I;t쾗D]i -+`Z?t;)% )8JPFmU<baSV -uXk핂tx_A9Bl鬁.JMVY7G @wdPOmbB닛Y"(_g/£UVR#B{C KFpW@;f1g N"dj2uEsQ,r;@zm+;W\_L0pT~Q}ܱk(ckPUוyJC̞la &kr$Syt|MC4VC Šli1( /_àl-$@aPC}83gc\ 1/o `|xڻz(A'L\0vaSsrYd->]XtP,>BwA:_יp>C.8v_N'w -Ǫ,=Ȋ'xVii]rDV9Y.Sr!Q)8.BQaa]r|19MG@ jw}(Mη ҫA.jbPq4C]a0e2vC (ns\F($20ƹ 22@2, D2Pq!f2\8Ѩ'2 -Ǹ q.A Gidك]&œaMk8[l7D38IVQͳ>):)N"gJW^#Ht -a^QniMϥ|I T}]-(jS(cS(oL]2{M]?J#U :m;"[u#W:74_c-@օ,645BLNȲ(qXH?v}WYX9g%Dm=ARH#^ms!&_:nX -5$;]gJsj9i_jcxCeg81T&lGds ->Pن{0L;4:,`2w<- +x]ˎWD^H 8Yr;+%QW h{F`갪HWA_`Bμg|b/>Zk4 AeJ_j=X|y˿^}ԃ*R_zx/DFj:;- [ 9Z ߛD9O}PRzgiX单i:!" b0":!JO?|w럿}jN)#^?}kY}?_?}OㅍāR{,LƏ9ɜH +f)0di惾qZX~>pk$vpN[b7ِ1Z )Ɯ c[%1L~d䷖ DҨK2.WDK =(C҉li|jIDQHm\8vh2o ] +мM! :ƹk A)% u8D:⼑\[RQԾLz"0E Xi9ͼ[sZOBۙ0h0-͢*K;&Hzɧ9DGo"wsSH>yk ړ40z^`@0"wIS#AjjJt5&4Nw2s0TmsǴ1M/y,'y~gĸ+g)c*(}"8wA\m%x*-H>sz=Ci덿3_Yhx+WE6-{s-ˌ`vQ(B AڨSz"iMahSnO$T-c 4 >'fC@ś[d]ߊ(ia4\m'#T.+%. MJ\ ntLJ3⍜(*G?و2+My!;plTC_kd4=HOM5ɇ{zMp*eXjwA)6I:6wAə*tAtLA,QzƈIvO5Bh:Zg TȂV> ή=:v/p(ctJ5XJ ǵcSF-}AՕR^R-̠}'` ,1d څY ⇦ 뼰gC,Mccb3$7~sYrQ3h`#o.i mTh2Jmٜ }( l4Ho.T\sd @ocbql,Y"jl0=:GAŦ'kdfX<] Q,,FJruKvxAA+6VWi`=/*_/b0IÃZ0T#e5ֵt~H' +NLn%JrT갿[a BwEq˥X?Drgfߥ캋%'jzK?֥`;론mwb7]*T +UX-F3KO wឲЌ}/pxDu 1+WMMo`I SntnW a,WfYUӖfaxCZpz;n˨#HZz*(_#*&eSVk)݌:w p'|N_, +:v[h>+C-"}"ш-XܪYչ!0(_[`>`c:r:HEռeɑ Bq oB .^؋6 :۳`5刬r\'?39*b"܋U_Tk3">Y$V`vu ZZH~/ȟǂiV 3U-Ut1~.%FϺP.}bd-cn+0Oq#˲ht#T-Rz7–5YK'ʈ.n$] 6L[tv#]7b\ )zs^ + +^V_G!9 r>IBp!tڥ96#w*30I㷞/Vpjx]/5ӕ31)6tʂ5s5HfYfH ݰ-2S azͤR-#5QNy7nC&B[95vzJ6;>< q B9Cmgگ7Gw)2ojxmH.PJYWaU,$#uj-7˰EǪ؍ՐbQ{YPf~Olvͮ>k٤lvanX75ֺP NSLҩU'-4m(fE4WZg-ۜIr929#гF[AYt;Ln;Tc5R]F:WH{>[,p5˞<31Z8yRg PHl5?.v̭*5^\5]rKwZ[P0W XvB%KR!JVp1x&uXak,j(uc$7\56ΚS<) jjT䣛D?KngipVV Z-:.VkmF1zz:fVl`[^Q;BM 1^,-WNS־2^]XۤMWw=5n%W@^6i2 ^û0XUM7׈ѝ[Um)?ϩr чnEF-ݭZC,ՙmgaݶGSl,;wWݸE&aY6r9jع??gK}x:WF>瘋LsnM7WL3Hwz +J VYt{ij0[fP_U,nzyEm;v-Ϊ[* l CT] ێbٙ 16],Wcg];ceg#wmjwܳ-2uvB{tIP f0vIHKJ]VB⸓!ǭrF]pQR: x$z720ζ}M+ݟWt"V:tMZzȦjF׵gQe'BKh.hbhG|z}jq|C}:@3n|eV1tA2K<],'kVSQӦ׵ ޙcЀKrEeQYIvaʅqAHGP]De2R3("!`ؕc'@tFo"wsk{+ǀzâ!__+ ~qq#.W˧4Pijuxx`P +!qgK$3vknImv[P"Z>Qk:;Gs=\B"n4٫"[NW=ɦsg>fW&*.hrȇb ,ZN7Ɍ mEY}&C z@Br=!ʆi_l(*F?2`l}QvFvzͶn!d"Sָlx)f쫢6DĤP-)qg#Wp*$e2Xz%xAn9vjP( MNXsTb78kp\|>U# f["X0=Jy=}5?;!aG3W= uiImz}0ޒ/ksO 쪟FO;bv}c<9b s!eX[ +_S1!&!R[!ӿ 5AvR KoRv77w~J:JHQvrspw endstream endobj -1921 0 obj +2014 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1920 0 R +/Contents 2013 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1922 0 obj +2015 0 obj << /Filter /FlateDecode -/Length 4028 +/Length 4536 >> stream -x]I?sp9tg|r;ȣJDU'UC]߾.~h1o/~~E$ؼ}b/ -TJImMcp?^Ɉ eᢔ©WKo^]A-_wQ^7Ph>R$OK) T:aQo3JaeC Zǟ_]km㗗}K5#??||*̄$hjc9eY-.ql 06(all%[-Q*ad{%Upۀ+ORѝ.7ylu6F)L M榉W駧;=Jp坊|$quW9f0sh/(-i$>σ$FQADYL09Ǡ#LPrYf+KS*7e%CsZ{ -$qFQ(ƣE+'5$uCGNV)0QCM D21. KeggLI #{"j [0{dpos< -׿--zzo(zKk{6ǵY#ίkrz+[;WGO͢y=ϸڹ.&]֚zisMD nM5 n0G n tfT)/#Ϳ?lPIAVL?eѢu֠|tD^Z7[כ8&-_c.M4]5eZ.Z?ޘI%'/d]2@_fę183.3um8Pa6aPJP=;n>{< EX/㻊.MDMEsB!K&u {M2sБ@o09qJa,Ҙ/m\PYP -MT``F١Vjb.$NFhcrq]"_}=j+l83 #HH P̍XjnQ LO0K[Az4 !lL9T -"ee*ԂA~?8m'x Ԓ1yJYFnr4tA<ƨٚˌwY%gk_\^Y!6:MFOhLlZ[M(l>/0fruJ2F`oܑ3J5-g—@W>Kf]*Xf-V}p0{TQ@VcSVOalmgy61 իWo*$&h2wYҝA׺˒)X "K@0P6F{?|ԔkM.SiEtɥ"K_~iQJո~)Xw-%Pd;ަKWHRVA\6{w0 2 #XFə 簌Zu j&;'A % Otf`S2w"}G^+VTa 5H:MjAO/{+;o䈃RCn.ESj:+Aͨ܆'D%y=2JxNToøy -Jd(SUJF6wxD4'a2UA ]}3X5Ka4"l:,+G6oQl|^iicʎ}0O)p& - -lJ\kJ)`CA`3Kiw -tR -^Rѩ͌w(_g٘972]bͨVq=IդV;sg25a̴JfW*X}?Qc&4ҏ5 -Ȩ5 -O} -е~S8w䋵Ax0?E DBaJ -s+F6ң]$ٴZjPyеG%AE?CiCIˡ*zɰQVﳘy.e7no&w+-,MR@K)е@U>G4ODQ <cԤ1!ʡ Xؿ(yʊEIZ`dKL\Xve*┫ai6Qz"i@:w_Xd;57A9L~Fſ e6JOFuhFl)JX"E\rֳ/SIvILew{KW.3x`¨[䯇Pu#27S#c\*'% ^ o T )<5AբOp}/A (K]m.0.c]g+%v^~wr}>$J^s,8ʋxyQVPb`nz0- QTNu4=g<>A6y0GMtʹ$Pum$E뫛x{il?oM"t~Q NZ, (6JOYSʹãL+}ڟfIOj>n[ PrsPLo R:tva0FmGvAu0,Fʍm,GYӷTw}e]}wSY1klX=SQkmj@xUzF\XO&[j<'I !(͠=EHt)(W)RCf)TOhX]}`/û`g V>V2 fxL)T~9EDiAɮ(Q.m]b2.Exs|*.|1"@x -TTGүQM.Cy@9tElNQ_"0ǹV>1QQ>E`s<?]#]B# Y-̉܁MpsT4cS1;0xTuRG#5UIxUFA;7 a+XRΫ4i,-Hҡ3ܤS['XAx${eoI -p}j@2X(zcT lhW1&y*=]upF'2Q -RjnеZeeۉ;(= -zBQoQAI('j蹋cw;|E5<{^SJõٍˮ&7 -gY{I4D- -e|$E' Vl[!lpd?_WJ8zR)m}Rn?c֤LQZ_opΏaEZ^UJWħ3!Sr>klAI>Dok۹Fha\_?2;!%?՚ۯ^ +x]I%9ׯ?@E Fj q.9 _"#^^ޛFKU*ӱ8ÑUׯ$Bޙ_~zw~G~z~*^L2W/$P>zFk_ח}ԓ*R|&'|&@ k}(8o (4p) wtH/5.؄ZYm*i'ahf|>UZ2=2;Arc85}lv8㜄=1sޛ] W81 b+&tpJN!\ Z5S?yM!w3LV.Mp%Z51s̨WbduҴe7ks)Z%4ZB%eB -ҝgY]>wޒy#}f痕c@nX +Ѫbf).'xdzP6AfVjΡGk; + 2t9TdUybּ,'˻k{o䘲A76qA01WIW%>"=ܵj +nJ@9@L>WWq31F?r79l=簜FpGf1#1l;Ȫ;Cl1|JʫlII׵e: B+d@LF(;[2U"TJ_5iUZ%OY?O&QA F͝M%q•3{D3.ȅ-K ^MyY^ئO]zX~pNuJZb)1hM0Ee3ܛX'ku t T痼Bp +A^w,;S6, \ +opYp%UWRXɅbZU+֡5ϵu-VȰ2,%uaY.k],6(x7AI@x=-){\CD\hAqVp|z`^vAx#K3ww;rK.wF媮6Lʲ㘅X&}[` +Df# .uk9i`PiNy"9F3241tsT~hNMlcyiGЄ*QT"sXV2ٴaR6F~+Rst8l6&᩷Ok>*{Ĕ;_g砜=0 `'Ax09Ss+FU{h}hs,sbpQE99asb|R҇Z eًə{fbT&Kaawn_-,>4wDQ5 ܋Nj fczf'4mH>6Mi[CZ6\tCؐ:VNꡇRYH sc)lXQuu΍*YweCv\fx˻+%SNml83 \K-:fʥQh1GX +S'XR-½ PQNػjX)+eZ%% nMQ/*Ndn1R>?Y axrPl_0?dE_9-(x2!f. U{Vܝ;~lf>]ʯ;F{5y6BOy\ЌW ^q 1,auɭRʏ/H1ͭ3Axz;os /n7X0:#-ahk}iҸٴTqQtxsbr_35g$;bATRk /w1AB59~ATTÆݷ뻍I;'PR +v`' k endstream endobj -1923 0 obj +2016 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1922 0 R +/Contents 2015 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1924 0 obj +2017 0 obj << /Filter /FlateDecode -/Length 3840 +/Length 3403 >> stream -x]n}W0 YI6pLKba,iC"~h1o/>}}"8I'V,^_L!9!YacT1B) ip}~C2"Hb8(p*ꐿ~OJ/}B:?Nk|p$ :>r_j)a) T:H^OܝQ -+: "Z=|?^k+<_:9I]%s Bߟ{S!Nww|?gݥ?||:삓$\WEJRv{X%EVSя҆DM1½<&bgG3Z5h2<6x4 KH^qPioET.iXn/'d B.NrN+Ac~ ,0 Dt5 \|8 ]Ukd!}Xv']H RѨl(!y2cn^Uc2d?İhCxkcbh5.:!kC.Z4SPTYzՁST ʭ T{qb8W%K\}Խͪ=>g[.ٻ&gt8>|.??˱Q g²ؚ!lJ"&++fl'̽8{^;jZIozTD|N9V_=gyjW(W:+GT1neز%cf4zqb{,cǒ6 Yu"HFz0 FzG ;Pdc눻ݏςUGNN !62R;IG+qytՇot=P #ytޖ.:jl$: -*;:&[tgFG`}TFG`֐:˞FGm#fЦ̢#ch cT:"\患?6[ol=\rLkv"$eni6&G^PM1OG96˿/1I}Z9-\.ϙsj(.on3AλWdǼ79 -#AhcK42BQ膖rW])п.b1K/ӗꧻu<2u^0o%v\Ѳ=fU8j1sD'4ݵ81wnX%`e{:ȗqF ]F -;!WXZJ󭍚Z2snrꈖN:ğLiDI=*|bl#$׮'[YAPY]bOE,&E6]ـrOȦ2[>"Piـu]*HuS)yEݡUs^tE`rϣ^ET-Cd(:^VFލuvܠQhh7Q ˈA+*Xo;Wiamv\i?^7-+؛րfֶ-^E%+}D_6ԡzᖶlqFtNc|opȴ]T-}d%u۟eɀLR텧痿ue7lm_ɜpZU$ʔ|: r}(9C@ܛc8 -H+NLNb>w?ndKƓ +x]n#}W,!@&y`,a<٧ 0RlfؒO%b,OUR6M'{r.)_=hۃK*`S<|&C2YS;/xC}>)1֪`J̡a/}2J~WXOcP\uAGKU?oveI1P6`jw8r|Ï_OUz?u3ׇ>UTt($w%W5T*-%)G"ut^dVH&VRʂ9:t6!Gε4R{+@Cմ"U2gEԻݤ&;c;%'cQT4 p5'`KCc{su. 3\&)ȇheT l}Ou\mRD\@9keNr.ՊIiStGR+~ 6 pW}EB13yBZÜOtlFs8K]-)];>J^n9b{Lyx9ŝy0+L)!ECʾ! ^s0=qM8юpO0S94hW\rVE,zNXQ93=Ð1뉵cGw7n{x2`xU쎎/I'jK@d\&MKu͙ffቘfR"$ѹwh 6ucGit_{OEwd7*Oҏo%Νއ 6˒u,mлs;'fOWE,& \ ﻻ"brOl`'w-d$&CT…Ts +,v_Q5Ai輻 E"KQeX O){"@(bF}E(L"T%)YU6S +,F(BW(bUĢW1䖣QEt-L293a"@嗤)C xOQ'aF=`S3@iGp\P8F֗g]|jCDkjގJp{{Arl%w*+"{vrܻ kli-կH{T ]_]+]y6]ܨM(lEujq/SVQܩ;fܧOЧ{q0= `s DaE)G*)N|V|CT1q^<ljYU0&$7U+o4Sׇ!PJ"`^-5}-`ŖP-3{,ʼn9GotSCȷ2{jf;8 +a 9W.d^gFi(Ԏg-yaنiج۞8-,c(䞖)4*{6thDfnxr<{  PQ"<Ɩ:۟pS T.1g + 'x>:p?x]٧KFaMl @t=7ٖPvLy`{Oo"'7p-.1bm)Z)}{Imme`5-v҂uI9'(.&4%#3ŀHMiQ X@dƔ Ȭmmh[#3H{z[*R٩:唂j.7d'{~s6[~ؗbR_Pd"v_--,q|ӎԶ4#e +uEǧ[Q#3L12O 05ZT :;Z^M,Ln9ĉQr,`%\i+Xߥ[1ÌPEbJWXx0@Gpvm|\D˞;dێ/v!vsJZ+$T-~"\\mTm)U-Kj񒚘r`$䒚xtH7M&F3y: +Tj+"?=lXjQ=f>;5G-Zj^d=؄;~{GjTrus]e((ԡ\˛:Elaְ{P.(ءaڤJrCdbrR{ʯ)ɄY"PPĪ="(["Fqbѵ\"0(o(ݾab"t"VEcH=Fr12I&GX}C=P嗤 +"Kс0l(l=윳cCDG25ݷZj)2(XjQ 6냢*Zj}b=6XjQb=6tJj)Zj=c'fKR>⼷5Zx`}R{%My%Gk=fbzHƉ9Got}w{lXPjDŽvp$S7Ji_ @rJH&bJ[^omK(XjdͳG{[*XPj- )!SHPq[ohn +Y0GQb[O )e(ia$t( =`l(lJ큶W2gvcr񁧛MgM%^;>EԲ+q(XjnՈr.sʆR^5_{ȌE1 Rb="3l`KJ큶E02)v$F+&TSxsAA(,򂍻ibv K T(Dp2%E8"> endobj -1926 0 obj +2019 0 obj << /Filter /FlateDecode -/Length 3944 +/Length 3985 >> stream -x]Kϯ?` 1$0; E$j'ݙC3dRI(/Z%bL/H/ӟL_^L!9%YacT1]B) 12\~C2"Hb(p*_ͫ^މЕZ/ s˂B-\K<^D9O]hwԬ֩F~zQKwF)Lh(DR+{7"x|zԳf]>O/W$-X!rN|/.hR 'e_ME -RFҷM>?g;d#dQ Wr4Nl }ធ"W,`1-^*I} me텎hжu,ީM,v%1κbmȸ J2CF&{N )(xLxڰ70FOxOŴ8x:/K< O>xEO^ k1i8x¤O=Z k{<OX,Mv/]ԒPD,=r*V᪱A|RVNHK>r菊^(0!#G̥ېbI`M{9O0Z25*R=d)Hī>5}zzÈZbڛb@z]1sNpAi.۸ȡ=eHZ32rp(DYL0y^=Pn3w$%箙dQݡ־1rJ'ڸM)3)l7&,e9f. :y&DaBVꉘ bt .w2ٺ$de+0hMhd`tobf1("fpWuk&6v]n_綖۲i]׾~+ݳ/}dW?LCͱ'ڕx*b=ji\t%is^ -k@}(WrU%lRDH[A@)06h EGn*߳['bzn[Y..X>wi7˰@;a?Di]Ŷv;άRC?9܀twl7)宍4t;vv!N''}ػezcaIkWY0P;DI9,} #P }IV 5).T֞51̭o& A7Ea#J$&ٿa'(fH}c:}Aog Vd`0q1fIEw do~K-by ĴA' Qeh;NfI-i -TTs+*WvpnC7E9L3tݷLۆVA2SfPxmY., '[mS(<*^QZ^h wjǽ/{W^VAܨ-YB#b:9t)*#|ZyLC# YNTߚuP2@*:'a05== cXkT 3u>9H:Mh!FO/Zo3.Ho!QP}mphuuBW뫿bwz6P5`% ~R>g)#C*#HF̣g& j<IQ*W_D# VR3Ϗ.kȋ0TK#ssi p -di>t[(&֌jd:BUmFF([?i 3b]^m:+rդlj2kT}s4XcPBz_?G 1/65 {@a 0c {@)3Uh?w7>0"}Ut,!| >AXmJ.t3X\8H.6MLCҹjBlSk|=ϼyLg K }?6qgw6(0?;V?4(?N~4P ٦Y}ga2s:k3Lm3O}N&?XglD72e 3\JI=R29q QC{)D>P.nbMN~XAGCg@>FUcaS`*~KVjm UrU AI}TG qA4+`mw"CqF6yT!1Hr̼-y)>S%.?Gp69A|xYlP]:=QckT5r mr*]ĬZkZ4ުGVǸ!h8ҵ푮cN7 -Z|I[uɃcq9MrownWtV:a2JFrdu8VXq<.Cd((H^L|Ѿg:vƴ}[vj@6"ڜ!&k]{9$:lʢ@Yj9VEUVff-pK`Q3)+͸꒮UW*[OPNx!q)|Q3 OAF`$|YXHPK8\vஸ evĤ<5Wv4-2dyձ^nDV\`A:ry>M "8c+8Qgڣ/(]H@Yʹh}{Y :4SPMhZ=Ay6 ryA 3~2 IDk8c-]tH1 f*ERZB(뚡+CՓ}nv'뫛Nv@O) #.bͦU #Rb,ʶꉥ$ϧXO³sjGɗ=EJuv)u09 1>iPux";b)&BF'<@ ;4ɏԳS}"љ[ժ7*ɛ8w0(__`}NH0X mu} *-bۃ{zDHA3ЄPh%+μ}ZO N_MÍgNU[[sED.@]&X@);=JuIMbO9q3]'츞#,OqXDWI]{HJ{xJAj?twOJQlS@CyAPG\{UEw鋅$`):iWYs< 7Pp uPR%X>d gs>WNI'2Di?Q*[|:_zU y/Й}޽u[s-E=տN]hwԬ֩FzQ[wF)Lh(DR+{W~ۓ"x<}򯯩g7>}p2*;;@^w%ZH)QGRҶJy/R&h2(=eaY"5}^۶l :9uܱT#DR.ض(7ȕzdk{2Qx$qvڑ^h|7{NMglm}i:_ؙG\amσ#Bzk{G`Ff @Qfd+Xv:2TcCVQՀ7"4S(NA22bc|(}~s,)}vi Y_|85֟{z]=8?GZ9!-A8Y#Ht8F`FA]2ȒM:RQ8 x@qLV% C}U cYYJV%NY{ުM &\-PwXz#`,HF*++Pgli0-r$Q=}\/)eXXK~x9h~m F,i(JUjDC4DN6|;9>~ 9;?S,y=y~rbCǹz+k,zM'96A>ܤ!9$eșc O0miWhN,UPpbI ;̮E ~[w~-#g6rPnH>U61ċ0/ЫOC)TIV&`">Ŝ苀/8c5Co(&Hu,|F^}`ԍG^!2 !!!p:k"n7밦i;3& Tu!e0;.ͳt)nα2ZKb6PEۙHOb=Va +fk<-p}5TW7t c|_X%VB^WK1X]Ӵx]ciXzbk%/,g54V! i‰y-<)SxysKT' +f^N)jgkV-H+LA=L[WR#LQPՌfJBw,gĽFG! 1X)Wo,֒w״ذ|Dl7Jm'/!m{F㼠$QwlVddSЄ͌zIby-5`{FGdŸR0 T9#19 +b, XC]K.phX]2`/{p^ +z*cZzbQI>"0AFw!4a ɒ#w̅z,-ӱrm{p +wMtȉV-{hN>oR&+H%jPjO/eɻXZW|}ޟr=O fKrpBL)6ilR&_{ +sQA4"#R6]4vyt#Ƀ^wwup<(d Yr6> Ԃ:G!#4_8cAȣ%F.(HYik8` \$vh/8>$88QL:9k3Kj:̹v XǤ,% %;ltcGw4]o%Wg^%Bl=aq0{l{g0Zǡ:T=DGn*[ 1|}^Gbzsj7,[eؠbu4.vN3GvA cgC;;LJnyh#]~].Gvd3`yx >aG:AC|,}) +{нF XՕW ^/+UwEʛD*kQA4Cby1 #)'#^۝xzȚCuhcխj}{5m:MA]O:mGc W9.,R[aSGzv8H_GeN<]t6_e稬,c~Hg;Qm](Azǰ=O}Y*/<|rHJ҂V;r|z`ƞ@z3'i;܎LaVX'teʽߣ4ֳ\ AгB`qRG`g9=3V (g9;@D+GrE42`2\p. +RbL]2e#U/#Vʛ Ǟe3lf G[3 h[һ*",o}5֨5lҗk}tCdƏaCf>bssޅS KCGX׮QdT4ֻ/ 9i̮S6\ɪ'p˓tk*-Az|VG\cS?dgm:3Lm3tߗ3XYgٮų>?dgm:3LmO32TE# շPfyۮvF;4"As]硣M{C.\C4LTʀp y~gM~e>63."lpKWO?;MߥMw\U0ܲn&evc IQygȭWI´<3 ͹n Qr>I13CM?|.նƷU.Sy} ;g. endstream endobj -1927 0 obj +2020 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1926 0 R +/Contents 2019 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1928 0 obj +2021 0 obj << /Filter /FlateDecode -/Length 4275 +/Length 4629 >> stream -x]Ɏ$Wl}1^Ç֌N2 s)FVfU?.YO1TI_Q_JĘ_~z"8I+6Loz1AtdQt * -6Gcp_?AE)SGP/_*!/? I_wNG3<e+ԅV*xG`0Ũ7ӋZ2ydJӏ/_}ݟo/J൶?&͚g~˧lur9zKL7̑Н_I*Ҿo ~e6I&dx+-iP{ka|BK,qסto'BGgt V9 H1κ{TIC Ú@#33Xq:値 җIJ#^5kMHZ-a)[9,`mLw|o65P=p܆86q·S:WZE:o3 yvls>P^Cma3|=Z{ұ_PQ>Qy.`bJA("Tb$d,|7^Jx76A uuX9‰$qǑ!z"l}JlK4#k &edz/L`SrngEwZUPipB&f3DZp0ͬI 6%G"x=b^k4"P fV@O*-ӗE3kQzFpalR6|_t6EXv}iS™ϖ2w֦n}zsd'R z[zM5kVI=A:BtE.#[CO|ޣCOQSVma((CG]ɓ=JwI"51#JA}f2L&Y\*=*Z*cJ6RۦeK|כ|_ajicMy(޴UAC6ohG=ЎJ+{(A.Qh -><G=&;S8Koe[76 uMF=\T}3 CO$tIIv܎n:-O""+0 Y ^F\00SaO**؍{b֚LQ {e4a"5F= HsfvC+^ڧ[%A٥Dr>74XkPT=2>o5p7X)l@ >TL퇉BnkaKai;]vV2&!.H\O/BX0b1^6&0{ ay/."Sy߻ -m^7;_Vqyc>_?jCRcLYzZԈ=3,*%\Td+"U. -GMoZXͬ—k2N?:/LzZiy_nZbu ave0XOON( C:lߚmky/'s::1IocZĦz/psa)FBY+l㴒ãvB }YGHg,g+$ob [{"k`l o_Ve|# -bwTv^$2}N9۶Beܵg1'AnZ(%SnOؒJKv<ꩥw7 IרQ_6o?IBR(rt"8fAT}%x ! kC*c%J?ڭ3iW9+MjQ^YivNEzJSsDVwcwSS:*R'e!hu;լv; -L=gP rFk쉷-u3}oپÂFn\8E6_ې8'Fɿ DvR0PN0 os͸F-!@ GxiUjPn-vFL FK⡳"`Yň0m ,;f8WDV'?ކY/Az5y01cy1y7FKU{hXkBdz<7l)ji$\zDdK#lJW $l/urv+ysb27[ -EkVlH!F2LDX\EgrW#HO=K<еkwUwl~}1z'da1wBa*P}20*ZKj/xm@C?ؚ{ډz`biVh0aة|>&lvJW"hetl Sb:8ɖQQ|ߕd>/,Fzoahb+H߹[6+Uu:vNepMb(lӽWۃvզ4HsqY ^z-;<BQޖF "p^G7Tca?[f#R7Y.EZZ+QDZ-8vW]OŊs+Ew7CLy~#F.pL ^TC3+ڡcw)Vk5- -NEwJ' r*{OF.mU<wSI,M^S:` pz  -5Q)v)_ԛ {XovRrTkJ^SͦUi1(cZ ʂr0(*'ewPaP_t:n*x L讗Tݺdp&8z!4{,:󁵐(m>Tup:&+eu Prw@z5]ׅ;8p-3x^ -@k-&в4FzL҆kxlogY.g{; <%383<3[k4gdTdeoq=eobZ76=eo7 Ϩ=,xYx90<{<{Axptqҡ 'feoqW8eobZ76=eo7Ϡ=,xYx90<{<{AxpvQhRڲu6;8QOL\YY)k%dUs~ZfvRJD]2ibm wO-gz;VPmvY3z̑l.9D:#aS:~VKt9J/0Vwzܓ -:"jb-lbtGs^JA~x`w[%F^>.poVX>ڛfȃbMǨ2ON41өpf8/J.. Z\* *'^+Z3s=)^XLq>s_ׯ;ٓw?s}zV#lp?]2Z.YIuA]8wyA36>2%Yuhfι9/ IJDQ?OZ%%rRLH& RPz3xfo|=?0ÚTzy ߄># V; +x]Ɏ$W8}:Ax [:ɀde#YُKՌO#d0`|;I#w_⭠/IG{f1! Bi֋5Z <)=^>g)Z.t|N_'FN_ߝ]4SxxbnPi()4-lj3?>3;X`H`O|_ZSʈoO@-׷~>/l-IRH|"jqR!)@ a ]AP1Yxm]fb5O8y ɀ!7 2^4!-d_[Y8fAZ+aR8ByE?cCą:\ B(`S$b&FRM;OJ2ȠW VzDXK"]\4ɴ:D}2LR2M4 XO7qXOz}7MβZ4Z]N/I^ YVIR`|VbB7:q\fO7CTK$&i]/eһ Wnj1)qB +Xsd´]O4*W7La3U^#bCNR- ކW`SZPתEZįz$U#50FJQc4䚩|<4l<4 -Yi@fI̼;JUz c+78#M;*1a1Oœ\Ӏ\!fVŔ3…+? !&H./ +mJUI-!.pI Wᚲ}.Zu7n0 Czq&*/jSIC+df7)8Y_-c!=33Sf,\̊kc\!2 J7V3#BxA0;6xńN71AnzoD0TnE? nK&یz3.F.V`צC\,ӇhzC Q +wpveudx?vRV V 4%RSp +8 +CۅQI7+j#Y^gX6P ZLڥ_y<8idfI9PZ!r4BIwZҽyLHOY2$ MAp̃3͆k}s=+GɮojWlj)}l!S*!O6[tjƵ^mȩi.Ze3-슗8mKdƤxN"P+j+$C:R(NcvWYT-Z0)-QC$ue^JWis9Ud#>x7v!|cgP rK׼lmz*D@ggʴB@m~rbFkіreZ @zQ sLDZm6 k'Y˪T`U!Y,2d7oS%`\G0{p?X<|o#߮o߹buZ(4+;W<q[ qm+;0X`ϥF ϥP!犻f\J C+ +[Zy(i+GUǺWqww9tZ4{Wlq8cz3(Se j!+i}jO&H!+M,_:ŻvJ{$EtNaƽ+=K\ӈ;c=*LJjw S4Cd`aJ +XiyY1 +Xc˥"FlvJjo^lfKJCf[8ogƸT%{}>;l^\߲J3 >vDme{Կ`;p7mP@G]vQ9 peexv'[ )qnE +ጜ:wYh.IOeiӤ)ލ7rm޾ތMۻ*ЩO+48_ YB|He^WD6NŀL0:rǤVe d;4+Hc*.a,[ X%:> endobj -1930 0 obj +2023 0 obj << /Filter /FlateDecode -/Length 4408 +/Length 4006 >> stream -x]Yo,9~ϯw[BH<.xL /q\>U|^!nt>v׉~&`!zg^$~X=Ƀ6uʒߓ'-i,}mP Z[c=Ư=Z(D'#^KFx*i[28>fQe (°T)P^B;Olvn -6E.̜ٞȒ(2ˇR M@裲\RS&[R>π%2gIƍw)@Wjե[֥~:ljQ~9E1ʨIHb,zQۀQ(g0x3:z Sٷ˺ 'B)֤Fږ![Ҿ 1 y!*JxNߐԒF|%K#Rû7nZFxVF!˿: @]!VLaywg]VDzhCS{PN+6zvI2 gDKbs >`9^U -bH+mhM.Uy[ޒK=x?qu囙l#)!YV=2 JǍM{w scoQND+ ֣4ŨyIJ ;L3ZRsq_?YY!k =[K zDVJWMwyz%jecGu'ƠkɂiRq'٫aٕ7ƃÐt 8_Tknqu .tx3GUP{O@;~>Qt?/Oj#]=n1xm6g'J%1# 'I[*a2TNkLZ^~ /Go)i6rP9UM(t܄žZS< :AJڢBW`9g& ]>sœggs|Z] YJq9PLFDze[:js^|9/Fw!<Q<0#`kʳ@`O9 ?a3dZ̽rQ2 -}f3\RsSHpgdA([z}L=rP9wyi;ŌyFɦs )V:wז#+}u'4M^ Ypù 5N < YL汲 ]%O,TEݶ75 -sw6&ݻZ ۅ+e]Ky t JoE#-iZ'j)VKIp$o=0\Sݤ-T9]ȋRTG^D99g5]rSPMSGfv2t2@֓uTGH]4eaEC>{MQikbJ)k`F-b4L a &ʡ f|z~SS 3dIT#YXIyF]F& .tA%ZƸ @HO -Hȧ7]SH)f~AT=ͭ:8G!$|xC ͮh +x]n,+^H 8Mb B_yvHf Ksb=OȋH_0r!zg.ן_~yX=}U]L2ċaR(M`_~/"RO/_A\~;H-_姳NyK3oy*!zz:3\k.G@ W + wplk[ K^c7h^%M\,@PrȖ(_ oc_Nzě ;nleN%/{g;=0PN ,YA̓ +^Mzc\Co8zccCob76v? Copn A3z|uEozwo xEAAw  ۦ8sW'ިAol~ݝfިtBfdz0G30GA7;#03ϓtMF`?SW/1ha탗=UPW*ŃƶRlr"2-V rV2pOTN @#ͦ3kYz9R|eO8PY ҭijWFNk(/M*򀥱]RΨOu!؊q7sv+ۂ0t]b :Rg,DlA#lbt)\ܾ->%Ek<Y,Fr@ tbIaf<_bv\aؤ/TZhKmSx >\bzܗn~ߏȉ"d18`u63L|\ ޘмlAS[ bt\3~{:;Ƞ>98tw΢٪d~,1EXQW1󎘚_f^BwU)njᯛҀdP=8a{~v-,%>4Ѣ`oadYn ͤb~~¸W(mZ/Hw~wȪCkۘ0Y!i.w/<['i_|uȴMaQKeiSr82QPp}"hj9dC)d]_1=Xu#$QdḰ#?Tm{U)mGWD~:ߝR>6|ʸWxYޑn)| ήJ\)+Wy1_pbu;08ezJ[ +Nܫ=T@"]tK6EmewCEؒMJc+7rt춉aNeˑ*\Ԙg?*CU+@U%V,ļ+j!َzpzCNp @qE"rf,O5_G-#(P=Űٲ&\r+acm!%s Tya Tk.Aϑ䤭%_SrK@ʫSlΒƄKK9~|:29T^0%"AmE9A _P)|mIxN jWH {ios`]A2M{Jv3—ë7B1‑w`xu%(0~;3l7mR(I]V&hM"=vƒw[ъ䳶EݘKb_kw0Zmw@zEϲ!v 1ޣ BG Z݀2е"-z#8 K~z'Fκ0PԑtyFH~j ¤ei}@, ݭXn%o;ݡ[ DxI,]-zk޷5~ T>WRO5 ʟ! _54uw lQ}J7}uyTmV%H;P>ɴ*?2J[e :6te4 'DG Ρ&JHSl+϶|${Ժ)kiϚmNѾ# i+O:d)}YNzEP#<UuZ*.nJOWy^]XҒRoL۪rG-H~+&ByAj+~*~E#> endobj -1932 0 obj +2025 0 obj << /Filter /FlateDecode -/Length 4473 +/Length 4371 >> stream -x]KoW0 1$ +RMrkHcWCVFtWU.6i/9=cpo??y3zd71R1g!r~._͋O}z._vIBCBGSy+g1xDuY|Jf~җLjp*C8$vϟ~~1N=~׷ק?Rg,+xCD/gC -ӠΕO#Ӥ<o)tV^Ѻ,1l f^i'^_߹wOg WJ$Ew9%t> -Bizw/.j|Hb[sNSy4t>s}++W0ٵ{ۣLlb)Ѓ֓ZÒ73E1nz^@s+6Yor;:B.ٓp@x5Sy<Z;oiq0~% fry$^E@.jpu̥!&2r!fpmEFz(8饿HDR,һ nPlT'8Jd#c*b iDF[0 % ?ji[j )Vzkd$kJ.2NC^G"c d7Zɑb-3 -'Fg/bDbŠ` tu5CJ e[S@'WUp^aT6E- lR\z.ˌڥF -3<p>9l 6R,ep3.w.UP>;^] d9g(U`FY>sNAt?mrZwKϧhC%aE4ؼn(j*],QH'Bsw}k]ܷomƟy,&^]cͲ,ӏ[fYZ,!sZ-mQPZ]4gk{-JeuIν0v!<3/Ιa~]gb/uZ99nf>mK\%PG\!͝칅>[lU1.Aci\h[:Ql@ܷp-{(aև9kАpB^] -i,`??iUzcƒlՒ-`-U)-BےIP+fIR]GyC"8m:?X#C&S - ޳"C NQSٞ 龆O:?( *`lؽ騖7erx_uSsq|2սt2bX NZ\𨶹U¼O-@QВLz7x2i.¿4x2:iML ZPZ+Q}2/цUiiR p>;cM ͇!fRU>,ρ>Nm,n뫛9@s4˩VJ֜i!L K0޴H`x͖([F| -9'PucZfʶ3$v)P9ɚ"FvƆÊJW+8t1nJ􅵐uO$g m]Nn5JdHʅ"$ь7.=H${2NQp g#[֑fcnDC)LK{:A D֘tЁL0U"rYtX$^Dv{ѱ{ۻSt[vQ_n*'V^sކ*Ȓ 7!֫\ᤀ-8)`[u00 `lSWZlSӭT7u7̴?# 9w8!# i^h[hG+fT"Npnv4@'ΐD h9ҥ>{=zJ$C:h2t (0ܟEkyta!1 8#:InX.3yc#]3M/M r3|sR|>tȃcvY]4ciVu? -WD*o5>N<.Ae5 -Kvѱe5Pщj.St[Nvތ{WqaW-taշtW1- UfT:" +Wj5e :"TN= p"Y"ժB.u$VY7dblY"OV|9TYHSeřʪ6*{VGg7UD,`?98?vMw4x:X u,+ƒLf|3HKs嵟[:j&Wpl!ݮ5 -VgtdW,oAKeDx.i@XC-*'1`ʊr!E -33L*O{*{J)ʞ۪~0 -p^[QJzmhZk!,B2wif~Cyf:eaU^X˚ϵ9\a[`}Xxg:xȋ> +#:͟ݾη"dHlJAE.TmI7l -R"a#<7\{334gsrb ZC%i %=_Y -%Y1\w;H܋O\u -M,abRY;emtlY&uu -()&OÈZ USo܈/s!{69NO}k;P>Zѱe g( -okUH1W?@!Wlћ5@lo]eع:5g}s9Ĩ3́%7H,5"lĵV=As>YrYs>z>|@携} Ƕ/6o!DZ;L9ZkKU%oS6Ո;PqEn9J!i|mmb [r-;a ǼsUm} -P.CeS[Qu}]?*Eզ)2rG]?UT &/f yF09Lt2V~?嫼U Y_>蕟ƿ厦^_&`KkrCV"KX^>UN4$  ޚ4DX!u}I"Ғ YJD"bnL맹ٖؐ~K'rbvε)ޤ׵'Nb +x]IoW\>H 8$1 #Mv=6WKs #hiv}Ǣz;EED)x/OR't˓ "$NVULAEԆhp?χdD2©WOO_(!;Zߗ s:@#"y}GJ=t +Ѳ:X8t1qF)L`(M+`|W~[^kK|$YS_ϟ{ç %eɚB*&)rT+BQIJ8;XKNxosVx+IC$Vpخ0fA|>{#)zic9XR Kf|{\1suX\hc`k g_, +bSFEtʮB/?܊ ǦDpP(e?w,'8Eív!S%iOq2< +a>PRzU^h!`țN?Xom~%Ei5.Yz8dC2*‰~%FB׵>2v'Y%'ORlH"9Rf[_~XʈE>fa^} Vo)gjC>qHernaCٔP"/dk}c|:HKW.C(L]9pO‘7R6?rK݅ѩuOs۫s6%c I1&k<p)tFggpK9!kܕ1O$TvsU(y +w\*>w^)ðGSe +wN hT~d{ÝЩvOu盫't3*W*8EL.Tn)g'K bۋ~Pq%KFK «KHis,$5j0< p,t> +>  'lP]s0:UO.V7ۭ'BgX)ϚKa ?Jy@+ud66PyRR[@R¢dԂD$+,R=E\+n-S^M@K?>KHm0&q^br3avsϿѥ]iR ,ET+٤ؖ򖍺&aM <`ZJ2ʵXJQCyҸVMa0w/zܿlj嚻j VtYWR{ͳ-h@ ;:($O/lcx4hvgMiרWM27nHw#}XAx+]GT]uAxv k5tm ˱8ҩS(/fKssKFՖ)v: <ʘBKq4otR$رBnu,:nnFcSZ`hN$J| /Z:6\nH֕69+m:lB(kҗv(XE [+uK6MA syMdOr ;5 } }¥G(>ʶ{=d]/dRݍREUJu0R_ݰfG/YҕkP;LR_;\Wj\_.^AxYޣ'(e%&@ڲm0h +)fAB:G7 92 D%?kjjVs f9f`3|H3e@f`4Q4Ob f :<}"gwFlquocYmgYc$ nY:<1<5# @_acZ~); CƞYUS#êTZ`9Zv4j9R4S^-CSU- UKT-(_[:h/R{RRgY)aYʲRgY)PW+ho|hsT/zd +5 ӉB.<HfOE1Y >=eQAM&V:ݑ9{q[!x`TqG:0E>0˰SN`n!2,5e&LYޔ̥O{˖ npyorK2WwLlgrtm=0%:Rua0{>ES{` k0n ++r*U~Z?"\O47ڽ3ܷ_ں>wh%j + hk5w?3ҶzYL?"=e,ވ9-D薵zT%V lhXn?6,U*' ][Ős"|)nFvo'鯣]P]K/wWwS --:V^>]krs*»8"i혀[L +KИ,"rƙAP7 `[(,E)>,g^RVI![zz}'Cܻm`B,†q}7=3UP!Pvd۫$r=DG>;"uj5vv>ܡLKQ1ޠL5-I wF6;T7\}a58<8v{-ͽ1@(G.X A K'c0T%C4Vb92@:g) v7T}O?(Ƶj7/n&O>&F2vikOn@mN;0j+Z80؂mOcY- 0y{\6K3Pv=VKƷ+c+=q&G+wXXˍ(&#Ϣ} ?װ_Xݴ`G]jmC) xKYDd3qQVj ui-x10yDy:NKukbY8N()ުݣݲс4jAË뀹7h{{5vM(6qt[C'[U ~=M?OQ7Zyd9 +e}6B/=}o'i@=Izñ9kkqbjI?s6] ]rs,o6χ,09rqS$e7Ҳ~s_(䂨w;|潛ߗ#΅rႠ$Wk/:=c7!|=Y]e_z endstream endobj -1933 0 obj +2026 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1932 0 R +/Contents 2025 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1934 0 obj +2027 0 obj << /Filter /FlateDecode -/Length 3446 +/Length 3825 >> stream -x]n#}W aaI@k)[f%&)2F|iUuc5h1oONҿrv0AtdQt * -6Kcpÿ! 1Z8|tu_zA y?hu0$ $4:R$O7[]hw4֩,#]z1_$(Jv/_<*-ח??d{^u̪ %eɚG*VpBGEK貑.KsZ9[֢sgR4 $=6 T(^ -F0vE咆SHts .~XOt%TF) >-<#]GF%^fLbO0oO:hectAE+'%uɀ,uUFhT̡trhe5 F;bS(`EŻeFr_IPLсȒG|5tnjAt#0y{:u 9ʇim9ʂ+l)㒼¸ܮ tvR.^:X֛TIf`(Cr8S3fqA^P>!*y슥p':bDs0/V gQ^^x!{V{V͙f[)YoC`I{(7܉@ݡsnO:S%qq֭Cw\O)U(|0ΩCN#`>)ϧu)הLo.I~Z+""Tʓ'imC{D€.!u+5:#>$-CLI=AGvFZ;5@G-ScşkT"n,t<a,{V2L)D#_BL`tbƪ&g%J >Y ȸ,o|J~Xזŀ bUs%YkvSsY9bVbny7>iX]Y +lk"&v nBp %`web,QZX8d6D_?QY n8A:Ge+Vo0H#-9-H0l w!LP9t2U*1hDadѐr0N] %SGΑ|9yDaI!d!n!^*IT4H$/cGᕑC|༣VFeibc{b ؼ_<2E$Ө,HtW`1^xl豓-`Ò;Y 85awks~x> ^Sby"&=0+$YtK̎RZ}W|y?@D[4 BQ^U2EJ!jRSiδ{[;yO濫Jtz -O*r渙T1] F鐗Qd;;p!:<[^73i/l)%aoHصZNcԀ\f$qvWUWYQj~0J//3" "vW/(t=e+rUM'ZtwMͿcE95f@r ݖg^Qkw7 T۠bp58 0ݗWݪZ{6zTm*8E9LҌS|lt"]9ZaEZp^F)|vR4 ]âK7'zŹcaQӾ)w|xf&(>['%&ג~ }U9Vl[b( C<28(.>G$0F=J߹"1seٴI#Рأ9PsnfD}W9w7sthƩVJ֜IӶ\X[Ult𵑲a6[lG,/б)V3d$ rSV˔mgۥ@qk[8팍ezVQ=Ÿ>ڣ/EˬDFvZO[dYi߻$Ia[uOx[':;.f c#[l֑f(-h(%g4DgM34,-|?r;Qu{z}BkI #Ұۋ=jnnN6sE/nۊD9oXс%O$0:s=u_pP-8(9 8vggWaՏ0o/SۣZli8Mݍe:>׫ޣzqmv?t -;2Eˤc[u =ȤLKä&E"L[+=FlJ :ɇ,lެbnρ2; -6*)Ò*Q n:3'$]'ɮ\S.g\>a[ȨO_y3{|lIdL6C~S^|{=߮b)2EIb~AsB m'B.P032o@% %{a"̵ k[O$Ϟ&|i_`/_w +x]KW|,$ d س RXnI_T@"ͯ:KU"=zv"8I+N&1AEԆ^4F8k ߾y)>$#!RZ .__N?|VB& $Gt #"yzݞOX]CIz+O'5.Jae4AD+O~_J൶ߓÿϟ>JjSYF7D S=B}U+Bp_;mII;}[ B ]" +Q&aNFz'&%s5d.TX!rNcTGL+kaѽ=B];i AoS@bd*;)xOҭes,d)11-5;(Ge񓂿ז#,O&Yep6t,i!wre0hNyqSHҗ' Ӷ$o_Ym*2i5n~)[36`~^2rSZEt6dZ3ťޖ[lZ ZN΋DoKew%(:=>*!G,JHt*(ts>yφGGi}[Hw_USHR ܱ/mSpyA=*v}$KHN73m!;EI`Fg:fpl)ZެjρE)A`ss\<$y+Y-Kg#c FuSnslLRP)IRm?߁OٴT$lTm !i >BGÀF4/\0HsKm4)N*K_InB!и \R*K%VPb$nyu=KHn a%t71Cm1=pdPʀ5 Z4jtVm4^*-"T*mR ",-feAR@ME:9cRoR*Up U "Z@;&r*3]g*⪞J7N$kœSV}2 F>v<M? BctJɁ٣5Ϭ<#`Hc-(w`g)]K>mb!,fwuN77ݍIG)4t71ClƤ ~Xx@J:m4GtڒkO:n“ےJ:`Xq᰻9ܱL']]je(]E}]ޮi94J禗C\(ņ}HzS5~hD)tD/R.yk: aWb$)*Ġz6J&w@~~xcl!x չh/sݜw{]y~oi΃aėƻ5;()nbi& @ c.&Coa_ +eR)ySHd5Z`e-RE)ids 7Cv-!\ +@۰]Rگ9hJng1Xj+ƕ;K9We/ ^ʡ^q^JЊ-SYqOHw+OeےNQ;"z4׫aJ\r9U +FS\Ib|DsG6GUisGpGUɼT6?`QO!M hp"4sYb, [2SUyW"ݔp,_ WcTdiMY +_pT+6MH +U$^ytwľδ zDZ<5ziKL6U_A;CX K!9%>O|<›C /pl-Т@'Kk48dAYf>YwZd zڬN"EoT'ƭ!=OV寠څUQca)28 l;5=UWE@΅[ɞP!^8;&Xi;Nga7 &hDn ٺ\ KL5=WÚxBuuO K V|پB۴m62Kk=['dm6|{a"ofxt*"ԀQcsn.t=%W @:{eUǠzf_.I_퐅{Mt`Eбz3CVPiMvO0TدA:{+WMc"o`\]~v2(^5V4cKw8~4k[@yM,;-ʁ$ clTlTXs~k5eqz8oY8NX=%m!,M5~{FףwTndž ڬ+f;x_WGxJ1+]O]ixXʮ Ƥ8ѽ8a #x>8Ves~i!Q$S+lW(檘wpVsM!Y (nY 8_,|,*Ay^s;ٰ,KSyb֜wb[ŀubj%A7C}$eEVcDV2YGY蜭Go=¯qbtV'hzLQE5HW71|2?mQkZ7*rQ&kaH0.Ej~{X _ &G'tr8o7p\JM +jes,3Xd5$@&'kĂͻKneJk {Ź5??Z._'Wg`p54Π&=0k؎'5~@Ԝ 5:kԌͻeQK8 B4༛Q dU2DVD<^h0 ޶iKfO<=>&rsjIJB!n6d˃p.6mc?Eȸ  `w:Fg|q^7wv5'de~Ӗ#l:Ŧ[ݴaۖ-ތ}XއπvyQ]*O'T +ѽ&+jCiמ&YfɶX<]TI!oy^1ͭ؍!3sϏHr}<yp]v¢m;#s(y +v+sSQDԸEi:@}7Eu,`_Ng3۩^IȹjJT]ЉY[7~OI +ՓpqނegP?񜿹3`#~_KPw dhxZwLQy7YEs>. P|ĘvOX}UgH32~@J_/ESCߟs2S1̈́!l~쨣 endstream endobj -1935 0 obj +2028 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1934 0 R +/Contents 2027 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1936 0 obj +2029 0 obj << /Filter /FlateDecode -/Length 2984 +/Length 4134 >> stream -x]ێ}WeN Cd'yH\ ;nH&)3nHV.k ?ɑJ)owZEq_F71S.%Jy))"m,_Vyg_>Ϯ|>f1=1Sɗ;h_iGRzw_cW?Wvv=qeA6)ᘌrie}<^zwYYov!*c$]{sI-/c;jUڡCluCJ*igC¦_/Y_gf^+C1y*j}9$΁#zq|_Xcg{]>%mmb;r:lCvYkoewUw>*ZkuS[qooS,I6@Nl9gê;ڈ_Gu+y:҄`֦n8nD}bn|Z,gʠI'xʍճ:-p@In²p8n<4& ) g~GS+/,b8ߧrfOK1-Lkvk"مy=3\*y -ʹJrɾnCOLV˜ JTp^Nʧl6DI3iŬ} $.h7ץ ׊A2ugE$gh>}ʛ!g]nas]5h8 fjt $ې&0Υu;s R7ϧaDM;ؑ% _BcC!9C uL1.vk |HFHTt{@7uUoq浚rMyaMjµdb( 0iYu VC[mn^Eʓv%02F!|F;A-u#'/:&σW_Z:L*BG sXC G8!yRѬ5=J?K -Kp]{NT8O E 2SFe|9UwrThX6uMIX#81G%>T0߸/ =;+/X}s̥vg& ̤s5'PL.wK58q!!Y06_5OQЪg(%bH&thGFnmEɳV'RptvV) /%V;y#krkP,K%vC8[uNx9.s3{c8Fru&`cY'[6LtTIkVs()e}Amقr̪gƔh m]kz5c(.[ dw7m[]nj1?&b 3k%:drz#dwXi'\sc}M=:&19Pj^%͒npܳ䈔kfžU1PUqf'-oVѶVŅ?j[A@lk"v&r8;Ұ߃㞅2Mo3쎁" `vFkps2%3pӒYd8g {dH!p9h[6`ݞ=ӛj"ԢrMކrG&9+{T9HVjxUpN;'@էs3|OT 3?VJ -,K{*֦x 55!$+ #y;-y+YJj*=OHu?2&숏Gc3 q~{|mtc*5\.\-_2h}()n@1D `8ӻ-t,xak|y5,<]d=7 +x]KoWH/ !@6p$[)akC,ȲYUW,I4R1_=)zE'}~{qٛNM.%)4ioZ;ygߞ1)*SÏxfN>v>}hMRj2!q$C L2B31DHW>e>[ a"ަ㏟Ά0K_j]& 7}- i _o>gYm-Nn Ζ\D:5ts^ {#3\!H3m +ƦyKU=IؑNm1q+36Zk Ϥk-zmx=@.ؐC7nCjpگ}V?H]ݝV?lX +P4I]X BWYvs) ԛ<IKZg?`}}l\If~#X 1K| }$`ԚVhj "1L"!kTgq,ۑ+eTZ|èDIҙyZ5#\R'`&r ҉۴i5ctI㈟ rq,.}~F; k`d }%v#V7S[qYuJ{xLJsCkD,аyzòX /0 SRLb!v&Wz9XM2pl[KjjY2U҈qCHqFDBryN+ោ +GiHM-8g A=ӣI2YLY, ,A`X"pli:,˩9*:QSFѭE3q_}zK5t o;T rXѱepF^bP-$Q-I2IjcEN{9"V+r"s&ql,XCtYzxEUfG1e5-Xs ʦHҨ}X:=jݠ}[Y,79ڧ9@st˩VJZη&%V oڈ|m0WR-ɞ̭SYmHc]·:l&M4+J qxZ9Y-J&4scTFO*?z a$%ұۋ=jݠލ[0!fM>ݵ =lWNrއȒ 7!ccI+ [pR1 8bN澙M]jZTN׍n9M3HB EHBZ m>v-e8/PMbP"ra.#,9h9¥sвKgo@;t=%C:l2t\8b5 aqD|g=, ]3&Hlv$;vfR`))!^g%ri{]'%@dzOڐ/&ѐsph5YglɲKp%;bfز sDuZO(UǴ7-nnce&6pl`Ml@V+4AVqXi*T+([xUVбeUZu"ܬO6:DqE}W#qp)T^Ym6U,'+bRpSeCL5S6ALIl! IW'wsTf*Q{A5SYK ^c@KQI@K7n-g^1לo= BQ_+bc AGxEU tW,E#5XitԼe 5Fǖ)+p :j.8vKT5բrvY<9tk+'h1Ui,=n¡զ4b)oPeGnRja ĆY>f r/l4.1jv ytn4=A\濵Aև_ZwQXE3pE/7Hb ʈngGxNBv|GbTr.rkLfpePQ%;9a5wxf'!<KZ + |+)B}}{1YZ$+՝tX-{<96f_1 Ab6m:-_Egi9o|%LX^^XOx2*nypeQ3t`^Ox[փ$ iuJy*}JM<X)ORwh_aucC@hT иcE *JF*Eq2p p>V?eL3l +R'gXn%X+ÝZmFviN7zMY2섺YcHY{z>PƐ +Pd[FhHMU#lI#?wҁ-@utjQäMTt *nbxª2.ț7d߸S~JD֟J|΍@W^ֲ_[ +}{(/[uOAdEs{p1 ݜ['ڪpݲ~p>/^sK]C9Y{ {\{8^űQ{{8Ƌvq#űjxվjhpzJ4;] g d6ōɽ=H$yQ2!9أ;J~r~YC+KA+Dph]Qh B+F++݃Vἢn+Zi9V[VTrbna!ZRZ-~LjV*zv?շF1Nt}=(F(SN:GD=(a=e%1>~}/V[/N.zJ[?ϫMz:-\8'9scrby~yF@ IT:A\X\N?hu&TrOj%PDK) JՎ>\4gY\_j" >-üi9 endstream endobj -1937 0 obj +2030 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1936 0 R +/Contents 2029 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1938 0 obj +2031 0 obj << /Filter /FlateDecode -/Length 3668 +/Length 659 >> stream -xˎ>_gIb  6 _ EKVIdt%ŪE FwrI -o%twL.__ 0!/^Ԁ/~z?OyAx)}VElC]ﯿ<}ߧ7ԃ*1UZ/ɦ:dH'P'A43 -k.|G|z@nFV '{^&|@6a>G{a041oTټ{(+CHLt~W3׭+<}4Fa4R0MHmy%ͺgw/oQo}OwFޝz(PvXQu'ݔSKcwuUPB4gO.k>9+7iGZ'}&]ZÌvˬ 4k@ ->DB Ú+Motag ѥ'NBt~_@w^kS./ R%+ygkcm{?k{6[;K$o] 30_ ({ȟm?mIhQ6ǞB(Mm 9JϮs՛F&`wO@v׿R{':"YCz5!Įz/ -CRUy{|8ذׂ1GBF릗qCC؈π)f`Ou' Mq|"T ^S -Ӏ.XItOCxmQh 04.Hr8,o*pJ ԧ6x{`k.JtvgS7}ҳ/yUs `H2:"KcZx`n*[@%I"fMc[-P[Ix@< e6(l@y`v. IGNrh>!hSpfLZL灹}|:v FȠ0KJF:yl [+\&M$1"WzETg3k#\c.&jܴkJifRgͅLF W `p?{m& -cL> *ƝWh\1}hTRE.n=rȺ -y`&Scې#0<:!cDMOL*9"}1UkjJ(L63EYAFEljP茈:j`̢{:L :GdyHH^ ?A!QVP"@sʺ3 if璷LƦ>F #{D5&)?C]"C`S7TPE U 2`EgN)tb.>Gh|8Bwfã[t^ ўV]{ʇ8kH ud c|SUyB;z -" -ϬY.:J3cV2@V&'urR3+V5*Q! 6?9WL91f=qL2`QO㽒]K tyXMQ%ƣi]8,#tTVҥi!a\9kL72z1qQ#R[g=u㊯3_́jzX3; e?FKMC/ػ.{_Hmǖweh vk1kB_/ep7rNXĪrlB! -S9&lJF0vRIt >!FgO鳸kI륌g#c>3q ֕ 2 1mKG;`*cpf S!8/$S; 2Ȅ]P̈́߹*YLꄜ1ni1vMh(-rr4Y+Sa&ط6?`e%=C : -mxbwTE0 f=BO&] fЈim`Uf! .|~`eQYw#g4~J {_o_]4ZeUj6*?et&ӗ9PXă<`̰̌=q'q2NJhBy ["X4vFf<_0I嗢pQƃUZ`#U6Ga7) +CЯ:z+:v-]h+" uZh h6F|Del>=CWح; Ggv#Ե<"Y΄w`%b]61T8cC.!63Iw.Tj4\^EW;FIrLɤz]z`3*5ӊ ,%Qʡ@7Q-ШKZkpHcG.dFЌpF1* ga$61|t3!%f8ިHNRҊ96O^ cyԅ_.\V4Rf쏏^c7KεQ╝)<`x"fX#y$4w6GYM0i3H-qy}fBI<0U0dyA֖wnhʼn k*&°Iz{pI;vvM0LTBaf|NyY6\Ob 6JN*J/ 8L9si@Y )gz w+9xR<3-TV9YbۈH9,GG%IprCYÖ.mvTCy&V`WvMjM&X uD“lZ;CBƒ8IWrr+]RV[ŪbQqΙ)$2Yʚ3e!u5A_%ٖrP6r=b9zR8k3"kV ;2r?Q5UdZ@~>ԄȪ:@ - MEr%sPԠ .M%$qӦGsj>S-L{/0>8)=A0@%)Ha`'/J&F@T +xVKo0W{l *88Knv U`˱|88@"Kn2o] +Q>>]b^܆*YJRǒ8@ >_{j{^|@$ʊՊ8z1p#]QԦn7iC +C,Hf^` lrpȬ>jY]'L57,z"n +ng-t3.ݗ7׈5lyrex< WLn!ŖsUM~)5 +64F$^Ǒj)۰:KV8h F-uENV)R\JI#J>W8LESdHGa D-:Qz ؈nLM}A}BBx8 +kE=#dC%5 OPsZy*TF9 kلs\wgC!h+Y_eAX7o_9a/`C%28xi;r>Vg0qj܇ZmEl3BV|KF$"Z|< V5ҮF"i`I<)hQ ͖>ڰO܏G6I{{ @%P endstream endobj -1939 0 obj +2032 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1938 0 R +/Contents 2031 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1940 0 obj +2033 0 obj +<< +/Filter /FlateDecode +/Length 3670 +>> +stream +xˎ@~6N$F_ Ud]Inisi]Y1$EpuwL.>_N&1AE#ON9! 1Z8|tx:ϯ}UB OLUtNrV(Ӂ|rU iٔI/oMv"Q0c`ys$7=//z{>wR^X.̝Q?Y%zq}x;*w/dLNYMrŭ>vEڗ?/$VL)@۴zŭ^{s kԻS݇Qi>mz$@v`0Ҏ)qᦝj,(o[)u^'-AQ 'MrI߅Iׅ~憵vM7`CL\zh%W.:{gV&O&Bv~_w^k[.iKz gkc۠ຽo;k{6;wc ZI&';C(d`Q{]u(eSO}GJ a+;W +:\Zv}gpH!g|Nt>?r[Ep5!bW=|m!F?{|5FD5T8x-HN tYmk2hZ~ex0MKC8x#(k+T`"|1@BUFrJJ>-hÃ&rԒk־Ae}OW:Bń>QAX + VxL0DgL<#VvUEx2_GC:͔8T?Wx`2 +Xѐ >qqh&P̋&>W<偹'P3}d;á@\IalsV fSvi8:rܗE 'c5f zn[-|9d`_9!\c +2d.>k Ę`ksײ@sB/w3;,Qpl&tmG=7b:]bN5{L5v3AZ-l +A=7b$ ?R($W3!(Q)m*@CI49QGn,J\4  +y` smƶ!{1axBx៘ ݐSF$rT+_d0A\˴.!n + +|5*eS{BoEIcgA& GL0e5JDcLrʺ1 if[Lf@=d.BJ1\G*EAYM9a@{a t^Iw"SEa.,@㛍nh6<1n6Hu| Z1dgl %T+oDUPކB.7BҬiF%Ca-4@V&'urR3+V5*A 6?9L91f=qL2@O㭒CKtyXM~Q3KG `X0/JcXINҥi&a\9jL72z!I=R[g=uj#_́[(Igw~f-5"F@ژq. n?6#~%erYz/(wTtET +&VcP1ᭅ`5*m/KAH `ԥ@7!?*}2,Hť^Ke^e<!XdXϘC,.&ç<`Alfi[\!S#_)1dA{*WR0v wAں 괙;wQ"KU U7 c7~".PI 9;f¨ziȱ}Ks.za, dxrQVY'@UjZ =*dҧhv,'V{Aqp+j. q*1LQ~eS^~vѤ +Cj W٬ªu O_@bRdwOdƣ#3=jW79֕ʅ +ToqBh-&u di[< ^\ec*(gHv"P94~-K-]-ԫ(WhB; 3BKO0@[2#H.Sd󱆇0#5nI8 +GM.b{DRbªd;ގE +z <|swCl + YOpuRuZU +:\ n/%9> .&&.ns<,mU<̝+.n!sGCQʡ@w6:ڿ@.i!9A3p[$8ON؜泅)pQ"s|CcU <\V4Rf^FR7KεQ l‹W62ቈVc1|n$)]925jI{Ah#$H⁩!;wRsE+TIL/UM6Da n6&7g{azEG<4=0 D-er=%\(9KU^&q0rV&S>s H)!N[kWr*& tdZ <*s:p)r& QG%Ipr]YÖ@sdL*^U<65<Ū\'kTaKPpsL f ]9Lt1y*RKq `k򉼻r<;e|@s-Ygt.X]$ JJ(rY\m(IѮV1.1H +W~=5<V #ujzsP>"h`f4G e>krh }tӷF3'fGvg\rpo$aa1D{f:5UsKc ԭ6靗[wwG(ԄȪ:@oBS!źA쿜v!Ԙ"*2 dN oR#dM'=r<9qm2fT/!@V_W=FR/hd +&C> txl `#=A I˻~xs 3S4%wr|rCl?< +endstream +endobj +2034 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 2033 0 R +/Resources 4 0 R +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +2035 0 obj << /Filter /FlateDecode /Length 4000 @@ -27920,24 +29057,25 @@ pn 8DU ц(x)h'?цUyFn=硪#Ogwt>!J y[ WD9D>˺QMtUx](={~]>j (/!mr6ءA(Y_&K!ڣcw.X5#Vܓ:yf0!`0K A{Zt⤔媪Bk7iqY9/EGƐ'-9YӟS.UHLC%pQF>Ѻvx> :ՎHl҇T6np:5&7l0(@t,V!S_Վ1^>IXuv*AVl?} +n nGtqQ|9v׈0!`0K A{Zt⤔媪Bk7iqY9/EGƐ'-9YӟS.UHL#R.nos٠]h10&}Hjv Sc?X,\piA1/F0 +]N Ev 1)U|7Mz]P'S bkB endstream endobj -1941 0 obj +2036 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1940 0 R +/Contents 2035 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1942 0 obj +2037 0 obj << /Filter /FlateDecode -/Length 3457 +/Length 3459 >> stream x]ێ}W !@&y`,䡻3O`7(&iYXr{tnYXU<*iu;EDD)x{|A$} W4? L!91YacT1B) 12z?RJi-J>|:~>|<;PϧgGr-%"y=sm(хV*xG:aQ7:3JaedJ//GEZ[y~'||EmQ9.R:M%V (A YՖȉ=5|$qօr'` Iֻ4qAHLв{ -HR_㑮\"k &~0m&0^I̼wGuF(-2'޷-MUMV|%v&:ij펔nLJ3İ/kJ @@ -27956,24 +29094,27 @@ j i#L+|K 'bz[j?fqQh7zY+>`Z# o_=@@<6cmY<`{2JB Z `x lqymTyEJV=ձemm6ޒN"M~i,<@mcR e/sDzc~[mO,g,cjN|i%gk@-g[j-o(P!Dε?X*)6 -jNQIlίk| sv$Mktй 6$A 0}mrTS4#:8|d W)@<6,&˧xmUpږ)#ѕP"g@ը밯S٥U$S"PZV4oeYJ^j(M0`O ¹Ş,[ e%W|?1bPƥh۟ǟ~8T:sR~LZȡŪ=a+qNfR _ Q$OT;W8K,G)rQL+&F%MnOϟzN#ߚiJ CTRٳ +jNQIlίk| sv$Mktй 6$A 0}mrTS4#:8|d W)@<6,&˧xmUpږ)#ѕP"g@ը밯S٥U$S"PZV4oeYJ^j(M0`O ¹Ş,[ e%W|?1bPƥh۟ǟ~8T:sR~LZ(8X4^> endobj -1944 0 obj +2039 0 obj << /Filter /FlateDecode -/Length 3264 +/Length 3266 >> stream x]n#7}W~ L!91YacT1B) 12! 1Z8|t @@ -27991,24 +29132,25 @@ R) #NP\N؆hJv9sTY*QᲜ4]΁F%ze >9|!q@dpd .E&هIХ%tƙ*̿#ö/ /V׾("@18Ol7Οd)<-%,2|$K"`5"@1XI><$揗DhHyHi>+a#oWADP+a#oWADPKyI `x -X lq+eP\N̆(eJvLAD#N6(e@Lvpq)e,+eʗ`Wʠ2\Ӛ&ś1lRRXK ͑O/̼Xf2+Ur4alzB3s j;dΞ8c\pM5kzđjg|.wʚ}!\S\~ɨҙ H䲉gjjSϠ8\ ~}O|}i39!Ҕo\ m_qwc{Jb¤'4?}/jh5>Bj5D|08n[ʼn00OsޤCo a~SSD9O]?@O +X lq+eP\N̆(eJvLAD#N6(e@Lvpq)e,+eʗ`Wʠ2\Ӛ&ś1lRRXK ͑O/̼Xf2+Ur4alzB3s j;dΞ8c\pM5kzđjg|.wʚ}!\S\~ɨҙ H䲉gjjSϠ8\ ~}O|}i39!Ҕo\ m_qwc{JQYpZDOS oA4Q(?b[-_NW6V'iΛc 4ta`|7̿|ԯt{ +sڙ>i׼+3Z';ˡ endstream endobj -1945 0 obj +2040 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1944 0 R +/Contents 2039 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1946 0 obj +2041 0 obj << /Filter /FlateDecode -/Length 3493 +/Length 3495 >> stream x]Ɏ#+p_F 0|23ER[LFjwA-*0^D0Q1IW~)&1AEԆ4F8k _q!>$#!RZ ._ן?|QBM;aY_7X\K9G+K$5*yP^g 5#*2j-j7(Tk!=mK&hg CѮ(zߓmHeMF R%X!ؤ%ou:RԚx &zm"AG8#2C pq1J |Fe @@ -28018,62 +29160,58 @@ h lN y4B`B),` ,L|,pـ+rY9u X.DV`ѳ/0M QgF[洜Vp"t>ձ/0M QgF>X;5.: >`a8l7 XV)Ȋ#עlxg>ȗ n\ev*V@rrɖ@GRn>[ܝ7wKwqkvu[uiH87ޑ1pq>8Ǩ`ȴsW >'BG9.vC]ٹkh/{~1B|k,b,l6^W L ~Q+d֓@zk28H>t|iYwԱ)<2/]}<^\1i@AzmzEOPpd=f$j%3"`.]O0GZֈH۫=W sZ ?%@zl[#7#vϪoP99}W"heYRG$W:/À|]jc梷"W`Mޛg^>}Ӭ8b;썋H],..`aH>T_)H+UO *-t۹BO/L: ;^Vaa{j7(hpۀOre^9tVPzsoYoXy X}Wl[Ϫu a9: Ƃ\:ޜ9њ0Pt0p{Y'4h l *zBņ@GvA!0Ȃ,q'&6$轹Y޵u m:ښ^^2[P2%GA>]O`|%12evݽ}'b%ADzUV{sK'XpcN`[F{M )FtkQzV,¹ݍ -Ƌ۝ョAhG[[e6s--4 5pWl5DXw}fU1DBXOؒyb|pDbdPdoSɣ9۪Mgߦ[jHɪ:؎|~艹 J1XG5f11!6uY"Hj ıY-LfczXs =轇KRoQ7^:U3榲vy5ź6U p7w+Լb|]w#SW\WeARs^(NW\pieSp+0ZQ#jh  F _C0O}^~dSZ}2.!lpb6ӟOm&Nv>[=xIIAj1AMw f/8}c^A, 6%9yy֤ - H|*b(5| as Pu' +Ƌ۝ョAhG[[e6s--4 5pWl5DXw}fU1DBXOؒyb|pDbdPdoSɣ9۪Mgߦ[jHɪ:؎|~艹 J1XG5f11!6uY"Hj ıY-LfczXs =轇KRoQ7^:U3榲vy5ź6U p7w+Լb|]w#SW\WeARs^(NW\pieSp+0ZQ#jh  F _C0O}^~dSZ}2.!lpb6ӟOm&Nv>[O[:)0]\@ lr|+\=vD$>/ϚcA<}0}iOE3W!vnjn4 endstream endobj -1947 0 obj +2042 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1946 0 R +/Contents 2041 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1948 0 obj +2043 0 obj << /Filter /FlateDecode -/Length 4522 +/Length 4525 >> stream -x]Ɏ#W>0|誮Rb2%$)U.T&1X_LuEED)x{x')bC'DHNHVULPJjC4F8k __RJi-J> -u%<#cy0SѼ.L-g-E{{XԅV*xG`0Ũ2ydJOJ൶ߓd͵O:|w -PJ9Yu֭aJLKI諵M_o6Jߒ/I/55gy)@6Mon5f~4W5kV7{B,S8\r%K#4 -e)8_qƑ01dysYrz%nsb>{9n t}ݧlv6W[o/6\DB_A8O``u=TdLSdF,LfRmt 6Q4&{/樵(Pߊޗh#;֬D1%Z,,uĈL -q$ϚP% rũlH | G-*ȹIĒ! ܍d P,{G7$mq)"|ΑvXHA("zʡіElsMV:`OipD rR -uZ9ѱ{QֱֽbN!ȡ-eHK<֊z!V\C)q-+SpR oDfQd28K ˛A"١~[A)~ !DCKV˦Jʙ܂UPG0g׾/=ĂX}U' :EIzy砚6Z$%Vyhز]FȞR"WKjƷ0 MLĹFkhc4lnL>꤬Iuc`1*EO9Gg.F3Vtl1ׯtS:(-JTPy+֏fnm ,B֌X̝05kbjVcjY! 0Yf ZIu q _OK'kEj[kGYMYa='(ӻJ+ձp@b2MQXb]/rhIz'Tɼg-9x40tzZ|i;yĻUņkDro=wbxtR|UfTg)9Fr\P$Pms uKcc 7ڔ\@H[B?cSrFj^{pD9:v- ue[]uӉTj;YKD֜,UJv*ERk\4J6<;8e":v [lgzRеyr.ܴb'"+s j^;+6r業yv! g KCtf}[ v 7/uel] -Kg|T:8Z1j 9 -Y*'? -9zujblgԴf9|뎏R QG~T;T/֋5PӃxàؕUX%[NjA/(ט}7,܊- ɂ@ ˂@zw͂fFeAk-iʂPIuz1 *>n|T$},הĉ@˂"O '˂vsXsG,ٰ,כjɂ@, ڣ@ʂPʂP3( 1( ->* A,> Y=h;{%@mA[.k_6Οv܌ -L?};.ɞmKK?uD+msN'**y{>G?*Oދnr}qB~39^NRRыkV] 6?2.חr˿ϲ]g?٢M9|\Lc/:w p]'8=SXՄɡξυ=\C3UZyɄE DbJaq;pۧgnV -NW%zJn3d&yi)aJUGvA덈ʹـKfs͆)'~׻eް\βզxgjw5"),Ka)2EBh UbX.ݶFi QEw ]gY3v s,UoX,Uw =<#{X*I2 yg,U"O=˓;g'E &v[8zn]~NI=~ߛ=Na2]iŽ:оP2H5LUmSFvɓ ‘r enn:w |[X玫]y#7Sly3iގ:@}3:x6$yFO˪SR :wBgގ{$*tFN4ٍ>Tkq2%y6\gW/tRh5 CeW5zLC.\de:+,'8SفM/~䌔PGx݌s#~Wy(:/&%O޺ltfahU;`m{fť(K :6p&xuo]M~g s:%z_l_[<:CY]3}k#L!xˇPƥK"᏿Ǐ|Z<;E#[9]0?xOJ/.mtL Bt-| S_qgtEV1)<˃z3kC4'(7?M&wa)k|ہu_1. +x]Ɏ#W>0|誮Rb2%$)Ui"A"dQh1o/??$Ep+XR^3}d +TJImgߟ?AA)SGߡ߯?=}E y?OoDHj7>N)h^볖"y=Z~B+auNeqbԋIRXOG(T%:D0]WޤtZR_ }h~9'A n2. dVcOse1^1ϾTZyy[֪K 4) FwS &f6x=H3 +;y Iv2Mբ&z %~&qf`28@"}ID MA.,H RH)F|G2u!4&'/O1Ro=*2*JOsIjO&aE1OKO /\ !hf3s'san-L: ҧh`ni%)Gi|V[%"a6_emZk{>΋D|Y{db+Y(g`U%.$(XM3I!&;̛̒À+Qt Ӝq%t$e>$eCH뿷Q{!z$ =2yh#u{Y"t(xtgg"42g_g6(h{KY܈ }5{@E4GEVD ~if%(D)b%Ue)dI^&G%Fg]mh)#i}քb. ?e.!f[.Nu?weFbdN 9nPAMp& qont%C|oDe78¼!iK!ysbF +BSm,`kbh儴{J#jH;ruXhmբ́ܓ/e.6vAh)kφ@W]!V#*/ +NGna\8"p&2C&v$p7Yd]ܸ 3 +J8cGX% +e*V^J~^6UPt:)8p}!KRw> ~)|L:7˳}d")|϶ΣFÖ2F9¦XR3-i`"5R\SFᱻv( BqIljeϞ*QlgR֓"1W[ /rN_њLQ ,.s. tӒ)=QM-Wz&̲pnt+:GZ89З HOo oVP>Q`{M,Ԟ$t-]֓[]֎,8SyY7wH?wvVSJQ-M<yELvhΙX1kiŻ'ٌ;ISd*WbBke_߭ޮM_ P)j cn5ؼgX7'|lB/K55r\A}쓷_^l2& T?7nUT4VZQ>R#n\^Z.AO ꠼:(RAX?. r[3cK2w4~dYߏ^fy·ȓ{/ZXdźS@'j%ׁ6h=-1]ުmacKgm4gwLL:&BFx+TήIʐ7EQc>vȡ%yPQ'9nK<øk[S2&W1z[ zWe~a<1JheW>Sn=qr~l-xJ/*љqnu75ʶust ,S݆{lh[Ǩ-L(d(l[ש񔅈ita6(!乾`0L.:  ]B~K [b{TďȜ֢cH,u֖"*H3EE ==ltSYc }Ěn HϨir:x0LPeW,7 >gGSQI5fѝֻMv:._z>]WE3:]0R%FQdg(˓E\n/P=9VֽQ7]Wt5{l]|@b  vJ_kN'2PA+KQ頻J @! t '^FQ1HoXֹ[=d, ʂZҔ , mbT<| ݐ,hIYH) B4=D, .O,,hmMY8aYH7 BՒ=LXG<NgPcP, B|TtObY*|t,{vJMkÃ4]־nm#?W>~vv]= q>~qa:bkW❬OTU.|~>VU~v7g^Yrt"gs 7l~dp]R N/e <~=Es9:._ +u`Nvq.'{>챒 ٓC}_ {bfrƱZyɄE DbJaq;pۧgnV +NW%zJnS2ʼ40%㪣]Pz#"n3-m6GlhAja j6E٪7,l)dYqVѱezjwro9KC<Ka0zmX +{(h>K=BK'R=B'm<ǁ6P{@ʺ@6qm_kmɈu}|f"8XІlmA6˱ @%F+-1V ֎:r|`m58O􇺉c^.0g#p#SRc߽fSj*Lk4eyqoư52 zj ;ӶsU[_;ơ`dp9v|ٹ݂<4zgj+o}glP-/ IӲ,,G~z|:] +ѱ>Mvc(z{Zv\LIM)W (*A0zMPFtYxUoޣ@"$)~ ;"b9W=ƥ@|gƹ5I0z;gvc_) 9#%T"+gn7mfe>Uaʯ΋I*(D ӳ.YpZX[Yq)JR" >? ^[(FSg|q}mC\;ηs{$bޣ;)/xp96W䪄V}#"PVtE+{_C$zK1 : +Etxbl^oOs*擒Kwu75>$] 1_fgb}/8KEPوtEȭ`ǯ1K%p$ߠ'#x4%wa)k|ہu_ endstream endobj -1949 0 obj +2044 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1948 0 R +/Contents 2043 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1950 0 obj +2045 0 obj << /Filter /FlateDecode -/Length 4372 +/Length 4373 >> stream x]K$ ϯ?Y!@bI6 aw'P*zu$uڈE>RJ\8|Nା\z3g8ޱGr#ʹ‡ bF+//xK 9Νw!dFM|į_~|`_ހD|0uu0ܞ5geԙYJˡ^.Qsy@CpǼRǟ^]dJ˿>ʪߗ߿ˤ`+RXe| 9}K˹~o/}i: ,ziVK?e|е\;eolh|Xʹ/ɟse4H#ˤ @@ -28089,25 +29227,24 @@ i #Z_~cu,Hg;ȅHzV|3!3<=1bJH=>>AUn"#)/EIu9<)f`ѝGbRCT!Hj#ad<&J]եݺi-RMi9B8VO7zd%z&޶2 n,W..&Y&]}))8ܙrxYjG.4gNfx-Vi=#Nˑ,drXLMMݢ#HB\6$tMz঎ݵlxIWB)>ɡ[v4yD;=0qyA` Bo݅KmNO 9y~"DjSܣ7B+YK]];]\g|N3_QqJU7b|OoGi:'3 C4%YwP)*O4_7Ryk-F&l.BFZ4/]Ox4RP:V,FFF +9`:Cgbπ{ վ| -wDJ.E-hq)U‚;F硻ʔ`nR N0`o >k=mJÀ=U7binA|~-Ĺwڦ,z JYl!>(9Yx!iVx"M.7+809 #D O%h}i槬G?ruP:MJDv $Fcw sS<7Sc=n<0t%Ħ ꑆ5# C0;hl@#nc㱗c'sC4==A`#L&V3NTs٠(ik=mJÀ=U7binA|~-Ĺwڦ,z JYl!>(9Yx!iVx"M.7+809 #D O%h}i槬G?ruP:MJDv $Fcw sS<7Sc=n<0t%Ħ ꑆ5# C0;hl@#nc㱗c'sC4==A`#L&V3NTs٠(ir+9azsB9vLWYǀA#Bv1.LL-<؊ᦖVzϳTM/b~6o?L x{t+CoPzf1?m} endstream endobj -1951 0 obj +2046 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1950 0 R +/Contents 2045 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1952 0 obj +2047 0 obj << /Filter /FlateDecode -/Length 2601 +/Length 2603 >> stream x\Y6~( / C@>@ч]'@tHI&ux3e(׶,so.5?T;:_>>V_>c!#??+IQCP DT?S>31Bt3?}J}zfB1|^U8eɳ4S|X~RSv<9tܓVh}w4(cB`:"uE>xG.ٖ˺w2&cC#8yf [߲V;1,چ`FC ZU mO_~_~ Fyg Wk?oN_?j5SȈ)D {+^boGVT-ȯĪ!}jI*į?cv;cL}};ǞN @@ -28120,697 +29257,758 @@ V 5 $U[Ŗaܳ^9W:#v5O&UT|Bzf0Cv ]FNmDuhCcli$k|LImնT>])Wsg2b!$ c 㜱*og3F+"žS]f9{4% Y޷!(MXcT:KmaTBzrM~̝=T^zUMAIG+avU8-ųpZWVԲ@2ss*ܫa xi D(+B)2*w -Z-sUTFo[QǬ#lZR{K>-R{5e_8lu9IQl+Lk35iY1D&U 4r|˾Y<ȱ擖l@Tmm6򈣠8m9y Ŋ\JP,/KG tfEMec`Zm_:tl"ҶrQA-z4ҝx8dT赡)C!q[iC>eaF]6v[vdHv2PM젾TBcXZ9"!UR^KY[vbcM6bno=v뙷#p]O"_5׫Fq#R #,IT.FWEr|U',Dj?+eVG n.7"(<-G.l{mxyֆܺ=D_cC~ͣc}rsF+*K66Y7.5v-jgK Kҏyi9u^[u^BvØ%bkVWnbG5!B-y YZǖ ԽXP.hq]M[.ZV!g{C*J XU=CHgkS;L֦6_|]?-U5{ss6<8hcH"o9gg{fՙBw3`DžXoo\fkUwbvtt#`HɍNKWu%cݒ|/Eb{0%Ɛ~f`"u*]wwZ^\YR`ו*&ߦ +Z-sUTFo[QǬ#lZR{K>-R{5e_8lu9IQl+Lk35iY1D&U 4r|˾Y<ȱ擖l@Tmm6򈣠8m9y Ŋ\JP,/KG tfEMec`Zm_:tl"ҶrQA-z4ҝx8dT赡)C!q[iC>eaF]6v[vdHv2PM젾TBcXZ9"!UR^KY[vbcM6bno=v뙷#p]O"_5׫Fq#R #,IT.FWEr|U',Dj?+eVG n.7"(<-G.l{mxyֆܺ=D_cC~ͣc}rsF+*K66Y7.5v-jgK Kҏyi9u^[u^BvØ%bkVWnbG5!B-y YZǖ ԽXP.hq]M[.ZV!g{C*J XU=CHgkS;L֦6_|]?-U5{ss6<8hcH"o9gg{fՙBw3`DžOXoo\fkUwbvtt#`HɍNKWu%0R-[ރA.1tĠf3#OSyR5JU߁ endstream endobj -1953 0 obj +2048 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1952 0 R +/Contents 2047 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1954 0 obj +2049 0 obj << /Filter /FlateDecode -/Length 3764 +/Length 3556 >> stream -xɎ>_g/ brā;rF_rcm|լqAg|J[8N^ }pVߞ<}};V O1t4 nNx& -.*ŌVۯ~zSbsM)z/O~~ A -o7a4jĩd.ty5 7&# svzϬ)70>٣/+zG>96?CGa07J/O?n"03?p.[[ȷf;'\iL[4"4:!eޘO.F.Իc`a|nj m%w*0GMף:s:B}^Jw>(d SXO}jDjDLJuM~?N40 -\׷-.gR;nL+[-=ʃ~Qzq b~w/pT4|(e -HК -+95сg`Ry*B#<Ʊ{f -'ǐB'>c O -.u0#m̶@$\{^{?c?Ln* ɽ}26+ EF%+>)4VP/cB~v6, |i`Os(k@pD8tUd@i`Js&5G~pf tc."f -%QmC76 Hj㪻P PcZM`[Js*Џ sݧ'.}d -J*"݄ XdY40MYTB隙2mA -+!nBv+zlE,tØ ו$7DzmL$v7A:X\6 FXOw-3b"'XLO$ڱ_Xkc!T4lpXp{D0.5'3gՒ8sET -&_PAܘux/ -fA] јTꥂJ TJ*`TQS#C Y@8w0(;CM)T)łҒQ5FxO-nFLRӕe%M  u{78 Z퍞 -Ք{iT"^ѫƧ @kIFaӢ [<́Sp9E_(a%XArYHa,D(=+'W47kDa1}絶f/<1W')yG| <bvg3dh,c߱h`|i2#bf=k^g$D22U(z Ph"(/Do! !$ ĆϺ"<)Z-JYMpϢ%5qwj9![cΨ\ S[lJI*goЂ3KVe NM8PB dI/АA--=mHs .ICϟ;?H%" ~apYr BeiՄylCQxp N9mD6։+eEXOgLק1xAzzeʁ_bJyZ6*9CCjSq;Hv%k4>KZ/_QAlJd" -W2HD0q59R]HV弞b*h_nUdDNv^>U[¼"=7*6V7#6pWǡpǡr`?YO1,tO,;2ت>`iCoZ[wȉn -^ALD2գr@VS^6PrX[G^êGD7sP;@(\zT4Y40]26b5)fՇ)q [(1ژofՕZYTηP%Iɬs硡pr 警(zày,Rq_q -:lgSA" -W *TG*H -9MeR~4 -njQtT -cAM^6$C2@.Ԝ{tIa}n0ED6\G=9? mH)V>s>N*O{,iܲ HӶi".j -zHߠ>=#:>A 7P8/Xp^/u&a,^PR#"6ئȵbPĦie#ddm2.h`|^6^AՉ qn *5m`ap@ü-{WQ9-] ]S Φ3KmZ "p@wҰ_VZ JOY-hB`^s|noc5E @hZW&` 1:e64Xm^A,<봹m:$>w~" -W$d@2.:ʀUCiE*㜈_Z) )W=,HtjQeVҠeO` -WPuҽkN4Oj4Li.SGFKzPcIJR ߲NŪ˔QԳݽJDNǭ,aќQ@u9-r* -t$--Zobٜdfy,nzdtȝ뢇N)]#Pz Ewdr -??o׼?x8/}Qٹ X3`?}[|0[z~xx}񷭍w5`l% -] `? GDEDn"d -@ *xF B/ oߌkLw]z<2@|uo{֥b/ +x]Ko$W@h6N$PbAvK6:H {=]$G9xz"lpNs[._>pf5_냴z-xŔsłc\H<(%JJn/~~?~%[g/B0 8Ko/}xCBcSpZV d$A"3/txJvo5qI\^첋QAӗߠaPMxOXAεwy\Oo9GQY4w^(o7{^pĩL8\qv巘n3=bM6Vڼ[ +iX&`d[G'3Mǃ;s&:;9_y}]GͫXN~}0-ͯ9h;h:o B^vU߯^53߁c; Igrh𸺔_7_4ku ͎3Ž wz@EhBY_.9SW@BW)҆zxx\+XN\ +(O\0dGb6:^fx0ܙM~Pĥ#sA |76J3b=?2B״dB95 dIsXdF LF'S7 +wğ~H?~kbx!NL95hܣg)!) ʐFb~i)zL#brHUX'shWJRЦXQ +2`B:*u14OocX |>x,S/7w5ld֍7D0)'lS& &F"4:DS9f£J}Fhd(22x>ta{Y ae\F427 VlP@KnpA-pvFfϠQ5c\wÌPHoE$m\}KRhpA7زTIlAdnTN,%pAb&lAidv 2B`X]uc>CK*"_ pdH427v̢04 Lnt8 |ft&2&\DF'q)"& * iorE$mHej"Y_L(j#N_ cO3ěğUZ `lX[Ԑ6{D28S椔~LT}QǁS/ѵ + P_XIqjF}ҶHh nk$AӀht)%͹R +DCd)U1s"*ׁc@ؐxF\AN2 ;c +P>z`F");$Kj7L^XGU-<D?kۂiauJY=NyFSK@ q$+zJgI[sX>\VJ)VR_1B4X;f&27 =͵݈ +A\\(]ȃ@.z{C}xg96ƍwĒ61! 1t^}Y8 qC' NklbBi1O1'ӢUP Q{Dxn O   U.H3DU7hT&d#켾HO@gSVhe U4&-4dN2U@)I[JIrg6(d^ҝ(,WVf5{@ҕpҎ +?(]@Yϼ6ӇZ/}z` XJQ? uT MLaqQ+8jd~n9C]QC7+@9mDv։e]c!SJT5q)fWY8z&]땴\<_M-r~uDNs=:,C:Vb)Z]f^ԇ)q)(T[YbB3JUgzM6E|+$CS\>z"X8 y-ovz%GJ..t$NwAgsA" g Y.l˻o +[.H_/\\PKӠ.^'FR5yYU7 0"=9$Ӛ!ruAhw.Hˢp"i{i[McbzX4RuTRs4 Lߢ4)Yw6dw):z  +zy7C'-4{Y,N|X/DE,5"Jx۔Is-ص?l-Lu?U]!^'zM޻Ȩi2)xT;J/Ķވ} P'5z~ևY}]@~LR2 rh}ѿQl]{02QkWFh%Z]QEԦsj%VAVBW<e3'U.YB;3A$1fWWPϙ VJfiP +wdI:mY<Y8#'KY8-hw \u>0f|`hΉHs+=jl|M Ŋt: QmWҠRuOd +,ojg +,4O1klGNW蠆e@\;G7!mNG&)MXHigH{bDMPQ褢n16nYbkm ֔ڤV+ +4l'h,w(pF2zҋ5Zۇ83(W߉S +}T Oըp_42d5.(6S ޔ %iv,}@aOֈPkÞ#:~_fz,H>~af&00J4hFVK%eσԾ 6`/xF<3៝`Ɨ1Mu%fMv`{V  >/3DeXXCWfDGk?>7DiDl endstream endobj -1955 0 obj +2050 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1954 0 R +/Contents 2049 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1956 0 obj +2051 0 obj << /Filter /FlateDecode -/Length 3558 +/Length 3470 >> stream -x]MW CdIr`,Ni)RHJI2ݶXŕo`gۅ3g8Kh~H]c.5h>\L.3Z)~K 9ΝwW!dFM|Ư_|w_址Ώ05u`;>|ԜKɚ(љYCNCql/sy!$];e/{z9+/-ͬz//7FPNE qihN k4Nw5-4ޱB񚺆q00k0ʒD$qwc%iBHSs+cBI`\FwPٓ&tZ{ŞZkv -ks]" -鹘+lb+Z0? $ɦo>z?GPe+m JsK.Л37pIaI" - Ao dp-#qhX!y=5 g%!eeƨat{.dRiƽ0F Ԓ#Favq2CXY*ɂžA^YhNs"s 83DWF6fv4*F;l/]RuRZs"n B))]EJKen*֌.zQ]n(a ¤h6*=tWB(GCR[K5fDr_T^-3BPis6ps!u%t* coxbT/qo1oUD2M2\)6HaҤ!Ծ!)S/e >Ʋ@$PRq͔N)2pl>t[jjvQc\FQfKMTD|%)6x%W$_8f+2xs`C{ρcDqiKIy!?ǁEN%Re.J\mSPutIKd.y +zIIBrK-8ڃfs-)vFR@nX2s*#vDvJMr -Ƙ:hѹK^O:r!*Qp3R%ᴈ/*W/uyRqnZ$}P^T<( ^$&ŘiqC򒣑Ŕ=KOytQ?0MΨ~&InM#yn^K؄G5:aHR+n4-38) -ڞ71Qޓ~?k~qgU} ǯh&ZRv+@w6Ӗ̭n\5ʿVaS {ghYYOGn F6m5ĭZO~mMLf0򜒩B{3֋A?>_ϩlBupVKYWEa8UZ kL;T֖ItN:yPMLj5=n!LJ53M kp+U;qa H |hr{+E i(LT["\g ^uNIp"XI) *Rlz#U -cS8*yN虋Fn39BϟϷW,⻶t1~h -"JL) <+yq-KO!_BT۞B-\%F ^ ⭑o]Kc)ڱJCAa̺zڗg{5.M2NYC"k -5FҔZy%<5Ӕ©1ШxxúPe,^tm7&A?^Gu#n /e8v uNVY3*ocY3 -cFsx%gK|VǤm4#6bey yu'ܴiuM &5]C{3֍H14kgj=љRjDe?V ߒd0+j|ahL1ҵޗ*7vrK=-IZp]9x/#Gtz#@he2a8e0oˬqך)&irf:&x8_2 )xǴ!;R! WLIO -_LjK=O΄ ::mURn(#3q[=vCY['¤3JW//>pRL~^҅y)8n^\?[WpP:nzCi }A6%8zmzg,CKcvoUIuSھ>UՁ TNG ^8zA䡃W qW ؞K^# JK> VݨRh'磊ʎŋrvlQ-圦"iMoOlηL?\slTؠz:4/ձR8Q=u\.20'#HVWA;f]l]B^308Z[k9qQ)qo [\Oax*wex+^ n`Iձhu`RJ6/j!k ËdxzY -&ƥQ# z Hl\E(bJߵH -bn;i,wμӫdfLsN8ЁuD.,kѵ9LE-h]Q[-XqbՏ B(͗o}c?Ӭ |m\ Ր:C~|}iFdž=evY0?m斍#V1!"3t>.hی9z@EL\c۾cdUDqBٹa5lӸ62}r.'MQ4CL_C +x]K ׯ?`6!$Y awzO`6e[GmKQS](>冻į wM +o%~> ݴ>Z=aBJ/h-ׯ}KPJX.tׯ?߾B W9;+r +[NxRD77[.wUXH҆YA +#C F*0Ͽܾ?A 2ߢfק?PFd*ȞZFNJ. N$lܹlt4W[?2hm4A5BQ `ٕe*T& +cׁCJb#1Ƀѵ]h٣ G"C}yt=׭Frd` A 7Uk+_tuC7]]MT}qcE"Ik'k|Fz2?1ԮPKkv EOF#Pd\Z;43K]ZT:>׭ZBGwqjC.K~_9yvpӮNkw W'K!Uqu= HQ) 0vx1SRJ>W?;*6eσKxotg)pu}ƝI#1]ʁMe Fr81zsĚyuCw^]ݣ693LXO'nN %9i$>fgY/'j:Bo7WZa,C'PBʰmu)Lj=!Ҙʚ(WdIL2 %kFT_8M,.{Mu'4T]1Ԉxtm/q{ctK,ZW0>{cg8׹)ɃRHH7ƪWLC4[p +CFiT<)+btBkSŅM95[fnOrV.0-Kc[=z|-0a#Ţ]U"daP"i2G'K;'z|̌Md*d:{u(fAYદ5wϽνP^r7pHW`t +cs#)/-aK1[fNQ- ed&Km~hfreھcң9F󉢁MR40U#0<9z;Z\?ٞA职#n醙sɠ8nW["Hhr 1*-m-#0gXp^K7o3Y*FFD[Ҟ#%`o Z mZj+c]B+.:TL>^Ϥ {sĢWMOz^rKL+oYfʓh94w[ ^ct 1slg|X(e30|ڕ6LcZu*:Bh#"'U+;{=Ks%0 ׺#wӾ&¹ 2Wxpp2szB&}i98Ql LBcwr-p`Ic5qxOecL#V_&i]J@*r s|\ulq\U-IɻxEуs +9s!Kh2 bK}CC&?P칫K"aL[4t/}fZ)Mf=reӡa71qI'5SUsNJ<)BLo~rn1AV5J~ 3ja@oy3aP>l'yGVS  endstream endobj -1957 0 obj +2052 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1956 0 R +/Contents 2051 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1958 0 obj +2053 0 obj << /Filter /FlateDecode -/Length 3513 +/Length 3254 >> stream -x]n$W}s0`жcAti s)2+Jd[Pk+ex R,wVSI$^bOd -TJImgۗ?N9Ɉ eᬔ©˯P/_{JfR;aY_7X\K<}ߞN]hwXSF|R9V&O4 "Z=ݏxVZ_O,kF>f$5[ZalP8_^gAe0N2[-Q*6-9S6- %eqH- `,H_t>j*z;}a}H\|?\Iɜ$w5}lzc5 5V֢ZQjn&LX|β_iՒV^hQZMJ!K@0>=%qcKk'zq[Belɛ6FDGõS \L'pa|p%-mHJ*qRL6u$+H!qaC&'7g? =M-~ -$SuX)%ln_e -F3GA֚\;&bz֔!]opmE;CcX!rN 򔽆hy626&(KbjJneo \G۰VT]Iw%cm2 ɝLޱU,!ep'm)JE|r^@3Hsp_2*!@^2{Tƈ`@=٥r~ -Z7$ -ˆN)>X Ei 1(Ύ]k;-;vƝ5.ڨbFC@z[  7Doէo\ 6\3HnkCٝ ?{[Z$'e"1 a,AZ&ƒS)"g[r,23 -uԡo`|%D'醝H1%RHwKW|D -ɉNHډdm4v@G5P'Pb|q%Q %ݒ8 3܁<-]X^] X_^K^{ɧ=u>-n'zfyY.WTsboF{؞c_BO- T:.4kƃGGvO%PC6MiGת(=^_7Bffp% R$N~#jc -4NQ֝6ND=RS!6P2Kkޒ'+0Х„, (%xO`C u2`YblP%#wj~7̼r<[G@zwWnxvl/ -3߰ Q2m+p\E.9;CO.J=y1 1< K1<>kxwȻN) >// ;59Mn]|FxpR.jiM\x# lXr:l@p`fFp׳.ޫWd巘cLSއ 0zBOp4߼VB*PƦyšIWz'ކW/j3WHhOi&rBϑ> Sk^lQzlYVdc<賹P@zl &rVTΫw$7J">zz>q[:(gc(|q50)Q*i.Л/^+pagWے* Hid02[6@zu@i 3/`_ᴗ|,3 -dfGjgp+ QP2Ɲ!70?FH@+i|^^jAJkSy.{VV*ЃF2(9.]g-gޗȀ|pxDTt;a1݉a:eb+ ݕӳSIVEL^ғ/wMWЗF**P'1z82>[ջWurDAƮm{"۝jX_t u5O2 +MAXGmۓ0\u:^uْ|on~n}O&uuZ]%e:~㮏Tg7m6`8m~{l/L51q^#LKpd CνoT¡ȂeE2yC(O\{i6-mUL:;aqC0*;e'tmr 빧Ff7MOB%=,SWG$ϣem(ls*01ꌬKu2edƶ [iJUw{ ][h@3J( 錉я]PIr"UK(+3/O_4YP*rQКCnuԤ ]j9v(3tX{dQUXcUTJjdU3^UTd**EF/.I)O$ʵUPƁPmWm#qE(AnZQi՚iYI^,q* Y+lCe Ce6|ʡ2T:s $3| +Zzqҁ.w*pKaVZɘdՒ`,xHUKWJ\\"%].1"^Z$ jkR2Hz$h f{u)%-bnJ(Pu<~ =\:,_rjQbQ_] o×(wcC} 0!ʻ&;҆^w.Gf3sgfO.[QW㝧j SitUJ$KVM4ڒڵ_VSsf2jrC>R7K~?UK'h1H5s餣rq-6O(-H *VB%-QqrXNF\%[0GL.\̽TPgXB_F >." y`karcl+\_㨼:7v%\{ -JsB/"12O|aR``A.H( -?-MVrs1gBL)_-lps'۟~:g] dx^evAP ,uϯ"wpl</%71@X9wpaZΌ"ATfd(ՄA`Joò8N.s)WBd܁[\l?.Ӯ +x]KWwQ mLV)=!%s?ǞYt mYyy( KdTJ9:?rU3V'UpΤ(%9A't<韧cv*jS<c&\|(}4Z5x((tmʁy)ǡ+kL )OɮY3iE:atT5to?Xϟ_N=Ϭ{ߝ4 U3[mageq~Oğ3 wryqZ~Gs9Nnƺ?,c/s]K˥~,0.]>sm`YTY [ׅӅ[|LqB:!6?$bRxbprh^,/YbM00>"QgƀqV=N0&ͭ@X^<sJr|gtlRbbe֑xo( eLjDYOw`xCq Z_ /?[.TÜag"/D4&f>9ElL0'!2sT}J]*ـ+#7ˊOKPFZ,()Rf, Y, +϶N_]; l +ڐp3bʜ#q<yxos/q*ݤp i5^ir]5j)HFt.-ERXζW S~K^ؔ:U%U.;RJN1uJS{gx9(pScst/CF <$KHj2='h)(ARk3*lP6-҂-̩ɤOA_s=-smD Hq`&-\7 4qmIivrdcb٘Һ74/Pep;,ِT "7uvJl +dj 5+ 9.6q65BDDW8x ds)Lb;DlS QIj +K '(ւ%Nr1E#ZW)Zި9إ(RZ E"g9!a`ІsT,0wV$1jQ/v'*#w0)q#J馨9ouci&Dݪۛo"6t +Hx!ؐ͂OSQ(w~б +? ->g +cca]>Ew[ ؕv*vtob X{Lkosbh4j؃h 4 Y*dIwm, O2wRum m?Sk8|Kijĵs49fA@Ucu؉mz^FXR~q_SA44/Dp;0/u`Qi_ %=BLv[~nmҝgj&\\v +.-eIskw1 Vcޞ(+k9" <9(2O\ۓ*3/}MKi(BU_ #ĬTSQ-»F/@mY˃X +,mtg;@0cuoAt`^sA3s Qzzj,n%ʧyQ%'^"1؁xIExM;3[+gƾaC@ .mT{Q{>u0`in崧'?ZJJY lRp{XxIL}4؛r( +cH*[_ۭps)A4HW|LGqLΑb`Gp#Űs:R{Wt(d!^tr\ٲ;?alrhpVy@xojgoX6O7`R^{ܳMޢȏgy6HҬo_Ouy9'l85tܑzL֢acC6]ڟ^Yk(1lc].5;am*& +k2M}z5:Ph\촃8lqfR),5 TU"K9kbdF-mDIYʙ薝*dcT +=`ε,b Cf IJE9ܕEXe\Wj9ւYRHi*D[vUWQmrcPskMm ώ{a5ͭ! +6v)ͥ|fUxC*́4>N $< S<-< »^ۺ=ׄ:TKR`| mj7:JP_YN,Z6 !v-v)dmO9+΋nZwUrQZŮM$TK z0@ܵ mN>^moٵ'-(n}t4+ +mrk}6I( -e#ZwMrѴaR:D-g,-ĮzLQaP #(moLjRفSKyu+rPR7k*1Vtkmѯ;gZ:A"j+?_uy> endobj -1960 0 obj +2055 0 obj << /Filter /FlateDecode -/Length 2944 +/Length 3262 >> stream -x]n#+M EdNH< Ӟ,U,d"l/b-,>yQoITJ9w|Uw3/`ٛ)|6_Vyg_qϡ}VEcG"c/c^Љy ^KB :uʁ_wk짮 Q 5y*ڧdV@9VN4HG6~dT 8}|x9lY˿_(}f%mv8Y刢QL҄={{Gǖ+ZiIvHkDa]=^ 11ZKirnt."N0XO\j);T.A]u*KehAf*WȺs;tK<`ѵ纼j1Y#єcwHOE\>ۈ\ ,r2V&W e~-QqY9P5(=~]q\&%Kdak= ɔC`:(=8(d}jp*e} Cvd 3Vɺ9Ab!ՐڎHۄ-H$˷zs% u'E&'jrkl{Yɨjw%kGjFb<'}fllLK-?7xh"ړsTOٌ:EK tTbJ;NGRʨJ Ļ9ꈸ z ) +_]$$euuJ'$ eLג|ސ$3xԐ}+;~)@2繮< l2:pxEUz!7#lusҏiЋ<~S~"8S.K{b2 -͉J3>y`lyo6<'%L63;qS:w)Y&},ںaǐ.v JTֺ/. OU,\DTS):b(H -HV]F KsO7ǜĀ fp Ҡ^f$C2w,@eҳ3O/"eE$\Yg8.} c3Vm0*YorɧgeZ `5YTH8 )(Oĥo-ߡo&`annM'P j =@Uî36oAv"4a^eu`jDžJ$ 'A>ONn}rﳄ&w%*p:Fe29T!HWg$3[d= K{5,a 5,Q)=u4,A2%ؔE~qn:`iN*Ҙ\l=p.CN7\nWͽ3x`ts[>qS$ѩԠcKuj@z7&:  [h:┙gLEy̴S)+^P5َܵԏNHl;ɸ9:WDn*nT\Tk,+K+aZ|f8oY*n,,뛖0Bp* X2M(Ww[5[⳹3\ g;v[5g̮VM ud<c|H.YUL?O - 4/CJW%0 -yA>Ұ6>& [Lö#wa~0ciHf9Ӯ.t{d=$&lc,v7Cb6"Ck>"HoBKawjapH ~@ -HX^p 踳 -u]T1(zkol{[k=Tl=g۵t -5v.:xkv&V^ :Qڐ C aFGBǖ -C 7qvrRQ_5*HC'hPsΫ |W.wFTC҈HElq0EFc!F,[lvɑ_a=|wje<5l\Jam.ǣc3daB#D L1}#pPOb.nA= Bx*WCjEl?Hj.+]/G;\ߝozȧ͍Izo&b7A>Z'e|w8xUmTmyF|HWgU9;:szc^9PJ)xCd9d>hWM?QuꐉS#j ҕZ9&$,IK:ԭ ;kRE3,|Cl15QF -]IS8`섩;T@2z(s>I8qڧtpt e~Я}?}Rmܚys1_6?뱜._g@L[|rEƻeO;'˧<\X\>\|ź*qb -3e#H9DqdSňJKl9#'5Y18e2 TڟvvkDsJ~?y +x]K ׯ?(R/`1`{fPevy$4je"Gw/wt妕 G, __n蕏xw(!(m?DT?o|Qy}wcMG='PӿnLh$>舵8")=f#!HH1ے *h2_ґI +>h7C)q-atnғ3Y7zA0'&Z4|TѺ)ì]AʧeNm"h'b_N[0i}x hML>W^- \gQ,~Uq[q`0=1 8&h{_ YP>a)P6x+S +O\b6SɹƦcG׾M]#т2,Jo pXdtbA-<;7~f^G\ MX4_s0Gk=i8z d'8^;!p>(cZۑKؑ>`1.k;*I*p%Al?yiݺQjb-b=Pk?–dmw GD]0.J ůxל|/R)PE2 Pd4æfy=kq|5G +euGCam*r ';Tr[U <`=qf4Ȳ_+΍ +rWdp0|*LQ +6!Xhhz>Y#(F)T#&gj+[/ExIWSK9ynuU+\ +“7KF+)rb2fYwX>QqL|B[iJ)PV-޳mhZ*hr E06bMHI+C Bz .-XԙdO\u~5PلB-~ BMjcZ^&^AXw+-ucag)ấϫ;k[FwdFgPϥm>Jvt߳SJfi&ۣ&㱩f$-^|PU YgXmPj+gxXaaU i*̓}YUL>LP8%rٱx}@!>னJYd֋b3.+)4U3RHM\lGb/A3y,/ѿh;)JL3v!^=D"?X~,,@8!P3!=Cs/^nUғ5'Juyك AK?1MBšemjP5ѥ| N'C+^obW[Am2z"?>:eit&S9 U7)Amk9do>#dr[l'rC!nlF>˚p5!Ů&h֏,̥lj2%:9ЙR*W}O`ċlB]rV+ b@yt8!.pH}T| .[b R.;g8;K9z^eļ.BcHrlTY8яܲO*3%>1ĕ1怲m}//1 a,}Ck[ QG.RG0y`gn:Te^mK,-ofTRVYIn/tRƄݫ@zInç*1,P\5UYo|V.Prz_sKM=TɛssV8ƛ -í<7g|26bzn/[zhFxMy *2MۈΈEFwdbóZ.9:[|Mi`3}O'hJEz +=fuW/co~NK@?!#@##sЏ̐KQhvXg +eC'8iP#P!~#ѵ%jҊҨP4C>\suuiMۣl,8T + V"elWoj`#XH8]}4^ bir%Ҽ|GAb}56}>78d!AL|5G,&<+Gp]Bȱv-.˜#oS|喐9pHV" 5Hܠ; +rnHQYuBz%Tpgl-&/ q +\aAv\l (7%UDea{9DjFsbݪ聎AژanϛZ,%3i'zJRe&*l~u";z{DU{D-/t{5wq@HY1BCӎ3bݬWƦGjGZ.n:.ljtޠv 'BJ=[[!NiGp +)֣b=/ow1Y۾3zc[\*w>S͚R>~L,Y\y&i]:~@޲99MM?'RJn1 2'7酫ќ+09o=R c~ W` sagixHi5[*IttNR n;pu endstream endobj -1961 0 obj +2056 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1960 0 R +/Contents 2055 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1962 0 obj +2057 0 obj << /Filter /FlateDecode -/Length 3584 +/Length 2928 >> stream -x]Ɏ#+00`mh>TUwi S"SU]-`,|\DG#/!DJ7=aO*xTFk鏿};CzZx)}G"MO1}',$jX~^:+eܯ+]hx^KR/](",7ܡ A×- R E0R9~Ïx$%Sÿ~Ϟ=}9KWR m5 u*ڛ+D>Ez!)40A[Sхobhc2"&>]$o 9XGq%>b|HI=/G@Fn(;<wPno@6(1QwB9&fi `φB9& A}Ay}PiK 堝BFh<=rtoAy*g7/[๒rExr%hhAM3Pb=WI+*Bkkz#UzAW4 -AyKѸyorfSc]OR6[ 3#Nu BmiT #n%nG1RdJHf31VcXd5gL;4d1b[W -ߐJ.X=UXT&CC NijT˘g7hVT[4sMSIr#cm_aBuzIwVkIAM&k|f>vQ| @CZ4kc{|,}4͊&j.nV;QfR܄31mZ7UEA,ӳ#Xmb1(ڷmm#I%B4r3븙cP͌zdϡa,0g+ 7JMnvNq `Kdhh X0Oߍ]xG-P-r8Z&|3&(fU3CYjf&ލZm\M[ [Ə(N*"bH jVm?rGq5kyvC =^ے[3|xtG'AYhSE䵜m׼RL};n[a*Gگ6ˑM5pm߱DQ=Ċ1Q(Y+E[U`Jg<㣈Mvx(3JVJ@F ÒjWYtm3)I}mj2D5lh_yh9*(k*=;dH*ՍS?RW:׈fR=ls/ȺĢ'>7oߛo_e54>GeϷ\C:/5!vr -ؓ>S@-:ǡ) TQL>vq9bi*ZA jl,LULp\t{*죪@R]`/>Et#waOBi)({qThGUFP*򠼱K2>}`I27䪉iH4M+mDg_F$C'nÈ$&qD?H`| J" 30#d7L #ǑIL82ɻ5FG~Iw0j-va[nt uWnͮE(ޙrv< @@1}7䕏JV=(kgQ#"B[cgN:yŊ1|@؏ 2eӶ-Pf;(PuQ5[0K㈛r?(n對q=n/kĎfhڨؓu\LNwRuoќU0V|.8 - -1zx`ЙѮs81NPT*m{8gB7Ww2;jSC#`m8#&i ĭa)qr6oFَmt .`/v bXQLA;]5>pwADek/܁b뼭T֕U_;y7|rw9;A-Rκ};}UHe/s*[ҷ%> vӋ{='g3~5{myLWIO;#ofkW2m u]=vawɁH~QʻiBMf+ػ~5x@1}uL+۷i%yK̊s]էtKGvd>~N/S"m~8*u *دQx$q-YvSު;MmB[v)2ۯ#|Ud^G1>=(֯Q T! 뢙Oj )%X%uSb(*-3&v^w*~o*&2 a?\( y ryhVmo2w\wX!\~}oY'pT]V騴^k+OoO5=>$./*![t.ޤttng$RW?Vs[[mhUR&c`Rm.( w6!wkX`-d 5M1P O` 4H͒9}҆ɴBFjs&IȐe-Jƺ,m'pa8{ۤ~ɖ@+4fJ<IfϵX:/}է/Mx+\L_j+3'0|@!['N/z`Q6|o6:VnNg~fm]FCnݥglR\uܝ"uOZwpW +a;S^S*%~ RH)F\zؐUl~1dAMH讇ߖ &T4b0+d}3{OsƼ׋rdHgr\4Ԡ>$99Zh=]Dt|JQ< ,w6RPAaTnA8R!ǰ)q*M[ +H)v&X wu|ai,yq9[- -{#" 8îD™=h@ M%RC+'5Ա +Vb-nb-݂\6M}'N>cx1CP^qA0g0 eI)Znրh$K-׽SFwV FR-y|:^V:UPr9LjLo?CNK`'*zWxS{v*2/cjrpU,j&Ġŷ? 53L'GՎ + 5Z m]w.tn~C5RjS-0 5 kor4Ld 0 N݄nsMC(rqS4_ƕx@(Sw@ &8-;7SYQo?m?)+V na(k҃ UJ8zpr%Vru;jĠ6/~FIKHۣT8):\AZjV'Ӯ~L^ y\p)9<{ϊ߹FVQZ+16gERZ3*ޛ3ٺ4=%)m㴛:J>ӣ7W3j(FaD3%iغ4 ϰ4 G_qӴR2u x0 [MFa76A2E~BbÂmJcF4%e;QVfڰHQ!~@H<'HYU] w鍃{/عɻV)[;4IpRRO񾭔WDn8#yâVY86m{Fcl ]&/o&ZOxLZ`[Ѷ?,UV?gWW~xJұ|Tp +F/o `8 o@2xp1:vzlk4}p J}|R)|5E^`NB-P;Ad:6쁰 뽥>BgSCZ@2뀆HJNS|g#媲&mi4g;QyNbgސUTO}v)v)hz|I[ݵ B\XA60QwB8Ffj1AΆB8F AyA~!0n +A= (-oPt]!|IYje*զU WVþط%8w85פ΀Fz>'Z;ALZ1-ݜt--&FQJ5]ڥԵ!;gGtuFMLFdUޢ`t?F=&)R2e$gXBI't]{|ȳj %4[ΪYj` -DxVMd gՀd Qu <&y{w@HnSMTJ 4Xzؐ8m:ʊTQG\S*\{wvX4x4fK|` h/E?"X24 阙yN幾\NC9I81( kx|0VSw򶙎\z B^e<]r4 endstream endobj -1963 0 obj +2058 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1962 0 R +/Contents 2057 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1964 0 obj +2059 0 obj << /Filter /FlateDecode -/Length 3872 +/Length 3628 >> stream -x]ێ}W, YI6p<̌= VC$ox0ueaVGI_S_JĘǷ__R't?׃ "$?&+l*cPQ(%7#/}ȟɈ eᨔ©Wcw/J9w\#\KLu| L'q(> pL`HfJq -ɸ5$o\C`K➵֌15f 2˔j--9]z3-$ZG<4A;.RrTTOLJƈJ^o຦?dwɱkQ94 1Iu5AmZJdzOf-x1^Mլ2|tJhcq{zXSd'(δnc\P@d AeO))'F|O'm8 ,ʚ.\o]~&\}j ;;-mZ;u? +؆ںcP5LQ~΁(ު -"Fِr6Ib-cnj ?ԺQAdb%[ὄ4n+bQdQ54 IDkp1i}u+)~Ii2eٓڬFO@Nʽn#S`!]`Eރ. Ⱥ olVEyJR).gV;$elC78 HM5Xa8kxe{6Sc&*{`GsKS6x`9? -զVs݉w*Hc鹦a(RǷ .,vׁilX~һUSBAЌ`7ʊe˶aePe4Xm4~6JWڴP{>y\mhNy/"MK_^6( UJu>4f*ۥJFad>*dFNr&fYWRߊ,S_3Eu$7#+VJ;%%JY?ZrnCe _\'^l!Zcm\ vم6ϻ:S3 }+;gE޶4t__s7q|{8-ǷqK8>50tp"ع9Nkv%JA +R^LeZultd䴛OHB>/<-?Ͽk}<5jS6A 9u0>Nv=t( -+kլd{9vl=0|@ l<[ ,[ڛxFw1 g㫁e ٲt^Be_Rz\P=٥tdۥt_z*yEW١<W5SPS_Q z [oj7o=%ԃzf_a zPOl.UiE:31Z\)h6?T,Xf\l0ZLJ; \@A\ŔosfodSzņ`' zjj=xzB9ے[* =վ ]0)2pH$fc(Fz-&s>5~zٱނ?z@Y72Oީ/`4}3 F-ӴIii@2 F4]Lٕi@eNﭢ"i퓟cRӮYxFt^AqU'sd+)lcM[+N@x:VV޲ˠZԬ&F1mIUAzMF'CވW0eP2Jk'Jz \hNk _ljpQh'8i%4LOC.U4TswrB *% 4Ao|/6J4=OV Y -3^ eJbG=@2X  y>wM "8cԗ#9P=4Q4Z}/b}ѡgqW%J)jlݶ۫6GZ`TO:G;t\EGr-'KvJ44m| -j00Ӝ3{l&-Wz*RI{[\0OF@iatY$S:6aa,< >=[b5=yxo[~"#h-()]u7f[*A݃kdpՐ `suxZGu7{P1~gtyMWg_PTrDjPB%Lᬄ>8BzXp -\ЃZ%6_CJw. 弄Oz B< T$ +x]I#WNrp0I 9 Ev^$}\CAb-X,ř`ggpXI_H_O1t4 Nx&>Tw߾q)λR2#&^!﷟O|Ml S.Xg_7,X\/XΤjV:mDT{jNbQL`yͥOߟdJߒfU?pçdzpY!=h?,mw-I)ß6qGZ T 4r\2[==976qCLi:HV0=c1\K"GJTi̬ZMɏ = zL}.wFU#q@W"l$IPNkH*iJ/ L$,m@D%Dgg5 biFQV0ґpc]CgdU4PJS8JK^D^"bz Lx%VDpKCw{ +2$T$Ԡ]S~#n樬aOAx+2SHa$Αا6f^w%#y5qS!Fj =5 M8k`" ^IXoѨƅ ir?X #B,=*/1U(ߣ<%0VS7xUru4W> 5Yb8E_=a&J{edyFA6 i.]LP~޻& +dH(fb +q|E[|z4<pC] q+]w-rL\9*NW:t{ u6W3̕+A9 sRrPN#]9Yy\gN{<&\:n2͕-WWNWLNGSz4;JLkYJ&Sh)gKUnpX07[RΓ}0)O g_c񄉿3k')UbQ*/S8nEneG!'̒d ui$0WmH v3m&K9,HwhX=YRc FFp(2-e-¶7P.C=hYn6uI&wdh3I 6 tnVm@? +$ J1O:",Wi(㌏k#ռP&Fvig;W~2fɜ%ELa1m2XzaN!$"aT +VvL bgz715Lxxy>`1/QG1Op=Ů0Q| lc`` 1ˁx<y[>lV6Qta"߉j}6J& aEB&>xm4Ԑ;bg;m،܎Në&fK,)t>1ctG9 Wxc?.vYX}ˁrKj@\NxX!kOF=xSƏ֞M ]{B{7jU^fZ({ +M%Mtw,U<"ҺfH y6$<@rQ%إݓFwp!{X9Fmײ{juMjRdʾQz-)Ql +*Sml->@ymbKzϭhrouRz>B3N= y"Z06^L!r Π Jx ZÂ/@ !גH " 5Y%)u#E9* k\ȵNЊ,H-m<˵ҡ.2Z۸2r}y\YdkMҩT-ΟWֺ 4}N\sNމ}yPx ϖcbO"*mj@4 y"tӢ ݘU*,ۮdD16K^ih}+5$^'A~zw]H2@Knf=[. <'wNs):nNRNbr[R%PZKɇ >X&+] -kg}O͖49WxxH1@rG_5"%Qֺ|P2 :8\/@z'ne; Hj8H7t ` uq8D%sHHC$wIq@N~u@l{7AH I8 !@@m.œN>(sJJpJLݳ=P6g҄谇Q`#7L I80ѻ7F(LHǻi_rX]r.]].H=[bt!&aTu0(F$QѪnU!hϺ*Ԟ*\+ MԲf@ކ;vMvD ?n5X8 hmm.Fُ䊲ۼvc/[}XL{*>/: +_yd׵Pc*_3߷r>c9"LS$uވϿN2%-}[B@C1l/ڍ?N&ίŗ]&" lNRqLG2_w;;^&Um-> endobj -1966 0 obj +2061 0 obj << /Filter /FlateDecode -/Length 3816 +/Length 3662 >> stream -x]Ɏ#W\} d c=3:8fyh2dbɬly;I FN!Dח//bV+v?3}~y~*NL&0I)_j=Y>?/> ?IdetWS헗^$N3ZHmWg'}ɂB[ns-T~s$J=II靥e7V&shaCPEn b2":!JӇ__?SʈӇ/,k>OjrR!/ȥIa松J&&Zֻx"h^7.t|Jku>,>kW5.իQU"]oNE -616:E3#mGF-n -"DS+U^BRIOQTy_6qaO=vfak1 *ࡍmb;cLDG *Ӗku,&u▴ @ G9JZ=JO]B6 дT TX] 0[Y"xYF; {p ا pul*iW!*ƇSFʅcs=aE0(հһJM4>aZsCr_ݫr*( nRZ"xO~X J50z7D`nAC΁u@20' `m>_K 4b a ]{Hy \HO_a/ѼÄJ>j+i)ycaݫvPadH&Gv-9cTs>ޓ\R Az%1(4TS a^S@kMU55*( H%z#k - ؑ\RM (4'@P@!v@Pg: eFɒlǨڨ9vk;LIK㓋`QEq0HE"xO~X J5,nRMdXz;Wi܇2 -?ޓVRM (4'@P@k7s { (+"cTlB0|;E0>E. - *aσ{ [riMɤT ͸vƬ.M ohQLwmirނUx)|N \ vď ?yKvڬӔBv*ҳ' %&YPfuH!PJI@Il"udd[8Rj&pvBMc"QT4])tَ0*˪0N*haVп&⛏a=$ŏ"3>Mf%q✻eR+gO)[j3h"[{uRurnJ"/R0auwYni頙 i4wvbqK5E)Hf* 35u]cM;hØ1EBu3Aoi"wi@8ez˅/9Au12HOmdV|y!j*rîB ajDج$c -`WTgݨSN`zʍܑTlQR,k~8(agp UD)sgþ(Rөqk|&H#J.TQ󥤹 (Q#Di^KLS;G+=|fG,BK_Șaþ%d]*akX02z[ԩFEj{{#vGZ{OS'/F_U*>W9QZV }he|uQd,ŷs di-!OѵG2қA,fdX똹f)gn3Gtn[ڳb -#37ckS{%Pv}GX0%~xhK;iЛ"N|U2{{*rGo5q`Tht='A*:9N[-ȢL|m\w,F1 u,ngAH\@zmDzA>FLM>J &4χoѵ 3]9(>;9f{2K39}vTRKoU9eT{ŏ,AwPdgPAzT 5PQZL() 3 -^,eW|=%οLVrq(Wg"dNuX~#ڏ7z ;%<'vVU @Ά 1r0`,6O5؍56vbzmG@tkrܩMtA".s?HFV }(¨Z#睭_-z=!ΧkZPmc~Q-Y8}ϢpTR`Rܱ<[c;'k ̮'еq>C1Ee*Jםsk`SlQ#?HqrZXؠƱgߒGid=%T]o)鿳87D+iTWٲ،T?:ևxNwIi0*3o +*{νb.jTA -Qv _J)o$ W^2ݳbG +x]Ɏ#+p_a>t4z̅EcJ]PJJ1VF<#)qAy-Y}rvN??E9悑^f{ τRыJ1/ϻywBJfD+5ς3=5  >k΂udOzL +ᬡaFDs(n"&sz4h\ +}?o*$sVJͯ/-YV<>.$8IfKrŔvjQ\3-Z@kkކb_KΎOTCi}>iFZMyDkӘv,/d*rk䤓U.,%x=5 Gfh'Ӵ2z0{SOȓq,P'_nTRY7P)9NyzB;vS3k'Ci"XZ>.X0S̍q3@TЪZeXm`TʐYXo1uI&}2d?Gh]c? +VzݫaM W,?=0LJ1O +֓'hX0'!#pϷVNf㴈%i:!ĒQmo|'--p%@9#5YF)XKۦj"kiJ^V3%n}Ur t{mEiXH97'@R| G+B {!sFnA(8HnV ^.7` ިN[Jxf9-\[q}O"TZof+} %uɇmFWYTj|P/@9-0Z얗ѯ3 <ȵف(nOݺ\,ɤDZB20UWՎ)a\|-ZÄAEj7S,'8V} +{Kt"sMKAnh$"zcvh 1tv_Kn"7Q颚~ж%ZTN9"o;RY~=YC\QP"㈱ƭ= Lz]MŦ"zwp'hEnWY%r{Νj GǝU [.x#Y1'& +(Gd, ٢ KV6qWGbZImPRLIB&@њbPSL$aYjwխ]޼N3@zOeFW6m7O"Mh'F||b: ;{w|j]ݥ[w C02Y +JT{*GNMncSiF +sH[HOG#l] q%j؊,qha\`^ -wtqpJT^d@.xy[ ,bգ4J61lI$F- gj1{q71j^lee{vLT]ȏ-amq귷me; 2c~@؋70 +_6 zt)DXL+_zDHۦ^2ڀ8M>\\ c@z +aө?y|rʺBޱvn:`ePd4L[m!7~VJWڴp|.q23 4 P_iZi iwT*96]$ +#i)y:*ӝ`idȇfs' 'pBZ +8ow>]S74T MlM]d^kj ] /E_W]+-V%ۑ*y>GvHm70V)޲~3W r־w@5N*O[λ\,S]rGvkTO=J&<_USPX/ԣi nNP.kh }7kt H9 +>8YWyFG(nIf>5~zc#x 1(%{-H2 ~Oct4uRfgt4 g2 FOEi02 (Lڬ[9EԵiKOvnoL?(D9GܝvTu 5T 1M Pm)9vEPzIsӾ#El$) endstream endobj -1967 0 obj +2062 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1966 0 R +/Contents 2061 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1968 0 obj +2063 0 obj << /Filter /FlateDecode -/Length 3311 +/Length 3345 >> stream -x]َ}W$L d =OrZZ>EI,VK;9UdrzN^ }pV_|p _ҟ F:{ iW'<KEo*ŌV믟/bsU)z?!ϗ> -Ư? l Sk3 *r_k΂ubϔҙYCJPx/ELi,1wY)5~r;:~C4E;nYPN̢s)j 6A[ќKw 34 -1^bm~bR)OJťR9:JZ&>豗MR&s |Ͽ@/ԍyN!̘RcNcRF3J/8EfMI*E8cU~K4 $eu ,.I )hBOH -{ bfH+ )*$1ESΡzn-$ݎRIAup )*DHZa) Iѱ{A҃Am@Җ/ CX@3 IEТMXaˠK,>.OO%'e$#h Lߛ!l<ߎU!jח}EFxbi^DZԘI} 5&WH I R&԰ 5(fԡR2:A8/9zn-ގRAup 5*DH]a) ѱ{AꃶAm@/ CX@3(ˬ%SzAьWF_H RE+6^3AudzAS|Ք4JTf7 [Fz٭@t3J|jdq_KhϺ :):_KSVMڞ, -3eg^3Aޕ/p*XIyszOҰ ]4 euNT>J[ҌN>i@+B?tC%/ԉ͖L>O86JGB45܌@yjڳەѧ&2p}xo/br\nEpLQgkibG0Dj]dPcJJ2JQs>nK$CՈ]h~Ǹ`U97n{46O[oV/[[Nimj̤]Xq!Q%a ,?]$ q=q50WgAjsTV T׭PRG(BYM=|4ԍnk |)? | -ZJw[O^yy[F>j5x jdn!Q\ j MJg5}8HžYL^=,&{VRZ7zvCŒ :}IyY8:@yr4bY[2nv`~$հm~-[ly?r`hBeB:uߝ\[W,gOy!bhac: Wh! Pnͱ --P&B4zUh-|S qHjx cJހYX5("7Zjko5՚bUǫ թZBëW.Bb]z_ޙhi# -:7Tj.xTöJ3k5'PLe_X+a իRe`U͑w*u!TN -Z֍ty|f7:p$wvPj;|YY:*&u*u77Z%4{Uv*KQ d/tbSa,4a)TT֪x>@J jE*,+Xf㘺/PF -R -Vl*K]Iwf( وLЈS~@*"_8v1DRt - SdALq!fF!p M\"T-٢{- 41nwm]SHR^fnM͋ -DΫdXct+s)WMnh -ʙ5]A?}G6틛 ibP*aҿk<͔rMYxЬm͂4V1BxMۅnV -;(. $ymMnP \޿RPq=Z<#'νH8)n;m +x]ˎW^H LIb b=@.UH*5^x5]%t(qAy-Y}ƙ3MGl>L_@7 F:{iw'<KETw_?u-bs])zϷo>?J,Xg',4r5g|s$J=u&pаi#97|9=gK4wk.Ͽ9+KU=sL\qbϖ)Ηi.5HR0w7Wá+pn/Rd:GXJ_8)W:\T|A[!=(| +;ĆŌL"at +^x}/Af BW g&u9{=c@wq| ቑf2 vM4ُ*rmG":i(b"R„WB(Tg\rzKNGr|icY1^ 'ufOh:R i-8jYNDC0x(`xQiI[aoڣ;sZ8ChIbxZYiyHE0ijrɨ6"`_Ơ)睸2A%%M$͞Ζ{$a#PgS aK(#SWs~kVq eu.Boh۬f;p̲q=,Kme =ÓT=ZGeDgjpq(_mA&sV.@KG_jcwYWWg368~ߚ[qAz>MPq:=2MbxZÒwU-S^y UYrSRiw@wom쫠]rDcTAkǔ0. T19nȟuP32@2 dX^ DJ;zF%vʩJQPYF5d_xg=: S (4' (}\a^,+/Rp#mI0>F]I% K?i(3%kr 1* 6ʲ8_oKA} Dr2lws%vJW},hFc/6%Tw +&ڀdsV×=:(( *oZ!QIMˋo$ K#V`VбG0W0+LV*h6-%o^ai:{ +A+LV]yS@>FV+捖]q[ÊkPa95HĿ  +M4 'rj>КS_b,{UN2 +,EadN]ÊkPq@;Bm@q2P9Zl=:(( pѡ>ǰ:8q]m.10Qɔ;BӸ}ےR @zgs_dZK}vPYF]7v$j`ND`Nj@Pg: eֳ |ۼ!QI &ۚ,oHӐ g(6$OP {n2ѹA*xc 126hQQuw-)JMqj fjZh7_'$p|cΨwj:EV Ni[DŽ>jJьqj)#.j=RU)(w+!/MĪj\5_\ڕTj[mPɻlVI u`dg;:]qRpg8^g[J]ٖĤioܪBBRXL}m ¿j 㔭ɂQn؋'a]ٖG U13l5Ṏ ,d` ,/'F. 䴉[d>e :&y#v!خ]`Q~q Qtp.t[~)e҄еYJZ0{y"}}mݎ=iu6]wntmsm٘2TD9޵C1_sxcXZtmТ=×f^2 Hr*noP3HwR2&^wݎ δV{thiA̲Y67CJzҨ _2ԮE"z;j73O>K O(&i*}k"?1q%2p,`Q ˇ.O@`!&F3GP6DO VmdͽRu%˔!GMr~*WA7 3; Qkt5,o0_B&(LKh)HO.4?c}J~wJRkk) 8]}lML$[9< *LKSNO٤ ~>*'ѹ!ΣRWhv(ag˽@zxf^h"J3w9Rpl_>i;rLGP4Y]NӃwp̦ 3hU(AXOVMI"B!XY91}鷶UKW|x}3ˬWsߦlJgP?K endstream endobj -1969 0 obj +2064 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1968 0 R +/Contents 2063 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1970 0 obj +2065 0 obj << /Filter /FlateDecode -/Length 3647 +/Length 3508 >> stream -x]nS }>Hp9H5 ɪjV\C,ՒwwZ0ۉ3g8IO~H3c.9h>L.R)fRܝz?ys;BHɌ֛8ǯ~9,?@-_wkڢ`!,X>RI!5tڈ(ōrNbL` yͥ_O?/Og!Rj~~z;Gy}OI!ޢ!dVH"[CS$ +;1-d~OFˠ V3/L0B0Tu(-\ {)ޓ4O Y;_(%[Z|g?aaA~\+*4.̅e\eNGH$p2 -۶RIˤ5[v!!R)(è&R]J J <qT6qPHMK1(1;w~E\ iQ~E\pzE}K7;}' c3QzjJ8=*2`?lZ0F6aJڣJ m,q53^JPn4s-AxE[Hx%B44 3(1%(O.ǀx !ʠFVr [5cRY,<oZe~! *.()F -wmBΥS5C)#ەST&2Ӝ\,hkXD؍쎴XP Q^]#H+]Q7ExZw@tPDVI_wD^}ʁ݁ ~'c`'{9&K~c)vhI M 1ia ְoayu N8R%y -M-Y/1`1Q ʍbpύn%/K~=l['S]et4#q]*8(5DukQ.F;W;V.{f0/ߎjPXSA>us!KC.זι0V{}e); 6@26@ݏ"ki a.sH~rb"Q?ḄW~Qm墼2j}<û-7xylrƖD^5́r`FBYCF )b;Q'py;PiaޮRGv%ۡ؍kFsgn{vP. ʐ% VΐA2XɠGMyUėКsIoF/,]u iCо'3N0 3NڣfP MՊQ~E> kMʂS'aK[@}'anW&:O0Xnm,P%P-^o t_])b:znpx)pAhG=d+t#0N@ڱH[fQkɨ.*a MKUpTDʤup -1*jtCDq Wb_Ɖ ^zCϕCOrDy0uD -W[~T JXدT @:;V3ѯYo Bb* -|Nđt^{+4V"}Ѧ*ot~w#dYn"Dyϻ9DF&cɈ%Iw3~i+pT=O׀rg roz -7 IfÑ"sT4DbUZ- <$ 9]AK\z̊%,+TaW`ahˬK*s2BceS" 0yi-BՇb>P#uEeh ;zM!>StP_ѕ -Ò[=(6x=BOh"=ĊZ&΍Z&*-y&cOa1b9Lc&ig !uߧ%sn-D @t+rzrL>Ype1ߙ5M^09|QK.w-h_u2G(YK4LcJ!6QF߹!E`ޖMjrTg/Vh,t 77f%4_ten -/R$·~JSbŻlA樕q\Bqk! REץwp (bED~W4F8k _??OC2"Hb(p*7%7JOyz#AWQ~zN +>8 +r_k)ebϔ҅V*xG`0Ũӓ2ydJO|ß/J൶Rd͑w|wj6HH#k &g +P5RA t +Uɾ#qQwH!q님avJNxoIE~M Fr'Irsѳ}הN]u){+rI?M)єr><2=}q[E텎E#eP{ˏH1κÑ*C J۝q{q|#LVmcHkK)ҶtGjw` +nQ +*If!ɏ]7lgOs ٖ?˙lglJ?td0N]i `zϝ̶w4{ 0c! QlFC?Zф*A `bB\$&%lFǬbCD%NVub)wR JaCTX6"J>o)`W18GE*ЂU4w LT)t|1<S G/6 E27dbrﵘC;y~>|2K M@qh'oz Z5V@!9`om!v!EXH3(x.,5oBGEIL!<J[p`y֏l<I^.jkVa,EPdխe6gHQ*u&>elقglޠ^Aj˂bBlt2)߂Dlu腺H;u;NRNz}GXFc)Iɔ&yR-P1n\^5!b>5 +KYa#Fwtƞ{WDYؽ; += J̎R.0mQpr|$ooqjCL)=`h-|S[3~8fٵIs#"$XN3(nѲABzhBO>{bf>d+* u2_Z[ˇT!w6>9UX +!t^|-{|h-|%z:3:<=zG#Px?*YɰI{g|׉ߨhcgzb G0ow=$r|(^‹[8,)c6G0TtdO\ #@PVhЄ<Z<G2:'t<TGlG8Vm<s"ؽxA[x6_[xDK3?2qf3q 5v4.?U SWN[-l>-Ւ>w'LY8`4w3S rVaӭs_B˜õ0 9>Q:˖3"o 'tB&RKfƏύ\ljG bih˘/][XnԅEK;bP& = 6n&NꮻMr(U]7nǪbN&79h7k 7i~MGM~MdW},K+rE7J)$W׹P*dF.ErBUw4I} )&[RQ~$h ]!)FH!)|9N0ZS/1IB(U]7H +Ǫ bN$=h$k $m~IGI~Idɐ4UL)!R '8 ꡗ IA@RPVh(W =!)6H +!)~z^4z2@.ԭQ )~U#$Ŝ I[CRpn-tM!9$}9$=19$ų III E9xqALI>I9UG.l;)t -{0j$j!5hRH -K_N:$@m4'A13N RڥΕ_ +^[ TAjw 56H9RWX +Cjt^-{z-%~>3> +%S 7dՇRc&Ԙ^JJ# 5hMsўI &D #?{en-ݎRDAupڀ(*v+|HV޽)lc/t)D]ڲWl.Qc_87D5J=;a=ݗw$A&uAnъFCw*@6v+]P)ȇ^Q>YٔfLGG6cwel3lY$pTvgB,7LGym2XHo{$ƽ7_9\q|3dn`w/[O:W7g]Z帒Z!"rWP8~~?=O?=E7IBm-A/,8XC??\{ uMYMVӚYCAcͩ<1(BXT|fUQV~/{( 1\jB8CᄑF^uP&|ȴ} Os rJb endstream endobj -1971 0 obj +2066 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1970 0 R +/Contents 2065 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1972 0 obj +2067 0 obj << /Filter /FlateDecode -/Length 4116 +/Length 3291 >> stream -x]ɎW8:AHI$?ȬΨꙗKu0p+ETdHU"ˋISP~=_6F%(#5F˯??/! 1\Z8|t -u_G%|&B wgG|=`-os-Eq$J;u -muN0Ũ7u]( %Vje/~~~{QZ_5Ϳ/Ե4ؠv3%Cd#MR^n[QNA -,%ѐR+!jZ6HEW$W:J$-h6a1s\"_0ibD1ADXL09R %=c՗ȶ=d5!8 )yC/R!6VȨS]|O(?Zk uTuTI6 \C/2RDAY,k~Yl1,2EJhܢ0z]@a}ЅH8%(Q&7 z_r~6jאj$k8*{w7$!{8'` &\#eCL{DRՓ+1n i $ -@+ְ\ k1Xޢ,V& mw5wㆣ) WQ9Ҕ4 cSO6В}?VaP3)5> e陏Wtΐ Q4bH g)ݠ2$kzĄ7Ӆ86(SWf6 *۬|cHJ*?RN7K 7_}c^i[wȌμ|.ק{]ʀ,ŀ1jc,簄鄆†^Ra9 ƈH] )*߬㣠f'N >>.*Ձu#LXlĤ3$1zGNp wj",a\e$$mȍ ئ:2!)ExqK[΀`|«6n=¡!>E·浍Ag,n&GԂ\P{]XV`xhս 7 {̱"kv oH7 F/0 lϖ]<y/;aty6Hw֖mk0J/edY[a ׭lHֱe$SdX^wx$=[G*(-s*GU2FW}Vnsq-- -C[Yn6g6^[(n{ VQ7pjaVnPQ'sVn6)ޭu K5$u׻8ۡ[{C74s*p+ku%,u.'WS,bL3PI!(e$fB8 71ʴ,=;j(C=cq73nIvCsbf+/q:Fo/IdTTI,c`BEΟYnm&|EzQ9 ԑ2X;x(\CQkF=h gpB&`(b1S<u8GU NRAW㵦l' 6H v,\> w֡%rёü^pM>94N%؛8ڀcխǰwm&re su +.,tZ gO9 6B:)i y8tvZdž91p^? -N1s"@23K~زSO0`],ThǠθB@57mNi~.(YF\L)^ 'ƒ5׬d5ӥnQhNGƠvO˱ȭ3{p5ZGiܒ*HϬvE{ַrtEyV2EUE.' r[Ƃ\W(XQzgsy+nuK׼1`Sα{Oh32%w -J$qA#׬*K=&_VN3] B06N qZXcr8md㴨d$4M -y쓏*@e5.ˎj\ݣ-e-)Fk`|TQQXɦ{Fh볯=n8>B53K:y;dA'ޒ+}Ώk\KKӾ}wvc:ح[A=~vDݿ+,K_{\Kp=s(x@zfաE]JCf@v0n)z: - 9zGutg ҷޛ_`q! $I=Ymp iA:\>*lhp<{x@ZdtkE[ c!ݔ V{\DG)0 -oMEŖx.Bʰ`H/<"1JUC[k0ےo9vHZ+*cb8EN-@93evb(6SZX:di -wڪPPaoI{LhhզSUV{UV稌6}^肝ls)6k9Sw3uQM ELb}T,?Ņ .N B#Nq!g(@NV} -is#Ok$v}Qm.*4.7A"Tl~܋b$o=s(*N=/oPi HozysA;GIEnq{9x{Wu^e\>ktF&&~n`{հy+"jldC -đY!Gvg;L(¡B&zL@as/~?*./<|X,<,?Kfh,w':pl|D$EIfb~sn?VA /L|. - ojiDyP)*a0 o^SYyլoBeY߰XNJ +x]Ko$ ?`16 L`{{@(*=_I> "E#)*3Z0ˉ3g8}OlHoL_N1t4 Nx&N*ŌVO8wA1ǹ,̈`wO=Z^0g:C|B%sYt^_ 8u&pmFPx/7I9nҌ{aر)kR,CqqJGI4}97t薻鴨c'텠H4GT +B{"Y#U(=qq.cn'ARb?ePh +C>"-8\KeXkz&r*Z!2O.Y-O@rM2:dXH (VHd#S?74HvY_W.AD28T6x3qDh$yѕ!ZZ&PA؃h2=JfNe8T;} Do#ZE&LAr1).H7Nͨf *,$[t@7ۂ܄iDIa+Dqe50z8=-e"vEz8kcr8j:؅b,02( OJ)(,; +/w?7 (N~/Y]FSOIc^늰IE "lT#l̜TYi|x׆&nePR"ocp4h]FGs)As1 + Qv.24[RMBqe7D3*I +h*p&UbPeڠC k`,½+7b"[N[zt̂jc[vrxmRIϰ#sŀ#tpd->S9,7%=v_:,A4՘SS-@'x I mGƞ( +RISzF'Kf#(*.[a~WLEXg![f01B-;ɤvM8,B_&!'Eڣi#hr6 +55θ ^yYḒœH :Fyט~TY*^*IY<^/\@1C 2)Izm~ՖuRVTZ vUPgU`=^dLN$k֓Fj5dB-;w*1- yyy8tdPfR-Z\ -;w(0'c|r#> r8'z812>TY(vyytM&iMr8nL//9Tf!8nZ޲sNPj^WTH/9U8UcdƣjP&Y #$-;w"%1EJpV c]$ N$>mTf!Yu | 1% 3谅 +cڰaˠf:pVKcibz=Ǭdokߒ_'XG:%-p\9 ց5sYգKtm@'Kr")IFó2<;J?XEQr<riJ2ym.&5I_$t궼u6_Le3/=yS-}*_?}-VlDvY޳t"ˠ\59N_q.sg/׹"$VkI\xkh}s^_n?1kW{7'+}pH*@֊Mxc@zQ@z3މ26oCdRhCޥgKG]+GiC9`E9sa a*,JÂwZxidN* + b+ [ +ھ\ba"CjbuRxwa)Q28iQ2H'Jn%%ΊaA2Q2PksR;<;*z7гREȧmȭX##-p0R.ս[L'rKo P(؃|jְ1mhf.wЪG!Rԩ'$ )Zʶ6R;`* r8f +խT@2}^G +5 ъ))3f`-эtg G)|C&Fw-Ћ\_=̬"c=VJ,6N@G,ݽXZ.VU*7Ly kSʴVzZ_ynI+>YYZ3sS[ Fe^&陷6F=ovv{2"tIT>En6 ONs/?ءm=b;TӇtCz:+b,:pI*vt_ ZZFDX-(GIuږ32k2qf ?4JFU}b2.Եr/AyFx'kvyuKv٩}cg>-W=:ù_Gb6Fգ[iચH/eSWG:Hbn@Nn?_E8d'Ex&MC9{:Fw֎,ǧuQS-ʇ~ڙc"V3`mnL*&W(=ȫu2M L2_ᘡ%2A@A>f $S4uu1\C-^V +AzV [z,ǬxЎ@mwhe%C++Mpάay8R97tuo%=K/ ú cֺ +_Az2W'ɵlװTtٖۓە;gA,u2/D b"0nڐ%0TKW;J^?o{\_oҤߟ6L;C:?9>N"~]/ALZ"+XYLjH|vsL/wag[A׉x4*.`FANFn!ǘ;C %(fbzc endstream endobj -1973 0 obj +2068 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1972 0 R +/Contents 2067 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1974 0 obj +2069 0 obj << /Filter /FlateDecode -/Length 1191 +/Length 3314 >> stream -xXn6 +ՈER ih>v2@HGftt52W?.܋arħݱOGC`%X$;y<ENm~uk[Ib49d*Ac=>~\Sㇿ[(T-rҡ W~nlf=UI )$-Am$@J|7t ~zn-|mw2Bw']ثe`CDCQe=u/#2yZ%q1q\o`B2:X98v9Nڎn{<(n#PP4k:7g!% 8eOq$\9P~Q'> Tћ_A7|޲UW*s@nxSy/g)-X`5'~>~*vj -j]ޒ5# F7 /OOgm:G'J'$[kd{3q@?L=hzwsgi-{|FO2fh)n0P;mnIJ`7l{&.zx~CpD[ Lڠu/欧E@Ttiyt*0i&\w*(Vntlu^:`u;feULݨlnK`m-?}HaNe7OtypƄᒸl{9@f(/d~>J -9ly\3 aWgz]'4%n;>;tӎy6[ nwY_6c?׫,-drۧn0Nc@Y:a)SQ,XmSo?u]f?G* -G__|02*wX߇Ӷ&hԉqx^SZ}\<ֽP{6cGd(dt ͎x*xUSq@0,{u꿕cK\i@yv] +x]KWK $ 8!,0ix"3IFZ9aBP! +B)_$I韧}$ZX] +uNrI y忧4ӽ(8oWP񑷱":~ݜoJygyYUI$mz?$ 1 %FjeΟ=㧿o?im_Xϟ?4(@*%Xt0\-R/c&1|5 >MtʃY]cŠ|/slKIO<ժbʺlX1f n6LJ)ab:Th C<%s~gSw12x8r"+"ȉhsd;Ԓ8eVT2MFȠU(siMSښ(oe +A^IiQ׵_w40u/#W/.fBREPЫ;˰y:E@s1Qh7($u"2tVFtyb"ᢌ5nPUx2O[ՂV}~u' ๓c/ކ}5~DfB1^ X)RqdE>paAV~\"ActKÐd'kXwF/Fh6h1"+&Ma)tGxgIfc;1:-[! +iI|Ye5iT嬆am7؊eGZAxxl )@zIiL6Ocax&[p:8v#38a"w5s@RG"wr#b?9ӕ1Ev<[;?@zazFMK= >ĸc!gtODZsc98XDLB)C" O9kR'oE0)n)qGaQ*;P#%^qp>{Kt-^QiK+a)経|taƐftxIFQtiԌu%y~{5(:e(|(C`+co:6g֧-c:MoB8*̍eK;AGV3p 4 +oMr+0DTބ֖&楓J%{yY%~WxG'|y VyE7 PQ .|e` /7hwQ.ӂԣS҆ݫKQnNΫ*y4&+l|U΍ +[I.~-)E(7t-9ݱVe0VS^i {B:l2ćgU:B^cMr,޼Q@zNu +n}KLŶc} a= +  + ),-VרkZt)GR +#JU}935 򹐝A ܛbSU ~^3QCr*Z/ؓSz||Ƃ4Ug<絞*.k|.EVVcl;u&23 +F ʥ}W5ܔVErnM(_FD@Ę+,9'o$K(Z"PB/"p=; iTBv=Y^:"n~snjoQxT́ʎ{(!1ckX7b0D`%1Gº3ruX"J#,`M%: ؕ9][GAF5vˍSnJܮv \[zÀsݨM6S96&Z=~+˝ėڮs$me?e?e?t^e?m˃bo*9vp(=}s{;Jy +JFIRskwdmY¼c+*̶̀Dv=UgCĺ\3&Ɍ- m 9ZعTf`9ӵ ý;!cnk, a6Tڀ:{/oP=}&ʴ,ƪ]dYYCdYY; Ay/U=URnꣷP{U "jBDZ eSaT1cWoj:g1O1) l~/Ŭ.U[i6g3[,fG;M&)f(<sRٱ,L=(+z~FΗ:bku/7[nޮָջ]Q.tM +mcl1S;ICvHxL bh8US:4iR}~cWB8\ADym_"z ўZ#RZ#LZ#vZ#ʶGAj 9ݵFֈ* JٱƞеS:j~֥SŞYK@f>AMOqp`U:U_Kkpo ;TA5NWmc{v2 ނؾi%pc+JgģWuj c_@آ + +C oA㿫*.`xu Q=r/7*!.̭e QZK| +$|Q߮!-Et g: Ӳe(֝R8Q*'N7^Hfu.T*24tM.ɬ&m=cݭ,k["oy"҉vmEՊ3ƥ#5 +|;Xu+]kY)Yהe +(@$R /ȡv *}N+u0_5NRv?hJlT)-4tM :9xEh0G_}CeJb>u|f>y;REEFAe3v]s}9[fk\- ѱtoeS-{>:a|d)Sf8'?+r@T;Jnl>HpTg& [tgk㇡, %O2C9zeg( endstream endobj -1975 0 obj +2070 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1974 0 R +/Contents 2069 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1976 0 obj +2071 0 obj << /Filter /FlateDecode -/Length 3972 +/Length 4025 >> stream -x][$~_φȺ_`H 6 a;<%!G}J%t]tIąwZ0rgp(?ϗ' F:{ i'<KbF+O?>)bsE)z积_㗟Q@S"fB%ێbߡV1PrјTգQ*;"Cd[L\PNr*rN S=7gYRpPpQ<*z@b925㤁[!Qv2,6 'U#O ǴCG{6xD1j#̼eռxoe__[j2(_z} :͒A&T>6hbO'MdxVM (w6Puhط+؀Ğ(M̭kу<P ݦJ{:41w:®Þ@K3%?8&,%ZDOsx=t#i>8,+NJzh1&O1p 0:k] EDz`1sXL{ZX|-,.HRb~8q6pf@8Nb38PIH:Df)EC+hYUD1,6XLӡ*eQ.XL$4a,&Ưp"nbm+uXLA;,Ȫ,&`bͰim`=#֟bX:cnbqQDBqj3 )J˄*}{b:B<*@ѱud6 UZ -]jIiXK_=f&EL3umF \I;hv[D \7f5O?og6@GVbo‡%0=<-|j_ɀHeޚۓ,Kb,Ks]`D(m-(Bm\~|W=T|gKT:jˤ }U薎THǢhAi'*O.a-8&'s -^~` -sfg5V]ccT~T4D+4,L)wɎQf=Pd0%{jܢeMդD~eJϜq,b_hKj[㕔N - }!-y\Ύ3@jkﮎ1Ui* [H Eu  ajyle{hi8jO%-v(3q5T٨ ˸BUw"(ˎzJq*J*k -73| E5<eϼE- j+ 5z Km4: ?ωV3_@:Lk'zi9/jq>aJKVn|hk4ZjgZzUey|o]ZcMk,#1y%޶ p0ОJ̣f;swQ~8/:5}ɱ>;{gz69:^if1 ZJa~Ю݋[5cDi y R &FC*!dhA hHYMUE |~o{͡{ce$<:H}o~o>q ƘZY[@  ܣ/g DKB,s|4.D'b Ǝm,qUFAAh,3C=j)>o]r*̈ +x]ێ#}~p af'@nZݒN 4#uaX]N~~h1oO?"EpO~)oO_L!9)YacT1B) 12~dD2pRJkTOSǗ^A&R0,+,4|6R$O=QSZ u*O.F^2Q ++'Jʞ>շ^k+O>^5ͬ柧O߽d0KIR]2*ʧ#RFFz3/fg;J6}o4|[}4q` հ6bp&:|Ƈ-ȝ"⊝Al<sq2k9 C,n(X41=v.Tf]JN!̚@eGr}Y9ydliLli0.GVNHkh ;I/eL FS R=X̯̋ф,9W" kdRЎ3#Bt쮜"Jﳳuˑ9{!*X.`oZg.llGn[Ɨ>=Nk2@Nn>rtuY A;e }f _Grd2R \U!(=pۂdxWO>*+gM}H--06/gP|~4Oa(pEJ+qAYN0 X ND) sdNWr#wD-k43Ġ]/p"$vp9;H;TYZ^rQ)ژњP#5PqUY lRxQ:B̛e01) R UG] +DQi|ȑ^wDAڢZ2x-+K|­k +P` , V$3rRj.TӶ:Vi~eڋi妞n 751_vKQ"LZgzl*%m'tm9R̯. A^eS,뤷@=wfhBzr0Ps +TwBE̘@/v12Q"C"X}YZTɗZ25"cZN&$o$A2Nb/YbT7pRg?keYe,(z +eOY\6jV 8z8] BlJ|VmC9/B9y4nn|ڠFz-q;*Or[dY Km5,VZQm*(!/tkn:_輎/1A˞}.>ɸnV_,yS% MѪ""ťCbB&JU*i] ,@]LbX) +W;mAeo5;(3`, 7něěͷ &ǸxsLo#o0: 8]sw),:f,:P.h]0tgaic|>oTq% mpa<ȕ*__}#&]WIb/ha.㪳ƺV6X1HEj7(lyYV?*| V}OYmWH![|l; +$ 1|oAZ-=[!oOɖ&B'm%=k;./]}H3UdQbamY+&T;",Rvz(H/R,nŭĠ6.䖒9zJֹA9Mcal5u`cTw Wb؞rg0 guSuP=FwUgDΏ_=ɟ-~~xVwZE_~E[KDb(g}Ŋ[5-!][,&B"J +VqՉ[kZӗ μbElǤKMn系</Xү$Jos{ )N/=5pA/XSkAwH3 4GO0 ϖ{0r۪  5ES6+_', Fo(^KAXGWtGDM0ZǮr bt(p)ujQ Fweҋwnw-Yy]Pg3| U;zϪE_HA]ݨZT_bN]*W N Q dQ@` 4HɮHC EN dJ[ao9$w N|%3YuwJ:6R;:Du=DaC;=CYӳVm +8!VoGkrf#uc ABbv +A:DKN:'Wl,b!zߒ ?iP9{ܹUm+9\ nÂ+m,bg\Brv9KS> R(Ep` &$a:vgqw07ox$+3"`&qNκbc&K4ɪp|c,.s{[2R%^'Y!g} r6#pG5`2u"#u]VcY֠ J2)0Z˵npgy-9|n8;ًZށIJHe?6,6coV9 kWca Vat:>j0*΁2YʼPDTq=|i]MGyq0Fd)PڄSˮX3G`0#@9GG|XSϱ,*h4D/!c|*G)B Q6m1WJBzizy3|O?~ٜn}q|ot lp.S?/zn=%Qw OQS%yk֯xk_83-'FUYnz}>2)01( W߾zQH0̜)z ߄x9)bG^H endstream endobj -1977 0 obj +2072 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1976 0 R +/Contents 2071 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1978 0 obj +2073 0 obj << /Filter /FlateDecode -/Length 3231 +/Length 2866 >> stream -xˎ"s,I &An6lH$ʒ%QvI,g/ wxzzʓɗ|z^HƻsD!@gAhcGkڟr?tVy}gcAtpNrJu{H)8O<;Sq*ۡ+#AbO'BU@mϟ~=O~s˘1<*dt{NFwe<>/]Kr=//st#ioI?\> XH0*mXak5 ggb!qn xq)ݍnae4p -kx, Z&g<c27S$!zp|k oj%BCyly,*lX^Zx,SAbj$z6'Əbys(Dńb^=Pk n|rQGH2&˧G-L6!,hC -gziDiX&|l*C%S1ڍ* yX5ϐ]d.sB55MDؔ9Ԑb;(gt32hrJ!g,`6 R;t -XSI)uV&Cp$QbFspL y_5*R:1|@#{T[Rك n ^ v5]Wwe4,.p"hrGE,ƍ=z_0Tv Ԓoq1{H($Y3jT-&uipΎ Q{t'%wΞix0mM=\7$iXa,5 -dw!{K3ln S?V?P 4S='1N%VV x -)n 8V<> 1b#ǵ̑SG3#̱Ry.ͤN4d)6S\s=(I;sm|v-K^@*J^z]N5,Yͯ9O qnd#g9cG*-hnCV8hrܑ~+6֊ꢤF pnJZt9mSA(aB9Rg?"ϬS6WƶRUɤtn\!۴NA :RLG.X%%Xd\Zד{a.(L=DF -qT* Gej9U.sP$EL8{!G0|7\r:L6o{u%ţ\N>Uү P0kAs7fuvH<(? -)wE5ɈVňϩsL-+65h=MZ` MG+ bpoɒ7ɷ8*K%_~lV~U QiP=Ic(Ry`s}k~u`wIAN؉%K\VĿsڟ z9R(|a*e3@]ps)[Sb D!Ndҩ ìJ<\ ɚc mtƐ3&*f20D/?t9H X2aG D"Y' +x\IW"`0@28 䠧^XȯjXhjXھ"pAŘE4+wL>B׋ *$g&T#t 6U?.߇dU:p0F9H>|\_.?@/>);—K n :5^o7y>2eڱN=Vօ+&eZ2Κ+׌ov_Vi۽xB*"(9#~v.XӉf{ͼV xGc:jLԏ/08D|\AQ/~+1_/zGy:cI dvumܠ3tt=soMnθRbԾ ڒ%t<||!uxFu6pL@1_.(C/1=+{hik?v]{~/N>|#{q}J3agf 9UӃ.ȝ|^:u *d(XO=0тO-8DJbO +RQmOA!}`8c;31͜RRatc3D,=l肩W/ŗ8MSb1FK$\,%^~bqb>>h]WǸ3d>iq=1q +\VElJۍ.֍XEo({Gcrus kZb\=O\8/l"w{?Hnq{_Fw-Oq YD'!Ui(ʻ)@ mL!aj%}&~sÁ,{(RQ0Y\J5a8 wXZȩSֶ#5B67yAgmFL Ծ13rʣ>]yuXoB$ +[hs4@60R&Ř/Uqhs),P@)ں:UJUR᳦R>xl+L)'㐫la&#-`ZnBY&jRpGr| hl0!"4!O~ݛ!'_o MtWa.L !鴒>Ɍ+J6]f)50(Ċ(FXg[HIl"j7ፌ>y +jaFF y: Ht9Ed EgEA7b7gG|>!mQ;TN` Ն?![XΧe[H$<@win< +iTv{&l rqhOjtA88G +FVcgvx;V(-P+g] _GgXw-\!.ݘB" d-.(#ԔXث)OsA33`;ґ-VqYH_4V}*]W}kqY*2yշV,4m.lԒTVYdyN./Vg/RRu~*W< Sh竺iNgHN$CS4e'cΛPR#3aϮ=ަC7@`&2וscAC"mx»W3#p!Ϟ0 endstream endobj -1979 0 obj +2074 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1978 0 R +/Contents 2073 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1980 0 obj +2075 0 obj << /Filter /FlateDecode -/Length 3385 +/Length 3973 >> stream -xˎb  Y`L={ EZIIKCq-we8K^>8ϗ_NOR8#_#Wz|?.9h -EDa4t_y)~NJ@)a Xop?|<;?l) - ->rk)y) ଡev4ޫf9AN/ Nx-_N?/ۏgPY<y?,{_"*Idȸk5ʼnX(e$MB[Åw"S`h.J! -Ց T*j* @8 ^j؊ڈd(>Hr d!SB0"=Q~-h$(Ii$)TkFg7z\HS.zZ=ypͷNdjo$ rJXP^Q&5-KP|nT`@/*J`yFR< gC!\R|+Oj`%O}ZىLb?L\Pa9pc= -V3Wo% #B)["lB[WZbS~uޯxM?kT6$q ч3LW=5^hZZ3m3Y$|$()ؐ9+@`K밎_2*TH{<e]RjLtF waaEz@;JTHcTKQRfwVR$]WXm74 |^cX'kTZ/}V[7 {20Xv ԥBj|eyC=Ɩ^&bAF5܆Lpԭ!S -@:ŃSI'ub|ݮ$Ru%m]хbZ}fΓD[/ zFpw 較&(swGP)J̌}\ݖ*gTBq)|Rj%KUv-U -{PLRm" 3BGK/HRb ޙ -HD)L*nkdվiG@.wYWMy06?gGA8cJUWE- -\ W]ɌR.S rK]3ln쫫r2a3V^uUm]ppׅ @'fŸk19lrK}}-[jAK̺>[P[U]I4X vlB -=Ok2!I|ID,c#<3OlH -DX+`1L]т̾uVd /n Sv P, $MQ7Rؕ* -CN:.<̕Ѱ*ܭls9% VEƤ;qc`;`kjVLum)s ©Bcҫ9MB(|CdڭP7PA\I%:8*?aODo -l8fӘ^jAfNĆîpx&f82"xGcFN!:GX @ O&\ΨJe/ l[8WGۜU97KdžMak,'cxN4R1YD@#H(K'p?r'!>`1$[tkzjr9%Hy#> Q<p)p b3e{V~Ķ" -!}f Ƕ*_|;1=d m! KoBԧvlNux5Y)gJ2Зi1L.*.;iKuruC̄kǛ*cwLvf&9APYRosids&LYQ}۞(LpfYWoOI rA3#5!ui,dKZ{؂ uQ2!:#Sĕң{7l9DJv;/ -IƧw7l|ˤkh؁]U)0.Tng Q {5s9MCiW[=\. \չWX1y_*ӹn+yy4KGr mvQ ,+ڝ-E:#!>c1gSCLvzء‗׻5?Lz6nvHnnvP I -l4;ʤa)r3ϊ\!+Ĩ;.o>FJ?yȊK˾RX)cu˲҃Rq0Xns R<ݖw_ێL>H퀘lZ&F.V?1?Xd>zF -8E-\ϗY8^5o]m pMjU? WeS\OduU̦k/AH`F)yx6T}jYܹ{[~+AX| vxݍhad7y{Ks--yΫi$ӟsLQ"&fHWp t@ف2Z2xKi26s#ֲݘ4AB XylF%1 5o/'Q:0Ou/.167"D +x][$~_φȺ_`H 6 a;<%!G}J%;t]tIą`gӗ'Μ/]Q|I/O1t4 .Nx& +*ŌV˯~|SλR2#&^!.ן~_~D +oa4*Ģ2*.JA +DHÜM̺dtL] f( +snoe,P[(/y/?}s!\ߞsga1#4Vgss;.˚嚋Q)Ww{!FlvŹ?~vI5D3)c +L!񘛜)q,to)ȕ5N;|}o?r(;TI5!ЗE1PuCw>PQ 4p\_lAo Yϙ;AB'?K3p + ~pN|>UxWx {,06k)u0|ؕBn沐I0m A {+< 귵p2Z/"Žc"~f &H)wI8֡.]>ǐE%n)ϥIJ?e|X*ǎeG:?QeoTmL:x$C}/ľCb3~ϡ*䂣1p9-;*eƴKUT2pS+|+vՔ1@ͪEypրT4?e +DkXL8i VbEHb2Ǡ,1֏%bDgKs3p\I2ZjcJRe7 F?DŞ$MܮJkkI,Z2%ODIC'O㱩}ɣ8 D#*S<'Hѕ"wcq hOJy,#=41um1|L2B@ "d%Ab4W I +lj$d?U&BQ(X=40p# J{mLt%WJ{PUVp `(2A#L4%[[c, I35Lu/g +9ˊJbhTX!5 z iVs}8y-*ޱBl}Yh[wcO: } iYI pk,b]E\;rUgʣ!|gFuF,p,4 Rkg/}%x<< 6ɃUFihÌ*3>i蹐y*TE;uWco%fG<֟cx:cnqQDBaR.'L6 +0a$'1eEV1IP C-1Ebp Rؽ{cB,&[bZcqOSZe ^J,3ζfX0v >Il* RW !b;uhŗGlbfX,6pwd1TTOb1MLs,hbbz`1 7(bHj3G܍[*^LA3^\U*a<魉:, U``HW,֟bX:cnbqQM,nƒ$a1"j(Ŧi:4T=#֟bX:cnbqQM,x%i>hYUD1,XLӡ; LxgwD`1XL;ZX|M,.H5ΣPMWx!7%^ipBObR][G؛gP`(:nfX$*~XKS R?41ͱuk끵,ڢifո+ix"x{D1ƌi +s]ZM~DWEo\ X|]5]]-oӜmP,|S{zO- G ᩤŵXe&41z~"qSN UqbqEO)NE AYeR!f=왷Dmt@wVa@9J{v(SuD^V; 4ZE4.ާ0Ls)ʍ-r FK ^KO,K+TP|ih{Z@[;<۶8Syqg.JُGU貈Cku k+6 m=ڗuh\s91ޜW"9Ǜsoª;9we7yڄ<7p!>L^9O^陳-*ac'BN4x;a!pViUݘrJfe*&^]X,/_7iYKED\fKh5:kxhec, z@9֫H; %3"bE6b kuAsiUr:ES[:9ggL/&g_kxޢ /;ZX ?B)ڵ{qw t(wc#!!3_jD܀hQ4l9B 9h )'O~n,!KXS<:aL[C2zu6=3=j hpmAǸ ^-̽;P{mXT;}uZ +]j ^n}P8%tUmM- +!ephyc3~*z  ZZ~jSg|N?;Ds^pz s (o雟?~\I^d0ܠ= +Ol{֐L@-O?7kME܅7~#䆅B8F+x ur Y(g{R| '9=X)TL? endstream endobj -1981 0 obj +2076 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1980 0 R +/Contents 2075 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1982 0 obj +2077 0 obj << /Filter /FlateDecode -/Length 3581 +/Length 3233 >> stream -x]IWǝ@:a9Us=@%QW}hW 6^Jȷ D;sr~[+&?'텏VywF(ij ?|?tZx)}g"MW9=~ yԃʏ9:+-u|FvBygyX卥$-mj2￞(3Hadt HE?~㙔N)#__NĒ-}`24C'AVAJI'~^_O̗9|4J)Q{;cU` yODœGG~oiMMzf)`^*I 5QhWIfKV0xz|mmOijAJ}]>*Vv>{+cvH6qDF.VCV }=vDa5yI*#J61َTux8و?HUvsW -J0'´RnK`1+'tM6Y!Ӡ}+XxV.7Wso7EtS !kCY - b*UD5 {B"HGN6VBmцyouHh(#Z-@xf?ml)v=Zmz!k檇],넏*"C0I|ئ%sVJ)-rmd"XcXU DɎuF -约UsWrhMcWc6-J -uUn>(X;v={0N%{BW/BrPQIK;*\a3N&D%r&թz'Վ:l2XYd0 ~3 T.66!βQQLގlF%qSVjzqR`ay}Ni Pওg?A^2ɰ申Fcتh{I14 7;ү)* ̦t֖*p4ÈǤ`roN>r^Tf-^iqu27Ty{PYU+~.lJ8XTZ%JaqXЬCxX"Ǽҫ»,: ˹2ch4*ٲ#{TJ鳝եq9<!okcL}ូ?:5CH`8yܝ8zg{Õ s2&}9neJUeTTe7nO3jY7;7p@XJ^UŒH0X5c zyիZvG ^9Hjn|.=öֈ4z Kk 92;W3$KbWI‡HUq;54lRtG <[bƤӎ *Kc>]V|b_f8Dw=P`j띲"O: Ry+3^+[ueh$.D7DreX+Dm>cx6[> ->t;[CINaCj~ -ot64Fmh+ʳ!'iGS3/db`caȪZ2CL/&ͽr,&g״Vh=Jc^P^X"BȻjGyT4.T }n0%ϭlղΎJGt?G F]&6? oC -fSqt@sӅ -CBJKJe GeC7oג7ttWKg>;ve "*i{>1|'2S^zg†bl7oZێ,(UK$ǣOvG:)m<Zg` -C r ɉp`9!l2'[ 7uJ?:~ì\t6x>,F͞UNw!6oab$7bnUOm%[k?6ȇfaoCV -0Lm-%L[MT -ﭼp;ay0y Spm&o2n-uUD 8|N`=R|R0;V`3Px+RrdE^ ؑmӍ 9_; ﳳ2R࣓#=k?ӍskUjؽU< 62;RP^RD OB:C݀B+*Ǧɼ=.؞ Tj7>eK)c ezZUrQIz}Ox͏uCoKonvdd'ly{sSӟ/䛥C>M>$WR͟§@P֎8^>qI -kcu5)l`)s=\IM c^ R?,Kup +xˎܸ_?.0|8A=cϞ67HQRkJg ăv?$X5BӷV4gL׷G2ޝ#* B<{ +@?Z?O9}k? ΀sPO/ wG^OyyݘŽKgUt;P]5 ;d?~>AΠhjx釟? Fyg ӿ>0gmϟ?~|$J32*ӽ,5.{;8;~P-cc𨌓a"ӱ9ݝt-]c;/э4nÂ%}wqX|dbb!"Faa9< +,,j3Cx6Yǥt7͖-Ӡ5+|Rd0hz>{ q NY_M1%$q Q_1r`ų{j1LFM`f?r ]hϡxF;sCqw/-IE;|%*nkvsiFmJ8KHKsL:̜m3zE<;16w>R"$,izGb,4.scB:;/g3 XH؂2p@OQF6gk") J?5ĝ2mpYɄ\%*75hZ8%(0!G\1&ƘzݎVO~,qz9m5`8m |mH3NS #âM {,J1 _Z6B5)AmZ FǶxͲAqq/|2۰`] )p饥ce YLL8`k7~iЫ\Gh'ybfP*'"Q/IJJ 5Eԅ#42#ŞcZ&h5*Q4ԉ1Ф4epfJSZ+WdqD<,2d1n4}ACO}0䠖|CB%J!]V>xh1;H#tv$E*ߓdKt>)us7vMÃa,hrR$Hc1P !CXf+t[Ț0cksF3CXZqÃ]!,j6Tn +Kj__U?^nrR9S9Ͼ!po!JЈXy$tQ7aɺ':ƙZeSV't֪oEi+hłc A}ƥ1zfS VyR]VjV CE鰯]Ϟ|\-ҲqurX6(K%9%xc8"]gZXfֳ8.J=B 5@F3-F1K@+c|!aϻB+ϲσ"w@ *qmk ss8iE3,(q͟c1k<96>:JXY%/.UXwWoۧ87vrܱ#sJuD!EH+Qu~49Psna{mEuQRf#lJdx7 +\%-R:vD  0Cώ|lgV)R+c[^)^dR:v[r7.Jm~')&#w +qXJ8n>iIP$#lp"rNd}OF45'WX-wrnAIX vU!<[p{j|Jw or<]C;U:_U/N=y︭PUC*bnܣcЩQCt*gr+S-&bQqlcX6p# }TtAN#3:=8EFuӹ\[䋣RSPjfM.K bSӲl֟S*<1-ζ)–MBwm]ma\ht9 /TqU'0XWRƈcVznkC䫺ku U] ]St2.I=0YVߧ"N#8 Eޣhڲym5}*i9u"_E&z=#w}.9TVeZ[bQN>Uү P6ǻA񻓘;٘ +`û "1Acj&. "1!~ڐIBh|"&87Ѽ7sĝ>}wQYhUqQ:Բ" +lSc̎V]!ܣ*ѤƀM0{Д}}Ȑ-V, \3|T,ۿU'f=Tx?W0{u^k&;KcfKB#HWģ#cY$ 'pS.l _@:t\atzQHF7t6H0RJB镏#&9CzT >} 97zXcɄ}&lo|T'SfYR endstream endobj -1983 0 obj +2078 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1982 0 R +/Contents 2077 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1984 0 obj +2079 0 obj << /Filter /FlateDecode -/Length 3369 +/Length 3386 >> stream -x]ێ}WeNCd'yI0xix@nZ-O7 dh$օu9,i:j?ɑJ)~=|9h_?ď/UpN(c;ku<1[)QrH_?<_{xaB'R,虯,l\k2D1xDL>%34Mg騒ӆ㯇~#1N?g֮yJQLtAp' swN#db\p)qY9MdDu4>*Zҳ\,7ȧ-ڽ*5As-mڄ`9O)+0 9ϲrŠ4I >bS0tMpl%"st[ı[g`qOP9d]NZ˱y|=?òchʬ{psl>ep}I7>x ytɢ.kβ=~l}FM<8M+\vʨ꼶3msDv "'=s5HdvX&fW!Q \d!fY(ixr3#'&KqR|6+GK֛\t?\Lap93F2vJc@-KNt^>@}z;>P s!d֛Ũ+|U惖##*U#&D7wX_!KÂi4x2o@fʏ 7  &(c. p*NiNWX1Bj]nK : (oڹ!Xbȯ-w_c +\SN"C,tŏZYKMa>P5ck>yuVyHV m5l =7"J>2p*#rT^&y2D|K^Q:#'æ1ѽ^Nbz!?\^T08qg8g,hfQ10qs\#X$yKT8X;*tmV'@z}OH1ם<֨iNfCܓYL7p&N kc:re$Ɏ3 ާ<=שHvN٘"\MM5|1<,݆\e55ù'wU=8&Q0LN{bv}dԴ'v;gwQVm,'mꮱ\๺,%7BoSiq!%a:ҳB˜7M -vVtpceA\LN8ݳp\U7E AX{ϡc]S/Wb߶w#ZWAzx@Y M, MR[9s:p 'aWr m'̋ -YRF&6pQ:s2]> r!\#RL \7)4I$X"qLN!G<Ƚ{ &WAYcҮf\U-GY[*uX䪅5x./%@p)y@qmm\usY+9T-l긭oΑ(6{lpIe^:#^<(J9si))f7^zۗD8 ٧]P\M= 6a/jm>Jﮇo*s6g~jS]95~S)b0<(WbU,(G/e"xa;nmaP³)vQ dϬyqZ z :v +xˎb  Y`L={ EZIIKC-we8K^>8ϗ_NOR8#_y+= rރg^H"0QN<? +' 07 +8ǟ_> +B]A=P)Kc!F)+Oj`%O}ZىLb?L\Pa9pc= +V3Wo% #B)["lB[WZbS~uޯxM?kT6$q ч\ך{/4-˙,[v\]V`l[@RfI HBuXί͌jGv* +u$=p2.tV&m`΄h"@y%*~$>URT9>WC*ZT^6J &Ak u𙜪=P_Z{0aOpTb_/,oHzS;Du1HR1ox!ukA锷PhvN.b}ea҉;gh1m+n+}I[WFtaXVKyQ%]=C:ɥa2]&=T3uW +DU(6P\ +TZIR]bKj*T,}ۣH Б6Dҥ XpawB,EQ8ۚ112Yob]USf5ϙvP`&A/)/@rX-ozUQK?8`UWE2 zRWe*\0=LX:ǃՆW]c[d&uaO\bU#J[NJu-ybvĘ\Bb6T5\+ɤ>?S"ɡV)RVaUMD +RD$;n +֗Rt1d1A2gnzHfƅ[$LYO*Ɯ K=5iV'7T;DOc#|ڣ 2ameƑmpöfKXLj՞ Y\;G +-+J~\3*llUظ"sY.6QtaϟIaUci5̐G¹S{4DQ&a)A2,&ު%u_X ei'Tz|Ea53(+` |aګ|!}m=֟3*_"Z:)_1Qsq -e1oL-R0@n_ j%ZP|VU}'&-jwD +!V7[$ByBϓ"EڢLHh4_g!̓m9[;J)Xa yGWc owz*ã!E]<6CISf.uͣv夊Po se4 +w+}nexy} Uѯ1Npܘ1U2dīe[*38B܂OrZ9A@ E!hXH鐿3+FcpA;Jc,2/V4[Ee-WX`\p*jN(Yv< ?Ti;wҠfάʏxS:koF25N*4Z,\GgpS>ƄQ*y"xpÓ 3{Kս6gұy)p{a%ˉ.<&Ta-xuc36s#t9$GN~6L=&?d+y4Q^Mu5Ҳ)Ϛ{9!Jǃ] 39na;[lסl_XʏVD>1Vg>ֺl88$atrMCԮqO<+Ai({dJPzt-ܘZ2.16|EC!8&͟bt`t-;+0~5l!`~fwVr>Iy(x+%:W ++&@}:W-b%<&6yIH-.J0e]Ȑ]g;gL<,xjN;Tz9應R/m.j!I͔֕fB44;ZnY <39D`Euyg|Hv~cG3\>Yqi7^ ++tsqYvYzXJ\:NK-}2QJ_K`۱Ir]UȥS2xr*'?G<<} GϨBWAǶ(E2kFUK<~fDPS ~> +endobj +2081 0 obj +<< +/Filter /FlateDecode +/Length 3582 +>> +stream +x]Y~ś`$ L &ާ 0("uD{XU4%?~G_0$BޙJ]1'~~?i/|ʻs4„@!=A$/h-?N9}K?)%,ElϧH=0T~Y(8o(u7囵l.wUXJ҆&2;FF0HzTd_9㗿?I 2OY_ +6J!YK3td9I>#n2(-(h"Δ*0xq{&%1)K,d'&;]BbǸ6`<!skN鵕o=,6&i^'K&/8V@ EE +Ez#[(V3n6^ޘȍ=ԗZhGSM&.:Ren7%cXdlή 3vM qNSFA/`e4_VVj`A88hY6LK^M-d,v@WgɖءQx&R7i?D/Gvm V+n(bY03;?(`܎C%~l??V7bMkPoCtL (w[( w,6Mu睱O؀ !1F?>76Qnq#8agv06P4Yd="a.X4; +e탧}NSδmeQx;f7dJhb>ĎkX`'cAqV3nKR1iOۑJ'M;a|ګ -J0'´RnK`1+'tM6Y!Ӡ}+XX*ě7̛"ЩP˵!, 1* mښo=dwk'a۬VmцiouHh(#Z-@xfF;#S6{j9nv>3x'qMK +eVJ)-|md"XcXU DɎuF +约UsWrhMcWc6-J +똱tdV wfAK{`$s`x)(_zBrPQ%ɎJQ4EX TjH6r4Lcohu8@kc,uf +nT7kw.T,,) +tTf -F%[5vA{LQ2}X?/fvSVz:t WdCԸtM oAA8e~+)}Oeqŀ2>U ZّZ<¸A(^ +1ukblxWp7Ø.tPU2Rzl^V +.c8-C &Vָ#*\89ܱK/]QN۫pl=Cc'tn212T@{4) `mxɮvC؇ݪ!3R)%;N@x:TCUy=,:1G:eW[PZNNǍ{4,ey"'G+ _Ц)Wڂ3emAx'Gޘ_ \1W=ehhwẇk @rT79u@#Ljof7=gkNxkXa놣VJz6 rYyf-r"FCq<+y4T9/%-TYM0SD}9;rnd;"@ {6}LSX6c #mE֟1ubz7r{-Yξсe70F=з*.=dUq FQEU0MwXךg~WڇҤ>|3ra~R1k +7ʅc#K*rsF, dp[sIk{#ڏ ҡ~l[ժ f[@xE ϭ& ʅcVi80WQǼ y)8&ۼ[n m"]т0X;vXX@x +,w*oEJ+>9YؿA;r0;99~>k}vVy_^J|tV~gqtRmX#gcFbGJ*WIHghPVVhe[4GeSVa<#*CfՇs)%qbL4V/^+#\.*I>nmͮҙD-K,c۟~9',FvXM>$WR͟§@P֎8^>qI +kc܎jlg_k`)s=\IM c^ R?,K1t +endstream +endobj +2082 0 obj +<< +/Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 595.275591 841.889764 ] +/Contents 2081 0 R +/Resources 4 0 R +/TrimBox [ 0 0 595.275591 841.889764 ] +/BleedBox [ 0 0 595.275591 841.889764 ] +>> +endobj +2083 0 obj +<< +/Filter /FlateDecode +/Length 3370 +>> +stream +x]ێ}WeNCd'yI0xix@nZ-O7؈f4º:jɑJ)~=|9h;f? _6ᘝr)QHIicEkwxc*jS<<|yo~x"„N9xe/Y3_7X׹*~\e=ueb~|9Ϭ]xE\ٳ8OAĕ>F4R0r.EPɈi|Tdg'XFoO?[{)TVk2ɭY-[۴ /,r RW,a@reki>8o}Ħ`pϗ",hKDPhILѕ%FAKIM7n>92ܿB1hd-압n5 LP6\jMUcҜ='ޏc(պ}yݖruPަs5dC^iDZ@Ő_[X/ȇVsEYMjWۇXŗ|k |l>򐚭@.j#AzoD}eUF䨼Me"QDw'="tFO2McnO{ +CG幼>A=狩#`pׇϊqY$?Ύ1Ob!aJ@"Gt<,H^qv6TбYN :~c,;y =3Q|}5̆\''șnL3Ʀu ˀEIƓ/g(-OAy"{S0>{1E깛j>cyX |:kj6sO{iqL~{CaĦ=㻛2iOZ9wYNL]cmsu)ymYJnަ^bCJ9ltgDž9o0a쨭,4t&˂pgx"B R*Y%gKjCz;`جF ڨ݊(1٨m -lmg됍g3'TnH*3v60-+Ax=uEkLPI.Fṻi(W$dj"acm $yl ,4%A)) )b.26`YxLcacwH2 8֯ G 5Ndʁr6kЫ2b_jR8E8]ZZ1P+ |* 8%Fa`P+Xa/"ò>: _;Z>J'䟚'ۛt|yӎ./v̛.xEdٖ-o&=ņ^jaJzL/ _BI39^m eGB6( +פ:v[IE] ν&uj^I1r Іr{MjWK{MQitᚎ9"t5ީ%֌0w2x%jcE1zO~C-tx~V5/ϵ:v+}_=?1T.B6M'Ff.$rMށ22V/r2щ29ت3>F9UN]|n\6Cn,^ vHmFPX@rt +0֛Oî0N6x' .h5Ml"t d} C  G6F0n57oYShxIGE~`'9㘈Cy{L^ӃƤ]Qȹ8[T$궱U k\^J^R}sɁ6ڸ 7WZ1 m}s>[L^}s q[ߜ#e'Pmʼbu$87+FxPr6SR:M;n9C/9Hq"5FO{jl^y Mz{:v^S;.,p5Xg\g#ߖC"~fďA?8v7ĿN#CuCnBC<0#QG",8:GԑQG;G s::5QGAyCb@W7ud1~M\gHEdzVWX0znJqJM݆u[[@;N/Vԍ0W@rlC<ئkĹ8צآVwE >jm>Jﮇo*s6g~jS]95~S)b0<(WbU,(G/e"xa;nmaP³)vQ dϬyqZ z :v Az>*HS-V| +4OX|u,(wSmN3~!ZLDEt)\}g[MWv9=jU Lή}Ej8bT'bJGo҉; -*A_'c;fW2%8JG=Ǩa?W 宐{=QzwP᫈eb -9iטT>gL\Xk}t8,1ޗ.DW%!݃rWrZ'9E1Ścp~xc -zDymD +*A_'c3fW2%8JG=Ǩa?˿A8{?(;}`U Q14kL*N3 .,k}ȹ}> endobj -1986 0 obj +2085 0 obj << /Filter /FlateDecode -/Length 3304 +/Length 3301 >> stream -x]IWǝCd'9L,@= XYU"U6FYjuoȢ wI -o%'>Z9aBϞ JZ kۗ?N9&RJX.to~_{za@=g}|uV% -[ -;m?7kl.wUXJ҆fFq)a"Ȝ?zO_<)e_X>Ӂj%J*b -ou(#?|>JqZd6& -V2]:.]R!jP -e50D5 hIMx4Nn0>2 6HᩊFVy3Dv^1zazILJcNI0mULvEܢy%x -kCu,;b  *b-r@u dj6r#{†fD$ -sӲSa J*8+zhZ0a9*p/5(6V -;){&7N9cUQ` 5]$yuHuhvNĵ L;gThG!kcu ˎtNQՌ-<댉e^{ őWFݐp<a4J{P Ig0 +3Ή|T&,ɹc?xj2FZqLQ}H)y>~ueIpcc+p$!y06ݰ6t >@2pf6Zf9r Բf8Iwe,m)3Niu (cXvntxh˲#O:cjYV,tauBwkc Zou4OA(c9 {%(q,;&VuN ކwTwBRXNWlMM=U(662F:pe[HNΘ=__g"Np G_ڡ YPZH/~9y+M` -a@/}^ -ZPӜd 2&zV~%$B1,)>;џy#CYBҬbd)SjboZw6 Z-M|A9N21;@:[*8aaG4lGv{QήhU1V ]0MV16HZ-䑮e̔ 䜜F1IVe̔n v1SjFUT&fJ:ƴL"wA9ԼOFGrV^lh6C F݌M*A= Ka$4 Bst2ܣ[ޭB?㬠~$rt꯴0brpU$!0C5Rc1wc1cqLfցK +x]IWǝчNrY = XYU"U6bA%o#Β#/!D󯧯')bOz^hwh B<{ +H*_j-Zo_N8~^JH)a)`tN~9p!!Ͽ€zPc<:+-u?6RDߛ5RC;*o,%qhiCPD8FF0HzTdΟ~=ǿ?I 2,Yϧ?}jgQK%Ii?*~(`QFtꕾd,YmLJ)yd{hu"J]eaCN_\|o=@'j` j8b|ђiT:31da}d@ZmsLgX&$3c& c :^* +`) ڪ"9.EJ#TXv^:TWŖ[zm8AltG* S95Hk%85e45Tbqԫ+W>swɀL! Ƚ:U0UK`Z +ՔrADVoʯP(-9f8]0,s#~dȥ"W2eKV9mRmQnT6OL 0 Rp»kj"c)N45XRAcC_n3ZRG?0[8̗d0Ddu.m@,zb*tn߶ٟ{'@0)?#=^TG4N,_\=c #(_ZZX-Ii!09WA1nʊ<ڵVY(4r*_`ekbL=I f0]:칇y7T[).rei -6·jjv*5lò6S% uV?xg&z>0b𺺓ҳZ ~9C4V^Q^Jcܹ˸ na*܁4O_]6W*vŁkwMkT,Vnw^χܘ[fLVې;vh2_y*dXOUxN@y\>WGu?O  `=+Erh:pa=N< PDPfn[`+j][@U:#ZRה7p*0t* -FBSɛg@xJaAW:lA-NAǮw*N*`%9|:J`_ NekQ78\yYdre݂5 L~aO5xB! Ƈf#]T6; 6hɇzz'8YVT A[F7Gtk]%$^1m ޭ*s쾏[@n4j»V+TZ켝'il2AhzoۦA[H$m;@4uq!v*jޓ2i:t=ŒR0v. -^i 5ʧ-_[P6>Ê(vr@KDi]o͖!Tlc♙(~u )qU=K)}ڟtm"폘'ڃsoɝ́ CXr~:Y}|榖%[yx!a'sZHI5;A#8k?z(kCA co?CgK1.+>]@0-; 5C0LاC"cNc5r86X'r +77ܡ{_"`r't O?uF+Sq;oLo^;"- >/9f8]0,|}GȐK!E$#eFstۤ6D5֣ܨlșajPץ6wԦERBijF`*fڥ% `p+/`x6c ֿ漠~A4d;F~9DAEĐAm,(*F#fC$u/c{eU8t74w.]OsA|RPY,kԅn+T<}f6N]sXTȿm?N`R~Fz| S8R|sK0Gg%X|ii `YܶW' \gk\Ÿ*+bthZeʩ2X|u-1$It騺k@ Sjo8ʕ 3ėشN:Yaa䲩6S La0xRaZE՛z ÈNKj1xXxGC{e+1r.3`{s <}L8ީ8DfhT밞w*A߃}mӃ89{jCGdreɕMXv ʋC֔7p2 N&T T +uȧZ$CwQpt.8v'OڨN& LD1JfYQ1n _Muh'{3޶xHٟb> +stol.[Pɷj³vc2jnmn+#,CMln}?~{3'D ~=*< +wsO Y1c#:v]b@xR2>ޫ͊|m/53YݬݡxbnF/:#JB1V"U nxr(fyq7TةyOF[˼gp:dPdk3J}hgp:xUQ 6("P|Ql@ +lɁU/Mw5[PŽ5n{f1)WX/i[7?bhQ$w7;6a!W~ď:>gj_4_eA%oV0rH؉o0ҿi҄>(NN1ԗ' ~" +tUl?*P d=AD~4 kcJ~ slgw 4;/#Ȇ 0Ub_E 1"cc5r86X'r endstream endobj -1987 0 obj +2086 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1986 0 R +/Contents 2085 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1988 0 obj +2087 0 obj << /Filter /FlateDecode /Length 2865 >> stream -x][6~ϯXUpp -8}XafS8HegKI"E#%2?L*<_}iٛ3+bH+UaO˟ɪuaOdr|t_}LJMW=Nu +>~J^+˩+CfM`Gy8v1Y>0Q+ AEֆx>_nOFo dd=?>jB קlsBp?fd@tNoHlkhW&Ȍ9DY8Xn7"Z6:ޓ\t:s4,*0GC pȖlQ]6Y@H 6xG[\rrR:vnE1 JSD \fōRJ=ʯvQi:2,clt"c2vZ"7cdq]4o d`&:6+T>dNYY2I͜$w:-qQIFȈ"qO - p$m?:@_ -bu .nXZA2A}%Nrn&yC+5jRP$L-E𑪑X/l)V:g/3cQXcb.ҌAgٜ7NW|K.y V"(6q=y%z|ͲKpo=lm+tw)&c0ܢ9A<Ɉʸ)Xoͨ3iV:dUe VjczQ-k6:I6/v-mXlIڅe}7Smz갌 { j=&٫W+`O .ğH;G#g~bȀ~YV8Zs p!ځk*Di"zcH9Be܆Q -3&u, /EL VbI~zŮQ包19j:8>cBkLebRmޙ1n\\ J1,sOL 歊/`^UTSiNZ E`N~U^**JM5bu=ldcNCfUǕI>L9'>q5u;l6I9; NeEn+).(HsHo7uMނ‘؉nSĀu+)ef -wpD4;6+f'^8R2 QE³DJBg}D X9~S7s)uaI -%>סp87523X l~:DZl\%p?LW\ex0)^.e!Pŋ[{’7 ʽq{x8r^v9`[W {m F)F$s ӐOʸ-Vb*|Tdp?wlq*@+vr [y'CC7e.* }T7xO9/G₍Xyx-Fp8*#l62n/A±XN ~=`ų;WX51۵mWB^.ϑZ֫k]n.(?T;w:U]NUt![Ĉ`nSLiu\huhƝϒ u&N@Ź*p_@z]_@݊_@z7+~Aeܫա5/`۽_į+ImR|J.J |m"\ .o^ݫd|wr_rv*) 41HcLYE5x,ԢW<bxt|̛K =Tg ˩)F#9+r'A>dC~0,w,.*RRI.V g9n>{ k{@Iɏ/ _Gu>\b*%TXSO:\q/SxzܞMv}5/&Ne\2ϣekycȲKӫkr_:!$"=Mץb׽^bMQMUһ_LA$^7x%qPNbMWF⌀|rw|nȊdnbVYJVp|1jViwbgKyP>T>:'lH7tw,_~nT :S6O8Z=0z8 '{t0zb~sdfGq -{CdJ C8?FUq_ +x]͎# )ъ%J` $ LCݻ 0BU]*|U{AQruY)).[dRy V;oE/;/Frp D)!EM`ivk%ɞ9(/ݫI~1څ(Au >vQ+G$1hN8PoCJnwtd Y1#e'g$:vu:=ݨPV>e`BGinIlNĊĶUExxx~#M4ky?Uqz{ˡ/=AtPN(aN!8rȞb{(`*b{ɤrϾ<&YIAp +k^r)[A9-)!C.N.W){V#H4SPM7GqªE҅EG\`mpdvAAz Gv~cȼ [Q82/v*h}w:1`] +G沈e+ G +wpD5% /3 QE³D +N#Dz=D Z9Jo& +R0’B * +%>RE~Y[Wm!l~:DZl\%p?LWB֛Kw]1}9)a.?R}v9IIZny k׏,(Åy +1vpAz:Qh#i/5y`*42nK՘!!xƊFmt$l-w-n` ` ҽE[|=T1t/]WRY+R@wKuyX\R&g<4ur㞧 +={)hJ8 Hq=>W F|Y"+.Oz+}TL.7ǒnRjJb+ٕL,&ʲwW2  uf^tpݳ3a;䫛7tW%rv8@>zMM{W5p;1:jtWuce +.=(__#:?\1LiT?%2 ?Ӿ<T|β$*pz҇4oH7tG);V> endobj -1990 0 obj +2089 0 obj << /Filter /FlateDecode -/Length 3458 +/Length 3459 >> stream -x]ێ# }W% !@&y`,䡧wz6lUKK'[(RyD*kyȤbLםVi7\0)}ʱ:߻!Y1쉌Q._AwO^Hj~̟W=Nu ^k|7XYO]4k;a,b Tdm~}_ߓQze2=v \i1[xe"2tYq$?Oxm~:3ksx/0]'8;9҈`~TvI8dK6lDĺa_U,yNTyG[\rrR:vnsbX$*3+(͊'v{_Q*:N1헊hIT%~YD$ =b;c PA Hgb.bi20O:cViLe3' 8Ѩ$W5jAFXjxP&DZp,fM{NRP$xfIRq*(qI)ehٹ ȣ"$|yLNyoXlFt*dn[ EKy2n&BԀ:OX#c'HkD3_OO -F荅]O 9يȿ dgl~r>8VesYR +1e{yi(ϲx{ظ#b +:jBqΫ ٍfp쨌 a!8V9\`۬/6cx?O6cT:14 !t%"%v`>z2Q莾W1{)4ᡫ0.v^0J^J22‰&_*emVtIl2mX0^;k?%v3SmTQUV3wy*XxNQ◲!s -_Z@Y7"~~"c{y٪9W{-`&"WHIE8 +x]ێ# }W% !@&y`,䡧wz6lUKK'Fv(RyD*kIŘ󯻯;ocaGlP!9>)}KkckueݿwC*hb%]_v=_{B#gOPkJ#Ju!R%-` ~iT19R]#EoqiIY-a]P JoP̬6+nU +Q~F8ňҷ_*~u&eSIڗ7e;ga^d1Bu6 -Ǟh^AL:thVT>dYY2I͜$w:_-qQIhmjԂ(ġM(YxXpC`!1ܗNbLqX+9'<+qfr9OPa&Y Wcp,ZW@s.D[%ɞiW5l1{1D}&H≯eѥ +T dYQhQK^S^˺sRGSEH& +[誕UɐQ\e[MuFN v;lPgؿNG̗+&` ՟3/ 9يȿ dgl~r>8VesYR +1e{yi(ϲx{ظ#b +:jBqΫ ٍfp쨌 a!8V9\`۬/6cx?O6cT:14 !t%"%v`>z2Q莾W1{)4ᡫ0.v^0J^J22‰&_*emVtIl2mX0^;k?%v3SmTQUV3wy*XxNQ◲!s +_Z@Y7"~~"c{y٪9W{-`&"wHIE8 m_OV_TB2nCd -ZPp/cͰ_C^%3/Z7ǚ1?F/inB`:^"9r=jY7NM?<65⿕թ-NoeusoSoauHFS+[0թRnfu9䷲:N03VƯ: +G7 EV:+@!ۖ 8p^xΆJHGº +вt2)>^(qp#KV9SBnKUXp6!^7&ؙ k[Jλ*;&N4lveAhtshf'_#H [S,tJV4ɲ/yU9g7' h0q5r]0+**BYbwJ߽{3ѯ%*as! \;]_; :I*GGZc`jpv2ꞶB +ZPp/cͰ_C^%3/Z7ǚ1?F/inB`:^"9r=jY7NM?<65⿕թ-NoeusoSoauHFS+[0թRnfu9䷲:N03VƯ: +G7 EV:+@!ۖ 8p^xΆJHGº +вt2)>^(qp#KV9SBnKUXp6!^7&ؙ k[Jλ*;&N4lveAhtshf'_#H [S,tJV4ɲ/yU9g7' h0q5r]0+**BYbwJ߽{3ѯ%*as! \;_; :I*GGZc`jpv2ꞶB ޘPP-<7^$Z l2 2 n2 Ƞ2U Ж2+u[ {X1>2^+I+k|R}R)O89C:]|=l*{g vȸG)yQyɜ ٭Det"(&dTXe@:QW{,p@Nlk tt:ft:nt:t:^t+y9Nw:GNjYt:tnI[1KTt7:U:*w TG?XT`#SZɐYkδ `X4>x/Xlc}MZ6(Hk -JһZ -q(C9v{R)şZyr5FdX"n+(-;khm)%e~%/OGZoaujT7:UnϖͬNtSS vS)Tgxi=Y=W!r +Y%3 -*0nt|o q~ڌNB12v,`W /8V9r74 @{ոa7م.-irXg0az/>Ļ>+}R0Ui\<ۄ618NgzpM}n3NieC3³ѧ3K<}~^Ftyw׫S仗+T0xf -nb Iɥ͓ Vܱק؉Az$7Ew1>{y<-㞟G^2KN6Ѧ$ҭ -X]Y ٧je;ejŧ]QMA?uPx^.K(&&5by4xt1E US -q=׿໕eGv+UB.]|G onb9]a+䣗*{iXLU$~wSuq]ˡ7Zb Qxd&%[t w/T-P]$oѵb@gSp`mHAn;ϦL^lJ+HqRp@zUXǩ,eѳlreO9nU>md엪 dRچ䣛IVVMŶU:l8}*O7?!srN g8'G%xKhvLRW`iJ.Z%ж0I:c -o઼2`<7 pU;^V"S(c,w:1EIwjed7|nK -=Ě%*xRA3_`gqDXoT'Jǭ-#vr3JiC<saE‹ʭ_9pľ+ƴvˉCGMw=rmC(/|Ǐk?ȍ`o.ZhB)DYa۟ǟ~ZWX̕[ا>Tj5'?0d+e'b.gtv_8Z=0xZY ʉI1OAfxHqB FP|lœn][_? +q(C9v{R)şZyr5FdX"n+(-;khm)%e~%/OGZoaujT7:UnϖͬNtSS vS)Tgxi=Y=W!r +Z%3 +*0nt|o q~ڌNB12v,`W /8V9r4 @{ոa7م~.-irXg0az/>Ļ>+}R0U7'@4l2قәΥU~>?/#M:ռuU˕yO* ɳ>"nbʏ5οk9^K c# +,$޵yna*R-VlJ, i8hm |MI7PJH +s8,zML)G=ʇr R"TJP:v|ts8ɪުsض6_MXib~g6dNIUpy3D"RQ\]oBY܎IJ +,MXYXv&)^gLRrSAg(-H߬ c[@{%wJC]3ΪN0;3J.H{%SeJ&?$Ť` w% + t# ?OJbM^k {.sYW5jhSi%r Tj5')~`+V r9Nt1\~:p{Ja깟VV{ݣ@911),:?NhJvs5 C |a M endstream endobj -1991 0 obj +2090 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1990 0 R +/Contents 2089 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1992 0 obj +2091 0 obj << /Filter /FlateDecode -/Length 3458 +/Length 3459 >> stream -x]ێ#}WBx'؇M`0@ݒet!MB4҈źC{͏?r nݷVk7QM KRGJHoZVo_wgWUQ)oо<~e)忻&4:>?W| -!z׍),*~/_\ce>ueb%3wtTg騒ӆ~=1N?5kO;u朽‰Z?{X?ű{^uFx"Kdߙ0p]sm¹@9a38'ٸtΊ@ ~ -teaLs26GHʸ+(E?6Ⱥ$xH_)]<|oXM -`43l\cex\22p.U*`:mi3c1$ph˺H>U|zu[entouڍniY u4'4)V^3 u.5x^c߁`S ҔrF9 e5*ɼ4 C.s99\fLBo,b;=ws.Y+xh <>oq/[d5gfXsξsP) -L -xϠ`ȗv|R{KT(W^κp5'CM/)dG729qOWYba^`sBK6֜Ytہ }55 ^=Hjn&1w47 p:8ˍٙCg{<[܃X:_t!qMU0B-؋r&Dq6ȧXg-&&`|/; -泟g\M!JSCvlcۖr6q`Y&#BKq&og㶉jwV<*7YBH\|K\碲ġB&k''tvԮ`5( -a=s^_/9]=!hp7+ ԮjS,HOvMP<ʸ{ʢ6׮ֺXpWjW])U:YZ --Z -]QUe{vrE}$H`]#\X HOՂT Ho>TR}$ -#~%Ufׯt,,Yc18h,ibh JsI :TL^\HP+#A>TMs+~3lu>Y^G6(y19y;q;yI+֚+θ "d [mUvsM ; ONL$dNl9MV鐏|΄JN?VٌNw:O^q~Nڃ1;ǫ`l/ >y=_ @8Vƛ\Z'@Do`rTPN`bMٽV[p^ @iv6J`yM.Pk85(΃nOW|:& !C!t1@E9C?ԩ @>Ěr#A_euv R8,Z(|gRa "XޔonEcwvl -HO;7kIHo z35A-W@X{mϞ;rvblQiA [S =#Q)s~:,&eQ7 nXcn { N̝ A\\sA\І\ll٘ -&ykN.Nu4R$3yMr=V&봡U47v6:M7 ZiI6:M7,#3]8O#r9y7K?@Q'ïAz)Az!TR%[E Đ??Js GǖB3y/j q ͼNMP~lu俩if^#:M&^#_uj&,ٵȧ#-##Gl`7ΏX9j} 5ʳx\G3LRJ90 OD"g'&7=ykcrdOI2'zgt7|;zPKft>laP7M(LR,>;9Wǔm)bdl;0t2_>-nŠ}Zk, Q ɚ<ڧdf鉎Ùr:A:!ww1N>>~f3I|%_mK*G4i#sj2k+C|PY2>|6+Fo><}D5" |D=&( sqnq|䟉&33f(t&r!ɯs8m8ߌi@ l26 Fd/R[hOa_Bm.SBi;}6jsh>N>SR:v5|[nʝ^M#95H['qj0NiQQ'h_.Yy86Y  +G.҅Ay*’坓aͧle]shZܺpdYT>K&[(ٕ)ܥXFvQd#|G3^5c8Υ>Lq4hpQ0 +/A}g\r`h2Ή؝ N sKlwO- 6i.l MF: +JQ34Іy8 `[@ g3ʷǰ0ҲS>f UH[,X& blV&tUR mi3=NuC%:ZAN&$X&%x䯀N b Xw4}zu84brQk}$Ve;K6RJIsoi ^Kpj Ք0s∝k8]1j)4'.e60τ`(d+fAvL{g_cX]ַӸuJNQvɚ3&pb霳rJD>3(X@%F;C,U5 +8YzfJmK +7YэLNZ"0QMlڅ GN\,Jk; ?ٵ߷VՃf5AݍԆ߈e :k,Ibx,~d{VSrK59q7NTpC9y=_+[^p@P)C;Z.7bYm]y-`R+@~ 5@-k8nHM>^ц9]C  :CbrKr>S=Vr5Grqu>^&hkΒݪ|j>rߪ>rh9*~`dqyQ{#nܐ]T]7ϕ|k : իn4JssOZcS̉g2MN^7`/zRgy<[!ԍ~ +ߐҜ)%M9Ȕ3Gʏ3||yDF|q3K̎Ҟ bCVvWW!?6Ht:fc?RL z~҇ ֜m9dd,;0eʿxk=)mRx k,t!Xwxw`:×'7> endobj -1994 0 obj +2093 0 obj << /Filter /FlateDecode -/Length 3076 +/Length 3075 >> stream x]ێ}We`!@<$p<̎ix@}h|5dI-ź/MG-#/2S||UpZMؼ><>lP!91)crZZ=y!>$!#1Qo1RLj[߯){J~zJ^K짮 QN5euXb4@:V 㯇~#1?N4k?~8a6I @@ -28822,84 +30020,83 @@ Z ]!Sq ;솝]k$yJәzl;sm(Q]s^ #ȵUzؙkS6ȵ%Z˵08\[>P}ʇ ȵ} fJ1*n[~e \ 6=4ׂ4ZkxtJ6YyoG բ&DÅ%Nʺ|*NW`ʪ^ڹpL(,Touͮ3|]ӎQVr6NQ,`e݉J'X眗K#jRa; *J7" B◤&| X?C(P}_ pע6#D4휄e/'x/,_ιحKed 5,`sE t`}b|ŔRb9lc"ڰsnQʮ:> xiwi\x`t)ϘzgHD2r'[zmP#MJA  Ma)7,&6{= KOJMTr vg5 xb6>us~::֗w6m[f^R0%=]~oؾAԦqyF[N"S -({dRdJ %t'l{Tj(QhL }F]2bW)O))Uل /Ww,D(S/Ϸ{^>Owzz491c'IӟӇcɬ⼉|iΦ=wCw2@ ]>ţJ^9k=r_pX(NydJ"`</2v]lx:jYN~N|vM +({dRdJ %t'l{Tj(QhL }F]2bW)O))Uل /Ww,D(S/Ϸ{^>Owzz491c'IӟӇcɬ⼉v:t9D>Np{nT(և|3uxTKRt:/zRXz߻1}GteVM;(I̦4{|Lwi}e9:)v endstream endobj -1995 0 obj +2094 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1994 0 R +/Contents 2093 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1996 0 obj +2095 0 obj << /Filter /FlateDecode -/Length 2761 +/Length 2762 >> stream -x]n#}WeE !@$yH$ y} žٺx--bCnYf.:,iowI)K/;k$XX3|W}}y1l8%Jy/ u^?ןvgWX+IDΙ@9PΠ}wd^Hj1܅(Au .y䨟9VnĠ:@Eކܪ?hVgmJ~}oα?I5?/?]EnCJ82n+GU ᳱ -'\{Xɺ1V1*_F =b 6^Di]b!ث&|Wb!([GІو~%: -Q~w]|of 654^{x!e0+&lїX݄ƳЉAFiHN,sr*1TC[)/QƏ׀-YܺM)}7EE!uXuGFwޙL{J`^iIi @S$LWOC rg*V*% x1F eN5F*+Oꈌl;jILP*60/U.1q#!~'_a%M -rOɮQ g {l$\"w -H8(\#9fkL6,}kU׽T *ZJ=dK ^Hy(==Nf0a~=˂C.IVwY%`D".B/RƁg/%ӿp@aC䫛K)"Ϸ J_ysM؊I#Z"uw!T6Aza)vٔxOgiqkv:a'҉RPJ;)~$eU;UI32`S'`zxG&i`'PrƂmWEMt -/ѧj/yvڋ<u7O ~[Uޒz,cA-yU -w.T蕏ʔr*Pq>+UNcX2 +K%wؕl Exn]V%& (1>zjIH&zӲLRxSX,:%nb)Vt!kWIrǕzNv[lg/B2.5mU CHlJ]pC4@z}@U: -pwiNd}uWf},,3~7 j#TpS,4+ -sa4J&goϾ6rs)!D#㒥3:;3.t[fU[%>se[ i`#S%mG8J҃r&Qe@z}qFUo[nAzxC8Pe8Ar\9N h^-2hcx-ة4jH[nw ;eWndwf|R/[X[q - vp] -w;wG>%߶Ήpniة[ƻ>t[\ iqpI%؇vW͠*aM<OE85Ȑzayyj9#**#ѵOz_+f1-o9q-\>{y25wɅso8QKMeH#.1bL :Ms A+^uy3ro A*?>tEF\@76+QPFƩ޹w=ea]r/8t {AcmUhP˒.F_r:v~pB''i$9ɩS ˚Sk(.<8Py_"M ;ZwlRnQ+BH'ڎ} 3DTZ/f H șQX(!07TU֗K(xc<ʜ;Tv % ށk_ٶ32Fw4|Yd:n˱UN}aY]rR52FAiLj 36J)@䞊]m%@h0:hoxIB /(gMRpP|Gj=sm- ֘>0.m׆5r/H?V s{UazɖY;;]*TN8#„Ѷ, ;']M߽f=r:Y犸F7(XV#P^@K0Iᖁ† (W75VDbolWF12fD|BorR)mΎ tN s˥V#vRIʮ Hvfg4a'xA&>;1MzwN%yP^I^go-% >P^j+5I TFSsi&^G.p6@Zc!bl^Kŷ0{A SVfC 7 +ٞ&09 OAg0mxS 2}}\'sf=+tSWl e1:]m2Ғh|F &'ouoΫ\\UW%ؘ ~? +llk*Eh[CVS;$&nƕ "VVhk^v+@z[3)ZI(a[v. k/zoKWD>]{QCg 짶{^JPw鼒dVu-UQ[nT$TXmy#qKt׮oߕڕ֕{[х=[`\!;щ];@g/B2.=m] CJ|*]pCt2В@z}@U9 +pwi.T}WV}*,ʙm j•G[@EhWJ)E T;h J&goϾ6 +s+ӡD#㖥!+ꧺ;3.>m:*&:J*X͍KǿVnqLM4A6㌪kλˍsбpFUEUW Hm +-@]6,{i*p=;-7Y{%vZ.AkN=>`vШ#m%*B']a{2,&|TMݪ:%`rتHԏSjˀcҸshޙ; +fSnz=q*|<6Bze`qFWOKl$49jng2^};Hx8'q; eXe86=b=tѫYc}H,@=8矯ÃsbH +Mɺ27,Ag0?eKq?st9Lrҧ],Qe<1'[ŧ(*2\1]#$yZ=,חDHAF5s[1 O'%[X,iAgeVڃ=$t endstream endobj -1997 0 obj +2096 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1996 0 R +/Contents 2095 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -1998 0 obj +2097 0 obj << /Filter /FlateDecode -/Length 3373 +/Length 3375 >> stream -x]َ[}Waq'`!@2CZD(O9$_>A/H/=|aB#{y~^)y^WO^V9x+۩+CaMtrXS2@r&΁i*9m?z_s?{ױ2c6y0* i+s*j2.kۗX1d|mO9Nm87Bn>,dQx[gH"oOs#y&A_ #y1yԫv(ߙNj -aC4nM"RZX9oMm9M*?㹉Wޢ9j҄UxB‹VYLq#4[xɰSLֲ=jx5x.,KX -Ỵ;hҸvᆒLΡcٳ Huێ:Υpז׎"Y\Pہts::%m@vV9 )fpMjG> NQ'ڱgΛujڱvV\ -gc0BSL/H1oB9tl%QyIkX,>SMO/k./b,֋;gZLDl 3Ŗbj;'ak/r IgTA ^ʑ5 4 | J&-ǵb]MN~wauJ;'س DduK֜ ] Feb_;3 _ TF &pdwCRKN|Ϸ|!D>qX8Ox 㛃,+A ccOz#ʮHPJ#ᵽ^yyHpJ#Az]K#UU һYi$*^)~4H"^ޥ;]K#F4FtF4Fc*˥=rHTzFvߤ4r.Vc n#wEQ ut׳Kg*<-%p^[s[ ÞF?}aoj=֧s;D5A ΰ1  [r(*4EAڰOsdXet]PMF)j/CvEe=XܡOAD}#f7iExEuM+wi^ udpOԑPGvGu{QGo:"}#":2LC uDs]QG4GmBy%w~ ٫% -FŷtVxܹy a~ڦ ٫ɘug:r^€k,% ~U‡B5JP(m6Pʼn\.U;Ub7x[6(A#~67!ƚ4&MzAZ\QO뽨˝؆חjt'dѱO6guS.&t[j|]7 :6in6;Dȝ0_1\=q\&=rȔ~Xn an4 Ō<-i0?Kh@ ڧKtnȜY끩$B lZeFF"ն$S w).>w".z};=),-cPi`cŖ5[ּ8HM6VC(Tus\@-m۴Y颳ͷcg7ҺJU"YT,ty}l0IC2>$va-yxKJhƋl\ȼ֊ہWÐvڠbSk4D*v)mқN~/&:HmE-H_gU2y C3rmiB~a?+"SVaqC+z8TMg8"U Kc%N\Q`?Mr9)5F7a./q7\SWڛ̰G;d.e h/NO!A -ʵ xݮ\`/ueot@M,U/ٖ8zV!mʸ^͠9pA-٨&Ga=;sb59}7m hoV LQ؜j06ڜz}Wmˆ@DM[:(f%ofx`1<"aڞöC7Tl9S<w]~3ludJ{1G4zVa?%?RMcu0O)4W~ލ05 S!*f}I\XMXzL)0Ϯr"-2-)qloɬ&&O'˰efO}*~,?ij+ +x]n#}WeN`0&iFvK9ݤ 64e*O]Xš wI +o%u'~|=i/|ʻs4„@!=A$7h-/sJ^JH)a)`'蜾Å< I㳳B/yLaǟ>k)-VS;*o,҆fDr)i"Ȝ~=㧿?I 2r^Y}>enBR줙'4x韭~į}z1a:XtꕾYژ(RZ<5 w_%v窐,- zT"@'nH*'DKvVi>gb<Ȅڰ +x ^0jV53/o1 {kP~v*\ߠ ^t+[X:XkU!cA*Fn鵕c<!cW6(ߑ +aCTnM"Z9nMm٩MeX}ѕ\+o{i*KvVcEI-tฑaX9&kYU-]O/jG.M}\1t⌝K-k"6ҨdK1iٝKak|r֌r,u3ʑV 4|%F7>VS]iX/ 5q \ip2@Aï WZH}g䫕W6J =p fbs}$3*%xU %bBu㣕?xVNȷ7YlWܡEf&=amUGr k*e |MZUAY7Spܵ>?3R(ZM":;Y[ZPdwW5j#aM*IE{abĵ:~1W3#kXmHp$X I=AOg~Lǐ6NUP{*S%AgzndDG'<&-1+V=~= jRE'cb ^xaМNp;J#GU ʺYi$륑ל7-gج4״4]V F2nUОHpWJ# 1i]9߹4ii$Hyi$Hii$JsOi$:vȍ*#w+DUidMZFnإJ#Q~z"~ ؇NQ udӳKH<=%p^]s[ Ş7F?ar=Ks5 "gXJH^}M9|" اZGE22.(*%z!xz^;S Z`ahFnЧPDm#f6iEx\E5M+wi^2x#Q:Eils):E^)F")Q(xa!Phz(QPqYAAE|*6AQ=,7nb"r \@A>[ $#LGk\]PzE׮PMj*|(6WYR(c6m*kH;mb|rɠyĻcN|5c俲*|o= _S-nQOkmQ;uo8cBFmxOx<҄Lo5Wɐ2R0l,"6#S!`rzݕc|8Mz`dH?L7{m aLy2YL+5/kWVf5=;NfuCw/Ǽ'oMkolnM}>S·xFtff3d(EEW\vШܻ 2P];|>f'#p҇2ߑ3YΔ*WvH}3,~ה_*S8졻UYl]f(ڴ@ZAJ0&qt9BLrcuVd^A͔c Y!9M>ɳLg5[lƘfxN 32K?1 +AuÇ26m.tٵ۱3Xiw)*\T,4y }lȏr9{E2L ɰMdX a^ +Ʈ%Rj!ɂo㥨lȼ=Dk-"iN*FnhDpT`"7w>,^UL9u~:M =|WI'pȹ Y,hl8eVq0NqE .?8qEق,6ĘDE1 tyW5ty {CVaNVmy +RGQP'M^u0I74+jbfyWiLi0u^{*mPP`3C{rc `6hQXOeX{U Mzsڛ;fo*+([lNl+mN>^Uò!6^jZV%D ,VV$<)/vpg63>>İ-3tJ,)7g.G||}'_';7[]X[<T{b/lyzJ-?9GK)4G +X+?} +??ۚ)kSA &N җI~䇙_Be k=!~loI&&KujO2~CRM endstream endobj -1999 0 obj +2098 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 1998 0 R +/Contents 2097 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -2000 0 obj +2099 0 obj << /Filter /FlateDecode -/Length 3332 +/Length 3330 >> stream xn#]_E/`06Cy>m?")/2Fb'-J Ax/o)/]%gz|h'\0k@ރW^HZ ZKw\]I鼻(% Mן/?<ן{y&@F:CxXK,{.U DqhiWY^ @@ -28913,129 +30110,131 @@ M h=᱅5v y&g{/(2en!w.[ZU:UX:%g C/L,;IZ[\{#jFnW9vVΙzёl3:ch: x%5"SezBtJ%(Q|{FgS̔L:ZR:0wLz~Sq80^(BI6  Y *'\Oa4.)lnIK]Wf3K:3+O\Wu<`N%~D5sQ3@-'F&xp1HSǡNkpAÚ)Ӝ%ubqԀLzk[1̳r|g&'g ΗQ@mqLxZut*OjC/fifc9Q%kLu'`[%LJ:DNtnǍ|9Nq$oCH%Jbw^m!ܜ{{u^nguh޷)SZHlZtJWhk--qF˃V6XZJ@ 8>qA+x],qݹc+}*'+a7+KxE|oC|^mJpqC瞶/ifھ6 ?Iw9ryR4*kɃɦӷʬst52w:fF+xB,`9'tz63%aҡ`SJz'풧qAxg<ƙ=LFrVgNɶī?oaTem_o I:C?~wP4Nڑn&>˖bem]W*0)j.XnX Sp͉w}9A:x&@>~4Uq2V9SIu3\Vwt  +H8^`=Atv3܉eD2S>v y&g{/(2en!w.[ZU:UX:%g C/L,;IZ[\{#jFnW9vVΙzёl3:ch: x%5"SezBtJ%(Q|{FgS̔L:ZR:0wLz~Sq80^(BI6  Y *'\Oa4.)lnIK]Wf3K:3+O\Wu<`N%~D5sQ3@-'F&xp1HSǡNkpAÚ)Ӝ%ubqԀLzk[1̳r|g&'g ΗQ@mqLxZut*OjC/fifc9Q%kLu'`[%LJ:DNtnǍ|9Nq$oCH%Jbw^m!ܜ{{u^nguh޷)SZHlZtJWhk--qF˃V6XZJ@ 8>qA+x],qݹc+}*'+a7+KxE|oC|^mJpqC瞶/ifھ6 ?Iw9ryR4*kɃɦӷʬst52w:fF+xB,`9'tz63%aҡ`SJz'풧qAxg<ƙ=LFrVgNɶī?oaTem_o I:C?~wP4n8e3O{>l):P/}3~X0W0O}9A:x&@>~4Uq2V9SIu3\Vwt  X endstream endobj -2001 0 obj +2100 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 2000 0 R +/Contents 2099 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -2002 0 obj +2101 0 obj << /Filter /FlateDecode -/Length 3630 +/Length 3631 >> stream -xˎ#fM`MrpI 9h`Rd?XTMRH5dW wE -o%˟X]>Z5aBJZ kO\}IPJX. ǯ?_ןs@@1~;+-uKc-EtnrPY\Vyc!CKZ02: -W^[y)e͏??d~RW -VH4nVW*668? H*2ŝOۇpP`8zhkO;‚Z'ˠhmPC؈ 0~(FԹPucrdaq9vchHWusnL9 y(x6 ̶uKcݮ],-.ՏgW/sh,;WQ=k][M5h8P6FW5|EUQ&O;Ũ~>Tx]5q9x^:@|nyx^ÝБ'3FHRQf34SvN欓MJ liuJ"~Jr(KCdT^ 3X! e `q(0Ip=3գXL%O2X6l[?\1ya~򲥾䅉U &/z#YA΃n4/* )Hڵl?=K>(olJO7d8V4l[h(W.& =1k&5C0pz -uz)+{"-&F lIUxpZ{%.i $4X!/,tHHLٜ. '7{L\@J=KANX{4(hdh˃@c wFRҠU7kY(e\첗t`eXWecij"%`bM5B`ZlO|0 {F -CKQC&.OEjr-G4Gh 5l]63o̪ET(9[f||?فg:dИJp9+ OvL:;2ڕ/Q$E~BC!{)Gi^o~*tesb3\;A%-nWXp% %+Qn*ŖNws)靌I:qm!m[=x&P-\~py!\;dMNTC)ix!mW`-Xj " WK-}%K~-A`4Jd΃Vp@6'{LfRvi??b]Qm鬋c^g!>CchL>7)35llc&8*rr Ue Viࡃ\z86fopZx^#f*Sش1w=; 2US[ 80!}Ϋv#ٹs{hB:}t6#O:ƹ7VsD2Cf6 S{{g>b1-K|Q=nt!{%3W -Bxc%Jqv5ۭyݏrZ})ÊxU7wu* VhX)=`:2bKz6[SǔP\$q{ jzfZH鏸Jtk ηіX4]h̓W_)&ZI ENtsAфrWe1XA4ańV, /O7 M9X0ޑ] q) r9[>.{q8GtߞbK$cadSc%<^eSVMڦ͙(bڜ͍;a%i21&D5Zbg ״s B<ʄ[M;,t& -5l]EzYfsn0rBhd4;>dw}4>ѵ|;)~$腱Lt::NqUh:lX&.wk[z“VdJ5l}ĭc!qv ǥ9Q=prtmCӱqv~XsQ(}3Qx75adRK7w6^Ja){Rtfmsp5rgɬLj)KpDHט(Rp۶KoˇEͦ0Sq*[*4I^:h&e  ÚEJ1Gv^t drl+; 2'BHJϲ4] ҽ^~!H€=>n3 !}놲$|ܯ(5ΜlB9pjD{g+֌IcCm4QD ex{;SR;.\Vk2լ?oBg[x`%fSt@pjW6Pe)6%Qc=6:WƎ`D ˶5F(u9Ą7;7|K5ߢ?mWKg/[wtA<eίf~l9 .9k}SL9 -„M1tu{ט v$\YHVT/V$0Tr 8WbثHX4㻌2UEߦ=bO)͑Kd=lRUyƤ[yVCo)_ߛy|#1cIIR.gbաiB.]k5 o5oKТ)/8kUt=^y(6k;7&vQ:l CKh0'☄wCņ֎̡KAD5/Eg^  -<% -W~>[v{NsTjەu֘jLK-5Or&V݂y@P1tW.ۺ&b@9w -[lY)/-v6<,}s&.% z9gG.bj%:/ϡB7|>HQ& R7P[Yӟkrlix:كMҷ -߇i`uF:)0nt~Z8^B сAA- }4MQtd3XЃ}fl2_/ +xI$ޯbp'0[> jd`2FnU$+僧Pӵd2V n/!Do/Rx+_b&>h/|ʻ[4„!< h-ן^tZx)}7MW-=~W^>jzL刺 +FyxPq}?7=RC +;*o,$qhiCP&q)a‘V޾_~ +2??dݾ~)+@ +pidDW|՝Jj NIEƸs 9܁/gJšDaL:pdZ带FaDDP +shF$F=*%KO6:8ŗ|kgt1%n& _4X*Uncڍ"ZgzZӎ2h=6p !slDurq|v?#jx(Qb[یD8ߘ7cʡ@YGe5#Vv b<\8Ep'Ν'D@˥Zi4:b$7DS36ygE^;àhm _QbT`?x.a9X^:)>;-#"g.FHQ6ghh̓Q'6 zDt 䳕TBɖ½f(Bt=sZA8īPZzFg IKt2>i}$ò \湵JO,-u/L/Lx4x}oE7 +rtyRzlPLA׮eQI}pyaQF_"opBkӰelf\wt,Z F{^Wl>c_ǂMhJK]AI'w&ä0m11Z`KҩWǃZs-~OC# +yQgɤ2GBꮗ`Lu͌N8{ggRjWT6x9BvpX3i=^\QoˣA-wyNS4?ŔR犆gevҜq.kI'Z͍u\8C<ʿ*RB &vTC) 6p{GmP15db~=?,(vݬhT$l"i)km.p{Xz+{%8(>g;½ꬋc\g!ީ64&\kK1L11 q2j +f4.v6~fUVSrt37vh-zǖR3)olPM骩~b- @Yu O\=ա@>^U:͑m\ve!veiKi,GL6ey'zō.dògunJaoo,\4z^NLˠ4X*ѱh+)8bh[Xv +&߲; '*4m6` nCW}P6y}[oCxjWÝt,žC_7qk- شɲF<]p#5~#;FW ₎p-~m=4m7nG>`_]QibM7g}9QVR.?YcnqT +Ks¥1k냫KOz`RLYZc$vgDmv|XlJ +|0wIԑqW\>:4)C=,`dJ9B#Zxie WFV͉n9 B>PxYN-Hg-A=}OC&{N}&^{B e]N_3Qj:Μ,B9p"7T=ۑJE5cxbh9$O3<u?iJ]-:%lE&s^`| "nsˁ;sq1ģ8l6Hv5oļ,IyIϵΕc&+aYfhl.fc#v +tA YttGgC) +Y*kWHb0#಑;v/Ŕ LxmSK'YW8Z1[)ɐkMb͝ufD5LE\hEC%稭ߞ~e.ұE7>eG,&6L.&m6c6G-SLHҳHUnY-I|}6SFcƈvړ]$0S݄\z5jijFߒ@ceTQxtMgb= P̫ג vlL =s춭t+0V*׻ +`N\9 ﺊ S 4Nj4^r^d L'bxxu \}}N:zmG>1KWcXJtl)/{]vxZSzXus^ J@o隈m–GL5*lepw˙8Ss6\zmJ4"pϩB7|HQ"aPP -Z,-oy:-6~ 7sV 5G3Q?}H1q S 3rᙿ=ti X݃Z 6Z)ӖbMa >0 endstream endobj -2003 0 obj +2102 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 2002 0 R +/Contents 2101 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -2004 0 obj +2103 0 obj << /Filter /FlateDecode -/Length 4007 +/Length 4008 >> stream -x]n$W8s0` 0|R.pd-]˥CC],fD"+Y1ӗI7qfr2AtdQt* -6t12NC2"Hb8+p*ꜿ~g%^LjZ߽߯斅_NfsJ?_/>_ 01ynNX`0.Wz;$u7WO>m晔?|\f. oϻy*zy}pdQc/Etݞ?o/K -ޑ~tNaQ_)Nj 0Q`Jʞ?r滏_;+-ӿXcj^}O5Kđ5c0Α -ZxT(KbSpҚBdPxKc&S 0o"m=^9M/0gƳ{*4()nߪ^*IV?yd҃ Ar"a^tibt_&[gtsuF]/t:ӵLgOƤ5H^ k`5btW5W^g55@Fh{K,Ńłѽc[,h:[9[z/o~W,[iz4]3K ֫N5fs~SzR{1{1֯"{h@AQLbE֖$yͺ^,u2:֚c^ߧAgyS")*N ݇ݽ(Ał]Fȃwά]")_3icz<kSఓi -ca&b9Υ6n$#O$fː.:[nX>"%\m3 Zؔzk[rH4+ǴLЎ-*6&WT ] 8XK4 3s.ڞVFs fcX R(S<`,[dqN Yxg>O -"`#,DžOKDi J'e=)W-BycW贄s!Ɏmj5*[]>Sn;(rt\MCcXxfY<PΥ A01X6?*q=a_\udZIwN}n>4J -M(C&=$O*kW1bt-{,荃qw ,nm,mU]jIpaUJP1c,zr*^X X K3Az`1HXt,mUWbt`qQ`1ꂝxf,F0 -We_1hżC*ŨoF&6e;bQFd KG4]Cbf*V4^ 1ap{wytn{7n(8oe(lXSc$p{~Z#gU&=APB9 -QBTSIF2Y;DNv'镺6n}\e4.sx,hj)ҨLFqBEYt67B)t=ghq&dX,0ppKq0Х"$m79C\=Hbϡw)D&D-{(~5U+R޻6oFZa D)gѱtJA *YY):֪Ut}!msB-T,K`bphb`@2 - Mcĥo6RUŚ=z樜^z3iᷳb.7c mg,`ToM'uXmzwBUl̜B)NPN~\^}s?;PEfG6A>F-:EΛadku_ yޝCmJf^)=nj  ReRq:/VՋ썹d%^\v+ -4BFE>G)GEc1jQNǮ3sa@ <1zyv^7wsqĚ9F c筦ۦyiqxi(Fl%躎 AFlX ({Bٕ WC e|C &ւA22&أPvi C=P6*(UV eog?t(:(}w0ݪq_*r2e #}7Fut7V,vUo s^)oбR RTnbۻ+RJ &WoTRcw))]ŊXcZ<[ }dVv5˪xгMPtUol}[9|`j1w3/G 9)u= װjѯ]PC~DuJ"4j` ʹb|#7YSX^ЙOXRGw+@sЫBq{DF@zUiwX*P r,,jsбG;E=SK0tܮة|BYun`++ }< ]{BAQ"4ܷZxtAY˾n\L 7jC^>wa5U -{9C r-95+T+{G=F08qPzD..al"JE L2F}^;@lg[ETQD":<@罎z~9YwEFc -9B'ҨEx5|6.:2#oLy[2>+-|Iq}Frg +x]n$}}y$& a$[~@.ki*. #uD^n\,wVSI$z3{z}9 Br:sƨb:RRhpοx?! 1Z8|tu_tO/_{'̭FEf޿_|j@[ab4RJa\ztw0In>|#)>F]/=ϻWkϓ.G61?%hbH=My)R;ҏ֩ t1+EI&J5yjL Z_N|/wgEZ[yr׷kLÿϟ>)ft$F`r좠%RA t +Q 8ww}gVxךBdPxMi,$ +ᦉ|z!4"etSAIqVRI(L,=`0t*'B9Aô.rBZC;5`AŊTy-I~u);^+;V N˽Y4OsVsK{k[kyY~M}<3sڍIH?8>Tu /wy#`%8JvOq,NrEn 彑.j+ xb3Z3ഓi +aBn1炍((͎'|&F˘.:ZnX\u%|F)9OIo 2#UӨ|nnvo! 1QX4YZU8a]f?5h. Z&i?ɭ;.hn2y >P _z##箊 XK`[ᆙ뎊FkrmO)91,[))d\0-_8NYxG> ERFx>-2* +<Z!9:Ʈi;$睃LjC;۔;`[պk,[]>S.;(rt\MCc\xfY'x?taݡKihb*l9U2zX¾VKj]0 &~hM(C&=arzN'5+ŘHCh1:Z =cXh11E=GUaIpiUJP1c-zr*^Z Z N-FG8 `bThqncEŨ팢-.@Q5h1:Qr,{A+W-F}c-F7 +@=ޙr6R s _-E< nb񪉉ۻˣsۻqCaƁr.Ca;*+$k GÏUyf)7 )`}%D5՝ q$cōLdw^}0(yu뻕p x4EpRQAA%l@Yt6B!t=gh 8{ {Nuk,W98¥8KRyV!.ŞC}KP'"`n:=L +͛P+<0(pmoAb.fԱR[\]71#ݗ + + fm0184 0`7 +2*\A7VAՀizi9:O/e4VK>MD6H;@' [$ }6Md[5P)r5h7׳!2;r1j/r #KӰ g9VP +6JjyFX0\@ ˰n*q:C{SXD Սem7|@ >&ǨE%bjB;$L1stZ90z7Mnjbw6z=כX=Ǻi`yi1ziqzaZ47/\pz0z:0z~wpzިqN_:zJ2{:sZEϧ3CbP]gl98+z~/E*bFFs^\;Z=a1Pa,rU,l{nbd]Z,8 QNwdGmLQ,ۇD 3cBDzlPQ,=ebٕSxk|{wƲLe˘ +8z觖`n]SQcVV*0v j 9FEQSpj٪RgJu#h:v'f|Qop W1:WZh+Dn׸wVS8=BW?JW<+I93غ(%2ZfgyepX8+'"g釗4:@T"xYc4*u^ _ GdF^x`ڦz O}S@2^W +S֛xYZs m/>^d +}D(@қªv1'OeO1Dsʃ2M5)!am"kc6xZ)Ah~J'$}aRQ.zN'XM~:5pX(cJs#2K s&2Di$X?+{1=E=9bZ2ܴ6qoVʆ)?lvynvΣgKYzE7^< 5jtԚr #RzЇLEţٸ +eue9wNzlesM;`kh5u!?ӤzNir㛇h-Ӏh0hNY8O;,O%#R.:I5/=}ׯ4Nғ6?Z:oQuvO?x!>VNz|·,hu`" b"(YI믄k_(TzT[~/GKĈc B0^C47:y2aĆa8ϟ}F endstream endobj -2005 0 obj +2104 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 2004 0 R +/Contents 2103 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -2006 0 obj +2105 0 obj << /Filter /FlateDecode -/Length 4071 +/Length 4068 >> stream -x]Ko$W@hB@ AV%`n6.6)!,3ͪXX$[w`gΜ/}%WsHgoA3gBpRhᧇ<]Pq !%3"Xo'-~÷O/}xA@S&fB%_Ll*).to@Mt4Y )O?чjfe2w9] `o:EQ>|y/?w><"w=uhӖk.VF}jHQB(D$shC;Ok}۱ܑzяir?~Xu~I59 ۤAT`JOô\×3e:p5x8 !}+jv&v߿rjT5]췖IVH몙`(yAC m 7P"סsy c'xS(!"B@R/ǘ?PF}9<=_"Y -6`x-XHlbPfB$IPzC Bcɽ] /n/SxR̟QgHkw 0vu,C1,tY^IzkkKzu}6}FOr'=A׆K̊k@"@KR6AO@|{~=@u;%w1(V13~YsGxYZddUdp_1rA3/Uc'qԉ|>t3k٠tЋ4p7L!;̧ك{zF/wAW|F13;QXLif=S ݪ%lvVzG y3`y">sBg񀞖N?VJ8svY{W[AblC&-ˡաXq:PeZ4e]BB( -qBll{K'*"boDp (Wwtѡ {]Y,Z#P f*vWZa[M.z-yyv{xJr5,dƥ7AIV~`aAMPvKۇ=H<e{)]+pcb22ՄR!^LebN3[[VlDMd9hɔj^8Jg&$S^my:p%qB/QQy}̪yMo"וao"6vƏV߈Ey&yQp+ϯ>"ʼ_cGDSGEzpz@QRAkqLR]n+pL $3QDqgZ[g[t4@eg .AAɉ質زكj_U]iV7f_ -T s^@Q_Ld.M䫐.;[51`@4Q2q9DwLzd]<b)}HløOQm!coIC"2Q\oDZ -Z"2Q6ERion"!{-]S, %(5"0\72w s6_fD:ONr*О٩("FDDvW=sdv%69xD8n7Pl' 7ޤU]\_^i !IHSM:Pp$Q$M\w6hY}'?_(|7M5#r쇊"~z,9T\Q$ h߫&#ڎ2}`p8}",&2eI<0Q(J>:-'Qc/Ѱ}DoGql\]vFZFԪsw҉97D9O]@F[æG -)38Ы)Ƚ䶕e/5νhQ.#gcU/Lw@FC:?[y+l[t؁hd\;`sT9Z0;Q_ `x#5A5NxH[Ţj3hPʞ>6"T͟V غZ(l$4qQh8tR"F}m9 -Rma -T hhD}}4,-#qMC(Ij=S5EM.f᚞1@MUBM ר8j~bK屫D2eN׸+t-G(t[&!0 -Y)b 0 N@7>gRGGޕNSa*<=^g +x]Ko$W@hB@HM A;%`)b?MJ!+˒zYU_dqy-Y}gpQ^3|sHgoA3gBpRh釧?]Pq !%3"Xo;-~/OyzA@S&fB%??TR]WuYU+_i5=.&S.Z٣7 KeW`s1:u@mAs}?Mf?<}0Bskul^1|>z>~W4 i5+MR> ߎGZiw$ۨg!^zyUw I>ҡzh!>XkuJ?=g^<9?.:I59 ۤAT`JOô\×3e:p5x8 !^QQʕ5W܀^h|\.&UMeRxIjf-$J@A@%vu}_BP9t(,A4/AnB~6f|;+={#z|D<<| 9ܳx@OK+%9 VJ,%'%*QH@^bXlsOZoiyPd/w$hZ Tt8]]xT,Xɕ v2 +B8k@t_tQ,YH ) (:$656bf"h$ULA=28{|,i$Zyfh$-X%cJݍ)U)b>[-Qt/D1G-5 +DwKB1eY3ZKs$*W0 FPE^X)HYSȽYL[ePb4Lk]@8&TLJDyfG),v=׽eC_A|^x⽧a`{ـ"no ~(eR\mTb`Sdw 1>7BĹҍy&Ũ}"?nC̶b}Yzɫ Nd‰Dolw4r +VzǬ@rɹSTh2DɊ.Xl`(LKDn1kmCi^m!xO`/ѝ DCD2#].LB/l~Q(E'銳fC̣Lωb]猣͢DT46zhldj>xJ4C_k]*%maZD%pG +Tז*I5xAq6l.w^2,BÎ>]@uжKhDxy&j9 Uºb=/+4hOEtf$DyHlHs %Vmcq*m!In6eD;;"N>5Y]:LnX&ʋM6 dA}$RJuT[ǓH)uP\\Հ)f>6jK^@f^ ` /eyKo͇Mu=%,aD ,ܲ T  KJZB0l2"QvbQRWЀrVA~>ېIrnu"F,E(Ʋ-.T !Mf8BPX6 +M  +7v"ʋ٫;^:PE콮, (@3u]l0EN˦p=_ \*Hq7?:Y?rZMك_7q.!qžt&(LTU{klכC,E9(R189}V[6{P*\+&rqtPSp 9Jҥ|ҥZt& R&jY&.gIlgC,R{)@|2p ͜=ihPD&TC1=@KD>*"S1|y_7ƾ\Bj;qM$Dbowsk6#W޾D|5EE&[{&BΓafLQTN? =X";>BH7Nqb๘svDPr& Qƻ +񼋋˫=!$ ɷ4z6I'*Ξ7*&: 囹ƃ2<}D]Pq0SO%+<]\A{:zUۑY nOeDҴ F1 +Z=^gb:j;ohWM@2˂VH߈Zu.Y:Q (#˖Ȩt>vtؔBA؀4qz<7ܶp&ڹw 3*el,8Ѵ"Q^)hhh9#ug+/{m ;v؁a޼p*T F}'kud{?FpC)iXTm +3U^*:[W փ8" + NZ*[ȸ-GA !;lPajA-"Q^He$i(0)Pm> endobj -2008 0 obj +2107 0 obj << /Filter /FlateDecode -/Length 3463 +/Length 3459 >> stream x]Ɏ)p_ÇNrH$9tksx@~RU_KKl;qCVwI,J%N*c @@ -29055,2114 +30254,2390 @@ j ~q%ajGv_oCs65q]IӪuFKMrsOvힹָٮ0sO\":*52-;Ĩs4S3vi?;jnj2v^!mzOy-Jc_z[Z2nvmH"9`acez4wqruq[pvXXb3`]#N_K ى^`3wr4\5J-֦drܦhN9&_^*x~YtAMcWMụDU: p6Q2/`6 +CG}:^ܞ:AnwM93~rS~ eE'G5ƣ}'PbyuSD摵RyDqa2/H։PK sl>b|$~~(cv%=<;!b׆( iwy `mw{ Νmp;[_ u)zZ_olg ;c0;m *b-(aGzص=ް\;> (܎ e1G~O;Q|5 g g -3%FLG1:kz(}No OG/oEqg0:c# Xv\bvY{ FvYJB9@XoHqj>~x&wG72ϕe\Ds'^.菗F%(Ce !4}d#g!׽3A/jZj|L^=ky>H=g܎l{޸6SɏԢn *ڽo;|jWډ\=a#VD??}8gݢP"Hj˜Na_xe)2.\̯EiƇի9(bNʬ_t:yH+u{F+wy]@-&ݰAI\/7?ݕa,B!o4}9+@zt> +3%FLG1:kz(}No OG/oEqg0:c# Xv\bvY{ FvYJB9@XoHqj>~x&wG72ϕe\Ds'^.菗F%(Ce !4}d#g!׽3A/jZj|L^=ky>H=g܎l{޸6SɏԢn *ڽo;|jWډ\=a#VD??}8gݢP"(aP?:̽)owLrղ].Wբ4C 1'e/G:FRsM.G @bn،$gƛ|~ʰrғLx»*l-P,?̼> endstream endobj -2009 0 obj +2108 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275591 841.889764 ] -/Contents 2008 0 R +/Contents 2107 0 R /Resources 4 0 R /TrimBox [ 0 0 595.275591 841.889764 ] /BleedBox [ 0 0 595.275591 841.889764 ] >> endobj -2010 0 obj +2109 0 obj << /Title (Documentation Track Trends) /Dest [ 6 0 R /XYZ 69.746457 512.280482 0 ] /Count 0 -/Next 2011 0 R -/Parent 2200 0 R ->> -endobj -2011 0 obj -<< -/Title (1. Rapport Track Trends V1.0) -/Dest [ 510 0 R /XYZ 39.386457 757.223622 0 ] -/Count 98 -/Prev 2010 0 R -/First 2012 0 R -/Last 2109 0 R /Next 2110 0 R -/Parent 2200 0 R ->> -endobj -2012 0 obj -<< -/Title (1.1 Introduction) -/Dest [ 516 0 R /XYZ 39.386457 723.165222 0 ] -/Count 3 -/First 2013 0 R -/Last 2015 0 R -/Parent 2011 0 R -/Next 2016 0 R ->> -endobj -2013 0 obj -<< -/Title -/Dest [ 516 0 R /XYZ 39.386457 667.603722 0 ] -/Count 0 -/Parent 2012 0 R -/Next 2014 0 R ->> -endobj -2014 0 obj -<< -/Title (1.1.2 Abstract) -/Dest [ 522 0 R /XYZ 39.386457 771.023622 0 ] -/Count 0 -/Prev 2013 0 R -/Parent 2012 0 R -/Next 2015 0 R ->> -endobj -2015 0 obj -<< -/Title (1.1.3 Description du besoin) -/Dest [ 522 0 R /XYZ 39.386457 343.911222 0 ] -/Count 0 -/Prev 2014 0 R -/Parent 2012 0 R ->> -endobj -2016 0 obj -<< -/Title (1.2 Cahier des charges) -/Dest [ 524 0 R /XYZ 39.386457 550.499622 0 ] -/Count 4 -/Prev 2012 0 R -/First 2017 0 R -/Last 2020 0 R -/Parent 2011 0 R -/Next 2021 0 R ->> -endobj -2017 0 obj -<< -/Title (1.2.1 Projet) -/Dest [ 524 0 R /XYZ 39.386457 435.818922 0 ] -/Count 0 -/Parent 2016 0 R -/Next 2018 0 R ->> -endobj -2018 0 obj -<< -/Title -/Dest [ 526 0 R /XYZ 39.386457 771.023622 0 ] -/Count 0 -/Prev 2017 0 R -/Parent 2016 0 R -/Next 2019 0 R ->> -endobj -2019 0 obj -<< -/Title (1.2.3 Cas d'utilisation) -/Dest [ 534 0 R /XYZ 39.386457 412.926066 0 ] -/Count 0 -/Prev 2018 0 R -/Parent 2016 0 R -/Next 2020 0 R ->> -endobj -2020 0 obj -<< -/Title -/Dest [ 538 0 R /XYZ 39.386457 638.709222 0 ] -/Count 0 -/Prev 2019 0 R -/Parent 2016 0 R ->> -endobj -2021 0 obj -<< -/Title -/Dest [ 538 0 R /XYZ 39.386457 368.746422 0 ] -/Count 0 -/Prev 2016 0 R -/Parent 2011 0 R -/Next 2022 0 R ->> -endobj -2022 0 obj -<< -/Title -/Dest [ 551 0 R /XYZ 39.386457 268.716368 0 ] -/Count 19 -/Prev 2021 0 R -/First 2023 0 R -/Last 2023 0 R -/Parent 2011 0 R -/Next 2042 0 R ->> -endobj -2023 0 obj -<< -/Title -/Dest [ 555 0 R /XYZ 39.386457 771.023622 0 ] -/Count 18 -/First 2024 0 R -/Last 2039 0 R -/Parent 2022 0 R ->> -endobj -2024 0 obj -<< -/Title (PT) -/Dest [ 555 0 R /XYZ 42.836457 580.332822 0 ] -/Count 1 -/First 2025 0 R -/Last 2025 0 R -/Parent 2023 0 R -/Next 2026 0 R ->> -endobj -2025 0 obj -<< -/Title -/Dest [ 555 0 R /XYZ 42.836457 531.536022 0 ] -/Count 0 -/Parent 2024 0 R ->> -endobj -2026 0 obj -<< -/Title (DT) -/Dest [ 555 0 R /XYZ 42.836457 404.984502 0 ] -/Count 6 -/Prev 2024 0 R -/First 2027 0 R -/Last 2032 0 R -/Parent 2023 0 R -/Next 2033 0 R ->> -endobj -2027 0 obj -<< -/Title -/Dest [ 555 0 R /XYZ 42.836457 341.173302 0 ] -/Count 0 -/Parent 2026 0 R -/Next 2028 0 R ->> -endobj -2028 0 obj -<< -/Title (DT2 Documentation Analyse de l'existant \(2\)) -/Dest [ 555 0 R /XYZ 42.836457 225.937782 0 ] -/Count 0 -/Prev 2027 0 R -/Parent 2026 0 R -/Next 2029 0 R ->> -endobj -2029 0 obj -<< -/Title (DT3 Documentation Analyse organique \(5\)) -/Dest [ 555 0 R /XYZ 42.836457 140.731062 0 ] -/Count 0 -/Prev 2028 0 R -/Parent 2026 0 R -/Next 2030 0 R ->> -endobj -2030 0 obj -<< -/Title (DT4 Documentation Analyse fonctionnelle \(2\)) -/Dest [ 557 0 R /XYZ 42.836457 692.198022 0 ] -/Count 0 -/Prev 2029 0 R -/Parent 2026 0 R -/Next 2031 0 R ->> -endobj -2031 0 obj -<< -/Title (DT5 Documentation Tests \(1\)) -/Dest [ 557 0 R /XYZ 42.836457 552.564102 0 ] -/Count 0 -/Prev 2030 0 R -/Parent 2026 0 R -/Next 2032 0 R ->> -endobj -2032 0 obj -<< -/Title (DT6 Documentation Reste \(2\)) -/Dest [ 557 0 R /XYZ 42.836457 476.741382 0 ] -/Count 0 -/Prev 2031 0 R -/Parent 2026 0 R ->> -endobj -2033 0 obj -<< -/Title (PT) -/Dest [ 557 0 R /XYZ 42.836457 374.588262 0 ] -/Count 5 -/Prev 2026 0 R -/First 2034 0 R -/Last 2038 0 R -/Parent 2023 0 R -/Next 2039 0 R ->> -endobj -2034 0 obj -<< -/Title -/Dest [ 557 0 R /XYZ 42.836457 310.777062 0 ] -/Count 0 -/Parent 2033 0 R -/Next 2035 0 R ->> -endobj -2035 0 obj -<< -/Title (PT2 Programmation OCR \(5\)) -/Dest [ 559 0 R /XYZ 42.836457 771.023622 0 ] -/Count 0 -/Prev 2034 0 R -/Parent 2033 0 R -/Next 2036 0 R ->> -endobj -2036 0 obj -<< -/Title -/Dest [ 559 0 R /XYZ 42.836457 625.759302 0 ] -/Count 0 -/Prev 2035 0 R -/Parent 2033 0 R -/Next 2037 0 R ->> -endobj -2037 0 obj -<< -/Title (PT4 Programmation Vue de l'APP \(5\)) -/Dest [ 559 0 R /XYZ 42.836457 495.509382 0 ] -/Count 0 -/Prev 2036 0 R -/Parent 2033 0 R -/Next 2038 0 R ->> -endobj -2038 0 obj -<< -/Title (PT5 Programmation mise en commun \(3\)) -/Dest [ 559 0 R /XYZ 42.836457 365.259462 0 ] -/Count 0 -/Prev 2037 0 R -/Parent 2033 0 R ->> -endobj -2039 0 obj -<< -/Title (TT) -/Dest [ 559 0 R /XYZ 42.836457 238.707942 0 ] -/Count 2 -/Prev 2033 0 R -/First 2040 0 R -/Last 2041 0 R -/Parent 2023 0 R ->> -endobj -2040 0 obj -<< -/Title (TT1 Tests OCR \(2\)) -/Dest [ 559 0 R /XYZ 42.836457 174.896742 0 ] -/Count 0 -/Parent 2039 0 R -/Next 2041 0 R ->> -endobj -2041 0 obj -<< -/Title (TT2 Tests finaux \(2\)) -/Dest [ 561 0 R /XYZ 42.836457 662.169222 0 ] -/Count 0 -/Prev 2040 0 R -/Parent 2039 0 R ->> -endobj -2042 0 obj -<< -/Title -/Dest [ 561 0 R /XYZ 39.386457 517.843302 0 ] -/Count 0 -/Prev 2022 0 R -/Parent 2011 0 R -/Next 2043 0 R ->> -endobj -2043 0 obj -<< -/Title (1.6 Analyse fonctionnelle) -/Dest [ 563 0 R /XYZ 39.386457 335.606022 0 ] -/Count 0 -/Prev 2042 0 R -/Parent 2011 0 R -/Next 2044 0 R ->> -endobj -2044 0 obj -<< -/Title (1.7 Analyse Organique) -/Dest [ 563 0 R /XYZ 39.386457 246.262122 0 ] -/Count 50 -/Prev 2043 0 R -/First 2045 0 R -/Last 2089 0 R -/Parent 2011 0 R -/Next 2095 0 R ->> -endobj -2045 0 obj -<< -/Title -/Dest [ 563 0 R /XYZ 39.386457 190.700622 0 ] -/Count 4 -/First 2046 0 R -/Last 2049 0 R -/Parent 2044 0 R -/Next 2050 0 R ->> -endobj -2046 0 obj -<< -/Title (Visual Studio 2022) -/Dest [ 563 0 R /XYZ 42.836457 163.346622 0 ] -/Count 0 -/Parent 2045 0 R -/Next 2047 0 R ->> -endobj -2047 0 obj -<< -/Title (Visual Studio Code) -/Dest [ 566 0 R /XYZ 42.836457 298.274022 0 ] -/Count 0 -/Prev 2046 0 R -/Parent 2045 0 R -/Next 2048 0 R ->> -endobj -2048 0 obj -<< -/Title (Material/Mkdocs/Markdown) -/Dest [ 575 0 R /XYZ 42.836457 771.023622 0 ] -/Count 0 -/Prev 2047 0 R -/Parent 2045 0 R -/Next 2049 0 R ->> -endobj -2049 0 obj -<< -/Title (Figma) -/Dest [ 575 0 R /XYZ 42.836457 270.006822 0 ] -/Count 0 -/Prev 2048 0 R -/Parent 2045 0 R ->> -endobj -2050 0 obj -<< -/Title -/Dest [ 585 0 R /XYZ 39.386457 771.023622 0 ] -/Count 5 -/Prev 2045 0 R -/First 2051 0 R -/Last 2055 0 R -/Parent 2044 0 R -/Next 2056 0 R ->> -endobj -2051 0 obj -<< -/Title (Selenium) -/Dest [ 585 0 R /XYZ 42.836457 653.528022 0 ] -/Count 0 -/Parent 2050 0 R -/Next 2052 0 R ->> -endobj -2052 0 obj -<< -/Title (CSharp) -/Dest [ 597 0 R /XYZ 42.836457 487.571622 0 ] -/Count 0 -/Prev 2051 0 R -/Parent 2050 0 R -/Next 2053 0 R ->> -endobj -2053 0 obj -<< -/Title (Python?) -/Dest [ 602 0 R /XYZ 42.836457 517.600422 0 ] -/Count 0 -/Prev 2052 0 R -/Parent 2050 0 R -/Next 2054 0 R ->> -endobj -2054 0 obj -<< -/Title (Firefox) -/Dest [ 607 0 R /XYZ 42.836457 389.978022 0 ] -/Count 0 -/Prev 2053 0 R -/Parent 2050 0 R -/Next 2055 0 R ->> -endobj -2055 0 obj -<< -/Title (Tesseract) -/Dest [ 614 0 R /XYZ 42.836457 611.440422 0 ] -/Count 0 -/Prev 2054 0 R -/Parent 2050 0 R ->> -endobj -2056 0 obj -<< -/Title -/Dest [ 614 0 R /XYZ 39.386457 435.021222 0 ] -/Count 5 -/Prev 2050 0 R -/First 2057 0 R -/Last 2061 0 R -/Parent 2044 0 R -/Next 2062 0 R ->> -endobj -2057 0 obj -<< -/Title (Les briques principales) -/Dest [ 614 0 R /XYZ 42.836457 326.909622 0 ] -/Count 3 -/First 2058 0 R -/Last 2060 0 R -/Parent 2056 0 R -/Next 2061 0 R ->> -endobj -2058 0 obj -<< -/Title -/Dest [ 614 0 R /XYZ 42.836457 263.098422 0 ] -/Count 0 -/Parent 2057 0 R -/Next 2059 0 R ->> -endobj -2059 0 obj -<< -/Title (OCR) -/Dest [ 617 0 R /XYZ 42.836457 95.795299 0 ] -/Count 0 -/Prev 2058 0 R -/Parent 2057 0 R -/Next 2060 0 R ->> -endobj -2060 0 obj -<< -/Title (Traitement et affichage) -/Dest [ 622 0 R /XYZ 42.836457 122.598958 0 ] -/Count 0 -/Prev 2059 0 R -/Parent 2057 0 R ->> -endobj -2061 0 obj -<< -/Title -/Dest [ 627 0 R /XYZ 42.836457 187.703299 0 ] -/Count 0 -/Prev 2057 0 R -/Parent 2056 0 R ->> -endobj -2062 0 obj -<< -/Title -/Dest [ 636 0 R /XYZ 39.386457 253.026822 0 ] -/Count 10 -/Prev 2056 0 R -/First 2063 0 R -/Last 2067 0 R -/Parent 2044 0 R -/Next 2073 0 R ->> -endobj -2063 0 obj -<< -/Title (Comment faire ?) -/Dest [ 645 0 R /XYZ 42.836457 735.309222 0 ] -/Count 0 -/Parent 2062 0 R -/Next 2064 0 R ->> -endobj -2064 0 obj -<< -/Title (Simuler un navigateur ?) -/Dest [ 645 0 R /XYZ 42.836457 106.526022 0 ] -/Count 0 -/Prev 2063 0 R -/Parent 2062 0 R -/Next 2065 0 R ->> -endobj -2065 0 obj -<< -/Title -/Dest [ 652 0 R /XYZ 42.836457 387.800022 0 ] -/Count 0 -/Prev 2064 0 R -/Parent 2062 0 R -/Next 2066 0 R ->> -endobj -2066 0 obj -<< -/Title -/Dest [ 659 0 R /XYZ 42.836457 409.684422 0 ] -/Count 0 -/Prev 2065 0 R -/Parent 2062 0 R -/Next 2067 0 R ->> -endobj -2067 0 obj -<< -/Title (Calibration) -/Dest [ 667 0 R /XYZ 42.836457 579.426906 0 ] -/Count 5 -/Prev 2066 0 R -/First 2068 0 R -/Last 2072 0 R -/Parent 2062 0 R ->> -endobj -2068 0 obj -<< -/Title (Liste des pilotes) -/Dest [ 669 0 R /XYZ 42.836457 771.023622 0 ] -/Count 0 -/Parent 2067 0 R -/Next 2069 0 R ->> -endobj -2069 0 obj -<< -/Title (Zone principale) -/Dest [ 669 0 R /XYZ 42.836457 640.773702 0 ] -/Count 0 -/Prev 2068 0 R -/Parent 2067 0 R -/Next 2070 0 R ->> -endobj -2070 0 obj -<< -/Title (Zones pilotes) -/Dest [ 669 0 R /XYZ 42.836457 316.153201 0 ] -/Count 0 -/Prev 2069 0 R -/Parent 2067 0 R -/Next 2071 0 R ->> -endobj -2071 0 obj -<< -/Title (Windows pilotes) -/Dest [ 679 0 R /XYZ 42.836457 363.762714 0 ] -/Count 0 -/Prev 2070 0 R -/Parent 2067 0 R -/Next 2072 0 R ->> -endobj -2072 0 obj -<< -/Title (Stockage) -/Dest [ 688 0 R /XYZ 42.836457 646.430022 0 ] -/Count 0 -/Prev 2071 0 R -/Parent 2067 0 R ->> -endobj -2073 0 obj -<< -/Title (1.7.5 OCR) -/Dest [ 696 0 R /XYZ 39.386457 303.179610 0 ] -/Count 9 -/Prev 2062 0 R -/First 2074 0 R -/Last 2074 0 R -/Parent 2044 0 R -/Next 2083 0 R ->> -endobj -2074 0 obj -<< -/Title -/Dest [ 698 0 R /XYZ 42.836457 771.023622 0 ] -/Count 8 -/First 2075 0 R -/Last 2075 0 R -/Parent 2073 0 R ->> -endobj -2075 0 obj -<< -/Title (Filtres et traitement) -/Dest [ 732 0 R /XYZ 42.836457 237.136277 0 ] -/Count 7 -/First 2076 0 R -/Last 2082 0 R -/Parent 2074 0 R ->> -endobj -2076 0 obj -<< -/Title (Texte) -/Dest [ 754 0 R /XYZ 42.836457 369.234822 0 ] -/Count 0 -/Parent 2075 0 R -/Next 2077 0 R ->> -endobj -2077 0 obj -<< -/Title (Chiffres) -/Dest [ 775 0 R /XYZ 42.836457 460.413222 0 ] -/Count 0 -/Prev 2076 0 R -/Parent 2075 0 R -/Next 2078 0 R ->> -endobj -2078 0 obj -<< -/Title (les chiffres \(2\)) -/Dest [ 799 0 R /XYZ 42.836457 569.267622 0 ] -/Count 0 -/Prev 2077 0 R -/Parent 2075 0 R -/Next 2079 0 R ->> -endobj -2079 0 obj -<< -/Title (Pneus) -/Dest [ 799 0 R /XYZ 42.836457 523.473702 0 ] -/Count 0 -/Prev 2078 0 R -/Parent 2075 0 R -/Next 2080 0 R ->> -endobj -2080 0 obj -<< -/Title (DRS) -/Dest [ 865 0 R /XYZ 42.836457 584.282022 0 ] -/Count 0 -/Prev 2079 0 R -/Parent 2075 0 R -/Next 2081 0 R ->> -endobj -2081 0 obj -<< -/Title (Filtres et methodes sur les images) -/Dest [ 865 0 R /XYZ 42.836457 523.473702 0 ] -/Count 0 -/Prev 2080 0 R -/Parent 2075 0 R -/Next 2082 0 R ->> -endobj -2082 0 obj -<< -/Title -/Dest [ 879 0 R /XYZ 42.836457 371.265222 0 ] -/Count 0 -/Prev 2081 0 R -/Parent 2075 0 R ->> -endobj -2083 0 obj -<< -/Title -/Dest [ 905 0 R /XYZ 39.386457 195.312822 0 ] -/Count 0 -/Prev 2073 0 R -/Parent 2044 0 R -/Next 2084 0 R ->> -endobj -2084 0 obj -<< -/Title -/Dest [ 917 0 R /XYZ 39.386457 572.502822 0 ] -/Count 4 -/Prev 2083 0 R -/First 2085 0 R -/Last 2086 0 R -/Parent 2044 0 R -/Next 2089 0 R ->> -endobj -2085 0 obj -<< -/Title -/Dest [ 923 0 R /XYZ 42.836457 353.394469 0 ] -/Count 0 -/Parent 2084 0 R -/Next 2086 0 R ->> -endobj -2086 0 obj -<< -/Title (Quand remplir la base ?) -/Dest [ 927 0 R /XYZ 42.836457 256.212822 0 ] -/Count 2 -/Prev 2085 0 R -/First 2087 0 R -/Last 2088 0 R -/Parent 2084 0 R ->> -endobj -2087 0 obj -<< -/Title (Quand un pilote a finit un tour) -/Dest [ 929 0 R /XYZ 42.836457 746.625222 0 ] -/Count 0 -/Parent 2086 0 R -/Next 2088 0 R ->> -endobj -2088 0 obj -<< -/Title -/Dest [ 931 0 R /XYZ 42.836457 771.023622 0 ] -/Count 0 -/Prev 2087 0 R -/Parent 2086 0 R ->> -endobj -2089 0 obj -<< -/Title -/Dest [ 936 0 R /XYZ 39.386457 722.226822 0 ] -/Count 5 -/Prev 2084 0 R -/First 2090 0 R -/Last 2094 0 R -/Parent 2044 0 R ->> -endobj -2090 0 obj -<< -/Title (Affichage direct) -/Dest [ 936 0 R /XYZ 42.836457 580.332822 0 ] -/Count 0 -/Parent 2089 0 R -/Next 2091 0 R ->> -endobj -2091 0 obj -<< -/Title -/Dest [ 941 0 R /XYZ 42.836457 716.541222 0 ] -/Count 2 -/Prev 2090 0 R -/First 2092 0 R -/Last 2093 0 R -/Parent 2089 0 R -/Next 2094 0 R ->> -endobj -2092 0 obj -<< -/Title (Affichage Hybride) -/Dest [ 941 0 R /XYZ 42.836457 667.744422 0 ] -/Count 0 -/Parent 2091 0 R -/Next 2093 0 R ->> -endobj -2093 0 obj -<< -/Title -/Dest [ 951 0 R /XYZ 42.836457 353.735622 0 ] -/Count 0 -/Prev 2092 0 R -/Parent 2091 0 R ->> -endobj -2094 0 obj -<< -/Title -/Dest [ 961 0 R /XYZ 42.836457 595.529850 0 ] -/Count 0 -/Prev 2091 0 R -/Parent 2089 0 R ->> -endobj -2095 0 obj -<< -/Title (1.8 Tests) -/Dest [ 961 0 R /XYZ 39.386457 211.724250 0 ] -/Count 3 -/Prev 2044 0 R -/First 2096 0 R -/Last 2098 0 R -/Parent 2011 0 R -/Next 2099 0 R ->> -endobj -2096 0 obj -<< -/Title -/Dest [ 963 0 R /XYZ 39.386457 682.814022 0 ] -/Count 0 -/Parent 2095 0 R -/Next 2097 0 R ->> -endobj -2097 0 obj -<< -/Title (1.8.2 Comment ca aurait du se passer) -/Dest [ 968 0 R /XYZ 39.386457 250.947249 0 ] -/Count 0 -/Prev 2096 0 R -/Parent 2095 0 R -/Next 2098 0 R ->> -endobj -2098 0 obj -<< -/Title (1.8.3 Lecons) -/Dest [ 972 0 R /XYZ 39.386457 613.372422 0 ] -/Count 0 -/Prev 2097 0 R -/Parent 2095 0 R ->> -endobj -2099 0 obj -<< -/Title -/Dest [ 972 0 R /XYZ 39.386457 478.102422 0 ] -/Count 3 -/Prev 2095 0 R -/First 2100 0 R -/Last 2102 0 R -/Parent 2011 0 R -/Next 2103 0 R ->> -endobj -2100 0 obj -<< -/Title (1.9.1 Browser Headless) -/Dest [ 972 0 R /XYZ 39.386457 324.008922 0 ] -/Count 0 -/Parent 2099 0 R -/Next 2101 0 R ->> -endobj -2101 0 obj -<< -/Title (1.9.2 OCR) -/Dest [ 974 0 R /XYZ 39.386457 613.372422 0 ] -/Count 0 -/Prev 2100 0 R -/Parent 2099 0 R -/Next 2102 0 R ->> -endobj -2102 0 obj -<< -/Title (1.9.3 Stockage) -/Dest [ 974 0 R /XYZ 39.386457 195.644022 0 ] -/Count 0 -/Prev 2101 0 R -/Parent 2099 0 R ->> -endobj -2103 0 obj -<< -/Title (1.10 Optimisation du programme) -/Dest [ 976 0 R /XYZ 39.386457 717.534822 0 ] -/Count 0 -/Prev 2099 0 R -/Parent 2011 0 R -/Next 2104 0 R ->> -endobj -2104 0 obj -<< -/Title (1.11 Ethique du projet) -/Dest [ 976 0 R /XYZ 39.386457 459.278922 0 ] -/Count 0 -/Prev 2103 0 R -/Parent 2011 0 R -/Next 2105 0 R ->> -endobj -2105 0 obj -<< -/Title (1.12 Utilisation de Chat GPT) -/Dest [ 976 0 R /XYZ 39.386457 354.920622 0 ] -/Count 0 -/Prev 2104 0 R -/Parent 2011 0 R -/Next 2106 0 R ->> -endobj -2106 0 obj -<< -/Title -/Dest [ 976 0 R /XYZ 39.386457 265.576722 0 ] -/Count 0 -/Prev 2105 0 R -/Parent 2011 0 R -/Next 2107 0 R ->> -endobj -2107 0 obj -<< -/Title (1.14 Conclusion) -/Dest [ 976 0 R /XYZ 39.386457 176.232822 0 ] -/Count 0 -/Prev 2106 0 R -/Parent 2011 0 R -/Next 2108 0 R ->> -endobj -2108 0 obj -<< -/Title (1.15 Notes de code) -/Dest [ 978 0 R /XYZ 39.386457 771.023622 0 ] -/Count 0 -/Prev 2107 0 R -/Parent 2011 0 R -/Next 2109 0 R ->> -endobj -2109 0 obj -<< -/Title (1.16 Glossaire) -/Dest [ 978 0 R /XYZ 39.386457 710.770122 0 ] -/Count 0 -/Prev 2108 0 R -/Parent 2011 0 R +/Parent 2326 0 R >> endobj 2110 0 obj << -/Title (2. Cahier des charges) -/Dest [ 980 0 R /XYZ 39.386457 757.223622 0 ] -/Count 5 -/Prev 2011 0 R +/Title (1. Rapport Track Trends V1.0) +/Dest [ 575 0 R /XYZ 39.386457 757.223622 0 ] +/Count 126 +/Prev 2109 0 R /First 2111 0 R -/Last 2115 0 R -/Next 2116 0 R -/Parent 2200 0 R +/Last 2236 0 R +/Next 2237 0 R +/Parent 2326 0 R >> endobj 2111 0 obj << -/Title (2.1 Contexte) -/Dest [ 980 0 R /XYZ 39.386457 669.390822 0 ] -/Count 0 +/Title (1.1 Introduction) +/Dest [ 581 0 R /XYZ 39.386457 723.165222 0 ] +/Count 3 +/First 2112 0 R +/Last 2114 0 R /Parent 2110 0 R -/Next 2112 0 R +/Next 2115 0 R >> endobj 2112 0 obj << -/Title (2.2 Projet) -/Dest [ 985 0 R /XYZ 39.386457 124.199039 0 ] +/Title +/Dest [ 581 0 R /XYZ 39.386457 667.603722 0 ] /Count 0 -/Prev 2111 0 R -/Parent 2110 0 R +/Parent 2111 0 R /Next 2113 0 R >> endobj 2113 0 obj << -/Title -/Dest [ 989 0 R /XYZ 39.386457 436.953222 0 ] +/Title (1.1.2 Abstract) +/Dest [ 587 0 R /XYZ 39.386457 771.023622 0 ] /Count 0 /Prev 2112 0 R -/Parent 2110 0 R +/Parent 2111 0 R /Next 2114 0 R >> endobj 2114 0 obj << -/Title (2.4 Cas d'utilisation) -/Dest [ 1001 0 R /XYZ 39.386457 771.023622 0 ] +/Title (1.1.3 Description du besoin) +/Dest [ 587 0 R /XYZ 39.386457 343.911222 0 ] /Count 0 /Prev 2113 0 R -/Parent 2110 0 R -/Next 2115 0 R +/Parent 2111 0 R >> endobj 2115 0 obj << -/Title -/Dest [ 1003 0 R /XYZ 39.386457 771.023622 0 ] -/Count 0 -/Prev 2114 0 R +/Title (1.2 Cahier des charges) +/Dest [ 589 0 R /XYZ 39.386457 550.499622 0 ] +/Count 4 +/Prev 2111 0 R +/First 2116 0 R +/Last 2119 0 R /Parent 2110 0 R +/Next 2120 0 R >> endobj 2116 0 obj << -/Title (3. Manuel utilisateur) -/Dest [ 1005 0 R /XYZ 39.386457 757.223622 0 ] -/Count 19 -/Prev 2110 0 R -/First 2117 0 R -/Last 2135 0 R -/Next 2136 0 R -/Parent 2200 0 R +/Title (1.2.1 Projet) +/Dest [ 589 0 R /XYZ 39.386457 435.818922 0 ] +/Count 0 +/Parent 2115 0 R +/Next 2117 0 R >> endobj 2117 0 obj << -/Title (3.1 Installation) -/Dest [ 1005 0 R /XYZ 39.386457 707.865222 0 ] +/Title +/Dest [ 591 0 R /XYZ 39.386457 771.023622 0 ] /Count 0 -/Parent 2116 0 R +/Prev 2116 0 R +/Parent 2115 0 R /Next 2118 0 R >> endobj 2118 0 obj << -/Title (3.2 A quoi sert l'app ?) -/Dest [ 1005 0 R /XYZ 39.386457 608.700522 0 ] +/Title (1.2.3 Cas d'utilisation) +/Dest [ 599 0 R /XYZ 39.386457 412.926066 0 ] /Count 0 /Prev 2117 0 R -/Parent 2116 0 R +/Parent 2115 0 R /Next 2119 0 R >> endobj 2119 0 obj << -/Title (3.3 Utilisation "Simple") -/Dest [ 1005 0 R /XYZ 39.386457 391.297422 0 ] -/Count 2 +/Title +/Dest [ 603 0 R /XYZ 39.386457 638.709222 0 ] +/Count 0 /Prev 2118 0 R -/First 2120 0 R -/Last 2121 0 R -/Parent 2116 0 R -/Next 2122 0 R +/Parent 2115 0 R >> endobj 2120 0 obj << -/Title -/Dest [ 1014 0 R /XYZ 39.386457 347.470422 0 ] +/Title +/Dest [ 603 0 R /XYZ 39.386457 368.746422 0 ] /Count 0 -/Parent 2119 0 R +/Prev 2115 0 R +/Parent 2110 0 R /Next 2121 0 R >> endobj 2121 0 obj << -/Title (3.3.2 Boutons) -/Dest [ 1025 0 R /XYZ 39.386457 309.260718 0 ] -/Count 0 +/Title +/Dest [ 616 0 R /XYZ 39.386457 268.716368 0 ] +/Count 19 /Prev 2120 0 R -/Parent 2119 0 R +/First 2122 0 R +/Last 2122 0 R +/Parent 2110 0 R +/Next 2141 0 R >> endobj 2122 0 obj << -/Title (3.4 Calibration) -/Dest [ 1044 0 R /XYZ 39.386457 771.023622 0 ] -/Count 6 -/Prev 2119 0 R +/Title +/Dest [ 620 0 R /XYZ 39.386457 771.023622 0 ] +/Count 18 /First 2123 0 R -/Last 2128 0 R -/Parent 2116 0 R -/Next 2129 0 R +/Last 2138 0 R +/Parent 2121 0 R >> endobj 2123 0 obj << -/Title -/Dest [ 1044 0 R /XYZ 39.386457 661.536522 0 ] -/Count 0 +/Title (PT) +/Dest [ 620 0 R /XYZ 42.836457 580.332822 0 ] +/Count 1 +/First 2124 0 R +/Last 2124 0 R /Parent 2122 0 R -/Next 2124 0 R +/Next 2125 0 R >> endobj 2124 0 obj << -/Title -/Dest [ 1044 0 R /XYZ 39.386457 269.144922 0 ] -/Count 3 -/Prev 2123 0 R -/First 2125 0 R -/Last 2127 0 R -/Parent 2122 0 R -/Next 2128 0 R +/Title +/Dest [ 620 0 R /XYZ 42.836457 531.536022 0 ] +/Count 0 +/Parent 2123 0 R >> endobj 2125 0 obj << -/Title -/Dest [ 1060 0 R /XYZ 42.836457 587.042022 0 ] -/Count 0 -/Parent 2124 0 R -/Next 2126 0 R +/Title (DT) +/Dest [ 620 0 R /XYZ 42.836457 404.984502 0 ] +/Count 6 +/Prev 2123 0 R +/First 2126 0 R +/Last 2131 0 R +/Parent 2122 0 R +/Next 2132 0 R >> endobj 2126 0 obj << -/Title (Ajout du nom des pilotes) -/Dest [ 1083 0 R /XYZ 42.836457 166.651302 0 ] +/Title +/Dest [ 620 0 R /XYZ 42.836457 341.173302 0 ] /Count 0 -/Prev 2125 0 R -/Parent 2124 0 R +/Parent 2125 0 R /Next 2127 0 R >> endobj 2127 0 obj << -/Title (Sauvegarder le nouveau Preset) -/Dest [ 1097 0 R /XYZ 42.836457 341.110056 0 ] +/Title (DT2 Documentation Analyse de l'existant \(2\)) +/Dest [ 620 0 R /XYZ 42.836457 225.937782 0 ] /Count 0 /Prev 2126 0 R -/Parent 2124 0 R +/Parent 2125 0 R +/Next 2128 0 R >> endobj 2128 0 obj << -/Title (3.4.3 Load un Preset existant) -/Dest [ 1097 0 R /XYZ 39.386457 189.089256 0 ] +/Title (DT3 Documentation Analyse organique \(5\)) +/Dest [ 620 0 R /XYZ 42.836457 140.731062 0 ] /Count 0 -/Prev 2124 0 R -/Parent 2122 0 R +/Prev 2127 0 R +/Parent 2125 0 R +/Next 2129 0 R >> endobj 2129 0 obj << -/Title -/Dest [ 1102 0 R /XYZ 39.386457 322.349771 0 ] -/Count 5 -/Prev 2122 0 R -/First 2130 0 R -/Last 2134 0 R -/Parent 2116 0 R -/Next 2135 0 R +/Title (DT4 Documentation Analyse fonctionnelle \(2\)) +/Dest [ 622 0 R /XYZ 42.836457 692.198022 0 ] +/Count 0 +/Prev 2128 0 R +/Parent 2125 0 R +/Next 2130 0 R >> endobj 2130 0 obj << -/Title (3.5.1 Overtakes) -/Dest [ 1107 0 R /XYZ 39.386457 307.522050 0 ] +/Title (DT5 Documentation Tests \(1\)) +/Dest [ 622 0 R /XYZ 42.836457 552.564102 0 ] /Count 0 -/Parent 2129 0 R +/Prev 2129 0 R +/Parent 2125 0 R /Next 2131 0 R >> endobj 2131 0 obj << -/Title (3.5.2 Last Five Laps) -/Dest [ 1107 0 R /XYZ 39.386457 206.972850 0 ] +/Title (DT6 Documentation Reste \(2\)) +/Dest [ 622 0 R /XYZ 42.836457 476.741382 0 ] /Count 0 /Prev 2130 0 R -/Parent 2129 0 R -/Next 2132 0 R +/Parent 2125 0 R >> endobj 2132 0 obj << -/Title (3.5.3 Battles) -/Dest [ 1112 0 R /XYZ 39.386457 234.880422 0 ] -/Count 0 -/Prev 2131 0 R -/Parent 2129 0 R -/Next 2133 0 R +/Title (PT) +/Dest [ 622 0 R /XYZ 42.836457 374.588262 0 ] +/Count 5 +/Prev 2125 0 R +/First 2133 0 R +/Last 2137 0 R +/Parent 2122 0 R +/Next 2138 0 R >> endobj 2133 0 obj << -/Title (3.5.4 Driver infos) -/Dest [ 1117 0 R /XYZ 39.386457 294.880422 0 ] +/Title +/Dest [ 622 0 R /XYZ 42.836457 310.777062 0 ] /Count 0 -/Prev 2132 0 R -/Parent 2129 0 R +/Parent 2132 0 R /Next 2134 0 R >> endobj 2134 0 obj << -/Title (3.5.5 Live Ranking) -/Dest [ 1129 0 R /XYZ 39.386457 771.023622 0 ] +/Title (PT2 Programmation OCR \(5\)) +/Dest [ 624 0 R /XYZ 42.836457 771.023622 0 ] /Count 0 /Prev 2133 0 R -/Parent 2129 0 R +/Parent 2132 0 R +/Next 2135 0 R >> endobj 2135 0 obj << -/Title (3.6 Erreurs) -/Dest [ 1135 0 R /XYZ 39.386457 634.955622 0 ] +/Title +/Dest [ 624 0 R /XYZ 42.836457 625.759302 0 ] /Count 0 -/Prev 2129 0 R -/Parent 2116 0 R +/Prev 2134 0 R +/Parent 2132 0 R +/Next 2136 0 R >> endobj 2136 0 obj << -/Title (4. Journal de bord) -/Dest [ 1138 0 R /XYZ 39.386457 757.223622 0 ] -/Count 41 -/Prev 2116 0 R -/First 2137 0 R -/Last 2177 0 R -/Next 2178 0 R -/Parent 2200 0 R +/Title (PT4 Programmation Vue de l'APP \(5\)) +/Dest [ 624 0 R /XYZ 42.836457 495.509382 0 ] +/Count 0 +/Prev 2135 0 R +/Parent 2132 0 R +/Next 2137 0 R >> endobj 2137 0 obj << -/Title (4.1 Mercredi 29 Mars 2023) -/Dest [ 1138 0 R /XYZ 39.386457 707.865222 0 ] +/Title (PT5 Programmation mise en commun \(3\)) +/Dest [ 624 0 R /XYZ 42.836457 365.259462 0 ] /Count 0 -/Parent 2136 0 R -/Next 2138 0 R +/Prev 2136 0 R +/Parent 2132 0 R >> endobj 2138 0 obj << -/Title (4.2 Jeudi 30 Mars 2023) -/Dest [ 1141 0 R /XYZ 39.386457 263.492343 0 ] -/Count 0 -/Prev 2137 0 R -/Parent 2136 0 R -/Next 2139 0 R +/Title (TT) +/Dest [ 624 0 R /XYZ 42.836457 238.707942 0 ] +/Count 2 +/Prev 2132 0 R +/First 2139 0 R +/Last 2140 0 R +/Parent 2122 0 R >> endobj 2139 0 obj << -/Title (4.3 Vendredi 31/03/2023) -/Dest [ 1153 0 R /XYZ 39.386457 347.805222 0 ] +/Title (TT1 Tests OCR \(2\)) +/Dest [ 624 0 R /XYZ 42.836457 174.896742 0 ] /Count 0 -/Prev 2138 0 R -/Parent 2136 0 R +/Parent 2138 0 R /Next 2140 0 R >> endobj 2140 0 obj << -/Title (4.4 Lundi 3 Avril) -/Dest [ 1228 0 R /XYZ 39.386457 717.534822 0 ] +/Title (TT2 Tests finaux \(2\)) +/Dest [ 626 0 R /XYZ 42.836457 662.169222 0 ] /Count 0 /Prev 2139 0 R -/Parent 2136 0 R -/Next 2141 0 R +/Parent 2138 0 R >> endobj 2141 0 obj << -/Title (4.5 Mardi 4 Avril) -/Dest [ 1294 0 R /XYZ 39.386457 305.202822 0 ] +/Title +/Dest [ 626 0 R /XYZ 39.386457 517.843302 0 ] /Count 0 -/Prev 2140 0 R -/Parent 2136 0 R +/Prev 2121 0 R +/Parent 2110 0 R /Next 2142 0 R >> endobj 2142 0 obj << -/Title (4.6 Mercredi 5 Avril) -/Dest [ 1321 0 R /XYZ 39.386457 293.199726 0 ] +/Title (1.6 Analyse fonctionnelle) +/Dest [ 628 0 R /XYZ 39.386457 335.606022 0 ] /Count 0 /Prev 2141 0 R -/Parent 2136 0 R +/Parent 2110 0 R /Next 2143 0 R >> endobj 2143 0 obj << -/Title (4.7 Jeudi 6 Avril) -/Dest [ 1348 0 R /XYZ 39.386457 238.444086 0 ] -/Count 0 +/Title (1.7 Analyse Organique) +/Dest [ 628 0 R /XYZ 39.386457 246.262122 0 ] +/Count 50 /Prev 2142 0 R -/Parent 2136 0 R -/Next 2144 0 R +/First 2144 0 R +/Last 2188 0 R +/Parent 2110 0 R +/Next 2194 0 R >> endobj 2144 0 obj << -/Title (4.8 Vendredi 6 Avril 2023) -/Dest [ 1391 0 R /XYZ 39.386457 565.514022 0 ] -/Count 0 -/Prev 2143 0 R -/Parent 2136 0 R -/Next 2145 0 R +/Title +/Dest [ 628 0 R /XYZ 39.386457 190.700622 0 ] +/Count 4 +/First 2145 0 R +/Last 2148 0 R +/Parent 2143 0 R +/Next 2149 0 R >> endobj 2145 0 obj << -/Title (4.9 Vacances) -/Dest [ 1416 0 R /XYZ 39.386457 355.144422 0 ] +/Title (Visual Studio 2022) +/Dest [ 628 0 R /XYZ 42.836457 163.346622 0 ] /Count 0 -/Prev 2144 0 R -/Parent 2136 0 R +/Parent 2144 0 R /Next 2146 0 R >> endobj 2146 0 obj << -/Title (4.10 Lundi 24 Avril 2023) -/Dest [ 1471 0 R /XYZ 39.386457 266.404302 0 ] +/Title (Visual Studio Code) +/Dest [ 631 0 R /XYZ 42.836457 298.274022 0 ] /Count 0 /Prev 2145 0 R -/Parent 2136 0 R +/Parent 2144 0 R /Next 2147 0 R >> endobj 2147 0 obj << -/Title (4.11 Mardi 25 Avril 2023) -/Dest [ 1490 0 R /XYZ 39.386457 693.136422 0 ] +/Title (Material/Mkdocs/Markdown) +/Dest [ 640 0 R /XYZ 42.836457 771.023622 0 ] /Count 0 /Prev 2146 0 R -/Parent 2136 0 R +/Parent 2144 0 R /Next 2148 0 R >> endobj 2148 0 obj << -/Title (4.12 26 Avril 2023) -/Dest [ 1490 0 R /XYZ 39.386457 222.365322 0 ] +/Title (Figma) +/Dest [ 640 0 R /XYZ 42.836457 270.006822 0 ] /Count 0 /Prev 2147 0 R -/Parent 2136 0 R -/Next 2149 0 R +/Parent 2144 0 R >> endobj 2149 0 obj << -/Title (4.13 Jeudi 27 Avril 2023) -/Dest [ 1497 0 R /XYZ 39.386457 584.282022 0 ] -/Count 0 -/Prev 2148 0 R -/Parent 2136 0 R -/Next 2150 0 R +/Title +/Dest [ 650 0 R /XYZ 39.386457 771.023622 0 ] +/Count 5 +/Prev 2144 0 R +/First 2150 0 R +/Last 2154 0 R +/Parent 2143 0 R +/Next 2155 0 R >> endobj 2150 0 obj << -/Title (4.14 Vendredi 28 Avril 2023) -/Dest [ 1509 0 R /XYZ 39.386457 717.534822 0 ] +/Title (Selenium) +/Dest [ 650 0 R /XYZ 42.836457 653.528022 0 ] /Count 0 -/Prev 2149 0 R -/Parent 2136 0 R +/Parent 2149 0 R /Next 2151 0 R >> endobj 2151 0 obj << -/Title (4.15 Lundi 1 Mai 2023) -/Dest [ 1511 0 R /XYZ 39.386457 501.702822 0 ] +/Title (CSharp) +/Dest [ 662 0 R /XYZ 42.836457 487.571622 0 ] /Count 0 /Prev 2150 0 R -/Parent 2136 0 R +/Parent 2149 0 R /Next 2152 0 R >> endobj 2152 0 obj << -/Title (4.16 Mardi 2 Mai 2023) -/Dest [ 1517 0 R /XYZ 39.386457 595.251918 0 ] +/Title +/Dest [ 667 0 R /XYZ 42.836457 551.382822 0 ] /Count 0 /Prev 2151 0 R -/Parent 2136 0 R +/Parent 2149 0 R /Next 2153 0 R >> endobj 2153 0 obj << -/Title (4.17 Recrutement Payerne Mai 2023) -/Dest [ 1537 0 R /XYZ 39.386457 526.101222 0 ] +/Title (Firefox) +/Dest [ 672 0 R /XYZ 42.836457 414.376422 0 ] /Count 0 /Prev 2152 0 R -/Parent 2136 0 R +/Parent 2149 0 R /Next 2154 0 R >> endobj 2154 0 obj << -/Title (4.18 Vendredi 5 Mai 2023) -/Dest [ 1537 0 R /XYZ 39.386457 426.936522 0 ] +/Title (Tesseract) +/Dest [ 679 0 R /XYZ 42.836457 596.426022 0 ] /Count 0 /Prev 2153 0 R -/Parent 2136 0 R -/Next 2155 0 R +/Parent 2149 0 R >> endobj 2155 0 obj << -/Title (4.19 Lundi 8 Mai 2023) -/Dest [ 1540 0 R /XYZ 39.386457 314.866514 0 ] -/Count 0 -/Prev 2154 0 R -/Parent 2136 0 R -/Next 2156 0 R +/Title +/Dest [ 679 0 R /XYZ 39.386457 420.006822 0 ] +/Count 5 +/Prev 2149 0 R +/First 2156 0 R +/Last 2160 0 R +/Parent 2143 0 R +/Next 2161 0 R >> endobj 2156 0 obj << -/Title (4.20 Mardi 9 Mai 2023) -/Dest [ 1576 0 R /XYZ 39.386457 146.799010 0 ] -/Count 0 -/Prev 2155 0 R -/Parent 2136 0 R -/Next 2157 0 R +/Title (Les briques principales) +/Dest [ 679 0 R /XYZ 42.836457 311.895222 0 ] +/Count 3 +/First 2157 0 R +/Last 2159 0 R +/Parent 2155 0 R +/Next 2160 0 R >> endobj 2157 0 obj << -/Title (4.21 Mercredi 10 Mai 2023) -/Dest [ 1597 0 R /XYZ 39.386457 659.354022 0 ] +/Title +/Dest [ 679 0 R /XYZ 42.836457 248.084022 0 ] /Count 0 -/Prev 2156 0 R -/Parent 2136 0 R +/Parent 2156 0 R /Next 2158 0 R >> endobj 2158 0 obj << -/Title (4.22 Jeudi 11 Mai 2023) -/Dest [ 1611 0 R /XYZ 39.386457 562.440762 0 ] +/Title (OCR) +/Dest [ 682 0 R /XYZ 42.836457 95.795299 0 ] /Count 0 /Prev 2157 0 R -/Parent 2136 0 R +/Parent 2156 0 R /Next 2159 0 R >> endobj 2159 0 obj << -/Title (4.23 vendredi 12 Mai 2023) -/Dest [ 1624 0 R /XYZ 39.386457 623.694822 0 ] +/Title (Traitement et affichage) +/Dest [ 687 0 R /XYZ 42.836457 122.598958 0 ] /Count 0 /Prev 2158 0 R -/Parent 2136 0 R -/Next 2160 0 R +/Parent 2156 0 R >> endobj 2160 0 obj << -/Title (4.24 Lundi 15 Mai 2023) -/Dest [ 1633 0 R /XYZ 39.386457 584.282022 0 ] +/Title +/Dest [ 692 0 R /XYZ 42.836457 187.703299 0 ] /Count 0 -/Prev 2159 0 R -/Parent 2136 0 R -/Next 2161 0 R +/Prev 2156 0 R +/Parent 2155 0 R >> endobj 2161 0 obj << -/Title (4.25 Mardi 16 Mai 2023) -/Dest [ 1633 0 R /XYZ 39.386457 273.038922 0 ] -/Count 0 -/Prev 2160 0 R -/Parent 2136 0 R -/Next 2162 0 R +/Title +/Dest [ 701 0 R /XYZ 39.386457 238.012422 0 ] +/Count 10 +/Prev 2155 0 R +/First 2162 0 R +/Last 2166 0 R +/Parent 2143 0 R +/Next 2172 0 R >> endobj 2162 0 obj << -/Title (4.26 Mercredi 17 Mai 2023) -/Dest [ 1642 0 R /XYZ 39.386457 771.023622 0 ] +/Title (Comment faire ?) +/Dest [ 710 0 R /XYZ 42.836457 735.309222 0 ] /Count 0 -/Prev 2161 0 R -/Parent 2136 0 R +/Parent 2161 0 R /Next 2163 0 R >> endobj 2163 0 obj << -/Title (4.27 Jeudi 18 Mai 2023) -/Dest [ 1650 0 R /XYZ 39.386457 459.588513 0 ] +/Title (Simuler un navigateur ?) +/Dest [ 712 0 R /XYZ 42.836457 771.023622 0 ] /Count 0 /Prev 2162 0 R -/Parent 2136 0 R +/Parent 2161 0 R /Next 2164 0 R >> endobj 2164 0 obj << -/Title (4.28 Lundi 22 Mai 2023) -/Dest [ 1657 0 R /XYZ 39.386457 649.970022 0 ] +/Title +/Dest [ 717 0 R /XYZ 42.836457 412.198422 0 ] /Count 0 /Prev 2163 0 R -/Parent 2136 0 R +/Parent 2161 0 R /Next 2165 0 R >> endobj 2165 0 obj << -/Title (4.29 Mardi 23 Mai 2023) -/Dest [ 1684 0 R /XYZ 39.386457 234.994819 0 ] +/Title +/Dest [ 724 0 R /XYZ 42.836457 409.684422 0 ] /Count 0 /Prev 2164 0 R -/Parent 2136 0 R +/Parent 2161 0 R /Next 2166 0 R >> endobj 2166 0 obj << -/Title (4.30 Mercredi 24 Mai 2023) -/Dest [ 1689 0 R /XYZ 39.386457 629.325222 0 ] -/Count 0 +/Title (Calibration) +/Dest [ 732 0 R /XYZ 42.836457 566.026554 0 ] +/Count 5 /Prev 2165 0 R -/Parent 2136 0 R -/Next 2167 0 R +/First 2167 0 R +/Last 2171 0 R +/Parent 2161 0 R >> endobj 2167 0 obj << -/Title (4.31 Jeudi 25 Mai 2023) -/Dest [ 1691 0 R /XYZ 39.386457 446.337222 0 ] +/Title (Liste des pilotes) +/Dest [ 734 0 R /XYZ 42.836457 771.023622 0 ] /Count 0 -/Prev 2166 0 R -/Parent 2136 0 R +/Parent 2166 0 R /Next 2168 0 R >> endobj 2168 0 obj << -/Title (4.32 Vendredi 26 Mai 2023) -/Dest [ 1699 0 R /XYZ 39.386457 249.143222 0 ] +/Title (Zone principale) +/Dest [ 734 0 R /XYZ 42.836457 640.773702 0 ] /Count 0 /Prev 2167 0 R -/Parent 2136 0 R +/Parent 2166 0 R /Next 2169 0 R >> endobj 2169 0 obj << -/Title (4.33 Grand Prix de Monaco) -/Dest [ 1699 0 R /XYZ 39.386457 164.992922 0 ] +/Title (Zones pilotes) +/Dest [ 734 0 R /XYZ 42.836457 316.153201 0 ] /Count 0 /Prev 2168 0 R -/Parent 2136 0 R +/Parent 2166 0 R /Next 2170 0 R >> endobj 2170 0 obj << -/Title (4.34 Lundi 29 Mai 2023) -/Dest [ 1703 0 R /XYZ 39.386457 771.023622 0 ] +/Title (Windows pilotes) +/Dest [ 744 0 R /XYZ 42.836457 363.762714 0 ] /Count 0 /Prev 2169 0 R -/Parent 2136 0 R +/Parent 2166 0 R /Next 2171 0 R >> endobj 2171 0 obj << -/Title (4.35 Mardi 30 Mai 2023) -/Dest [ 1703 0 R /XYZ 39.386457 547.990122 0 ] +/Title (Stockage) +/Dest [ 753 0 R /XYZ 42.836457 646.430022 0 ] /Count 0 /Prev 2170 0 R -/Parent 2136 0 R -/Next 2172 0 R +/Parent 2166 0 R >> endobj 2172 0 obj << -/Title (4.36 Mercredi 31 Mai 2023) -/Dest [ 1703 0 R /XYZ 39.386457 339.971022 0 ] -/Count 0 -/Prev 2171 0 R -/Parent 2136 0 R -/Next 2173 0 R +/Title (1.7.5 OCR) +/Dest [ 761 0 R /XYZ 39.386457 303.179610 0 ] +/Count 9 +/Prev 2161 0 R +/First 2173 0 R +/Last 2173 0 R +/Parent 2143 0 R +/Next 2182 0 R >> endobj 2173 0 obj << -/Title (4.37 Jeudi 1 Juin 2023) -/Dest [ 1703 0 R /XYZ 39.386457 270.835122 0 ] -/Count 0 -/Prev 2172 0 R -/Parent 2136 0 R -/Next 2174 0 R +/Title +/Dest [ 763 0 R /XYZ 42.836457 771.023622 0 ] +/Count 8 +/First 2174 0 R +/Last 2174 0 R +/Parent 2172 0 R >> endobj 2174 0 obj << -/Title (4.38 Vendredi 2 Juin 2023) -/Dest [ 1729 0 R /XYZ 39.386457 608.680422 0 ] -/Count 0 -/Prev 2173 0 R -/Parent 2136 0 R -/Next 2175 0 R +/Title (Filtres et traitement) +/Dest [ 797 0 R /XYZ 42.836457 237.136277 0 ] +/Count 7 +/First 2175 0 R +/Last 2181 0 R +/Parent 2173 0 R >> endobj 2175 0 obj << -/Title (4.39 Lundi 5 Juin 2023) -/Dest [ 1747 0 R /XYZ 39.386457 229.986499 0 ] +/Title (Texte) +/Dest [ 819 0 R /XYZ 42.836457 369.234822 0 ] /Count 0 -/Prev 2174 0 R -/Parent 2136 0 R +/Parent 2174 0 R /Next 2176 0 R >> endobj 2176 0 obj << -/Title (4.40 Mardi 6 Juin 2023) -/Dest [ 1757 0 R /XYZ 39.386457 150.125803 0 ] +/Title (Chiffres) +/Dest [ 840 0 R /XYZ 42.836457 460.413222 0 ] /Count 0 /Prev 2175 0 R -/Parent 2136 0 R +/Parent 2174 0 R /Next 2177 0 R >> endobj 2177 0 obj << -/Title (4.41 Mercredi 7 Juin) -/Dest [ 1761 0 R /XYZ 39.386457 648.093222 0 ] +/Title (les chiffres \(2\)) +/Dest [ 864 0 R /XYZ 42.836457 569.267622 0 ] /Count 0 /Prev 2176 0 R -/Parent 2136 0 R +/Parent 2174 0 R +/Next 2178 0 R >> endobj 2178 0 obj << -/Title (5. Code) -/Dest [ 1765 0 R /XYZ 39.386457 757.223622 0 ] -/Count 21 -/Prev 2136 0 R -/First 2179 0 R -/Last 2199 0 R -/Parent 2200 0 R +/Title (Pneus) +/Dest [ 864 0 R /XYZ 42.836457 523.473702 0 ] +/Count 0 +/Prev 2177 0 R +/Parent 2174 0 R +/Next 2179 0 R >> endobj 2179 0 obj << -/Title (5.1 ConfigurationTool.cs) -/Dest [ 1765 0 R /XYZ 39.386457 707.865222 0 ] +/Title (DRS) +/Dest [ 930 0 R /XYZ 42.836457 584.282022 0 ] /Count 0 -/Parent 2178 0 R +/Prev 2178 0 R +/Parent 2174 0 R /Next 2180 0 R >> endobj 2180 0 obj << -/Title (5.2 DriverData.cs) -/Dest [ 1777 0 R /XYZ 39.386457 747.563622 0 ] +/Title +/Dest [ 930 0 R /XYZ 42.836457 523.473702 0 ] /Count 0 /Prev 2179 0 R -/Parent 2178 0 R +/Parent 2174 0 R /Next 2181 0 R >> endobj 2181 0 obj << -/Title (5.3 DriverGapToLeaderWindow.cs) -/Dest [ 1783 0 R /XYZ 39.386457 747.563622 0 ] +/Title +/Dest [ 944 0 R /XYZ 42.836457 371.265222 0 ] /Count 0 /Prev 2180 0 R -/Parent 2178 0 R -/Next 2182 0 R +/Parent 2174 0 R >> endobj 2182 0 obj << -/Title (5.4 DriverNameWindow.cs) -/Dest [ 1785 0 R /XYZ 39.386457 747.563622 0 ] +/Title +/Dest [ 970 0 R /XYZ 39.386457 195.312822 0 ] /Count 0 -/Prev 2181 0 R -/Parent 2178 0 R +/Prev 2172 0 R +/Parent 2143 0 R /Next 2183 0 R >> endobj 2183 0 obj << -/Title (5.5 DriverSectorWindow.cs) -/Dest [ 1789 0 R /XYZ 39.386457 747.563622 0 ] -/Count 0 +/Title +/Dest [ 982 0 R /XYZ 39.386457 572.502822 0 ] +/Count 4 /Prev 2182 0 R -/Parent 2178 0 R -/Next 2184 0 R +/First 2184 0 R +/Last 2185 0 R +/Parent 2143 0 R +/Next 2188 0 R >> endobj 2184 0 obj << -/Title (5.6 F1TVEmulator.cs) -/Dest [ 1791 0 R /XYZ 39.386457 747.563622 0 ] +/Title +/Dest [ 988 0 R /XYZ 42.836457 353.394469 0 ] /Count 0 -/Prev 2183 0 R -/Parent 2178 0 R +/Parent 2183 0 R /Next 2185 0 R >> endobj 2185 0 obj << -/Title (5.7 Form1.cs) -/Dest [ 1805 0 R /XYZ 39.386457 747.563622 0 ] -/Count 0 +/Title (Quand remplir la base ?) +/Dest [ 992 0 R /XYZ 42.836457 241.198422 0 ] +/Count 2 /Prev 2184 0 R -/Parent 2178 0 R -/Next 2186 0 R +/First 2186 0 R +/Last 2187 0 R +/Parent 2183 0 R >> endobj 2186 0 obj << -/Title (5.8 Program.cs) -/Dest [ 1825 0 R /XYZ 39.386457 747.563622 0 ] +/Title (Quand un pilote a fini un tour) +/Dest [ 994 0 R /XYZ 42.836457 707.212422 0 ] /Count 0 -/Prev 2185 0 R -/Parent 2178 0 R +/Parent 2185 0 R /Next 2187 0 R >> endobj 2187 0 obj << -/Title (5.9 Settings.Designer.cs) -/Dest [ 1827 0 R /XYZ 39.386457 747.563622 0 ] +/Title +/Dest [ 996 0 R /XYZ 42.836457 731.610822 0 ] /Count 0 /Prev 2186 0 R -/Parent 2178 0 R -/Next 2188 0 R +/Parent 2185 0 R >> endobj 2188 0 obj << -/Title (5.10 SqliteStorage.cs) -/Dest [ 1851 0 R /XYZ 39.386457 747.563622 0 ] -/Count 0 -/Prev 2187 0 R -/Parent 2178 0 R -/Next 2189 0 R +/Title +/Dest [ 1001 0 R /XYZ 39.386457 677.183622 0 ] +/Count 5 +/Prev 2183 0 R +/First 2189 0 R +/Last 2193 0 R +/Parent 2143 0 R >> endobj 2189 0 obj << -/Title (5.11 Zone.cs) -/Dest [ 1863 0 R /XYZ 39.386457 747.563622 0 ] +/Title (Affichage direct) +/Dest [ 1001 0 R /XYZ 42.836457 535.289622 0 ] /Count 0 -/Prev 2188 0 R -/Parent 2178 0 R +/Parent 2188 0 R /Next 2190 0 R >> endobj 2190 0 obj << -/Title (5.12 DataWrapper.cs) -/Dest [ 1873 0 R /XYZ 39.386457 747.563622 0 ] -/Count 0 +/Title +/Dest [ 1004 0 R /XYZ 42.836457 528.276822 0 ] +/Count 2 /Prev 2189 0 R -/Parent 2178 0 R -/Next 2191 0 R +/First 2191 0 R +/Last 2192 0 R +/Parent 2188 0 R +/Next 2193 0 R >> endobj 2191 0 obj << -/Title (5.13 DriverDrsWindow.cs) -/Dest [ 1891 0 R /XYZ 39.386457 747.563622 0 ] +/Title (Affichage Hybride) +/Dest [ 1004 0 R /XYZ 42.836457 479.480022 0 ] /Count 0 -/Prev 2190 0 R -/Parent 2178 0 R +/Parent 2190 0 R /Next 2192 0 R >> endobj 2192 0 obj << -/Title (5.14 DriverLapTimeWindow.cs) -/Dest [ 1897 0 R /XYZ 39.386457 747.563622 0 ] +/Title +/Dest [ 1021 0 R /XYZ 42.836457 658.415622 0 ] /Count 0 /Prev 2191 0 R -/Parent 2178 0 R -/Next 2193 0 R +/Parent 2190 0 R >> endobj 2193 0 obj << -/Title (5.15 DriverPositionWindow.cs) -/Dest [ 1899 0 R /XYZ 39.386457 747.563622 0 ] +/Title +/Dest [ 1026 0 R /XYZ 42.836457 300.764334 0 ] /Count 0 -/Prev 2192 0 R -/Parent 2178 0 R -/Next 2194 0 R +/Prev 2190 0 R +/Parent 2188 0 R >> endobj 2194 0 obj << -/Title (5.16 DriverTyresWindow.cs) -/Dest [ 1901 0 R /XYZ 39.386457 747.563622 0 ] -/Count 0 -/Prev 2193 0 R -/Parent 2178 0 R -/Next 2195 0 R +/Title (1.8 Tests) +/Dest [ 1028 0 R /XYZ 39.386457 490.442022 0 ] +/Count 3 +/Prev 2143 0 R +/First 2195 0 R +/Last 2197 0 R +/Parent 2110 0 R +/Next 2198 0 R >> endobj 2195 0 obj << -/Title (5.17 OcrImage.cs) -/Dest [ 1909 0 R /XYZ 39.386457 747.563622 0 ] +/Title +/Dest [ 1028 0 R /XYZ 39.386457 287.551722 0 ] /Count 0 -/Prev 2194 0 R -/Parent 2178 0 R +/Parent 2194 0 R /Next 2196 0 R >> endobj 2196 0 obj << -/Title (5.18 Reader.cs) -/Dest [ 1939 0 R /XYZ 39.386457 747.563622 0 ] +/Title +/Dest [ 1037 0 R /XYZ 39.386457 707.212422 0 ] /Count 0 /Prev 2195 0 R -/Parent 2178 0 R +/Parent 2194 0 R /Next 2197 0 R >> endobj 2197 0 obj << -/Title (5.19 Settings.cs) -/Dest [ 1955 0 R /XYZ 39.386457 747.563622 0 ] +/Title +/Dest [ 1037 0 R /XYZ 39.386457 398.338422 0 ] /Count 0 /Prev 2196 0 R -/Parent 2178 0 R -/Next 2198 0 R +/Parent 2194 0 R >> endobj 2198 0 obj << -/Title (5.20 Window.cs) -/Dest [ 1977 0 R /XYZ 39.386457 747.563622 0 ] -/Count 0 -/Prev 2197 0 R -/Parent 2178 0 R -/Next 2199 0 R +/Title +/Dest [ 1037 0 R /XYZ 39.386457 263.068422 0 ] +/Count 3 +/Prev 2194 0 R +/First 2199 0 R +/Last 2201 0 R +/Parent 2110 0 R +/Next 2202 0 R >> endobj 2199 0 obj << -/Title (5.21 recoverCookiesCSV.py) -/Dest [ 2007 0 R /XYZ 39.386457 747.563622 0 ] +/Title (1.9.1 Browser Headless) +/Dest [ 1039 0 R /XYZ 39.386457 771.023622 0 ] /Count 0 -/Prev 2198 0 R -/Parent 2178 0 R +/Parent 2198 0 R +/Next 2200 0 R >> endobj 2200 0 obj << -/Count 190 -/First 2010 0 R -/Last 2178 0 R +/Title (1.9.2 OCR) +/Dest [ 1039 0 R /XYZ 39.386457 353.295222 0 ] +/Count 0 +/Prev 2199 0 R +/Parent 2198 0 R +/Next 2201 0 R >> endobj 2201 0 obj << -/Length1 7328 -/Filter /FlateDecode -/Length 4734 +/Title (1.9.3 Stockage) +/Dest [ 1041 0 R /XYZ 39.386457 637.770822 0 ] +/Count 0 +/Prev 2200 0 R +/Parent 2198 0 R >> -stream -x9XǶs/ teYQTXQQTl ( jl+1шƈbM/cؐXhTFξ3&79gN?gd:H>AzsĞ4wiqЙ =n|rD)%"%؈4bEp=oӦᄨ.bUO8v8hx_A|"~%gf %c$GdiV)%"9nQ4±id+Buۇm CBYRuƵքp$ThL_H-irjy߂XL!^ y!ʖpPekG NL!1Yω~R2' 9.`^ПtZNZ{Lt/5X{c{׿btdxVޭ%??Kv$aUS.O}OZX1Nt@̢EU{t0 %!~Ԑ4V{%W'a7nĪA;2v;b|GIwn<'/2e]}5:Vu-h*auʸ! . ЎfCC&Z:DW;F+ Hsvss:8`E<\b3OdU.}m-G&LNќ@eG|*7)ыfLӔ(et8z4:YVڇ޶._c&_9& rwzҁ{IAe݅#`tx풉Y=ۚ QM3ݍq K}g7ῲ*;N}]8NC\8_Cٕ3p0MYkQ 4Am|Ji pZVj]*!% ڠ|Z:2\$^"t35ئD`gON3K%%uk1YVBm|a:Hs,xQx}숉[`MXE/~P`^=Qb Q=6wZJOqsn.!7FᥣhSQ%9rL8xo,f,[\&la{g}܀fm F5w -2x -'ch&J%: BX!^gl\=ĸ/1HeD̽+Bq^Jt>v}] K3v~^հu>;"qU oxZ357bEҙy*c]i=0mNܒ뮊NC ~YoBYZ-p"&9#-ܶ0zr>v 0cRڐ%CXlTj)ke%fVE.+ek:Ͼ) -=>_~zr +uTMx>*hgs%fdϠAi.I*ɾGiq) Rn{rTE2}v6|gq_%Ch/~v9y (41 <0ebN-bb#XeDNzqb r㦛ޜ0)IQ$37f(1ab6;{޳+*L`;f1l64<ÜM89+*u;}Ƶ}s-  SDQb dFWSSu֙j.[;xȌ&vcѼ;`S#0 8V -`t%wU -@yْ1kUoS: d"ᤡ#zj(.5`+-߆a/<13:cVrĀf&G Vf -gC{˜) 06V=.2{q=05pVmĠ|XFr -BGR]V]2VҖw+FOvsMjG+Zw~T7`HVY1h564 7qͻ[Y~l'kS0P}ޥj|TܻO@,[/ԊS<>*7dF=3_CC혁]y?C&ƋTl>?94O7̉t 5$d^CHF0Ĕ[1Իu7jiؘwC_/YעXAFm -ռWGG>C RW%q߯gVgMwcmdm~flE-f yGX Ckxby1ջш{i~\i2YT<&?rFG,@3MJX!;3q\< M+e ^j{)D:sao 1vj{|3viP0#]f~5|{3ٴ'n_w{6lńCB}&~Xn> -stream -x= XT{s (aD,q@oCS3S4ShOH@M Am׬̌ 13+"lA{?{k^k}9 j" >~tԉ-+{exݗpF~ůѽRǡP8gvyAQs-83fńhEzÈGm3+ހ{^PV* ;}'|xC^fEm߳/BkjKߙbZ>mv`0~Lo( 5~ gzd%~\LPGh -R٘ƎzO6\J2G;˛w㔬CVb)zI%ezXlB-tf |M -ARHKrȸؐah r# -3"WXx4 -ycW!*LV@NJh`ˠHrM 8sE L̓ˠe.PV{j&TtDQ -&}0עH+~yi,B`+֠(iBu0/rQyϮj&GO}M9 -xp3] GѾоG6b5_|*GQo;pءs!-Z84hT&Ccʧ&>(lS-?kY;XAQm`xH l`A6' %q x4l}'/:^w|P TV֫m`58kiS "NWt5G*m2$iN&"jNW>jE,e*uLssNMˏa&Wk䵃7x<;Mהռӳ~>a^bzzbRzz녬/+*̺vo⁋$esL5VM"}/ٌ9YddH~V3^mi~lڔ)l}u$vSU4nq:L=DwP祠P6e -ׅ5[U޽Gg}F{4G&rSPC.Vي0j -nKl{o(*e8D*2;'` $RK -5{Ib.R0OXy`C{p nU}Pgڽ>.ȞBT3aY8tf86[]Ѻov/~}螎bmIʌEeeӉu9uj0XujA:&xⲋL7sV/!ٺ)v}h$Z|-FИMIc/Z 5֮8H/ӜMr(_RBn޺ CaqbҢڍ .\쩜odU_!倞ڳKggg*̆ -FrjuxqKxW`` ~BaV&IV%S\:7-pmد7=Gq!8=^>f <>ͦs֙qyv,)ǚXJJb9_PbXlZ=` OS3:gcM/c -tOM,6Xy -فE)no^|e:j=K) -TZ[N/t&o.Ū ѵ#z6̏i~xYx'hgEܶg58/A9yDPcm >d$bXX2H,P$j!tq u+`E v:B6s'Ƭ'"oÓq<& fTEu})-y.G#4u2tT6[q.d -%cF0t4Z&saMM@1[M8zޟL3֤h!S3j~"l3c-F?a:S{_ -/ds ->v.G9LhanΤѓW|kPa+L9q3} bM؉Oh8?5 -EdcfxD)y hsBVVCa@ }CS!?ni,qĄ?&H\Csg~&ig9Vܜ ".1}i9HC#bOҵk9/[:Rfڅ .#}x55cwzMxfiiOR\>^z玱ii[=-FO7o8? g?AߣK꥕g"Yo=,b;^#N43՜qHa쏽kk0j;?ع׮*̏/­F#:( JX-3潎xƭnW% Rdň{+6 v9)ެ5?Yg>| -f]{ Y1XjԤ0c [г״X\wDш%Di)扬uƪ'8XmSp(M(L8b|Ν||zMrjYs͒`O,ēlQf|nmUC,KWdE;kMgՠSk6l7$@T#svɐ/ܽMw С/v< KN0F*#8C^usƽ5.]VSєL]+AvM4J4s!zlN'Ssx+׫`|0 -%〮utsMU MU n'nw1{gN.%˲|%|2 -_O|j [V9'y0'YѸd İ53uj ql*?k|jI "7mZ~Sz+pkZ9wUU} 0D{rC+M}-;αx&)aef:[dUc,0=kd%YTS\dƼztMמ/])LiDXK OXl5R?1K2+o^EA11z 6-A/3!_t'I'4{So~pYt}Y)ɾqNM=s5L6Ν9w#&B'%ӛWl7'=6L=%f&0VMX=|R^~9eGnOLp;L MF)k6tb̊qC4̘=EV?)3N#r'WLtx}`R@ۃ)ogΏyg^`*+g -#s+oMw+ -SU>-rxLJΆ.<|6䱔7v|-??WLM&qo[V}B!44_x:MY,ܤ3[szCJݤ~Wɤ2̩3)Geb7?3]xBS˗i/i.|x9?3ry/1"hHPb)%Rc(.|KCJ=$RH/FVnm̭CY)|I|KC,$GIfdkK`#).ݍ}jO7;{Z &rLݰK#]3~6|ħ ~X6x\$G>( *>ko=v9kAv0lbդXBOeSZL[tnÂu]m8e)̈́bWO P/U(Ǖm-~/N_u\KTp-# ?`ᢼ1^tj *hQ|*{Ӗ0f.ʩ-{xV#/sbh@$jMFSHz6Lʤ9e8m$S-O=\$Z`$/}ס3kP|$݂K,+jajQDLvӇ1UF_O,hѦ*W ѳln^* -/M/* gMBNOCLwĦ;'ㅺ/+8/*VO&}Nh劚!kn*Yeתtw>yj̲zyo4=]a%ہE1 ڢ^UfzFv>.k+N -.0_n4utϑ~鸐6G+8Ccx -l_=iO -Z_vly2Pzaoghm l|(ާr>A-V-DCPbh&B\J "y @i 6sQh: -Dh6r,7-tN>3Z6(e:2_Xn;t#w*stgB;7GB0(g%QPiuȻI^Z@_S2{{kߪ.륓]ơGh2;|!]'2|~1Ǿ+9{Y 0 -6r0ڍFK^+*SM/Ev@wX)q r,['=[>1O j kN`^ JЁqPf@`$ʽތfV{hޞ]߆vih)^nh׿]?.IANbh7vPm(f?V6)7󔾯<'.A{$X;[>hb7An6Y!B -endstream endobj 2203 0 obj << -/Length1 6952 -/Filter /FlateDecode -/Length 4585 +/Title (1.11 Ethique du projet) +/Dest [ 1058 0 R /XYZ 39.386457 151.086822 0 ] +/Count 2 +/Prev 2202 0 R +/First 2204 0 R +/Last 2205 0 R +/Parent 2110 0 R +/Next 2206 0 R >> -stream -xYyXSGsNV԰ŭHT+!PZju_֪ Pd "nXD X;TĢK](ZEjL;'y{39n{gN(qh߈d -B=.@넱> !>g yP_3?:Y![2;,!(~,t;B@Y+j {C5=1:fCs9a3q1ЯHԌ>r8?ʳP.>:zX!u| h8/PFdCz -RIPɝIyه;f΂ vLE -- DC;>@Ч037z(4M^td25/?0zL}^IH2>wp—M4 -Rlr\%\?HH\*w{={sL~_+vwMa.|'4I:I$TINA&*͐^z#eVEVʿycxX&?ߔABV#g'v8vy!VbZ<.j8FiMhZ,ӟBG>^ޞv'U8q+ xݝQyÔJ -w˕XNf%I܁!\8QOؕ('j񴱕zAM"ٱz]Z}#ۼ` ):+&i =bW,` l\2(2A!t47 #aD;F([륂^O{;+H$qFegROCq*<0i髣ϗ^F@3d{ -4]ߑt`oJ96BW'iMF.Z_ٸ(fiӚWuoUOuqƦKV ڟR\'/{Uhu8H3ufk+eJH - gcRjCzh@G nT~lnWpQơO0U?Ron{1 Qkl1^$ -'"gN+x/5mk]=w=!Ǖw྇n7q4%za~ N!5g}L^dZ/.٥W&z}b-x3={lqz~ת0Ҋ=0|W `{3w)-2An5x2c PZ_5Ns H!nVx8!t :Wa*QNP7>. -cOLnc5έKˋ&볠-X99ޠfTa]0^U?롆wP0HfAf'>>uQ-;} U7iys\Ej eKDED -/t'=;;-%YbMd3SF`KƴL?*o: ŭ -$(ۅ]bf|'fygGF.#FdtJLr9&xӿ5xgp콮 -k]HA{qD1 LǶBBkg,568`NJNc}v):e@BԑkDBR@\lTz:9_%[T t+f,Ng\k\kM3rv0O].PR9 YgX\^ʺ3/fgae ^ZDΡEw'Yx.ڲ/wSSN^ #,뮡zڙ!B`TpFɘ:a2;GoߌSgߥ/sroz{`P]euf\>"iHU\glXm޼e~)yE-SR6t-7tM\815Zk6q|ʕE{eK|-R{ Fp|S$9IVr/a%4ucYYsrh,B-\f'ÇR"?aܣXJfZ]sZ^*^5aE1R -(QOb%E<فR^21h́Dnj"nۖwJBbc ƽm.ݟN4@ !c[LL`7 qK*F Q.^ߎ >vmɤO?{Á9Ceu PP^9F)`eXB.5便E#w"Z m2,)Z3'Y~ejML1-m~isn\LBJ<8p \zgXg"lnI(.߽ERCO0"UY+=%y-bn"I[6}?CDwX 3:))Jٲ 7~}ey*WW~PulgZeԈ"#X[p0`cN7oʦZ$(ҙd%ΦoW T̻X.;u,  Y@1֬Zxo`4rбXѝ\pj/{nK:=}cRܿñ/j?m=pHW0M_Xȭ7#$7۱~Φ~E"녫_Wi+_h|yofՉ{o(I. E.p !zQ0?<6뗬&ҳrRAK| M7vJKO1@N`{Ο <`7t808&=-oH]LS'Xz2ץp{a.lsŏ(= J4p6mQZc.t|ƽ7 dmMJ=ؚ5 -ᆴVrS -&[%v"7o\yi YѬ$g|d7Q[HGsaaZ8{}SnC&48u'[';ϔ|$J]c %D=d2ch'E#P5XmN -aNh"+cM xc̵kەBKY;p"QB!h6 -F1OF@{ -(4DPzZ;h@Y0ry9b?D [V 4%7>roG?Sy`Ќd~] a8eooX!#v;YCc -endstream endobj 2204 0 obj << -/Length1 6176 -/Filter /FlateDecode -/Length 3970 +/Title (1.11.1 Utilisation abusive de la F1TV ?) +/Dest [ 1060 0 R /XYZ 39.386457 697.828422 0 ] +/Count 0 +/Parent 2203 0 R +/Next 2205 0 R >> -stream -x8iTW5h Y4(O4jQq(..K44Q(hW|j  n+Pv|ΙsyUoV&0ѧWB/8;b}cޙ@8h\xp%pdM ps('4ЃB 4'N`3O‰׾#<^c⪌n+p dE 95¯¹Sqps158|v nI8c ?/Gz lyzWũ8t -a >AS Xn(37-ǂH - TB^8@oLP |M -q|^H=0Uk-X/Ά|lc}̈́m`G0#П\<3 ]>~>BľaX^Mq *O(v1t q{ܴ}qrK@= b($ US FxY|lar+\pulͭ\AQZ;/P -`_=a0֭^QU7O-M_z IC -^5 -H'eX`gy5!R D,WRS4P -\PW TPjß=t /A/0DQ -UEлdtfV`(cvⲬU)/M"d+M[9qewtr9I`Ba m6wji1F-$ɡ4TGJL 5t9묵b;<6rE ֕=} nv$jɏhm)IGj~,),jh%Ƣ'UL؟0pʝg,Dͥ-txVn*=!ZΦ'uQ[f\@N41] Z3O;4*^W{O}q[srF="ĸwdKo_V洔!-AkDtvGՂl2OYxm g˯:ZL߸CGXn˖4EedcgX2?K㷗xL'\TjH)4z嗐U ȰTⓖi oªr_9 Ix9A~ B퉲zno sZ=Q}>99 P4D:gp(qD!z\+!1I-+kQ:*,?D?EzjR] -VUhn۸t)teVs1}=Х-5&7h0rG}s ¾ܹ4~`|LjoY$~2d{? &!֞pGk]U?wM\b3/;[#o&%ki $Wsj<`c頿8-izU JrW“۶}Ө7n"vd8Jkxao<3hH㧄egsNՔE8=93sЌ3#Z`p@bdLڤW-dxĪ5c@n?b JOͽ= ,$4bT"d qO xrڝMfx,$uե PGM0'i1)i%+g]n=]Lfa m+_l(Xk0a`+XƑOhRqTwǛHPs1>匑ێ^CW%!*䄉In"ǥ8-虓d_ZZF,Ȃ;O!?l,8QᛖE[؜CyuT#έiܤ5mrQuvӲK^/蟰Gbe+^OЖw tu`uEƎLۇbtEJ -CZeh̠E{u>6,~O x:Zk0 D}BV WhrsOzϚ]Z*`uirpϞM2\34fb~ u^)r!+aXR8eαRZ,~#ԗI."<`Z)#MYKYz{}M;1b ǷďNYXi{b V|jйL06*w;xG9 p#0ċݽrHxE]ݏ$T"ߔ/l -SL6Y^*v -X%υk -b&ZzHv&XH 7`T>~eΪa:P(D >S>A?)¼B_B-UQ -aĀB{:`F|Q? -=ę0|~v*Zx9ONx.w SEx av:"o(ʀ"O*}'|_;B+o \b%xc{|O3tgoUX +Q('!L -endstream endobj 2205 0 obj << -/Length1 8452 -/Filter /FlateDecode -/Length 6005 +/Title +/Dest [ 1060 0 R /XYZ 39.386457 284.792022 0 ] +/Count 0 +/Prev 2204 0 R +/Parent 2203 0 R >> -stream -xY @TU>k3 -%OPIF@TI !Q@P$E" .""" p2|4>ȐLȟ2QKC|0kAas9kkL}|O>sӗ+o.rqkq$8#q|KG&'qFxpvGm<>5pm5 W8e1yt&=&6a a0ȔU 듸$MƶݪȄe/vlmRb,ٕ arkp]D-6u/3Jw k'/M/ 6Nq]\ @X&!@1sLD@jE("8c5p2tB pxO °]HJnl "B?+?GFL Br˨G2gU =o7E?&{T/B/oɄխðCCJSݠk IHz,uzP!dl#Ό8q}8D͍0VT -kHrK9M&y9pEŊ⧴3bEb)i/ĂŽ5hd)QQ)Gڋi"]6wwINRpmpsGGIn -lXCíFȪ~MIN 1 QʦKgf~CiMʷ!)'2i{Xݯ%7-w93oxʹqhq'S3l6l^@`ČW~Mh}H-8(%V6rG6ƒOΩYRSj zW:Ps'\zaO'}Op k+b$wpD LUwt[U/oQk@"1r@D'ApeI'ÞCjֿ Y D#a2 xq-,YeKag4gHgZro0ջ0h30DjTО&\lQzINzb Ȃ\|b  -]/1r`Z?XC¾NAƟgiqJu0D|nt -c$,sIt&Rd*~B0C-nr⒲$eͳkqt섀3';fqojKO\jiggZBE ed\I, Rː9=laa-eC}79\K;,=_6ozȲv`nz+qӧx(Wc\?_,>d :q}* ]iG={資X1OH=[f7ZE.XVi,8=thDt~מ"A=tdKvij -Z*K⬬eWHF)ig |M,0;Q< ;E{KÓ(ژ<~,q[>f">D0Ǔ<8x\Q:I[BYܧ` 1L_ q`(v0t[rJssKr[i4X~u3[K -4#8IKO1|yvP"EFSi;-V򏞟C\ƈؒU[XوX,U O> ݧQu6r*B꾷y-9Ej`cV>nl  66Yz99t>c1v"*aoǚ%_-U_9 /t%NY+1ۣm?uw^Zһv#]b T  '"$Mi=bD祯vpȍ5Y@::7K Z^6̴gj -9SKcȩӦMjb=7c)Sף|tRaq`Q$i~_J⌶ܦf%zҒfZwijRϛ(:4yS<tA0<\C5!MiD&t@16F-9\xFȇHAE2r.lcAӃL#/QU&aی{ug60X` `UM_v, oζ,b(e S xBߗZ=P*0sj!Oa9TC5p -4̾0qdьZZ.X]q[ -j(\brחVY|"TcCrrnȭ7EQo+wW ռ<؄q` -1L -)2ǏuËDQ'VʯXrLKzSmJ?"A FCĽ@ 9ѫY  -B~6$IěaX=! +n -~ B!hV}[Zӥw3wq&g`ZiҠh}Ȭ,:~C"Z4'Kv|^NߝlcU}݆z4k%o77'pjE_1wN Ԯ#Y' YU6ǰ8BD5[ "~+Z{_fHm۶lVvwo/}m߷oPs0l0eie~0GX 8N`~ۭƘR 6EKW6Ɩ%PobP=.z rzx%//]}׉ęICn^<0 )K>e!}%4ѳouQ=uülw U.~ HS>\[͊Eia} -~oxG7T G&LXWKUr[̉E}-c%{uvsfjNb4hV"Kj+ދ*j"0G L2kuCuK`>X ̘)ԾH &A(q7.fw 3tȋ} =*TOQs;#j>h˰?~&y 4j۰<4k NBd.A`;E컯a:<ވ9$aA:7 6 }<% ,) !ʤM'ٚSXl5?PAk;c0f컟uy@kf~|r n+o뜨q/rlfc0[)!_u<O~ -endstream endobj 2206 0 obj << +/Title (1.12 Utilisation de Chat GPT) +/Dest [ 1062 0 R /XYZ 39.386457 421.000422 0 ] +/Count 0 +/Prev 2203 0 R +/Parent 2110 0 R +/Next 2207 0 R +>> +endobj +2207 0 obj +<< +/Title +/Dest [ 1067 0 R /XYZ 39.386457 261.472422 0 ] +/Count 2 +/Prev 2206 0 R +/First 2208 0 R +/Last 2209 0 R +/Parent 2110 0 R +/Next 2210 0 R +>> +endobj +2208 0 obj +<< +/Title (1.13.1 Court terme) +/Dest [ 1069 0 R /XYZ 39.386457 771.023622 0 ] +/Count 0 +/Parent 2207 0 R +/Next 2209 0 R +>> +endobj +2209 0 obj +<< +/Title (1.13.2 Long terme) +/Dest [ 1071 0 R /XYZ 39.386457 771.023622 0 ] +/Count 0 +/Prev 2208 0 R +/Parent 2207 0 R +>> +endobj +2210 0 obj +<< +/Title (1.14 Conclusion) +/Dest [ 1071 0 R /XYZ 39.386457 258.516822 0 ] +/Count 2 +/Prev 2207 0 R +/First 2211 0 R +/Last 2212 0 R +/Parent 2110 0 R +/Next 2213 0 R +>> +endobj +2211 0 obj +<< +/Title (1.14.1 Bilan) +/Dest [ 1071 0 R /XYZ 39.386457 202.955322 0 ] +/Count 0 +/Parent 2210 0 R +/Next 2212 0 R +>> +endobj +2212 0 obj +<< +/Title +/Dest [ 1073 0 R /XYZ 39.386457 420.062022 0 ] +/Count 0 +/Prev 2211 0 R +/Parent 2210 0 R +>> +endobj +2213 0 obj +<< +/Title (1.15 Notes de code) +/Dest [ 1075 0 R /XYZ 39.386457 608.680422 0 ] +/Count 22 +/Prev 2210 0 R +/First 2214 0 R +/Last 2234 0 R +/Parent 2110 0 R +/Next 2236 0 R +>> +endobj +2214 0 obj +<< +/Title (1.15.1 Vues) +/Dest [ 1075 0 R /XYZ 39.386457 454.586922 0 ] +/Count 2 +/First 2215 0 R +/Last 2216 0 R +/Parent 2213 0 R +/Next 2217 0 R +>> +endobj +2215 0 obj +<< +/Title (Settings.cs) +/Dest [ 1075 0 R /XYZ 42.836457 376.504122 0 ] +/Count 0 +/Parent 2214 0 R +/Next 2216 0 R +>> +endobj +2216 0 obj +<< +/Title (Form1.cs) +/Dest [ 1077 0 R /XYZ 42.836457 771.023622 0 ] +/Count 0 +/Prev 2215 0 R +/Parent 2214 0 R +>> +endobj +2217 0 obj +<< +/Title +/Dest [ 1077 0 R /XYZ 39.386457 589.912422 0 ] +/Count 4 +/Prev 2214 0 R +/First 2218 0 R +/Last 2221 0 R +/Parent 2213 0 R +/Next 2222 0 R +>> +endobj +2218 0 obj +<< +/Title (ConfigurationTool.cs) +/Dest [ 1077 0 R /XYZ 42.836457 511.829622 0 ] +/Count 0 +/Parent 2217 0 R +/Next 2219 0 R +>> +endobj +2219 0 obj +<< +/Title (DataWrapper.cs) +/Dest [ 1077 0 R /XYZ 42.836457 274.359222 0 ] +/Count 0 +/Prev 2218 0 R +/Parent 2217 0 R +/Next 2220 0 R +>> +endobj +2220 0 obj +<< +/Title (Reader.cs) +/Dest [ 1079 0 R /XYZ 42.836457 705.280422 0 ] +/Count 0 +/Prev 2219 0 R +/Parent 2217 0 R +/Next 2221 0 R +>> +endobj +2221 0 obj +<< +/Title (Zone.cs) +/Dest [ 1079 0 R /XYZ 42.836457 551.327622 0 ] +/Count 0 +/Prev 2220 0 R +/Parent 2217 0 R +>> +endobj +2222 0 obj +<< +/Title +/Dest [ 1079 0 R /XYZ 39.386457 329.865222 0 ] +/Count 11 +/Prev 2217 0 R +/First 2223 0 R +/Last 2233 0 R +/Parent 2213 0 R +/Next 2234 0 R +>> +endobj +2223 0 obj +<< +/Title (DriverDrsWindow.cs) +/Dest [ 1079 0 R /XYZ 42.836457 119.468022 0 ] +/Count 0 +/Parent 2222 0 R +/Next 2224 0 R +>> +endobj +2224 0 obj +<< +/Title (DriverGapToLeaderWindow.cs) +/Dest [ 1081 0 R /XYZ 42.836457 680.882022 0 ] +/Count 0 +/Prev 2223 0 R +/Parent 2222 0 R +/Next 2225 0 R +>> +endobj +2225 0 obj +<< +/Title (DriverLapTimeWindow.cs) +/Dest [ 1081 0 R /XYZ 42.836457 541.943622 0 ] +/Count 0 +/Prev 2224 0 R +/Parent 2222 0 R +/Next 2226 0 R +>> +endobj +2226 0 obj +<< +/Title (DriverNameWindow.cs) +/Dest [ 1081 0 R /XYZ 42.836457 403.005222 0 ] +/Count 0 +/Prev 2225 0 R +/Parent 2222 0 R +/Next 2227 0 R +>> +endobj +2227 0 obj +<< +/Title (DriverPositionWindow.cs) +/Dest [ 1081 0 R /XYZ 42.836457 273.450822 0 ] +/Count 0 +/Prev 2226 0 R +/Parent 2222 0 R +/Next 2228 0 R +>> +endobj +2228 0 obj +<< +/Title (DriverSectorWindow.cs) +/Dest [ 1081 0 R /XYZ 42.836457 173.925222 0 ] +/Count 0 +/Prev 2227 0 R +/Parent 2222 0 R +/Next 2229 0 R +>> +endobj +2229 0 obj +<< +/Title (DriverTyresWindow.cs) +/Dest [ 1083 0 R /XYZ 42.836457 771.023622 0 ] +/Count 0 +/Prev 2228 0 R +/Parent 2222 0 R +/Next 2230 0 R +>> +endobj +2230 0 obj +<< +/Title (F1TVEmulator.cs) +/Dest [ 1083 0 R /XYZ 42.836457 592.672422 0 ] +/Count 0 +/Prev 2229 0 R +/Parent 2222 0 R +/Next 2231 0 R +>> +endobj +2231 0 obj +<< +/Title (OcrImage.cs) +/Dest [ 1083 0 R /XYZ 42.836457 167.522022 0 ] +/Count 0 +/Prev 2230 0 R +/Parent 2222 0 R +/Next 2232 0 R +>> +endobj +2232 0 obj +<< +/Title (SqliteStorage.cs) +/Dest [ 1085 0 R /XYZ 42.836457 522.292422 0 ] +/Count 0 +/Prev 2231 0 R +/Parent 2222 0 R +/Next 2233 0 R +>> +endobj +2233 0 obj +<< +/Title (Window.cs) +/Dest [ 1085 0 R /XYZ 42.836457 343.941222 0 ] +/Count 0 +/Prev 2232 0 R +/Parent 2222 0 R +>> +endobj +2234 0 obj +<< +/Title (1.15.4 Structures) +/Dest [ 1087 0 R /XYZ 39.386457 771.023622 0 ] +/Count 1 +/Prev 2222 0 R +/First 2235 0 R +/Last 2235 0 R +/Parent 2213 0 R +>> +endobj +2235 0 obj +<< +/Title (DriverData.cs) +/Dest [ 1087 0 R /XYZ 42.836457 677.926422 0 ] +/Count 0 +/Parent 2234 0 R +>> +endobj +2236 0 obj +<< +/Title (1.16 Glossaire) +/Dest [ 1087 0 R /XYZ 39.386457 387.960822 0 ] +/Count 0 +/Prev 2213 0 R +/Parent 2110 0 R +>> +endobj +2237 0 obj +<< +/Title (2. Cahier des charges) +/Dest [ 1093 0 R /XYZ 39.386457 757.223622 0 ] +/Count 5 +/Prev 2110 0 R +/First 2238 0 R +/Last 2242 0 R +/Next 2243 0 R +/Parent 2326 0 R +>> +endobj +2238 0 obj +<< +/Title (2.1 Contexte) +/Dest [ 1093 0 R /XYZ 39.386457 669.390822 0 ] +/Count 0 +/Parent 2237 0 R +/Next 2239 0 R +>> +endobj +2239 0 obj +<< +/Title (2.2 Projet) +/Dest [ 1098 0 R /XYZ 39.386457 124.199039 0 ] +/Count 0 +/Prev 2238 0 R +/Parent 2237 0 R +/Next 2240 0 R +>> +endobj +2240 0 obj +<< +/Title +/Dest [ 1102 0 R /XYZ 39.386457 436.953222 0 ] +/Count 0 +/Prev 2239 0 R +/Parent 2237 0 R +/Next 2241 0 R +>> +endobj +2241 0 obj +<< +/Title (2.4 Cas d'utilisation) +/Dest [ 1114 0 R /XYZ 39.386457 771.023622 0 ] +/Count 0 +/Prev 2240 0 R +/Parent 2237 0 R +/Next 2242 0 R +>> +endobj +2242 0 obj +<< +/Title +/Dest [ 1116 0 R /XYZ 39.386457 771.023622 0 ] +/Count 0 +/Prev 2241 0 R +/Parent 2237 0 R +>> +endobj +2243 0 obj +<< +/Title (3. Manuel utilisateur) +/Dest [ 1118 0 R /XYZ 39.386457 757.223622 0 ] +/Count 19 +/Prev 2237 0 R +/First 2244 0 R +/Last 2262 0 R +/Next 2263 0 R +/Parent 2326 0 R +>> +endobj +2244 0 obj +<< +/Title (3.1 Installation) +/Dest [ 1118 0 R /XYZ 39.386457 707.865222 0 ] +/Count 0 +/Parent 2243 0 R +/Next 2245 0 R +>> +endobj +2245 0 obj +<< +/Title (3.2 A quoi sert l'app ?) +/Dest [ 1118 0 R /XYZ 39.386457 608.700522 0 ] +/Count 0 +/Prev 2244 0 R +/Parent 2243 0 R +/Next 2246 0 R +>> +endobj +2246 0 obj +<< +/Title (3.3 Utilisation "Simple") +/Dest [ 1118 0 R /XYZ 39.386457 391.297422 0 ] +/Count 2 +/Prev 2245 0 R +/First 2247 0 R +/Last 2248 0 R +/Parent 2243 0 R +/Next 2249 0 R +>> +endobj +2247 0 obj +<< +/Title +/Dest [ 1127 0 R /XYZ 39.386457 347.470422 0 ] +/Count 0 +/Parent 2246 0 R +/Next 2248 0 R +>> +endobj +2248 0 obj +<< +/Title (3.3.2 Boutons) +/Dest [ 1138 0 R /XYZ 39.386457 309.260718 0 ] +/Count 0 +/Prev 2247 0 R +/Parent 2246 0 R +>> +endobj +2249 0 obj +<< +/Title (3.4 Calibration) +/Dest [ 1157 0 R /XYZ 39.386457 771.023622 0 ] +/Count 6 +/Prev 2246 0 R +/First 2250 0 R +/Last 2255 0 R +/Parent 2243 0 R +/Next 2256 0 R +>> +endobj +2250 0 obj +<< +/Title +/Dest [ 1157 0 R /XYZ 39.386457 661.536522 0 ] +/Count 0 +/Parent 2249 0 R +/Next 2251 0 R +>> +endobj +2251 0 obj +<< +/Title +/Dest [ 1157 0 R /XYZ 39.386457 269.144922 0 ] +/Count 3 +/Prev 2250 0 R +/First 2252 0 R +/Last 2254 0 R +/Parent 2249 0 R +/Next 2255 0 R +>> +endobj +2252 0 obj +<< +/Title +/Dest [ 1173 0 R /XYZ 42.836457 587.042022 0 ] +/Count 0 +/Parent 2251 0 R +/Next 2253 0 R +>> +endobj +2253 0 obj +<< +/Title (Ajout du nom des pilotes) +/Dest [ 1196 0 R /XYZ 42.836457 166.651302 0 ] +/Count 0 +/Prev 2252 0 R +/Parent 2251 0 R +/Next 2254 0 R +>> +endobj +2254 0 obj +<< +/Title (Sauvegarder le nouveau Preset) +/Dest [ 1210 0 R /XYZ 42.836457 341.110056 0 ] +/Count 0 +/Prev 2253 0 R +/Parent 2251 0 R +>> +endobj +2255 0 obj +<< +/Title (3.4.3 Load un Preset existant) +/Dest [ 1210 0 R /XYZ 39.386457 189.089256 0 ] +/Count 0 +/Prev 2251 0 R +/Parent 2249 0 R +>> +endobj +2256 0 obj +<< +/Title +/Dest [ 1215 0 R /XYZ 39.386457 322.349771 0 ] +/Count 5 +/Prev 2249 0 R +/First 2257 0 R +/Last 2261 0 R +/Parent 2243 0 R +/Next 2262 0 R +>> +endobj +2257 0 obj +<< +/Title (3.5.1 Overtakes) +/Dest [ 1220 0 R /XYZ 39.386457 307.522050 0 ] +/Count 0 +/Parent 2256 0 R +/Next 2258 0 R +>> +endobj +2258 0 obj +<< +/Title (3.5.2 Last Five Laps) +/Dest [ 1220 0 R /XYZ 39.386457 206.972850 0 ] +/Count 0 +/Prev 2257 0 R +/Parent 2256 0 R +/Next 2259 0 R +>> +endobj +2259 0 obj +<< +/Title (3.5.3 Battles) +/Dest [ 1225 0 R /XYZ 39.386457 234.880422 0 ] +/Count 0 +/Prev 2258 0 R +/Parent 2256 0 R +/Next 2260 0 R +>> +endobj +2260 0 obj +<< +/Title (3.5.4 Driver infos) +/Dest [ 1230 0 R /XYZ 39.386457 294.880422 0 ] +/Count 0 +/Prev 2259 0 R +/Parent 2256 0 R +/Next 2261 0 R +>> +endobj +2261 0 obj +<< +/Title (3.5.5 Live Ranking) +/Dest [ 1242 0 R /XYZ 39.386457 771.023622 0 ] +/Count 0 +/Prev 2260 0 R +/Parent 2256 0 R +>> +endobj +2262 0 obj +<< +/Title (3.6 Erreurs) +/Dest [ 1248 0 R /XYZ 39.386457 634.955622 0 ] +/Count 0 +/Prev 2256 0 R +/Parent 2243 0 R +>> +endobj +2263 0 obj +<< +/Title (4. Journal de bord) +/Dest [ 1251 0 R /XYZ 39.386457 757.223622 0 ] +/Count 42 +/Prev 2243 0 R +/First 2264 0 R +/Last 2305 0 R +/Next 2306 0 R +/Parent 2326 0 R +>> +endobj +2264 0 obj +<< +/Title (4.1 Mercredi 29 Mars 2023) +/Dest [ 1251 0 R /XYZ 39.386457 707.865222 0 ] +/Count 0 +/Parent 2263 0 R +/Next 2265 0 R +>> +endobj +2265 0 obj +<< +/Title (4.2 Jeudi 30 Mars 2023) +/Dest [ 1254 0 R /XYZ 39.386457 263.492343 0 ] +/Count 0 +/Prev 2264 0 R +/Parent 2263 0 R +/Next 2266 0 R +>> +endobj +2266 0 obj +<< +/Title (4.3 Vendredi 31/03/2023) +/Dest [ 1266 0 R /XYZ 39.386457 347.805222 0 ] +/Count 0 +/Prev 2265 0 R +/Parent 2263 0 R +/Next 2267 0 R +>> +endobj +2267 0 obj +<< +/Title (4.4 Lundi 3 Avril) +/Dest [ 1341 0 R /XYZ 39.386457 717.534822 0 ] +/Count 0 +/Prev 2266 0 R +/Parent 2263 0 R +/Next 2268 0 R +>> +endobj +2268 0 obj +<< +/Title (4.5 Mardi 4 Avril) +/Dest [ 1407 0 R /XYZ 39.386457 305.202822 0 ] +/Count 0 +/Prev 2267 0 R +/Parent 2263 0 R +/Next 2269 0 R +>> +endobj +2269 0 obj +<< +/Title (4.6 Mercredi 5 Avril) +/Dest [ 1434 0 R /XYZ 39.386457 293.199726 0 ] +/Count 0 +/Prev 2268 0 R +/Parent 2263 0 R +/Next 2270 0 R +>> +endobj +2270 0 obj +<< +/Title (4.7 Jeudi 6 Avril) +/Dest [ 1461 0 R /XYZ 39.386457 238.444086 0 ] +/Count 0 +/Prev 2269 0 R +/Parent 2263 0 R +/Next 2271 0 R +>> +endobj +2271 0 obj +<< +/Title (4.8 Vendredi 6 Avril 2023) +/Dest [ 1504 0 R /XYZ 39.386457 565.514022 0 ] +/Count 0 +/Prev 2270 0 R +/Parent 2263 0 R +/Next 2272 0 R +>> +endobj +2272 0 obj +<< +/Title (4.9 Vacances) +/Dest [ 1529 0 R /XYZ 39.386457 355.144422 0 ] +/Count 0 +/Prev 2271 0 R +/Parent 2263 0 R +/Next 2273 0 R +>> +endobj +2273 0 obj +<< +/Title (4.10 Lundi 24 Avril 2023) +/Dest [ 1584 0 R /XYZ 39.386457 266.404302 0 ] +/Count 0 +/Prev 2272 0 R +/Parent 2263 0 R +/Next 2274 0 R +>> +endobj +2274 0 obj +<< +/Title (4.11 Mardi 25 Avril 2023) +/Dest [ 1603 0 R /XYZ 39.386457 693.136422 0 ] +/Count 0 +/Prev 2273 0 R +/Parent 2263 0 R +/Next 2275 0 R +>> +endobj +2275 0 obj +<< +/Title (4.12 26 Avril 2023) +/Dest [ 1603 0 R /XYZ 39.386457 222.365322 0 ] +/Count 0 +/Prev 2274 0 R +/Parent 2263 0 R +/Next 2276 0 R +>> +endobj +2276 0 obj +<< +/Title (4.13 Jeudi 27 Avril 2023) +/Dest [ 1610 0 R /XYZ 39.386457 584.282022 0 ] +/Count 0 +/Prev 2275 0 R +/Parent 2263 0 R +/Next 2277 0 R +>> +endobj +2277 0 obj +<< +/Title (4.14 Vendredi 28 Avril 2023) +/Dest [ 1622 0 R /XYZ 39.386457 717.534822 0 ] +/Count 0 +/Prev 2276 0 R +/Parent 2263 0 R +/Next 2278 0 R +>> +endobj +2278 0 obj +<< +/Title (4.15 Lundi 1 Mai 2023) +/Dest [ 1624 0 R /XYZ 39.386457 501.702822 0 ] +/Count 0 +/Prev 2277 0 R +/Parent 2263 0 R +/Next 2279 0 R +>> +endobj +2279 0 obj +<< +/Title (4.16 Mardi 2 Mai 2023) +/Dest [ 1630 0 R /XYZ 39.386457 595.251918 0 ] +/Count 0 +/Prev 2278 0 R +/Parent 2263 0 R +/Next 2280 0 R +>> +endobj +2280 0 obj +<< +/Title (4.17 Recrutement Payerne Mai 2023) +/Dest [ 1650 0 R /XYZ 39.386457 526.101222 0 ] +/Count 0 +/Prev 2279 0 R +/Parent 2263 0 R +/Next 2281 0 R +>> +endobj +2281 0 obj +<< +/Title (4.18 Vendredi 5 Mai 2023) +/Dest [ 1650 0 R /XYZ 39.386457 426.936522 0 ] +/Count 0 +/Prev 2280 0 R +/Parent 2263 0 R +/Next 2282 0 R +>> +endobj +2282 0 obj +<< +/Title (4.19 Lundi 8 Mai 2023) +/Dest [ 1653 0 R /XYZ 39.386457 314.866514 0 ] +/Count 0 +/Prev 2281 0 R +/Parent 2263 0 R +/Next 2283 0 R +>> +endobj +2283 0 obj +<< +/Title (4.20 Mardi 9 Mai 2023) +/Dest [ 1689 0 R /XYZ 39.386457 146.799010 0 ] +/Count 0 +/Prev 2282 0 R +/Parent 2263 0 R +/Next 2284 0 R +>> +endobj +2284 0 obj +<< +/Title (4.21 Mercredi 10 Mai 2023) +/Dest [ 1710 0 R /XYZ 39.386457 659.354022 0 ] +/Count 0 +/Prev 2283 0 R +/Parent 2263 0 R +/Next 2285 0 R +>> +endobj +2285 0 obj +<< +/Title (4.22 Jeudi 11 Mai 2023) +/Dest [ 1724 0 R /XYZ 39.386457 562.440762 0 ] +/Count 0 +/Prev 2284 0 R +/Parent 2263 0 R +/Next 2286 0 R +>> +endobj +2286 0 obj +<< +/Title (4.23 vendredi 12 Mai 2023) +/Dest [ 1737 0 R /XYZ 39.386457 623.694822 0 ] +/Count 0 +/Prev 2285 0 R +/Parent 2263 0 R +/Next 2287 0 R +>> +endobj +2287 0 obj +<< +/Title (4.24 Lundi 15 Mai 2023) +/Dest [ 1746 0 R /XYZ 39.386457 584.282022 0 ] +/Count 0 +/Prev 2286 0 R +/Parent 2263 0 R +/Next 2288 0 R +>> +endobj +2288 0 obj +<< +/Title (4.25 Mardi 16 Mai 2023) +/Dest [ 1746 0 R /XYZ 39.386457 273.038922 0 ] +/Count 0 +/Prev 2287 0 R +/Parent 2263 0 R +/Next 2289 0 R +>> +endobj +2289 0 obj +<< +/Title (4.26 Mercredi 17 Mai 2023) +/Dest [ 1755 0 R /XYZ 39.386457 771.023622 0 ] +/Count 0 +/Prev 2288 0 R +/Parent 2263 0 R +/Next 2290 0 R +>> +endobj +2290 0 obj +<< +/Title (4.27 Jeudi 18 Mai 2023) +/Dest [ 1763 0 R /XYZ 39.386457 459.588513 0 ] +/Count 0 +/Prev 2289 0 R +/Parent 2263 0 R +/Next 2291 0 R +>> +endobj +2291 0 obj +<< +/Title (4.28 Lundi 22 Mai 2023) +/Dest [ 1770 0 R /XYZ 39.386457 649.970022 0 ] +/Count 0 +/Prev 2290 0 R +/Parent 2263 0 R +/Next 2292 0 R +>> +endobj +2292 0 obj +<< +/Title (4.29 Mardi 23 Mai 2023) +/Dest [ 1797 0 R /XYZ 39.386457 234.994819 0 ] +/Count 0 +/Prev 2291 0 R +/Parent 2263 0 R +/Next 2293 0 R +>> +endobj +2293 0 obj +<< +/Title (4.30 Mercredi 24 Mai 2023) +/Dest [ 1802 0 R /XYZ 39.386457 629.325222 0 ] +/Count 0 +/Prev 2292 0 R +/Parent 2263 0 R +/Next 2294 0 R +>> +endobj +2294 0 obj +<< +/Title (4.31 Jeudi 25 Mai 2023) +/Dest [ 1804 0 R /XYZ 39.386457 446.337222 0 ] +/Count 0 +/Prev 2293 0 R +/Parent 2263 0 R +/Next 2295 0 R +>> +endobj +2295 0 obj +<< +/Title (4.32 Vendredi 26 Mai 2023) +/Dest [ 1812 0 R /XYZ 39.386457 249.143222 0 ] +/Count 0 +/Prev 2294 0 R +/Parent 2263 0 R +/Next 2296 0 R +>> +endobj +2296 0 obj +<< +/Title (4.33 Grand Prix de Monaco) +/Dest [ 1812 0 R /XYZ 39.386457 164.992922 0 ] +/Count 0 +/Prev 2295 0 R +/Parent 2263 0 R +/Next 2297 0 R +>> +endobj +2297 0 obj +<< +/Title (4.34 Lundi 29 Mai 2023) +/Dest [ 1816 0 R /XYZ 39.386457 771.023622 0 ] +/Count 0 +/Prev 2296 0 R +/Parent 2263 0 R +/Next 2298 0 R +>> +endobj +2298 0 obj +<< +/Title (4.35 Mardi 30 Mai 2023) +/Dest [ 1816 0 R /XYZ 39.386457 547.990122 0 ] +/Count 0 +/Prev 2297 0 R +/Parent 2263 0 R +/Next 2299 0 R +>> +endobj +2299 0 obj +<< +/Title (4.36 Mercredi 31 Mai 2023) +/Dest [ 1816 0 R /XYZ 39.386457 339.971022 0 ] +/Count 0 +/Prev 2298 0 R +/Parent 2263 0 R +/Next 2300 0 R +>> +endobj +2300 0 obj +<< +/Title (4.37 Jeudi 1 Juin 2023) +/Dest [ 1816 0 R /XYZ 39.386457 270.835122 0 ] +/Count 0 +/Prev 2299 0 R +/Parent 2263 0 R +/Next 2301 0 R +>> +endobj +2301 0 obj +<< +/Title (4.38 Vendredi 2 Juin 2023) +/Dest [ 1842 0 R /XYZ 39.386457 608.680422 0 ] +/Count 0 +/Prev 2300 0 R +/Parent 2263 0 R +/Next 2302 0 R +>> +endobj +2302 0 obj +<< +/Title (4.39 Lundi 5 Juin 2023) +/Dest [ 1860 0 R /XYZ 39.386457 229.986499 0 ] +/Count 0 +/Prev 2301 0 R +/Parent 2263 0 R +/Next 2303 0 R +>> +endobj +2303 0 obj +<< +/Title (4.40 Mardi 6 Juin 2023) +/Dest [ 1870 0 R /XYZ 39.386457 150.125803 0 ] +/Count 0 +/Prev 2302 0 R +/Parent 2263 0 R +/Next 2304 0 R +>> +endobj +2304 0 obj +<< +/Title (4.41 Mercredi 7 Juin) +/Dest [ 1874 0 R /XYZ 39.386457 648.093222 0 ] +/Count 0 +/Prev 2303 0 R +/Parent 2263 0 R +/Next 2305 0 R +>> +endobj +2305 0 obj +<< +/Title (4.42 Jeudi 8 Juin 2023) +/Dest [ 1878 0 R /XYZ 39.386457 771.023622 0 ] +/Count 0 +/Prev 2304 0 R +/Parent 2263 0 R +>> +endobj +2306 0 obj +<< +/Title (5. Code) +/Dest [ 1880 0 R /XYZ 39.386457 757.223622 0 ] +/Count 19 +/Prev 2263 0 R +/First 2307 0 R +/Last 2325 0 R +/Parent 2326 0 R +>> +endobj +2307 0 obj +<< +/Title (5.1 ConfigurationTool.cs) +/Dest [ 1880 0 R /XYZ 39.386457 707.865222 0 ] +/Count 0 +/Parent 2306 0 R +/Next 2308 0 R +>> +endobj +2308 0 obj +<< +/Title (5.2 DriverData.cs) +/Dest [ 1892 0 R /XYZ 39.386457 747.563622 0 ] +/Count 0 +/Prev 2307 0 R +/Parent 2306 0 R +/Next 2309 0 R +>> +endobj +2309 0 obj +<< +/Title (5.3 DriverGapToLeaderWindow.cs) +/Dest [ 1898 0 R /XYZ 39.386457 747.563622 0 ] +/Count 0 +/Prev 2308 0 R +/Parent 2306 0 R +/Next 2310 0 R +>> +endobj +2310 0 obj +<< +/Title (5.4 DriverNameWindow.cs) +/Dest [ 1900 0 R /XYZ 39.386457 747.563622 0 ] +/Count 0 +/Prev 2309 0 R +/Parent 2306 0 R +/Next 2311 0 R +>> +endobj +2311 0 obj +<< +/Title (5.5 DriverSectorWindow.cs) +/Dest [ 1904 0 R /XYZ 39.386457 747.563622 0 ] +/Count 0 +/Prev 2310 0 R +/Parent 2306 0 R +/Next 2312 0 R +>> +endobj +2312 0 obj +<< +/Title (5.6 F1TVEmulator.cs) +/Dest [ 1906 0 R /XYZ 39.386457 747.563622 0 ] +/Count 0 +/Prev 2311 0 R +/Parent 2306 0 R +/Next 2313 0 R +>> +endobj +2313 0 obj +<< +/Title (5.7 Form1.cs) +/Dest [ 1922 0 R /XYZ 39.386457 747.563622 0 ] +/Count 0 +/Prev 2312 0 R +/Parent 2306 0 R +/Next 2314 0 R +>> +endobj +2314 0 obj +<< +/Title (5.8 SqliteStorage.cs) +/Dest [ 1944 0 R /XYZ 39.386457 747.563622 0 ] +/Count 0 +/Prev 2313 0 R +/Parent 2306 0 R +/Next 2315 0 R +>> +endobj +2315 0 obj +<< +/Title (5.9 Zone.cs) +/Dest [ 1956 0 R /XYZ 39.386457 747.563622 0 ] +/Count 0 +/Prev 2314 0 R +/Parent 2306 0 R +/Next 2316 0 R +>> +endobj +2316 0 obj +<< +/Title (5.10 DataWrapper.cs) +/Dest [ 1966 0 R /XYZ 39.386457 747.563622 0 ] +/Count 0 +/Prev 2315 0 R +/Parent 2306 0 R +/Next 2317 0 R +>> +endobj +2317 0 obj +<< +/Title (5.11 DriverDrsWindow.cs) +/Dest [ 1984 0 R /XYZ 39.386457 747.563622 0 ] +/Count 0 +/Prev 2316 0 R +/Parent 2306 0 R +/Next 2318 0 R +>> +endobj +2318 0 obj +<< +/Title (5.12 DriverLapTimeWindow.cs) +/Dest [ 1990 0 R /XYZ 39.386457 747.563622 0 ] +/Count 0 +/Prev 2317 0 R +/Parent 2306 0 R +/Next 2319 0 R +>> +endobj +2319 0 obj +<< +/Title (5.13 DriverPositionWindow.cs) +/Dest [ 1992 0 R /XYZ 39.386457 747.563622 0 ] +/Count 0 +/Prev 2318 0 R +/Parent 2306 0 R +/Next 2320 0 R +>> +endobj +2320 0 obj +<< +/Title (5.14 DriverTyresWindow.cs) +/Dest [ 1994 0 R /XYZ 39.386457 747.563622 0 ] +/Count 0 +/Prev 2319 0 R +/Parent 2306 0 R +/Next 2321 0 R +>> +endobj +2321 0 obj +<< +/Title (5.15 OcrImage.cs) +/Dest [ 2002 0 R /XYZ 39.386457 747.563622 0 ] +/Count 0 +/Prev 2320 0 R +/Parent 2306 0 R +/Next 2322 0 R +>> +endobj +2322 0 obj +<< +/Title (5.16 Reader.cs) +/Dest [ 2034 0 R /XYZ 39.386457 747.563622 0 ] +/Count 0 +/Prev 2321 0 R +/Parent 2306 0 R +/Next 2323 0 R +>> +endobj +2323 0 obj +<< +/Title (5.17 Settings.cs) +/Dest [ 2050 0 R /XYZ 39.386457 747.563622 0 ] +/Count 0 +/Prev 2322 0 R +/Parent 2306 0 R +/Next 2324 0 R +>> +endobj +2324 0 obj +<< +/Title (5.18 Window.cs) +/Dest [ 2076 0 R /XYZ 39.386457 747.563622 0 ] +/Count 0 +/Prev 2323 0 R +/Parent 2306 0 R +/Next 2325 0 R +>> +endobj +2325 0 obj +<< +/Title (5.19 recoverCookiesCSV.py) +/Dest [ 2106 0 R /XYZ 39.386457 747.563622 0 ] +/Count 0 +/Prev 2324 0 R +/Parent 2306 0 R +>> +endobj +2326 0 obj +<< +/Count 217 +/First 2109 0 R +/Last 2306 0 R +>> +endobj +2327 0 obj +<< +/Length1 7352 +/Filter /FlateDecode +/Length 4760 +>> +stream +x9XǶs/ tYje5FElX( Ć5 AK|؍ %*[bAFٝ}g][ͽ{{/3sΜ~,! 4"A爽iZlja3V=f4)JJ!DoEe;c8؜ne }7ޑj3{ p5{SE8ñ+㣲pkJvZfdZƓhܿ'wLet_I3;¯=wbiR:ժθ֞PbNZ,5rūV%QN>׿b?[NRE/(>*M&%O,Eb_y-\<Ƶ.қ|t_zFOJ?#ъ˚߾h)Ovlr[6/C#0mCHٔ4Ƒz/KGrT_fv8ד'Q9˕b(\[d1CN@wEh :ut/=/8 +mN…8aJ8#X.bX,nϊwFR{)DBKI ϕWT2fJT*]vo٭+;el}bMOZ꿻p42fA+[+,pv +LKADEjmcG')o/^ɪ;ͽ9E +my2 `- 柶+<BLQVLD16?gGG5N%B{ %6X;m@.qbFb~&[%ۗR='\z=+LIL1$U^rs_~d7A7RaXJ䰱!c/|WY7?>G2e]8}zN3tj}jVm! !PCa{a)RRT"|KNZG+Ӡsv~ʊJU*7p<^Ud֥"?ll䴸J-չINY8},ߦ<G.]ęF˲>DmqtPZd<{4ܸbO/a}ӛǍȔvMbw +MP?$!$`آ{<6>7ӧEg:V*n{s~)+*o>rdAî?-6rЮ3G+lɈ!c#{0Í@9Pt&Y9mTUXTdm*@/)~(xu Fj[Q~0ǔiكCĬcV)R=IŞ?˭8Cd3P)n-t(j%?ds +޻#qy*ާyc5o!:>h ?gw +̫Wo{!+ރoR[\sM}Ux(:jNTT j0v>+ew-YTn(g{f{6sԀfm Fvy7-1G4M6_B<_*ٸzy=_<e(ĕ{'5(Bq_QgIMv2AfӼ+aÚ-*i5W}T35Wo]"魼ʬMҳJVV ^4{]̼XC5r(ۊ,*h|,Ȁ :Ė5l bL RmxPTS8x>.)I)G=hI$Ȅd ue\wQt}2 +u߉,Am4Y5'orma -Sjh̽su 2Fv[7+a4dh/hI .YtiMU|}} +޾y9O '܋Qq7m`Jf瘙=YSR- +fT}aGfQ-$/I5NT^&;g'#w}l7\UgyPb5tV4 wWB3 Ƚ S&RTv]I\o}0NBn }ZEᕦB*!͈SC+<631}n4o|uZraƴjA7)nVgY1[w"et ~q8?3Nux7eƁrgm,eu8tC{9B˶iL<bVC;g)V^*7[6 ޚ͛ wH-?N^3Vԑ V.9J.{ũp|ـ&Q{z ~ō,Eu-:WjAGbW:Ɩhe͛2ay! g픳A7uZ#^ohQcpXg+Ug:C)'aYʸR|q6~|q\S2I*b!o;F)h{0Φ%8sm2o ЏHH q!21t$Il$gSq> +stream +x= XUֳf}(O7G,j>.ה ABT7)Ѐ !;Ci)ffe^s>,޳gϬYk͚5klBZD !C?r.!ß:x]ץ#_+>FHR,!^}ݻ +=ևHԝrB| +%j۽551J?B}cmDH,xjbIVÄ=5&,k٭ FH{:+2c}iѓ۟2 "bc7, X~pYiPfN:c5L+GW$k Gիt'lf G.SHvyI"^D|>kJK$$;EAJ%H*Rq>!9J1$ $nT̜!G !]gHDc7K/ +ŤB2uiIЙlB J?&|B\I*bRč{q8pZ:pOĩ:xI3:H Q a^Ml^$h $^Rd/8IҼmӇv;ɿFZA&%?m'uͣ&k&kqǑ?k&k&k&k&k'%-G`MdMdMdMG&ﵧKIVG, !'x&kWH$s )i4Ѳ?_k&kfj9X5Y5Y5Y5&i.Z2boUPb B@I-D0׎җ o`DTL^8֭[7O7oͪz@/<O^&IdcڒfpIp1 +Lï쿔B1wEO +߲y!5 #SݗD俹811 q06+$)D[/\X່W܄xM?*t LLq)e +Dy_WЅL(BqlM&Tṋ ՙx4z-M@f m*]QTv#H,B9_ɏ` /pzˡ.PL#ZI|!G8a8K,Rg iNX*ժ檶nCճ[՟tll6" 6[mJm>c`f[j[£[l^-ǴrW;{vomgWʩՠVAOwZ8h-(! o:10j卐ݺ[\ˍp~C`{?&Y +`+X +V&+X +V?{3&B{+`K  +V_vV +;B38pՁPM5Ғϣgg{O'}|G3B:89Q}G6N vz kAktѣg?=x+zs5T"Awt}5/!h\p>)ҵyS)X +Ц9{c}3"od.]zrg|aʕy-ti%Sc +vfeegeU3w>{vw> nr +$R <@>Y(T-k#<%VlGY/_E}e8ݬ6YlLNy*~!4-E޽Gg}F{+zI+HjdC-<[ 8ݖزQXT*!BrM+'`*%Z8 + B\@r`μ vH-mn#ݥ:.(Bv^l9 G^ +vKh*W{2ܔdB׈џ_>JӢԺU]9+cO[jwsЎz)n^T!pٖRИ_ܑNc銠]y +֯/`lfy9&߸}ܴ9uW(c~gO|CTz-M˓D]L;+;Bca K8+?߿{sCcn\C?2z`Y)0/u%'Krid7c8})vi,X;h\a $`3{,MmXk"&Fs\y+8j+-Oi>ʘ}q9L)<օ$0CnNeެcN&pN\.ܸPWι2UOzP)R9QrјBorSE^)ҷ<ՊƍtƕrϫYΏa뾑DEۥ. +mӖG>y n5Σg~ +gZ==aܬWF3RlL#&+dˣUPǖry#QW4Iyh2vu򐱴 Fd+E/YEzUHөˆL. >v2(ުWHQ^nGZn əU*j;ɐC`4̌`8lvDia;)?bL +#m+Ѷܓ)rD$rkBcvƵVG ]e'oMseYX,K%乑y{"h]$W!OMW'Yy޴ +N~r/˯;yc7?}hL+Wgӛc=T-y͸[bݺrDu ˋG]q!R<+_]]dyTvhWY_"k9ܓyvž[:uoߗn+܌QI|̫{(O(G#z K^Hf{5Ry7 [7٪=A1\Z8`?Tvz!-gu%}T]'tGFn~5!4 AV؛ixg-u$8E 6ZBirl;^P~M0AjޏS)#N!/[ML 4I6G#a#CV%<1iFT ߡ:bG-6`eaI@!]F+H +2؀Czږ@4v7~) HiُZy0Ad0$ Aˆ$ +a%WJ +%pGr?%Z1Z LaXʹ[jJaרLq5i65;ZkdE¢]#P$=loxU|S1Y>'Rq03XC;S~K\>bnU߾o)B|);8Saܴ;rlI>^[{ +{ Kmg#loqbꈱ3qELQ:+OSgeG/bsK!nI2 T\}k<T`1kfkQW+*yȪ𕟵޻gOprb0RV0VP) MzbPZxGh|ӱ$+JPE4;xy{g;8`n^{ƾ_Rtw׏BR~*rN{ub5$44n8?orO^N`Xrg~B<\~r 4Kr{+r±' CK#̥4Tx,CI溁2҈+iƺzx*sLeM9`<\NJ*ǘhGR܍3qTa.ijMCp5.v)Q^ޓ:E^+p2_(r,7͇6BzgC}+B7.ݰ_'(xXHHEL}-{Z6߹i8ܼAdt-"{ey-c"F:O6iG;VdmZ$N;zB L硓&-pKH~)T 'ۀQCtE  D&"sgP4gNqC{o1fWymzi |4g~3J@"4\I i Gj x`aw h*Yw/g[zF{`-61djt-Z[ɱc񦝼3RL)p ~W2lfo0g6)EDg/P::9:Ќy!p>gĉ:B"m͌Y'Ô[h.{!Yx 9Qq,W̜1V1GV6ll%-P+A`w^2#xl Qm1ۄi0hs(M+HDI&LOzܖT=c\9L߲#oW|74]yR` +̴-/@<þ52Ꞓw4e印$/ ^xx%МG;HHJ^NOJn]c_$]vtrv^ښHq[xz2vkJ.X*@g[nyRqQo^ـ.Aj wXr?N`u]} ƭ%7U{]M)8\~ʕ#@ Q;Jrgn4+fmw5mz}Sz5\-v\o.H=*1"b"QY"]?~WwESҽ3[$@ +endstream +endobj +2329 0 obj +<< +/Length1 6952 +/Filter /FlateDecode +/Length 4584 +>> +stream +xYyXSGsNV԰@X TmRKR@A54 (naXTbQP J*jUkds{s0λ #:Tġa~#FOz\ c?sr~2BOe6 #zV@LB0GFeVxbp¢!d !A3W;PwY5 0 ;O~=Ef xA*uτ^Q14(m֟wZ稧bωf.+Lh =T; ̓Nv33=)- wГ3 9>!x4@˝CDWƎCÀ &&8.ݲ^ћ|$A. +9p; χ0AGGELMX Ӷ +dŏB3|o4F'P> +3Q>::X)|_^[ ɡow$Vh(׈΀ CI$ه;f΂ vLE +- DCѻ>Dg03=0z(4Mtd257_0zJ}^KH2>wq2ƗM4 +R0r\%\?HH\5w{={,~;_+vw-a!|/4I:I$a4NINA&"͔^zc@VVt7,~0%ȅl9F^OqB,'3ًŴ=qV ZlӟAG>^ޞv'U8q( xݝQyӔF +w˕XA'K܁B8QOؕ('j񴱕zAM"ٱz=Z}#۲-+)f6LzĮXKkeI F-hK'&/% eQ(eECh,nWEÈPPIw;PhK+5v)V Qi"Ϥx'e3 #);\9_{@t4GҁN*VcC%^4+wՙj}e%j_I[~W>}T'-S\0tjjEcHERƞM9+sAAѠ3[^)S@* VȤ\?댟4lC/8jg0pæ0m0=` +{ژUk\#,M܆M?+ +qe2 3 _> fu9vfzyсR9J29UEn]GW>'شjע%鋿)zdnŵ+Svްfɞ"ڴm+72Լ sp""c# +qF.>6a?D&Y53ZL p?]ipCJmXQ^8!>`HrVz֓͝VFKwR3"oEX>0`yDGԩe\wf4aJp"2{>K&!Ƀ|xr\yY>{1x zZbt@pHBrS{mH=@-og-:NoZxS[f\34AZl/s?⹅?H!9` Yf Jzn9) ;ju'\NA'*L%*" >>2'?VblC߳9u離?t~eԹ̒_b +RKK/e +Ev5)k@Ny`3ˁgZ6QsZLBsn_|q-gQ.2؊1>9 u?н˙g ,|[ⷽ|bK0DUХ`<}v$]aik^K}` <* N^J1J+rY @/--11L^"I?gQ[8]N{ U|,2eh۔aƍITӏs g.F)6F2Pܷ8gA?ۻaffjT!&nƸf=L`Z[sѡܐJ@o%Pb're܌lКex.^F+z5َt4Wl&Iw6y䳰&QK4 hp/D#C$(@;)ߵtR8Gpp@SY}nL-e];߮,=Xh߉HQ4 +EP| 7QFhһ fň xxτ`v XȎh̫l,4`荄y{;Z^?ȫf >% ./x{ (]=XEY 6Cc +endstream +endobj +2330 0 obj +<< +/Length1 6688 +/Filter /FlateDecode +/Length 4288 +>> +stream +x9y\TU9wPRidZM35MEs P\PBHqPp\-+@,3SU\r\5yI\{{Νh}||=<9yγ  AzIΖ~xl7Bg |@Ӌ / ,~oh޷ 'zA6PNu8u + i A"'^wTr +炘JABl}NTÆ } `f#G)` '^ \"S`ڟO@gq>`M/>{,?!W((,0G*((z Vǻ(8" 2%O'ksd)h120A\bHBo!܄ǛY#@8a.B'8zb$ G }V O>'] sQ {mmDmw07<qD؂ 9 ` /P! [fp`#0 F@uՎe'aSlŽwuU3͌ɁO +BI)m.Nmö>MI`Kv +_c|*uBD)K#.D9]#iyEffnEv/]wf'Zg^D=(2,`p7)EdeK6v$Įd 󐽍=zޣ˩>$7h%+gԭxrEQ@_MaD ZF3}L.!zJs7m2cAaHܚ5{ik#E#NLHN.P%'k:]<:n~$ǖeU4Νl*O]ym@Sᕺ~X/O\ ,xᘷAΠ5h,&jr%fV)HU'r-$#=iSߍ&;vroIFS +mT>63huEk &uv;70vʂMkvYf),(tY<,We8agmwkNV2<;)Y]⽆֙ &kHƍ9V